summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-25 07:16:49 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-25 07:16:49 +0000
commit3b2ef6864dbb5abe099620f432bb650e84617af3 (patch)
treecbdab4041baf268d78a8b620a21bed1417a811d7
parent523464ff57eea48adea62ae64f3dadc464250513 (diff)
downloadgcc-3b2ef6864dbb5abe099620f432bb650e84617af3.tar.gz
2016-04-25 Basile Starynkevitch <basile@starynkevitch.net>
{{merging with even more of GCC 6, using subversion 1.9 svn merge -r234651:235002 ^/trunk }} git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@235404 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog19
-rw-r--r--ChangeLog.MELT5
-rw-r--r--MAINTAINERS3
-rw-r--r--Makefile.in5
-rw-r--r--Makefile.tpl5
-rw-r--r--contrib/ChangeLog5
-rwxr-xr-xcontrib/check_GNU_style.sh5
-rw-r--r--gcc/ChangeLog607
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog7
-rw-r--r--gcc/ada/gcc-interface/decl.c12
-rw-r--r--gcc/alias.c14
-rw-r--r--gcc/asan.c28
-rw-r--r--gcc/builtins.c100
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-indentation.c9
-rw-r--r--gcc/c/ChangeLog21
-rw-r--r--gcc/c/c-fold.c20
-rw-r--r--gcc/c/c-parser.c119
-rw-r--r--gcc/c/c-tree.h2
-rw-r--r--gcc/c/c-typeck.c38
-rw-r--r--gcc/cgraph.h8
-rw-r--r--gcc/common/config/aarch64/aarch64-common.c116
-rw-r--r--gcc/config.gcc14
-rw-r--r--gcc/config/aarch64/aarch64-option-extensions.def36
-rw-r--r--gcc/config/aarch64/aarch64-protos.h25
-rw-r--r--gcc/config/aarch64/aarch64.c87
-rw-r--r--gcc/config/aarch64/aarch64.h2
-rw-r--r--gcc/config/aarch64/driver-aarch64.c192
-rw-r--r--gcc/config/aarch64/predicates.md2
-rw-r--r--gcc/config/arc/arc.h3
-rw-r--r--gcc/config/arm/arm.h3
-rw-r--r--gcc/config/arm/thumb2.md6
-rw-r--r--gcc/config/darwin.h2
-rw-r--r--gcc/config/i386/i386.c55
-rw-r--r--gcc/config/i386/i386.md24
-rw-r--r--gcc/config/i386/mingw32.h2
-rw-r--r--gcc/config/i386/sse.md91
-rw-r--r--gcc/config/ia64/hpux.h2
-rw-r--r--gcc/config/pa/pa-hpux11.h2
-rw-r--r--gcc/config/pa/pa64-hpux.h12
-rw-r--r--gcc/config/pa/predicates.md6
-rw-r--r--gcc/config/rs6000/rs6000.c34
-rw-r--r--gcc/config/rs6000/rs6000.md8
-rw-r--r--gcc/config/s390/s390.c2
-rw-r--r--gcc/config/sh/sh.md15
-rw-r--r--gcc/config/sparc/sparc.c17
-rw-r--r--gcc/cp/ChangeLog235
-rw-r--r--gcc/cp/class.c43
-rw-r--r--gcc/cp/constexpr.c271
-rw-r--r--gcc/cp/cp-gimplify.c28
-rw-r--r--gcc/cp/cp-tree.h53
-rw-r--r--gcc/cp/decl.c74
-rw-r--r--gcc/cp/init.c6
-rw-r--r--gcc/cp/mangle.c9
-rw-r--r--gcc/cp/parser.c79
-rw-r--r--gcc/cp/pt.c55
-rw-r--r--gcc/cp/semantics.c2
-rw-r--r--gcc/cp/tree.c8
-rw-r--r--gcc/cp/typeck.c6
-rw-r--r--gcc/cp/typeck2.c2
-rw-r--r--gcc/doc/extend.texi10
-rw-r--r--gcc/dse.c388
-rw-r--r--gcc/explow.c36
-rw-r--r--gcc/fold-const.c60
-rw-r--r--gcc/fortran/ChangeLog39
-rw-r--r--gcc/fortran/array.c24
-rw-r--r--gcc/fortran/gfortran.texi14
-rw-r--r--gcc/fortran/intrinsic.texi10
-rw-r--r--gcc/fortran/openmp.c36
-rw-r--r--gcc/fortran/resolve.c10
-rw-r--r--gcc/fortran/simplify.c3
-rw-r--r--gcc/fortran/trans-array.c4
-rw-r--r--gcc/fwprop.c32
-rw-r--r--gcc/gimplify-me.c3
-rw-r--r--gcc/gimplify.c171
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/graphite-isl-ast-to-gimple.c2
-rw-r--r--gcc/graphite-sese-to-poly.c2
-rw-r--r--gcc/hsa-brig.c4
-rw-r--r--gcc/hsa-dump.c3
-rw-r--r--gcc/hsa-gen.c44
-rw-r--r--gcc/hsa.h3
-rw-r--r--gcc/ipa-devirt.c9
-rw-r--r--gcc/ipa-polymorphic-call.c21
-rw-r--r--gcc/ipa-pure-const.c17
-rw-r--r--gcc/ipa-utils.h1
-rw-r--r--gcc/ipa-visibility.c82
-rw-r--r--gcc/lra-constraints.c16
-rw-r--r--gcc/lra-spills.c7
-rw-r--r--gcc/match.pd3
-rw-r--r--gcc/omp-low.c371
-rw-r--r--gcc/po/ChangeLog4
-rw-r--r--gcc/po/gcc.pot12648
-rw-r--r--gcc/ree.c20
-rw-r--r--gcc/rtl.h4
-rw-r--r--gcc/simplify-rtx.c20
-rw-r--r--gcc/symtab.c55
-rw-r--r--gcc/testsuite/ChangeLog546
-rw-r--r--gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c11
-rw-r--r--gcc/testsuite/c-c++-common/asan/halt_on_error-1.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/halt_on_error-2.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/pr70541.c34
-rw-r--r--gcc/testsuite/c-c++-common/attr-simd-2.c2
-rw-r--r--gcc/testsuite/c-c++-common/attr-simd-4.c4
-rw-r--r--gcc/testsuite/c-c++-common/attr-simd.c4
-rw-r--r--gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c4
-rw-r--r--gcc/testsuite/c-c++-common/goacc/reduction-5.c16
-rw-r--r--gcc/testsuite/c-c++-common/goacc/reduction-promotions.c32
-rw-r--r--gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c38
-rw-r--r--gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c25
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr70550-1.c81
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr70550-2.c55
-rw-r--r--gcc/testsuite/c-c++-common/pr70336.c37
-rw-r--r--gcc/testsuite/g++.dg/abi/abi-tag19.C4
-rw-r--r--gcc/testsuite/g++.dg/abi/abi-tag20.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto47.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C112
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr9.C57
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-initlist10.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C125
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-string.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/enum_base3.C29
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept29.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr65398.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr70528.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/pr69066.C75
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/vla11.C712
-rw-r--r--gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C9
-rw-r--r--gcc/testsuite/g++.dg/ext/constexpr-vla1.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/constexpr-vla2.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/constexpr-vla3.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/constexpr-vla4.C17
-rw-r--r--gcc/testsuite/g++.dg/ext/pr70571.C10
-rw-r--r--gcc/testsuite/g++.dg/gomp/declare-simd-1.C10
-rw-r--r--gcc/testsuite/g++.dg/gomp/declare-simd-3.C8
-rw-r--r--gcc/testsuite/g++.dg/gomp/declare-simd-4.C4
-rw-r--r--gcc/testsuite/g++.dg/init/new47.C19
-rw-r--r--gcc/testsuite/g++.dg/init/pr70501.C11
-rw-r--r--gcc/testsuite/g++.dg/ipa/devirt-51.C32
-rw-r--r--gcc/testsuite/g++.dg/opt/pr70641.C10
-rw-r--r--gcc/testsuite/g++.dg/opt/ptrmem7.C31
-rw-r--r--gcc/testsuite/g++.dg/parse/pr68722.C9
-rw-r--r--gcc/testsuite/g++.dg/parse/pr70635.C25
-rw-r--r--gcc/testsuite/g++.dg/plugin/pragma_plugin.c16
-rw-r--r--gcc/testsuite/g++.dg/pr70590-2.C21
-rw-r--r--gcc/testsuite/g++.dg/pr70590.C25
-rw-r--r--gcc/testsuite/g++.dg/template/dependent-expr10.C8
-rw-r--r--gcc/testsuite/g++.dg/template/pr70610-2.C21
-rw-r--r--gcc/testsuite/g++.dg/template/pr70610-3.C21
-rw-r--r--gcc/testsuite/g++.dg/template/pr70610-4.C19
-rw-r--r--gcc/testsuite/g++.dg/template/pr70610.C21
-rw-r--r--gcc/testsuite/g++.dg/template/ptrmem30.C4
-rw-r--r--gcc/testsuite/g++.dg/torture/pr70029.C12
-rw-r--r--gcc/testsuite/g++.dg/torture/pr70499.C39
-rw-r--r--gcc/testsuite/g++.dg/torture/pr70526.C35
-rw-r--r--gcc/testsuite/g++.dg/ubsan/pr63956.C4
-rw-r--r--gcc/testsuite/g++.dg/warn/Wparentheses-29.C135
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr70633.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20101011-1.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr70566.c47
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr70586.c30
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr70602.c23
-rw-r--r--gcc/testsuite/gcc.dg/Wparentheses-12.c135
-rw-r--r--gcc/testsuite/gcc.dg/Wparentheses-13.c67
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c4
-rw-r--r--gcc/testsuite/gcc.dg/gomp/declare-simd-1.c18
-rw-r--r--gcc/testsuite/gcc.dg/gomp/declare-simd-3.c3
-rw-r--r--gcc/testsuite/gcc.dg/gomp/simd-clones-2.c3
-rw-r--r--gcc/testsuite/gcc.dg/gomp/simd-clones-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr68756.c26
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr68953.c30
-rw-r--r--gcc/testsuite/gcc.dg/guality/guality.h4
-rw-r--r--gcc/testsuite/gcc.dg/ifcvt-4.c12
-rw-r--r--gcc/testsuite/gcc.dg/loop-8.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/simd-function_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/pic-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/pic-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/pic-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/pie-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/pie-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/pie-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr61817-1.c19
-rw-r--r--gcc/testsuite/gcc.dg/pr61817-2.c19
-rw-r--r--gcc/testsuite/gcc.dg/pr64434.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr69391-1.c12
-rw-r--r--gcc/testsuite/gcc.dg/pr69391-2.c12
-rw-r--r--gcc/testsuite/gcc.dg/pr70317.c1
-rw-r--r--gcc/testsuite/gcc.dg/strlenopt.h7
-rw-r--r--gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr70307.c67
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr70457.c29
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr70484.c19
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr70542.c31
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr70623-2.c41
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr70623.c32
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr70628.c46
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c7
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/uninit-19.c4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr70398.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/target_attr_15.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/pr70496.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/asm-flag-6.c276
-rw-r--r--gcc/testsuite/gcc.target/i386/avx2-pr70542.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/avx2-pr70574.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-2.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-2.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-4.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-5.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-10.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-11.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-12.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-13.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-14.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-15.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-16.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-4.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-5.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-6.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-7.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-8.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-9.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70467-2.c20
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70510.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70525.c32
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70593.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70596.c13
-rw-r--r--gcc/testsuite/gcc.target/powerpc/float128-1.c147
-rw-r--r--gcc/testsuite/gcc.target/powerpc/float128-2.c226
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr70117.c92
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr70640.c11
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr70669.c22
-rw-r--r--gcc/testsuite/gcc.target/sh/torture/pr70416.c136
-rw-r--r--gcc/testsuite/gfortran.dg/allocate_with_source_19.f0822
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_allocate_6.f0827
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_16.f9019
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f952
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f951
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f952
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f952
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f952
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f952
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f953
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/kernels-loop.f952
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/reduction-3.f9510
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f9046
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f9529
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f9518
-rw-r--r--gcc/testsuite/gfortran.dg/parameter_array_init_7.f908
-rw-r--r--gcc/testsuite/gfortran.dg/pr36192.f905
-rw-r--r--gcc/testsuite/gfortran.dg/pr36192_1.f904
-rw-r--r--gcc/testsuite/gfortran.dg/real_dimension_1.f8
-rw-r--r--gcc/testsuite/lib/target-supports.exp8
-rw-r--r--gcc/tree-inline.c2
-rw-r--r--gcc/tree-parloops.c18
-rw-r--r--gcc/tree-pretty-print.c94
-rw-r--r--gcc/tree-scalar-evolution.c5
-rw-r--r--gcc/tree-sra.c7
-rw-r--r--gcc/tree-ssa-coalesce.c17
-rw-r--r--gcc/tree-ssa-forwprop.c5
-rw-r--r--gcc/tree-ssa-ifcombine.c9
-rw-r--r--gcc/tree-ssa-live.c18
-rw-r--r--gcc/tree-ssa-loop-ivopts.c6
-rw-r--r--gcc/tree-ssa-loop-niter.c9
-rw-r--r--gcc/tree-ssa-loop-unswitch.c4
-rw-r--r--gcc/tree-ssa-math-opts.c2
-rw-r--r--gcc/tree-ssa-pre.c97
-rw-r--r--gcc/tree-vect-loop.c2
-rw-r--r--gcc/tree.c4
-rw-r--r--gcc/tree.def6
-rw-r--r--gcc/tree.h7
-rw-r--r--gnattools/ChangeLog5
-rw-r--r--gnattools/Makefile.in2
-rw-r--r--libcc1/ChangeLog7
-rw-r--r--libcc1/Makefile.am3
-rw-r--r--libcc1/Makefile.in4
-rw-r--r--libcpp/ChangeLog17
-rw-r--r--libcpp/directives.c6
-rw-r--r--libcpp/internal.h3
-rw-r--r--libcpp/macro.c52
-rw-r--r--libcpp/po/ChangeLog4
-rw-r--r--libcpp/po/cpplib.pot165
-rw-r--r--libgcc/ChangeLog14
-rw-r--r--libgcc/configure22
-rw-r--r--libgcc/configure.ac18
-rw-r--r--libgcc/libgcc2.c7
-rw-r--r--libgo/MERGE2
-rw-r--r--libgo/VERSION2
-rw-r--r--libgo/go/crypto/dsa/dsa.go4
-rw-r--r--libgo/go/crypto/ecdsa/ecdsa.go11
-rw-r--r--libgo/go/crypto/rsa/rsa.go5
-rw-r--r--libgo/go/go/build/deps_test.go6
-rw-r--r--libgo/go/internal/syscall/windows/registry/syscall.go2
-rw-r--r--libgo/go/internal/syscall/windows/registry/zsyscall_windows.go5
-rw-r--r--libgo/go/internal/syscall/windows/syscall_windows.go2
-rw-r--r--libgo/go/internal/syscall/windows/sysdll/sysdll.go28
-rw-r--r--libgo/go/internal/syscall/windows/zsyscall_windows.go5
-rw-r--r--libgo/go/reflect/all_test.go6
-rw-r--r--libgo/go/reflect/value.go8
-rw-r--r--libgo/go/runtime/export_windows_test.go4
-rw-r--r--libgo/runtime/proc.c2
-rw-r--r--libgomp/ChangeLog131
-rw-r--r--libgomp/libgomp.h2
-rw-r--r--libgomp/libgomp_g.h7
-rw-r--r--libgomp/target.c92
-rw-r--r--libgomp/task.c2
-rw-r--r--libgomp/testsuite/libgomp.c/target-25.c2
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c38
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c40
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c42
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c55
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c22
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c20
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c8
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c72
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c13
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c20
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c145
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c163
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c133
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c85
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c57
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c36
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c351
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h43
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f908
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f9047
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/pr70289.f9020
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/pr70643.f9051
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90470
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90344
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90342
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90108
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f9086
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f9086
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f9088
-rw-r--r--libiberty/ChangeLog13
-rw-r--r--libiberty/cplus-dem.c20
-rw-r--r--libstdc++-v3/ChangeLog77
-rw-r--r--libstdc++-v3/acinclude.m44
-rwxr-xr-xlibstdc++-v3/configure4
-rw-r--r--libstdc++-v3/include/bits/specfun.h846
-rw-r--r--libstdc++-v3/include/bits/stl_pair.h35
-rw-r--r--libstdc++-v3/src/Makefile.am2
-rw-r--r--libstdc++-v3/src/Makefile.in2
-rw-r--r--libstdc++-v3/src/c++11/thread.cc8
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/70437.cc37
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc3
-rw-r--r--libstdc++-v3/testsuite/30_threads/thread/70503.cc38
368 files changed, 18404 insertions, 8464 deletions
diff --git a/ChangeLog b/ChangeLog
index 29a5f7a5606..a82e275ab62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2016-04-13 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR bootstrap/70173
+ * Makefile.tpl (local-distclean): Delete the libcc1, gnattools,
+ and gotools directories. Delete the stage_final file.
+ * Makefile.in: Regenerate.
+
+2016-04-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * MAINTAINERS (Write After Approval): Add myself.
+
+2016-04-09 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * MAINTAINERS (Fortran maintainer): Remove myself.
+
+2016-04-04 Bill Seurer <seurer@linux.vnet.ibm.com>
+
+ * MAINTAINERS (Write After Approval): Add myself.
+
2016-03-29 Kelvin Nilsen <kdnilsen@linux.vnet.ibm.com>
* MAINTAINERS (Write After Approval): Add myself.
diff --git a/ChangeLog.MELT b/ChangeLog.MELT
index 5ceede3e6ac..6c877b6b43f 100644
--- a/ChangeLog.MELT
+++ b/ChangeLog.MELT
@@ -1,4 +1,9 @@
+2016-04-25 Basile Starynkevitch <basile@starynkevitch.net>
+ {{merging with even more of GCC 6, using subversion 1.9
+ svn merge -r234651:235002 ^/trunk
+ }}
+
2016-04-18 Basile Starynkevitch <basile@starynkevitch.net>
{{merging with even more of GCC 6, using subversion 1.9
svn merge -r234051:234650 ^/trunk
diff --git a/MAINTAINERS b/MAINTAINERS
index e11eb9b7544..a9dec344e59 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -285,7 +285,6 @@ Fortran François-Xavier Coudert <fxcoudert@gcc.gnu.org>
Fortran Jerry DeLisle <jvdelisle@gcc.gnu.org>
Fortran Erik Edelmann <erik.edelmann@iki.fi>
Fortran Daniel Franke <franke.daniel@gmail.com>
-Fortran Steven G. Kargl <sgk@troutmask.apl.washington.edu>
Fortran Thomas König <tkoenig@gcc.gnu.org>
Fortran Daniel Kraft <d@domob.eu>
Fortran Toon Moene <toon@moene.org>
@@ -566,6 +565,7 @@ Martin Sebor <msebor@gcc.gnu.org>
Dodji Seketeli <dodji@gcc.gnu.org>
Svein Seldal <svein@dev.seldal.com>
Thiemo Seufer <ths@networkno.de>
+Bill Seurer <seurer@linux.vnet.ibm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Tim Shen <timshen@google.com>
David Sherwood <david.sherwood@arm.com>
@@ -606,6 +606,7 @@ Joost VandeVondele <joost.vandevondele@mat.ethz.ch>
Andre Vehreschild <vehre@gmx.de>
Alex Velenko <alex.velenko@arm.com>
Ilya Verbin <iverbin@gmail.com>
+Andre Vieira <andre.simoesdiasvieira@arm.com>
Kugan Vivekanandarajah <kuganv@linaro.org>
Ville Voutilainen <ville.voutilainen@gmail.com>
Tom de Vries <tom@codesourcery.com>
diff --git a/Makefile.in b/Makefile.in
index a519a547533..1522e39ec5b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2316,7 +2316,7 @@ local-clean:
local-distclean:
-rm -f Makefile config.status config.cache mh-frag mt-frag
- -rm -f maybedep.tmp serdep.tmp
+ -rm -f maybedep.tmp serdep.tmp stage_final
-if [ "$(TARGET_SUBDIR)" != "." ]; then \
rm -rf $(TARGET_SUBDIR); \
else true; fi
@@ -2328,7 +2328,8 @@ local-distclean:
-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
- -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null
+ -rmdir fastjar gcc gnattools gotools libcc1 libiberty 2>/dev/null
+ -rmdir texinfo zlib 2>/dev/null
-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
local-maintainer-clean:
diff --git a/Makefile.tpl b/Makefile.tpl
index 829f664ae00..6b2eb6aca50 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -810,7 +810,7 @@ local-clean:
local-distclean:
-rm -f Makefile config.status config.cache mh-frag mt-frag
- -rm -f maybedep.tmp serdep.tmp
+ -rm -f maybedep.tmp serdep.tmp stage_final
-if [ "$(TARGET_SUBDIR)" != "." ]; then \
rm -rf $(TARGET_SUBDIR); \
else true; fi
@@ -822,7 +822,8 @@ local-distclean:
-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
- -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null
+ -rmdir fastjar gcc gnattools gotools libcc1 libiberty 2>/dev/null
+ -rmdir texinfo zlib 2>/dev/null
-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
local-maintainer-clean:
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 54f9d5e72b2..56f2fec809f 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-13 Martin Sebor <msebor@redhat.com>
+
+ * check_GNU_style.sh: Avoid false posivies in trailing operator
+ checks.
+
2016-03-07 Martin Sebor <msebor@redhat.com>
* check_GNU_style.sh (color): New global variable.
diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh
index fbf6cb2465d..a7478f8f573 100755
--- a/contrib/check_GNU_style.sh
+++ b/contrib/check_GNU_style.sh
@@ -240,6 +240,7 @@ g 'There should be no space before closing parenthesis.' \
g 'Braces should be on a separate line.' \
'(\)|else)[[:blank:]]*{'
-# Does this apply to definition of aggregate objects?
-g 'Trailing operator.' \
+# Does this apply to definitions of aggregate objects?
+ag 'Trailing operator.' \
+ '^[1-9][0-9]*:\+[[:space:]]' \
'(([^a-zA-Z_]\*)|([-%<=&|^?])|([^*]/)|([^:][+]))$'
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 123987ead6d..f6fdeffcc53 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,559 @@
+2016-04-14 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/70669
+ * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
+ direct move handlers for KFmode. Change TFmode handlers test from
+ FLOAT128_IEEE_P to FLOAT128_VECTOR_P.
+
+2016-04-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70594
+ * ipa-utils.h (polymorphic_ctor_dtor_p): New prototype.
+ * ipa-polymorphic-call.c (polymorphic_ctor_dtor_p): New function.
+ (inlined_polymorphic_ctor_dtor_block_p): Use it.
+ * tree-ssa-live.c (remove_unused_scope_block_p): When
+ in_ctor_dtor_block, avoid discarding not just BLOCKs with
+ BLOCK_ABSTRACT_ORIGIN being FUNCTION_DECL, but even when
+ block_ultimate_origin is FUNCTION_DECL.
+ (remove_unused_locals): If current_function_decl is
+ polymorphic_ctor_dtor_p, pass initial true to
+ remove_unused_scope_block_p' is_ctor_dtor_block.
+
+2016-04-14 Martin Sebor <msebor@redhat.com>
+
+ PR c++/69517
+ PR c++/70019
+ PR c++/70588
+ * doc/extend.texi (Variable Length): Revert.
+
+2016-04-14 Marek Polacek <polacek@redhat.com>
+ Jan Hubicka <hubicka@ucw.cz>
+
+ PR c++/70029
+ * tree.c (verify_type): Disable the canonical type of main variant
+ check.
+
+2016-04-14 Jason Merrill <jason@redhat.com>
+
+ * cfgexpand.c, expr.c: Revert previous change.
+
+2016-04-14 Cesar Philippidis <cesar@codesourcery.com>
+
+ PR middle-end/70643
+ * omp-low.c (lower_oacc_reductions): Check for TREE_CONSTANT
+ when building a mem ref for the incoming reduction variable.
+
+2016-04-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/70614
+ * tree-scalar-evolution.c (analyze_evolution_in_loop): Terminate
+ loop if the evolution dropped to chrec_dont_know.
+ (interpret_condition_phi): Likewise.
+
+2016-04-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/70623
+ * tree-ssa-pre.c (changed_blocks): Make global ...
+ (compute_antic): ... local here. Move and fix worklist
+ handling here. Do not clear EDGE_DFS_BACK or call mark_dfs_back_edges.
+ (compute_antic_aux): Add dumping for MAX assumed succs. Remove
+ worklist handling, dump when ANTIC_IN changed.
+ (compute_partial_antic_aux): Remove worklist handling.
+ (init_pre): Do not compute post dominators. Add a comment about
+ the CFG order chosen.
+ (fini_pre): Do not free post dominators.
+
+2016-04-13 Martin Sebor <msebor@redhat.com>
+
+ PR c++/69517
+ PR c++/70019
+ PR c++/70588
+ * doc/extend.texi (Variable Length): Document C++ specifics.
+
+2016-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70641
+ * ipa-pure-const.c (pass_nothrow::execute): Call maybe_clean_eh_stmt
+ on all recursive call stmts. Return TODO_cleanup_cfg if any dead
+ eh edges have been purged.
+
+ PR c++/70594
+ * tree-sra.c (create_access_replacement,
+ get_replaced_param_substitute): Set DECL_NAMELESS on repl if it
+ gets fancy name.
+ * tree-pretty-print.c (dump_fancy_name): New function.
+ (dump_decl_name, dump_generic_node): Use it.
+
+2016-04-13 Jason Merrill <jason@redhat.com>
+
+ * cfgexpand.c (pass_expand::execute): Handle attribute "abi warning".
+ * expr.c (expand_expr_real_1): Likewise.
+
+2016-04-13 Ilya Enkovich <ilya.enkovich@intel.com>
+
+ * config/i386/i386.md (kunpckhi): Swap operands.
+ (kunpcksi): Likewise.
+ (kunpckdi): Likewise.
+ * config/i386/sse.md (vec_pack_trunc_qi): Likewise.
+ (vec_pack_trunc_<mode>): Likewise.
+
+2016-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/70628
+ * explow.c (convert_memory_address_addr_space_1): Formatting fix.
+
+ PR middle-end/70633
+ * gimplify.c (gimplify_init_constructor): Clear TREE_STATIC if
+ gimplification turns some element into non-constant.
+
+ PR debug/70628
+ * rtl.h (convert_memory_address_addr_space_1): New prototype.
+ * explow.c (convert_memory_address_addr_space_1): No longer static,
+ add NO_EMIT argument and don't call convert_modes if true, pass
+ it down recursively, remove break after return.
+ (convert_memory_address_addr_space): Adjust caller.
+ * simplify-rtx.c (simplify_unary_operation_1): Call
+ convert_memory_address_addr_space_1 instead of convert_memory_address,
+ if it returns NULL, don't simplify.
+
+2016-04-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/70630
+ * config/sparc/sparc.c (sparc_compute_frame_size): Add parentheses.
+
+2016-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
+ Bump the upper SIMDLEN limits, so that if the return type or
+ characteristic type if the return type is void can be passed in
+ all available SSE2/AVX/AVX2/AVX512-F registers, the SIMDLEN is
+ allowed.
+
+2016-04-12 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/70640
+ * config/rs6000/rs6000.md (ieee_128bit_vsx_neg<mode>2_internal):
+ Do not use "=" constraint on an input constraint.
+ (ieee_128bit_vsx_abs<mode>2_internal): Likewise.
+ (ieee_128bit_vsx_nabs<mode>2_internal): Likewise.
+ (ieee_128bit_vsx_nabs<mode>2): Correct splitter so that it
+ generates (neg (abs ...)) instead of (abs ...).
+
+2016-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/70596
+ * lra-spills.c (spill_pseudos): Don't delete debug insns, instead
+ just invalidate LRA data and reset them. Adjust dump wording.
+
+2016-04-12 Martin Liska <mliska@suse.cz>
+
+ Revert
+ 2016-03-30 Jan Hubicka <hubicka@ucw.cz>
+
+ * tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can't get realistic
+ estimates here.
+ * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also
+ max_loop_iterations_int.
+ (tree_unswitch_outer_loop): Likewise.
+ * tree-ssa-loop-ivopts.c (avg_loop_niter): Likewise.
+ * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
+
+2016-04-12 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/68756
+ * graphite-isl-ast-to-gimple.c (copy_cond_phi_args): Use new_expr
+ instead of new_name.
+
+2016-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/70602
+ * tree-sra.c (generate_subtree_copies): Don't write anything into
+ constant pool decls.
+
+ * omp-low.c (lower_omp_target): Use GOMP_MAP_FIRSTPRIVATE_INT
+ regardless whether there are depend clauses or not.
+
+2016-04-11 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/70381
+ * config/rs6000/rs6000.c (rs6000_opt_masks): Disable using the
+ target attribute and pragma from changing the -mfloat128
+ and -mfloat128-hardware options.
+
+ * doc/extend.texi (Additional Floating Types): Document PowerPC
+ __float128 restrictions.
+
+2016-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ PR target/70133
+ * config/aarch64/driver-aarch64.c
+ (aarch64_get_extension_string_for_isa_flags): New.
+ (arch_extension): Rename to...
+ (aarch64_arch_extension): ...This.
+ (ext_to_feat_string): Rename to...
+ (aarch64_extensions): ...This.
+ (aarch64_core_data): Keep track of architecture extension flags.
+ (cpu_data): Rename to...
+ (aarch64_cpu_data): ...This.
+ (aarch64_arch_driver_info): Keep track of architecture extension
+ flags.
+ (get_arch_name_from_id): Rename to...
+ (get_arch_from_id): ...This, change return type.
+ (host_detect_local_cpu): Update and reformat for renames, handle
+ extensions through common infrastructure.
+
+2016-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ PR target/70133
+ * config/aarch64/aarch64-common.c (aarch64_option_extension): Keep
+ track of a canonical flag name.
+ (all_extensions): Likewise.
+ (arch_to_arch_name): Also track extension flags enabled by the arch.
+ (all_architectures): Likewise.
+ (aarch64_parse_extension): Move to here.
+ (aarch64_get_extension_string_for_isa_flags): Take a new argument,
+ rework.
+ (aarch64_rewrite_selected_cpu): Update for above change.
+ * config/aarch64/aarch64-option-extensions.def: Rework the way flags
+ are handled, such that the single explicit value enabled by an
+ extension is kept seperate from the implicit values it also enables.
+ * config/aarch64/aarch64-protos.h (aarch64_parse_opt_result): Move
+ to here.
+ (aarch64_parse_extension): New.
+ * config/aarch64/aarch64.c (aarch64_parse_opt_result): Move from
+ here to config/aarch64/aarch64-protos.h.
+ (aarch64_parse_extension): Move from here to
+ common/config/aarch64/aarch64-common.c.
+ (aarch64_option_print): Update.
+ (aarch64_declare_function_name): Likewise.
+ (aarch64_start_file): Likewise.
+ * config/aarch64/driver-aarch64.c (arch_extension): Keep track of
+ the canonical flag for extensions.
+ * config.gcc (aarch64*-*-*): Extend regex for capturing extension
+ flags.
+
+2016-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/aarch64/aarch64.h (AARCH64_FL_FOR_ARCH8_1): Also add
+ AARCH64_FL_CRC.
+
+2016-04-09 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/68953
+ * graphite-sese-to-poly.c (pdr_add_memory_accesses): Order accesses from
+ first to last subscript.
+
+2016-04-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/70586
+ * tree-ssa-ifcombine.c (bb_no_side_effects_p): Return false
+ for any calls.
+
+2016-04-08 Cesar Philippidis <cesar@codesourcery.com>
+
+ PR lto/70289
+ PR ipa/70348
+ PR tree-optimization/70373
+ PR middle-end/70533
+ PR middle-end/70534
+ PR middle-end/70535
+ * gimplify.c (gimplify_adjust_omp_clauses): Add or adjust data
+ clauses for acc parallel reductions as necessary. Error on those
+ that are private.
+ * omp-low.c (scan_sharing_clauses): Don't install variables which
+ are used in acc parallel reductions.
+ (lower_rec_input_clauses): Remove dead code.
+ (lower_oacc_reductions): Add support for reference reductions.
+ (lower_reduction_clauses): Remove dead code.
+ (lower_omp_target): Don't remap variables appearing in acc parallel
+ reductions.
+ * tree.h (OMP_CLAUSE_MAP_IN_REDUCTION): New macro.
+
+2016-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70593
+ * tree-ssa-coalesce.c (build_ssa_conflict_graph): For stmt
+ with multiple SSA_NAME defs, force the outputs other than first
+ to be live before calling live_track_process_def on each output.
+
+ PR rtl-optimization/70574
+ * fwprop.c (forward_propagate_and_simplify): Don't add
+ REG_EQUAL note if DF_REF_REG (use) is a paradoxical subreg.
+ (try_fwprop_subst): Don't add REG_EQUAL note if there are any
+ paradoxical subregs within *loc.
+
+2016-04-08 Thomas Schwinge <thomas@codesourcery.com>
+
+ * config/arc/arc.h (LINK_COMMAND_SPEC): Use gt to ignore
+ -ftree-parallelize-loops={0,1}.
+ * config/darwin.h (LINK_COMMAND_SPEC_A): Likewise.
+ * config/i386/mingw32.h (GOMP_SELF_SPECS): Likewise.
+ * config/ia64/hpux.h (LIB_SPEC): Likewise.
+ * config/pa/pa-hpux11.h (LIB_SPEC): Likewise.
+ * config/pa/pa64-hpux.h (LIB_SPEC): Likewise.
+
+2016-04-08 Maxim Ostapenko <m.ostapenko@samsung.com>
+
+ PR sanitizer/70541
+ * asan.c (instrument_derefs): If we get unknown location, extract it
+ with EXPR_LOCATION.
+ (maybe_instrument_call): Instrument gimple_call's arguments if needed.
+
+2016-04-08 Tom de Vries <tom@codesourcery.com>
+
+ * omp-low.c (lower_omp_target): Set TREE_NO_WARNING for oacc
+ implicit firstprivate clause.
+
+2016-04-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/70566
+ * config/arm/thumb2.md (tst + branch-> lsls + branch
+ peephole below *orsi_not_shiftsi_si): Require that condition
+ register is dead after the peephole.
+ (second peephole after the above): Likewise.
+
+2016-04-08 Alan Modra <amodra@gmail.com>
+
+ PR target/70117
+ * builtins.c (fold_builtin_classify): For IBM extended precision,
+ look at just the high-order double to test for NaN.
+ (fold_builtin_interclass_mathfn): Similarly for Inf. For isnormal
+ test just the high double for Inf but both doubles for subnormal
+ limit.
+
+2016-04-07 Jakub Jelinek <jakub@redhat.com>
+
+ * cgraph.h (struct cgraph_simd_clone): Add mask_mode field.
+ * omp-low.c (simd_clone_init_simd_arrays, simd_clone_adjust): Handle
+ node->simdclone->mask_mode != VOIDmode masks.
+ (simd_clone_adjust_argument_types): Likewise. Move sc var definition
+ earlier, use it instead of node->simdclone.
+ * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
+ Set clonei->mask_mode.
+
+2016-04-06 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c/70436
+ * parser.c (cp_parser_iteration_statement): New parameter IF_P.
+ Pass it through to cp_parser_already_scoped_statement.
+ (cp_parser_already_scoped_statement): New parameter IF_P. Pass
+ it through to cp_parser_statement.
+ (cp_parser_statement): Pass IF_P through to
+ cp_parser_iteration_statement.
+ (cp_parser_pragma): Adjust call to
+ cp_parser_iteration_statement.
+
+2016-04-06 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c/70436
+ * gimplify.c (gimplify_omp_ordered): Add explicit braces to
+ resolve a future -Wparentheses warning.
+ * omp-low.c (scan_sharing_clauses): Likewise.
+ * tree-parloops.c (eliminate_local_variables): Likewise.
+
+2016-04-06 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/70398
+ * lra-constraints.c (process_address_1): Check zero scale and code
+ for reloading with zero scale.
+
+2016-04-06 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (shuffletype): Add V32HI and V4TI modes.
+ (ssescalarsize): Add V8SF, V4SF, V4DF and V2DF modes.
+
+2016-04-06 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
+ Add support for AVX512F clones, include them by default for
+ exported OpenMP declare simd functions. For AVX2 allow simdlen 32
+ and use it if charasteric type is 8-bit, for AVX512F allow simdlen
+ up to 128.
+
+ PR middle-end/70550
+ * tree.h (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT): Define.
+ * gimplify.c (gimplify_adjust_omp_clauses_1): Set it for implicit
+ firstprivate clauses.
+ * omp-low.c (lower_send_clauses): Set TREE_NO_WARNING for
+ OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT !by_ref vars in task contexts.
+ (lower_omp_target): Set TREE_NO_WARNING for
+ non-addressable possibly uninitialized vars which are copied into
+ addressable temporaries or copied for GOMP_MAP_FIRSTPRIVATE_INT.
+
+2016-04-05 John David Anglin <danglin@gcc.gnu.org>
+
+ * config/pa/predicates.md (integer_store_memory_operand): Accept
+ REG+D operands with a large offset when reload_in_progress is true.
+ (floating_point_store_memory_operand): Likewise.
+
+2016-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70336
+ * match.pd (nested int casts): Limit to GIMPLE.
+
+2016-04-05 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/66223
+ * ipa-devirt.c (maybe_record_node): Fix comment; use
+ SANITIZE_UNREACHABLE instead of SANITIZE_UNDEFINED.
+
+2016-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/70542
+ * ree.c (add_removable_extension): For VECTOR_MODE_P punt
+ if there are any uses other than insn or debug insns.
+
+2016-04-05 Marc Glisse <marc.glisse@inria.fr>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/70509
+ * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SELECT>:
+ Shift HOST_WIDE_INT_1U instead of 1.
+
+2016-04-05 Zdenek Sojka <zsojka@seznam.cz>
+
+ PR tree-optimization/70509
+ * tree-ssa-forwprop.c (simplify_bitfield_ref): Use bitsize_int instead
+ of the vector base type for index.
+
+2016-04-05 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/70510
+ * config/i386/sse.md (iptr): Add V64QI, V32HI, V16SI and V8DI modes.
+
+2016-04-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/70526
+ * tree-sra.c (build_ref_for_offset): Use prev_base to
+ extract the alias pointer type.
+
+2016-04-05 Richard Biener <rguenther@suse.de>
+
+ * dse.c (struct store_info): Remove alias_set member.
+ (struct read_info_type): Likewise.
+ (clear_alias_group, clear_alias_mode_table, clear_alias_mode_holder,
+ spill_deleted, clear_alias_set_lookup): Remove.
+ (get_group_info): Remove dead base == NULL_RTX case.
+ (dse_step0): Remove initialization of removed variables.
+ (delete_dead_store_insn): Reomve alias set dumping.
+ (free_read_records): Remove alias_set handling.
+ (canon_address): Remove alias_set_out parameter.
+ (record_store): Remove spill_alias_set, it's always zero.
+ (check_mem_read_rtx): Likewise.
+ (dse_step2): Rename from ...
+ (dse_step2_nospill): ... this. Adjust.
+ (scan_stores): Rename from ...
+ (scan_stores_nospill): ... this.
+ (scan_reads): Rename from ...
+ (scan_reads_nospill): ... this.
+ (scan_stores_spill, scan_reads_spill): Remove.
+ (dse_step3_scan): Remove for_spills argument which is always false.
+ (dse_step3): Likewise.
+ (dse_step5): Rename from ...
+ (dse_step5_nospill): ... this. Remove alias_set handling.
+ (rest_of_handle_dse): Adjust.
+
+2016-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/70525
+ * config/i386/sse.md (*andnot<mode>3): Simplify assertions.
+ Use vpandn<ssemodesuffix> for V16SI/V8DImode, vpandnq for
+ V32HI/V64QImode, don't use <mask_operand3_1>, fix up formatting.
+ (*andnot<mode>3_mask): Remove insn with VI12_AVX512VL iterator.
+
+2016-04-05 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/70499
+ * gimplify-me.c (gimple_regimplify_operands): Do not rewrite
+ non-register type temporaries into SSA.
+
+2016-04-04 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/66223
+ * ipa-devirt.c (maybe_record_node): Do not optimize cxa_pure_virtual
+ calls when sanitizing.
+ (possible_polymorphic_call_target_p): Fix formatting.
+
+2016-04-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70457
+ * tree-inline.c (estimate_num_insn): Use gimple_call_builtin_p
+ to ensure a call statement is compatible with a built-in's
+ prototype.
+ * tree-ssa-math-opts.c (pass_optimize_windening_mul::execute):
+ Likewise.
+
+2016-04-04 Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/70484
+ * rtl.h (canon_output_dependence): Declare.
+ * alias.c (canon_output_dependence): New function.
+ * dse.c (record_store): Use canon_output_dependence rather
+ than canon_true_dependence.
+
+2016-03-30 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/68881
+ * cgraph.h (symtab_node::copy_visibility_from): New function.
+ * symtab.c (symtab_node::copy_visibility_from): New function.
+ * ipa-visibility.c (optimize_weakref): New function.
+ (function_and_variable_visibility): Use it.
+
+2016-04-04 Martin Liska <mliska@suse.cz>
+
+ PR hsa/70402
+ * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Guard index
+ value that is really in range handled by SBR instruction.
+ * hsa-brig.c (emit_switch_insn): Do not emit unconditional jump.
+ * hsa-dump.c (dump_hsa_insn_1): Do not dump default BB.
+ * hsa.h (hsa_insn_sbr::m_default_bb): Remove field.
+
+2016-04-03 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/70416
+ PR target/67391
+ * config/sh/sh.md (*addsi3): Allow pattern when reload_in_progress is
+ set, but not for SP_REG operands.
+
+2016-04-02 Martin Sebor <msebor@redhat.com>
+
+ PR c++/67376
+ * fold-const.c (maybe_nonzero_address): New function.
+ (fold_comparison): Call it. Fold equality and relational
+ expressions involving null pointers.
+ (tree_single_nonzero_warnv_p): Call maybe_nonzero_address.
+
+2016-03-31 Evandro Menezes <e.menezes@samsung.com>
+
+ Fix the predicate "aarch64_simd_reg_or_zero" to correctly validate
+ the "Y" constraint (scalar FP 0.0 immediate).
+
+ * gcc/config/aarch64/predicates.md (aarch64_simd_reg_or_zero):
+ Add the "const_double" to the list of operand constraints.
+
+2016-04-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/70467
+ * config/i386/i386.md (*add<dwi>3_doubleword, *sub<dwi>3_doubleword):
+ If low word of the last operand is 0, just emit addition/subtraction
+ for the high word.
+
+2016-04-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ PR target/70404
+ * config/s390/s390.c (s390_expand_insv): Check for everything
+ constant instead of just VOIDmode stuff.
+
+2016-04-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR target/70496
+ * config/arm/arm.h (ASM_APP_OFF): Handle TARGET_ARM and TARGET_THUMB.
+
+2016-04-01 Nathan Sidwell <nathan@acm.org>
+
+ * tree.def (TRY_CATCH_EXPR): Correct documentation.
+
2016-03-31 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/70461
@@ -39,8 +595,7 @@
(pass_gen_hsail::execute): Do not call
convert_switch_statements here.
* hsa-regalloc.c (hsa_regalloc): Call update_dominance.
- * hsa.h (hsa_function_representation::m_modified_cfg):
- New flag.
+ * hsa.h (hsa_function_representation::m_modified_cfg): New flag.
(hsa_function_representation::update_dominance): New function.
2016-03-31 Martin Liska <mliska@suse.cz>
@@ -48,23 +603,19 @@
PR hsa/70391
* hsa-brig.c (emit_directive_variable): Emit alignment
according to hsa_symbol::m_align.
- * hsa-dump.c (hsa_byte_alignment): Move the function to
- another file.
+ * hsa-dump.c (hsa_byte_alignment): Move the function to another file.
(dump_hsa_symbol): Dump alignment of HSA symbols.
- * hsa-gen.c (get_symbol_for_decl): Set-up alignment
- of a symbol.
+ * hsa-gen.c (get_symbol_for_decl): Set-up alignment of a symbol.
(gen_hsa_addr_with_align): New function.
(hsa_bitmemref_alignment): Use newly added function.
(gen_hsa_insns_for_load): Likewise.
(gen_hsa_insns_for_store): Likewise.
(gen_hsa_memory_copy): New argument added.
(gen_hsa_insns_for_single_assignment): Respect
- alignment for assignments processed via
- gen_hsa_memory_copy.
+ alignment for assignments processed via gen_hsa_memory_copy.
(gen_hsa_insns_for_direct_call): Likewise.
(gen_hsa_insns_for_return): Likewise.
- (gen_function_def_parameters): Set default
- alignment.
+ (gen_function_def_parameters): Set default alignment.
* hsa.c (hsa_object_alignment): New function.
(hsa_byte_alignment): Pasted function.
* hsa.h (hsa_symbol::m_align): New field.
@@ -81,16 +632,15 @@
2016-03-31 Ilya Enkovich <enkovich.gnu@gmail.com>
PR target/70442
- * config/i386/i386.c (scalar_chain::convert_op): Fix
- description.
+ * config/i386/i386.c (scalar_chain::convert_op): Fix description.
(scalar_chain::convert_insn): Call convert_op for reg
moves to handle undefined registers.
2016-03-31 Nathan Sidwell <nathan@acm.org>
PR c++/70393
- * varasm.c (output_constructor_regular_field): Flush bitfield
- earlier. Assert we don't want to move backwards.
+ * varasm.c (output_constructor_regular_field): Flush bitfield earlier.
+ Assert we don't want to move backwards.
2016-03-31 Kirill Yukhin <kirill.yukhin@intel.com>
@@ -131,8 +681,7 @@
2016-03-30 Richard Biener <rguenther@suse.de>
PR middle-end/70450
- * fold-const.c (extract_muldiv_1): Fix thinko in wide_int::from
- usage.
+ * fold-const.c (extract_muldiv_1): Fix thinko in wide_int::from usage.
2016-03-30 Jakub Jelinek <jakub@redhat.com>
@@ -146,6 +695,12 @@
* config/arm/arm.c (arm_reload_out_hi): Add code to handle the
case where we are already provided with an SImode SUBREG.
+2016-03-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/70439
+ * config/i386/i386.c (ix86_expand_epilogue): Properly check
+ conflict between DRAP register and __builtin_eh_return.
+
2016-03-30 Michael Matz <matz@suse.de>
Richard Biener <rguenther@suse.de>
@@ -173,8 +728,7 @@
2016-03-29 Jeff Law <law@redhat.com>
- * tree-ssa-coalesce.c (struct ssa_conflicts): Fix typo in
- comment.
+ * tree-ssa-coalesce.c (struct ssa_conflicts): Fix typo in comment.
2016-03-10 Jan Hubicka <hubicka@ucw.cz>
@@ -206,8 +760,7 @@
mode != result_mode.
PR c++/70353
- * tree-inline.c (remap_decls): Don't add_local_decl if
- cfun is null.
+ * tree-inline.c (remap_decls): Don't add_local_decl if cfun is null.
PR tree-optimization/70405
* ssa-iterators.h (num_imm_uses): Add missing braces.
@@ -221,8 +774,7 @@
2016-03-29 Richard Henderson <rth@redhat.com>
PR middle-end/70355
- * lower-subreg.c (simplify_subreg_concatn): Reject paradoxical
- subregs.
+ * lower-subreg.c (simplify_subreg_concatn): Reject paradoxical subregs.
2016-03-29 Richard Biener <rguenther@suse.de>
@@ -236,17 +788,16 @@
2016-03-28 James Bowman <james.bowman@ftdichip.com>
* config/ft32/ft32.opt (mnodiv): New.
- * config/ft32/ft32.md (*divsi3, *modsi3): Qualify with
- TARGET_NODIV.
+ * config/ft32/ft32.md (*divsi3, *modsi3): Qualify with TARGET_NODIV.
* doc/invoke.texi (FT32 Options -mnodiv): New.
2016-03-28 Kirill Yukhin <kirill.yukhin@intel.com>
- PR target/70406
- * config/i386/i386.md (define_split, andn): Fix modes.
+ PR target/70406
+ * config/i386/i386.md (define_split, andn): Fix modes.
2016-03-26 Richard Biener <rguenther@suse.de>
- Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
+ Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR ipa/70366
* ipa-inline-transform.c (inline_call): Pass opts_for_fn (to->decl)
@@ -289,7 +840,7 @@
2016-03-24 Richard Henderson <rth@redhat.com>
- PR middle-end/69845
+ PR middle-end/69845
* fold-const.c (extract_muldiv_1): Correct test for multiplication
overflow.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 1528ea5fdf3..8460464baaa 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20160331
+20160415
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 0c9b179792d..6f84ab32693 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,6 +1,11 @@
+2016-04-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (components_to_record): Restrict the previous
+ change to fields with variable size.
+
2016-03-27 Eric Botcazou <ebotcazou@adacore.com>
- * gcc-interface/decl.c (components_to_record): Add special case for
+ * gcc-interface/decl.c (components_to_record): Add special case for
single field with representation clause at offset 0.
2016-03-16 Svante Signell <svante.signell@gmail.com>
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index ad8452810d4..87026e742bb 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -7606,13 +7606,15 @@ components_to_record (tree gnu_record_type, Node_Id gnat_component_list,
if (p_gnu_rep_list && gnu_rep_list)
*p_gnu_rep_list = chainon (*p_gnu_rep_list, gnu_rep_list);
- /* If only one field has a rep clause and it starts at 0, put back the field
- at the head of the regular field list. This will avoid creating a useless
- REP part below and deal with the annoying case of an extension of a record
- with variable size and rep clause, for which the _Parent field is forced
- at offset 0 and has variable size, which we do not support below. */
+ /* Deal with the annoying case of an extension of a record with variable size
+ and partial rep clause, for which the _Parent field is forced at offset 0
+ and has variable size, which we do not support below. Note that we cannot
+ do it if the field has fixed size because we rely on the presence of the
+ REP part built below to trigger the reordering of the fields in a derived
+ record type when all the fields have a fixed position. */
else if (gnu_rep_list
&& !DECL_CHAIN (gnu_rep_list)
+ && TREE_CODE (DECL_SIZE (gnu_rep_list)) != INTEGER_CST
&& !variants_have_rep
&& first_free_pos
&& integer_zerop (first_free_pos)
diff --git a/gcc/alias.c b/gcc/alias.c
index 753e1aff0b1..a0e25dcce06 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -3057,6 +3057,20 @@ output_dependence (const_rtx mem, const_rtx x)
/*mem_canonicalized=*/false,
/*x_canonicalized*/false, /*writep=*/true);
}
+
+/* Likewise, but we already have a canonicalized MEM, and X_ADDR for X.
+ Also, consider X in X_MODE (which might be from an enclosing
+ STRICT_LOW_PART / ZERO_EXTRACT).
+ If MEM_CANONICALIZED is true, MEM is canonicalized. */
+
+int
+canon_output_dependence (const_rtx mem, bool mem_canonicalized,
+ const_rtx x, machine_mode x_mode, rtx x_addr)
+{
+ return write_dependence_p (mem, x, x_mode, x_addr,
+ mem_canonicalized, /*x_canonicalized=*/true,
+ /*writep=*/true);
+}
diff --git a/gcc/asan.c b/gcc/asan.c
index 47bfdcde53d..71095fb9b1f 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -1766,6 +1766,8 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t,
tree type, base;
HOST_WIDE_INT size_in_bytes;
+ if (location == UNKNOWN_LOCATION)
+ location = EXPR_LOCATION (t);
type = TREE_TYPE (t);
switch (TREE_CODE (t))
@@ -2049,6 +2051,7 @@ maybe_instrument_call (gimple_stmt_iterator *iter)
gsi_insert_before (iter, g, GSI_SAME_STMT);
}
+ bool instrumented = false;
if (gimple_store_p (stmt))
{
tree ref_expr = gimple_call_lhs (stmt);
@@ -2056,11 +2059,30 @@ maybe_instrument_call (gimple_stmt_iterator *iter)
gimple_location (stmt),
/*is_store=*/true);
- gsi_next (iter);
- return true;
+ instrumented = true;
}
- return false;
+ /* Walk through gimple_call arguments and check them id needed. */
+ unsigned args_num = gimple_call_num_args (stmt);
+ for (unsigned i = 0; i < args_num; ++i)
+ {
+ tree arg = gimple_call_arg (stmt, i);
+ /* If ARG is not a non-aggregate register variable, compiler in general
+ creates temporary for it and pass it as argument to gimple call.
+ But in some cases, e.g. when we pass by value a small structure that
+ fits to register, compiler can avoid extra overhead by pulling out
+ these temporaries. In this case, we should check the argument. */
+ if (!is_gimple_reg (arg) && !is_gimple_min_invariant (arg))
+ {
+ instrument_derefs (iter, arg,
+ gimple_location (stmt),
+ /*is_store=*/false);
+ instrumented = true;
+ }
+ }
+ if (instrumented)
+ gsi_next (iter);
+ return instrumented;
}
/* Walk each instruction of all basic block and instrument those that
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 9368ed0f5e3..3d89bafe34a 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -7529,6 +7529,8 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg)
mode = TYPE_MODE (TREE_TYPE (arg));
+ bool is_ibm_extended = MODE_COMPOSITE_P (mode);
+
/* If there is no optab, try generic code. */
switch (DECL_FUNCTION_CODE (fndecl))
{
@@ -7538,10 +7540,18 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg)
{
/* isinf(x) -> isgreater(fabs(x),DBL_MAX). */
tree const isgr_fn = builtin_decl_explicit (BUILT_IN_ISGREATER);
- tree const type = TREE_TYPE (arg);
+ tree type = TREE_TYPE (arg);
REAL_VALUE_TYPE r;
char buf[128];
+ if (is_ibm_extended)
+ {
+ /* NaN and Inf are encoded in the high-order double value
+ only. The low-order value is not significant. */
+ type = double_type_node;
+ mode = DFmode;
+ arg = fold_build1_loc (loc, NOP_EXPR, type, arg);
+ }
get_max_float (REAL_MODE_FORMAT (mode), buf, sizeof (buf));
real_from_string (&r, buf);
result = build_call_expr (isgr_fn, 2,
@@ -7554,10 +7564,18 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg)
{
/* isfinite(x) -> islessequal(fabs(x),DBL_MAX). */
tree const isle_fn = builtin_decl_explicit (BUILT_IN_ISLESSEQUAL);
- tree const type = TREE_TYPE (arg);
+ tree type = TREE_TYPE (arg);
REAL_VALUE_TYPE r;
char buf[128];
+ if (is_ibm_extended)
+ {
+ /* NaN and Inf are encoded in the high-order double value
+ only. The low-order value is not significant. */
+ type = double_type_node;
+ mode = DFmode;
+ arg = fold_build1_loc (loc, NOP_EXPR, type, arg);
+ }
get_max_float (REAL_MODE_FORMAT (mode), buf, sizeof (buf));
real_from_string (&r, buf);
result = build_call_expr (isle_fn, 2,
@@ -7577,21 +7595,72 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg)
/* isnormal(x) -> isgreaterequal(fabs(x),DBL_MIN) &
islessequal(fabs(x),DBL_MAX). */
tree const isle_fn = builtin_decl_explicit (BUILT_IN_ISLESSEQUAL);
- tree const isge_fn = builtin_decl_explicit (BUILT_IN_ISGREATEREQUAL);
- tree const type = TREE_TYPE (arg);
+ tree type = TREE_TYPE (arg);
+ tree orig_arg, max_exp, min_exp;
+ machine_mode orig_mode = mode;
REAL_VALUE_TYPE rmax, rmin;
char buf[128];
+ orig_arg = arg = builtin_save_expr (arg);
+ if (is_ibm_extended)
+ {
+ /* Use double to test the normal range of IBM extended
+ precision. Emin for IBM extended precision is
+ different to emin for IEEE double, being 53 higher
+ since the low double exponent is at least 53 lower
+ than the high double exponent. */
+ type = double_type_node;
+ mode = DFmode;
+ arg = fold_build1_loc (loc, NOP_EXPR, type, arg);
+ }
+ arg = fold_build1_loc (loc, ABS_EXPR, type, arg);
+
get_max_float (REAL_MODE_FORMAT (mode), buf, sizeof (buf));
real_from_string (&rmax, buf);
- sprintf (buf, "0x1p%d", REAL_MODE_FORMAT (mode)->emin - 1);
+ sprintf (buf, "0x1p%d", REAL_MODE_FORMAT (orig_mode)->emin - 1);
real_from_string (&rmin, buf);
- arg = builtin_save_expr (fold_build1_loc (loc, ABS_EXPR, type, arg));
- result = build_call_expr (isle_fn, 2, arg,
- build_real (type, rmax));
- result = fold_build2 (BIT_AND_EXPR, integer_type_node, result,
- build_call_expr (isge_fn, 2, arg,
- build_real (type, rmin)));
+ max_exp = build_real (type, rmax);
+ min_exp = build_real (type, rmin);
+
+ max_exp = build_call_expr (isle_fn, 2, arg, max_exp);
+ if (is_ibm_extended)
+ {
+ /* Testing the high end of the range is done just using
+ the high double, using the same test as isfinite().
+ For the subnormal end of the range we first test the
+ high double, then if its magnitude is equal to the
+ limit of 0x1p-969, we test whether the low double is
+ non-zero and opposite sign to the high double. */
+ tree const islt_fn = builtin_decl_explicit (BUILT_IN_ISLESS);
+ tree const isgt_fn = builtin_decl_explicit (BUILT_IN_ISGREATER);
+ tree gt_min = build_call_expr (isgt_fn, 2, arg, min_exp);
+ tree eq_min = fold_build2 (EQ_EXPR, integer_type_node,
+ arg, min_exp);
+ tree as_complex = build1 (VIEW_CONVERT_EXPR,
+ complex_double_type_node, orig_arg);
+ tree hi_dbl = build1 (REALPART_EXPR, type, as_complex);
+ tree lo_dbl = build1 (IMAGPART_EXPR, type, as_complex);
+ tree zero = build_real (type, dconst0);
+ tree hilt = build_call_expr (islt_fn, 2, hi_dbl, zero);
+ tree lolt = build_call_expr (islt_fn, 2, lo_dbl, zero);
+ tree logt = build_call_expr (isgt_fn, 2, lo_dbl, zero);
+ tree ok_lo = fold_build1 (TRUTH_NOT_EXPR, integer_type_node,
+ fold_build3 (COND_EXPR,
+ integer_type_node,
+ hilt, logt, lolt));
+ eq_min = fold_build2 (TRUTH_ANDIF_EXPR, integer_type_node,
+ eq_min, ok_lo);
+ min_exp = fold_build2 (TRUTH_ORIF_EXPR, integer_type_node,
+ gt_min, eq_min);
+ }
+ else
+ {
+ tree const isge_fn
+ = builtin_decl_explicit (BUILT_IN_ISGREATEREQUAL);
+ min_exp = build_call_expr (isge_fn, 2, arg, min_exp);
+ }
+ result = fold_build2 (BIT_AND_EXPR, integer_type_node,
+ max_exp, min_exp);
return result;
}
default:
@@ -7664,6 +7733,15 @@ fold_builtin_classify (location_t loc, tree fndecl, tree arg, int builtin_index)
if (!HONOR_NANS (arg))
return omit_one_operand_loc (loc, type, integer_zero_node, arg);
+ {
+ bool is_ibm_extended = MODE_COMPOSITE_P (TYPE_MODE (TREE_TYPE (arg)));
+ if (is_ibm_extended)
+ {
+ /* NaN and Inf are encoded in the high-order double value
+ only. The low-order value is not significant. */
+ arg = fold_build1_loc (loc, NOP_EXPR, double_type_node, arg);
+ }
+ }
arg = builtin_save_expr (arg);
return fold_build2_loc (loc, UNORDERED_EXPR, type, arg, arg);
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 26b1dabd6ee..f842efc8d4e 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2016-04-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/70639
+ * c-indentation.c (should_warn_for_misleading_indentation): Bail out
+ for switch statements, too.
+
2016-03-28 Jason Merrill <jason@redhat.com>
* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_range_based_for.
diff --git a/gcc/c-family/c-indentation.c b/gcc/c-family/c-indentation.c
index 1da3f6824c1..8c336867d8c 100644
--- a/gcc/c-family/c-indentation.c
+++ b/gcc/c-family/c-indentation.c
@@ -239,10 +239,11 @@ should_warn_for_misleading_indentation (const token_indent_info &guard_tinfo,
if (line_table->seen_line_directive)
return false;
- /* We can't usefully warn about do-while statements since the bodies of these
- statements are always explicitly delimited at both ends, so control flow is
- quite obvious. */
- if (guard_tinfo.keyword == RID_DO)
+ /* We can't usefully warn about do-while and switch statements since the
+ bodies of these statements are always explicitly delimited at both ends,
+ so control flow is quite obvious. */
+ if (guard_tinfo.keyword == RID_DO
+ || guard_tinfo.keyword == RID_SWITCH)
return false;
/* If the token following the body is a close brace or an "else"
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index b52b414478f..4b21d528f80 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,24 @@
+2016-04-13 Marek Polacek <polacek@redhat.com>
+
+ PR c/70436
+ * c-parser.c (c_parser_statement_after_labels): Add IF_P argument and
+ adjust callers.
+ (c_parser_statement): Likewise.
+ (c_parser_c99_block_statement): Likewise.
+ (c_parser_while_statement): Likewise.
+ (c_parser_for_statement): Likewise.
+ (c_parser_if_body): Don't set IF_P here.
+ (c_parser_if_statement): Add IF_P argument. Set IF_P here. Warn
+ about dangling else here.
+ * c-tree.h (c_finish_if_stmt): Adjust declaration.
+ * c-typeck.c (c_finish_if_stmt): Remove NESTED_IF parameter. Don't
+ warn about dangling else here.
+
+2016-04-04 Marek Polacek <polacek@redhat.com>
+
+ PR c/70307
+ * c-fold.c (c_fully_fold_internal): Handle VEC_COND_EXPR.
+
2016-03-31 Marek Polacek <polacek@redhat.com>
PR c/70297
diff --git a/gcc/c/c-fold.c b/gcc/c/c-fold.c
index f07917f17e7..6c82f242bf1 100644
--- a/gcc/c/c-fold.c
+++ b/gcc/c/c-fold.c
@@ -528,6 +528,26 @@ c_fully_fold_internal (tree expr, bool in_init, bool *maybe_const_operands,
*maybe_const_itself &= op2_const_self;
goto out;
+ case VEC_COND_EXPR:
+ orig_op0 = op0 = TREE_OPERAND (expr, 0);
+ orig_op1 = op1 = TREE_OPERAND (expr, 1);
+ orig_op2 = op2 = TREE_OPERAND (expr, 2);
+ op0 = c_fully_fold_internal (op0, in_init, maybe_const_operands,
+ maybe_const_itself, for_int_const);
+ STRIP_TYPE_NOPS (op0);
+ op1 = c_fully_fold_internal (op1, in_init, maybe_const_operands,
+ maybe_const_itself, for_int_const);
+ STRIP_TYPE_NOPS (op1);
+ op2 = c_fully_fold_internal (op2, in_init, maybe_const_operands,
+ maybe_const_itself, for_int_const);
+ STRIP_TYPE_NOPS (op2);
+
+ if (op0 != orig_op0 || op1 != orig_op1 || op2 != orig_op2)
+ ret = fold_build3_loc (loc, code, TREE_TYPE (expr), op0, op1, op2);
+ else
+ ret = fold (expr);
+ goto out;
+
case EXCESS_PRECISION_EXPR:
/* Each case where an operand with excess precision may be
encountered must remove the EXCESS_PRECISION_EXPR around
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index 646068424bd..d37c6917b32 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -1301,13 +1301,14 @@ static void c_parser_initval (c_parser *, struct c_expr *,
static tree c_parser_compound_statement (c_parser *);
static void c_parser_compound_statement_nostart (c_parser *);
static void c_parser_label (c_parser *);
-static void c_parser_statement (c_parser *);
-static void c_parser_statement_after_labels (c_parser *, vec<tree> * = NULL);
-static void c_parser_if_statement (c_parser *, vec<tree> *);
+static void c_parser_statement (c_parser *, bool *);
+static void c_parser_statement_after_labels (c_parser *, bool *,
+ vec<tree> * = NULL);
+static void c_parser_if_statement (c_parser *, bool *, vec<tree> *);
static void c_parser_switch_statement (c_parser *);
-static void c_parser_while_statement (c_parser *, bool);
+static void c_parser_while_statement (c_parser *, bool, bool *);
static void c_parser_do_statement (c_parser *, bool);
-static void c_parser_for_statement (c_parser *, bool);
+static void c_parser_for_statement (c_parser *, bool, bool *);
static tree c_parser_asm_statement (c_parser *);
static tree c_parser_asm_operands (c_parser *);
static tree c_parser_asm_goto_operands (c_parser *);
@@ -4853,7 +4854,7 @@ c_parser_compound_statement_nostart (c_parser *parser)
last_label = false;
last_stmt = true;
mark_valid_location_for_stdc_pragma (false);
- c_parser_statement_after_labels (parser);
+ c_parser_statement_after_labels (parser, NULL);
}
parser->error = false;
@@ -5095,25 +5096,35 @@ c_parser_label (c_parser *parser)
statement:
transaction-statement
transaction-cancel-statement
-*/
+
+ IF_P is used to track whether there's a (possibly labeled) if statement
+ which is not enclosed in braces and has an else clause. This is used to
+ implement -Wparentheses. */
static void
-c_parser_statement (c_parser *parser)
+c_parser_statement (c_parser *parser, bool *if_p)
{
c_parser_all_labels (parser);
- c_parser_statement_after_labels (parser);
+ c_parser_statement_after_labels (parser, if_p, NULL);
}
/* Parse a statement, other than a labeled statement. CHAIN is a vector
- of if-else-if conditions. */
+ of if-else-if conditions.
+
+ IF_P is used to track whether there's a (possibly labeled) if statement
+ which is not enclosed in braces and has an else clause. This is used to
+ implement -Wparentheses. */
static void
-c_parser_statement_after_labels (c_parser *parser, vec<tree> *chain)
+c_parser_statement_after_labels (c_parser *parser, bool *if_p,
+ vec<tree> *chain)
{
location_t loc = c_parser_peek_token (parser)->location;
tree stmt = NULL_TREE;
bool in_if_block = parser->in_if_block;
parser->in_if_block = false;
+ if (if_p != NULL)
+ *if_p = false;
switch (c_parser_peek_token (parser)->type)
{
case CPP_OPEN_BRACE:
@@ -5123,19 +5134,19 @@ c_parser_statement_after_labels (c_parser *parser, vec<tree> *chain)
switch (c_parser_peek_token (parser)->keyword)
{
case RID_IF:
- c_parser_if_statement (parser, chain);
+ c_parser_if_statement (parser, if_p, chain);
break;
case RID_SWITCH:
c_parser_switch_statement (parser);
break;
case RID_WHILE:
- c_parser_while_statement (parser, false);
+ c_parser_while_statement (parser, false, if_p);
break;
case RID_DO:
c_parser_do_statement (parser, false);
break;
case RID_FOR:
- c_parser_for_statement (parser, false);
+ c_parser_for_statement (parser, false, if_p);
break;
case RID_CILK_FOR:
if (!flag_cilkplus)
@@ -5321,14 +5332,18 @@ c_parser_paren_condition (c_parser *parser)
return cond;
}
-/* Parse a statement which is a block in C99. */
+/* Parse a statement which is a block in C99.
+
+ IF_P is used to track whether there's a (possibly labeled) if statement
+ which is not enclosed in braces and has an else clause. This is used to
+ implement -Wparentheses. */
static tree
-c_parser_c99_block_statement (c_parser *parser)
+c_parser_c99_block_statement (c_parser *parser, bool *if_p)
{
tree block = c_begin_compound_stmt (flag_isoc99);
location_t loc = c_parser_peek_token (parser)->location;
- c_parser_statement (parser);
+ c_parser_statement (parser, if_p);
return c_end_compound_stmt (loc, block, flag_isoc99);
}
@@ -5338,7 +5353,11 @@ c_parser_c99_block_statement (c_parser *parser)
we handle an empty body specially for the sake of -Wempty-body
warnings, and (d) we call parser_compound_statement directly
because c_parser_statement_after_labels resets
- parser->in_if_block. */
+ parser->in_if_block.
+
+ IF_P is used to track whether there's a (possibly labeled) if statement
+ which is not enclosed in braces and has an else clause. This is used to
+ implement -Wparentheses. */
static tree
c_parser_if_body (c_parser *parser, bool *if_p,
@@ -5350,7 +5369,6 @@ c_parser_if_body (c_parser *parser, bool *if_p,
= get_token_indent_info (c_parser_peek_token (parser));
c_parser_all_labels (parser);
- *if_p = c_parser_next_token_is_keyword (parser, RID_IF);
if (c_parser_next_token_is (parser, CPP_SEMICOLON))
{
location_t loc = c_parser_peek_token (parser)->location;
@@ -5363,7 +5381,7 @@ c_parser_if_body (c_parser *parser, bool *if_p,
else if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
add_stmt (c_parser_compound_statement (parser));
else
- c_parser_statement_after_labels (parser);
+ c_parser_statement_after_labels (parser, if_p);
token_indent_info next_tinfo
= get_token_indent_info (c_parser_peek_token (parser));
@@ -5397,7 +5415,7 @@ c_parser_else_body (c_parser *parser, const token_indent_info &else_tinfo,
c_parser_consume_token (parser);
}
else
- c_parser_statement_after_labels (parser, chain);
+ c_parser_statement_after_labels (parser, NULL, chain);
token_indent_info next_tinfo
= get_token_indent_info (c_parser_peek_token (parser));
@@ -5412,15 +5430,18 @@ c_parser_else_body (c_parser *parser, const token_indent_info &else_tinfo,
if ( expression ) statement
if ( expression ) statement else statement
- CHAIN is a vector of if-else-if conditions. */
+ CHAIN is a vector of if-else-if conditions.
+ IF_P is used to track whether there's a (possibly labeled) if statement
+ which is not enclosed in braces and has an else clause. This is used to
+ implement -Wparentheses. */
static void
-c_parser_if_statement (c_parser *parser, vec<tree> *chain)
+c_parser_if_statement (c_parser *parser, bool *if_p, vec<tree> *chain)
{
tree block;
location_t loc;
tree cond;
- bool first_if = false;
+ bool nested_if = false;
tree first_body, second_body;
bool in_if_block;
tree if_stmt;
@@ -5439,7 +5460,7 @@ c_parser_if_statement (c_parser *parser, vec<tree> *chain)
}
in_if_block = parser->in_if_block;
parser->in_if_block = true;
- first_body = c_parser_if_body (parser, &first_if, if_tinfo);
+ first_body = c_parser_if_body (parser, &nested_if, if_tinfo);
parser->in_if_block = in_if_block;
if (warn_duplicated_cond)
@@ -5470,10 +5491,22 @@ c_parser_if_statement (c_parser *parser, vec<tree> *chain)
}
}
second_body = c_parser_else_body (parser, else_tinfo, chain);
+ /* Set IF_P to true to indicate that this if statement has an
+ else clause. This may trigger the Wparentheses warning
+ below when we get back up to the parent if statement. */
+ if (if_p != NULL)
+ *if_p = true;
}
else
{
second_body = NULL_TREE;
+
+ /* Diagnose an ambiguous else if if-then-else is nested inside
+ if-then. */
+ if (nested_if)
+ warning_at (loc, OPT_Wparentheses,
+ "suggest explicit braces to avoid ambiguous %<else%>");
+
if (warn_duplicated_cond)
{
/* This if statement does not have an else clause. We don't
@@ -5482,7 +5515,7 @@ c_parser_if_statement (c_parser *parser, vec<tree> *chain)
chain = NULL;
}
}
- c_finish_if_stmt (loc, cond, first_body, second_body, first_if);
+ c_finish_if_stmt (loc, cond, first_body, second_body);
if_stmt = c_end_compound_stmt (loc, block, flag_isoc99);
/* If the if statement contains array notations, then we expand them. */
@@ -5533,7 +5566,7 @@ c_parser_switch_statement (c_parser *parser)
c_start_case (switch_loc, switch_cond_loc, expr, explicit_cast_p);
save_break = c_break_label;
c_break_label = NULL_TREE;
- body = c_parser_c99_block_statement (parser);
+ body = c_parser_c99_block_statement (parser, NULL/*if??*/);
c_finish_case (body, ce.original_type);
if (c_break_label)
{
@@ -5550,10 +5583,13 @@ c_parser_switch_statement (c_parser *parser)
while-statement:
while (expression) statement
-*/
+
+ IF_P is used to track whether there's a (possibly labeled) if statement
+ which is not enclosed in braces and has an else clause. This is used to
+ implement -Wparentheses. */
static void
-c_parser_while_statement (c_parser *parser, bool ivdep)
+c_parser_while_statement (c_parser *parser, bool ivdep, bool *if_p)
{
tree block, cond, body, save_break, save_cont;
location_t loc;
@@ -5580,7 +5616,7 @@ c_parser_while_statement (c_parser *parser, bool ivdep)
token_indent_info body_tinfo
= get_token_indent_info (c_parser_peek_token (parser));
- body = c_parser_c99_block_statement (parser);
+ body = c_parser_c99_block_statement (parser, if_p);
c_finish_loop (loc, cond, NULL, body, c_break_label, c_cont_label, true);
add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
@@ -5615,7 +5651,7 @@ c_parser_do_statement (c_parser *parser, bool ivdep)
c_break_label = NULL_TREE;
save_cont = c_cont_label;
c_cont_label = NULL_TREE;
- body = c_parser_c99_block_statement (parser);
+ body = c_parser_c99_block_statement (parser, NULL);
c_parser_require_keyword (parser, RID_WHILE, "expected %<while%>");
new_break = c_break_label;
c_break_label = save_break;
@@ -5690,10 +5726,13 @@ c_parser_do_statement (c_parser *parser, bool ivdep)
like the beginning of the for-statement, and we can tell it is a
foreach-statement only because the initial declaration or
expression is terminated by 'in' instead of ';'.
-*/
+
+ IF_P is used to track whether there's a (possibly labeled) if statement
+ which is not enclosed in braces and has an else clause. This is used to
+ implement -Wparentheses. */
static void
-c_parser_for_statement (c_parser *parser, bool ivdep)
+c_parser_for_statement (c_parser *parser, bool ivdep, bool *if_p)
{
tree block, cond, incr, save_break, save_cont, body;
/* The following are only used when parsing an ObjC foreach statement. */
@@ -5869,7 +5908,7 @@ c_parser_for_statement (c_parser *parser, bool ivdep)
token_indent_info body_tinfo
= get_token_indent_info (c_parser_peek_token (parser));
- body = c_parser_c99_block_statement (parser);
+ body = c_parser_c99_block_statement (parser, if_p);
if (is_foreach_statement)
objc_finish_foreach_loop (loc, object_expression, collection_expression, body, c_break_label, c_cont_label);
@@ -10118,9 +10157,9 @@ c_parser_pragma (c_parser *parser, enum pragma_context context)
return false;
}
if (c_parser_next_token_is_keyword (parser, RID_FOR))
- c_parser_for_statement (parser, true);
+ c_parser_for_statement (parser, true, NULL);
else if (c_parser_next_token_is_keyword (parser, RID_WHILE))
- c_parser_while_statement (parser, true);
+ c_parser_while_statement (parser, true, NULL);
else
c_parser_do_statement (parser, true);
return false;
@@ -13441,7 +13480,7 @@ static tree
c_parser_omp_structured_block (c_parser *parser)
{
tree stmt = push_stmt_list ();
- c_parser_statement (parser);
+ c_parser_statement (parser, NULL);
return pop_stmt_list (stmt);
}
@@ -14843,7 +14882,7 @@ c_parser_omp_for_loop (location_t loc, c_parser *parser, enum tree_code code,
add_stmt (c_end_compound_stmt (here, stmt, true));
}
else
- add_stmt (c_parser_c99_block_statement (parser));
+ add_stmt (c_parser_c99_block_statement (parser, NULL));
if (c_cont_label)
{
tree t = build1 (LABEL_EXPR, void_type_node, c_cont_label);
@@ -15397,7 +15436,7 @@ c_parser_omp_parallel (location_t loc, c_parser *parser,
}
block = c_begin_omp_parallel ();
- c_parser_statement (parser);
+ c_parser_statement (parser, NULL);
stmt = c_finish_omp_parallel (loc, clauses, block);
return stmt;
@@ -15458,7 +15497,7 @@ c_parser_omp_task (location_t loc, c_parser *parser)
"#pragma omp task");
block = c_begin_omp_task ();
- c_parser_statement (parser);
+ c_parser_statement (parser, NULL);
return c_finish_omp_task (loc, clauses, block);
}
diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h
index 96ab049b982..d5592077524 100644
--- a/gcc/c/c-tree.h
+++ b/gcc/c/c-tree.h
@@ -641,7 +641,7 @@ extern tree build_asm_stmt (tree, tree);
extern int c_types_compatible_p (tree, tree);
extern tree c_begin_compound_stmt (bool);
extern tree c_end_compound_stmt (location_t, tree, bool);
-extern void c_finish_if_stmt (location_t, tree, tree, tree, bool);
+extern void c_finish_if_stmt (location_t, tree, tree, tree);
extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, bool);
extern tree c_begin_stmt_expr (void);
extern tree c_finish_stmt_expr (location_t, tree);
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index fb274d5f3c9..9a1499428d4 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -9974,12 +9974,11 @@ c_finish_case (tree body, tree type)
/* Emit an if statement. IF_LOCUS is the location of the 'if'. COND,
THEN_BLOCK and ELSE_BLOCK are expressions to be used; ELSE_BLOCK
- may be null. NESTED_IF is true if THEN_BLOCK contains another IF
- statement, and was not surrounded with parenthesis. */
+ may be null. */
void
c_finish_if_stmt (location_t if_locus, tree cond, tree then_block,
- tree else_block, bool nested_if)
+ tree else_block)
{
tree stmt;
@@ -10011,39 +10010,6 @@ c_finish_if_stmt (location_t if_locus, tree cond, tree then_block,
return;
}
}
- /* Diagnose an ambiguous else if if-then-else is nested inside if-then. */
- if (warn_parentheses && nested_if && else_block == NULL)
- {
- tree inner_if = then_block;
-
- /* We know from the grammar productions that there is an IF nested
- within THEN_BLOCK. Due to labels and c99 conditional declarations,
- it might not be exactly THEN_BLOCK, but should be the last
- non-container statement within. */
- while (1)
- switch (TREE_CODE (inner_if))
- {
- case COND_EXPR:
- goto found;
- case BIND_EXPR:
- inner_if = BIND_EXPR_BODY (inner_if);
- break;
- case STATEMENT_LIST:
- inner_if = expr_last (then_block);
- break;
- case TRY_FINALLY_EXPR:
- case TRY_CATCH_EXPR:
- inner_if = TREE_OPERAND (inner_if, 0);
- break;
- default:
- gcc_unreachable ();
- }
- found:
-
- if (COND_EXPR_ELSE (inner_if))
- warning_at (if_locus, OPT_Wparentheses,
- "suggest explicit braces to avoid ambiguous %<else%>");
- }
stmt = build3 (COND_EXPR, void_type_node, cond, then_block, else_block);
SET_EXPR_LOCATION (stmt, if_locus);
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index e9292852399..0d5806b458e 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -293,6 +293,9 @@ public:
/* Make DECL local. */
void make_decl_local (void);
+ /* Copy visibility from N. */
+ void copy_visibility_from (symtab_node *n);
+
/* Return desired alignment of the definition. This is NOT alignment useful
to access THIS, because THIS may be interposable and DECL_ALIGN should
be used instead. It however must be guaranteed when output definition
@@ -763,6 +766,11 @@ struct GTY(()) cgraph_simd_clone {
/* Max hardware vector size in bits for floating point vectors. */
unsigned int vecsize_float;
+ /* Machine mode of the mask argument(s), if they are to be passed
+ as bitmasks in integer argument(s). VOIDmode if masks are passed
+ as vectors of characteristic type. */
+ machine_mode mask_mode;
+
/* The mangling character for a given vector size. This is used
to determine the ISA mangling bit as specified in the Intel
Vector ABI. */
diff --git a/gcc/common/config/aarch64/aarch64-common.c b/gcc/common/config/aarch64/aarch64-common.c
index 4969f07fef4..08e79593420 100644
--- a/gcc/common/config/aarch64/aarch64-common.c
+++ b/gcc/common/config/aarch64/aarch64-common.c
@@ -112,6 +112,7 @@ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
struct aarch64_option_extension
{
const char *const name;
+ const unsigned long flag_canonical;
const unsigned long flags_on;
const unsigned long flags_off;
};
@@ -119,11 +120,11 @@ struct aarch64_option_extension
/* ISA extensions in AArch64. */
static const struct aarch64_option_extension all_extensions[] =
{
-#define AARCH64_OPT_EXTENSION(NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
- {NAME, FLAGS_ON, FLAGS_OFF},
+#define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, Z) \
+ {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF},
#include "config/aarch64/aarch64-option-extensions.def"
#undef AARCH64_OPT_EXTENSION
- {NULL, 0, 0}
+ {NULL, 0, 0, 0}
};
struct processor_name_to_arch
@@ -137,6 +138,7 @@ struct arch_to_arch_name
{
const enum aarch64_arch arch;
const std::string arch_name;
+ const unsigned long flags;
};
/* Map processor names to the architecture revision they implement and
@@ -155,26 +157,111 @@ static const struct processor_name_to_arch all_cores[] =
static const struct arch_to_arch_name all_architectures[] =
{
#define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH, FLAGS) \
- {AARCH64_ARCH_##ARCH_IDENT, NAME},
+ {AARCH64_ARCH_##ARCH_IDENT, NAME, FLAGS},
#include "config/aarch64/aarch64-arches.def"
#undef AARCH64_ARCH
- {aarch64_no_arch, ""}
+ {aarch64_no_arch, "", 0}
};
-/* Return a string representation of ISA_FLAGS. */
+/* Parse the architecture extension string STR and update ISA_FLAGS
+ with the architecture features turned on or off. Return a
+ aarch64_parse_opt_result describing the result. */
+
+enum aarch64_parse_opt_result
+aarch64_parse_extension (const char *str, unsigned long *isa_flags)
+{
+ /* The extension string is parsed left to right. */
+ const struct aarch64_option_extension *opt = NULL;
+
+ /* Flag to say whether we are adding or removing an extension. */
+ int adding_ext = -1;
+
+ while (str != NULL && *str != 0)
+ {
+ const char *ext;
+ size_t len;
+
+ str++;
+ ext = strchr (str, '+');
+
+ if (ext != NULL)
+ len = ext - str;
+ else
+ len = strlen (str);
+
+ if (len >= 2 && strncmp (str, "no", 2) == 0)
+ {
+ adding_ext = 0;
+ len -= 2;
+ str += 2;
+ }
+ else if (len > 0)
+ adding_ext = 1;
+
+ if (len == 0)
+ return AARCH64_PARSE_MISSING_ARG;
+
+
+ /* Scan over the extensions table trying to find an exact match. */
+ for (opt = all_extensions; opt->name != NULL; opt++)
+ {
+ if (strlen (opt->name) == len && strncmp (opt->name, str, len) == 0)
+ {
+ /* Add or remove the extension. */
+ if (adding_ext)
+ *isa_flags |= (opt->flags_on | opt->flag_canonical);
+ else
+ *isa_flags &= ~(opt->flags_off | opt->flag_canonical);
+ break;
+ }
+ }
+
+ if (opt->name == NULL)
+ {
+ /* Extension not found in list. */
+ return AARCH64_PARSE_INVALID_FEATURE;
+ }
+
+ str = ext;
+ };
+
+ return AARCH64_PARSE_OK;
+}
+
+/* Return a string representation of ISA_FLAGS. DEFAULT_ARCH_FLAGS
+ gives the default set of flags which are implied by whatever -march
+ we'd put out. Our job is to figure out the minimal set of "+" and
+ "+no" feature flags to put out, and to put them out grouped such
+ that all the "+" flags come before the "+no" flags. */
std::string
-aarch64_get_extension_string_for_isa_flags (unsigned long isa_flags)
+aarch64_get_extension_string_for_isa_flags (unsigned long isa_flags,
+ unsigned long default_arch_flags)
{
const struct aarch64_option_extension *opt = NULL;
std::string outstr = "";
+ /* Pass one: Find all the things we need to turn on. As a special case,
+ we always want to put out +crc if it is enabled. */
for (opt = all_extensions; opt->name != NULL; opt++)
- if ((isa_flags & opt->flags_on) == opt->flags_on)
+ if ((isa_flags & opt->flag_canonical
+ && !(default_arch_flags & opt->flag_canonical))
+ || (default_arch_flags & opt->flag_canonical
+ && opt->flag_canonical == AARCH64_ISA_CRC))
{
outstr += "+";
outstr += opt->name;
}
+
+ /* Pass two: Find all the things we need to turn off. */
+ for (opt = all_extensions; opt->name != NULL; opt++)
+ if ((~isa_flags) & opt->flag_canonical
+ && !((~default_arch_flags) & opt->flag_canonical))
+ {
+ outstr += "+no";
+ outstr += opt->name;
+ }
+
return outstr;
}
@@ -186,7 +273,7 @@ const char *
aarch64_rewrite_selected_cpu (const char *name)
{
std::string original_string (name);
- std::string extensions;
+ std::string extension_str;
std::string processor;
size_t extension_pos = original_string.find_first_of ('+');
@@ -194,8 +281,8 @@ aarch64_rewrite_selected_cpu (const char *name)
if (extension_pos != std::string::npos)
{
processor = original_string.substr (0, extension_pos);
- extensions = original_string.substr (extension_pos,
- std::string::npos);
+ extension_str = original_string.substr (extension_pos,
+ std::string::npos);
}
else
{
@@ -227,9 +314,12 @@ aarch64_rewrite_selected_cpu (const char *name)
|| a_to_an->arch == aarch64_no_arch)
fatal_error (input_location, "unknown value %qs for -mcpu", name);
+ unsigned long extensions = p_to_a->flags;
+ aarch64_parse_extension (extension_str.c_str (), &extensions);
+
std::string outstr = a_to_an->arch_name
- + aarch64_get_extension_string_for_isa_flags (p_to_a->flags)
- + extensions;
+ + aarch64_get_extension_string_for_isa_flags (extensions,
+ a_to_an->flags);
/* We are going to memory leak here, nobody elsewhere
in the callchain is going to clean up after us. The alternative is
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 67222601e1c..f66e48cd1ca 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -3620,22 +3620,28 @@ case "${target}" in
${srcdir}/config/aarch64/aarch64-option-extensions.def \
> /dev/null; then
- ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+ ext_canon=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
${srcdir}/config/aarch64/aarch64-option-extensions.def | \
sed -e 's/^[^,]*,[ ]*//' | \
sed -e 's/,.*$//'`
- ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+ ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
${srcdir}/config/aarch64/aarch64-option-extensions.def | \
sed -e 's/^[^,]*,[ ]*[^,]*,[ ]*//' | \
sed -e 's/,.*$//' | \
sed -e 's/).*$//'`
+ ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+ ${srcdir}/config/aarch64/aarch64-option-extensions.def | \
+ sed -e 's/^[^,]*,[ ]*[^,]*,[ ]*[^,]*,[ ]*//' | \
+ sed -e 's/,.*$//' | \
+ sed -e 's/).*$//'`
+
if [ $ext = $base_ext ]; then
# Adding extension
- ext_mask="("$ext_mask") | ("$ext_on")"
+ ext_mask="("$ext_mask") | ("$ext_on" | "$ext_canon")"
else
# Removing extension
- ext_mask="("$ext_mask") & ~("$ext_off")"
+ ext_mask="("$ext_mask") & ~("$ext_off" | "$ext_canon")"
fi
true
diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def
index fbf9a53283c..e8706d1c2e7 100644
--- a/gcc/config/aarch64/aarch64-option-extensions.def
+++ b/gcc/config/aarch64/aarch64-option-extensions.def
@@ -21,23 +21,37 @@
Before using #include to read this file, define a macro:
- AARCH64_OPT_EXTENSION(EXT_NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING)
+ AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING)
EXT_NAME is the name of the extension, represented as a string constant.
- FLAGS_ON are the bitwise-or of the features that the extension adds.
- FLAGS_OFF are the bitwise-or of the features that the extension removes.
+ FLAGS_CANONICAL is the canonical internal name for this flag.
+ FLAGS_ON are the bitwise-or of the features that enabling the extension
+ adds, or zero if enabling this extension has no effect on other features.
+ FLAGS_OFF are the bitwise-or of the features that disabling the extension
+ removes, or zero if disabling this extension has no effect on other
+ features.
FEAT_STRING is a string containing the entries in the 'Features' field of
/proc/cpuinfo on a GNU/Linux system that correspond to this architecture
extension being available. Sometimes multiple entries are needed to enable
the extension (for example, the 'crypto' extension depends on four
entries: aes, pmull, sha1, sha2 being present). In that case this field
- should contain a whitespace-separated list of the strings in 'Features'
+ should contain a space (" ") separated list of the strings in 'Features'
that are required. Their order is not important. */
-AARCH64_OPT_EXTENSION ("fp", AARCH64_FL_FP,
- AARCH64_FL_FPSIMD | AARCH64_FL_CRYPTO, "fp")
-AARCH64_OPT_EXTENSION ("simd", AARCH64_FL_FPSIMD,
- AARCH64_FL_SIMD | AARCH64_FL_CRYPTO, "asimd")
-AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO | AARCH64_FL_FPSIMD, AARCH64_FL_CRYPTO, "aes pmull sha1 sha2")
-AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, AARCH64_FL_CRC, "crc32")
-AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, AARCH64_FL_LSE, "atomics")
+/* Enabling "fp" just enables "fp".
+ Disabling "fp" also disables "simd", "crypto". */
+AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO, "fp")
+
+/* Enabling "simd" also enables "fp".
+ Disabling "simd" also disables "crypto". */
+AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO, "asimd")
+
+/* Enabling "crypto" also enables "fp", "simd".
+ Disabling "crypto" just disables "crypto". */
+AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, "aes pmull sha1 sha2")
+
+/* Enabling or disabling "crc" only changes "crc". */
+AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, "crc32")
+
+/* Enabling or disabling "lse" only changes "lse". */
+AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, "atomics")
diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
index 58c9d0d01d8..f22a31c2830 100644
--- a/gcc/config/aarch64/aarch64-protos.h
+++ b/gcc/config/aarch64/aarch64-protos.h
@@ -263,6 +263,18 @@ enum aarch64_extra_tuning_flags
};
#undef AARCH64_EXTRA_TUNING_OPTION
+/* Enum describing the various ways that the
+ aarch64_parse_{arch,tune,cpu,extension} functions can fail.
+ This way their callers can choose what kind of error to give. */
+
+enum aarch64_parse_opt_result
+{
+ AARCH64_PARSE_OK, /* Parsing was successful. */
+ AARCH64_PARSE_MISSING_ARG, /* Missing argument. */
+ AARCH64_PARSE_INVALID_FEATURE, /* Invalid feature modifier. */
+ AARCH64_PARSE_INVALID_ARG /* Invalid arch, tune, cpu arg. */
+};
+
extern struct tune_params aarch64_tune_params;
HOST_WIDE_INT aarch64_initial_elimination_offset (unsigned, unsigned);
@@ -280,8 +292,6 @@ bool aarch64_float_const_zero_rtx_p (rtx);
bool aarch64_function_arg_regno_p (unsigned);
bool aarch64_gen_movmemqi (rtx *);
bool aarch64_gimple_fold_builtin (gimple_stmt_iterator *);
-bool aarch64_handle_option (struct gcc_options *, struct gcc_options *,
- const struct cl_decoded_option *, location_t);
bool aarch64_is_extend_from_extract (machine_mode, rtx, rtx);
bool aarch64_is_long_call_p (rtx);
bool aarch64_is_noplt_call_p (rtx);
@@ -315,7 +325,6 @@ bool aarch64_uimm12_shift (HOST_WIDE_INT);
bool aarch64_use_return_insn_p (void);
const char *aarch64_mangle_builtin_type (const_tree);
const char *aarch64_output_casesi (rtx *);
-const char *aarch64_rewrite_selected_cpu (const char *name);
enum aarch64_symbol_type aarch64_classify_symbol (rtx, rtx);
enum aarch64_symbol_type aarch64_classify_tls_symbol (rtx);
@@ -338,7 +347,6 @@ rtx aarch64_simd_gen_const_vector_dup (machine_mode, int);
bool aarch64_simd_mem_operand_p (rtx);
rtx aarch64_simd_vect_par_cnst_half (machine_mode, bool);
rtx aarch64_tls_get_addr (void);
-std::string aarch64_get_extension_string_for_isa_flags (unsigned long);
tree aarch64_fold_builtin (tree, int, tree *, bool);
unsigned aarch64_dbx_register_number (unsigned);
unsigned aarch64_trampoline_size (void);
@@ -433,4 +441,13 @@ extern bool aarch64_nopcrelative_literal_loads;
extern void aarch64_asm_output_pool_epilogue (FILE *, const char *,
tree, HOST_WIDE_INT);
+/* Defined in common/config/aarch64-common.c. */
+bool aarch64_handle_option (struct gcc_options *, struct gcc_options *,
+ const struct cl_decoded_option *, location_t);
+const char *aarch64_rewrite_selected_cpu (const char *name);
+enum aarch64_parse_opt_result aarch64_parse_extension (const char *,
+ unsigned long *);
+std::string aarch64_get_extension_string_for_isa_flags (unsigned long,
+ unsigned long);
+
#endif /* GCC_AARCH64_PROTOS_H */
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index b7086dd4667..999549426e6 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -666,7 +666,7 @@ struct aarch64_option_extension
/* ISA extensions in AArch64. */
static const struct aarch64_option_extension all_extensions[] =
{
-#define AARCH64_OPT_EXTENSION(NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
+#define AARCH64_OPT_EXTENSION(NAME, X, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
{NAME, FLAGS_ON, FLAGS_OFF},
#include "aarch64-option-extensions.def"
#undef AARCH64_OPT_EXTENSION
@@ -7673,83 +7673,6 @@ aarch64_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
static void initialize_aarch64_code_model (struct gcc_options *);
-/* Enum describing the various ways that the
- aarch64_parse_{arch,tune,cpu,extension} functions can fail.
- This way their callers can choose what kind of error to give. */
-
-enum aarch64_parse_opt_result
-{
- AARCH64_PARSE_OK, /* Parsing was successful. */
- AARCH64_PARSE_MISSING_ARG, /* Missing argument. */
- AARCH64_PARSE_INVALID_FEATURE, /* Invalid feature modifier. */
- AARCH64_PARSE_INVALID_ARG /* Invalid arch, tune, cpu arg. */
-};
-
-/* Parse the architecture extension string STR and update ISA_FLAGS
- with the architecture features turned on or off. Return a
- aarch64_parse_opt_result describing the result. */
-
-static enum aarch64_parse_opt_result
-aarch64_parse_extension (char *str, unsigned long *isa_flags)
-{
- /* The extension string is parsed left to right. */
- const struct aarch64_option_extension *opt = NULL;
-
- /* Flag to say whether we are adding or removing an extension. */
- int adding_ext = -1;
-
- while (str != NULL && *str != 0)
- {
- char *ext;
- size_t len;
-
- str++;
- ext = strchr (str, '+');
-
- if (ext != NULL)
- len = ext - str;
- else
- len = strlen (str);
-
- if (len >= 2 && strncmp (str, "no", 2) == 0)
- {
- adding_ext = 0;
- len -= 2;
- str += 2;
- }
- else if (len > 0)
- adding_ext = 1;
-
- if (len == 0)
- return AARCH64_PARSE_MISSING_ARG;
-
-
- /* Scan over the extensions table trying to find an exact match. */
- for (opt = all_extensions; opt->name != NULL; opt++)
- {
- if (strlen (opt->name) == len && strncmp (opt->name, str, len) == 0)
- {
- /* Add or remove the extension. */
- if (adding_ext)
- *isa_flags |= opt->flags_on;
- else
- *isa_flags &= ~(opt->flags_off);
- break;
- }
- }
-
- if (opt->name == NULL)
- {
- /* Extension not found in list. */
- return AARCH64_PARSE_INVALID_FEATURE;
- }
-
- str = ext;
- };
-
- return AARCH64_PARSE_OK;
-}
-
/* Parse the TO_PARSE string and put the architecture struct that it
selects into RES and the architectural features into ISA_FLAGS.
Return an aarch64_parse_opt_result describing the parse result.
@@ -8550,7 +8473,7 @@ aarch64_option_print (FILE *file, int indent, struct cl_target_option *ptr)
unsigned long isa_flags = ptr->x_aarch64_isa_flags;
const struct processor *arch = aarch64_get_arch (ptr->x_explicit_arch);
std::string extension
- = aarch64_get_extension_string_for_isa_flags (isa_flags);
+ = aarch64_get_extension_string_for_isa_flags (isa_flags, arch->flags);
fprintf (file, "%*sselected tune = %s\n", indent, "", cpu->name);
fprintf (file, "%*sselected arch = %s%s\n", indent, "",
@@ -11213,7 +11136,8 @@ aarch64_declare_function_name (FILE *stream, const char* name,
unsigned long isa_flags = targ_options->x_aarch64_isa_flags;
std::string extension
- = aarch64_get_extension_string_for_isa_flags (isa_flags);
+ = aarch64_get_extension_string_for_isa_flags (isa_flags,
+ this_arch->flags);
/* Only update the assembler .arch string if it is distinct from the last
such string we printed. */
std::string to_print = this_arch->name + extension;
@@ -11253,7 +11177,8 @@ aarch64_start_file (void)
= aarch64_get_arch (default_options->x_explicit_arch);
unsigned long default_isa_flags = default_options->x_aarch64_isa_flags;
std::string extension
- = aarch64_get_extension_string_for_isa_flags (default_isa_flags);
+ = aarch64_get_extension_string_for_isa_flags (default_isa_flags,
+ default_arch->flags);
aarch64_last_printed_arch_string = default_arch->name + extension;
aarch64_last_printed_tune_string = "";
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index 7750d1c060d..15d7e4019ad 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -145,7 +145,7 @@ extern unsigned aarch64_architecture_version;
/* Architecture flags that effect instruction selection. */
#define AARCH64_FL_FOR_ARCH8 (AARCH64_FL_FPSIMD)
#define AARCH64_FL_FOR_ARCH8_1 \
- (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_V8_1)
+ (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_CRC | AARCH64_FL_V8_1)
/* Macros to test ISA flags. */
diff --git a/gcc/config/aarch64/driver-aarch64.c b/gcc/config/aarch64/driver-aarch64.c
index 317a8a9872e..ce771ec7ac1 100644
--- a/gcc/config/aarch64/driver-aarch64.c
+++ b/gcc/config/aarch64/driver-aarch64.c
@@ -18,17 +18,25 @@
<http://www.gnu.org/licenses/>. */
#include "config.h"
+#define INCLUDE_STRING
#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
-struct arch_extension
+/* Defined in common/config/aarch64/aarch64-common.c. */
+std::string aarch64_get_extension_string_for_isa_flags (unsigned long,
+ unsigned long);
+
+struct aarch64_arch_extension
{
const char *ext;
+ unsigned int flag;
const char *feat_string;
};
-#define AARCH64_OPT_EXTENSION(EXT_NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
- { EXT_NAME, FEATURE_STRING },
-static struct arch_extension ext_to_feat_string[] =
+#define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
+ { EXT_NAME, FLAG_CANONICAL, FEATURE_STRING },
+static struct aarch64_arch_extension aarch64_extensions[] =
{
#include "aarch64-option-extensions.def"
};
@@ -41,15 +49,16 @@ struct aarch64_core_data
const char* arch;
const char* implementer_id;
const char* part_no;
+ const unsigned long flags;
};
#define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART) \
- { CORE_NAME, #ARCH, IMP, PART },
+ { CORE_NAME, #ARCH, IMP, PART, FLAGS },
-static struct aarch64_core_data cpu_data [] =
+static struct aarch64_core_data aarch64_cpu_data[] =
{
#include "aarch64-cores.def"
- { NULL, NULL, NULL, NULL }
+ { NULL, NULL, NULL, NULL, 0 }
};
#undef AARCH64_CORE
@@ -58,37 +67,37 @@ struct aarch64_arch_driver_info
{
const char* id;
const char* name;
+ const unsigned long flags;
};
#define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \
- { #ARCH_IDENT, NAME },
+ { #ARCH_IDENT, NAME, FLAGS },
-static struct aarch64_arch_driver_info aarch64_arches [] =
+static struct aarch64_arch_driver_info aarch64_arches[] =
{
#include "aarch64-arches.def"
- {NULL, NULL}
+ {NULL, NULL, 0}
};
#undef AARCH64_ARCH
-/* Return the full architecture name string corresponding to the
- identifier ID. */
+/* Return an aarch64_arch_driver_info for the architecture described
+ by ID, or NULL if ID describes something we don't know about. */
-static const char*
-get_arch_name_from_id (const char* id)
+static struct aarch64_arch_driver_info*
+get_arch_from_id (const char* id)
{
unsigned int i = 0;
for (i = 0; aarch64_arches[i].id != NULL; i++)
{
if (strcmp (id, aarch64_arches[i].id) == 0)
- return aarch64_arches[i].name;
+ return &aarch64_arches[i];
}
return NULL;
}
-
/* Check wether the string CORE contains the same CPU part numbers
as BL_STRING. For example CORE="{0xd03, 0xd07}" and BL_STRING="0xd07.0xd03"
should return true. */
@@ -97,7 +106,7 @@ static bool
valid_bL_string_p (const char** core, const char* bL_string)
{
return strstr (bL_string, core[0]) != NULL
- && strstr (bL_string, core[1]) != NULL;
+ && strstr (bL_string, core[1]) != NULL;
}
/* Return true iff ARR contains STR in one of its two elements. */
@@ -141,7 +150,7 @@ host_detect_local_cpu (int argc, const char **argv)
{
const char *arch_id = NULL;
const char *res = NULL;
- static const int num_exts = ARRAY_SIZE (ext_to_feat_string);
+ static const int num_exts = ARRAY_SIZE (aarch64_extensions);
char buf[128];
FILE *f = NULL;
bool arch = false;
@@ -155,6 +164,8 @@ host_detect_local_cpu (int argc, const char **argv)
unsigned int n_imps = 0;
bool processed_exts = false;
const char *ext_string = "";
+ unsigned long extension_flags = 0;
+ unsigned long default_flags = 0;
gcc_assert (argc);
@@ -183,60 +194,71 @@ host_detect_local_cpu (int argc, const char **argv)
{
if (strstr (buf, "implementer") != NULL)
{
- for (i = 0; cpu_data[i].name != NULL; i++)
- if (strstr (buf, cpu_data[i].implementer_id) != NULL
- && !contains_string_p (imps, cpu_data[i].implementer_id))
+ for (i = 0; aarch64_cpu_data[i].name != NULL; i++)
+ if (strstr (buf, aarch64_cpu_data[i].implementer_id) != NULL
+ && !contains_string_p (imps,
+ aarch64_cpu_data[i].implementer_id))
{
- if (n_imps == 2)
- goto not_found;
+ if (n_imps == 2)
+ goto not_found;
- imps[n_imps++] = cpu_data[i].implementer_id;
+ imps[n_imps++] = aarch64_cpu_data[i].implementer_id;
- break;
+ break;
}
- continue;
+ continue;
}
if (strstr (buf, "part") != NULL)
{
- for (i = 0; cpu_data[i].name != NULL; i++)
- if (strstr (buf, cpu_data[i].part_no) != NULL
- && !contains_string_p (cores, cpu_data[i].part_no))
+ for (i = 0; aarch64_cpu_data[i].name != NULL; i++)
+ if (strstr (buf, aarch64_cpu_data[i].part_no) != NULL
+ && !contains_string_p (cores, aarch64_cpu_data[i].part_no))
{
- if (n_cores == 2)
- goto not_found;
+ if (n_cores == 2)
+ goto not_found;
- cores[n_cores++] = cpu_data[i].part_no;
- core_idx = i;
- arch_id = cpu_data[i].arch;
- break;
+ cores[n_cores++] = aarch64_cpu_data[i].part_no;
+ core_idx = i;
+ arch_id = aarch64_cpu_data[i].arch;
+ break;
}
- continue;
- }
+ continue;
+ }
if (!tune && !processed_exts && strstr (buf, "Features") != NULL)
- {
- for (i = 0; i < num_exts; i++)
- {
- bool enabled = true;
- char *p = NULL;
- char *feat_string = concat (ext_to_feat_string[i].feat_string, NULL);
-
- p = strtok (feat_string, " ");
-
- while (p != NULL)
- {
- if (strstr (buf, p) == NULL)
- {
- enabled = false;
- break;
- }
- p = strtok (NULL, " ");
- }
- ext_string = concat (ext_string, "+", enabled ? "" : "no",
- ext_to_feat_string[i].ext, NULL);
- }
- processed_exts = true;
- }
+ {
+ for (i = 0; i < num_exts; i++)
+ {
+ char *p = NULL;
+ char *feat_string
+ = concat (aarch64_extensions[i].feat_string, NULL);
+ bool enabled = true;
+
+ /* This may be a multi-token feature string. We need
+ to match all parts, which could be in any order.
+ If this isn't a multi-token feature string, strtok is
+ just going to return a pointer to feat_string. */
+ p = strtok (feat_string, " ");
+ while (p != NULL)
+ {
+ if (strstr (buf, p) == NULL)
+ {
+ /* Failed to match this token. Turn off the
+ features we'd otherwise enable. */
+ enabled = false;
+ break;
+ }
+ p = strtok (NULL, " ");
+ }
+
+ if (enabled)
+ extension_flags |= aarch64_extensions[i].flag;
+ else
+ extension_flags &= ~(aarch64_extensions[i].flag);
+ }
+
+ processed_exts = true;
+ }
}
fclose (f);
@@ -251,44 +273,56 @@ host_detect_local_cpu (int argc, const char **argv)
if (arch)
{
- const char* arch_name = get_arch_name_from_id (arch_id);
+ struct aarch64_arch_driver_info* arch_info = get_arch_from_id (arch_id);
/* We got some arch indentifier that's not in aarch64-arches.def? */
- if (!arch_name)
- goto not_found;
+ if (!arch_info)
+ goto not_found;
- res = concat ("-march=", arch_name, NULL);
+ res = concat ("-march=", arch_info->name, NULL);
+ default_flags = arch_info->flags;
}
/* We have big.LITTLE. */
else if (n_cores == 2)
{
- for (i = 0; cpu_data[i].name != NULL; i++)
- {
- if (strchr (cpu_data[i].part_no, '.') != NULL
- && strncmp (cpu_data[i].implementer_id, imps[0], strlen (imps[0]) - 1) == 0
- && valid_bL_string_p (cores, cpu_data[i].part_no))
- {
- res = concat ("-m", cpu ? "cpu" : "tune", "=", cpu_data[i].name, NULL);
- break;
- }
- }
+ for (i = 0; aarch64_cpu_data[i].name != NULL; i++)
+ {
+ if (strchr (aarch64_cpu_data[i].part_no, '.') != NULL
+ && strncmp (aarch64_cpu_data[i].implementer_id,
+ imps[0],
+ strlen (imps[0]) - 1) == 0
+ && valid_bL_string_p (cores, aarch64_cpu_data[i].part_no))
+ {
+ res = concat ("-m",
+ cpu ? "cpu" : "tune", "=",
+ aarch64_cpu_data[i].name,
+ NULL);
+ default_flags = aarch64_cpu_data[i].flags;
+ break;
+ }
+ }
if (!res)
- goto not_found;
+ goto not_found;
}
/* The simple, non-big.LITTLE case. */
else
{
- if (strncmp (cpu_data[core_idx].implementer_id, imps[0],
- strlen (imps[0]) - 1) != 0)
- goto not_found;
+ if (strncmp (aarch64_cpu_data[core_idx].implementer_id, imps[0],
+ strlen (imps[0]) - 1) != 0)
+ goto not_found;
res = concat ("-m", cpu ? "cpu" : "tune", "=",
- cpu_data[core_idx].name, NULL);
+ aarch64_cpu_data[core_idx].name, NULL);
+ default_flags = aarch64_cpu_data[core_idx].flags;
}
if (tune)
return res;
+ ext_string
+ = aarch64_get_extension_string_for_isa_flags (extension_flags,
+ default_flags).c_str ();
+
res = concat (res, ext_string, NULL);
return res;
diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md
index 11868278c3d..8f2726d4483 100644
--- a/gcc/config/aarch64/predicates.md
+++ b/gcc/config/aarch64/predicates.md
@@ -302,7 +302,7 @@
})
(define_predicate "aarch64_simd_reg_or_zero"
- (and (match_code "reg,subreg,const_int,const_vector")
+ (and (match_code "reg,subreg,const_int,const_double,const_vector")
(ior (match_operand 0 "register_operand")
(ior (match_test "op == const0_rtx")
(match_test "aarch64_simd_imm_zero_p (op, mode)")))))
diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
index 21c049f9850..1c2a38d4acf 100644
--- a/gcc/config/arc/arc.h
+++ b/gcc/config/arc/arc.h
@@ -188,7 +188,8 @@ along with GCC; see the file COPYING3. If not see
%(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
%{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
%{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
- %{fopenacc|fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
+ %:include(libgomp.spec)%(link_gomp)}\
%(mflib)\
%{fprofile-arcs|fprofile-generate|coverage:-lgcov}\
%{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 63521403f6c..ad123dde991 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -2037,7 +2037,8 @@ extern int making_const_table;
"\t.syntax divided\n")
#undef ASM_APP_OFF
-#define ASM_APP_OFF "\t.syntax unified\n"
+#define ASM_APP_OFF (TARGET_ARM ? "\t.arm\n\t.syntax unified\n" : \
+ "\t.thumb\n\t.syntax unified\n")
/* Output a push or a pop instruction (only used when profiling).
We can't push STATIC_CHAIN_REGNUM (r12) directly with Thumb-1. We know
diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md
index 992536593d6..ab08288413c 100644
--- a/gcc/config/arm/thumb2.md
+++ b/gcc/config/arm/thumb2.md
@@ -1550,7 +1550,8 @@
(match_operand 5 "" "")
(match_operand 6 "" "")))]
"TARGET_THUMB2
- && (INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) < 32)"
+ && (INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) < 32)
+ && peep2_reg_dead_p (2, operands[0])"
[(parallel [(set (match_dup 0)
(compare:CC_NOOV (ashift:SI (match_dup 1) (match_dup 2))
(const_int 0)))
@@ -1578,7 +1579,8 @@
(match_operand 5 "" "")
(match_operand 6 "" "")))]
"TARGET_THUMB2
- && (INTVAL (operands[2]) > 0 && INTVAL (operands[2]) < 32)"
+ && (INTVAL (operands[2]) > 0 && INTVAL (operands[2]) < 32)
+ && peep2_reg_dead_p (2, operands[0])"
[(parallel [(set (match_dup 0)
(compare:CC_NOOV (ashift:SI (match_dup 1) (match_dup 2))
(const_int 0)))
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 9f686d3ad3a..c9981b815cd 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -177,7 +177,7 @@ extern GTY(()) int darwin_ms_struct;
%{o*}%{!o:-o a.out} \
%{!nostdlib:%{!nostartfiles:%S}} \
%{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \
- %{fopenacc|fopenmp|ftree-parallelize-loops=*: \
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \
%{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \
%{fgnu-tm: \
%{static|static-libgcc|static-libstdc++|static-libgfortran: libitm.a%s; : -litm } } \
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index e5dfb95048a..1fa007efdc3 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -53747,7 +53747,7 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
return val;
}
-/* Set CLONEI->vecsize_mangle, CLONEI->vecsize_int,
+/* Set CLONEI->vecsize_mangle, CLONEI->mask_mode, CLONEI->vecsize_int,
CLONEI->vecsize_float and if CLONEI->simdlen is 0, also
CLONEI->simdlen. Return 0 if SIMD clones shouldn't be emitted,
or number of vecsize_mangle variants that should be emitted. */
@@ -53761,7 +53761,7 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
if (clonei->simdlen
&& (clonei->simdlen < 2
- || clonei->simdlen > 16
+ || clonei->simdlen > 1024
|| (clonei->simdlen & (clonei->simdlen - 1)) != 0))
{
warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
@@ -53819,7 +53819,9 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
{
/* If the function isn't exported, we can pick up just one ISA
for the clones. */
- if (TARGET_AVX2)
+ if (TARGET_AVX512F)
+ clonei->vecsize_mangle = 'e';
+ else if (TARGET_AVX2)
clonei->vecsize_mangle = 'd';
else if (TARGET_AVX)
clonei->vecsize_mangle = 'c';
@@ -53829,9 +53831,10 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
}
else
{
- clonei->vecsize_mangle = "bcd"[num];
- ret = 3;
+ clonei->vecsize_mangle = "bcde"[num];
+ ret = 4;
}
+ clonei->mask_mode = VOIDmode;
switch (clonei->vecsize_mangle)
{
case 'b':
@@ -53846,6 +53849,14 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
clonei->vecsize_int = 256;
clonei->vecsize_float = 256;
break;
+ case 'e':
+ clonei->vecsize_int = 512;
+ clonei->vecsize_float = 512;
+ if (TYPE_MODE (base_type) == QImode)
+ clonei->mask_mode = DImode;
+ else
+ clonei->mask_mode = SImode;
+ break;
}
if (clonei->simdlen == 0)
{
@@ -53854,9 +53865,31 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
else
clonei->simdlen = clonei->vecsize_float;
clonei->simdlen /= GET_MODE_BITSIZE (TYPE_MODE (base_type));
- if (clonei->simdlen > 16)
- clonei->simdlen = 16;
}
+ else if (clonei->simdlen > 16)
+ {
+ /* For compatibility with ICC, use the same upper bounds
+ for simdlen. In particular, for CTYPE below, use the return type,
+ unless the function returns void, in that case use the characteristic
+ type. If it is possible for given SIMDLEN to pass CTYPE value
+ in registers (8 [XYZ]MM* regs for 32-bit code, 16 [XYZ]MM* regs
+ for 64-bit code), accept that SIMDLEN, otherwise warn and don't
+ emit corresponding clone. */
+ tree ctype = ret_type;
+ if (TREE_CODE (ret_type) == VOID_TYPE)
+ ctype = base_type;
+ int cnt = GET_MODE_BITSIZE (TYPE_MODE (ctype)) * clonei->simdlen;
+ if (SCALAR_INT_MODE_P (TYPE_MODE (ctype)))
+ cnt /= clonei->vecsize_int;
+ else
+ cnt /= clonei->vecsize_float;
+ if (cnt > (TARGET_64BIT ? 16 : 8))
+ {
+ warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
+ "unsupported simdlen %d", clonei->simdlen);
+ return 0;
+ }
+ }
return ret;
}
@@ -53881,6 +53914,10 @@ ix86_simd_clone_adjust (struct cgraph_node *node)
if (!TARGET_AVX2)
str = "avx2";
break;
+ case 'e':
+ if (!TARGET_AVX512F)
+ str = "avx512f";
+ break;
default:
gcc_unreachable ();
}
@@ -53920,6 +53957,10 @@ ix86_simd_clone_usable (struct cgraph_node *node)
if (!TARGET_AVX2)
return -1;
return 0;
+ case 'e':
+ if (!TARGET_AVX512F)
+ return -1;
+ return 0;
default:
gcc_unreachable ();
}
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index f324ea7ea41..56a30502d41 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -5449,7 +5449,14 @@
(match_dup 4))
(match_dup 5)))
(clobber (reg:CC FLAGS_REG))])]
- "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);")
+{
+ split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
+ if (operands[2] == const0_rtx)
+ {
+ ix86_expand_binary_operator (PLUS, <MODE>mode, &operands[3]);
+ DONE;
+ }
+})
(define_insn "*add<mode>_1"
[(set (match_operand:SWI48 0 "nonimmediate_operand" "=r,rm,r,r")
@@ -6379,7 +6386,14 @@
(ltu:DWIH (reg:CC FLAGS_REG) (const_int 0)))
(match_dup 5)))
(clobber (reg:CC FLAGS_REG))])]
- "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);")
+{
+ split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
+ if (operands[2] == const0_rtx)
+ {
+ ix86_expand_binary_operator (MINUS, <MODE>mode, &operands[3]);
+ DONE;
+ }
+})
(define_insn "*sub<mode>_1"
[(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>")
@@ -8893,7 +8907,7 @@
(const_int 8))
(zero_extend:HI (match_operand:QI 2 "register_operand" "k"))))]
"TARGET_AVX512F"
- "kunpckbw\t{%1, %2, %0|%0, %2, %1}"
+ "kunpckbw\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "mode" "HI")
(set_attr "type" "msklog")
(set_attr "prefix" "vex")])
@@ -8906,7 +8920,7 @@
(const_int 16))
(zero_extend:SI (match_operand:HI 2 "register_operand" "k"))))]
"TARGET_AVX512BW"
- "kunpckwd\t{%1, %2, %0|%0, %2, %1}"
+ "kunpckwd\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "mode" "SI")])
(define_insn "kunpckdi"
@@ -8917,7 +8931,7 @@
(const_int 32))
(zero_extend:DI (match_operand:SI 2 "register_operand" "k"))))]
"TARGET_AVX512BW"
- "kunpckdq\t{%1, %2, %0|%0, %2, %1}"
+ "kunpckdq\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "mode" "DI")])
;; See comment for addsi_1_zext why we do use nonimmediate_operand
diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
index 4ac5f688033..e04818966fa 100644
--- a/gcc/config/i386/mingw32.h
+++ b/gcc/config/i386/mingw32.h
@@ -207,7 +207,7 @@ do { \
/* mingw32 uses the -mthreads option to enable thread support. */
#undef GOMP_SELF_SPECS
-#define GOMP_SELF_SPECS "%{fopenacc|fopenmp|ftree-parallelize-loops=*: " \
+#define GOMP_SELF_SPECS "%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): " \
"-mthreads -pthread}"
#undef GTM_SELF_SPECS
#define GTM_SELF_SPECS "%{fgnu-tm:-mthreads -pthread}"
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 5fd650fde4a..b64457edab0 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -493,8 +493,9 @@
[(V16SF "f") (V16SI "i") (V8DF "f") (V8DI "i")
(V8SF "f") (V8SI "i") (V4DF "f") (V4DI "i")
(V4SF "f") (V4SI "i") (V2DF "f") (V2DI "i")
- (V32QI "i") (V16HI "i") (V16QI "i") (V8HI "i")
- (V64QI "i") (V1TI "i") (V2TI "i")])
+ (V32HI "i") (V16HI "i") (V8HI "i")
+ (V64QI "i") (V32QI "i") (V16QI "i")
+ (V4TI "i") (V2TI "i") (V1TI "i")])
(define_mode_attr ssequartermode
[(V16SF "V4SF") (V8DF "V2DF") (V16SI "V4SI") (V8DI "V2DI")])
@@ -705,7 +706,8 @@
;; Pointer size override for scalar modes (Intel asm dialect)
(define_mode_attr iptr
- [(V32QI "b") (V16HI "w") (V8SI "k") (V4DI "q")
+ [(V64QI "b") (V32HI "w") (V16SI "k") (V8DI "q")
+ (V32QI "b") (V16HI "w") (V8SI "k") (V4DI "q")
(V16QI "b") (V8HI "w") (V4SI "k") (V2DI "q")
(V8SF "k") (V4DF "q")
(V4SF "k") (V2DF "q")
@@ -732,7 +734,8 @@
(V64QI "8") (V32QI "8") (V16QI "8")
(V32HI "16") (V16HI "16") (V8HI "16")
(V16SI "32") (V8SI "32") (V4SI "32")
- (V16SF "32") (V8DF "64")])
+ (V16SF "32") (V8SF "32") (V4SF "32")
+ (V8DF "64") (V4DF "64") (V2DF "64")])
;; SSE prefix for integer vector modes
(define_mode_attr sseintprefix
@@ -11377,45 +11380,46 @@
case MODE_XI:
gcc_assert (TARGET_AVX512F);
case MODE_OI:
- gcc_assert (TARGET_AVX2 || TARGET_AVX512VL);
+ gcc_assert (TARGET_AVX2);
case MODE_TI:
- gcc_assert (TARGET_SSE2 || TARGET_AVX512VL);
+ gcc_assert (TARGET_SSE2);
switch (<MODE>mode)
- {
- case V16SImode:
- case V8DImode:
- if (TARGET_AVX512F)
- {
- tmp = "pandn<ssemodesuffix>";
- break;
- }
- case V8SImode:
- case V4DImode:
- case V4SImode:
- case V2DImode:
- if (TARGET_AVX512VL)
- {
- tmp = "pandn<ssemodesuffix>";
- break;
- }
- default:
- tmp = TARGET_AVX512VL ? "pandnq" : "pandn";
- }
+ {
+ case V64QImode:
+ case V32HImode:
+ /* There is no vpandnb or vpandnw instruction, nor vpandn for
+ 512-bit vectors. Use vpandnq instead. */
+ tmp = "pandnq";
+ break;
+ case V16SImode:
+ case V8DImode:
+ tmp = "pandn<ssemodesuffix>";
+ break;
+ case V8SImode:
+ case V4DImode:
+ case V4SImode:
+ case V2DImode:
+ tmp = TARGET_AVX512VL ? "pandn<ssemodesuffix>" : "pandn";
+ break;
+ default:
+ tmp = TARGET_AVX512VL ? "pandnq" : "pandn";
+ break;
+ }
break;
- case MODE_V16SF:
+ case MODE_V16SF:
gcc_assert (TARGET_AVX512F);
- case MODE_V8SF:
+ case MODE_V8SF:
gcc_assert (TARGET_AVX);
- case MODE_V4SF:
+ case MODE_V4SF:
gcc_assert (TARGET_SSE);
tmp = "andnps";
break;
- default:
+ default:
gcc_unreachable ();
- }
+ }
switch (which_alternative)
{
@@ -11423,7 +11427,7 @@
ops = "%s\t{%%2, %%0|%%0, %%2}";
break;
case 1:
- ops = "v%s\t{%%2, %%1, %%0<mask_operand3_1>|%%0<mask_operand3_1>, %%1, %%2}";
+ ops = "v%s\t{%%2, %%1, %%0|%%0, %%1, %%2}";
break;
default:
gcc_unreachable ();
@@ -11473,21 +11477,6 @@
(set_attr "prefix" "evex")
(set_attr "mode" "<sseinsnmode>")])
-(define_insn "*andnot<mode>3_mask"
- [(set (match_operand:VI12_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI12_AVX512VL
- (and:VI12_AVX512VL
- (not:VI12_AVX512VL
- (match_operand:VI12_AVX512VL 1 "register_operand" "v"))
- (match_operand:VI12_AVX512VL 2 "nonimmediate_operand" "vm"))
- (match_operand:VI12_AVX512VL 3 "vector_move_operand" "0C")
- (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
- "TARGET_AVX512BW"
- "vpandn<ssemodesuffix>\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}";
- [(set_attr "type" "sselog")
- (set_attr "prefix" "evex")
- (set_attr "mode" "<sseinsnmode>")])
-
(define_expand "<code><mode>3"
[(set (match_operand:VI 0 "register_operand")
(any_logic:VI
@@ -11758,16 +11747,16 @@
(define_expand "vec_pack_trunc_qi"
[(set (match_operand:HI 0 ("register_operand"))
- (ior:HI (ashift:HI (zero_extend:HI (match_operand:QI 1 ("register_operand")))
+ (ior:HI (ashift:HI (zero_extend:HI (match_operand:QI 2 ("register_operand")))
(const_int 8))
- (zero_extend:HI (match_operand:QI 2 ("register_operand")))))]
+ (zero_extend:HI (match_operand:QI 1 ("register_operand")))))]
"TARGET_AVX512F")
(define_expand "vec_pack_trunc_<mode>"
[(set (match_operand:<DOUBLEMASKMODE> 0 ("register_operand"))
- (ior:<DOUBLEMASKMODE> (ashift:<DOUBLEMASKMODE> (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 1 ("register_operand")))
+ (ior:<DOUBLEMASKMODE> (ashift:<DOUBLEMASKMODE> (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 2 ("register_operand")))
(match_dup 3))
- (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 2 ("register_operand")))))]
+ (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 1 ("register_operand")))))]
"TARGET_AVX512BW"
{
operands[3] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
diff --git a/gcc/config/ia64/hpux.h b/gcc/config/ia64/hpux.h
index 8b90c99f44b..008c4f6ba33 100644
--- a/gcc/config/ia64/hpux.h
+++ b/gcc/config/ia64/hpux.h
@@ -92,7 +92,7 @@ do { \
#undef LIB_SPEC
#define LIB_SPEC \
"%{!shared: \
- %{mt|pthread:%{fopenacc|fopenmp|ftree-parallelize-loops=*:-lrt} -lpthread} \
+ %{mt|pthread:%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):-lrt} -lpthread} \
%{p:%{!mlp64:-L/usr/lib/hpux32/libp} \
%{mlp64:-L/usr/lib/hpux64/libp} -lprof} \
%{pg:%{!mlp64:-L/usr/lib/hpux32/libp} \
diff --git a/gcc/config/pa/pa-hpux11.h b/gcc/config/pa/pa-hpux11.h
index 3e5207a669d..600b6775316 100644
--- a/gcc/config/pa/pa-hpux11.h
+++ b/gcc/config/pa/pa-hpux11.h
@@ -147,7 +147,7 @@ along with GCC; see the file COPYING3. If not see
#undef LIB_SPEC
#define LIB_SPEC \
"%{!shared:\
- %{fopenacc|fopenmp|ftree-parallelize-loops=*:\
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%{static:-a archive_shared} -lrt %{static:-a archive}}\
%{mt|pthread:-lpthread} -lc\
%{static:%{!nolibdld:-a archive_shared -ldld -a archive -lc}\
diff --git a/gcc/config/pa/pa64-hpux.h b/gcc/config/pa/pa64-hpux.h
index a5ccb4aaec7..279406a01fb 100644
--- a/gcc/config/pa/pa64-hpux.h
+++ b/gcc/config/pa/pa64-hpux.h
@@ -58,21 +58,21 @@ along with GCC; see the file COPYING3. If not see
#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD)
#define LIB_SPEC \
"%{!shared:\
- %{!p:%{!pg:%{fopenacc|fopenmp|ftree-parallelize-loops=*:\
+ %{!p:%{!pg:%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%{static:-a shared} -lrt %{static:-a archive}}\
%{mt|pthread:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}\
%{!mt:%{!pthread:-a shared -lc -a archive}}}}}\
%{p:%{!pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\
-lprof %{static:-a archive}\
- %{fopenacc|fopenmp|ftree-parallelize-loops=*:\
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%{static:-a shared} -lrt %{static:-a archive}}\
%{mt|pthread:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}\
%{!mt:%{!pthread:-a shared -lc -a archive}}}}}\
%{pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\
-lgprof %{static:-a archive}\
- %{fopenacc|fopenmp|ftree-parallelize-loops=*:\
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%{static:-a shared} -lrt %{static:-a archive}}\
%{mt|pthread:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}\
@@ -81,21 +81,21 @@ along with GCC; see the file COPYING3. If not see
#else
#define LIB_SPEC \
"%{!shared:\
- %{!p:%{!pg:%{fopenacc|fopenmp|ftree-parallelize-loops=*:\
+ %{!p:%{!pg:%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%{static:-a shared} -lrt %{static:-a archive}}\
%{mt|pthread:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}\
%{!mt:%{!pthread:-a shared -lc -a archive}}}}}\
%{p:%{!pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
-lprof %{static:-a archive}\
- %{fopenacc|fopenmp|ftree-parallelize-loops=*:\
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%{static:-a shared} -lrt %{static:-a archive}}\
%{mt|pthread:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}\
%{!mt:%{!pthread:-a shared -lc -a archive}}}}}\
%{pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
-lgprof %{static:-a archive}\
- %{fopenacc|fopenmp|ftree-parallelize-loops=*:\
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%{static:-a shared} -lrt %{static:-a archive}}\
%{mt|pthread:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}\
diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md
index fbef6aee14b..447a04c090b 100644
--- a/gcc/config/pa/predicates.md
+++ b/gcc/config/pa/predicates.md
@@ -301,6 +301,9 @@
if (reg_plus_base_memory_operand (op, mode))
{
+ if (reload_in_progress)
+ return true;
+
/* Extract CONST_INT operand. */
if (GET_CODE (op) == SUBREG)
op = SUBREG_REG (op);
@@ -335,6 +338,9 @@
if (reg_plus_base_memory_operand (op, mode))
{
+ if (reload_in_progress)
+ return true;
+
/* Extract CONST_INT operand. */
if (GET_CODE (op) == SUBREG)
op = SUBREG_REG (op);
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index fd4b7cc5a7e..1d0076c41f0 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -3132,8 +3132,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
reg_addr[V4SFmode].reload_load = CODE_FOR_reload_v4sf_di_load;
reg_addr[V2DFmode].reload_store = CODE_FOR_reload_v2df_di_store;
reg_addr[V2DFmode].reload_load = CODE_FOR_reload_v2df_di_load;
- reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_di_store;
- reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_di_load;
reg_addr[DFmode].reload_store = CODE_FOR_reload_df_di_store;
reg_addr[DFmode].reload_load = CODE_FOR_reload_df_di_load;
reg_addr[DDmode].reload_store = CODE_FOR_reload_dd_di_store;
@@ -3141,7 +3139,13 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
reg_addr[SFmode].reload_store = CODE_FOR_reload_sf_di_store;
reg_addr[SFmode].reload_load = CODE_FOR_reload_sf_di_load;
- if (FLOAT128_IEEE_P (TFmode))
+ if (FLOAT128_VECTOR_P (KFmode))
+ {
+ reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_di_store;
+ reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_di_load;
+ }
+
+ if (FLOAT128_VECTOR_P (TFmode))
{
reg_addr[TFmode].reload_store = CODE_FOR_reload_tf_di_store;
reg_addr[TFmode].reload_load = CODE_FOR_reload_tf_di_load;
@@ -3182,6 +3186,18 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
reg_addr[V8HImode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprv8hi;
reg_addr[V16QImode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprv16qi;
reg_addr[SFmode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprsf;
+
+ if (FLOAT128_VECTOR_P (KFmode))
+ {
+ reg_addr[KFmode].reload_gpr_vsx = CODE_FOR_reload_gpr_from_vsxkf;
+ reg_addr[KFmode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprkf;
+ }
+
+ if (FLOAT128_VECTOR_P (TFmode))
+ {
+ reg_addr[TFmode].reload_gpr_vsx = CODE_FOR_reload_gpr_from_vsxtf;
+ reg_addr[TFmode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprtf;
+ }
}
}
else
@@ -3200,8 +3216,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
reg_addr[V4SFmode].reload_load = CODE_FOR_reload_v4sf_si_load;
reg_addr[V2DFmode].reload_store = CODE_FOR_reload_v2df_si_store;
reg_addr[V2DFmode].reload_load = CODE_FOR_reload_v2df_si_load;
- reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_si_store;
- reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_si_load;
reg_addr[DFmode].reload_store = CODE_FOR_reload_df_si_store;
reg_addr[DFmode].reload_load = CODE_FOR_reload_df_si_load;
reg_addr[DDmode].reload_store = CODE_FOR_reload_dd_si_store;
@@ -3209,6 +3223,12 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
reg_addr[SFmode].reload_store = CODE_FOR_reload_sf_si_store;
reg_addr[SFmode].reload_load = CODE_FOR_reload_sf_si_load;
+ if (FLOAT128_VECTOR_P (KFmode))
+ {
+ reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_si_store;
+ reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_si_load;
+ }
+
if (FLOAT128_IEEE_P (TFmode))
{
reg_addr[TFmode].reload_store = CODE_FOR_reload_tf_si_store;
@@ -34381,8 +34401,8 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] =
{ "dlmzb", OPTION_MASK_DLMZB, false, true },
{ "efficient-unaligned-vsx", OPTION_MASK_EFFICIENT_UNALIGNED_VSX,
false, true },
- { "float128", OPTION_MASK_FLOAT128, false, true },
- { "float128-hardware", OPTION_MASK_FLOAT128_HW, false, true },
+ { "float128", OPTION_MASK_FLOAT128, false, false },
+ { "float128-hardware", OPTION_MASK_FLOAT128_HW, false, false },
{ "fprnd", OPTION_MASK_FPRND, false, true },
{ "hard-dfp", OPTION_MASK_DFP, false, true },
{ "htm", OPTION_MASK_HTM, false, true },
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index ef1dea82c84..849b19a7b0b 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -7261,7 +7261,7 @@
(define_insn "*ieee_128bit_vsx_neg<mode>2_internal"
[(set (match_operand:IEEE128 0 "register_operand" "=wa")
(neg:IEEE128 (match_operand:IEEE128 1 "register_operand" "wa")))
- (use (match_operand:V16QI 2 "register_operand" "=v"))]
+ (use (match_operand:V16QI 2 "register_operand" "v"))]
"TARGET_FLOAT128 && !TARGET_FLOAT128_HW"
"xxlxor %x0,%x1,%x2"
[(set_attr "type" "vecsimple")])
@@ -7290,7 +7290,7 @@
(define_insn "*ieee_128bit_vsx_abs<mode>2_internal"
[(set (match_operand:IEEE128 0 "register_operand" "=wa")
(abs:IEEE128 (match_operand:IEEE128 1 "register_operand" "wa")))
- (use (match_operand:V16QI 2 "register_operand" "=v"))]
+ (use (match_operand:V16QI 2 "register_operand" "v"))]
"TARGET_FLOAT128 && !TARGET_FLOAT128_HW"
"xxlandc %x0,%x1,%x2"
[(set_attr "type" "vecsimple")])
@@ -7306,7 +7306,7 @@
"#"
"&& 1"
[(parallel [(set (match_dup 0)
- (abs:IEEE128 (match_dup 1)))
+ (neg:IEEE128 (abs:IEEE128 (match_dup 1))))
(use (match_dup 2))])]
{
if (GET_CODE (operands[2]) == SCRATCH)
@@ -7323,7 +7323,7 @@
(neg:IEEE128
(abs:IEEE128
(match_operand:IEEE128 1 "register_operand" "wa"))))
- (use (match_operand:V16QI 2 "register_operand" "=v"))]
+ (use (match_operand:V16QI 2 "register_operand" "v"))]
"TARGET_FLOAT128 && !TARGET_FLOAT128_HW"
"xxlor %x0,%x1,%x2"
[(set_attr "type" "vecsimple")])
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 4f219bee17d..1134d0f1e9d 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -6063,7 +6063,7 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
{
machine_mode mode_s = GET_MODE (src);
- if (mode_s == VOIDmode)
+ if (CONSTANT_P (src))
{
/* For constant zero values the representation with AND
appears to be folded in more situations than the (set
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index c0a9249c68d..0bb0f2b3038 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -2242,14 +2242,23 @@
[(set_attr "type" "arith")])
;; Old reload might generate add insns directly (not through the expander) for
-;; the memory address of complex insns like atomic insns when reloading.
+;; address register calculations when reloading, in which case it won't try
+;; the addsi_scr pattern. Because reload will sometimes try to validate
+;; the generated insns and their constraints, this pattern must be
+;; recognizable during and after reload. However, when reload generates
+;; address register calculations for the stack pointer, we don't allow this
+;; pattern. This will make reload prefer using indexed @(reg + reg) address
+;; modes when the displacement of a @(disp + reg) doesn't fit.
(define_insn_and_split "*addsi3"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
(plus:SI (match_operand:SI 1 "arith_reg_operand" "r")
(match_operand:SI 2 "arith_or_int_operand" "rn")))]
"TARGET_SH1 && !sh_lra_p ()
- && reload_completed
- && !reg_overlap_mentioned_p (operands[0], operands[1])"
+ && (reload_completed || reload_in_progress)
+ && !reg_overlap_mentioned_p (operands[0], operands[1])
+ && (!reload_in_progress
+ || ((!REG_P (operands[1]) || REGNO (operands[1]) != SP_REG)
+ && (!REG_P (operands[2]) || REGNO (operands[2]) != SP_REG)))"
"#"
"&& 1"
[(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))]
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 080be617a5a..082af3cc9b1 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -4917,13 +4917,18 @@ sparc_compute_frame_size (HOST_WIDE_INT size, int leaf_function)
/* Calculate space needed for global registers. */
if (TARGET_ARCH64)
- for (i = 0; i < 8; i++)
- if (save_global_or_fp_reg_p (i, 0))
- n_global_fp_regs += 2;
+ {
+ for (i = 0; i < 8; i++)
+ if (save_global_or_fp_reg_p (i, 0))
+ n_global_fp_regs += 2;
+ }
else
- for (i = 0; i < 8; i += 2)
- if (save_global_or_fp_reg_p (i, 0) || save_global_or_fp_reg_p (i + 1, 0))
- n_global_fp_regs += 2;
+ {
+ for (i = 0; i < 8; i += 2)
+ if (save_global_or_fp_reg_p (i, 0)
+ || save_global_or_fp_reg_p (i + 1, 0))
+ n_global_fp_regs += 2;
+ }
/* In the flat window model, find out which local and in registers need to
be saved. We don't reserve space in the current frame for them as they
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d457acc3f33..12900d3cd45 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,238 @@
+2016-04-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/70528
+ * class.c (type_has_constexpr_default_constructor): Return true
+ for an implicitly declared constructor.
+
+ PR c++/70622
+ * parser.c (cp_parser_init_declarator): Add auto_result parm.
+ (cp_parser_simple_declaration): Pass it.
+ (strip_declarator_types): New.
+
+ PR c++/70543
+ * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
+ initializer also makes the variable value-dependent.
+
+ PR c++/70648
+ * constexpr.c (cxx_eval_store_expression): Also copy
+ CONSTRUCTOR_NO_IMPLICIT_ZERO.
+
+2016-04-14 Martin Sebor <msebor@redhat.com>
+
+ PR c++/69517
+ PR c++/70019
+ PR c++/70588
+ * cp-tree.h, decl.c, init.c, typeck2.c: Revert.
+
+2016-04-14 Jason Merrill <jason@redhat.com>
+
+ * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty
+ parameter ABI change.
+
+2016-04-13 Martin Sebor <msebor@redhat.com>
+
+ PR c++/69517
+ PR c++/70019
+ PR c++/70588
+ * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
+ functions.
+ * decl.c (check_initializer, cp_finish_decl): Call them.
+ (reshape_init_r): Reject incompletely braced intializer-lists
+ for VLAs.
+ * init.c (throw_bad_array_length, build_vla_check)
+ (build_vla_size_check, build_vla_init_check): Define new functions.
+ * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
+ to detect a VLA.
+ (store_init_value): Same.
+
+2016-04-13 Jason Merrill <jason@redhat.com>
+
+ Warn about empty parameter ABI with -Wabi=9.
+ * call.c (empty_class_msg, mark_for_abi_warning)
+ (warn_empty_class_abi): New.
+ (build_call_a): Use them.
+ * decl.c (store_parm_decls): Use mark_for_abi_warning.
+ * error.c (pp_format_to_string): New.
+
+ Pass empty class parameters like C.
+ * call.c (pass_as_empty_struct, empty_class_arg): New.
+ (type_passed_as, build_x_va_arg): Use pass_as_empty_struct.
+ (build_call_a): Use empty_class_arg.
+ * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New.
+ * decl.c (cxx_init_decl_processing): Create empty_struct_type.
+
+2016-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/70627
+ * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE.
+
+2016-04-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/70635
+ * pt.c (resolve_typename_type): Fix typos in infinite recursion
+ avoidance mechanism.
+
+2016-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/70634
+ * pt.c (instantiation_dependent_uneval_expression_p): Split out
+ from instantiation_dependent_expression_p.
+ (value_dependent_expression_p): Use it for unevaluated operands.
+ (instantiation_dependent_r): Don't check value-dependence.
+ (instantiation_dependent_expression_p): Check
+ value-dependence of the expression as a whole.
+ * cp-tree.h: Declare instantiation_dependent_uneval_expression_p.
+ * semantics.c (finish_decltype_type): Use it.
+
+ * constexpr.c (potential_nondependent_constant_expression): New.
+ (potential_nondependent_static_init_expression): New.
+ (maybe_constant_value_1, fold_non_dependent_expr)
+ (maybe_constant_init): Use them.
+ * pt.c (instantiate_non_dependent_expr_sfinae)
+ (instantiate_non_dependent_or_null, convert_nontype_argument): Use
+ them.
+ * cp-tree.h: Declare them.
+
+2016-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70594
+ * decl.c (pop_labels_1): Removed.
+ (note_label, sort_labels): New functions.
+ (pop_labels): During named_labels traversal, just push the slot
+ pointers into a vector, then qsort it by DECL_UID and only then
+ call pop_label and chain it into BLOCK_VARS.
+
+2016-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/70615
+ * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here.
+ (cp_gimplify_expr): Not here.
+
+2016-04-12 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70610
+ * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
+ recurse into it.
+ * typeck.c (build_x_conditional_expr): Unconditionally remember
+ that the result is an lvalue or xvalue.
+
+2016-04-12 Jason Merrill <jason@redhat.com>
+
+ * class.c (is_really_empty_class): A zero-length array is empty.
+ An unnamed bit-field doesn't make a class non-empty.
+
+2016-04-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/68722
+ * parser.c (cp_parser_cache_defarg): When file ends in default
+ argument simply return error_mark_node.
+
+2016-04-12 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/70501
+ * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE
+ similarly to PMF.
+
+2016-04-11 Jason Merrill <jason@redhat.com>
+
+ * mangle.c (decl_is_template_id): The template itself counts as a
+ template-id.
+
+2016-04-08 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70590
+ PR c++/70452
+ * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr
+ on the result if it's not a CONSTRUCTOR.
+
+2016-04-07 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70452
+ * constexpr.c (find_constructor): New function.
+ (unshare_constructor): New function.
+ (cxx_eval_call_expression): Use unshare_constructor instead of
+ unshare_expr.
+ (find_array_ctor_elt): Likewise.
+ (cxx_eval_vec_init_1): Likewise.
+ (cxx_eval_store_expression): Likewise.
+ (cxx_eval_constant_expression): Likewise.
+
+2016-04-06 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c/70436
+ * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid
+ potentially generating a future -Wparentheses warning in its
+ callers.
+
+2016-04-06 Jason Merrill <jason@redhat.com>
+
+ * class.c (check_abi_tags): Fix function template handling.
+
+2016-04-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/70512
+ * class.c (fixup_may_alias): New.
+ (fixup_attribute_variants): Call it.
+
+2016-04-05 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70452
+ * constexpr.c (struct fundef_copy): New struct.
+ (struct fundef_copies_table_t): New struct.
+ (fundef_copies_table): New static variable.
+ (maybe_initialize_fundef_copies_table): New static function.
+ (get_fundef_copy): New static function.
+ (save_fundef_copy): New static function.
+ (cxx_eval_call_expression): Use get_fundef_copy, and
+ save_fundef_copy.
+ (constexpr_call_table): Add "deletable" GTY marker.
+
+2016-04-05 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70452
+ * cp-tree.h (class cache_map): Remove.
+ * constexpr.c (cv_cache): Change type to
+ GTY((deletable)) hash_map<tree, tree> *.
+ (maybe_constant_value): Adjust following the change to cv_cache.
+ (clear_cv_cache): New static function.
+ (clear_cv_and_fold_caches): Use it.
+ * cp-gimplify.c (fold_cache): Change type to
+ GTY((deletable)) hash_map<tree, tree> *.
+ (clear_fold_cache): Adjust following the change to fold_cache.
+ (cp_fold): Likewise.
+
+2016-04-02 Martin Sebor <msebor@redhat.com>
+
+ PR c++/67376
+ PR c++/70170
+ PR c++/70172
+ PR c++/70228
+ * constexpr.c (diag_array_subscript): New function.
+ (cxx_eval_array_reference): Detect out of bounds array indices.
+
+2016-04-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/70449
+ PR c++/70344
+ * pt.c (instantiate_decl): A function isn't fully defined if
+ DECL_INITIAL is error_mark_node.
+ * constexpr.c (cxx_eval_call_expression): Likewise.
+
+2016-04-01 Jakub Jelinek <jakub@redhat.com>
+ Marek Polacek <polacek@redhat.com>
+
+ PR c++/70488
+ * init.c (warn_placement_new_too_small): Test whether
+ DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi.
+
+2016-04-01 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/68475
+ * decl.c (check_redeclaration_exception_specification): Check
+ regardless of -fno-exceptions.
+ * typeck2.c (merge_exception_specifiers): Relax assert by checking
+ flag_exceptions too.
+
2016-03-31 Nathan Sidwell <nathan@acm.org>
* decl.c (start_preparsed_function): Remove unnecessary bracing.
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 98cbab5a00f..e6d5bb0fe9c 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -1604,6 +1604,15 @@ check_abi_tags (tree t, tree subob)
void
check_abi_tags (tree decl)
{
+ tree t;
+ if (abi_version_at_least (10)
+ && DECL_LANG_SPECIFIC (decl)
+ && DECL_USE_TEMPLATE (decl)
+ && (t = DECL_TEMPLATE_RESULT (DECL_TI_TEMPLATE (decl)),
+ t != decl))
+ /* Make sure that our template has the appropriate tags, since
+ write_unqualified_name looks for them there. */
+ check_abi_tags (t);
if (VAR_P (decl))
check_abi_tags (decl, TREE_TYPE (decl));
else if (TREE_CODE (decl) == FUNCTION_DECL
@@ -1978,6 +1987,21 @@ fixup_type_variants (tree t)
}
}
+/* KLASS is a class that we're applying may_alias to after the body is
+ parsed. Fixup any POINTER_TO and REFERENCE_TO types. The
+ canonical type(s) will be implicitly updated. */
+
+static void
+fixup_may_alias (tree klass)
+{
+ tree t;
+
+ for (t = TYPE_POINTER_TO (klass); t; t = TYPE_NEXT_PTR_TO (t))
+ TYPE_REF_CAN_ALIAS_ALL (t) = true;
+ for (t = TYPE_REFERENCE_TO (klass); t; t = TYPE_NEXT_REF_TO (t))
+ TYPE_REF_CAN_ALIAS_ALL (t) = true;
+}
+
/* Early variant fixups: we apply attributes at the beginning of the class
definition, and we need to fix up any variants that have already been
made via elaborated-type-specifier so that check_qualified_type works. */
@@ -1993,6 +2017,10 @@ fixup_attribute_variants (tree t)
tree attrs = TYPE_ATTRIBUTES (t);
unsigned align = TYPE_ALIGN (t);
bool user_align = TYPE_USER_ALIGN (t);
+ bool may_alias = lookup_attribute ("may_alias", attrs);
+
+ if (may_alias)
+ fixup_may_alias (t);
for (variants = TYPE_NEXT_VARIANT (t);
variants;
@@ -2007,6 +2035,8 @@ fixup_attribute_variants (tree t)
else
TYPE_USER_ALIGN (variants) = user_align;
TYPE_ALIGN (variants) = valign;
+ if (may_alias)
+ fixup_may_alias (variants);
}
}
@@ -3316,7 +3346,6 @@ add_implicitly_declared_members (tree t, tree* access_decls,
CLASSTYPE_LAZY_DEFAULT_CTOR (t) = 1;
if (cxx_dialect >= cxx11)
TYPE_HAS_CONSTEXPR_CTOR (t)
- /* This might force the declaration. */
= type_has_constexpr_default_constructor (t);
}
@@ -5319,8 +5348,11 @@ type_has_constexpr_default_constructor (tree t)
{
if (!TYPE_HAS_COMPLEX_DFLT (t))
return trivial_default_constructor_is_constexpr (t);
- /* Non-trivial, we need to check subobject constructors. */
- lazily_declare_fn (sfk_constructor, t);
+ /* Assume it's constexpr to avoid unnecessary instantiation; if the
+ definition would have made the class non-literal, it will still be
+ non-literal because of the base or member in question, and that
+ gives a better diagnostic. */
+ return true;
}
fns = locate_ctor (t);
return (fns && DECL_DECLARED_CONSTEXPR_P (fns));
@@ -8376,12 +8408,15 @@ is_really_empty_class (tree type)
for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
if (TREE_CODE (field) == FIELD_DECL
&& !DECL_ARTIFICIAL (field)
+ /* An unnamed bit-field is not a data member. */
+ && (DECL_NAME (field) || !DECL_C_BIT_FIELD (field))
&& !is_really_empty_class (TREE_TYPE (field)))
return false;
return true;
}
else if (TREE_CODE (type) == ARRAY_TYPE)
- return is_really_empty_class (TREE_TYPE (type));
+ return (integer_zerop (array_type_nelts_top (type))
+ || is_really_empty_class (TREE_TYPE (type)));
return false;
}
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index ea605dc641b..4abff2011f2 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -915,7 +915,7 @@ struct constexpr_ctx {
/* A table of all constexpr calls that have been evaluated by the
compiler in this translation unit. */
-static GTY (()) hash_table<constexpr_call_hasher> *constexpr_call_table;
+static GTY ((deletable)) hash_table<constexpr_call_hasher> *constexpr_call_table;
static tree cxx_eval_constant_expression (const constexpr_ctx *, tree,
bool, bool *, bool *, tree * = NULL);
@@ -965,6 +965,78 @@ maybe_initialize_constexpr_call_table (void)
constexpr_call_table = hash_table<constexpr_call_hasher>::create_ggc (101);
}
+/* The representation of a single node in the per-function freelist maintained
+ by FUNDEF_COPIES_TABLE. */
+
+struct fundef_copy
+{
+ tree body;
+ tree parms;
+ tree res;
+ fundef_copy *prev;
+};
+
+/* During constexpr CALL_EXPR evaluation, to avoid issues with sharing when
+ a function happens to get called recursively, we unshare the callee
+ function's body and evaluate this unshared copy instead of evaluating the
+ original body.
+
+ FUNDEF_COPIES_TABLE is a per-function freelist of these unshared function
+ copies. The underlying data structure of FUNDEF_COPIES_TABLE is a hash_map
+ that's keyed off of the original FUNCTION_DECL and whose value is the chain
+ of this function's unused copies awaiting reuse. */
+
+struct fundef_copies_table_t
+{
+ hash_map<tree, fundef_copy *> *map;
+};
+
+static GTY((deletable)) fundef_copies_table_t fundef_copies_table;
+
+/* Initialize FUNDEF_COPIES_TABLE if it's not initialized. */
+
+static void
+maybe_initialize_fundef_copies_table ()
+{
+ if (fundef_copies_table.map == NULL)
+ fundef_copies_table.map = hash_map<tree, fundef_copy *>::create_ggc (101);
+}
+
+/* Reuse a copy or create a new unshared copy of the function FUN.
+ Return this copy. */
+
+static fundef_copy *
+get_fundef_copy (tree fun)
+{
+ maybe_initialize_fundef_copies_table ();
+
+ fundef_copy *copy;
+ fundef_copy **slot = &fundef_copies_table.map->get_or_insert (fun, NULL);
+ if (*slot == NULL)
+ {
+ copy = ggc_alloc<fundef_copy> ();
+ copy->body = copy_fn (fun, copy->parms, copy->res);
+ copy->prev = NULL;
+ }
+ else
+ {
+ copy = *slot;
+ *slot = (*slot)->prev;
+ }
+
+ return copy;
+}
+
+/* Save the copy COPY of function FUN for later reuse by get_fundef_copy(). */
+
+static void
+save_fundef_copy (tree fun, fundef_copy *copy)
+{
+ fundef_copy **slot = &fundef_copies_table.map->get_or_insert (fun, NULL);
+ copy->prev = *slot;
+ *slot = copy;
+}
+
/* We have an expression tree T that represents a call, either CALL_EXPR
or AGGR_INIT_EXPR. If the call is lexically to a named function,
retrun the _DECL for that function. */
@@ -1079,6 +1151,30 @@ adjust_temp_type (tree type, tree temp)
return cp_fold_convert (type, temp);
}
+/* Callback for walk_tree used by unshare_constructor. */
+
+static tree
+find_constructor (tree *tp, int *walk_subtrees, void *)
+{
+ if (TYPE_P (*tp))
+ *walk_subtrees = 0;
+ if (TREE_CODE (*tp) == CONSTRUCTOR)
+ return *tp;
+ return NULL_TREE;
+}
+
+/* If T is a CONSTRUCTOR or an expression that has a CONSTRUCTOR node as a
+ subexpression, return an unshared copy of T. Otherwise return T. */
+
+static tree
+unshare_constructor (tree t)
+{
+ tree ctor = walk_tree (&t, find_constructor, NULL, NULL);
+ if (ctor != NULL_TREE)
+ return unshare_expr (t);
+ return t;
+}
+
/* Subroutine of cxx_eval_call_expression.
We are processing a call expression (either CALL_EXPR or
AGGR_INIT_EXPR) in the context of CTX. Evaluate
@@ -1239,21 +1335,6 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
return t;
}
- if (fun == current_function_decl)
- {
- /* A call to the current function, i.e.
- constexpr int f (int i) {
- constexpr int j = f(i-1);
- return j;
- }
- This would be OK without the constexpr on the declaration of j. */
- if (!ctx->quiet)
- error_at (loc, "%qD called in a constant expression before its "
- "definition is complete", fun);
- *non_constant_p = true;
- return t;
- }
-
constexpr_ctx new_ctx = *ctx;
if (DECL_CONSTRUCTOR_P (fun) && !ctx->object
&& TREE_CODE (t) == AGGR_INIT_EXPR)
@@ -1308,7 +1389,10 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
{
if (!ctx->quiet)
{
- if (DECL_INITIAL (fun))
+ if (DECL_INITIAL (fun) == error_mark_node)
+ error_at (loc, "%qD called in a constant expression before its "
+ "definition is complete", fun);
+ else if (DECL_INITIAL (fun))
{
/* The definition of fun was somehow unsuitable. */
error_at (loc, "%qD called in a constant expression", fun);
@@ -1377,10 +1461,13 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
if (!result || result == error_mark_node)
{
gcc_assert (DECL_SAVED_TREE (fun));
- tree parms, res;
+ tree body, parms, res;
- /* Unshare the whole function body. */
- tree body = copy_fn (fun, parms, res);
+ /* Reuse or create a new unshared copy of this function's body. */
+ fundef_copy *copy = get_fundef_copy (fun);
+ body = copy->body;
+ parms = copy->parms;
+ res = copy->res;
/* Associate the bindings with the remapped parms. */
tree bound = new_call.bindings;
@@ -1391,7 +1478,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
tree arg = TREE_VALUE (bound);
gcc_assert (DECL_NAME (remapped) == DECL_NAME (oparm));
/* Don't share a CONSTRUCTOR that might be changed. */
- arg = unshare_expr (arg);
+ arg = unshare_constructor (arg);
ctx->values->put (remapped, arg);
bound = TREE_CHAIN (bound);
remapped = DECL_CHAIN (remapped);
@@ -1409,8 +1496,14 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
else
ctx->values->put (res, NULL_TREE);
+ /* Track the callee's evaluated SAVE_EXPRs so that we can forget
+ their values after the call. */
+ constexpr_ctx ctx_with_save_exprs = *ctx;
+ hash_set<tree> save_exprs;
+ ctx_with_save_exprs.save_exprs = &save_exprs;
+
tree jump_target = NULL_TREE;
- cxx_eval_constant_expression (ctx, body,
+ cxx_eval_constant_expression (&ctx_with_save_exprs, body,
lval, non_constant_p, overflow_p,
&jump_target);
@@ -1435,6 +1528,11 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
}
}
+ /* Forget the saved values of the callee's SAVE_EXPRs. */
+ for (hash_set<tree>::iterator iter = save_exprs.begin();
+ iter != save_exprs.end(); ++iter)
+ ctx_with_save_exprs.values->remove (*iter);
+
/* Remove the parms/result from the values map. Is it worth
bothering to do this when the map itself is only live for
one constexpr evaluation? If so, maybe also clear out
@@ -1444,6 +1542,9 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
ctx->values->remove (slot);
for (tree parm = parms; parm; parm = TREE_CHAIN (parm))
ctx->values->remove (parm);
+
+ /* Make the unshared function copy we used available for re-use. */
+ save_fundef_copy (fun, copy);
}
if (result == error_mark_node)
@@ -1457,7 +1558,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
}
pop_cx_call_context ();
- return unshare_expr (result);
+ return unshare_constructor (result);
}
/* FIXME speed this up, it's taking 16% of compile time on sieve testcase. */
@@ -1803,7 +1904,7 @@ find_array_ctor_elt (tree ary, tree dindex, bool insert = false)
/* Append the element we want to insert. */
++middle;
e.index = dindex;
- e.value = unshare_expr (elt.value);
+ e.value = unshare_constructor (elt.value);
vec_safe_insert (CONSTRUCTOR_ELTS (ary), middle, e);
}
else
@@ -1819,7 +1920,7 @@ find_array_ctor_elt (tree ary, tree dindex, bool insert = false)
e.index = hi;
else
e.index = build2 (RANGE_EXPR, sizetype, new_lo, hi);
- e.value = unshare_expr (elt.value);
+ e.value = unshare_constructor (elt.value);
vec_safe_insert (CONSTRUCTOR_ELTS (ary), middle+1, e);
}
}
@@ -1837,6 +1938,30 @@ find_array_ctor_elt (tree ary, tree dindex, bool insert = false)
return -1;
}
+/* Under the control of CTX, issue a detailed diagnostic for
+ an out-of-bounds subscript INDEX into the expression ARRAY. */
+
+static void
+diag_array_subscript (const constexpr_ctx *ctx, tree array, tree index)
+{
+ if (!ctx->quiet)
+ {
+ tree arraytype = TREE_TYPE (array);
+
+ /* Convert the unsigned array subscript to a signed integer to avoid
+ printing huge numbers for small negative values. */
+ tree sidx = fold_convert (ssizetype, index);
+ if (DECL_P (array))
+ {
+ error ("array subscript value %qE is outside the bounds "
+ "of array %qD of type %qT", sidx, array, arraytype);
+ inform (DECL_SOURCE_LOCATION (array), "declared here");
+ }
+ else
+ error ("array subscript value %qE is outside the bounds "
+ "of array type %qT", sidx, arraytype);
+ }
+}
/* Subroutine of cxx_eval_constant_expression.
Attempt to reduce a reference to an array slot. */
@@ -1885,8 +2010,7 @@ cxx_eval_array_reference (const constexpr_ctx *ctx, tree t,
if (!tree_fits_shwi_p (index)
|| (i = tree_to_shwi (index)) < 0)
{
- if (!ctx->quiet)
- error ("negative array subscript");
+ diag_array_subscript (ctx, ary, index);
*non_constant_p = true;
return t;
}
@@ -1898,8 +2022,7 @@ cxx_eval_array_reference (const constexpr_ctx *ctx, tree t,
VERIFY_CONSTANT (nelts);
if (!tree_int_cst_lt (index, nelts))
{
- if (!ctx->quiet)
- error ("array subscript out of bound");
+ diag_array_subscript (ctx, ary, index);
*non_constant_p = true;
return t;
}
@@ -2271,10 +2394,10 @@ cxx_eval_bare_aggregate (const constexpr_ctx *ctx, tree t,
tree type = TREE_TYPE (t);
constexpr_ctx new_ctx;
- if (TYPE_PTRMEMFUNC_P (type))
+ if (TYPE_PTRMEMFUNC_P (type) || VECTOR_TYPE_P (type))
{
- /* We don't really need the ctx->ctor business for a PMF, but it's
- simpler to use the same code. */
+ /* We don't really need the ctx->ctor business for a PMF or
+ vector, but it's simpler to use the same code. */
new_ctx = *ctx;
new_ctx.ctor = build_constructor (type, NULL);
new_ctx.object = NULL_TREE;
@@ -2466,7 +2589,7 @@ cxx_eval_vec_init_1 (const constexpr_ctx *ctx, tree atype, tree init,
for (i = 1; i < max; ++i)
{
idx = build_int_cst (size_type_node, i);
- CONSTRUCTOR_APPEND_ELT (*p, idx, unshare_expr (eltinit));
+ CONSTRUCTOR_APPEND_ELT (*p, idx, unshare_constructor (eltinit));
}
break;
}
@@ -3014,7 +3137,7 @@ cxx_eval_store_expression (const constexpr_ctx *ctx, tree t,
init = cxx_eval_constant_expression (&new_ctx, init, false,
non_constant_p, overflow_p);
/* Don't share a CONSTRUCTOR that might be changed later. */
- init = unshare_expr (init);
+ init = unshare_constructor (init);
if (target == object)
/* The hash table might have moved since the get earlier. */
valp = ctx->values->get (object);
@@ -3026,6 +3149,8 @@ cxx_eval_store_expression (const constexpr_ctx *ctx, tree t,
CONSTRUCTOR_ELTS (*valp) = CONSTRUCTOR_ELTS (init);
TREE_CONSTANT (*valp) = TREE_CONSTANT (init);
TREE_SIDE_EFFECTS (*valp) = TREE_SIDE_EFFECTS (init);
+ CONSTRUCTOR_NO_IMPLICIT_ZERO (*valp)
+ = CONSTRUCTOR_NO_IMPLICIT_ZERO (init);
}
else
*valp = init;
@@ -3466,7 +3591,7 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t,
false,
non_constant_p, overflow_p);
/* Don't share a CONSTRUCTOR that might be changed. */
- init = unshare_expr (init);
+ init = unshare_constructor (init);
ctx->values->put (r, init);
}
else if (ctx == &new_ctx)
@@ -3511,7 +3636,7 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t,
if (lval)
{
tree slot = TARGET_EXPR_SLOT (t);
- r = unshare_expr (r);
+ r = unshare_constructor (r);
ctx->values->put (slot, r);
return slot;
}
@@ -4041,6 +4166,12 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant,
if (!non_constant_p && overflow_p)
non_constant_p = true;
+ /* Unshare the result unless it's a CONSTRUCTOR in which case it's already
+ unshared. */
+ bool should_unshare = true;
+ if (r == t || TREE_CODE (r) == CONSTRUCTOR)
+ should_unshare = false;
+
if (non_constant_p && !allow_non_constant)
return error_mark_node;
else if (non_constant_p && TREE_CONSTANT (r))
@@ -4057,6 +4188,9 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant,
else if (non_constant_p || r == t)
return t;
+ if (should_unshare)
+ r = unshare_expr (r);
+
if (TREE_CODE (r) == CONSTRUCTOR && CLASS_TYPE_P (TREE_TYPE (r)))
{
if (TREE_CODE (t) == TARGET_EXPR
@@ -4183,10 +4317,7 @@ maybe_constant_value_1 (tree t, tree decl)
{
tree r;
- if (instantiation_dependent_expression_p (t)
- || type_unknown_p (t)
- || BRACE_ENCLOSED_INITIALIZER_P (t)
- || !potential_constant_expression (t))
+ if (!potential_nondependent_constant_expression (t))
{
if (TREE_OVERFLOW_P (t))
{
@@ -4205,7 +4336,7 @@ maybe_constant_value_1 (tree t, tree decl)
return r;
}
-static GTY((cache, deletable)) cache_map cv_cache;
+static GTY((deletable)) hash_map<tree, tree> *cv_cache;
/* If T is a constant expression, returns its reduced value.
Otherwise, if T does not have TREE_CONSTANT set, returns T.
@@ -4214,21 +4345,32 @@ static GTY((cache, deletable)) cache_map cv_cache;
tree
maybe_constant_value (tree t, tree decl)
{
- tree ret = cv_cache.get (t);
- if (!ret)
- {
- ret = maybe_constant_value_1 (t, decl);
- cv_cache.put (t, ret);
- }
+ if (cv_cache == NULL)
+ cv_cache = hash_map<tree, tree>::create_ggc (101);
+
+ if (tree *cached = cv_cache->get (t))
+ return *cached;
+
+ tree ret = maybe_constant_value_1 (t, decl);
+ cv_cache->put (t, ret);
return ret;
}
+/* Dispose of the whole CV_CACHE. */
+
+static void
+clear_cv_cache (void)
+{
+ if (cv_cache != NULL)
+ cv_cache->empty ();
+}
+
/* Dispose of the whole CV_CACHE and FOLD_CACHE. */
void
clear_cv_and_fold_caches (void)
{
- gt_cleare_cache (cv_cache);
+ clear_cv_cache ();
clear_fold_cache ();
}
@@ -4254,8 +4396,7 @@ fold_non_dependent_expr (tree t)
as two declarations of the same function, for example. */
if (processing_template_decl)
{
- if (!instantiation_dependent_expression_p (t)
- && potential_constant_expression (t))
+ if (potential_nondependent_constant_expression (t))
{
processing_template_decl_sentinel s;
t = instantiate_non_dependent_expr_internal (t, tf_none);
@@ -4306,10 +4447,7 @@ maybe_constant_init (tree t, tree decl)
t = TREE_OPERAND (t, 0);
if (TREE_CODE (t) == INIT_EXPR)
t = TREE_OPERAND (t, 1);
- if (instantiation_dependent_expression_p (t)
- || type_unknown_p (t)
- || BRACE_ENCLOSED_INITIALIZER_P (t)
- || !potential_static_init_expression (t))
+ if (!potential_nondependent_static_init_expression (t))
/* Don't try to evaluate it. */;
else
t = cxx_eval_outermost_constant_expr (t, true, false, decl);
@@ -5060,4 +5198,29 @@ require_potential_rvalue_constant_expression (tree t)
return potential_constant_expression_1 (t, true, true, tf_warning_or_error);
}
+/* Returns true if T is a potential constant expression that is not
+ instantiation-dependent, and therefore a candidate for constant folding even
+ in a template. */
+
+bool
+potential_nondependent_constant_expression (tree t)
+{
+ return (!type_unknown_p (t)
+ && !BRACE_ENCLOSED_INITIALIZER_P (t)
+ && potential_constant_expression (t)
+ && !instantiation_dependent_expression_p (t));
+}
+
+/* Returns true if T is a potential static initializer expression that is not
+ instantiation-dependent. */
+
+bool
+potential_nondependent_static_init_expression (tree t)
+{
+ return (!type_unknown_p (t)
+ && !BRACE_ENCLOSED_INITIALIZER_P (t)
+ && potential_static_init_expression (t)
+ && !instantiation_dependent_expression_p (t));
+}
+
#include "gt-cp-constexpr.h"
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index 90b3464e5de..30ac660906d 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -576,11 +576,6 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
switch (code)
{
- case PTRMEM_CST:
- *expr_p = cplus_expand_constant (*expr_p);
- ret = GS_OK;
- break;
-
case AGGR_INIT_EXPR:
simplify_aggr_init_expr (expr_p);
ret = GS_OK;
@@ -1388,6 +1383,13 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data)
|| TREE_CODE (stmt) == OMP_SIMD
|| TREE_CODE (stmt) == OMP_DISTRIBUTE)
genericize_omp_for_stmt (stmt_p, walk_subtrees, data);
+ else if (TREE_CODE (stmt) == PTRMEM_CST)
+ {
+ /* By the time we get here we're handing off to the back end, so we don't
+ need or want to preserve PTRMEM_CST anymore. */
+ *stmt_p = cplus_expand_constant (stmt);
+ *walk_subtrees = 0;
+ }
else if ((flag_sanitize
& (SANITIZE_NULL | SANITIZE_ALIGNMENT | SANITIZE_VPTR))
&& !wtd->no_sanitize_p)
@@ -1905,14 +1907,15 @@ c_fully_fold (tree x, bool /*in_init*/, bool */*maybe_const*/)
return cp_fold_rvalue (x);
}
-static GTY((cache, deletable)) cache_map fold_cache;
+static GTY((deletable)) hash_map<tree, tree> *fold_cache;
/* Dispose of the whole FOLD_CACHE. */
void
clear_fold_cache (void)
{
- gt_cleare_cache (fold_cache);
+ if (fold_cache != NULL)
+ fold_cache->empty ();
}
/* This function tries to fold an expression X.
@@ -1942,8 +1945,11 @@ cp_fold (tree x)
if (DECL_P (x) || CONSTANT_CLASS_P (x))
return x;
- if (tree cached = fold_cache.get (x))
- return cached;
+ if (fold_cache == NULL)
+ fold_cache = hash_map<tree, tree>::create_ggc (101);
+
+ if (tree *cached = fold_cache->get (x))
+ return *cached;
code = TREE_CODE (x);
switch (code)
@@ -2298,10 +2304,10 @@ cp_fold (tree x)
return org_x;
}
- fold_cache.put (org_x, x);
+ fold_cache->put (org_x, x);
/* Prevent that we try to fold an already folded result again. */
if (x != org_x)
- fold_cache.put (x, x);
+ fold_cache->put (x, x);
return x;
}
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index b7b770f9200..a3cd834a105 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -2526,12 +2526,14 @@ struct GTY(()) lang_decl {
*/
#define FOR_EACH_CLONE(CLONE, FN) \
- if (TREE_CODE (FN) == FUNCTION_DECL \
- && (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (FN) \
- || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (FN))) \
- for (CLONE = DECL_CHAIN (FN); \
- CLONE && DECL_CLONED_FUNCTION_P (CLONE); \
- CLONE = DECL_CHAIN (CLONE))
+ if (!(TREE_CODE (FN) == FUNCTION_DECL \
+ && (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (FN) \
+ || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (FN))))\
+ ; \
+ else \
+ for (CLONE = DECL_CHAIN (FN); \
+ CLONE && DECL_CLONED_FUNCTION_P (CLONE); \
+ CLONE = DECL_CHAIN (CLONE))
/* Nonzero if NODE has DECL_DISCRIMINATOR and not DECL_ACCESS. */
#define DECL_DISCRIMINATOR_P(NODE) \
@@ -5525,42 +5527,6 @@ extern cp_parameter_declarator *no_parameters;
/* True if we saw "#pragma GCC java_exceptions". */
extern bool pragma_java_exceptions;
-/* Data structure for a mapping from tree to tree that's only used as a cache;
- we don't GC-mark trees in the map, and we clear the map when collecting
- garbage. Global variables of this type must be marked
- GTY((cache,deletable)) so that the gt_cleare_cache function is called by
- ggc_collect but we don't try to load the map pointer from a PCH.
-
- FIXME improve to use keep_cache_entry. */
-class cache_map
-{
- /* Use a lazily initialized pointer rather than a map member since a
- hash_map can't be constructed in a static initializer. */
- hash_map<tree, tree> *map;
-
-public:
- tree get (tree key)
- {
- if (map)
- if (tree *slot = map->get (key))
- return *slot;
- return NULL_TREE;
- }
-
- bool put (tree key, tree val)
- {
- if (!map)
- map = new hash_map<tree, tree>;
- return map->put (key, val);
- }
-
- friend inline void gt_cleare_cache (cache_map &cm)
- {
- if (cm.map)
- cm.map->empty();
- }
-};
-
/* in call.c */
extern bool check_dtor_name (tree, tree);
int magic_varargs_p (tree);
@@ -6161,6 +6127,7 @@ extern bool any_type_dependent_elements_p (const_tree);
extern bool type_dependent_expression_p_push (tree);
extern bool value_dependent_expression_p (tree);
extern bool instantiation_dependent_expression_p (tree);
+extern bool instantiation_dependent_uneval_expression_p (tree);
extern bool any_value_dependent_elements_p (const_tree);
extern bool dependent_omp_for_p (tree, tree, tree, tree);
extern tree resolve_typename_type (tree, bool);
@@ -6918,6 +6885,8 @@ extern tree register_constexpr_fundef (tree, tree);
extern bool check_constexpr_ctor_body (tree, tree, bool);
extern tree ensure_literal_type_for_constexpr_object (tree);
extern bool potential_constant_expression (tree);
+extern bool potential_nondependent_constant_expression (tree);
+extern bool potential_nondependent_static_init_expression (tree);
extern bool potential_static_init_expression (tree);
extern bool potential_rvalue_constant_expression (tree);
extern bool require_potential_constant_expression (tree);
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index a6c585515d5..380bc79ea53 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -368,33 +368,61 @@ pop_label (tree label, tree old_value)
SET_IDENTIFIER_LABEL_VALUE (DECL_NAME (label), old_value);
}
-/* At the end of a function, all labels declared within the function
- go out of scope. BLOCK is the top-level block for the
- function. */
+/* Push all named labels into a vector, so that we can sort it on DECL_UID
+ to avoid code generation differences. */
int
-pop_labels_1 (named_label_entry **slot, tree block)
+note_label (named_label_entry **slot, vec<named_label_entry **> &labels)
{
- struct named_label_entry *ent = *slot;
-
- pop_label (ent->label_decl, NULL_TREE);
-
- /* Put the labels into the "variables" of the top-level block,
- so debugger can see them. */
- DECL_CHAIN (ent->label_decl) = BLOCK_VARS (block);
- BLOCK_VARS (block) = ent->label_decl;
+ labels.quick_push (slot);
+ return 1;
+}
- named_labels->clear_slot (slot);
+/* Helper function to sort named label entries in a vector by DECL_UID. */
- return 1;
+static int
+sort_labels (const void *a, const void *b)
+{
+ named_label_entry **slot1 = *(named_label_entry **const *) a;
+ named_label_entry **slot2 = *(named_label_entry **const *) b;
+ if (DECL_UID ((*slot1)->label_decl) < DECL_UID ((*slot2)->label_decl))
+ return -1;
+ if (DECL_UID ((*slot1)->label_decl) > DECL_UID ((*slot2)->label_decl))
+ return 1;
+ return 0;
}
+/* At the end of a function, all labels declared within the function
+ go out of scope. BLOCK is the top-level block for the
+ function. */
+
static void
pop_labels (tree block)
{
if (named_labels)
{
- named_labels->traverse<tree, pop_labels_1> (block);
+ auto_vec<named_label_entry **, 32> labels;
+ named_label_entry **slot;
+ unsigned int i;
+
+ /* Push all the labels into a vector and sort them by DECL_UID,
+ so that gaps between DECL_UIDs don't affect code generation. */
+ labels.reserve_exact (named_labels->elements ());
+ named_labels->traverse<vec<named_label_entry **> &, note_label> (labels);
+ labels.qsort (sort_labels);
+ FOR_EACH_VEC_ELT (labels, i, slot)
+ {
+ struct named_label_entry *ent = *slot;
+
+ pop_label (ent->label_decl, NULL_TREE);
+
+ /* Put the labels into the "variables" of the top-level block,
+ so debugger can see them. */
+ DECL_CHAIN (ent->label_decl) = BLOCK_VARS (block);
+ BLOCK_VARS (block) = ent->label_decl;
+
+ named_labels->clear_slot (slot);
+ }
named_labels = NULL;
}
}
@@ -1202,16 +1230,19 @@ check_redeclaration_exception_specification (tree new_decl,
specialization, of that function shall have an
exception-specification with the same set of type-ids. */
if (! DECL_IS_BUILTIN (old_decl)
- && flag_exceptions
&& !comp_except_specs (new_exceptions, old_exceptions, ce_normal))
{
const char *msg
= "declaration of %q+F has a different exception specifier";
bool complained = true;
- if (! DECL_IN_SYSTEM_HEADER (old_decl))
- error (msg, new_decl);
- else
+ if (DECL_IN_SYSTEM_HEADER (old_decl))
complained = pedwarn (0, OPT_Wsystem_headers, msg, new_decl);
+ else if (!flag_exceptions)
+ /* We used to silently permit mismatched eh specs with
+ -fno-exceptions, so make them a pedwarn now. */
+ complained = pedwarn (0, OPT_Wpedantic, msg, new_decl);
+ else
+ error (msg, new_decl);
if (complained)
inform (0, "from previous declaration %q+F", old_decl);
}
@@ -13222,7 +13253,10 @@ start_enum (tree name, tree enumtype, tree underlying_type,
if (underlying_type)
{
- if (CP_INTEGRAL_TYPE_P (underlying_type))
+ if (ENUM_UNDERLYING_TYPE (enumtype))
+ /* We already checked that it matches, don't change it to a different
+ typedef variant. */;
+ else if (CP_INTEGRAL_TYPE_P (underlying_type))
{
copy_type_enum (enumtype, underlying_type);
ENUM_UNDERLYING_TYPE (enumtype) = underlying_type;
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index aee3b8416e4..5997d53ddb5 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2430,7 +2430,8 @@ warn_placement_new_too_small (tree type, tree nelts, tree size, tree oper)
though the size of a member of a union may be viewed as extending
to the end of the union itself (it is by __builtin_object_size). */
if ((TREE_CODE (oper) == VAR_DECL || use_obj_size)
- && DECL_SIZE_UNIT (oper))
+ && DECL_SIZE_UNIT (oper)
+ && tree_fits_uhwi_p (DECL_SIZE_UNIT (oper)))
{
/* Use the size of the entire array object when the expression
refers to a variable or its size depends on an expression
@@ -2438,7 +2439,8 @@ warn_placement_new_too_small (tree type, tree nelts, tree size, tree oper)
bytes_avail = tree_to_uhwi (DECL_SIZE_UNIT (oper));
exact_size = !use_obj_size;
}
- else if (TYPE_SIZE_UNIT (TREE_TYPE (oper)))
+ else if (TYPE_SIZE_UNIT (TREE_TYPE (oper))
+ && tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (oper))))
{
/* Use the size of the type of the destination buffer object
as the optimistic estimate of the available space in it. */
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 5d38373765b..0e444097c19 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -264,9 +264,9 @@ static void write_java_integer_type_codes (const tree);
#define write_unsigned_number(NUMBER) \
write_number ((NUMBER), /*unsigned_p=*/1, 10)
-/* If DECL is a template instance, return nonzero and, if
- TEMPLATE_INFO is non-NULL, set *TEMPLATE_INFO to its template info.
- Otherwise return zero. */
+/* If DECL is a template instance (including the uninstantiated template
+ itself), return nonzero and, if TEMPLATE_INFO is non-NULL, set
+ *TEMPLATE_INFO to its template info. Otherwise return zero. */
static int
decl_is_template_id (const tree decl, tree* const template_info)
@@ -290,7 +290,8 @@ decl_is_template_id (const tree decl, tree* const template_info)
{
/* Check if this is a primary template. */
if (DECL_LANG_SPECIFIC (decl) != NULL
- && DECL_USE_TEMPLATE (decl)
+ && VAR_OR_FUNCTION_DECL_P (decl)
+ && DECL_TEMPLATE_INFO (decl)
&& PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl))
&& TREE_CODE (decl) != TEMPLATE_DECL)
{
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 7e13c6e74f6..cba2d6598a7 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -2104,7 +2104,7 @@ static tree cp_parser_selection_statement
static tree cp_parser_condition
(cp_parser *);
static tree cp_parser_iteration_statement
- (cp_parser *, bool);
+ (cp_parser *, bool *, bool);
static bool cp_parser_for_init_statement
(cp_parser *, tree *decl);
static tree cp_parser_for
@@ -2127,7 +2127,7 @@ static void cp_parser_declaration_statement
static tree cp_parser_implicitly_scoped_statement
(cp_parser *, bool *, const token_indent_info &, vec<tree> * = NULL);
static void cp_parser_already_scoped_statement
- (cp_parser *, const token_indent_info &);
+ (cp_parser *, bool *, const token_indent_info &);
/* Declarations [gram.dcl.dcl] */
@@ -2193,7 +2193,7 @@ static tree cp_parser_decltype
static tree cp_parser_init_declarator
(cp_parser *, cp_decl_specifier_seq *, vec<deferred_access_check, va_gc> *,
- bool, bool, int, bool *, tree *, location_t *);
+ bool, bool, int, bool *, tree *, location_t *, tree *);
static cp_declarator *cp_parser_declarator
(cp_parser *, cp_parser_declarator_kind, int *, bool *, bool, bool);
static cp_declarator *cp_parser_direct_declarator
@@ -10392,7 +10392,7 @@ cp_parser_statement (cp_parser* parser, tree in_statement_expr,
case RID_WHILE:
case RID_DO:
case RID_FOR:
- statement = cp_parser_iteration_statement (parser, false);
+ statement = cp_parser_iteration_statement (parser, if_p, false);
break;
case RID_CILK_FOR:
@@ -10947,7 +10947,7 @@ cp_parser_selection_statement (cp_parser* parser, bool *if_p,
else
{
/* This if statement does not have an else clause. If
- NESTED_IF is true, then the then-clause is an if
+ NESTED_IF is true, then the then-clause has an if
statement which does have an else clause. We warn
about the potential ambiguity. */
if (nested_if)
@@ -11544,7 +11544,7 @@ cp_parser_range_for_member_function (tree range, tree identifier)
Returns the new WHILE_STMT, DO_STMT, FOR_STMT or RANGE_FOR_STMT. */
static tree
-cp_parser_iteration_statement (cp_parser* parser, bool ivdep)
+cp_parser_iteration_statement (cp_parser* parser, bool *if_p, bool ivdep)
{
cp_token *token;
enum rid keyword;
@@ -11582,7 +11582,7 @@ cp_parser_iteration_statement (cp_parser* parser, bool ivdep)
cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN);
/* Parse the dependent statement. */
parser->in_statement = IN_ITERATION_STMT;
- cp_parser_already_scoped_statement (parser, guard_tinfo);
+ cp_parser_already_scoped_statement (parser, if_p, guard_tinfo);
parser->in_statement = in_statement;
/* We're done with the while-statement. */
finish_while_stmt (statement);
@@ -11627,7 +11627,7 @@ cp_parser_iteration_statement (cp_parser* parser, bool ivdep)
/* Parse the body of the for-statement. */
parser->in_statement = IN_ITERATION_STMT;
- cp_parser_already_scoped_statement (parser, guard_tinfo);
+ cp_parser_already_scoped_statement (parser, if_p, guard_tinfo);
parser->in_statement = in_statement;
/* We're done with the for-statement. */
@@ -11937,7 +11937,7 @@ cp_parser_implicitly_scoped_statement (cp_parser* parser, bool *if_p,
scope. */
static void
-cp_parser_already_scoped_statement (cp_parser* parser,
+cp_parser_already_scoped_statement (cp_parser* parser, bool *if_p,
const token_indent_info &guard_tinfo)
{
/* If the token is a `{', then we must take special action. */
@@ -11946,7 +11946,7 @@ cp_parser_already_scoped_statement (cp_parser* parser,
token_indent_info body_tinfo
= get_token_indent_info (cp_lexer_peek_token (parser->lexer));
- cp_parser_statement (parser, NULL_TREE, false, NULL);
+ cp_parser_statement (parser, NULL_TREE, false, if_p);
token_indent_info next_tinfo
= get_token_indent_info (cp_lexer_peek_token (parser->lexer));
warn_for_misleading_indentation (guard_tinfo, body_tinfo, next_tinfo);
@@ -12337,10 +12337,9 @@ cp_parser_simple_declaration (cp_parser* parser,
&& !cp_parser_error_occurred (parser))
cp_parser_commit_to_tentative_parse (parser);
- tree last_type, auto_node;
+ tree last_type;
last_type = NULL_TREE;
- auto_node = type_uses_auto (decl_specifiers.type);
/* Keep going until we hit the `;' at the end of the simple
declaration. */
@@ -12351,6 +12350,7 @@ cp_parser_simple_declaration (cp_parser* parser,
cp_token *token;
bool function_definition_p;
tree decl;
+ tree auto_result = NULL_TREE;
if (saw_declarator)
{
@@ -12376,7 +12376,8 @@ cp_parser_simple_declaration (cp_parser* parser,
declares_class_or_enum,
&function_definition_p,
maybe_range_for_decl,
- &init_loc);
+ &init_loc,
+ &auto_result);
/* If an error occurred while parsing tentatively, exit quickly.
(That usually happens when in the body of a function; each
statement is treated as a declaration-statement until proven
@@ -12384,10 +12385,10 @@ cp_parser_simple_declaration (cp_parser* parser,
if (cp_parser_error_occurred (parser))
goto done;
- if (auto_node)
+ if (auto_result)
{
- tree type = TREE_TYPE (decl);
- if (last_type && !same_type_p (type, last_type))
+ if (last_type && last_type != error_mark_node
+ && !same_type_p (auto_result, last_type))
{
/* If the list of declarators contains more than one declarator,
the type of each declared variable is determined as described
@@ -12395,10 +12396,11 @@ cp_parser_simple_declaration (cp_parser* parser,
the same in each deduction, the program is ill-formed. */
error_at (decl_specifiers.locations[ds_type_spec],
"inconsistent deduction for %qT: %qT and then %qT",
- decl_specifiers.type, last_type, type);
- auto_node = NULL_TREE;
+ decl_specifiers.type, last_type, auto_result);
+ last_type = error_mark_node;
}
- last_type = type;
+ else
+ last_type = auto_result;
}
/* Handle function definitions specially. */
@@ -18221,6 +18223,31 @@ cp_parser_asm_definition (cp_parser* parser)
}
}
+/* Given the type TYPE of a declaration with declarator DECLARATOR, return the
+ type that comes from the decl-specifier-seq. */
+
+static tree
+strip_declarator_types (tree type, cp_declarator *declarator)
+{
+ for (cp_declarator *d = declarator; d;)
+ switch (d->kind)
+ {
+ case cdk_id:
+ case cdk_error:
+ d = NULL;
+ break;
+
+ default:
+ if (TYPE_PTRMEMFUNC_P (type))
+ type = TYPE_PTRMEMFUNC_FN_TYPE (type);
+ type = TREE_TYPE (type);
+ d = d->declarator;
+ break;
+ }
+
+ return type;
+}
+
/* Declarators [gram.dcl.decl] */
/* Parse an init-declarator.
@@ -18286,7 +18313,8 @@ cp_parser_init_declarator (cp_parser* parser,
int declares_class_or_enum,
bool* function_definition_p,
tree* maybe_range_for_decl,
- location_t* init_loc)
+ location_t* init_loc,
+ tree* auto_result)
{
cp_token *token = NULL, *asm_spec_start_token = NULL,
*attributes_start_token = NULL;
@@ -18677,6 +18705,10 @@ cp_parser_init_declarator (cp_parser* parser,
finish_fully_implicit_template (parser, /*member_decl_opt=*/0);
}
+ if (auto_result && is_initialized && decl_specifiers->type
+ && type_uses_auto (decl_specifiers->type))
+ *auto_result = strip_declarator_types (TREE_TYPE (decl), declarator);
+
return decl;
}
@@ -25808,7 +25840,7 @@ cp_parser_single_declaration (cp_parser* parser,
member_p,
declares_class_or_enum,
&function_definition_p,
- NULL, NULL);
+ NULL, NULL, NULL);
/* 7.1.1-1 [dcl.stc]
@@ -27472,8 +27504,7 @@ cp_parser_cache_defarg (cp_parser *parser, bool nsdmi)
case CPP_EOF:
case CPP_PRAGMA_EOL:
error_at (token->location, "file ends in default argument");
- done = true;
- break;
+ return error_mark_node;
case CPP_NAME:
case CPP_SCOPE:
@@ -37310,7 +37341,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context)
cp_parser_error (parser, "for, while or do statement expected");
return false;
}
- cp_parser_iteration_statement (parser, true);
+ cp_parser_iteration_statement (parser, NULL, true);
return true;
}
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index a6398c04f85..4a00530b312 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -5655,8 +5655,7 @@ instantiate_non_dependent_expr_sfinae (tree expr, tsubst_flags_t complain)
as two declarations of the same function, for example. */
if (processing_template_decl
- && !instantiation_dependent_expression_p (expr)
- && potential_constant_expression (expr))
+ && potential_nondependent_constant_expression (expr))
{
processing_template_decl_sentinel s;
expr = instantiate_non_dependent_expr_internal (expr, complain);
@@ -5680,8 +5679,7 @@ instantiate_non_dependent_or_null (tree expr)
return NULL_TREE;
if (processing_template_decl)
{
- if (instantiation_dependent_expression_p (expr)
- || !potential_constant_expression (expr))
+ if (!potential_nondependent_constant_expression (expr))
expr = NULL_TREE;
else
{
@@ -6240,10 +6238,8 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
if (TYPE_REF_OBJ_P (type)
&& has_value_dependent_address (expr))
/* If we want the address and it's value-dependent, don't fold. */;
- else if (!type_unknown_p (expr)
- && processing_template_decl
- && !instantiation_dependent_expression_p (expr)
- && potential_constant_expression (expr))
+ else if (processing_template_decl
+ && potential_nondependent_constant_expression (expr))
non_dep = true;
if (error_operand_p (expr))
return error_mark_node;
@@ -21741,7 +21737,8 @@ instantiate_decl (tree d, int defer_ok,
if (TREE_CODE (d) == FUNCTION_DECL)
{
deleted_p = DECL_DELETED_FN (code_pattern);
- pattern_defined = (DECL_SAVED_TREE (code_pattern) != NULL_TREE
+ pattern_defined = ((DECL_SAVED_TREE (code_pattern) != NULL_TREE
+ && DECL_INITIAL (code_pattern) != error_mark_node)
|| DECL_DEFAULTED_OUTSIDE_CLASS_P (code_pattern)
|| deleted_p);
}
@@ -22673,6 +22670,7 @@ value_dependent_expression_p (tree expression)
&& (TREE_CODE (DECL_INITIAL (expression)) == TREE_LIST
/* cp_finish_decl doesn't fold reference initializers. */
|| TREE_CODE (TREE_TYPE (expression)) == REFERENCE_TYPE
+ || type_dependent_expression_p (DECL_INITIAL (expression))
|| value_dependent_expression_p (DECL_INITIAL (expression))))
return true;
return false;
@@ -22723,7 +22721,7 @@ value_dependent_expression_p (tree expression)
return true;
else if (TYPE_P (expression))
return dependent_type_p (expression);
- return instantiation_dependent_expression_p (expression);
+ return instantiation_dependent_uneval_expression_p (expression);
case AT_ENCODE_EXPR:
/* An 'encode' expression is value-dependent if the operand is
@@ -22733,7 +22731,7 @@ value_dependent_expression_p (tree expression)
case NOEXCEPT_EXPR:
expression = TREE_OPERAND (expression, 0);
- return instantiation_dependent_expression_p (expression);
+ return instantiation_dependent_uneval_expression_p (expression);
case SCOPE_REF:
/* All instantiation-dependent expressions should also be considered
@@ -23104,13 +23102,6 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees,
case TREE_VEC:
return NULL_TREE;
- case VAR_DECL:
- case CONST_DECL:
- /* A constant with a dependent initializer is dependent. */
- if (value_dependent_expression_p (*tp))
- return *tp;
- break;
-
case TEMPLATE_PARM_INDEX:
return *tp;
@@ -23136,12 +23127,6 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees,
break;
}
- case TRAIT_EXPR:
- if (value_dependent_expression_p (*tp))
- return *tp;
- *walk_subtrees = false;
- return NULL_TREE;
-
case COMPONENT_REF:
if (identifier_p (TREE_OPERAND (*tp, 1)))
/* In a template, finish_class_member_access_expr creates a
@@ -23192,10 +23177,15 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees,
"An expression is instantiation-dependent if it is type-dependent
or value-dependent, or it has a subexpression that is type-dependent
- or value-dependent." */
+ or value-dependent."
+
+ Except don't actually check value-dependence for unevaluated expressions,
+ because in sizeof(i) we don't care about the value of i. Checking
+ type-dependence will in turn check value-dependence of array bounds/template
+ arguments as needed. */
bool
-instantiation_dependent_expression_p (tree expression)
+instantiation_dependent_uneval_expression_p (tree expression)
{
tree result;
@@ -23210,6 +23200,15 @@ instantiation_dependent_expression_p (tree expression)
return result != NULL_TREE;
}
+/* As above, but also check value-dependence of the expression as a whole. */
+
+bool
+instantiation_dependent_expression_p (tree expression)
+{
+ return (instantiation_dependent_uneval_expression_p (expression)
+ || value_dependent_expression_p (expression));
+}
+
/* Like type_dependent_expression_p, but it also works while not processing
a template definition, i.e. during substitution or mangling. */
@@ -23597,9 +23596,9 @@ resolve_typename_type (tree type, bool only_current_p)
{
/* Ill-formed programs can cause infinite recursion here, so we
must catch that. */
- TYPENAME_IS_RESOLVING_P (type) = 1;
+ TYPENAME_IS_RESOLVING_P (result) = 1;
result = resolve_typename_type (result, only_current_p);
- TYPENAME_IS_RESOLVING_P (type) = 0;
+ TYPENAME_IS_RESOLVING_P (result) = 0;
}
/* Qualify the resulting type. */
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 1574e60199e..0487adf6018 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -8740,7 +8740,7 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p,
/* Depending on the resolution of DR 1172, we may later need to distinguish
instantiation-dependent but not type-dependent expressions so that, say,
A<decltype(sizeof(T))>::U doesn't require 'typename'. */
- if (instantiation_dependent_expression_p (expr))
+ if (instantiation_dependent_uneval_expression_p (expr))
{
type = cxx_make_type (DECLTYPE_TYPE);
DECLTYPE_TYPE_EXPR (type) = expr;
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 5d9de344e7c..df2981fd3f4 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -224,13 +224,7 @@ lvalue_kind (const_tree ref)
return lvalue_kind (BASELINK_FUNCTIONS (CONST_CAST_TREE (ref)));
case NON_DEPENDENT_EXPR:
- /* We just return clk_ordinary for NON_DEPENDENT_EXPR in C++98, but
- in C++11 lvalues don't bind to rvalue references, so we need to
- work harder to avoid bogus errors (c++/44870). */
- if (cxx_dialect < cxx11)
- return clk_ordinary;
- else
- return lvalue_kind (TREE_OPERAND (ref, 0));
+ return lvalue_kind (TREE_OPERAND (ref, 0));
default:
if (!TREE_TYPE (ref))
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 9e61090f57b..cef5604bd0b 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -6275,10 +6275,8 @@ build_x_conditional_expr (location_t loc, tree ifexp, tree op1, tree op2,
{
tree min = build_min_non_dep (COND_EXPR, expr,
orig_ifexp, orig_op1, orig_op2);
- /* In C++11, remember that the result is an lvalue or xvalue.
- In C++98, lvalue_kind can just assume lvalue in a template. */
- if (cxx_dialect >= cxx11
- && lvalue_or_rvalue_with_address_p (expr)
+ /* Remember that the result is an lvalue or xvalue. */
+ if (lvalue_or_rvalue_with_address_p (expr)
&& !lvalue_or_rvalue_with_address_p (min))
TREE_TYPE (min) = cp_build_reference_type (TREE_TYPE (min),
!real_lvalue_p (expr));
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 4ab77cda387..b921689808a 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -2143,7 +2143,7 @@ merge_exception_specifiers (tree list, tree add)
return add;
noex = TREE_PURPOSE (list);
gcc_checking_assert (!TREE_PURPOSE (add)
- || errorcount
+ || errorcount || !flag_exceptions
|| cp_tree_equal (noex, TREE_PURPOSE (add)));
/* Combine the dynamic-exception-specifiers, if any. */
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 6e2702992c6..a5a8b23df27 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -954,9 +954,13 @@ typedef _Complex float __attribute__((mode(TC))) _Complex128;
typedef _Complex float __attribute__((mode(XC))) _Complex80;
@end smallexample
-On PowerPC 64-bit Linux systems there are currently problems in using
-the complex @code{__float128} type. When these problems are fixed,
-you would use:
+In order to use @code{__float128} and @code{__ibm128} on PowerPC Linux
+systems, you must use the @option{-mfloat128}. It is expected in
+future versions of GCC that @code{__float128} will be enabled
+automatically. In addition, there are currently problems in using the
+complex @code{__float128} type. When these problems are fixed, you
+would use the following syntax to declare @code{_Complex128} to be a
+complex @code{__float128} type:
@smallexample
typedef _Complex float __attribute__((mode(KC))) _Complex128;
diff --git a/gcc/dse.c b/gcc/dse.c
index eef564454aa..b03616102b5 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -242,9 +242,6 @@ struct store_info
/* Canonized MEM address for use by canon_true_dependence. */
rtx mem_addr;
- /* If this is non-zero, it is the alias set of a spill location. */
- alias_set_type alias_set;
-
/* The offset of the first and byte before the last byte associated
with the operation. */
HOST_WIDE_INT begin, end;
@@ -306,9 +303,6 @@ struct read_info_type
/* The id of the mem group of the base address. */
int group_id;
- /* If this is non-zero, it is the alias set of a spill location. */
- alias_set_type alias_set;
-
/* The offset of the first and byte after the last byte associated
with the operation. If begin == end == 0, the read did not have
a constant offset. */
@@ -576,19 +570,6 @@ static object_allocator<deferred_change> deferred_change_pool
static deferred_change *deferred_change_list = NULL;
-/* The group that holds all of the clear_alias_sets. */
-static group_info *clear_alias_group;
-
-/* The modes of the clear_alias_sets. */
-static htab_t clear_alias_mode_table;
-
-/* Hash table element to look up the mode for an alias set. */
-struct clear_alias_mode_holder
-{
- alias_set_type alias_set;
- machine_mode mode;
-};
-
/* This is true except if cfun->stdarg -- i.e. we cannot do
this for vararg functions because they play games with the frame. */
static bool stores_off_frame_dead_at_return;
@@ -596,7 +577,6 @@ static bool stores_off_frame_dead_at_return;
/* Counter for stats. */
static int globally_deleted;
static int locally_deleted;
-static int spill_deleted;
static bitmap all_blocks;
@@ -613,22 +593,6 @@ static unsigned int current_position;
----------------------------------------------------------------------------*/
-/* Find the entry associated with ALIAS_SET. */
-
-static struct clear_alias_mode_holder *
-clear_alias_set_lookup (alias_set_type alias_set)
-{
- struct clear_alias_mode_holder tmp_holder;
- void **slot;
-
- tmp_holder.alias_set = alias_set;
- slot = htab_find_slot (clear_alias_mode_table, &tmp_holder, NO_INSERT);
- gcc_assert (*slot);
-
- return (struct clear_alias_mode_holder *) *slot;
-}
-
-
/* Hashtable callbacks for maintaining the "bases" field of
store_group_info, given that the addresses are function invariants. */
@@ -665,37 +629,13 @@ get_group_info (rtx base)
group_info *gi;
group_info **slot;
- if (base)
- {
- /* Find the store_base_info structure for BASE, creating a new one
- if necessary. */
- tmp_gi.rtx_base = base;
- slot = rtx_group_table->find_slot (&tmp_gi, INSERT);
- gi = *slot;
- }
- else
- {
- if (!clear_alias_group)
- {
- clear_alias_group = gi = group_info_pool.allocate ();
- memset (gi, 0, sizeof (struct group_info));
- gi->id = rtx_group_next_id++;
- gi->store1_n = BITMAP_ALLOC (&dse_bitmap_obstack);
- gi->store1_p = BITMAP_ALLOC (&dse_bitmap_obstack);
- gi->store2_n = BITMAP_ALLOC (&dse_bitmap_obstack);
- gi->store2_p = BITMAP_ALLOC (&dse_bitmap_obstack);
- gi->escaped_p = BITMAP_ALLOC (&dse_bitmap_obstack);
- gi->escaped_n = BITMAP_ALLOC (&dse_bitmap_obstack);
- gi->group_kill = BITMAP_ALLOC (&dse_bitmap_obstack);
- gi->process_globally = false;
- gi->offset_map_size_n = 0;
- gi->offset_map_size_p = 0;
- gi->offset_map_n = NULL;
- gi->offset_map_p = NULL;
- rtx_group_vec.safe_push (gi);
- }
- return clear_alias_group;
- }
+ gcc_assert (base != NULL_RTX);
+
+ /* Find the store_base_info structure for BASE, creating a new one
+ if necessary. */
+ tmp_gi.rtx_base = base;
+ slot = rtx_group_table->find_slot (&tmp_gi, INSERT);
+ gi = *slot;
if (gi == NULL)
{
@@ -732,7 +672,6 @@ dse_step0 (void)
{
locally_deleted = 0;
globally_deleted = 0;
- spill_deleted = 0;
bitmap_obstack_initialize (&dse_bitmap_obstack);
gcc_obstack_init (&dse_obstack);
@@ -749,8 +688,6 @@ dse_step0 (void)
stores_off_frame_dead_at_return = !cfun->stdarg;
init_alias_analysis ();
-
- clear_alias_group = NULL;
}
@@ -919,15 +856,8 @@ delete_dead_store_insn (insn_info_t insn_info)
if (!check_for_inc_dec_1 (insn_info))
return;
if (dump_file && (dump_flags & TDF_DETAILS))
- {
- fprintf (dump_file, "Locally deleting insn %d ",
- INSN_UID (insn_info->insn));
- if (insn_info->store_rec->alias_set)
- fprintf (dump_file, "alias set %d\n",
- (int) insn_info->store_rec->alias_set);
- else
- fprintf (dump_file, "\n");
- }
+ fprintf (dump_file, "Locally deleting insn %d\n",
+ INSN_UID (insn_info->insn));
free_store_info (insn_info);
read_info = insn_info->read_rec;
@@ -1057,13 +987,8 @@ free_read_records (bb_info_t bb_info)
while (*ptr)
{
read_info_t next = (*ptr)->next;
- if ((*ptr)->alias_set == 0)
- {
- read_info_type_pool.remove (*ptr);
- *ptr = next;
- }
- else
- ptr = &(*ptr)->next;
+ read_info_type_pool.remove (*ptr);
+ *ptr = next;
}
}
@@ -1137,7 +1062,6 @@ const_or_frame_p (rtx x)
static bool
canon_address (rtx mem,
- alias_set_type *alias_set_out,
int *group_id,
HOST_WIDE_INT *offset,
cselib_val **base)
@@ -1147,8 +1071,6 @@ canon_address (rtx mem,
rtx expanded_address, address;
int expanded;
- *alias_set_out = 0;
-
cselib_lookup (mem_address, address_mode, 1, GET_MODE (mem));
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -1347,7 +1269,6 @@ record_store (rtx body, bb_info_t bb_info)
rtx mem, rhs, const_rhs, mem_addr;
HOST_WIDE_INT offset = 0;
HOST_WIDE_INT width = 0;
- alias_set_type spill_alias_set;
insn_info_t insn_info = bb_info->last_insn;
store_info *store_info = NULL;
int group_id;
@@ -1410,7 +1331,7 @@ record_store (rtx body, bb_info_t bb_info)
if (MEM_VOLATILE_P (mem))
insn_info->cannot_delete = true;
- if (!canon_address (mem, &spill_alias_set, &group_id, &offset, &base))
+ if (!canon_address (mem, &group_id, &offset, &base))
{
clear_rhs_from_active_local_stores ();
return 0;
@@ -1421,26 +1342,7 @@ record_store (rtx body, bb_info_t bb_info)
else
width = GET_MODE_SIZE (GET_MODE (mem));
- if (spill_alias_set)
- {
- bitmap store1 = clear_alias_group->store1_p;
- bitmap store2 = clear_alias_group->store2_p;
-
- gcc_assert (GET_MODE (mem) != BLKmode);
-
- if (!bitmap_set_bit (store1, spill_alias_set))
- bitmap_set_bit (store2, spill_alias_set);
-
- if (clear_alias_group->offset_map_size_p < spill_alias_set)
- clear_alias_group->offset_map_size_p = spill_alias_set;
-
- store_info = rtx_store_info_pool.allocate ();
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, " processing spill store %d(%s)\n",
- (int) spill_alias_set, GET_MODE_NAME (GET_MODE (mem)));
- }
- else if (group_id >= 0)
+ if (group_id >= 0)
{
/* In the restrictive case where the base is a constant or the
frame pointer we can do global analysis. */
@@ -1506,21 +1408,16 @@ record_store (rtx body, bb_info_t bb_info)
last = NULL;
redundant_reason = NULL;
mem = canon_rtx (mem);
- /* For alias_set != 0 canon_true_dependence should be never called. */
- if (spill_alias_set)
- mem_addr = NULL_RTX;
+
+ if (group_id < 0)
+ mem_addr = base->val_rtx;
else
{
- if (group_id < 0)
- mem_addr = base->val_rtx;
- else
- {
- group_info *group = rtx_group_vec[group_id];
- mem_addr = group->canon_base_addr;
- }
- if (offset)
- mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
+ group_info *group = rtx_group_vec[group_id];
+ mem_addr = group->canon_base_addr;
}
+ if (offset)
+ mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
while (ptr)
{
@@ -1534,29 +1431,7 @@ record_store (rtx body, bb_info_t bb_info)
while (!s_info->is_set)
s_info = s_info->next;
- if (s_info->alias_set != spill_alias_set)
- del = false;
- else if (s_info->alias_set)
- {
- struct clear_alias_mode_holder *entry
- = clear_alias_set_lookup (s_info->alias_set);
- /* Generally, spills cannot be processed if and of the
- references to the slot have a different mode. But if
- we are in the same block and mode is exactly the same
- between this store and one before in the same block,
- we can still delete it. */
- if ((GET_MODE (mem) == GET_MODE (s_info->mem))
- && (GET_MODE (mem) == entry->mode))
- {
- del = true;
- set_all_positions_unneeded (s_info);
- }
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, " trying spill store in insn=%d alias_set=%d\n",
- INSN_UID (ptr->insn), (int) s_info->alias_set);
- }
- else if ((s_info->group_id == group_id)
- && (s_info->cse_base == base))
+ if (s_info->group_id == group_id && s_info->cse_base == base)
{
HOST_WIDE_INT i;
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -1609,10 +1484,9 @@ record_store (rtx body, bb_info_t bb_info)
the value of store_info. If it is, set the rhs to NULL to
keep it from being used to remove a load. */
{
- if (canon_true_dependence (s_info->mem,
- GET_MODE (s_info->mem),
- s_info->mem_addr,
- mem, mem_addr))
+ if (canon_output_dependence (s_info->mem, true,
+ mem, GET_MODE (mem),
+ mem_addr))
{
s_info->rhs = NULL;
s_info->const_rhs = NULL;
@@ -1647,7 +1521,6 @@ record_store (rtx body, bb_info_t bb_info)
store_info->next = insn_info->store_rec;
insn_info->store_rec = store_info;
store_info->mem = mem;
- store_info->alias_set = spill_alias_set;
store_info->mem_addr = mem_addr;
store_info->cse_base = base;
if (width > HOST_BITS_PER_WIDE_INT)
@@ -2071,7 +1944,6 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info)
insn_info_t insn_info;
HOST_WIDE_INT offset = 0;
HOST_WIDE_INT width = 0;
- alias_set_type spill_alias_set = 0;
cselib_val *base = NULL;
int group_id;
read_info_t read_info;
@@ -2093,7 +1965,7 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info)
if (MEM_READONLY_P (mem))
return;
- if (!canon_address (mem, &spill_alias_set, &group_id, &offset, &base))
+ if (!canon_address (mem, &group_id, &offset, &base))
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, " adding wild read, canon_address failure.\n");
@@ -2109,64 +1981,21 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info)
read_info = read_info_type_pool.allocate ();
read_info->group_id = group_id;
read_info->mem = mem;
- read_info->alias_set = spill_alias_set;
read_info->begin = offset;
read_info->end = offset + width;
read_info->next = insn_info->read_rec;
insn_info->read_rec = read_info;
- /* For alias_set != 0 canon_true_dependence should be never called. */
- if (spill_alias_set)
- mem_addr = NULL_RTX;
+ if (group_id < 0)
+ mem_addr = base->val_rtx;
else
{
- if (group_id < 0)
- mem_addr = base->val_rtx;
- else
- {
- group_info *group = rtx_group_vec[group_id];
- mem_addr = group->canon_base_addr;
- }
- if (offset)
- mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
+ group_info *group = rtx_group_vec[group_id];
+ mem_addr = group->canon_base_addr;
}
+ if (offset)
+ mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
- /* We ignore the clobbers in store_info. The is mildly aggressive,
- but there really should not be a clobber followed by a read. */
-
- if (spill_alias_set)
- {
- insn_info_t i_ptr = active_local_stores;
- insn_info_t last = NULL;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, " processing spill load %d\n",
- (int) spill_alias_set);
-
- while (i_ptr)
- {
- store_info *store_info = i_ptr->store_rec;
-
- /* Skip the clobbers. */
- while (!store_info->is_set)
- store_info = store_info->next;
-
- if (store_info->alias_set == spill_alias_set)
- {
- if (dump_file && (dump_flags & TDF_DETAILS))
- dump_insn_info ("removing from active", i_ptr);
-
- active_local_stores_len--;
- if (last)
- last->next_local_store = i_ptr->next_local_store;
- else
- active_local_stores = i_ptr->next_local_store;
- }
- else
- last = i_ptr;
- i_ptr = i_ptr->next_local_store;
- }
- }
- else if (group_id >= 0)
+ if (group_id >= 0)
{
/* This is the restricted case where the base is a constant or
the frame pointer and offset is a constant. */
@@ -2294,11 +2123,10 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info)
bb_info->regs_live))
return;
- if (!store_info->alias_set)
- remove = canon_true_dependence (store_info->mem,
- GET_MODE (store_info->mem),
- store_info->mem_addr,
- mem, mem_addr);
+ remove = canon_true_dependence (store_info->mem,
+ GET_MODE (store_info->mem),
+ store_info->mem_addr,
+ mem, mem_addr);
if (remove)
{
@@ -2731,16 +2559,12 @@ dse_step1 (void)
/* Skip the clobbers. */
while (!store_info->is_set)
store_info = store_info->next;
- if (store_info->alias_set && !i_ptr->cannot_delete)
- delete_dead_store_insn (i_ptr);
- else
- if (store_info->group_id >= 0)
- {
- group_info *group
- = rtx_group_vec[store_info->group_id];
- if (group->frame_related && !i_ptr->cannot_delete)
- delete_dead_store_insn (i_ptr);
- }
+ if (store_info->group_id >= 0)
+ {
+ group_info *group = rtx_group_vec[store_info->group_id];
+ if (group->frame_related && !i_ptr->cannot_delete)
+ delete_dead_store_insn (i_ptr);
+ }
i_ptr = i_ptr->next_local_store;
}
@@ -2869,10 +2693,10 @@ dse_step2_init (void)
}
-/* Init the offset tables for the normal case. */
+/* Init the offset tables. */
static bool
-dse_step2_nospill (void)
+dse_step2 (void)
{
unsigned int i;
group_info *group;
@@ -2884,9 +2708,6 @@ dse_step2_nospill (void)
bitmap_iterator bi;
unsigned int j;
- if (group == clear_alias_group)
- continue;
-
memset (group->offset_map_n, 0, sizeof (int) * group->offset_map_size_n);
memset (group->offset_map_p, 0, sizeof (int) * group->offset_map_size_p);
bitmap_clear (group->group_kill);
@@ -2946,7 +2767,7 @@ get_bitmap_index (group_info *group_info, HOST_WIDE_INT offset)
may be NULL. */
static void
-scan_stores_nospill (store_info *store_info, bitmap gen, bitmap kill)
+scan_stores (store_info *store_info, bitmap gen, bitmap kill)
{
while (store_info)
{
@@ -2969,35 +2790,11 @@ scan_stores_nospill (store_info *store_info, bitmap gen, bitmap kill)
}
-/* Process the STORE_INFOs into the bitmaps into GEN and KILL. KILL
- may be NULL. */
-
-static void
-scan_stores_spill (store_info *store_info, bitmap gen, bitmap kill)
-{
- while (store_info)
- {
- if (store_info->alias_set)
- {
- int index = get_bitmap_index (clear_alias_group,
- store_info->alias_set);
- if (index != 0)
- {
- bitmap_set_bit (gen, index);
- if (kill)
- bitmap_clear_bit (kill, index);
- }
- }
- store_info = store_info->next;
- }
-}
-
-
/* Process the READ_INFOs into the bitmaps into GEN and KILL. KILL
may be NULL. */
static void
-scan_reads_nospill (insn_info_t insn_info, bitmap gen, bitmap kill)
+scan_reads (insn_info_t insn_info, bitmap gen, bitmap kill)
{
read_info_t read_info = insn_info->read_rec;
int i;
@@ -3087,30 +2884,6 @@ scan_reads_nospill (insn_info_t insn_info, bitmap gen, bitmap kill)
}
}
-/* Process the READ_INFOs into the bitmaps into GEN and KILL. KILL
- may be NULL. */
-
-static void
-scan_reads_spill (read_info_t read_info, bitmap gen, bitmap kill)
-{
- while (read_info)
- {
- if (read_info->alias_set)
- {
- int index = get_bitmap_index (clear_alias_group,
- read_info->alias_set);
- if (index != 0)
- {
- if (kill)
- bitmap_set_bit (kill, index);
- bitmap_clear_bit (gen, index);
- }
- }
-
- read_info = read_info->next;
- }
-}
-
/* Return the insn in BB_INFO before the first wild read or if there
are no wild reads in the block, return the last insn. */
@@ -3149,16 +2922,12 @@ find_insn_before_first_wild_read (bb_info_t bb_info)
anything that happens is hidden by the wild read. */
static void
-dse_step3_scan (bool for_spills, basic_block bb)
+dse_step3_scan (basic_block bb)
{
bb_info_t bb_info = bb_table[bb->index];
insn_info_t insn_info;
- if (for_spills)
- /* There are no wild reads in the spill case. */
- insn_info = bb_info->last_insn;
- else
- insn_info = find_insn_before_first_wild_read (bb_info);
+ insn_info = find_insn_before_first_wild_read (bb_info);
/* In the spill case or in the no_spill case if there is no wild
read in the block, we will need a kill set. */
@@ -3179,17 +2948,8 @@ dse_step3_scan (bool for_spills, basic_block bb)
this phase. */
if (insn_info->insn && INSN_P (insn_info->insn))
{
- /* Process the read(s) last. */
- if (for_spills)
- {
- scan_stores_spill (insn_info->store_rec, bb_info->gen, bb_info->kill);
- scan_reads_spill (insn_info->read_rec, bb_info->gen, bb_info->kill);
- }
- else
- {
- scan_stores_nospill (insn_info->store_rec, bb_info->gen, bb_info->kill);
- scan_reads_nospill (insn_info, bb_info->gen, bb_info->kill);
- }
+ scan_stores (insn_info->store_rec, bb_info->gen, bb_info->kill);
+ scan_reads (insn_info, bb_info->gen, bb_info->kill);
}
insn_info = insn_info->prev_insn;
@@ -3244,7 +3004,7 @@ mark_reachable_blocks (sbitmap unreachable_blocks, basic_block bb)
/* Build the transfer functions for the function. */
static void
-dse_step3 (bool for_spills)
+dse_step3 ()
{
basic_block bb;
sbitmap unreachable_blocks = sbitmap_alloc (last_basic_block_for_fn (cfun));
@@ -3267,7 +3027,7 @@ dse_step3 (bool for_spills)
else if (bb->index == EXIT_BLOCK)
dse_step3_exit_block_scan (bb_info);
else
- dse_step3_scan (for_spills, bb);
+ dse_step3_scan (bb);
if (EDGE_COUNT (bb->succs) == 0)
mark_reachable_blocks (unreachable_blocks, bb);
@@ -3468,7 +3228,7 @@ dse_step4 (void)
static void
-dse_step5_nospill (void)
+dse_step5 (void)
{
basic_block bb;
FOR_EACH_BB_FN (bb, cfun)
@@ -3503,27 +3263,21 @@ dse_step5_nospill (void)
while (!store_info->is_set)
store_info = store_info->next;
- if (store_info->alias_set)
- deleted = false;
- else
+ HOST_WIDE_INT i;
+ group_info *group_info = rtx_group_vec[store_info->group_id];
+
+ for (i = store_info->begin; i < store_info->end; i++)
{
- HOST_WIDE_INT i;
- group_info *group_info
- = rtx_group_vec[store_info->group_id];
+ int index = get_bitmap_index (group_info, i);
- for (i = store_info->begin; i < store_info->end; i++)
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "i = %d, index = %d\n", (int)i, index);
+ if (index == 0 || !bitmap_bit_p (v, index))
{
- int index = get_bitmap_index (group_info, i);
-
if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "i = %d, index = %d\n", (int)i, index);
- if (index == 0 || !bitmap_bit_p (v, index))
- {
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "failing at i = %d\n", (int)i);
- deleted = false;
- break;
- }
+ fprintf (dump_file, "failing at i = %d\n", (int)i);
+ deleted = false;
+ break;
}
}
if (deleted)
@@ -3544,7 +3298,7 @@ dse_step5_nospill (void)
&& INSN_P (insn_info->insn)
&& (!deleted))
{
- scan_stores_nospill (insn_info->store_rec, v, NULL);
+ scan_stores (insn_info->store_rec, v, NULL);
if (insn_info->wild_read)
{
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -3558,7 +3312,7 @@ dse_step5_nospill (void)
fprintf (dump_file, "regular read\n");
else if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "non-frame wild read\n");
- scan_reads_nospill (insn_info, v, NULL);
+ scan_reads (insn_info, v, NULL);
}
}
@@ -3667,23 +3421,23 @@ rest_of_handle_dse (void)
dse_step0 ();
dse_step1 ();
dse_step2_init ();
- if (dse_step2_nospill ())
+ if (dse_step2 ())
{
df_set_flags (DF_LR_RUN_DCE);
df_analyze ();
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "doing global processing\n");
- dse_step3 (false);
+ dse_step3 ();
dse_step4 ();
- dse_step5_nospill ();
+ dse_step5 ();
}
dse_step6 ();
dse_step7 ();
if (dump_file)
- fprintf (dump_file, "dse: local deletions = %d, global deletions = %d, spill deletions = %d\n",
- locally_deleted, globally_deleted, spill_deleted);
+ fprintf (dump_file, "dse: local deletions = %d, global deletions = %d\n",
+ locally_deleted, globally_deleted);
/* DSE can eliminate potentially-trapping MEMs.
Remove any EH edges associated with them. */
diff --git a/gcc/explow.c b/gcc/explow.c
index 249318f44b5..e0ce201b86b 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -259,12 +259,14 @@ break_out_memory_refs (rtx x)
which way). We take advantage of the fact that pointers are not allowed to
overflow by commuting arithmetic operations over conversions so that address
arithmetic insns can be used. IN_CONST is true if this conversion is inside
- a CONST. */
+ a CONST. NO_EMIT is true if no insns should be emitted, and instead
+ it should return NULL if it can't be simplified without emitting insns. */
-static rtx
+rtx
convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED,
rtx x, addr_space_t as ATTRIBUTE_UNUSED,
- bool in_const ATTRIBUTE_UNUSED)
+ bool in_const ATTRIBUTE_UNUSED,
+ bool no_emit ATTRIBUTE_UNUSED)
{
#ifndef POINTERS_EXTEND_UNSIGNED
gcc_assert (GET_MODE (x) == to_mode || GET_MODE (x) == VOIDmode);
@@ -310,19 +312,16 @@ convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED,
temp = gen_rtx_LABEL_REF (to_mode, LABEL_REF_LABEL (x));
LABEL_REF_NONLOCAL_P (temp) = LABEL_REF_NONLOCAL_P (x);
return temp;
- break;
case SYMBOL_REF:
temp = shallow_copy_rtx (x);
PUT_MODE (temp, to_mode);
return temp;
- break;
case CONST:
- return gen_rtx_CONST (to_mode,
- convert_memory_address_addr_space_1
- (to_mode, XEXP (x, 0), as, true));
- break;
+ temp = convert_memory_address_addr_space_1 (to_mode, XEXP (x, 0), as,
+ true, no_emit);
+ return temp ? gen_rtx_CONST (to_mode, temp) : temp;
case PLUS:
case MULT:
@@ -338,18 +337,25 @@ convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED,
&& CONST_INT_P (XEXP (x, 1))
&& ((in_const && POINTERS_EXTEND_UNSIGNED != 0)
|| XEXP (x, 1) == convert_memory_address_addr_space_1
- (to_mode, XEXP (x, 1), as, in_const)
+ (to_mode, XEXP (x, 1), as, in_const,
+ no_emit)
|| POINTERS_EXTEND_UNSIGNED < 0)))
- return gen_rtx_fmt_ee (GET_CODE (x), to_mode,
- convert_memory_address_addr_space_1
- (to_mode, XEXP (x, 0), as, in_const),
- XEXP (x, 1));
+ {
+ temp = convert_memory_address_addr_space_1 (to_mode, XEXP (x, 0),
+ as, in_const, no_emit);
+ return (temp ? gen_rtx_fmt_ee (GET_CODE (x), to_mode,
+ temp, XEXP (x, 1))
+ : temp);
+ }
break;
default:
break;
}
+ if (no_emit)
+ return NULL_RTX;
+
return convert_modes (to_mode, from_mode,
x, POINTERS_EXTEND_UNSIGNED);
#endif /* defined(POINTERS_EXTEND_UNSIGNED) */
@@ -364,7 +370,7 @@ convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED,
rtx
convert_memory_address_addr_space (machine_mode to_mode, rtx x, addr_space_t as)
{
- return convert_memory_address_addr_space_1 (to_mode, x, as, false);
+ return convert_memory_address_addr_space_1 (to_mode, x, as, false, false);
}
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 788ecc3a6b7..0f4bf7eca6b 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -8338,6 +8338,20 @@ pointer_may_wrap_p (tree base, tree offset, HOST_WIDE_INT bitpos)
return total.to_uhwi () > (unsigned HOST_WIDE_INT) size;
}
+/* Return a positive integer when the symbol DECL is known to have
+ a nonzero address, zero when it's known not to (e.g., it's a weak
+ symbol), and a negative integer when the symbol is not yet in the
+ symbol table and so whether or not its address is zero is unknown. */
+static int
+maybe_nonzero_address (tree decl)
+{
+ if (DECL_P (decl) && decl_in_symtab_p (decl))
+ if (struct symtab_node *symbol = symtab_node::get_create (decl))
+ return symbol->nonzero_address ();
+
+ return -1;
+}
+
/* Subroutine of fold_binary. This routine performs all of the
transformations that are common to the equality/inequality
operators (EQ_EXPR and NE_EXPR) and the ordering operators
@@ -8638,6 +8652,39 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
base1 = build_fold_addr_expr_loc (loc, base1);
return fold_build2_loc (loc, code, type, base0, base1);
}
+ /* Comparison between an ordinary (non-weak) symbol and a null
+ pointer can be eliminated since such symbols must have a non
+ null address. In C, relational expressions between pointers
+ to objects and null pointers are undefined. The results
+ below follow the C++ rules with the additional property that
+ every object pointer compares greater than a null pointer.
+ */
+ else if (DECL_P (base0)
+ && maybe_nonzero_address (base0) > 0
+ /* Avoid folding references to struct members at offset 0 to
+ prevent tests like '&ptr->firstmember == 0' from getting
+ eliminated. When ptr is null, although the -> expression
+ is strictly speaking invalid, GCC retains it as a matter
+ of QoI. See PR c/44555. */
+ && (offset0 == NULL_TREE && bitpos0 != 0)
+ /* The caller guarantees that when one of the arguments is
+ constant (i.e., null in this case) it is second. */
+ && integer_zerop (arg1))
+ {
+ switch (code)
+ {
+ case EQ_EXPR:
+ case LE_EXPR:
+ case LT_EXPR:
+ return boolean_false_node;
+ case GE_EXPR:
+ case GT_EXPR:
+ case NE_EXPR:
+ return boolean_true_node;
+ default:
+ gcc_unreachable ();
+ }
+ }
}
/* Transform comparisons of the form X +- C1 CMP Y +- C2 to
@@ -13508,16 +13555,9 @@ tree_single_nonzero_warnv_p (tree t, bool *strict_overflow_p)
/* For objects in symbol table check if we know they are non-zero.
Don't do anything for variables and functions before symtab is built;
it is quite possible that they will be declared weak later. */
- if (DECL_P (base) && decl_in_symtab_p (base))
- {
- struct symtab_node *symbol;
-
- symbol = symtab_node::get_create (base);
- if (symbol)
- return symbol->nonzero_address ();
- else
- return false;
- }
+ int nonzero_addr = maybe_nonzero_address (base);
+ if (nonzero_addr >= 0)
+ return nonzero_addr;
/* Function local objects are never NULL. */
if (DECL_P (base)
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5ab7d3ff285..e2f216d2bc6 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,42 @@
+2016-04-13 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ PR fortran/67039
+ * intrinsic.texi: Correct the documentation of pseudorandom
+ number intrinsics.
+
+2016-04-13 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ PR fortran/58000
+ * gfortran.texi: Document OPEN( ... NAME=) as not implemented
+ in GNU Fortran
+
+2016-04-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/68566
+ * array.c (match_array_element_spec): Add check for non-integer.
+ * simplify.c (gfc_simplify_reshape): If source shape is NULL return.
+
+2016-04-06 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c/70436
+ * openmp.c (gfc_find_omp_udr): Add explicit braces to resolve a
+ future -Wparentheses warning.
+
+2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org>
+
+ PR fortran/67538
+ * resolve.c (resolve_allocate_expr): Emit error message when no
+ array spec and no array valued source= expression is given in an
+ F2008 allocate() for an array to allocate.
+
+2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org>
+
+ PR fortran/65795
+ * trans-array.c (gfc_array_allocate): When the array is a coarray,
+ do not nullyfing its allocatable components in array_allocate, because
+ the nullify missed the array ref and nullifies the wrong component.
+ Cosmetics.
+
2016-03-29 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/70397
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index 2fc9dfaffdb..1430e80251d 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -421,10 +421,15 @@ match_array_element_spec (gfc_array_spec *as)
if (!gfc_expr_check_typed (*upper, gfc_current_ns, false))
return AS_UNKNOWN;
- if ((*upper)->expr_type == EXPR_FUNCTION && (*upper)->ts.type == BT_UNKNOWN
- && (*upper)->symtree && strcmp ((*upper)->symtree->name, "null") == 0)
- {
- gfc_error ("Expecting a scalar INTEGER expression at %C");
+ if (((*upper)->expr_type == EXPR_CONSTANT
+ && (*upper)->ts.type != BT_INTEGER) ||
+ ((*upper)->expr_type == EXPR_FUNCTION
+ && (*upper)->ts.type == BT_UNKNOWN
+ && (*upper)->symtree
+ && strcmp ((*upper)->symtree->name, "null") == 0))
+ {
+ gfc_error ("Expecting a scalar INTEGER expression at %C, found %s",
+ gfc_basic_typename ((*upper)->ts.type));
return AS_UNKNOWN;
}
@@ -448,10 +453,15 @@ match_array_element_spec (gfc_array_spec *as)
if (!gfc_expr_check_typed (*upper, gfc_current_ns, false))
return AS_UNKNOWN;
- if ((*upper)->expr_type == EXPR_FUNCTION && (*upper)->ts.type == BT_UNKNOWN
- && (*upper)->symtree && strcmp ((*upper)->symtree->name, "null") == 0)
+ if (((*upper)->expr_type == EXPR_CONSTANT
+ && (*upper)->ts.type != BT_INTEGER) ||
+ ((*upper)->expr_type == EXPR_FUNCTION
+ && (*upper)->ts.type == BT_UNKNOWN
+ && (*upper)->symtree
+ && strcmp ((*upper)->symtree->name, "null") == 0))
{
- gfc_error ("Expecting a scalar INTEGER expression at %C");
+ gfc_error ("Expecting a scalar INTEGER expression at %C, found %s",
+ gfc_basic_typename ((*upper)->ts.type));
return AS_UNKNOWN;
}
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index 257ee7c4e80..2704bc54978 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -2148,6 +2148,7 @@ code that uses them running with the GNU Fortran compiler.
@c * Omitted arguments in procedure call::
* Alternate complex function syntax::
* Volatile COMMON blocks::
+* OPEN( ... NAME=)::
@end menu
@@ -2355,6 +2356,19 @@ invalid standard Fortran syntax and is not supported by
+@node OPEN( ... NAME=)
+@subsection @code{OPEN( ... NAME=)}
+@cindex @code{NAM}
+
+Some Fortran compilers, including @command{g77}, let the user declare
+@code{OPEN( ... NAME=)}. This is
+invalid standard Fortran syntax and is not supported by
+@command{gfortran}. @code{OPEN( ... NAME=)} should be replaced
+with @code{OPEN( ... FILE=)}.
+
+
+
+@c ---------------------------------------------------------------------
@c ---------------------------------------------------------------------
@c Mixed-Language Programming
@c ---------------------------------------------------------------------
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index f9760f6a3ab..88406301d9f 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -12628,10 +12628,12 @@ Does not return anything.
See @code{RAND} and @code{IRAND} for examples.
@item @emph{Notes}:
-The Fortran 2003 standard specifies the intrinsic @code{RANDOM_SEED} to
-initialize the pseudo-random numbers generator and @code{RANDOM_NUMBER}
-to generate pseudo-random numbers. Please note that in
-GNU Fortran, these two sets of intrinsics (@code{RAND},
+The Fortran standard specifies the intrinsic subroutines
+@code{RANDOM_SEED} to initialize the pseudo-random number
+generator and @code{RANDOM_NUMBER} to generate pseudo-random numbers.
+These subroutines should be used in new codes.
+
+Please note that in GNU Fortran, these two sets of intrinsics (@code{RAND},
@code{IRAND} and @code{SRAND} on the one hand, @code{RANDOM_NUMBER} and
@code{RANDOM_SEED} on the other hand) access two independent
pseudo-random number generators.
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index a6c39cda694..0dd1a921370 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -175,24 +175,26 @@ gfc_find_omp_udr (gfc_namespace *ns, const char *name, gfc_typespec *ts)
st = gfc_find_symtree (ns->omp_udr_root, name);
if (st != NULL)
- for (omp_udr = st->n.omp_udr; omp_udr; omp_udr = omp_udr->next)
- if (ts == NULL)
- return omp_udr;
- else if (gfc_compare_types (&omp_udr->ts, ts))
- {
- if (ts->type == BT_CHARACTER)
- {
- if (omp_udr->ts.u.cl->length == NULL)
- return omp_udr;
- if (ts->u.cl->length == NULL)
- continue;
- if (gfc_compare_expr (omp_udr->ts.u.cl->length,
- ts->u.cl->length,
- INTRINSIC_EQ) != 0)
- continue;
- }
+ {
+ for (omp_udr = st->n.omp_udr; omp_udr; omp_udr = omp_udr->next)
+ if (ts == NULL)
return omp_udr;
- }
+ else if (gfc_compare_types (&omp_udr->ts, ts))
+ {
+ if (ts->type == BT_CHARACTER)
+ {
+ if (omp_udr->ts.u.cl->length == NULL)
+ return omp_udr;
+ if (ts->u.cl->length == NULL)
+ continue;
+ if (gfc_compare_expr (omp_udr->ts.u.cl->length,
+ ts->u.cl->length,
+ INTRINSIC_EQ) != 0)
+ continue;
+ }
+ return omp_udr;
+ }
+ }
/* Don't escape an interface block. */
if (ns && !ns->has_import_set
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 55ab2ecfceb..f5cd588308a 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -7217,7 +7217,15 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code, bool *array_alloc_wo_spec)
if (!gfc_notify_std (GFC_STD_F2008, "Array specification required "
"in ALLOCATE statement at %L", &e->where))
goto failure;
- *array_alloc_wo_spec = true;
+ if (code->expr3->rank != 0)
+ *array_alloc_wo_spec = true;
+ else
+ {
+ gfc_error ("Array specification or array-valued SOURCE= "
+ "expression required in ALLOCATE statement at %L",
+ &e->where);
+ goto failure;
+ }
}
else
{
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 12a8f32ea01..a63101072f1 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -5163,6 +5163,9 @@ gfc_simplify_reshape (gfc_expr *source, gfc_expr *shape_exp,
|| !is_constant_array_expr (order_exp))
return NULL;
+ if (source->shape == NULL)
+ return NULL;
+
/* Proceed with simplification, unpacking the array. */
mpz_init (index);
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 649b80fec84..825dfb822af 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -5550,8 +5550,8 @@ gfc_array_allocate (gfc_se * se, gfc_expr * expr, tree status, tree errmsg,
else
gfc_add_expr_to_block (&se->pre, set_descriptor);
- if ((expr->ts.type == BT_DERIVED)
- && expr->ts.u.derived->attr.alloc_comp)
+ if (expr->ts.type == BT_DERIVED && expr->ts.u.derived->attr.alloc_comp
+ && !coarray)
{
tmp = gfc_nullify_alloc_comp (expr->ts.u.derived, se->expr,
ref->u.ar.as->rank);
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index c4587d7bf77..d8cb9fa3bbb 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -999,10 +999,27 @@ try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx_insn *def_insn,
making a new one if one does not already exist. */
if (set_reg_equal)
{
- if (dump_file)
- fprintf (dump_file, " Setting REG_EQUAL note\n");
+ /* If there are any paradoxical SUBREGs, don't add REG_EQUAL note,
+ because the bits in there can be anything and so might not
+ match the REG_EQUAL note content. See PR70574. */
+ subrtx_var_iterator::array_type array;
+ FOR_EACH_SUBRTX_VAR (iter, array, *loc, NONCONST)
+ {
+ rtx x = *iter;
+ if (SUBREG_P (x) && paradoxical_subreg_p (x))
+ {
+ set_reg_equal = false;
+ break;
+ }
+ }
- note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (new_rtx));
+ if (set_reg_equal)
+ {
+ if (dump_file)
+ fprintf (dump_file, " Setting REG_EQUAL note\n");
+
+ note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (new_rtx));
+ }
}
}
@@ -1300,14 +1317,19 @@ forward_propagate_and_simplify (df_ref use, rtx_insn *def_insn, rtx def_set)
that isn't mentioned in USE_SET, as the note would be invalid
otherwise. We also don't want to install a note if we are merely
propagating a pseudo since verifying that this pseudo isn't dead
- is a pain; moreover such a note won't help anything. */
+ is a pain; moreover such a note won't help anything.
+ If the use is a paradoxical subreg, make sure we don't add a
+ REG_EQUAL note for it, because it is not equivalent, it is one
+ possible value for it, but we can't rely on it holding that value.
+ See PR70574. */
set_reg_equal = (note == NULL_RTX
&& REG_P (SET_DEST (use_set))
&& !REG_P (src)
&& !(GET_CODE (src) == SUBREG
&& REG_P (SUBREG_REG (src)))
&& !reg_mentioned_p (SET_DEST (use_set),
- SET_SRC (use_set)));
+ SET_SRC (use_set))
+ && !paradoxical_subreg_p (DF_REF_REG (use)));
}
if (GET_MODE (*loc) == VOIDmode)
diff --git a/gcc/gimplify-me.c b/gcc/gimplify-me.c
index c80a4ff459d..28e467b990e 100644
--- a/gcc/gimplify-me.c
+++ b/gcc/gimplify-me.c
@@ -299,7 +299,8 @@ gimple_regimplify_operands (gimple *stmt, gimple_stmt_iterator *gsi_p)
if (need_temp)
{
tree temp = create_tmp_reg (TREE_TYPE (lhs));
- if (gimple_in_ssa_p (cfun))
+ if (gimple_in_ssa_p (cfun)
+ && is_gimple_reg_type (TREE_TYPE (lhs)))
temp = make_ssa_name (temp);
gimple_set_lhs (stmt, temp);
post_stmt = gimple_build_assign (lhs, temp);
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index b9757db4c89..99c9760f85f 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4164,7 +4164,7 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
}
/* Vector types use CONSTRUCTOR all the way through gimple
- compilation as a general initializer. */
+ compilation as a general initializer. */
FOR_EACH_VEC_SAFE_ELT (elts, ix, ce)
{
enum gimplify_status tret;
@@ -4172,6 +4172,10 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
fb_rvalue);
if (tret == GS_ERROR)
ret = GS_ERROR;
+ else if (TREE_STATIC (ctor)
+ && !initializer_constant_valid_p (ce->value,
+ TREE_TYPE (ce->value)))
+ TREE_STATIC (ctor) = 0;
}
if (!is_gimple_reg (TREE_OPERAND (*expr_p, 0)))
TREE_OPERAND (*expr_p, 1) = get_formal_tmp_var (ctor, pre_p);
@@ -7742,6 +7746,8 @@ gimplify_adjust_omp_clauses_1 (splay_tree_node n, void *data)
&& (flags & GOVD_WRITTEN) == 0
&& omp_shared_to_firstprivate_optimizable_decl_p (decl))
OMP_CLAUSE_SHARED_READONLY (clause) = 1;
+ else if (code == OMP_CLAUSE_FIRSTPRIVATE && (flags & GOVD_EXPLICIT) == 0)
+ OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (clause) = 1;
else if (code == OMP_CLAUSE_MAP && (flags & GOVD_MAP_0LEN_ARRAY) != 0)
{
tree nc = build_omp_clause (input_location, OMP_CLAUSE_MAP);
@@ -7985,6 +7991,34 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, gimple_seq body, tree *list_p,
break;
}
decl = OMP_CLAUSE_DECL (c);
+ /* Data clasues associated with acc parallel reductions must be
+ compatible with present_or_copy. Warn and adjust the clause
+ if that is not the case. */
+ if (ctx->region_type == ORT_ACC_PARALLEL)
+ {
+ tree t = DECL_P (decl) ? decl : TREE_OPERAND (decl, 0);
+ n = NULL;
+
+ if (DECL_P (t))
+ n = splay_tree_lookup (ctx->variables, (splay_tree_key) t);
+
+ if (n && (n->value & GOVD_REDUCTION))
+ {
+ enum gomp_map_kind kind = OMP_CLAUSE_MAP_KIND (c);
+
+ OMP_CLAUSE_MAP_IN_REDUCTION (c) = 1;
+ if ((kind & GOMP_MAP_TOFROM) != GOMP_MAP_TOFROM
+ && kind != GOMP_MAP_FORCE_PRESENT
+ && kind != GOMP_MAP_POINTER)
+ {
+ warning_at (OMP_CLAUSE_LOCATION (c), 0,
+ "incompatible data clause with reduction "
+ "on %qE; promoting to present_or_copy",
+ DECL_NAME (t));
+ OMP_CLAUSE_SET_MAP_KIND (c, GOMP_MAP_TOFROM);
+ }
+ }
+ }
if (!DECL_P (decl))
{
if ((ctx->region_type & ORT_TARGET) != 0
@@ -8116,6 +8150,33 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, gimple_seq body, tree *list_p,
case OMP_CLAUSE_REDUCTION:
decl = OMP_CLAUSE_DECL (c);
+ /* OpenACC reductions need a present_or_copy data clause.
+ Add one if necessary. Error is the reduction is private. */
+ if (ctx->region_type == ORT_ACC_PARALLEL)
+ {
+ n = splay_tree_lookup (ctx->variables, (splay_tree_key) decl);
+ if (n->value & (GOVD_PRIVATE | GOVD_FIRSTPRIVATE))
+ error_at (OMP_CLAUSE_LOCATION (c), "invalid private "
+ "reduction on %qE", DECL_NAME (decl));
+ else if ((n->value & GOVD_MAP) == 0)
+ {
+ tree next = OMP_CLAUSE_CHAIN (c);
+ tree nc = build_omp_clause (UNKNOWN_LOCATION, OMP_CLAUSE_MAP);
+ OMP_CLAUSE_SET_MAP_KIND (nc, GOMP_MAP_TOFROM);
+ OMP_CLAUSE_DECL (nc) = decl;
+ OMP_CLAUSE_CHAIN (c) = nc;
+ lang_hooks.decls.omp_finish_clause (nc, pre_p);
+ while (1)
+ {
+ OMP_CLAUSE_MAP_IN_REDUCTION (nc) = 1;
+ if (OMP_CLAUSE_CHAIN (nc) == NULL)
+ break;
+ nc = OMP_CLAUSE_CHAIN (nc);
+ }
+ OMP_CLAUSE_CHAIN (nc) = next;
+ n->value |= GOVD_MAP;
+ }
+ }
if (DECL_P (decl)
&& omp_shared_to_firstprivate_optimizable_decl_p (decl))
omp_mark_stores (gimplify_omp_ctxp->outer_context, decl);
@@ -9876,64 +9937,66 @@ gimplify_omp_ordered (tree expr, gimple_seq body)
tree sink_c = NULL_TREE;
if (gimplify_omp_ctxp)
- for (c = OMP_ORDERED_CLAUSES (expr); c; c = OMP_CLAUSE_CHAIN (c))
- if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
- && gimplify_omp_ctxp->loop_iter_var.is_empty ()
- && (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK
- || OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE))
- {
- error_at (OMP_CLAUSE_LOCATION (c),
- "%<ordered%> construct with %<depend%> clause must be "
- "closely nested inside a loop with %<ordered%> clause "
- "with a parameter");
- failures++;
- }
- else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
- && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK)
- {
- bool fail = false;
- for (decls = OMP_CLAUSE_DECL (c), i = 0;
- decls && TREE_CODE (decls) == TREE_LIST;
- decls = TREE_CHAIN (decls), ++i)
- if (i >= gimplify_omp_ctxp->loop_iter_var.length () / 2)
- continue;
- else if (TREE_VALUE (decls)
- != gimplify_omp_ctxp->loop_iter_var[2 * i])
+ {
+ for (c = OMP_ORDERED_CLAUSES (expr); c; c = OMP_CLAUSE_CHAIN (c))
+ if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
+ && gimplify_omp_ctxp->loop_iter_var.is_empty ()
+ && (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK
+ || OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE))
+ {
+ error_at (OMP_CLAUSE_LOCATION (c),
+ "%<ordered%> construct with %<depend%> clause must be "
+ "closely nested inside a loop with %<ordered%> clause "
+ "with a parameter");
+ failures++;
+ }
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
+ && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK)
+ {
+ bool fail = false;
+ for (decls = OMP_CLAUSE_DECL (c), i = 0;
+ decls && TREE_CODE (decls) == TREE_LIST;
+ decls = TREE_CHAIN (decls), ++i)
+ if (i >= gimplify_omp_ctxp->loop_iter_var.length () / 2)
+ continue;
+ else if (TREE_VALUE (decls)
+ != gimplify_omp_ctxp->loop_iter_var[2 * i])
+ {
+ error_at (OMP_CLAUSE_LOCATION (c),
+ "variable %qE is not an iteration "
+ "of outermost loop %d, expected %qE",
+ TREE_VALUE (decls), i + 1,
+ gimplify_omp_ctxp->loop_iter_var[2 * i]);
+ fail = true;
+ failures++;
+ }
+ else
+ TREE_VALUE (decls)
+ = gimplify_omp_ctxp->loop_iter_var[2 * i + 1];
+ if (!fail && i != gimplify_omp_ctxp->loop_iter_var.length () / 2)
+ {
+ error_at (OMP_CLAUSE_LOCATION (c),
+ "number of variables in %<depend(sink)%> "
+ "clause does not match number of "
+ "iteration variables");
+ failures++;
+ }
+ sink_c = c;
+ }
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
+ && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE)
+ {
+ if (source_c)
{
error_at (OMP_CLAUSE_LOCATION (c),
- "variable %qE is not an iteration "
- "of outermost loop %d, expected %qE",
- TREE_VALUE (decls), i + 1,
- gimplify_omp_ctxp->loop_iter_var[2 * i]);
- fail = true;
+ "more than one %<depend(source)%> clause on an "
+ "%<ordered%> construct");
failures++;
}
else
- TREE_VALUE (decls)
- = gimplify_omp_ctxp->loop_iter_var[2 * i + 1];
- if (!fail && i != gimplify_omp_ctxp->loop_iter_var.length () / 2)
- {
- error_at (OMP_CLAUSE_LOCATION (c),
- "number of variables in %<depend(sink)%> "
- "clause does not match number of "
- "iteration variables");
- failures++;
- }
- sink_c = c;
- }
- else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
- && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE)
- {
- if (source_c)
- {
- error_at (OMP_CLAUSE_LOCATION (c),
- "more than one %<depend(source)%> clause on an "
- "%<ordered%> construct");
- failures++;
- }
- else
- source_c = c;
- }
+ source_c = c;
+ }
+ }
if (source_c && sink_c)
{
error_at (OMP_CLAUSE_LOCATION (source_c),
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 07ae4d0f00c..ce20dad142f 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-3de822d11255d439fac9717897b017aae2de18c2
+ff29ea8e4e69eb94958aef4388da09a61b2b52b6
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c
index 8dd5dc8bb84..88609c08de9 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -2439,7 +2439,7 @@ copy_cond_phi_args (gphi *phi, gphi *new_phi, vec<tree> iv_map, bool postpone)
fprintf (dump_file, "\n");
}
gsi_insert_earliest (stmts);
- new_phi_args [i] = new_name;
+ new_phi_args[i] = new_expr;
continue;
}
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index b62789f84c6..22a09a1782f 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -672,7 +672,7 @@ pdr_add_memory_accesses (isl_map *acc, dr_info &dri)
aff = extract_affine (scop, afn,
isl_space_domain (isl_map_get_space (acc)));
- acc = set_index (acc, i + 1, aff);
+ acc = set_index (acc, nb_subscripts - i , aff);
}
return isl_map_coalesce (acc);
diff --git a/gcc/hsa-brig.c b/gcc/hsa-brig.c
index 018b7be12fb..a943e379f55 100644
--- a/gcc/hsa-brig.c
+++ b/gcc/hsa-brig.c
@@ -1577,10 +1577,6 @@ emit_switch_insn (hsa_insn_sbr *sbr)
brig_code.add (&repr, sizeof (repr));
brig_insn_count++;
-
- /* Emit jump to default label. */
- hsa_bb *hbb = hsa_bb_for_bb (sbr->m_default_bb);
- emit_unconditional_jump (&hbb->m_label_ref);
}
/* Emit a HSA convert instruction and all necessary directives, schedule
diff --git a/gcc/hsa-dump.c b/gcc/hsa-dump.c
index 71b971234d4..985caca24ab 100644
--- a/gcc/hsa-dump.c
+++ b/gcc/hsa-dump.c
@@ -920,9 +920,6 @@ dump_hsa_insn_1 (FILE *f, hsa_insn_basic *insn, int *indent)
if (i != sbr->m_jump_table.length () - 1)
fprintf (f, ", ");
}
-
- fprintf (f, "] /* default: BB %i */",
- hsa_bb_for_bb (sbr->m_default_bb)->m_index);
}
else if (is_a <hsa_insn_arg_block *> (insn))
{
diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c
index bc95c5c1955..5baf6073e3b 100644
--- a/gcc/hsa-gen.c
+++ b/gcc/hsa-gen.c
@@ -1515,7 +1515,7 @@ hsa_insn_br::operator new (size_t)
hsa_insn_sbr::hsa_insn_sbr (hsa_op_reg *index, unsigned jump_count)
: hsa_insn_basic (1, BRIG_OPCODE_SBR, BRIG_TYPE_B1, index),
- m_width (BRIG_WIDTH_1), m_jump_table (vNULL), m_default_bb (NULL),
+ m_width (BRIG_WIDTH_1), m_jump_table (vNULL),
m_label_code_list (new hsa_op_code_list (jump_count))
{
}
@@ -3436,11 +3436,48 @@ get_switch_size (gswitch *s)
static void
gen_hsa_insns_for_switch_stmt (gswitch *s, hsa_bb *hbb)
{
+ gimple_stmt_iterator it = gsi_for_stmt (s);
+ gsi_prev (&it);
+
+ /* Create preambule that verifies that index - lowest_label >= 0. */
+ edge e = split_block (hbb->m_bb, gsi_stmt (it));
+ e->flags &= ~EDGE_FALLTHRU;
+ e->flags |= EDGE_TRUE_VALUE;
+
function *func = DECL_STRUCT_FUNCTION (current_function_decl);
tree index_tree = gimple_switch_index (s);
tree lowest = get_switch_low (s);
+ tree highest = get_switch_high (s);
hsa_op_reg *index = hsa_cfun->reg_for_gimple_ssa (index_tree);
+
+ hsa_op_reg *cmp1_reg = new hsa_op_reg (BRIG_TYPE_B1);
+ hsa_op_immed *cmp1_immed = new hsa_op_immed (lowest);
+ hbb->append_insn (new hsa_insn_cmp (BRIG_COMPARE_GE, cmp1_reg->m_type,
+ cmp1_reg, index, cmp1_immed));
+
+ hsa_op_reg *cmp2_reg = new hsa_op_reg (BRIG_TYPE_B1);
+ hsa_op_immed *cmp2_immed = new hsa_op_immed (highest);
+ hbb->append_insn (new hsa_insn_cmp (BRIG_COMPARE_LE, cmp2_reg->m_type,
+ cmp2_reg, index, cmp2_immed));
+
+ hsa_op_reg *cmp_reg = new hsa_op_reg (BRIG_TYPE_B1);
+ hbb->append_insn (new hsa_insn_basic (3, BRIG_OPCODE_AND, cmp_reg->m_type,
+ cmp_reg, cmp1_reg, cmp2_reg));
+
+ hbb->append_insn (new hsa_insn_br (cmp_reg));
+
+ tree default_label = gimple_switch_default_label (s);
+ basic_block default_label_bb = label_to_block_fn (func,
+ CASE_LABEL (default_label));
+
+ make_edge (e->src, default_label_bb, EDGE_FALSE_VALUE);
+
+ hsa_cfun->m_modified_cfg = true;
+
+ /* Basic block with the SBR instruction. */
+ hbb = hsa_init_new_bb (e->dest);
+
hsa_op_reg *sub_index = new hsa_op_reg (index->m_type);
hbb->append_insn (new hsa_insn_basic (3, BRIG_OPCODE_SUB, sub_index->m_type,
sub_index, index,
@@ -3452,11 +3489,6 @@ gen_hsa_insns_for_switch_stmt (gswitch *s, hsa_bb *hbb)
unsigned HOST_WIDE_INT size = tree_to_uhwi (get_switch_size (s));
hsa_insn_sbr *sbr = new hsa_insn_sbr (sub_index, size + 1);
- tree default_label = gimple_switch_default_label (s);
- basic_block default_label_bb = label_to_block_fn (func,
- CASE_LABEL (default_label));
-
- sbr->m_default_bb = default_label_bb;
/* Prepare array with default label destination. */
for (unsigned HOST_WIDE_INT i = 0; i <= size; i++)
diff --git a/gcc/hsa.h b/gcc/hsa.h
index 77ef6f184bd..1b57a3c1c99 100644
--- a/gcc/hsa.h
+++ b/gcc/hsa.h
@@ -564,9 +564,6 @@ public:
/* Jump table. */
vec <basic_block> m_jump_table;
- /* Default label basic block. */
- basic_block m_default_bb;
-
/* Code list for label references. */
hsa_op_code_list *m_label_code_list;
diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index 069495105bf..2cf018bdf39 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -2438,10 +2438,14 @@ maybe_record_node (vec <cgraph_node *> &nodes,
{
gcc_assert (!target_node->global.inlined_to);
gcc_assert (target_node->real_symbol_p ());
+ /* When sanitizing, do not assume that __cxa_pure_virtual is not called
+ by valid program. */
+ if (flag_sanitize & SANITIZE_UNREACHABLE)
+ ;
/* Only add pure virtual if it is the only possible target. This way
we will preserve the diagnostics about pure virtual called in many
cases without disabling optimization in other. */
- if (pure_virtual)
+ else if (pure_virtual)
{
if (nodes.length ())
return;
@@ -3374,8 +3378,7 @@ possible_polymorphic_call_target_p (tree otr_type,
bool final;
if (TREE_CODE (TREE_TYPE (n->decl)) == FUNCTION_TYPE
- && ((fcode = DECL_FUNCTION_CODE (n->decl))
- == BUILT_IN_UNREACHABLE
+ && ((fcode = DECL_FUNCTION_CODE (n->decl)) == BUILT_IN_UNREACHABLE
|| fcode == BUILT_IN_TRAP))
return true;
diff --git a/gcc/ipa-polymorphic-call.c b/gcc/ipa-polymorphic-call.c
index 0ebbd4ae66d..56f334471de 100644
--- a/gcc/ipa-polymorphic-call.c
+++ b/gcc/ipa-polymorphic-call.c
@@ -479,16 +479,12 @@ contains_type_p (tree outer_type, HOST_WIDE_INT offset,
}
-/* Return a FUNCTION_DECL if BLOCK represents a constructor or destructor.
+/* Return a FUNCTION_DECL if FN represent a constructor or destructor.
If CHECK_CLONES is true, also check for clones of ctor/dtors. */
tree
-inlined_polymorphic_ctor_dtor_block_p (tree block, bool check_clones)
+polymorphic_ctor_dtor_p (tree fn, bool check_clones)
{
- tree fn = block_ultimate_origin (block);
- if (fn == NULL || TREE_CODE (fn) != FUNCTION_DECL)
- return NULL_TREE;
-
if (TREE_CODE (TREE_TYPE (fn)) != METHOD_TYPE
|| (!DECL_CXX_CONSTRUCTOR_P (fn) && !DECL_CXX_DESTRUCTOR_P (fn)))
{
@@ -510,6 +506,19 @@ inlined_polymorphic_ctor_dtor_block_p (tree block, bool check_clones)
return fn;
}
+/* Return a FUNCTION_DECL if BLOCK represents a constructor or destructor.
+ If CHECK_CLONES is true, also check for clones of ctor/dtors. */
+
+tree
+inlined_polymorphic_ctor_dtor_block_p (tree block, bool check_clones)
+{
+ tree fn = block_ultimate_origin (block);
+ if (fn == NULL || TREE_CODE (fn) != FUNCTION_DECL)
+ return NULL_TREE;
+
+ return polymorphic_ctor_dtor_p (fn, check_clones);
+}
+
/* We know that the instance is stored in variable or parameter
(not dynamically allocated) and we want to disprove the fact
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 892bf46d53c..3b3a419a3e3 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -1956,10 +1956,25 @@ pass_nothrow::execute (function *)
}
node->set_nothrow_flag (true);
+
+ bool cfg_changed = false;
+ if (self_recursive_p (node))
+ FOR_EACH_BB_FN (this_block, cfun)
+ if (gimple *g = last_stmt (this_block))
+ if (is_gimple_call (g))
+ {
+ tree callee_t = gimple_call_fndecl (g);
+ if (callee_t
+ && recursive_call_p (current_function_decl, callee_t)
+ && maybe_clean_eh_stmt (g)
+ && gimple_purge_dead_eh_edges (this_block))
+ cfg_changed = true;
+ }
+
if (dump_file)
fprintf (dump_file, "Function found to be nothrow: %s\n",
current_function_name ());
- return 0;
+ return cfg_changed ? TODO_cleanup_cfg : 0;
}
} // anon namespace
diff --git a/gcc/ipa-utils.h b/gcc/ipa-utils.h
index 839c6c51444..58d2de7e3c5 100644
--- a/gcc/ipa-utils.h
+++ b/gcc/ipa-utils.h
@@ -70,6 +70,7 @@ void dump_possible_polymorphic_call_targets (FILE *, tree, HOST_WIDE_INT,
bool possible_polymorphic_call_target_p (tree, HOST_WIDE_INT,
const ipa_polymorphic_call_context &,
struct cgraph_node *);
+tree polymorphic_ctor_dtor_p (tree, bool);
tree inlined_polymorphic_ctor_dtor_block_p (tree, bool);
bool decl_maybe_in_construction_p (tree, tree, gimple *, tree);
tree vtable_pointer_value_to_binfo (const_tree);
diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c
index 8198a3da175..e4c3f7c5110 100644
--- a/gcc/ipa-visibility.c
+++ b/gcc/ipa-visibility.c
@@ -452,6 +452,84 @@ update_visibility_by_resolution_info (symtab_node * node)
}
}
+/* Try to get rid of weakref. */
+
+static void
+optimize_weakref (symtab_node *node)
+{
+#ifdef ASM_OUTPUT_DEF
+ bool aliases_supported = true;
+#else
+ bool aliases_supported = false;
+#endif
+ bool strip_weakref = false;
+ bool static_alias = false;
+
+ gcc_assert (node->weakref);
+
+ /* Weakrefs with no target defined can not be optimized. */
+ if (!node->analyzed)
+ return;
+ symtab_node *target = node->get_alias_target ();
+
+ /* Weakrefs to weakrefs can be optimized only if target can be. */
+ if (target->weakref)
+ optimize_weakref (target);
+ if (target->weakref)
+ return;
+
+ /* If we have definition of weakref's target and we know it binds locally,
+ we can turn weakref to static alias. */
+ if (target->definition && decl_binds_to_current_def_p (target->decl)
+ && aliases_supported)
+ strip_weakref = static_alias = true;
+ /* Otherwise we can turn weakref into transparent alias. This transformation
+ may break asm statements which directly refers to symbol name and expect
+ GNU as to translate it via .weakref directive. So do not optimize when
+ DECL_PRESERVED is set and .weakref is supported. */
+ else if ((!DECL_PRESERVE_P (target->decl)
+ || IDENTIFIER_TRANSPARENT_ALIAS (DECL_ASSEMBLER_NAME (node->decl)))
+ && !DECL_WEAK (target->decl)
+ && !DECL_EXTERNAL (target->decl)
+ && ((target->definition && !target->can_be_discarded_p ())
+ || target->resolution != LDPR_UNDEF))
+ strip_weakref = true;
+ if (!strip_weakref)
+ return;
+ node->weakref = false;
+ IDENTIFIER_TRANSPARENT_ALIAS (DECL_ASSEMBLER_NAME (node->decl)) = 0;
+ TREE_CHAIN (DECL_ASSEMBLER_NAME (node->decl)) = NULL_TREE;
+ DECL_ATTRIBUTES (node->decl) = remove_attribute ("weakref",
+ DECL_ATTRIBUTES
+ (node->decl));
+
+ if (dump_file)
+ fprintf (dump_file, "Optimizing weakref %s %s\n",
+ node->name(),
+ static_alias ? "as static alias" : "as transparent alias");
+
+ if (static_alias)
+ {
+ /* make_decl_local will shortcircuit if it doesn't see TREE_PUBLIC.
+ be sure it really clears the WEAK flag. */
+ TREE_PUBLIC (node->decl) = true;
+ node->make_decl_local ();
+ node->forced_by_abi = false;
+ node->resolution = LDPR_PREVAILING_DEF_IRONLY;
+ node->externally_visible = false;
+ gcc_assert (!DECL_WEAK (node->decl));
+ node->transparent_alias = false;
+ }
+ else
+ {
+ symtab->change_decl_assembler_name
+ (node->decl, DECL_ASSEMBLER_NAME (node->get_alias_target ()->decl));
+ node->transparent_alias = true;
+ node->copy_visibility_from (target);
+ }
+ gcc_assert (node->alias);
+}
+
/* Decide on visibility of all symbols. */
static unsigned int
@@ -594,6 +672,8 @@ function_and_variable_visibility (bool whole_program)
}
update_visibility_by_resolution_info (node);
+ if (node->weakref)
+ optimize_weakref (node);
}
FOR_EACH_DEFINED_FUNCTION (node)
{
@@ -660,6 +740,8 @@ function_and_variable_visibility (bool whole_program)
|| ! (ADDR_SPACE_GENERIC_P
(TYPE_ADDR_SPACE (TREE_TYPE (vnode->decl))))))
DECL_COMMON (vnode->decl) = 0;
+ if (vnode->weakref)
+ optimize_weakref (vnode);
}
FOR_EACH_DEFINED_VARIABLE (vnode)
{
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 4883eefc532..c00afe766cf 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -2914,6 +2914,7 @@ process_address_1 (int nop, bool check_only_p,
{
struct address_info ad;
rtx new_reg;
+ HOST_WIDE_INT scale;
rtx op = *curr_id->operand_loc[nop];
const char *constraint = curr_static_id->operand[nop].constraint;
enum constraint_num cn = lookup_constraint (constraint);
@@ -3161,14 +3162,14 @@ process_address_1 (int nop, bool check_only_p,
*ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg),
new_reg, *ad.index);
}
- else if (get_index_scale (&ad) == 1)
+ else if ((scale = get_index_scale (&ad)) == 1)
{
/* The last transformation to one reg will be made in
curr_insn_transform function. */
end_sequence ();
return false;
}
- else
+ else if (scale != 0)
{
/* base + scale * index => base + new_reg,
case (1) above.
@@ -3180,6 +3181,17 @@ process_address_1 (int nop, bool check_only_p,
*ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg),
*ad.base_term, new_reg);
}
+ else
+ {
+ enum reg_class cl = base_reg_class (ad.mode, ad.as,
+ SCRATCH, SCRATCH);
+ rtx addr = *ad.inner;
+
+ new_reg = lra_create_new_reg (Pmode, NULL_RTX, cl, "addr");
+ /* addr => new_base. */
+ lra_emit_move (new_reg, addr);
+ *ad.inner = new_reg;
+ }
*before = get_insns ();
end_sequence ();
return true;
diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c
index 5709ef13e8d..7e5f63785a0 100644
--- a/gcc/lra-spills.c
+++ b/gcc/lra-spills.c
@@ -528,11 +528,12 @@ spill_pseudos (void)
if (removed_pseudo_p)
{
lra_assert (DEBUG_INSN_P (insn));
- lra_set_insn_deleted (insn);
+ lra_invalidate_insn_data (insn);
+ INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
if (lra_dump_file != NULL)
fprintf (lra_dump_file,
- "Debug insn #%u is deleted as containing removed pseudo\n",
- INSN_UID (insn));
+ "Debug insn #%u is reset because it referenced "
+ "removed pseudo\n", INSN_UID (insn));
}
bitmap_and_compl_into (df_get_live_in (bb), &spilled_pseudos);
bitmap_and_compl_into (df_get_live_out (bb), &spilled_pseudos);
diff --git a/gcc/match.pd b/gcc/match.pd
index c0ed305ed0e..75aa6013b2e 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -1554,7 +1554,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
/* A truncation to an unsigned type (a zero-extension) should be
canonicalized as bitwise and of a mask. */
- (if (final_int && inter_int && inside_int
+ (if (GIMPLE /* PR70366: doing this in GENERIC breaks -Wconversion. */
+ && final_int && inter_int && inside_int
&& final_prec == inside_prec
&& final_prec > inter_prec
&& inter_unsignedp)
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 3fd6eb304b6..aa3721edc9d 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -2122,7 +2122,8 @@ scan_sharing_clauses (tree clauses, omp_context *ctx,
else
install_var_field (decl, true, 3, ctx,
base_pointers_restrict);
- if (is_gimple_omp_offloaded (ctx->stmt))
+ if (is_gimple_omp_offloaded (ctx->stmt)
+ && !OMP_CLAUSE_MAP_IN_REDUCTION (c))
install_var_local (decl, ctx);
}
}
@@ -2379,19 +2380,21 @@ scan_sharing_clauses (tree clauses, omp_context *ctx,
gcc_checking_assert (!scan_array_reductions
|| !is_gimple_omp_oacc (ctx->stmt));
if (scan_array_reductions)
- for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c))
- if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION
- && OMP_CLAUSE_REDUCTION_PLACEHOLDER (c))
- {
- scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c), ctx);
- scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (c), ctx);
- }
- else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
- && OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c))
- scan_omp (&OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c), ctx);
- else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
- && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c))
- scan_omp (&OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c), ctx);
+ {
+ for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c))
+ if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION
+ && OMP_CLAUSE_REDUCTION_PLACEHOLDER (c))
+ {
+ scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c), ctx);
+ scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (c), ctx);
+ }
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
+ && OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c))
+ scan_omp (&OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c), ctx);
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
+ && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c))
+ scan_omp (&OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c), ctx);
+ }
}
/* Create a new name for omp child function. Returns an identifier. If
@@ -4837,7 +4840,7 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
gimplify_assign (ptr, x, ilist);
}
}
- else if (is_reference (var) && !is_oacc_parallel (ctx))
+ else if (is_reference (var))
{
/* For references that are being privatized for Fortran,
allocate new backing storage for the new pointer
@@ -5573,7 +5576,8 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner,
tree orig = OMP_CLAUSE_DECL (c);
tree var = maybe_lookup_decl (orig, ctx);
tree ref_to_res = NULL_TREE;
- tree incoming, outgoing;
+ tree incoming, outgoing, v1, v2, v3;
+ bool is_private = false;
enum tree_code rcode = OMP_CLAUSE_REDUCTION_CODE (c);
if (rcode == MINUS_EXPR)
@@ -5586,7 +5590,6 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner,
if (!var)
var = orig;
- gcc_assert (!is_reference (var));
incoming = outgoing = var;
@@ -5622,22 +5625,38 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner,
for (; cls; cls = OMP_CLAUSE_CHAIN (cls))
if (OMP_CLAUSE_CODE (cls) == OMP_CLAUSE_REDUCTION
&& orig == OMP_CLAUSE_DECL (cls))
- goto has_outer_reduction;
+ {
+ incoming = outgoing = lookup_decl (orig, probe);
+ goto has_outer_reduction;
+ }
+ else if ((OMP_CLAUSE_CODE (cls) == OMP_CLAUSE_FIRSTPRIVATE
+ || OMP_CLAUSE_CODE (cls) == OMP_CLAUSE_PRIVATE)
+ && orig == OMP_CLAUSE_DECL (cls))
+ {
+ is_private = true;
+ goto do_lookup;
+ }
}
do_lookup:
/* This is the outermost construct with this reduction,
see if there's a mapping for it. */
if (gimple_code (outer->stmt) == GIMPLE_OMP_TARGET
- && maybe_lookup_field (orig, outer))
+ && maybe_lookup_field (orig, outer) && !is_private)
{
ref_to_res = build_receiver_ref (orig, false, outer);
if (is_reference (orig))
ref_to_res = build_simple_mem_ref (ref_to_res);
+ tree type = TREE_TYPE (var);
+ if (POINTER_TYPE_P (type))
+ type = TREE_TYPE (type);
+
outgoing = var;
- incoming = omp_reduction_init_op (loc, rcode, TREE_TYPE (var));
+ incoming = omp_reduction_init_op (loc, rcode, type);
}
+ else if (ctx->outer)
+ incoming = outgoing = lookup_decl (orig, ctx->outer);
else
incoming = outgoing = orig;
@@ -5647,6 +5666,37 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner,
if (!ref_to_res)
ref_to_res = integer_zero_node;
+ if (is_reference (orig))
+ {
+ tree type = TREE_TYPE (var);
+ const char *id = IDENTIFIER_POINTER (DECL_NAME (var));
+
+ if (!inner)
+ {
+ tree x = create_tmp_var (TREE_TYPE (type), id);
+ gimplify_assign (var, build_fold_addr_expr (x), fork_seq);
+ }
+
+ v1 = create_tmp_var (type, id);
+ v2 = create_tmp_var (type, id);
+ v3 = create_tmp_var (type, id);
+
+ gimplify_assign (v1, var, fork_seq);
+ gimplify_assign (v2, var, fork_seq);
+ gimplify_assign (v3, var, fork_seq);
+
+ var = build_simple_mem_ref (var);
+ v1 = build_simple_mem_ref (v1);
+ v2 = build_simple_mem_ref (v2);
+ v3 = build_simple_mem_ref (v3);
+ outgoing = build_simple_mem_ref (outgoing);
+
+ if (!TREE_CONSTANT (incoming))
+ incoming = build_simple_mem_ref (incoming);
+ }
+ else
+ v1 = v2 = v3 = var;
+
/* Determine position in reduction buffer, which may be used
by target. */
enum machine_mode mode = TYPE_MODE (TREE_TYPE (var));
@@ -5676,20 +5726,20 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner,
= build_call_expr_internal_loc (loc, IFN_GOACC_REDUCTION,
TREE_TYPE (var), 6, init_code,
unshare_expr (ref_to_res),
- var, level, op, off);
+ v1, level, op, off);
tree fini_call
= build_call_expr_internal_loc (loc, IFN_GOACC_REDUCTION,
TREE_TYPE (var), 6, fini_code,
unshare_expr (ref_to_res),
- var, level, op, off);
+ v2, level, op, off);
tree teardown_call
= build_call_expr_internal_loc (loc, IFN_GOACC_REDUCTION,
TREE_TYPE (var), 6, teardown_code,
- ref_to_res, var, level, op, off);
+ ref_to_res, v3, level, op, off);
- gimplify_assign (var, setup_call, &before_fork);
- gimplify_assign (var, init_call, &after_fork);
- gimplify_assign (var, fini_call, &before_join);
+ gimplify_assign (v1, setup_call, &before_fork);
+ gimplify_assign (v2, init_call, &after_fork);
+ gimplify_assign (v3, fini_call, &before_join);
gimplify_assign (outgoing, teardown_call, &after_join);
}
@@ -5931,9 +5981,6 @@ lower_reduction_clauses (tree clauses, gimple_seq *stmt_seqp, omp_context *ctx)
}
}
- if (is_gimple_omp_oacc (ctx->stmt))
- return;
-
stmt = gimple_build_call (builtin_decl_explicit (BUILT_IN_GOMP_ATOMIC_START),
0);
gimple_seq_add_stmt (stmt_seqp, stmt);
@@ -6107,8 +6154,15 @@ lower_send_clauses (tree clauses, gimple_seq *ilist, gimple_seq *olist,
switch (OMP_CLAUSE_CODE (c))
{
- case OMP_CLAUSE_PRIVATE:
case OMP_CLAUSE_FIRSTPRIVATE:
+ if (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c)
+ && !by_ref
+ && is_task_ctx (ctx))
+ TREE_NO_WARNING (var) = 1;
+ do_in = true;
+ break;
+
+ case OMP_CLAUSE_PRIVATE:
case OMP_CLAUSE_COPYIN:
case OMP_CLAUSE__LOOPTEMP_:
do_in = true;
@@ -15676,7 +15730,6 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
location_t loc = gimple_location (stmt);
bool offloaded, data_region;
unsigned int map_cnt = 0;
- bool has_depend = false;
offloaded = is_gimple_omp_offloaded (stmt);
switch (gimple_omp_target_kind (stmt))
@@ -15711,7 +15764,6 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
dep_bind = gimple_build_bind (NULL, NULL, make_node (BLOCK));
lower_depend_clauses (gimple_omp_target_clauses_ptr (stmt),
&dep_ilist, &dep_olist);
- has_depend = true;
}
tgt_bind = NULL;
@@ -15820,7 +15872,10 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
if (!maybe_lookup_field (var, ctx))
continue;
- if (offloaded)
+ /* Don't remap oacc parallel reduction variables, because the
+ intermediate result must be local to each gang. */
+ if (offloaded && !(OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
+ && OMP_CLAUSE_MAP_IN_REDUCTION (c)))
{
x = build_receiver_ref (var, true, ctx);
tree new_var = lookup_decl (var, ctx);
@@ -16068,7 +16123,12 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
{
gcc_assert (is_gimple_omp_oacc (ctx->stmt));
if (!is_reference (var))
- var = build_fold_addr_expr (var);
+ {
+ if (is_gimple_reg (var)
+ && OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c))
+ TREE_NO_WARNING (var) = 1;
+ var = build_fold_addr_expr (var);
+ }
else
talign = TYPE_ALIGN_UNIT (TREE_TYPE (TREE_TYPE (ovar)));
gimplify_assign (x, var, &ilist);
@@ -16083,7 +16143,16 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
|| map_kind == GOMP_MAP_POINTER
|| map_kind == GOMP_MAP_TO_PSET
|| map_kind == GOMP_MAP_FORCE_DEVICEPTR)
- gimplify_assign (avar, var, &ilist);
+ {
+ /* If we need to initialize a temporary
+ with VAR because it is not addressable, and
+ the variable hasn't been initialized yet, then
+ we'll get a warning for the store to avar.
+ Don't warn in that case, the mapping might
+ be implicit. */
+ TREE_NO_WARNING (var) = 1;
+ gimplify_assign (avar, var, &ilist);
+ }
avar = build_fold_addr_expr (avar);
gimplify_assign (x, avar, &ilist);
if ((GOMP_MAP_COPY_FROM_P (map_kind)
@@ -16209,49 +16278,16 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
type = TREE_TYPE (ovar);
if (is_reference (ovar))
type = TREE_TYPE (type);
- bool use_firstprivate_int, force_addr;
- use_firstprivate_int = false;
- force_addr = false;
if ((INTEGRAL_TYPE_P (type)
&& TYPE_PRECISION (type) <= POINTER_SIZE)
|| TREE_CODE (type) == POINTER_TYPE)
- use_firstprivate_int = true;
- if (has_depend)
- {
- if (is_reference (var))
- use_firstprivate_int = false;
- else if (is_gimple_reg (var))
- {
- if (DECL_HAS_VALUE_EXPR_P (var))
- {
- tree v = get_base_address (var);
- if (DECL_P (v) && TREE_ADDRESSABLE (v))
- {
- use_firstprivate_int = false;
- force_addr = true;
- }
- else
- switch (TREE_CODE (v))
- {
- case INDIRECT_REF:
- case MEM_REF:
- use_firstprivate_int = false;
- force_addr = true;
- break;
- default:
- break;
- }
- }
- }
- else
- use_firstprivate_int = false;
- }
- if (use_firstprivate_int)
{
tkind = GOMP_MAP_FIRSTPRIVATE_INT;
tree t = var;
if (is_reference (var))
t = build_simple_mem_ref (var);
+ else if (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c))
+ TREE_NO_WARNING (var) = 1;
if (TREE_CODE (type) != POINTER_TYPE)
t = fold_convert (pointer_sized_int_node, t);
t = fold_convert (TREE_TYPE (x), t);
@@ -16259,10 +16295,12 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
}
else if (is_reference (var))
gimplify_assign (x, var, &ilist);
- else if (!force_addr && is_gimple_reg (var))
+ else if (is_gimple_reg (var))
{
tree avar = create_tmp_var (TREE_TYPE (var));
mark_addressable (avar);
+ if (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c))
+ TREE_NO_WARNING (var) = 1;
gimplify_assign (avar, var, &ilist);
avar = build_fold_addr_expr (avar);
gimplify_assign (x, avar, &ilist);
@@ -16395,40 +16433,9 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
type = TREE_TYPE (var);
if (is_reference (var))
type = TREE_TYPE (type);
- bool use_firstprivate_int;
- use_firstprivate_int = false;
if ((INTEGRAL_TYPE_P (type)
&& TYPE_PRECISION (type) <= POINTER_SIZE)
|| TREE_CODE (type) == POINTER_TYPE)
- use_firstprivate_int = true;
- if (has_depend)
- {
- tree v = lookup_decl_in_outer_ctx (var, ctx);
- if (is_reference (v))
- use_firstprivate_int = false;
- else if (is_gimple_reg (v))
- {
- if (DECL_HAS_VALUE_EXPR_P (v))
- {
- v = get_base_address (v);
- if (DECL_P (v) && TREE_ADDRESSABLE (v))
- use_firstprivate_int = false;
- else
- switch (TREE_CODE (v))
- {
- case INDIRECT_REF:
- case MEM_REF:
- use_firstprivate_int = false;
- break;
- default:
- break;
- }
- }
- }
- else
- use_firstprivate_int = false;
- }
- if (use_firstprivate_int)
{
x = build_receiver_ref (var, false, ctx);
if (TREE_CODE (type) != POINTER_TYPE)
@@ -18896,7 +18903,9 @@ simd_clone_adjust_argument_types (struct cgraph_node *node)
adjustments.create (args.length ());
unsigned i, j, veclen;
struct ipa_parm_adjustment adj;
- for (i = 0; i < node->simdclone->nargs; ++i)
+ struct cgraph_simd_clone *sc = node->simdclone;
+
+ for (i = 0; i < sc->nargs; ++i)
{
memset (&adj, 0, sizeof (adj));
tree parm = args[i];
@@ -18904,10 +18913,10 @@ simd_clone_adjust_argument_types (struct cgraph_node *node)
adj.base_index = i;
adj.base = parm;
- node->simdclone->args[i].orig_arg = node->definition ? parm : NULL_TREE;
- node->simdclone->args[i].orig_type = parm_type;
+ sc->args[i].orig_arg = node->definition ? parm : NULL_TREE;
+ sc->args[i].orig_type = parm_type;
- switch (node->simdclone->args[i].arg_type)
+ switch (sc->args[i].arg_type)
{
default:
/* No adjustment necessary for scalar arguments. */
@@ -18916,29 +18925,29 @@ simd_clone_adjust_argument_types (struct cgraph_node *node)
case SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP:
case SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_VARIABLE_STEP:
if (node->definition)
- node->simdclone->args[i].simd_array
+ sc->args[i].simd_array
= create_tmp_simd_array (IDENTIFIER_POINTER (DECL_NAME (parm)),
TREE_TYPE (parm_type),
- node->simdclone->simdlen);
+ sc->simdlen);
adj.op = IPA_PARM_OP_COPY;
break;
case SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP:
case SIMD_CLONE_ARG_TYPE_LINEAR_VAL_VARIABLE_STEP:
case SIMD_CLONE_ARG_TYPE_VECTOR:
if (INTEGRAL_TYPE_P (parm_type) || POINTER_TYPE_P (parm_type))
- veclen = node->simdclone->vecsize_int;
+ veclen = sc->vecsize_int;
else
- veclen = node->simdclone->vecsize_float;
+ veclen = sc->vecsize_float;
veclen /= GET_MODE_BITSIZE (TYPE_MODE (parm_type));
- if (veclen > node->simdclone->simdlen)
- veclen = node->simdclone->simdlen;
+ if (veclen > sc->simdlen)
+ veclen = sc->simdlen;
adj.arg_prefix = "simd";
if (POINTER_TYPE_P (parm_type))
adj.type = build_vector_type (pointer_sized_int_node, veclen);
else
adj.type = build_vector_type (parm_type, veclen);
- node->simdclone->args[i].vector_type = adj.type;
- for (j = veclen; j < node->simdclone->simdlen; j += veclen)
+ sc->args[i].vector_type = adj.type;
+ for (j = veclen; j < sc->simdlen; j += veclen)
{
adjustments.safe_push (adj);
if (j == veclen)
@@ -18947,23 +18956,21 @@ simd_clone_adjust_argument_types (struct cgraph_node *node)
adj.op = IPA_PARM_OP_NEW;
adj.arg_prefix = "simd";
adj.base_index = i;
- adj.type = node->simdclone->args[i].vector_type;
+ adj.type = sc->args[i].vector_type;
}
}
if (node->definition)
- node->simdclone->args[i].simd_array
+ sc->args[i].simd_array
= create_tmp_simd_array (IDENTIFIER_POINTER (DECL_NAME (parm)),
- parm_type, node->simdclone->simdlen);
+ parm_type, sc->simdlen);
}
adjustments.safe_push (adj);
}
- if (node->simdclone->inbranch)
+ if (sc->inbranch)
{
- tree base_type
- = simd_clone_compute_base_data_type (node->simdclone->origin,
- node->simdclone);
+ tree base_type = simd_clone_compute_base_data_type (sc->origin, sc);
memset (&adj, 0, sizeof (adj));
adj.op = IPA_PARM_OP_NEW;
@@ -18971,31 +18978,41 @@ simd_clone_adjust_argument_types (struct cgraph_node *node)
adj.base_index = i;
if (INTEGRAL_TYPE_P (base_type) || POINTER_TYPE_P (base_type))
- veclen = node->simdclone->vecsize_int;
+ veclen = sc->vecsize_int;
else
- veclen = node->simdclone->vecsize_float;
+ veclen = sc->vecsize_float;
veclen /= GET_MODE_BITSIZE (TYPE_MODE (base_type));
- if (veclen > node->simdclone->simdlen)
- veclen = node->simdclone->simdlen;
- if (POINTER_TYPE_P (base_type))
+ if (veclen > sc->simdlen)
+ veclen = sc->simdlen;
+ if (sc->mask_mode != VOIDmode)
+ adj.type
+ = lang_hooks.types.type_for_mode (sc->mask_mode, 1);
+ else if (POINTER_TYPE_P (base_type))
adj.type = build_vector_type (pointer_sized_int_node, veclen);
else
adj.type = build_vector_type (base_type, veclen);
adjustments.safe_push (adj);
- for (j = veclen; j < node->simdclone->simdlen; j += veclen)
+ for (j = veclen; j < sc->simdlen; j += veclen)
adjustments.safe_push (adj);
/* We have previously allocated one extra entry for the mask. Use
it and fill it. */
- struct cgraph_simd_clone *sc = node->simdclone;
sc->nargs++;
+ if (sc->mask_mode != VOIDmode)
+ base_type = boolean_type_node;
if (node->definition)
{
sc->args[i].orig_arg
= build_decl (UNKNOWN_LOCATION, PARM_DECL, NULL, base_type);
- sc->args[i].simd_array
- = create_tmp_simd_array ("mask", base_type, sc->simdlen);
+ if (sc->mask_mode == VOIDmode)
+ sc->args[i].simd_array
+ = create_tmp_simd_array ("mask", base_type, sc->simdlen);
+ else if (veclen < sc->simdlen)
+ sc->args[i].simd_array
+ = create_tmp_simd_array ("mask", adj.type, sc->simdlen / veclen);
+ else
+ sc->args[i].simd_array = NULL_TREE;
}
sc->args[i].orig_type = base_type;
sc->args[i].arg_type = SIMD_CLONE_ARG_TYPE_MASK;
@@ -19063,6 +19080,27 @@ simd_clone_init_simd_arrays (struct cgraph_node *node,
node->simdclone->args[i].vector_arg = arg;
tree array = node->simdclone->args[i].simd_array;
+ if (node->simdclone->mask_mode != VOIDmode
+ && node->simdclone->args[i].arg_type == SIMD_CLONE_ARG_TYPE_MASK)
+ {
+ if (array == NULL_TREE)
+ continue;
+ unsigned int l
+ = tree_to_uhwi (TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (array))));
+ for (k = 0; k <= l; k++)
+ {
+ if (k)
+ {
+ arg = DECL_CHAIN (arg);
+ j++;
+ }
+ tree t = build4 (ARRAY_REF, TREE_TYPE (TREE_TYPE (array)),
+ array, size_int (k), NULL, NULL);
+ t = build2 (MODIFY_EXPR, TREE_TYPE (t), t, arg);
+ gimplify_and_add (t, &seq);
+ }
+ continue;
+ }
if (TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg)) == node->simdclone->simdlen)
{
tree ptype = build_pointer_type (TREE_TYPE (TREE_TYPE (array)));
@@ -19433,7 +19471,7 @@ simd_clone_adjust (struct cgraph_node *node)
e->probability = REG_BR_PROB_BASE;
gsi = gsi_last_bb (incr_bb);
gimple *g = gimple_build_assign (iter2, PLUS_EXPR, iter1,
- build_int_cst (unsigned_type_node, 1));
+ build_int_cst (unsigned_type_node, 1));
gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
/* Mostly annotate the loop for the vectorizer (the rest is done below). */
@@ -19449,21 +19487,68 @@ simd_clone_adjust (struct cgraph_node *node)
gimple_stmt_iterator gsi = gsi_last_bb (loop->header);
tree mask_array
= node->simdclone->args[node->simdclone->nargs - 1].simd_array;
- tree mask = make_ssa_name (TREE_TYPE (TREE_TYPE (mask_array)));
- tree aref = build4 (ARRAY_REF,
- TREE_TYPE (TREE_TYPE (mask_array)),
- mask_array, iter1,
- NULL, NULL);
- g = gimple_build_assign (mask, aref);
- gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
- int bitsize = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (aref)));
- if (!INTEGRAL_TYPE_P (TREE_TYPE (aref)))
+ tree mask;
+ if (node->simdclone->mask_mode != VOIDmode)
{
- aref = build1 (VIEW_CONVERT_EXPR,
- build_nonstandard_integer_type (bitsize, 0), mask);
- mask = make_ssa_name (TREE_TYPE (aref));
+ tree shift_cnt;
+ if (mask_array == NULL_TREE)
+ {
+ tree arg = node->simdclone->args[node->simdclone->nargs
+ - 1].vector_arg;
+ mask = get_or_create_ssa_default_def (cfun, arg);
+ shift_cnt = iter1;
+ }
+ else
+ {
+ tree maskt = TREE_TYPE (mask_array);
+ int c = tree_to_uhwi (TYPE_MAX_VALUE (TYPE_DOMAIN (maskt)));
+ c = node->simdclone->simdlen / (c + 1);
+ int s = exact_log2 (c);
+ gcc_assert (s > 0);
+ c--;
+ tree idx = make_ssa_name (TREE_TYPE (iter1));
+ g = gimple_build_assign (idx, RSHIFT_EXPR, iter1,
+ build_int_cst (NULL_TREE, s));
+ gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
+ mask = make_ssa_name (TREE_TYPE (TREE_TYPE (mask_array)));
+ tree aref = build4 (ARRAY_REF,
+ TREE_TYPE (TREE_TYPE (mask_array)),
+ mask_array, idx, NULL, NULL);
+ g = gimple_build_assign (mask, aref);
+ gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
+ shift_cnt = make_ssa_name (TREE_TYPE (iter1));
+ g = gimple_build_assign (shift_cnt, BIT_AND_EXPR, iter1,
+ build_int_cst (TREE_TYPE (iter1), c));
+ gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
+ }
+ g = gimple_build_assign (make_ssa_name (TREE_TYPE (mask)),
+ RSHIFT_EXPR, mask, shift_cnt);
+ gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
+ mask = gimple_assign_lhs (g);
+ g = gimple_build_assign (make_ssa_name (TREE_TYPE (mask)),
+ BIT_AND_EXPR, mask,
+ build_int_cst (TREE_TYPE (mask), 1));
+ gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
+ mask = gimple_assign_lhs (g);
+ }
+ else
+ {
+ mask = make_ssa_name (TREE_TYPE (TREE_TYPE (mask_array)));
+ tree aref = build4 (ARRAY_REF,
+ TREE_TYPE (TREE_TYPE (mask_array)),
+ mask_array, iter1, NULL, NULL);
g = gimple_build_assign (mask, aref);
gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
+ int bitsize = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (aref)));
+ if (!INTEGRAL_TYPE_P (TREE_TYPE (aref)))
+ {
+ aref = build1 (VIEW_CONVERT_EXPR,
+ build_nonstandard_integer_type (bitsize, 0),
+ mask);
+ mask = make_ssa_name (TREE_TYPE (aref));
+ g = gimple_build_assign (mask, aref);
+ gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
+ }
}
g = gimple_build_cond (EQ_EXPR, mask, build_zero_cst (TREE_TYPE (mask)),
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 4a5069f0193..33cc5ece974 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2016-04-08 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.pot: Regenerate.
+
2016-03-17 Joseph Myers <joseph@codesourcery.com>
* fr.po: Update.
diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot
index 7be3ce9ce98..586be7053c4 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: 2016-01-31 15:50+0000\n"
+"POT-Creation-Date: 2016-04-08 20:55+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"
@@ -88,54 +88,54 @@ msgstr ""
msgid "const/copy propagation disabled"
msgstr ""
-#: diagnostic.c:211
+#: diagnostic.c:212
#, c-format
msgid "%s: all warnings being treated as errors"
msgstr ""
-#: diagnostic.c:216
+#: diagnostic.c:217
#, c-format
msgid "%s: some warnings being treated as errors"
msgstr ""
-#: diagnostic.c:310 input.c:169 c-family/c-opts.c:1310 cp/error.c:1193
+#: diagnostic.c:292 input.c:169 c-family/c-opts.c:1310 cp/error.c:1193
#: fortran/cpp.c:576 fortran/error.c:998 fortran/error.c:1018
msgid "<built-in>"
msgstr ""
-#: diagnostic.c:433
+#: diagnostic.c:451
#, c-format
msgid "compilation terminated due to -Wfatal-errors.\n"
msgstr ""
-#: diagnostic.c:444
+#: diagnostic.c:462
#, c-format
msgid "compilation terminated due to -fmax-errors=%u.\n"
msgstr ""
-#: diagnostic.c:465
+#: diagnostic.c:483
#, c-format
msgid ""
"Please submit a full bug report,\n"
"with preprocessed source if appropriate.\n"
msgstr ""
-#: diagnostic.c:471
+#: diagnostic.c:489
#, c-format
msgid "See %s for instructions.\n"
msgstr ""
-#: diagnostic.c:480
+#: diagnostic.c:498
#, c-format
msgid "compilation terminated.\n"
msgstr ""
-#: diagnostic.c:759
+#: diagnostic.c:787
#, c-format
msgid "%s:%d: confused by earlier errors, bailing out\n"
msgstr ""
-#: diagnostic.c:1283
+#: diagnostic.c:1311
#, c-format
msgid "Internal compiler error: Error reporting routines re-entered.\n"
msgstr ""
@@ -188,13 +188,13 @@ msgstr ""
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3940 config/arc/arc.c:4714 config/i386/i386.c:15932
+#: final.c:3940 config/arc/arc.c:4817 config/i386/i386.c:15968
#: config/pdp11/pdp11.c:1691
#, c-format
msgid "floating constant misused"
msgstr ""
-#: final.c:3998 config/arc/arc.c:4786 config/i386/i386.c:16030
+#: final.c:3998 config/arc/arc.c:4889 config/i386/i386.c:16066
#: config/pdp11/pdp11.c:1732
#, c-format
msgid "invalid expression as operand"
@@ -536,39 +536,39 @@ msgid ""
"bugreport.\n"
msgstr ""
-#: gcc.c:7701
+#: gcc.c:7757
#, c-format
msgid "install: %s%s\n"
msgstr ""
-#: gcc.c:7704
+#: gcc.c:7760
#, c-format
msgid "programs: %s\n"
msgstr ""
-#: gcc.c:7706
+#: gcc.c:7762
#, c-format
msgid "libraries: %s\n"
msgstr ""
-#: gcc.c:7823
+#: gcc.c:7879
#, c-format
msgid ""
"\n"
"For bug reporting instructions, please see:\n"
msgstr ""
-#: gcc.c:7839 gcov-tool.c:525
+#: gcc.c:7895 gcov-tool.c:525
#, c-format
msgid "%s %s%s\n"
msgstr ""
-#: gcc.c:7842 gcov-tool.c:527 gcov.c:504 fortran/gfortranspec.c:280
+#: gcc.c:7898 gcov-tool.c:527 gcov.c:504 fortran/gfortranspec.c:280
#: java/jcf-dump.c:1229
msgid "(C)"
msgstr ""
-#: gcc.c:7843 fortran/gfortranspec.c:281 java/jcf-dump.c:1230
+#: gcc.c:7899 fortran/gfortranspec.c:281 java/jcf-dump.c:1230
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
@@ -576,7 +576,7 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:8148
+#: gcc.c:8204
#, c-format
msgid ""
"\n"
@@ -585,14 +585,14 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:8149
+#: gcc.c:8205
#, c-format
msgid ""
"Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n"
"\n"
msgstr ""
-#: gcc.c:9441
+#: gcc.c:9497
#, c-format
msgid ""
"Assembler options\n"
@@ -600,7 +600,7 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:9442
+#: gcc.c:9498
#, c-format
msgid ""
"Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n"
@@ -1077,7 +1077,7 @@ msgstr ""
msgid "GCSE disabled"
msgstr ""
-#: gimple-ssa-isolate-paths.c:440 c/c-typeck.c:9752
+#: gimple-ssa-isolate-paths.c:440 c/c-typeck.c:9765
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr ""
@@ -1180,11 +1180,11 @@ msgstr ""
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
-#: lra-assigns.c:1417 reload1.c:2111
+#: lra-assigns.c:1417 reload1.c:2089
msgid "this is the insn:"
msgstr ""
-#: lra-constraints.c:3493 reload.c:3830
+#: lra-constraints.c:3564 reload.c:3830
msgid "unable to generate reloads for:"
msgstr ""
@@ -1197,92 +1197,92 @@ msgstr ""
msgid "Uses of this option are diagnosed."
msgstr ""
-#: opts.c:1056
+#: opts.c:1061
#, c-format
msgid "default %d minimum %d maximum %d"
msgstr ""
-#: opts.c:1123
+#: opts.c:1128
#, c-format
msgid "Same as %s. Use the latter option instead."
msgstr ""
-#: opts.c:1131
+#: opts.c:1136
#, c-format
msgid "%s Same as %s."
msgstr ""
-#: opts.c:1202
+#: opts.c:1207
msgid "[default]"
msgstr ""
-#: opts.c:1213
+#: opts.c:1218
msgid "[enabled]"
msgstr ""
-#: opts.c:1213
+#: opts.c:1218
msgid "[disabled]"
msgstr ""
-#: opts.c:1232
+#: opts.c:1237
#, c-format
msgid " No options with the desired characteristics were found\n"
msgstr ""
-#: opts.c:1241
+#: opts.c:1246
#, c-format
msgid ""
" None found. Use --help=%s to show *all* the options supported by the %s "
"front-end.\n"
msgstr ""
-#: opts.c:1247
+#: opts.c:1252
#, c-format
msgid ""
" All options with the desired characteristics have already been displayed\n"
msgstr ""
-#: opts.c:1332
+#: opts.c:1337
msgid "The following options are target specific"
msgstr ""
-#: opts.c:1335
+#: opts.c:1340
msgid "The following options control compiler warning messages"
msgstr ""
-#: opts.c:1338
+#: opts.c:1343
msgid "The following options control optimizations"
msgstr ""
-#: opts.c:1341 opts.c:1380
+#: opts.c:1346 opts.c:1385
msgid "The following options are language-independent"
msgstr ""
-#: opts.c:1344
+#: opts.c:1349
msgid "The --param option recognizes the following as parameters"
msgstr ""
-#: opts.c:1350
+#: opts.c:1355
msgid "The following options are specific to just the language "
msgstr ""
-#: opts.c:1352
+#: opts.c:1357
msgid "The following options are supported by the language "
msgstr ""
-#: opts.c:1363
+#: opts.c:1368
msgid "The following options are not documented"
msgstr ""
-#: opts.c:1365
+#: opts.c:1370
msgid "The following options take separate arguments"
msgstr ""
-#: opts.c:1367
+#: opts.c:1372
msgid "The following options take joined arguments"
msgstr ""
-#: opts.c:1378
+#: opts.c:1383
msgid "The following options are language-related"
msgstr ""
@@ -1302,16 +1302,16 @@ msgid ""
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:6135
+#: reload1.c:6113
msgid "could not find a spill register"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:8029
+#: reload1.c:8009
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8790
+#: reload1.c:8770
msgid "failure trying to reload:"
msgstr ""
@@ -1323,16 +1323,16 @@ msgstr ""
msgid "insn does not satisfy its constraints:"
msgstr ""
-#: targhooks.c:1675
+#: targhooks.c:1679
#, c-format
msgid "created and used with differing settings of '%s'"
msgstr ""
-#: targhooks.c:1690
+#: targhooks.c:1694
msgid "created and used with different settings of -fpic"
msgstr ""
-#: targhooks.c:1692
+#: targhooks.c:1696
msgid "created and used with different settings of -fpie"
msgstr ""
@@ -1397,7 +1397,7 @@ msgstr ""
msgid "options enabled: "
msgstr ""
-#: tree-diagnostic.c:295 c/c-decl.c:5174 c/c-typeck.c:6798 cp/error.c:684
+#: tree-diagnostic.c:295 c/c-decl.c:5203 c/c-typeck.c:6812 cp/error.c:684
#: cp/error.c:992 c-family/c-pretty-print.c:408
#, gcc-internal-format
msgid "<anonymous>"
@@ -2591,59 +2591,71 @@ msgstr ""
#: params.def:1155
#, no-c-format
msgid ""
+"Maximum number of arguments a PHI may have before the FSM threader will not "
+"try to thread through its block."
+msgstr ""
+
+#: params.def:1160
+#, no-c-format
+msgid ""
"Scale factor to apply to the number of blocks in a threading path when "
"comparing to the number of (scaled) statements."
msgstr ""
-#: params.def:1160
+#: params.def:1165
#, no-c-format
msgid ""
"Maximum number of instructions to copy when duplicating blocks on a finite "
"state automaton jump thread path."
msgstr ""
-#: params.def:1165
+#: params.def:1170
#, no-c-format
msgid ""
"Maximum number of basic blocks on a finite state automaton jump thread path."
msgstr ""
-#: params.def:1170
+#: params.def:1175
#, no-c-format
msgid ""
"Maximum number of new jump thread paths to create for a finite state "
"automaton."
msgstr ""
-#: params.def:1175
+#: params.def:1180
#, no-c-format
msgid "Chunk size of omp schedule for loops parallelized by parloops."
msgstr ""
-#: params.def:1180
+#: params.def:1185
#, no-c-format
msgid ""
"Schedule type of omp schedule for loops parallelized by parloops (static, "
"dynamic, guided, auto, runtime)."
msgstr ""
-#: params.def:1187
+#: params.def:1192
#, no-c-format
msgid ""
"Maximum recursion depth allowed when querying a property of an SSA name."
msgstr ""
-#: params.def:1193
+#: params.def:1198
#, no-c-format
msgid ""
"Maximum number of insns in a basic block to consider for RTL if-conversion."
msgstr ""
-#: params.def:1199
+#: params.def:1204
#, no-c-format
msgid "Level of hsa debug stores verbosity"
msgstr ""
+#: params.def:1209
+#, no-c-format
+msgid "Maximum number of may-defs visited when devirtualizing speculatively"
+msgstr ""
+
#: c-family/c-format.c:417
msgid "format"
msgstr ""
@@ -2917,48 +2929,48 @@ msgstr ""
msgid "<command-line>"
msgstr ""
-#: config/aarch64/aarch64.c:4410 config/arm/arm.c:21889 config/arm/arm.c:21902
-#: config/arm/arm.c:21927 config/nios2/nios2.c:2642
+#: config/aarch64/aarch64.c:4451 config/arm/arm.c:21954 config/arm/arm.c:21967
+#: config/arm/arm.c:21992 config/nios2/nios2.c:2642
#, c-format
msgid "Unsupported operand for code '%c'"
msgstr ""
-#: config/aarch64/aarch64.c:4422 config/aarch64/aarch64.c:4438
-#: config/aarch64/aarch64.c:4451 config/aarch64/aarch64.c:4463
-#: config/aarch64/aarch64.c:4474 config/aarch64/aarch64.c:4497
-#: config/aarch64/aarch64.c:4550 config/aarch64/aarch64.c:4753
+#: config/aarch64/aarch64.c:4463 config/aarch64/aarch64.c:4479
+#: config/aarch64/aarch64.c:4492 config/aarch64/aarch64.c:4504
+#: config/aarch64/aarch64.c:4515 config/aarch64/aarch64.c:4538
+#: config/aarch64/aarch64.c:4591 config/aarch64/aarch64.c:4794
#, c-format
msgid "invalid operand for '%%%c'"
msgstr ""
-#: config/aarch64/aarch64.c:4517 config/aarch64/aarch64.c:4530
-#: config/aarch64/aarch64.c:4540
+#: config/aarch64/aarch64.c:4558 config/aarch64/aarch64.c:4571
+#: config/aarch64/aarch64.c:4581
#, c-format
msgid "incompatible floating point / vector register operand for '%%%c'"
msgstr ""
-#: config/aarch64/aarch64.c:4586 config/arm/arm.c:22434
+#: config/aarch64/aarch64.c:4627 config/arm/arm.c:22499
#, c-format
msgid "missing operand"
msgstr ""
-#: config/aarch64/aarch64.c:4648
+#: config/aarch64/aarch64.c:4689
#, c-format
msgid "invalid constant"
msgstr ""
-#: config/aarch64/aarch64.c:4651
+#: config/aarch64/aarch64.c:4692
#, c-format
msgid "invalid operand"
msgstr ""
-#: config/aarch64/aarch64.c:4764
+#: config/aarch64/aarch64.c:4805
#, c-format
msgid "invalid operand prefix '%%%c'"
msgstr ""
-#: config/alpha/alpha.c:5102 config/i386/i386.c:17104
-#: config/rs6000/rs6000.c:20267 config/sparc/sparc.c:8720
+#: config/alpha/alpha.c:5102 config/i386/i386.c:17140
+#: config/rs6000/rs6000.c:20265 config/sparc/sparc.c:8644
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
@@ -2974,18 +2986,18 @@ msgid "invalid %%r value"
msgstr ""
#: config/alpha/alpha.c:5200 config/ia64/ia64.c:5436
-#: config/rs6000/rs6000.c:19947 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:19945 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%R value"
msgstr ""
-#: config/alpha/alpha.c:5206 config/rs6000/rs6000.c:19867
+#: config/alpha/alpha.c:5206 config/rs6000/rs6000.c:19865
#: config/xtensa/xtensa.c:2324
#, c-format
msgid "invalid %%N value"
msgstr ""
-#: config/alpha/alpha.c:5214 config/rs6000/rs6000.c:19895
+#: config/alpha/alpha.c:5214 config/rs6000/rs6000.c:19893
#, c-format
msgid "invalid %%P value"
msgstr ""
@@ -3016,7 +3028,7 @@ msgid "invalid %%U value"
msgstr ""
#: config/alpha/alpha.c:5300 config/alpha/alpha.c:5311
-#: config/rs6000/rs6000.c:19955
+#: config/rs6000/rs6000.c:19953
#, c-format
msgid "invalid %%s value"
msgstr ""
@@ -3026,7 +3038,7 @@ msgstr ""
msgid "invalid %%C value"
msgstr ""
-#: config/alpha/alpha.c:5359 config/rs6000/rs6000.c:19731
+#: config/alpha/alpha.c:5359 config/rs6000/rs6000.c:19729
#, c-format
msgid "invalid %%E value"
msgstr ""
@@ -3037,7 +3049,7 @@ msgid "unknown relocation unspec"
msgstr ""
#: config/alpha/alpha.c:5393 config/cr16/cr16.c:1531
-#: config/rs6000/rs6000.c:20272 config/spu/spu.c:1446
+#: config/rs6000/rs6000.c:20270 config/spu/spu.c:1446
#, c-format
msgid "invalid %%xn code"
msgstr ""
@@ -3047,82 +3059,82 @@ msgstr ""
msgid "invalid operand address"
msgstr ""
-#: config/arc/arc.c:2863
+#: config/arc/arc.c:2966
#, c-format
msgid "invalid operand to %%Z code"
msgstr ""
-#: config/arc/arc.c:2871
+#: config/arc/arc.c:2974
#, c-format
msgid "invalid operand to %%z code"
msgstr ""
-#: config/arc/arc.c:2879
+#: config/arc/arc.c:2982
#, c-format
msgid "invalid operand to %%M code"
msgstr ""
-#: config/arc/arc.c:3028 config/m32r/m32r.c:2105
+#: config/arc/arc.c:3131 config/m32r/m32r.c:2105
#, c-format
msgid "invalid operand to %%R code"
msgstr ""
-#: config/arc/arc.c:3067 config/m32r/m32r.c:2128
+#: config/arc/arc.c:3170 config/m32r/m32r.c:2128
#, c-format
msgid "invalid operand to %%H/%%L code"
msgstr ""
-#: config/arc/arc.c:3115 config/m32r/m32r.c:2199
+#: config/arc/arc.c:3218 config/m32r/m32r.c:2199
#, c-format
msgid "invalid operand to %%U code"
msgstr ""
-#: config/arc/arc.c:3126
+#: config/arc/arc.c:3229
#, c-format
msgid "invalid operand to %%V code"
msgstr ""
-#: config/arc/arc.c:3183
+#: config/arc/arc.c:3286
#, c-format
msgid "invalid operand to %%O code"
msgstr ""
#. Unknown flag.
#. Undocumented flag.
-#: config/arc/arc.c:3209 config/epiphany/epiphany.c:1286
-#: config/m32r/m32r.c:2226 config/nds32/nds32.c:2291 config/sparc/sparc.c:8903
+#: config/arc/arc.c:3312 config/epiphany/epiphany.c:1286
+#: config/m32r/m32r.c:2226 config/nds32/nds32.c:2291 config/sparc/sparc.c:8827
#, c-format
msgid "invalid operand output code"
msgstr ""
-#: config/arc/arc.c:4780
+#: config/arc/arc.c:4883
#, c-format
msgid "invalid UNSPEC as operand: %d"
msgstr ""
-#: config/arm/arm.c:18957 config/arm/arm.c:18982 config/arm/arm.c:18992
-#: config/arm/arm.c:19001 config/arm/arm.c:19009
+#: config/arm/arm.c:19021 config/arm/arm.c:19046 config/arm/arm.c:19056
+#: config/arm/arm.c:19065 config/arm/arm.c:19073
#, c-format
msgid "invalid shift operand"
msgstr ""
-#: config/arm/arm.c:21765 config/arm/arm.c:21783
+#: config/arm/arm.c:21830 config/arm/arm.c:21848
#, c-format
msgid "predicated Thumb instruction"
msgstr ""
-#: config/arm/arm.c:21771
+#: config/arm/arm.c:21836
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr ""
-#: config/arm/arm.c:22004 config/arm/arm.c:22026 config/arm/arm.c:22036
-#: config/arm/arm.c:22046 config/arm/arm.c:22056 config/arm/arm.c:22095
-#: config/arm/arm.c:22113 config/arm/arm.c:22138 config/arm/arm.c:22153
-#: config/arm/arm.c:22180 config/arm/arm.c:22187 config/arm/arm.c:22205
-#: config/arm/arm.c:22212 config/arm/arm.c:22220 config/arm/arm.c:22241
-#: config/arm/arm.c:22248 config/arm/arm.c:22381 config/arm/arm.c:22388
-#: config/arm/arm.c:22415 config/arm/arm.c:22422 config/bfin/bfin.c:1436
+#: config/arm/arm.c:22069 config/arm/arm.c:22091 config/arm/arm.c:22101
+#: config/arm/arm.c:22111 config/arm/arm.c:22121 config/arm/arm.c:22160
+#: config/arm/arm.c:22178 config/arm/arm.c:22203 config/arm/arm.c:22218
+#: config/arm/arm.c:22245 config/arm/arm.c:22252 config/arm/arm.c:22270
+#: config/arm/arm.c:22277 config/arm/arm.c:22285 config/arm/arm.c:22306
+#: config/arm/arm.c:22313 config/arm/arm.c:22446 config/arm/arm.c:22453
+#: config/arm/arm.c:22480 config/arm/arm.c:22487 config/bfin/bfin.c:1436
#: config/bfin/bfin.c:1443 config/bfin/bfin.c:1450 config/bfin/bfin.c:1457
#: config/bfin/bfin.c:1466 config/bfin/bfin.c:1473 config/bfin/bfin.c:1480
#: config/bfin/bfin.c:1487
@@ -3130,89 +3142,89 @@ msgstr ""
msgid "invalid operand for code '%c'"
msgstr ""
-#: config/arm/arm.c:22108
+#: config/arm/arm.c:22173
#, c-format
msgid "instruction never executed"
msgstr ""
#. Former Maverick support, removed after GCC-4.7.
-#: config/arm/arm.c:22129
+#: config/arm/arm.c:22194
#, c-format
msgid "obsolete Maverick format code '%c'"
msgstr ""
-#: config/arm/arm.c:23548
+#: config/arm/arm.c:23613
msgid "function parameters cannot have __fp16 type"
msgstr ""
-#: config/arm/arm.c:23558
+#: config/arm/arm.c:23623
msgid "functions cannot return __fp16 type"
msgstr ""
-#: config/avr/avr.c:2117
+#: config/avr/avr.c:2127
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:2275
+#: config/avr/avr.c:2285
msgid "operands to %T/%t must be reg + const_int:"
msgstr ""
-#: config/avr/avr.c:2325 config/avr/avr.c:2392
+#: config/avr/avr.c:2335 config/avr/avr.c:2402
msgid "bad address, not an I/O address:"
msgstr ""
-#: config/avr/avr.c:2334
+#: config/avr/avr.c:2344
msgid "bad address, not a constant:"
msgstr ""
-#: config/avr/avr.c:2352 config/avr/avr.c:2359
+#: config/avr/avr.c:2362 config/avr/avr.c:2369
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:2366
+#: config/avr/avr.c:2376
msgid "bad address, not post_inc or pre_dec:"
msgstr ""
-#: config/avr/avr.c:2378
+#: config/avr/avr.c:2388
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:2411
+#: config/avr/avr.c:2421
#, c-format
msgid "Unsupported code '%c' for fixed-point:"
msgstr ""
-#: config/avr/avr.c:2419
+#: config/avr/avr.c:2429
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:3412 config/avr/avr.c:4342 config/avr/avr.c:4791
+#: config/avr/avr.c:3422 config/avr/avr.c:4352 config/avr/avr.c:4801
msgid "invalid insn:"
msgstr ""
-#: config/avr/avr.c:3466 config/avr/avr.c:3571 config/avr/avr.c:3629
-#: config/avr/avr.c:3675 config/avr/avr.c:3694 config/avr/avr.c:3886
-#: config/avr/avr.c:4194 config/avr/avr.c:4478 config/avr/avr.c:4684
-#: config/avr/avr.c:4848 config/avr/avr.c:4942 config/avr/avr.c:5138
+#: config/avr/avr.c:3476 config/avr/avr.c:3581 config/avr/avr.c:3639
+#: config/avr/avr.c:3685 config/avr/avr.c:3704 config/avr/avr.c:3896
+#: config/avr/avr.c:4204 config/avr/avr.c:4488 config/avr/avr.c:4694
+#: config/avr/avr.c:4858 config/avr/avr.c:4952 config/avr/avr.c:5148
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:3710 config/avr/avr.c:3985 config/avr/avr.c:4265
-#: config/avr/avr.c:4550 config/avr/avr.c:4730 config/avr/avr.c:4998
-#: config/avr/avr.c:5196
+#: config/avr/avr.c:3720 config/avr/avr.c:3995 config/avr/avr.c:4275
+#: config/avr/avr.c:4560 config/avr/avr.c:4740 config/avr/avr.c:5008
+#: config/avr/avr.c:5206
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:5627
+#: config/avr/avr.c:5637
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:5735 config/avr/avr.c:6216 config/avr/avr.c:6631
+#: config/avr/avr.c:5745 config/avr/avr.c:6226 config/avr/avr.c:6641
msgid "internal compiler error. Incorrect shift:"
msgstr ""
-#: config/avr/avr.c:7968
+#: config/avr/avr.c:7978
msgid "unsupported fixed-point conversion"
msgstr ""
@@ -3242,9 +3254,9 @@ msgid "invalid const_double operand"
msgstr ""
#: config/cris/cris.c:612 config/ft32/ft32.c:104 config/moxie/moxie.c:103
-#: diagnostic.c:1325 final.c:3407 final.c:3409 fold-const.c:276 gcc.c:5211
-#: gcc.c:5225 loop-iv.c:3043 loop-iv.c:3052 rtl-error.c:101 toplev.c:335
-#: tree-ssa-loop-niter.c:2328 tree-vrp.c:7476 cp/typeck.c:6081 java/expr.c:382
+#: final.c:3407 final.c:3409 fold-const.c:277 gcc.c:5211 gcc.c:5225
+#: loop-iv.c:3043 loop-iv.c:3052 rtl-error.c:101 toplev.c:335
+#: tree-ssa-loop-niter.c:2328 tree-vrp.c:7480 cp/typeck.c:6065 java/expr.c:382
#: lto/lto-object.c:184 lto/lto-object.c:281 lto/lto-object.c:338
#: lto/lto-object.c:362
#, gcc-internal-format, gfc-internal-format
@@ -3465,63 +3477,63 @@ msgstr ""
msgid "bad output_condmove_single operand"
msgstr ""
-#: config/i386/i386.c:16024
+#: config/i386/i386.c:16060
#, c-format
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:16728
+#: config/i386/i386.c:16764
#, c-format
msgid "invalid operand size for operand code 'O'"
msgstr ""
-#: config/i386/i386.c:16763
+#: config/i386/i386.c:16799
#, c-format
msgid "invalid operand size for operand code 'z'"
msgstr ""
-#: config/i386/i386.c:16833
+#: config/i386/i386.c:16869
#, c-format
msgid "invalid operand type used with operand code 'Z'"
msgstr ""
-#: config/i386/i386.c:16838
+#: config/i386/i386.c:16874
#, c-format
msgid "invalid operand size for operand code 'Z'"
msgstr ""
-#: config/i386/i386.c:16914
+#: config/i386/i386.c:16950
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr ""
-#: config/i386/i386.c:16987
+#: config/i386/i386.c:17023
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr ""
-#: config/i386/i386.c:17004
+#: config/i386/i386.c:17040
#, c-format
msgid "operand is not a condition code, invalid operand code '%c'"
msgstr ""
-#: config/i386/i386.c:17017
+#: config/i386/i386.c:17053
#, c-format
msgid ""
"operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr ""
-#: config/i386/i386.c:17182
+#: config/i386/i386.c:17218
#, c-format
msgid "invalid operand code '%c'"
msgstr ""
-#: config/i386/i386.c:17240
+#: config/i386/i386.c:17276
#, c-format
msgid "invalid constraints for operand"
msgstr ""
-#: config/i386/i386.c:27663
+#: config/i386/i386.c:27726
msgid "unknown insn mode"
msgstr ""
@@ -3566,7 +3578,7 @@ msgstr ""
msgid "invalid %%P operand"
msgstr ""
-#: config/iq2000/iq2000.c:3143 config/rs6000/rs6000.c:19885
+#: config/iq2000/iq2000.c:3143 config/rs6000/rs6000.c:19883
#, c-format
msgid "invalid %%p value"
msgstr ""
@@ -3630,7 +3642,7 @@ msgid "post-increment address is not a register"
msgstr ""
#: config/m32r/m32r.c:2328 config/m32r/m32r.c:2343
-#: config/rs6000/rs6000.c:31239
+#: config/rs6000/rs6000.c:31258
msgid "bad address"
msgstr ""
@@ -3730,12 +3742,12 @@ msgstr ""
msgid "MMIX Internal: This is not a constant:"
msgstr ""
-#: config/msp430/msp430.c:3594
+#: config/msp430/msp430.c:3609
#, c-format
msgid "invalid operand prefix"
msgstr ""
-#: config/msp430/msp430.c:3628
+#: config/msp430/msp430.c:3643
#, c-format
msgid "invalid zero extract"
msgstr ""
@@ -3799,233 +3811,233 @@ msgstr ""
msgid "-mtoc-fusion requires medium/large code model"
msgstr ""
-#: config/rs6000/rs6000.c:9490
+#: config/rs6000/rs6000.c:9485
msgid "bad move"
msgstr ""
-#: config/rs6000/rs6000.c:19528
+#: config/rs6000/rs6000.c:19526
msgid "Bad 128-bit move"
msgstr ""
-#: config/rs6000/rs6000.c:19719
+#: config/rs6000/rs6000.c:19717
#, c-format
msgid "invalid %%e value"
msgstr ""
-#: config/rs6000/rs6000.c:19740
+#: config/rs6000/rs6000.c:19738
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:19749
+#: config/rs6000/rs6000.c:19747
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:19758
+#: config/rs6000/rs6000.c:19756
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:19793
+#: config/rs6000/rs6000.c:19791
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:19803
+#: config/rs6000/rs6000.c:19801
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:19813
+#: config/rs6000/rs6000.c:19811
#, c-format
msgid "invalid %%k value"
msgstr ""
-#: config/rs6000/rs6000.c:19828 config/xtensa/xtensa.c:2343
+#: config/rs6000/rs6000.c:19826 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:19875
+#: config/rs6000/rs6000.c:19873
#, c-format
msgid "invalid %%O value"
msgstr ""
-#: config/rs6000/rs6000.c:19922
+#: config/rs6000/rs6000.c:19920
#, c-format
msgid "invalid %%q value"
msgstr ""
-#: config/rs6000/rs6000.c:19975
+#: config/rs6000/rs6000.c:19973
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:19987
+#: config/rs6000/rs6000.c:19985
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:20001 config/xtensa/xtensa.c:2313
+#: config/rs6000/rs6000.c:19999 config/xtensa/xtensa.c:2313
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/rs6000.c:20068 config/xtensa/xtensa.c:2364
+#: config/rs6000/rs6000.c:20066 config/xtensa/xtensa.c:2364
#, c-format
msgid "invalid %%x value"
msgstr ""
-#: config/rs6000/rs6000.c:20216
+#: config/rs6000/rs6000.c:20214
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr ""
-#: config/rs6000/rs6000.c:20893
+#: config/rs6000/rs6000.c:20892
msgid "__float128 and __ibm128 cannot be used in the same expression"
msgstr ""
-#: config/rs6000/rs6000.c:20899
+#: config/rs6000/rs6000.c:20898
msgid "__ibm128 and long double cannot be used in the same expression"
msgstr ""
-#: config/rs6000/rs6000.c:20905
+#: config/rs6000/rs6000.c:20904
msgid "__float128 and long double cannot be used in the same expression"
msgstr ""
-#: config/rs6000/rs6000.c:34288
+#: config/rs6000/rs6000.c:34309
msgid "AltiVec argument passed to unprototyped function"
msgstr ""
-#: config/rs6000/rs6000.c:35986
+#: config/rs6000/rs6000.c:36007
msgid "Could not generate addis value for fusion"
msgstr ""
-#: config/rs6000/rs6000.c:36058
+#: config/rs6000/rs6000.c:36079
msgid "Unable to generate load/store offset for fusion"
msgstr ""
-#: config/rs6000/rs6000.c:36162
+#: config/rs6000/rs6000.c:36183
msgid "Bad GPR fusion"
msgstr ""
-#: config/rs6000/rs6000.c:36380
+#: config/rs6000/rs6000.c:36401
msgid "emit_fusion_p9_load, bad reg #1"
msgstr ""
-#: config/rs6000/rs6000.c:36417
+#: config/rs6000/rs6000.c:36438
msgid "emit_fusion_p9_load, bad reg #2"
msgstr ""
-#: config/rs6000/rs6000.c:36420
+#: config/rs6000/rs6000.c:36441
msgid "emit_fusion_p9_load not MEM"
msgstr ""
-#: config/rs6000/rs6000.c:36458
+#: config/rs6000/rs6000.c:36479
msgid "emit_fusion_p9_store, bad reg #1"
msgstr ""
-#: config/rs6000/rs6000.c:36495
+#: config/rs6000/rs6000.c:36516
msgid "emit_fusion_p9_store, bad reg #2"
msgstr ""
-#: config/rs6000/rs6000.c:36498
+#: config/rs6000/rs6000.c:36519
msgid "emit_fusion_p9_store not MEM"
msgstr ""
-#: config/s390/s390.c:6997
+#: config/s390/s390.c:7147
#, c-format
msgid "symbolic memory references are only supported on z10 or later"
msgstr ""
-#: config/s390/s390.c:7008
+#: config/s390/s390.c:7158
#, c-format
msgid "cannot decompose address"
msgstr ""
-#: config/s390/s390.c:7076
+#: config/s390/s390.c:7227
#, c-format
msgid "invalid comparison operator for 'E' output modifier"
msgstr ""
-#: config/s390/s390.c:7099
+#: config/s390/s390.c:7250
#, c-format
msgid "invalid reference for 'J' output modifier"
msgstr ""
-#: config/s390/s390.c:7117
+#: config/s390/s390.c:7268
#, c-format
msgid "invalid address for 'O' output modifier"
msgstr ""
-#: config/s390/s390.c:7139
+#: config/s390/s390.c:7290
#, c-format
msgid "invalid address for 'R' output modifier"
msgstr ""
-#: config/s390/s390.c:7157
+#: config/s390/s390.c:7308
#, c-format
msgid "memory reference expected for 'S' output modifier"
msgstr ""
-#: config/s390/s390.c:7167
+#: config/s390/s390.c:7318
#, c-format
msgid "invalid address for 'S' output modifier"
msgstr ""
-#: config/s390/s390.c:7188
+#: config/s390/s390.c:7339
#, c-format
msgid "register or memory expression expected for 'N' output modifier"
msgstr ""
-#: config/s390/s390.c:7199
+#: config/s390/s390.c:7350
#, c-format
msgid "register or memory expression expected for 'M' output modifier"
msgstr ""
-#: config/s390/s390.c:7284 config/s390/s390.c:7305
+#: config/s390/s390.c:7435 config/s390/s390.c:7456
#, c-format
msgid "invalid constant for output modifier '%c'"
msgstr ""
-#: config/s390/s390.c:7302
+#: config/s390/s390.c:7453
#, c-format
msgid "invalid constant - try using an output modifier"
msgstr ""
-#: config/s390/s390.c:7343
+#: config/s390/s390.c:7494
#, c-format
msgid "invalid constant vector for output modifier '%c'"
msgstr ""
-#: config/s390/s390.c:7350
+#: config/s390/s390.c:7501
#, c-format
msgid "invalid expression - try using an output modifier"
msgstr ""
-#: config/s390/s390.c:7353
+#: config/s390/s390.c:7504
#, c-format
msgid "invalid expression for output modifier '%c'"
msgstr ""
-#: config/s390/s390.c:11001
+#: config/s390/s390.c:11350
msgid "Vector argument passed to unprototyped function"
msgstr ""
-#: config/s390/s390.c:14505
+#: config/s390/s390.c:15008
msgid "types differ in signess"
msgstr ""
-#: config/s390/s390.c:14515
+#: config/s390/s390.c:15018
msgid "binary operator does not support two vector bool operands"
msgstr ""
-#: config/s390/s390.c:14518
+#: config/s390/s390.c:15021
msgid "binary operator does not support vector bool operand"
msgstr ""
-#: config/s390/s390.c:14526
+#: config/s390/s390.c:15029
msgid ""
"binary operator does not support mixing vector bool with floating point "
"vector operands"
@@ -4041,55 +4053,55 @@ msgstr ""
msgid "invalid operand to %%S"
msgstr ""
-#: config/sh/sh.c:10038
+#: config/sh/sh.c:10040
msgid "created and used with different architectures / ABIs"
msgstr ""
-#: config/sh/sh.c:10040
+#: config/sh/sh.c:10042
msgid "created and used with different ABIs"
msgstr ""
-#: config/sh/sh.c:10042
+#: config/sh/sh.c:10044
msgid "created and used with different endianness"
msgstr ""
-#: config/sparc/sparc.c:8729 config/sparc/sparc.c:8735
+#: config/sparc/sparc.c:8653 config/sparc/sparc.c:8659
#, c-format
msgid "invalid %%Y operand"
msgstr ""
-#: config/sparc/sparc.c:8805
+#: config/sparc/sparc.c:8729
#, c-format
msgid "invalid %%A operand"
msgstr ""
-#: config/sparc/sparc.c:8815
+#: config/sparc/sparc.c:8739
#, c-format
msgid "invalid %%B operand"
msgstr ""
-#: config/sparc/sparc.c:8844 config/tilegx/tilegx.c:5095
+#: config/sparc/sparc.c:8768 config/tilegx/tilegx.c:5095
#: config/tilepro/tilepro.c:4510
#, c-format
msgid "invalid %%C operand"
msgstr ""
-#: config/sparc/sparc.c:8861 config/tilegx/tilegx.c:5128
+#: config/sparc/sparc.c:8785 config/tilegx/tilegx.c:5128
#, c-format
msgid "invalid %%D operand"
msgstr ""
-#: config/sparc/sparc.c:8877
+#: config/sparc/sparc.c:8801
#, c-format
msgid "invalid %%f operand"
msgstr ""
-#: config/sparc/sparc.c:8889
+#: config/sparc/sparc.c:8813
#, c-format
msgid "invalid %%s operand"
msgstr ""
-#: config/sparc/sparc.c:8934
+#: config/sparc/sparc.c:8858
#, c-format
msgid "floating-point constant not a valid immediate operand"
msgstr ""
@@ -4226,23 +4238,23 @@ msgstr ""
msgid "illegal operand detected"
msgstr ""
-#: config/visium/visium.c:3140
+#: config/visium/visium.c:3195
msgid "illegal operand "
msgstr ""
-#: config/visium/visium.c:3191
+#: config/visium/visium.c:3246
msgid "illegal operand address (1)"
msgstr ""
-#: config/visium/visium.c:3198
+#: config/visium/visium.c:3253
msgid "illegal operand address (2)"
msgstr ""
-#: config/visium/visium.c:3213
+#: config/visium/visium.c:3268
msgid "illegal operand address (3)"
msgstr ""
-#: config/visium/visium.c:3221
+#: config/visium/visium.c:3276
msgid "illegal operand address (4)"
msgstr ""
@@ -4286,177 +4298,177 @@ msgstr ""
msgid "({anonymous})"
msgstr ""
-#: c/c-parser.c:2146 c/c-parser.c:2160 c/c-parser.c:4743 c/c-parser.c:5149
-#: c/c-parser.c:5271 c/c-parser.c:5630 c/c-parser.c:5796 c/c-parser.c:5827
-#: c/c-parser.c:6025 c/c-parser.c:8763 c/c-parser.c:8798 c/c-parser.c:8829
-#: c/c-parser.c:8876 c/c-parser.c:9057 c/c-parser.c:9837 c/c-parser.c:9907
-#: c/c-parser.c:9950 c/c-parser.c:14445 c/c-parser.c:14469 c/c-parser.c:14487
-#: c/c-parser.c:14700 c/c-parser.c:14743 c/c-parser.c:2951 c/c-parser.c:9050
-#: cp/parser.c:26217 cp/parser.c:26790
+#: c/c-parser.c:2144 c/c-parser.c:2158 c/c-parser.c:4746 c/c-parser.c:5152
+#: c/c-parser.c:5274 c/c-parser.c:5633 c/c-parser.c:5799 c/c-parser.c:5830
+#: c/c-parser.c:6045 c/c-parser.c:8785 c/c-parser.c:8820 c/c-parser.c:8851
+#: c/c-parser.c:8898 c/c-parser.c:9079 c/c-parser.c:9859 c/c-parser.c:9929
+#: c/c-parser.c:9972 c/c-parser.c:14467 c/c-parser.c:14491 c/c-parser.c:14509
+#: c/c-parser.c:14722 c/c-parser.c:14765 c/c-parser.c:2949 c/c-parser.c:9072
+#: cp/parser.c:26281 cp/parser.c:26854
#, gcc-internal-format
msgid "expected %<;%>"
msgstr ""
#. Look for the two `(' tokens.
-#: c/c-parser.c:2187 c/c-parser.c:2889 c/c-parser.c:3186 c/c-parser.c:3253
-#: c/c-parser.c:3902 c/c-parser.c:4091 c/c-parser.c:4096 c/c-parser.c:5314
-#: c/c-parser.c:5508 c/c-parser.c:5712 c/c-parser.c:5961 c/c-parser.c:6084
-#: c/c-parser.c:7143 c/c-parser.c:7568 c/c-parser.c:7609 c/c-parser.c:7742
-#: c/c-parser.c:7934 c/c-parser.c:7951 c/c-parser.c:7977 c/c-parser.c:9348
-#: c/c-parser.c:9420 c/c-parser.c:10453 c/c-parser.c:10654 c/c-parser.c:10793
-#: c/c-parser.c:10848 c/c-parser.c:10945 c/c-parser.c:11125 c/c-parser.c:11169
-#: c/c-parser.c:11213 c/c-parser.c:11257 c/c-parser.c:11301 c/c-parser.c:11346
-#: c/c-parser.c:11381 c/c-parser.c:11449 c/c-parser.c:11698 c/c-parser.c:11844
-#: c/c-parser.c:11970 c/c-parser.c:12121 c/c-parser.c:12224 c/c-parser.c:12267
-#: c/c-parser.c:12314 c/c-parser.c:12358 c/c-parser.c:12424 c/c-parser.c:12460
-#: c/c-parser.c:12587 c/c-parser.c:12669 c/c-parser.c:12777 c/c-parser.c:12812
-#: c/c-parser.c:12860 c/c-parser.c:12918 c/c-parser.c:14647 c/c-parser.c:16570
-#: c/c-parser.c:16780 c/c-parser.c:17218 c/c-parser.c:17276 c/c-parser.c:17701
-#: c/c-parser.c:10924 cp/parser.c:24034 cp/parser.c:26793
+#: c/c-parser.c:2185 c/c-parser.c:2887 c/c-parser.c:3184 c/c-parser.c:3251
+#: c/c-parser.c:3900 c/c-parser.c:4089 c/c-parser.c:4094 c/c-parser.c:5317
+#: c/c-parser.c:5511 c/c-parser.c:5715 c/c-parser.c:5981 c/c-parser.c:6104
+#: c/c-parser.c:7163 c/c-parser.c:7588 c/c-parser.c:7629 c/c-parser.c:7762
+#: c/c-parser.c:7956 c/c-parser.c:7973 c/c-parser.c:7999 c/c-parser.c:9370
+#: c/c-parser.c:9442 c/c-parser.c:10475 c/c-parser.c:10676 c/c-parser.c:10815
+#: c/c-parser.c:10870 c/c-parser.c:10967 c/c-parser.c:11147 c/c-parser.c:11191
+#: c/c-parser.c:11235 c/c-parser.c:11279 c/c-parser.c:11323 c/c-parser.c:11368
+#: c/c-parser.c:11403 c/c-parser.c:11471 c/c-parser.c:11720 c/c-parser.c:11866
+#: c/c-parser.c:11992 c/c-parser.c:12143 c/c-parser.c:12246 c/c-parser.c:12289
+#: c/c-parser.c:12336 c/c-parser.c:12380 c/c-parser.c:12446 c/c-parser.c:12482
+#: c/c-parser.c:12609 c/c-parser.c:12691 c/c-parser.c:12799 c/c-parser.c:12834
+#: c/c-parser.c:12882 c/c-parser.c:12940 c/c-parser.c:14669 c/c-parser.c:16592
+#: c/c-parser.c:16802 c/c-parser.c:17240 c/c-parser.c:17298 c/c-parser.c:17723
+#: c/c-parser.c:10946 cp/parser.c:24066 cp/parser.c:26857
#, gcc-internal-format
msgid "expected %<(%>"
msgstr ""
-#: c/c-parser.c:2193 c/c-parser.c:7170 c/c-parser.c:7576 c/c-parser.c:7617
-#: c/c-parser.c:7753 cp/parser.c:26215 cp/parser.c:26808
+#: c/c-parser.c:2191 c/c-parser.c:7190 c/c-parser.c:7596 c/c-parser.c:7637
+#: c/c-parser.c:7773 cp/parser.c:26279 cp/parser.c:26872
#, gcc-internal-format
msgid "expected %<,%>"
msgstr ""
-#: c/c-parser.c:2214 c/c-parser.c:2581 c/c-parser.c:2904 c/c-parser.c:3227
-#: c/c-parser.c:3264 c/c-parser.c:3479 c/c-parser.c:3665 c/c-parser.c:3727
-#: c/c-parser.c:3779 c/c-parser.c:3909 c/c-parser.c:4191 c/c-parser.c:4207
-#: c/c-parser.c:4216 c/c-parser.c:5317 c/c-parser.c:5523 c/c-parser.c:5859
-#: c/c-parser.c:6019 c/c-parser.c:6092 c/c-parser.c:6671 c/c-parser.c:6901
-#: c/c-parser.c:6984 c/c-parser.c:7083 c/c-parser.c:7286 c/c-parser.c:7488
-#: c/c-parser.c:7507 c/c-parser.c:7531 c/c-parser.c:7586 c/c-parser.c:7693
-#: c/c-parser.c:7766 c/c-parser.c:7943 c/c-parser.c:7968 c/c-parser.c:7992
-#: c/c-parser.c:8215 c/c-parser.c:8606 c/c-parser.c:9142 c/c-parser.c:9163
-#: c/c-parser.c:9371 c/c-parser.c:9426 c/c-parser.c:9809 c/c-parser.c:10490
-#: c/c-parser.c:10657 c/c-parser.c:10796 c/c-parser.c:10882 c/c-parser.c:11026
-#: c/c-parser.c:11132 c/c-parser.c:11176 c/c-parser.c:11220 c/c-parser.c:11264
-#: c/c-parser.c:11308 c/c-parser.c:11352 c/c-parser.c:11409 c/c-parser.c:11416
-#: c/c-parser.c:11456 c/c-parser.c:11611 c/c-parser.c:11669 c/c-parser.c:11718
-#: c/c-parser.c:11790 c/c-parser.c:11942 c/c-parser.c:12067 c/c-parser.c:12128
-#: c/c-parser.c:12231 c/c-parser.c:12274 c/c-parser.c:12339 c/c-parser.c:12381
-#: c/c-parser.c:12411 c/c-parser.c:12439 c/c-parser.c:12475 c/c-parser.c:12617
-#: c/c-parser.c:12635 c/c-parser.c:12641 c/c-parser.c:12725 c/c-parser.c:12736
-#: c/c-parser.c:12756 c/c-parser.c:12766 c/c-parser.c:12783 c/c-parser.c:12819
-#: c/c-parser.c:12831 c/c-parser.c:12879 c/c-parser.c:12887 c/c-parser.c:12922
-#: c/c-parser.c:14529 c/c-parser.c:14708 c/c-parser.c:14754 c/c-parser.c:16759
-#: c/c-parser.c:16836 c/c-parser.c:17254 c/c-parser.c:17338 c/c-parser.c:17710
-#: cp/parser.c:24066 cp/parser.c:26838
+#: c/c-parser.c:2212 c/c-parser.c:2579 c/c-parser.c:2902 c/c-parser.c:3225
+#: c/c-parser.c:3262 c/c-parser.c:3477 c/c-parser.c:3663 c/c-parser.c:3725
+#: c/c-parser.c:3777 c/c-parser.c:3907 c/c-parser.c:4189 c/c-parser.c:4205
+#: c/c-parser.c:4214 c/c-parser.c:5320 c/c-parser.c:5526 c/c-parser.c:5862
+#: c/c-parser.c:6039 c/c-parser.c:6112 c/c-parser.c:6691 c/c-parser.c:6921
+#: c/c-parser.c:7004 c/c-parser.c:7103 c/c-parser.c:7306 c/c-parser.c:7508
+#: c/c-parser.c:7527 c/c-parser.c:7551 c/c-parser.c:7606 c/c-parser.c:7713
+#: c/c-parser.c:7788 c/c-parser.c:7965 c/c-parser.c:7990 c/c-parser.c:8014
+#: c/c-parser.c:8237 c/c-parser.c:8628 c/c-parser.c:9164 c/c-parser.c:9185
+#: c/c-parser.c:9393 c/c-parser.c:9448 c/c-parser.c:9831 c/c-parser.c:10512
+#: c/c-parser.c:10679 c/c-parser.c:10818 c/c-parser.c:10904 c/c-parser.c:11048
+#: c/c-parser.c:11154 c/c-parser.c:11198 c/c-parser.c:11242 c/c-parser.c:11286
+#: c/c-parser.c:11330 c/c-parser.c:11374 c/c-parser.c:11431 c/c-parser.c:11438
+#: c/c-parser.c:11478 c/c-parser.c:11633 c/c-parser.c:11691 c/c-parser.c:11740
+#: c/c-parser.c:11812 c/c-parser.c:11964 c/c-parser.c:12089 c/c-parser.c:12150
+#: c/c-parser.c:12253 c/c-parser.c:12296 c/c-parser.c:12361 c/c-parser.c:12403
+#: c/c-parser.c:12433 c/c-parser.c:12461 c/c-parser.c:12497 c/c-parser.c:12639
+#: c/c-parser.c:12657 c/c-parser.c:12663 c/c-parser.c:12747 c/c-parser.c:12758
+#: c/c-parser.c:12778 c/c-parser.c:12788 c/c-parser.c:12805 c/c-parser.c:12841
+#: c/c-parser.c:12853 c/c-parser.c:12901 c/c-parser.c:12909 c/c-parser.c:12944
+#: c/c-parser.c:14551 c/c-parser.c:14730 c/c-parser.c:14776 c/c-parser.c:16781
+#: c/c-parser.c:16858 c/c-parser.c:17276 c/c-parser.c:17360 c/c-parser.c:17732
+#: cp/parser.c:24098 cp/parser.c:26902
#, gcc-internal-format
msgid "expected %<)%>"
msgstr ""
-#: c/c-parser.c:3584 c/c-parser.c:4511 c/c-parser.c:4547 c/c-parser.c:6076
-#: c/c-parser.c:7684 c/c-parser.c:8040 c/c-parser.c:8189 c/c-parser.c:10592
-#: c/c-parser.c:17613 c/c-parser.c:17615 c/c-parser.c:17954 cp/parser.c:7022
-#: cp/parser.c:26802
+#: c/c-parser.c:3582 c/c-parser.c:4513 c/c-parser.c:4549 c/c-parser.c:6096
+#: c/c-parser.c:7704 c/c-parser.c:8062 c/c-parser.c:8211 c/c-parser.c:10614
+#: c/c-parser.c:17635 c/c-parser.c:17637 c/c-parser.c:17976 cp/parser.c:7024
+#: cp/parser.c:26866
#, gcc-internal-format
msgid "expected %<]%>"
msgstr ""
-#: c/c-parser.c:3760
+#: c/c-parser.c:3758
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr ""
-#: c/c-parser.c:4369 c/c-parser.c:14470 cp/parser.c:26796 cp/parser.c:28719
+#: c/c-parser.c:4371 c/c-parser.c:14492 cp/parser.c:26860 cp/parser.c:28783
#, gcc-internal-format
msgid "expected %<}%>"
msgstr ""
-#: c/c-parser.c:4680 c/c-parser.c:9391 c/c-parser.c:15180 c/c-parser.c:2769
-#: c/c-parser.c:2972 c/c-parser.c:8945 cp/parser.c:17108 cp/parser.c:26799
+#: c/c-parser.c:4683 c/c-parser.c:9413 c/c-parser.c:15202 c/c-parser.c:2767
+#: c/c-parser.c:2970 c/c-parser.c:8967 cp/parser.c:17138 cp/parser.c:26863
#, gcc-internal-format
msgid "expected %<{%>"
msgstr ""
-#: c/c-parser.c:4912 c/c-parser.c:4921 c/c-parser.c:5983 c/c-parser.c:6325
-#: c/c-parser.c:7218 c/c-parser.c:9156 c/c-parser.c:9539 c/c-parser.c:9600
-#: c/c-parser.c:10579 c/c-parser.c:11395 c/c-parser.c:11529 c/c-parser.c:11901
-#: c/c-parser.c:11993 c/c-parser.c:12621 c/c-parser.c:16627 c/c-parser.c:16683
-#: c/c-parser.c:11018 cp/parser.c:26832 cp/parser.c:27930 cp/parser.c:30618
+#: c/c-parser.c:4915 c/c-parser.c:4924 c/c-parser.c:6003 c/c-parser.c:6345
+#: c/c-parser.c:7238 c/c-parser.c:9178 c/c-parser.c:9561 c/c-parser.c:9622
+#: c/c-parser.c:10601 c/c-parser.c:11417 c/c-parser.c:11551 c/c-parser.c:11923
+#: c/c-parser.c:12015 c/c-parser.c:12643 c/c-parser.c:16649 c/c-parser.c:16705
+#: c/c-parser.c:11040 cp/parser.c:26896 cp/parser.c:27994 cp/parser.c:30668
#, gcc-internal-format
msgid "expected %<:%>"
msgstr ""
-#: c/c-parser.c:5170 cp/semantics.c:613
+#: c/c-parser.c:5173 cp/semantics.c:613
msgid "Cilk array notation cannot be used as a computed goto expression"
msgstr ""
-#: c/c-parser.c:5229
+#: c/c-parser.c:5232
msgid "Cilk array notation cannot be used for a throw expression"
msgstr ""
-#: c/c-parser.c:5519 cp/semantics.c:1133
+#: c/c-parser.c:5522 cp/semantics.c:1136
msgid "Cilk array notation cannot be used as a condition for switch statement"
msgstr ""
-#: c/c-parser.c:5565 cp/semantics.c:788
+#: c/c-parser.c:5568 cp/semantics.c:791
msgid "Cilk array notation cannot be used as a condition for while statement"
msgstr ""
-#: c/c-parser.c:5616 cp/parser.c:26726
+#: c/c-parser.c:5619 cp/parser.c:26790
#, gcc-internal-format
msgid "expected %<while%>"
msgstr ""
-#: c/c-parser.c:5623 cp/semantics.c:847
+#: c/c-parser.c:5626 cp/semantics.c:850
msgid ""
"Cilk array notation cannot be used as a condition for a do-while statement"
msgstr ""
-#: c/c-parser.c:5823 cp/semantics.c:966
+#: c/c-parser.c:5826 cp/semantics.c:969
msgid "Cilk array notation cannot be used in a condition for a for-loop"
msgstr ""
-#: c/c-parser.c:7437
+#: c/c-parser.c:7457
msgid "expected %<.%>"
msgstr ""
-#: c/c-parser.c:8616 c/c-parser.c:8648 c/c-parser.c:8888 cp/parser.c:28504
-#: cp/parser.c:28578
+#: c/c-parser.c:8638 c/c-parser.c:8670 c/c-parser.c:8910 cp/parser.c:28568
+#: cp/parser.c:28642
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr ""
-#: c/c-parser.c:9305 cp/parser.c:26817
+#: c/c-parser.c:9327 cp/parser.c:26881
#, gcc-internal-format
msgid "expected %<>%>"
msgstr ""
-#: c/c-parser.c:12071 c/c-parser.c:12835 cp/parser.c:26841
+#: c/c-parser.c:12093 c/c-parser.c:12857 cp/parser.c:26905
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr ""
-#: c/c-parser.c:14182 c/c-parser.c:14226 c/c-parser.c:14454 c/c-parser.c:14689
-#: c/c-parser.c:16821 c/c-parser.c:17440 c/c-parser.c:4570 cp/parser.c:26820
+#: c/c-parser.c:14204 c/c-parser.c:14248 c/c-parser.c:14476 c/c-parser.c:14711
+#: c/c-parser.c:16843 c/c-parser.c:17462 c/c-parser.c:4572 cp/parser.c:26884
#, gcc-internal-format
msgid "expected %<=%>"
msgstr ""
-#: c/c-parser.c:15223 c/c-parser.c:15213 cp/parser.c:33985
+#: c/c-parser.c:15245 c/c-parser.c:15235 cp/parser.c:34035
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr ""
-#: c/c-parser.c:17601 c/c-parser.c:10538 cp/parser.c:26805 cp/parser.c:29859
+#: c/c-parser.c:17623 c/c-parser.c:10560 cp/parser.c:26869 cp/parser.c:29923
#, gcc-internal-format
msgid "expected %<[%>"
msgstr ""
-#: c/c-typeck.c:7385
+#: c/c-typeck.c:7399
msgid "(anonymous)"
msgstr ""
-#: cp/call.c:9442
+#: cp/call.c:9453
msgid "candidate 1:"
msgstr ""
-#: cp/call.c:9443
+#: cp/call.c:9454
msgid "candidate 2:"
msgstr ""
@@ -4674,98 +4686,98 @@ msgstr ""
msgid "%r%s:%d:%R in constexpr expansion of %qs"
msgstr ""
-#: cp/pt.c:1941 cp/semantics.c:5165
+#: cp/pt.c:1947 cp/semantics.c:5214
msgid "candidates are:"
msgstr ""
-#: cp/pt.c:20936
+#: cp/pt.c:21039
msgid "candidate is:"
msgid_plural "candidates are:"
msgstr[0] ""
msgstr[1] ""
-#: cp/rtti.c:544
+#: cp/rtti.c:545
msgid "target is not pointer or reference to class"
msgstr ""
-#: cp/rtti.c:549
+#: cp/rtti.c:550
msgid "target is not pointer or reference to complete type"
msgstr ""
-#: cp/rtti.c:555
+#: cp/rtti.c:556
msgid "target is not pointer or reference"
msgstr ""
-#: cp/rtti.c:571
+#: cp/rtti.c:572
msgid "source is not a pointer"
msgstr ""
-#: cp/rtti.c:576
+#: cp/rtti.c:577
msgid "source is not a pointer to class"
msgstr ""
-#: cp/rtti.c:581
+#: cp/rtti.c:582
msgid "source is a pointer to incomplete type"
msgstr ""
-#: cp/rtti.c:596
+#: cp/rtti.c:597
msgid "source is not of class type"
msgstr ""
-#: cp/rtti.c:601
+#: cp/rtti.c:602
msgid "source is of incomplete class type"
msgstr ""
-#: cp/rtti.c:610
+#: cp/rtti.c:611
msgid "conversion casts away constness"
msgstr ""
-#: cp/rtti.c:766
+#: cp/rtti.c:767
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5836 c/c-typeck.c:4079
+#: cp/typeck.c:5820 c/c-typeck.c:4093
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr ""
-#: cp/typeck.c:5837 c/c-typeck.c:4066
+#: cp/typeck.c:5821 c/c-typeck.c:4080
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr ""
-#: cp/typeck.c:5864 c/c-typeck.c:4105
+#: cp/typeck.c:5848 c/c-typeck.c:4119
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr ""
-#: cp/typeck.c:5871 c/c-typeck.c:4113
+#: cp/typeck.c:5855 c/c-typeck.c:4127
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr ""
-#: cp/typeck.c:5883 c/c-typeck.c:4125
+#: cp/typeck.c:5867 c/c-typeck.c:4139
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr ""
-#: cp/typeck.c:5901
+#: cp/typeck.c:5885
msgid "in argument to unary !"
msgstr ""
-#: cp/typeck.c:5947
+#: cp/typeck.c:5931
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5949
+#: cp/typeck.c:5933
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5951
+#: cp/typeck.c:5935
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5953
+#: cp/typeck.c:5937
msgid "no post-decrement operator for type"
msgstr ""
@@ -4926,13 +4938,13 @@ msgstr ""
msgid "%s tag"
msgstr ""
-#: fortran/io.c:2963
+#: fortran/io.c:2966
msgid "internal unit in WRITE"
msgstr ""
#. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
#. contexts. Thus, use an extended RESOLVE_TAG macro for that.
-#: fortran/io.c:4182
+#: fortran/io.c:4185
#, c-format
msgid "%s tag with INQUIRE"
msgstr ""
@@ -5038,11 +5050,11 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1852 fortran/resolve.c:10520
+#: fortran/parse.c:1852 fortran/resolve.c:10531
msgid "assignment"
msgstr ""
-#: fortran/parse.c:1855 fortran/resolve.c:10571 fortran/resolve.c:10574
+#: fortran/parse.c:1855 fortran/resolve.c:10582 fortran/resolve.c:10585
msgid "pointer assignment"
msgstr ""
@@ -5228,19 +5240,19 @@ msgstr ""
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7337 fortran/resolve.c:8781
+#: fortran/resolve.c:7345 fortran/resolve.c:8792
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7381 fortran/resolve.c:8793
+#: fortran/resolve.c:7389 fortran/resolve.c:8804
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8623
+#: fortran/resolve.c:8634
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8805
+#: fortran/resolve.c:8816
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -5249,30 +5261,30 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5473
+#: fortran/trans-array.c:5484
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
-#: fortran/trans-decl.c:5443
+#: fortran/trans-decl.c:5490
#, c-format
msgid ""
"Actual string length does not match the declared one for dummy argument "
"'%s' (%ld/%ld)"
msgstr ""
-#: fortran/trans-decl.c:5451
+#: fortran/trans-decl.c:5498
#, c-format
msgid ""
"Actual string length is shorter than the declared one for dummy argument "
"'%s' (%ld/%ld)"
msgstr ""
-#: fortran/trans-expr.c:8109
+#: fortran/trans-expr.c:8140
#, c-format
msgid "Target of rank remapping is too small (%ld < %ld)"
msgstr ""
-#: fortran/trans-expr.c:9314
+#: fortran/trans-expr.c:9345
msgid "Assignment of scalar to unallocated array"
msgstr ""
@@ -5302,16 +5314,16 @@ msgstr ""
msgid "Assigned label is not a target label"
msgstr ""
-#: fortran/trans-stmt.c:1095
+#: fortran/trans-stmt.c:1101
#, c-format
msgid "Invalid image number %d in SYNC IMAGES"
msgstr ""
-#: fortran/trans-stmt.c:1890 fortran/trans-stmt.c:2175
+#: fortran/trans-stmt.c:1898 fortran/trans-stmt.c:2183
msgid "Loop variable has been modified"
msgstr ""
-#: fortran/trans-stmt.c:2030
+#: fortran/trans-stmt.c:2038
msgid "DO step value is zero"
msgstr ""
@@ -5650,24 +5662,24 @@ msgstr ""
msgid "-Xbind-now and -Xbind-lazy are incompatible"
msgstr ""
-#: config/s390/tpf.h:110
-msgid "static is not supported on TPF-OS"
+#: config/sparc/linux64.h:149 config/sparc/linux64.h:156
+#: config/sparc/netbsd-elf.h:108 config/sparc/netbsd-elf.h:117
+#: config/sparc/sol2.h:219 config/sparc/sol2.h:225
+msgid "may not use both -m32 and -m64"
msgstr ""
-#: config/sparc/sol2.h:219 config/sparc/sol2.h:225 config/sparc/linux64.h:149
-#: config/sparc/linux64.h:156 config/sparc/netbsd-elf.h:108
-#: config/sparc/netbsd-elf.h:117
-msgid "may not use both -m32 and -m64"
+#: config/s390/tpf.h:110
+msgid "static is not supported on TPF-OS"
msgstr ""
#: config/i386/mingw-w64.h:87 config/i386/mingw32.h:117
-#: config/i386/cygwin-w64.h:64 config/i386/cygwin.h:130
+#: config/i386/cygwin.h:130 config/i386/cygwin-w64.h:64
msgid "shared and mdll are not compatible"
msgstr ""
-#: config/i386/freebsd.h:82 config/i386/freebsd64.h:35
#: config/alpha/freebsd.h:33 config/rs6000/sysv4.h:731 config/dragonfly.h:76
-#: config/ia64/freebsd.h:26 config/sparc/freebsd.h:45
+#: config/ia64/freebsd.h:26 config/i386/freebsd.h:82
+#: config/i386/freebsd64.h:35 config/sparc/freebsd.h:45
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -5680,6 +5692,14 @@ msgid ""
"objc-cpp-output is deprecated; please use objective-c-cpp-output instead"
msgstr ""
+#: config/tilegx/tilegx.h:546 config/tilegx/tilegx.h:551 config/arm/arm.h:102
+msgid "-mbig-endian and -mlittle-endian may not be used together"
+msgstr ""
+
+#: config/moxie/moxiebox.h:43
+msgid "this target is little-endian"
+msgstr ""
+
#: config/pa/pa-hpux10.h:102 config/pa/pa-hpux10.h:105
#: config/pa/pa-hpux10.h:113 config/pa/pa-hpux10.h:116
#: config/pa/pa-hpux11.h:134 config/pa/pa-hpux11.h:137
@@ -5696,14 +5716,6 @@ msgstr ""
msgid " profiling support are only provided in archive format"
msgstr ""
-#: config/rs6000/darwin.h:95
-msgid " conflicting code gen style switches are used"
-msgstr ""
-
-#: fortran/lang-specs.h:54 fortran/lang-specs.h:68
-msgid "gfortran does not support -E without -cpp"
-msgstr ""
-
#: config/cris/cris.h:184
msgid "do not specify both -march=... and -mcpu=..."
msgstr ""
@@ -5712,21 +5724,17 @@ msgstr ""
msgid "may not use both -EB and -EL"
msgstr ""
-#: config/mips/r3900.h:37
-msgid "-mhard-float not supported"
-msgstr ""
-
-#: config/mips/r3900.h:39
-msgid "-msingle-float and -msoft-float cannot both be specified"
-msgstr ""
-
#: objcp/lang-specs.h:58
msgid ""
"objc++-cpp-output is deprecated; please use objective-c++-cpp-output instead"
msgstr ""
-#: config/rs6000/freebsd64.h:171
-msgid "consider using `-pg' instead of `-p' with gprof(1)"
+#: config/rs6000/darwin.h:95
+msgid " conflicting code gen style switches are used"
+msgstr ""
+
+#: fortran/lang-specs.h:54 fortran/lang-specs.h:68
+msgid "gfortran does not support -E without -cpp"
msgstr ""
#: config/sh/sh.h:375 config/sh/sh.h:378
@@ -5753,14 +5761,18 @@ msgstr ""
msgid "-mfloat-abi=soft and -mfloat-abi=hard may not be used together"
msgstr ""
-#: config/arm/arm.h:102 config/tilegx/tilegx.h:546 config/tilegx/tilegx.h:551
-msgid "-mbig-endian and -mlittle-endian may not be used together"
-msgstr ""
-
#: config/vax/netbsd-elf.h:51
msgid "the -shared option is not currently supported for VAX ELF"
msgstr ""
+#: config/mips/r3900.h:37
+msgid "-mhard-float not supported"
+msgstr ""
+
+#: config/mips/r3900.h:39
+msgid "-msingle-float and -msoft-float cannot both be specified"
+msgstr ""
+
#: config/vax/vax.h:46 config/vax/vax.h:47
msgid "profiling not supported with -mg"
msgstr ""
@@ -5773,6 +5785,10 @@ msgstr ""
msgid "the m210 does not have little endian support"
msgstr ""
+#: config/rs6000/freebsd64.h:171
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/lynx.h:69
msgid "cannot use mthreads and mlegacy-threads together"
msgstr ""
@@ -5991,10 +6007,10 @@ msgstr ""
msgid "Allow dollar signs in entity names."
msgstr ""
-#: fortran/lang.opt:437 config/alpha/alpha.opt:31 common.opt:728
-#: common.opt:916 common.opt:920 common.opt:924 common.opt:928 common.opt:1417
-#: common.opt:1566 common.opt:1570 common.opt:1796 common.opt:1942
-#: common.opt:2586
+#: fortran/lang.opt:437 config/alpha/alpha.opt:31 common.opt:732
+#: common.opt:920 common.opt:924 common.opt:928 common.opt:932 common.opt:1421
+#: common.opt:1570 common.opt:1574 common.opt:1800 common.opt:1946
+#: common.opt:2598
msgid "Does nothing. Preserved for backward compatibility."
msgstr ""
@@ -6130,123 +6146,123 @@ msgstr ""
msgid "Set default accessibility of module entities to PRIVATE."
msgstr ""
-#: fortran/lang.opt:591
+#: fortran/lang.opt:595
msgid "Try to lay out derived types as compactly as possible."
msgstr ""
-#: fortran/lang.opt:599
+#: fortran/lang.opt:603
msgid "Protect parentheses in expressions."
msgstr ""
-#: fortran/lang.opt:603
+#: fortran/lang.opt:607
msgid "Enable range checking during compilation."
msgstr ""
-#: fortran/lang.opt:607
+#: fortran/lang.opt:611
msgid "Interpret any REAL(4) as a REAL(8)."
msgstr ""
-#: fortran/lang.opt:611
+#: fortran/lang.opt:615
msgid "Interpret any REAL(4) as a REAL(10)."
msgstr ""
-#: fortran/lang.opt:615
+#: fortran/lang.opt:619
msgid "Interpret any REAL(4) as a REAL(16)."
msgstr ""
-#: fortran/lang.opt:619
+#: fortran/lang.opt:623
msgid "Interpret any REAL(8) as a REAL(4)."
msgstr ""
-#: fortran/lang.opt:623
+#: fortran/lang.opt:627
msgid "Interpret any REAL(8) as a REAL(10)."
msgstr ""
-#: fortran/lang.opt:627
+#: fortran/lang.opt:631
msgid "Interpret any REAL(8) as a REAL(16)."
msgstr ""
-#: fortran/lang.opt:631
+#: fortran/lang.opt:635
msgid "Reallocate the LHS in assignments."
msgstr ""
-#: fortran/lang.opt:635
+#: fortran/lang.opt:639
msgid "Use a 4-byte record marker for unformatted files."
msgstr ""
-#: fortran/lang.opt:639
+#: fortran/lang.opt:643
msgid "Use an 8-byte record marker for unformatted files."
msgstr ""
-#: fortran/lang.opt:643
+#: fortran/lang.opt:647
msgid "Allocate local variables on the stack to allow indirect recursion."
msgstr ""
-#: fortran/lang.opt:647
+#: fortran/lang.opt:651
msgid "Copy array sections into a contiguous block on procedure entry."
msgstr ""
-#: fortran/lang.opt:651
+#: fortran/lang.opt:655
msgid ""
"-fcoarray=<none|single|lib>\tSpecify which coarray parallelization should be "
"used."
msgstr ""
-#: fortran/lang.opt:654
+#: fortran/lang.opt:658
#, c-format
msgid "Unrecognized option: %qs"
msgstr ""
-#: fortran/lang.opt:667
+#: fortran/lang.opt:671
msgid "-fcheck=[...]\tSpecify which runtime checks are to be performed."
msgstr ""
-#: fortran/lang.opt:671
+#: fortran/lang.opt:675
msgid "Append a second underscore if the name already contains an underscore."
msgstr ""
-#: fortran/lang.opt:679
+#: fortran/lang.opt:683
msgid "Apply negative sign to zero values."
msgstr ""
-#: fortran/lang.opt:683
+#: fortran/lang.opt:687
msgid "Append underscores to externally visible names."
msgstr ""
-#: fortran/lang.opt:687 c-family/c.opt:1139 c-family/c.opt:1163
-#: c-family/c.opt:1389 config/pa/pa.opt:42 config/pa/pa.opt:66
-#: config/sh/sh.opt:213 common.opt:1070 common.opt:1297 common.opt:1649
-#: common.opt:1992 common.opt:2028 common.opt:2117 common.opt:2121
-#: common.opt:2217 common.opt:2299 common.opt:2307 common.opt:2315
-#: common.opt:2323 common.opt:2424 common.opt:2546
+#: fortran/lang.opt:691 c-family/c.opt:1155 c-family/c.opt:1179
+#: c-family/c.opt:1409 config/pa/pa.opt:42 config/pa/pa.opt:66
+#: config/sh/sh.opt:213 common.opt:1074 common.opt:1301 common.opt:1653
+#: common.opt:1999 common.opt:2035 common.opt:2124 common.opt:2128
+#: common.opt:2224 common.opt:2306 common.opt:2314 common.opt:2322
+#: common.opt:2330 common.opt:2431 common.opt:2558
msgid "Does nothing. Preserved for backward compatibility."
msgstr ""
-#: fortran/lang.opt:727
+#: fortran/lang.opt:731
msgid "Statically link the GNU Fortran helper library (libgfortran)."
msgstr ""
-#: fortran/lang.opt:731
+#: fortran/lang.opt:735
msgid "Conform to the ISO Fortran 2003 standard."
msgstr ""
-#: fortran/lang.opt:735
+#: fortran/lang.opt:739
msgid "Conform to the ISO Fortran 2008 standard."
msgstr ""
-#: fortran/lang.opt:739
+#: fortran/lang.opt:743
msgid "Conform to the ISO Fortran 2008 standard including TS 29113."
msgstr ""
-#: fortran/lang.opt:743
+#: fortran/lang.opt:747
msgid "Conform to the ISO Fortran 95 standard."
msgstr ""
-#: fortran/lang.opt:747
+#: fortran/lang.opt:751
msgid "Conform to nothing in particular."
msgstr ""
-#: fortran/lang.opt:751
+#: fortran/lang.opt:755
msgid "Accept extensions to support legacy code."
msgstr ""
@@ -6263,15 +6279,15 @@ msgstr ""
#: c-family/c.opt:70 c-family/c.opt:73 c-family/c.opt:76 c-family/c.opt:79
#: c-family/c.opt:175 c-family/c.opt:178 c-family/c.opt:216 c-family/c.opt:220
-#: c-family/c.opt:232 c-family/c.opt:1585 c-family/c.opt:1593
-#: config/darwin.opt:53 common.opt:336 common.opt:339 common.opt:2801
+#: c-family/c.opt:232 c-family/c.opt:1601 c-family/c.opt:1609
+#: config/darwin.opt:53 common.opt:336 common.opt:339 common.opt:2813
#, c-format
msgid "missing filename after %qs"
msgstr ""
#: c-family/c.opt:85 c-family/c.opt:88 c-family/c.opt:91 c-family/c.opt:94
-#: c-family/c.opt:200 c-family/c.opt:208 c-family/c.opt:1581
-#: c-family/c.opt:1601 c-family/c.opt:1605 c-family/c.opt:1609
+#: c-family/c.opt:200 c-family/c.opt:208 c-family/c.opt:1597
+#: c-family/c.opt:1617 c-family/c.opt:1621 c-family/c.opt:1625
#, c-format
msgid "missing path after %qs"
msgstr ""
@@ -6585,1178 +6601,1182 @@ msgid "Warn whenever type qualifiers are ignored."
msgstr ""
#: c-family/c.opt:487
+msgid "Warn whenever attributes are ignored."
+msgstr ""
+
+#: c-family/c.opt:491
msgid ""
"Warn when there is a conversion between pointers that have incompatible "
"types."
msgstr ""
-#: c-family/c.opt:491
+#: c-family/c.opt:495
msgid "Warn about variables which are initialized to themselves."
msgstr ""
-#: c-family/c.opt:495
+#: c-family/c.opt:499
msgid "Warn about implicit declarations."
msgstr ""
-#: c-family/c.opt:499
+#: c-family/c.opt:503
msgid "Warn about implicit conversions from \"float\" to \"double\"."
msgstr ""
-#: c-family/c.opt:503
+#: c-family/c.opt:507
msgid "Warn about implicit function declarations."
msgstr ""
-#: c-family/c.opt:507
+#: c-family/c.opt:511
msgid "Warn when a declaration does not specify a type."
msgstr ""
-#: c-family/c.opt:514
+#: c-family/c.opt:518
msgid ""
"Warn about C++11 inheriting constructors when the base has a variadic "
"constructor."
msgstr ""
-#: c-family/c.opt:518
+#: c-family/c.opt:522
msgid ""
"Warn about incompatible integer to pointer and pointer to integer "
"conversions."
msgstr ""
-#: c-family/c.opt:522
+#: c-family/c.opt:526
msgid ""
"Warn when there is a cast to a pointer from an integer of a different size."
msgstr ""
-#: c-family/c.opt:526
+#: c-family/c.opt:530
msgid "Warn about invalid uses of the \"offsetof\" macro."
msgstr ""
-#: c-family/c.opt:530
+#: c-family/c.opt:534
msgid "Warn about PCH files that are found but not used."
msgstr ""
-#: c-family/c.opt:534
+#: c-family/c.opt:538
msgid "Warn when a jump misses a variable initialization."
msgstr ""
-#: c-family/c.opt:538
+#: c-family/c.opt:542
msgid ""
"Warn when a string or character literal is followed by a ud-suffix which "
"does not begin with an underscore."
msgstr ""
-#: c-family/c.opt:542
+#: c-family/c.opt:546
msgid ""
"Warn when a logical operator is suspiciously always evaluating to true or "
"false."
msgstr ""
-#: c-family/c.opt:546
+#: c-family/c.opt:550
msgid ""
"Warn when logical not is used on the left hand side operand of a comparison."
msgstr ""
-#: c-family/c.opt:550
+#: c-family/c.opt:554
msgid "Do not warn about using \"long long\" when -pedantic."
msgstr ""
-#: c-family/c.opt:554
+#: c-family/c.opt:558
msgid "Warn about suspicious declarations of \"main\"."
msgstr ""
-#: c-family/c.opt:562
+#: c-family/c.opt:566
msgid ""
"Warn about suspicious calls to memset where the third argument is constant "
"literal zero and the second is not."
msgstr ""
-#: c-family/c.opt:566
+#: c-family/c.opt:570
msgid ""
"Warn when the indentation of the code does not reflect the block structure."
msgstr ""
-#: c-family/c.opt:570
+#: c-family/c.opt:574
msgid "Warn about possibly missing braces around initializers."
msgstr ""
-#: c-family/c.opt:574
+#: c-family/c.opt:578
msgid "Warn about global functions without previous declarations."
msgstr ""
-#: c-family/c.opt:578
+#: c-family/c.opt:582
msgid "Warn about missing fields in struct initializers."
msgstr ""
-#: c-family/c.opt:582
+#: c-family/c.opt:586
msgid "Warn on direct multiple inheritance."
msgstr ""
-#: c-family/c.opt:586
+#: c-family/c.opt:590
msgid "Warn on namespace definition."
msgstr ""
-#: c-family/c.opt:590
+#: c-family/c.opt:594
msgid "Warn about missing sized deallocation functions."
msgstr ""
-#: c-family/c.opt:594
+#: c-family/c.opt:598
msgid ""
"Warn about suspicious length parameters to certain string functions if the "
"argument uses sizeof."
msgstr ""
-#: c-family/c.opt:598
+#: c-family/c.opt:602
msgid "Warn when sizeof is applied on a parameter declared as an array."
msgstr ""
-#: c-family/c.opt:602
+#: c-family/c.opt:606
msgid "Warn about functions which might be candidates for format attributes."
msgstr ""
-#: c-family/c.opt:606
+#: c-family/c.opt:610
msgid ""
"Suggest that the override keyword be used when the declaration of a virtual"
msgstr ""
-#: c-family/c.opt:611
+#: c-family/c.opt:615
msgid "Warn about enumerated switches, with no default, missing a case."
msgstr ""
-#: c-family/c.opt:615
+#: c-family/c.opt:619
msgid "Warn about enumerated switches missing a \"default:\" statement."
msgstr ""
-#: c-family/c.opt:619
+#: c-family/c.opt:623
msgid "Warn about all enumerated switches missing a specific case."
msgstr ""
-#: c-family/c.opt:623
+#: c-family/c.opt:627
msgid "Warn about switches with boolean controlling expression."
msgstr ""
-#: c-family/c.opt:627
+#: c-family/c.opt:631
msgid "Warn on primary template declaration."
msgstr ""
-#: c-family/c.opt:635
+#: c-family/c.opt:639
msgid "Warn about user-specified include directories that do not exist."
msgstr ""
-#: c-family/c.opt:639
+#: c-family/c.opt:643
msgid ""
"Warn about function parameters declared without a type specifier in K&R-"
"style functions."
msgstr ""
-#: c-family/c.opt:643
+#: c-family/c.opt:647
msgid "Warn about global functions without prototypes."
msgstr ""
-#: c-family/c.opt:646 c-family/c.opt:1008 c-family/c.opt:1015
-#: c-family/c.opt:1189 c-family/c.opt:1208 c-family/c.opt:1231
-#: c-family/c.opt:1237 c-family/c.opt:1244 c-family/c.opt:1268
-#: c-family/c.opt:1279 c-family/c.opt:1282 c-family/c.opt:1285
-#: c-family/c.opt:1288 c-family/c.opt:1291 c-family/c.opt:1328
-#: c-family/c.opt:1459 c-family/c.opt:1483 c-family/c.opt:1501
-#: c-family/c.opt:1532 c-family/c.opt:1536 c-family/c.opt:1552
-#: config/ia64/ia64.opt:167 config/ia64/ia64.opt:170 c-family/c-opts.c:415
+#: c-family/c.opt:650 c-family/c.opt:1024 c-family/c.opt:1031
+#: c-family/c.opt:1205 c-family/c.opt:1224 c-family/c.opt:1247
+#: c-family/c.opt:1253 c-family/c.opt:1260 c-family/c.opt:1284
+#: c-family/c.opt:1295 c-family/c.opt:1298 c-family/c.opt:1301
+#: c-family/c.opt:1304 c-family/c.opt:1307 c-family/c.opt:1344
+#: c-family/c.opt:1475 c-family/c.opt:1499 c-family/c.opt:1517
+#: c-family/c.opt:1548 c-family/c.opt:1552 c-family/c.opt:1568
+#: config/ia64/ia64.opt:167 config/ia64/ia64.opt:170 c-family/c-opts.c:419
#, gcc-internal-format
msgid "switch %qs is no longer supported"
msgstr ""
-#: c-family/c.opt:650
+#: c-family/c.opt:654
msgid "Warn about use of multi-character character constants."
msgstr ""
-#: c-family/c.opt:654
+#: c-family/c.opt:658
msgid ""
"Warn about narrowing conversions within { } that are ill-formed in C++11."
msgstr ""
-#: c-family/c.opt:658
+#: c-family/c.opt:662
msgid "Warn about \"extern\" declarations not at file scope."
msgstr ""
-#: c-family/c.opt:662
+#: c-family/c.opt:666
msgid ""
"Warn when a noexcept expression evaluates to false even though the "
"expression can't actually throw."
msgstr ""
-#: c-family/c.opt:666
+#: c-family/c.opt:670
msgid ""
"Warn when non-templatized friend functions are declared within a template."
msgstr ""
-#: c-family/c.opt:670
+#: c-family/c.opt:674
msgid "Warn about non-virtual destructors."
msgstr ""
-#: c-family/c.opt:674
+#: c-family/c.opt:678
msgid ""
"Warn about NULL being passed to argument slots marked as requiring non-NULL."
msgstr ""
-#: c-family/c.opt:686
+#: c-family/c.opt:694
msgid ""
"-Wnormalized=<none|id|nfc|nfkc>\tWarn about non-normalised Unicode strings."
msgstr ""
-#: c-family/c.opt:693
+#: c-family/c.opt:701
msgid "argument %qs to %<-Wnormalized%> not recognized"
msgstr ""
-#: c-family/c.opt:709
+#: c-family/c.opt:717
msgid "Warn if a C-style cast is used in a program."
msgstr ""
-#: c-family/c.opt:713
+#: c-family/c.opt:721
msgid "Warn for obsolescent usage in a declaration."
msgstr ""
-#: c-family/c.opt:717
+#: c-family/c.opt:725
msgid "Warn if an old-style parameter definition is used."
msgstr ""
-#: c-family/c.opt:721
+#: c-family/c.opt:729
msgid "Warn if a simd directive is overridden by the vectorizer cost model."
msgstr ""
-#: c-family/c.opt:725
+#: c-family/c.opt:733
msgid ""
"Warn if a string is longer than the maximum portable length specified by the "
"standard."
msgstr ""
-#: c-family/c.opt:729
+#: c-family/c.opt:737
msgid "Warn about overloaded virtual function names."
msgstr ""
-#: c-family/c.opt:733
+#: c-family/c.opt:741
msgid "Warn about overriding initializers without side effects."
msgstr ""
-#: c-family/c.opt:737
+#: c-family/c.opt:745
msgid "Warn about overriding initializers with side effects."
msgstr ""
-#: c-family/c.opt:741
+#: c-family/c.opt:749
msgid "Warn about packed bit-fields whose offset changed in GCC 4.4."
msgstr ""
-#: c-family/c.opt:745
+#: c-family/c.opt:753
msgid "Warn about possibly missing parentheses."
msgstr ""
-#: c-family/c.opt:753
+#: c-family/c.opt:761
msgid "Warn when converting the type of pointers to member functions."
msgstr ""
-#: c-family/c.opt:757
+#: c-family/c.opt:765
msgid "Warn about function pointer arithmetic."
msgstr ""
-#: c-family/c.opt:761
+#: c-family/c.opt:769
msgid "Warn when a pointer differs in signedness in an assignment."
msgstr ""
-#: c-family/c.opt:765
+#: c-family/c.opt:773
msgid "Warn when a pointer is cast to an integer of a different size."
msgstr ""
-#: c-family/c.opt:769
+#: c-family/c.opt:777
msgid "Warn about misuses of pragmas."
msgstr ""
-#: c-family/c.opt:773
+#: c-family/c.opt:781
msgid ""
"Warn if a property for an Objective-C object has no assign semantics "
"specified."
msgstr ""
-#: c-family/c.opt:777
+#: c-family/c.opt:785
msgid "Warn if inherited methods are unimplemented."
msgstr ""
-#: c-family/c.opt:781
+#: c-family/c.opt:789 c-family/c.opt:793
msgid "Warn for placement new expressions with undefined behavior."
msgstr ""
-#: c-family/c.opt:785
+#: c-family/c.opt:797
msgid "Warn about multiple declarations of the same object."
msgstr ""
-#: c-family/c.opt:789
+#: c-family/c.opt:801
msgid "Warn when the compiler reorders code."
msgstr ""
-#: c-family/c.opt:793
+#: c-family/c.opt:805
msgid ""
"Warn whenever a function's return type defaults to \"int\" (C), or about "
"inconsistent return types (C++)."
msgstr ""
-#: c-family/c.opt:797
+#: c-family/c.opt:809
msgid "Warn on suspicious constructs involving reverse scalar storage order."
msgstr ""
-#: c-family/c.opt:801
+#: c-family/c.opt:813
msgid "Warn if a selector has multiple methods."
msgstr ""
-#: c-family/c.opt:805
+#: c-family/c.opt:817
msgid "Warn about possible violations of sequence point rules."
msgstr ""
-#: c-family/c.opt:809
+#: c-family/c.opt:821
msgid "Warn if a local declaration hides an instance variable."
msgstr ""
-#: c-family/c.opt:813 c-family/c.opt:817
+#: c-family/c.opt:825 c-family/c.opt:829
msgid "Warn if left shift of a signed value overflows."
msgstr ""
-#: c-family/c.opt:821
+#: c-family/c.opt:833
msgid "Warn if shift count is negative."
msgstr ""
-#: c-family/c.opt:825
+#: c-family/c.opt:837
msgid "Warn if shift count >= width of type."
msgstr ""
-#: c-family/c.opt:829
+#: c-family/c.opt:841
msgid "Warn if left shifting a negative value."
msgstr ""
-#: c-family/c.opt:833
+#: c-family/c.opt:845
msgid "Warn about signed-unsigned comparisons."
msgstr ""
-#: c-family/c.opt:841
+#: c-family/c.opt:853
msgid ""
"Warn for implicit type conversions between signed and unsigned integers."
msgstr ""
-#: c-family/c.opt:845
+#: c-family/c.opt:857
msgid "Warn when overload promotes from unsigned to signed."
msgstr ""
-#: c-family/c.opt:849
+#: c-family/c.opt:861
msgid "Warn about uncasted NULL used as sentinel."
msgstr ""
-#: c-family/c.opt:853
+#: c-family/c.opt:865
msgid "Warn about unprototyped function declarations."
msgstr ""
-#: c-family/c.opt:865
+#: c-family/c.opt:877
msgid "Warn if type signatures of candidate methods do not match exactly."
msgstr ""
-#: c-family/c.opt:869
+#: c-family/c.opt:881
msgid ""
"Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions "
"are used."
msgstr ""
-#: c-family/c.opt:873
+#: c-family/c.opt:885
msgid "Deprecated. This switch has no effect."
msgstr ""
-#: c-family/c.opt:881
+#: c-family/c.opt:893
msgid "Warn if a comparison always evaluates to true or false."
msgstr ""
-#: c-family/c.opt:885
+#: c-family/c.opt:897
msgid "Warn if a throw expression will always result in a call to terminate()."
msgstr ""
-#: c-family/c.opt:889
+#: c-family/c.opt:901
msgid "Warn about features not present in traditional C."
msgstr ""
-#: c-family/c.opt:893
+#: c-family/c.opt:905
msgid ""
"Warn of prototypes causing type conversions different from what would happen "
"in the absence of prototype."
msgstr ""
-#: c-family/c.opt:897
+#: c-family/c.opt:909
msgid ""
"Warn if trigraphs are encountered that might affect the meaning of the "
"program."
msgstr ""
-#: c-family/c.opt:901
+#: c-family/c.opt:913
msgid "Warn about @selector()s without previously declared methods."
msgstr ""
-#: c-family/c.opt:905
+#: c-family/c.opt:917
msgid "Warn if an undefined macro is used in an #if directive."
msgstr ""
-#: c-family/c.opt:917
+#: c-family/c.opt:929
msgid "Warn about unrecognized pragmas."
msgstr ""
-#: c-family/c.opt:921
+#: c-family/c.opt:933
msgid "Warn about unsuffixed float constants."
msgstr ""
-#: c-family/c.opt:929
+#: c-family/c.opt:941
msgid "Warn when typedefs locally defined in a function are not used."
msgstr ""
-#: c-family/c.opt:933
+#: c-family/c.opt:945
msgid "Warn about macros defined in the main file that are not used."
msgstr ""
-#: c-family/c.opt:937
+#: c-family/c.opt:949
msgid ""
"Warn if a caller of a function, marked with attribute warn_unused_result, "
"does not use its return value."
msgstr ""
-#: c-family/c.opt:945
+#: c-family/c.opt:957 c-family/c.opt:961
msgid "Warn when a const variable is unused."
msgstr ""
-#: c-family/c.opt:949
+#: c-family/c.opt:965
msgid "Warn about using variadic macros."
msgstr ""
-#: c-family/c.opt:953
+#: c-family/c.opt:969
msgid ""
"Warn about questionable usage of the macros used to retrieve variable "
"arguments."
msgstr ""
-#: c-family/c.opt:957
+#: c-family/c.opt:973
msgid "Warn if a variable length array is used."
msgstr ""
-#: c-family/c.opt:961
+#: c-family/c.opt:977
msgid "Warn when a register variable is declared volatile."
msgstr ""
-#: c-family/c.opt:965
+#: c-family/c.opt:981
msgid "Warn on direct virtual inheritance."
msgstr ""
-#: c-family/c.opt:969
+#: c-family/c.opt:985
msgid "Warn if a virtual base has a non-trivial move assignment operator."
msgstr ""
-#: c-family/c.opt:973
+#: c-family/c.opt:989
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-family/c.opt:977
+#: c-family/c.opt:993
msgid "Warn when a literal '0' is used as null pointer."
msgstr ""
-#: c-family/c.opt:981
+#: c-family/c.opt:997
msgid "Warn about useless casts."
msgstr ""
-#: c-family/c.opt:985
+#: c-family/c.opt:1001
msgid ""
"Warn if a class type has a base or a field whose type uses the anonymous "
"namespace or depends on a type with no linkage."
msgstr ""
-#: c-family/c.opt:989
+#: c-family/c.opt:1005
msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)."
msgstr ""
-#: c-family/c.opt:997
+#: c-family/c.opt:1013
msgid ""
"The version of the C++ ABI used for -Wabi warnings and link compatibility "
"aliases."
msgstr ""
-#: c-family/c.opt:1001
+#: c-family/c.opt:1017
msgid "Enforce class member access control semantics."
msgstr ""
-#: c-family/c.opt:1005
+#: c-family/c.opt:1021
msgid "-fada-spec-parent=unit Dump Ada specs as child units of given parent."
msgstr ""
-#: c-family/c.opt:1012
+#: c-family/c.opt:1028
msgid "Allow variadic functions without named parameter."
msgstr ""
-#: c-family/c.opt:1016 c-family/c.opt:1245 c-family/c.opt:1533
-#: c-family/c.opt:1537 c-family/c.opt:1553
+#: c-family/c.opt:1032 c-family/c.opt:1261 c-family/c.opt:1549
+#: c-family/c.opt:1553 c-family/c.opt:1569
msgid "No longer supported."
msgstr ""
-#: c-family/c.opt:1020
+#: c-family/c.opt:1036
msgid "Recognize the \"asm\" keyword."
msgstr ""
-#: c-family/c.opt:1028
+#: c-family/c.opt:1044
msgid "Recognize built-in functions."
msgstr ""
-#: c-family/c.opt:1035
+#: c-family/c.opt:1051
msgid "Where shorter, use canonicalized paths to systems headers."
msgstr ""
-#: c-family/c.opt:1039
+#: c-family/c.opt:1055
msgid "Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to"
msgstr ""
-#: c-family/c.opt:1044
+#: c-family/c.opt:1060
msgid "Generate pointer bounds checks for variables with incomplete type."
msgstr ""
-#: c-family/c.opt:1048
+#: c-family/c.opt:1064
msgid ""
"Use zero bounds for all incoming arguments in 'main' function. It helps when"
msgstr ""
-#: c-family/c.opt:1053
+#: c-family/c.opt:1069
msgid ""
"Forces Pointer Bounds Checker to use narrowed bounds for address of the first"
msgstr ""
-#: c-family/c.opt:1059
+#: c-family/c.opt:1075
msgid ""
"Control how Pointer Bounds Checker handle pointers to object fields. When"
msgstr ""
-#: c-family/c.opt:1064
+#: c-family/c.opt:1080
msgid ""
"Forces Pointer Bounds Checker to use bounds of the innermost arrays in case "
"of"
msgstr ""
-#: c-family/c.opt:1069
+#: c-family/c.opt:1085
msgid "Allow Pointer Bounds Checker optimizations. By default allowed"
msgstr ""
-#: c-family/c.opt:1074
+#: c-family/c.opt:1090
msgid ""
"Allow to use *_nobnd versions of string functions by Pointer Bounds Checker."
msgstr ""
-#: c-family/c.opt:1078
+#: c-family/c.opt:1094
msgid ""
"Allow to use *_nochk versions of string functions by Pointer Bounds Checker."
msgstr ""
-#: c-family/c.opt:1082
+#: c-family/c.opt:1098
msgid "Use statically initialized variable for vars bounds instead of"
msgstr ""
-#: c-family/c.opt:1087
+#: c-family/c.opt:1103
msgid "Use statically initialized variable for constant bounds instead of"
msgstr ""
-#: c-family/c.opt:1092
+#: c-family/c.opt:1108
msgid "With this option zero size obtained dynamically for objects with"
msgstr ""
-#: c-family/c.opt:1097
+#: c-family/c.opt:1113
msgid "Generate checks for all read accesses to memory."
msgstr ""
-#: c-family/c.opt:1101
+#: c-family/c.opt:1117
msgid "Generate checks for all write accesses to memory."
msgstr ""
-#: c-family/c.opt:1105
+#: c-family/c.opt:1121
msgid "Generate bounds stores for pointer writes."
msgstr ""
-#: c-family/c.opt:1109
+#: c-family/c.opt:1125
msgid "Generate bounds passing for calls."
msgstr ""
-#: c-family/c.opt:1113
+#: c-family/c.opt:1129
msgid "Instrument only functions marked with bnd_instrument attribute."
msgstr ""
-#: c-family/c.opt:1117
+#: c-family/c.opt:1133
msgid "Transform instrumented builtin calls into calls to wrappers."
msgstr ""
-#: c-family/c.opt:1127
+#: c-family/c.opt:1143
msgid "Enable Cilk Plus."
msgstr ""
-#: c-family/c.opt:1131
+#: c-family/c.opt:1147
msgid "Enable support for C++ concepts."
msgstr ""
-#: c-family/c.opt:1135
+#: c-family/c.opt:1151
msgid "Allow the arguments of the '?' operator to have different types."
msgstr ""
-#: c-family/c.opt:1142
+#: c-family/c.opt:1158
#, c-format
msgid "no class name specified with %qs"
msgstr ""
-#: c-family/c.opt:1143
+#: c-family/c.opt:1159
msgid "-fconst-string-class=<name>\tUse class <name> for constant strings."
msgstr ""
-#: c-family/c.opt:1147
+#: c-family/c.opt:1163
msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth."
msgstr ""
-#: c-family/c.opt:1151
+#: c-family/c.opt:1167
msgid "Emit debug annotations during preprocessing."
msgstr ""
-#: c-family/c.opt:1155
+#: c-family/c.opt:1171
msgid ""
"-fdeduce-init-list\tenable deduction of std::initializer_list for a template "
"type parameter from a brace-enclosed initializer-list."
msgstr ""
-#: c-family/c.opt:1159
+#: c-family/c.opt:1175
msgid "Factor complex constructors and destructors to favor space over speed."
msgstr ""
-#: c-family/c.opt:1167
+#: c-family/c.opt:1183
msgid "Preprocess directives only."
msgstr ""
-#: c-family/c.opt:1171
+#: c-family/c.opt:1187
msgid "Permit '$' as an identifier character."
msgstr ""
-#: c-family/c.opt:1175
+#: c-family/c.opt:1191
msgid "Write all declarations as Ada code transitively."
msgstr ""
-#: c-family/c.opt:1179
+#: c-family/c.opt:1195
msgid "Write all declarations as Ada code for the given file only."
msgstr ""
-#: c-family/c.opt:1186
+#: c-family/c.opt:1202
msgid "Generate code to check exception specifications."
msgstr ""
-#: c-family/c.opt:1193
+#: c-family/c.opt:1209
msgid ""
"-fexec-charset=<cset>\tConvert all strings and character constants to "
"character set <cset>."
msgstr ""
-#: c-family/c.opt:1197
+#: c-family/c.opt:1213
msgid "Permit universal character names (\\u and \\U) in identifiers."
msgstr ""
-#: c-family/c.opt:1201
+#: c-family/c.opt:1217
msgid ""
"-finput-charset=<cset>\tSpecify the default character set for source files."
msgstr ""
-#: c-family/c.opt:1205
+#: c-family/c.opt:1221
msgid ""
"Support dynamic initialization of thread-local variables in a different "
"translation unit."
msgstr ""
-#: c-family/c.opt:1212
+#: c-family/c.opt:1228
msgid "Scope of for-init-statement variables is local to the loop."
msgstr ""
-#: c-family/c.opt:1216
+#: c-family/c.opt:1232
msgid "Do not assume that standard C libraries and \"main\" exist."
msgstr ""
-#: c-family/c.opt:1220
+#: c-family/c.opt:1236
msgid "Recognize GNU-defined keywords."
msgstr ""
-#: c-family/c.opt:1224
+#: c-family/c.opt:1240
msgid "Generate code for GNU runtime environment."
msgstr ""
-#: c-family/c.opt:1228
+#: c-family/c.opt:1244
msgid "Use traditional GNU semantics for inline functions."
msgstr ""
-#: c-family/c.opt:1234
+#: c-family/c.opt:1250
msgid ""
"-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
msgstr ""
-#: c-family/c.opt:1241
+#: c-family/c.opt:1257
msgid "Assume normal C execution environment."
msgstr ""
-#: c-family/c.opt:1249
+#: c-family/c.opt:1265
msgid "Export functions even if they can be inlined."
msgstr ""
-#: c-family/c.opt:1253
+#: c-family/c.opt:1269
msgid "Emit implicit instantiations of inline templates."
msgstr ""
-#: c-family/c.opt:1257
+#: c-family/c.opt:1273
msgid "Emit implicit instantiations of templates."
msgstr ""
-#: c-family/c.opt:1261
+#: c-family/c.opt:1277
msgid "Inject friend functions into enclosing namespace."
msgstr ""
-#: c-family/c.opt:1265
+#: c-family/c.opt:1281
msgid "Don't emit dllexported inline functions unless needed."
msgstr ""
-#: c-family/c.opt:1272
+#: c-family/c.opt:1288
msgid ""
"Allow implicit conversions between vectors with differing numbers of "
"subparts and/or differing element types."
msgstr ""
-#: c-family/c.opt:1276
+#: c-family/c.opt:1292
msgid "Don't warn about uses of Microsoft extensions."
msgstr ""
-#: c-family/c.opt:1295
+#: c-family/c.opt:1311
msgid "Generate code for NeXT (Apple Mac OS X) runtime environment."
msgstr ""
-#: c-family/c.opt:1299
+#: c-family/c.opt:1315
msgid "Assume that receivers of Objective-C messages may be nil."
msgstr ""
-#: c-family/c.opt:1303
+#: c-family/c.opt:1319
msgid ""
"Allow access to instance variables as if they were local declarations within "
"instance method implementations."
msgstr ""
-#: c-family/c.opt:1307
+#: c-family/c.opt:1323
msgid ""
"-fvisibility=[private|protected|public|package]\tSet the default symbol "
"visibility."
msgstr ""
-#: c-family/c.opt:1310
+#: c-family/c.opt:1326
#, c-format
msgid "unrecognized ivar visibility value %qs"
msgstr ""
-#: c-family/c.opt:1332
+#: c-family/c.opt:1348
msgid ""
"Treat a throw() exception specification as noexcept to improve code size."
msgstr ""
-#: c-family/c.opt:1336
+#: c-family/c.opt:1352
msgid ""
"Specify which ABI to use for Objective-C family code and meta-data "
"generation."
msgstr ""
-#: c-family/c.opt:1342
+#: c-family/c.opt:1358
msgid ""
"Generate special Objective-C methods to initialize/destroy non-POD C++ "
"ivars, if needed."
msgstr ""
-#: c-family/c.opt:1346
+#: c-family/c.opt:1362
msgid "Allow fast jumps to the message dispatcher."
msgstr ""
-#: c-family/c.opt:1352
+#: c-family/c.opt:1368
msgid "Enable Objective-C exception and synchronization syntax."
msgstr ""
-#: c-family/c.opt:1356
+#: c-family/c.opt:1372
msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs."
msgstr ""
-#: c-family/c.opt:1360
+#: c-family/c.opt:1376
msgid ""
"Enable inline checks for nil receivers with the NeXT runtime and ABI version "
"2."
msgstr ""
-#: c-family/c.opt:1365
+#: c-family/c.opt:1381
msgid "Enable Objective-C setjmp exception handling runtime."
msgstr ""
-#: c-family/c.opt:1369
+#: c-family/c.opt:1385
msgid "Conform to the Objective-C 1.0 language as implemented in GCC 4.0."
msgstr ""
-#: c-family/c.opt:1373
+#: c-family/c.opt:1389
msgid "Enable OpenACC."
msgstr ""
-#: c-family/c.opt:1377
+#: c-family/c.opt:1393
+msgid "Specify default OpenACC compute dimensions."
+msgstr ""
+
+#: c-family/c.opt:1397
msgid "Enable OpenMP (implies -frecursive in Fortran)."
msgstr ""
-#: c-family/c.opt:1381
+#: c-family/c.opt:1401
msgid "Enable OpenMP's SIMD directives."
msgstr ""
-#: c-family/c.opt:1385
+#: c-family/c.opt:1405
msgid "Recognize C++ keywords like \"compl\" and \"xor\"."
msgstr ""
-#: c-family/c.opt:1396
+#: c-family/c.opt:1416
msgid "Look for and use PCH files even when preprocessing."
msgstr ""
-#: c-family/c.opt:1400
+#: c-family/c.opt:1420
msgid "Downgrade conformance errors to warnings."
msgstr ""
-#: c-family/c.opt:1404
+#: c-family/c.opt:1424
msgid "Enable Plan 9 language extensions."
msgstr ""
-#: c-family/c.opt:1408
+#: c-family/c.opt:1428
msgid "Treat the input file as already preprocessed."
msgstr ""
-#: c-family/c.opt:1416
+#: c-family/c.opt:1436
msgid ""
"-ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro "
"expansion and display them in error messages."
msgstr ""
-#: c-family/c.opt:1420
+#: c-family/c.opt:1440
msgid ""
"-fno-pretty-templates Do not pretty-print template specializations as the "
"template signature followed by the arguments."
msgstr ""
-#: c-family/c.opt:1424
+#: c-family/c.opt:1444
msgid ""
"Used in Fix-and-Continue mode to indicate that object files may be swapped "
"in at runtime."
msgstr ""
-#: c-family/c.opt:1428
+#: c-family/c.opt:1448
msgid "Enable automatic template instantiation."
msgstr ""
-#: c-family/c.opt:1432
+#: c-family/c.opt:1452
msgid "Generate run time type descriptor information."
msgstr ""
-#: c-family/c.opt:1436
-msgid "Use the same size for double as for float."
-msgstr ""
-
-#: c-family/c.opt:1440 ada/gcc-interface/lang.opt:77
+#: c-family/c.opt:1456 ada/gcc-interface/lang.opt:77
msgid "Use the narrowest integer type possible for enumeration types."
msgstr ""
-#: c-family/c.opt:1444
+#: c-family/c.opt:1460
msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\"."
msgstr ""
-#: c-family/c.opt:1448
+#: c-family/c.opt:1464
msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed."
msgstr ""
-#: c-family/c.opt:1452 ada/gcc-interface/lang.opt:81
+#: c-family/c.opt:1468 ada/gcc-interface/lang.opt:81
msgid "Make \"char\" signed by default."
msgstr ""
-#: c-family/c.opt:1456
+#: c-family/c.opt:1472
msgid "Enable C++14 sized deallocation support."
msgstr ""
-#: c-family/c.opt:1463
+#: c-family/c.opt:1479
msgid ""
"-fsso-struct=[big-endian|little-endian]\tSet the default scalar storage "
"order."
msgstr ""
-#: c-family/c.opt:1466
+#: c-family/c.opt:1482
#, c-format
msgid "unrecognized scalar storage order value %qs"
msgstr ""
-#: c-family/c.opt:1476
+#: c-family/c.opt:1492
msgid "Display statistics accumulated during compilation."
msgstr ""
-#: c-family/c.opt:1480
+#: c-family/c.opt:1496
msgid ""
"Assume that values of enumeration type are always within the minimum range "
"of that type."
msgstr ""
-#: c-family/c.opt:1487
+#: c-family/c.opt:1503
msgid "-ftabstop=<number>\tDistance between tab stops for column reporting."
msgstr ""
-#: c-family/c.opt:1491
+#: c-family/c.opt:1507
msgid ""
"Set the maximum number of template instantiation notes for a single warning "
"or error."
msgstr ""
-#: c-family/c.opt:1498
+#: c-family/c.opt:1514
msgid ""
"-ftemplate-depth=<number>\tSpecify maximum template instantiation depth."
msgstr ""
-#: c-family/c.opt:1505
+#: c-family/c.opt:1521
msgid ""
"-fno-threadsafe-statics\tDo not generate thread-safe code for initializing "
"local statics."
msgstr ""
-#: c-family/c.opt:1509
+#: c-family/c.opt:1525
msgid ""
"When \"signed\" or \"unsigned\" is not given make the bitfield unsigned."
msgstr ""
-#: c-family/c.opt:1513
+#: c-family/c.opt:1529
msgid "Make \"char\" unsigned by default."
msgstr ""
-#: c-family/c.opt:1517
+#: c-family/c.opt:1533
msgid "Use __cxa_atexit to register destructors."
msgstr ""
-#: c-family/c.opt:1521
+#: c-family/c.opt:1537
msgid "Use __cxa_get_exception_ptr in exception handling."
msgstr ""
-#: c-family/c.opt:1525
+#: c-family/c.opt:1541
msgid "Marks all inlined functions and methods as having hidden visibility."
msgstr ""
-#: c-family/c.opt:1529
+#: c-family/c.opt:1545
msgid "Changes visibility to match Microsoft Visual Studio by default."
msgstr ""
-#: c-family/c.opt:1541
+#: c-family/c.opt:1557
msgid "Emit common-like symbols as weak symbols."
msgstr ""
-#: c-family/c.opt:1545
+#: c-family/c.opt:1561
msgid ""
"-fwide-exec-charset=<cset>\tConvert all wide strings and character constants "
"to character set <cset>."
msgstr ""
-#: c-family/c.opt:1549
+#: c-family/c.opt:1565
msgid "Generate a #line directive pointing at the current working directory."
msgstr ""
-#: c-family/c.opt:1557
+#: c-family/c.opt:1573
msgid ""
"Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode."
msgstr ""
-#: c-family/c.opt:1561
+#: c-family/c.opt:1577
msgid "Dump declarations to a .decl file."
msgstr ""
-#: c-family/c.opt:1565
+#: c-family/c.opt:1581
msgid ""
"-femit-struct-debug-baseonly\tAggressive reduced debug info for structs."
msgstr ""
-#: c-family/c.opt:1569
+#: c-family/c.opt:1585
msgid ""
"-femit-struct-debug-reduced\tConservative reduced debug info for structs."
msgstr ""
-#: c-family/c.opt:1573
+#: c-family/c.opt:1589
msgid ""
"-femit-struct-debug-detailed=<spec-list>\tDetailed reduced debug info for "
"structs."
msgstr ""
-#: c-family/c.opt:1577
+#: c-family/c.opt:1593
msgid ""
"Interpret imaginary, fixed-point, or other gnu number suffix as the "
"corresponding"
msgstr ""
-#: c-family/c.opt:1582
+#: c-family/c.opt:1598
msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path."
msgstr ""
-#: c-family/c.opt:1586
+#: c-family/c.opt:1602
msgid "-imacros <file>\tAccept definition of macros in <file>."
msgstr ""
-#: c-family/c.opt:1590
+#: c-family/c.opt:1606
msgid "-imultilib <dir>\tSet <dir> to be the multilib include subdirectory."
msgstr ""
-#: c-family/c.opt:1594
+#: c-family/c.opt:1610
msgid "-include <file>\tInclude the contents of <file> before other files."
msgstr ""
-#: c-family/c.opt:1598
+#: c-family/c.opt:1614
msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options."
msgstr ""
-#: c-family/c.opt:1602
+#: c-family/c.opt:1618
msgid "-isysroot <dir>\tSet <dir> to be the system root directory."
msgstr ""
-#: c-family/c.opt:1606
+#: c-family/c.opt:1622
msgid "-isystem <dir>\tAdd <dir> to the start of the system include path."
msgstr ""
-#: c-family/c.opt:1610
+#: c-family/c.opt:1626
msgid "-iquote <dir>\tAdd <dir> to the end of the quote include path."
msgstr ""
-#: c-family/c.opt:1614
+#: c-family/c.opt:1630
msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path."
msgstr ""
-#: c-family/c.opt:1618
+#: c-family/c.opt:1634
msgid ""
"-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path."
msgstr ""
-#: c-family/c.opt:1628
+#: c-family/c.opt:1644
msgid ""
"Do not search standard system include directories (those specified with -"
"isystem will still be used)."
msgstr ""
-#: c-family/c.opt:1632
+#: c-family/c.opt:1648
msgid "Do not search standard system include directories for C++."
msgstr ""
-#: c-family/c.opt:1644
+#: c-family/c.opt:1660
msgid "Generate C header of platform-specific features."
msgstr ""
-#: c-family/c.opt:1648
+#: c-family/c.opt:1664
msgid "Remap file names when including files."
msgstr ""
-#: c-family/c.opt:1652 c-family/c.opt:1656
+#: c-family/c.opt:1668 c-family/c.opt:1672
msgid ""
"Conform to the ISO 1998 C++ standard revised by the 2003 technical "
"corrigendum."
msgstr ""
-#: c-family/c.opt:1660
+#: c-family/c.opt:1676
msgid "Conform to the ISO 2011 C++ standard."
msgstr ""
-#: c-family/c.opt:1664
+#: c-family/c.opt:1680
msgid "Deprecated in favor of -std=c++11."
msgstr ""
-#: c-family/c.opt:1668
+#: c-family/c.opt:1684
msgid "Deprecated in favor of -std=c++14."
msgstr ""
-#: c-family/c.opt:1672
+#: c-family/c.opt:1688
msgid "Conform to the ISO 2014 C++ standard."
msgstr ""
-#: c-family/c.opt:1676
+#: c-family/c.opt:1692
msgid ""
"Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete "
"support)."
msgstr ""
-#: c-family/c.opt:1683 c-family/c.opt:1780
+#: c-family/c.opt:1699 c-family/c.opt:1796
msgid "Conform to the ISO 2011 C standard."
msgstr ""
-#: c-family/c.opt:1687
+#: c-family/c.opt:1703
msgid "Deprecated in favor of -std=c11."
msgstr ""
-#: c-family/c.opt:1691 c-family/c.opt:1695 c-family/c.opt:1764
+#: c-family/c.opt:1707 c-family/c.opt:1711 c-family/c.opt:1780
msgid "Conform to the ISO 1990 C standard."
msgstr ""
-#: c-family/c.opt:1699 c-family/c.opt:1772
+#: c-family/c.opt:1715 c-family/c.opt:1788
msgid "Conform to the ISO 1999 C standard."
msgstr ""
-#: c-family/c.opt:1703
+#: c-family/c.opt:1719
msgid "Deprecated in favor of -std=c99."
msgstr ""
-#: c-family/c.opt:1707 c-family/c.opt:1712
+#: c-family/c.opt:1723 c-family/c.opt:1728
msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical"
msgstr ""
-#: c-family/c.opt:1717
+#: c-family/c.opt:1733
msgid "Conform to the ISO 2011 C++ standard with GNU extensions."
msgstr ""
-#: c-family/c.opt:1721
+#: c-family/c.opt:1737
msgid "Deprecated in favor of -std=gnu++11."
msgstr ""
-#: c-family/c.opt:1725
+#: c-family/c.opt:1741
msgid "Deprecated in favor of -std=gnu++14."
msgstr ""
-#: c-family/c.opt:1729
+#: c-family/c.opt:1745
msgid "Conform to the ISO 2014 C++ standard with GNU extensions."
msgstr ""
-#: c-family/c.opt:1733
+#: c-family/c.opt:1749
msgid ""
"Conform to the ISO 201z(7?) C++ draft standard with GNU extensions "
"(experimental and incomplete support)."
msgstr ""
-#: c-family/c.opt:1740
+#: c-family/c.opt:1756
msgid "Conform to the ISO 2011 C standard with GNU extensions."
msgstr ""
-#: c-family/c.opt:1744
+#: c-family/c.opt:1760
msgid "Deprecated in favor of -std=gnu11."
msgstr ""
-#: c-family/c.opt:1748 c-family/c.opt:1752
+#: c-family/c.opt:1764 c-family/c.opt:1768
msgid "Conform to the ISO 1990 C standard with GNU extensions."
msgstr ""
-#: c-family/c.opt:1756
+#: c-family/c.opt:1772
msgid "Conform to the ISO 1999 C standard with GNU extensions."
msgstr ""
-#: c-family/c.opt:1760
+#: c-family/c.opt:1776
msgid "Deprecated in favor of -std=gnu99."
msgstr ""
-#: c-family/c.opt:1768
+#: c-family/c.opt:1784
msgid "Conform to the ISO 1990 C standard as amended in 1994."
msgstr ""
-#: c-family/c.opt:1776
+#: c-family/c.opt:1792
msgid "Deprecated in favor of -std=iso9899:1999."
msgstr ""
-#: c-family/c.opt:1787
+#: c-family/c.opt:1803
msgid "Enable traditional preprocessing."
msgstr ""
-#: c-family/c.opt:1791
+#: c-family/c.opt:1807
msgid "-trigraphs\tSupport ISO C trigraphs."
msgstr ""
-#: c-family/c.opt:1795
+#: c-family/c.opt:1811
msgid "Do not predefine system-specific and GCC-specific macros."
msgstr ""
@@ -8428,7 +8448,7 @@ msgid "PC relative literal loads."
msgstr ""
#: config/aarch64/aarch64.opt:154
-msgid "When calculating a sqrt approximation, run fewer steps."
+msgid "When calculating the reciprocal square root approximation,"
msgstr ""
#: config/linux.opt:24
@@ -8793,6 +8813,10 @@ msgstr ""
msgid "Use LRA instead of reload."
msgstr ""
+#: config/ft32/ft32.opt:31
+msgid "Avoid use of the DIV and MOD instructions"
+msgstr ""
+
#: config/h8300/h8300.opt:23
msgid "Generate H8S code."
msgstr ""
@@ -10205,11 +10229,11 @@ msgstr ""
msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):"
msgstr ""
-#: config/arm/arm-tables.opt:335
+#: config/arm/arm-tables.opt:341
msgid "Known ARM architectures (for use with the -march= option):"
msgstr ""
-#: config/arm/arm-tables.opt:432
+#: config/arm/arm-tables.opt:438
msgid "Known ARM FPUs (for use with the -mfpu= option):"
msgstr ""
@@ -13460,6 +13484,10 @@ msgstr ""
msgid "Enable double load/store instructions for ARC HS."
msgstr ""
+#: config/arc/arc.opt:419
+msgid "Specify the name of the target floating point configuration."
+msgstr ""
+
#: java/lang.opt:122
msgid "Warn if deprecated empty statements are found."
msgstr ""
@@ -13725,1831 +13753,1839 @@ msgid ""
msgstr ""
#: common.opt:621
+msgid "Warn if comparing pointer parameter with nonnull attribute with NULL."
+msgstr ""
+
+#: common.opt:625
msgid ""
"Warn if dereferencing a NULL pointer may lead to erroneous or undefined "
"behavior."
msgstr ""
-#: common.opt:625
+#: common.opt:629
msgid "Warn if the loop cannot be optimized due to nontrivial assumptions."
msgstr ""
-#: common.opt:632
+#: common.opt:636
msgid ""
"Warn about some C++ One Definition Rule violations during link time "
"optimization."
msgstr ""
-#: common.opt:636
+#: common.opt:640
msgid "Warn about overflow in arithmetic expressions."
msgstr ""
-#: common.opt:640
+#: common.opt:644
msgid ""
"During link time optimization warn about mismatched types of global "
"declarations."
msgstr ""
-#: common.opt:644
+#: common.opt:648
msgid "Warn when the packed attribute has no effect on struct layout."
msgstr ""
-#: common.opt:648
+#: common.opt:652
msgid "Warn when padding is required to align structure members."
msgstr ""
-#: common.opt:652
+#: common.opt:656
msgid "Issue warnings needed for strict compliance to the standard."
msgstr ""
-#: common.opt:656
+#: common.opt:660
msgid ""
"Warn about returning a pointer/reference to a local or temporary variable."
msgstr ""
-#: common.opt:660
+#: common.opt:664
msgid "Warn when one local variable shadows another."
msgstr ""
-#: common.opt:664
+#: common.opt:668
msgid "Warn when not issuing stack smashing protection for some reason."
msgstr ""
-#: common.opt:668
+#: common.opt:672
msgid "Warn if stack usage might be larger than specified amount."
msgstr ""
-#: common.opt:672 common.opt:676
+#: common.opt:676 common.opt:680
msgid "Warn about code which might break strict aliasing rules."
msgstr ""
-#: common.opt:680 common.opt:684
+#: common.opt:684 common.opt:688
msgid "Warn about optimizations that assume that signed overflow is undefined."
msgstr ""
-#: common.opt:688
+#: common.opt:692
msgid ""
"Warn about functions which might be candidates for __attribute__((const))."
msgstr ""
-#: common.opt:692
+#: common.opt:696
msgid ""
"Warn about functions which might be candidates for __attribute__((pure))."
msgstr ""
-#: common.opt:696
+#: common.opt:700
msgid ""
"Warn about functions which might be candidates for __attribute__((noreturn))."
msgstr ""
-#: common.opt:700
+#: common.opt:704
msgid ""
"Warn about C++ polymorphic types where adding final keyword would improve "
"code quality."
msgstr ""
-#: common.opt:704
+#: common.opt:708
msgid ""
"Warn about C++ virtual methods where adding final keyword would improve code "
"quality."
msgstr ""
-#: common.opt:708
+#: common.opt:712
msgid "Do not suppress warnings from system headers."
msgstr ""
-#: common.opt:712
+#: common.opt:716
msgid "Warn whenever a trampoline is generated."
msgstr ""
-#: common.opt:716
+#: common.opt:720
msgid ""
"Warn if a comparison is always true or always false due to the limited range "
"of the data type."
msgstr ""
-#: common.opt:720
+#: common.opt:724
msgid "Warn about uninitialized automatic variables."
msgstr ""
-#: common.opt:724
+#: common.opt:728
msgid "Warn about maybe uninitialized automatic variables."
msgstr ""
-#: common.opt:732
+#: common.opt:736
msgid "Enable all -Wunused- warnings."
msgstr ""
-#: common.opt:736
+#: common.opt:740
msgid "Warn when a function parameter is only set, otherwise unused."
msgstr ""
-#: common.opt:740
+#: common.opt:744
msgid "Warn when a variable is only set, otherwise unused."
msgstr ""
-#: common.opt:744
+#: common.opt:748
msgid "Warn when a function is unused."
msgstr ""
-#: common.opt:748
+#: common.opt:752
msgid "Warn when a label is unused."
msgstr ""
-#: common.opt:752
+#: common.opt:756
msgid "Warn when a function parameter is unused."
msgstr ""
-#: common.opt:756
+#: common.opt:760
msgid "Warn when an expression value is unused."
msgstr ""
-#: common.opt:760
+#: common.opt:764
msgid "Warn when a variable is unused."
msgstr ""
-#: common.opt:764
+#: common.opt:768
msgid "Warn in case profiles in -fprofile-use do not match."
msgstr ""
-#: common.opt:768
+#: common.opt:772
msgid "Warn when a vector operation is compiled outside the SIMD."
msgstr ""
-#: common.opt:784
+#: common.opt:788
msgid "-aux-info <file>\tEmit declaration information into <file>."
msgstr ""
-#: common.opt:803
+#: common.opt:807
msgid "-d<letters>\tEnable dumps from specific passes of the compiler."
msgstr ""
-#: common.opt:807
+#: common.opt:811
msgid "-dumpbase <file>\tSet the file basename to be used for dumps."
msgstr ""
-#: common.opt:811
+#: common.opt:815
msgid "-dumpdir <dir>\tSet the directory name to be used for dumps."
msgstr ""
-#: common.opt:880
+#: common.opt:884
msgid "The version of the C++ ABI in use."
msgstr ""
-#: common.opt:884
+#: common.opt:888
msgid "Aggressively optimize loops using language constraints."
msgstr ""
-#: common.opt:888
+#: common.opt:892
msgid "Align the start of functions."
msgstr ""
-#: common.opt:895
+#: common.opt:899
msgid "Align labels which are only reached by jumping."
msgstr ""
-#: common.opt:902
+#: common.opt:906
msgid "Align all labels."
msgstr ""
-#: common.opt:909
+#: common.opt:913
msgid "Align the start of loops."
msgstr ""
-#: common.opt:932
+#: common.opt:936
msgid "Select what to sanitize."
msgstr ""
-#: common.opt:936
+#: common.opt:940
msgid "-fasan-shadow-offset=<number>\tUse custom shadow memory offset."
msgstr ""
-#: common.opt:940
+#: common.opt:944
msgid "-fsanitize-sections=<sec1,sec2,...>\tSanitize global variables"
msgstr ""
-#: common.opt:945
+#: common.opt:949
msgid "After diagnosing undefined behavior attempt to continue execution."
msgstr ""
-#: common.opt:949
+#: common.opt:953
msgid "This switch is deprecated; use -fsanitize-recover= instead."
msgstr ""
-#: common.opt:953
+#: common.opt:957
msgid ""
"Use trap instead of a library function for undefined behavior sanitization."
msgstr ""
-#: common.opt:957
+#: common.opt:961
msgid "Generate unwind tables that are exact at each instruction boundary."
msgstr ""
-#: common.opt:961
+#: common.opt:965
msgid "Generate auto-inc/dec instructions."
msgstr ""
-#: common.opt:965
+#: common.opt:969
msgid "Use sample profile information for call graph node weights. The default"
msgstr ""
-#: common.opt:970
+#: common.opt:974
msgid "Use sample profile information for call graph node weights. The profile"
msgstr ""
-#: common.opt:979
+#: common.opt:983
msgid "Generate code to check bounds before indexing arrays."
msgstr ""
-#: common.opt:983
+#: common.opt:987
msgid "Replace add, compare, branch with branch on count register."
msgstr ""
-#: common.opt:987
+#: common.opt:991
msgid "Use profiling information for branch probabilities."
msgstr ""
-#: common.opt:991
+#: common.opt:995
msgid ""
"Perform branch target load optimization before prologue / epilogue threading."
msgstr ""
-#: common.opt:995
+#: common.opt:999
msgid ""
"Perform branch target load optimization after prologue / epilogue threading."
msgstr ""
-#: common.opt:999
+#: common.opt:1003
msgid ""
"Restrict target load migration not to re-use registers in any basic block."
msgstr ""
-#: common.opt:1003
+#: common.opt:1007
msgid ""
"-fcall-saved-<register>\tMark <register> as being preserved across functions."
msgstr ""
-#: common.opt:1007
+#: common.opt:1011
msgid ""
"-fcall-used-<register>\tMark <register> as being corrupted by function calls."
msgstr ""
-#: common.opt:1014
+#: common.opt:1018
msgid "Save registers around function calls."
msgstr ""
-#: common.opt:1018
+#: common.opt:1022
msgid "This switch is deprecated; do not use."
msgstr ""
-#: common.opt:1022
+#: common.opt:1026
msgid "Check the return value of new in C++."
msgstr ""
-#: common.opt:1026
+#: common.opt:1030
msgid "Perform internal consistency checkings."
msgstr ""
-#: common.opt:1030
+#: common.opt:1034
msgid ""
"Looks for opportunities to reduce stack adjustments and stack references."
msgstr ""
-#: common.opt:1034
+#: common.opt:1038
msgid "Do not put uninitialized globals in the common section."
msgstr ""
-#: common.opt:1042
+#: common.opt:1046
msgid ""
"-fcompare-debug[=<opts>]\tCompile with and without e.g. -gtoggle, and "
"compare the final-insns dump."
msgstr ""
-#: common.opt:1046
+#: common.opt:1050
msgid "Run only the second compilation of -fcompare-debug."
msgstr ""
-#: common.opt:1050
+#: common.opt:1054
msgid "Perform comparison elimination after register allocation has finished."
msgstr ""
-#: common.opt:1054
+#: common.opt:1058
msgid "Do not perform optimizations increasing noticeably stack usage."
msgstr ""
-#: common.opt:1058
+#: common.opt:1062
msgid "Perform a register copy-propagation optimization pass."
msgstr ""
-#: common.opt:1062
+#: common.opt:1066
msgid "Perform cross-jumping optimization."
msgstr ""
-#: common.opt:1066
+#: common.opt:1070
msgid "When running CSE, follow jumps to their targets."
msgstr ""
-#: common.opt:1074
+#: common.opt:1078
msgid "Omit range reduction step when performing complex division."
msgstr ""
-#: common.opt:1078
+#: common.opt:1082
msgid "Complex multiplication and division follow Fortran rules."
msgstr ""
-#: common.opt:1082
+#: common.opt:1086
msgid "Place data items into their own section."
msgstr ""
-#: common.opt:1086
+#: common.opt:1090
msgid "List all available debugging counters with their limits and counts."
msgstr ""
-#: common.opt:1090
+#: common.opt:1094
msgid ""
"-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]\tSet the debug counter "
"limit."
msgstr ""
-#: common.opt:1094
+#: common.opt:1098
msgid "Map one directory name to another in debug information."
msgstr ""
-#: common.opt:1098
+#: common.opt:1102
msgid "Output .debug_types section when using DWARF v4 debuginfo."
msgstr ""
-#: common.opt:1104
+#: common.opt:1108
msgid "Defer popping functions args from stack until later."
msgstr ""
-#: common.opt:1108
+#: common.opt:1112
msgid "Attempt to fill delay slots of branch instructions."
msgstr ""
-#: common.opt:1112
+#: common.opt:1116
msgid "Delete dead instructions that may throw exceptions."
msgstr ""
-#: common.opt:1116
+#: common.opt:1120
msgid "Delete useless null pointer checks."
msgstr ""
-#: common.opt:1120
+#: common.opt:1124
msgid ""
"Stream extra data to support more aggressive devirtualization in LTO local "
"transformation mode."
msgstr ""
-#: common.opt:1124
+#: common.opt:1128
msgid "Perform speculative devirtualization."
msgstr ""
-#: common.opt:1128
+#: common.opt:1132
msgid "Try to convert virtual calls to direct ones."
msgstr ""
-#: common.opt:1132
+#: common.opt:1136
msgid ""
"-fdiagnostics-show-location=[once|every-line]\tHow often to emit source "
"location at the beginning of line-wrapped diagnostics."
msgstr ""
-#: common.opt:1149
+#: common.opt:1153
msgid "Show the source line with a caret indicating the column."
msgstr ""
-#: common.opt:1157
+#: common.opt:1161
msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics."
msgstr ""
-#: common.opt:1177
+#: common.opt:1181
msgid ""
"Amend appropriate diagnostic messages with the command line option that "
"controls them."
msgstr ""
-#: common.opt:1181
+#: common.opt:1185
msgid ""
"-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass."
msgstr ""
-#: common.opt:1185
+#: common.opt:1189
msgid ""
"-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass."
msgstr ""
-#: common.opt:1189
+#: common.opt:1193
msgid "-fdump-<type>\tDump various compiler internals to a file."
msgstr ""
-#: common.opt:1196
+#: common.opt:1200
msgid ""
"-fdump-final-insns=filename\tDump to filename the insns at the end of "
"translation."
msgstr ""
-#: common.opt:1200
+#: common.opt:1204
msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code."
msgstr ""
-#: common.opt:1204
+#: common.opt:1208
msgid "Suppress output of addresses in debugging dumps."
msgstr ""
-#: common.opt:1208
+#: common.opt:1212
msgid "Collect and dump debug information into temporary file if ICE in C/C++"
msgstr ""
-#: common.opt:1213
+#: common.opt:1217
msgid ""
"Dump detailed information on GCC's internal representation of source code "
"locations."
msgstr ""
-#: common.opt:1217
+#: common.opt:1221
msgid "Dump optimization passes."
msgstr ""
-#: common.opt:1221
+#: common.opt:1225
msgid ""
"Suppress output of instruction numbers, line number notes and addresses in "
"debugging dumps."
msgstr ""
-#: common.opt:1225
+#: common.opt:1229
msgid "Suppress output of previous and next insn numbers in debugging dumps."
msgstr ""
-#: common.opt:1229
+#: common.opt:1233
msgid "Enable CFI tables via GAS assembler directives."
msgstr ""
-#: common.opt:1233
+#: common.opt:1237
msgid "Perform early inlining."
msgstr ""
-#: common.opt:1237
+#: common.opt:1241
msgid "Perform DWARF duplicate elimination."
msgstr ""
-#: common.opt:1241
+#: common.opt:1245
msgid "Perform interprocedural reduction of aggregates."
msgstr ""
-#: common.opt:1245
+#: common.opt:1249
msgid "Perform unused symbol elimination in debug info."
msgstr ""
-#: common.opt:1249
+#: common.opt:1253
msgid "Perform unused type elimination in debug info."
msgstr ""
-#: common.opt:1253
+#: common.opt:1257
msgid "Do not suppress C++ class debug information."
msgstr ""
-#: common.opt:1257
+#: common.opt:1261
msgid "Enable exception handling."
msgstr ""
-#: common.opt:1261
+#: common.opt:1265
msgid "Perform a number of minor, expensive optimizations."
msgstr ""
-#: common.opt:1265
+#: common.opt:1269
msgid ""
"-fexcess-precision=[fast|standard]\tSpecify handling of excess floating-"
"point precision."
msgstr ""
-#: common.opt:1268
+#: common.opt:1272
#, c-format
msgid "unknown excess precision style %qs"
msgstr ""
-#: common.opt:1281
+#: common.opt:1285
msgid ""
"Output lto objects containing both the intermediate language and binary "
"output."
msgstr ""
-#: common.opt:1285
+#: common.opt:1289
msgid "Assume no NaNs or infinities are generated."
msgstr ""
-#: common.opt:1289
+#: common.opt:1293
msgid ""
"-ffixed-<register>\tMark <register> as being unavailable to the compiler."
msgstr ""
-#: common.opt:1293
+#: common.opt:1297
msgid "Don't allocate floats and doubles in extended-precision registers."
msgstr ""
-#: common.opt:1301
+#: common.opt:1305
msgid "Perform a forward propagation pass on RTL."
msgstr ""
-#: common.opt:1305
+#: common.opt:1309
msgid ""
"-ffp-contract=[off|on|fast] Perform floating-point expression contraction."
msgstr ""
-#: common.opt:1308
+#: common.opt:1312
#, c-format
msgid "unknown floating point contraction style %qs"
msgstr ""
-#: common.opt:1325
+#: common.opt:1329
msgid "Allow function addresses to be held in registers."
msgstr ""
-#: common.opt:1329
+#: common.opt:1333
msgid "Place each function into its own section."
msgstr ""
-#: common.opt:1333
+#: common.opt:1337
msgid "Perform global common subexpression elimination."
msgstr ""
-#: common.opt:1337
+#: common.opt:1341
msgid ""
"Perform enhanced load motion during global common subexpression elimination."
msgstr ""
-#: common.opt:1341
+#: common.opt:1345
msgid "Perform store motion after global common subexpression elimination."
msgstr ""
-#: common.opt:1345
+#: common.opt:1349
msgid ""
"Perform redundant load after store elimination in global common subexpression"
msgstr ""
-#: common.opt:1350
+#: common.opt:1354
msgid ""
"Perform global common subexpression elimination after register allocation has"
msgstr ""
-#: common.opt:1367
+#: common.opt:1371
msgid ""
"-fgnat-encodings=[all|gdb|minimal]\tSelect the balance between GNAT "
"encodings and standard DWARF emitted in the debug information"
msgstr ""
-#: common.opt:1372
+#: common.opt:1376
msgid "Enable in and out of Graphite representation."
msgstr ""
-#: common.opt:1376
+#: common.opt:1380
msgid "Enable Graphite Identity transformation."
msgstr ""
-#: common.opt:1380
+#: common.opt:1384
msgid "Enable hoisting adjacent loads to encourage generating conditional move"
msgstr ""
-#: common.opt:1389
+#: common.opt:1393
msgid "Mark all loops as parallel."
msgstr ""
-#: common.opt:1393 common.opt:1397 common.opt:1401 common.opt:1405
-#: common.opt:2388
+#: common.opt:1397 common.opt:1401 common.opt:1405 common.opt:1409
+#: common.opt:2395
msgid "Enable loop nest transforms. Same as -floop-nest-optimize."
msgstr ""
-#: common.opt:1409
+#: common.opt:1413
msgid "Enable support for GNU transactional memory."
msgstr ""
-#: common.opt:1413
+#: common.opt:1417
msgid "Use STB_GNU_UNIQUE if supported by the assembler."
msgstr ""
-#: common.opt:1421
+#: common.opt:1425
msgid "Enable the loop nest optimizer."
msgstr ""
-#: common.opt:1425
+#: common.opt:1429
msgid "Force bitfield accesses to match their type width."
msgstr ""
-#: common.opt:1429
+#: common.opt:1433
msgid "Enable guessing of branch probabilities."
msgstr ""
-#: common.opt:1437
+#: common.opt:1441
msgid "Process #ident directives."
msgstr ""
-#: common.opt:1441
+#: common.opt:1445
msgid "Perform conversion of conditional jumps to branchless equivalents."
msgstr ""
-#: common.opt:1445
+#: common.opt:1449
msgid "Perform conversion of conditional jumps to conditional execution."
msgstr ""
-#: common.opt:1449
+#: common.opt:1453
msgid ""
"-fstack-reuse=[all|named_vars|none] Set stack reuse level for local "
"variables."
msgstr ""
-#: common.opt:1452
+#: common.opt:1456
#, c-format
msgid "unknown Stack Reuse Level %qs"
msgstr ""
-#: common.opt:1465
+#: common.opt:1469
msgid "Convert conditional jumps in innermost loops to branchless equivalents."
msgstr ""
-#: common.opt:1469
+#: common.opt:1473
msgid "Also if-convert conditional jumps containing memory writes."
msgstr ""
-#: common.opt:1477
+#: common.opt:1481
msgid "Do not generate .size directives."
msgstr ""
-#: common.opt:1481
+#: common.opt:1485
msgid "Perform indirect inlining."
msgstr ""
-#: common.opt:1487
+#: common.opt:1491
msgid ""
"Enable inlining of function declared \"inline\", disabling disables all "
"inlining."
msgstr ""
-#: common.opt:1491
+#: common.opt:1495
msgid ""
"Integrate functions into their callers when code size is known not to grow."
msgstr ""
-#: common.opt:1495
+#: common.opt:1499
msgid ""
"Integrate functions not declared \"inline\" into their callers when "
"profitable."
msgstr ""
-#: common.opt:1499
+#: common.opt:1503
msgid "Integrate functions only required by their single caller."
msgstr ""
-#: common.opt:1506
+#: common.opt:1510
msgid ""
"-finline-limit=<number>\tLimit the size of inlined functions to <number>."
msgstr ""
-#: common.opt:1510
+#: common.opt:1514
msgid ""
"Inline __atomic operations when a lock free instruction sequence is "
"available."
msgstr ""
-#: common.opt:1514
+#: common.opt:1518
msgid "Instrument function entry and exit with profiling calls."
msgstr ""
-#: common.opt:1518
+#: common.opt:1522
msgid ""
"-finstrument-functions-exclude-function-list=name,... Do not instrument "
"listed functions."
msgstr ""
-#: common.opt:1522
+#: common.opt:1526
msgid ""
"-finstrument-functions-exclude-file-list=filename,... Do not instrument "
"functions listed in files."
msgstr ""
-#: common.opt:1526
+#: common.opt:1530
msgid "Perform interprocedural constant propagation."
msgstr ""
-#: common.opt:1530
+#: common.opt:1534
msgid "Perform cloning to make Interprocedural constant propagation stronger."
msgstr ""
-#: common.opt:1534
+#: common.opt:1538
msgid ""
"Perform alignment discovery and propagation to make Interprocedural constant "
"propagation stronger."
msgstr ""
-#: common.opt:1538
+#: common.opt:1542
msgid "Perform interprocedural profile propagation."
msgstr ""
-#: common.opt:1542
+#: common.opt:1546
msgid "Perform interprocedural points-to analysis."
msgstr ""
-#: common.opt:1546
+#: common.opt:1550
msgid "Discover pure and const functions."
msgstr ""
-#: common.opt:1550
+#: common.opt:1554
msgid "Perform Identical Code Folding for functions and read-only variables."
msgstr ""
-#: common.opt:1554
+#: common.opt:1558
msgid "Perform Identical Code Folding for functions."
msgstr ""
-#: common.opt:1558
+#: common.opt:1562
msgid "Perform Identical Code Folding for variables."
msgstr ""
-#: common.opt:1562
+#: common.opt:1566
msgid "Discover readonly and non addressable static variables."
msgstr ""
-#: common.opt:1574
+#: common.opt:1578
msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm."
msgstr ""
-#: common.opt:1577
+#: common.opt:1581
#, c-format
msgid "unknown IRA algorithm %qs"
msgstr ""
-#: common.opt:1587
+#: common.opt:1591
msgid "-fira-region=[one|all|mixed] Set regions for IRA."
msgstr ""
-#: common.opt:1590
+#: common.opt:1594
#, c-format
msgid "unknown IRA region %qs"
msgstr ""
-#: common.opt:1603 common.opt:1608
+#: common.opt:1607 common.opt:1612
msgid "Use IRA based register pressure calculation"
msgstr ""
-#: common.opt:1613
+#: common.opt:1617
msgid "Share slots for saving different hard registers."
msgstr ""
-#: common.opt:1617
+#: common.opt:1621
msgid "Share stack slots for spilled pseudo-registers."
msgstr ""
-#: common.opt:1621
+#: common.opt:1625
msgid "-fira-verbose=<number>\tControl IRA's level of diagnostic messages."
msgstr ""
-#: common.opt:1625
+#: common.opt:1629
msgid "Optimize induction variables on trees."
msgstr ""
-#: common.opt:1629
+#: common.opt:1633
msgid "Use jump tables for sufficiently large switch statements."
msgstr ""
-#: common.opt:1633
+#: common.opt:1637
msgid "Generate code for functions even if they are fully inlined."
msgstr ""
-#: common.opt:1637
+#: common.opt:1641
msgid "Generate code for static functions even if they are never called."
msgstr ""
-#: common.opt:1641
+#: common.opt:1645
msgid "Emit static const variables even if they are not used."
msgstr ""
-#: common.opt:1645
+#: common.opt:1649
msgid "Give external symbols a leading underscore."
msgstr ""
-#: common.opt:1653
+#: common.opt:1657
msgid "Do CFG-sensitive rematerialization in LRA."
msgstr ""
-#: common.opt:1657
+#: common.opt:1661
msgid "Enable link-time optimization."
msgstr ""
-#: common.opt:1661
+#: common.opt:1665
msgid "Link-time optimization with number of parallel jobs or jobserver."
msgstr ""
-#: common.opt:1664
+#: common.opt:1668
#, c-format
msgid "unknown LTO partitioning model %qs"
msgstr ""
-#: common.opt:1683
+#: common.opt:1687
msgid "Specify the algorithm to partition symbols and vars at linktime."
msgstr ""
-#: common.opt:1688
+#: common.opt:1692
msgid ""
"-flto-compression-level=<number>\tUse zlib compression level <number> for IL."
msgstr ""
-#: common.opt:1692
+#: common.opt:1696
msgid "Merge C++ types using One Definition Rule."
msgstr ""
-#: common.opt:1696
+#: common.opt:1700
msgid "Report various link-time optimization statistics."
msgstr ""
-#: common.opt:1700
+#: common.opt:1704
msgid "Report various link-time optimization statistics for WPA only."
msgstr ""
-#: common.opt:1704
+#: common.opt:1708
msgid "Set errno after built-in math functions."
msgstr ""
-#: common.opt:1708
+#: common.opt:1712
msgid "-fmax-errors=<number>\tMaximum number of errors to report."
msgstr ""
-#: common.opt:1712
+#: common.opt:1716
msgid "Report on permanent memory allocation."
msgstr ""
-#: common.opt:1716
+#: common.opt:1720
msgid "Report on permanent memory allocation in WPA only."
msgstr ""
-#: common.opt:1723
+#: common.opt:1727
msgid "Attempt to merge identical constants and constant variables."
msgstr ""
-#: common.opt:1727
+#: common.opt:1731
msgid "Attempt to merge identical constants across compilation units."
msgstr ""
-#: common.opt:1731
+#: common.opt:1735
msgid "Attempt to merge identical debug strings across compilation units."
msgstr ""
-#: common.opt:1735
+#: common.opt:1739
msgid ""
"-fmessage-length=<number>\tLimit diagnostics to <number> characters per "
"line. 0 suppresses line-wrapping."
msgstr ""
-#: common.opt:1739
+#: common.opt:1743
msgid "Perform SMS based modulo scheduling before the first scheduling pass."
msgstr ""
-#: common.opt:1743
+#: common.opt:1747
msgid "Perform SMS based modulo scheduling with register moves allowed."
msgstr ""
-#: common.opt:1747
+#: common.opt:1751
msgid "Move loop invariant computations out of loops."
msgstr ""
-#: common.opt:1751
+#: common.opt:1755
msgid "Use the RTL dead code elimination pass."
msgstr ""
-#: common.opt:1755
+#: common.opt:1759
msgid "Use the RTL dead store elimination pass."
msgstr ""
-#: common.opt:1759
+#: common.opt:1763
msgid ""
"Enable/Disable the traditional scheduling in loops that already passed "
"modulo scheduling."
msgstr ""
-#: common.opt:1763
+#: common.opt:1767
msgid "Support synchronous non-call exceptions."
msgstr ""
-#: common.opt:1766
+#: common.opt:1770
#, c-format
msgid "options or targets missing after %qs"
msgstr ""
-#: common.opt:1767
+#: common.opt:1771
msgid ""
"-foffload=<targets>=<options> Specify offloading targets and options for "
"them."
msgstr ""
-#: common.opt:1771
+#: common.opt:1775
msgid ""
"-foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler."
msgstr ""
-#: common.opt:1774
+#: common.opt:1778
#, c-format
msgid "unknown offload ABI %qs"
msgstr ""
-#: common.opt:1784
+#: common.opt:1788
msgid "When possible do not generate stack frames."
msgstr ""
-#: common.opt:1788
+#: common.opt:1792
msgid "Enable all optimization info dumps on stderr."
msgstr ""
-#: common.opt:1792
+#: common.opt:1796
msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
msgstr ""
-#: common.opt:1800
+#: common.opt:1804
msgid "Optimize sibling and tail recursive calls."
msgstr ""
-#: common.opt:1804
+#: common.opt:1808
msgid "Perform partial inlining."
msgstr ""
-#: common.opt:1808 common.opt:1812
+#: common.opt:1812 common.opt:1816
msgid "Report on memory allocation before interprocedural optimization."
msgstr ""
-#: common.opt:1816
+#: common.opt:1820
msgid "Pack structure members together without holes."
msgstr ""
-#: common.opt:1820
+#: common.opt:1824
msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
msgstr ""
-#: common.opt:1824
+#: common.opt:1828
msgid "Return small aggregates in memory, not registers."
msgstr ""
-#: common.opt:1828
+#: common.opt:1832
msgid "Perform loop peeling."
msgstr ""
-#: common.opt:1832
+#: common.opt:1836
msgid "Enable machine specific peephole optimizations."
msgstr ""
-#: common.opt:1836
+#: common.opt:1840
msgid "Enable an RTL peephole pass before sched2."
msgstr ""
-#: common.opt:1840
+#: common.opt:1844
msgid "Generate position-independent code if possible (large mode)."
msgstr ""
-#: common.opt:1844
+#: common.opt:1848
msgid ""
"Generate position-independent code for executables if possible (large mode)."
msgstr ""
-#: common.opt:1848
+#: common.opt:1852
msgid "Generate position-independent code if possible (small mode)."
msgstr ""
-#: common.opt:1852
+#: common.opt:1856
msgid ""
"Generate position-independent code for executables if possible (small mode)."
msgstr ""
-#: common.opt:1856
+#: common.opt:1860
msgid ""
"Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
msgstr ""
-#: common.opt:1860
+#: common.opt:1864
msgid "Specify a plugin to load."
msgstr ""
-#: common.opt:1864
+#: common.opt:1868
msgid ""
"-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for "
"plugin <name>."
msgstr ""
-#: common.opt:1868
+#: common.opt:1872
msgid "Run predictive commoning optimization."
msgstr ""
-#: common.opt:1872
+#: common.opt:1876
msgid "Generate prefetch instructions, if available, for arrays in loops."
msgstr ""
-#: common.opt:1876
+#: common.opt:1880
msgid "Enable basic program profiling code."
msgstr ""
-#: common.opt:1880
+#: common.opt:1884
msgid "Insert arc-based program profiling code."
msgstr ""
-#: common.opt:1884
+#: common.opt:1888
msgid "Set the top-level directory for storing the profile data."
msgstr ""
-#: common.opt:1889
+#: common.opt:1893
msgid "Enable correction of flow inconsistent profile data input."
msgstr ""
-#: common.opt:1893
+#: common.opt:1897
msgid ""
"Enable common options for generating profile info for profile feedback "
"directed optimizations."
msgstr ""
-#: common.opt:1897
+#: common.opt:1901
msgid ""
"Enable common options for generating profile info for profile feedback "
"directed optimizations, and set -fprofile-dir=."
msgstr ""
-#: common.opt:1901
+#: common.opt:1905
msgid ""
"Enable common options for performing profile feedback directed optimizations."
msgstr ""
-#: common.opt:1905
+#: common.opt:1909
msgid ""
"Enable common options for performing profile feedback directed "
"optimizations, and set -fprofile-dir=."
msgstr ""
-#: common.opt:1909
+#: common.opt:1913
msgid "Insert code to profile values of expressions."
msgstr ""
-#: common.opt:1913
+#: common.opt:1917
msgid "Report on consistency of profile."
msgstr ""
-#: common.opt:1917
+#: common.opt:1921
msgid "Enable function reordering that improves code placement."
msgstr ""
-#: common.opt:1924
+#: common.opt:1928
msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
msgstr ""
-#: common.opt:1934
+#: common.opt:1938
msgid "Record gcc command line switches in the object file."
msgstr ""
-#: common.opt:1938
+#: common.opt:1942
msgid "Return small aggregates in registers."
msgstr ""
-#: common.opt:1946
+#: common.opt:1950
msgid "Tell DSE that the storage for a C++ object is dead when the constructor"
msgstr ""
-#: common.opt:1951
+#: common.opt:1958
msgid "Relief of register pressure through live range shrinkage."
msgstr ""
-#: common.opt:1955
+#: common.opt:1962
msgid "Perform a register renaming optimization pass."
msgstr ""
-#: common.opt:1959
+#: common.opt:1966
msgid "Perform a target dependent instruction fusion optimization pass."
msgstr ""
-#: common.opt:1963
+#: common.opt:1970
msgid "Reorder basic blocks to improve code placement."
msgstr ""
-#: common.opt:1967
+#: common.opt:1974
msgid ""
"-freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering "
"algorithm."
msgstr ""
-#: common.opt:1970
+#: common.opt:1977
#, c-format
msgid "unknown basic block reordering algorithm %qs"
msgstr ""
-#: common.opt:1980
+#: common.opt:1987
msgid "Reorder basic blocks and partition into hot and cold sections."
msgstr ""
-#: common.opt:1984
+#: common.opt:1991
msgid "Reorder functions to improve code placement."
msgstr ""
-#: common.opt:1988
+#: common.opt:1995
msgid "Add a common subexpression elimination pass after loop optimizations."
msgstr ""
-#: common.opt:1996
+#: common.opt:2003
msgid "Disable optimizations that assume default FP rounding behavior."
msgstr ""
-#: common.opt:2000
+#: common.opt:2007
msgid "Enable scheduling across basic blocks."
msgstr ""
-#: common.opt:2004
+#: common.opt:2011
msgid "Enable register pressure sensitive insn scheduling."
msgstr ""
-#: common.opt:2008
+#: common.opt:2015
msgid "Allow speculative motion of non-loads."
msgstr ""
-#: common.opt:2012
+#: common.opt:2019
msgid "Allow speculative motion of some loads."
msgstr ""
-#: common.opt:2016
+#: common.opt:2023
msgid "Allow speculative motion of more loads."
msgstr ""
-#: common.opt:2020
+#: common.opt:2027
msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
msgstr ""
-#: common.opt:2024
+#: common.opt:2031
msgid "If scheduling post reload, do superblock scheduling."
msgstr ""
-#: common.opt:2032
+#: common.opt:2039
msgid "Reschedule instructions before register allocation."
msgstr ""
-#: common.opt:2036
+#: common.opt:2043
msgid "Reschedule instructions after register allocation."
msgstr ""
-#: common.opt:2043
+#: common.opt:2050
msgid "Schedule instructions using selective scheduling algorithm."
msgstr ""
-#: common.opt:2047
+#: common.opt:2054
msgid "Run selective scheduling after reload."
msgstr ""
-#: common.opt:2051
+#: common.opt:2058
msgid "Perform software pipelining of inner loops during selective scheduling."
msgstr ""
-#: common.opt:2055
+#: common.opt:2062
msgid "Perform software pipelining of outer loops during selective scheduling."
msgstr ""
-#: common.opt:2059
+#: common.opt:2066
msgid "Reschedule pipelined regions without pipelining."
msgstr ""
-#: common.opt:2063
+#: common.opt:2070
msgid ""
"Allow interposing function (or variables) by ones with different semantics "
"(or initializer) respectively by dynamic linker."
msgstr ""
-#: common.opt:2069
+#: common.opt:2076
msgid "Allow premature scheduling of queued insns."
msgstr ""
-#: common.opt:2073
+#: common.opt:2080
msgid ""
"-fsched-stalled-insns=<number>\tSet number of queued insns that can be "
"prematurely scheduled."
msgstr ""
-#: common.opt:2081
+#: common.opt:2088
msgid ""
"Set dependence distance checking in premature scheduling of queued insns."
msgstr ""
-#: common.opt:2085
+#: common.opt:2092
msgid ""
"-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in "
"premature scheduling of queued insns."
msgstr ""
-#: common.opt:2089
+#: common.opt:2096
msgid "Enable the group heuristic in the scheduler."
msgstr ""
-#: common.opt:2093
+#: common.opt:2100
msgid "Enable the critical path heuristic in the scheduler."
msgstr ""
-#: common.opt:2097
+#: common.opt:2104
msgid "Enable the speculative instruction heuristic in the scheduler."
msgstr ""
-#: common.opt:2101
+#: common.opt:2108
msgid "Enable the rank heuristic in the scheduler."
msgstr ""
-#: common.opt:2105
+#: common.opt:2112
msgid "Enable the last instruction heuristic in the scheduler."
msgstr ""
-#: common.opt:2109
+#: common.opt:2116
msgid "Enable the dependent count heuristic in the scheduler."
msgstr ""
-#: common.opt:2113
+#: common.opt:2120
msgid "Access data in the same section from shared anchor points."
msgstr ""
-#: common.opt:2125
+#: common.opt:2132
msgid "Turn on Redundant Extensions Elimination pass."
msgstr ""
-#: common.opt:2129
+#: common.opt:2136
msgid "Show column numbers in diagnostics, when available. Default on."
msgstr ""
-#: common.opt:2133
+#: common.opt:2140
msgid "Emit function prologues only before parts of the function that need it,"
msgstr ""
-#: common.opt:2138
+#: common.opt:2145
msgid "Disable optimizations observable by IEEE signaling NaNs."
msgstr ""
-#: common.opt:2142
+#: common.opt:2149
msgid ""
"Disable floating point optimizations that ignore the IEEE signedness of zero."
msgstr ""
-#: common.opt:2146
+#: common.opt:2153
msgid "Convert floating point constants to single precision constants."
msgstr ""
-#: common.opt:2150
+#: common.opt:2157
msgid "Split lifetimes of induction variables when loops are unrolled."
msgstr ""
-#: common.opt:2154
+#: common.opt:2161
msgid "Generate discontiguous stack frames."
msgstr ""
-#: common.opt:2158
+#: common.opt:2165
msgid "Split wide types into independent registers."
msgstr ""
-#: common.opt:2162
+#: common.opt:2169
msgid "Enable backward propagation of use properties at the SSA level."
msgstr ""
-#: common.opt:2166
+#: common.opt:2173
msgid "Optimize conditional patterns using SSA PHI nodes."
msgstr ""
-#: common.opt:2170
+#: common.opt:2177
msgid ""
"Optimize amount of stdarg registers saved to stack at start of function."
msgstr ""
-#: common.opt:2174
+#: common.opt:2181
msgid "Apply variable expansion when loops are unrolled."
msgstr ""
-#: common.opt:2178
+#: common.opt:2185
msgid ""
"-fstack-check=[no|generic|specific]\tInsert stack checking code into the "
"program."
msgstr ""
-#: common.opt:2182
+#: common.opt:2189
msgid ""
"Insert stack checking code into the program. Same as -fstack-check=specific."
msgstr ""
-#: common.opt:2189
+#: common.opt:2196
msgid ""
"-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
msgstr ""
-#: common.opt:2193
+#: common.opt:2200
msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
msgstr ""
-#: common.opt:2197
+#: common.opt:2204
msgid "Use propolice as a stack protection method."
msgstr ""
-#: common.opt:2201
+#: common.opt:2208
msgid "Use a stack protection method for every function."
msgstr ""
-#: common.opt:2205
+#: common.opt:2212
msgid "Use a smart stack protection method for certain functions."
msgstr ""
-#: common.opt:2209
+#: common.opt:2216
msgid ""
"Use stack protection method only for functions with the stack_protect "
"attribute."
msgstr ""
-#: common.opt:2213
+#: common.opt:2220
msgid "Output stack usage information on a per-function basis."
msgstr ""
-#: common.opt:2225
+#: common.opt:2232
msgid "Assume strict aliasing rules apply."
msgstr ""
-#: common.opt:2229
+#: common.opt:2236
msgid "Treat signed overflow as undefined."
msgstr ""
-#: common.opt:2233
+#: common.opt:2240
msgid "Implement __atomic operations via libcalls to legacy __sync functions."
msgstr ""
-#: common.opt:2237
+#: common.opt:2244
msgid "Check for syntax errors, then stop."
msgstr ""
-#: common.opt:2241
+#: common.opt:2248
msgid "Create data files needed by \"gcov\"."
msgstr ""
-#: common.opt:2245
+#: common.opt:2252
msgid "Perform jump threading optimizations."
msgstr ""
-#: common.opt:2249
+#: common.opt:2256
msgid "Report the time taken by each compiler pass."
msgstr ""
-#: common.opt:2253
+#: common.opt:2260
msgid ""
"-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the "
"default thread-local storage code generation model."
msgstr ""
-#: common.opt:2256
+#: common.opt:2263
#, c-format
msgid "unknown TLS model %qs"
msgstr ""
-#: common.opt:2272
+#: common.opt:2279
msgid "Reorder top level functions, variables, and asms."
msgstr ""
-#: common.opt:2276
+#: common.opt:2283
msgid "Perform superblock formation via tail duplication."
msgstr ""
-#: common.opt:2283
+#: common.opt:2290
msgid "Assume floating-point operations can trap."
msgstr ""
-#: common.opt:2287
+#: common.opt:2294
msgid "Trap for signed overflow in addition, subtraction and multiplication."
msgstr ""
-#: common.opt:2291
+#: common.opt:2298
msgid "Enable SSA-CCP optimization on trees."
msgstr ""
-#: common.opt:2295
+#: common.opt:2302
msgid "Enable SSA-BIT-CCP optimization on trees."
msgstr ""
-#: common.opt:2303
+#: common.opt:2310
msgid "Enable loop header copying on trees."
msgstr ""
-#: common.opt:2311
+#: common.opt:2318
msgid "Enable SSA coalescing of user variables."
msgstr ""
-#: common.opt:2319
+#: common.opt:2326
msgid "Enable copy propagation on trees."
msgstr ""
-#: common.opt:2327
+#: common.opt:2334
msgid "Transform condition stores into unconditional ones."
msgstr ""
-#: common.opt:2331
+#: common.opt:2338
msgid "Perform conversions of switch initializations."
msgstr ""
-#: common.opt:2335
+#: common.opt:2342
msgid "Enable SSA dead code elimination optimization on trees."
msgstr ""
-#: common.opt:2339
+#: common.opt:2346
msgid "Enable dominator optimizations."
msgstr ""
-#: common.opt:2343
+#: common.opt:2350
msgid "Enable tail merging on trees."
msgstr ""
-#: common.opt:2347
+#: common.opt:2354
msgid "Enable dead store elimination."
msgstr ""
-#: common.opt:2351
+#: common.opt:2358
msgid "Enable forward propagation on trees."
msgstr ""
-#: common.opt:2355
+#: common.opt:2362
msgid "Enable Full Redundancy Elimination (FRE) on trees."
msgstr ""
-#: common.opt:2359
+#: common.opt:2366
msgid "Enable string length optimizations on trees."
msgstr ""
-#: common.opt:2363
+#: common.opt:2370
msgid "Detect paths that trigger erroneous or undefined behavior due to"
msgstr ""
-#: common.opt:2369
+#: common.opt:2376
msgid ""
"Detect paths that trigger erroneous or undefined behavior due a null value"
msgstr ""
-#: common.opt:2376
+#: common.opt:2383
msgid "Enable loop distribution on trees."
msgstr ""
-#: common.opt:2380
+#: common.opt:2387
msgid "Enable loop distribution for patterns transformed into a library call."
msgstr ""
-#: common.opt:2384
+#: common.opt:2391
msgid "Enable loop invariant motion on trees."
msgstr ""
-#: common.opt:2392
+#: common.opt:2399
msgid "Create canonical induction variables in loops."
msgstr ""
-#: common.opt:2396
+#: common.opt:2403
msgid "Enable loop optimizations on tree level."
msgstr ""
-#: common.opt:2400
+#: common.opt:2407
msgid "Enable automatic parallelization of loops."
msgstr ""
-#: common.opt:2404
+#: common.opt:2411
msgid "Enable hoisting loads from conditional pointers."
msgstr ""
-#: common.opt:2408
+#: common.opt:2415
msgid "Enable SSA-PRE optimization on trees."
msgstr ""
-#: common.opt:2412
+#: common.opt:2419
msgid ""
"In SSA-PRE optimization on trees, enable partial-partial redundancy "
"elimination."
msgstr ""
-#: common.opt:2416
+#: common.opt:2423
msgid "Perform function-local points-to analysis on trees."
msgstr ""
-#: common.opt:2420
+#: common.opt:2427
msgid "Enable reassociation on tree level."
msgstr ""
-#: common.opt:2428
+#: common.opt:2435
msgid "Enable SSA code sinking on trees."
msgstr ""
-#: common.opt:2432
+#: common.opt:2439
msgid "Perform straight-line strength reduction."
msgstr ""
-#: common.opt:2436
+#: common.opt:2443
msgid "Perform scalar replacement of aggregates."
msgstr ""
-#: common.opt:2440
+#: common.opt:2447
msgid "Replace temporary expressions in the SSA->normal pass."
msgstr ""
-#: common.opt:2444
+#: common.opt:2451
msgid "Perform live range splitting during the SSA->normal pass."
msgstr ""
-#: common.opt:2448
+#: common.opt:2455
msgid "Perform Value Range Propagation on trees."
msgstr ""
-#: common.opt:2452
+#: common.opt:2459
msgid "Split paths leading to loop backedges."
msgstr ""
-#: common.opt:2456
+#: common.opt:2463
+msgid "Assume common declarations may be overridden with ones with a larger"
+msgstr ""
+
+#: common.opt:2468
msgid "Compile whole compilation unit at a time."
msgstr ""
-#: common.opt:2460
+#: common.opt:2472
msgid "Perform loop unrolling when iteration count is known."
msgstr ""
-#: common.opt:2464
+#: common.opt:2476
msgid "Perform loop unrolling for all loops."
msgstr ""
-#: common.opt:2471
+#: common.opt:2483
msgid "Allow loop optimizations to assume that the loops behave in normal way."
msgstr ""
-#: common.opt:2475
+#: common.opt:2487
msgid "Allow optimization for floating-point arithmetic which may change the"
msgstr ""
-#: common.opt:2480
+#: common.opt:2492
msgid "Same as -fassociative-math for expressions which include division."
msgstr ""
-#: common.opt:2488
+#: common.opt:2500
msgid "Allow math optimizations that may violate IEEE or ISO standards."
msgstr ""
-#: common.opt:2492
+#: common.opt:2504
msgid "Perform loop unswitching."
msgstr ""
-#: common.opt:2496
+#: common.opt:2508
msgid "Just generate unwind tables for exception handling."
msgstr ""
-#: common.opt:2500
+#: common.opt:2512
msgid "Use the bfd linker instead of the default linker."
msgstr ""
-#: common.opt:2504
+#: common.opt:2516
msgid "Use the gold linker instead of the default linker."
msgstr ""
-#: common.opt:2516
+#: common.opt:2528
msgid "Perform variable tracking."
msgstr ""
-#: common.opt:2524
+#: common.opt:2536
msgid "Perform variable tracking by annotating assignments."
msgstr ""
-#: common.opt:2530
+#: common.opt:2542
msgid "Toggle -fvar-tracking-assignments."
msgstr ""
-#: common.opt:2538
+#: common.opt:2550
msgid ""
"Perform variable tracking and also tag variables that are uninitialized."
msgstr ""
-#: common.opt:2542
+#: common.opt:2554
msgid "Enable vectorization on trees."
msgstr ""
-#: common.opt:2550
+#: common.opt:2562
msgid "Enable loop vectorization on trees."
msgstr ""
-#: common.opt:2554
+#: common.opt:2566
msgid "Enable basic block vectorization (SLP) on trees."
msgstr ""
-#: common.opt:2558
+#: common.opt:2570
msgid "Specifies the cost model for vectorization."
msgstr ""
-#: common.opt:2562
+#: common.opt:2574
msgid ""
"Specifies the vectorization cost model for code marked with a simd directive."
msgstr ""
-#: common.opt:2565
+#: common.opt:2577
#, c-format
msgid "unknown vectorizer cost model %qs"
msgstr ""
-#: common.opt:2578
+#: common.opt:2590
msgid ""
"Enables the dynamic vectorizer cost model. Preserved for backward "
"compatibility."
msgstr ""
-#: common.opt:2582
+#: common.opt:2594
msgid ""
"Enables the unlimited vectorizer cost model. Preserved for backward "
"compatibility."
msgstr ""
-#: common.opt:2590
+#: common.opt:2602
msgid "Enable copy propagation of scalar-evolution information."
msgstr ""
-#: common.opt:2600
+#: common.opt:2612
msgid "Add extra commentary to assembler output."
msgstr ""
-#: common.opt:2604
+#: common.opt:2616
msgid ""
"-fvisibility=[default|internal|hidden|protected]\tSet the default symbol "
"visibility."
msgstr ""
-#: common.opt:2607
+#: common.opt:2619
#, c-format
msgid "unrecognized visibility value %qs"
msgstr ""
-#: common.opt:2623
+#: common.opt:2635
msgid "Validate vtable pointers before using them."
msgstr ""
-#: common.opt:2626
+#: common.opt:2638
#, c-format
msgid "unknown vtable verify initialization priority %qs"
msgstr ""
-#: common.opt:2639
+#: common.opt:2651
msgid "Output vtable verification counters."
msgstr ""
-#: common.opt:2643
+#: common.opt:2655
msgid "Output vtable verification pointer sets information."
msgstr ""
-#: common.opt:2647
+#: common.opt:2659
msgid "Use expression value profiles in optimizations."
msgstr ""
-#: common.opt:2651
+#: common.opt:2663
msgid "Construct webs and split unrelated uses of single variable."
msgstr ""
-#: common.opt:2655
+#: common.opt:2667
msgid "Enable conditional dead code elimination for builtin calls."
msgstr ""
-#: common.opt:2659
+#: common.opt:2671
msgid "Perform whole program optimizations."
msgstr ""
-#: common.opt:2663
+#: common.opt:2675
msgid "Assume signed arithmetic overflow wraps around."
msgstr ""
-#: common.opt:2667
+#: common.opt:2679
msgid "Put zero initialized data in the bss section."
msgstr ""
-#: common.opt:2671
+#: common.opt:2683
msgid "Generate debug information in default format."
msgstr ""
-#: common.opt:2675
+#: common.opt:2687
msgid "Generate debug information in COFF format."
msgstr ""
-#: common.opt:2679
+#: common.opt:2691
msgid "Generate debug information in default version of DWARF format."
msgstr ""
-#: common.opt:2683
+#: common.opt:2695
msgid "Generate debug information in DWARF v2 (or later) format."
msgstr ""
-#: common.opt:2687
+#: common.opt:2699
msgid "Generate debug information in default extended format."
msgstr ""
-#: common.opt:2691
+#: common.opt:2703
msgid "Don't generate DWARF pubnames and pubtypes sections."
msgstr ""
-#: common.opt:2695
+#: common.opt:2707
msgid "Generate DWARF pubnames and pubtypes sections."
msgstr ""
-#: common.opt:2699
+#: common.opt:2711
msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
msgstr ""
-#: common.opt:2703
+#: common.opt:2715
msgid "Don't record gcc command line switches in DWARF DW_AT_producer."
msgstr ""
-#: common.opt:2707
+#: common.opt:2719
msgid "Record gcc command line switches in DWARF DW_AT_producer."
msgstr ""
-#: common.opt:2711
+#: common.opt:2723
msgid "Don't generate debug information in separate .dwo files."
msgstr ""
-#: common.opt:2715
+#: common.opt:2727
msgid "Generate debug information in separate .dwo files."
msgstr ""
-#: common.opt:2719
+#: common.opt:2731
msgid "Generate debug information in STABS format."
msgstr ""
-#: common.opt:2723
+#: common.opt:2735
msgid "Generate debug information in extended STABS format."
msgstr ""
-#: common.opt:2727
+#: common.opt:2739
msgid "Emit DWARF additions beyond selected version."
msgstr ""
-#: common.opt:2731
+#: common.opt:2743
msgid "Don't emit DWARF additions beyond selected version."
msgstr ""
-#: common.opt:2735
+#: common.opt:2747
msgid "Toggle debug information generation."
msgstr ""
-#: common.opt:2739
+#: common.opt:2751
msgid "Generate debug information in VMS format."
msgstr ""
-#: common.opt:2743
+#: common.opt:2755
msgid "Generate debug information in XCOFF format."
msgstr ""
-#: common.opt:2747
+#: common.opt:2759
msgid "Generate debug information in extended XCOFF format."
msgstr ""
-#: common.opt:2765
+#: common.opt:2777
msgid "Generate compressed debug sections."
msgstr ""
-#: common.opt:2769
+#: common.opt:2781
msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
msgstr ""
-#: common.opt:2776
+#: common.opt:2788
msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
msgstr ""
-#: common.opt:2780
+#: common.opt:2792
msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
msgstr ""
-#: common.opt:2802
+#: common.opt:2814
msgid "-o <file>\tPlace output into <file>."
msgstr ""
-#: common.opt:2806
+#: common.opt:2818
msgid "Enable function profiling."
msgstr ""
-#: common.opt:2816
+#: common.opt:2828
msgid "Like -pedantic but issue them as errors."
msgstr ""
-#: common.opt:2856
+#: common.opt:2868
msgid "Do not display functions compiled or elapsed time."
msgstr ""
-#: common.opt:2888
+#: common.opt:2900
msgid "Enable verbose output."
msgstr ""
-#: common.opt:2892
+#: common.opt:2904
msgid "Display the compiler's version."
msgstr ""
-#: common.opt:2896
+#: common.opt:2908
msgid "Suppress warnings."
msgstr ""
-#: common.opt:2906
+#: common.opt:2918
msgid "Create a shared library."
msgstr ""
-#: common.opt:2951
+#: common.opt:2963
msgid "Don't create a position independent executable."
msgstr ""
-#: common.opt:2955
+#: common.opt:2967
msgid "Create a position independent executable."
msgstr ""
-#: common.opt:2962
+#: common.opt:2974
msgid "Use caller save register across calls if possible."
msgstr ""
-#: go/gofrontend/expressions.cc:93 c-family/c-common.c:1524 cp/cvt.c:1174
-#: cp/cvt.c:1423
+#: go/gofrontend/expressions.cc:93 c-family/c-common.c:1524 cp/cvt.c:1175
+#: cp/cvt.c:1424
#, gcc-internal-format
msgid "value computed is not used"
msgstr ""
@@ -15575,8 +15611,8 @@ msgstr ""
msgid "expected boolean type"
msgstr ""
-#: go/gofrontend/expressions.cc:4015 c/c-parser.c:12533 c/c-parser.c:12540
-#: cp/parser.c:31595 cp/parser.c:31602
+#: go/gofrontend/expressions.cc:4015 c/c-parser.c:12555 c/c-parser.c:12562
+#: cp/parser.c:31645 cp/parser.c:31652
#, gcc-internal-format
msgid "expected integer"
msgstr ""
@@ -15908,77 +15944,77 @@ msgstr ""
msgid "cannot use type %s as type %s"
msgstr ""
-#: go/gofrontend/types.cc:3500
+#: go/gofrontend/types.cc:3503
msgid "different receiver types"
msgstr ""
-#: go/gofrontend/types.cc:3520 go/gofrontend/types.cc:3533
-#: go/gofrontend/types.cc:3548
+#: go/gofrontend/types.cc:3523 go/gofrontend/types.cc:3536
+#: go/gofrontend/types.cc:3551
msgid "different number of parameters"
msgstr ""
-#: go/gofrontend/types.cc:3541
+#: go/gofrontend/types.cc:3544
msgid "different parameter types"
msgstr ""
-#: go/gofrontend/types.cc:3556
+#: go/gofrontend/types.cc:3559
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3565 go/gofrontend/types.cc:3578
-#: go/gofrontend/types.cc:3593
+#: go/gofrontend/types.cc:3568 go/gofrontend/types.cc:3581
+#: go/gofrontend/types.cc:3596
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3586
+#: go/gofrontend/types.cc:3589
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:7393
+#: go/gofrontend/types.cc:7396
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:7410 go/gofrontend/types.cc:7552
+#: go/gofrontend/types.cc:7413 go/gofrontend/types.cc:7555
#, c-format
msgid "incompatible type for method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:7414 go/gofrontend/types.cc:7556
+#: go/gofrontend/types.cc:7417 go/gofrontend/types.cc:7559
#, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr ""
-#: go/gofrontend/types.cc:7493 go/gofrontend/types.cc:7506
+#: go/gofrontend/types.cc:7496 go/gofrontend/types.cc:7509
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:7495 go/gofrontend/types.cc:7508
+#: go/gofrontend/types.cc:7498 go/gofrontend/types.cc:7511
msgid "type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:7529
+#: go/gofrontend/types.cc:7532
#, c-format
msgid "ambiguous method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:7532
+#: go/gofrontend/types.cc:7535
#, c-format
msgid "missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:7573
+#: go/gofrontend/types.cc:7576
#, c-format
msgid "method %s%s%s requires a pointer receiver"
msgstr ""
-#: go/gofrontend/types.cc:7591
+#: go/gofrontend/types.cc:7594
#, c-format
msgid "method %s%s%s is marked go:nointerface"
msgstr ""
#. Warn about and ignore all others for now, but store them.
-#: attribs.c:436 c-family/c-common.c:8641 objc/objc-act.c:4956
+#: attribs.c:436 c-family/c-common.c:8643 objc/objc-act.c:4956
#: objc/objc-act.c:6925 objc/objc-act.c:8114 objc/objc-act.c:8165
#, gcc-internal-format
msgid "%qE attribute directive ignored"
@@ -16093,7 +16129,7 @@ msgstr ""
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr ""
-#: builtins.c:4176 gimplify.c:2403
+#: builtins.c:4176 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr ""
@@ -16184,7 +16220,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:5831 expr.c:10546
+#: builtins.c:5831 expr.c:10565
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
@@ -16213,64 +16249,64 @@ msgstr ""
msgid "target format does not support infinity"
msgstr ""
-#: builtins.c:8838
+#: builtins.c:8916
#, gcc-internal-format
msgid "%<va_start%> used in function with fixed args"
msgstr ""
-#: builtins.c:8846
+#: builtins.c:8924
#, gcc-internal-format
msgid "wrong number of arguments to function %<va_start%>"
msgstr ""
-#: builtins.c:8861
+#: builtins.c:8939
#, gcc-internal-format
msgid "%<__builtin_next_arg%> called without an argument"
msgstr ""
-#: builtins.c:8866
+#: builtins.c:8944
#, gcc-internal-format
msgid "wrong number of arguments to function %<__builtin_next_arg%>"
msgstr ""
-#: builtins.c:8898
+#: builtins.c:8976
#, gcc-internal-format
msgid "second parameter of %<va_start%> not last named argument"
msgstr ""
-#: builtins.c:8911
+#: builtins.c:8989
#, gcc-internal-format
msgid ""
-"undefined behaviour when second parameter of %<va_start%> is declared with "
+"undefined behavior when second parameter of %<va_start%> is declared with "
"%<register%> storage"
msgstr ""
-#: builtins.c:8940
+#: builtins.c:9018
#, gcc-internal-format
msgid "%Kfirst argument of %D must be a pointer, second integer constant"
msgstr ""
-#: builtins.c:8953
+#: builtins.c:9031
#, gcc-internal-format
msgid "%Klast argument of %D is not integer constant between 0 and 3"
msgstr ""
-#: builtins.c:8998 builtins.c:9149 builtins.c:9206
+#: builtins.c:9076 builtins.c:9227 builtins.c:9284
#, gcc-internal-format
msgid "%Kcall to %D will always overflow destination buffer"
msgstr ""
-#: builtins.c:9139
+#: builtins.c:9217
#, gcc-internal-format
msgid "%Kcall to %D might overflow destination buffer"
msgstr ""
-#: builtins.c:9227
+#: builtins.c:9305
#, gcc-internal-format
msgid "%Kattempt to free a non-heap object %qD"
msgstr ""
-#: builtins.c:9230
+#: builtins.c:9308
#, gcc-internal-format
msgid "%Kattempt to free a non-heap object"
msgstr ""
@@ -16285,74 +16321,74 @@ msgstr ""
msgid "passing too large argument on stack"
msgstr ""
-#: cfgexpand.c:1631 function.c:986 varasm.c:2158
+#: cfgexpand.c:1643 function.c:986 varasm.c:2158
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr ""
-#: cfgexpand.c:1643
+#: cfgexpand.c:1655
#, gcc-internal-format
msgid "cannot allocate stack for variable %q+D, naked function."
msgstr ""
-#: cfgexpand.c:2699
+#: cfgexpand.c:2711
#, gcc-internal-format
msgid "too many alternatives in %<asm%>"
msgstr ""
-#: cfgexpand.c:2706
+#: cfgexpand.c:2718
#, gcc-internal-format
msgid "operand constraints for %<asm%> differ in number of alternatives"
msgstr ""
-#: cfgexpand.c:2727
+#: cfgexpand.c:2739
#, gcc-internal-format
msgid "asm-specifier for variable %qE conflicts with asm clobber list"
msgstr ""
-#: cfgexpand.c:2801
+#: cfgexpand.c:2813
#, gcc-internal-format
msgid "more than %d operands in %<asm%>"
msgstr ""
#. ??? Diagnose during gimplification?
-#: cfgexpand.c:2854
+#: cfgexpand.c:2866
#, gcc-internal-format
msgid "unknown register name %qs in %<asm%>"
msgstr ""
#. ??? Diagnose during gimplification?
-#: cfgexpand.c:2875
+#: cfgexpand.c:2887
#, gcc-internal-format
msgid "PIC register clobbered by %qs in %<asm%>"
msgstr ""
-#: cfgexpand.c:2980
+#: cfgexpand.c:2992
#, gcc-internal-format, gfc-internal-format
msgid "output number %d not directly addressable"
msgstr ""
-#: cfgexpand.c:3061
+#: cfgexpand.c:3073
#, gcc-internal-format
msgid "asm operand %d probably doesn%'t match constraints"
msgstr ""
-#: cfgexpand.c:3244
+#: cfgexpand.c:3256
#, gcc-internal-format
msgid "asm clobber conflict with output operand"
msgstr ""
-#: cfgexpand.c:3248
+#: cfgexpand.c:3260
#, gcc-internal-format
msgid "asm clobber conflict with input operand"
msgstr ""
-#: cfgexpand.c:6203
+#: cfgexpand.c:6215
#, gcc-internal-format
msgid "stack protector not protecting local variables: variable length buffer"
msgstr ""
-#: cfgexpand.c:6207
+#: cfgexpand.c:6219
#, gcc-internal-format, gfc-internal-format
msgid ""
"stack protector not protecting function: all local arrays are less than %d "
@@ -16449,87 +16485,87 @@ msgstr ""
msgid "%s does not support can_remove_branch_p"
msgstr ""
-#: cfghooks.c:457
+#: cfghooks.c:470
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support redirect_edge_and_branch_force"
msgstr ""
-#: cfghooks.c:495
+#: cfghooks.c:508
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support split_block"
msgstr ""
-#: cfghooks.c:562
+#: cfghooks.c:575
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support move_block_after"
msgstr ""
-#: cfghooks.c:575
+#: cfghooks.c:588
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support delete_basic_block"
msgstr ""
-#: cfghooks.c:622
+#: cfghooks.c:635
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support split_edge"
msgstr ""
-#: cfghooks.c:697
+#: cfghooks.c:710
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support create_basic_block"
msgstr ""
-#: cfghooks.c:738
+#: cfghooks.c:751
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support can_merge_blocks_p"
msgstr ""
-#: cfghooks.c:749
+#: cfghooks.c:762
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support predict_edge"
msgstr ""
-#: cfghooks.c:758
+#: cfghooks.c:771
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support predicted_by_p"
msgstr ""
-#: cfghooks.c:772
+#: cfghooks.c:785
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support merge_blocks"
msgstr ""
-#: cfghooks.c:853
+#: cfghooks.c:866
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support make_forwarder_block"
msgstr ""
-#: cfghooks.c:1009
+#: cfghooks.c:1022
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support force_nonfallthru"
msgstr ""
-#: cfghooks.c:1037
+#: cfghooks.c:1050
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support can_duplicate_block_p"
msgstr ""
-#: cfghooks.c:1059
+#: cfghooks.c:1072
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support duplicate_block"
msgstr ""
-#: cfghooks.c:1153
+#: cfghooks.c:1166
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support block_ends_with_call_p"
msgstr ""
-#: cfghooks.c:1164
+#: cfghooks.c:1177
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support block_ends_with_condjump_p"
msgstr ""
-#: cfghooks.c:1182
+#: cfghooks.c:1195
#, gcc-internal-format, gfc-internal-format
msgid "%s does not support flow_call_edges_add"
msgstr ""
@@ -16854,342 +16890,342 @@ msgstr ""
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr ""
-#: cgraph.c:2724
+#: cgraph.c:2728
#, gcc-internal-format
msgid "caller edge count is negative"
msgstr ""
-#: cgraph.c:2729
+#: cgraph.c:2733
#, gcc-internal-format
msgid "caller edge frequency is negative"
msgstr ""
-#: cgraph.c:2734
+#: cgraph.c:2738
#, gcc-internal-format
msgid "caller edge frequency is too large"
msgstr ""
-#: cgraph.c:2818
+#: cgraph.c:2822
#, gcc-internal-format, gfc-internal-format
msgid "aux field set for edge %s->%s"
msgstr ""
-#: cgraph.c:2825
+#: cgraph.c:2829
#, gcc-internal-format
msgid "execution count is negative"
msgstr ""
-#: cgraph.c:2830
+#: cgraph.c:2834
#, gcc-internal-format
msgid "inline clone in same comdat group list"
msgstr ""
-#: cgraph.c:2835
+#: cgraph.c:2839
#, gcc-internal-format
msgid "local symbols must be defined"
msgstr ""
-#: cgraph.c:2840
+#: cgraph.c:2844
#, gcc-internal-format
msgid "externally visible inline clone"
msgstr ""
-#: cgraph.c:2845
+#: cgraph.c:2849
#, gcc-internal-format
msgid "inline clone with address taken"
msgstr ""
-#: cgraph.c:2850
+#: cgraph.c:2854
#, gcc-internal-format
msgid "inline clone is forced to output"
msgstr ""
-#: cgraph.c:2857
+#: cgraph.c:2861
#, gcc-internal-format, gfc-internal-format
msgid "aux field set for indirect edge from %s"
msgstr ""
-#: cgraph.c:2864
+#: cgraph.c:2868
#, gcc-internal-format, gfc-internal-format
msgid ""
"An indirect edge from %s is not marked as indirect or has associated "
"indirect_info, the corresponding statement is: "
msgstr ""
-#: cgraph.c:2879
+#: cgraph.c:2883
#, gcc-internal-format, gfc-internal-format
msgid "comdat-local function called by %s outside its comdat"
msgstr ""
-#: cgraph.c:2889
+#: cgraph.c:2893
#, gcc-internal-format
msgid "inlined_to pointer is wrong"
msgstr ""
-#: cgraph.c:2894
+#: cgraph.c:2898
#, gcc-internal-format
msgid "multiple inline callers"
msgstr ""
-#: cgraph.c:2901
+#: cgraph.c:2905
#, gcc-internal-format
msgid "inlined_to pointer set for noninline callers"
msgstr ""
-#: cgraph.c:2920
+#: cgraph.c:2924
#, gcc-internal-format, gfc-internal-format
msgid "caller edge frequency %i does not match BB frequency %i"
msgstr ""
-#: cgraph.c:2938
+#: cgraph.c:2942
#, gcc-internal-format, gfc-internal-format
msgid "indirect call frequency %i does not match BB frequency %i"
msgstr ""
-#: cgraph.c:2947
+#: cgraph.c:2951
#, gcc-internal-format
msgid "inlined_to pointer is set but no predecessors found"
msgstr ""
-#: cgraph.c:2952
+#: cgraph.c:2956
#, gcc-internal-format
msgid "inlined_to pointer refers to itself"
msgstr ""
-#: cgraph.c:2964
+#: cgraph.c:2968
#, gcc-internal-format
msgid "cgraph_node has wrong clone_of"
msgstr ""
-#: cgraph.c:2976
+#: cgraph.c:2980
#, gcc-internal-format
msgid "cgraph_node has wrong clone list"
msgstr ""
-#: cgraph.c:2982
+#: cgraph.c:2986
#, gcc-internal-format
msgid "cgraph_node is in clone list but it is not clone"
msgstr ""
-#: cgraph.c:2987
+#: cgraph.c:2991
#, gcc-internal-format
msgid "cgraph_node has wrong prev_clone pointer"
msgstr ""
-#: cgraph.c:2992
+#: cgraph.c:2996
#, gcc-internal-format
msgid "double linked list of clones corrupted"
msgstr ""
-#: cgraph.c:3004
+#: cgraph.c:3008
#, gcc-internal-format
msgid "Alias has call edges"
msgstr ""
-#: cgraph.c:3012
+#: cgraph.c:3016
#, gcc-internal-format
msgid "Alias has non-alias reference"
msgstr ""
-#: cgraph.c:3017
+#: cgraph.c:3021
#, gcc-internal-format
msgid "Alias has more than one alias reference"
msgstr ""
-#: cgraph.c:3024
+#: cgraph.c:3028
#, gcc-internal-format
msgid "Analyzed alias has no reference"
msgstr ""
-#: cgraph.c:3033
+#: cgraph.c:3037
#, gcc-internal-format
msgid "Instrumentation clone does not reference original node"
msgstr ""
-#: cgraph.c:3040
+#: cgraph.c:3044
#, gcc-internal-format
msgid "Not instrumented node has non-NULL original declaration"
msgstr ""
-#: cgraph.c:3050
+#: cgraph.c:3054
#, gcc-internal-format
msgid "Instrumented node has wrong original declaration"
msgstr ""
-#: cgraph.c:3068
+#: cgraph.c:3072
#, gcc-internal-format
msgid "Node has more than one chkp reference"
msgstr ""
-#: cgraph.c:3073
+#: cgraph.c:3077
#, gcc-internal-format
msgid "Wrong node is referenced with chkp reference"
msgstr ""
-#: cgraph.c:3081
+#: cgraph.c:3085
#, gcc-internal-format
msgid "Analyzed node has no reference to instrumented version"
msgstr ""
-#: cgraph.c:3095
+#: cgraph.c:3099
#, gcc-internal-format
msgid "Alias chain for instrumented node is broken"
msgstr ""
-#: cgraph.c:3104
+#: cgraph.c:3108
#, gcc-internal-format
msgid "No edge out of thunk node"
msgstr ""
-#: cgraph.c:3109
+#: cgraph.c:3113
#, gcc-internal-format
msgid "More than one edge out of thunk node"
msgstr ""
-#: cgraph.c:3114
+#: cgraph.c:3118
#, gcc-internal-format
msgid "Thunk is not supposed to have body"
msgstr ""
-#: cgraph.c:3120
+#: cgraph.c:3124
#, gcc-internal-format
msgid "Instrumentation thunk has wrong edge callee"
msgstr ""
-#: cgraph.c:3156
+#: cgraph.c:3160
#, gcc-internal-format
msgid "shared call_stmt:"
msgstr ""
-#: cgraph.c:3164
+#: cgraph.c:3168
#, gcc-internal-format
msgid "edge points to wrong declaration:"
msgstr ""
-#: cgraph.c:3173
+#: cgraph.c:3177
#, gcc-internal-format
msgid ""
"an indirect edge with unknown callee corresponding to a call_stmt with a "
"known declaration:"
msgstr ""
-#: cgraph.c:3183
+#: cgraph.c:3187
#, gcc-internal-format
msgid "missing callgraph edge for call stmt:"
msgstr ""
-#: cgraph.c:3193
+#: cgraph.c:3197
#, gcc-internal-format
msgid "reference to dead statement"
msgstr ""
-#: cgraph.c:3206
+#: cgraph.c:3210
#, gcc-internal-format, gfc-internal-format
msgid "edge %s->%s has no corresponding call_stmt"
msgstr ""
-#: cgraph.c:3218
+#: cgraph.c:3222
#, gcc-internal-format, gfc-internal-format
msgid "an indirect edge from %s has no corresponding call_stmt"
msgstr ""
-#: cgraph.c:3229
+#: cgraph.c:3233
#, gcc-internal-format
msgid "verify_cgraph_node failed"
msgstr ""
-#: cgraph.c:3328 varpool.c:304
+#: cgraph.c:3332 varpool.c:304
#, gcc-internal-format, gfc-internal-format
msgid "%s: section %s is missing"
msgstr ""
-#: cgraphunit.c:682
+#: cgraphunit.c:680
#, gcc-internal-format
msgid "%<weakref%> attribute should be accompanied with an %<alias%> attribute"
msgstr ""
-#: cgraphunit.c:734 cgraphunit.c:770
+#: cgraphunit.c:732 cgraphunit.c:768
#, gcc-internal-format
msgid "%<externally_visible%> attribute have effect only on public objects"
msgstr ""
-#: cgraphunit.c:741
+#: cgraphunit.c:739
#, gcc-internal-format
msgid "%<weakref%> attribute ignored because function is defined"
msgstr ""
-#: cgraphunit.c:753
+#: cgraphunit.c:751
#, gcc-internal-format
msgid "always_inline function might not be inlinable"
msgstr ""
-#: cgraphunit.c:778
+#: cgraphunit.c:776
#, gcc-internal-format
msgid "%<weakref%> attribute ignored because variable is initialized"
msgstr ""
#. include_self=
-#: cgraphunit.c:937 c/c-decl.c:10747
+#: cgraphunit.c:936 c/c-decl.c:10760
#, gcc-internal-format
msgid "%q+F used but never defined"
msgstr ""
-#: cgraphunit.c:939 c/c-decl.c:10756 cp/decl.c:895
+#: cgraphunit.c:938 c/c-decl.c:10769 cp/decl.c:890
#, gcc-internal-format
msgid "%q+F declared %<static%> but never defined"
msgstr ""
-#: cgraphunit.c:978
+#: cgraphunit.c:982
#, gcc-internal-format
msgid "%qD defined but not used"
msgstr ""
-#: cgraphunit.c:1267 c-family/c-pragma.c:335
+#: cgraphunit.c:1271 c-family/c-pragma.c:335
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: cgraphunit.c:1283
+#: cgraphunit.c:1287
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: cgraphunit.c:1304
+#: cgraphunit.c:1308
#, gcc-internal-format
msgid "%q+D alias in between function and variable is not supported"
msgstr ""
-#: cgraphunit.c:1306
+#: cgraphunit.c:1310
#, gcc-internal-format
msgid "%q+D aliased declaration"
msgstr ""
-#: cgraphunit.c:1377
+#: cgraphunit.c:1381
#, gcc-internal-format
msgid "failed to reclaim unneeded function"
msgstr ""
-#: cgraphunit.c:1405
+#: cgraphunit.c:1409
#, gcc-internal-format
msgid "failed to reclaim unneeded function in same comdat group"
msgstr ""
-#: cgraphunit.c:1647
+#: cgraphunit.c:1651
#, gcc-internal-format
msgid "generic thunk code fails for method %qD which uses %<...%>"
msgstr ""
-#: cgraphunit.c:2001
+#: cgraphunit.c:2008
#, gcc-internal-format
msgid "size of return value of %q+D is %u bytes"
msgstr ""
-#: cgraphunit.c:2004
+#: cgraphunit.c:2011
#, gcc-internal-format
msgid "size of return value of %q+D is larger than %wd bytes"
msgstr ""
-#: cgraphunit.c:2498
+#: cgraphunit.c:2505
#, gcc-internal-format
msgid "nodes with unreleased memory found"
msgstr ""
@@ -17234,7 +17270,7 @@ msgstr ""
msgid "pex_init failed: %m"
msgstr ""
-#: collect-utils.c:192 collect2.c:2370 collect2.c:2568 gcc.c:8289
+#: collect-utils.c:192 collect2.c:2370 collect2.c:2568 gcc.c:8345
#, gcc-internal-format
msgid "%s: %m"
msgstr ""
@@ -17244,7 +17280,7 @@ msgstr ""
msgid "COLLECT_LTO_WRAPPER must be set"
msgstr ""
-#: collect2.c:966 gcc.c:7246 lto-wrapper.c:1393
+#: collect2.c:966 gcc.c:7255 lto-wrapper.c:1479
#: config/i386/intelmic-mkoffload.c:554 config/nvptx/mkoffload.c:403
#, gcc-internal-format
msgid "atexit failed"
@@ -17255,7 +17291,7 @@ msgstr ""
msgid "no arguments"
msgstr ""
-#: collect2.c:1303 opts.c:885
+#: collect2.c:1303 opts.c:890
#, gcc-internal-format
msgid "LTO support has not been enabled in this configuration"
msgstr ""
@@ -17355,40 +17391,40 @@ msgstr ""
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:944
+#: convert.c:942
#, gcc-internal-format
msgid ""
"can%'t convert a vector of type %qT to type %qT which has different size"
msgstr ""
-#: convert.c:952
+#: convert.c:950
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:1043
+#: convert.c:1035
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:1047
+#: convert.c:1039
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:1081
+#: convert.c:1073
#, gcc-internal-format
msgid ""
"can%'t convert a value of type %qT to vector type %qT which has different "
"size"
msgstr ""
-#: convert.c:1089
+#: convert.c:1081
#, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr ""
-#: convert.c:1128
+#: convert.c:1120
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr ""
@@ -17457,7 +17493,7 @@ msgstr ""
msgid "error writing %qs"
msgstr ""
-#: coverage.c:1215
+#: coverage.c:1211
#, gcc-internal-format, gfc-internal-format
msgid "cannot open %s"
msgstr ""
@@ -17502,7 +17538,7 @@ msgstr ""
msgid "global constructors not supported on this target"
msgstr ""
-#: diagnostic.c:1301
+#: diagnostic.c:1329
#, gcc-internal-format, gfc-internal-format
msgid "in %s, at %s:%d"
msgstr ""
@@ -17549,27 +17585,27 @@ msgstr ""
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
-#: dwarf2out.c:25294
+#: dwarf2out.c:25296
#, gcc-internal-format
msgid "-feliminate-dwarf2-dups is broken for C++, ignoring"
msgstr ""
-#: emit-rtl.c:2731
+#: emit-rtl.c:2732
#, gcc-internal-format
msgid "invalid rtl sharing found in the insn"
msgstr ""
-#: emit-rtl.c:2733
+#: emit-rtl.c:2734
#, gcc-internal-format
msgid "shared rtx"
msgstr ""
-#: emit-rtl.c:2735
+#: emit-rtl.c:2736
#, gcc-internal-format
msgid "internal consistency failure"
msgstr ""
-#: emit-rtl.c:3858
+#: emit-rtl.c:3859
#, gcc-internal-format
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr ""
@@ -17661,12 +17697,12 @@ msgid ""
"truncated into %wu-bit"
msgstr ""
-#: expr.c:10553
+#: expr.c:10572
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr ""
-#: expr.c:10560
+#: expr.c:10579
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr ""
@@ -17696,52 +17732,52 @@ msgstr ""
msgid "large fixed-point constant implicitly truncated to fixed-point type"
msgstr ""
-#: fold-const.c:3901 fold-const.c:3911
+#: fold-const.c:3943 fold-const.c:3953
#, gcc-internal-format, gfc-internal-format
msgid "comparison is always %d due to width of bit-field"
msgstr ""
-#: fold-const.c:5274 tree-ssa-reassoc.c:2064
+#: fold-const.c:5316 tree-ssa-reassoc.c:2144
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying range test"
msgstr ""
-#: fold-const.c:5723 fold-const.c:5737
+#: fold-const.c:5765 fold-const.c:5779
#, gcc-internal-format, gfc-internal-format
msgid "comparison is always %d"
msgstr ""
-#: fold-const.c:5872
+#: fold-const.c:5914
#, gcc-internal-format
msgid "%<or%> of unmatched not-equal tests is always 1"
msgstr ""
-#: fold-const.c:5877
+#: fold-const.c:5919
#, gcc-internal-format
msgid "%<and%> of mutually exclusive equal-tests is always 0"
msgstr ""
-#: fold-const.c:8226
+#: fold-const.c:8267
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when reducing constant in comparison"
msgstr ""
-#: fold-const.c:8382
+#: fold-const.c:8437
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when changing X +- C1 cmp C2 to X "
"cmp C2 -+ C1"
msgstr ""
-#: fold-const.c:8620
+#: fold-const.c:8708
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when combining constants around a "
"comparison"
msgstr ""
-#: fold-const.c:12185
+#: fold-const.c:12274
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -17751,7 +17787,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr ""
-#: function.c:1758 gimplify.c:5289
+#: function.c:1758 gimplify.c:5331
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr ""
@@ -17831,7 +17867,7 @@ msgstr ""
msgid "%s (program %s)"
msgstr ""
-#: gcc.c:3585 opts-common.c:1117 opts-common.c:1141 opts-global.c:136
+#: gcc.c:3585 opts-common.c:1158 opts-common.c:1182 opts-global.c:136
#, gcc-internal-format
msgid "unrecognized command line option %qs"
msgstr ""
@@ -17980,152 +18016,152 @@ msgstr ""
msgid "%s: -fcompare-debug failure"
msgstr ""
-#: gcc.c:7416
+#: gcc.c:7425
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC"
msgstr ""
-#: gcc.c:7440
+#: gcc.c:7449
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC"
msgstr ""
-#: gcc.c:7684
+#: gcc.c:7740
#, gcc-internal-format
msgid "unrecognized command line option %<-%s%>; did you mean %<-%s%>?"
msgstr ""
-#: gcc.c:7688
+#: gcc.c:7744
#, gcc-internal-format
msgid "unrecognized command line option %<-%s%>"
msgstr ""
-#: gcc.c:7814
+#: gcc.c:7870
#, gcc-internal-format
msgid "not configured with sysroot headers suffix"
msgstr ""
-#: gcc.c:7875
+#: gcc.c:7931
#, gcc-internal-format
msgid "no input files"
msgstr ""
-#: gcc.c:7926
+#: gcc.c:7982
#, gcc-internal-format
msgid "cannot specify -o with -c, -S or -E with multiple files"
msgstr ""
-#: gcc.c:7967
+#: gcc.c:8023
#, gcc-internal-format, gfc-internal-format
msgid "%s: %s compiler not installed on this system"
msgstr ""
-#: gcc.c:7991
+#: gcc.c:8047
#, gcc-internal-format
msgid "recompiling with -fcompare-debug"
msgstr ""
-#: gcc.c:8007
+#: gcc.c:8063
#, gcc-internal-format
msgid "during -fcompare-debug recompilation"
msgstr ""
-#: gcc.c:8016
+#: gcc.c:8072
#, gcc-internal-format
msgid "comparing final insns dumps"
msgstr ""
-#: gcc.c:8133
+#: gcc.c:8189
#, gcc-internal-format, gfc-internal-format
msgid "-fuse-linker-plugin, but %s not found"
msgstr ""
-#: gcc.c:8166
+#: gcc.c:8222
#, gcc-internal-format, gfc-internal-format
msgid "%s: linker input file unused because linking not done"
msgstr ""
-#: gcc.c:8218
+#: gcc.c:8274
#, gcc-internal-format, gfc-internal-format
msgid "language %s not recognized"
msgstr ""
-#: gcc.c:8457
+#: gcc.c:8513
#, gcc-internal-format
msgid "multilib spec %qs is invalid"
msgstr ""
-#: gcc.c:8659
+#: gcc.c:8715
#, gcc-internal-format
msgid "multilib exclusions %qs is invalid"
msgstr ""
-#: gcc.c:8723
+#: gcc.c:8779
#, gcc-internal-format
msgid "multilib select %qs %qs is invalid"
msgstr ""
-#: gcc.c:8885
+#: gcc.c:8941
#, gcc-internal-format
msgid "multilib select %qs is invalid"
msgstr ""
-#: gcc.c:8925
+#: gcc.c:8981
#, gcc-internal-format
msgid "multilib exclusion %qs is invalid"
msgstr ""
-#: gcc.c:9140
+#: gcc.c:9196
#, gcc-internal-format
msgid "environment variable %qs not defined"
msgstr ""
-#: gcc.c:9279 gcc.c:9284
+#: gcc.c:9335 gcc.c:9340
#, gcc-internal-format
msgid "invalid version number %qs"
msgstr ""
-#: gcc.c:9327
+#: gcc.c:9383
#, gcc-internal-format, gfc-internal-format
msgid "too few arguments to %%:version-compare"
msgstr ""
-#: gcc.c:9333
+#: gcc.c:9389
#, gcc-internal-format, gfc-internal-format
msgid "too many arguments to %%:version-compare"
msgstr ""
-#: gcc.c:9375
+#: gcc.c:9431
#, gcc-internal-format
msgid "unknown operator %qs in %%:version-compare"
msgstr ""
-#: gcc.c:9499
+#: gcc.c:9555
#, gcc-internal-format, gfc-internal-format
msgid "too many arguments to %%:compare-debug-dump-opt"
msgstr ""
-#: gcc.c:9572
+#: gcc.c:9628
#, gcc-internal-format, gfc-internal-format
msgid "too many arguments to %%:compare-debug-self-opt"
msgstr ""
-#: gcc.c:9608
+#: gcc.c:9664
#, gcc-internal-format, gfc-internal-format
msgid "too few arguments to %%:compare-debug-auxbase-opt"
msgstr ""
-#: gcc.c:9612
+#: gcc.c:9668
#, gcc-internal-format, gfc-internal-format
msgid "too many arguments to %%:compare-debug-auxbase-opt"
msgstr ""
-#: gcc.c:9619
+#: gcc.c:9675
#, gcc-internal-format, gfc-internal-format
msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk"
msgstr ""
-#: gcc.c:9693
+#: gcc.c:9749
#, gcc-internal-format, gfc-internal-format
msgid "too few arguments to %%:replace-extension"
msgstr ""
@@ -18160,12 +18196,12 @@ msgstr ""
msgid "scale needs to be non-negative\n"
msgstr ""
-#: gcse.c:3978
+#: gcse.c:3986
#, gcc-internal-format, gfc-internal-format
msgid "%s: %d basic blocks and %d edges/basic block"
msgstr ""
-#: gcse.c:3990
+#: gcse.c:3998
#, gcc-internal-format, gfc-internal-format
msgid ""
"%s: %d basic blocks and %d registers; increase --param max-gcse-memory above "
@@ -18254,11 +18290,11 @@ msgstr ""
msgid "can%'t write PCH file"
msgstr ""
-#: gimple-ssa-isolate-paths.c:290 gimple-ssa-isolate-paths.c:447 tree.c:12571
-#: tree.c:12608 c/c-typeck.c:2845 c/c-typeck.c:2929 c/c-typeck.c:9659
-#: c/c-typeck.c:9676 cp/call.c:6149 cp/constexpr.c:746 cp/decl2.c:5100
-#: cp/pt.c:7573 cp/semantics.c:1728 cp/typeck.c:1640 cp/typeck.c:1833
-#: cp/typeck.c:3652
+#: gimple-ssa-isolate-paths.c:290 gimple-ssa-isolate-paths.c:447 tree.c:12589
+#: tree.c:12626 c/c-typeck.c:2847 c/c-typeck.c:2931 c/c-typeck.c:9672
+#: c/c-typeck.c:9689 cp/call.c:6152 cp/constexpr.c:757 cp/constexpr.c:1958
+#: cp/decl2.c:5112 cp/pt.c:7580 cp/semantics.c:1763 cp/typeck.c:1640
+#: cp/typeck.c:1833 cp/typeck.c:3660
#, gcc-internal-format
msgid "declared here"
msgstr ""
@@ -18273,6 +18309,11 @@ msgstr ""
msgid "null pointer dereference"
msgstr ""
+#: gimple-ssa-nonnull-compare.c:102
+#, gcc-internal-format
+msgid "nonnull argument %qD compared to NULL"
+msgstr ""
+
#: gimple-streamer-in.c:210
#, gcc-internal-format, gfc-internal-format
msgid "bytecode stream: unknown GIMPLE statement tag %s"
@@ -18283,208 +18324,218 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:2555
+#: gimplify.c:2566
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr ""
-#: gimplify.c:5174
+#: gimplify.c:5190
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr ""
-#: gimplify.c:5290
+#: gimplify.c:5332
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5330 gimplify.c:5339
+#: gimplify.c:5372 gimplify.c:5381
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
-#: gimplify.c:5871
+#: gimplify.c:5913
#, gcc-internal-format
msgid "threadprivate variable %qE used in target region"
msgstr ""
-#: gimplify.c:5873
+#: gimplify.c:5915
#, gcc-internal-format
msgid "enclosing target region"
msgstr ""
-#: gimplify.c:5885
+#: gimplify.c:5927
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr ""
-#: gimplify.c:5887
+#: gimplify.c:5929
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5949
+#: gimplify.c:5991
#, gcc-internal-format
msgid "%qE not specified in enclosing %s"
msgstr ""
-#: gimplify.c:5951
+#: gimplify.c:5993
#, gcc-internal-format, gfc-internal-format
msgid "enclosing %s"
msgstr ""
-#: gimplify.c:6061
+#: gimplify.c:6103
#, gcc-internal-format
msgid "%qE not specified in enclosing OpenACC %qs construct"
msgstr ""
-#: gimplify.c:6063
+#: gimplify.c:6105
#, gcc-internal-format
msgid "enclosing OpenACC %qs construct"
msgstr ""
-#: gimplify.c:6174 gimplify.c:6764
+#: gimplify.c:6156
+#, gcc-internal-format
+msgid "%qE with %<link%> clause used in %<routine%> function"
+msgstr ""
+
+#: gimplify.c:6164
+#, gcc-internal-format
+msgid "%qE requires a %<declare%> directive for use in a %<routine%> function"
+msgstr ""
+
+#: gimplify.c:6240 gimplify.c:6844
#, gcc-internal-format
msgid "variable %qE declared in enclosing %<host_data%> region"
msgstr ""
-#: gimplify.c:6192
+#: gimplify.c:6258
#, gcc-internal-format
msgid "%qD referenced in target region does not have a mappable type"
msgstr ""
-#: gimplify.c:6296 gimplify.c:6328
+#: gimplify.c:6376 gimplify.c:6408
#, gcc-internal-format
msgid "iteration variable %qE is predetermined linear"
msgstr ""
-#: gimplify.c:6299
+#: gimplify.c:6379
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr ""
-#: gimplify.c:6313
+#: gimplify.c:6393
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:6316
+#: gimplify.c:6396
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr ""
-#: gimplify.c:6319
+#: gimplify.c:6399
#, gcc-internal-format
msgid "iteration variable %qE should not be linear"
msgstr ""
-#: gimplify.c:6322
+#: gimplify.c:6402
#, gcc-internal-format
msgid "iteration variable %qE should not be lastprivate"
msgstr ""
-#: gimplify.c:6325
+#: gimplify.c:6405
#, gcc-internal-format
msgid "iteration variable %qE should not be private"
msgstr ""
-#: gimplify.c:6638
+#: gimplify.c:6718
#, gcc-internal-format
msgid ""
"%<linear%> clause for variable other than loop iterator specified on "
"construct combined with %<distribute%>"
msgstr ""
-#: gimplify.c:6833
+#: gimplify.c:6913
#, gcc-internal-format
msgid "mapping field %qE of variable length structure"
msgstr ""
-#: gimplify.c:7009
+#: gimplify.c:7089
#, gcc-internal-format
msgid "%qE appears more than once in map clauses"
msgstr ""
-#: gimplify.c:7301
+#: gimplify.c:7381
#, gcc-internal-format
msgid ""
"copyprivate variable %qE is not threadprivate or private in outer context"
msgstr ""
-#: gimplify.c:7321
+#: gimplify.c:7401
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7347
+#: gimplify.c:7427
#, gcc-internal-format
msgid "expected %qs %<if%> clause modifier rather than %qs"
msgstr ""
-#: gimplify.c:7847
+#: gimplify.c:7929
#, gcc-internal-format
msgid ""
"same variable used in %<firstprivate%> and %<lastprivate%> clauses on "
"%<distribute%> construct"
msgstr ""
-#: gimplify.c:9806 omp-low.c:3611
+#: gimplify.c:9889 omp-low.c:3621
#, gcc-internal-format
msgid ""
"%<ordered%> construct with %<depend%> clause must be closely nested inside a "
"loop with %<ordered%> clause with a parameter"
msgstr ""
-#: gimplify.c:9824
+#: gimplify.c:9907
#, gcc-internal-format
msgid "variable %qE is not an iteration of outermost loop %d, expected %qE"
msgstr ""
-#: gimplify.c:9837
+#: gimplify.c:9920
#, gcc-internal-format
msgid ""
"number of variables in %<depend(sink)%> clause does not match number of "
"iteration variables"
msgstr ""
-#: gimplify.c:9850
+#: gimplify.c:9933
#, gcc-internal-format
msgid "more than one %<depend(source)%> clause on an %<ordered%> construct"
msgstr ""
-#: gimplify.c:9860
+#: gimplify.c:9944
#, gcc-internal-format
msgid ""
"%<depend(source)%> clause specified together with %<depend(sink:)%> clauses "
"on the same construct"
msgstr ""
-#: gimplify.c:10773
+#: gimplify.c:10872
#, gcc-internal-format
msgid "expected %<_Cilk_spawn%> before %<_Cilk_sync%>"
msgstr ""
-#: gimplify.c:11069
+#: gimplify.c:11168
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: gimplify.c:11539
+#: gimplify.c:11638
#, gcc-internal-format
msgid "first argument to %<va_arg%> not of type %<va_list%>"
msgstr ""
-#: gimplify.c:11555
+#: gimplify.c:11658
#, gcc-internal-format
msgid "%qT is promoted to %qT when passed through %<...%>"
msgstr ""
-#: gimplify.c:11560
+#: gimplify.c:11663
#, gcc-internal-format
msgid "(so you should pass %qT not %qT to %<va_arg%>)"
msgstr ""
-#: gimplify.c:11567
+#: gimplify.c:11670
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
@@ -18499,7 +18550,7 @@ msgstr ""
msgid "could not open Go dump file %qs: %m"
msgstr ""
-#: graph.c:54 toplev.c:1491 java/jcf-parse.c:1751 java/jcf-parse.c:1890
+#: graph.c:55 toplev.c:1491 java/jcf-parse.c:1751 java/jcf-parse.c:1890
#: objc/objc-act.c:461
#, gcc-internal-format
msgid "can%'t open %s: %m"
@@ -18510,38 +18561,38 @@ msgstr ""
msgid "Graphite loop optimizations cannot be used (isl is not available)."
msgstr ""
-#: hsa-brig.c:900
+#: hsa-brig.c:899
#, gcc-internal-format
msgid "Support for HSA does not implement immediate 16 bit FPU operands"
msgstr ""
-#: hsa-gen.c:1191
+#: hsa-gen.c:1195
#, gcc-internal-format
msgid "HSA SSA name defined by instruction that is supposed to be using it"
msgstr ""
-#: hsa-gen.c:1195 hsa-gen.c:1208
+#: hsa-gen.c:1199 hsa-gen.c:1212
#, gcc-internal-format
msgid "HSA SSA verification failed"
msgstr ""
-#: hsa-gen.c:1204
+#: hsa-gen.c:1208
#, gcc-internal-format
msgid ""
"HSA SSA name not among operands of instruction that is supposed to use it"
msgstr ""
-#: hsa-gen.c:1464
+#: hsa-gen.c:1468
#, gcc-internal-format
msgid "HSA instruction uses a register but is not among recorded register uses"
msgstr ""
-#: hsa-gen.c:1468
+#: hsa-gen.c:1472
#, gcc-internal-format
msgid "HSA instruction verification failed"
msgstr ""
-#: hsa.c:239
+#: hsa.c:240
#, gcc-internal-format
msgid "HSA image ops not handled"
msgstr ""
@@ -18571,326 +18622,326 @@ msgstr ""
msgid "function cannot be instrumented"
msgstr ""
-#: ipa-devirt.c:728 ipa-devirt.c:881
+#: ipa-devirt.c:751 ipa-devirt.c:902
#, gcc-internal-format
msgid "virtual table of type %qD violates one definition rule"
msgstr ""
-#: ipa-devirt.c:731
+#: ipa-devirt.c:754
#, gcc-internal-format
msgid ""
"variable of same assembler name as the virtual table is defined in another "
"translation unit"
msgstr ""
-#: ipa-devirt.c:770
+#: ipa-devirt.c:793
#, gcc-internal-format
msgid "virtual table of type %qD contains RTTI information"
msgstr ""
-#: ipa-devirt.c:776
+#: ipa-devirt.c:799
#, gcc-internal-format
msgid "but is prevailed by one without from other translation unit"
msgstr ""
-#: ipa-devirt.c:780
+#: ipa-devirt.c:803
#, gcc-internal-format
msgid "RTTI will not work on this type"
msgstr ""
-#: ipa-devirt.c:811 ipa-devirt.c:840 ipa-devirt.c:911
+#: ipa-devirt.c:833 ipa-devirt.c:861 ipa-devirt.c:932
#, gcc-internal-format
msgid "virtual table of type %qD violates one definition rule "
msgstr ""
-#: ipa-devirt.c:817
+#: ipa-devirt.c:839
#, gcc-internal-format
msgid ""
"the conflicting type defined in another translation unit has virtual table "
"of different size"
msgstr ""
-#: ipa-devirt.c:846
+#: ipa-devirt.c:867
#, gcc-internal-format
msgid ""
"the conflicting type defined in another translation unit with different RTTI "
"information"
msgstr ""
-#: ipa-devirt.c:889 ipa-devirt.c:919
+#: ipa-devirt.c:910 ipa-devirt.c:940
#, gcc-internal-format
msgid "the conflicting type defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:893
+#: ipa-devirt.c:914
#, gcc-internal-format
msgid "contains additional virtual method %qD"
msgstr ""
-#: ipa-devirt.c:900
+#: ipa-devirt.c:921
#, gcc-internal-format
msgid ""
"the conflicting type defined in another translation unit has virtual table "
"with more entries"
msgstr ""
-#: ipa-devirt.c:924
+#: ipa-devirt.c:946
#, gcc-internal-format
msgid "virtual method %qD"
msgstr ""
-#: ipa-devirt.c:926
+#: ipa-devirt.c:950
#, gcc-internal-format
msgid "ought to match virtual method %qD but does not"
msgstr ""
-#: ipa-devirt.c:932
+#: ipa-devirt.c:956
#, gcc-internal-format
msgid ""
"the conflicting type defined in another translation unit has virtual table "
"with different contents"
msgstr ""
-#: ipa-devirt.c:962
+#: ipa-devirt.c:986
#, gcc-internal-format
msgid "type %qT violates the C++ One Definition Rule"
msgstr ""
-#: ipa-devirt.c:973 ipa-devirt.c:988 ipa-devirt.c:1238 ipa-devirt.c:1330
-#: ipa-devirt.c:1369 ipa-devirt.c:1387
+#: ipa-devirt.c:997 ipa-devirt.c:1012 ipa-devirt.c:1262 ipa-devirt.c:1354
+#: ipa-devirt.c:1393 ipa-devirt.c:1411
#, gcc-internal-format
msgid "a different type is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:980
+#: ipa-devirt.c:1004
#, gcc-internal-format
msgid "the first difference of corresponding definitions is field %qD"
msgstr ""
-#: ipa-devirt.c:990
+#: ipa-devirt.c:1014
#, gcc-internal-format
msgid "the first difference of corresponding definitions is method %qD"
msgstr ""
-#: ipa-devirt.c:1084
+#: ipa-devirt.c:1108
#, gcc-internal-format
msgid ""
"type %qT defined in anonymous namespace can not match type %qT across the "
"translation unit boundary"
msgstr ""
-#: ipa-devirt.c:1089
+#: ipa-devirt.c:1113
#, gcc-internal-format
msgid ""
"type %qT defined in anonymous namespace can not match across the translation "
"unit boundary"
msgstr ""
-#: ipa-devirt.c:1094
+#: ipa-devirt.c:1118
#, gcc-internal-format
msgid "the incompatible type defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1117
+#: ipa-devirt.c:1141
#, gcc-internal-format
msgid "type name %<%s%> should match type name %<%s%>"
msgstr ""
-#: ipa-devirt.c:1121 ipa-devirt.c:1213
+#: ipa-devirt.c:1145 ipa-devirt.c:1237
#, gcc-internal-format
msgid "the incompatible type is defined here"
msgstr ""
-#: ipa-devirt.c:1149
+#: ipa-devirt.c:1173
#, gcc-internal-format
msgid "array types have different bounds"
msgstr ""
-#: ipa-devirt.c:1164
+#: ipa-devirt.c:1188
#, gcc-internal-format
msgid "return value type mismatch"
msgstr ""
-#: ipa-devirt.c:1179
+#: ipa-devirt.c:1203
#, gcc-internal-format
msgid "implicit this pointer type mismatch"
msgstr ""
-#: ipa-devirt.c:1182
+#: ipa-devirt.c:1206
#, gcc-internal-format, gfc-internal-format
msgid "type mismatch in parameter %i"
msgstr ""
-#: ipa-devirt.c:1193
+#: ipa-devirt.c:1217
#, gcc-internal-format
msgid "types have different parameter counts"
msgstr ""
-#: ipa-devirt.c:1204
+#: ipa-devirt.c:1228
#, gcc-internal-format
msgid "type %qT itself violate the C++ One Definition Rule"
msgstr ""
-#: ipa-devirt.c:1210
+#: ipa-devirt.c:1234
#, gcc-internal-format
msgid "type %qT should match type %qT"
msgstr ""
-#: ipa-devirt.c:1245
+#: ipa-devirt.c:1269
#, gcc-internal-format
msgid "a type with different qualifiers is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1263
+#: ipa-devirt.c:1287
#, gcc-internal-format
msgid "a type with different attributes is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1278
+#: ipa-devirt.c:1302
#, gcc-internal-format
msgid ""
"an enum with different value name is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1287
+#: ipa-devirt.c:1311
#, gcc-internal-format
msgid "an enum with different values is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1295
+#: ipa-devirt.c:1319
#, gcc-internal-format
msgid ""
"an enum with mismatching number of values is defined in another translation "
"unit"
msgstr ""
-#: ipa-devirt.c:1313
+#: ipa-devirt.c:1337
#, gcc-internal-format
msgid "a type with different precision is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1320
+#: ipa-devirt.c:1344
#, gcc-internal-format
msgid "a type with different signedness is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1345
+#: ipa-devirt.c:1369
#, gcc-internal-format
msgid ""
"it is defined as a pointer in different address space in another translation "
"unit"
msgstr ""
-#: ipa-devirt.c:1354
+#: ipa-devirt.c:1378
#, gcc-internal-format
msgid ""
"it is defined as a pointer to different type in another translation unit"
msgstr ""
-#: ipa-devirt.c:1414
+#: ipa-devirt.c:1438
#, gcc-internal-format
msgid "an array of different size is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1429
+#: ipa-devirt.c:1453
#, gcc-internal-format
msgid "has different return value in another translation unit"
msgstr ""
-#: ipa-devirt.c:1452 ipa-devirt.c:1464
+#: ipa-devirt.c:1476 ipa-devirt.c:1488
#, gcc-internal-format
msgid "has different parameters in another translation unit"
msgstr ""
-#: ipa-devirt.c:1487
+#: ipa-devirt.c:1511
#, gcc-internal-format
msgid "a type defined in another translation unit is not polymorphic"
msgstr ""
-#: ipa-devirt.c:1491
+#: ipa-devirt.c:1515
#, gcc-internal-format
msgid "a type defined in another translation unit is polymorphic"
msgstr ""
-#: ipa-devirt.c:1509 ipa-devirt.c:1565
+#: ipa-devirt.c:1533 ipa-devirt.c:1589
#, gcc-internal-format
msgid ""
"a type with different virtual table pointers is defined in another "
"translation unit"
msgstr ""
-#: ipa-devirt.c:1516 ipa-devirt.c:1570
+#: ipa-devirt.c:1540 ipa-devirt.c:1594
#, gcc-internal-format
msgid "a type with different bases is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1524
+#: ipa-devirt.c:1548
#, gcc-internal-format
msgid "a field with different name is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1538
+#: ipa-devirt.c:1562
#, gcc-internal-format
msgid ""
"a field of same name but different type is defined in another translation "
"unit"
msgstr ""
-#: ipa-devirt.c:1551
+#: ipa-devirt.c:1575
#, gcc-internal-format
msgid "fields has different layout in another translation unit"
msgstr ""
-#: ipa-devirt.c:1574
+#: ipa-devirt.c:1598
#, gcc-internal-format
msgid ""
"a type with different number of fields is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1598
+#: ipa-devirt.c:1622
#, gcc-internal-format
msgid "a different method of same type is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1606
+#: ipa-devirt.c:1630
#, gcc-internal-format
msgid ""
"s definition that differs by virtual keyword in another translation unit"
msgstr ""
-#: ipa-devirt.c:1613
+#: ipa-devirt.c:1637
#, gcc-internal-format
msgid "virtual table layout differs in another translation unit"
msgstr ""
-#: ipa-devirt.c:1622
+#: ipa-devirt.c:1646
#, gcc-internal-format
msgid "method with incompatible type is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1630
+#: ipa-devirt.c:1654
#, gcc-internal-format
msgid ""
"a type with different number of methods is defined in another translation "
"unit"
msgstr ""
-#: ipa-devirt.c:1652
+#: ipa-devirt.c:1676
#, gcc-internal-format
msgid "a type with different size is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1660
+#: ipa-devirt.c:1684
#, gcc-internal-format
msgid "a type with different alignment is defined in another translation unit"
msgstr ""
-#: ipa-devirt.c:1783
+#: ipa-devirt.c:1807
#, gcc-internal-format
msgid "the extra base is defined here"
msgstr ""
-#: ipa-devirt.c:3750
+#: ipa-devirt.c:3777
#, gcc-internal-format
msgid "Declaring type %qD final would enable devirtualization of %i call"
msgid_plural ""
@@ -18898,7 +18949,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: ipa-devirt.c:3759
+#: ipa-devirt.c:3786
#, gcc-internal-format
msgid ""
"Declaring type %qD final would enable devirtualization of %i call executed "
@@ -18909,7 +18960,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: ipa-devirt.c:3788
+#: ipa-devirt.c:3815
#, gcc-internal-format
msgid ""
"Declaring virtual destructor of %qD final would enable devirtualization of "
@@ -18920,7 +18971,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: ipa-devirt.c:3796
+#: ipa-devirt.c:3823
#, gcc-internal-format
msgid "Declaring method %qD final would enable devirtualization of %i call"
msgid_plural ""
@@ -18928,7 +18979,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: ipa-devirt.c:3804
+#: ipa-devirt.c:3831
#, gcc-internal-format
msgid ""
"Declaring virtual destructor of %qD final would enable devirtualization of "
@@ -18939,7 +18990,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: ipa-devirt.c:3814
+#: ipa-devirt.c:3841
#, gcc-internal-format
msgid ""
"Declaring method %qD final would enable devirtualization of %i call executed "
@@ -18965,21 +19016,26 @@ msgstr ""
msgid "ipa reference summary is missing in ltrans unit"
msgstr ""
-#: ira.c:2308 ira.c:2322 ira.c:2336
+#: ira.c:2309 ira.c:2323 ira.c:2337
#, gcc-internal-format, gfc-internal-format
msgid "%s cannot be used in asm here"
msgstr ""
-#: ira.c:5481
+#: ira.c:5511
#, gcc-internal-format
msgid "frame pointer required, but reserved"
msgstr ""
-#: ira.c:5482
+#: ira.c:5512
#, gcc-internal-format
msgid "for %qD"
msgstr ""
+#: ira.c:5526
+#, gcc-internal-format
+msgid "frame size too large for reliable stack checking"
+msgstr ""
+
#: lra-assigns.c:1395 reload1.c:1254
#, gcc-internal-format
msgid "%<asm%> operand has impossible constraints"
@@ -18990,17 +19046,17 @@ msgstr ""
msgid "unable to find a register to spill"
msgstr ""
-#: lra-assigns.c:1625
+#: lra-assigns.c:1630
#, gcc-internal-format, gfc-internal-format
msgid "Maximum number of LRA assignment passes is achieved (%d)\n"
msgstr ""
-#: lra-constraints.c:3495 reload.c:3831 reload.c:4086
+#: lra-constraints.c:3566 reload.c:3831 reload.c:4086
#, gcc-internal-format
msgid "inconsistent operand constraints in an %<asm%>"
msgstr ""
-#: lra-constraints.c:4344
+#: lra-constraints.c:4429
#, gcc-internal-format, gfc-internal-format
msgid "Max. number of generated reload insns per insn is achieved (%d)\n"
msgstr ""
@@ -19045,7 +19101,7 @@ msgstr ""
msgid "cannot find LTO section refs in %s"
msgstr ""
-#: lto-cgraph.c:1933
+#: lto-cgraph.c:1935
#, gcc-internal-format, gfc-internal-format
msgid "invalid offload table in %s"
msgstr ""
@@ -19092,12 +19148,12 @@ msgstr ""
msgid "Reference statement index not found"
msgstr ""
-#: lto-streamer-in.c:1512
+#: lto-streamer-in.c:1513
#, gcc-internal-format, gfc-internal-format
msgid "cannot read LTO mode table from %s"
msgstr ""
-#: lto-streamer-in.c:1610
+#: lto-streamer-in.c:1611
#, gcc-internal-format, gfc-internal-format
msgid "unsupported mode %s\n"
msgstr ""
@@ -19119,57 +19175,72 @@ msgid ""
"%d"
msgstr ""
-#: lto-wrapper.c:112
+#: lto-wrapper.c:114
#, gcc-internal-format
msgid "deleting LTRANS file %s: %m"
msgstr ""
-#: lto-wrapper.c:149
+#: lto-wrapper.c:151
#, gcc-internal-format
msgid "malformed COLLECT_GCC_OPTIONS"
msgstr ""
-#: lto-wrapper.c:304 lto-wrapper.c:316
+#: lto-wrapper.c:307
+#, gcc-internal-format, gfc-internal-format
+msgid "Option %s with different values"
+msgstr ""
+
+#: lto-wrapper.c:318 lto-wrapper.c:330
#, gcc-internal-format, gfc-internal-format
msgid "Option %s not used consistently in all LTO input files"
msgstr ""
-#: lto-wrapper.c:771
+#: lto-wrapper.c:815
#, gcc-internal-format, gfc-internal-format
msgid "problem with building target image for %s\n"
msgstr ""
-#: lto-wrapper.c:791
+#: lto-wrapper.c:835
#, gcc-internal-format
msgid "reading input file"
msgstr ""
-#: lto-wrapper.c:796
+#: lto-wrapper.c:840
#, gcc-internal-format
msgid "writing output file"
msgstr ""
-#: lto-wrapper.c:822
+#: lto-wrapper.c:870
#, gcc-internal-format
-msgid "installation error, can't find crtoffloadend.o"
+msgid "installation error, can't find crtoffloadtable.o"
msgstr ""
-#: lto-wrapper.c:834
+#: lto-wrapper.c:974
#, gcc-internal-format
-msgid "installation error, can't find crtoffloadbegin.o"
+msgid "environment variable COLLECT_GCC must be set"
msgstr ""
-#: lto-wrapper.c:938
+#: lto-wrapper.c:978 config/nvptx/mkoffload.c:361
#, gcc-internal-format
-msgid "environment variable COLLECT_GCC must be set"
+msgid "environment variable COLLECT_GCC_OPTIONS must be set"
msgstr ""
-#: lto-wrapper.c:942 config/nvptx/mkoffload.c:361
+#: lto-wrapper.c:1135 lto-wrapper.c:1191
#, gcc-internal-format
-msgid "environment variable COLLECT_GCC_OPTIONS must be set"
+msgid "cannot open %s: %m"
msgstr ""
-#: lto-wrapper.c:1211
+#: lto-wrapper.c:1138 lto-wrapper.c:1197
+#, gcc-internal-format
+msgid "cannot read %s: %m"
+msgstr ""
+
+#: lto-wrapper.c:1165
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid format of %s"
+msgstr ""
+
+#: lto-wrapper.c:1301
#, gcc-internal-format
msgid "fopen: %s: %m"
msgstr ""
@@ -19204,112 +19275,117 @@ msgstr ""
msgid "attribute(target_clones(\"default\")) is not valid for current target"
msgstr ""
-#: omp-low.c:2202 omp-low.c:2370
+#: omp-low.c:2203 omp-low.c:2371
#, gcc-internal-format
msgid "Clause not supported yet"
msgstr ""
-#: omp-low.c:2967 omp-low.c:20751
+#: omp-low.c:2970 omp-low.c:21009
#, gcc-internal-format
msgid "%<seq%> overrides other OpenACC loop specifiers"
msgstr ""
-#: omp-low.c:2970
+#: omp-low.c:2973
#, gcc-internal-format
msgid "%<auto%> conflicts with other OpenACC loop specifiers"
msgstr ""
-#: omp-low.c:2974
+#: omp-low.c:2977
#, gcc-internal-format
msgid "inner loop uses same OpenACC parallelism as containing loop"
msgstr ""
-#: omp-low.c:3021
+#: omp-low.c:3024
#, gcc-internal-format
msgid "argument not permitted on %qs clause in OpenACC %<parallel%>"
msgstr ""
-#: omp-low.c:3249
+#: omp-low.c:3250
+#, gcc-internal-format
+msgid "non-OpenACC construct inside of OpenACC routine"
+msgstr ""
+
+#: omp-low.c:3259
#, gcc-internal-format
msgid "non-OpenACC construct inside of OpenACC region"
msgstr ""
-#: omp-low.c:3274
+#: omp-low.c:3284
#, gcc-internal-format
msgid ""
"%<ordered simd threads%> must be closely nested inside of %<for simd%> region"
msgstr ""
-#: omp-low.c:3282
+#: omp-low.c:3292
#, gcc-internal-format
msgid ""
"OpenMP constructs other than %<#pragma omp ordered simd%> may not be nested "
"inside %<simd%> region"
msgstr ""
-#: omp-low.c:3294
+#: omp-low.c:3304
#, gcc-internal-format
msgid ""
"only %<distribute%> or %<parallel%> regions are allowed to be strictly "
"nested inside %<teams%> region"
msgstr ""
-#: omp-low.c:3311
+#: omp-low.c:3321
#, gcc-internal-format
msgid ""
"%<distribute%> region must be strictly nested inside %<teams%> construct"
msgstr ""
-#: omp-low.c:3352
+#: omp-low.c:3362
#, gcc-internal-format
msgid ""
"OpenACC loop directive must be associated with an OpenACC compute region"
msgstr ""
-#: omp-low.c:3374
+#: omp-low.c:3384
#, gcc-internal-format
msgid "orphaned %qs construct"
msgstr ""
-#: omp-low.c:3403
+#: omp-low.c:3413
#, gcc-internal-format
msgid "%<#pragma omp cancel for%> inside %<nowait%> for construct"
msgstr ""
-#: omp-low.c:3408
+#: omp-low.c:3418
#, gcc-internal-format
msgid "%<#pragma omp cancel for%> inside %<ordered%> for construct"
msgstr ""
-#: omp-low.c:3428 omp-low.c:3441
+#: omp-low.c:3438 omp-low.c:3451
#, gcc-internal-format
msgid "%<#pragma omp cancel sections%> inside %<nowait%> sections construct"
msgstr ""
-#: omp-low.c:3467
+#: omp-low.c:3477
#, gcc-internal-format
msgid ""
"%<%s taskgroup%> construct not closely nested inside of %<taskgroup%> region"
msgstr ""
-#: omp-low.c:3481
+#: omp-low.c:3491
#, gcc-internal-format
msgid "invalid arguments"
msgstr ""
-#: omp-low.c:3487
+#: omp-low.c:3497
#, gcc-internal-format
msgid "%<%s %s%> construct not closely nested inside of %qs"
msgstr ""
-#: omp-low.c:3515
+#: omp-low.c:3525
#, gcc-internal-format
msgid ""
"barrier region may not be closely nested inside of work-sharing, %<critical"
"%>, %<ordered%>, %<master%>, explicit %<task%> or %<taskloop%> region"
msgstr ""
-#: omp-low.c:3522
+#: omp-low.c:3532
#, gcc-internal-format
msgid ""
"work-sharing region may not be closely nested inside of work-sharing, "
@@ -19317,189 +19393,201 @@ msgid ""
"region"
msgstr ""
-#: omp-low.c:3551
+#: omp-low.c:3561
#, gcc-internal-format
msgid ""
"%<master%> region may not be closely nested inside of work-sharing, explicit "
"%<task%> or %<taskloop%> region"
msgstr ""
-#: omp-low.c:3575 omp-low.c:3714
+#: omp-low.c:3585 omp-low.c:3724
#, gcc-internal-format
msgid "%<depend(%s)%> is only allowed in %<omp ordered%>"
msgstr ""
-#: omp-low.c:3603
+#: omp-low.c:3613
#, gcc-internal-format
msgid ""
"%<ordered%> construct with %<depend%> clause must be closely nested inside "
"an %<ordered%> loop"
msgstr ""
-#: omp-low.c:3620
+#: omp-low.c:3630
#, gcc-internal-format
msgid "invalid depend kind in omp %<ordered%> %<depend%>"
msgstr ""
-#: omp-low.c:3635
+#: omp-low.c:3645
#, gcc-internal-format
msgid "%<ordered%> %<simd%> must be closely nested inside %<simd%> region"
msgstr ""
-#: omp-low.c:3648
+#: omp-low.c:3658
#, gcc-internal-format
msgid ""
"%<ordered%> region may not be closely nested inside of %<critical%>, "
"%<ordered%>, explicit %<task%> or %<taskloop%> region"
msgstr ""
-#: omp-low.c:3659 omp-low.c:3672
+#: omp-low.c:3669 omp-low.c:3682
#, gcc-internal-format
msgid ""
"%<ordered%> region must be closely nested inside a loop region with an "
"%<ordered%> clause"
msgstr ""
-#: omp-low.c:3689
+#: omp-low.c:3699
#, gcc-internal-format
msgid ""
"%<critical%> region may not be nested inside a %<critical%> region with the "
"same name"
msgstr ""
-#: omp-low.c:3701
+#: omp-low.c:3711
#, gcc-internal-format
msgid "%<teams%> construct not closely nested inside of %<target%> construct"
msgstr ""
-#: omp-low.c:3727
+#: omp-low.c:3732
+#, gcc-internal-format
+msgid ""
+"OpenACC region inside of OpenACC routine, nested parallelism not supported "
+"yet"
+msgstr ""
+
+#: omp-low.c:3745
#, gcc-internal-format
msgid "OpenACC construct inside of non-OpenACC region"
msgstr ""
-#: omp-low.c:3772
+#: omp-low.c:3790
#, gcc-internal-format
msgid "%s %qs construct inside of %s %qs region"
msgstr ""
-#: omp-low.c:3785 omp-low.c:3792
+#: omp-low.c:3803 omp-low.c:3810
#, gcc-internal-format
msgid "%qs construct inside of %qs region"
msgstr ""
-#: omp-low.c:3904
+#: omp-low.c:3922
#, gcc-internal-format
msgid "setjmp/longjmp inside simd construct"
msgstr ""
-#: omp-low.c:7936
+#: omp-low.c:7961
#, gcc-internal-format
msgid "%<depend(sink)%> clause waiting for lexically later iteration"
msgstr ""
-#: omp-low.c:8023
+#: omp-low.c:8048
#, gcc-internal-format
msgid "%<depend(sink)%> refers to iteration never in the iteration space"
msgstr ""
-#: omp-low.c:12563
+#: omp-low.c:12588
#, gcc-internal-format
msgid "multiple loop axes specified for routine"
msgstr ""
-#: omp-low.c:14578
+#: omp-low.c:14600
#, gcc-internal-format
msgid ""
"ignoring sink clause with offset that is not a multiple of the loop step"
msgstr ""
-#: omp-low.c:14601
+#: omp-low.c:14623
#, gcc-internal-format
msgid "first offset must be in opposite direction of loop iterations"
msgstr ""
-#: omp-low.c:17957
+#: omp-low.c:18031
#, gcc-internal-format, gfc-internal-format
msgid "invalid exit from %s structured block"
msgstr ""
-#: omp-low.c:17959 omp-low.c:17964
+#: omp-low.c:18033 omp-low.c:18038
#, gcc-internal-format, gfc-internal-format
msgid "invalid entry to %s structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:17968
+#: omp-low.c:18042
#, gcc-internal-format, gfc-internal-format
msgid "invalid branch to/from %s structured block"
msgstr ""
-#: omp-low.c:18501
+#: omp-low.c:18575
#, gcc-internal-format
msgid "ignoring large linear step"
msgstr ""
-#: omp-low.c:18508
+#: omp-low.c:18582
#, gcc-internal-format
msgid "ignoring zero linear step"
msgstr ""
-#: omp-low.c:20778
+#: omp-low.c:20449
+#, gcc-internal-format, gfc-internal-format
+msgid "-fopenacc-dim operand is malformed at '%s'"
+msgstr ""
+
+#: omp-low.c:21036
#, gcc-internal-format, gfc-internal-format
msgid "%s uses same OpenACC parallelism as containing loop"
msgstr ""
-#: omp-low.c:20780 omp-low.c:20809
+#: omp-low.c:21038 omp-low.c:21067
#, gcc-internal-format
msgid "containing loop here"
msgstr ""
-#: omp-low.c:20784
+#: omp-low.c:21042
#, gcc-internal-format, gfc-internal-format
msgid "%s uses OpenACC parallelism disallowed by containing routine"
msgstr ""
-#: omp-low.c:20789
+#: omp-low.c:21047
#, gcc-internal-format
msgid "routine %qD declared here"
msgstr ""
-#: omp-low.c:20802
+#: omp-low.c:21060
#, gcc-internal-format
msgid "incorrectly nested OpenACC loop parallelism"
msgstr ""
-#: omp-low.c:20866
+#: omp-low.c:21124
#, gcc-internal-format
msgid "insufficient partitioning available to parallelize loop"
msgstr ""
-#: optabs.c:4177
+#: optabs.c:4194
#, gcc-internal-format
msgid "indirect jumps are not available on this target"
msgstr ""
-#: opts-common.c:1038
+#: opts-common.c:1079
#, gcc-internal-format
msgid "command line option %qs is not supported by this configuration"
msgstr ""
-#: opts-common.c:1048
+#: opts-common.c:1089
#, gcc-internal-format
msgid "missing argument to %qs"
msgstr ""
-#: opts-common.c:1054
+#: opts-common.c:1095
#, gcc-internal-format
msgid "argument to %qs should be a non-negative integer"
msgstr ""
-#: opts-common.c:1069
+#: opts-common.c:1110
#, gcc-internal-format
msgid "unrecognized argument in option %qs"
msgstr ""
-#: opts-common.c:1087
+#: opts-common.c:1128
#, gcc-internal-format
msgid "valid arguments to %qs are: %s"
msgstr ""
@@ -19515,32 +19603,32 @@ msgstr ""
msgid "command line option %qs is valid for %s but not for %s"
msgstr ""
-#: opts-global.c:360
+#: opts-global.c:364
#, gcc-internal-format
msgid "unrecognized command line option %<-fdump-%s%>"
msgstr ""
-#: opts-global.c:365
+#: opts-global.c:369
#, gcc-internal-format
msgid "unrecognized command line option %<-fopt-info-%s%>"
msgstr ""
-#: opts-global.c:386 opts-global.c:394
+#: opts-global.c:390 opts-global.c:398
#, gcc-internal-format
msgid "plugin support is disabled; configure with --enable-plugin"
msgstr ""
-#: opts-global.c:418
+#: opts-global.c:422
#, gcc-internal-format
msgid "unrecognized register name %qs"
msgstr ""
-#: opts-global.c:430
+#: opts-global.c:440
#, gcc-internal-format
msgid "-fasan-shadow-offset should only be used with -fsanitize=kernel-address"
msgstr ""
-#: opts-global.c:433
+#: opts-global.c:443
#, gcc-internal-format
msgid "unrecognized shadow offset %qs"
msgstr ""
@@ -19588,58 +19676,58 @@ msgstr ""
msgid "section anchors must be disabled when toplevel reorder is disabled"
msgstr ""
-#: opts.c:808 config/darwin.c:3113
+#: opts.c:813 config/darwin.c:3113
#, gcc-internal-format
msgid ""
"-freorder-blocks-and-partition does not work with exceptions on this "
"architecture"
msgstr ""
-#: opts.c:824
+#: opts.c:829
#, gcc-internal-format
msgid ""
"-freorder-blocks-and-partition does not support unwind info on this "
"architecture"
msgstr ""
-#: opts.c:842 config/pa/pa.c:526
+#: opts.c:847 config/pa/pa.c:526
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
-#: opts.c:893
+#: opts.c:898
#, gcc-internal-format
msgid "-fno-fat-lto-objects are supported only with linker plugin"
msgstr ""
-#: opts.c:906
+#: opts.c:911
#, gcc-internal-format
msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
msgstr ""
-#: opts.c:939
+#: opts.c:944
#, gcc-internal-format
msgid "-fsanitize=address is incompatible with -fsanitize=kernel-address"
msgstr ""
-#: opts.c:947
+#: opts.c:952
#, gcc-internal-format
msgid ""
"-fsanitize=address and -fsanitize=kernel-address are incompatible with -"
"fsanitize=thread"
msgstr ""
-#: opts.c:953
+#: opts.c:958
#, gcc-internal-format
msgid "-fsanitize-recover=thread is not supported"
msgstr ""
-#: opts.c:956
+#: opts.c:961
#, gcc-internal-format
msgid "-fsanitize-recover=leak is not supported"
msgstr ""
-#: opts.c:1370
+#: opts.c:1375
#, gcc-internal-format
msgid "unrecognized include_flags 0x%x passed to print_specific_help"
msgstr ""
@@ -19977,22 +20065,22 @@ msgstr ""
msgid "output operand %d must use %<&%> constraint"
msgstr ""
-#: regcprop.c:1152
+#: regcprop.c:1171
#, gcc-internal-format, gfc-internal-format
msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
msgstr ""
-#: regcprop.c:1164
+#: regcprop.c:1183
#, gcc-internal-format, gfc-internal-format
msgid "validate_value_data: Loop in regno chain (%u)"
msgstr ""
-#: regcprop.c:1167
+#: regcprop.c:1186
#, gcc-internal-format, gfc-internal-format
msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
msgstr ""
-#: regcprop.c:1179
+#: regcprop.c:1198
#, gcc-internal-format, gfc-internal-format
msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
msgstr ""
@@ -20013,8 +20101,8 @@ msgid "can%'t use %qs as a fixed register"
msgstr ""
#: reginfo.c:750 config/ia64/ia64.c:5940 config/ia64/ia64.c:5947
-#: config/pa/pa.c:437 config/pa/pa.c:444 config/sh/sh.c:9625
-#: config/sh/sh.c:9632 config/spu/spu.c:4903 config/spu/spu.c:4910
+#: config/pa/pa.c:437 config/pa/pa.c:444 config/sh/sh.c:9627
+#: config/sh/sh.c:9634 config/spu/spu.c:4903 config/spu/spu.c:4910
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr ""
@@ -20034,7 +20122,7 @@ msgstr ""
msgid "register of %qD used for multiple global register variables"
msgstr ""
-#: reginfo.c:777 config/rs6000/rs6000.c:27626
+#: reginfo.c:777 config/rs6000/rs6000.c:27645
#, gcc-internal-format
msgid "conflicts with %qD"
msgstr ""
@@ -20059,37 +20147,27 @@ msgstr ""
msgid "%<&%> constraint used with no register class"
msgstr ""
-#: reload1.c:1274
-#, gcc-internal-format
-msgid "frame size too large for reliable stack checking"
-msgstr ""
-
-#: reload1.c:1277
-#, gcc-internal-format
-msgid "try reducing the number of local variables"
-msgstr ""
-
-#: reload1.c:2098
+#: reload1.c:2076
#, gcc-internal-format
msgid "can%'t find a register in class %qs while reloading %<asm%>"
msgstr ""
-#: reload1.c:2103
+#: reload1.c:2081
#, gcc-internal-format
msgid "unable to find a register to spill in class %qs"
msgstr ""
-#: reload1.c:4719
+#: reload1.c:4697
#, gcc-internal-format
msgid "%<asm%> operand requires impossible reload"
msgstr ""
-#: reload1.c:6140
+#: reload1.c:6118
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:8030
+#: reload1.c:8010
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr ""
@@ -20412,17 +20490,17 @@ msgid ""
"list."
msgstr ""
-#: symtab.c:1567
+#: symtab.c:1622
#, gcc-internal-format
msgid "function %q+D part of alias cycle"
msgstr ""
-#: symtab.c:1569
+#: symtab.c:1624
#, gcc-internal-format
msgid "variable %q+D part of alias cycle"
msgstr ""
-#: symtab.c:1597
+#: symtab.c:1652
#, gcc-internal-format
msgid "section of alias %q+D must match section of its target"
msgstr ""
@@ -20442,12 +20520,12 @@ msgstr ""
msgid "nested function trampolines not supported on this target"
msgstr ""
-#: targhooks.c:1326
+#: targhooks.c:1330
#, gcc-internal-format
msgid "target attribute is not supported on this machine"
msgstr ""
-#: targhooks.c:1340
+#: targhooks.c:1344
#, gcc-internal-format
msgid "#pragma GCC target is not supported for this machine"
msgstr ""
@@ -20812,8 +20890,7 @@ msgstr ""
#: tree-cfg.c:2965
#, gcc-internal-format
msgid ""
-"mode precision of non-integral result does not match field size of "
-"BIT_FIELD_REF"
+"mode size of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
#: tree-cfg.c:2973
@@ -21120,7 +21197,7 @@ msgid ""
"the same number of elements as the result"
msgstr ""
-#: tree-cfg.c:4007 c/c-typeck.c:4955
+#: tree-cfg.c:4007 c/c-typeck.c:4969
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr ""
@@ -21563,89 +21640,89 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr ""
-#: tree-inline.c:3542
+#: tree-inline.c:3528
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr ""
-#: tree-inline.c:3556
+#: tree-inline.c:3535
#, 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:3596
+#: tree-inline.c:3575
#, 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:3610
+#: tree-inline.c:3589
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:3624
+#: tree-inline.c:3603
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:3636
+#: tree-inline.c:3615
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses setjmp-longjmp exception "
"handling"
msgstr ""
-#: tree-inline.c:3644
+#: tree-inline.c:3623
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:3656
+#: tree-inline.c:3635
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses __builtin_return or "
"__builtin_apply_args"
msgstr ""
-#: tree-inline.c:3676
+#: tree-inline.c:3655
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:3777
+#: tree-inline.c:3756
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:3785
+#: tree-inline.c:3764
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses attributes conflicting "
"with inlining"
msgstr ""
-#: tree-inline.c:4446
+#: tree-inline.c:4425
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr ""
-#: tree-inline.c:4449 tree-inline.c:4469
+#: tree-inline.c:4428 tree-inline.c:4448
#, gcc-internal-format
msgid "called from here"
msgstr ""
-#: tree-inline.c:4452 tree-inline.c:4472
+#: tree-inline.c:4431 tree-inline.c:4451
#, gcc-internal-format
msgid "called from this function"
msgstr ""
-#: tree-inline.c:4465
+#: tree-inline.c:4444
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr ""
@@ -21660,8 +21737,8 @@ msgstr ""
msgid "cannot update SSA form"
msgstr ""
-#: tree-into-ssa.c:3282 tree-outof-ssa.c:847 tree-outof-ssa.c:906
-#: tree-ssa-coalesce.c:936 tree-ssa-live.c:1290
+#: tree-into-ssa.c:3282 tree-outof-ssa.c:851 tree-outof-ssa.c:910
+#: tree-ssa-coalesce.c:1010 tree-ssa-live.c:1290
#, gcc-internal-format
msgid "SSA corruption"
msgstr ""
@@ -21873,88 +21950,88 @@ msgid ""
"this target"
msgstr ""
-#: tree-vect-generic.c:263
+#: tree-vect-generic.c:265
#, gcc-internal-format
msgid "vector operation will be expanded piecewise"
msgstr ""
-#: tree-vect-generic.c:266
+#: tree-vect-generic.c:268
#, gcc-internal-format
msgid "vector operation will be expanded in parallel"
msgstr ""
-#: tree-vect-generic.c:317
+#: tree-vect-generic.c:319
#, gcc-internal-format
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:885
+#: tree-vect-generic.c:887
#, gcc-internal-format
msgid "vector condition will be expanded piecewise"
msgstr ""
-#: tree-vect-generic.c:1302
+#: tree-vect-generic.c:1304
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vect-loop.c:3378
+#: tree-vect-loop.c:3381
#, gcc-internal-format
msgid "vectorization did not happen for a simd loop"
msgstr ""
-#: tree-vrp.c:6498 tree-vrp.c:6538 tree-vrp.c:6619
+#: tree-vrp.c:6500 tree-vrp.c:6540 tree-vrp.c:6621
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr ""
-#: tree-vrp.c:6522
+#: tree-vrp.c:6524
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr ""
-#: tree-vrp.c:6551 tree-vrp.c:6606
+#: tree-vrp.c:6553 tree-vrp.c:6608
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr ""
-#: tree-vrp.c:7458
+#: tree-vrp.c:7462
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when simplifying conditional to "
"constant"
msgstr ""
-#: tree-vrp.c:7464 tree-vrp.c:9428 tree-vrp.c:9472 tree-vrp.c:9535
+#: tree-vrp.c:7468 tree-vrp.c:9432 tree-vrp.c:9476 tree-vrp.c:9539
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:7508
+#: tree-vrp.c:7512
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr ""
-#: tree-vrp.c:7510
+#: tree-vrp.c:7514
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr ""
-#: tree-vrp.c:9027
+#: tree-vrp.c:9031
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when simplifying %</%> or %<%%%> to "
"%<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:9092
+#: tree-vrp.c:9096
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when simplifying %<min/max (X,Y)%> "
"to %<X%> or %<Y%>"
msgstr ""
-#: tree-vrp.c:9145
+#: tree-vrp.c:9149
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X"
@@ -21976,169 +22053,169 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr ""
-#: tree.c:6322
+#: tree.c:6328
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:6334
+#: tree.c:6340
#, gcc-internal-format
msgid ""
"%q+D redeclared without dllimport attribute after being referenced with dll "
"linkage"
msgstr ""
-#: tree.c:6349
+#: tree.c:6355
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:6392 tree.c:6404 tree.c:6414 c-family/c-common.c:6586
-#: c-family/c-common.c:6605 c-family/c-common.c:6623 c-family/c-common.c:6653
-#: c-family/c-common.c:6681 c-family/c-common.c:6709 c-family/c-common.c:6725
-#: c-family/c-common.c:6740 c-family/c-common.c:6758 c-family/c-common.c:6773
-#: c-family/c-common.c:6805 c-family/c-common.c:6822 c-family/c-common.c:6839
-#: c-family/c-common.c:6877 c-family/c-common.c:6900 c-family/c-common.c:6917
-#: c-family/c-common.c:6945 c-family/c-common.c:6966 c-family/c-common.c:6987
-#: c-family/c-common.c:7014 c-family/c-common.c:7043 c-family/c-common.c:7080
-#: c-family/c-common.c:7133 c-family/c-common.c:7191 c-family/c-common.c:7249
-#: c-family/c-common.c:7338 c-family/c-common.c:7368 c-family/c-common.c:7422
-#: c-family/c-common.c:7893 c-family/c-common.c:7930 c-family/c-common.c:7986
-#: c-family/c-common.c:8042 c-family/c-common.c:8120 c-family/c-common.c:8247
-#: c-family/c-common.c:8309 c-family/c-common.c:8416 c-family/c-common.c:8432
-#: c-family/c-common.c:8448 c-family/c-common.c:8469 c-family/c-common.c:8539
-#: c-family/c-common.c:8566 c-family/c-common.c:8614 c-family/c-common.c:8794
-#: c-family/c-common.c:8815 c-family/c-common.c:8928 c-family/c-common.c:8955
-#: c-family/c-common.c:9268 c-family/c-common.c:9291 c-family/c-common.c:9330
-#: c-family/c-common.c:9412 c-family/c-common.c:9455 c-family/c-common.c:9592
-#: config/darwin.c:2021 config/arm/arm.c:6479 config/arm/arm.c:6507
-#: config/arm/arm.c:6524 config/avr/avr.c:8961 config/h8300/h8300.c:5477
-#: config/h8300/h8300.c:5501 config/i386/i386.c:6833 config/i386/i386.c:44470
-#: config/ia64/ia64.c:756 config/rs6000/rs6000.c:31016 config/spu/spu.c:3738
-#: ada/gcc-interface/utils.c:5965 ada/gcc-interface/utils.c:5991
+#: tree.c:6398 tree.c:6410 tree.c:6420 c-family/c-common.c:6588
+#: c-family/c-common.c:6607 c-family/c-common.c:6625 c-family/c-common.c:6655
+#: c-family/c-common.c:6683 c-family/c-common.c:6711 c-family/c-common.c:6727
+#: c-family/c-common.c:6742 c-family/c-common.c:6760 c-family/c-common.c:6775
+#: c-family/c-common.c:6807 c-family/c-common.c:6824 c-family/c-common.c:6841
+#: c-family/c-common.c:6879 c-family/c-common.c:6902 c-family/c-common.c:6919
+#: c-family/c-common.c:6947 c-family/c-common.c:6968 c-family/c-common.c:6989
+#: c-family/c-common.c:7016 c-family/c-common.c:7045 c-family/c-common.c:7082
+#: c-family/c-common.c:7135 c-family/c-common.c:7193 c-family/c-common.c:7251
+#: c-family/c-common.c:7340 c-family/c-common.c:7370 c-family/c-common.c:7424
+#: c-family/c-common.c:7895 c-family/c-common.c:7932 c-family/c-common.c:7988
+#: c-family/c-common.c:8044 c-family/c-common.c:8122 c-family/c-common.c:8249
+#: c-family/c-common.c:8311 c-family/c-common.c:8418 c-family/c-common.c:8434
+#: c-family/c-common.c:8450 c-family/c-common.c:8471 c-family/c-common.c:8541
+#: c-family/c-common.c:8568 c-family/c-common.c:8616 c-family/c-common.c:8796
+#: c-family/c-common.c:8817 c-family/c-common.c:8930 c-family/c-common.c:8957
+#: c-family/c-common.c:9270 c-family/c-common.c:9293 c-family/c-common.c:9332
+#: c-family/c-common.c:9414 c-family/c-common.c:9457 c-family/c-common.c:9594
+#: config/darwin.c:2021 config/arm/arm.c:6488 config/arm/arm.c:6516
+#: config/arm/arm.c:6533 config/avr/avr.c:8971 config/h8300/h8300.c:5477
+#: config/h8300/h8300.c:5501 config/i386/i386.c:6862 config/i386/i386.c:44531
+#: config/ia64/ia64.c:756 config/rs6000/rs6000.c:31035 config/spu/spu.c:3738
+#: ada/gcc-interface/utils.c:5986 ada/gcc-interface/utils.c:6012
#: lto/lto-lang.c:243
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr ""
-#: tree.c:6432
+#: tree.c:6438
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr ""
-#: tree.c:6440
+#: tree.c:6446
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:6448
+#: tree.c:6454
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:6476
+#: tree.c:6482
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:6490
+#: tree.c:6496
#, gcc-internal-format
msgid ""
"%qE implies default visibility, but %qD has already been declared with a "
"different visibility"
msgstr ""
-#: tree.c:8239
+#: tree.c:8245
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:8408
+#: tree.c:8414
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:9635 tree.c:9720 tree.c:9781
+#: tree.c:9641 tree.c:9726 tree.c:9787
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9672
+#: tree.c:9678
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9685
+#: tree.c:9691
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:9734
+#: tree.c:9740
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:9747
+#: tree.c:9753
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9807
+#: tree.c:9813
#, gcc-internal-format
msgid ""
"tree check: expected tree that contains %qs structure, have %qs in %s, at %s:"
"%d"
msgstr ""
-#: tree.c:9821
+#: tree.c:9827
#, gcc-internal-format, gfc-internal-format
msgid ""
"tree check: accessed elt %d of tree_int_cst with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9833
+#: tree.c:9839
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9846
+#: tree.c:9852
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9859
+#: tree.c:9865
#, gcc-internal-format, gfc-internal-format
msgid ""
"tree check: accessed operand %d of omp_clause %s with %d operands in %s, at "
"%s:%d"
msgstr ""
-#: tree.c:12566
+#: tree.c:12584
#, gcc-internal-format
msgid "%qD is deprecated: %s"
msgstr ""
-#: tree.c:12569
+#: tree.c:12587
#, gcc-internal-format
msgid "%qD is deprecated"
msgstr ""
-#: tree.c:12593 tree.c:12615
+#: tree.c:12611 tree.c:12633
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr ""
-#: tree.c:12596 tree.c:12618
+#: tree.c:12614 tree.c:12636
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr ""
-#: tree.c:12602 tree.c:12623
+#: tree.c:12620 tree.c:12641
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr ""
-#: tree.c:12605 tree.c:12626
+#: tree.c:12623 tree.c:12644
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
@@ -22165,264 +22242,264 @@ msgstr ""
#. main variant only.
#.
#. Convenience macro for matching individual fields.
-#: tree.c:13028
+#: tree.c:13048
#, gcc-internal-format
msgid "type variant differs by "
msgstr ""
-#: tree.c:13068
+#: tree.c:13088
#, gcc-internal-format
msgid "type variant has different TYPE_SIZE_UNIT"
msgstr ""
-#: tree.c:13070
+#: tree.c:13090
#, gcc-internal-format
msgid "type variant's TYPE_SIZE_UNIT"
msgstr ""
-#: tree.c:13072
+#: tree.c:13092
#, gcc-internal-format
msgid "type's TYPE_SIZE_UNIT"
msgstr ""
-#: tree.c:13092
+#: tree.c:13112
#, gcc-internal-format
msgid "type variant with TYPE_ALIAS_SET_KNOWN_P"
msgstr ""
-#: tree.c:13105
+#: tree.c:13125
#, gcc-internal-format
msgid "type variant has different TYPE_VFIELD"
msgstr ""
-#: tree.c:13122
+#: tree.c:13142
#, gcc-internal-format
msgid "type variant has TYPE_METHODS"
msgstr ""
-#: tree.c:13147
+#: tree.c:13167
#, gcc-internal-format
msgid "type variant has different TYPE_BINFO"
msgstr ""
-#: tree.c:13149
+#: tree.c:13169
#, gcc-internal-format
msgid "type variant's TYPE_BINFO"
msgstr ""
-#: tree.c:13151
+#: tree.c:13171
#, gcc-internal-format
msgid "type's TYPE_BINFO"
msgstr ""
-#: tree.c:13189
+#: tree.c:13209
#, gcc-internal-format
msgid "type variant has different TYPE_FIELDS"
msgstr ""
-#: tree.c:13191
+#: tree.c:13211
#, gcc-internal-format
msgid "first mismatch is field"
msgstr ""
-#: tree.c:13193
+#: tree.c:13213
#, gcc-internal-format
msgid "and field"
msgstr ""
-#: tree.c:13210
+#: tree.c:13230
#, gcc-internal-format
msgid "type variant has different TREE_TYPE"
msgstr ""
-#: tree.c:13212 tree.c:13223
+#: tree.c:13232 tree.c:13243
#, gcc-internal-format
msgid "type variant's TREE_TYPE"
msgstr ""
-#: tree.c:13214 tree.c:13225
+#: tree.c:13234 tree.c:13245
#, gcc-internal-format
msgid "type's TREE_TYPE"
msgstr ""
-#: tree.c:13221
+#: tree.c:13241
#, gcc-internal-format
msgid "type is not compatible with its vairant"
msgstr ""
-#: tree.c:13520
+#: tree.c:13540
#, gcc-internal-format
msgid "Main variant is not defined"
msgstr ""
-#: tree.c:13525
+#: tree.c:13545
#, gcc-internal-format
msgid "TYPE_MAIN_VARIANT has different TYPE_MAIN_VARIANT"
msgstr ""
-#: tree.c:13537
+#: tree.c:13557
#, gcc-internal-format
msgid "TYPE_CANONICAL has different TYPE_CANONICAL"
msgstr ""
-#: tree.c:13555
+#: tree.c:13575
#, gcc-internal-format
msgid "TYPE_CANONICAL is not compatible"
msgstr ""
-#: tree.c:13563
+#: tree.c:13583
#, gcc-internal-format
msgid "TYPE_MODE of TYPE_CANONICAL is not compatible"
msgstr ""
-#: tree.c:13569
+#: tree.c:13589
#, gcc-internal-format
msgid "TYPE_CANONICAL of main variant is not main variant"
msgstr ""
-#: tree.c:13585
+#: tree.c:13605
#, gcc-internal-format
msgid "TYPE_VFIELD is not FIELD_DECL nor TREE_LIST"
msgstr ""
-#: tree.c:13595
+#: tree.c:13615
#, gcc-internal-format
msgid "TYPE_NEXT_PTR_TO is not POINTER_TYPE"
msgstr ""
-#: tree.c:13605
+#: tree.c:13625
#, gcc-internal-format
msgid "TYPE_NEXT_REF_TO is not REFERENCE_TYPE"
msgstr ""
-#: tree.c:13623
+#: tree.c:13643
#, gcc-internal-format
msgid "TYPE_MINVAL non-NULL"
msgstr ""
-#: tree.c:13635
+#: tree.c:13655
#, gcc-internal-format
msgid "TYPE_METHODS is not FUNCTION_DECL, TEMPLATE_DECL nor error_mark_node"
msgstr ""
-#: tree.c:13646
+#: tree.c:13666
#, gcc-internal-format
msgid "TYPE_METHOD_BASETYPE is not record nor union"
msgstr ""
-#: tree.c:13657
+#: tree.c:13677
#, gcc-internal-format
msgid "TYPE_OFFSET_BASETYPE is not record nor union"
msgstr ""
-#: tree.c:13675
+#: tree.c:13695
#, gcc-internal-format
msgid "TYPE_ARRAY_MAX_SIZE not INTEGER_CST"
msgstr ""
-#: tree.c:13682
+#: tree.c:13702
#, gcc-internal-format
msgid "TYPE_MAXVAL non-NULL"
msgstr ""
-#: tree.c:13694
+#: tree.c:13714
#, gcc-internal-format
msgid "TYPE_BINFO is not TREE_BINFO"
msgstr ""
-#: tree.c:13702
+#: tree.c:13722
#, gcc-internal-format
msgid "TYPE_BINFO type is not TYPE_MAIN_VARIANT"
msgstr ""
-#: tree.c:13709
+#: tree.c:13729
#, gcc-internal-format
msgid "TYPE_LANG_SLOT_1 (binfo) field is non-NULL"
msgstr ""
-#: tree.c:13725
+#: tree.c:13745
#, gcc-internal-format
msgid "Enum value is not CONST_DECL or INTEGER_CST"
msgstr ""
-#: tree.c:13733
+#: tree.c:13753
#, gcc-internal-format
msgid "Enum value type is not INTEGER_TYPE nor convertible to the enum"
msgstr ""
-#: tree.c:13740
+#: tree.c:13760
#, gcc-internal-format
msgid "Enum value name is not IDENTIFIER_NODE"
msgstr ""
-#: tree.c:13750
+#: tree.c:13770
#, gcc-internal-format
msgid "Array TYPE_DOMAIN is not integer type"
msgstr ""
-#: tree.c:13759
+#: tree.c:13779
#, gcc-internal-format
msgid "TYPE_FIELDS defined in incomplete type"
msgstr ""
-#: tree.c:13779
+#: tree.c:13799
#, gcc-internal-format
msgid "Wrong tree in TYPE_FIELDS list"
msgstr ""
-#: tree.c:13794
+#: tree.c:13814
#, gcc-internal-format
msgid "TYPE_CACHED_VALUES_P is %i while TYPE_CACHED_VALUES is %p"
msgstr ""
-#: tree.c:13800
+#: tree.c:13820
#, gcc-internal-format
msgid "TYPE_CACHED_VALUES is not TREE_VEC"
msgstr ""
-#: tree.c:13813
+#: tree.c:13833
#, gcc-internal-format
msgid "wrong TYPE_CACHED_VALUES entry"
msgstr ""
-#: tree.c:13826
+#: tree.c:13846
#, gcc-internal-format
msgid "TREE_PURPOSE is non-NULL in TYPE_ARG_TYPES list"
msgstr ""
-#: tree.c:13832
+#: tree.c:13852
#, gcc-internal-format
msgid "Wrong entry in TYPE_ARG_TYPES list"
msgstr ""
-#: tree.c:13839
+#: tree.c:13859
#, gcc-internal-format
msgid "TYPE_VALUES_RAW field is non-NULL"
msgstr ""
-#: tree.c:13851
+#: tree.c:13871
#, gcc-internal-format
msgid "TYPE_CACHED_VALUES_P is set while it should not"
msgstr ""
-#: tree.c:13857
+#: tree.c:13877
#, gcc-internal-format
msgid "TYPE_STRING_FLAG is set on wrong type code"
msgstr ""
-#: tree.c:13869
+#: tree.c:13889
#, gcc-internal-format
msgid ""
"TYPE_STRING_FLAG is set on type that does not look like char nor array of "
"chars"
msgstr ""
-#: tree.c:13881
+#: tree.c:13901
#, gcc-internal-format
msgid "TYPE_METHOD_BASETYPE is not main variant"
msgstr ""
-#: tree.c:13888
+#: tree.c:13908
#, gcc-internal-format
msgid "verify_type failed"
msgstr ""
@@ -22547,7 +22624,7 @@ msgid ""
"requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr ""
-#: varasm.c:2132 c/c-decl.c:4790 c/c-parser.c:1439
+#: varasm.c:2132 c/c-decl.c:4819 c/c-parser.c:1439
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr ""
@@ -22562,62 +22639,62 @@ msgstr ""
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:5059
+#: varasm.c:5064
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr ""
-#: varasm.c:5319
+#: varasm.c:5324
#, gcc-internal-format
msgid "%+D declared weak after being used"
msgstr ""
-#: varasm.c:5402
+#: varasm.c:5407
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr ""
-#: varasm.c:5406
+#: varasm.c:5411
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr ""
-#: varasm.c:5435 varasm.c:5739
+#: varasm.c:5440 varasm.c:5744
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5629
+#: varasm.c:5634
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr ""
-#: varasm.c:5661
+#: varasm.c:5666
#, gcc-internal-format
msgid "ifunc is not supported on this target"
msgstr ""
-#: varasm.c:5719
+#: varasm.c:5724
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5721
+#: varasm.c:5726
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5728
+#: varasm.c:5733
#, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr ""
-#: varasm.c:5736
+#: varasm.c:5741
#, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr ""
-#: varasm.c:5954 config/sol2.c:154 config/i386/winnt.c:260
+#: varasm.c:5959 config/sol2.c:157 config/i386/winnt.c:260
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr ""
@@ -22697,7 +22774,8 @@ msgid ""
"required to support"
msgstr ""
-#: c-family/c-common.c:1126 c-family/c-common.c:1138 cp/constexpr.c:1473
+#: c-family/c-common.c:1126 c-family/c-common.c:1138 cp/constexpr.c:1612
+#: cp/constexpr.c:3494
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr ""
@@ -22782,1442 +22860,1449 @@ msgstr ""
msgid "type-punning to incomplete type might break strict-aliasing rules"
msgstr ""
-#: c-family/c-common.c:1573
+#: c-family/c-common.c:1575
#, gcc-internal-format
msgid "dereferencing type-punned pointer will break strict-aliasing rules"
msgstr ""
-#: c-family/c-common.c:1580 c-family/c-common.c:1598
+#: c-family/c-common.c:1582 c-family/c-common.c:1600
#, gcc-internal-format
msgid "dereferencing type-punned pointer might break strict-aliasing rules"
msgstr ""
-#: c-family/c-common.c:1732
+#: c-family/c-common.c:1734
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the "
"destination; did you mean to remove the addressof?"
msgstr ""
-#: c-family/c-common.c:1739
+#: c-family/c-common.c:1741
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the "
"destination; did you mean to provide an explicit length?"
msgstr ""
-#: c-family/c-common.c:1744
+#: c-family/c-common.c:1746
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the "
"destination; did you mean to dereference it?"
msgstr ""
-#: c-family/c-common.c:1756
+#: c-family/c-common.c:1758
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same pointer type %qT as the "
"destination; expected %qT or an explicit length"
msgstr ""
-#: c-family/c-common.c:1772
+#: c-family/c-common.c:1774
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the source; did "
"you mean to remove the addressof?"
msgstr ""
-#: c-family/c-common.c:1779
+#: c-family/c-common.c:1781
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the source; did "
"you mean to provide an explicit length?"
msgstr ""
-#: c-family/c-common.c:1784
+#: c-family/c-common.c:1786
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the source; did "
"you mean to dereference it?"
msgstr ""
-#: c-family/c-common.c:1796
+#: c-family/c-common.c:1798
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same pointer type %qT as the "
"source; expected %qT or an explicit length"
msgstr ""
-#: c-family/c-common.c:1812
+#: c-family/c-common.c:1814
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the first "
"source; did you mean to remove the addressof?"
msgstr ""
-#: c-family/c-common.c:1819
+#: c-family/c-common.c:1821
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the first "
"source; did you mean to provide an explicit length?"
msgstr ""
-#: c-family/c-common.c:1824
+#: c-family/c-common.c:1826
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the first "
"source; did you mean to dereference it?"
msgstr ""
-#: c-family/c-common.c:1836
+#: c-family/c-common.c:1838
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same pointer type %qT as the first "
"source; expected %qT or an explicit length"
msgstr ""
-#: c-family/c-common.c:1852
+#: c-family/c-common.c:1854
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the second "
"source; did you mean to remove the addressof?"
msgstr ""
-#: c-family/c-common.c:1859
+#: c-family/c-common.c:1861
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the second "
"source; did you mean to provide an explicit length?"
msgstr ""
-#: c-family/c-common.c:1864
+#: c-family/c-common.c:1866
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same expression as the second "
"source; did you mean to dereference it?"
msgstr ""
-#: c-family/c-common.c:1876
+#: c-family/c-common.c:1878
#, gcc-internal-format
msgid ""
"argument to %<sizeof%> in %qD call is the same pointer type %qT as the "
"second source; expected %qT or an explicit length"
msgstr ""
-#: c-family/c-common.c:1905 c-family/c-common.c:1912
+#: c-family/c-common.c:1907 c-family/c-common.c:1914
#, gcc-internal-format
msgid "%<_Atomic%>-qualified parameter type %qT of %q+D"
msgstr ""
-#: c-family/c-common.c:1922
+#: c-family/c-common.c:1924
#, gcc-internal-format
msgid "first argument of %q+D should be %<int%>"
msgstr ""
-#: c-family/c-common.c:1931
+#: c-family/c-common.c:1933
#, gcc-internal-format
msgid "second argument of %q+D should be %<char **%>"
msgstr ""
-#: c-family/c-common.c:1940
+#: c-family/c-common.c:1942
#, gcc-internal-format
msgid "third argument of %q+D should probably be %<char **%>"
msgstr ""
-#: c-family/c-common.c:1951
+#: c-family/c-common.c:1953
#, gcc-internal-format
msgid "%q+D takes only zero or two arguments"
msgstr ""
-#: c-family/c-common.c:1955
+#: c-family/c-common.c:1957
#, gcc-internal-format
msgid "%q+D declared as variadic function"
msgstr ""
-#: c-family/c-common.c:2023
+#: c-family/c-common.c:2025
#, gcc-internal-format
msgid ""
"use -flax-vector-conversions to permit conversions between vectors with "
"differing element types or numbers of subparts"
msgstr ""
-#: c-family/c-common.c:2063
+#: c-family/c-common.c:2065
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr ""
-#: c-family/c-common.c:2072
+#: c-family/c-common.c:2074
#, gcc-internal-format
msgid "__builtin_shuffle arguments must be vectors"
msgstr ""
-#: c-family/c-common.c:2079
+#: c-family/c-common.c:2081
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-family/c-common.c:2090
+#: c-family/c-common.c:2092
#, gcc-internal-format
msgid ""
"__builtin_shuffle number of elements of the argument vector(s) and the mask "
"vector should be the same"
msgstr ""
-#: c-family/c-common.c:2100
+#: c-family/c-common.c:2102
#, gcc-internal-format
msgid ""
"__builtin_shuffle argument vector(s) inner type must have the same size as "
"inner type of the mask"
msgstr ""
-#: c-family/c-common.c:2327
+#: c-family/c-common.c:2329
#, gcc-internal-format
msgid "negative integer implicitly converted to unsigned type"
msgstr ""
-#: c-family/c-common.c:2333
+#: c-family/c-common.c:2335
#, gcc-internal-format
msgid "conversion of unsigned constant value to negative integer"
msgstr ""
-#: c-family/c-common.c:2484 c-family/c-common.c:2546
+#: c-family/c-common.c:2486 c-family/c-common.c:2548
#, gcc-internal-format
msgid "conversion to %qT from %qT may change the sign of the result"
msgstr ""
-#: c-family/c-common.c:2604
+#: c-family/c-common.c:2606
#, gcc-internal-format
msgid "conversion to %qT from boolean expression"
msgstr ""
-#: c-family/c-common.c:2613 c-family/c-common.c:2617
+#: c-family/c-common.c:2615 c-family/c-common.c:2619
#, gcc-internal-format
msgid "conversion to %qT alters %qT constant value"
msgstr ""
-#: c-family/c-common.c:2637 c-family/c-common.c:2645
+#: c-family/c-common.c:2639 c-family/c-common.c:2647
#, gcc-internal-format
msgid "conversion to %qT from %qT may alter its value"
msgstr ""
-#: c-family/c-common.c:2641
+#: c-family/c-common.c:2643
#, gcc-internal-format
msgid "conversion to %qT from %qT discards imaginary component"
msgstr ""
-#: c-family/c-common.c:2676
+#: c-family/c-common.c:2678
#, gcc-internal-format
msgid "large integer implicitly truncated to unsigned type"
msgstr ""
-#: c-family/c-common.c:2682 c-family/c-common.c:2689 c-family/c-common.c:2697
+#: c-family/c-common.c:2684 c-family/c-common.c:2691 c-family/c-common.c:2699
#, gcc-internal-format
msgid "overflow in implicit constant conversion"
msgstr ""
-#: c-family/c-common.c:2869
+#: c-family/c-common.c:2871
#, gcc-internal-format
msgid "operation on %qE may be undefined"
msgstr ""
-#: c-family/c-common.c:3176
+#: c-family/c-common.c:3178
#, gcc-internal-format
msgid "case label does not reduce to an integer constant"
msgstr ""
-#: c-family/c-common.c:3222
+#: c-family/c-common.c:3224
#, gcc-internal-format
msgid "case label value is less than minimum value for type"
msgstr ""
-#: c-family/c-common.c:3232
+#: c-family/c-common.c:3234
#, gcc-internal-format
msgid "case label value exceeds maximum value for type"
msgstr ""
-#: c-family/c-common.c:3241
+#: c-family/c-common.c:3243
#, gcc-internal-format
msgid "lower value in case label range less than minimum value for type"
msgstr ""
-#: c-family/c-common.c:3251
+#: c-family/c-common.c:3253
#, gcc-internal-format
msgid "upper value in case label range exceeds maximum value for type"
msgstr ""
-#: c-family/c-common.c:3334
+#: c-family/c-common.c:3336
#, 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-family/c-common.c:3864
+#: c-family/c-common.c:3866
#, gcc-internal-format
msgid "invalid operands to binary %s (have %qT and %qT)"
msgstr ""
-#: c-family/c-common.c:4114
+#: c-family/c-common.c:4116
#, gcc-internal-format
msgid "comparison is always false due to limited range of data type"
msgstr ""
-#: c-family/c-common.c:4117
+#: c-family/c-common.c:4119
#, gcc-internal-format
msgid "comparison is always true due to limited range of data type"
msgstr ""
-#: c-family/c-common.c:4207
+#: c-family/c-common.c:4209
#, gcc-internal-format
msgid "comparison of unsigned expression >= 0 is always true"
msgstr ""
-#: c-family/c-common.c:4214
+#: c-family/c-common.c:4216
#, gcc-internal-format
msgid "comparison of unsigned expression < 0 is always false"
msgstr ""
-#: c-family/c-common.c:4257
+#: c-family/c-common.c:4259
#, gcc-internal-format
msgid "pointer of type %<void *%> used in arithmetic"
msgstr ""
-#: c-family/c-common.c:4266
+#: c-family/c-common.c:4268
#, gcc-internal-format
msgid "pointer to a function used in arithmetic"
msgstr ""
-#: c-family/c-common.c:4478
+#: c-family/c-common.c:4480
#, gcc-internal-format
msgid "the address of %qD will always evaluate as %<true%>"
msgstr ""
-#: c-family/c-common.c:4560
+#: c-family/c-common.c:4562
#, gcc-internal-format
msgid ""
"the compiler can assume that the address of %qD will always evaluate to "
"%<true%>"
msgstr ""
-#: c-family/c-common.c:4587 cp/semantics.c:660 cp/typeck.c:8470
+#: c-family/c-common.c:4589 cp/semantics.c:660 cp/typeck.c:8450
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
-#: c-family/c-common.c:4666 c/c-decl.c:4097 c/c-typeck.c:13557
+#: c-family/c-common.c:4668 c/c-decl.c:4126 c/c-typeck.c:13560
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr ""
-#: c-family/c-common.c:4866
+#: c-family/c-common.c:4868
#, gcc-internal-format
msgid "invalid application of %<sizeof%> to a function type"
msgstr ""
-#: c-family/c-common.c:4876
+#: c-family/c-common.c:4878
#, gcc-internal-format
msgid "ISO C++ does not permit %<alignof%> applied to a function type"
msgstr ""
-#: c-family/c-common.c:4879
+#: c-family/c-common.c:4881
#, gcc-internal-format
msgid "ISO C does not permit %<_Alignof%> applied to a function type"
msgstr ""
-#: c-family/c-common.c:4890
+#: c-family/c-common.c:4892
#, gcc-internal-format
msgid "invalid application of %qs to a void type"
msgstr ""
-#: c-family/c-common.c:4899
+#: c-family/c-common.c:4901
#, gcc-internal-format
msgid "invalid application of %qs to incomplete type %qT"
msgstr ""
-#: c-family/c-common.c:4907
+#: c-family/c-common.c:4909
#, gcc-internal-format
msgid "invalid application of %qs to array type %qT of incomplete element type"
msgstr ""
-#: c-family/c-common.c:4949
+#: c-family/c-common.c:4951
#, gcc-internal-format
msgid "%<__alignof%> applied to a bit-field"
msgstr ""
-#: c-family/c-common.c:5828
+#: c-family/c-common.c:5830
#, gcc-internal-format
msgid "cannot disable built-in function %qs"
msgstr ""
-#: c-family/c-common.c:6020
+#: c-family/c-common.c:6022
#, gcc-internal-format
msgid "pointers are not permitted as case values"
msgstr ""
-#: c-family/c-common.c:6027
+#: c-family/c-common.c:6029
#, gcc-internal-format
msgid "range expressions in switch statements are non-standard"
msgstr ""
-#: c-family/c-common.c:6053
+#: c-family/c-common.c:6055
#, gcc-internal-format
msgid "empty range specified"
msgstr ""
-#: c-family/c-common.c:6114
+#: c-family/c-common.c:6116
#, gcc-internal-format
msgid "duplicate (or overlapping) case value"
msgstr ""
-#: c-family/c-common.c:6116
+#: c-family/c-common.c:6118
#, gcc-internal-format
msgid "this is the first entry overlapping that value"
msgstr ""
-#: c-family/c-common.c:6120
+#: c-family/c-common.c:6122
#, gcc-internal-format
msgid "duplicate case value"
msgstr ""
-#: c-family/c-common.c:6121 c-family/c-common.c:12667
+#: c-family/c-common.c:6123 c-family/c-common.c:12700
#, gcc-internal-format
msgid "previously used here"
msgstr ""
-#: c-family/c-common.c:6125
+#: c-family/c-common.c:6127
#, gcc-internal-format
msgid "multiple default labels in one switch"
msgstr ""
-#: c-family/c-common.c:6127
+#: c-family/c-common.c:6129
#, gcc-internal-format
msgid "this is the first default label"
msgstr ""
-#: c-family/c-common.c:6171
+#: c-family/c-common.c:6173
#, gcc-internal-format
msgid "case value %qs not in enumerated type"
msgstr ""
-#: c-family/c-common.c:6176
+#: c-family/c-common.c:6178
#, gcc-internal-format
msgid "case value %qs not in enumerated type %qT"
msgstr ""
-#: c-family/c-common.c:6237
+#: c-family/c-common.c:6239
#, gcc-internal-format
msgid "switch missing default case"
msgstr ""
-#: c-family/c-common.c:6282
+#: c-family/c-common.c:6284
#, gcc-internal-format
msgid "switch condition has boolean value"
msgstr ""
-#: c-family/c-common.c:6355
+#: c-family/c-common.c:6357
#, gcc-internal-format
msgid "enumeration value %qE not handled in switch"
msgstr ""
-#: c-family/c-common.c:6381
+#: c-family/c-common.c:6383
#, gcc-internal-format
msgid "taking the address of a label is non-standard"
msgstr ""
-#: c-family/c-common.c:6575
+#: c-family/c-common.c:6577
#, gcc-internal-format
msgid "%qE attribute ignored for field of type %qT"
msgstr ""
-#: c-family/c-common.c:6672 c-family/c-common.c:6700 c-family/c-common.c:6796
+#: c-family/c-common.c:6674 c-family/c-common.c:6702 c-family/c-common.c:6798
#, gcc-internal-format
msgid "%qE attribute ignored due to conflict with attribute %qs"
msgstr ""
-#: c-family/c-common.c:6860 c-family/c-common.c:6866 c-family/c-common.c:9417
-#: c-family/c-common.c:9439 c-family/c-common.c:9445
+#: c-family/c-common.c:6862 c-family/c-common.c:6868 c-family/c-common.c:9419
+#: c-family/c-common.c:9441 c-family/c-common.c:9447
#, gcc-internal-format
msgid "%qE attribute ignored due to conflict with %qs attribute"
msgstr ""
-#: c-family/c-common.c:6922 lto/lto-lang.c:248
+#: c-family/c-common.c:6924 lto/lto-lang.c:248
#, gcc-internal-format
msgid "%qE attribute has no effect on unit local functions"
msgstr ""
-#: c-family/c-common.c:7074
+#: c-family/c-common.c:7076
#, gcc-internal-format
msgid "%qE attribute have effect only on public objects"
msgstr ""
-#: c-family/c-common.c:7103
+#: c-family/c-common.c:7105
#, gcc-internal-format
msgid "%qE attribute only affects top level objects"
msgstr ""
-#: c-family/c-common.c:7157
+#: c-family/c-common.c:7159
#, gcc-internal-format
msgid "scalar_storage_order is not supported because endianness is not uniform"
msgstr ""
-#: c-family/c-common.c:7174
+#: c-family/c-common.c:7176
#, gcc-internal-format
msgid ""
"scalar_storage_order argument must be one of \"big-endian\" or \"little-"
"endian\""
msgstr ""
-#: c-family/c-common.c:7270
+#: c-family/c-common.c:7272
#, gcc-internal-format
msgid "destructor priorities are not supported"
msgstr ""
-#: c-family/c-common.c:7272
+#: c-family/c-common.c:7274
#, gcc-internal-format
msgid "constructor priorities are not supported"
msgstr ""
-#: c-family/c-common.c:7294
+#: c-family/c-common.c:7296
#, gcc-internal-format, gfc-internal-format
msgid "destructor priorities from 0 to %d are reserved for the implementation"
msgstr ""
-#: c-family/c-common.c:7299
+#: c-family/c-common.c:7301
#, gcc-internal-format, gfc-internal-format
msgid "constructor priorities from 0 to %d are reserved for the implementation"
msgstr ""
-#: c-family/c-common.c:7307
+#: c-family/c-common.c:7309
#, gcc-internal-format, gfc-internal-format
msgid "destructor priorities must be integers from 0 to %d inclusive"
msgstr ""
-#: c-family/c-common.c:7310
+#: c-family/c-common.c:7312
#, gcc-internal-format, gfc-internal-format
msgid "constructor priorities must be integers from 0 to %d inclusive"
msgstr ""
-#: c-family/c-common.c:7466
+#: c-family/c-common.c:7468
#, gcc-internal-format
msgid "unknown machine mode %qE"
msgstr ""
-#: c-family/c-common.c:7495
+#: c-family/c-common.c:7497
#, gcc-internal-format
msgid "specifying vector types with __attribute__ ((mode)) is deprecated"
msgstr ""
-#: c-family/c-common.c:7498
+#: c-family/c-common.c:7500
#, gcc-internal-format
msgid "use __attribute__ ((vector_size)) instead"
msgstr ""
-#: c-family/c-common.c:7507
+#: c-family/c-common.c:7509
#, gcc-internal-format
msgid "unable to emulate %qs"
msgstr ""
-#: c-family/c-common.c:7518
+#: c-family/c-common.c:7520
#, gcc-internal-format
msgid "invalid pointer mode %qs"
msgstr ""
-#: c-family/c-common.c:7535
+#: c-family/c-common.c:7537
#, gcc-internal-format
msgid "signedness of type and machine mode %qs don%'t match"
msgstr ""
-#: c-family/c-common.c:7546
+#: c-family/c-common.c:7548
#, gcc-internal-format
msgid "no data type for mode %qs"
msgstr ""
-#: c-family/c-common.c:7556
+#: c-family/c-common.c:7558
#, gcc-internal-format
msgid "cannot use mode %qs for enumeral types"
msgstr ""
-#: c-family/c-common.c:7583
+#: c-family/c-common.c:7585
#, gcc-internal-format
msgid "mode %qs applied to inappropriate type"
msgstr ""
-#: c-family/c-common.c:7605
+#: c-family/c-common.c:7607
#, gcc-internal-format
msgid "section attributes are not supported for this target"
msgstr ""
-#: c-family/c-common.c:7613
+#: c-family/c-common.c:7615
#, gcc-internal-format
msgid "section attribute not allowed for %q+D"
msgstr ""
-#: c-family/c-common.c:7619
+#: c-family/c-common.c:7621
#, gcc-internal-format
msgid "section attribute argument not a string constant"
msgstr ""
-#: c-family/c-common.c:7628
+#: c-family/c-common.c:7630
#, gcc-internal-format
msgid "section attribute cannot be specified for local variables"
msgstr ""
-#: c-family/c-common.c:7638 config/bfin/bfin.c:4773 config/bfin/bfin.c:4824
+#: c-family/c-common.c:7640 config/bfin/bfin.c:4773 config/bfin/bfin.c:4824
#: config/bfin/bfin.c:4850 config/bfin/bfin.c:4863
#, gcc-internal-format
msgid "section of %q+D conflicts with previous declaration"
msgstr ""
-#: c-family/c-common.c:7646
+#: c-family/c-common.c:7648
#, gcc-internal-format
msgid "section of %q+D cannot be overridden"
msgstr ""
-#: c-family/c-common.c:7672
+#: c-family/c-common.c:7674
#, gcc-internal-format
msgid "requested alignment is not an integer constant"
msgstr ""
-#: c-family/c-common.c:7680
+#: c-family/c-common.c:7682
#, gcc-internal-format
msgid "requested alignment is not a positive power of 2"
msgstr ""
-#: c-family/c-common.c:7685
+#: c-family/c-common.c:7687
#, gcc-internal-format
msgid "requested alignment is too large"
msgstr ""
-#: c-family/c-common.c:7768
+#: c-family/c-common.c:7770
#, gcc-internal-format, gfc-internal-format
msgid "requested alignment %d is larger than %d"
msgstr ""
-#: c-family/c-common.c:7834
+#: c-family/c-common.c:7836
#, gcc-internal-format
msgid "alignment may not be specified for %q+D"
msgstr ""
-#: c-family/c-common.c:7852
+#: c-family/c-common.c:7854
#, gcc-internal-format
msgid ""
"alignment for %q+D was previously specified as %d and may not be decreased"
msgstr ""
-#: c-family/c-common.c:7856
+#: c-family/c-common.c:7858
#, gcc-internal-format
msgid "alignment for %q+D must be at least %d"
msgstr ""
-#: c-family/c-common.c:7881
+#: c-family/c-common.c:7883
#, gcc-internal-format
msgid "inline function %q+D declared weak"
msgstr ""
-#: c-family/c-common.c:7886
+#: c-family/c-common.c:7888
#, gcc-internal-format
msgid "indirect function %q+D cannot be declared weak"
msgstr ""
-#: c-family/c-common.c:7910
+#: c-family/c-common.c:7912
#, gcc-internal-format
msgid "%qE attribute is only applicable on functions"
msgstr ""
-#: c-family/c-common.c:7941
+#: c-family/c-common.c:7943
#, gcc-internal-format
msgid "%q+D defined both normally and as %qE attribute"
msgstr ""
-#: c-family/c-common.c:7949
+#: c-family/c-common.c:7951
#, gcc-internal-format
msgid "weak %q+D cannot be defined %qE"
msgstr ""
-#: c-family/c-common.c:7966 c-family/c-common.c:8510
+#: c-family/c-common.c:7968 c-family/c-common.c:8512
#, gcc-internal-format
msgid "attribute %qE argument not a string"
msgstr ""
-#: c-family/c-common.c:7996
+#: c-family/c-common.c:7998
#, gcc-internal-format
msgid "%+D declared alias after being used"
msgstr ""
-#: c-family/c-common.c:7998
+#: c-family/c-common.c:8000
#, gcc-internal-format
msgid "%+D declared ifunc after being used"
msgstr ""
-#: c-family/c-common.c:8049
+#: c-family/c-common.c:8051
#, gcc-internal-format
msgid "indirect function %q+D cannot be declared weakref"
msgstr ""
-#: c-family/c-common.c:8071
+#: c-family/c-common.c:8073
#, gcc-internal-format
msgid "weakref attribute must appear before alias attribute"
msgstr ""
-#: c-family/c-common.c:8083
+#: c-family/c-common.c:8085
#, gcc-internal-format
msgid "%+D declared weakref after being used"
msgstr ""
-#: c-family/c-common.c:8107
+#: c-family/c-common.c:8109
#, gcc-internal-format
msgid "%qE attribute ignored on non-class types"
msgstr ""
-#: c-family/c-common.c:8113
+#: c-family/c-common.c:8115
#, gcc-internal-format
msgid "%qE attribute ignored because %qT is already defined"
msgstr ""
-#: c-family/c-common.c:8126
+#: c-family/c-common.c:8128
#, gcc-internal-format
msgid "visibility argument not a string"
msgstr ""
-#: c-family/c-common.c:8138
+#: c-family/c-common.c:8140
#, gcc-internal-format
msgid "%qE attribute ignored on types"
msgstr ""
-#: c-family/c-common.c:8154
+#: c-family/c-common.c:8156
#, gcc-internal-format
msgid ""
"visibility argument must be one of \"default\", \"hidden\", \"protected\" or "
"\"internal\""
msgstr ""
-#: c-family/c-common.c:8165
+#: c-family/c-common.c:8167
#, gcc-internal-format
msgid "%qD redeclared with different visibility"
msgstr ""
-#: c-family/c-common.c:8168 c-family/c-common.c:8172
+#: c-family/c-common.c:8170 c-family/c-common.c:8174
#, gcc-internal-format
msgid "%qD was declared %qs which implies default visibility"
msgstr ""
-#: c-family/c-common.c:8255
+#: c-family/c-common.c:8257
#, gcc-internal-format
msgid "tls_model argument not a string"
msgstr ""
-#: c-family/c-common.c:8268
+#: c-family/c-common.c:8270
#, gcc-internal-format
msgid ""
"tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-"
"dynamic\" or \"global-dynamic\""
msgstr ""
-#: c-family/c-common.c:8288 c-family/c-common.c:8587 c-family/c-common.c:9634
+#: c-family/c-common.c:8290 c-family/c-common.c:8589 c-family/c-common.c:9636
#: config/m32c/m32c.c:2932
#, gcc-internal-format
msgid "%qE attribute applies only to functions"
msgstr ""
-#: c-family/c-common.c:8336
+#: c-family/c-common.c:8338
#, gcc-internal-format
msgid "alloc_size parameter outside range"
msgstr ""
-#: c-family/c-common.c:8361
+#: c-family/c-common.c:8363
#, gcc-internal-format
msgid "alloc_align parameter outside range"
msgstr ""
-#: c-family/c-common.c:8385
+#: c-family/c-common.c:8387
#, gcc-internal-format
msgid "assume_aligned parameter not integer constant"
msgstr ""
-#: c-family/c-common.c:8496 c/c-parser.c:16374
+#: c-family/c-common.c:8498 c/c-parser.c:16396
#, gcc-internal-format
msgid ""
"%<__simd__%> attribute cannot be used in the same function marked as a Cilk "
"Plus SIMD-enabled function"
msgstr ""
-#: c-family/c-common.c:8524
+#: c-family/c-common.c:8526
#, gcc-internal-format
msgid ""
"only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> "
"attribute"
msgstr ""
-#: c-family/c-common.c:8593 c-family/c-common.c:9640
+#: c-family/c-common.c:8595 c-family/c-common.c:9642
#, gcc-internal-format
msgid "can%'t set %qE attribute after definition"
msgstr ""
-#: c-family/c-common.c:8651
+#: c-family/c-common.c:8653
#, gcc-internal-format
msgid "%qE attribute duplicated"
msgstr ""
-#: c-family/c-common.c:8653
+#: c-family/c-common.c:8655
#, gcc-internal-format
msgid "%qE attribute follows %qE"
msgstr ""
-#: c-family/c-common.c:8752
+#: c-family/c-common.c:8754
#, gcc-internal-format
msgid "type was previously declared %qE"
msgstr ""
-#: c-family/c-common.c:8765 cp/class.c:4575
+#: c-family/c-common.c:8767 cp/class.c:4621
#, gcc-internal-format
msgid ""
"%<transaction_safe_dynamic%> may only be specified for a virtual function"
msgstr ""
-#: c-family/c-common.c:8823
+#: c-family/c-common.c:8825
#, gcc-internal-format
msgid "%qE argument not an identifier"
msgstr ""
-#: c-family/c-common.c:8834
+#: c-family/c-common.c:8836
#, gcc-internal-format
msgid "%qD is not compatible with %qD"
msgstr ""
-#: c-family/c-common.c:8837
+#: c-family/c-common.c:8839
#, gcc-internal-format
msgid "%qE argument is not a function"
msgstr ""
-#: c-family/c-common.c:8885
+#: c-family/c-common.c:8887
#, gcc-internal-format
msgid "deprecated message is not a string"
msgstr ""
-#: c-family/c-common.c:8926
+#: c-family/c-common.c:8928
#, gcc-internal-format
msgid "%qE attribute ignored for %qE"
msgstr ""
-#: c-family/c-common.c:8989
+#: c-family/c-common.c:8991
#, gcc-internal-format
msgid "invalid vector type for attribute %qE"
msgstr ""
-#: c-family/c-common.c:8995 ada/gcc-interface/utils.c:3745
+#: c-family/c-common.c:8997 ada/gcc-interface/utils.c:3766
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:9001 ada/gcc-interface/utils.c:3752
+#: c-family/c-common.c:9003 ada/gcc-interface/utils.c:3773
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:9009
+#: c-family/c-common.c:9011
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-family/c-common.c:9037 ada/gcc-interface/utils.c:5825
+#: c-family/c-common.c:9039 ada/gcc-interface/utils.c:5846
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-family/c-common.c:9056 ada/gcc-interface/utils.c:5839
+#: c-family/c-common.c:9058 ada/gcc-interface/utils.c:5860
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr ""
-#: c-family/c-common.c:9078 ada/gcc-interface/utils.c:5861
+#: c-family/c-common.c:9080 ada/gcc-interface/utils.c:5882
#, gcc-internal-format, gfc-internal-format
msgid ""
"nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr ""
-#: c-family/c-common.c:9086 ada/gcc-interface/utils.c:5870
+#: c-family/c-common.c:9088 ada/gcc-interface/utils.c:5891
#, gcc-internal-format, gfc-internal-format
msgid ""
"nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr ""
-#: c-family/c-common.c:9180
+#: c-family/c-common.c:9182
#, gcc-internal-format
msgid "not enough variable arguments to fit a sentinel"
msgstr ""
-#: c-family/c-common.c:9194
+#: c-family/c-common.c:9196
#, gcc-internal-format
msgid "missing sentinel in function call"
msgstr ""
-#: c-family/c-common.c:9236
+#: c-family/c-common.c:9238
#, gcc-internal-format, gfc-internal-format
msgid "null argument where non-null required (argument %lu)"
msgstr ""
-#: c-family/c-common.c:9302
+#: c-family/c-common.c:9304
#, gcc-internal-format
msgid "cleanup argument not an identifier"
msgstr ""
-#: c-family/c-common.c:9309
+#: c-family/c-common.c:9311
#, gcc-internal-format
msgid "cleanup argument not a function"
msgstr ""
-#: c-family/c-common.c:9346
+#: c-family/c-common.c:9348
#, gcc-internal-format
msgid "%qE attribute requires prototypes with named arguments"
msgstr ""
-#: c-family/c-common.c:9354
+#: c-family/c-common.c:9356
#, gcc-internal-format
msgid "%qE attribute only applies to variadic functions"
msgstr ""
-#: c-family/c-common.c:9370 ada/gcc-interface/utils.c:5912
+#: c-family/c-common.c:9372 ada/gcc-interface/utils.c:5933
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr ""
-#: c-family/c-common.c:9378 ada/gcc-interface/utils.c:5919
+#: c-family/c-common.c:9380 ada/gcc-interface/utils.c:5940
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
-#: c-family/c-common.c:9534
+#: c-family/c-common.c:9536
#, gcc-internal-format, gfc-internal-format
msgid "bad option %s to optimize attribute"
msgstr ""
-#: c-family/c-common.c:9537
+#: c-family/c-common.c:9539
#, gcc-internal-format, gfc-internal-format
msgid "bad option %s to pragma attribute"
msgstr ""
-#: c-family/c-common.c:9657
+#: c-family/c-common.c:9659
#, gcc-internal-format
msgid "returns_nonnull attribute on a function not returning a pointer"
msgstr ""
-#: c-family/c-common.c:9672
+#: c-family/c-common.c:9674
#, gcc-internal-format
msgid "%qE attribute is only valid on %<struct%> type"
msgstr ""
-#: c-family/c-common.c:9797
+#: c-family/c-common.c:9799
#, gcc-internal-format
msgid "not enough arguments to function %qE"
msgstr ""
-#: c-family/c-common.c:9803 c-family/c-common.c:10777 c/c-typeck.c:3201
+#: c-family/c-common.c:9805 c-family/c-common.c:10806 c/c-typeck.c:3213
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr ""
-#: c-family/c-common.c:9834 c-family/c-common.c:9880
+#: c-family/c-common.c:9842
+#, gcc-internal-format
+msgid ""
+"second argument to function %qE must be a constant integer power of 2 "
+"between %qi and %qu bits"
+msgstr ""
+
+#: c-family/c-common.c:9863 c-family/c-common.c:9909
#, gcc-internal-format
msgid "non-floating-point argument in call to function %qE"
msgstr ""
-#: c-family/c-common.c:9857
+#: c-family/c-common.c:9886
#, gcc-internal-format
msgid "non-floating-point arguments in call to function %qE"
msgstr ""
-#: c-family/c-common.c:9873
+#: c-family/c-common.c:9902
#, gcc-internal-format
msgid "non-const integer argument %u in call to function %qE"
msgstr ""
-#: c-family/c-common.c:9893
+#: c-family/c-common.c:9922
#, gcc-internal-format
msgid "non-integer argument 3 in call to function %qE"
msgstr ""
-#: c-family/c-common.c:9909
+#: c-family/c-common.c:9938
#, gcc-internal-format
msgid "argument %u in call to function %qE does not have integral type"
msgstr ""
-#: c-family/c-common.c:9916
+#: c-family/c-common.c:9945
#, gcc-internal-format
msgid ""
"argument 3 in call to function %qE does not have pointer to integer type"
msgstr ""
-#: c-family/c-common.c:10229
+#: c-family/c-common.c:10258
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to static data member %qD"
msgstr ""
-#: c-family/c-common.c:10234
+#: c-family/c-common.c:10263
#, gcc-internal-format
msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
msgstr ""
-#: c-family/c-common.c:10241
+#: c-family/c-common.c:10270
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:10254 cp/typeck.c:5749
+#: c-family/c-common.c:10283 cp/typeck.c:5733
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr ""
-#: c-family/c-common.c:10306
+#: c-family/c-common.c:10335
#, gcc-internal-format
msgid "index %E denotes an offset greater than size of %qT"
msgstr ""
-#: c-family/c-common.c:10346
+#: c-family/c-common.c:10375
#, gcc-internal-format
msgid ""
"the omitted middle operand in ?: will always be %<true%>, suggest explicit "
"middle operand"
msgstr ""
-#: c-family/c-common.c:10367
+#: c-family/c-common.c:10396
#, gcc-internal-format
msgid "assignment of member %qD in read-only object"
msgstr ""
-#: c-family/c-common.c:10369
+#: c-family/c-common.c:10398
#, gcc-internal-format
msgid "increment of member %qD in read-only object"
msgstr ""
-#: c-family/c-common.c:10371
+#: c-family/c-common.c:10400
#, gcc-internal-format
msgid "decrement of member %qD in read-only object"
msgstr ""
-#: c-family/c-common.c:10373
+#: c-family/c-common.c:10402
#, gcc-internal-format
msgid "member %qD in read-only object used as %<asm%> output"
msgstr ""
-#: c-family/c-common.c:10377
+#: c-family/c-common.c:10406
#, gcc-internal-format
msgid "assignment of read-only member %qD"
msgstr ""
-#: c-family/c-common.c:10378
+#: c-family/c-common.c:10407
#, gcc-internal-format
msgid "increment of read-only member %qD"
msgstr ""
-#: c-family/c-common.c:10379
+#: c-family/c-common.c:10408
#, gcc-internal-format
msgid "decrement of read-only member %qD"
msgstr ""
-#: c-family/c-common.c:10380
+#: c-family/c-common.c:10409
#, gcc-internal-format
msgid "read-only member %qD used as %<asm%> output"
msgstr ""
-#: c-family/c-common.c:10384
+#: c-family/c-common.c:10413
#, gcc-internal-format
msgid "assignment of read-only variable %qD"
msgstr ""
-#: c-family/c-common.c:10385
+#: c-family/c-common.c:10414
#, gcc-internal-format
msgid "increment of read-only variable %qD"
msgstr ""
-#: c-family/c-common.c:10386
+#: c-family/c-common.c:10415
#, gcc-internal-format
msgid "decrement of read-only variable %qD"
msgstr ""
-#: c-family/c-common.c:10387
+#: c-family/c-common.c:10416
#, gcc-internal-format
msgid "read-only variable %qD used as %<asm%> output"
msgstr ""
-#: c-family/c-common.c:10390
+#: c-family/c-common.c:10419
#, gcc-internal-format
msgid "assignment of read-only parameter %qD"
msgstr ""
-#: c-family/c-common.c:10391
+#: c-family/c-common.c:10420
#, gcc-internal-format
msgid "increment of read-only parameter %qD"
msgstr ""
-#: c-family/c-common.c:10392
+#: c-family/c-common.c:10421
#, gcc-internal-format
msgid "decrement of read-only parameter %qD"
msgstr ""
-#: c-family/c-common.c:10393
+#: c-family/c-common.c:10422
#, gcc-internal-format
msgid "read-only parameter %qD use as %<asm%> output"
msgstr ""
-#: c-family/c-common.c:10398
+#: c-family/c-common.c:10427
#, gcc-internal-format
msgid "assignment of read-only named return value %qD"
msgstr ""
-#: c-family/c-common.c:10400
+#: c-family/c-common.c:10429
#, gcc-internal-format
msgid "increment of read-only named return value %qD"
msgstr ""
-#: c-family/c-common.c:10402
+#: c-family/c-common.c:10431
#, gcc-internal-format
msgid "decrement of read-only named return value %qD"
msgstr ""
-#: c-family/c-common.c:10404
+#: c-family/c-common.c:10433
#, gcc-internal-format
msgid "read-only named return value %qD used as %<asm%>output"
msgstr ""
-#: c-family/c-common.c:10409
+#: c-family/c-common.c:10438
#, gcc-internal-format
msgid "assignment of function %qD"
msgstr ""
-#: c-family/c-common.c:10410
+#: c-family/c-common.c:10439
#, gcc-internal-format
msgid "increment of function %qD"
msgstr ""
-#: c-family/c-common.c:10411
+#: c-family/c-common.c:10440
#, gcc-internal-format
msgid "decrement of function %qD"
msgstr ""
-#: c-family/c-common.c:10412
+#: c-family/c-common.c:10441
#, gcc-internal-format
msgid "function %qD used as %<asm%> output"
msgstr ""
-#: c-family/c-common.c:10415 c/c-typeck.c:4551
+#: c-family/c-common.c:10444 c/c-typeck.c:4565
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr ""
-#: c-family/c-common.c:10416 c/c-typeck.c:4554
+#: c-family/c-common.c:10445 c/c-typeck.c:4568
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr ""
-#: c-family/c-common.c:10417 c/c-typeck.c:4557
+#: c-family/c-common.c:10446 c/c-typeck.c:4571
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr ""
-#: c-family/c-common.c:10418
+#: c-family/c-common.c:10447
#, gcc-internal-format
msgid "read-only location %qE used as %<asm%> output"
msgstr ""
-#: c-family/c-common.c:10432
+#: c-family/c-common.c:10461
#, gcc-internal-format
msgid "lvalue required as left operand of assignment"
msgstr ""
-#: c-family/c-common.c:10435
+#: c-family/c-common.c:10464
#, gcc-internal-format
msgid "lvalue required as increment operand"
msgstr ""
-#: c-family/c-common.c:10438
+#: c-family/c-common.c:10467
#, gcc-internal-format
msgid "lvalue required as decrement operand"
msgstr ""
-#: c-family/c-common.c:10441
+#: c-family/c-common.c:10470
#, gcc-internal-format
msgid "lvalue required as unary %<&%> operand"
msgstr ""
-#: c-family/c-common.c:10444
+#: c-family/c-common.c:10473
#, gcc-internal-format
msgid "lvalue required in asm statement"
msgstr ""
-#: c-family/c-common.c:10461
+#: c-family/c-common.c:10490
#, gcc-internal-format
msgid "invalid type argument (have %qT)"
msgstr ""
-#: c-family/c-common.c:10465
+#: c-family/c-common.c:10494
#, gcc-internal-format
msgid "invalid type argument of array indexing (have %qT)"
msgstr ""
-#: c-family/c-common.c:10470
+#: c-family/c-common.c:10499
#, gcc-internal-format
msgid "invalid type argument of unary %<*%> (have %qT)"
msgstr ""
-#: c-family/c-common.c:10475
+#: c-family/c-common.c:10504
#, gcc-internal-format
msgid "invalid type argument of %<->%> (have %qT)"
msgstr ""
-#: c-family/c-common.c:10480
+#: c-family/c-common.c:10509
#, gcc-internal-format
msgid "invalid type argument of %<->*%> (have %qT)"
msgstr ""
-#: c-family/c-common.c:10485
+#: c-family/c-common.c:10514
#, gcc-internal-format
msgid "invalid type argument of implicit conversion (have %qT)"
msgstr ""
-#: c-family/c-common.c:10627 cp/init.c:2721 cp/init.c:2740
+#: c-family/c-common.c:10656 cp/init.c:2782 cp/init.c:2801
#, gcc-internal-format
msgid "size of array is too large"
msgstr ""
-#: c-family/c-common.c:10680 c-family/c-common.c:10751 c/c-typeck.c:3447
+#: c-family/c-common.c:10709 c-family/c-common.c:10780 c/c-typeck.c:3459
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr ""
-#: c-family/c-common.c:10710
+#: c-family/c-common.c:10739
#, gcc-internal-format
msgid "operand type %qT is incompatible with argument %d of %qE"
msgstr ""
-#: c-family/c-common.c:10844
+#: c-family/c-common.c:10873
#, gcc-internal-format
msgid "incorrect number of arguments to function %qE"
msgstr ""
-#: c-family/c-common.c:10859
+#: c-family/c-common.c:10888
#, gcc-internal-format
msgid "argument 1 of %qE must be a non-void pointer type"
msgstr ""
-#: c-family/c-common.c:10868
+#: c-family/c-common.c:10897
#, gcc-internal-format
msgid "argument 1 of %qE must be a pointer to a constant size type"
msgstr ""
-#: c-family/c-common.c:10879
+#: c-family/c-common.c:10908
#, gcc-internal-format
msgid "argument 1 of %qE must be a pointer to a nonzero size object"
msgstr ""
-#: c-family/c-common.c:10894
+#: c-family/c-common.c:10923
#, gcc-internal-format
msgid "argument %d of %qE must be a pointer type"
msgstr ""
-#: c-family/c-common.c:10902
+#: c-family/c-common.c:10931
#, gcc-internal-format
msgid "size mismatch in argument %d of %qE"
msgstr ""
-#: c-family/c-common.c:10918
+#: c-family/c-common.c:10947
#, gcc-internal-format
msgid "invalid memory model argument %d of %qE"
msgstr ""
-#: c-family/c-common.c:10925
+#: c-family/c-common.c:10954
#, gcc-internal-format
msgid "non-integer memory model argument %d of %qE"
msgstr ""
-#: c-family/c-common.c:11519
+#: c-family/c-common.c:11552
#, gcc-internal-format
msgid "array subscript has type %<char%>"
msgstr ""
-#: c-family/c-common.c:11554 c-family/c-common.c:11557
+#: c-family/c-common.c:11587 c-family/c-common.c:11590
#, gcc-internal-format
msgid "suggest parentheses around %<+%> inside %<<<%>"
msgstr ""
-#: c-family/c-common.c:11560 c-family/c-common.c:11563
+#: c-family/c-common.c:11593 c-family/c-common.c:11596
#, gcc-internal-format
msgid "suggest parentheses around %<-%> inside %<<<%>"
msgstr ""
-#: c-family/c-common.c:11569 c-family/c-common.c:11572
+#: c-family/c-common.c:11602 c-family/c-common.c:11605
#, gcc-internal-format
msgid "suggest parentheses around %<+%> inside %<>>%>"
msgstr ""
-#: c-family/c-common.c:11575 c-family/c-common.c:11578
+#: c-family/c-common.c:11608 c-family/c-common.c:11611
#, gcc-internal-format
msgid "suggest parentheses around %<-%> inside %<>>%>"
msgstr ""
-#: c-family/c-common.c:11584 c-family/c-common.c:11587
+#: c-family/c-common.c:11617 c-family/c-common.c:11620
#, gcc-internal-format
msgid "suggest parentheses around %<&&%> within %<||%>"
msgstr ""
-#: c-family/c-common.c:11594 c-family/c-common.c:11598
+#: c-family/c-common.c:11627 c-family/c-common.c:11631
#, gcc-internal-format
msgid "suggest parentheses around arithmetic in operand of %<|%>"
msgstr ""
-#: c-family/c-common.c:11602 c-family/c-common.c:11605
+#: c-family/c-common.c:11635 c-family/c-common.c:11638
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<|%>"
msgstr ""
-#: c-family/c-common.c:11610
+#: c-family/c-common.c:11643
#, gcc-internal-format
msgid ""
"suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!"
"%> to %<~%>"
msgstr ""
-#: c-family/c-common.c:11618 c-family/c-common.c:11622
+#: c-family/c-common.c:11651 c-family/c-common.c:11655
#, gcc-internal-format
msgid "suggest parentheses around arithmetic in operand of %<^%>"
msgstr ""
-#: c-family/c-common.c:11626 c-family/c-common.c:11629
+#: c-family/c-common.c:11659 c-family/c-common.c:11662
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<^%>"
msgstr ""
-#: c-family/c-common.c:11635 c-family/c-common.c:11638
+#: c-family/c-common.c:11668 c-family/c-common.c:11671
#, gcc-internal-format
msgid "suggest parentheses around %<+%> in operand of %<&%>"
msgstr ""
-#: c-family/c-common.c:11641 c-family/c-common.c:11644
+#: c-family/c-common.c:11674 c-family/c-common.c:11677
#, gcc-internal-format
msgid "suggest parentheses around %<-%> in operand of %<&%>"
msgstr ""
-#: c-family/c-common.c:11648 c-family/c-common.c:11651
+#: c-family/c-common.c:11681 c-family/c-common.c:11684
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<&%>"
msgstr ""
-#: c-family/c-common.c:11656
+#: c-family/c-common.c:11689
#, gcc-internal-format
msgid ""
"suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!"
"%> to %<~%>"
msgstr ""
-#: c-family/c-common.c:11663 c-family/c-common.c:11666
+#: c-family/c-common.c:11696 c-family/c-common.c:11699
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<==%>"
msgstr ""
-#: c-family/c-common.c:11671 c-family/c-common.c:11674
+#: c-family/c-common.c:11704 c-family/c-common.c:11707
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<!=%>"
msgstr ""
-#: c-family/c-common.c:11684 c-family/c-common.c:11690
+#: c-family/c-common.c:11717 c-family/c-common.c:11723
#, gcc-internal-format
msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning"
msgstr ""
-#: c-family/c-common.c:11706
+#: c-family/c-common.c:11739
#, gcc-internal-format
msgid "label %q+D defined but not used"
msgstr ""
-#: c-family/c-common.c:11708
+#: c-family/c-common.c:11741
#, gcc-internal-format
msgid "label %q+D declared but not defined"
msgstr ""
-#: c-family/c-common.c:11724
+#: c-family/c-common.c:11757
#, gcc-internal-format
msgid "division by zero"
msgstr ""
-#: c-family/c-common.c:11756 c/c-typeck.c:11061 c/c-typeck.c:11228
-#: cp/typeck.c:4836
+#: c-family/c-common.c:11789 c/c-typeck.c:11074 c/c-typeck.c:11231
+#: cp/typeck.c:4820
#, gcc-internal-format
msgid "comparison between types %qT and %qT"
msgstr ""
-#: c-family/c-common.c:11807
+#: c-family/c-common.c:11840
#, gcc-internal-format
msgid "comparison between signed and unsigned integer expressions"
msgstr ""
-#: c-family/c-common.c:11858
+#: c-family/c-common.c:11891
#, gcc-internal-format
msgid "promoted ~unsigned is always non-zero"
msgstr ""
-#: c-family/c-common.c:11861
+#: c-family/c-common.c:11894
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with constant"
msgstr ""
-#: c-family/c-common.c:11871
+#: c-family/c-common.c:11904
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with unsigned"
msgstr ""
-#: c-family/c-common.c:11922
+#: c-family/c-common.c:11955
#, gcc-internal-format
msgid "unused parameter %qD"
msgstr ""
-#: c-family/c-common.c:12066
+#: c-family/c-common.c:12099
#, gcc-internal-format
msgid "typedef %qD locally defined but not used"
msgstr ""
-#: c-family/c-common.c:12103 c-family/c-common.c:12129
+#: c-family/c-common.c:12136 c-family/c-common.c:12162
#, gcc-internal-format
msgid "comparison of constant %qE with boolean expression is always false"
msgstr ""
-#: c-family/c-common.c:12106 c-family/c-common.c:12126
+#: c-family/c-common.c:12139 c-family/c-common.c:12159
#, gcc-internal-format
msgid "comparison of constant %qE with boolean expression is always true"
msgstr ""
-#: c-family/c-common.c:12175
+#: c-family/c-common.c:12208
#, gcc-internal-format
msgid "result of %qE requires %u bits to represent, but %qT only has %u bits"
msgstr ""
-#: c-family/c-common.c:12424
+#: c-family/c-common.c:12457
#, gcc-internal-format
msgid "index value is out of bound"
msgstr ""
-#: c-family/c-common.c:12496 c-family/c-common.c:12544
-#: c-family/c-common.c:12559 cp/call.c:4689 cp/call.c:4696
+#: c-family/c-common.c:12529 c-family/c-common.c:12577
+#: c-family/c-common.c:12592 cp/call.c:4692 cp/call.c:4699
#, gcc-internal-format
msgid "conversion of scalar %qT to vector %qT involves truncation"
msgstr ""
#. Reject arguments that are built-in functions with
#. no library fallback.
-#: c-family/c-common.c:12630
+#: c-family/c-common.c:12663
#, gcc-internal-format
msgid "built-in function %qE must be directly called"
msgstr ""
-#: c-family/c-common.c:12666
+#: c-family/c-common.c:12699
#, gcc-internal-format
msgid "duplicated %<if%> condition"
msgstr ""
-#: c-family/c-common.c:12693 c/c-decl.c:5884
+#: c-family/c-common.c:12726 c/c-decl.c:5913
#, gcc-internal-format
msgid "size of array %qE is too large"
msgstr ""
-#: c-family/c-common.c:12695 c/c-decl.c:5887
+#: c-family/c-common.c:12728 c/c-decl.c:5916
#, gcc-internal-format
msgid "size of unnamed array is too large"
msgstr ""
@@ -24571,21 +24656,16 @@ msgstr ""
msgid "strftime formats cannot format arguments"
msgstr ""
-#: c-family/c-indentation.c:56
+#: c-family/c-indentation.c:66
#, gcc-internal-format
msgid ""
"-Wmisleading-indentation is disabled from this point onwards, since column-"
"tracking was disabled due to the size of the code/headers"
msgstr ""
-#: c-family/c-indentation.c:583
-#, gcc-internal-format
-msgid "statement is indented as if it were guarded by..."
-msgstr ""
-
-#: c-family/c-indentation.c:585
+#: c-family/c-indentation.c:606
#, gcc-internal-format
-msgid "...this %qs clause, but it is not"
+msgid "this %qs clause does not guard..."
msgstr ""
#: c-family/c-lex.c:222
@@ -24669,7 +24749,7 @@ msgstr ""
msgid "repeated %<@%> before Objective-C string"
msgstr ""
-#: c-family/c-lex.c:1138 cp/parser.c:3932
+#: c-family/c-lex.c:1138 cp/parser.c:3934
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
@@ -24694,7 +24774,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:480 cp/semantics.c:8014
+#: c-family/c-omp.c:480 cp/semantics.c:8071
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr ""
@@ -24704,22 +24784,22 @@ msgstr ""
msgid "%qE is not initialized"
msgstr ""
-#: c-family/c-omp.c:514 cp/semantics.c:7902
+#: c-family/c-omp.c:514 cp/semantics.c:7959
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-family/c-omp.c:599 cp/semantics.c:7566
+#: c-family/c-omp.c:599 cp/semantics.c:7623
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr ""
-#: c-family/c-omp.c:606 cp/semantics.c:7908
+#: c-family/c-omp.c:606 cp/semantics.c:7965
#, gcc-internal-format
msgid "missing increment expression"
msgstr ""
-#: c-family/c-omp.c:670 cp/semantics.c:7681
+#: c-family/c-omp.c:670 cp/semantics.c:7738
#, gcc-internal-format
msgid "invalid increment expression"
msgstr ""
@@ -24749,32 +24829,32 @@ msgstr ""
msgid "%qD is not an function argument"
msgstr ""
-#: c-family/c-opts.c:316
+#: c-family/c-opts.c:320
#, gcc-internal-format
msgid "-I- specified twice"
msgstr ""
-#: c-family/c-opts.c:319
+#: c-family/c-opts.c:323
#, gcc-internal-format
msgid "obsolete option -I- used, please use -iquote instead"
msgstr ""
-#: c-family/c-opts.c:397
+#: c-family/c-opts.c:401
#, gcc-internal-format
msgid "%<-Wabi=1%> is not supported, using =2"
msgstr ""
-#: c-family/c-opts.c:589 fortran/cpp.c:350
+#: c-family/c-opts.c:593 fortran/cpp.c:350
#, gcc-internal-format
msgid "output filename specified twice"
msgstr ""
-#: c-family/c-opts.c:768
+#: c-family/c-opts.c:772
#, gcc-internal-format
msgid "-fexcess-precision=standard for C++"
msgstr ""
-#: c-family/c-opts.c:791
+#: c-family/c-opts.c:795
#, gcc-internal-format
msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode"
msgstr ""
@@ -25112,116 +25192,116 @@ msgstr ""
msgid "option %qs is valid for %s but not for %s"
msgstr ""
-#: c-family/c-pragma.c:837
+#: c-family/c-pragma.c:840
#, gcc-internal-format
msgid "#pragma GCC option is not allowed inside functions"
msgstr ""
-#: c-family/c-pragma.c:850
+#: c-family/c-pragma.c:853
#, gcc-internal-format
msgid "%<#pragma GCC option%> is not a string"
msgstr ""
-#: c-family/c-pragma.c:877
+#: c-family/c-pragma.c:880
#, gcc-internal-format
msgid ""
"%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>"
msgstr ""
-#: c-family/c-pragma.c:883
+#: c-family/c-pragma.c:886
#, gcc-internal-format
msgid "#pragma GCC target string... is badly formed"
msgstr ""
-#: c-family/c-pragma.c:906
+#: c-family/c-pragma.c:909
#, gcc-internal-format
msgid "#pragma GCC optimize is not allowed inside functions"
msgstr ""
-#: c-family/c-pragma.c:919
+#: c-family/c-pragma.c:922
#, gcc-internal-format
msgid "%<#pragma GCC optimize%> is not a string or number"
msgstr ""
-#: c-family/c-pragma.c:945
+#: c-family/c-pragma.c:948
#, gcc-internal-format
msgid ""
"%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>"
msgstr ""
-#: c-family/c-pragma.c:951
+#: c-family/c-pragma.c:954
#, gcc-internal-format
msgid "#pragma GCC optimize string... is badly formed"
msgstr ""
-#: c-family/c-pragma.c:992
+#: c-family/c-pragma.c:995
#, gcc-internal-format
msgid "junk at end of %<#pragma push_options%>"
msgstr ""
-#: c-family/c-pragma.c:1022
+#: c-family/c-pragma.c:1025
#, gcc-internal-format
msgid "junk at end of %<#pragma pop_options%>"
msgstr ""
-#: c-family/c-pragma.c:1029
+#: c-family/c-pragma.c:1032
#, gcc-internal-format
msgid ""
"%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC "
"push_options%>"
msgstr ""
-#: c-family/c-pragma.c:1071
+#: c-family/c-pragma.c:1074
#, gcc-internal-format
msgid "junk at end of %<#pragma reset_options%>"
msgstr ""
-#: c-family/c-pragma.c:1109 c-family/c-pragma.c:1116
+#: c-family/c-pragma.c:1112 c-family/c-pragma.c:1119
#, gcc-internal-format
msgid "expected a string after %<#pragma message%>"
msgstr ""
-#: c-family/c-pragma.c:1111
+#: c-family/c-pragma.c:1114
#, gcc-internal-format
msgid "malformed %<#pragma message%>, ignored"
msgstr ""
-#: c-family/c-pragma.c:1121
+#: c-family/c-pragma.c:1124
#, gcc-internal-format
msgid "junk at end of %<#pragma message%>"
msgstr ""
-#: c-family/c-pragma.c:1124
+#: c-family/c-pragma.c:1127
#, gcc-internal-format, gfc-internal-format
msgid "#pragma message: %s"
msgstr ""
-#: c-family/c-pragma.c:1161
+#: c-family/c-pragma.c:1164
#, gcc-internal-format
msgid "invalid location for %<pragma %s%>, ignored"
msgstr ""
-#: c-family/c-pragma.c:1168 c-family/c-pragma.c:1182
+#: c-family/c-pragma.c:1171 c-family/c-pragma.c:1185
#, gcc-internal-format
msgid "malformed %<#pragma %s%>, ignored"
msgstr ""
-#: c-family/c-pragma.c:1188
+#: c-family/c-pragma.c:1191
#, gcc-internal-format
msgid "junk at end of %<#pragma %s%>"
msgstr ""
-#: c-family/c-pragma.c:1206
+#: c-family/c-pragma.c:1209
#, gcc-internal-format
msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++"
msgstr ""
-#: c-family/c-pragma.c:1215
+#: c-family/c-pragma.c:1218
#, gcc-internal-format
msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target"
msgstr ""
-#: c-family/c-pragma.c:1221
+#: c-family/c-pragma.c:1224
#, gcc-internal-format
msgid "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>"
msgstr ""
@@ -25271,7 +25351,7 @@ msgstr ""
msgid "wrong type argument to %s"
msgstr ""
-#: c-family/cilk.c:93 cp/parser.c:6516
+#: c-family/cilk.c:93 cp/parser.c:6518
#, gcc-internal-format
msgid "%<_Cilk_spawn%> may only be used inside a function"
msgstr ""
@@ -25316,7 +25396,7 @@ msgstr ""
msgid "too many input files"
msgstr ""
-#: common/config/aarch64/aarch64-common.c:228 config/aarch64/aarch64.c:8192
+#: common/config/aarch64/aarch64-common.c:228 config/aarch64/aarch64.c:8241
#, gcc-internal-format
msgid "unknown value %qs for -mcpu"
msgstr ""
@@ -25418,7 +25498,7 @@ msgid ""
"128, 256, or 512"
msgstr ""
-#: common/config/rs6000/rs6000-common.c:172 config/sparc/sparc.c:1321
+#: common/config/rs6000/rs6000-common.c:172 config/sparc/sparc.c:1320
#, gcc-internal-format, gfc-internal-format
msgid "unknown -mdebug-%s switch"
msgstr ""
@@ -25762,172 +25842,172 @@ msgstr ""
msgid "%Ktotal size and element size must be a non-zero constant immediate"
msgstr ""
-#: config/aarch64/aarch64.c:722
+#: config/aarch64/aarch64.c:721
#, gcc-internal-format
msgid "%qs is incompatible with %s %s"
msgstr ""
-#: config/aarch64/aarch64.c:724
+#: config/aarch64/aarch64.c:723
#, gcc-internal-format
msgid "%qs feature modifier is incompatible with %s %s"
msgstr ""
-#: config/aarch64/aarch64.c:7882
+#: config/aarch64/aarch64.c:7907
#, gcc-internal-format, gfc-internal-format
msgid "unknown flag passed in -moverride=%s (%s)"
msgstr ""
-#: config/aarch64/aarch64.c:7926
+#: config/aarch64/aarch64.c:7951
#, gcc-internal-format, gfc-internal-format
msgid "%s string ill-formed\n"
msgstr ""
-#: config/aarch64/aarch64.c:7983
+#: config/aarch64/aarch64.c:8008
#, gcc-internal-format, gfc-internal-format
msgid "tuning string missing in option (%s)"
msgstr ""
-#: config/aarch64/aarch64.c:8001
+#: config/aarch64/aarch64.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "unknown tuning option (%s)"
msgstr ""
-#: config/aarch64/aarch64.c:8189
+#: config/aarch64/aarch64.c:8238
#, gcc-internal-format
msgid "missing cpu name in -mcpu=%qs"
msgstr ""
-#: config/aarch64/aarch64.c:8195
+#: config/aarch64/aarch64.c:8244
#, gcc-internal-format
msgid "invalid feature modifier in -mcpu=%qs"
msgstr ""
-#: config/aarch64/aarch64.c:8222
+#: config/aarch64/aarch64.c:8271
#, gcc-internal-format
msgid "missing arch name in -march=%qs"
msgstr ""
-#: config/aarch64/aarch64.c:8225
+#: config/aarch64/aarch64.c:8274
#, gcc-internal-format
msgid "unknown value %qs for -march"
msgstr ""
-#: config/aarch64/aarch64.c:8228
+#: config/aarch64/aarch64.c:8277
#, gcc-internal-format
msgid "invalid feature modifier in -march=%qs"
msgstr ""
-#: config/aarch64/aarch64.c:8254
+#: config/aarch64/aarch64.c:8303
#, gcc-internal-format
msgid "missing cpu name in -mtune=%qs"
msgstr ""
-#: config/aarch64/aarch64.c:8257
+#: config/aarch64/aarch64.c:8306
#, gcc-internal-format
msgid "unknown value %qs for -mtune"
msgstr ""
-#: config/aarch64/aarch64.c:8359 config/arm/arm.c:2999
+#: config/aarch64/aarch64.c:8408 config/arm/arm.c:3007
#, gcc-internal-format, gfc-internal-format
msgid "switch -mcpu=%s conflicts with -march=%s switch"
msgstr ""
-#: config/aarch64/aarch64.c:8394
+#: config/aarch64/aarch64.c:8443
#, gcc-internal-format
msgid "Assembler does not support -mabi=ilp32"
msgstr ""
-#: config/aarch64/aarch64.c:8460
+#: config/aarch64/aarch64.c:8509
#, gcc-internal-format
msgid "code model %qs with -f%s"
msgstr ""
-#: config/aarch64/aarch64.c:8641
+#: config/aarch64/aarch64.c:8674
#, gcc-internal-format, gfc-internal-format
msgid "missing architecture name in 'arch' target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8644
+#: config/aarch64/aarch64.c:8677
#, gcc-internal-format
msgid "unknown value %qs for 'arch' target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8647
+#: config/aarch64/aarch64.c:8680
#, gcc-internal-format
msgid "invalid feature modifier %qs for 'arch' target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8681
+#: config/aarch64/aarch64.c:8714
#, gcc-internal-format, gfc-internal-format
msgid "missing cpu name in 'cpu' target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8684
+#: config/aarch64/aarch64.c:8717
#, gcc-internal-format
msgid "unknown value %qs for 'cpu' target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8687
+#: config/aarch64/aarch64.c:8720
#, gcc-internal-format
msgid "invalid feature modifier %qs for 'cpu' target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8718
+#: config/aarch64/aarch64.c:8751
#, gcc-internal-format
msgid "unknown value %qs for 'tune' target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8758
+#: config/aarch64/aarch64.c:8791
#, gcc-internal-format
msgid "missing feature modifier in target %s %qs"
msgstr ""
-#: config/aarch64/aarch64.c:8763
+#: config/aarch64/aarch64.c:8796
#, gcc-internal-format
msgid "invalid feature modifier in target %s %qs"
msgstr ""
-#: config/aarch64/aarch64.c:8811
+#: config/aarch64/aarch64.c:8846
#, gcc-internal-format, gfc-internal-format
msgid "malformed target %s"
msgstr ""
-#: config/aarch64/aarch64.c:8859
+#: config/aarch64/aarch64.c:8894
#, gcc-internal-format
msgid "target %s %qs does not accept an argument"
msgstr ""
-#: config/aarch64/aarch64.c:8868
+#: config/aarch64/aarch64.c:8903
#, gcc-internal-format
msgid "target %s %qs does not allow a negated form"
msgstr ""
-#: config/aarch64/aarch64.c:8923
+#: config/aarch64/aarch64.c:8958
#, gcc-internal-format, gfc-internal-format
msgid "target %s %s=%s is not valid"
msgstr ""
-#: config/aarch64/aarch64.c:8989
+#: config/aarch64/aarch64.c:9024
#, gcc-internal-format, gfc-internal-format
msgid "malformed target %s value"
msgstr ""
-#: config/aarch64/aarch64.c:9006
+#: config/aarch64/aarch64.c:9041
#, gcc-internal-format
msgid "target %s %qs is invalid"
msgstr ""
-#: config/aarch64/aarch64.c:9015
+#: config/aarch64/aarch64.c:9050
#, gcc-internal-format
msgid "malformed target %s list %qs"
msgstr ""
-#: config/aarch64/aarch64.c:10852
+#: config/aarch64/aarch64.c:10893
#, gcc-internal-format
msgid "%Klane %wd out of range %wd - %wd"
msgstr ""
-#: config/aarch64/aarch64.c:10854
+#: config/aarch64/aarch64.c:10895
#, gcc-internal-format
msgid "lane %wd out of range %wd - %wd"
msgstr ""
@@ -25987,8 +26067,8 @@ msgstr ""
msgid "bad value %qs for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:6652 config/alpha/alpha.c:6655 config/arc/arc.c:5375
-#: config/arc/arc.c:5654 config/s390/s390.c:830 config/tilegx/tilegx.c:3540
+#: config/alpha/alpha.c:6652 config/alpha/alpha.c:6655 config/arc/arc.c:5480
+#: config/arc/arc.c:5759 config/s390/s390.c:852 config/tilegx/tilegx.c:3540
#: config/tilepro/tilepro.c:3107
#, gcc-internal-format
msgid "bad builtin fcode"
@@ -26029,151 +26109,171 @@ msgstr ""
msgid "FPX extensions not available on pre-ARC600 cores"
msgstr ""
-#: config/arc/arc.c:728
+#: config/arc/arc.c:730
+#, gcc-internal-format
+msgid "No FPX/FPU mixing allowed"
+msgstr ""
+
+#: config/arc/arc.c:735
#, gcc-internal-format
msgid "This multiplier configuration is not available for HS cores"
msgstr ""
-#: config/arc/arc.c:734
+#: config/arc/arc.c:741
#, gcc-internal-format, gfc-internal-format
msgid "PIC is not supported for %s. Generating non-PIC code only.."
msgstr ""
-#: config/arc/arc.c:740
+#: config/arc/arc.c:747
#, gcc-internal-format
msgid "-matomic is only supported for ARC700 or ARC HS cores"
msgstr ""
-#: config/arc/arc.c:744
+#: config/arc/arc.c:751
#, gcc-internal-format
msgid "-mll64 is only supported for ARC HS cores"
msgstr ""
-#: config/arc/arc.c:1218
+#: config/arc/arc.c:758
+#, gcc-internal-format
+msgid "FPU double precision options are available for ARC HS only"
+msgstr ""
+
+#: config/arc/arc.c:760
+#, gcc-internal-format
+msgid "FPU double precision assist options are not available for ARC HS"
+msgstr ""
+
+#: config/arc/arc.c:763
+#, gcc-internal-format
+msgid "FPU options are available for ARCv2 architecture only"
+msgstr ""
+
+#: config/arc/arc.c:1293
#, gcc-internal-format, gfc-internal-format
msgid "multiply option implies r%d is fixed"
msgstr ""
-#: config/arc/arc.c:1395 config/epiphany/epiphany.c:489
+#: config/arc/arc.c:1493 config/epiphany/epiphany.c:489
#: config/epiphany/epiphany.c:529
#, gcc-internal-format
msgid "argument of %qE attribute is not a string constant"
msgstr ""
-#: config/arc/arc.c:1404
+#: config/arc/arc.c:1502
#, gcc-internal-format
msgid "argument of %qE attribute is not \"ilink1\" or \"ilink2\""
msgstr ""
-#: config/arc/arc.c:1412
+#: config/arc/arc.c:1510
#, gcc-internal-format
msgid "argument of %qE attribute is not \"ilink\""
msgstr ""
-#: config/arc/arc.c:5274
+#: config/arc/arc.c:5379
#, gcc-internal-format
msgid "__builtin_arc_aligned with non-constant alignment"
msgstr ""
-#: config/arc/arc.c:5282
+#: config/arc/arc.c:5387
#, gcc-internal-format
msgid "invalid alignment value for __builtin_arc_aligned"
msgstr ""
-#: config/arc/arc.c:5409
+#: config/arc/arc.c:5514
#, gcc-internal-format
msgid "builtin operand should be an unsigned 6-bit value"
msgstr ""
-#: config/arc/arc.c:5450
+#: config/arc/arc.c:5555
#, gcc-internal-format
msgid "operand 1 should be an unsigned 3-bit immediate"
msgstr ""
-#: config/arc/arc.c:5491 config/arc/arc.c:5588
+#: config/arc/arc.c:5596 config/arc/arc.c:5693
#, gcc-internal-format
msgid "operand 2 should be an unsigned 3-bit value (I0-I7)"
msgstr ""
-#: config/arc/arc.c:5524 config/arc/arc.c:5556
+#: config/arc/arc.c:5629 config/arc/arc.c:5661
#, gcc-internal-format
msgid "operand 1 should be an unsigned 3-bit value (I0-I7)"
msgstr ""
-#: config/arc/arc.c:5528 config/arc/arc.c:5560
+#: config/arc/arc.c:5633 config/arc/arc.c:5665
#, gcc-internal-format
msgid "operand 2 should be an unsigned 8-bit value"
msgstr ""
-#: config/arc/arc.c:5592
+#: config/arc/arc.c:5697
#, gcc-internal-format
msgid "operand 3 should be an unsigned 8-bit value"
msgstr ""
-#: config/arc/arc.c:5625
+#: config/arc/arc.c:5730
#, gcc-internal-format
msgid "operand 4 should be an unsigned 8-bit value (0-255)"
msgstr ""
-#: config/arc/arc.c:5629
+#: config/arc/arc.c:5734
#, gcc-internal-format
msgid "operand 3 should be an unsigned 3-bit value (I0-I7)"
msgstr ""
-#: config/arc/arc.c:5636
+#: config/arc/arc.c:5741
#, gcc-internal-format
msgid "operand 2 should be an unsigned 3-bit value (subreg 0-7)"
msgstr ""
-#: config/arc/arc.c:5639
+#: config/arc/arc.c:5744
#, gcc-internal-format
msgid "operand 2 should be an even 3-bit value (subreg 0,2,4,6)"
msgstr ""
-#: config/arc/arc.c:5686
+#: config/arc/arc.c:5791
#, gcc-internal-format, gfc-internal-format
msgid "builtin requires an immediate for operand %d"
msgstr ""
-#: config/arc/arc.c:5691
+#: config/arc/arc.c:5796
#, gcc-internal-format, gfc-internal-format
msgid "operand %d should be a 6 bit unsigned immediate"
msgstr ""
-#: config/arc/arc.c:5695
+#: config/arc/arc.c:5800
#, gcc-internal-format, gfc-internal-format
msgid "operand %d should be a 8 bit unsigned immediate"
msgstr ""
-#: config/arc/arc.c:5699
+#: config/arc/arc.c:5804
#, gcc-internal-format, gfc-internal-format
msgid "operand %d should be a 3 bit unsigned immediate"
msgstr ""
-#: config/arc/arc.c:5702
+#: config/arc/arc.c:5807
#, gcc-internal-format, gfc-internal-format
msgid "unknown builtin immediate operand type for operand %d"
msgstr ""
-#: config/arc/arc.c:5753
+#: config/arc/arc.c:5858
#, gcc-internal-format
msgid ""
"register number must be a compile-time constant. Try giving higher "
"optimization levels"
msgstr ""
-#: config/arc/arc.c:5773
+#: config/arc/arc.c:5878
#, gcc-internal-format
msgid ""
"operand for sleep instruction must be an unsigned 6 bit compile-time constant"
msgstr ""
-#: config/arc/arc.c:6346
+#: config/arc/arc.c:6451
#, gcc-internal-format
msgid "Insn addresses not set after shorten_branches"
msgstr ""
-#: config/arc/arc.c:6550
+#: config/arc/arc.c:6660
#, gcc-internal-format
msgid "insn addresses not freed"
msgstr ""
@@ -26440,184 +26540,184 @@ msgstr ""
msgid "-mslow-flash-data only supports non-pic code on armv7-m targets"
msgstr ""
-#: config/arm/arm.c:2880
+#: config/arm/arm.c:2888
#, gcc-internal-format
msgid "target CPU does not support THUMB instructions"
msgstr ""
-#: config/arm/arm.c:2923
+#: config/arm/arm.c:2931
#, gcc-internal-format
msgid "target CPU does not support unaligned accesses"
msgstr ""
-#: config/arm/arm.c:3128
+#: config/arm/arm.c:3136
#, gcc-internal-format
msgid "target CPU does not support interworking"
msgstr ""
-#: config/arm/arm.c:3134
+#: config/arm/arm.c:3142
#, gcc-internal-format
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr ""
-#: config/arm/arm.c:3142
+#: config/arm/arm.c:3150
#, gcc-internal-format
msgid "-fpic and -mapcs-reent are incompatible"
msgstr ""
-#: config/arm/arm.c:3145
+#: config/arm/arm.c:3153
#, gcc-internal-format
msgid "APCS reentrant code not supported. Ignored"
msgstr ""
-#: config/arm/arm.c:3148
+#: config/arm/arm.c:3156
#, gcc-internal-format
msgid "passing floating point arguments in fp regs not yet supported"
msgstr ""
-#: config/arm/arm.c:3193
+#: config/arm/arm.c:3201
#, gcc-internal-format
msgid "iwmmxt requires an AAPCS compatible ABI for proper operation"
msgstr ""
-#: config/arm/arm.c:3196
+#: config/arm/arm.c:3204
#, gcc-internal-format
msgid "iwmmxt abi requires an iwmmxt capable cpu"
msgstr ""
-#: config/arm/arm.c:3225
+#: config/arm/arm.c:3233
#, gcc-internal-format
msgid "AAPCS does not support -mcaller-super-interworking"
msgstr ""
-#: config/arm/arm.c:3228
+#: config/arm/arm.c:3236
#, gcc-internal-format
msgid "AAPCS does not support -mcallee-super-interworking"
msgstr ""
-#: config/arm/arm.c:3233
+#: config/arm/arm.c:3241
#, gcc-internal-format
msgid "__fp16 and no ldrh"
msgstr ""
-#: config/arm/arm.c:3249
+#: config/arm/arm.c:3257
#, gcc-internal-format
msgid "-mfloat-abi=hard and VFP"
msgstr ""
-#: config/arm/arm.c:3285
+#: config/arm/arm.c:3293
#, gcc-internal-format
msgid "structure size boundary can only be set to 8, 32 or 64"
msgstr ""
-#: config/arm/arm.c:3287
+#: config/arm/arm.c:3295
#, gcc-internal-format
msgid "structure size boundary can only be set to 8 or 32"
msgstr ""
-#: config/arm/arm.c:3298
+#: config/arm/arm.c:3306
#, gcc-internal-format
msgid "RTP PIC is incompatible with -msingle-pic-base"
msgstr ""
-#: config/arm/arm.c:3310
+#: config/arm/arm.c:3318
#, gcc-internal-format
msgid "-mpic-register= is useless without -fpic"
msgstr ""
-#: config/arm/arm.c:3319
+#: config/arm/arm.c:3327
#, gcc-internal-format, gfc-internal-format
msgid "unable to use '%s' for PIC register"
msgstr ""
-#: config/arm/arm.c:3342
+#: config/arm/arm.c:3350
#, gcc-internal-format
msgid "-freorder-blocks-and-partition not supported on this architecture"
msgstr ""
-#: config/arm/arm.c:5489
+#: config/arm/arm.c:5498
#, gcc-internal-format
msgid "non-AAPCS derived PCS variant"
msgstr ""
-#: config/arm/arm.c:5491
+#: config/arm/arm.c:5500
#, gcc-internal-format
msgid "variadic functions must use the base AAPCS variant"
msgstr ""
-#: config/arm/arm.c:5510
+#: config/arm/arm.c:5519
#, gcc-internal-format
msgid "PCS variant"
msgstr ""
-#: config/arm/arm.c:5705
+#: config/arm/arm.c:5714
#, gcc-internal-format
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:6447 config/arm/arm.c:6465 config/avr/avr.c:8981
-#: config/avr/avr.c:8997 config/bfin/bfin.c:4672 config/bfin/bfin.c:4733
+#: config/arm/arm.c:6456 config/arm/arm.c:6474 config/avr/avr.c:8991
+#: config/avr/avr.c:9007 config/bfin/bfin.c:4672 config/bfin/bfin.c:4733
#: config/bfin/bfin.c:4762 config/epiphany/epiphany.c:472
-#: config/h8300/h8300.c:5453 config/i386/i386.c:6788 config/i386/i386.c:11968
-#: config/i386/i386.c:44374 config/i386/i386.c:44424 config/i386/i386.c:44494
+#: config/h8300/h8300.c:5453 config/i386/i386.c:6817 config/i386/i386.c:12002
+#: config/i386/i386.c:44435 config/i386/i386.c:44485 config/i386/i386.c:44555
#: config/m68k/m68k.c:748 config/mcore/mcore.c:3052 config/mep/mep.c:3884
-#: config/mep/mep.c:3898 config/mep/mep.c:3972 config/nvptx/nvptx.c:3796
-#: config/rl78/rl78.c:756 config/rs6000/rs6000.c:30942 config/rx/rx.c:2695
-#: config/rx/rx.c:2721 config/s390/s390.c:1024 config/sh/sh.c:9778
-#: config/sh/sh.c:9796 config/sh/sh.c:9825 config/sh/sh.c:9907
-#: config/sh/sh.c:9930 config/spu/spu.c:3680 config/stormy16/stormy16.c:2211
-#: config/v850/v850.c:2082 config/visium/visium.c:642
+#: config/mep/mep.c:3898 config/mep/mep.c:3972 config/nvptx/nvptx.c:3793
+#: config/rl78/rl78.c:756 config/rs6000/rs6000.c:30961 config/rx/rx.c:2695
+#: config/rx/rx.c:2721 config/s390/s390.c:1046 config/sh/sh.c:9780
+#: config/sh/sh.c:9798 config/sh/sh.c:9827 config/sh/sh.c:9909
+#: config/sh/sh.c:9932 config/spu/spu.c:3680 config/stormy16/stormy16.c:2211
+#: config/v850/v850.c:2082 config/visium/visium.c:699
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr ""
-#: config/arm/arm.c:12901
+#: config/arm/arm.c:12912
#, gcc-internal-format
msgid "%K%s %wd out of range %wd - %wd"
msgstr ""
-#: config/arm/arm.c:12904
+#: config/arm/arm.c:12915
#, gcc-internal-format
msgid "%s %wd out of range %wd - %wd"
msgstr ""
-#: config/arm/arm.c:23535
+#: config/arm/arm.c:23600
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:24153
+#: config/arm/arm.c:24211
#, gcc-internal-format
msgid "Unexpected thumb1 far jump"
msgstr ""
-#: config/arm/arm.c:24420
+#: config/arm/arm.c:24478
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:24664
+#: config/arm/arm.c:24722
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:24889
+#: config/arm/arm.c:24947
#, gcc-internal-format
msgid "-fstack-check=specific for Thumb-1"
msgstr ""
-#: config/arm/arm.c:29901 config/i386/i386.c:6012 config/s390/s390.c:14004
+#: config/arm/arm.c:30008 config/i386/i386.c:6041 config/s390/s390.c:14504
#, gcc-internal-format
msgid "attribute %<target%> argument not a string"
msgstr ""
-#: config/arm/arm.c:29924
+#: config/arm/arm.c:30031
#, gcc-internal-format, gfc-internal-format
msgid "invalid fpu for attribute(target(\"%s\"))"
msgstr ""
-#: config/arm/arm.c:29930 config/i386/i386.c:6078 config/i386/i386.c:6125
-#: config/s390/s390.c:14070 config/s390/s390.c:14120 config/s390/s390.c:14137
+#: config/arm/arm.c:30037 config/i386/i386.c:6107 config/i386/i386.c:6154
+#: config/s390/s390.c:14570 config/s390/s390.c:14620 config/s390/s390.c:14637
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
@@ -26676,199 +26776,199 @@ msgstr ""
#. happen as options are provided by device-specs. It could be a
#. typo in a device-specs or calling the compiler proper directly
#. with -mmcu=<device>.
-#: config/avr/avr.c:368
+#: config/avr/avr.c:369
#, gcc-internal-format
msgid "unknown core architecture %qs specified with %qs"
msgstr ""
-#: config/avr/avr.c:425 config/mep/mep.c:354 config/visium/visium.c:343
+#: config/avr/avr.c:435 config/mep/mep.c:354 config/visium/visium.c:383
#, gcc-internal-format
msgid "-fpic is not supported"
msgstr ""
-#: config/avr/avr.c:427 config/mep/mep.c:356 config/visium/visium.c:345
+#: config/avr/avr.c:437 config/mep/mep.c:356 config/visium/visium.c:385
#, gcc-internal-format
msgid "-fPIC is not supported"
msgstr ""
-#: config/avr/avr.c:429
+#: config/avr/avr.c:439
#, gcc-internal-format
msgid "-fpie is not supported"
msgstr ""
-#: config/avr/avr.c:431
+#: config/avr/avr.c:441
#, gcc-internal-format
msgid "-fPIE is not supported"
msgstr ""
-#: config/avr/avr.c:703
+#: config/avr/avr.c:713
#, gcc-internal-format
msgid "function attributes %qs, %qs and %qs are mutually exclusive"
msgstr ""
-#: config/avr/avr.c:710
+#: config/avr/avr.c:720
#, gcc-internal-format
msgid "function attributes %qs and %qs have no effect on %qs function"
msgstr ""
-#: config/avr/avr.c:737
+#: config/avr/avr.c:747
#, gcc-internal-format
msgid "%qs function cannot have arguments"
msgstr ""
-#: config/avr/avr.c:740
+#: config/avr/avr.c:750
#, gcc-internal-format
msgid "%qs function cannot return a value"
msgstr ""
-#: config/avr/avr.c:747
+#: config/avr/avr.c:757
#, gcc-internal-format
msgid "%qs appears to be a misspelled %s handler"
msgstr ""
-#: config/avr/avr.c:974
+#: config/avr/avr.c:984
#, gcc-internal-format
msgid "%<builtin_return_address%> contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:2198
+#: config/avr/avr.c:2208
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:2337
+#: config/avr/avr.c:2347
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:2398
+#: config/avr/avr.c:2408
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2843
+#: config/avr/avr.c:2853
#, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr ""
-#: config/avr/avr.c:3114
+#: config/avr/avr.c:3124
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr ""
-#: config/avr/avr.c:9014 config/bfin/bfin.c:4794 config/i386/winnt.c:58
+#: config/avr/avr.c:9024 config/bfin/bfin.c:4794 config/i386/winnt.c:58
#: config/mep/mep.c:3788 config/mep/mep.c:3926
#, gcc-internal-format
msgid "%qE attribute only applies to variables"
msgstr ""
-#: config/avr/avr.c:9025 config/mep/mep.c:3936
+#: config/avr/avr.c:9035 config/mep/mep.c:3936
#, gcc-internal-format
msgid "%qE attribute allows only an integer constant argument"
msgstr ""
-#: config/avr/avr.c:9035
+#: config/avr/avr.c:9045
#, gcc-internal-format
msgid "%qE attribute address out of range"
msgstr ""
-#: config/avr/avr.c:9048
+#: config/avr/avr.c:9058
#, gcc-internal-format
msgid "both %s and %qE attribute provide address"
msgstr ""
-#: config/avr/avr.c:9058
+#: config/avr/avr.c:9068
#, gcc-internal-format
msgid "%qE attribute on non-volatile variable"
msgstr ""
-#: config/avr/avr.c:9262
+#: config/avr/avr.c:9272
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %d KiB"
msgstr ""
-#: config/avr/avr.c:9265
+#: config/avr/avr.c:9275
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %d KiB"
msgstr ""
-#: config/avr/avr.c:9271
+#: config/avr/avr.c:9281
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:9274
+#: config/avr/avr.c:9284
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:9312
+#: config/avr/avr.c:9322
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %d KiB"
msgstr ""
-#: config/avr/avr.c:9317
+#: config/avr/avr.c:9327
#, gcc-internal-format
msgid ""
"variable %q+D located in address space %qs which is not supported for "
"architecture %qs"
msgstr ""
-#: config/avr/avr.c:9333
+#: config/avr/avr.c:9343
#, gcc-internal-format
msgid ""
"variable %q+D must be const in order to be put into read-only section by "
"means of %qs"
msgstr ""
-#: config/avr/avr.c:9373
+#: config/avr/avr.c:9383
#, gcc-internal-format
msgid "static IO declaration for %q+D needs an address"
msgstr ""
-#: config/avr/avr.c:9405
+#: config/avr/avr.c:9415
#, gcc-internal-format
msgid "IO definition for %q+D needs an address"
msgstr ""
-#: config/avr/avr.c:9589
+#: config/avr/avr.c:9599
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:9630
+#: config/avr/avr.c:9640
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr ""
-#: config/avr/avr.c:9740
+#: config/avr/avr.c:9750
#, gcc-internal-format
msgid "architecture %qs supported for assembler only"
msgstr ""
-#: config/avr/avr.c:12259
+#: config/avr/avr.c:12269
#, gcc-internal-format
msgid "conversion from address space %qs to address space %qs"
msgstr ""
-#: config/avr/avr.c:13315
+#: config/avr/avr.c:13325
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr ""
-#: config/avr/avr.c:13329
+#: config/avr/avr.c:13339
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr ""
-#: config/avr/avr.c:13357
+#: config/avr/avr.c:13367
#, gcc-internal-format, gfc-internal-format
msgid ""
"rounding to %d bits has no effect for fixed-point value with %d fractional "
"bits"
msgstr ""
-#: config/avr/avr.c:13366
+#: config/avr/avr.c:13376
#, gcc-internal-format
msgid "rounding result will always be 0"
msgstr ""
@@ -27271,55 +27371,55 @@ msgstr ""
msgid "can%'t set position in PCH file: %m"
msgstr ""
-#: config/i386/i386.c:4066
+#: config/i386/i386.c:4088
#, gcc-internal-format, gfc-internal-format
msgid "wrong arg %s to option %s"
msgstr ""
-#: config/i386/i386.c:4073
+#: config/i386/i386.c:4095
#, gcc-internal-format, gfc-internal-format
msgid "size ranges of option %s should be increasing"
msgstr ""
-#: config/i386/i386.c:4084
+#: config/i386/i386.c:4106
#, gcc-internal-format, gfc-internal-format
msgid "wrong stringop strategy name %s specified for option %s"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:4094
+#: config/i386/i386.c:4116
#, gcc-internal-format, gfc-internal-format
msgid ""
"stringop strategy name %s specified for option %s not supported for 32-bit "
"code"
msgstr ""
-#: config/i386/i386.c:4109
+#: config/i386/i386.c:4131
#, gcc-internal-format, gfc-internal-format
msgid "unknown alignment %s specified for option %s"
msgstr ""
-#: config/i386/i386.c:4120
+#: config/i386/i386.c:4142
#, gcc-internal-format, gfc-internal-format
msgid "the max value for the last size range should be -1 for option %s"
msgstr ""
-#: config/i386/i386.c:4128
+#: config/i386/i386.c:4150
#, gcc-internal-format, gfc-internal-format
msgid "too many size ranges specified in option %s"
msgstr ""
-#: config/i386/i386.c:4182
+#: config/i386/i386.c:4204
#, gcc-internal-format, gfc-internal-format
msgid "Unknown parameter to option -mtune-ctrl: %s"
msgstr ""
-#: config/i386/i386.c:4570
+#: config/i386/i386.c:4592
#, gcc-internal-format
msgid "Intel MCU psABI isn%'t supported in %s mode"
msgstr ""
-#: config/i386/i386.c:4617
+#: config/i386/i386.c:4639
#, gcc-internal-format, gfc-internal-format
msgid ""
"%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead "
@@ -27327,348 +27427,348 @@ msgid ""
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:4644
+#: config/i386/i386.c:4666
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:4661
+#: config/i386/i386.c:4683
#, gcc-internal-format
msgid "address mode %qs not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:4687 config/i386/i386.c:4696 config/i386/i386.c:4708
-#: config/i386/i386.c:4719 config/i386/i386.c:4730
+#: config/i386/i386.c:4709 config/i386/i386.c:4718 config/i386/i386.c:4730
+#: config/i386/i386.c:4741 config/i386/i386.c:4752
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:4699 config/i386/i386.c:4711
+#: config/i386/i386.c:4721 config/i386/i386.c:4733
#, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr ""
-#: config/i386/i386.c:4717 config/i386/i386.c:4726 config/i386/i386.c:5808
+#: config/i386/i386.c:4739 config/i386/i386.c:4748 config/i386/i386.c:5837
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr ""
-#: config/i386/i386.c:4754
+#: config/i386/i386.c:4776
#, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr ""
-#: config/i386/i386.c:4759
+#: config/i386/i386.c:4781
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:4772 config/i386/i386.c:5003
+#: config/i386/i386.c:4794 config/i386/i386.c:5025
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr ""
-#: config/i386/i386.c:4964 config/i386/i386.c:4967
+#: config/i386/i386.c:4986 config/i386/i386.c:4989
#, gcc-internal-format
msgid "Intel MPX does not support x32"
msgstr ""
-#: config/i386/i386.c:4970
+#: config/i386/i386.c:4992
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:4973
+#: config/i386/i386.c:4995
#, gcc-internal-format, gfc-internal-format
msgid "intel CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:4976
+#: config/i386/i386.c:4998
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr ""
-#: config/i386/i386.c:5019
+#: config/i386/i386.c:5041
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:5083
+#: config/i386/i386.c:5105
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:5085
+#: config/i386/i386.c:5107
#, gcc-internal-format
msgid "-mregparm is ignored for Intel MCU psABI"
msgstr ""
-#: config/i386/i386.c:5088
+#: config/i386/i386.c:5110
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:5119
+#: config/i386/i386.c:5141
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:5197
+#: config/i386/i386.c:5219
#, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr ""
-#: config/i386/i386.c:5200
+#: config/i386/i386.c:5222
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr ""
-#: config/i386/i386.c:5223
+#: config/i386/i386.c:5245
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:5236
+#: config/i386/i386.c:5258
#, gcc-internal-format
msgid "-mnop-mcount is not compatible with this target"
msgstr ""
-#: config/i386/i386.c:5239
+#: config/i386/i386.c:5261
#, gcc-internal-format
msgid "-mnop-mcount is not implemented for -fPIC"
msgstr ""
-#: config/i386/i386.c:5244
+#: config/i386/i386.c:5266
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:5254
+#: config/i386/i386.c:5276
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:5261
+#: config/i386/i386.c:5283
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:5309
+#: config/i386/i386.c:5331
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:5320
+#: config/i386/i386.c:5342
#, gcc-internal-format, gfc-internal-format
msgid "fixed ebp register requires %saccumulate-outgoing-args%s"
msgstr ""
-#: config/i386/i386.c:5433
+#: config/i386/i386.c:5455
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:5440
+#: config/i386/i386.c:5462
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:5499 config/rs6000/rs6000.c:4824
+#: config/i386/i386.c:5528 config/rs6000/rs6000.c:4825
#, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr ""
-#: config/i386/i386.c:6106
+#: config/i386/i386.c:6135
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:6801 config/i386/i386.c:6852
+#: config/i386/i386.c:6830 config/i386/i386.c:6881
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6806
+#: config/i386/i386.c:6835
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6813 config/i386/i386.c:44394
+#: config/i386/i386.c:6842 config/i386/i386.c:44455
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:6819
+#: config/i386/i386.c:6848
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr ""
-#: config/i386/i386.c:6844 config/i386/i386.c:6887
+#: config/i386/i386.c:6873 config/i386/i386.c:6916
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6848
+#: config/i386/i386.c:6877
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6856 config/i386/i386.c:6905
+#: config/i386/i386.c:6885 config/i386/i386.c:6934
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6866 config/i386/i386.c:6883
+#: config/i386/i386.c:6895 config/i386/i386.c:6912
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6870
+#: config/i386/i386.c:6899
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6874 config/i386/i386.c:6901
+#: config/i386/i386.c:6903 config/i386/i386.c:6930
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6891 config/i386/i386.c:6909
+#: config/i386/i386.c:6920 config/i386/i386.c:6938
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:6897
+#: config/i386/i386.c:6926
#, gcc-internal-format
msgid "%qE attribute is used for non-class method"
msgstr ""
-#: config/i386/i386.c:7135
+#: config/i386/i386.c:7164
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:7138
+#: config/i386/i386.c:7167
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:7466
+#: config/i386/i386.c:7495
#, gcc-internal-format
msgid "X32 does not support ms_abi attribute"
msgstr ""
-#: config/i386/i386.c:7498
+#: config/i386/i386.c:7527
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:7807
+#: config/i386/i386.c:7840
#, gcc-internal-format
msgid "AVX512F vector argument without AVX512F enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7813
+#: config/i386/i386.c:7846
#, gcc-internal-format
msgid "AVX512F vector return without AVX512F enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7827
+#: config/i386/i386.c:7860
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7833
+#: config/i386/i386.c:7866
#, gcc-internal-format
msgid "AVX vector return without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7849
+#: config/i386/i386.c:7882
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7855
+#: config/i386/i386.c:7888
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7869
+#: config/i386/i386.c:7902
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7875
+#: config/i386/i386.c:7908
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:8057
+#: config/i386/i386.c:8090
#, 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:8174
+#: config/i386/i386.c:8207
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:8292
+#: config/i386/i386.c:8325
#, gcc-internal-format
msgid ""
"the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:8455
+#: config/i386/i386.c:8488
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:8461
+#: config/i386/i386.c:8494
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:8477
+#: config/i386/i386.c:8510
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:8772 config/i386/i386.c:9037
+#: config/i386/i386.c:8805 config/i386/i386.c:9070
#, gcc-internal-format
msgid "calling %qD with SSE calling convention without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:8774 config/i386/i386.c:9039 config/i386/i386.c:9532
+#: config/i386/i386.c:8807 config/i386/i386.c:9072 config/i386/i386.c:9565
#, gcc-internal-format
msgid ""
"this is a GCC bug that can be worked around by adding attribute used to "
"function called"
msgstr ""
-#: config/i386/i386.c:9432
+#: config/i386/i386.c:9465
#, gcc-internal-format, gfc-internal-format
msgid ""
"The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:9530
+#: config/i386/i386.c:9563
#, gcc-internal-format
msgid "calling %qD with SSE caling convention without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:12657
+#: config/i386/i386.c:12691
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:13721
+#: config/i386/i386.c:13757
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:13741
+#: config/i386/i386.c:13777
#, gcc-internal-format
msgid ""
"-fsplit-stack does not support 2 register parameters for a nested function"
@@ -27676,268 +27776,268 @@ msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:13752
+#: config/i386/i386.c:13788
#, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr ""
-#: config/i386/i386.c:16563
+#: config/i386/i386.c:16599
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:16578
+#: config/i386/i386.c:16614
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:16770
+#: config/i386/i386.c:16806
#, gcc-internal-format
msgid "non-integer operand used with operand code 'z'"
msgstr ""
-#: config/i386/i386.c:36322
+#: config/i386/i386.c:36396
#, gcc-internal-format
msgid "No dispatcher found for the versioning attributes"
msgstr ""
-#: config/i386/i386.c:36372
+#: config/i386/i386.c:36446
#, gcc-internal-format, gfc-internal-format
msgid "No dispatcher found for %s"
msgstr ""
-#: config/i386/i386.c:36382
+#: config/i386/i386.c:36456
#, gcc-internal-format, gfc-internal-format
msgid "No dispatcher found for the versioning attributes : %s"
msgstr ""
-#: config/i386/i386.c:36630
+#: config/i386/i386.c:36704
#, gcc-internal-format
msgid ""
"Function versions cannot be marked as gnu_inline, bodies have to be generated"
msgstr ""
-#: config/i386/i386.c:36635 config/i386/i386.c:37063
+#: config/i386/i386.c:36709 config/i386/i386.c:37137
#, gcc-internal-format
msgid "Virtual function multiversioning not supported"
msgstr ""
-#: config/i386/i386.c:36698
+#: config/i386/i386.c:36772
#, gcc-internal-format
msgid "missing %<target%> attribute for multi-versioned %D"
msgstr ""
-#: config/i386/i386.c:36701
+#: config/i386/i386.c:36775
#, gcc-internal-format
msgid "previous declaration of %D"
msgstr ""
-#: config/i386/i386.c:36920
+#: config/i386/i386.c:36994
#, gcc-internal-format
msgid "multiversioning needs ifunc which is not supported on this target"
msgstr ""
-#: config/i386/i386.c:37306
+#: config/i386/i386.c:37380
#, gcc-internal-format
msgid "Parameter to builtin must be a string constant or literal"
msgstr ""
-#: config/i386/i386.c:37331 config/i386/i386.c:37381
+#: config/i386/i386.c:37405 config/i386/i386.c:37455
#, gcc-internal-format, gfc-internal-format
msgid "Parameter to builtin not valid: %s"
msgstr ""
-#: config/i386/i386.c:37792 config/i386/i386.c:39143
+#: config/i386/i386.c:37866 config/i386/i386.c:39217
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr ""
-#: config/i386/i386.c:38187
+#: config/i386/i386.c:38261
#, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:38282
+#: config/i386/i386.c:38356
#, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:39074
+#: config/i386/i386.c:39148
#, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr ""
-#: config/i386/i386.c:39089
+#: config/i386/i386.c:39163
#, gcc-internal-format
msgid "the last argument must be a 3-bit immediate"
msgstr ""
-#: config/i386/i386.c:39122
+#: config/i386/i386.c:39196
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr ""
-#: config/i386/i386.c:39162
+#: config/i386/i386.c:39236
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr ""
-#: config/i386/i386.c:39175
+#: config/i386/i386.c:39249
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr ""
-#: config/i386/i386.c:39185
+#: config/i386/i386.c:39259
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:39189 config/i386/i386.c:39953
+#: config/i386/i386.c:39263 config/i386/i386.c:40027
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:39356
+#: config/i386/i386.c:39430
#, gcc-internal-format
msgid "the third argument must be comparison constant"
msgstr ""
-#: config/i386/i386.c:39361
+#: config/i386/i386.c:39435
#, gcc-internal-format
msgid "incorrect comparison mode"
msgstr ""
-#: config/i386/i386.c:39367 config/i386/i386.c:39568
+#: config/i386/i386.c:39441 config/i386/i386.c:39642
#, gcc-internal-format
msgid "incorrect rounding operand"
msgstr ""
-#: config/i386/i386.c:39550
+#: config/i386/i386.c:39624
#, gcc-internal-format
msgid "the immediate argument must be a 4-bit immediate"
msgstr ""
-#: config/i386/i386.c:39556
+#: config/i386/i386.c:39630
#, gcc-internal-format
msgid "the immediate argument must be a 5-bit immediate"
msgstr ""
-#: config/i386/i386.c:39559
+#: config/i386/i386.c:39633
#, gcc-internal-format
msgid "the immediate argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:39951
+#: config/i386/i386.c:40025
#, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr ""
-#: config/i386/i386.c:40033 config/rs6000/rs6000.c:13952
+#: config/i386/i386.c:40107 config/rs6000/rs6000.c:13947
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:40227
+#: config/i386/i386.c:40301
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:40231
+#: config/i386/i386.c:40305
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:40993
+#: config/i386/i386.c:41067
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr ""
-#: config/i386/i386.c:41602 config/i386/i386.c:41784
+#: config/i386/i386.c:41676 config/i386/i386.c:41858
#, gcc-internal-format
msgid "the last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:41837
+#: config/i386/i386.c:41911
#, gcc-internal-format
msgid "the forth argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:41843
+#: config/i386/i386.c:41917
#, gcc-internal-format
msgid "incorrect hint operand"
msgstr ""
-#: config/i386/i386.c:41862
+#: config/i386/i386.c:41936
#, gcc-internal-format
msgid "the xabort's argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:44381
+#: config/i386/i386.c:44442
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr ""
-#: config/i386/i386.c:44402
+#: config/i386/i386.c:44463
#, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr ""
-#: config/i386/i386.c:44435 config/i386/i386.c:44444
+#: config/i386/i386.c:44496 config/i386/i386.c:44505
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:44480 config/rs6000/rs6000.c:31025
+#: config/i386/i386.c:44541 config/rs6000/rs6000.c:31044
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr ""
-#: config/i386/i386.c:47412
+#: config/i386/i386.c:47478
#, gcc-internal-format
msgid "alternatives not allowed in asm flag output"
msgstr ""
-#: config/i386/i386.c:47476
+#: config/i386/i386.c:47542
#, gcc-internal-format
msgid "unknown asm flag output %qs"
msgstr ""
-#: config/i386/i386.c:47505
+#: config/i386/i386.c:47571
#, gcc-internal-format
msgid "invalid type for asm flag output"
msgstr ""
-#: config/i386/i386.c:53657
+#: config/i386/i386.c:53731
#, gcc-internal-format
msgid "Unknown architecture specific memory model"
msgstr ""
-#: config/i386/i386.c:53664
+#: config/i386/i386.c:53738
#, gcc-internal-format
msgid "HLE_ACQUIRE not used with ACQUIRE or stronger memory model"
msgstr ""
-#: config/i386/i386.c:53670
+#: config/i386/i386.c:53744
#, gcc-internal-format
msgid "HLE_RELEASE not used with RELEASE or stronger memory model"
msgstr ""
-#: config/i386/i386.c:53694
+#: config/i386/i386.c:53768 config/i386/i386.c:53883
#, gcc-internal-format, gfc-internal-format
msgid "unsupported simdlen %d"
msgstr ""
-#: config/i386/i386.c:53713
+#: config/i386/i386.c:53787
#, gcc-internal-format
msgid "unsupported return type %qT for simd\n"
msgstr ""
-#: config/i386/i386.c:53735
+#: config/i386/i386.c:53809
#, gcc-internal-format
msgid "unsupported argument type %qT for simd\n"
msgstr ""
-#: config/i386/i386.c:54021
+#: config/i386/i386.c:54129
#, gcc-internal-format
msgid ""
"Pointer Checker requires MPX support on this target. Use -mmpx options to "
@@ -28033,13 +28133,13 @@ msgstr ""
msgid "%qE attribute requires a string constant argument"
msgstr ""
-#: config/ia64/ia64.c:5928 config/pa/pa.c:425 config/sh/sh.c:9614
+#: config/ia64/ia64.c:5928 config/pa/pa.c:425 config/sh/sh.c:9616
#: config/spu/spu.c:4892
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5955 config/pa/pa.c:452 config/sh/sh.c:9640
+#: config/ia64/ia64.c:5955 config/pa/pa.c:452 config/sh/sh.c:9642
#: config/spu/spu.c:4918
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
@@ -28111,7 +28211,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr ""
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:2940 config/sh/sh.c:9833 config/sh/sh.c:9939
+#: config/m32c/m32c.c:2940 config/sh/sh.c:9835 config/sh/sh.c:9941
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr ""
@@ -28171,7 +28271,7 @@ msgstr ""
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1096 config/rs6000/rs6000.c:24271
+#: config/m68k/m68k.c:1096 config/rs6000/rs6000.c:24279
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr ""
@@ -28410,7 +28510,7 @@ msgstr ""
msgid "argument %d of %qE must be a multiple of %d"
msgstr ""
-#: config/mep/mep.c:6144 c/c-typeck.c:6610
+#: config/mep/mep.c:6144 c/c-typeck.c:6624
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr ""
@@ -28813,33 +28913,33 @@ msgstr ""
msgid "msp430_select_hwmult_lib needs one or more arguments"
msgstr ""
-#: config/msp430/msp430.c:762
+#: config/msp430/msp430.c:776
#, gcc-internal-format, gfc-internal-format
msgid "MCU '%s' supports %s ISA but -mcpu option is set to %s"
msgstr ""
-#: config/msp430/msp430.c:768
+#: config/msp430/msp430.c:782
#, gcc-internal-format, gfc-internal-format
msgid ""
"MCU '%s' does not have hardware multiply support, but -mhwmult is set to %s"
msgstr ""
-#: config/msp430/msp430.c:774
+#: config/msp430/msp430.c:788
#, gcc-internal-format, gfc-internal-format
msgid "MCU '%s' supports %s hardware multiply, but -mhwmult is set to 16-bit"
msgstr ""
-#: config/msp430/msp430.c:777
+#: config/msp430/msp430.c:791
#, gcc-internal-format, gfc-internal-format
msgid "MCU '%s' supports %s hardware multiply, but -mhwmult is set to 32-bit"
msgstr ""
-#: config/msp430/msp430.c:780
+#: config/msp430/msp430.c:794
#, gcc-internal-format, gfc-internal-format
msgid "MCU '%s' supports %s hardware multiply, but -mhwmult is set to f5series"
msgstr ""
-#: config/msp430/msp430.c:796
+#: config/msp430/msp430.c:810
#, gcc-internal-format, gfc-internal-format
msgid ""
"Unrecognised MCU name '%s', assuming that it is just a MSP430 with no "
@@ -28847,76 +28947,76 @@ msgid ""
"Use the -mcpu and -mhwmult options to set these explicitly."
msgstr ""
-#: config/msp430/msp430.c:800
+#: config/msp430/msp430.c:814
#, gcc-internal-format, gfc-internal-format
msgid ""
"Unrecognised MCU name '%s', assuming that it has no hardware multiply.\n"
"Use the -mhwmult option to set this explicitly."
msgstr ""
-#: config/msp430/msp430.c:810
+#: config/msp430/msp430.c:824
#, gcc-internal-format, gfc-internal-format
msgid ""
"Unrecognised MCU name '%s', assuming that it just supports the MSP430 ISA.\n"
"Use the -mcpu option to set the ISA explicitly."
msgstr ""
-#: config/msp430/msp430.c:817
+#: config/msp430/msp430.c:831
#, gcc-internal-format, gfc-internal-format
msgid "Unrecognised MCU name '%s'."
msgstr ""
-#: config/msp430/msp430.c:826
+#: config/msp430/msp430.c:840
#, gcc-internal-format
msgid "-mlarge requires a 430X-compatible -mmcu="
msgstr ""
-#: config/msp430/msp430.c:829
+#: config/msp430/msp430.c:843
#, gcc-internal-format
msgid "-mcode-region=upper requires 430X-compatible cpu"
msgstr ""
-#: config/msp430/msp430.c:831
+#: config/msp430/msp430.c:845
#, gcc-internal-format
msgid "-mdata-region=upper requires 430X-compatible cpu"
msgstr ""
-#: config/msp430/msp430.c:1834
+#: config/msp430/msp430.c:1848
#, gcc-internal-format
msgid "unrecognised interrupt vector argument of %qE attribute"
msgstr ""
-#: config/msp430/msp430.c:1843
+#: config/msp430/msp430.c:1857
#, gcc-internal-format
msgid "numeric argument of %qE attribute must be in range 0..63"
msgstr ""
-#: config/msp430/msp430.c:1849
+#: config/msp430/msp430.c:1863
#, gcc-internal-format
msgid "argument of %qE attribute is not a string constant or number"
msgstr ""
-#: config/msp430/msp430.c:2458
+#: config/msp430/msp430.c:2473
#, gcc-internal-format
msgid "__delay_cycles() only takes constant arguments"
msgstr ""
-#: config/msp430/msp430.c:2468
+#: config/msp430/msp430.c:2483
#, gcc-internal-format
msgid "__delay_cycles only takes non-negative cycle counts."
msgstr ""
-#: config/msp430/msp430.c:2488
+#: config/msp430/msp430.c:2503
#, gcc-internal-format
msgid "__delay_cycles is limited to 32-bit loop counts."
msgstr ""
-#: config/msp430/msp430.c:2558
+#: config/msp430/msp430.c:2573
#, gcc-internal-format
msgid "MSP430 builtin functions only work inside interrupt handlers"
msgstr ""
-#: config/msp430/msp430.c:2570 config/rx/rx.c:2634 config/xtensa/xtensa.c:3346
+#: config/msp430/msp430.c:2585 config/rx/rx.c:2634 config/xtensa/xtensa.c:3346
#: config/xtensa/xtensa.c:3372
#, gcc-internal-format
msgid "bad builtin code"
@@ -29152,18 +29252,12 @@ msgstr ""
msgid "cannot open intermediate ptx file"
msgstr ""
-#. The stabs testcases want to know stabs isn't supported.
-#: config/nvptx/nvptx.c:165
-#, gcc-internal-format
-msgid "stabs debug format not supported"
-msgstr ""
-
-#: config/nvptx/nvptx.c:1540
+#: config/nvptx/nvptx.c:1545
#, gcc-internal-format
msgid "cannot emit unaligned pointers in ptx assembly"
msgstr ""
-#: config/nvptx/nvptx.c:3801
+#: config/nvptx/nvptx.c:3798
#, gcc-internal-format
msgid "%qE attribute requires a void return type"
msgstr ""
@@ -29310,51 +29404,51 @@ msgstr ""
msgid "junk at end of #pragma longcall"
msgstr ""
-#: config/rs6000/rs6000-c.c:4498
+#: config/rs6000/rs6000-c.c:4512
#, gcc-internal-format
msgid ""
"vec_lvsl is deprecated for little endian; use assignment for unaligned loads "
"and stores"
msgstr ""
-#: config/rs6000/rs6000-c.c:4501
+#: config/rs6000/rs6000-c.c:4515
#, gcc-internal-format
msgid ""
"vec_lvsr is deprecated for little endian; use assignment for unaligned loads "
"and stores"
msgstr ""
-#: config/rs6000/rs6000-c.c:4517
+#: config/rs6000/rs6000-c.c:4531
#, gcc-internal-format, gfc-internal-format
msgid "%s only accepts %d arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:4522
+#: config/rs6000/rs6000-c.c:4536
#, gcc-internal-format, gfc-internal-format
msgid "%s only accepts 1 argument"
msgstr ""
-#: config/rs6000/rs6000-c.c:4527
+#: config/rs6000/rs6000-c.c:4541
#, gcc-internal-format, gfc-internal-format
msgid "%s only accepts 2 arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:4593
+#: config/rs6000/rs6000-c.c:4607
#, gcc-internal-format
msgid "vec_extract only accepts 2 arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:4695
+#: config/rs6000/rs6000-c.c:4709
#, gcc-internal-format
msgid "vec_insert only accepts 3 arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:4827
+#: config/rs6000/rs6000-c.c:4841
#, gcc-internal-format
msgid "passing arg %d of %qE discards qualifiers frompointer target type"
msgstr ""
-#: config/rs6000/rs6000-c.c:4871
+#: config/rs6000/rs6000-c.c:4885
#, gcc-internal-format
msgid "invalid parameter combination for AltiVec intrinsic"
msgstr ""
@@ -29496,411 +29590,411 @@ msgstr ""
msgid "-mpower9-vector requires -mpower8-vector"
msgstr ""
-#: config/rs6000/rs6000.c:4211
+#: config/rs6000/rs6000.c:4212
#, gcc-internal-format
msgid "-mallow-movmisalign requires -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:4226
+#: config/rs6000/rs6000.c:4227
#, gcc-internal-format
msgid "-mefficient-unaligned-vsx requires -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:4234
+#: config/rs6000/rs6000.c:4235
#, gcc-internal-format
msgid "-mefficient-unaligned-vsx requires -mallow-movmisalign"
msgstr ""
-#: config/rs6000/rs6000.c:4244
+#: config/rs6000/rs6000.c:4245
#, gcc-internal-format
msgid "-mfloat128 requires VSX support"
msgstr ""
-#: config/rs6000/rs6000.c:4258
+#: config/rs6000/rs6000.c:4259
#, gcc-internal-format
msgid "-mfloat128-hardware requires full ISA 3.0 support"
msgstr ""
-#: config/rs6000/rs6000.c:4325
+#: config/rs6000/rs6000.c:4326
#, gcc-internal-format, gfc-internal-format
msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch"
msgstr ""
-#: config/rs6000/rs6000.c:4337
+#: config/rs6000/rs6000.c:4338
#, gcc-internal-format
msgid "target attribute or pragma changes long double size"
msgstr ""
-#: config/rs6000/rs6000.c:4360 config/rs6000/rs6000.c:4375
+#: config/rs6000/rs6000.c:4361 config/rs6000/rs6000.c:4376
#, gcc-internal-format
msgid "target attribute or pragma changes AltiVec ABI"
msgstr ""
-#: config/rs6000/rs6000.c:4388
+#: config/rs6000/rs6000.c:4389
#, gcc-internal-format
msgid "target attribute or pragma changes darwin64 ABI"
msgstr ""
-#: config/rs6000/rs6000.c:4454
+#: config/rs6000/rs6000.c:4455
#, gcc-internal-format
msgid "target attribute or pragma changes single precision floating point"
msgstr ""
-#: config/rs6000/rs6000.c:4457
+#: config/rs6000/rs6000.c:4458
#, gcc-internal-format
msgid "target attribute or pragma changes double precision floating point"
msgstr ""
-#: config/rs6000/rs6000.c:6724
+#: config/rs6000/rs6000.c:6718
#, gcc-internal-format, gfc-internal-format
msgid ""
"the layout of aggregates containing vectors with %d-byte alignment has "
"changed in GCC 5"
msgstr ""
-#: config/rs6000/rs6000.c:9829
+#: config/rs6000/rs6000.c:9824
#, gcc-internal-format
msgid ""
"GCC vector returned by reference: non-standard ABI extension with no "
"compatibility guarantee"
msgstr ""
-#: config/rs6000/rs6000.c:9982
+#: config/rs6000/rs6000.c:9977
#, 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:10152
+#: config/rs6000/rs6000.c:10147
#, gcc-internal-format, gfc-internal-format
msgid ""
"the ABI of passing aggregates with %d-byte alignment has changed in GCC 5"
msgstr ""
-#: config/rs6000/rs6000.c:10414
+#: config/rs6000/rs6000.c:10409
#, 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:11274
+#: config/rs6000/rs6000.c:11269
#, gcc-internal-format
msgid "the ABI of passing homogeneous float aggregates has changed in GCC 5"
msgstr ""
-#: config/rs6000/rs6000.c:11449
+#: config/rs6000/rs6000.c:11444
#, gcc-internal-format
msgid ""
"GCC vector passed by reference: non-standard ABI extension with no "
"compatibility guarantee"
msgstr ""
-#: config/rs6000/rs6000.c:12237
+#: config/rs6000/rs6000.c:12232
#, gcc-internal-format, gfc-internal-format
msgid "internal error: builtin function %s already processed"
msgstr ""
-#: config/rs6000/rs6000.c:12679
+#: config/rs6000/rs6000.c:12674
#, gcc-internal-format
msgid "argument 1 must be an 8-bit field value"
msgstr ""
-#: config/rs6000/rs6000.c:12726
+#: config/rs6000/rs6000.c:12721
#, gcc-internal-format
msgid "argument 1 must be a 5-bit signed literal"
msgstr ""
-#: config/rs6000/rs6000.c:12829 config/rs6000/rs6000.c:14415
+#: config/rs6000/rs6000.c:12824 config/rs6000/rs6000.c:14410
#, gcc-internal-format
msgid "argument 2 must be a 5-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:12868
+#: config/rs6000/rs6000.c:12863
#, gcc-internal-format
msgid "argument 1 of __builtin_altivec_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:12920
+#: config/rs6000/rs6000.c:12915
#, gcc-internal-format
msgid "argument 1 of __builtin_altivec_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:13294
+#: config/rs6000/rs6000.c:13289
#, gcc-internal-format, gfc-internal-format
msgid "builtin %s is only valid in 64-bit mode"
msgstr ""
-#: config/rs6000/rs6000.c:13343
+#: config/rs6000/rs6000.c:13338
#, gcc-internal-format, gfc-internal-format
msgid "argument %d must be an unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:13345
+#: config/rs6000/rs6000.c:13340
#, gcc-internal-format, gfc-internal-format
msgid "argument %d is an unsigned literal that is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:13483
+#: config/rs6000/rs6000.c:13478
#, gcc-internal-format, gfc-internal-format
msgid "builtin %s only accepts a string argument"
msgstr ""
#. Invalid CPU argument.
-#: config/rs6000/rs6000.c:13502
+#: config/rs6000/rs6000.c:13497
#, gcc-internal-format, gfc-internal-format
msgid "cpu %s is an invalid argument to builtin %s"
msgstr ""
#. Invalid HWCAP argument.
-#: config/rs6000/rs6000.c:13530
+#: config/rs6000/rs6000.c:13525
#, gcc-internal-format, gfc-internal-format
msgid "hwcap %s is an invalid argument to builtin %s"
msgstr ""
-#: config/rs6000/rs6000.c:13603
+#: config/rs6000/rs6000.c:13598
#, gcc-internal-format
msgid "argument 3 must be a 4-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:13621
+#: config/rs6000/rs6000.c:13616
#, gcc-internal-format
msgid "argument 3 must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:13641
+#: config/rs6000/rs6000.c:13636
#, gcc-internal-format
msgid "argument 3 must be a 1-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:13653
+#: config/rs6000/rs6000.c:13648
#, gcc-internal-format
msgid "argument 1 must be 0 or 2"
msgstr ""
-#: config/rs6000/rs6000.c:13665
+#: config/rs6000/rs6000.c:13660
#, gcc-internal-format
msgid "argument 1 must be a 1-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:13679
+#: config/rs6000/rs6000.c:13674
#, gcc-internal-format
msgid "argument 2 must be a 6-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:13691
+#: config/rs6000/rs6000.c:13686
#, gcc-internal-format
msgid "argument 2 must be 0 or 1"
msgstr ""
-#: config/rs6000/rs6000.c:13698
+#: config/rs6000/rs6000.c:13693
#, gcc-internal-format
msgid "argument 3 must be in the range 0..15"
msgstr ""
-#: config/rs6000/rs6000.c:13885
+#: config/rs6000/rs6000.c:13880
#, gcc-internal-format
msgid "argument to %qs must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:14038
+#: config/rs6000/rs6000.c:14033
#, gcc-internal-format
msgid "unresolved overload for Altivec builtin %qF"
msgstr ""
-#: config/rs6000/rs6000.c:14168
+#: config/rs6000/rs6000.c:14163
#, gcc-internal-format
msgid "argument to dss must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:14535
+#: config/rs6000/rs6000.c:14530
#, gcc-internal-format
msgid "argument 1 of __builtin_paired_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:14582
+#: config/rs6000/rs6000.c:14577
#, gcc-internal-format
msgid "argument 1 of __builtin_paired_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:14607
+#: config/rs6000/rs6000.c:14602
#, gcc-internal-format
msgid "argument 1 of __builtin_spe_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:14679
+#: config/rs6000/rs6000.c:14674
#, gcc-internal-format
msgid "argument 1 of __builtin_spe_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:14761
+#: config/rs6000/rs6000.c:14756
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s is only valid for the cell processor"
msgstr ""
-#: config/rs6000/rs6000.c:14763
+#: config/rs6000/rs6000.c:14758
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mvsx option"
msgstr ""
-#: config/rs6000/rs6000.c:14765
+#: config/rs6000/rs6000.c:14760
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mhtm option"
msgstr ""
-#: config/rs6000/rs6000.c:14767
+#: config/rs6000/rs6000.c:14762
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -maltivec option"
msgstr ""
-#: config/rs6000/rs6000.c:14769
+#: config/rs6000/rs6000.c:14764
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mpaired option"
msgstr ""
-#: config/rs6000/rs6000.c:14771
+#: config/rs6000/rs6000.c:14766
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mspe option"
msgstr ""
-#: config/rs6000/rs6000.c:14774
+#: config/rs6000/rs6000.c:14769
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mhard-dfp and -mpower8-vector options"
msgstr ""
-#: config/rs6000/rs6000.c:14777
+#: config/rs6000/rs6000.c:14772
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mhard-dfp option"
msgstr ""
-#: config/rs6000/rs6000.c:14779
+#: config/rs6000/rs6000.c:14774
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mpower8-vector option"
msgstr ""
-#: config/rs6000/rs6000.c:14782
+#: config/rs6000/rs6000.c:14777
#, gcc-internal-format, gfc-internal-format
msgid ""
"Builtin function %s requires the -mhard-float and -mlong-double-128 options"
msgstr ""
-#: config/rs6000/rs6000.c:14785
+#: config/rs6000/rs6000.c:14780
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s requires the -mhard-float option"
msgstr ""
-#: config/rs6000/rs6000.c:14787
+#: config/rs6000/rs6000.c:14782
#, gcc-internal-format, gfc-internal-format
msgid "Builtin function %s is not supported with the current options"
msgstr ""
-#: config/rs6000/rs6000.c:16341
+#: config/rs6000/rs6000.c:16336
#, gcc-internal-format, gfc-internal-format
msgid "internal error: builtin function %s had no type"
msgstr ""
-#: config/rs6000/rs6000.c:16349
+#: config/rs6000/rs6000.c:16344
#, gcc-internal-format, gfc-internal-format
msgid "internal error: builtin function %s had an unexpected return type %s"
msgstr ""
-#: config/rs6000/rs6000.c:16366
+#: config/rs6000/rs6000.c:16361
#, gcc-internal-format, gfc-internal-format
msgid ""
"internal error: builtin function %s, argument %d had unexpected argument "
"type %s"
msgstr ""
-#: config/rs6000/rs6000.c:24241
+#: config/rs6000/rs6000.c:24249
#, gcc-internal-format
msgid "stack frame too large"
msgstr ""
-#: config/rs6000/rs6000.c:27624
+#: config/rs6000/rs6000.c:27643
#, gcc-internal-format
msgid "-fsplit-stack uses register r29"
msgstr ""
-#: config/rs6000/rs6000.c:27632
+#: config/rs6000/rs6000.c:27651
#, gcc-internal-format
msgid "Stack frame larger than 2G is not supported for -fsplit-stack"
msgstr ""
-#: config/rs6000/rs6000.c:28630
+#: config/rs6000/rs6000.c:28649
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:30712
+#: config/rs6000/rs6000.c:30731
#, gcc-internal-format
msgid ""
"You cannot take the address of a nested function if you use the -mno-"
"pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:30794
+#: config/rs6000/rs6000.c:30813
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:30796
+#: config/rs6000/rs6000.c:30815
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:30798
+#: config/rs6000/rs6000.c:30817
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:30800
+#: config/rs6000/rs6000.c:30819
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:30806
+#: config/rs6000/rs6000.c:30825
#, gcc-internal-format
msgid ""
"use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:30809
+#: config/rs6000/rs6000.c:30828
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:30814
+#: config/rs6000/rs6000.c:30833
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:30817
+#: config/rs6000/rs6000.c:30836
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:34323
+#: config/rs6000/rs6000.c:34344
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:34327
+#: config/rs6000/rs6000.c:34348
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:34627
+#: config/rs6000/rs6000.c:34648
#, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr ""
-#: config/rs6000/rs6000.c:34630
+#: config/rs6000/rs6000.c:34651
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr ""
-#: config/rs6000/rs6000.c:34632
+#: config/rs6000/rs6000.c:34653
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr ""
@@ -30211,71 +30305,71 @@ msgstr ""
msgid "constant argument %d for builtin %qF is out of range for target type"
msgstr ""
-#: config/s390/s390.c:732
+#: config/s390/s390.c:754
#, gcc-internal-format
msgid "constant argument %d for builtin %qF is out of range (0.."
msgstr ""
-#: config/s390/s390.c:749
+#: config/s390/s390.c:771
#, gcc-internal-format
msgid "constant argument %d for builtin %qF is out of range ("
msgstr ""
-#: config/s390/s390.c:800
+#: config/s390/s390.c:822
#, gcc-internal-format
msgid ""
"Builtin %qF is not supported without -mhtm (default with -march=zEC12 and "
"higher)."
msgstr ""
-#: config/s390/s390.c:806
+#: config/s390/s390.c:828
#, gcc-internal-format
msgid ""
"Builtin %qF is not supported without -mvx (default with -march=z13 and "
"higher)."
msgstr ""
-#: config/s390/s390.c:826
+#: config/s390/s390.c:848
#, gcc-internal-format
msgid "Unresolved overloaded builtin"
msgstr ""
-#: config/s390/s390.c:833 config/tilegx/tilegx.c:3543
+#: config/s390/s390.c:855 config/tilegx/tilegx.c:3543
#: config/tilepro/tilepro.c:3110
#, gcc-internal-format
msgid "bad builtin icode"
msgstr ""
-#: config/s390/s390.c:869
+#: config/s390/s390.c:891
#, gcc-internal-format
msgid "constant value required for builtin %qF argument %d"
msgstr ""
-#: config/s390/s390.c:946
+#: config/s390/s390.c:968
#, gcc-internal-format
msgid "Invalid argument %d for builtin %qF"
msgstr ""
-#: config/s390/s390.c:1047
+#: config/s390/s390.c:1069
#, gcc-internal-format
msgid ""
"requested %qE attribute is not a comma separated pair of non-negative "
"integer constants or too large (max. %d)"
msgstr ""
-#: config/s390/s390.c:9455
+#: config/s390/s390.c:9641
#, gcc-internal-format
msgid "total size of local variables exceeds architecture limit"
msgstr ""
-#: config/s390/s390.c:10552
+#: config/s390/s390.c:10741
#, gcc-internal-format
msgid ""
"frame size of function %qs is %wd bytes exceeding user provided stack limit "
"of %d bytes. An unconditional trap is added."
msgstr ""
-#: config/s390/s390.c:10568
+#: config/s390/s390.c:10757
#, gcc-internal-format
msgid ""
"frame size of function %qs is %wd bytes which is more than half the stack "
@@ -30283,100 +30377,105 @@ msgid ""
"function."
msgstr ""
-#: config/s390/s390.c:10596
+#: config/s390/s390.c:10785
#, gcc-internal-format
msgid "frame size of %qs is %wd bytes"
msgstr ""
-#: config/s390/s390.c:10600
+#: config/s390/s390.c:10789
#, gcc-internal-format
msgid "%qs uses dynamic stack allocation"
msgstr ""
-#: config/s390/s390.c:13657
+#: config/s390/s390.c:11167
+#, gcc-internal-format
+msgid "CPUs older than z900 are not supported for -fsplit-stack"
+msgstr ""
+
+#: config/s390/s390.c:14157
#, gcc-internal-format, gfc-internal-format
msgid ""
"%sarch=%s%s is deprecated and will be removed in future releases; use at "
"least %sarch=z900%s"
msgstr ""
-#: config/s390/s390.c:13669
+#: config/s390/s390.c:14169
#, gcc-internal-format, gfc-internal-format
msgid ""
"%stune=%s%s is deprecated and will be removed in future releases; use at "
"least %stune=z900%s"
msgstr ""
-#: config/s390/s390.c:13681
+#: config/s390/s390.c:14181
#, gcc-internal-format, gfc-internal-format
msgid "z/Architecture mode not supported on %s"
msgstr ""
-#: config/s390/s390.c:13684
+#: config/s390/s390.c:14184
#, gcc-internal-format
msgid "64-bit ABI not supported in ESA/390 mode"
msgstr ""
-#: config/s390/s390.c:13701
+#: config/s390/s390.c:14201
#, gcc-internal-format, gfc-internal-format
msgid "hardware vector support not available on %s"
msgstr ""
-#: config/s390/s390.c:13704
+#: config/s390/s390.c:14204
#, gcc-internal-format
msgid "hardware vector support not available with -msoft-float"
msgstr ""
-#: config/s390/s390.c:13732
+#: config/s390/s390.c:14232
#, gcc-internal-format, gfc-internal-format
msgid "hardware decimal floating point instructions not available on %s"
msgstr ""
-#: config/s390/s390.c:13736
+#: config/s390/s390.c:14236
#, gcc-internal-format
msgid ""
"hardware decimal floating point instructions not available in ESA/390 mode"
msgstr ""
-#: config/s390/s390.c:13748
+#: config/s390/s390.c:14248
#, gcc-internal-format
msgid "-mhard-dfp can%'t be used in conjunction with -msoft-float"
msgstr ""
-#: config/s390/s390.c:13756
+#: config/s390/s390.c:14256
#, gcc-internal-format
msgid ""
"-mbackchain -mpacked-stack -mhard-float are not supported in combination"
msgstr ""
-#: config/s390/s390.c:13762
+#: config/s390/s390.c:14262
#, gcc-internal-format
msgid "stack size must be greater than the stack guard value"
msgstr ""
-#: config/s390/s390.c:13764
+#: config/s390/s390.c:14264
#, gcc-internal-format
msgid "stack size must not be greater than 64k"
msgstr ""
-#: config/s390/s390.c:13767
+#: config/s390/s390.c:14267
#, gcc-internal-format
msgid "-mstack-guard implies use of -mstack-size"
msgstr ""
#. argument is not a plain number
-#: config/s390/s390.c:13861
+#: config/s390/s390.c:14361
#, gcc-internal-format
msgid "arguments to %qs should be non-negative integers"
msgstr ""
-#: config/s390/s390.c:13868
+#: config/s390/s390.c:14368
#, gcc-internal-format
msgid "argument to %qs is too large (max. %d)"
msgstr ""
#. Value is not allowed for the target attribute.
-#: config/s390/s390.c:14076
+#: config/s390/s390.c:14576
#, gcc-internal-format
msgid "Value %qs is not supported by attribute %<target%>"
msgstr ""
@@ -30393,53 +30492,53 @@ msgid ""
"outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:8499
+#: config/sh/sh.c:8501
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:9702
+#: config/sh/sh.c:9704
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr ""
-#: config/sh/sh.c:9772
+#: config/sh/sh.c:9774
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr ""
-#: config/sh/sh.c:9802
+#: config/sh/sh.c:9804
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:9819
+#: config/sh/sh.c:9821
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr ""
-#: config/sh/sh.c:9841
+#: config/sh/sh.c:9843
#, 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:9914
+#: config/sh/sh.c:9916
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr ""
-#: config/sh/sh.c:12762
+#: config/sh/sh.c:12764
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:12783
+#: config/sh/sh.c:12785
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:12791
+#: config/sh/sh.c:12793
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -30456,27 +30555,27 @@ msgstr ""
msgid "-mrelax is only supported for RTP PIC"
msgstr ""
-#: config/sparc/sparc.c:1343
+#: config/sparc/sparc.c:1342
#, gcc-internal-format, gfc-internal-format
msgid "%s is not supported by this configuration"
msgstr ""
-#: config/sparc/sparc.c:1350
+#: config/sparc/sparc.c:1349
#, gcc-internal-format
msgid "-mlong-double-64 not allowed with -m64"
msgstr ""
-#: config/sparc/sparc.c:1370
+#: config/sparc/sparc.c:1369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for -mcmodel= switch"
msgstr ""
-#: config/sparc/sparc.c:1375
+#: config/sparc/sparc.c:1374
#, gcc-internal-format
msgid "-mcmodel= is not supported on 32 bit systems"
msgstr ""
-#: config/sparc/sparc.c:1382
+#: config/sparc/sparc.c:1381
#, gcc-internal-format
msgid "-fcall-saved-REG is not supported for out registers"
msgstr ""
@@ -30681,7 +30780,7 @@ msgstr ""
msgid "too much stack space to prepare: %d"
msgstr ""
-#: config/visium/visium.c:648
+#: config/visium/visium.c:705
#, gcc-internal-format
msgid "an interrupt handler cannot be compiled with -muser-mode"
msgstr ""
@@ -30812,53 +30911,53 @@ msgstr ""
msgid "subprogram %q+F not marked Inline"
msgstr ""
-#: ada/gcc-interface/trans.c:6222
+#: ada/gcc-interface/trans.c:6241
#, gcc-internal-format
msgid "out-of-bounds access may be optimized away"
msgstr ""
-#: ada/gcc-interface/trans.c:6224
+#: ada/gcc-interface/trans.c:6243
#, gcc-internal-format
msgid "containing loop"
msgstr ""
-#: ada/gcc-interface/utils.c:3736
+#: ada/gcc-interface/utils.c:3757
#, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr ""
-#: ada/gcc-interface/utils.c:3760
+#: ada/gcc-interface/utils.c:3781
#, gcc-internal-format
msgid "number of components of vector not a power of two"
msgstr ""
-#: ada/gcc-interface/utils.c:5774 ada/gcc-interface/utils.c:5948
-#: ada/gcc-interface/utils.c:6010
+#: ada/gcc-interface/utils.c:5795 ada/gcc-interface/utils.c:5969
+#: ada/gcc-interface/utils.c:6031
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr ""
-#: ada/gcc-interface/utils.c:5891
+#: ada/gcc-interface/utils.c:5912
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr ""
-#: ada/gcc-interface/utils.c:5900
+#: ada/gcc-interface/utils.c:5921
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr ""
-#: ada/gcc-interface/utils.c:5970
+#: ada/gcc-interface/utils.c:5991
#, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr ""
-#: ada/gcc-interface/utils.c:6094
+#: ada/gcc-interface/utils.c:6115
#, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr ""
-#: c/c-array-notation.c:217 c/c-array-notation.c:246 cp/call.c:7780
+#: c/c-array-notation.c:217 c/c-array-notation.c:246 cp/call.c:7795
#: cp/cp-array-notation.c:250
#, gcc-internal-format
msgid "Invalid builtin arguments"
@@ -30917,8 +31016,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c/c-convert.c:98 c/c-typeck.c:2114 c/c-typeck.c:6117 c/c-typeck.c:11678
-#: cp/typeck.c:1956 cp/typeck.c:7580 cp/typeck.c:8307
+#: c/c-convert.c:98 c/c-typeck.c:2116 c/c-typeck.c:6131 c/c-typeck.c:11681
+#: cp/typeck.c:1956 cp/typeck.c:7560 cp/typeck.c:8287
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr ""
@@ -30948,7 +31047,7 @@ msgstr ""
msgid "GCC supports only %u nested scopes"
msgstr ""
-#: c/c-decl.c:1195 cp/decl.c:363
+#: c/c-decl.c:1195 cp/decl.c:358
#, gcc-internal-format
msgid "label %q+D used but not defined"
msgstr ""
@@ -30968,7 +31067,7 @@ msgstr ""
msgid "unused variable %q+D"
msgstr ""
-#: c/c-decl.c:1275 cp/decl.c:642
+#: c/c-decl.c:1275 cp/decl.c:637
#, gcc-internal-format
msgid "variable %qD set but not used"
msgstr ""
@@ -30978,7 +31077,7 @@ msgstr ""
msgid "type of array %q+D completed incompatibly with implicit initialization"
msgstr ""
-#: c/c-decl.c:1559 c/c-decl.c:6362 c/c-decl.c:7231 c/c-decl.c:7970
+#: c/c-decl.c:1559 c/c-decl.c:6391 c/c-decl.c:7263 c/c-decl.c:8002
#, gcc-internal-format
msgid "originally defined here"
msgstr ""
@@ -31047,7 +31146,7 @@ msgstr ""
msgid "built-in function %q+D declared as non-function"
msgstr ""
-#: c/c-decl.c:1838 c/c-decl.c:2008 c/c-decl.c:2787
+#: c/c-decl.c:1838 c/c-decl.c:2008 c/c-decl.c:2816
#, gcc-internal-format
msgid "declaration of %q+D shadows a built-in function"
msgstr ""
@@ -31187,220 +31286,220 @@ msgstr ""
msgid "redundant redeclaration of %q+D"
msgstr ""
-#: c/c-decl.c:2762
+#: c/c-decl.c:2791
#, gcc-internal-format
msgid "declaration of %q+D shadows previous non-variable"
msgstr ""
-#: c/c-decl.c:2768
+#: c/c-decl.c:2797
#, gcc-internal-format
msgid "declaration of %q+D shadows a parameter"
msgstr ""
-#: c/c-decl.c:2780 cp/name-lookup.c:1270
+#: c/c-decl.c:2809 cp/name-lookup.c:1270
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr ""
-#: c/c-decl.c:2792
+#: c/c-decl.c:2821
#, gcc-internal-format
msgid "declaration of %q+D shadows a previous local"
msgstr ""
-#: c/c-decl.c:2797 cp/name-lookup.c:1213 cp/name-lookup.c:1255
+#: c/c-decl.c:2826 cp/name-lookup.c:1213 cp/name-lookup.c:1255
#: cp/name-lookup.c:1273
#, gcc-internal-format
msgid "shadowed declaration is here"
msgstr ""
-#: c/c-decl.c:2923
+#: c/c-decl.c:2952
#, gcc-internal-format
msgid "nested extern declaration of %qD"
msgstr ""
-#: c/c-decl.c:3098 c/c-decl.c:3101
+#: c/c-decl.c:3127 c/c-decl.c:3130
#, gcc-internal-format
msgid "implicit declaration of function %qE"
msgstr ""
-#: c/c-decl.c:3347
+#: c/c-decl.c:3376
#, gcc-internal-format
msgid "incompatible implicit declaration of built-in function %qD"
msgstr ""
-#: c/c-decl.c:3354
+#: c/c-decl.c:3383
#, gcc-internal-format
msgid "include %qs or provide a declaration of %qD"
msgstr ""
-#: c/c-decl.c:3363
+#: c/c-decl.c:3392
#, gcc-internal-format
msgid "incompatible implicit declaration of function %qD"
msgstr ""
-#: c/c-decl.c:3417
+#: c/c-decl.c:3446
#, gcc-internal-format
msgid "%qE undeclared here (not in a function)"
msgstr ""
-#: c/c-decl.c:3423
+#: c/c-decl.c:3452
#, gcc-internal-format
msgid "%qE undeclared (first use in this function)"
msgstr ""
-#: c/c-decl.c:3426
+#: c/c-decl.c:3455
#, gcc-internal-format
msgid ""
"each undeclared identifier is reported only once for each function it "
"appears in"
msgstr ""
-#: c/c-decl.c:3474 cp/decl.c:2916
+#: c/c-decl.c:3503 cp/decl.c:2923
#, gcc-internal-format
msgid "label %qE referenced outside of any function"
msgstr ""
-#: c/c-decl.c:3510
+#: c/c-decl.c:3539
#, gcc-internal-format
msgid "jump into scope of identifier with variably modified type"
msgstr ""
-#: c/c-decl.c:3513
+#: c/c-decl.c:3542
#, gcc-internal-format
msgid "jump skips variable initialization"
msgstr ""
-#: c/c-decl.c:3514 c/c-decl.c:3569 c/c-decl.c:3658
+#: c/c-decl.c:3543 c/c-decl.c:3598 c/c-decl.c:3687
#, gcc-internal-format
msgid "label %qD defined here"
msgstr ""
-#: c/c-decl.c:3515 c/c-decl.c:3786 c/c-typeck.c:7867 cp/class.c:1419
-#: cp/class.c:3254 cp/decl.c:3752 cp/friend.c:328 cp/friend.c:337
-#: cp/parser.c:3146 cp/parser.c:3225 cp/parser.c:3253 cp/parser.c:5992
+#: c/c-decl.c:3544 c/c-decl.c:3815 c/c-typeck.c:7878 cp/class.c:1437
+#: cp/class.c:3302 cp/decl.c:3759 cp/friend.c:340 cp/friend.c:349
+#: cp/parser.c:3146 cp/parser.c:3227 cp/parser.c:3255 cp/parser.c:5994
#, gcc-internal-format
msgid "%qD declared here"
msgstr ""
-#: c/c-decl.c:3568 c/c-decl.c:3657
+#: c/c-decl.c:3597 c/c-decl.c:3686
#, gcc-internal-format
msgid "jump into statement expression"
msgstr ""
-#: c/c-decl.c:3590
+#: c/c-decl.c:3619
#, gcc-internal-format
msgid "duplicate label declaration %qE"
msgstr ""
-#: c/c-decl.c:3688 cp/decl.c:3294
+#: c/c-decl.c:3717 cp/decl.c:3301
#, gcc-internal-format
msgid "duplicate label %qD"
msgstr ""
-#: c/c-decl.c:3719
+#: c/c-decl.c:3748
#, gcc-internal-format
msgid ""
"traditional C lacks a separate namespace for labels, identifier %qE conflicts"
msgstr ""
-#: c/c-decl.c:3784
+#: c/c-decl.c:3813
#, gcc-internal-format
msgid "switch jumps over variable initialization"
msgstr ""
-#: c/c-decl.c:3785 c/c-decl.c:3796
+#: c/c-decl.c:3814 c/c-decl.c:3825
#, gcc-internal-format
msgid "switch starts here"
msgstr ""
-#: c/c-decl.c:3795
+#: c/c-decl.c:3824
#, gcc-internal-format
msgid "switch jumps into statement expression"
msgstr ""
-#: c/c-decl.c:3878
+#: c/c-decl.c:3907
#, gcc-internal-format
msgid "%qE defined as wrong kind of tag"
msgstr ""
-#: c/c-decl.c:4107
+#: c/c-decl.c:4136
#, gcc-internal-format
msgid "unnamed struct/union that defines no instances"
msgstr ""
-#: c/c-decl.c:4117
+#: c/c-decl.c:4146
#, gcc-internal-format
msgid "empty declaration with storage class specifier does not redeclare tag"
msgstr ""
-#: c/c-decl.c:4132
+#: c/c-decl.c:4161
#, gcc-internal-format
msgid "empty declaration with type qualifier does not redeclare tag"
msgstr ""
-#: c/c-decl.c:4143
+#: c/c-decl.c:4172
#, gcc-internal-format
msgid "empty declaration with %<_Alignas%> does not redeclare tag"
msgstr ""
-#: c/c-decl.c:4165 c/c-decl.c:4173
+#: c/c-decl.c:4194 c/c-decl.c:4202
#, gcc-internal-format
msgid "useless type name in empty declaration"
msgstr ""
-#: c/c-decl.c:4181
+#: c/c-decl.c:4210
#, gcc-internal-format
msgid "%<inline%> in empty declaration"
msgstr ""
-#: c/c-decl.c:4187
+#: c/c-decl.c:4216
#, gcc-internal-format
msgid "%<_Noreturn%> in empty declaration"
msgstr ""
-#: c/c-decl.c:4193
+#: c/c-decl.c:4222
#, gcc-internal-format
msgid "%<auto%> in file-scope empty declaration"
msgstr ""
-#: c/c-decl.c:4199
+#: c/c-decl.c:4228
#, gcc-internal-format
msgid "%<register%> in file-scope empty declaration"
msgstr ""
-#: c/c-decl.c:4206
+#: c/c-decl.c:4235
#, gcc-internal-format
msgid "useless storage class specifier in empty declaration"
msgstr ""
-#: c/c-decl.c:4212
+#: c/c-decl.c:4241
#, gcc-internal-format
msgid "useless %qs in empty declaration"
msgstr ""
-#: c/c-decl.c:4225
+#: c/c-decl.c:4254
#, gcc-internal-format
msgid "useless type qualifier in empty declaration"
msgstr ""
-#: c/c-decl.c:4232
+#: c/c-decl.c:4261
#, gcc-internal-format
msgid "useless %<_Alignas%> in empty declaration"
msgstr ""
-#: c/c-decl.c:4239 c/c-parser.c:1702
+#: c/c-decl.c:4268 c/c-parser.c:1700
#, gcc-internal-format
msgid "empty declaration"
msgstr ""
-#: c/c-decl.c:4310
+#: c/c-decl.c:4339
#, gcc-internal-format
msgid ""
"ISO C90 does not support %<static%> or type qualifiers in parameter array "
"declarators"
msgstr ""
-#: c/c-decl.c:4314
+#: c/c-decl.c:4343
#, gcc-internal-format
msgid "ISO C90 does not support %<[*]%> array declarators"
msgstr ""
@@ -31408,33 +31507,33 @@ msgstr ""
#. C99 6.7.5.2p4
#. A function definition isn't function prototype scope C99 6.2.1p4.
#. C99 6.7.5.2p4
-#: c/c-decl.c:4320 c/c-decl.c:6802
+#: c/c-decl.c:4349 c/c-decl.c:6831
#, gcc-internal-format
msgid "%<[*]%> not allowed in other than function prototype scope"
msgstr ""
-#: c/c-decl.c:4407 cp/decl2.c:1463
+#: c/c-decl.c:4436 cp/decl2.c:1463
#, gcc-internal-format
msgid "%q+D in declare target directive does not have mappable type"
msgstr ""
-#: c/c-decl.c:4456
+#: c/c-decl.c:4485
#, gcc-internal-format
msgid "%q+D is usually a function"
msgstr ""
-#: c/c-decl.c:4465
+#: c/c-decl.c:4494
#, gcc-internal-format
msgid "typedef %qD is initialized (use __typeof__ instead)"
msgstr ""
-#: c/c-decl.c:4470
+#: c/c-decl.c:4499
#, gcc-internal-format
msgid "function %qD is initialized like a variable"
msgstr ""
#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
-#: c/c-decl.c:4476
+#: c/c-decl.c:4505
#, gcc-internal-format
msgid "parameter %qD is initialized"
msgstr ""
@@ -31443,257 +31542,257 @@ 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/c-decl.c:4495 c/c-decl.c:4510 c/c-typeck.c:7171
+#: c/c-decl.c:4524 c/c-decl.c:4539 c/c-typeck.c:7185
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr ""
-#: c/c-decl.c:4501
+#: c/c-decl.c:4530
#, gcc-internal-format
msgid "variable %qD has initializer but incomplete type"
msgstr ""
-#: c/c-decl.c:4590
+#: c/c-decl.c:4619
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr ""
-#: c/c-decl.c:4640
+#: c/c-decl.c:4669
#, gcc-internal-format
msgid "uninitialized const member in %qT is invalid in C++"
msgstr ""
-#: c/c-decl.c:4642
+#: c/c-decl.c:4671
#, gcc-internal-format
msgid "%qD should be initialized"
msgstr ""
-#: c/c-decl.c:4718
+#: c/c-decl.c:4747
#, gcc-internal-format
msgid "initializer fails to determine size of %q+D"
msgstr ""
-#: c/c-decl.c:4723
+#: c/c-decl.c:4752
#, gcc-internal-format
msgid "array size missing in %q+D"
msgstr ""
-#: c/c-decl.c:4735
+#: c/c-decl.c:4764
#, gcc-internal-format
msgid "zero or negative size array %q+D"
msgstr ""
-#: c/c-decl.c:4806
+#: c/c-decl.c:4835
#, gcc-internal-format
msgid "storage size of %q+D isn%'t constant"
msgstr ""
-#: c/c-decl.c:4856
+#: c/c-decl.c:4885
#, gcc-internal-format
msgid "ignoring asm-specifier for non-static local variable %q+D"
msgstr ""
-#: c/c-decl.c:4886
+#: c/c-decl.c:4915
#, gcc-internal-format
msgid "cannot put object with volatile field into register"
msgstr ""
-#: c/c-decl.c:4972
+#: c/c-decl.c:5001
#, gcc-internal-format
msgid "uninitialized const %qD is invalid in C++"
msgstr ""
-#: c/c-decl.c:5029
+#: c/c-decl.c:5058
#, gcc-internal-format
msgid "ISO C forbids forward parameter declarations"
msgstr ""
-#: c/c-decl.c:5126
+#: c/c-decl.c:5155
#, gcc-internal-format
msgid "defining a type in a compound literal is invalid in C++"
msgstr ""
-#: c/c-decl.c:5180 c/c-decl.c:5195
+#: c/c-decl.c:5209 c/c-decl.c:5224
#, gcc-internal-format
msgid "bit-field %qs width not an integer constant"
msgstr ""
-#: c/c-decl.c:5190
+#: c/c-decl.c:5219
#, gcc-internal-format
msgid "bit-field %qs width not an integer constant expression"
msgstr ""
-#: c/c-decl.c:5201
+#: c/c-decl.c:5230
#, gcc-internal-format
msgid "negative width in bit-field %qs"
msgstr ""
-#: c/c-decl.c:5206
+#: c/c-decl.c:5235
#, gcc-internal-format
msgid "zero width for bit-field %qs"
msgstr ""
-#: c/c-decl.c:5216
+#: c/c-decl.c:5245
#, gcc-internal-format
msgid "bit-field %qs has invalid type"
msgstr ""
-#: c/c-decl.c:5226
+#: c/c-decl.c:5255
#, gcc-internal-format
msgid "type of bit-field %qs is a GCC extension"
msgstr ""
-#: c/c-decl.c:5232
+#: c/c-decl.c:5261
#, gcc-internal-format
msgid "width of %qs exceeds its type"
msgstr ""
-#: c/c-decl.c:5245
+#: c/c-decl.c:5274
#, gcc-internal-format
msgid "%qs is narrower than values of its type"
msgstr ""
-#: c/c-decl.c:5260
+#: c/c-decl.c:5289
#, gcc-internal-format
msgid "ISO C90 forbids array %qE whose size can%'t be evaluated"
msgstr ""
-#: c/c-decl.c:5263
+#: c/c-decl.c:5292
#, gcc-internal-format
msgid "ISO C90 forbids array whose size can%'t be evaluated"
msgstr ""
-#: c/c-decl.c:5270
+#: c/c-decl.c:5299
#, gcc-internal-format
msgid "ISO C90 forbids variable length array %qE"
msgstr ""
-#: c/c-decl.c:5272
+#: c/c-decl.c:5301
#, gcc-internal-format
msgid "ISO C90 forbids variable length array"
msgstr ""
-#: c/c-decl.c:5451 c/c-decl.c:5814 c/c-decl.c:5824
+#: c/c-decl.c:5480 c/c-decl.c:5843 c/c-decl.c:5853
#, gcc-internal-format
msgid "variably modified %qE at file scope"
msgstr ""
-#: c/c-decl.c:5453
+#: c/c-decl.c:5482
#, gcc-internal-format
msgid "variably modified field at file scope"
msgstr ""
-#: c/c-decl.c:5473
+#: c/c-decl.c:5502
#, gcc-internal-format
msgid "type defaults to %<int%> in declaration of %qE"
msgstr ""
-#: c/c-decl.c:5477
+#: c/c-decl.c:5506
#, gcc-internal-format
msgid "type defaults to %<int%> in type name"
msgstr ""
-#: c/c-decl.c:5509
+#: c/c-decl.c:5538
#, gcc-internal-format
msgid "duplicate %<const%>"
msgstr ""
-#: c/c-decl.c:5511
+#: c/c-decl.c:5540
#, gcc-internal-format
msgid "duplicate %<restrict%>"
msgstr ""
-#: c/c-decl.c:5513
+#: c/c-decl.c:5542
#, gcc-internal-format
msgid "duplicate %<volatile%>"
msgstr ""
-#: c/c-decl.c:5515
+#: c/c-decl.c:5544
#, gcc-internal-format
msgid "duplicate %<_Atomic%>"
msgstr ""
-#: c/c-decl.c:5518
+#: c/c-decl.c:5547
#, gcc-internal-format, gfc-internal-format
msgid "conflicting named address spaces (%s vs %s)"
msgstr ""
-#: c/c-decl.c:5541 c/c-parser.c:2585
+#: c/c-decl.c:5570 c/c-parser.c:2583
#, gcc-internal-format
msgid "%<_Atomic%>-qualified array type"
msgstr ""
-#: c/c-decl.c:5555
+#: c/c-decl.c:5584
#, gcc-internal-format
msgid "function definition declared %<auto%>"
msgstr ""
-#: c/c-decl.c:5557
+#: c/c-decl.c:5586
#, gcc-internal-format
msgid "function definition declared %<register%>"
msgstr ""
-#: c/c-decl.c:5559
+#: c/c-decl.c:5588
#, gcc-internal-format
msgid "function definition declared %<typedef%>"
msgstr ""
-#: c/c-decl.c:5561
+#: c/c-decl.c:5590
#, gcc-internal-format
msgid "function definition declared %qs"
msgstr ""
-#: c/c-decl.c:5579
+#: c/c-decl.c:5608
#, gcc-internal-format
msgid "storage class specified for structure field %qE"
msgstr ""
-#: c/c-decl.c:5582
+#: c/c-decl.c:5611
#, gcc-internal-format
msgid "storage class specified for structure field"
msgstr ""
-#: c/c-decl.c:5586
+#: c/c-decl.c:5615
#, gcc-internal-format
msgid "storage class specified for parameter %qE"
msgstr ""
-#: c/c-decl.c:5589
+#: c/c-decl.c:5618
#, gcc-internal-format
msgid "storage class specified for unnamed parameter"
msgstr ""
-#: c/c-decl.c:5592 cp/decl.c:9888
+#: c/c-decl.c:5621 cp/decl.c:9911
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr ""
-#: c/c-decl.c:5609
+#: c/c-decl.c:5638
#, gcc-internal-format
msgid "%qE initialized and declared %<extern%>"
msgstr ""
-#: c/c-decl.c:5613
+#: c/c-decl.c:5642
#, gcc-internal-format
msgid "%qE has both %<extern%> and initializer"
msgstr ""
-#: c/c-decl.c:5618
+#: c/c-decl.c:5647
#, gcc-internal-format
msgid "file-scope declaration of %qE specifies %<auto%>"
msgstr ""
-#: c/c-decl.c:5622
+#: c/c-decl.c:5651
#, gcc-internal-format
msgid "file-scope declaration of %qE specifies %<register%>"
msgstr ""
-#: c/c-decl.c:5627
+#: c/c-decl.c:5656
#, gcc-internal-format
msgid "nested function %qE declared %<extern%>"
msgstr ""
-#: c/c-decl.c:5630
+#: c/c-decl.c:5659
#, gcc-internal-format
msgid "function-scope %qE implicitly auto and declared %qs"
msgstr ""
@@ -31701,699 +31800,699 @@ 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/c-decl.c:5677 c/c-decl.c:6035
+#: c/c-decl.c:5706 c/c-decl.c:6064
#, gcc-internal-format
msgid "static or type qualifiers in non-parameter array declarator"
msgstr ""
-#: c/c-decl.c:5725
+#: c/c-decl.c:5754
#, gcc-internal-format
msgid "declaration of %qE as array of voids"
msgstr ""
-#: c/c-decl.c:5727
+#: c/c-decl.c:5756
#, gcc-internal-format
msgid "declaration of type name as array of voids"
msgstr ""
-#: c/c-decl.c:5734
+#: c/c-decl.c:5763
#, gcc-internal-format
msgid "declaration of %qE as array of functions"
msgstr ""
-#: c/c-decl.c:5737
+#: c/c-decl.c:5766
#, gcc-internal-format
msgid "declaration of type name as array of functions"
msgstr ""
-#: c/c-decl.c:5745 c/c-decl.c:7725
+#: c/c-decl.c:5774 c/c-decl.c:7757
#, gcc-internal-format
msgid "invalid use of structure with flexible array member"
msgstr ""
-#: c/c-decl.c:5771
+#: c/c-decl.c:5800
#, gcc-internal-format
msgid "size of array %qE has non-integer type"
msgstr ""
-#: c/c-decl.c:5775
+#: c/c-decl.c:5804
#, gcc-internal-format
msgid "size of unnamed array has non-integer type"
msgstr ""
-#: c/c-decl.c:5785
+#: c/c-decl.c:5814
#, gcc-internal-format
msgid "ISO C forbids zero-size array %qE"
msgstr ""
-#: c/c-decl.c:5788
+#: c/c-decl.c:5817
#, gcc-internal-format
msgid "ISO C forbids zero-size array"
msgstr ""
-#: c/c-decl.c:5797
+#: c/c-decl.c:5826
#, gcc-internal-format
msgid "size of array %qE is negative"
msgstr ""
-#: c/c-decl.c:5799
+#: c/c-decl.c:5828
#, gcc-internal-format
msgid "size of unnamed array is negative"
msgstr ""
-#: c/c-decl.c:5923 c/c-decl.c:6532
+#: c/c-decl.c:5952 c/c-decl.c:6561
#, gcc-internal-format
msgid "ISO C90 does not support flexible array members"
msgstr ""
#. C99 6.7.5.2p4
-#: c/c-decl.c:5945
+#: c/c-decl.c:5974
#, gcc-internal-format
msgid "%<[*]%> not in a declaration"
msgstr ""
-#: c/c-decl.c:5958
+#: c/c-decl.c:5987
#, gcc-internal-format
msgid "array type has incomplete element type %qT"
msgstr ""
-#: c/c-decl.c:5964
+#: c/c-decl.c:5993
#, gcc-internal-format
msgid ""
"declaration of %qE as multidimensional array must have bounds for all "
"dimensions except the first"
msgstr ""
-#: c/c-decl.c:5968
+#: c/c-decl.c:5997
#, gcc-internal-format
msgid ""
"declaration of multidimensional array must have bounds for all dimensions "
"except the first"
msgstr ""
-#: c/c-decl.c:6071
+#: c/c-decl.c:6100
#, gcc-internal-format
msgid "%qE declared as function returning a function"
msgstr ""
-#: c/c-decl.c:6074
+#: c/c-decl.c:6103
#, gcc-internal-format
msgid "type name declared as function returning a function"
msgstr ""
-#: c/c-decl.c:6081
+#: c/c-decl.c:6110
#, gcc-internal-format
msgid "%qE declared as function returning an array"
msgstr ""
-#: c/c-decl.c:6084
+#: c/c-decl.c:6113
#, gcc-internal-format
msgid "type name declared as function returning an array"
msgstr ""
-#: c/c-decl.c:6112
+#: c/c-decl.c:6141
#, gcc-internal-format
msgid "function definition has qualified void return type"
msgstr ""
-#: c/c-decl.c:6115 cp/decl.c:10018
+#: c/c-decl.c:6144 cp/decl.c:10041
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr ""
-#: c/c-decl.c:6144 c/c-decl.c:6328 c/c-decl.c:6382 c/c-decl.c:6466
-#: c/c-decl.c:6582 c/c-parser.c:2587
+#: c/c-decl.c:6173 c/c-decl.c:6357 c/c-decl.c:6411 c/c-decl.c:6495
+#: c/c-decl.c:6611 c/c-parser.c:2585
#, gcc-internal-format
msgid "%<_Atomic%>-qualified function type"
msgstr ""
-#: c/c-decl.c:6150 c/c-decl.c:6334 c/c-decl.c:6471 c/c-decl.c:6587
+#: c/c-decl.c:6179 c/c-decl.c:6363 c/c-decl.c:6500 c/c-decl.c:6616
#, gcc-internal-format
msgid "ISO C forbids qualified function types"
msgstr ""
-#: c/c-decl.c:6219
+#: c/c-decl.c:6248
#, gcc-internal-format
msgid "%qs combined with %<auto%> qualifier for %qE"
msgstr ""
-#: c/c-decl.c:6223
+#: c/c-decl.c:6252
#, gcc-internal-format
msgid "%qs combined with %<register%> qualifier for %qE"
msgstr ""
-#: c/c-decl.c:6229
+#: c/c-decl.c:6258
#, gcc-internal-format
msgid "%qs specified for auto variable %qE"
msgstr ""
-#: c/c-decl.c:6245
+#: c/c-decl.c:6274
#, gcc-internal-format
msgid "%qs specified for parameter %qE"
msgstr ""
-#: c/c-decl.c:6248
+#: c/c-decl.c:6277
#, gcc-internal-format
msgid "%qs specified for unnamed parameter"
msgstr ""
-#: c/c-decl.c:6254
+#: c/c-decl.c:6283
#, gcc-internal-format
msgid "%qs specified for structure field %qE"
msgstr ""
-#: c/c-decl.c:6257
+#: c/c-decl.c:6286
#, gcc-internal-format
msgid "%qs specified for structure field"
msgstr ""
-#: c/c-decl.c:6272
+#: c/c-decl.c:6301
#, gcc-internal-format
msgid "bit-field %qE has atomic type"
msgstr ""
-#: c/c-decl.c:6274
+#: c/c-decl.c:6303
#, gcc-internal-format
msgid "bit-field has atomic type"
msgstr ""
-#: c/c-decl.c:6283
+#: c/c-decl.c:6312
#, gcc-internal-format
msgid "alignment specified for typedef %qE"
msgstr ""
-#: c/c-decl.c:6285
+#: c/c-decl.c:6314
#, gcc-internal-format
msgid "alignment specified for %<register%> object %qE"
msgstr ""
-#: c/c-decl.c:6290
+#: c/c-decl.c:6319
#, gcc-internal-format
msgid "alignment specified for parameter %qE"
msgstr ""
-#: c/c-decl.c:6292
+#: c/c-decl.c:6321
#, gcc-internal-format
msgid "alignment specified for unnamed parameter"
msgstr ""
-#: c/c-decl.c:6297
+#: c/c-decl.c:6326
#, gcc-internal-format
msgid "alignment specified for bit-field %qE"
msgstr ""
-#: c/c-decl.c:6299
+#: c/c-decl.c:6328
#, gcc-internal-format
msgid "alignment specified for unnamed bit-field"
msgstr ""
-#: c/c-decl.c:6302
+#: c/c-decl.c:6331
#, gcc-internal-format
msgid "alignment specified for function %qE"
msgstr ""
-#: c/c-decl.c:6309
+#: c/c-decl.c:6338
#, gcc-internal-format
msgid "%<_Alignas%> specifiers cannot reduce alignment of %qE"
msgstr ""
-#: c/c-decl.c:6312
+#: c/c-decl.c:6341
#, gcc-internal-format
msgid "%<_Alignas%> specifiers cannot reduce alignment of unnamed field"
msgstr ""
-#: c/c-decl.c:6343
+#: c/c-decl.c:6372
#, gcc-internal-format
msgid "typedef %q+D declared %<inline%>"
msgstr ""
-#: c/c-decl.c:6345
+#: c/c-decl.c:6374
#, gcc-internal-format
msgid "typedef %q+D declared %<_Noreturn%>"
msgstr ""
-#: c/c-decl.c:6388
+#: c/c-decl.c:6417
#, gcc-internal-format
msgid "ISO C forbids const or volatile function types"
msgstr ""
#. C99 6.7.2.1p8
-#: c/c-decl.c:6399
+#: c/c-decl.c:6428
#, gcc-internal-format
msgid "a member of a structure or union cannot have a variably modified type"
msgstr ""
-#: c/c-decl.c:6416 cp/decl.c:9093
+#: c/c-decl.c:6445 cp/decl.c:9116
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr ""
-#: c/c-decl.c:6456
+#: c/c-decl.c:6485
#, gcc-internal-format
msgid "attributes in parameter array declarator ignored"
msgstr ""
-#: c/c-decl.c:6498
+#: c/c-decl.c:6527
#, gcc-internal-format
msgid "parameter %q+D declared %<inline%>"
msgstr ""
-#: c/c-decl.c:6500
+#: c/c-decl.c:6529
#, gcc-internal-format
msgid "parameter %q+D declared %<_Noreturn%>"
msgstr ""
-#: c/c-decl.c:6513
+#: c/c-decl.c:6542
#, gcc-internal-format
msgid "field %qE declared as a function"
msgstr ""
-#: c/c-decl.c:6520
+#: c/c-decl.c:6549
#, gcc-internal-format
msgid "field %qE has incomplete type"
msgstr ""
-#: c/c-decl.c:6522
+#: c/c-decl.c:6551
#, gcc-internal-format
msgid "unnamed field has incomplete type"
msgstr ""
-#: c/c-decl.c:6553 c/c-decl.c:6564 c/c-decl.c:6567
+#: c/c-decl.c:6582 c/c-decl.c:6593 c/c-decl.c:6596
#, gcc-internal-format
msgid "invalid storage class for function %qE"
msgstr ""
-#: c/c-decl.c:6624
+#: c/c-decl.c:6653
#, gcc-internal-format
msgid "cannot inline function %<main%>"
msgstr ""
-#: c/c-decl.c:6626
+#: c/c-decl.c:6655
#, gcc-internal-format
msgid "%<main%> declared %<_Noreturn%>"
msgstr ""
-#: c/c-decl.c:6637
+#: c/c-decl.c:6666
#, gcc-internal-format
msgid "ISO C99 does not support %<_Noreturn%>"
msgstr ""
-#: c/c-decl.c:6640
+#: c/c-decl.c:6669
#, gcc-internal-format
msgid "ISO C90 does not support %<_Noreturn%>"
msgstr ""
-#: c/c-decl.c:6669
+#: c/c-decl.c:6698
#, gcc-internal-format
msgid "variable previously declared %<static%> redeclared %<extern%>"
msgstr ""
-#: c/c-decl.c:6679
+#: c/c-decl.c:6708
#, gcc-internal-format
msgid "variable %q+D declared %<inline%>"
msgstr ""
-#: c/c-decl.c:6681
+#: c/c-decl.c:6710
#, gcc-internal-format
msgid "variable %q+D declared %<_Noreturn%>"
msgstr ""
-#: c/c-decl.c:6716
+#: c/c-decl.c:6745
#, gcc-internal-format
msgid "non-nested function with variably modified type"
msgstr ""
-#: c/c-decl.c:6718
+#: c/c-decl.c:6747
#, gcc-internal-format
msgid "object with variably modified type must have no linkage"
msgstr ""
-#: c/c-decl.c:6808 c/c-decl.c:8403
+#: c/c-decl.c:6837 c/c-decl.c:8442
#, gcc-internal-format
msgid "function declaration isn%'t a prototype"
msgstr ""
-#: c/c-decl.c:6817
+#: c/c-decl.c:6846
#, gcc-internal-format
msgid "parameter names (without types) in function declaration"
msgstr ""
-#: c/c-decl.c:6855
+#: c/c-decl.c:6884
#, gcc-internal-format
msgid "parameter %u (%q+D) has incomplete type"
msgstr ""
-#: c/c-decl.c:6859
+#: c/c-decl.c:6888
#, gcc-internal-format, gfc-internal-format
msgid "parameter %u has incomplete type"
msgstr ""
-#: c/c-decl.c:6870
+#: c/c-decl.c:6899
#, gcc-internal-format
msgid "parameter %u (%q+D) has void type"
msgstr ""
-#: c/c-decl.c:6874
+#: c/c-decl.c:6903
#, gcc-internal-format, gfc-internal-format
msgid "parameter %u has void type"
msgstr ""
-#: c/c-decl.c:6957
+#: c/c-decl.c:6986
#, gcc-internal-format
msgid "%<void%> as only parameter may not be qualified"
msgstr ""
-#: c/c-decl.c:6961 c/c-decl.c:6997
+#: c/c-decl.c:6990 c/c-decl.c:7026
#, gcc-internal-format
msgid "%<void%> must be the only parameter"
msgstr ""
-#: c/c-decl.c:6991
+#: c/c-decl.c:7020
#, gcc-internal-format
msgid "parameter %q+D has just a forward declaration"
msgstr ""
-#: c/c-decl.c:7037
+#: c/c-decl.c:7066
#, gcc-internal-format
msgid ""
"%<%s %E%> declared inside parameter list will not be visible outside of this "
"definition or declaration"
msgstr ""
-#: c/c-decl.c:7043
+#: c/c-decl.c:7072
#, gcc-internal-format, gfc-internal-format
msgid ""
"anonymous %s declared inside parameter list will not be visible outside of "
"this definition or declaration"
msgstr ""
-#: c/c-decl.c:7142
+#: c/c-decl.c:7174
#, gcc-internal-format
msgid "enum type defined here"
msgstr ""
-#: c/c-decl.c:7148
+#: c/c-decl.c:7180
#, gcc-internal-format
msgid "struct defined here"
msgstr ""
-#: c/c-decl.c:7154
+#: c/c-decl.c:7186
#, gcc-internal-format
msgid "union defined here"
msgstr ""
-#: c/c-decl.c:7227
+#: c/c-decl.c:7259
#, gcc-internal-format
msgid "redefinition of %<union %E%>"
msgstr ""
-#: c/c-decl.c:7229
+#: c/c-decl.c:7261
#, gcc-internal-format
msgid "redefinition of %<struct %E%>"
msgstr ""
-#: c/c-decl.c:7238
+#: c/c-decl.c:7270
#, gcc-internal-format
msgid "nested redefinition of %<union %E%>"
msgstr ""
-#: c/c-decl.c:7240
+#: c/c-decl.c:7272
#, gcc-internal-format
msgid "nested redefinition of %<struct %E%>"
msgstr ""
-#: c/c-decl.c:7273 c/c-decl.c:7989
+#: c/c-decl.c:7305 c/c-decl.c:8021
#, gcc-internal-format
msgid "defining type in %qs expression is invalid in C++"
msgstr ""
-#: c/c-decl.c:7341 cp/decl.c:4573
+#: c/c-decl.c:7373 cp/decl.c:4580
#, gcc-internal-format
msgid "declaration does not declare anything"
msgstr ""
-#: c/c-decl.c:7346
+#: c/c-decl.c:7378
#, gcc-internal-format
msgid "ISO C99 doesn%'t support unnamed structs/unions"
msgstr ""
-#: c/c-decl.c:7349
+#: c/c-decl.c:7381
#, gcc-internal-format
msgid "ISO C90 doesn%'t support unnamed structs/unions"
msgstr ""
-#: c/c-decl.c:7440 c/c-decl.c:7458 c/c-decl.c:7519
+#: c/c-decl.c:7472 c/c-decl.c:7490 c/c-decl.c:7551
#, gcc-internal-format
msgid "duplicate member %q+D"
msgstr ""
-#: c/c-decl.c:7545
+#: c/c-decl.c:7577
#, gcc-internal-format
msgid "empty struct has size 0 in C, size 1 in C++"
msgstr ""
-#: c/c-decl.c:7548
+#: c/c-decl.c:7580
#, gcc-internal-format
msgid "empty union has size 0 in C, size 1 in C++"
msgstr ""
-#: c/c-decl.c:7634
+#: c/c-decl.c:7666
#, gcc-internal-format
msgid "union has no named members"
msgstr ""
-#: c/c-decl.c:7636
+#: c/c-decl.c:7668
#, gcc-internal-format
msgid "union has no members"
msgstr ""
-#: c/c-decl.c:7641
+#: c/c-decl.c:7673
#, gcc-internal-format
msgid "struct has no named members"
msgstr ""
-#: c/c-decl.c:7643
+#: c/c-decl.c:7675
#, gcc-internal-format
msgid "struct has no members"
msgstr ""
-#: c/c-decl.c:7705 cp/decl.c:10967
+#: c/c-decl.c:7737 cp/decl.c:10990
#, gcc-internal-format
msgid "flexible array member in union"
msgstr ""
-#: c/c-decl.c:7711
+#: c/c-decl.c:7743
#, gcc-internal-format
msgid "flexible array member not at end of struct"
msgstr ""
-#: c/c-decl.c:7717
+#: c/c-decl.c:7749
#, gcc-internal-format
msgid "flexible array member in otherwise empty struct"
msgstr ""
-#: c/c-decl.c:7747
+#: c/c-decl.c:7779
#, gcc-internal-format
msgid "type %qT is too large"
msgstr ""
-#: c/c-decl.c:7870
+#: c/c-decl.c:7902
#, gcc-internal-format
msgid "union cannot be made transparent"
msgstr ""
-#: c/c-decl.c:7961
+#: c/c-decl.c:7993
#, gcc-internal-format
msgid "nested redefinition of %<enum %E%>"
msgstr ""
#. This enum is a named one that has been declared already.
-#: c/c-decl.c:7968
+#: c/c-decl.c:8000
#, gcc-internal-format
msgid "redeclaration of %<enum %E%>"
msgstr ""
-#: c/c-decl.c:8045
+#: c/c-decl.c:8079
#, gcc-internal-format
-msgid "enumeration values exceed range of largest integer"
+msgid "specified mode too small for enumeral values"
msgstr ""
-#: c/c-decl.c:8064
+#: c/c-decl.c:8094
#, gcc-internal-format
-msgid "specified mode too small for enumeral values"
+msgid "enumeration values exceed range of largest integer"
msgstr ""
-#: c/c-decl.c:8169 c/c-decl.c:8185
+#: c/c-decl.c:8208 c/c-decl.c:8224
#, gcc-internal-format
msgid "enumerator value for %qE is not an integer constant"
msgstr ""
-#: c/c-decl.c:8180
+#: c/c-decl.c:8219
#, gcc-internal-format
msgid "enumerator value for %qE is not an integer constant expression"
msgstr ""
-#: c/c-decl.c:8204
+#: c/c-decl.c:8243
#, gcc-internal-format
msgid "overflow in enumeration values"
msgstr ""
-#: c/c-decl.c:8212
+#: c/c-decl.c:8251
#, gcc-internal-format
msgid "ISO C restricts enumerator values to range of %<int%>"
msgstr ""
-#: c/c-decl.c:8298 cp/decl.c:4875 cp/decl.c:13770
+#: c/c-decl.c:8337 cp/decl.c:4882 cp/decl.c:13842
#, gcc-internal-format
msgid "inline function %qD given attribute noinline"
msgstr ""
-#: c/c-decl.c:8316
+#: c/c-decl.c:8355
#, gcc-internal-format
msgid "return type is an incomplete type"
msgstr ""
-#: c/c-decl.c:8327
+#: c/c-decl.c:8366
#, gcc-internal-format
msgid "return type defaults to %<int%>"
msgstr ""
-#: c/c-decl.c:8353
+#: c/c-decl.c:8392
#, gcc-internal-format
msgid "%q+D defined as variadic function without prototype"
msgstr ""
-#: c/c-decl.c:8412
+#: c/c-decl.c:8451
#, gcc-internal-format
msgid "no previous prototype for %qD"
msgstr ""
-#: c/c-decl.c:8421
+#: c/c-decl.c:8460
#, gcc-internal-format
msgid "%qD was used with no prototype before its definition"
msgstr ""
-#: c/c-decl.c:8429 cp/decl.c:13913
+#: c/c-decl.c:8468 cp/decl.c:13985
#, gcc-internal-format
msgid "no previous declaration for %qD"
msgstr ""
-#: c/c-decl.c:8439
+#: c/c-decl.c:8478
#, gcc-internal-format
msgid "%qD was used with no declaration before its definition"
msgstr ""
-#: c/c-decl.c:8458
+#: c/c-decl.c:8497
#, gcc-internal-format
msgid "return type of %qD is not %<int%>"
msgstr ""
-#: c/c-decl.c:8460
+#: c/c-decl.c:8499
#, gcc-internal-format
msgid "%<_Atomic%>-qualified return type of %qD"
msgstr ""
-#: c/c-decl.c:8467
+#: c/c-decl.c:8506
#, gcc-internal-format
msgid "%qD is normally a non-static function"
msgstr ""
-#: c/c-decl.c:8504
+#: c/c-decl.c:8543
#, gcc-internal-format
msgid "old-style parameter declarations in prototyped function definition"
msgstr ""
-#: c/c-decl.c:8519
+#: c/c-decl.c:8558
#, gcc-internal-format
msgid "traditional C rejects ISO C style function definitions"
msgstr ""
-#: c/c-decl.c:8535
+#: c/c-decl.c:8574
#, gcc-internal-format
msgid "parameter name omitted"
msgstr ""
-#: c/c-decl.c:8572
+#: c/c-decl.c:8611
#, gcc-internal-format
msgid "old-style function definition"
msgstr ""
-#: c/c-decl.c:8581
+#: c/c-decl.c:8620
#, gcc-internal-format
msgid "parameter name missing from parameter list"
msgstr ""
-#: c/c-decl.c:8596
+#: c/c-decl.c:8635
#, gcc-internal-format
msgid "%qD declared as a non-parameter"
msgstr ""
-#: c/c-decl.c:8602
+#: c/c-decl.c:8641
#, gcc-internal-format
msgid "multiple parameters named %qD"
msgstr ""
-#: c/c-decl.c:8611
+#: c/c-decl.c:8650
#, gcc-internal-format
msgid "parameter %qD declared with void type"
msgstr ""
-#: c/c-decl.c:8640 c/c-decl.c:8645
+#: c/c-decl.c:8679 c/c-decl.c:8684
#, gcc-internal-format
msgid "type of %qD defaults to %<int%>"
msgstr ""
-#: c/c-decl.c:8665
+#: c/c-decl.c:8704
#, gcc-internal-format
msgid "parameter %qD has incomplete type"
msgstr ""
-#: c/c-decl.c:8672
+#: c/c-decl.c:8711
#, gcc-internal-format
msgid "declaration for parameter %qD but no such parameter"
msgstr ""
-#: c/c-decl.c:8722
+#: c/c-decl.c:8761
#, gcc-internal-format
msgid "number of arguments doesn%'t match built-in prototype"
msgstr ""
-#: c/c-decl.c:8733
+#: c/c-decl.c:8772
#, gcc-internal-format
msgid "number of arguments doesn%'t match prototype"
msgstr ""
-#: c/c-decl.c:8736 c/c-decl.c:8783 c/c-decl.c:8797
+#: c/c-decl.c:8775 c/c-decl.c:8822 c/c-decl.c:8836
#, gcc-internal-format
msgid "prototype declaration"
msgstr ""
-#: c/c-decl.c:8775
+#: c/c-decl.c:8814
#, gcc-internal-format
msgid "promoted argument %qD doesn%'t match built-in prototype"
msgstr ""
-#: c/c-decl.c:8780
+#: c/c-decl.c:8819
#, gcc-internal-format
msgid "promoted argument %qD doesn%'t match prototype"
msgstr ""
-#: c/c-decl.c:8790
+#: c/c-decl.c:8829
#, gcc-internal-format
msgid "argument %qD doesn%'t match built-in prototype"
msgstr ""
-#: c/c-decl.c:8795
+#: c/c-decl.c:8834
#, gcc-internal-format
msgid "argument %qD doesn%'t match prototype"
msgstr ""
-#: c/c-decl.c:9052 cp/decl.c:14709
+#: c/c-decl.c:9091 cp/decl.c:14739
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr ""
-#: c/c-decl.c:9072 cp/decl.c:14741
+#: c/c-decl.c:9111 cp/decl.c:14771
#, gcc-internal-format
msgid "parameter %qD set but not used"
msgstr ""
@@ -32401,228 +32500,228 @@ 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/c-decl.c:9166
+#: c/c-decl.c:9205
#, gcc-internal-format
msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
msgstr ""
-#: c/c-decl.c:9171
+#: c/c-decl.c:9210
#, gcc-internal-format
msgid ""
"use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code"
msgstr ""
-#: c/c-decl.c:9206
+#: c/c-decl.c:9245
#, gcc-internal-format
msgid "declaration of static variable %qD in %<for%> loop initial declaration"
msgstr ""
-#: c/c-decl.c:9210
+#: c/c-decl.c:9249
#, gcc-internal-format
msgid ""
"declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
msgstr ""
-#: c/c-decl.c:9217
+#: c/c-decl.c:9256
#, gcc-internal-format
msgid "%<struct %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c/c-decl.c:9222
+#: c/c-decl.c:9261
#, gcc-internal-format
msgid "%<union %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c/c-decl.c:9226
+#: c/c-decl.c:9265
#, gcc-internal-format
msgid "%<enum %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c/c-decl.c:9230
+#: c/c-decl.c:9269
#, gcc-internal-format
msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
msgstr ""
-#: c/c-decl.c:9504
+#: c/c-decl.c:9517
#, gcc-internal-format
msgid "incompatible address space qualifiers %qs and %qs"
msgstr ""
-#: c/c-decl.c:9554 c/c-decl.c:9911 c/c-decl.c:10401
+#: c/c-decl.c:9567 c/c-decl.c:9924 c/c-decl.c:10414
#, gcc-internal-format
msgid "duplicate %qE"
msgstr ""
-#: c/c-decl.c:9580 c/c-decl.c:9923 c/c-decl.c:10244
+#: c/c-decl.c:9593 c/c-decl.c:9936 c/c-decl.c:10257
#, gcc-internal-format
msgid "two or more data types in declaration specifiers"
msgstr ""
-#: c/c-decl.c:9592 cp/parser.c:26637
+#: c/c-decl.c:9605 cp/parser.c:26701
#, gcc-internal-format
msgid "%<long long long%> is too long for GCC"
msgstr ""
-#: c/c-decl.c:9605
+#: c/c-decl.c:9618
#, gcc-internal-format
msgid "ISO C90 does not support %<long long%>"
msgstr ""
-#: c/c-decl.c:9802 c/c-parser.c:7881
+#: c/c-decl.c:9815 c/c-parser.c:7903
#, gcc-internal-format
msgid "ISO C90 does not support complex types"
msgstr ""
-#: c/c-decl.c:9848
+#: c/c-decl.c:9861
#, gcc-internal-format
msgid "ISO C does not support saturating types"
msgstr ""
-#: c/c-decl.c:9966
+#: c/c-decl.c:9979
#, gcc-internal-format
msgid "ISO C does not support %<__int%d%> types"
msgstr ""
-#: c/c-decl.c:9986
+#: c/c-decl.c:9999
#, gcc-internal-format
msgid "%<__int%d%> is not supported on this target"
msgstr ""
-#: c/c-decl.c:10028
+#: c/c-decl.c:10041
#, gcc-internal-format
msgid "ISO C90 does not support boolean types"
msgstr ""
-#: c/c-decl.c:10202
+#: c/c-decl.c:10215
#, gcc-internal-format
msgid "ISO C does not support decimal floating point"
msgstr ""
-#: c/c-decl.c:10225 c/c-decl.c:10491 c/c-parser.c:7386
+#: c/c-decl.c:10238 c/c-decl.c:10504 c/c-parser.c:7406
#, gcc-internal-format
msgid "fixed-point types not supported for this target"
msgstr ""
-#: c/c-decl.c:10227
+#: c/c-decl.c:10240
#, gcc-internal-format
msgid "ISO C does not support fixed-point types"
msgstr ""
-#: c/c-decl.c:10262
+#: c/c-decl.c:10275
#, gcc-internal-format
msgid "C++ lookup of %qD would return a field, not a type"
msgstr ""
-#: c/c-decl.c:10275
+#: c/c-decl.c:10288
#, gcc-internal-format
msgid "%qE fails to be a typedef or built in type"
msgstr ""
-#: c/c-decl.c:10323
+#: c/c-decl.c:10336
#, gcc-internal-format
msgid "%qE is not at beginning of declaration"
msgstr ""
-#: c/c-decl.c:10344
+#: c/c-decl.c:10357
#, gcc-internal-format
msgid "%qE used with %<auto%>"
msgstr ""
-#: c/c-decl.c:10346
+#: c/c-decl.c:10359
#, gcc-internal-format
msgid "%qE used with %<register%>"
msgstr ""
-#: c/c-decl.c:10348
+#: c/c-decl.c:10361
#, gcc-internal-format
msgid "%qE used with %<typedef%>"
msgstr ""
-#: c/c-decl.c:10362 c/c-parser.c:6963
+#: c/c-decl.c:10375 c/c-parser.c:6983
#, gcc-internal-format
msgid "ISO C99 does not support %qE"
msgstr ""
-#: c/c-decl.c:10365 c/c-parser.c:6966
+#: c/c-decl.c:10378 c/c-parser.c:6986
#, gcc-internal-format
msgid "ISO C90 does not support %qE"
msgstr ""
-#: c/c-decl.c:10377
+#: c/c-decl.c:10390
#, gcc-internal-format
msgid "%<__thread%> before %<extern%>"
msgstr ""
-#: c/c-decl.c:10386
+#: c/c-decl.c:10399
#, gcc-internal-format
msgid "%<__thread%> before %<static%>"
msgstr ""
-#: c/c-decl.c:10399
+#: c/c-decl.c:10412
#, gcc-internal-format
msgid "duplicate %<_Thread_local%> or %<__thread%>"
msgstr ""
-#: c/c-decl.c:10407
+#: c/c-decl.c:10420
#, gcc-internal-format
msgid "multiple storage classes in declaration specifiers"
msgstr ""
-#: c/c-decl.c:10415
+#: c/c-decl.c:10428
#, gcc-internal-format
msgid "%qs used with %qE"
msgstr ""
-#: c/c-decl.c:10488
+#: c/c-decl.c:10501
#, gcc-internal-format
msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
msgstr ""
-#: c/c-decl.c:10503
+#: c/c-decl.c:10516
#, gcc-internal-format
msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
msgstr ""
-#: c/c-decl.c:10554 c/c-decl.c:10567 c/c-decl.c:10593
+#: c/c-decl.c:10567 c/c-decl.c:10580 c/c-decl.c:10606
#, gcc-internal-format
msgid "ISO C does not support complex integer types"
msgstr ""
-#: c/c-decl.c:10991 cp/semantics.c:5245
+#: c/c-decl.c:11004 cp/semantics.c:5294
#, gcc-internal-format
msgid ""
"%<#pragma omp declare reduction%> combiner refers to variable %qD which is "
"not %<omp_out%> nor %<omp_in%>"
msgstr ""
-#: c/c-decl.c:10995 cp/semantics.c:5249
+#: c/c-decl.c:11008 cp/semantics.c:5298
#, gcc-internal-format
msgid ""
"%<#pragma omp declare reduction%> initializer refers to variable %qD which "
"is not %<omp_priv%> nor %<omp_orig%>"
msgstr ""
-#: c/c-fold.c:319 c/c-typeck.c:11001 cp/typeck.c:4425
+#: c/c-fold.c:319 c/c-typeck.c:11014 cp/typeck.c:4465
#, gcc-internal-format
msgid "left shift of negative value"
msgstr ""
-#: c/c-fold.c:331 c/c-typeck.c:11010 cp/typeck.c:4433
+#: c/c-fold.c:331 c/c-typeck.c:11023 cp/typeck.c:4473
#, gcc-internal-format
msgid "left shift count is negative"
msgstr ""
-#: c/c-fold.c:332 c/c-typeck.c:10949 cp/typeck.c:4379
+#: c/c-fold.c:332 c/c-typeck.c:10962 cp/typeck.c:4419
#, gcc-internal-format
msgid "right shift count is negative"
msgstr ""
-#: c/c-fold.c:338 c/c-typeck.c:11017 cp/typeck.c:4441
+#: c/c-fold.c:338 c/c-typeck.c:11030 cp/typeck.c:4481
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr ""
-#: c/c-fold.c:339 c/c-typeck.c:10961 cp/typeck.c:4387
+#: c/c-fold.c:339 c/c-typeck.c:10974 cp/typeck.c:4427
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr ""
@@ -32637,78 +32736,78 @@ msgstr ""
msgid "version control conflict marker in file"
msgstr ""
-#: c/c-parser.c:1086 cp/parser.c:26844
+#: c/c-parser.c:1086 cp/parser.c:26908
#, gcc-internal-format
msgid "expected end of line"
msgstr ""
-#: c/c-parser.c:1419
+#: c/c-parser.c:1420
#, gcc-internal-format
msgid "ISO C forbids an empty translation unit"
msgstr ""
-#: c/c-parser.c:1526 c/c-parser.c:8992
+#: c/c-parser.c:1524 c/c-parser.c:9014
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr ""
-#: c/c-parser.c:1659 c/c-parser.c:2411 c/c-parser.c:3810
+#: c/c-parser.c:1657 c/c-parser.c:2409 c/c-parser.c:3808
#, gcc-internal-format
msgid "unknown type name %qE"
msgstr ""
-#: c/c-parser.c:1663
+#: c/c-parser.c:1661
#, gcc-internal-format
msgid "use %<struct%> keyword to refer to the type"
msgstr ""
-#: c/c-parser.c:1665
+#: c/c-parser.c:1663
#, gcc-internal-format
msgid "use %<union%> keyword to refer to the type"
msgstr ""
-#: c/c-parser.c:1667
+#: c/c-parser.c:1665
#, gcc-internal-format
msgid "use %<enum%> keyword to refer to the type"
msgstr ""
-#: c/c-parser.c:1687 c/c-parser.c:10141 c/c-parser.c:15125 c/c-parser.c:16010
-#: cp/parser.c:33903 cp/parser.c:34795 cp/parser.c:37305
+#: c/c-parser.c:1685 c/c-parser.c:10163 c/c-parser.c:15147 c/c-parser.c:16032
+#: cp/parser.c:33953 cp/parser.c:34845 cp/parser.c:37356
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr ""
-#: c/c-parser.c:1696
+#: c/c-parser.c:1694
#, gcc-internal-format
msgid "%<__auto_type%> in empty declaration"
msgstr ""
-#: c/c-parser.c:1718 c/c-parser.c:3089
+#: c/c-parser.c:1716 c/c-parser.c:3087
#, gcc-internal-format
msgid "expected %<;%>, identifier or %<(%>"
msgstr ""
-#: c/c-parser.c:1736 cp/parser.c:28493 cp/parser.c:28567
+#: c/c-parser.c:1734 cp/parser.c:28557 cp/parser.c:28631
#, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr ""
-#: c/c-parser.c:1771
+#: c/c-parser.c:1769
#, gcc-internal-format
msgid "prefix attributes are ignored for implementations"
msgstr ""
-#: c/c-parser.c:1792
+#: c/c-parser.c:1790
#, gcc-internal-format
msgid "unexpected attribute"
msgstr ""
-#: c/c-parser.c:1834
+#: c/c-parser.c:1832
#, gcc-internal-format
msgid "%<__auto_type%> requires a plain identifier as declarator"
msgstr ""
-#: c/c-parser.c:1851
+#: c/c-parser.c:1849
#, gcc-internal-format
msgid "data definition has no type or storage class"
msgstr ""
@@ -32716,28 +32815,28 @@ msgstr ""
#. This means there is an attribute specifier after
#. the declarator in a function definition. Provide
#. some more information for the user.
-#: c/c-parser.c:1866
+#: c/c-parser.c:1864
#, gcc-internal-format
msgid ""
"attributes should be specified before the declarator in a function definition"
msgstr ""
-#: c/c-parser.c:1886
+#: c/c-parser.c:1884
#, gcc-internal-format
msgid "%<__auto_type%> used with a bit-field initializer"
msgstr ""
-#: c/c-parser.c:1957 c/c-parser.c:2045
+#: c/c-parser.c:1955 c/c-parser.c:2043
#, gcc-internal-format
msgid "%<__auto_type%> requires an initialized data declaration"
msgstr ""
-#: c/c-parser.c:2008
+#: c/c-parser.c:2006
#, gcc-internal-format
msgid "%<__auto_type%> may only be used with a single declarator"
msgstr ""
-#: c/c-parser.c:2037 cp/parser.c:12425
+#: c/c-parser.c:2035 cp/parser.c:12445
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -32745,263 +32844,263 @@ 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/c-parser.c:2051 c/c-parser.c:2067
+#: c/c-parser.c:2049 c/c-parser.c:2065
#, gcc-internal-format
msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
msgstr ""
-#: c/c-parser.c:2059
+#: c/c-parser.c:2057
#, gcc-internal-format
msgid "ISO C forbids nested functions"
msgstr ""
-#: c/c-parser.c:2182
+#: c/c-parser.c:2180
#, gcc-internal-format
msgid "ISO C99 does not support %<_Static_assert%>"
msgstr ""
-#: c/c-parser.c:2185
+#: c/c-parser.c:2183
#, gcc-internal-format
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr ""
-#: c/c-parser.c:2210 c/c-parser.c:3878 c/c-parser.c:10199 cp/parser.c:37010
+#: c/c-parser.c:2208 c/c-parser.c:3876 c/c-parser.c:10221 cp/parser.c:37061
#, gcc-internal-format
msgid "expected string literal"
msgstr ""
-#: c/c-parser.c:2218
+#: c/c-parser.c:2216
#, gcc-internal-format
msgid "expression in static assertion is not an integer"
msgstr ""
-#: c/c-parser.c:2227
+#: c/c-parser.c:2225
#, gcc-internal-format
msgid "expression in static assertion is not an integer constant expression"
msgstr ""
-#: c/c-parser.c:2232
+#: c/c-parser.c:2230
#, gcc-internal-format
msgid "expression in static assertion is not constant"
msgstr ""
-#: c/c-parser.c:2237
+#: c/c-parser.c:2235
#, gcc-internal-format
msgid "static assertion failed: %E"
msgstr ""
-#: c/c-parser.c:2552
+#: c/c-parser.c:2550
#, gcc-internal-format
msgid "%<_Atomic%> in Objective-C"
msgstr ""
-#: c/c-parser.c:2556
+#: c/c-parser.c:2554
#, gcc-internal-format
msgid "%<_Atomic%> with OpenMP"
msgstr ""
-#: c/c-parser.c:2559
+#: c/c-parser.c:2557
#, gcc-internal-format
msgid "ISO C99 does not support the %<_Atomic%> qualifier"
msgstr ""
-#: c/c-parser.c:2562
+#: c/c-parser.c:2560
#, gcc-internal-format
msgid "ISO C90 does not support the %<_Atomic%> qualifier"
msgstr ""
-#: c/c-parser.c:2589
+#: c/c-parser.c:2587
#, gcc-internal-format
msgid "%<_Atomic%> applied to a qualified type"
msgstr ""
-#: c/c-parser.c:2704
+#: c/c-parser.c:2702
#, gcc-internal-format
msgid "empty enum is invalid"
msgstr ""
-#: c/c-parser.c:2708 c/c-parser.c:3650 c/c-parser.c:4434 c/c-parser.c:4730
-#: c/c-parser.c:6071 c/c-parser.c:6158 c/c-parser.c:6833 c/c-parser.c:7444
-#: c/c-parser.c:7665 c/c-parser.c:7690 c/c-parser.c:7958 c/c-parser.c:8265
-#: c/c-parser.c:8297 c/c-parser.c:8576 c/c-parser.c:8625 c/c-parser.c:8785
-#: c/c-parser.c:8815 c/c-parser.c:8823 c/c-parser.c:8852 c/c-parser.c:8865
-#: c/c-parser.c:9170 c/c-parser.c:9294 c/c-parser.c:9734 c/c-parser.c:9769
-#: c/c-parser.c:9822 c/c-parser.c:9875 c/c-parser.c:9891 c/c-parser.c:9937
-#: c/c-parser.c:10513 c/c-parser.c:10552 c/c-parser.c:12501 c/c-parser.c:12735
-#: c/c-parser.c:14532 c/c-parser.c:17283 c/c-parser.c:17611 cp/parser.c:26847
-#: cp/parser.c:29336 cp/parser.c:29366 cp/parser.c:29436 cp/parser.c:31561
-#: cp/parser.c:36724 cp/parser.c:37449
+#: c/c-parser.c:2706 c/c-parser.c:3648 c/c-parser.c:4436 c/c-parser.c:4733
+#: c/c-parser.c:6091 c/c-parser.c:6178 c/c-parser.c:6853 c/c-parser.c:7464
+#: c/c-parser.c:7685 c/c-parser.c:7710 c/c-parser.c:7980 c/c-parser.c:8287
+#: c/c-parser.c:8319 c/c-parser.c:8598 c/c-parser.c:8647 c/c-parser.c:8807
+#: c/c-parser.c:8837 c/c-parser.c:8845 c/c-parser.c:8874 c/c-parser.c:8887
+#: c/c-parser.c:9192 c/c-parser.c:9316 c/c-parser.c:9756 c/c-parser.c:9791
+#: c/c-parser.c:9844 c/c-parser.c:9897 c/c-parser.c:9913 c/c-parser.c:9959
+#: c/c-parser.c:10535 c/c-parser.c:10574 c/c-parser.c:12523 c/c-parser.c:12757
+#: c/c-parser.c:14554 c/c-parser.c:17305 c/c-parser.c:17633 cp/parser.c:26911
+#: cp/parser.c:29400 cp/parser.c:29430 cp/parser.c:29500 cp/parser.c:31611
+#: cp/parser.c:36775 cp/parser.c:37500
#, gcc-internal-format
msgid "expected identifier"
msgstr ""
-#: c/c-parser.c:2746 cp/parser.c:17326
+#: c/c-parser.c:2744 cp/parser.c:17356
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr ""
-#: c/c-parser.c:2752
+#: c/c-parser.c:2750
#, gcc-internal-format
msgid "expected %<,%> or %<}%>"
msgstr ""
-#: c/c-parser.c:2783
+#: c/c-parser.c:2781
#, gcc-internal-format
msgid "ISO C forbids forward references to %<enum%> types"
msgstr ""
-#: c/c-parser.c:2899
+#: c/c-parser.c:2897
#, gcc-internal-format
msgid "expected class name"
msgstr ""
-#: c/c-parser.c:2918
+#: c/c-parser.c:2916
#, gcc-internal-format
msgid "extra semicolon in struct or union specified"
msgstr ""
-#: c/c-parser.c:2947
+#: c/c-parser.c:2945
#, gcc-internal-format
msgid "no semicolon at end of struct or union"
msgstr ""
-#: c/c-parser.c:3051 c/c-parser.c:4244
+#: c/c-parser.c:3049 c/c-parser.c:4242
#, gcc-internal-format
msgid "expected specifier-qualifier-list"
msgstr ""
-#: c/c-parser.c:3062
+#: c/c-parser.c:3060
#, gcc-internal-format
msgid "ISO C forbids member declarations with no members"
msgstr ""
-#: c/c-parser.c:3152
+#: c/c-parser.c:3150
#, gcc-internal-format
msgid "expected %<,%>, %<;%> or %<}%>"
msgstr ""
-#: c/c-parser.c:3159
+#: c/c-parser.c:3157
#, gcc-internal-format
msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
msgstr ""
-#: c/c-parser.c:3212
+#: c/c-parser.c:3210
#, gcc-internal-format
msgid "%<typeof%> applied to a bit-field"
msgstr ""
-#: c/c-parser.c:3249
+#: c/c-parser.c:3247
#, gcc-internal-format
msgid "ISO C99 does not support %<_Alignas%>"
msgstr ""
-#: c/c-parser.c:3252
+#: c/c-parser.c:3250
#, gcc-internal-format
msgid "ISO C90 does not support %<_Alignas%>"
msgstr ""
-#: c/c-parser.c:3487
+#: c/c-parser.c:3485
#, gcc-internal-format
msgid "expected identifier or %<(%>"
msgstr ""
-#: c/c-parser.c:3548 c/c-parser.c:3577
+#: c/c-parser.c:3546 c/c-parser.c:3575
#, gcc-internal-format
msgid "array notations cannot be used in declaration"
msgstr ""
-#: c/c-parser.c:3716
+#: c/c-parser.c:3714
#, gcc-internal-format
msgid "ISO C requires a named argument before %<...%>"
msgstr ""
-#: c/c-parser.c:3817
+#: c/c-parser.c:3815
#, gcc-internal-format
msgid "expected declaration specifiers or %<...%>"
msgstr ""
-#: c/c-parser.c:3872
+#: c/c-parser.c:3870
#, gcc-internal-format
msgid "wide string literal in %<asm%>"
msgstr ""
-#: c/c-parser.c:4344
+#: c/c-parser.c:4346
#, gcc-internal-format
msgid "ISO C forbids empty initializer braces"
msgstr ""
-#: c/c-parser.c:4399
+#: c/c-parser.c:4401
#, gcc-internal-format
msgid "obsolete use of designated initializer with %<:%>"
msgstr ""
-#: c/c-parser.c:4543
+#: c/c-parser.c:4545
#, gcc-internal-format
msgid "ISO C forbids specifying range of elements to initialize"
msgstr ""
-#: c/c-parser.c:4555
+#: c/c-parser.c:4557
#, gcc-internal-format
msgid "ISO C90 forbids specifying subobject to initialize"
msgstr ""
-#: c/c-parser.c:4563
+#: c/c-parser.c:4565
#, gcc-internal-format
msgid "obsolete use of designated initializer without %<=%>"
msgstr ""
-#: c/c-parser.c:4745
+#: c/c-parser.c:4748
#, gcc-internal-format
msgid "ISO C forbids label declarations"
msgstr ""
-#: c/c-parser.c:4751 c/c-parser.c:4829
+#: c/c-parser.c:4754 c/c-parser.c:4832
#, gcc-internal-format
msgid "expected declaration or statement"
msgstr ""
-#: c/c-parser.c:4781 c/c-parser.c:4809
+#: c/c-parser.c:4784 c/c-parser.c:4812
#, gcc-internal-format
msgid "ISO C90 forbids mixed declarations and code"
msgstr ""
-#: c/c-parser.c:4837
+#: c/c-parser.c:4840
#, gcc-internal-format
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c/c-parser.c:4842 cp/parser.c:10795
+#: c/c-parser.c:4845 cp/parser.c:10801
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
-#: c/c-parser.c:4859
+#: c/c-parser.c:4862
#, gcc-internal-format
msgid "label at end of compound statement"
msgstr ""
-#: c/c-parser.c:4916
+#: c/c-parser.c:4919
#, gcc-internal-format
msgid "expected %<:%> or %<...%>"
msgstr ""
-#: c/c-parser.c:4947
+#: c/c-parser.c:4950
#, gcc-internal-format
msgid ""
"a label can only be part of a statement and a declaration is not a statement"
msgstr ""
-#: c/c-parser.c:5141 cp/parser.c:10396
+#: c/c-parser.c:5144 cp/parser.c:10402
#, gcc-internal-format
msgid "-fcilkplus must be enabled to use %<_Cilk_for%>"
msgstr ""
-#: c/c-parser.c:5151 cp/parser.c:10422
+#: c/c-parser.c:5154 cp/parser.c:10428
#, gcc-internal-format
msgid "-fcilkplus must be enabled to use %<_Cilk_sync%>"
msgstr ""
-#: c/c-parser.c:5178
+#: c/c-parser.c:5181
#, gcc-internal-format
msgid "expected identifier or %<*%>"
msgstr ""
@@ -33010,1124 +33109,1124 @@ 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/c-parser.c:5261 cp/parser.c:10500
+#: c/c-parser.c:5264 cp/parser.c:10506
#, gcc-internal-format
msgid "expected statement"
msgstr ""
-#: c/c-parser.c:5358 cp/parser.c:11887
+#: c/c-parser.c:5361 cp/parser.c:11907
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr ""
-#: c/c-parser.c:5392 cp/parser.c:11890
+#: c/c-parser.c:5395 cp/parser.c:11910
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr ""
-#: c/c-parser.c:5434
+#: c/c-parser.c:5437
#, gcc-internal-format
msgid "if statement cannot contain %<Cilk_spawn%>"
msgstr ""
-#: c/c-parser.c:5608
+#: c/c-parser.c:5611
#, gcc-internal-format
msgid "suggest braces around empty body in %<do%> statement"
msgstr ""
-#: c/c-parser.c:5734 c/c-parser.c:5764
+#: c/c-parser.c:5737 c/c-parser.c:5767
#, gcc-internal-format
msgid "multiple iterating variables in fast enumeration"
msgstr ""
-#: c/c-parser.c:5788
+#: c/c-parser.c:5791
#, gcc-internal-format
msgid "invalid iterating variable in fast enumeration"
msgstr ""
-#: c/c-parser.c:5809 cp/parser.c:11150
+#: c/c-parser.c:5812 cp/parser.c:11156
#, gcc-internal-format
msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
msgstr ""
-#: c/c-parser.c:5841
+#: c/c-parser.c:5844
#, gcc-internal-format
msgid "missing collection in fast enumeration"
msgstr ""
-#: c/c-parser.c:5941
+#: c/c-parser.c:5961
#, gcc-internal-format
msgid "%E qualifier ignored on asm"
msgstr ""
-#: c/c-parser.c:6296
+#: c/c-parser.c:6316
#, gcc-internal-format
msgid "ISO C forbids omitting the middle term of a ?: expression"
msgstr ""
-#: c/c-parser.c:6796
+#: c/c-parser.c:6816
#, gcc-internal-format
msgid "traditional C rejects the unary plus operator"
msgstr ""
-#: c/c-parser.c:6937
+#: c/c-parser.c:6957
#, gcc-internal-format
msgid "%<sizeof%> applied to a bit-field"
msgstr ""
-#: c/c-parser.c:7023
+#: c/c-parser.c:7043
#, gcc-internal-format
msgid "ISO C does not allow %<%E (expression)%>"
msgstr ""
-#: c/c-parser.c:7054
+#: c/c-parser.c:7074
#, gcc-internal-format
msgid "cannot take address of %qs"
msgstr ""
-#: c/c-parser.c:7138
+#: c/c-parser.c:7158
#, gcc-internal-format
msgid "ISO C99 does not support %<_Generic%>"
msgstr ""
-#: c/c-parser.c:7141
+#: c/c-parser.c:7161
#, gcc-internal-format
msgid "ISO C90 does not support %<_Generic%>"
msgstr ""
-#: c/c-parser.c:7207
+#: c/c-parser.c:7227
#, gcc-internal-format
msgid "%<_Generic%> association has function type"
msgstr ""
-#: c/c-parser.c:7210
+#: c/c-parser.c:7230
#, gcc-internal-format
msgid "%<_Generic%> association has incomplete type"
msgstr ""
-#: c/c-parser.c:7214
+#: c/c-parser.c:7234
#, gcc-internal-format
msgid "%<_Generic%> association has variable length type"
msgstr ""
-#: c/c-parser.c:7238
+#: c/c-parser.c:7258
#, gcc-internal-format
msgid "duplicate %<default%> case in %<_Generic%>"
msgstr ""
-#: c/c-parser.c:7239
+#: c/c-parser.c:7259
#, gcc-internal-format
msgid "original %<default%> is here"
msgstr ""
-#: c/c-parser.c:7247
+#: c/c-parser.c:7267
#, gcc-internal-format
msgid "%<_Generic%> specifies two compatible types"
msgstr ""
-#: c/c-parser.c:7248
+#: c/c-parser.c:7268
#, gcc-internal-format
msgid "compatible type is here"
msgstr ""
-#: c/c-parser.c:7271
+#: c/c-parser.c:7291
#, gcc-internal-format
msgid "%<_Generic> selector matches multiple associations"
msgstr ""
-#: c/c-parser.c:7273
+#: c/c-parser.c:7293
#, gcc-internal-format
msgid "other match is here"
msgstr ""
-#: c/c-parser.c:7294
+#: c/c-parser.c:7314
#, gcc-internal-format
msgid ""
"%<_Generic%> selector of type %qT is not compatible with any association"
msgstr ""
-#: c/c-parser.c:7458 c/c-parser.c:8026 c/c-parser.c:8047
+#: c/c-parser.c:7478 c/c-parser.c:8048 c/c-parser.c:8069
#, gcc-internal-format
msgid "expected expression"
msgstr ""
-#: c/c-parser.c:7476
+#: c/c-parser.c:7496
#, gcc-internal-format
msgid "braced-group within expression allowed only inside a function"
msgstr ""
-#: c/c-parser.c:7490
+#: c/c-parser.c:7510
#, gcc-internal-format
msgid "ISO C forbids braced-groups within expressions"
msgstr ""
-#: c/c-parser.c:7538
+#: c/c-parser.c:7558
#, gcc-internal-format
msgid "ISO C does not support %<__FUNCTION__%> predefined identifier"
msgstr ""
-#: c/c-parser.c:7547
+#: c/c-parser.c:7567
#, gcc-internal-format
msgid "ISO C does not support %<__PRETTY_FUNCTION__%> predefined identifier"
msgstr ""
-#: c/c-parser.c:7556
+#: c/c-parser.c:7576
#, gcc-internal-format
msgid "ISO C90 does not support %<__func__%> predefined identifier"
msgstr ""
-#: c/c-parser.c:7717
+#: c/c-parser.c:7737
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_choose_expr%>"
msgstr ""
-#: c/c-parser.c:7733
+#: c/c-parser.c:7753
#, gcc-internal-format
msgid "first argument to %<__builtin_choose_expr%> not a constant"
msgstr ""
-#: c/c-parser.c:7802
+#: c/c-parser.c:7824
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>"
msgstr ""
-#: c/c-parser.c:7815
+#: c/c-parser.c:7837
#, gcc-internal-format
msgid ""
"first argument to %<__builtin_call_with_static_chain%> must be a call "
"expression"
msgstr ""
-#: c/c-parser.c:7819
+#: c/c-parser.c:7841
#, gcc-internal-format
msgid ""
"second argument to %<__builtin_call_with_static_chain%> must be a pointer "
"type"
msgstr ""
-#: c/c-parser.c:7845
+#: c/c-parser.c:7867
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_complex%>"
msgstr ""
-#: c/c-parser.c:7867
+#: c/c-parser.c:7889
#, gcc-internal-format
msgid "%<__builtin_complex%> operand not of real binary floating-point type"
msgstr ""
-#: c/c-parser.c:7876
+#: c/c-parser.c:7898
#, gcc-internal-format
msgid "%<__builtin_complex%> operands of different types"
msgstr ""
-#: c/c-parser.c:7924 cp/parser.c:6588
+#: c/c-parser.c:7946 cp/parser.c:6590
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr ""
-#: c/c-parser.c:8005 cp/parser.c:6533
+#: c/c-parser.c:8027 cp/parser.c:6535
#, gcc-internal-format
msgid "-fcilkplus must be enabled to use %<_Cilk_spawn%>"
msgstr ""
-#: c/c-parser.c:8012 cp/parser.c:6539
+#: c/c-parser.c:8034 cp/parser.c:6541
#, gcc-internal-format
msgid "consecutive %<_Cilk_spawn%> keywords are not permitted"
msgstr ""
-#: c/c-parser.c:8083
+#: c/c-parser.c:8105
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c/c-parser.c:8094
+#: c/c-parser.c:8116
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c/c-parser.c:8098
+#: c/c-parser.c:8120
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr ""
-#: c/c-parser.c:8233 cp/parser.c:6841
+#: c/c-parser.c:8255 cp/parser.c:6843
#, gcc-internal-format
msgid ""
"%<memset%> used with constant zero length parameter; this could be due to "
"transposed parameters"
msgstr ""
-#: c/c-parser.c:8596
+#: c/c-parser.c:8618
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr ""
-#: c/c-parser.c:8692
+#: c/c-parser.c:8714
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c/c-parser.c:8940
+#: c/c-parser.c:8962
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr ""
-#: c/c-parser.c:9072
+#: c/c-parser.c:9094
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c/c-parser.c:9092
+#: c/c-parser.c:9114
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c/c-parser.c:9213
+#: c/c-parser.c:9235
#, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr ""
-#: c/c-parser.c:9648
+#: c/c-parser.c:9670
#, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr ""
-#: c/c-parser.c:9738 c/c-parser.c:9795 cp/parser.c:29396
+#: c/c-parser.c:9760 c/c-parser.c:9817 cp/parser.c:29460
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c/c-parser.c:9759 cp/parser.c:29356
+#: c/c-parser.c:9781 cp/parser.c:29420
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr ""
-#: c/c-parser.c:9762 cp/parser.c:29359
+#: c/c-parser.c:9784 cp/parser.c:29423
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr ""
-#: c/c-parser.c:9776 cp/parser.c:29374
+#: c/c-parser.c:9798 cp/parser.c:29438
#, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr ""
-#: c/c-parser.c:9781 cp/parser.c:29380
+#: c/c-parser.c:9803 cp/parser.c:29444
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c/c-parser.c:9788 cp/parser.c:29388
+#: c/c-parser.c:9810 cp/parser.c:29452
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr ""
-#: c/c-parser.c:9990
+#: c/c-parser.c:10012
#, gcc-internal-format
msgid "%<#pragma acc update%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:10001 cp/parser.c:37088
+#: c/c-parser.c:10023 cp/parser.c:37139
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:10012 cp/parser.c:37103
+#: c/c-parser.c:10034 cp/parser.c:37154
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:10023 cp/parser.c:37119
+#: c/c-parser.c:10045 cp/parser.c:37170
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:10034 cp/parser.c:37135
+#: c/c-parser.c:10056 cp/parser.c:37186
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:10045 cp/parser.c:37151
+#: c/c-parser.c:10067 cp/parser.c:37202
#, gcc-internal-format
msgid "%<#pragma omp cancel%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:10056 cp/parser.c:37167
+#: c/c-parser.c:10078 cp/parser.c:37218
#, gcc-internal-format
msgid ""
"%<#pragma omp cancellation point%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:10076 cp/parser.c:37240
+#: c/c-parser.c:10098 cp/parser.c:37291
#, gcc-internal-format
msgid ""
"%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
"construct"
msgstr ""
-#: c/c-parser.c:10095 cp/parser.c:37259
+#: c/c-parser.c:10117 cp/parser.c:37310
#, gcc-internal-format
msgid "for, while or do statement expected"
msgstr ""
-#: c/c-parser.c:10107 cp/parser.c:37078
+#: c/c-parser.c:10129 cp/parser.c:37129
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: c/c-parser.c:10120
+#: c/c-parser.c:10142
#, gcc-internal-format
msgid "%<#pragma grainsize%> ignored because -fcilkplus is not enabled"
msgstr ""
-#: c/c-parser.c:10128
+#: c/c-parser.c:10150
#, gcc-internal-format
msgid "%<#pragma grainsize%> must be inside a function"
msgstr ""
-#: c/c-parser.c:10439 cp/parser.c:29786
+#: c/c-parser.c:10461 cp/parser.c:29850
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr ""
-#: c/c-parser.c:10460 cp/parser.c:30345
+#: c/c-parser.c:10482 cp/parser.c:30395
#, gcc-internal-format
msgid "expected integer expression before ')'"
msgstr ""
-#: c/c-parser.c:10475
+#: c/c-parser.c:10497
#, gcc-internal-format
msgid "expression must be integral"
msgstr ""
-#: c/c-parser.c:10604 c/c-parser.c:10612 cp/parser.c:29914 cp/parser.c:29922
+#: c/c-parser.c:10626 c/c-parser.c:10634 cp/parser.c:29978 cp/parser.c:29986
#, gcc-internal-format
msgid "%qD is not a constant"
msgstr ""
-#: c/c-parser.c:10764 c/c-parser.c:17144 cp/parser.c:30091
+#: c/c-parser.c:10786 c/c-parser.c:17166
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr ""
-#: c/c-parser.c:10768 cp/parser.c:30095
+#: c/c-parser.c:10790 cp/semantics.c:6709
#, gcc-internal-format
msgid "%qD is not a pointer variable"
msgstr ""
-#: c/c-parser.c:10808 cp/parser.c:30423
+#: c/c-parser.c:10830 cp/parser.c:30473
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr ""
-#: c/c-parser.c:10878 cp/parser.c:30479
+#: c/c-parser.c:10900 cp/parser.c:30529
#, gcc-internal-format
msgid "expected %<none%>"
msgstr ""
-#: c/c-parser.c:10880 cp/parser.c:30481
+#: c/c-parser.c:10902 cp/parser.c:30531
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c/c-parser.c:10980 cp/parser.c:30581
+#: c/c-parser.c:11002 cp/parser.c:30631
#, gcc-internal-format
msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
msgstr ""
-#: c/c-parser.c:11000 c/c-parser.c:15839 c/c-parser.c:15924 cp/parser.c:30599
-#: cp/parser.c:34579 cp/parser.c:34667
+#: c/c-parser.c:11022 c/c-parser.c:15861 c/c-parser.c:15946 cp/parser.c:30649
+#: cp/parser.c:34629 cp/parser.c:34717
#, gcc-internal-format
msgid "expected %<data%>"
msgstr ""
-#: c/c-parser.c:11047 cp/parser.c:30652
+#: c/c-parser.c:11069 cp/parser.c:30702
#, gcc-internal-format
msgid "too many %<if%> clauses with %qs modifier"
msgstr ""
-#: c/c-parser.c:11054 cp/parser.c:30659
+#: c/c-parser.c:11076 cp/parser.c:30709
#, gcc-internal-format
msgid "too many %<if%> clauses"
msgstr ""
-#: c/c-parser.c:11056 cp/parser.c:30661
+#: c/c-parser.c:11078 cp/parser.c:30711
#, gcc-internal-format
msgid "too many %<if%> clauses without modifier"
msgstr ""
-#: c/c-parser.c:11062 cp/parser.c:30667
+#: c/c-parser.c:11084 cp/parser.c:30717
#, gcc-internal-format
msgid ""
"if any %<if%> clause has modifier, then all %<if%> clauses have to use "
"modifier"
msgstr ""
-#: c/c-parser.c:11136 c/c-parser.c:11180 c/c-parser.c:11224 c/c-parser.c:11268
-#: c/c-parser.c:11312 c/c-parser.c:11356 c/c-parser.c:11460 c/c-parser.c:11586
-#: c/c-parser.c:11667 c/c-parser.c:12065 c/c-parser.c:12132 c/c-parser.c:12235
-#: c/c-parser.c:12278 c/c-parser.c:12787
+#: c/c-parser.c:11158 c/c-parser.c:11202 c/c-parser.c:11246 c/c-parser.c:11290
+#: c/c-parser.c:11334 c/c-parser.c:11378 c/c-parser.c:11482 c/c-parser.c:11608
+#: c/c-parser.c:11689 c/c-parser.c:12087 c/c-parser.c:12154 c/c-parser.c:12257
+#: c/c-parser.c:12300 c/c-parser.c:12809
#, gcc-internal-format
msgid "expected integer expression"
msgstr ""
-#: c/c-parser.c:11147
+#: c/c-parser.c:11169
#, gcc-internal-format
msgid "%<num_gangs%> value must be positive"
msgstr ""
-#: c/c-parser.c:11191
+#: c/c-parser.c:11213
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c/c-parser.c:11235
+#: c/c-parser.c:11257
#, gcc-internal-format
msgid "%<num_tasks%> value must be positive"
msgstr ""
-#: c/c-parser.c:11279 cp/semantics.c:6828
+#: c/c-parser.c:11301 cp/semantics.c:6885
#, gcc-internal-format
msgid "%<grainsize%> value must be positive"
msgstr ""
-#: c/c-parser.c:11324 cp/semantics.c:6857
+#: c/c-parser.c:11346 cp/semantics.c:6914
#, gcc-internal-format
msgid "%<priority%> value must be non-negative"
msgstr ""
-#: c/c-parser.c:11385 c/c-parser.c:11391 cp/parser.c:30878 cp/parser.c:30885
+#: c/c-parser.c:11407 c/c-parser.c:11413 cp/parser.c:30928 cp/parser.c:30935
#, gcc-internal-format
msgid "expected %<tofrom%>"
msgstr ""
-#: c/c-parser.c:11399 c/c-parser.c:11405 cp/parser.c:30894 cp/parser.c:30901
+#: c/c-parser.c:11421 c/c-parser.c:11427 cp/parser.c:30944 cp/parser.c:30951
#, gcc-internal-format
msgid "expected %<scalar%>"
msgstr ""
-#: c/c-parser.c:11471
+#: c/c-parser.c:11493
#, gcc-internal-format
msgid "%<num_workers%> value must be positive"
msgstr ""
-#: c/c-parser.c:11535 cp/parser.c:30207
+#: c/c-parser.c:11557 cp/parser.c:30257
#, gcc-internal-format
msgid "too many %<static%> arguments"
msgstr ""
-#: c/c-parser.c:11569 cp/parser.c:30240
+#: c/c-parser.c:11591 cp/parser.c:30290
#, gcc-internal-format
msgid "unexpected argument"
msgstr ""
-#: c/c-parser.c:11595
+#: c/c-parser.c:11617
#, gcc-internal-format
msgid "%<%s%> value must be positive"
msgstr ""
-#: c/c-parser.c:11724 cp/semantics.c:6941
+#: c/c-parser.c:11746 cp/semantics.c:6998
#, gcc-internal-format
msgid "%<tile%> value must be integral"
msgstr ""
-#: c/c-parser.c:11737 cp/semantics.c:6955
+#: c/c-parser.c:11759 cp/semantics.c:7012
#, gcc-internal-format
msgid "%<tile%> value must be positive"
msgstr ""
-#: c/c-parser.c:11803 cp/parser.c:30958
+#: c/c-parser.c:11825 cp/parser.c:31008
#, gcc-internal-format
msgid "ordered argument needs positive constant integer expression"
msgstr ""
-#: c/c-parser.c:11894
+#: c/c-parser.c:11916
#, gcc-internal-format
msgid ""
"expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> "
"or %<max%>"
msgstr ""
-#: c/c-parser.c:12003 cp/parser.c:31171
+#: c/c-parser.c:12025 cp/parser.c:31221
#, gcc-internal-format
msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
msgstr ""
-#: c/c-parser.c:12056 cp/parser.c:31187
+#: c/c-parser.c:12078 cp/parser.c:31237
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c/c-parser.c:12060 cp/parser.c:31190
+#: c/c-parser.c:12082 cp/parser.c:31240
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c/c-parser.c:12082 cp/parser.c:31210
+#: c/c-parser.c:12104 cp/parser.c:31260
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr ""
-#: c/c-parser.c:12143
+#: c/c-parser.c:12165
#, gcc-internal-format
msgid "%<vector_length%> value must be positive"
msgstr ""
-#: c/c-parser.c:12245
+#: c/c-parser.c:12267
#, gcc-internal-format
msgid "%<num_teams%> value must be positive"
msgstr ""
-#: c/c-parser.c:12288 cp/semantics.c:6340
+#: c/c-parser.c:12310 cp/semantics.c:6389
#, gcc-internal-format
msgid "%<thread_limit%> value must be positive"
msgstr ""
-#: c/c-parser.c:12330 cp/semantics.c:6450
+#: c/c-parser.c:12352 cp/semantics.c:6499
#, gcc-internal-format
msgid ""
"%<aligned%> clause alignment expression must be positive constant integer "
"expression"
msgstr ""
-#: c/c-parser.c:12391 cp/parser.c:31468
+#: c/c-parser.c:12413 cp/parser.c:31518
#, gcc-internal-format
msgid "using parameters for %<linear%> step is not supported yet"
msgstr ""
-#: c/c-parser.c:12396
+#: c/c-parser.c:12418
#, gcc-internal-format
msgid "%<linear%> clause step expression must be integral"
msgstr ""
-#: c/c-parser.c:12434
+#: c/c-parser.c:12456
#, gcc-internal-format
msgid ""
"%<safelen%> clause expression must be positive constant integer expression"
msgstr ""
-#: c/c-parser.c:12470
+#: c/c-parser.c:12492
#, gcc-internal-format
msgid ""
"%<simdlen%> clause expression must be positive constant integer expression"
msgstr ""
-#: c/c-parser.c:12639 cp/parser.c:31704 cp/parser.c:31927
+#: c/c-parser.c:12661 cp/parser.c:31754 cp/parser.c:31977
#, gcc-internal-format
msgid "invalid depend kind"
msgstr ""
-#: c/c-parser.c:12723 cp/parser.c:31777
+#: c/c-parser.c:12745 cp/parser.c:31827
#, gcc-internal-format
msgid "invalid map kind"
msgstr ""
-#: c/c-parser.c:12817 cp/parser.c:31874
+#: c/c-parser.c:12839 cp/parser.c:31924
#, gcc-internal-format
msgid "invalid dist_schedule kind"
msgstr ""
-#: c/c-parser.c:12886
+#: c/c-parser.c:12908
#, gcc-internal-format
msgid "invalid proc_bind kind"
msgstr ""
-#: c/c-parser.c:13099 cp/parser.c:32152
+#: c/c-parser.c:13121 cp/parser.c:32202
#, gcc-internal-format
msgid "expected %<#pragma acc%> clause"
msgstr ""
-#: c/c-parser.c:13110 c/c-parser.c:13393 cp/parser.c:32163 cp/parser.c:32479
+#: c/c-parser.c:13132 c/c-parser.c:13415 cp/parser.c:32213 cp/parser.c:32529
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr ""
-#: c/c-parser.c:13256 cp/parser.c:32339
+#: c/c-parser.c:13278 cp/parser.c:32389
#, gcc-internal-format
msgid "%qs must be the first clause of %qs"
msgstr ""
-#: c/c-parser.c:13382 cp/parser.c:32468
+#: c/c-parser.c:13404 cp/parser.c:32518
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c/c-parser.c:13520 cp/parser.c:35090
+#: c/c-parser.c:13542 cp/parser.c:35140
#, gcc-internal-format
msgid "no valid clauses specified in %<#pragma acc declare%>"
msgstr ""
-#: c/c-parser.c:13530 cp/parser.c:35100
+#: c/c-parser.c:13552 cp/parser.c:35150
#, gcc-internal-format
msgid "array section in %<#pragma acc declare%>"
msgstr ""
-#: c/c-parser.c:13554 cp/parser.c:35124
+#: c/c-parser.c:13576 cp/parser.c:35174
#, gcc-internal-format
msgid "%qD must be a global variable in%<#pragma acc declare link%>"
msgstr ""
-#: c/c-parser.c:13565 cp/parser.c:35135
+#: c/c-parser.c:13587 cp/parser.c:35185
#, gcc-internal-format
msgid "invalid OpenACC clause at file scope"
msgstr ""
-#: c/c-parser.c:13572 cp/parser.c:35142
+#: c/c-parser.c:13594 cp/parser.c:35192
#, gcc-internal-format
msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
msgstr ""
-#: c/c-parser.c:13580 cp/parser.c:35150
+#: c/c-parser.c:13602 cp/parser.c:35200
#, gcc-internal-format
msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
msgstr ""
-#: c/c-parser.c:13592 cp/parser.c:35162
+#: c/c-parser.c:13614 cp/parser.c:35212
#, gcc-internal-format
msgid "variable %qD used more than once with %<#pragma acc declare%>"
msgstr ""
-#: c/c-parser.c:13678 cp/parser.c:35245
+#: c/c-parser.c:13700 cp/parser.c:35295
#, gcc-internal-format
msgid "expected %<data%> in %<#pragma acc enter data%>"
msgstr ""
-#: c/c-parser.c:13687 cp/parser.c:35255
+#: c/c-parser.c:13709 cp/parser.c:35305
#, gcc-internal-format
msgid "invalid pragma"
msgstr ""
-#: c/c-parser.c:13704 cp/parser.c:35272
+#: c/c-parser.c:13726 cp/parser.c:35322
#, gcc-internal-format
msgid "%<#pragma acc enter data%> has no data movement clause"
msgstr ""
-#: c/c-parser.c:13906 cp/parser.c:36352
+#: c/c-parser.c:13928 cp/parser.c:36403
#, gcc-internal-format
msgid "%<#pragma acc routine%> not at file scope"
msgstr ""
-#: c/c-parser.c:13923 cp/parser.c:2829
+#: c/c-parser.c:13945 cp/parser.c:2829
#, gcc-internal-format
msgid "%qE has not been declared"
msgstr ""
-#: c/c-parser.c:13929
+#: c/c-parser.c:13951
#, gcc-internal-format
msgid "expected function name"
msgstr ""
-#: c/c-parser.c:13968
+#: c/c-parser.c:13990
#, gcc-internal-format
msgid "%<#pragma acc routine%> %s"
msgstr ""
-#: c/c-parser.c:13975 cp/parser.c:36565
+#: c/c-parser.c:13997 cp/parser.c:36616
#, gcc-internal-format
msgid "%<#pragma acc routine%> already applied to %D"
msgstr ""
-#: c/c-parser.c:13978 cp/parser.c:36572
+#: c/c-parser.c:14000 cp/parser.c:36623
#, gcc-internal-format
msgid "%<#pragma acc routine%> must be applied before %s"
msgstr ""
-#: c/c-parser.c:14015 cp/parser.c:35445
+#: c/c-parser.c:14037 cp/parser.c:35495
#, gcc-internal-format
msgid ""
"%<#pragma acc update%> must contain at least one %<device%> or %<host%> or "
"%<self%> clause"
msgstr ""
-#: c/c-parser.c:14423 cp/parser.c:32850 cp/parser.c:32876
+#: c/c-parser.c:14445 cp/parser.c:32900 cp/parser.c:32926
#, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr ""
-#: c/c-parser.c:14427 cp/parser.c:32907 cp/parser.c:32923
+#: c/c-parser.c:14449 cp/parser.c:32957 cp/parser.c:32973
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr ""
-#: c/c-parser.c:14476 cp/semantics.c:8342 cp/semantics.c:8352
+#: c/c-parser.c:14498 cp/semantics.c:8399 cp/semantics.c:8409
#, gcc-internal-format
msgid ""
"%<#pragma omp atomic capture%> uses two different expressions for memory"
msgstr ""
-#: c/c-parser.c:14541 c/c-parser.c:14563
+#: c/c-parser.c:14563 c/c-parser.c:14585
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c/c-parser.c:14601 cp/parser.c:33421
+#: c/c-parser.c:14623 cp/parser.c:33471
#, gcc-internal-format
msgid "%<ordered%> clause parameter is less than %<collapse%>"
msgstr ""
-#: c/c-parser.c:14612 cp/parser.c:33432
+#: c/c-parser.c:14634 cp/parser.c:33482
#, gcc-internal-format
msgid ""
"%<linear%> clause may not be specified together with %<ordered%> clause with "
"a parameter"
msgstr ""
-#: c/c-parser.c:14631 cp/parser.c:33459 cp/parser.c:37626
+#: c/c-parser.c:14653 cp/parser.c:33509 cp/parser.c:37677
#, gcc-internal-format
msgid "for statement expected"
msgstr ""
-#: c/c-parser.c:14637 cp/parser.c:33465
+#: c/c-parser.c:14659 cp/parser.c:33515
#, gcc-internal-format
msgid "_Cilk_for statement expected"
msgstr ""
-#: c/c-parser.c:14706 cp/semantics.c:7892 cp/semantics.c:7979
+#: c/c-parser.c:14728 cp/semantics.c:7949 cp/semantics.c:8036
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr ""
-#: c/c-parser.c:14791
+#: c/c-parser.c:14813
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c/c-parser.c:14847 cp/parser.c:33689
+#: c/c-parser.c:14869 cp/parser.c:33739
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c/c-parser.c:14894 cp/parser.c:33508 cp/parser.c:33550 cp/pt.c:14869
+#: c/c-parser.c:14916 cp/parser.c:33558 cp/parser.c:33600 cp/pt.c:14952
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c/c-parser.c:14984 cp/parser.c:33755
+#: c/c-parser.c:15006 cp/parser.c:33805
#, gcc-internal-format
msgid "%<ordered%> clause with parameter may not be specified on %qs construct"
msgstr ""
-#: c/c-parser.c:15139
+#: c/c-parser.c:15161
#, gcc-internal-format
msgid ""
"%<#pragma omp ordered%> with %<depend> clause may only be used in compound "
"statements"
msgstr ""
-#: c/c-parser.c:15341 cp/parser.c:34107
+#: c/c-parser.c:15363 cp/parser.c:34157
#, gcc-internal-format
msgid "expected %<for%> after %qs"
msgstr ""
-#: c/c-parser.c:15539 cp/parser.c:34300
+#: c/c-parser.c:15561 cp/parser.c:34350
#, gcc-internal-format
msgid "expected %<point%>"
msgstr ""
-#: c/c-parser.c:15739 cp/parser.c:34521
+#: c/c-parser.c:15761 cp/parser.c:34571
#, gcc-internal-format
msgid ""
"%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, "
"%<tofrom%> or %<alloc%> on %<map%> clause"
msgstr ""
-#: c/c-parser.c:15752 cp/parser.c:34534
+#: c/c-parser.c:15774 cp/parser.c:34584
#, gcc-internal-format
msgid "%<#pragma omp target data%> must contain at least one %<map%> clause"
msgstr ""
-#: c/c-parser.c:15787 cp/parser.c:34746
+#: c/c-parser.c:15809 cp/parser.c:34796
#, gcc-internal-format
msgid "%<#pragma omp target update%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:15800 cp/parser.c:34759
+#: c/c-parser.c:15822 cp/parser.c:34809
#, gcc-internal-format
msgid ""
"%<#pragma omp target update%> must contain at least one %<from%> or %<to%> "
"clauses"
msgstr ""
-#: c/c-parser.c:15847 cp/parser.c:34587
+#: c/c-parser.c:15869 cp/parser.c:34637
#, gcc-internal-format
msgid ""
"%<#pragma omp target enter data%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:15873 cp/parser.c:34614
+#: c/c-parser.c:15895 cp/parser.c:34664
#, gcc-internal-format
msgid ""
"%<#pragma omp target enter data%> with map-type other than %<to%> or %<alloc"
"%> on %<map%> clause"
msgstr ""
-#: c/c-parser.c:15885 cp/parser.c:34626
+#: c/c-parser.c:15907 cp/parser.c:34676
#, gcc-internal-format
msgid ""
"%<#pragma omp target enter data%> must contain at least one %<map%> clause"
msgstr ""
-#: c/c-parser.c:15932 cp/parser.c:34675
+#: c/c-parser.c:15954 cp/parser.c:34725
#, gcc-internal-format
msgid ""
"%<#pragma omp target exit data%> may only be used in compound statements"
msgstr ""
-#: c/c-parser.c:15960
+#: c/c-parser.c:15982
#, gcc-internal-format
msgid ""
"%<#pragma omp target exit data%> with map-type other than %<from%>, "
"%<release> or %<delete%> on %<map%> clause"
msgstr ""
-#: c/c-parser.c:15973 cp/parser.c:34716
+#: c/c-parser.c:15995 cp/parser.c:34766
#, gcc-internal-format
msgid ""
"%<#pragma omp target exit data%> must contain at least one %<map%> clause"
msgstr ""
-#: c/c-parser.c:16179 cp/parser.c:34967
+#: c/c-parser.c:16201 cp/parser.c:35017
#, gcc-internal-format
msgid ""
"%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> "
"or %<alloc%> on %<map%> clause"
msgstr ""
-#: c/c-parser.c:16230
+#: c/c-parser.c:16252
#, gcc-internal-format
msgid ""
"%<#pragma omp declare simd%> must be followed by function declaration or "
"definition or another %<#pragma omp declare simd%>"
msgstr ""
-#: c/c-parser.c:16281 c/c-parser.c:16309
+#: c/c-parser.c:16303 c/c-parser.c:16331
#, gcc-internal-format
msgid ""
"%<#pragma omp declare simd%> must be followed by function declaration or "
"definition"
msgstr ""
-#: c/c-parser.c:16330
+#: c/c-parser.c:16352
#, gcc-internal-format
msgid ""
"%<#pragma omp declare simd%> or %<simd%> attribute cannot be used in the "
"same function marked as a Cilk Plus SIMD-enabled function"
msgstr ""
-#: c/c-parser.c:16344
+#: c/c-parser.c:16366
#, gcc-internal-format
msgid ""
"%<#pragma omp declare simd%> not immediately followed by a function "
"declaration or definition"
msgstr ""
-#: c/c-parser.c:16352 cp/parser.c:35621
+#: c/c-parser.c:16374 cp/parser.c:35671
#, gcc-internal-format
msgid ""
"%<#pragma omp declare simd%> not immediately followed by a single function "
"declaration or definition"
msgstr ""
-#: c/c-parser.c:16468 cp/parser.c:35692
+#: c/c-parser.c:16490 cp/parser.c:35742
#, gcc-internal-format
msgid ""
"%<#pragma omp declare target%> with clauses in between %<#pragma omp declare "
"target%> without clauses and %<#pragma omp end declare target%>"
msgstr ""
-#: c/c-parser.c:16487 cp/parser.c:35711
+#: c/c-parser.c:16509 cp/parser.c:35761
#, gcc-internal-format
msgid "%qD specified both in declare target %<link%> and %<to%> clauses"
msgstr ""
-#: c/c-parser.c:16525 cp/parser.c:35755
+#: c/c-parser.c:16547 cp/parser.c:35805
#, gcc-internal-format
msgid "expected %<target%>"
msgstr ""
-#: c/c-parser.c:16532 cp/parser.c:35762
+#: c/c-parser.c:16554 cp/parser.c:35812
#, gcc-internal-format
msgid "expected %<declare%>"
msgstr ""
-#: c/c-parser.c:16538 cp/parser.c:35769
+#: c/c-parser.c:16560 cp/parser.c:35819
#, gcc-internal-format
msgid ""
"%<#pragma omp end declare target%> without corresponding %<#pragma omp "
"declare target%>"
msgstr ""
-#: c/c-parser.c:16566
+#: c/c-parser.c:16588
#, gcc-internal-format
msgid "%<#pragma omp declare reduction%> not at file or block scope"
msgstr ""
-#: c/c-parser.c:16616
+#: c/c-parser.c:16638
#, gcc-internal-format
msgid ""
"expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> "
"or identifier"
msgstr ""
-#: c/c-parser.c:16643
+#: c/c-parser.c:16665
#, gcc-internal-format
msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>"
msgstr ""
-#: c/c-parser.c:16647
+#: c/c-parser.c:16669
#, gcc-internal-format
msgid "function or array type in %<#pragma omp declare reduction%>"
msgstr ""
-#: c/c-parser.c:16650
+#: c/c-parser.c:16672
#, gcc-internal-format
msgid ""
"const, volatile or restrict qualified type in %<#pragma omp declare reduction"
"%>"
msgstr ""
-#: c/c-parser.c:16658
+#: c/c-parser.c:16680
#, gcc-internal-format
msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT"
msgstr ""
-#: c/c-parser.c:16667
+#: c/c-parser.c:16689
#, gcc-internal-format
msgid "previous %<#pragma omp declare reduction%>"
msgstr ""
-#: c/c-parser.c:16784
+#: c/c-parser.c:16806
#, gcc-internal-format
msgid "expected %<omp_priv%> or function-name"
msgstr ""
-#: c/c-parser.c:16795
+#: c/c-parser.c:16817
#, gcc-internal-format
msgid "expected function-name %<(%>"
msgstr ""
-#: c/c-parser.c:16814
+#: c/c-parser.c:16836
#, gcc-internal-format
msgid "one of the initializer call arguments should be %<&omp_priv%>"
msgstr ""
-#: c/c-parser.c:16934 cp/parser.c:36213
+#: c/c-parser.c:16956 cp/parser.c:36264
#, gcc-internal-format
msgid "expected %<simd%> or %<reduction%> or %<target%>"
msgstr ""
-#: c/c-parser.c:17146 cp/semantics.c:7365
+#: c/c-parser.c:17168 cp/semantics.c:7422
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c/c-parser.c:17148 cp/semantics.c:7367
+#: c/c-parser.c:17170 cp/semantics.c:7424
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c/c-parser.c:17152 cp/semantics.c:7369
+#: c/c-parser.c:17174 cp/semantics.c:7426
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr ""
-#: c/c-parser.c:17183
+#: c/c-parser.c:17205
#, gcc-internal-format
msgid "pragma simd ignored because -fcilkplus is not enabled"
msgstr ""
-#: c/c-parser.c:17189
+#: c/c-parser.c:17211
#, gcc-internal-format
msgid "pragma simd must be inside a function"
msgstr ""
-#: c/c-parser.c:17233 cp/parser.c:37397
+#: c/c-parser.c:17255 cp/parser.c:37448
#, gcc-internal-format
msgid "vectorlength must be an integer constant"
msgstr ""
-#: c/c-parser.c:17235 cp/parser.c:37400
+#: c/c-parser.c:17257 cp/parser.c:37451
#, gcc-internal-format
msgid "vectorlength must be a power of 2"
msgstr ""
-#: c/c-parser.c:17318 cp/parser.c:37507
+#: c/c-parser.c:17340 cp/parser.c:37558
#, gcc-internal-format
msgid "step size must be an integer constant expression or an integer variable"
msgstr ""
-#: c/c-parser.c:17417 cp/parser.c:37600
+#: c/c-parser.c:17439 cp/parser.c:37651
#, gcc-internal-format
msgid "expected %<#pragma simd%> clause"
msgstr ""
-#: c/c-parser.c:17461 cp/parser.c:37049
+#: c/c-parser.c:17483 cp/parser.c:37100
#, gcc-internal-format
msgid "%<#pragma cilk grainsize%> is not followed by %<_Cilk_for%>"
msgstr ""
-#: c/c-parser.c:17760 cp/parser.c:36941
+#: c/c-parser.c:17782 cp/parser.c:36992
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c/c-parser.c:17766 cp/parser.c:36947
+#: c/c-parser.c:17788 cp/parser.c:36998
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c/c-parser.c:17775 cp/parser.c:36956
+#: c/c-parser.c:17797 cp/parser.c:37007
#, gcc-internal-format
msgid ""
"outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c/c-parser.c:17777 cp/parser.c:36959
+#: c/c-parser.c:17799 cp/parser.c:37010
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c/c-parser.c:17783 cp/parser.c:36965
+#: c/c-parser.c:17805 cp/parser.c:37016
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
-#: c/c-parser.c:17851 cp/cp-array-notation.c:1407
+#: c/c-parser.c:17873 cp/cp-array-notation.c:1407
#, gcc-internal-format
msgid "base of array section must be pointer or array type"
msgstr ""
-#: c/c-parser.c:17860 cp/parser.c:7011
+#: c/c-parser.c:17882 cp/parser.c:7013
#, gcc-internal-format
msgid "expected %<:%> or numeral"
msgstr ""
-#: c/c-parser.c:17871
+#: c/c-parser.c:17893
#, gcc-internal-format
msgid ""
"start-index and length fields necessary for using array notations in pointers"
msgstr ""
-#: c/c-parser.c:17878 c/c-parser.c:17921
+#: c/c-parser.c:17900 c/c-parser.c:17943
#, gcc-internal-format
msgid "array notations cannot be used with function type"
msgstr ""
-#: c/c-parser.c:17887
+#: c/c-parser.c:17909
#, gcc-internal-format
msgid ""
"start-index and length fields necessary for using array notations in "
"dimensionless arrays"
msgstr ""
-#: c/c-parser.c:17899
+#: c/c-parser.c:17921
#, gcc-internal-format
msgid ""
"start-index and length fields necessary for using array notations in "
"variable-length arrays"
msgstr ""
-#: c/c-parser.c:17949 c/c-parser.c:17952
+#: c/c-parser.c:17971 c/c-parser.c:17974
#, gcc-internal-format
msgid "expected array notation expression"
msgstr ""
@@ -34137,7 +34236,7 @@ msgstr ""
msgid "%qD has an incomplete type %qT"
msgstr ""
-#: c/c-typeck.c:231 c/c-typeck.c:9487 c/c-typeck.c:9529 cp/call.c:3968
+#: c/c-typeck.c:231 c/c-typeck.c:9500 c/c-typeck.c:9542 cp/call.c:3970
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr ""
@@ -34168,142 +34267,142 @@ msgstr ""
msgid "%qT and %qT are in disjoint named address spaces"
msgstr ""
-#: c/c-typeck.c:568 c/c-typeck.c:593
+#: c/c-typeck.c:570 c/c-typeck.c:595
#, gcc-internal-format
msgid "function types not truly compatible in ISO C"
msgstr ""
-#: c/c-typeck.c:737
+#: c/c-typeck.c:739
#, gcc-internal-format
msgid "can%'t mix operands of decimal float and vector types"
msgstr ""
-#: c/c-typeck.c:742
+#: c/c-typeck.c:744
#, gcc-internal-format
msgid "can%'t mix operands of decimal float and complex types"
msgstr ""
-#: c/c-typeck.c:747
+#: c/c-typeck.c:749
#, gcc-internal-format
msgid "can%'t mix operands of decimal float and other float types"
msgstr ""
-#: c/c-typeck.c:1244
+#: c/c-typeck.c:1246
#, gcc-internal-format
msgid "pointers to arrays with different qualifiers are incompatible in ISO C"
msgstr ""
-#: c/c-typeck.c:1248
+#: c/c-typeck.c:1250
#, gcc-internal-format
msgid "types are not quite compatible"
msgstr ""
-#: c/c-typeck.c:1252
+#: c/c-typeck.c:1254
#, gcc-internal-format
msgid "pointer target types incompatible in C++"
msgstr ""
-#: c/c-typeck.c:1584
+#: c/c-typeck.c:1586
#, gcc-internal-format
msgid "function return types not compatible due to %<volatile%>"
msgstr ""
-#: c/c-typeck.c:1834
+#: c/c-typeck.c:1836
#, gcc-internal-format
msgid "converting an array compound literal to a pointer is ill-formed in C++"
msgstr ""
-#: c/c-typeck.c:2345
+#: c/c-typeck.c:2347
#, gcc-internal-format
msgid "%qT has no member named %qE; did you mean %qE?"
msgstr ""
-#: c/c-typeck.c:2348
+#: c/c-typeck.c:2350
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr ""
-#: c/c-typeck.c:2357
+#: c/c-typeck.c:2359
#, gcc-internal-format
msgid "accessing a member %qE of an atomic structure %qE"
msgstr ""
-#: c/c-typeck.c:2360
+#: c/c-typeck.c:2362
#, gcc-internal-format
msgid "accessing a member %qE of an atomic union %qE"
msgstr ""
-#: c/c-typeck.c:2420
+#: c/c-typeck.c:2422
#, gcc-internal-format
msgid "%qE is a pointer; did you mean to use %<->%>?"
msgstr ""
-#: c/c-typeck.c:2426
+#: c/c-typeck.c:2428
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr ""
-#: c/c-typeck.c:2477
+#: c/c-typeck.c:2479
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type %qT"
msgstr ""
-#: c/c-typeck.c:2484
+#: c/c-typeck.c:2486
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr ""
-#: c/c-typeck.c:2537
+#: c/c-typeck.c:2539
#, gcc-internal-format
msgid "rank of the array's index is greater than 1"
msgstr ""
-#: c/c-typeck.c:2550
+#: c/c-typeck.c:2552
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr ""
-#: c/c-typeck.c:2560 cp/typeck.c:3142 cp/typeck.c:3229
+#: c/c-typeck.c:2562 cp/typeck.c:3150 cp/typeck.c:3237
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr ""
-#: c/c-typeck.c:2566
+#: c/c-typeck.c:2568
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr ""
-#: c/c-typeck.c:2619
+#: c/c-typeck.c:2621
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr ""
-#: c/c-typeck.c:2622
+#: c/c-typeck.c:2624
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c/c-typeck.c:2736
+#: c/c-typeck.c:2738
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c/c-typeck.c:2842 cp/typeck.c:1638
+#: c/c-typeck.c:2844 cp/typeck.c:1638
#, gcc-internal-format
msgid "%<sizeof%> on array function parameter %qE will return size of %qT"
msgstr ""
-#: c/c-typeck.c:2992
+#: c/c-typeck.c:2994
#, gcc-internal-format
msgid "called object %qE is not a function or function pointer"
msgstr ""
-#: c/c-typeck.c:2997
+#: c/c-typeck.c:2999
#, gcc-internal-format
msgid "called object %qD is not a function or function pointer"
msgstr ""
-#: c/c-typeck.c:3003
+#: c/c-typeck.c:3005
#, gcc-internal-format
msgid "called object is not a function or function pointer"
msgstr ""
@@ -34311,373 +34410,373 @@ 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/c-typeck.c:3033
+#: c/c-typeck.c:3035
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr ""
-#: c/c-typeck.c:3038 c/c-typeck.c:3075
+#: c/c-typeck.c:3040 c/c-typeck.c:3087
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr ""
-#: c/c-typeck.c:3199
+#: c/c-typeck.c:3211
#, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr ""
-#: c/c-typeck.c:3237
+#: c/c-typeck.c:3249
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c/c-typeck.c:3254
+#: c/c-typeck.c:3266
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as integer rather than floating due to prototype"
msgstr ""
-#: c/c-typeck.c:3260
+#: c/c-typeck.c:3272
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as integer rather than complex due to prototype"
msgstr ""
-#: c/c-typeck.c:3266
+#: c/c-typeck.c:3278
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as complex rather than floating due to prototype"
msgstr ""
-#: c/c-typeck.c:3272
+#: c/c-typeck.c:3284
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as floating rather than integer due to prototype"
msgstr ""
-#: c/c-typeck.c:3278
+#: c/c-typeck.c:3290
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as complex rather than integer due to prototype"
msgstr ""
-#: c/c-typeck.c:3284
+#: c/c-typeck.c:3296
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as floating rather than complex due to prototype"
msgstr ""
-#: c/c-typeck.c:3298
+#: c/c-typeck.c:3310
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as %<float%> rather than %<double%> due to "
"prototype"
msgstr ""
-#: c/c-typeck.c:3324
+#: c/c-typeck.c:3336
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr ""
-#: c/c-typeck.c:3346
+#: c/c-typeck.c:3358
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr ""
-#: c/c-typeck.c:3370
+#: c/c-typeck.c:3382
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr ""
-#: c/c-typeck.c:3375
+#: c/c-typeck.c:3387
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr ""
-#: c/c-typeck.c:3411 cp/call.c:6766
+#: c/c-typeck.c:3423 cp/call.c:6769
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr ""
-#: c/c-typeck.c:3603 c/c-typeck.c:3608
+#: c/c-typeck.c:3617 c/c-typeck.c:3622 cp/typeck.c:4534 cp/typeck.c:4776
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr ""
-#: c/c-typeck.c:3622
+#: c/c-typeck.c:3636
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr ""
-#: c/c-typeck.c:3671
+#: c/c-typeck.c:3685
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr ""
-#: c/c-typeck.c:3674
+#: c/c-typeck.c:3688
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c/c-typeck.c:3686
+#: c/c-typeck.c:3700
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c/c-typeck.c:3691 cp/typeck.c:5309
+#: c/c-typeck.c:3705 cp/typeck.c:5293
#, gcc-internal-format
msgid "arithmetic on pointer to an empty aggregate"
msgstr ""
-#: c/c-typeck.c:4099
+#: c/c-typeck.c:4113
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr ""
-#: c/c-typeck.c:4138
+#: c/c-typeck.c:4152
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c/c-typeck.c:4195
+#: c/c-typeck.c:4209
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c/c-typeck.c:4198
+#: c/c-typeck.c:4212
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c/c-typeck.c:4214
+#: c/c-typeck.c:4228
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr ""
-#: c/c-typeck.c:4237 c/c-typeck.c:4271
+#: c/c-typeck.c:4251 c/c-typeck.c:4285
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr ""
-#: c/c-typeck.c:4239 c/c-typeck.c:4274
+#: c/c-typeck.c:4253 c/c-typeck.c:4288
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr ""
-#: c/c-typeck.c:4259
+#: c/c-typeck.c:4273
#, gcc-internal-format
msgid "increment of pointer to an incomplete type %qT"
msgstr ""
-#: c/c-typeck.c:4263
+#: c/c-typeck.c:4277
#, gcc-internal-format
msgid "decrement of pointer to an incomplete type %qT"
msgstr ""
-#: c/c-typeck.c:4367
+#: c/c-typeck.c:4381
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr ""
-#: c/c-typeck.c:4425
+#: c/c-typeck.c:4439
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr ""
-#: c/c-typeck.c:4438
+#: c/c-typeck.c:4452
#, gcc-internal-format
msgid "cannot take address of scalar with reverse storage order"
msgstr ""
-#: c/c-typeck.c:4445
+#: c/c-typeck.c:4459
#, gcc-internal-format
msgid "address of array with reverse scalar storage order requested"
msgstr ""
-#: c/c-typeck.c:4617
+#: c/c-typeck.c:4631
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr ""
-#: c/c-typeck.c:4620
+#: c/c-typeck.c:4634
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr ""
-#: c/c-typeck.c:4625
+#: c/c-typeck.c:4639
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr ""
-#: c/c-typeck.c:4627
+#: c/c-typeck.c:4641
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr ""
-#: c/c-typeck.c:4728
+#: c/c-typeck.c:4742
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr ""
-#: c/c-typeck.c:4784 cp/call.c:5086
+#: c/c-typeck.c:4798 cp/call.c:5089
#, gcc-internal-format
msgid ""
"implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c/c-typeck.c:4858
+#: c/c-typeck.c:4872
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c/c-typeck.c:4875
+#: c/c-typeck.c:4889
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr ""
-#: c/c-typeck.c:4886 c/c-typeck.c:4903
+#: c/c-typeck.c:4900 c/c-typeck.c:4917
#, gcc-internal-format
msgid "pointer to array loses qualifier in conditional expression"
msgstr ""
-#: c/c-typeck.c:4891 c/c-typeck.c:4908
+#: c/c-typeck.c:4905 c/c-typeck.c:4922
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr ""
-#: c/c-typeck.c:4921
+#: c/c-typeck.c:4935
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c/c-typeck.c:4930 c/c-typeck.c:4941
+#: c/c-typeck.c:4944 c/c-typeck.c:4955
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c/c-typeck.c:5044 cp/typeck.c:6454
+#: c/c-typeck.c:5058 cp/typeck.c:6438
#, gcc-internal-format
msgid "spawned function call cannot be part of a comma expression"
msgstr ""
-#: c/c-typeck.c:5078
+#: c/c-typeck.c:5092
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c/c-typeck.c:5096 c/c-typeck.c:10212
+#: c/c-typeck.c:5110 c/c-typeck.c:10225
#, gcc-internal-format
msgid "right-hand operand of comma expression has no effect"
msgstr ""
-#: c/c-typeck.c:5165
+#: c/c-typeck.c:5179
msgid "cast adds %q#v qualifier to function type"
msgstr ""
-#: c/c-typeck.c:5171
+#: c/c-typeck.c:5185
msgid "cast discards %qv qualifier from pointer target type"
msgstr ""
-#: c/c-typeck.c:5206
+#: c/c-typeck.c:5220
#, gcc-internal-format
msgid ""
"to be safe all intermediate pointers in cast from %qT to %qT must be %<const"
"%> qualified"
msgstr ""
-#: c/c-typeck.c:5243
+#: c/c-typeck.c:5257
#, gcc-internal-format
msgid "cast specifies array type"
msgstr ""
-#: c/c-typeck.c:5249
+#: c/c-typeck.c:5263
#, gcc-internal-format
msgid "cast specifies function type"
msgstr ""
-#: c/c-typeck.c:5264
+#: c/c-typeck.c:5278
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c/c-typeck.c:5284
+#: c/c-typeck.c:5298
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr ""
-#: c/c-typeck.c:5294
+#: c/c-typeck.c:5308
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr ""
-#: c/c-typeck.c:5329
+#: c/c-typeck.c:5343
#, gcc-internal-format, gfc-internal-format
msgid ""
"cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c/c-typeck.c:5334
+#: c/c-typeck.c:5348
#, gcc-internal-format, gfc-internal-format
msgid ""
"cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c/c-typeck.c:5339
+#: c/c-typeck.c:5353
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c/c-typeck.c:5358
+#: c/c-typeck.c:5372
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr ""
-#: c/c-typeck.c:5369
+#: c/c-typeck.c:5383
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c/c-typeck.c:5374
+#: c/c-typeck.c:5388
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c/c-typeck.c:5383 cp/typeck.c:7429
+#: c/c-typeck.c:5397 cp/typeck.c:7409
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr ""
-#: c/c-typeck.c:5397
+#: c/c-typeck.c:5411
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr ""
-#: c/c-typeck.c:5406
+#: c/c-typeck.c:5420
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr ""
-#: c/c-typeck.c:5493
+#: c/c-typeck.c:5507
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c/c-typeck.c:5535
+#: c/c-typeck.c:5549
#, gcc-internal-format
msgid "assignment to expression with array type"
msgstr ""
-#: c/c-typeck.c:5658 c/c-typeck.c:6098
+#: c/c-typeck.c:5672 c/c-typeck.c:6112
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
-#: c/c-typeck.c:5850 c/c-typeck.c:5868 c/c-typeck.c:5887
+#: c/c-typeck.c:5864 c/c-typeck.c:5882 c/c-typeck.c:5901
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr ""
-#: c/c-typeck.c:5902
+#: c/c-typeck.c:5916
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr ""
@@ -34693,2102 +34792,2097 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as PEDWARN_FOR_QUALIFIERS but uses
#. warning_at instead of pedwarn.
-#: c/c-typeck.c:5978 c/c-typeck.c:6007 c/c-typeck.c:6036 c/c-typeck.c:6614
+#: c/c-typeck.c:5992 c/c-typeck.c:6021 c/c-typeck.c:6050 c/c-typeck.c:6628
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c/c-typeck.c:6096
+#: c/c-typeck.c:6110
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c/c-typeck.c:6100 c/c-typeck.c:8698
+#: c/c-typeck.c:6114 c/c-typeck.c:8710
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c/c-typeck.c:6102
+#: c/c-typeck.c:6116
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c/c-typeck.c:6133
+#: c/c-typeck.c:6147
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c/c-typeck.c:6266 c/c-typeck.c:6531
+#: c/c-typeck.c:6280 c/c-typeck.c:6545
msgid ""
"passing argument %d of %qE makes %q#v qualified function pointer from "
"unqualified"
msgstr ""
-#: c/c-typeck.c:6269 c/c-typeck.c:6534
+#: c/c-typeck.c:6283 c/c-typeck.c:6548
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c/c-typeck.c:6272 c/c-typeck.c:6536
+#: c/c-typeck.c:6286 c/c-typeck.c:6550
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c/c-typeck.c:6275 c/c-typeck.c:6538
+#: c/c-typeck.c:6289 c/c-typeck.c:6552
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c/c-typeck.c:6283 c/c-typeck.c:6450 c/c-typeck.c:6493
+#: c/c-typeck.c:6297 c/c-typeck.c:6464 c/c-typeck.c:6507
msgid ""
"passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr ""
-#: c/c-typeck.c:6285 c/c-typeck.c:6452 c/c-typeck.c:6495
+#: c/c-typeck.c:6299 c/c-typeck.c:6466 c/c-typeck.c:6509
msgid "assignment discards %qv qualifier from pointer target type"
msgstr ""
-#: c/c-typeck.c:6287 c/c-typeck.c:6454 c/c-typeck.c:6497
+#: c/c-typeck.c:6301 c/c-typeck.c:6468 c/c-typeck.c:6511
msgid "initialization discards %qv qualifier from pointer target type"
msgstr ""
-#: c/c-typeck.c:6289 c/c-typeck.c:6456 c/c-typeck.c:6499
+#: c/c-typeck.c:6303 c/c-typeck.c:6470 c/c-typeck.c:6513
msgid "return discards %qv qualifier from pointer target type"
msgstr ""
-#: c/c-typeck.c:6298
+#: c/c-typeck.c:6312
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c/c-typeck.c:6360
+#: c/c-typeck.c:6374
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr ""
-#: c/c-typeck.c:6372
+#: c/c-typeck.c:6386
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr ""
-#: c/c-typeck.c:6376
+#: c/c-typeck.c:6390
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr ""
-#: c/c-typeck.c:6380
+#: c/c-typeck.c:6394
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr ""
-#: c/c-typeck.c:6384
+#: c/c-typeck.c:6398
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c/c-typeck.c:6402
+#: c/c-typeck.c:6416
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr ""
-#: c/c-typeck.c:6408
+#: c/c-typeck.c:6422
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c/c-typeck.c:6413
+#: c/c-typeck.c:6427
#, gcc-internal-format
msgid ""
"initialization left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c/c-typeck.c:6418 cp/typeck.c:8445
+#: c/c-typeck.c:6432 cp/typeck.c:8425
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr ""
-#: c/c-typeck.c:6467
+#: c/c-typeck.c:6481
#, gcc-internal-format
msgid ""
"ISO C forbids passing argument %d of %qE between function pointer and %<void "
"*%>"
msgstr ""
-#: c/c-typeck.c:6470
+#: c/c-typeck.c:6484
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr ""
-#: c/c-typeck.c:6472
+#: c/c-typeck.c:6486
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr ""
-#: c/c-typeck.c:6474
+#: c/c-typeck.c:6488
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr ""
-#: c/c-typeck.c:6511
+#: c/c-typeck.c:6525
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr ""
-#: c/c-typeck.c:6513
+#: c/c-typeck.c:6527
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr ""
-#: c/c-typeck.c:6515
+#: c/c-typeck.c:6529
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr ""
-#: c/c-typeck.c:6517
+#: c/c-typeck.c:6531
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr ""
-#: c/c-typeck.c:6548
+#: c/c-typeck.c:6562
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr ""
-#: c/c-typeck.c:6550
+#: c/c-typeck.c:6564
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr ""
-#: c/c-typeck.c:6551
+#: c/c-typeck.c:6565
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr ""
-#: c/c-typeck.c:6553
+#: c/c-typeck.c:6567
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr ""
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c/c-typeck.c:6561 c/c-typeck.c:7055 cp/typeck.c:1992
+#: c/c-typeck.c:6575 c/c-typeck.c:7069 cp/typeck.c:1992
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr ""
-#: c/c-typeck.c:6572
+#: c/c-typeck.c:6586
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr ""
-#: c/c-typeck.c:6574
+#: c/c-typeck.c:6588
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr ""
-#: c/c-typeck.c:6576
+#: c/c-typeck.c:6590
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr ""
-#: c/c-typeck.c:6578
+#: c/c-typeck.c:6592
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr ""
-#: c/c-typeck.c:6587
+#: c/c-typeck.c:6601
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr ""
-#: c/c-typeck.c:6589
+#: c/c-typeck.c:6603
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr ""
-#: c/c-typeck.c:6591
+#: c/c-typeck.c:6605
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr ""
-#: c/c-typeck.c:6593
+#: c/c-typeck.c:6607
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr ""
-#: c/c-typeck.c:6617
+#: c/c-typeck.c:6631
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr ""
-#: c/c-typeck.c:6622
+#: c/c-typeck.c:6636
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr ""
-#: c/c-typeck.c:6627
+#: c/c-typeck.c:6641
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-#: c/c-typeck.c:6691
+#: c/c-typeck.c:6705
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c/c-typeck.c:6928 c/c-typeck.c:7810 cp/typeck2.c:1023
+#: c/c-typeck.c:6942 c/c-typeck.c:7821 cp/typeck2.c:1025
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr ""
-#: c/c-typeck.c:6938 cp/typeck2.c:1038
+#: c/c-typeck.c:6952 cp/typeck2.c:1040
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr ""
-#: c/c-typeck.c:6947
+#: c/c-typeck.c:6961
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr ""
-#: c/c-typeck.c:6953
+#: c/c-typeck.c:6967
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr ""
-#: c/c-typeck.c:6987
+#: c/c-typeck.c:7001
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr ""
-#: c/c-typeck.c:7074 c/c-typeck.c:7098 c/c-typeck.c:7101 c/c-typeck.c:7109
-#: c/c-typeck.c:7149 c/c-typeck.c:8637 c/c-typeck.c:8671
+#: c/c-typeck.c:7088 c/c-typeck.c:7112 c/c-typeck.c:7115 c/c-typeck.c:7123
+#: c/c-typeck.c:7163 c/c-typeck.c:8649 c/c-typeck.c:8683
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr ""
-#: c/c-typeck.c:7083
+#: c/c-typeck.c:7097
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c/c-typeck.c:7114 c/c-typeck.c:7162 c/c-typeck.c:8681
+#: c/c-typeck.c:7128 c/c-typeck.c:7176 c/c-typeck.c:8693
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr ""
-#: c/c-typeck.c:7156 c/c-typeck.c:8676
+#: c/c-typeck.c:7170 c/c-typeck.c:8688
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr ""
-#: c/c-typeck.c:7175
+#: c/c-typeck.c:7189
#, gcc-internal-format
msgid "invalid initializer"
msgstr ""
-#: c/c-typeck.c:7450 cp/decl.c:6073
+#: c/c-typeck.c:7464 cp/decl.c:6080
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr ""
-#: c/c-typeck.c:7669
+#: c/c-typeck.c:7680
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr ""
-#: c/c-typeck.c:7747
+#: c/c-typeck.c:7758
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr ""
-#: c/c-typeck.c:7807 c/c-typeck.c:9110
+#: c/c-typeck.c:7818 c/c-typeck.c:9122
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr ""
-#: c/c-typeck.c:7841
+#: c/c-typeck.c:7852
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr ""
-#: c/c-typeck.c:7863
+#: c/c-typeck.c:7874
#, gcc-internal-format
msgid "missing initializer for field %qD of %qT"
msgstr ""
-#: c/c-typeck.c:7887
+#: c/c-typeck.c:7898
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr ""
-#: c/c-typeck.c:7892
+#: c/c-typeck.c:7903
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr ""
-#: c/c-typeck.c:8004 c/c-typeck.c:8085
+#: c/c-typeck.c:8015 c/c-typeck.c:8097
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr ""
-#: c/c-typeck.c:8009 c/c-typeck.c:8147
+#: c/c-typeck.c:8020 c/c-typeck.c:8159
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr ""
-#: c/c-typeck.c:8058
+#: c/c-typeck.c:8070
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr ""
-#: c/c-typeck.c:8067 c/c-typeck.c:8076
+#: c/c-typeck.c:8079 c/c-typeck.c:8088
#, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr ""
-#: c/c-typeck.c:8081 c/c-typeck.c:8083
+#: c/c-typeck.c:8093 c/c-typeck.c:8095
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr ""
-#: c/c-typeck.c:8087 c/c-typeck.c:8090
+#: c/c-typeck.c:8099 c/c-typeck.c:8102
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr ""
-#: c/c-typeck.c:8109
+#: c/c-typeck.c:8121
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr ""
-#: c/c-typeck.c:8118
+#: c/c-typeck.c:8130
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c/c-typeck.c:8154
+#: c/c-typeck.c:8166
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr ""
-#: c/c-typeck.c:8207 c/c-typeck.c:8237 c/c-typeck.c:8771
+#: c/c-typeck.c:8219 c/c-typeck.c:8249 c/c-typeck.c:8783
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c/c-typeck.c:8211 c/c-typeck.c:8241 c/c-typeck.c:8774
+#: c/c-typeck.c:8223 c/c-typeck.c:8253 c/c-typeck.c:8786
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr ""
-#: c/c-typeck.c:8993
+#: c/c-typeck.c:9005
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr ""
-#: c/c-typeck.c:9000 c/c-typeck.c:9069
+#: c/c-typeck.c:9012 c/c-typeck.c:9081
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr ""
-#: c/c-typeck.c:9015
+#: c/c-typeck.c:9027
#, gcc-internal-format
msgid ""
"positional initialization of field in %<struct%> declared with "
"%<designated_init%> attribute"
msgstr ""
-#: c/c-typeck.c:9084
+#: c/c-typeck.c:9096
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c/c-typeck.c:9183
+#: c/c-typeck.c:9195
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr ""
-#: c/c-typeck.c:9205
+#: c/c-typeck.c:9217
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c/c-typeck.c:9273
+#: c/c-typeck.c:9285
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr ""
-#: c/c-typeck.c:9307
+#: c/c-typeck.c:9319
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr ""
-#: c/c-typeck.c:9339
+#: c/c-typeck.c:9351
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr ""
-#: c/c-typeck.c:9578
+#: c/c-typeck.c:9591
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr ""
-#: c/c-typeck.c:9606 cp/typeck.c:8674
+#: c/c-typeck.c:9619 cp/typeck.c:8654
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr ""
-#: c/c-typeck.c:9616 cp/cp-array-notation.c:1087
+#: c/c-typeck.c:9629 cp/cp-array-notation.c:1087
#, gcc-internal-format
msgid "array notation expression cannot be used as a return value"
msgstr ""
-#: c/c-typeck.c:9623 cp/typeck.c:8665
+#: c/c-typeck.c:9636 cp/typeck.c:8645
#, gcc-internal-format
msgid "use of %<_Cilk_spawn%> in a return statement is not allowed"
msgstr ""
-#: c/c-typeck.c:9651 c/c-typeck.c:9655
+#: c/c-typeck.c:9664 c/c-typeck.c:9668
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr ""
-#: c/c-typeck.c:9669
+#: c/c-typeck.c:9682
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr ""
-#: c/c-typeck.c:9672
+#: c/c-typeck.c:9685
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr ""
-#: c/c-typeck.c:9748
+#: c/c-typeck.c:9761
#, gcc-internal-format
msgid "function returns address of label"
msgstr ""
-#: c/c-typeck.c:9839 cp/semantics.c:1143
+#: c/c-typeck.c:9852 cp/semantics.c:1146
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr ""
-#: c/c-typeck.c:9864
+#: c/c-typeck.c:9877
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr ""
-#: c/c-typeck.c:9902 c/c-typeck.c:9910
+#: c/c-typeck.c:9915 c/c-typeck.c:9923
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr ""
-#: c/c-typeck.c:9916 cp/parser.c:10618
+#: c/c-typeck.c:9929 cp/parser.c:10624
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr ""
-#: c/c-typeck.c:9918
+#: c/c-typeck.c:9931
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr ""
-#: c/c-typeck.c:9990
+#: c/c-typeck.c:10003
#, gcc-internal-format
msgid "rank-mismatch between if-statement%'s condition and the then-block"
msgstr ""
-#: c/c-typeck.c:9996
+#: c/c-typeck.c:10009
#, gcc-internal-format
msgid "rank-mismatch between if-statement%'s condition and the else-block"
msgstr ""
-#: c/c-typeck.c:10032 cp/parser.c:10949
+#: c/c-typeck.c:10045 cp/parser.c:10955
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr ""
-#: c/c-typeck.c:10154 cp/parser.c:11725
+#: c/c-typeck.c:10167 cp/parser.c:11745
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr ""
-#: c/c-typeck.c:10156 cp/parser.c:11751
+#: c/c-typeck.c:10169 cp/parser.c:11771
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr ""
-#: c/c-typeck.c:10161 cp/parser.c:11738
+#: c/c-typeck.c:10174 cp/parser.c:11758
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr ""
-#: c/c-typeck.c:10166
+#: c/c-typeck.c:10179
#, gcc-internal-format
msgid "break statement within %<#pragma simd%> loop body"
msgstr ""
-#: c/c-typeck.c:10168 cp/parser.c:11755
+#: c/c-typeck.c:10181 cp/parser.c:11775
#, gcc-internal-format
msgid "continue statement within %<#pragma simd%> loop body"
msgstr ""
-#: c/c-typeck.c:10194 cp/cp-gimplify.c:443
+#: c/c-typeck.c:10207 cp/cp-gimplify.c:444
#, gcc-internal-format
msgid "statement with no effect"
msgstr ""
-#: c/c-typeck.c:10238
+#: c/c-typeck.c:10251
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr ""
-#: c/c-typeck.c:11039 c/c-typeck.c:11206 cp/typeck.c:4806
+#: c/c-typeck.c:11052 c/c-typeck.c:11209 cp/typeck.c:4790
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr ""
-#: c/c-typeck.c:11046 c/c-typeck.c:11213 cp/typeck.c:4818
+#: c/c-typeck.c:11059 c/c-typeck.c:11216 cp/typeck.c:4802
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c/c-typeck.c:11077 cp/typeck.c:4488
+#: c/c-typeck.c:11090 cp/typeck.c:4528
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c/c-typeck.c:11091 c/c-typeck.c:11116 cp/typeck.c:4509 cp/typeck.c:4553
-#, gcc-internal-format
-msgid "nonnull argument %qD compared to NULL"
-msgstr ""
-
-#: c/c-typeck.c:11099 c/c-typeck.c:11124
+#: c/c-typeck.c:11107 c/c-typeck.c:11127
#, gcc-internal-format
msgid ""
"the comparison will always evaluate as %<false%> for the address of %qD will "
"never be NULL"
msgstr ""
-#: c/c-typeck.c:11105 c/c-typeck.c:11130
+#: c/c-typeck.c:11113 c/c-typeck.c:11133
#, gcc-internal-format
msgid ""
"the comparison will always evaluate as %<true%> for the address of %qD will "
"never be NULL"
msgstr ""
-#: c/c-typeck.c:11151 c/c-typeck.c:11271
+#: c/c-typeck.c:11154 c/c-typeck.c:11274
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr ""
-#: c/c-typeck.c:11158 c/c-typeck.c:11164
+#: c/c-typeck.c:11161 c/c-typeck.c:11167
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr ""
-#: c/c-typeck.c:11171 c/c-typeck.c:11281
+#: c/c-typeck.c:11174 c/c-typeck.c:11284
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c/c-typeck.c:11183 c/c-typeck.c:11188 c/c-typeck.c:11307 c/c-typeck.c:11312
+#: c/c-typeck.c:11186 c/c-typeck.c:11191 c/c-typeck.c:11310 c/c-typeck.c:11315
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr ""
-#: c/c-typeck.c:11259
+#: c/c-typeck.c:11262
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c/c-typeck.c:11261
+#: c/c-typeck.c:11264
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c/c-typeck.c:11266
+#: c/c-typeck.c:11269
#, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr ""
-#: c/c-typeck.c:11289 c/c-typeck.c:11292 c/c-typeck.c:11299 c/c-typeck.c:11302
-#: cp/typeck.c:4869 cp/typeck.c:4876
+#: c/c-typeck.c:11292 c/c-typeck.c:11295 c/c-typeck.c:11302 c/c-typeck.c:11305
+#: cp/typeck.c:4853 cp/typeck.c:4860
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c/c-typeck.c:11353 cp/typeck.c:4955
+#: c/c-typeck.c:11356 cp/typeck.c:4939
#, gcc-internal-format
msgid ""
"implicit conversion from %qT to %qT to match other operand of binary "
"expression"
msgstr ""
-#: c/c-typeck.c:11666
+#: c/c-typeck.c:11669
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr ""
-#: c/c-typeck.c:11670
+#: c/c-typeck.c:11673
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr ""
-#: c/c-typeck.c:11674
+#: c/c-typeck.c:11677
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr ""
-#: c/c-typeck.c:11690
+#: c/c-typeck.c:11693
#, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr ""
-#: c/c-typeck.c:11880 cp/semantics.c:8449
+#: c/c-typeck.c:11883 cp/semantics.c:8506
#, gcc-internal-format
msgid ""
"%<#pragma omp cancel must specify one of %<parallel%>, %<for%>, %<sections%> "
"or %<taskgroup%> clauses"
msgstr ""
-#: c/c-typeck.c:11919 cp/semantics.c:8486
+#: c/c-typeck.c:11922 cp/semantics.c:8543
#, gcc-internal-format
msgid ""
"%<#pragma omp cancellation point must specify one of %<parallel%>, %<for%>, "
"%<sections%> or %<taskgroup%> clauses"
msgstr ""
-#: c/c-typeck.c:11969 c/c-typeck.c:13075 cp/semantics.c:4458
-#: cp/semantics.c:6572
+#: c/c-typeck.c:11972 c/c-typeck.c:13078 cp/semantics.c:4507
+#: cp/semantics.c:6621
#, gcc-internal-format
msgid "bit-field %qE in %qs clause"
msgstr ""
-#: c/c-typeck.c:11978 c/c-typeck.c:13092 cp/semantics.c:4467
-#: cp/semantics.c:6589
+#: c/c-typeck.c:11981 c/c-typeck.c:13095 cp/semantics.c:4516
+#: cp/semantics.c:6638
#, gcc-internal-format
msgid "%qE is a member of a union"
msgstr ""
-#: c/c-typeck.c:11988 cp/semantics.c:4479 cp/semantics.c:6612
+#: c/c-typeck.c:11991 cp/semantics.c:4528 cp/semantics.c:6661
#, gcc-internal-format
msgid "%qD is not a variable in %qs clause"
msgstr ""
-#: c/c-typeck.c:11992 c/c-typeck.c:13109 cp/semantics.c:4483
-#: cp/semantics.c:6615
+#: c/c-typeck.c:11995 c/c-typeck.c:13112 cp/semantics.c:4532
+#: cp/semantics.c:6664
#, gcc-internal-format
msgid "%qE is not a variable in %qs clause"
msgstr ""
-#: c/c-typeck.c:12000 c/c-typeck.c:13116 c/c-typeck.c:13201
-#: cp/semantics.c:4500 cp/semantics.c:6621 cp/semantics.c:6767
+#: c/c-typeck.c:12003 c/c-typeck.c:13119 c/c-typeck.c:13204
+#: cp/semantics.c:4549 cp/semantics.c:6670 cp/semantics.c:6824
#, gcc-internal-format
msgid "%qD is threadprivate variable in %qs clause"
msgstr ""
-#: c/c-typeck.c:12022 cp/semantics.c:4531
+#: c/c-typeck.c:12025 cp/semantics.c:4580
#, gcc-internal-format
msgid "low bound %qE of array section does not have integral type"
msgstr ""
-#: c/c-typeck.c:12029 cp/semantics.c:4538
+#: c/c-typeck.c:12032 cp/semantics.c:4587
#, gcc-internal-format
msgid "length %qE of array section does not have integral type"
msgstr ""
-#: c/c-typeck.c:12056 c/c-typeck.c:12120 c/c-typeck.c:12378
-#: cp/semantics.c:4574 cp/semantics.c:4638
+#: c/c-typeck.c:12059 c/c-typeck.c:12123 c/c-typeck.c:12381
+#: cp/semantics.c:4623 cp/semantics.c:4687
#, gcc-internal-format
msgid "zero length array section in %qs clause"
msgstr ""
-#: c/c-typeck.c:12075 cp/semantics.c:4593
+#: c/c-typeck.c:12078 cp/semantics.c:4642
#, gcc-internal-format
msgid "for unknown bound array type length expression must be specified"
msgstr ""
-#: c/c-typeck.c:12083 cp/semantics.c:4601
+#: c/c-typeck.c:12086 cp/semantics.c:4650
#, gcc-internal-format
msgid "negative low bound in array section in %qs clause"
msgstr ""
-#: c/c-typeck.c:12092 c/c-typeck.c:12202 cp/semantics.c:4610
-#: cp/semantics.c:4720
+#: c/c-typeck.c:12095 c/c-typeck.c:12205 cp/semantics.c:4659
+#: cp/semantics.c:4769
#, gcc-internal-format
msgid "negative length in array section in %qs clause"
msgstr ""
-#: c/c-typeck.c:12109 cp/semantics.c:4627
+#: c/c-typeck.c:12112 cp/semantics.c:4676
#, gcc-internal-format
msgid "low bound %qE above array section size in %qs clause"
msgstr ""
-#: c/c-typeck.c:12146 cp/semantics.c:4664
+#: c/c-typeck.c:12149 cp/semantics.c:4713
#, gcc-internal-format
msgid "length %qE above array section size in %qs clause"
msgstr ""
-#: c/c-typeck.c:12161 cp/semantics.c:4679
+#: c/c-typeck.c:12164 cp/semantics.c:4728
#, gcc-internal-format
msgid "high bound %qE above array section size in %qs clause"
msgstr ""
-#: c/c-typeck.c:12194 cp/semantics.c:4712
+#: c/c-typeck.c:12197 cp/semantics.c:4761
#, gcc-internal-format
msgid "for pointer type length expression must be specified"
msgstr ""
-#: c/c-typeck.c:12212 c/c-typeck.c:12321 cp/semantics.c:4730
-#: cp/semantics.c:4842
+#: c/c-typeck.c:12215 c/c-typeck.c:12324 cp/semantics.c:4779
+#: cp/semantics.c:4891
#, gcc-internal-format
msgid "array section is not contiguous in %qs clause"
msgstr ""
-#: c/c-typeck.c:12220 cp/semantics.c:4738
+#: c/c-typeck.c:12223 cp/semantics.c:4787
#, gcc-internal-format
msgid "%qE does not have pointer or array type"
msgstr ""
-#: c/c-typeck.c:12598 c/c-typeck.c:12608
+#: c/c-typeck.c:12601 c/c-typeck.c:12611
#, gcc-internal-format
msgid "%qD in %<reduction%> clause is a zero size array"
msgstr ""
-#: c/c-typeck.c:12666
+#: c/c-typeck.c:12669
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c/c-typeck.c:12675 cp/semantics.c:5649
+#: c/c-typeck.c:12678 cp/semantics.c:5698
#, gcc-internal-format
msgid "user defined reduction not found for %qE"
msgstr ""
-#: c/c-typeck.c:12763
+#: c/c-typeck.c:12766
#, gcc-internal-format
msgid "variable length element type in array %<reduction%> clause"
msgstr ""
-#: c/c-typeck.c:12781 c/c-typeck.c:13259 cp/semantics.c:7083
+#: c/c-typeck.c:12784 c/c-typeck.c:13262 cp/semantics.c:7140
#, gcc-internal-format
msgid "%<nowait%> clause must not be used together with %<copyprivate%>"
msgstr ""
-#: c/c-typeck.c:12793 cp/semantics.c:7123
+#: c/c-typeck.c:12796 cp/semantics.c:7180
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c/c-typeck.c:12807 cp/semantics.c:5811
+#: c/c-typeck.c:12810 cp/semantics.c:5860
#, gcc-internal-format
msgid ""
"modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> "
"constructs"
msgstr ""
-#: c/c-typeck.c:12815
+#: c/c-typeck.c:12818
#, gcc-internal-format
msgid ""
"linear clause applied to non-integral non-pointer variable with type %qT"
msgstr ""
-#: c/c-typeck.c:12835 cp/semantics.c:5878
+#: c/c-typeck.c:12838 cp/semantics.c:5927
#, gcc-internal-format
msgid "%<linear%> clause step %qE is neither constant nor a parameter"
msgstr ""
-#: c/c-typeck.c:12865 c/c-typeck.c:13194 cp/semantics.c:5962
-#: cp/semantics.c:6760
+#: c/c-typeck.c:12868 c/c-typeck.c:13197 cp/semantics.c:6011
+#: cp/semantics.c:6817
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr ""
-#: c/c-typeck.c:12874 c/c-typeck.c:12901 c/c-typeck.c:12927
+#: c/c-typeck.c:12877 c/c-typeck.c:12904 c/c-typeck.c:12930
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c/c-typeck.c:12880 c/c-typeck.c:12906 c/c-typeck.c:13150 c/c-typeck.c:13167
-#: cp/semantics.c:5976 cp/semantics.c:6028 cp/semantics.c:6666
-#: cp/semantics.c:6683
+#: c/c-typeck.c:12883 c/c-typeck.c:12909 c/c-typeck.c:13153 c/c-typeck.c:13170
+#: cp/semantics.c:6025 cp/semantics.c:6077 cp/semantics.c:6723
+#: cp/semantics.c:6740
#, gcc-internal-format
msgid "%qD appears both in data and map clauses"
msgstr ""
-#: c/c-typeck.c:12894 cp/semantics.c:6017
+#: c/c-typeck.c:12897 cp/semantics.c:6066
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr ""
-#: c/c-typeck.c:12920 cp/semantics.c:6056
+#: c/c-typeck.c:12923 cp/semantics.c:6105
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr ""
-#: c/c-typeck.c:12939 cp/semantics.c:6406
+#: c/c-typeck.c:12942 cp/semantics.c:6455
#, gcc-internal-format
msgid "%qE is not a variable in %<aligned%> clause"
msgstr ""
-#: c/c-typeck.c:12946
+#: c/c-typeck.c:12949
#, gcc-internal-format
msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
msgstr ""
-#: c/c-typeck.c:12953
+#: c/c-typeck.c:12956
#, gcc-internal-format
msgid "%qE appears more than once in %<aligned%> clauses"
msgstr ""
-#: c/c-typeck.c:13008 cp/semantics.c:6488
+#: c/c-typeck.c:13011 cp/semantics.c:6537
#, gcc-internal-format
msgid "%qE is not a variable in %<depend%> clause"
msgstr ""
-#: c/c-typeck.c:13030 cp/semantics.c:6519
+#: c/c-typeck.c:13033 cp/semantics.c:6568
#, gcc-internal-format
msgid "array section does not have mappable type in %qs clause"
msgstr ""
-#: c/c-typeck.c:13047 c/c-typeck.c:13159 cp/semantics.c:6536
-#: cp/semantics.c:6675
+#: c/c-typeck.c:13050 c/c-typeck.c:13162 cp/semantics.c:6585
+#: cp/semantics.c:6732
#, gcc-internal-format
msgid "%qD appears more than once in motion clauses"
msgstr ""
-#: c/c-typeck.c:13050 c/c-typeck.c:13161 cp/semantics.c:6539
-#: cp/semantics.c:6677
+#: c/c-typeck.c:13053 c/c-typeck.c:13164 cp/semantics.c:6588
+#: cp/semantics.c:6734
#, gcc-internal-format
msgid "%qD appears more than once in map clauses"
msgstr ""
-#: c/c-typeck.c:13082 cp/semantics.c:6579
+#: c/c-typeck.c:13085 cp/semantics.c:6628
#, gcc-internal-format
msgid "%qE does not have a mappable type in %qs clause"
msgstr ""
-#: c/c-typeck.c:13135 c/c-typeck.c:13208 cp/semantics.c:6651
-#: cp/semantics.c:6774
+#: c/c-typeck.c:13138 c/c-typeck.c:13211 cp/semantics.c:6700
+#: cp/semantics.c:6831
#, gcc-internal-format
msgid "%qD does not have a mappable type in %qs clause"
msgstr ""
-#: c/c-typeck.c:13145 cp/semantics.c:5970 cp/semantics.c:6023
-#: cp/semantics.c:6062 cp/semantics.c:6661
+#: c/c-typeck.c:13148 cp/semantics.c:6019 cp/semantics.c:6072
+#: cp/semantics.c:6111 cp/semantics.c:6718
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: c/c-typeck.c:13189 cp/semantics.c:6754
+#: c/c-typeck.c:13192 cp/semantics.c:6811
#, gcc-internal-format
msgid "%qE is neither a variable nor a function name in clause %qs"
msgstr ""
-#: c/c-typeck.c:13217 cp/semantics.c:6783
+#: c/c-typeck.c:13220 cp/semantics.c:6840
#, gcc-internal-format
msgid "%qE appears more than once on the same %<declare target%> directive"
msgstr ""
-#: c/c-typeck.c:13231 cp/semantics.c:6798
+#: c/c-typeck.c:13234 cp/semantics.c:6855
#, gcc-internal-format
msgid "%qD is not an argument in %<uniform%> clause"
msgstr ""
-#: c/c-typeck.c:13234 cp/semantics.c:6800
+#: c/c-typeck.c:13237 cp/semantics.c:6857
#, gcc-internal-format
msgid "%qE is not an argument in %<uniform%> clause"
msgstr ""
-#: c/c-typeck.c:13249
+#: c/c-typeck.c:13252
#, gcc-internal-format
msgid "%qs variable is neither a pointer nor an array"
msgstr ""
-#: c/c-typeck.c:13324 cp/semantics.c:6216
+#: c/c-typeck.c:13327 cp/semantics.c:6265
#, gcc-internal-format
msgid "%<nonmonotonic%> modifier specified for %qs schedule kind"
msgstr ""
-#: c/c-typeck.c:13355 cp/semantics.c:6975
+#: c/c-typeck.c:13358 cp/semantics.c:7032
#, gcc-internal-format
msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
msgstr ""
-#: c/c-typeck.c:13405 cp/semantics.c:7166
+#: c/c-typeck.c:13408 cp/semantics.c:7223
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c/c-typeck.c:13425 cp/semantics.c:7057
+#: c/c-typeck.c:13428 cp/semantics.c:7114
#, gcc-internal-format
msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
msgstr ""
-#: c/c-typeck.c:13437 cp/semantics.c:7070
+#: c/c-typeck.c:13440 cp/semantics.c:7127
#, gcc-internal-format
msgid ""
"%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
msgstr ""
-#: c/c-typeck.c:13455 cp/semantics.c:7037
+#: c/c-typeck.c:13458 cp/semantics.c:7094
#, gcc-internal-format
msgid ""
"%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
msgstr ""
-#: c/c-typeck.c:13583
+#: c/c-typeck.c:13586
#, gcc-internal-format
msgid "cannot use %<va_arg%> with reverse storage order"
msgstr ""
-#: c/c-typeck.c:13588
+#: c/c-typeck.c:13591
#, gcc-internal-format
msgid "second argument to %<va_arg%> is of incomplete type %qT"
msgstr ""
-#: c/c-typeck.c:13594
+#: c/c-typeck.c:13597
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
#. A bad conversion for 'this' must be discarding cv-quals.
-#: cp/call.c:3311
+#: cp/call.c:3313
#, gcc-internal-format
msgid " passing %qT as %<this%> argument discards qualifiers"
msgstr ""
-#: cp/call.c:3315
+#: cp/call.c:3317
#, gcc-internal-format
msgid " no known conversion for implicit %<this%> parameter from %qT to %qT"
msgstr ""
-#: cp/call.c:3322
+#: cp/call.c:3324
#, gcc-internal-format, gfc-internal-format
msgid " conversion of argument %d would be ill-formed:"
msgstr ""
#. Conversion of conversion function return value failed.
-#: cp/call.c:3329
+#: cp/call.c:3331
#, gcc-internal-format
msgid " no known conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:3332
+#: cp/call.c:3334
#, gcc-internal-format
msgid " no known conversion for argument %d from %qT to %qT"
msgstr ""
-#: cp/call.c:3343 cp/pt.c:6088
+#: cp/call.c:3345 cp/pt.c:6094
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
msgstr[0] ""
msgstr[1] ""
-#: cp/call.c:3368
+#: cp/call.c:3370
#, gcc-internal-format
msgid "%s%D(%T, %T, %T) <built-in>"
msgstr ""
-#: cp/call.c:3373
+#: cp/call.c:3375
#, gcc-internal-format
msgid "%s%D(%T, %T) <built-in>"
msgstr ""
-#: cp/call.c:3377
+#: cp/call.c:3379
#, gcc-internal-format
msgid "%s%D(%T) <built-in>"
msgstr ""
-#: cp/call.c:3381
+#: cp/call.c:3383
#, gcc-internal-format
msgid "%s%T <conversion>"
msgstr ""
-#: cp/call.c:3383
+#: cp/call.c:3385
#, gcc-internal-format
msgid "%s%#D <near match>"
msgstr ""
-#: cp/call.c:3385
+#: cp/call.c:3387
#, gcc-internal-format
msgid "%s%#D <deleted>"
msgstr ""
-#: cp/call.c:3387
+#: cp/call.c:3389
#, gcc-internal-format
msgid "%s%#D"
msgstr ""
-#: cp/call.c:3406
+#: cp/call.c:3408
#, gcc-internal-format
msgid ""
" return type %qT of explicit conversion function cannot be converted to %qT "
"with a qualification conversion"
msgstr ""
-#: cp/call.c:3412
+#: cp/call.c:3414
#, gcc-internal-format
msgid ""
" conversion from return type %qT of template conversion function "
"specialization to %qT is not an exact match"
msgstr ""
-#: cp/call.c:3423
+#: cp/call.c:3425
#, gcc-internal-format
msgid ""
" substitution of deduced template arguments resulted in errors seen above"
msgstr ""
#. Re-run template unification with diagnostics.
-#: cp/call.c:3428
+#: cp/call.c:3430
#, gcc-internal-format
msgid " template argument deduction/substitution failed:"
msgstr ""
-#: cp/call.c:3442
+#: cp/call.c:3444
#, gcc-internal-format
msgid ""
" a constructor taking a single argument of its own class type is invalid"
msgstr ""
-#: cp/call.c:3806
+#: cp/call.c:3808
#, gcc-internal-format
msgid "conversion from %qT to %qT is ambiguous"
msgstr ""
-#: cp/call.c:3933
+#: cp/call.c:3935
#, gcc-internal-format
msgid ""
"conversion from %qT to %qT not considered for non-type template argument"
msgstr ""
-#: cp/call.c:4051
+#: cp/call.c:4053
#, gcc-internal-format
msgid "no matching function for call to %<%D(%A)%>"
msgstr ""
-#: cp/call.c:4054
+#: cp/call.c:4056
#, 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:4289
+#: cp/call.c:4291
#, gcc-internal-format
msgid ""
"pointer-to-member function %E cannot be called without an object; consider "
"using .* or ->*"
msgstr ""
-#: cp/call.c:4360
+#: cp/call.c:4362
#, gcc-internal-format
msgid "no match for call to %<(%T) (%A)%>"
msgstr ""
-#: cp/call.c:4373
+#: cp/call.c:4375
#, gcc-internal-format
msgid "call of %<(%T) (%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:4421
+#: cp/call.c:4423
#, gcc-internal-format
msgid "ambiguous overload for "
msgstr ""
-#: cp/call.c:4422
+#: cp/call.c:4424
#, gcc-internal-format
msgid "no match for "
msgstr ""
-#: cp/call.c:4425
+#: cp/call.c:4427
#, gcc-internal-format
msgid " (operand types are %qT, %qT, and %qT)"
msgstr ""
-#: cp/call.c:4427
+#: cp/call.c:4429
#, gcc-internal-format
msgid " (operand types are %qT and %qT)"
msgstr ""
-#: cp/call.c:4429
+#: cp/call.c:4431
#, gcc-internal-format
msgid " (operand type is %qT)"
msgstr ""
-#: cp/call.c:4449
+#: cp/call.c:4451
#, gcc-internal-format
msgid "ternary %<operator?:%>"
msgstr ""
-#: cp/call.c:4453
+#: cp/call.c:4455
#, gcc-internal-format
msgid "ternary %<operator?:%> in %<%E ? %E : %E%>"
msgstr ""
-#: cp/call.c:4462 cp/call.c:4493 cp/call.c:4502
+#: cp/call.c:4464 cp/call.c:4495 cp/call.c:4504
#, gcc-internal-format
msgid "%<operator%s%>"
msgstr ""
-#: cp/call.c:4465
+#: cp/call.c:4467
#, gcc-internal-format
msgid "%<operator%s%> in %<%E%s%>"
msgstr ""
-#: cp/call.c:4472
+#: cp/call.c:4474
#, gcc-internal-format
msgid "%<operator[]%>"
msgstr ""
-#: cp/call.c:4475
+#: cp/call.c:4477
#, gcc-internal-format
msgid "%<operator[]%> in %<%E[%E]%>"
msgstr ""
-#: cp/call.c:4483
+#: cp/call.c:4485
#, gcc-internal-format
msgid "%qs"
msgstr ""
-#: cp/call.c:4486
+#: cp/call.c:4488
#, gcc-internal-format
msgid "%qs in %<%s %E%>"
msgstr ""
-#: cp/call.c:4496
+#: cp/call.c:4498
#, gcc-internal-format
msgid "%<operator%s%> in %<%E %s %E%>"
msgstr ""
-#: cp/call.c:4505
+#: cp/call.c:4507
#, gcc-internal-format
msgid "%<operator%s%> in %<%s%E%>"
msgstr ""
-#: cp/call.c:4614
+#: cp/call.c:4616
#, gcc-internal-format
msgid "ISO C++ forbids omitting the middle term of a ?: expression"
msgstr ""
-#: cp/call.c:4672
+#: cp/call.c:4675
#, gcc-internal-format
msgid ""
"inferred scalar type %qT is not an integer or floating point type of the "
"same size as %qT"
msgstr ""
-#: cp/call.c:4749
+#: cp/call.c:4752
#, gcc-internal-format
msgid "incompatible vector types in conditional expression: %qT, %qT and %qT"
msgstr ""
-#: cp/call.c:4839
+#: cp/call.c:4842
#, 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:4844
+#: cp/call.c:4847
#, 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:4895 cp/call.c:5011 cp/call.c:5154
+#: cp/call.c:4898 cp/call.c:5014 cp/call.c:5157
#, gcc-internal-format
msgid "operands to ?: have different types %qT and %qT"
msgstr ""
-#: cp/call.c:4898
+#: cp/call.c:4901
#, gcc-internal-format
msgid " and each type can be converted to the other"
msgstr ""
-#: cp/call.c:5099
+#: cp/call.c:5102
#, gcc-internal-format
msgid "enumeral mismatch in conditional expression: %qT vs %qT"
msgstr ""
-#: cp/call.c:5111
+#: cp/call.c:5114
#, gcc-internal-format
msgid "enumeral and non-enumeral type in conditional expression"
msgstr ""
-#: cp/call.c:5574
+#: cp/call.c:5577
#, gcc-internal-format
msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead"
msgstr ""
-#: cp/call.c:5576
+#: cp/call.c:5579
#, gcc-internal-format
msgid "no %<%D(int)%> declared for postfix %qs"
msgstr ""
-#: cp/call.c:5682
+#: cp/call.c:5685
#, gcc-internal-format
msgid "comparison between %q#T and %q#T"
msgstr ""
-#: cp/call.c:5953
+#: cp/call.c:5956
#, gcc-internal-format
msgid ""
"exception cleanup for this placement new selects non-placement operator "
"delete"
msgstr ""
-#: cp/call.c:5956
+#: cp/call.c:5959
#, gcc-internal-format
msgid ""
"%qD is a usual (non-placement) deallocation function in C++14 (or with -"
"fsized-deallocation)"
msgstr ""
-#: cp/call.c:5991
+#: cp/call.c:5994
#, gcc-internal-format
msgid "%qD is a usual (non-placement) deallocation function"
msgstr ""
-#: cp/call.c:6108
+#: cp/call.c:6111
#, gcc-internal-format
msgid "no corresponding deallocation function for %qD"
msgstr ""
-#: cp/call.c:6114
+#: cp/call.c:6117
#, gcc-internal-format
msgid "no suitable %<operator %s%> for %qT"
msgstr ""
-#: cp/call.c:6136
+#: cp/call.c:6139
#, gcc-internal-format
msgid "%q#D is private within this context"
msgstr ""
-#: cp/call.c:6138
+#: cp/call.c:6141
#, gcc-internal-format
msgid "declared private here"
msgstr ""
-#: cp/call.c:6142
+#: cp/call.c:6145
#, gcc-internal-format
msgid "%q#D is protected within this context"
msgstr ""
-#: cp/call.c:6144
+#: cp/call.c:6147
#, gcc-internal-format
msgid "declared protected here"
msgstr ""
-#: cp/call.c:6148
+#: cp/call.c:6151
#, gcc-internal-format
msgid "%q#D is inaccessible within this context"
msgstr ""
-#: cp/call.c:6201
+#: cp/call.c:6204
#, gcc-internal-format
msgid "passing NULL to non-pointer argument %P of %qD"
msgstr ""
-#: cp/call.c:6205
+#: cp/call.c:6208
#, gcc-internal-format
msgid "converting to non-pointer type %qT from NULL"
msgstr ""
-#: cp/call.c:6214
+#: cp/call.c:6217
#, gcc-internal-format
msgid "converting %<false%> to pointer type for argument %P of %qD"
msgstr ""
-#: cp/call.c:6218
+#: cp/call.c:6221
#, gcc-internal-format
msgid "converting %<false%> to pointer type %qT"
msgstr ""
-#: cp/call.c:6281
+#: cp/call.c:6284
#, gcc-internal-format
msgid "too many braces around initializer for %qT"
msgstr ""
-#: cp/call.c:6292
+#: cp/call.c:6295
#, gcc-internal-format
msgid "converting to %qT from %qT requires direct-initialization"
msgstr ""
-#: cp/call.c:6300
+#: cp/call.c:6303
#, gcc-internal-format
msgid "invalid user-defined conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:6317 cp/call.c:6341 cp/call.c:6459 cp/call.c:6551 cp/call.c:6593
-#: cp/call.c:6621
+#: cp/call.c:6320 cp/call.c:6344 cp/call.c:6462 cp/call.c:6554 cp/call.c:6596
+#: cp/call.c:6624
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr ""
-#: cp/call.c:6337 cp/cvt.c:224
+#: cp/call.c:6340 cp/cvt.c:224
#, gcc-internal-format
msgid "invalid conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:6371 cp/call.c:6378
+#: cp/call.c:6374 cp/call.c:6381
#, gcc-internal-format
msgid ""
"converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:6374
+#: cp/call.c:6377
#, gcc-internal-format
msgid "in C++11 and above a default constructor can be explicit"
msgstr ""
-#: cp/call.c:6607
+#: cp/call.c:6610
#, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr ""
-#: cp/call.c:6611 cp/call.c:9934
+#: cp/call.c:6614 cp/call.c:9945
#, gcc-internal-format
msgid ""
"invalid initialization of non-const reference of type %qT from an rvalue of "
"type %qT"
msgstr ""
-#: cp/call.c:6614
+#: cp/call.c:6617
#, gcc-internal-format
msgid "binding %qT to reference of type %qT discards qualifiers"
msgstr ""
-#: cp/call.c:6650
+#: cp/call.c:6653
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr ""
-#: cp/call.c:6653 cp/call.c:6670
+#: cp/call.c:6656 cp/call.c:6673
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:6656
+#: cp/call.c:6659
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr ""
-#: cp/call.c:6783 cp/cvt.c:1737
+#: cp/call.c:6786 cp/cvt.c:1738
#, gcc-internal-format
msgid ""
"scoped enum %qT passed through ... as %qT before -fabi-version=6, %qT after"
msgstr ""
-#: cp/call.c:6824
+#: cp/call.c:6827
#, gcc-internal-format
msgid ""
"passing objects of non-trivially-copyable type %q#T through %<...%> is "
"conditionally supported"
msgstr ""
-#: cp/call.c:6855
+#: cp/call.c:6858
#, gcc-internal-format
msgid "cannot receive reference type %qT through %<...%>"
msgstr ""
-#: cp/call.c:6865
+#: cp/call.c:6868
#, gcc-internal-format
msgid ""
"receiving objects of non-trivially-copyable type %q#T through %<...%> is "
"conditionally-supported"
msgstr ""
-#: cp/call.c:6925
+#: cp/call.c:6928
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr ""
-#: cp/call.c:6934
+#: cp/call.c:6937
#, gcc-internal-format
msgid ""
"call to %qD uses the default argument for parameter %P, which is not yet "
"defined"
msgstr ""
-#: cp/call.c:7036
+#: cp/call.c:7039
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr ""
-#: cp/call.c:7083
+#: cp/call.c:7088
#, gcc-internal-format
msgid "use of multiversioned function without a default"
msgstr ""
-#: cp/call.c:7364
+#: cp/call.c:7369
#, gcc-internal-format
msgid "passing %qT as %<this%> argument discards qualifiers"
msgstr ""
-#: cp/call.c:7367 cp/call.c:7483 cp/call.c:9164 cp/name-lookup.c:5710
+#: cp/call.c:7372 cp/call.c:7488 cp/call.c:9175 cp/name-lookup.c:5728
#, gcc-internal-format
msgid " in call to %qD"
msgstr ""
-#: cp/call.c:7397
+#: cp/call.c:7402
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr ""
-#: cp/call.c:7479
+#: cp/call.c:7484
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr ""
-#: cp/call.c:7485
+#: cp/call.c:7490
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:7851
+#: cp/call.c:7866
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:8026
+#: cp/call.c:8037
#, gcc-internal-format
msgid "constructor delegates to itself"
msgstr ""
-#: cp/call.c:8116
+#: cp/call.c:8127
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr ""
-#: cp/call.c:8162 cp/typeck.c:2775
+#: cp/call.c:8173 cp/pt.c:13654 cp/typeck.c:2783
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:8164
+#: cp/call.c:8175
#, gcc-internal-format
msgid "for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:8294
+#: cp/call.c:8305
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr ""
-#: cp/call.c:8307
+#: cp/call.c:8318
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr ""
-#: cp/call.c:8333
+#: cp/call.c:8344
#, gcc-internal-format
msgid "no matching function for call to %<%s(%A)%>"
msgstr ""
-#: cp/call.c:8336
+#: cp/call.c:8347
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:8357
+#: cp/call.c:8368
#, gcc-internal-format
msgid "pure virtual %q#D called from non-static data member initializer"
msgstr ""
-#: cp/call.c:8383
+#: cp/call.c:8394
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr ""
-#: cp/call.c:9162
+#: cp/call.c:9173
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:9222
+#: cp/call.c:9233
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:9223
+#: cp/call.c:9234
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:9226
+#: cp/call.c:9237
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:9388
+#: cp/call.c:9399
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr ""
-#: cp/call.c:9392
+#: cp/call.c:9403
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr ""
-#: cp/call.c:9394
+#: cp/call.c:9405
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr ""
-#: cp/call.c:9439
+#: cp/call.c:9450
#, 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:9617
+#: cp/call.c:9628
#, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr ""
-#: cp/call.c:9811
+#: cp/call.c:9822
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:9938
+#: cp/call.c:9949
#, gcc-internal-format
msgid ""
"invalid initialization of reference of type %qT from expression of type %qT"
msgstr ""
-#: cp/class.c:305
+#: cp/class.c:323
#, gcc-internal-format
msgid ""
"cannot convert from pointer to base class %qT to pointer to derived class "
"%qT because the base is virtual"
msgstr ""
-#: cp/class.c:309
+#: cp/class.c:327
#, gcc-internal-format
msgid ""
"cannot convert from base class %qT to derived class %qT because the base is "
"virtual"
msgstr ""
-#: cp/class.c:316
+#: cp/class.c:334
#, gcc-internal-format
msgid ""
"cannot convert from pointer to base class %qT to pointer to derived class "
"%qT via virtual base %qT"
msgstr ""
-#: cp/class.c:321
+#: cp/class.c:339
#, gcc-internal-format
msgid ""
"cannot convert from base class %qT to derived class %qT via virtual base %qT"
msgstr ""
-#: cp/class.c:1036
+#: cp/class.c:1054
#, gcc-internal-format
msgid "Java class %qT cannot have a destructor"
msgstr ""
-#: cp/class.c:1038
+#: cp/class.c:1056
#, gcc-internal-format
msgid "Java class %qT cannot have an implicit non-trivial destructor"
msgstr ""
-#: cp/class.c:1174
+#: cp/class.c:1192
#, gcc-internal-format
msgid "%q#D inherited from %qT"
msgstr ""
-#: cp/class.c:1177
+#: cp/class.c:1195
#, gcc-internal-format
msgid "conflicts with version inherited from %qT"
msgstr ""
-#: cp/class.c:1191
+#: cp/class.c:1209
#, gcc-internal-format
msgid "%q+#D cannot be overloaded"
msgstr ""
-#: cp/class.c:1192
+#: cp/class.c:1210
#, gcc-internal-format
msgid "with %q+#D"
msgstr ""
-#: cp/class.c:1265
+#: cp/class.c:1283
#, gcc-internal-format
msgid "conflicting access specifications for method %q+D, ignored"
msgstr ""
-#: cp/class.c:1268
+#: cp/class.c:1286
#, gcc-internal-format
msgid "conflicting access specifications for field %qE, ignored"
msgstr ""
-#: cp/class.c:1331 cp/class.c:1339
+#: cp/class.c:1349 cp/class.c:1357
#, gcc-internal-format
msgid "%q+D invalid in %q#T"
msgstr ""
-#: cp/class.c:1332
+#: cp/class.c:1350
#, gcc-internal-format
msgid " because of local method %q+#D with same name"
msgstr ""
-#: cp/class.c:1340
+#: cp/class.c:1358
#, gcc-internal-format
msgid " because of local member %q+#D with same name"
msgstr ""
-#: cp/class.c:1395
+#: cp/class.c:1413
#, gcc-internal-format
msgid "%qD inherits the %E ABI tag that %qT (used in its return type) has"
msgstr ""
-#: cp/class.c:1398 cp/class.c:1404 cp/class.c:1410 cp/class.c:1421
+#: cp/class.c:1416 cp/class.c:1422 cp/class.c:1428 cp/class.c:1439
#, gcc-internal-format
msgid "%qT declared here"
msgstr ""
-#: cp/class.c:1402
+#: cp/class.c:1420
#, gcc-internal-format
msgid "%qD inherits the %E ABI tag that %qT (used in its type) has"
msgstr ""
-#: cp/class.c:1408
+#: cp/class.c:1426
#, gcc-internal-format
msgid "%qT does not have the %E ABI tag that base %qT has"
msgstr ""
-#: cp/class.c:1415
+#: cp/class.c:1433
#, gcc-internal-format
msgid "%qT does not have the %E ABI tag that %qT (used in the type of %qD) has"
msgstr ""
-#: cp/class.c:1690
+#: cp/class.c:1717
#, gcc-internal-format
msgid "cannot derive from %<final%> base %qT in derived type %qT"
msgstr ""
-#: cp/class.c:2115
+#: cp/class.c:2163
#, gcc-internal-format
msgid "all member functions in class %qT are private"
msgstr ""
-#: cp/class.c:2127
+#: cp/class.c:2175
#, gcc-internal-format
msgid "%q#T only defines a private destructor and has no friends"
msgstr ""
-#: cp/class.c:2172
+#: cp/class.c:2220
#, gcc-internal-format
msgid "%q#T only defines private constructors and has no friends"
msgstr ""
-#: cp/class.c:2565
+#: cp/class.c:2613
#, gcc-internal-format
msgid "no unique final overrider for %qD in %qT"
msgstr ""
-#: cp/class.c:2926
+#: cp/class.c:2974
#, gcc-internal-format
msgid "%qD can be marked override"
msgstr ""
-#: cp/class.c:2938
+#: cp/class.c:2986
#, gcc-internal-format
msgid "%q+#D marked %<final%>, but is not virtual"
msgstr ""
-#: cp/class.c:2940
+#: cp/class.c:2988
#, gcc-internal-format
msgid "%q+#D marked %<override%>, but does not override"
msgstr ""
-#: cp/class.c:3010
+#: cp/class.c:3058
#, gcc-internal-format
msgid "%qD was hidden"
msgstr ""
-#: cp/class.c:3012
+#: cp/class.c:3060
#, gcc-internal-format
msgid " by %qD"
msgstr ""
-#: cp/class.c:3046 cp/decl2.c:1538
+#: cp/class.c:3094 cp/decl2.c:1538
#, gcc-internal-format
msgid "%q#D invalid; an anonymous union can only have non-static data members"
msgstr ""
-#: cp/class.c:3050
+#: cp/class.c:3098
#, gcc-internal-format
msgid "%q#D invalid; an anonymous struct can only have non-static data members"
msgstr ""
-#: cp/class.c:3062 cp/decl2.c:1545
+#: cp/class.c:3110 cp/decl2.c:1545
#, gcc-internal-format
msgid "private member %q#D in anonymous union"
msgstr ""
-#: cp/class.c:3065
+#: cp/class.c:3113
#, gcc-internal-format
msgid "private member %q#D in anonymous struct"
msgstr ""
-#: cp/class.c:3071 cp/decl2.c:1548
+#: cp/class.c:3119 cp/decl2.c:1548
#, gcc-internal-format
msgid "protected member %q#D in anonymous union"
msgstr ""
-#: cp/class.c:3074
+#: cp/class.c:3122
#, gcc-internal-format
msgid "protected member %q#D in anonymous struct"
msgstr ""
-#: cp/class.c:3253
+#: cp/class.c:3301
#, gcc-internal-format
msgid "the ellipsis in %qD is not inherited"
msgstr ""
-#: cp/class.c:3428
+#: cp/class.c:3476
#, gcc-internal-format
msgid "bit-field %q+#D with non-integral type"
msgstr ""
-#: cp/class.c:3444
+#: cp/class.c:3492
#, gcc-internal-format
msgid "bit-field %q+D width not an integer constant"
msgstr ""
-#: cp/class.c:3449
+#: cp/class.c:3497
#, gcc-internal-format
msgid "negative width in bit-field %q+D"
msgstr ""
-#: cp/class.c:3454
+#: cp/class.c:3502
#, gcc-internal-format
msgid "zero width for bit-field %q+D"
msgstr ""
-#: cp/class.c:3464
+#: cp/class.c:3512
#, gcc-internal-format
msgid "width of %qD exceeds its type"
msgstr ""
-#: cp/class.c:3469
+#: cp/class.c:3517
#, gcc-internal-format
msgid "%qD is too small to hold all values of %q#T"
msgstr ""
-#: cp/class.c:3529
+#: cp/class.c:3577
#, gcc-internal-format
msgid "member %q+#D with constructor not allowed in union"
msgstr ""
-#: cp/class.c:3532
+#: cp/class.c:3580
#, gcc-internal-format
msgid "member %q+#D with destructor not allowed in union"
msgstr ""
-#: cp/class.c:3534
+#: cp/class.c:3582
#, gcc-internal-format
msgid "member %q+#D with copy assignment operator not allowed in union"
msgstr ""
-#: cp/class.c:3538
+#: cp/class.c:3586
#, gcc-internal-format
msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/class.c:3575
+#: cp/class.c:3623
#, gcc-internal-format
msgid "multiple fields in union %qT initialized"
msgstr ""
-#: cp/class.c:3663
+#: cp/class.c:3711
#, gcc-internal-format
msgid "in C++98 %q+D may not be static because it is a member of a union"
msgstr ""
-#: cp/class.c:3669
+#: cp/class.c:3717
#, gcc-internal-format
msgid ""
"in C++98 %q+D may not have reference type %qT because it is a member of a "
"union"
msgstr ""
-#: cp/class.c:3679
+#: cp/class.c:3727
#, gcc-internal-format
msgid "field %q+D invalidly declared function type"
msgstr ""
-#: cp/class.c:3685
+#: cp/class.c:3733
#, gcc-internal-format
msgid "field %q+D invalidly declared method type"
msgstr ""
-#: cp/class.c:3745
+#: cp/class.c:3793
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q#D"
msgstr ""
-#: cp/class.c:3793
+#: cp/class.c:3841
#, gcc-internal-format
msgid "member %q+D cannot be declared both %<const%> and %<mutable%>"
msgstr ""
-#: cp/class.c:3799
+#: cp/class.c:3847
#, gcc-internal-format
msgid "member %q+D cannot be declared as a %<mutable%> reference"
msgstr ""
-#: cp/class.c:3861
+#: cp/class.c:3909
#, gcc-internal-format
msgid "field %q#D with same name as class"
msgstr ""
-#: cp/class.c:3884
+#: cp/class.c:3932
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr ""
-#: cp/class.c:3889
+#: cp/class.c:3937
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr ""
-#: cp/class.c:3891
+#: cp/class.c:3939
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3895
+#: cp/class.c:3943
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:4301
+#: cp/class.c:4347
#, gcc-internal-format
msgid "alignment of %qD increased in -fabi-version=9 (GCC 5.2)"
msgstr ""
-#: cp/class.c:4304
+#: cp/class.c:4350
#, gcc-internal-format
msgid "alignment of %qD will increase in -fabi-version=9"
msgstr ""
-#: cp/class.c:4558
+#: cp/class.c:4604
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr ""
-#: cp/class.c:4995
+#: cp/class.c:5041
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:5016
+#: cp/class.c:5062
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:5595 cp/constexpr.c:217
+#: cp/class.c:5641 cp/constexpr.c:217
#, gcc-internal-format
msgid ""
"enclosing class of constexpr non-static member function %q+#D is not a "
"literal type"
msgstr ""
-#: cp/class.c:5620
+#: cp/class.c:5666
#, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr ""
-#: cp/class.c:5622
+#: cp/class.c:5668
#, gcc-internal-format
msgid " %q+T has a non-trivial destructor"
msgstr ""
-#: cp/class.c:5627
+#: cp/class.c:5673
#, gcc-internal-format
msgid ""
" %q+T is not an aggregate, does not have a trivial default constructor, and "
"has no constexpr constructor that is not a copy or move constructor"
msgstr ""
-#: cp/class.c:5662
+#: cp/class.c:5708
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr ""
-#: cp/class.c:5677
+#: cp/class.c:5723
#, gcc-internal-format
msgid " non-static data member %qD has non-literal type"
msgstr ""
-#: cp/class.c:5684
+#: cp/class.c:5730
#, gcc-internal-format
msgid " non-static data member %qD has volatile type"
msgstr ""
-#: cp/class.c:5802
+#: cp/class.c:5848
#, gcc-internal-format
msgid "base class %q#T has accessible non-virtual destructor"
msgstr ""
-#: cp/class.c:5831
+#: cp/class.c:5877
#, gcc-internal-format
msgid "non-static reference %q#D in class without a constructor"
msgstr ""
-#: cp/class.c:5837
+#: cp/class.c:5883
#, gcc-internal-format
msgid "non-static const member %q#D in class without a constructor"
msgstr ""
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5863
+#: cp/class.c:5909
#, gcc-internal-format
msgid ""
"%q+D declared to take const reference, but implicit declaration would take "
"non-const"
msgstr ""
-#: cp/class.c:6140
+#: cp/class.c:6186
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:6152
+#: cp/class.c:6198
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:6380
+#: cp/class.c:6426
#, gcc-internal-format
msgid ""
"offset of %qD is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:6535
+#: cp/class.c:6581
#, gcc-internal-format
msgid "size of type %qT is too large (%qE bytes)"
msgstr ""
-#: cp/class.c:6744
+#: cp/class.c:6786
#, gcc-internal-format
msgid "zero-size array member %qD not at end of %q#T"
msgstr ""
-#: cp/class.c:6746
+#: cp/class.c:6788
#, gcc-internal-format
msgid "zero-size array member %qD in an otherwise empty %q#T"
msgstr ""
-#: cp/class.c:6751 cp/class.c:6774
+#: cp/class.c:6793 cp/class.c:6816
#, gcc-internal-format
msgid "in the definition of %q#T"
msgstr ""
-#: cp/class.c:6756
+#: cp/class.c:6798
#, gcc-internal-format
msgid "flexible array member %qD not at end of %q#T"
msgstr ""
-#: cp/class.c:6758
+#: cp/class.c:6800
#, gcc-internal-format
msgid "flexible array member %qD in an otherwise empty %q#T"
msgstr ""
-#: cp/class.c:6771
+#: cp/class.c:6813
#, gcc-internal-format
msgid "next member %q#D declared here"
msgstr ""
-#: cp/class.c:6868 cp/decl.c:12877 cp/parser.c:21917
+#: cp/class.c:6910 cp/decl.c:12913 cp/parser.c:21949
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr ""
-#: cp/class.c:7014
+#: cp/class.c:7056
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr ""
-#: cp/class.c:7042
+#: cp/class.c:7084
#, gcc-internal-format
msgid "type transparent %q#T does not have any fields"
msgstr ""
-#: cp/class.c:7048
+#: cp/class.c:7090
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:7052
+#: cp/class.c:7094
#, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr ""
-#: cp/class.c:7058
+#: cp/class.c:7100
#, gcc-internal-format
msgid ""
"type transparent %q#T cannot be made transparent because the type of the "
"first field has a different ABI from the class overall"
msgstr ""
-#: cp/class.c:7222
+#: cp/class.c:7264
#, gcc-internal-format
msgid ""
"definition of std::initializer_list does not match #include "
"<initializer_list>"
msgstr ""
-#: cp/class.c:7233
+#: cp/class.c:7275
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:7769
+#: cp/class.c:7811
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr ""
-#: cp/class.c:7859
+#: cp/class.c:7901
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:8006
+#: cp/class.c:8048
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr ""
-#: cp/class.c:8034
+#: cp/class.c:8076
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr ""
-#: cp/class.c:8061
+#: cp/class.c:8103
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr ""
-#: cp/class.c:8064
+#: cp/class.c:8106
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:8139 cp/class.c:8174
+#: cp/class.c:8181 cp/class.c:8216
#, gcc-internal-format
msgid "not enough type information"
msgstr ""
-#: cp/class.c:8157 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247
+#: cp/class.c:8199 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr ""
@@ -36798,12 +36892,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:8435
+#: cp/class.c:8477
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr ""
-#: cp/class.c:8437
+#: cp/class.c:8479
#, gcc-internal-format
msgid "changes meaning of %qD from %q#D"
msgstr ""
@@ -36843,270 +36937,281 @@ msgstr ""
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/constexpr.c:573
+#: cp/constexpr.c:584
#, gcc-internal-format
msgid "body of %<constexpr%> constructor cannot be a function-try-block"
msgstr ""
-#: cp/constexpr.c:704
+#: cp/constexpr.c:715
#, gcc-internal-format
msgid ""
"%<constexpr%> constructor for union %qT must initialize exactly one non-"
"static data member"
msgstr ""
-#: cp/constexpr.c:744
+#: cp/constexpr.c:755
#, gcc-internal-format
msgid ""
"member %qD must be initialized by mem-initializer in %<constexpr%> "
"constructor"
msgstr ""
-#: cp/constexpr.c:776
+#: cp/constexpr.c:787
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/constexpr.c:830
+#: cp/constexpr.c:841
#, gcc-internal-format
msgid "%qD is not usable as a constexpr function because:"
msgstr ""
-#: cp/constexpr.c:1185 cp/constexpr.c:4304
+#: cp/constexpr.c:1295 cp/constexpr.c:4591
#, gcc-internal-format
msgid "call to internal function"
msgstr ""
-#: cp/constexpr.c:1203
+#: cp/constexpr.c:1313
#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr ""
-#: cp/constexpr.c:1221 cp/constexpr.c:4321
+#: cp/constexpr.c:1331 cp/constexpr.c:4608
#, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr ""
+#: cp/constexpr.c:1393
+#, gcc-internal-format
+msgid "%qD called in a constant expression before its definition is complete"
+msgstr ""
+
#. The definition of fun was somehow unsuitable.
-#: cp/constexpr.c:1265
+#: cp/constexpr.c:1398
#, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr ""
-#: cp/constexpr.c:1269
+#: cp/constexpr.c:1402
#, gcc-internal-format
msgid "%qD used before its definition"
msgstr ""
-#: cp/constexpr.c:1322
+#: cp/constexpr.c:1442
#, gcc-internal-format
msgid "call has circular dependency"
msgstr ""
-#: cp/constexpr.c:1333
+#: cp/constexpr.c:1453
#, gcc-internal-format, gfc-internal-format
msgid ""
"constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to "
"increase the maximum)"
msgstr ""
-#: cp/constexpr.c:1394
+#: cp/constexpr.c:1525
#, gcc-internal-format
msgid "constexpr call flows off the end of the function"
msgstr ""
-#: cp/constexpr.c:1466
+#: cp/constexpr.c:1605
#, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr ""
-#: cp/constexpr.c:1506
+#: cp/constexpr.c:1645
#, gcc-internal-format
msgid "right operand of shift expression %q+E is negative"
msgstr ""
-#: cp/constexpr.c:1513
+#: cp/constexpr.c:1652
#, gcc-internal-format
msgid ""
"right operand of shift expression %q+E is >= than the precision of the left "
"operand"
msgstr ""
-#: cp/constexpr.c:1531
+#: cp/constexpr.c:1670
#, gcc-internal-format
msgid "left operand of shift expression %q+E is negative"
msgstr ""
-#: cp/constexpr.c:1550
+#: cp/constexpr.c:1689
#, gcc-internal-format
msgid "shift expression %q+E overflows"
msgstr ""
-#: cp/constexpr.c:1831
+#: cp/constexpr.c:1956
#, gcc-internal-format
-msgid "negative array subscript"
+msgid ""
+"array subscript value %qE is outside the bounds of array %qD of type %qT"
msgstr ""
-#: cp/constexpr.c:1844
+#: cp/constexpr.c:1961
#, gcc-internal-format
-msgid "array subscript out of bound"
+msgid "array subscript value %qE is outside the bounds of array type %qT"
msgstr ""
-#: cp/constexpr.c:1869
+#: cp/constexpr.c:2050
#, gcc-internal-format
msgid "accessing uninitialized array element"
msgstr ""
-#: cp/constexpr.c:1924 cp/constexpr.c:2003 cp/constexpr.c:3305
+#: cp/constexpr.c:2105 cp/constexpr.c:2189 cp/constexpr.c:3561
#, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr ""
-#: cp/constexpr.c:1930
+#: cp/constexpr.c:2111
#, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr ""
-#: cp/constexpr.c:1951
+#: cp/constexpr.c:2132
#, gcc-internal-format
msgid ""
"accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/constexpr.c:1963
+#: cp/constexpr.c:2149
#, gcc-internal-format
msgid "accessing uninitialized member %qD"
msgstr ""
-#: cp/constexpr.c:2648
+#: cp/constexpr.c:2867
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/constexpr.c:2689
+#: cp/constexpr.c:2908
#, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr ""
-#: cp/constexpr.c:2696
+#: cp/constexpr.c:2915
#, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr ""
-#: cp/constexpr.c:2701
+#: cp/constexpr.c:2920
#, gcc-internal-format
msgid "%q#D is not const"
msgstr ""
-#: cp/constexpr.c:2704
+#: cp/constexpr.c:2923
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr ""
-#: cp/constexpr.c:2708
+#: cp/constexpr.c:2928
#, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr ""
-#: cp/constexpr.c:2717
+#: cp/constexpr.c:2937
#, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr ""
-#: cp/constexpr.c:2720
+#: cp/constexpr.c:2940
#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr ""
-#: cp/constexpr.c:2828
+#: cp/constexpr.c:3048
#, gcc-internal-format
msgid "modification of %qE is not a constant-expression"
msgstr ""
-#: cp/constexpr.c:3349 cp/constexpr.c:4673
+#: cp/constexpr.c:3607 cp/constexpr.c:4960
#, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr ""
-#: cp/constexpr.c:3670
+#: cp/constexpr.c:3931
#, gcc-internal-format
msgid "a reinterpret_cast is not a constant-expression"
msgstr ""
-#: cp/constexpr.c:3681 cp/constexpr.c:4411
+#: cp/constexpr.c:3942 cp/constexpr.c:4698
#, gcc-internal-format
msgid "reinterpret_cast from integer to pointer"
msgstr ""
-#: cp/constexpr.c:3741 cp/constexpr.c:4562 cp/constexpr.c:4841
+#: cp/constexpr.c:4002 cp/constexpr.c:4849 cp/constexpr.c:5136
#, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr ""
-#: cp/constexpr.c:3811
+#: cp/constexpr.c:4072
#, gcc-internal-format
msgid "statement is not a constant-expression"
msgstr ""
-#: cp/constexpr.c:3814
+#: cp/constexpr.c:4075
#, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr ""
-#: cp/constexpr.c:3881
+#: cp/constexpr.c:4145
#, gcc-internal-format
msgid ""
"%qE is not a constant expression because it refers to mutable subobjects of "
"%qT"
msgstr ""
-#: cp/constexpr.c:3894
+#: cp/constexpr.c:4158
#, gcc-internal-format
msgid ""
"conversion from pointer type %qT to arithmetic type %qT in a constant-"
"expression"
msgstr ""
-#: cp/constexpr.c:4240
+#: cp/constexpr.c:4527
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/constexpr.c:4437
+#: cp/constexpr.c:4724
#, gcc-internal-format
msgid ""
"address-of an object %qE with thread local or automatic storage is not a "
"constant expression"
msgstr ""
-#: cp/constexpr.c:4469
+#: cp/constexpr.c:4756
#, gcc-internal-format
msgid "use of %<this%> in a constant expression"
msgstr ""
-#: cp/constexpr.c:4574
+#: cp/constexpr.c:4861
#, gcc-internal-format
msgid ""
"typeid-expression is not a constant expression because %qE is of polymorphic "
"type"
msgstr ""
-#: cp/constexpr.c:4636
+#: cp/constexpr.c:4923
#, gcc-internal-format
msgid "cast to non-integral type %qT in a constant expression"
msgstr ""
-#: cp/constexpr.c:4721
+#: cp/constexpr.c:5008
#, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr ""
-#: cp/constexpr.c:4849
+#: cp/constexpr.c:5113
+#, gcc-internal-format
+msgid "%<delete[]%> is not a constant-expression"
+msgstr ""
+
+#: cp/constexpr.c:5144
#, gcc-internal-format
msgid "non-constant array initialization"
msgstr ""
-#: cp/constexpr.c:4866
+#: cp/constexpr.c:5161
#, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr ""
@@ -37181,17 +37286,17 @@ msgstr ""
msgid "try statements are not allowed inside loops marked with #pragma simd"
msgstr ""
-#: cp/cp-gimplify.c:1343
+#: cp/cp-gimplify.c:1355
#, gcc-internal-format
msgid "throw will always call terminate()"
msgstr ""
-#: cp/cp-gimplify.c:1346
+#: cp/cp-gimplify.c:1358
#, gcc-internal-format
msgid "in C++11 destructors default to noexcept"
msgstr ""
-#: cp/cp-gimplify.c:1357
+#: cp/cp-gimplify.c:1369
#, gcc-internal-format
msgid ""
"in C++11 this throw will terminate because destructors default to noexcept"
@@ -37232,7 +37337,7 @@ msgstr ""
msgid "conversion from %qT to %qT discards qualifiers"
msgstr ""
-#: cp/cvt.c:489 cp/typeck.c:7008
+#: cp/cvt.c:489 cp/typeck.c:6988
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr ""
@@ -37242,349 +37347,349 @@ msgstr ""
msgid "cannot convert type %qT to type %qT"
msgstr ""
-#: cp/cvt.c:753
+#: cp/cvt.c:754
#, gcc-internal-format
msgid "conversion from %q#T to %q#T"
msgstr ""
-#: cp/cvt.c:770
+#: cp/cvt.c:771
#, gcc-internal-format
msgid ""
"the result of the conversion is unspecified because %qE is outside the range "
"of type %qT"
msgstr ""
-#: cp/cvt.c:781 cp/cvt.c:825
+#: cp/cvt.c:782 cp/cvt.c:826
#, gcc-internal-format
msgid "%q#T used where a %qT was expected"
msgstr ""
-#: cp/cvt.c:790
+#: cp/cvt.c:791
#, gcc-internal-format
msgid "could not convert %qE from %<void%> to %<bool%>"
msgstr ""
-#: cp/cvt.c:841
+#: cp/cvt.c:842
#, gcc-internal-format
msgid "%q#T used where a floating point value was expected"
msgstr ""
-#: cp/cvt.c:900
+#: cp/cvt.c:901
#, gcc-internal-format
msgid "conversion from %qT to non-scalar type %qT requested"
msgstr ""
-#: cp/cvt.c:960
+#: cp/cvt.c:961
#, gcc-internal-format
msgid "pseudo-destructor is not called"
msgstr ""
-#: cp/cvt.c:1037
+#: cp/cvt.c:1038
#, gcc-internal-format
msgid "conversion to void will not access object of incomplete type %qT"
msgstr ""
-#: cp/cvt.c:1041
+#: cp/cvt.c:1042
#, gcc-internal-format
msgid ""
"indirection will not access object of incomplete type %qT in second operand "
"of conditional expression"
msgstr ""
-#: cp/cvt.c:1046
+#: cp/cvt.c:1047
#, gcc-internal-format
msgid ""
"indirection will not access object of incomplete type %qT in third operand "
"of conditional expression"
msgstr ""
-#: cp/cvt.c:1051
+#: cp/cvt.c:1052
#, gcc-internal-format
msgid ""
"indirection will not access object of incomplete type %qT in right operand "
"of comma operator"
msgstr ""
-#: cp/cvt.c:1056
+#: cp/cvt.c:1057
#, gcc-internal-format
msgid ""
"indirection will not access object of incomplete type %qT in left operand of "
"comma operator"
msgstr ""
-#: cp/cvt.c:1061
+#: cp/cvt.c:1062
#, gcc-internal-format
msgid "indirection will not access object of incomplete type %qT in statement"
msgstr ""
-#: cp/cvt.c:1065
+#: cp/cvt.c:1066
#, gcc-internal-format
msgid ""
"indirection will not access object of incomplete type %qT in for increment "
"expression"
msgstr ""
-#: cp/cvt.c:1081
+#: cp/cvt.c:1082
#, gcc-internal-format
msgid "conversion to void will not access object of type %qT"
msgstr ""
-#: cp/cvt.c:1085
+#: cp/cvt.c:1086
#, gcc-internal-format
msgid ""
"implicit dereference will not access object of type %qT in second operand of "
"conditional expression"
msgstr ""
-#: cp/cvt.c:1090
+#: cp/cvt.c:1091
#, gcc-internal-format
msgid ""
"implicit dereference will not access object of type %qT in third operand of "
"conditional expression"
msgstr ""
-#: cp/cvt.c:1095
+#: cp/cvt.c:1096
#, gcc-internal-format
msgid ""
"implicit dereference will not access object of type %qT in right operand of "
"comma operator"
msgstr ""
-#: cp/cvt.c:1100
+#: cp/cvt.c:1101
#, gcc-internal-format
msgid ""
"implicit dereference will not access object of type %qT in left operand of "
"comma operator"
msgstr ""
-#: cp/cvt.c:1105
+#: cp/cvt.c:1106
#, gcc-internal-format
msgid "implicit dereference will not access object of type %qT in statement"
msgstr ""
-#: cp/cvt.c:1109
+#: cp/cvt.c:1110
#, gcc-internal-format
msgid ""
"implicit dereference will not access object of type %qT in for increment "
"expression"
msgstr ""
-#: cp/cvt.c:1123
+#: cp/cvt.c:1124
#, gcc-internal-format
msgid ""
"conversion to void will not access object of non-trivially-copyable type %qT"
msgstr ""
-#: cp/cvt.c:1128
+#: cp/cvt.c:1129
#, gcc-internal-format
msgid ""
"indirection will not access object of non-trivially-copyable type %qT in "
"second operand of conditional expression"
msgstr ""
-#: cp/cvt.c:1133
+#: cp/cvt.c:1134
#, gcc-internal-format
msgid ""
"indirection will not access object of non-trivially-copyable type %qT in "
"third operand of conditional expression"
msgstr ""
-#: cp/cvt.c:1138
+#: cp/cvt.c:1139
#, gcc-internal-format
msgid ""
"indirection will not access object of non-trivially-copyable type %qT in "
"right operand of comma operator"
msgstr ""
-#: cp/cvt.c:1143
+#: cp/cvt.c:1144
#, gcc-internal-format
msgid ""
"indirection will not access object of non-trivially-copyable type %qT in "
"left operand of comma operator"
msgstr ""
-#: cp/cvt.c:1148
+#: cp/cvt.c:1149
#, gcc-internal-format
msgid ""
"indirection will not access object of non-trivially-copyable type %qT in "
"statement"
msgstr ""
-#: cp/cvt.c:1153
+#: cp/cvt.c:1154
#, gcc-internal-format
msgid ""
"indirection will not access object of non-trivially-copyable type %qT in for "
"increment expression"
msgstr ""
-#: cp/cvt.c:1191
+#: cp/cvt.c:1192
#, gcc-internal-format
msgid "conversion to void will not access object %qE of incomplete type %qT"
msgstr ""
-#: cp/cvt.c:1195
+#: cp/cvt.c:1196
#, gcc-internal-format
msgid ""
"variable %qE of incomplete type %qT will not be accessed in second operand "
"of conditional expression"
msgstr ""
-#: cp/cvt.c:1200
+#: cp/cvt.c:1201
#, gcc-internal-format
msgid ""
"variable %qE of incomplete type %qT will not be accessed in third operand of "
"conditional expression"
msgstr ""
-#: cp/cvt.c:1205
+#: cp/cvt.c:1206
#, gcc-internal-format
msgid ""
"variable %qE of incomplete type %qT will not be accessed in right operand of "
"comma operator"
msgstr ""
-#: cp/cvt.c:1210
+#: cp/cvt.c:1211
#, gcc-internal-format
msgid ""
"variable %qE of incomplete type %qT will not be accessed in left operand of "
"comma operator"
msgstr ""
-#: cp/cvt.c:1215
+#: cp/cvt.c:1216
#, gcc-internal-format
msgid "variable %qE of incomplete type %qT will not be accessed in statement"
msgstr ""
-#: cp/cvt.c:1219
+#: cp/cvt.c:1220
#, gcc-internal-format
msgid ""
"variable %qE of incomplete type %qT will not be accessed in for increment "
"expression"
msgstr ""
-#: cp/cvt.c:1269
+#: cp/cvt.c:1270
#, gcc-internal-format
msgid "conversion to void cannot resolve address of overloaded function"
msgstr ""
-#: cp/cvt.c:1273
+#: cp/cvt.c:1274
#, gcc-internal-format
msgid ""
"second operand of conditional expression cannot resolve address of "
"overloaded function"
msgstr ""
-#: cp/cvt.c:1277
+#: cp/cvt.c:1278
#, gcc-internal-format
msgid ""
"third operand of conditional expression cannot resolve address of overloaded "
"function"
msgstr ""
-#: cp/cvt.c:1281
+#: cp/cvt.c:1282
#, gcc-internal-format
msgid ""
"right operand of comma operator cannot resolve address of overloaded function"
msgstr ""
-#: cp/cvt.c:1285
+#: cp/cvt.c:1286
#, gcc-internal-format
msgid ""
"left operand of comma operator cannot resolve address of overloaded function"
msgstr ""
-#: cp/cvt.c:1289
+#: cp/cvt.c:1290
#, gcc-internal-format
msgid "statement cannot resolve address of overloaded function"
msgstr ""
-#: cp/cvt.c:1293
+#: cp/cvt.c:1294
#, gcc-internal-format
msgid "for increment expression cannot resolve address of overloaded function"
msgstr ""
-#: cp/cvt.c:1309
+#: cp/cvt.c:1310
#, gcc-internal-format
msgid ""
"second operand of conditional expression is a reference, not call, to "
"function %qE"
msgstr ""
-#: cp/cvt.c:1314
+#: cp/cvt.c:1315
#, gcc-internal-format
msgid ""
"third operand of conditional expression is a reference, not call, to "
"function %qE"
msgstr ""
-#: cp/cvt.c:1319
+#: cp/cvt.c:1320
#, gcc-internal-format
msgid ""
"right operand of comma operator is a reference, not call, to function %qE"
msgstr ""
-#: cp/cvt.c:1324
+#: cp/cvt.c:1325
#, gcc-internal-format
msgid ""
"left operand of comma operator is a reference, not call, to function %qE"
msgstr ""
-#: cp/cvt.c:1329
+#: cp/cvt.c:1330
#, gcc-internal-format
msgid "statement is a reference, not call, to function %qE"
msgstr ""
-#: cp/cvt.c:1334
+#: cp/cvt.c:1335
#, gcc-internal-format
msgid "for increment expression is a reference, not call, to function %qE"
msgstr ""
-#: cp/cvt.c:1361
+#: cp/cvt.c:1362
#, gcc-internal-format
msgid "second operand of conditional expression has no effect"
msgstr ""
-#: cp/cvt.c:1366
+#: cp/cvt.c:1367
#, gcc-internal-format
msgid "third operand of conditional expression has no effect"
msgstr ""
-#: cp/cvt.c:1371
+#: cp/cvt.c:1372
#, gcc-internal-format
msgid "right operand of comma operator has no effect"
msgstr ""
-#: cp/cvt.c:1375
+#: cp/cvt.c:1376
#, gcc-internal-format
msgid "left operand of comma operator has no effect"
msgstr ""
-#: cp/cvt.c:1379
+#: cp/cvt.c:1380
#, gcc-internal-format
msgid "statement has no effect"
msgstr ""
-#: cp/cvt.c:1383
+#: cp/cvt.c:1384
#, gcc-internal-format
msgid "for increment expression has no effect"
msgstr ""
-#: cp/cvt.c:1538
+#: cp/cvt.c:1539
#, gcc-internal-format
msgid "converting NULL to non-pointer type"
msgstr ""
-#: cp/cvt.c:1653
+#: cp/cvt.c:1654
#, gcc-internal-format
msgid "default type conversion can't deduce template argument for %qD"
msgstr ""
-#: cp/cvt.c:1668
+#: cp/cvt.c:1669
#, gcc-internal-format
msgid "ambiguous default type conversion from %qT"
msgstr ""
-#: cp/cvt.c:1671
+#: cp/cvt.c:1672
#, gcc-internal-format
msgid " candidate conversions include %qD and %qD"
msgstr ""
@@ -37594,152 +37699,152 @@ msgstr ""
msgid "template-parameter-"
msgstr ""
-#: cp/decl.c:634
+#: cp/decl.c:629
#, gcc-internal-format
msgid "unused variable %qD"
msgstr ""
-#: cp/decl.c:1177
+#: cp/decl.c:1172
#, gcc-internal-format
msgid "%qD was declared %<extern%> and later %<static%>"
msgstr ""
-#: cp/decl.c:1179 cp/decl.c:1900 cp/decl.c:1910 cp/decl.c:2440
+#: cp/decl.c:1174 cp/decl.c:1898 cp/decl.c:1908 cp/decl.c:2447
#, gcc-internal-format
msgid "previous declaration of %qD"
msgstr ""
-#: cp/decl.c:1221
+#: cp/decl.c:1219
#, gcc-internal-format
msgid "from previous declaration %q+F"
msgstr ""
-#: cp/decl.c:1255
+#: cp/decl.c:1253
#, gcc-internal-format
msgid "redeclaration %q+D differs in %<constexpr%>"
msgstr ""
-#: cp/decl.c:1256
+#: cp/decl.c:1254
#, gcc-internal-format
msgid "from previous declaration %q+D"
msgstr ""
-#: cp/decl.c:1285
+#: cp/decl.c:1283
#, gcc-internal-format
msgid "cannot specialize concept %q#D"
msgstr ""
-#: cp/decl.c:1307
+#: cp/decl.c:1305
#, gcc-internal-format
msgid "redeclaration of %q#D may not have default arguments"
msgstr ""
-#: cp/decl.c:1354
+#: cp/decl.c:1352
#, gcc-internal-format
msgid "literal operator template %q+D conflicts with raw literal operator %qD"
msgstr ""
-#: cp/decl.c:1359
+#: cp/decl.c:1357
#, gcc-internal-format
msgid "raw literal operator %q+D conflicts with literal operator template %qD"
msgstr ""
-#: cp/decl.c:1381
+#: cp/decl.c:1379
#, gcc-internal-format
msgid "function %qD redeclared as inline"
msgstr ""
-#: cp/decl.c:1384
+#: cp/decl.c:1382
#, gcc-internal-format
msgid "previous declaration of %qD with attribute noinline"
msgstr ""
-#: cp/decl.c:1392
+#: cp/decl.c:1390
#, gcc-internal-format
msgid "function %qD redeclared with attribute noinline"
msgstr ""
-#: cp/decl.c:1395
+#: cp/decl.c:1393
#, gcc-internal-format
msgid "previous declaration of %qD was inline"
msgstr ""
-#: cp/decl.c:1419 cp/decl.c:1497
+#: cp/decl.c:1417 cp/decl.c:1495
#, gcc-internal-format
msgid "shadowing built-in function %q#D"
msgstr ""
-#: cp/decl.c:1420 cp/decl.c:1498
+#: cp/decl.c:1418 cp/decl.c:1496
#, gcc-internal-format
msgid "shadowing library function %q#D"
msgstr ""
-#: cp/decl.c:1428
+#: cp/decl.c:1426
#, gcc-internal-format
msgid "library function %q#D redeclared as non-function %q#D"
msgstr ""
-#: cp/decl.c:1431
+#: cp/decl.c:1429
#, gcc-internal-format
msgid "declaration of %q+#D conflicts with built-in declaration %q#D"
msgstr ""
-#: cp/decl.c:1439
+#: cp/decl.c:1437
#, gcc-internal-format
msgid "redeclaration of %<pragma omp declare reduction%>"
msgstr ""
-#: cp/decl.c:1441
+#: cp/decl.c:1439
#, gcc-internal-format
msgid "previous %<pragma omp declare reduction%> declaration"
msgstr ""
-#: cp/decl.c:1492
+#: cp/decl.c:1490
#, gcc-internal-format
msgid "new declaration %q#D ambiguates built-in declaration %q#D"
msgstr ""
-#: cp/decl.c:1583
+#: cp/decl.c:1581
#, gcc-internal-format
msgid "%q#D redeclared as different kind of symbol"
msgstr ""
-#: cp/decl.c:1587 cp/decl.c:1608 cp/decl.c:1640 cp/name-lookup.c:586
+#: cp/decl.c:1585 cp/decl.c:1606 cp/decl.c:1638 cp/name-lookup.c:586
#, gcc-internal-format
msgid "previous declaration %q#D"
msgstr ""
-#: cp/decl.c:1606
+#: cp/decl.c:1604
#, gcc-internal-format
msgid "conflicting declaration of template %q+#D"
msgstr ""
-#: cp/decl.c:1625
+#: cp/decl.c:1623
#, gcc-internal-format
msgid "ambiguating new declaration %q+#D"
msgstr ""
-#: cp/decl.c:1627 cp/decl.c:1655
+#: cp/decl.c:1625 cp/decl.c:1653
#, gcc-internal-format
msgid "old declaration %q#D"
msgstr ""
-#: cp/decl.c:1637
+#: cp/decl.c:1635
#, gcc-internal-format
msgid "conflicting declaration of C function %q+#D"
msgstr ""
-#: cp/decl.c:1653
+#: cp/decl.c:1651
#, gcc-internal-format
msgid "ambiguating new declaration of %q+#D"
msgstr ""
-#: cp/decl.c:1663
+#: cp/decl.c:1661
#, gcc-internal-format
msgid "conflicting declaration %q+#D"
msgstr ""
-#: cp/decl.c:1665
+#: cp/decl.c:1663
#, gcc-internal-format
msgid "previous declaration as %q#D"
msgstr ""
@@ -37751,62 +37856,62 @@ 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:1717
+#: cp/decl.c:1715
#, gcc-internal-format
msgid "conflicting declaration of namespace %q+D"
msgstr ""
-#: cp/decl.c:1719
+#: cp/decl.c:1717
#, gcc-internal-format
msgid "previous declaration of namespace %qD here"
msgstr ""
-#: cp/decl.c:1731
+#: cp/decl.c:1729
#, gcc-internal-format
msgid "%q#D previously defined here"
msgstr ""
-#: cp/decl.c:1732 cp/name-lookup.c:1168 cp/name-lookup.c:1191
+#: cp/decl.c:1730 cp/name-lookup.c:1168 cp/name-lookup.c:1191
#, gcc-internal-format
msgid "%q#D previously declared here"
msgstr ""
-#: cp/decl.c:1742
+#: cp/decl.c:1740
#, gcc-internal-format
msgid "prototype specified for %q#D"
msgstr ""
-#: cp/decl.c:1744
+#: cp/decl.c:1742
#, gcc-internal-format
msgid "previous non-prototype definition here"
msgstr ""
-#: cp/decl.c:1783
+#: cp/decl.c:1781
#, gcc-internal-format
msgid "conflicting declaration of %q+#D with %qL linkage"
msgstr ""
-#: cp/decl.c:1786
+#: cp/decl.c:1784
#, gcc-internal-format
msgid "previous declaration with %qL linkage"
msgstr ""
-#: cp/decl.c:1820 cp/decl.c:1828
+#: cp/decl.c:1818 cp/decl.c:1826
#, gcc-internal-format
msgid "default argument given for parameter %d of %q#D"
msgstr ""
-#: cp/decl.c:1823 cp/decl.c:1831
+#: cp/decl.c:1821 cp/decl.c:1829
#, gcc-internal-format
msgid "previous specification in %q#D here"
msgstr ""
-#: cp/decl.c:1897
+#: cp/decl.c:1895
#, gcc-internal-format
msgid "redundant redeclaration of %qD in same scope"
msgstr ""
-#: cp/decl.c:1908
+#: cp/decl.c:1906
#, gcc-internal-format
msgid "deleted definition of %q+D"
msgstr ""
@@ -37819,12 +37924,12 @@ 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:2306
+#: cp/decl.c:2313
#, gcc-internal-format
msgid "explicit specialization of %qD after first use"
msgstr ""
-#: cp/decl.c:2437
+#: cp/decl.c:2444
#, gcc-internal-format
msgid ""
"%qD: visibility attribute ignored because it conflicts with previous "
@@ -37832,27 +37937,27 @@ msgid ""
msgstr ""
#. Reject two definitions.
-#: cp/decl.c:2687 cp/decl.c:2716 cp/decl.c:2749 cp/decl.c:2766 cp/decl.c:2839
+#: cp/decl.c:2694 cp/decl.c:2723 cp/decl.c:2756 cp/decl.c:2773 cp/decl.c:2846
#, gcc-internal-format
msgid "redefinition of %q#D"
msgstr ""
-#: cp/decl.c:2703
+#: cp/decl.c:2710
#, gcc-internal-format
msgid "%qD conflicts with used function"
msgstr ""
-#: cp/decl.c:2713
+#: cp/decl.c:2720
#, gcc-internal-format
msgid "%q#D not declared in class"
msgstr ""
-#: cp/decl.c:2727 cp/decl.c:2776
+#: cp/decl.c:2734 cp/decl.c:2783
#, gcc-internal-format
msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
msgstr ""
-#: cp/decl.c:2730 cp/decl.c:2779
+#: cp/decl.c:2737 cp/decl.c:2786
#, gcc-internal-format
msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
msgstr ""
@@ -37860,392 +37965,392 @@ msgstr ""
#. is_primary=
#. is_partial=
#. is_friend_decl=
-#: cp/decl.c:2796
+#: cp/decl.c:2803
#, gcc-internal-format
msgid "redeclaration of friend %q#D may not have default template arguments"
msgstr ""
-#: cp/decl.c:2810
+#: cp/decl.c:2817
#, gcc-internal-format
msgid "thread-local declaration of %q#D follows non-thread-local declaration"
msgstr ""
-#: cp/decl.c:2813
+#: cp/decl.c:2820
#, gcc-internal-format
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr ""
-#: cp/decl.c:2828 cp/decl.c:2847 cp/name-lookup.c:582 cp/name-lookup.c:1166
+#: cp/decl.c:2835 cp/decl.c:2854 cp/name-lookup.c:582 cp/name-lookup.c:1166
#: cp/name-lookup.c:1189
#, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr ""
-#: cp/decl.c:2996
+#: cp/decl.c:3003
#, gcc-internal-format
msgid "jump to label %qD"
msgstr ""
-#: cp/decl.c:2997
+#: cp/decl.c:3004
#, gcc-internal-format
msgid "jump to case label"
msgstr ""
-#: cp/decl.c:2999
+#: cp/decl.c:3006
#, gcc-internal-format
msgid " from here"
msgstr ""
-#: cp/decl.c:3022 cp/decl.c:3241
+#: cp/decl.c:3029 cp/decl.c:3248
#, gcc-internal-format
msgid " exits OpenMP structured block"
msgstr ""
-#: cp/decl.c:3049
+#: cp/decl.c:3056
#, gcc-internal-format
msgid " crosses initialization of %q#D"
msgstr ""
-#: cp/decl.c:3052 cp/decl.c:3204
+#: cp/decl.c:3059 cp/decl.c:3211
#, gcc-internal-format
msgid " enters scope of %q#D which has non-trivial destructor"
msgstr ""
-#: cp/decl.c:3070 cp/decl.c:3212
+#: cp/decl.c:3077 cp/decl.c:3219
#, gcc-internal-format
msgid " enters try block"
msgstr ""
-#: cp/decl.c:3072 cp/decl.c:3194 cp/decl.c:3214
+#: cp/decl.c:3079 cp/decl.c:3201 cp/decl.c:3221
#, gcc-internal-format
msgid " enters catch block"
msgstr ""
-#: cp/decl.c:3085 cp/decl.c:3222
+#: cp/decl.c:3092 cp/decl.c:3229
#, gcc-internal-format
msgid " enters OpenMP structured block"
msgstr ""
-#: cp/decl.c:3098 cp/decl.c:3216
+#: cp/decl.c:3105 cp/decl.c:3223
#, gcc-internal-format
msgid " enters synchronized or atomic statement"
msgstr ""
-#: cp/decl.c:3201
+#: cp/decl.c:3208
#, gcc-internal-format
msgid " skips initialization of %q#D"
msgstr ""
-#: cp/decl.c:3258 cp/parser.c:11735 cp/parser.c:11762
+#: cp/decl.c:3265 cp/parser.c:11755 cp/parser.c:11782
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: cp/decl.c:3290
+#: cp/decl.c:3297
#, gcc-internal-format
msgid "label named wchar_t"
msgstr ""
-#: cp/decl.c:3609
+#: cp/decl.c:3616
#, gcc-internal-format
msgid "%qD is not a type"
msgstr ""
-#: cp/decl.c:3616 cp/parser.c:6031
+#: cp/decl.c:3623 cp/parser.c:6033
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr ""
-#: cp/decl.c:3625
+#: cp/decl.c:3632
#, gcc-internal-format
msgid "%q#T is not a class"
msgstr ""
-#: cp/decl.c:3649 cp/decl.c:3741
+#: cp/decl.c:3656 cp/decl.c:3748
#, gcc-internal-format
msgid "no class template named %q#T in %q#T"
msgstr ""
-#: cp/decl.c:3650
+#: cp/decl.c:3657
#, gcc-internal-format
msgid "no type named %q#T in %q#T"
msgstr ""
-#: cp/decl.c:3662
+#: cp/decl.c:3669
#, gcc-internal-format
msgid "lookup of %qT in %qT is ambiguous"
msgstr ""
-#: cp/decl.c:3671
+#: cp/decl.c:3678
#, gcc-internal-format
msgid "%<typename %T::%D%> names %q#T, which is not a class template"
msgstr ""
-#: cp/decl.c:3678
+#: cp/decl.c:3685
#, gcc-internal-format
msgid "%<typename %T::%D%> names %q#T, which is not a type"
msgstr ""
-#: cp/decl.c:3750
+#: cp/decl.c:3757
#, gcc-internal-format
msgid "template parameters do not match template %qD"
msgstr ""
-#: cp/decl.c:4483
+#: cp/decl.c:4490
#, gcc-internal-format
msgid "an anonymous struct cannot have function members"
msgstr ""
-#: cp/decl.c:4486
+#: cp/decl.c:4493
#, gcc-internal-format
msgid "an anonymous union cannot have function members"
msgstr ""
-#: cp/decl.c:4504
+#: cp/decl.c:4511
#, gcc-internal-format
msgid "member %q+#D with constructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:4507
+#: cp/decl.c:4514
#, gcc-internal-format
msgid "member %q+#D with destructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:4510
+#: cp/decl.c:4517
#, gcc-internal-format
msgid ""
"member %q+#D with copy assignment operator not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:4528
+#: cp/decl.c:4535
#, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr ""
-#: cp/decl.c:4531
+#: cp/decl.c:4538
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4554
+#: cp/decl.c:4561
#, gcc-internal-format
msgid "multiple types in one declaration"
msgstr ""
-#: cp/decl.c:4559
+#: cp/decl.c:4566
#, gcc-internal-format
msgid "redeclaration of C++ built-in type %qT"
msgstr ""
-#: cp/decl.c:4577
+#: cp/decl.c:4584
#, gcc-internal-format
msgid "%<auto%> can only be specified for variables or function declarations"
msgstr ""
-#: cp/decl.c:4603
+#: cp/decl.c:4610
#, gcc-internal-format
msgid "missing type-name in typedef-declaration"
msgstr ""
-#: cp/decl.c:4611
+#: cp/decl.c:4618
#, gcc-internal-format
msgid "ISO C++ prohibits anonymous structs"
msgstr ""
-#: cp/decl.c:4618
+#: cp/decl.c:4625
#, gcc-internal-format
msgid "%<inline%> can only be specified for functions"
msgstr ""
-#: cp/decl.c:4621
+#: cp/decl.c:4628
#, gcc-internal-format
msgid "%<virtual%> can only be specified for functions"
msgstr ""
-#: cp/decl.c:4626
+#: cp/decl.c:4633
#, gcc-internal-format
msgid "%<friend%> can only be specified inside a class"
msgstr ""
-#: cp/decl.c:4629
+#: cp/decl.c:4636
#, gcc-internal-format
msgid "%<explicit%> can only be specified for constructors"
msgstr ""
-#: cp/decl.c:4632
+#: cp/decl.c:4639
#, gcc-internal-format
msgid "a storage class can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:4636
+#: cp/decl.c:4643
#, gcc-internal-format
msgid "%<const%> can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:4640
+#: cp/decl.c:4647
#, gcc-internal-format
msgid "%<volatile%> can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:4644
+#: cp/decl.c:4651
#, gcc-internal-format
msgid "%<__restrict%> can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:4648
+#: cp/decl.c:4655
#, gcc-internal-format
msgid "%<__thread%> can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:4652
+#: cp/decl.c:4659
#, gcc-internal-format
msgid "%<typedef%> was ignored in this declaration"
msgstr ""
-#: cp/decl.c:4655
+#: cp/decl.c:4662
#, gcc-internal-format
msgid "%<constexpr%> cannot be used for type declarations"
msgstr ""
-#: cp/decl.c:4677
+#: cp/decl.c:4684
#, gcc-internal-format
msgid "attribute ignored in explicit instantiation %q#T"
msgstr ""
-#: cp/decl.c:4680
+#: cp/decl.c:4687
#, gcc-internal-format
msgid "no attribute can be applied to an explicit instantiation"
msgstr ""
-#: cp/decl.c:4752
+#: cp/decl.c:4759
#, 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:4756
+#: cp/decl.c:4763
#, gcc-internal-format
msgid ""
"ignoring attributes applied to dependent type %qT without an associated "
"declaration"
msgstr ""
-#: cp/decl.c:4825 cp/decl2.c:889
+#: cp/decl.c:4832 cp/decl2.c:889
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr ""
-#: cp/decl.c:4833
+#: cp/decl.c:4840
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr ""
-#: cp/decl.c:4862
+#: cp/decl.c:4869
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr ""
-#: cp/decl.c:4886
+#: cp/decl.c:4893
#, gcc-internal-format
msgid "%q+#D is not a static data member of %q#T"
msgstr ""
-#: cp/decl.c:4895
+#: cp/decl.c:4902
#, gcc-internal-format
msgid "non-member-template declaration of %qD"
msgstr ""
-#: cp/decl.c:4896
+#: cp/decl.c:4903
#, gcc-internal-format
msgid "does not match member template declaration here"
msgstr ""
-#: cp/decl.c:4909
+#: cp/decl.c:4916
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4921
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr ""
-#: cp/decl.c:4926
+#: cp/decl.c:4933
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4969
+#: cp/decl.c:4976
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr ""
-#: cp/decl.c:5002
+#: cp/decl.c:5009
#, gcc-internal-format
msgid "%qD declared %<thread_local%> in %<constexpr%> function"
msgstr ""
-#: cp/decl.c:5005
+#: cp/decl.c:5012
#, gcc-internal-format
msgid "%qD declared %<static%> in %<constexpr%> function"
msgstr ""
-#: cp/decl.c:5070
+#: cp/decl.c:5077
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:5076 cp/decl.c:5940
+#: cp/decl.c:5083 cp/decl.c:5947
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr ""
-#: cp/decl.c:5083 cp/decl.c:6570
+#: cp/decl.c:5090 cp/decl.c:6593
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr ""
-#: cp/decl.c:5085
+#: cp/decl.c:5092
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:5119
+#: cp/decl.c:5126
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:5176
+#: cp/decl.c:5183
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:5182
+#: cp/decl.c:5189
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:5198 cp/typeck2.c:1287 cp/typeck2.c:1397
+#: cp/decl.c:5205 cp/typeck2.c:1286 cp/typeck2.c:1396
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr ""
-#: cp/decl.c:5201
+#: cp/decl.c:5208
#, gcc-internal-format
msgid "C99 designator %qE is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:5249
+#: cp/decl.c:5256
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr ""
-#: cp/decl.c:5255
+#: cp/decl.c:5262
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr ""
-#: cp/decl.c:5266
+#: cp/decl.c:5273
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr ""
@@ -38253,916 +38358,916 @@ 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:5308
+#: cp/decl.c:5315
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr ""
-#: cp/decl.c:5331
+#: cp/decl.c:5338
#, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr ""
-#: cp/decl.c:5377
+#: cp/decl.c:5384
#, 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:5381
+#: cp/decl.c:5388
#, gcc-internal-format
msgid "you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:5408
+#: cp/decl.c:5415
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr ""
-#: cp/decl.c:5412
+#: cp/decl.c:5419
#, gcc-internal-format
msgid "uninitialized variable %qD in %<constexpr%> function"
msgstr ""
-#: cp/decl.c:5422
+#: cp/decl.c:5429
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr ""
-#: cp/decl.c:5426
+#: cp/decl.c:5433
#, gcc-internal-format
msgid ""
"constructor is not user-provided because it is explicitly defaulted in the "
"class body"
msgstr ""
-#: cp/decl.c:5429
+#: cp/decl.c:5436
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q#D"
msgstr ""
-#: cp/decl.c:5552
+#: cp/decl.c:5559
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr ""
-#: cp/decl.c:5593
+#: cp/decl.c:5600
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:5619
+#: cp/decl.c:5626
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5627
+#: cp/decl.c:5634
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr ""
-#: cp/decl.c:5647
+#: cp/decl.c:5654
#, gcc-internal-format
msgid "invalid initializer for %q#D"
msgstr ""
-#: cp/decl.c:5677
+#: cp/decl.c:5684
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5714 cp/decl.c:5919 cp/typeck2.c:1274 cp/typeck2.c:1485
-#: cp/typeck2.c:1514 cp/typeck2.c:1561
+#: cp/decl.c:5721 cp/decl.c:5926 cp/typeck2.c:1273 cp/typeck2.c:1482
+#: cp/typeck2.c:1526 cp/typeck2.c:1573
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr ""
-#: cp/decl.c:5753
+#: cp/decl.c:5760
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr ""
-#: cp/decl.c:5860
+#: cp/decl.c:5867
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr ""
-#: cp/decl.c:5942
+#: cp/decl.c:5949
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr ""
-#: cp/decl.c:5950
+#: cp/decl.c:5957
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr ""
-#: cp/decl.c:6004
+#: cp/decl.c:6011
#, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr ""
-#: cp/decl.c:6024
+#: cp/decl.c:6031
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr ""
-#: cp/decl.c:6067
+#: cp/decl.c:6074
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:6161
+#: cp/decl.c:6168
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr ""
-#: cp/decl.c:6192
+#: cp/decl.c:6199
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl.c:6194
+#: cp/decl.c:6201
#, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr ""
-#: cp/decl.c:6199
+#: cp/decl.c:6206
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl.c:6373
+#: cp/decl.c:6383
#, gcc-internal-format
msgid "reference %qD is initialized with itself"
msgstr ""
-#: cp/decl.c:6529
+#: cp/decl.c:6552
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:6681
+#: cp/decl.c:6704
#, gcc-internal-format
msgid "variable concept has no initializer"
msgstr ""
-#: cp/decl.c:6709
+#: cp/decl.c:6732
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr ""
-#: cp/decl.c:6779
+#: cp/decl.c:6806
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6827
+#: cp/decl.c:6854
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6908
+#: cp/decl.c:6935
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr ""
-#: cp/decl.c:7342
+#: cp/decl.c:7369
#, gcc-internal-format
msgid ""
"non-local variable %qD declared %<__thread%> needs dynamic initialization"
msgstr ""
-#: cp/decl.c:7345
+#: cp/decl.c:7372
#, gcc-internal-format
msgid ""
"non-local variable %qD declared %<__thread%> has a non-trivial destructor"
msgstr ""
-#: cp/decl.c:7351
+#: cp/decl.c:7378
#, gcc-internal-format
msgid "C++11 %<thread_local%> allows dynamic initialization and destruction"
msgstr ""
-#: cp/decl.c:7578
+#: cp/decl.c:7605
#, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr ""
-#: cp/decl.c:7582
+#: cp/decl.c:7609
#, gcc-internal-format
msgid "array size missing in %qT"
msgstr ""
-#: cp/decl.c:7585
+#: cp/decl.c:7612
#, gcc-internal-format
msgid "zero-size array %qT"
msgstr ""
-#: cp/decl.c:7601
+#: cp/decl.c:7628
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:7603
+#: cp/decl.c:7630
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:7627
+#: cp/decl.c:7654
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr ""
-#: cp/decl.c:7629
+#: cp/decl.c:7656
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr ""
-#: cp/decl.c:7631
+#: cp/decl.c:7658
#, gcc-internal-format
msgid ""
"%<const%> and %<volatile%> function specifiers on %qD invalid in variable "
"declaration"
msgstr ""
-#: cp/decl.c:7636
+#: cp/decl.c:7663
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr ""
-#: cp/decl.c:7638
+#: cp/decl.c:7665
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr ""
-#: cp/decl.c:7640
+#: cp/decl.c:7667
#, gcc-internal-format
msgid ""
"%<const%> and %<volatile%> function specifiers on %qD invalid in parameter "
"declaration"
msgstr ""
-#: cp/decl.c:7645
+#: cp/decl.c:7672
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr ""
-#: cp/decl.c:7647
+#: cp/decl.c:7674
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr ""
-#: cp/decl.c:7649
+#: cp/decl.c:7676
#, gcc-internal-format
msgid ""
"%<const%> and %<volatile%> function specifiers on %qD invalid in type "
"declaration"
msgstr ""
-#: cp/decl.c:7654
+#: cp/decl.c:7681
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr ""
-#: cp/decl.c:7656
+#: cp/decl.c:7683
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr ""
-#: cp/decl.c:7658
+#: cp/decl.c:7685
#, gcc-internal-format
msgid ""
"%<const%> and %<volatile%> function specifiers on %qD invalid in field "
"declaration"
msgstr ""
-#: cp/decl.c:7665
+#: cp/decl.c:7692
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr ""
-#: cp/decl.c:7671
+#: cp/decl.c:7698
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr ""
-#: cp/decl.c:7704
+#: cp/decl.c:7731
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:7744
+#: cp/decl.c:7771
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
-#: cp/decl.c:7754
+#: cp/decl.c:7781
#, gcc-internal-format
msgid "concept %q#D declared with function parameters"
msgstr ""
-#: cp/decl.c:7760
+#: cp/decl.c:7787
#, gcc-internal-format
msgid "concept %q#D declared with a deduced return type"
msgstr ""
-#: cp/decl.c:7762
+#: cp/decl.c:7789
#, gcc-internal-format
msgid "concept %q#D with non-%<bool%> return type %qT"
msgstr ""
-#: cp/decl.c:7833
+#: cp/decl.c:7860
#, gcc-internal-format
msgid "concept %qD has no definition"
msgstr ""
-#: cp/decl.c:7901
+#: cp/decl.c:7928
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7911
+#: cp/decl.c:7938
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr ""
-#: cp/decl.c:7929
+#: cp/decl.c:7956
#, gcc-internal-format
msgid ""
"default arguments are not allowed in declaration of friend template "
"specialization %qD"
msgstr ""
-#: cp/decl.c:7937
+#: cp/decl.c:7964
#, gcc-internal-format
msgid ""
"%<inline%> is not allowed in declaration of friend template specialization "
"%qD"
msgstr ""
-#: cp/decl.c:7984
+#: cp/decl.c:8011
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr ""
-#: cp/decl.c:7986
+#: cp/decl.c:8013
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr ""
-#: cp/decl.c:7988
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "cannot declare %<::main%> to be constexpr"
msgstr ""
-#: cp/decl.c:7990
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr ""
-#: cp/decl.c:8047
+#: cp/decl.c:8074
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:8048
+#: cp/decl.c:8075
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:8056
+#: cp/decl.c:8083
#, gcc-internal-format
msgid "static member function %qD cannot have ref-qualifier"
msgstr ""
-#: cp/decl.c:8057
+#: cp/decl.c:8084
#, gcc-internal-format
msgid "non-member function %qD cannot have ref-qualifier"
msgstr ""
-#: cp/decl.c:8074
+#: cp/decl.c:8101
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr ""
-#: cp/decl.c:8083
+#: cp/decl.c:8110
#, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr ""
-#: cp/decl.c:8091
+#: cp/decl.c:8118
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:8097
+#: cp/decl.c:8124
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:8103
+#: cp/decl.c:8130
#, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr ""
-#: cp/decl.c:8182
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr ""
-#: cp/decl.c:8224
+#: cp/decl.c:8251
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:8229
+#: cp/decl.c:8256
#, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr ""
-#: cp/decl.c:8230
+#: cp/decl.c:8257
#, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr ""
-#: cp/decl.c:8247 cp/decl2.c:787
+#: cp/decl.c:8274 cp/decl2.c:787
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr ""
-#: cp/decl.c:8431
+#: cp/decl.c:8458
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a global variable"
msgstr ""
-#: cp/decl.c:8439
+#: cp/decl.c:8466
#, gcc-internal-format
msgid "a non-template variable cannot be %<concept%>"
msgstr ""
-#: cp/decl.c:8446
+#: cp/decl.c:8473
#, gcc-internal-format
msgid "concept must have type %<bool%>"
msgstr ""
-#: cp/decl.c:8559
+#: cp/decl.c:8586
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr ""
-#: cp/decl.c:8563
+#: cp/decl.c:8590
#, gcc-internal-format
msgid ""
"%<constexpr%> needed for in-class initialization of static data member %q#D "
"of non-integral type"
msgstr ""
-#: cp/decl.c:8566
+#: cp/decl.c:8593
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr ""
-#: cp/decl.c:8579
+#: cp/decl.c:8606
#, gcc-internal-format
msgid ""
"invalid in-class initialization of static data member of non-integral type "
"%qT"
msgstr ""
-#: cp/decl.c:8585
+#: cp/decl.c:8612
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr ""
-#: cp/decl.c:8589
+#: cp/decl.c:8616
#, gcc-internal-format
msgid ""
"ISO C++ forbids initialization of member constant %qD of non-integral type "
"%qT"
msgstr ""
-#: cp/decl.c:8688 cp/decl.c:8715
+#: cp/decl.c:8711 cp/decl.c:8738
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr ""
-#: cp/decl.c:8691 cp/decl.c:8717
+#: cp/decl.c:8714 cp/decl.c:8740
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr ""
-#: cp/decl.c:8748 cp/decl.c:8801
+#: cp/decl.c:8771 cp/decl.c:8824
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:8767
+#: cp/decl.c:8790
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr ""
-#: cp/decl.c:8769 cp/init.c:3349
+#: cp/decl.c:8792 cp/init.c:3418
#, gcc-internal-format
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:8783
+#: cp/decl.c:8806
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr ""
-#: cp/decl.c:8785
+#: cp/decl.c:8808
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:8798
+#: cp/decl.c:8821
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:8807
+#: cp/decl.c:8830
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr ""
-#: cp/decl.c:8809
+#: cp/decl.c:8832
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr ""
-#: cp/decl.c:8815
+#: cp/decl.c:8838
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8818
+#: cp/decl.c:8841
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
-#: cp/decl.c:8869
+#: cp/decl.c:8892
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:8922
+#: cp/decl.c:8945
#, gcc-internal-format
msgid "%qD declared as array of %qT"
msgstr ""
-#: cp/decl.c:8932
+#: cp/decl.c:8955
#, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr ""
-#: cp/decl.c:8934
+#: cp/decl.c:8957
#, gcc-internal-format
msgid "creating array of void"
msgstr ""
-#: cp/decl.c:8939
+#: cp/decl.c:8962
#, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr ""
-#: cp/decl.c:8941
+#: cp/decl.c:8964
#, gcc-internal-format
msgid "creating array of functions"
msgstr ""
-#: cp/decl.c:8946
+#: cp/decl.c:8969
#, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr ""
-#: cp/decl.c:8948
+#: cp/decl.c:8971
#, gcc-internal-format
msgid "creating array of references"
msgstr ""
-#: cp/decl.c:8953
+#: cp/decl.c:8976
#, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr ""
-#: cp/decl.c:8955
+#: cp/decl.c:8978
#, gcc-internal-format
msgid "creating array of function members"
msgstr ""
-#: cp/decl.c:8969
+#: cp/decl.c:8992
#, gcc-internal-format
msgid ""
"declaration of %qD as multidimensional array must have bounds for all "
"dimensions except the first"
msgstr ""
-#: cp/decl.c:8973
+#: cp/decl.c:8996
#, gcc-internal-format
msgid ""
"multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:9032
+#: cp/decl.c:9055
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:9035
+#: cp/decl.c:9058
#, gcc-internal-format
msgid "qualifiers are not allowed on constructor declaration"
msgstr ""
-#: cp/decl.c:9045
+#: cp/decl.c:9068
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:9048
+#: cp/decl.c:9071
#, gcc-internal-format
msgid "qualifiers are not allowed on destructor declaration"
msgstr ""
-#: cp/decl.c:9062
+#: cp/decl.c:9085
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr ""
-#: cp/decl.c:9065
+#: cp/decl.c:9088
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:9089
+#: cp/decl.c:9112
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:9096
+#: cp/decl.c:9119
#, gcc-internal-format
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:9300
+#: cp/decl.c:9323
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr ""
-#: cp/decl.c:9303 cp/decl.c:9323
+#: cp/decl.c:9326 cp/decl.c:9346
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr ""
-#: cp/decl.c:9306
+#: cp/decl.c:9329
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr ""
-#: cp/decl.c:9315
+#: cp/decl.c:9338
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr ""
-#: cp/decl.c:9339 cp/decl.c:9436 cp/decl.c:9445 cp/decl.c:10876
+#: cp/decl.c:9362 cp/decl.c:9459 cp/decl.c:9468 cp/decl.c:10899
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr ""
-#: cp/decl.c:9345
+#: cp/decl.c:9368
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr ""
-#: cp/decl.c:9381
+#: cp/decl.c:9404
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:9428
+#: cp/decl.c:9451
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr ""
-#: cp/decl.c:9453
+#: cp/decl.c:9476
#, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr ""
-#: cp/decl.c:9458
+#: cp/decl.c:9481
#, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr ""
-#: cp/decl.c:9491
+#: cp/decl.c:9514
#, gcc-internal-format
msgid "%<concept%> cannot appear in a typedef declaration"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9520
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr ""
-#: cp/decl.c:9505
+#: cp/decl.c:9528
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr ""
-#: cp/decl.c:9511
+#: cp/decl.c:9534
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr ""
-#: cp/decl.c:9552
+#: cp/decl.c:9575
#, gcc-internal-format
msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>"
msgstr ""
-#: cp/decl.c:9600 cp/decl.c:9603 cp/decl.c:9606
+#: cp/decl.c:9623 cp/decl.c:9626 cp/decl.c:9629
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr ""
-#: cp/decl.c:9622
+#: cp/decl.c:9645
#, gcc-internal-format
msgid "%<__int%d%> is not supported by this target"
msgstr ""
-#: cp/decl.c:9628
+#: cp/decl.c:9651
#, gcc-internal-format
msgid "ISO C++ does not support %<__int%d%> for %qs"
msgstr ""
-#: cp/decl.c:9650 cp/decl.c:9670
+#: cp/decl.c:9673 cp/decl.c:9693
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr ""
-#: cp/decl.c:9652
+#: cp/decl.c:9675
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr ""
-#: cp/decl.c:9654
+#: cp/decl.c:9677
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:9656
+#: cp/decl.c:9679
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:9658
+#: cp/decl.c:9681
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:9660
+#: cp/decl.c:9683
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:9662
+#: cp/decl.c:9685
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr ""
-#: cp/decl.c:9664
+#: cp/decl.c:9687
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr ""
-#: cp/decl.c:9666
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr ""
-#: cp/decl.c:9672
+#: cp/decl.c:9695
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:9680
+#: cp/decl.c:9703
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr ""
-#: cp/decl.c:9748
+#: cp/decl.c:9771
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr ""
-#: cp/decl.c:9795
+#: cp/decl.c:9818
#, gcc-internal-format
msgid "member %qD cannot be declared both %<virtual%> and %<static%>"
msgstr ""
-#: cp/decl.c:9801
+#: cp/decl.c:9824
#, gcc-internal-format
msgid "member %qD cannot be declared both %<virtual%> and %<constexpr%>"
msgstr ""
-#: cp/decl.c:9811
+#: cp/decl.c:9834
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:9816
+#: cp/decl.c:9839
#, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr ""
-#: cp/decl.c:9822
+#: cp/decl.c:9845
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:9826
+#: cp/decl.c:9849
#, gcc-internal-format
msgid "a parameter cannot be declared %<concept%>"
msgstr ""
-#: cp/decl.c:9831
+#: cp/decl.c:9854
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr ""
-#: cp/decl.c:9841
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr ""
-#: cp/decl.c:9859
+#: cp/decl.c:9882
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr ""
-#: cp/decl.c:9882
+#: cp/decl.c:9905
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr ""
-#: cp/decl.c:9886
+#: cp/decl.c:9909
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr ""
-#: cp/decl.c:9899
+#: cp/decl.c:9922
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr ""
-#: cp/decl.c:9903
+#: cp/decl.c:9926
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr ""
-#: cp/decl.c:9910
+#: cp/decl.c:9933
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr ""
-#: cp/decl.c:9922
+#: cp/decl.c:9945
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:10034
+#: cp/decl.c:10057
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr ""
-#: cp/decl.c:10039
+#: cp/decl.c:10062
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr ""
-#: cp/decl.c:10063
+#: cp/decl.c:10086
#, gcc-internal-format
msgid "requires-clause on return type"
msgstr ""
-#: cp/decl.c:10082
+#: cp/decl.c:10105
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:10085
+#: cp/decl.c:10108
#, gcc-internal-format
msgid "deduced return type only available with -std=c++14 or -std=gnu++14"
msgstr ""
-#: cp/decl.c:10091
+#: cp/decl.c:10114
#, gcc-internal-format
msgid "virtual function cannot have deduced return type"
msgstr ""
-#: cp/decl.c:10098
+#: cp/decl.c:10121
#, gcc-internal-format
msgid ""
"%qs function with trailing return type has %qT as its type rather than plain "
@@ -39171,515 +39276,515 @@ msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:10110
+#: cp/decl.c:10133
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:10113
+#: cp/decl.c:10136
#, gcc-internal-format
msgid ""
"%qs function with trailing return type not declared with %<auto%> type "
"specifier"
msgstr ""
-#: cp/decl.c:10150
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:10151
+#: cp/decl.c:10174
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr ""
-#: cp/decl.c:10155
+#: cp/decl.c:10178
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:10156
+#: cp/decl.c:10179
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:10164
+#: cp/decl.c:10187
#, gcc-internal-format
msgid "destructors may not be ref-qualified"
msgstr ""
-#: cp/decl.c:10183
+#: cp/decl.c:10206
#, gcc-internal-format
msgid "constructors cannot be declared %<virtual%>"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:10198
+#: cp/decl.c:10221
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:10202
+#: cp/decl.c:10225
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:10204
+#: cp/decl.c:10227
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr ""
-#: cp/decl.c:10216
+#: cp/decl.c:10239
#, gcc-internal-format
msgid "a conversion function cannot have a trailing return type"
msgstr ""
-#: cp/decl.c:10227
+#: cp/decl.c:10250
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:10264
+#: cp/decl.c:10287
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr ""
-#: cp/decl.c:10277 cp/decl.c:10284
+#: cp/decl.c:10300 cp/decl.c:10307
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr ""
-#: cp/decl.c:10286
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr ""
-#: cp/decl.c:10315
+#: cp/decl.c:10338
#, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr ""
-#: cp/decl.c:10316
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr ""
-#: cp/decl.c:10386
+#: cp/decl.c:10409
#, gcc-internal-format
msgid ""
"cannot declare reference to %q#T, which is not a typedef or a template type "
"argument"
msgstr ""
-#: cp/decl.c:10456
+#: cp/decl.c:10479
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:10480
+#: cp/decl.c:10503
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:10485
+#: cp/decl.c:10508
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:10515
+#: cp/decl.c:10538
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:10517
+#: cp/decl.c:10540
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:10525
+#: cp/decl.c:10548
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr ""
-#: cp/decl.c:10558
+#: cp/decl.c:10581
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr ""
-#: cp/decl.c:10566
+#: cp/decl.c:10589
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:10568
+#: cp/decl.c:10591
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:10579
+#: cp/decl.c:10602
#, gcc-internal-format
msgid "%<explicit%> outside class declaration"
msgstr ""
-#: cp/decl.c:10582
+#: cp/decl.c:10605
#, gcc-internal-format
msgid "%<explicit%> in friend declaration"
msgstr ""
-#: cp/decl.c:10585
+#: cp/decl.c:10608
#, gcc-internal-format
msgid ""
"only declarations of constructors and conversion operators can be %<explicit"
"%>"
msgstr ""
-#: cp/decl.c:10594
+#: cp/decl.c:10617
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:10599
+#: cp/decl.c:10622
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:10605
+#: cp/decl.c:10628
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:10610
+#: cp/decl.c:10633
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:10615
+#: cp/decl.c:10638
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:10620
+#: cp/decl.c:10643
#, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:10656
+#: cp/decl.c:10679
#, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr ""
-#: cp/decl.c:10661
+#: cp/decl.c:10684
#, gcc-internal-format
msgid "requires-clause on typedef"
msgstr ""
-#: cp/decl.c:10669
+#: cp/decl.c:10692
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:10690
+#: cp/decl.c:10713
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:10806
+#: cp/decl.c:10829
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr ""
-#: cp/decl.c:10814
+#: cp/decl.c:10837
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:10816
+#: cp/decl.c:10839
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:10820
+#: cp/decl.c:10843
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr ""
-#: cp/decl.c:10833
+#: cp/decl.c:10856
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:10853
+#: cp/decl.c:10876
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:10857
+#: cp/decl.c:10880
#, gcc-internal-format
msgid "requires-clause on type-id"
msgstr ""
-#: cp/decl.c:10866
+#: cp/decl.c:10889
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr ""
-#: cp/decl.c:10884
+#: cp/decl.c:10907
#, gcc-internal-format
msgid "requires-clause on declaration of non-function type %qT"
msgstr ""
-#: cp/decl.c:10902
+#: cp/decl.c:10925
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr ""
-#: cp/decl.c:10907
+#: cp/decl.c:10930
#, gcc-internal-format
msgid "%<auto%> parameter not permitted in this context"
msgstr ""
-#: cp/decl.c:10909
+#: cp/decl.c:10932
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr ""
-#: cp/decl.c:10955
+#: cp/decl.c:10978
#, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:10987
+#: cp/decl.c:11009
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr ""
-#: cp/decl.c:11009
+#: cp/decl.c:11031
#, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr ""
-#: cp/decl.c:11018
+#: cp/decl.c:11040
#, gcc-internal-format
msgid "function %qD declared %<virtual%> inside a union"
msgstr ""
-#: cp/decl.c:11027
+#: cp/decl.c:11049
#, gcc-internal-format
msgid "%qD cannot be declared %<virtual%>, since it is always static"
msgstr ""
-#: cp/decl.c:11043
+#: cp/decl.c:11065
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr ""
-#: cp/decl.c:11050
+#: cp/decl.c:11072
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr ""
-#: cp/decl.c:11056
+#: cp/decl.c:11078
#, gcc-internal-format
msgid "a destructor cannot be %<concept%>"
msgstr ""
-#: cp/decl.c:11061
+#: cp/decl.c:11083
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr ""
-#: cp/decl.c:11067
+#: cp/decl.c:11089
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr ""
-#: cp/decl.c:11075
+#: cp/decl.c:11097
#, gcc-internal-format
msgid "a constructor cannot be %<concept%>"
msgstr ""
-#: cp/decl.c:11080
+#: cp/decl.c:11102
#, gcc-internal-format
msgid "a concept cannot be a member function"
msgstr ""
-#: cp/decl.c:11089
+#: cp/decl.c:11111
#, gcc-internal-format
msgid "specialization of variable template %qD declared as function"
msgstr ""
-#: cp/decl.c:11092
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "variable template declared here"
msgstr ""
-#: cp/decl.c:11148
+#: cp/decl.c:11170
#, gcc-internal-format
msgid "field %qD has incomplete type %qT"
msgstr ""
-#: cp/decl.c:11153
+#: cp/decl.c:11175
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr ""
-#: cp/decl.c:11163
+#: cp/decl.c:11185
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:11222
+#: cp/decl.c:11244
#, gcc-internal-format
msgid "static data member %qE declared %<concept%>"
msgstr ""
-#: cp/decl.c:11226
+#: cp/decl.c:11248
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr ""
-#: cp/decl.c:11234
+#: cp/decl.c:11256
#, gcc-internal-format
msgid "non-static data member %qE declared %<concept%>"
msgstr ""
-#: cp/decl.c:11238
+#: cp/decl.c:11260
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr ""
-#: cp/decl.c:11288
+#: cp/decl.c:11310
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:11290
+#: cp/decl.c:11312
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:11294
+#: cp/decl.c:11316
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:11297
+#: cp/decl.c:11319
#, gcc-internal-format
msgid "storage class %<thread_local%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:11302
+#: cp/decl.c:11324
#, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr ""
-#: cp/decl.c:11313
+#: cp/decl.c:11335
#, gcc-internal-format
msgid ""
"%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:11317
+#: cp/decl.c:11339
#, gcc-internal-format
msgid ""
"%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:11325
+#: cp/decl.c:11347
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr ""
-#: cp/decl.c:11332
+#: cp/decl.c:11354
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr ""
-#: cp/decl.c:11333
+#: cp/decl.c:11355
#, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr ""
-#: cp/decl.c:11366
+#: cp/decl.c:11388
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:11373
+#: cp/decl.c:11395
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:11407
+#: cp/decl.c:11429
#, gcc-internal-format
msgid ""
"%<static%> may not be used when defining (as opposed to declaring) a static "
"data member"
msgstr ""
-#: cp/decl.c:11414
+#: cp/decl.c:11436
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:11420
+#: cp/decl.c:11442
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:11427
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr ""
-#: cp/decl.c:11440
+#: cp/decl.c:11462
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr ""
-#: cp/decl.c:11444
+#: cp/decl.c:11466
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr ""
-#: cp/decl.c:11591
+#: cp/decl.c:11613
#, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr ""
-#: cp/decl.c:11594
+#: cp/decl.c:11616
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr ""
-#: cp/decl.c:11679
+#: cp/decl.c:11701
#, gcc-internal-format
msgid "invalid use of cv-qualified type %qT in parameter declaration"
msgstr ""
-#: cp/decl.c:11683
+#: cp/decl.c:11705
#, gcc-internal-format
msgid "invalid use of type %<void%> in parameter declaration"
msgstr ""
-#: cp/decl.c:11696
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr ""
-#: cp/decl.c:11724
+#: cp/decl.c:11746
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr ""
-#: cp/decl.c:11749
+#: cp/decl.c:11771
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:11751
+#: cp/decl.c:11773
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr ""
@@ -39699,174 +39804,174 @@ 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:12001
+#: cp/decl.c:12023
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:12123
+#: cp/decl.c:12145
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr ""
-#: cp/decl.c:12128
+#: cp/decl.c:12150
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr ""
-#: cp/decl.c:12154
+#: cp/decl.c:12176
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:12163
+#: cp/decl.c:12185
#, gcc-internal-format
msgid ""
"%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:12185
+#: cp/decl.c:12207
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:12214
+#: cp/decl.c:12236
#, gcc-internal-format
msgid ""
"conversion to a reference to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:12216
+#: cp/decl.c:12238
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:12223
+#: cp/decl.c:12245
#, gcc-internal-format
msgid ""
"conversion to a reference to the same type will never use a type conversion "
"operator"
msgstr ""
-#: cp/decl.c:12225
+#: cp/decl.c:12247
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:12233
+#: cp/decl.c:12255
#, gcc-internal-format
msgid ""
"conversion to a reference to a base class will never use a type conversion "
"operator"
msgstr ""
-#: cp/decl.c:12235
+#: cp/decl.c:12257
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:12244
+#: cp/decl.c:12266
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:12249
+#: cp/decl.c:12271
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr ""
-#: cp/decl.c:12300
+#: cp/decl.c:12322
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:12303
+#: cp/decl.c:12325
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:12311
+#: cp/decl.c:12333
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr ""
-#: cp/decl.c:12313
+#: cp/decl.c:12335
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr ""
-#: cp/decl.c:12335
+#: cp/decl.c:12357
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:12341
+#: cp/decl.c:12363
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:12350
+#: cp/decl.c:12372
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:12352 cp/decl.c:12361
+#: cp/decl.c:12374 cp/decl.c:12383
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:12363
+#: cp/decl.c:12385
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr ""
-#: cp/decl.c:12372
+#: cp/decl.c:12394
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:12386
+#: cp/decl.c:12408
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:12397 cp/decl.c:12402
+#: cp/decl.c:12419 cp/decl.c:12424
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr ""
-#: cp/decl.c:12460
+#: cp/decl.c:12482
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr ""
-#: cp/decl.c:12483
+#: cp/decl.c:12505
#, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr ""
-#: cp/decl.c:12486
+#: cp/decl.c:12508
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:12488
+#: cp/decl.c:12510
#, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr ""
-#: cp/decl.c:12496
+#: cp/decl.c:12518
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:12497 cp/decl.c:12504
+#: cp/decl.c:12519 cp/decl.c:12526
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr ""
-#: cp/decl.c:12503
+#: cp/decl.c:12525
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -39878,98 +39983,114 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:12518
+#: cp/decl.c:12540
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr ""
-#: cp/decl.c:12572 cp/name-lookup.c:3192
+#: cp/decl.c:12594 cp/name-lookup.c:3195
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:12602 cp/name-lookup.c:2682 cp/name-lookup.c:3520
-#: cp/name-lookup.c:3565 cp/parser.c:6041 cp/parser.c:24743
+#: cp/decl.c:12624 cp/friend.c:261 cp/parser.c:2971 cp/parser.c:6092
+#: cp/pt.c:8156
+#, gcc-internal-format
+msgid "%qT is not a template"
+msgstr ""
+
+#: cp/decl.c:12625 cp/friend.c:262 cp/tree.c:3719
+#, gcc-internal-format
+msgid "previous declaration here"
+msgstr ""
+
+#: cp/decl.c:12629
+#, gcc-internal-format
+msgid "perhaps you want to explicitly add %<%T::%>"
+msgstr ""
+
+#: cp/decl.c:12638 cp/name-lookup.c:2685 cp/name-lookup.c:3524
+#: cp/name-lookup.c:3569 cp/parser.c:6043 cp/parser.c:24810
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr ""
-#: cp/decl.c:12723
+#: cp/decl.c:12759
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr ""
-#: cp/decl.c:12756
+#: cp/decl.c:12792
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr ""
-#: cp/decl.c:12757
+#: cp/decl.c:12793
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr ""
-#: cp/decl.c:12900
+#: cp/decl.c:12936
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:12909
+#: cp/decl.c:12945
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:12914
+#: cp/decl.c:12950
#, gcc-internal-format
msgid "%qT defined with multiple direct bases"
msgstr ""
-#: cp/decl.c:12923
+#: cp/decl.c:12959
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:12928
+#: cp/decl.c:12964
#, gcc-internal-format
msgid "%qT defined with direct virtual base"
msgstr ""
-#: cp/decl.c:12946
+#: cp/decl.c:12982
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:12979
+#: cp/decl.c:13015
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:12981
+#: cp/decl.c:13017
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr ""
-#: cp/decl.c:13111
+#: cp/decl.c:13147
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:13114 cp/decl.c:13122 cp/decl.c:13134 cp/parser.c:17226
+#: cp/decl.c:13150 cp/decl.c:13158 cp/decl.c:13170 cp/parser.c:17256
#, gcc-internal-format
msgid "previous definition here"
msgstr ""
-#: cp/decl.c:13119
+#: cp/decl.c:13155
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:13131
+#: cp/decl.c:13167
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:13200
+#: cp/decl.c:13236
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -39978,77 +40099,77 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:13334
+#: cp/decl.c:13370
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:13503
+#: cp/decl.c:13538
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr ""
-#: cp/decl.c:13550
+#: cp/decl.c:13585
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr ""
-#: cp/decl.c:13562
+#: cp/decl.c:13597
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr ""
-#: cp/decl.c:13582
+#: cp/decl.c:13617
#, gcc-internal-format
msgid "enumerator value %E is outside the range of underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:13675
+#: cp/decl.c:13710
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr ""
-#: cp/decl.c:13677
+#: cp/decl.c:13712
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr ""
-#: cp/decl.c:13812 cp/typeck.c:8842
+#: cp/decl.c:13884 cp/typeck.c:8822
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:14156
+#: cp/decl.c:14227
#, gcc-internal-format
msgid "invalid function declaration"
msgstr ""
-#: cp/decl.c:14238
+#: cp/decl.c:14309
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr ""
-#: cp/decl.c:14628
+#: cp/decl.c:14658
#, gcc-internal-format
msgid "no return statements in function returning %qT"
msgstr ""
-#: cp/decl.c:14630 cp/typeck.c:8723
+#: cp/decl.c:14660 cp/typeck.c:8703
#, gcc-internal-format
msgid "only plain %<auto%> return type can be deduced to %<void%>"
msgstr ""
-#: cp/decl.c:14843
+#: cp/decl.c:14862
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr ""
-#: cp/decl.c:14857
+#: cp/decl.c:14876
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr ""
-#: cp/decl.c:15223 cp/decl2.c:5119 cp/decl2.c:5177
+#: cp/decl.c:15242 cp/decl2.c:5131 cp/decl2.c:5181
#, gcc-internal-format
msgid "use of %qD before deduction of %<auto%>"
msgstr ""
@@ -40090,7 +40211,7 @@ msgstr ""
msgid "deleting %qT is undefined"
msgstr ""
-#: cp/decl2.c:540 cp/pt.c:5166
+#: cp/decl2.c:540 cp/pt.c:5172
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr ""
@@ -40114,7 +40235,7 @@ msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/decl2.c:673 cp/pt.c:5136
+#: cp/decl2.c:673 cp/pt.c:5142
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr ""
@@ -40295,7 +40416,7 @@ msgstr ""
msgid "%qT declared with greater visibility than its base %qT"
msgstr ""
-#: cp/decl2.c:4255
+#: cp/decl2.c:4263
#, gcc-internal-format
msgid "%q#D, declared using anonymous type, is used but never defined"
msgstr ""
@@ -40304,62 +40425,62 @@ msgstr ""
#. 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/decl2.c:4264
+#: cp/decl2.c:4272
#, gcc-internal-format
msgid ""
"anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl2.c:4268
+#: cp/decl2.c:4276
#, gcc-internal-format
msgid ""
"anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl2.c:4272
+#: cp/decl2.c:4280
#, gcc-internal-format
msgid ""
"%q#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl2.c:4280
+#: cp/decl2.c:4288
#, gcc-internal-format
msgid "%q#D, declared using local type %qT, is used but never defined"
msgstr ""
-#: cp/decl2.c:4284
+#: cp/decl2.c:4292
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl2.c:4287
+#: cp/decl2.c:4295
#, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl2.c:4474 cp/decl2.c:4477
+#: cp/decl2.c:4482 cp/decl2.c:4485
#, gcc-internal-format
msgid "the program should also define %qD"
msgstr ""
-#: cp/decl2.c:4838
+#: cp/decl2.c:4846
#, gcc-internal-format
msgid "inline function %qD used but never defined"
msgstr ""
-#: cp/decl2.c:5027
+#: cp/decl2.c:5035
#, gcc-internal-format
msgid "default argument missing for parameter %P of %q+#D"
msgstr ""
#. We mark a lambda conversion op as deleted if we can't
#. generate it properly; see maybe_add_lambda_conv_op.
-#: cp/decl2.c:5091
+#: cp/decl2.c:5103
#, gcc-internal-format
msgid "converting lambda which uses %<...%> to function pointer"
msgstr ""
-#: cp/decl2.c:5098
+#: cp/decl2.c:5110
#, gcc-internal-format
msgid "use of deleted function %qD"
msgstr ""
@@ -40467,7 +40588,7 @@ msgstr ""
msgid "%qD is not a member of %qT"
msgstr ""
-#: cp/error.c:3712 cp/typeck.c:2759
+#: cp/error.c:3712 cp/typeck.c:2767
#, gcc-internal-format
msgid "%qD is not a member of %qD"
msgstr ""
@@ -40509,7 +40630,7 @@ msgstr ""
msgid "throwing NULL, which has integral, not pointer type"
msgstr ""
-#: cp/except.c:754 cp/init.c:2803
+#: cp/except.c:754 cp/init.c:2864
#, gcc-internal-format
msgid "%qD should never be overloaded"
msgstr ""
@@ -40536,27 +40657,27 @@ msgstr ""
msgid "cannot catch type %qT because it involves types of variable size"
msgstr ""
-#: cp/except.c:1093
+#: cp/except.c:1094
#, gcc-internal-format
msgid "exception of type %qT will be caught"
msgstr ""
-#: cp/except.c:1096
+#: cp/except.c:1097
#, gcc-internal-format
msgid " by earlier handler for %qT"
msgstr ""
-#: cp/except.c:1125
+#: cp/except.c:1126
#, gcc-internal-format
msgid "%<...%> handler must be the last handler for its try block"
msgstr ""
-#: cp/except.c:1207
+#: cp/except.c:1208
#, gcc-internal-format
msgid "noexcept-expression evaluates to %<false%> because of a call to %qD"
msgstr ""
-#: cp/except.c:1210
+#: cp/except.c:1211
#, gcc-internal-format
msgid "but %qD does not throw; perhaps it should be declared %<noexcept%>"
msgstr ""
@@ -40578,74 +40699,80 @@ msgstr ""
#. [temp.friend]
#. Friend declarations shall not declare partial
#. specializations.
-#: cp/friend.c:254 cp/friend.c:284
+#: cp/friend.c:254 cp/friend.c:296
#, gcc-internal-format
msgid "partial specialization %qT declared %<friend%>"
msgstr ""
-#: cp/friend.c:262
+#: cp/friend.c:266
+#, gcc-internal-format
+msgid ""
+"perhaps you need explicit template arguments in your nested-name-specifier"
+msgstr ""
+
+#: cp/friend.c:274
#, gcc-internal-format
msgid "class %qT is implicitly friends with itself"
msgstr ""
-#: cp/friend.c:320
+#: cp/friend.c:332
#, gcc-internal-format
msgid "%qT is not a member of %qT"
msgstr ""
-#: cp/friend.c:325
+#: cp/friend.c:337
#, gcc-internal-format
msgid "%qT is not a member class template of %qT"
msgstr ""
-#: cp/friend.c:334
+#: cp/friend.c:346
#, gcc-internal-format
msgid "%qT is not a nested class of %qT"
msgstr ""
#. template <class T> friend class T;
-#: cp/friend.c:348
+#: cp/friend.c:360
#, gcc-internal-format
msgid "template parameter type %qT declared %<friend%>"
msgstr ""
#. template <class T> friend class A; where A is not a template
-#: cp/friend.c:356
+#: cp/friend.c:368
#, gcc-internal-format
msgid "%q#T is not a template"
msgstr ""
-#: cp/friend.c:379
+#: cp/friend.c:391
#, gcc-internal-format
msgid "%qD is already a friend of %qT"
msgstr ""
-#: cp/friend.c:389
+#: cp/friend.c:401
#, gcc-internal-format
msgid "%qT is already a friend of %qT"
msgstr ""
-#: cp/friend.c:429
+#: cp/friend.c:441
#, gcc-internal-format
msgid "friend declaration %qD may not have virt-specifiers"
msgstr ""
-#: cp/friend.c:522
+#: cp/friend.c:534
#, gcc-internal-format
msgid "member %qD declared as friend before type %qT defined"
msgstr ""
-#: cp/friend.c:571
+#: cp/friend.c:583
#, gcc-internal-format
msgid "friend declaration %qD in local class without prior declaration"
msgstr ""
-#: cp/friend.c:594
+#: cp/friend.c:606
#, gcc-internal-format
msgid "friend declaration %q#D declares a non-template function"
msgstr ""
-#: cp/friend.c:598
+#: cp/friend.c:610
#, gcc-internal-format
msgid ""
"(if this is not what you intended, make sure the function template has "
@@ -40698,18 +40825,18 @@ msgstr ""
msgid "invalid initializer for array member %q#D"
msgstr ""
-#: cp/init.c:756 cp/init.c:780 cp/init.c:2242 cp/method.c:1217
+#: cp/init.c:756 cp/init.c:780 cp/init.c:2234 cp/method.c:1230
#, gcc-internal-format
msgid "uninitialized const member in %q#T"
msgstr ""
-#: cp/init.c:758 cp/init.c:775 cp/init.c:782 cp/init.c:2227 cp/init.c:2255
-#: cp/method.c:1220 cp/method.c:1231
+#: cp/init.c:758 cp/init.c:775 cp/init.c:782 cp/init.c:2219 cp/init.c:2247
+#: cp/method.c:1233 cp/method.c:1244
#, gcc-internal-format
msgid "%q#D should be initialized"
msgstr ""
-#: cp/init.c:773 cp/init.c:2214 cp/method.c:1228
+#: cp/init.c:773 cp/init.c:2206 cp/method.c:1241
#, gcc-internal-format
msgid "uninitialized reference member in %q#T"
msgstr ""
@@ -40760,304 +40887,309 @@ msgid ""
"base class %q#T should be explicitly initialized in the copy constructor"
msgstr ""
-#: cp/init.c:1370 cp/init.c:1389
+#: cp/init.c:1365 cp/init.c:1384
#, gcc-internal-format
msgid "class %qT does not have any field named %qD"
msgstr ""
-#: cp/init.c:1376
+#: cp/init.c:1371
#, gcc-internal-format
msgid ""
"%q#D is a static data member; it can only be initialized at its definition"
msgstr ""
-#: cp/init.c:1383
+#: cp/init.c:1378
#, gcc-internal-format
msgid "%q#D is not a non-static data member of %qT"
msgstr ""
-#: cp/init.c:1422
+#: cp/init.c:1417
#, gcc-internal-format
msgid "unnamed initializer for %qT, which has no base classes"
msgstr ""
-#: cp/init.c:1430
+#: cp/init.c:1425
#, gcc-internal-format
msgid "unnamed initializer for %qT, which uses multiple inheritance"
msgstr ""
-#: cp/init.c:1477
+#: cp/init.c:1472
#, gcc-internal-format
msgid "%qD is both a direct base and an indirect virtual base"
msgstr ""
-#: cp/init.c:1485
+#: cp/init.c:1480
#, gcc-internal-format
msgid "type %qT is not a direct or virtual base of %qT"
msgstr ""
-#: cp/init.c:1488
+#: cp/init.c:1483
#, gcc-internal-format
msgid "type %qT is not a direct base of %qT"
msgstr ""
-#: cp/init.c:1573
+#: cp/init.c:1568
#, gcc-internal-format
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1872 cp/semantics.c:3146
+#: cp/init.c:1864 cp/semantics.c:3194
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr ""
-#: cp/init.c:1928
+#: cp/init.c:1920
#, gcc-internal-format
msgid "incomplete type %qT does not have member %qD"
msgstr ""
-#: cp/init.c:1942
+#: cp/init.c:1934
#, gcc-internal-format
msgid "invalid pointer to bit-field %qD"
msgstr ""
-#: cp/init.c:2023 cp/typeck.c:1831
+#: cp/init.c:2015 cp/typeck.c:1831
#, gcc-internal-format
msgid "invalid use of non-static member function %qD"
msgstr ""
-#: cp/init.c:2030 cp/semantics.c:1727
+#: cp/init.c:2022 cp/semantics.c:1762
#, gcc-internal-format
msgid "invalid use of non-static data member %qD"
msgstr ""
-#: cp/init.c:2211
+#: cp/init.c:2203
#, gcc-internal-format
msgid ""
"uninitialized reference member in %q#T using %<new%> without new-initializer"
msgstr ""
-#: cp/init.c:2219
+#: cp/init.c:2211
#, gcc-internal-format
msgid ""
"uninitialized reference member in base %q#T of %q#T using %<new%> without "
"new-initializer"
msgstr ""
-#: cp/init.c:2223
+#: cp/init.c:2215
#, gcc-internal-format
msgid "uninitialized reference member in base %q#T of %q#T"
msgstr ""
-#: cp/init.c:2239
+#: cp/init.c:2231
#, gcc-internal-format
msgid ""
"uninitialized const member in %q#T using %<new%> without new-initializer"
msgstr ""
-#: cp/init.c:2247
+#: cp/init.c:2239
#, gcc-internal-format
msgid ""
"uninitialized const member in base %q#T of %q#T using %<new%> without new-"
"initializer"
msgstr ""
-#: cp/init.c:2251
+#: cp/init.c:2243
#, gcc-internal-format
msgid "uninitialized const member in base %q#T of %q#T"
msgstr ""
-#: cp/init.c:2457
+#: cp/init.c:2518
#, gcc-internal-format
msgid ""
"placement new constructing an object of type %<%T [%wu]%> and size %qwu in a "
"region of type %qT and size %qwi"
msgstr ""
-#: cp/init.c:2469
+#: cp/init.c:2530
#, gcc-internal-format
msgid ""
"placement new constructing an array of objects of type %qT and size %qwu in "
"a region of type %qT and size %qwi"
msgstr ""
-#: cp/init.c:2480
+#: cp/init.c:2541
#, gcc-internal-format
msgid ""
"placement new constructing an object of type %qT and size %qwu in a region "
"of type %qT and size %qwi"
msgstr ""
-#: cp/init.c:2594
+#: cp/init.c:2655
#, gcc-internal-format
msgid "integer overflow in array size"
msgstr ""
-#: cp/init.c:2604
+#: cp/init.c:2665
#, gcc-internal-format
msgid "array size in new-expression must be constant"
msgstr ""
-#: cp/init.c:2618
+#: cp/init.c:2679
#, gcc-internal-format
msgid "variably modified type not allowed in new-expression"
msgstr ""
-#: cp/init.c:2649
+#: cp/init.c:2710
#, gcc-internal-format
msgid "invalid type %<void%> for new"
msgstr ""
-#: cp/init.c:2692
+#: cp/init.c:2753
#, gcc-internal-format
msgid "uninitialized const in %<new%> of %q#T"
msgstr ""
-#: cp/init.c:2784
+#: cp/init.c:2845
#, gcc-internal-format
msgid "%qT isn%'t a valid Java class type"
msgstr ""
-#: cp/init.c:2797
+#: cp/init.c:2858
#, gcc-internal-format
msgid "call to Java constructor with %qs undefined"
msgstr ""
-#: cp/init.c:2813
+#: cp/init.c:2873
+#, gcc-internal-format
+msgid "%qD is not a function returning a pointer"
+msgstr ""
+
+#: cp/init.c:2882
#, gcc-internal-format
msgid "Java class %q#T object allocated using placement new"
msgstr ""
-#: cp/init.c:2857
+#: cp/init.c:2926
#, gcc-internal-format
msgid "no suitable %qD found in class %qT"
msgstr ""
-#: cp/init.c:2864 cp/search.c:1171
+#: cp/init.c:2933 cp/search.c:1171
#, gcc-internal-format
msgid "request for member %qD is ambiguous"
msgstr ""
-#: cp/init.c:3093
+#: cp/init.c:3162
#, gcc-internal-format
msgid "parenthesized initializer in array new"
msgstr ""
-#: cp/init.c:3331
+#: cp/init.c:3400
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:3363
+#: cp/init.c:3432
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:3372
+#: cp/init.c:3441
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:3416
+#: cp/init.c:3485
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr ""
-#: cp/init.c:3434
+#: cp/init.c:3503
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr ""
-#: cp/init.c:3494
+#: cp/init.c:3563
#, gcc-internal-format
msgid "possible problem detected in invocation of delete [] operator:"
msgstr ""
-#: cp/init.c:3498
+#: cp/init.c:3567
#, 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:3988
+#: cp/init.c:4059
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:4073
+#: cp/init.c:4144
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:4280
+#: cp/init.c:4351
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:4304
+#: cp/init.c:4375
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:4309
+#: cp/init.c:4380
#, 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:4324
+#: cp/init.c:4395
#, gcc-internal-format
msgid ""
"deleting object of abstract class type %qT which has non-virtual destructor "
-"will cause undefined behaviour"
+"will cause undefined behavior"
msgstr ""
-#: cp/init.c:4329
+#: cp/init.c:4400
#, gcc-internal-format
msgid ""
"deleting object of polymorphic class type %qT which has non-virtual "
-"destructor might cause undefined behaviour"
+"destructor might cause undefined behavior"
msgstr ""
-#: cp/init.c:4627
+#: cp/init.c:4701
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr ""
-#: cp/lambda.c:461
+#: cp/lambda.c:462
#, gcc-internal-format
msgid "array of runtime bound cannot be captured by copy, only by reference"
msgstr ""
-#: cp/lambda.c:476
+#: cp/lambda.c:477
#, gcc-internal-format
msgid ""
"capture of variable-size type %qT that is not an N3639 array of runtime bound"
msgstr ""
-#: cp/lambda.c:480
+#: cp/lambda.c:481
#, gcc-internal-format
msgid "because the array element type %qT has variable size"
msgstr ""
-#: cp/lambda.c:491
+#: cp/lambda.c:492
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr ""
-#: cp/lambda.c:499
+#: cp/lambda.c:500
#, gcc-internal-format
msgid "capture by copy of incomplete type %qT"
msgstr ""
-#: cp/lambda.c:523
+#: cp/lambda.c:524
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/lambda.c:722
+#: cp/lambda.c:723
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr ""
@@ -41121,188 +41253,194 @@ msgid ""
"use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2145
+#: cp/mangle.c:2146
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2149
+#: cp/mangle.c:2150
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2436
+#: cp/mangle.c:2437
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:3009
+#: cp/mangle.c:3010
#, gcc-internal-format
msgid ""
"use of built-in trait %qE in function signature; use library traits instead"
msgstr ""
-#: cp/mangle.c:3014
+#: cp/mangle.c:3015
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:3091
+#: cp/mangle.c:3092
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:3155
+#: cp/mangle.c:3156
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3631
+#: cp/mangle.c:3639
#, gcc-internal-format
msgid ""
"a later -fabi-version= (or =0) avoids this error with a change in mangling"
msgstr ""
-#: cp/mangle.c:3658
+#: cp/mangle.c:3666
#, gcc-internal-format
msgid ""
"the mangled name of %qD changed between -fabi-version=%d (%D) and -fabi-"
"version=%d (%D)"
msgstr ""
-#: cp/mangle.c:3664
+#: cp/mangle.c:3672
#, gcc-internal-format
msgid ""
"the mangled name of %qD changes between -fabi-version=%d (%D) and -fabi-"
"version=%d (%D)"
msgstr ""
-#: cp/mangle.c:3953
+#: cp/mangle.c:3968
+#, gcc-internal-format
+msgid ""
+"the mangled name of %qD changes between -fabi-version=%d and -fabi-version=%d"
+msgstr ""
+
+#: cp/mangle.c:3973
#, gcc-internal-format
msgid ""
"the mangled name of the initialization guard variable for%qD changes between "
"-fabi-version=%d and -fabi-version=%d"
msgstr ""
-#: cp/method.c:692 cp/method.c:1173
+#: cp/method.c:705 cp/method.c:1186
#, gcc-internal-format
msgid "non-static const member %q#D, can%'t use default assignment operator"
msgstr ""
-#: cp/method.c:698 cp/method.c:1179
+#: cp/method.c:711 cp/method.c:1192
#, gcc-internal-format
msgid ""
"non-static reference member %q#D, can%'t use default assignment operator"
msgstr ""
-#: cp/method.c:816
+#: cp/method.c:829
#, gcc-internal-format
msgid "synthesized method %qD first required here "
msgstr ""
-#: cp/method.c:1122
+#: cp/method.c:1135
#, gcc-internal-format
msgid "union member %q+D with non-trivial %qD"
msgstr ""
-#: cp/method.c:1132
+#: cp/method.c:1145
#, gcc-internal-format
msgid "defaulted constructor calls non-constexpr %qD"
msgstr ""
-#: cp/method.c:1196
+#: cp/method.c:1209
#, gcc-internal-format
msgid "initializer for %q#D is invalid"
msgstr ""
-#: cp/method.c:1248
+#: cp/method.c:1261
#, gcc-internal-format
msgid "defaulted default constructor does not initialize %q#D"
msgstr ""
-#: cp/method.c:1259
+#: cp/method.c:1272
#, gcc-internal-format
msgid "copying non-static data member %q#D of rvalue reference type"
msgstr ""
#. A trivial constructor doesn't have any NSDMI.
-#: cp/method.c:1417
+#: cp/method.c:1439
#, gcc-internal-format
msgid ""
"defaulted default constructor does not initialize any non-static data member"
msgstr ""
-#: cp/method.c:1494
+#: cp/method.c:1516
#, gcc-internal-format
msgid ""
"defaulted move assignment for %qT calls a non-trivial move assignment "
"operator for virtual base %qT"
msgstr ""
-#: cp/method.c:1600
+#: cp/method.c:1622
#, gcc-internal-format
msgid "a lambda closure type has a deleted default constructor"
msgstr ""
-#: cp/method.c:1603
+#: cp/method.c:1625
#, gcc-internal-format
msgid "a lambda closure type has a deleted copy assignment operator"
msgstr ""
-#: cp/method.c:1614
+#: cp/method.c:1636
#, gcc-internal-format
msgid ""
"%q#D is implicitly declared as deleted because %qT declares a move "
"constructor or move assignment operator"
msgstr ""
-#: cp/method.c:1634
+#: cp/method.c:1656
#, gcc-internal-format
msgid ""
"%q#D is implicitly deleted because the default definition would be ill-"
"formed:"
msgstr ""
-#: cp/method.c:1643
+#: cp/method.c:1665
msgid ""
"%q#F is implicitly deleted because its exception-specification does not "
"match the implicit exception-specification %qX"
msgstr ""
-#: cp/method.c:1961
+#: cp/method.c:1983
#, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr ""
-#: cp/method.c:1963
+#: cp/method.c:1985
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr ""
-#: cp/method.c:1995
+#: cp/method.c:2017
msgid ""
"function %q+D defaulted on its redeclaration with an exception-specification "
"that differs from the implicit exception-specification %qX"
msgstr ""
-#: cp/method.c:2017
+#: cp/method.c:2039
#, gcc-internal-format
msgid ""
"explicitly defaulted function %q+D cannot be declared as constexpr because "
"the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:2063
+#: cp/method.c:2085
#, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr ""
-#: cp/method.c:2091
+#: cp/method.c:2113
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr ""
-#: cp/method.c:2100
+#: cp/method.c:2122
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr ""
@@ -41473,8 +41611,8 @@ msgid "%qT is not a namespace"
msgstr ""
#. C++11 7.3.3/10.
-#: cp/name-lookup.c:2548 cp/name-lookup.c:2604 cp/name-lookup.c:2674
-#: cp/name-lookup.c:2689
+#: cp/name-lookup.c:2548 cp/name-lookup.c:2595 cp/name-lookup.c:2677
+#: cp/name-lookup.c:2692
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr ""
@@ -41484,111 +41622,121 @@ msgstr ""
msgid "%qD not declared"
msgstr ""
-#: cp/name-lookup.c:3341
+#: cp/name-lookup.c:3344
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:3348
+#: cp/name-lookup.c:3351
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr ""
-#: cp/name-lookup.c:3361
+#: cp/name-lookup.c:3364
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr ""
-#: cp/name-lookup.c:3412
+#: cp/name-lookup.c:3415
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr ""
-#: cp/name-lookup.c:3499
+#: cp/name-lookup.c:3502
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3507
+#: cp/name-lookup.c:3510
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr ""
-#: cp/name-lookup.c:3590
+#: cp/name-lookup.c:3583
+#, gcc-internal-format
+msgid "%qD has not been declared within %D"
+msgstr ""
+
+#: cp/name-lookup.c:3584
+#, gcc-internal-format
+msgid "only here as a friend"
+msgstr ""
+
+#: cp/name-lookup.c:3600
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3635
+#: cp/name-lookup.c:3645
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr ""
-#: cp/name-lookup.c:3642
+#: cp/name-lookup.c:3652
#, gcc-internal-format
msgid ""
"%qD attribute is meaningless since members of the anonymous namespace get "
"local symbols"
msgstr ""
-#: cp/name-lookup.c:3652
+#: cp/name-lookup.c:3662
#, gcc-internal-format
msgid "ignoring %qD attribute on non-inline namespace"
msgstr ""
-#: cp/name-lookup.c:3658
+#: cp/name-lookup.c:3668
#, gcc-internal-format
msgid "ignoring %qD attribute on anonymous namespace"
msgstr ""
-#: cp/name-lookup.c:3677 cp/name-lookup.c:4090
+#: cp/name-lookup.c:3687 cp/name-lookup.c:4100
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr ""
-#: cp/name-lookup.c:3741
+#: cp/name-lookup.c:3751
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr ""
-#: cp/name-lookup.c:4078
+#: cp/name-lookup.c:4088
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:4082
+#: cp/name-lookup.c:4092
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4428
+#: cp/name-lookup.c:4438
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4438
+#: cp/name-lookup.c:4448
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4442
+#: cp/name-lookup.c:4452
#, gcc-internal-format
msgid " %qE"
msgstr ""
-#: cp/name-lookup.c:5709
+#: cp/name-lookup.c:5727
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:6243
+#: cp/name-lookup.c:6261
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:6252
+#: cp/name-lookup.c:6270
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -41608,15 +41756,15 @@ msgstr ""
msgid "LEXER_DEBUGGING_ENABLED_P is not set to true"
msgstr ""
-#: cp/parser.c:1349 cp/parser.c:35541
+#: cp/parser.c:1349 cp/parser.c:35591
#, gcc-internal-format
msgid ""
"%<#pragma omp declare simd%> not immediately followed by function "
"declaration or definition"
msgstr ""
-#: cp/parser.c:1387 cp/parser.c:36371 cp/parser.c:36476 cp/parser.c:36501
-#: cp/parser.c:36558
+#: cp/parser.c:1387 cp/parser.c:36422 cp/parser.c:36527 cp/parser.c:36552
+#: cp/parser.c:36609
#, gcc-internal-format
msgid ""
"%<#pragma acc routine%> not followed by a function declaration or definition"
@@ -41642,7 +41790,7 @@ msgstr ""
msgid "request for member %qE in non-class type %qT"
msgstr ""
-#: cp/parser.c:2826 cp/parser.c:17174
+#: cp/parser.c:2826 cp/parser.c:17204
#, gcc-internal-format
msgid "%<%T::%E%> has not been declared"
msgstr ""
@@ -41702,11 +41850,6 @@ msgstr ""
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr ""
-#: cp/parser.c:2971 cp/parser.c:6090 cp/pt.c:8149
-#, gcc-internal-format
-msgid "%qT is not a template"
-msgstr ""
-
#: cp/parser.c:2975
#, gcc-internal-format
msgid "%qE is not a class template"
@@ -41727,7 +41870,7 @@ msgstr ""
msgid "floating-point literal cannot appear in a constant-expression"
msgstr ""
-#: cp/parser.c:3017 cp/pt.c:15993
+#: cp/parser.c:3017 cp/pt.c:16072
#, gcc-internal-format
msgid ""
"a cast to a type other than an integral or enumeration type cannot appear in "
@@ -41836,1034 +41979,1039 @@ msgstr ""
msgid "C++11 %<thread_local%> only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/parser.c:3200
+#: cp/parser.c:3176
+#, gcc-internal-format
+msgid "%<concept%> only available with -fconcepts"
+msgstr ""
+
+#: cp/parser.c:3202
#, gcc-internal-format
msgid "(perhaps %<typename %T::%E%> was intended)"
msgstr ""
-#: cp/parser.c:3218
+#: cp/parser.c:3220
#, gcc-internal-format
msgid "%qE in namespace %qE does not name a template type"
msgstr ""
-#: cp/parser.c:3222
+#: cp/parser.c:3224
#, gcc-internal-format
msgid "%qE in namespace %qE does not name a type"
msgstr ""
#. A<T>::A<T>()
-#: cp/parser.c:3231
+#: cp/parser.c:3233
#, gcc-internal-format
msgid "%<%T::%E%> names the constructor, not the type"
msgstr ""
-#: cp/parser.c:3234
+#: cp/parser.c:3236
#, gcc-internal-format
msgid "and %qT has no template constructors"
msgstr ""
-#: cp/parser.c:3239
+#: cp/parser.c:3241
#, gcc-internal-format
msgid "need %<typename%> before %<%T::%E%> because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:3246
+#: cp/parser.c:3248
#, gcc-internal-format
msgid "%qE in %q#T does not name a template type"
msgstr ""
-#: cp/parser.c:3250
+#: cp/parser.c:3252
#, gcc-internal-format
msgid "%qE in %q#T does not name a type"
msgstr ""
-#: cp/parser.c:3850
+#: cp/parser.c:3852
#, gcc-internal-format
msgid "expected string-literal"
msgstr ""
-#: cp/parser.c:3916
+#: cp/parser.c:3918
#, gcc-internal-format
msgid ""
"inconsistent user-defined literal suffixes %qD and %qD in string literal"
msgstr ""
-#: cp/parser.c:3964
+#: cp/parser.c:3966
#, gcc-internal-format
msgid "a wide string is invalid in this context"
msgstr ""
-#: cp/parser.c:4079
+#: cp/parser.c:4081
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:4180
+#: cp/parser.c:4182
#, gcc-internal-format
msgid "integer literal exceeds range of %qT type"
msgstr ""
-#: cp/parser.c:4187
+#: cp/parser.c:4189
#, gcc-internal-format
msgid "floating literal exceeds range of %qT type"
msgstr ""
-#: cp/parser.c:4191
+#: cp/parser.c:4193
#, gcc-internal-format
msgid "floating literal truncated to zero"
msgstr ""
-#: cp/parser.c:4231
+#: cp/parser.c:4233
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:4233
+#: cp/parser.c:4235
#, gcc-internal-format
msgid ""
"use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes"
msgstr ""
-#: cp/parser.c:4285
+#: cp/parser.c:4287
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:4345 cp/parser.c:12291
+#: cp/parser.c:4347 cp/parser.c:12311
#, gcc-internal-format
msgid "expected declaration"
msgstr ""
-#: cp/parser.c:4607 cp/parser.c:4622
+#: cp/parser.c:4609 cp/parser.c:4624
#, gcc-internal-format
msgid "expected binary operator"
msgstr ""
-#: cp/parser.c:4628
+#: cp/parser.c:4630
#, gcc-internal-format
msgid "expected ..."
msgstr ""
-#: cp/parser.c:4638
+#: cp/parser.c:4640
#, gcc-internal-format
msgid "binary expression in operand of fold-expression"
msgstr ""
-#: cp/parser.c:4641
+#: cp/parser.c:4643
#, gcc-internal-format
msgid "conditional expression in operand of fold-expression"
msgstr ""
-#: cp/parser.c:4649
+#: cp/parser.c:4651
#, gcc-internal-format
msgid "mismatched operator in fold-expression"
msgstr ""
-#: cp/parser.c:4753
+#: cp/parser.c:4755
#, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr ""
-#: cp/parser.c:4834
+#: cp/parser.c:4836
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:4846
+#: cp/parser.c:4848
#, gcc-internal-format
msgid ""
"statement-expressions are not allowed outside functions nor in template-"
"argument lists"
msgstr ""
-#: cp/parser.c:4885
+#: cp/parser.c:4887
#, gcc-internal-format
msgid "fold-expressions only available with -std=c++1z or -std=gnu++1z"
msgstr ""
-#: cp/parser.c:4943 cp/parser.c:5114 cp/parser.c:5292
+#: cp/parser.c:4945 cp/parser.c:5116 cp/parser.c:5294
#, gcc-internal-format
msgid "expected primary-expression"
msgstr ""
-#: cp/parser.c:4973
+#: cp/parser.c:4975
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr ""
-#: cp/parser.c:5109
+#: cp/parser.c:5111
#, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr ""
-#: cp/parser.c:5267
+#: cp/parser.c:5269
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:5444
+#: cp/parser.c:5446
#, gcc-internal-format
msgid "expected id-expression"
msgstr ""
-#: cp/parser.c:5576
+#: cp/parser.c:5578
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:5605 cp/parser.c:7554
+#: cp/parser.c:5607 cp/parser.c:7560
#, gcc-internal-format
msgid "%<~auto%> only available with -std=c++14 or -std=gnu++14"
msgstr ""
-#: cp/parser.c:5716
+#: cp/parser.c:5718
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr ""
-#: cp/parser.c:5731
+#: cp/parser.c:5733
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr ""
-#: cp/parser.c:5766
+#: cp/parser.c:5768
#, gcc-internal-format
msgid ""
"literal operator suffixes not preceded by %<_%> are reserved for future "
"standardization"
msgstr ""
-#: cp/parser.c:5777 cp/parser.c:19120
+#: cp/parser.c:5779 cp/parser.c:19150
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr ""
-#: cp/parser.c:5884
+#: cp/parser.c:5886
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5953
+#: cp/parser.c:5955
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr ""
-#: cp/parser.c:5979
+#: cp/parser.c:5981
#, gcc-internal-format
msgid "function template-id %qD in nested-name-specifier"
msgstr ""
-#: cp/parser.c:5987
+#: cp/parser.c:5989
#, gcc-internal-format
msgid "variable template-id %qD in nested-name-specifier"
msgstr ""
-#: cp/parser.c:6091 cp/typeck.c:2605 cp/typeck.c:2625
+#: cp/parser.c:6093 cp/typeck.c:2610 cp/typeck.c:2613 cp/typeck.c:2633
#, gcc-internal-format
msgid "%qD is not a template"
msgstr ""
-#: cp/parser.c:6169
+#: cp/parser.c:6171
#, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr ""
-#: cp/parser.c:6370 cp/parser.c:8534
+#: cp/parser.c:6372 cp/parser.c:8540
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr ""
-#: cp/parser.c:6451
+#: cp/parser.c:6453
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr ""
-#: cp/parser.c:6509
+#: cp/parser.c:6511
#, gcc-internal-format
msgid "%<_Cilk_spawn%> must be followed by an expression"
msgstr ""
-#: cp/parser.c:6658
+#: cp/parser.c:6660
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr ""
-#: cp/parser.c:6717
+#: cp/parser.c:6719
#, gcc-internal-format
msgid "two consecutive %<[%> shall only introduce an attribute"
msgstr ""
-#: cp/parser.c:7117
+#: cp/parser.c:7119
#, gcc-internal-format
msgid "braced list index is not allowed with array notation"
msgstr ""
-#: cp/parser.c:7210
+#: cp/parser.c:7212
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr ""
-#: cp/parser.c:7299 cp/typeck.c:2498
+#: cp/parser.c:7305 cp/typeck.c:2498
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr ""
-#: cp/parser.c:7308
+#: cp/parser.c:7314
#, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr ""
-#: cp/parser.c:7606
+#: cp/parser.c:7612
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:7705
+#: cp/parser.c:7711
#, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr ""
-#: cp/parser.c:7790
+#: cp/parser.c:7796
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr ""
-#: cp/parser.c:8068
+#: cp/parser.c:8074
#, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr ""
-#: cp/parser.c:8084
+#: cp/parser.c:8090
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:8086
+#: cp/parser.c:8092
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:8117
+#: cp/parser.c:8123
#, gcc-internal-format
msgid ""
"initialization of new-expression for type %<auto%> requires exactly one "
"element"
msgstr ""
-#: cp/parser.c:8165
+#: cp/parser.c:8171
#, gcc-internal-format
msgid "expected expression-list or type-id"
msgstr ""
-#: cp/parser.c:8194
+#: cp/parser.c:8200
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr ""
-#: cp/parser.c:8322
+#: cp/parser.c:8328
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:8630
+#: cp/parser.c:8636
#, gcc-internal-format
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:8777
+#: cp/parser.c:8783
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:8780
+#: cp/parser.c:8786
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr ""
-#: cp/parser.c:8976
+#: cp/parser.c:8982
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr ""
-#: cp/parser.c:9684
+#: cp/parser.c:9690
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:9693
+#: cp/parser.c:9699
#, gcc-internal-format
msgid "lambda-expression in template-argument"
msgstr ""
-#: cp/parser.c:9844
+#: cp/parser.c:9850
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:9858
+#: cp/parser.c:9864
#, gcc-internal-format
msgid ""
"explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:9902
+#: cp/parser.c:9908
#, gcc-internal-format
msgid ""
"lambda capture initializers only available with -std=c++14 or -std=gnu++14"
msgstr ""
-#: cp/parser.c:9909
+#: cp/parser.c:9915
#, gcc-internal-format
msgid "empty initializer for lambda init-capture"
msgstr ""
-#: cp/parser.c:9932
+#: cp/parser.c:9938
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr ""
-#: cp/parser.c:9935 cp/parser.c:9945 cp/semantics.c:3323 cp/semantics.c:3333
+#: cp/parser.c:9941 cp/parser.c:9951 cp/semantics.c:3371 cp/semantics.c:3381
#, gcc-internal-format
msgid "%q#D declared here"
msgstr ""
-#: cp/parser.c:9941
+#: cp/parser.c:9947
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:9979
+#: cp/parser.c:9985
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:9984
+#: cp/parser.c:9990
#, gcc-internal-format
msgid ""
"explicit by-reference capture of %qD redundant with by-reference capture "
"default"
msgstr ""
-#: cp/parser.c:10031
+#: cp/parser.c:10037
#, gcc-internal-format
msgid "lambda templates are only available with -std=c++14 or -std=gnu++14"
msgstr ""
-#: cp/parser.c:10061
+#: cp/parser.c:10067
#, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr ""
-#: cp/parser.c:10540
+#: cp/parser.c:10546
#, gcc-internal-format
msgid "attributes at the beginning of statement are ignored"
msgstr ""
-#: cp/parser.c:10568
+#: cp/parser.c:10574
#, gcc-internal-format
msgid "expected labeled-statement"
msgstr ""
-#: cp/parser.c:10606
+#: cp/parser.c:10612
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr ""
-#: cp/parser.c:10691
+#: cp/parser.c:10697
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:10700
+#: cp/parser.c:10706
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr ""
-#: cp/parser.c:10747
+#: cp/parser.c:10753
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr ""
-#: cp/parser.c:10989 cp/parser.c:26850
+#: cp/parser.c:10995 cp/parser.c:26914
#, gcc-internal-format
msgid "expected selection-statement"
msgstr ""
-#: cp/parser.c:11022
+#: cp/parser.c:11028
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr ""
-#: cp/parser.c:11400
+#: cp/parser.c:11408
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr ""
-#: cp/parser.c:11438
+#: cp/parser.c:11446
#, gcc-internal-format
msgid ""
"range-based %<for%> expression of type %qT has an %<end%> member but not a "
"%<begin%>"
msgstr ""
-#: cp/parser.c:11444
+#: cp/parser.c:11452
#, gcc-internal-format
msgid ""
"range-based %<for%> expression of type %qT has a %<begin%> member but not an "
"%<end%>"
msgstr ""
-#: cp/parser.c:11485
+#: cp/parser.c:11504
#, gcc-internal-format
msgid ""
"inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:11619 cp/parser.c:26853
+#: cp/parser.c:11639 cp/parser.c:26917
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr ""
-#: cp/parser.c:11667
+#: cp/parser.c:11687
#, gcc-internal-format
msgid ""
"range-based %<for%> loops only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/parser.c:11741
+#: cp/parser.c:11761
#, gcc-internal-format
msgid "break statement used with Cilk Plus for loop"
msgstr ""
-#: cp/parser.c:11798
+#: cp/parser.c:11818
#, gcc-internal-format
msgid "%<goto%> in %<constexpr%> function"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:11806
+#: cp/parser.c:11826
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:11819 cp/parser.c:26856
+#: cp/parser.c:11839 cp/parser.c:26920
#, gcc-internal-format
msgid "expected jump-statement"
msgstr ""
-#: cp/parser.c:11976 cp/parser.c:22260
+#: cp/parser.c:11996 cp/parser.c:22292
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:12216
+#: cp/parser.c:12236
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:12377
+#: cp/parser.c:12397
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
-#: cp/parser.c:12397
+#: cp/parser.c:12417
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:12468
+#: cp/parser.c:12488
#, gcc-internal-format
msgid "initializer in range-based %<for%> loop"
msgstr ""
-#: cp/parser.c:12471
+#: cp/parser.c:12491
#, gcc-internal-format
msgid "multiple declarations in range-based %<for%> loop"
msgstr ""
-#: cp/parser.c:12612
+#: cp/parser.c:12632
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:12676
+#: cp/parser.c:12696
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:12712
+#: cp/parser.c:12732
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr ""
-#: cp/parser.c:12804
+#: cp/parser.c:12824
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr ""
-#: cp/parser.c:12872 cp/parser.c:22667
+#: cp/parser.c:12892 cp/parser.c:22699
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:12912
+#: cp/parser.c:12932
#, gcc-internal-format
msgid "invalid linkage-specification"
msgstr ""
-#: cp/parser.c:12999
+#: cp/parser.c:13019
#, gcc-internal-format
msgid ""
"static_assert without a message only available with -std=c++1z or -std=gnu+"
"+1z"
msgstr ""
-#: cp/parser.c:13193
+#: cp/parser.c:13213
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr ""
-#: cp/parser.c:13336
+#: cp/parser.c:13356
#, gcc-internal-format
msgid "types may not be defined in a conversion-type-id"
msgstr ""
-#: cp/parser.c:13363
+#: cp/parser.c:13383
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr ""
-#: cp/parser.c:13367
+#: cp/parser.c:13387
#, gcc-internal-format
msgid ""
"use of %<auto%> in member template conversion operator can never be deduced"
msgstr ""
-#: cp/parser.c:13456
+#: cp/parser.c:13476
#, gcc-internal-format
msgid "only constructors take member initializers"
msgstr ""
-#: cp/parser.c:13478
+#: cp/parser.c:13498
#, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr ""
-#: cp/parser.c:13490
+#: cp/parser.c:13510
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr ""
-#: cp/parser.c:13502
+#: cp/parser.c:13522
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:13554
+#: cp/parser.c:13574
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:13624
+#: cp/parser.c:13644
#, gcc-internal-format
msgid ""
"keyword %<typename%> not allowed in this context (a qualified member "
"initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:13983
+#: cp/parser.c:14003
#, gcc-internal-format
msgid "unexpected keyword; remove space between quotes and suffix identifier"
msgstr ""
-#: cp/parser.c:13989
+#: cp/parser.c:14009
#, gcc-internal-format
msgid "expected suffix identifier"
msgstr ""
-#: cp/parser.c:13998
+#: cp/parser.c:14018
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:14004
+#: cp/parser.c:14024
#, gcc-internal-format
msgid "invalid encoding prefix in literal operator"
msgstr ""
-#: cp/parser.c:14027
+#: cp/parser.c:14047
#, gcc-internal-format
msgid "expected operator"
msgstr ""
#. Warn that we do not support `export'.
-#: cp/parser.c:14072
+#: cp/parser.c:14092
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:14242
+#: cp/parser.c:14262
#, gcc-internal-format
msgid "invalid constrained type parameter"
msgstr ""
-#: cp/parser.c:14250
+#: cp/parser.c:14270
#, gcc-internal-format
msgid "cv-qualified type parameter"
msgstr ""
-#: cp/parser.c:14335
+#: cp/parser.c:14355
#, gcc-internal-format
msgid "variadic constraint introduced without %<...%>"
msgstr ""
-#: cp/parser.c:14399
+#: cp/parser.c:14419
#, gcc-internal-format
msgid "invalid use of %<auto%> in default template argument"
msgstr ""
-#: cp/parser.c:14634 cp/parser.c:14720 cp/parser.c:20535
+#: cp/parser.c:14654 cp/parser.c:14737 cp/parser.c:20567
#, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:14638 cp/parser.c:14724
+#: cp/parser.c:14658 cp/parser.c:14741
#, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr ""
-#: cp/parser.c:14790
+#: cp/parser.c:14807
#, gcc-internal-format
msgid "expected template-id"
msgstr ""
-#: cp/parser.c:14843 cp/parser.c:26814
+#: cp/parser.c:14860 cp/parser.c:26878
#, gcc-internal-format
msgid "expected %<<%>"
msgstr ""
-#: cp/parser.c:14850
+#: cp/parser.c:14867
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr ""
-#: cp/parser.c:14854
+#: cp/parser.c:14871
#, gcc-internal-format
msgid ""
"%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> "
"and %<::%>"
msgstr ""
-#: cp/parser.c:14858
+#: cp/parser.c:14875
#, gcc-internal-format
msgid ""
"(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will "
"accept your code)"
msgstr ""
-#: cp/parser.c:14965
+#: cp/parser.c:14982
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr ""
#. The name does not name a template.
-#: cp/parser.c:15034 cp/parser.c:15155 cp/parser.c:15370
+#: cp/parser.c:15051 cp/parser.c:15172 cp/parser.c:15387
#, gcc-internal-format
msgid "expected template-name"
msgstr ""
#. Explain what went wrong.
-#: cp/parser.c:15080
+#: cp/parser.c:15097
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr ""
-#: cp/parser.c:15082
+#: cp/parser.c:15099
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:15222
+#: cp/parser.c:15239
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:15331 cp/parser.c:15349 cp/parser.c:15516
+#: cp/parser.c:15348 cp/parser.c:15366 cp/parser.c:15533
#, gcc-internal-format
msgid "expected template-argument"
msgstr ""
-#: cp/parser.c:15491
+#: cp/parser.c:15508
#, gcc-internal-format
msgid "invalid non-type template argument"
msgstr ""
-#: cp/parser.c:15618
+#: cp/parser.c:15635
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr ""
-#: cp/parser.c:15622
+#: cp/parser.c:15639
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr ""
-#: cp/parser.c:15681
+#: cp/parser.c:15698
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr ""
-#: cp/parser.c:15901
+#: cp/parser.c:15918
#, gcc-internal-format
msgid "expected type specifier"
msgstr ""
-#: cp/parser.c:16068
+#: cp/parser.c:16098
#, gcc-internal-format
msgid ""
"use of %<auto%> in lambda parameter declaration only available with -std=c+"
"+14 or -std=gnu++14"
msgstr ""
-#: cp/parser.c:16074
+#: cp/parser.c:16104
#, gcc-internal-format
msgid ""
"use of %<auto%> in parameter declaration only available with -std=c++14 or -"
"std=gnu++14"
msgstr ""
-#: cp/parser.c:16079
+#: cp/parser.c:16109
#, gcc-internal-format
msgid "ISO C++ forbids use of %<auto%> in parameter declaration"
msgstr ""
-#: cp/parser.c:16223
+#: cp/parser.c:16253
#, gcc-internal-format
msgid "expected template-id for type"
msgstr ""
-#: cp/parser.c:16250
+#: cp/parser.c:16280
#, gcc-internal-format
msgid "expected type-name"
msgstr ""
-#: cp/parser.c:16599
+#: cp/parser.c:16629
#, gcc-internal-format
msgid ""
"elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:16808
+#: cp/parser.c:16838
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr ""
-#: cp/parser.c:16895
+#: cp/parser.c:16925
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr ""
-#: cp/parser.c:16899
+#: cp/parser.c:16929
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr ""
-#: cp/parser.c:16904
+#: cp/parser.c:16934
#, gcc-internal-format
msgid ""
"attributes ignored on elaborated-type-specifier that is not a forward "
"declaration"
msgstr ""
-#: cp/parser.c:17038
+#: cp/parser.c:17068
#, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr ""
-#: cp/parser.c:17049
+#: cp/parser.c:17079
#, gcc-internal-format
msgid "%qD does not name an enumeration in %qT"
msgstr ""
-#: cp/parser.c:17064
+#: cp/parser.c:17094
#, gcc-internal-format
msgid "anonymous scoped enum is not allowed"
msgstr ""
-#: cp/parser.c:17119
+#: cp/parser.c:17149
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr ""
-#: cp/parser.c:17168
+#: cp/parser.c:17198
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr ""
-#: cp/parser.c:17182
+#: cp/parser.c:17212
#, gcc-internal-format
msgid ""
"nested name specifier %qT for enum declaration does not name a class or "
"namespace"
msgstr ""
-#: cp/parser.c:17194 cp/parser.c:21771
+#: cp/parser.c:17224 cp/parser.c:21803
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:17199 cp/parser.c:21776
+#: cp/parser.c:17229 cp/parser.c:21808
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:17224
+#: cp/parser.c:17254
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr ""
-#: cp/parser.c:17237
+#: cp/parser.c:17267
#, gcc-internal-format
msgid "ISO C++ forbids empty anonymous enum"
msgstr ""
-#: cp/parser.c:17257
+#: cp/parser.c:17287
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:17260
+#: cp/parser.c:17290
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:17438
+#: cp/parser.c:17468
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr ""
-#: cp/parser.c:17439
+#: cp/parser.c:17469
#, gcc-internal-format
msgid "expected namespace-name"
msgstr ""
-#: cp/parser.c:17517
+#: cp/parser.c:17547
#, gcc-internal-format
msgid "a nested namespace definition cannot have attributes"
msgstr ""
-#: cp/parser.c:17520
+#: cp/parser.c:17550
#, gcc-internal-format
msgid ""
"nested namespace definitions only available with -std=c++1z or -std=gnu++1z"
msgstr ""
-#: cp/parser.c:17523
+#: cp/parser.c:17553
#, gcc-internal-format
msgid "a nested namespace definition cannot be inline"
msgstr ""
-#: cp/parser.c:17531
+#: cp/parser.c:17561
#, gcc-internal-format
msgid "nested identifier required"
msgstr ""
-#: cp/parser.c:17559
+#: cp/parser.c:17589
#, gcc-internal-format
msgid "namespace %qD entered"
msgstr ""
-#: cp/parser.c:17611
+#: cp/parser.c:17641
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr ""
-#: cp/parser.c:17766
+#: cp/parser.c:17796
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr ""
-#: cp/parser.c:17812
+#: cp/parser.c:17842
#, gcc-internal-format
msgid ""
"access declarations are deprecated in favour of using-declarations; "
"suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:17877
+#: cp/parser.c:17907
#, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr ""
-#: cp/parser.c:18030
+#: cp/parser.c:18060
#, gcc-internal-format
msgid "%<asm%> in %<constexpr%> function"
msgstr ""
-#: cp/parser.c:18370
+#: cp/parser.c:18400
#, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr ""
-#: cp/parser.c:18381
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:18385
+#: cp/parser.c:18415
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:18436
+#: cp/parser.c:18466
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:18475 cp/parser.c:20726
+#: cp/parser.c:18505 cp/parser.c:20758
#, gcc-internal-format
msgid "expected initializer"
msgstr ""
-#: cp/parser.c:18556
+#: cp/parser.c:18586
#, gcc-internal-format
msgid "initializer provided for function"
msgstr ""
-#: cp/parser.c:18590
+#: cp/parser.c:18620
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:18595
+#: cp/parser.c:18625
#, gcc-internal-format
msgid "non-function %qD declared as implicit template"
msgstr ""
-#: cp/parser.c:19040
+#: cp/parser.c:19070
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr ""
-#: cp/parser.c:19166
+#: cp/parser.c:19196
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr ""
-#: cp/parser.c:19170
+#: cp/parser.c:19200
#, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr ""
-#: cp/parser.c:19198
+#: cp/parser.c:19228
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr ""
-#: cp/parser.c:19200
+#: cp/parser.c:19230
#, gcc-internal-format
msgid ""
"use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified "
@@ -42874,330 +43022,335 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:19217
+#: cp/parser.c:19247
#, gcc-internal-format
msgid "invalid declarator"
msgstr ""
#. But declarations with qualified-ids can't appear in a
#. function.
-#: cp/parser.c:19287
+#: cp/parser.c:19317
#, gcc-internal-format
msgid "qualified-id in declaration"
msgstr ""
-#: cp/parser.c:19312
+#: cp/parser.c:19342
#, gcc-internal-format
msgid "expected declarator"
msgstr ""
-#: cp/parser.c:19415
+#: cp/parser.c:19445
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr ""
-#: cp/parser.c:19417
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr ""
-#: cp/parser.c:19438
+#: cp/parser.c:19468
#, gcc-internal-format
msgid "expected ptr-operator"
msgstr ""
-#: cp/parser.c:19497
+#: cp/parser.c:19527
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr ""
-#: cp/parser.c:19551
+#: cp/parser.c:19581
#, gcc-internal-format
msgid "multiple ref-qualifiers"
msgstr ""
-#: cp/parser.c:19588
+#: cp/parser.c:19618
#, gcc-internal-format
msgid "%E requires %<-fgnu-tm%>"
msgstr ""
-#: cp/parser.c:19644
+#: cp/parser.c:19674
#, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr ""
-#: cp/parser.c:19872 cp/typeck2.c:529 cp/typeck2.c:1943
+#: cp/parser.c:19904 cp/typeck2.c:529 cp/typeck2.c:1955
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr ""
-#: cp/parser.c:19893
+#: cp/parser.c:19925
#, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr ""
-#: cp/parser.c:19898
+#: cp/parser.c:19930
#, gcc-internal-format
msgid "invalid use of %<auto%> in template argument"
msgstr ""
-#: cp/parser.c:19986
+#: cp/parser.c:20018
#, gcc-internal-format
msgid "expected type-specifier"
msgstr ""
-#: cp/parser.c:20292
+#: cp/parser.c:20324
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr ""
-#: cp/parser.c:20367
+#: cp/parser.c:20399
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr ""
-#: cp/parser.c:20519
+#: cp/parser.c:20551
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr ""
-#: cp/parser.c:20537
+#: cp/parser.c:20569
#, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:20543
+#: cp/parser.c:20575
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:20545
+#: cp/parser.c:20577
#, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:20929
+#: cp/parser.c:20961
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/parser.c:20943
+#: cp/parser.c:20975
#, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr ""
-#: cp/parser.c:21063 cp/parser.c:21189
+#: cp/parser.c:21095 cp/parser.c:21221
#, gcc-internal-format
msgid "expected class-name"
msgstr ""
-#: cp/parser.c:21376
+#: cp/parser.c:21408
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr ""
-#: cp/parser.c:21378
+#: cp/parser.c:21410
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr ""
-#: cp/parser.c:21380
+#: cp/parser.c:21412
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr ""
-#: cp/parser.c:21719
+#: cp/parser.c:21751
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr ""
-#: cp/parser.c:21730
+#: cp/parser.c:21762
#, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr ""
-#: cp/parser.c:21738
+#: cp/parser.c:21770
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:21745
+#: cp/parser.c:21777
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr ""
-#: cp/parser.c:21757
+#: cp/parser.c:21789
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr ""
-#: cp/parser.c:21790
+#: cp/parser.c:21822
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr ""
-#: cp/parser.c:21802
+#: cp/parser.c:21834
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr ""
-#: cp/parser.c:21832
+#: cp/parser.c:21864
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr ""
-#: cp/parser.c:21863
+#: cp/parser.c:21895
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:21919
+#: cp/parser.c:21951
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr ""
-#: cp/parser.c:22010 cp/parser.c:26859
+#: cp/parser.c:22042 cp/parser.c:26923
#, gcc-internal-format
msgid "expected class-key"
msgstr ""
-#: cp/parser.c:22034
+#: cp/parser.c:22066
#, gcc-internal-format
msgid ""
"ISO C++ forbids typename key in template template parameter; use -std=c++1z "
"or -std=gnu++1z"
msgstr ""
-#: cp/parser.c:22038
+#: cp/parser.c:22070
#, gcc-internal-format
msgid "expected %<class%> or %<typename%>"
msgstr ""
-#: cp/parser.c:22280
+#: cp/parser.c:22312
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:22298
+#: cp/parser.c:22330
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr ""
-#: cp/parser.c:22316
+#: cp/parser.c:22348
#, gcc-internal-format
msgid "a storage class on an anonymous aggregate in class scope is not allowed"
msgstr ""
-#: cp/parser.c:22520
+#: cp/parser.c:22552
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:22575
+#: cp/parser.c:22607
#, gcc-internal-format
msgid "stray %<,%> at end of member declaration"
msgstr ""
-#: cp/parser.c:22587
+#: cp/parser.c:22619
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr ""
-#: cp/parser.c:22661
+#: cp/parser.c:22693
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:22696
+#: cp/parser.c:22728
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr ""
-#: cp/parser.c:22825
+#: cp/parser.c:22857
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:22845
+#: cp/parser.c:22877
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:22869
+#: cp/parser.c:22901
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:22872
+#: cp/parser.c:22904
#, gcc-internal-format
msgid ""
"keyword %<typename%> not allowed in this context (the base class is "
"implicitly a type)"
msgstr ""
-#: cp/parser.c:22965 cp/parser.c:23047
+#: cp/parser.c:22997 cp/parser.c:23079
#, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr ""
-#: cp/parser.c:23029
+#: cp/parser.c:23061
#, gcc-internal-format
msgid ""
"dynamic exception specifications are deprecated in C++0x; use %<noexcept%> "
"instead"
msgstr ""
-#: cp/parser.c:23089
+#: cp/parser.c:23121
#, gcc-internal-format
msgid "invalid use of %<auto%> in exception-specification"
msgstr ""
-#: cp/parser.c:23128
+#: cp/parser.c:23160
#, gcc-internal-format
msgid "%<try%> in %<constexpr%> function"
msgstr ""
-#: cp/parser.c:23241
+#: cp/parser.c:23273
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr ""
-#: cp/parser.c:23853
+#: cp/parser.c:23885
#, gcc-internal-format
msgid "expected an identifier for the attribute name"
msgstr ""
-#: cp/parser.c:23872
+#: cp/parser.c:23904
#, gcc-internal-format
msgid "%<deprecated%> is a C++14 feature; use %<gnu::deprecated%>"
msgstr ""
-#: cp/parser.c:23934
+#: cp/parser.c:23966
#, gcc-internal-format
msgid "attribute noreturn can appear at most once in an attribute-list"
msgstr ""
-#: cp/parser.c:23938
+#: cp/parser.c:23970
#, gcc-internal-format
msgid "attribute deprecated can appear at most once in an attribute-list"
msgstr ""
-#: cp/parser.c:24224
+#: cp/parser.c:24241
+#, gcc-internal-format
+msgid "%<requires%> only available with -fconcepts"
+msgstr ""
+
+#: cp/parser.c:24273
#, gcc-internal-format
msgid "a requires expression cannot appear outside a template"
msgstr ""
-#: cp/parser.c:24902
+#: cp/parser.c:24969
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:24907
+#: cp/parser.c:24974
#, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr ""
-#: cp/parser.c:24911
+#: cp/parser.c:24978
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr ""
@@ -43206,668 +43359,668 @@ msgstr ""
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:24918
+#: cp/parser.c:24985
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr ""
-#: cp/parser.c:25244
+#: cp/parser.c:25311
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr ""
-#: cp/parser.c:25409
+#: cp/parser.c:25476
#, gcc-internal-format
msgid ""
"literal operator template %qD has invalid parameter list. Expected non-type "
"template argument pack <char...> or <typename CharT, CharT...>"
msgstr ""
-#: cp/parser.c:25414
+#: cp/parser.c:25481
#, gcc-internal-format
msgid ""
"literal operator template %qD has invalid parameter list. Expected non-type "
"template argument pack <char...>"
msgstr ""
-#: cp/parser.c:25483
+#: cp/parser.c:25550
#, gcc-internal-format
msgid "empty introduction-list"
msgstr ""
-#: cp/parser.c:25507
+#: cp/parser.c:25574
#, gcc-internal-format
msgid "no matching concept for template-introduction"
msgstr ""
-#: cp/parser.c:25529
+#: cp/parser.c:25596
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:25538
+#: cp/parser.c:25605
#, gcc-internal-format
msgid "template with C linkage"
msgstr ""
-#: cp/parser.c:25557
+#: cp/parser.c:25624
#, gcc-internal-format
msgid "invalid explicit specialization"
msgstr ""
-#: cp/parser.c:25661
+#: cp/parser.c:25725
#, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr ""
-#: cp/parser.c:25712
+#: cp/parser.c:25776
#, gcc-internal-format
msgid "a class template declaration must not declare anything else"
msgstr ""
-#: cp/parser.c:25758
+#: cp/parser.c:25822
#, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr ""
-#: cp/parser.c:26028
+#: cp/parser.c:26092
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr ""
-#: cp/parser.c:26041
+#: cp/parser.c:26105
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:26338
+#: cp/parser.c:26402
#, gcc-internal-format
msgid "%<sizeof...%> argument must be surrounded by parentheses"
msgstr ""
-#: cp/parser.c:26494
+#: cp/parser.c:26558
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr ""
-#: cp/parser.c:26509
+#: cp/parser.c:26573
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr ""
-#: cp/parser.c:26643
+#: cp/parser.c:26707
#, gcc-internal-format
msgid "ISO C++ 1998 does not support %<long long%>"
msgstr ""
-#: cp/parser.c:26651
+#: cp/parser.c:26715
#, gcc-internal-format
msgid "both %<__thread%> and %<thread_local%> specified"
msgstr ""
-#: cp/parser.c:26653
+#: cp/parser.c:26717
#, gcc-internal-format
msgid "duplicate %qD"
msgstr ""
-#: cp/parser.c:26675
+#: cp/parser.c:26739
#, gcc-internal-format
msgid "duplicate %qs"
msgstr ""
-#: cp/parser.c:26717
+#: cp/parser.c:26781
#, gcc-internal-format
msgid "expected %<new%>"
msgstr ""
-#: cp/parser.c:26720
+#: cp/parser.c:26784
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr ""
-#: cp/parser.c:26723
+#: cp/parser.c:26787
#, gcc-internal-format
msgid "expected %<return%>"
msgstr ""
-#: cp/parser.c:26729
+#: cp/parser.c:26793
#, gcc-internal-format
msgid "expected %<extern%>"
msgstr ""
-#: cp/parser.c:26732
+#: cp/parser.c:26796
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr ""
-#: cp/parser.c:26735
+#: cp/parser.c:26799
#, gcc-internal-format
msgid "expected %<decltype%>"
msgstr ""
-#: cp/parser.c:26738
+#: cp/parser.c:26802
#, gcc-internal-format
msgid "expected %<operator%>"
msgstr ""
-#: cp/parser.c:26741
+#: cp/parser.c:26805
#, gcc-internal-format
msgid "expected %<class%>"
msgstr ""
-#: cp/parser.c:26744
+#: cp/parser.c:26808
#, gcc-internal-format
msgid "expected %<template%>"
msgstr ""
-#: cp/parser.c:26747
+#: cp/parser.c:26811
#, gcc-internal-format
msgid "expected %<namespace%>"
msgstr ""
-#: cp/parser.c:26750
+#: cp/parser.c:26814
#, gcc-internal-format
msgid "expected %<using%>"
msgstr ""
-#: cp/parser.c:26753
+#: cp/parser.c:26817
#, gcc-internal-format
msgid "expected %<asm%>"
msgstr ""
-#: cp/parser.c:26756
+#: cp/parser.c:26820
#, gcc-internal-format
msgid "expected %<try%>"
msgstr ""
-#: cp/parser.c:26759
+#: cp/parser.c:26823
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr ""
-#: cp/parser.c:26762
+#: cp/parser.c:26826
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr ""
-#: cp/parser.c:26765
+#: cp/parser.c:26829
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr ""
-#: cp/parser.c:26768
+#: cp/parser.c:26832
#, gcc-internal-format
msgid "expected %<@try%>"
msgstr ""
-#: cp/parser.c:26771
+#: cp/parser.c:26835
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr ""
-#: cp/parser.c:26774
+#: cp/parser.c:26838
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr ""
-#: cp/parser.c:26777
+#: cp/parser.c:26841
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:26780
+#: cp/parser.c:26844
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:26811
+#: cp/parser.c:26875
#, gcc-internal-format
msgid "expected %<::%>"
msgstr ""
-#: cp/parser.c:26823
+#: cp/parser.c:26887
#, gcc-internal-format
msgid "expected %<...%>"
msgstr ""
-#: cp/parser.c:26826
+#: cp/parser.c:26890
#, gcc-internal-format
msgid "expected %<*%>"
msgstr ""
-#: cp/parser.c:26829
+#: cp/parser.c:26893
#, gcc-internal-format
msgid "expected %<~%>"
msgstr ""
-#: cp/parser.c:26835
+#: cp/parser.c:26899
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr ""
-#: cp/parser.c:26863
+#: cp/parser.c:26927
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr ""
-#: cp/parser.c:27124
+#: cp/parser.c:27188
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr ""
-#: cp/parser.c:27129
+#: cp/parser.c:27193
#, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr ""
-#: cp/parser.c:27148
+#: cp/parser.c:27212
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr ""
-#: cp/parser.c:27169
+#: cp/parser.c:27233
#, gcc-internal-format
msgid ""
"in C++98 %<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/parser.c:27410
+#: cp/parser.c:27474
#, gcc-internal-format
msgid "file ends in default argument"
msgstr ""
-#: cp/parser.c:27640 cp/parser.c:28949 cp/parser.c:29135
+#: cp/parser.c:27704 cp/parser.c:29013 cp/parser.c:29199
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:27709
+#: cp/parser.c:27773
#, gcc-internal-format
msgid "objective-c++ message receiver expected"
msgstr ""
-#: cp/parser.c:27779
+#: cp/parser.c:27843
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:27809
+#: cp/parser.c:27873
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:28215
+#: cp/parser.c:28279
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:28290 cp/parser.c:28308
+#: cp/parser.c:28354 cp/parser.c:28372
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr ""
-#: cp/parser.c:28302 cp/parser.c:28367
+#: cp/parser.c:28366 cp/parser.c:28431
#, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr ""
-#: cp/parser.c:28410
+#: cp/parser.c:28474
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:28616 cp/parser.c:28623 cp/parser.c:28630
+#: cp/parser.c:28680 cp/parser.c:28687 cp/parser.c:28694
#, gcc-internal-format
msgid "invalid type for instance variable"
msgstr ""
-#: cp/parser.c:28743
+#: cp/parser.c:28807
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr ""
-#: cp/parser.c:28914
+#: cp/parser.c:28978
#, gcc-internal-format
msgid ""
"attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:28921
+#: cp/parser.c:28985
#, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr ""
-#: cp/parser.c:29194 cp/parser.c:29201 cp/parser.c:29208
+#: cp/parser.c:29258 cp/parser.c:29265 cp/parser.c:29272
#, gcc-internal-format
msgid "invalid type for property"
msgstr ""
-#: cp/parser.c:30362
+#: cp/parser.c:30412
#, gcc-internal-format
msgid "%<wait%> expression must be integral"
msgstr ""
-#: cp/parser.c:31056
+#: cp/parser.c:31106
#, gcc-internal-format
msgid "invalid reduction-identifier"
msgstr ""
-#: cp/parser.c:33254
+#: cp/parser.c:33304
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:33257
+#: cp/parser.c:33307
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in for-loop"
msgstr ""
-#: cp/parser.c:33327
+#: cp/parser.c:33377
#, gcc-internal-format
msgid ""
"%<_Cilk_for%> allows expression instead of declaration only in C, not in C++"
msgstr ""
-#: cp/parser.c:33555 cp/pt.c:14876
+#: cp/parser.c:33605 cp/pt.c:14959
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr ""
-#: cp/parser.c:33640
+#: cp/parser.c:33690
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr ""
-#: cp/parser.c:33917
+#: cp/parser.c:33967
#, gcc-internal-format
msgid ""
"%<#pragma omp ordered%> with %<depend%> clause may only be used in compound "
"statements"
msgstr ""
-#: cp/parser.c:34703
+#: cp/parser.c:34753
#, gcc-internal-format
msgid ""
"%<#pragma omp target exit data%> with map-type other than %<from%>, %<release"
"%> or %<delete%> on %<map%> clause"
msgstr ""
-#: cp/parser.c:35562
+#: cp/parser.c:35612
#, gcc-internal-format
msgid ""
"%<#pragma omp declare simd%> of %<simd%> attribute cannot be used in the "
"same function marked as a Cilk Plus SIMD-enabled function"
msgstr ""
-#: cp/parser.c:35572
+#: cp/parser.c:35622
#, gcc-internal-format
msgid ""
"vector attribute not immediately followed by a single function declaration "
"or definition"
msgstr ""
-#: cp/parser.c:35866
+#: cp/parser.c:35916
#, gcc-internal-format
msgid "invalid initializer clause"
msgstr ""
-#: cp/parser.c:35894
+#: cp/parser.c:35944
#, gcc-internal-format
msgid "expected id-expression (arguments)"
msgstr ""
-#: cp/parser.c:35906
+#: cp/parser.c:35956
#, gcc-internal-format
msgid ""
"one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
msgstr ""
-#: cp/parser.c:35987
+#: cp/parser.c:36037
#, gcc-internal-format
msgid ""
"expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or "
"identifier"
msgstr ""
-#: cp/parser.c:36006
+#: cp/parser.c:36056
#, gcc-internal-format
msgid "types may not be defined in declare reduction type list"
msgstr ""
-#: cp/parser.c:36028 cp/semantics.c:5302
+#: cp/parser.c:36078 cp/semantics.c:5351
#, gcc-internal-format
msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
msgstr ""
-#: cp/parser.c:36033 cp/semantics.c:5311
+#: cp/parser.c:36083 cp/semantics.c:5360
#, gcc-internal-format
msgid "function or array type %qT in %<#pragma omp declare reduction%>"
msgstr ""
-#: cp/parser.c:36036 cp/pt.c:11778 cp/semantics.c:5317
+#: cp/parser.c:36086 cp/pt.c:11840 cp/semantics.c:5366
#, gcc-internal-format
msgid "reference type %qT in %<#pragma omp declare reduction%>"
msgstr ""
-#: cp/parser.c:36039 cp/semantics.c:5323
+#: cp/parser.c:36089 cp/semantics.c:5372
#, gcc-internal-format
msgid ""
"const, volatile or __restrict qualified type %qT in %<#pragma omp declare "
"reduction%>"
msgstr ""
-#: cp/parser.c:36418
+#: cp/parser.c:36469
#, gcc-internal-format
msgid "%<#pragma acc routine%> names a set of overloads"
msgstr ""
-#: cp/parser.c:36427
+#: cp/parser.c:36478
#, gcc-internal-format
msgid "%<#pragma acc routine%> does not refer to a namespace scope function"
msgstr ""
-#: cp/parser.c:36436
+#: cp/parser.c:36487
#, gcc-internal-format
msgid "%<#pragma acc routine%> does not refer to a function"
msgstr ""
#. cancel-and-throw is unimplemented.
-#: cp/parser.c:36766
+#: cp/parser.c:36817
#, gcc-internal-format
msgid "atomic_cancel"
msgstr ""
-#: cp/parser.c:36809 cp/semantics.c:8516
+#: cp/parser.c:36860 cp/semantics.c:8573
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:36811 cp/semantics.c:8518
+#: cp/parser.c:36862 cp/semantics.c:8575
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:37007
+#: cp/parser.c:37058
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr ""
-#: cp/parser.c:37040
+#: cp/parser.c:37091
#, gcc-internal-format
msgid "invalid grainsize for _Cilk_for"
msgstr ""
-#: cp/parser.c:37249
+#: cp/parser.c:37300
#, gcc-internal-format
msgid "%<#pragma GCC ivdep%> must be inside a function"
msgstr ""
-#: cp/parser.c:37270
+#: cp/parser.c:37321
#, gcc-internal-format
msgid "%<#pragma simd%> must be inside a function"
msgstr ""
-#: cp/parser.c:37282
+#: cp/parser.c:37333
#, gcc-internal-format
msgid "%<#pragma cilk grainsize%> must be inside a function"
msgstr ""
-#: cp/parser.c:37294
+#: cp/parser.c:37345
#, gcc-internal-format
msgid "-fcilkplus must be enabled to use %<#pragma cilk grainsize%>"
msgstr ""
-#: cp/parser.c:37351
+#: cp/parser.c:37402
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr ""
-#: cp/parser.c:37461
+#: cp/parser.c:37512
#, gcc-internal-format
msgid "expected variable-name"
msgstr ""
-#: cp/parser.c:37525
+#: cp/parser.c:37576
#, gcc-internal-format
msgid "expected %<,%> or %<)%> after %qE"
msgstr ""
-#: cp/parser.c:37918
+#: cp/parser.c:37969
#, gcc-internal-format
msgid "implicit templates may not be %<virtual%>"
msgstr ""
-#: cp/pt.c:294
+#: cp/pt.c:295
#, gcc-internal-format
msgid "data member %qD cannot be a member template"
msgstr ""
-#: cp/pt.c:306
+#: cp/pt.c:307
#, gcc-internal-format
msgid "invalid member template declaration %qD"
msgstr ""
-#: cp/pt.c:680
+#: cp/pt.c:686
#, gcc-internal-format
msgid "explicit specialization in non-namespace scope %qD"
msgstr ""
-#: cp/pt.c:694
+#: cp/pt.c:700
#, gcc-internal-format
msgid "enclosing class templates are not explicitly specialized"
msgstr ""
-#: cp/pt.c:780
+#: cp/pt.c:786
#, gcc-internal-format
msgid "specialization of %qD must appear at namespace scope"
msgstr ""
-#: cp/pt.c:789
+#: cp/pt.c:795
#, gcc-internal-format
msgid "specialization of %qD in different namespace"
msgstr ""
-#: cp/pt.c:791 cp/pt.c:1018
+#: cp/pt.c:797 cp/pt.c:1024
#, gcc-internal-format
msgid " from definition of %q#D"
msgstr ""
-#: cp/pt.c:808
+#: cp/pt.c:814
#, gcc-internal-format
msgid ""
"explicit instantiation of %qD in namespace %qD (which does not enclose "
"namespace %qD)"
msgstr ""
-#: cp/pt.c:929
+#: cp/pt.c:935
#, gcc-internal-format
msgid "name of class shadows template template parameter %qD"
msgstr ""
-#: cp/pt.c:940
+#: cp/pt.c:946
#, gcc-internal-format
msgid "specialization of alias template %qD"
msgstr ""
-#: cp/pt.c:943 cp/pt.c:1080
+#: cp/pt.c:949 cp/pt.c:1086
#, gcc-internal-format
msgid "explicit specialization of non-template %qT"
msgstr ""
-#: cp/pt.c:975
+#: cp/pt.c:981
#, gcc-internal-format
msgid "specialization of %qT after instantiation"
msgstr ""
-#: cp/pt.c:1016
+#: cp/pt.c:1022
#, gcc-internal-format
msgid "specializing %q#T in different namespace"
msgstr ""
#. But if we've had an implicit instantiation, that's a
#. problem ([temp.expl.spec]/6).
-#: cp/pt.c:1058
+#: cp/pt.c:1064
#, gcc-internal-format
msgid "specialization %qT after instantiation %qT"
msgstr ""
-#: cp/pt.c:1076
+#: cp/pt.c:1082
#, gcc-internal-format
msgid "template specialization of %qD not allowed by ISO C++"
msgstr ""
-#: cp/pt.c:1538
+#: cp/pt.c:1544
#, gcc-internal-format
msgid "specialization of %qD after instantiation"
msgstr ""
-#: cp/pt.c:1937
+#: cp/pt.c:1943
#, gcc-internal-format
msgid "candidate is: %#D"
msgstr ""
-#: cp/pt.c:1944 cp/semantics.c:5171
+#: cp/pt.c:1950 cp/semantics.c:5220
#, gcc-internal-format
msgid "%s %#D"
msgstr ""
-#: cp/pt.c:2085
+#: cp/pt.c:2091
#, gcc-internal-format
msgid "%qD is not a function template"
msgstr ""
-#: cp/pt.c:2090
+#: cp/pt.c:2096
#, gcc-internal-format
msgid "%qD is not a variable template"
msgstr ""
-#: cp/pt.c:2344
+#: cp/pt.c:2350
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:2347
+#: cp/pt.c:2353
#, gcc-internal-format
msgid ""
"saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2358
+#: cp/pt.c:2364
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
-#: cp/pt.c:2568
+#: cp/pt.c:2574
#, gcc-internal-format
msgid "variable templates only available with -std=c++14 or -std=gnu++14"
msgstr ""
-#: cp/pt.c:2577
+#: cp/pt.c:2583
#, gcc-internal-format
msgid "too many template headers for %D (should be %d)"
msgstr ""
-#: cp/pt.c:2582
+#: cp/pt.c:2588
#, gcc-internal-format
msgid ""
"members of an explicitly specialized class are defined without a template "
@@ -43876,57 +44029,57 @@ msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2671 cp/pt.c:2730
+#: cp/pt.c:2677 cp/pt.c:2736
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr ""
-#: cp/pt.c:2684
+#: cp/pt.c:2690
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:2690
+#: cp/pt.c:2696
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2698
+#: cp/pt.c:2704
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2701
+#: cp/pt.c:2707
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2703
+#: cp/pt.c:2709
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr ""
-#: cp/pt.c:2709
+#: cp/pt.c:2715
#, gcc-internal-format
msgid "explicit specialization declared %<concept%>"
msgstr ""
-#: cp/pt.c:2740
+#: cp/pt.c:2746
#, gcc-internal-format
msgid "non-type partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2743
+#: cp/pt.c:2749
#, gcc-internal-format
msgid "non-class, non-variable partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2776
+#: cp/pt.c:2782
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2807
+#: cp/pt.c:2813
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr ""
@@ -43939,140 +44092,140 @@ msgstr ""
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2872
+#: cp/pt.c:2878
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2916
+#: cp/pt.c:2922
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr ""
-#: cp/pt.c:2948
+#: cp/pt.c:2954
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr ""
-#: cp/pt.c:3053
+#: cp/pt.c:3059
#, gcc-internal-format
msgid "explicit specialization of function concept %qD"
msgstr ""
-#: cp/pt.c:3648
+#: cp/pt.c:3654
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3710
+#: cp/pt.c:3716
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3712
+#: cp/pt.c:3718
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3756
+#: cp/pt.c:3762
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3771 cp/pt.c:4505
+#: cp/pt.c:3777 cp/pt.c:4511
#, gcc-internal-format
msgid " %qD"
msgstr ""
-#: cp/pt.c:3773
+#: cp/pt.c:3779
#, gcc-internal-format
msgid " <anonymous>"
msgstr ""
-#: cp/pt.c:3897
+#: cp/pt.c:3903
#, gcc-internal-format
msgid "declaration of template parameter %q+D shadows template parameter"
msgstr ""
-#: cp/pt.c:3900
+#: cp/pt.c:3906
#, gcc-internal-format
msgid "declaration of %q+#D shadows template parameter"
msgstr ""
-#: cp/pt.c:3902
+#: cp/pt.c:3908
#, gcc-internal-format
msgid "template parameter %qD declared here"
msgstr ""
-#: cp/pt.c:4441
+#: cp/pt.c:4447
#, gcc-internal-format
msgid "specialization of variable concept %q#D"
msgstr ""
-#: cp/pt.c:4500
+#: cp/pt.c:4506
#, gcc-internal-format
msgid "template parameters not deducible in partial specialization:"
msgstr ""
-#: cp/pt.c:4524
+#: cp/pt.c:4530
#, gcc-internal-format
msgid "partial specialization %q+D does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:4527
+#: cp/pt.c:4533
#, gcc-internal-format
msgid ""
"partial specialization %q+D does not specialize any template arguments and "
"is not more constrained than"
msgstr ""
-#: cp/pt.c:4529 cp/pt.c:4540
+#: cp/pt.c:4535 cp/pt.c:4546
#, gcc-internal-format
msgid "primary template here"
msgstr ""
-#: cp/pt.c:4537
+#: cp/pt.c:4543
#, gcc-internal-format
msgid ""
"partial specialization is not more specialized than the primary template "
"because it replaces multiple parameters with a pack expansion"
msgstr ""
-#: cp/pt.c:4587
+#: cp/pt.c:4593
#, gcc-internal-format
msgid ""
"parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4590
+#: cp/pt.c:4596
#, gcc-internal-format
msgid ""
"parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4611
+#: cp/pt.c:4617
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:4657
+#: cp/pt.c:4663
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] ""
msgstr[1] ""
-#: cp/pt.c:4710
+#: cp/pt.c:4716
#, gcc-internal-format
msgid "declaration of %qD ambiguates earlier template instantiation for %qD"
msgstr ""
-#: cp/pt.c:4714
+#: cp/pt.c:4720
#, gcc-internal-format
msgid "partial specialization of %qD after instantiation of %qD"
msgstr ""
-#: cp/pt.c:4890
+#: cp/pt.c:4896
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr ""
@@ -44080,53 +44233,53 @@ msgstr ""
#. A primary class template can only have one
#. parameter pack, at the end of the template
#. parameter list.
-#: cp/pt.c:4912
+#: cp/pt.c:4918
#, gcc-internal-format
msgid "parameter pack %q+D must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4948
+#: cp/pt.c:4954
#, gcc-internal-format
msgid ""
"default template arguments may not be used in function template friend re-"
"declaration"
msgstr ""
-#: cp/pt.c:4951
+#: cp/pt.c:4957
#, gcc-internal-format
msgid ""
"default template arguments may not be used in function template friend "
"declarations"
msgstr ""
-#: cp/pt.c:4954
+#: cp/pt.c:4960
#, gcc-internal-format
msgid ""
"default template arguments may not be used in function templates without -"
"std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4957
+#: cp/pt.c:4963
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr ""
-#: cp/pt.c:4960 cp/pt.c:5018
+#: cp/pt.c:4966 cp/pt.c:5024
#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr ""
-#: cp/pt.c:5114
+#: cp/pt.c:5120
#, gcc-internal-format
msgid "template %qD declared"
msgstr ""
-#: cp/pt.c:5121
+#: cp/pt.c:5127
#, gcc-internal-format
msgid "template class without a name"
msgstr ""
-#: cp/pt.c:5129
+#: cp/pt.c:5135
#, gcc-internal-format
msgid "member template %qD may not have virt-specifiers"
msgstr ""
@@ -44136,76 +44289,76 @@ msgstr ""
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:5151
+#: cp/pt.c:5157
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr ""
-#: cp/pt.c:5280
+#: cp/pt.c:5286
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr ""
-#: cp/pt.c:5323
+#: cp/pt.c:5329
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr ""
-#: cp/pt.c:5337
+#: cp/pt.c:5343
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr ""
-#: cp/pt.c:5340
+#: cp/pt.c:5346
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr ""
-#: cp/pt.c:5342
+#: cp/pt.c:5348
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:5363
+#: cp/pt.c:5369
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr ""
-#: cp/pt.c:5367
+#: cp/pt.c:5373
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr ""
-#: cp/pt.c:5505
+#: cp/pt.c:5511
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr ""
-#: cp/pt.c:5518
+#: cp/pt.c:5524
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr ""
-#: cp/pt.c:5529
+#: cp/pt.c:5535
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] ""
msgstr[1] ""
-#: cp/pt.c:5533
+#: cp/pt.c:5539
#, gcc-internal-format
msgid "previous declaration %qD used %d template parameter"
msgid_plural "previous declaration %qD used %d template parameters"
msgstr[0] ""
msgstr[1] ""
-#: cp/pt.c:5570
+#: cp/pt.c:5576
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr ""
-#: cp/pt.c:5571
+#: cp/pt.c:5577
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr ""
@@ -44214,427 +44367,427 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5581
+#: cp/pt.c:5587
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr ""
-#: cp/pt.c:5583
+#: cp/pt.c:5589
#, gcc-internal-format
msgid "original definition appeared here"
msgstr ""
-#: cp/pt.c:5608
+#: cp/pt.c:5614
#, gcc-internal-format
msgid "redeclaration %q#D with different constraints"
msgstr ""
-#: cp/pt.c:5611
+#: cp/pt.c:5617
#, gcc-internal-format
msgid "original declaration appeared here"
msgstr ""
-#: cp/pt.c:5866 cp/pt.c:5917
+#: cp/pt.c:5872 cp/pt.c:5923
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr ""
-#: cp/pt.c:5869
+#: cp/pt.c:5875
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:5872
+#: cp/pt.c:5878
#, gcc-internal-format
msgid "it must be the name of a function with external linkage"
msgstr ""
-#: cp/pt.c:5884
+#: cp/pt.c:5890
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr ""
-#: cp/pt.c:5888
+#: cp/pt.c:5894
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because %qD does not have "
"external linkage"
msgstr ""
-#: cp/pt.c:5919
+#: cp/pt.c:5925
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr ""
-#: cp/pt.c:5970
+#: cp/pt.c:5976
#, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr ""
-#: cp/pt.c:5985
+#: cp/pt.c:5991
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5994
+#: cp/pt.c:6000
#, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr ""
-#: cp/pt.c:6003
+#: cp/pt.c:6009
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6020
#, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr ""
-#: cp/pt.c:6024
+#: cp/pt.c:6030
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr ""
-#: cp/pt.c:6033
+#: cp/pt.c:6039
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:6045
+#: cp/pt.c:6051
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:6049
+#: cp/pt.c:6055
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:6060
+#: cp/pt.c:6066
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:6071
+#: cp/pt.c:6077
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:6083
+#: cp/pt.c:6089
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects at least %d argument, %d provided"
msgid_plural " candidate expects at least %d arguments, %d provided"
msgstr[0] ""
msgstr[1] ""
-#: cp/pt.c:6114
+#: cp/pt.c:6120
#, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr ""
-#: cp/pt.c:6127
+#: cp/pt.c:6133
#, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr ""
-#: cp/pt.c:6131
+#: cp/pt.c:6137
#, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr ""
-#: cp/pt.c:6142
+#: cp/pt.c:6148
#, gcc-internal-format
msgid ""
" template parameters of a template template argument are inconsistent with "
"other deduced template arguments"
msgstr ""
-#: cp/pt.c:6152
+#: cp/pt.c:6158
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr ""
-#: cp/pt.c:6162
+#: cp/pt.c:6168
#, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr ""
-#: cp/pt.c:6171
+#: cp/pt.c:6177
#, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr ""
-#: cp/pt.c:6210
+#: cp/pt.c:6216
#, 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:6375
+#: cp/pt.c:6381
#, gcc-internal-format
msgid "in template argument for type %qT "
msgstr ""
-#: cp/pt.c:6422
+#: cp/pt.c:6428
#, 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:6430
+#: cp/pt.c:6436
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for %qT because it is not the address "
"of a variable"
msgstr ""
-#: cp/pt.c:6448
+#: cp/pt.c:6454
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument of type %qT because %qE is not a "
"variable"
msgstr ""
-#: cp/pt.c:6455
+#: cp/pt.c:6461
#, 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:6463
+#: cp/pt.c:6469
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr ""
-#: cp/pt.c:6493
+#: cp/pt.c:6499
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because of conflicts in cv-"
"qualification"
msgstr ""
-#: cp/pt.c:6501
+#: cp/pt.c:6507
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr ""
-#: cp/pt.c:6519
+#: cp/pt.c:6525
#, gcc-internal-format
msgid ""
"%q#D is not a valid template argument for type %qT because a reference "
"variable does not have a constant address"
msgstr ""
-#: cp/pt.c:6529
+#: cp/pt.c:6535
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is not an "
"object with linkage"
msgstr ""
-#: cp/pt.c:6540
+#: cp/pt.c:6546
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because object %qD does "
"not have linkage"
msgstr ""
-#: cp/pt.c:6586
+#: cp/pt.c:6592
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is a pointer"
msgstr ""
-#: cp/pt.c:6588
+#: cp/pt.c:6594
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6630 cp/pt.c:6661
+#: cp/pt.c:6636 cp/pt.c:6667
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr ""
-#: cp/pt.c:6636
+#: cp/pt.c:6642
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr ""
-#: cp/pt.c:6947
+#: cp/pt.c:6954
#, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr ""
-#: cp/pt.c:7054
+#: cp/pt.c:7061
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:7083
+#: cp/pt.c:7090
#, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr ""
-#: cp/pt.c:7088
+#: cp/pt.c:7095
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:7104 cp/pt.c:7126 cp/pt.c:7179
+#: cp/pt.c:7111 cp/pt.c:7133 cp/pt.c:7186
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:7109
+#: cp/pt.c:7116
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr ""
-#: cp/pt.c:7114
+#: cp/pt.c:7121
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr ""
-#: cp/pt.c:7117
+#: cp/pt.c:7124
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr ""
-#: cp/pt.c:7131
+#: cp/pt.c:7138
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr ""
-#: cp/pt.c:7134
+#: cp/pt.c:7141
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr ""
-#: cp/pt.c:7183
+#: cp/pt.c:7190
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr ""
-#: cp/pt.c:7197
+#: cp/pt.c:7204
#, gcc-internal-format
msgid "constraint mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:7200
+#: cp/pt.c:7207
#, gcc-internal-format
msgid " expected %qD but got %qD"
msgstr ""
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:7232
+#: cp/pt.c:7239
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr ""
-#: cp/pt.c:7258
+#: cp/pt.c:7265
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr ""
-#: cp/pt.c:7392 cp/pt.c:7697
+#: cp/pt.c:7399 cp/pt.c:7704
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr ""
-#: cp/pt.c:7407 cp/pt.c:7537 cp/pt.c:7722
+#: cp/pt.c:7414 cp/pt.c:7544 cp/pt.c:7729
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:7533
+#: cp/pt.c:7540
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be at least %d)"
msgstr ""
-#: cp/pt.c:7542
+#: cp/pt.c:7549
#, gcc-internal-format
msgid "provided for %qD"
msgstr ""
-#: cp/pt.c:7567
+#: cp/pt.c:7574
#, gcc-internal-format
msgid ""
"pack expansion argument for non-pack parameter %qD of alias template %qD"
msgstr ""
-#: cp/pt.c:7571
+#: cp/pt.c:7578
#, gcc-internal-format
msgid "pack expansion argument for non-pack parameter %qD of concept %qD"
msgstr ""
-#: cp/pt.c:7663
+#: cp/pt.c:7670
#, gcc-internal-format
msgid ""
"so any instantiation with a non-empty parameter pack would be ill-formed"
msgstr ""
-#: cp/pt.c:7725
+#: cp/pt.c:7732
#, gcc-internal-format
msgid "provided for %q+D"
msgstr ""
-#: cp/pt.c:7994
+#: cp/pt.c:8001
#, gcc-internal-format
msgid "%q#D is not a function template"
msgstr ""
-#: cp/pt.c:8161
+#: cp/pt.c:8168
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr ""
-#: cp/pt.c:8163
+#: cp/pt.c:8170
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr ""
-#: cp/pt.c:8334
+#: cp/pt.c:8341
#, gcc-internal-format
msgid "template constraint failure"
msgstr ""
-#: cp/pt.c:8676
+#: cp/pt.c:8685
#, gcc-internal-format
msgid "constraints for %qD not satisfied"
msgstr ""
-#: cp/pt.c:9049
+#: cp/pt.c:9077
#, gcc-internal-format, gfc-internal-format
msgid ""
"template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to "
"increase the maximum)"
msgstr ""
-#: cp/pt.c:10641
+#: cp/pt.c:10657
#, gcc-internal-format
msgid "fold of empty expansion over %O"
msgstr ""
-#: cp/pt.c:10932
+#: cp/pt.c:10948
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:10936
+#: cp/pt.c:10952
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:11441
+#: cp/pt.c:11503
#, gcc-internal-format
msgid " when instantiating default argument for call to %D"
msgstr ""
@@ -44652,270 +44805,270 @@ msgstr ""
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:12276
+#: cp/pt.c:12338
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr ""
-#: cp/pt.c:12446
+#: cp/pt.c:12510
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr ""
-#: cp/pt.c:12448
+#: cp/pt.c:12512
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr ""
-#: cp/pt.c:12559
+#: cp/pt.c:12623
#, gcc-internal-format
msgid "function returning an array"
msgstr ""
-#: cp/pt.c:12561
+#: cp/pt.c:12625
#, gcc-internal-format
msgid "function returning a function"
msgstr ""
-#: cp/pt.c:12601
+#: cp/pt.c:12665
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr ""
-#: cp/pt.c:13194
+#: cp/pt.c:13253
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:13196
+#: cp/pt.c:13255
#, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr ""
-#: cp/pt.c:13198
+#: cp/pt.c:13257
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr ""
-#: cp/pt.c:13211
+#: cp/pt.c:13270
#, gcc-internal-format
msgid "forming pointer to qualified function type %qT"
msgstr ""
-#: cp/pt.c:13214
+#: cp/pt.c:13273
#, gcc-internal-format
msgid "forming reference to qualified function type %qT"
msgstr ""
-#: cp/pt.c:13262
+#: cp/pt.c:13321
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr ""
-#: cp/pt.c:13268
+#: cp/pt.c:13327
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr ""
-#: cp/pt.c:13274
+#: cp/pt.c:13333
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr ""
-#: cp/pt.c:13340
+#: cp/pt.c:13399
#, gcc-internal-format
msgid "creating array of %qT"
msgstr ""
-#: cp/pt.c:13371
+#: cp/pt.c:13430
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:13408
+#: cp/pt.c:13467
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:13416
+#: cp/pt.c:13475
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:13545
+#: cp/pt.c:13604
#, gcc-internal-format
msgid "use of %qs in template"
msgstr ""
-#: cp/pt.c:13688
+#: cp/pt.c:13755
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/pt.c:13703
+#: cp/pt.c:13770
#, gcc-internal-format
msgid ""
"dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:13705
+#: cp/pt.c:13772
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:13911
+#: cp/pt.c:13987
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr ""
-#: cp/pt.c:14362 cp/pt.c:15688
+#: cp/pt.c:14445 cp/pt.c:15771
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr ""
-#: cp/pt.c:14366 cp/pt.c:15692
+#: cp/pt.c:14449 cp/pt.c:15775
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:16470
+#: cp/pt.c:16550
#, gcc-internal-format
msgid ""
"%qD was not declared in this scope, and no declarations were found by "
"argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:16482
+#: cp/pt.c:16562
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:16487
+#: cp/pt.c:16567
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:16490
+#: cp/pt.c:16570
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr ""
-#: cp/pt.c:16495
+#: cp/pt.c:16575
#, gcc-internal-format
msgid "%qD declared here, later in the translation unit"
msgstr ""
-#: cp/pt.c:16768
+#: cp/pt.c:16848
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr ""
-#: cp/pt.c:16771
+#: cp/pt.c:16851
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr ""
-#: cp/pt.c:17133
+#: cp/pt.c:17214
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr ""
-#: cp/pt.c:17135
+#: cp/pt.c:17216
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr ""
-#: cp/pt.c:17145
+#: cp/pt.c:17226
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:17160
+#: cp/pt.c:17241
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr ""
-#: cp/pt.c:17178
+#: cp/pt.c:17259
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr ""
-#: cp/pt.c:20933
+#: cp/pt.c:21036
#, gcc-internal-format
msgid "ambiguous template instantiation for %q#T"
msgstr ""
-#: cp/pt.c:20935
+#: cp/pt.c:21038
#, gcc-internal-format
msgid "ambiguous template instantiation for %q#D"
msgstr ""
-#: cp/pt.c:20941
+#: cp/pt.c:21044
msgid "%s %#S"
msgstr ""
-#: cp/pt.c:20965 cp/pt.c:21052
+#: cp/pt.c:21068 cp/pt.c:21155
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr ""
-#: cp/pt.c:20984
+#: cp/pt.c:21087
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr ""
-#: cp/pt.c:20990 cp/pt.c:21047
+#: cp/pt.c:21093 cp/pt.c:21150
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:20995
+#: cp/pt.c:21098
#, gcc-internal-format
msgid ""
"type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr ""
-#: cp/pt.c:21003
+#: cp/pt.c:21106
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:21039
+#: cp/pt.c:21142
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:21062 cp/pt.c:21159
+#: cp/pt.c:21165 cp/pt.c:21262
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr ""
-#: cp/pt.c:21067 cp/pt.c:21176
+#: cp/pt.c:21170 cp/pt.c:21279
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr ""
-#: cp/pt.c:21135
+#: cp/pt.c:21238
#, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr ""
-#: cp/pt.c:21137
+#: cp/pt.c:21240
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr ""
-#: cp/pt.c:21146
+#: cp/pt.c:21249
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr ""
-#: cp/pt.c:21164
+#: cp/pt.c:21267
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr ""
-#: cp/pt.c:21210
+#: cp/pt.c:21313
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr ""
@@ -44927,12 +45080,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:21748
+#: cp/pt.c:21852
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr ""
-#: cp/pt.c:21980
+#: cp/pt.c:22084
#, gcc-internal-format
msgid ""
"template instantiation depth exceeds maximum of %d instantiating %q+D, "
@@ -44940,66 +45093,66 @@ msgid ""
"the maximum)"
msgstr ""
-#: cp/pt.c:22322
+#: cp/pt.c:22426
#, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr ""
-#: cp/pt.c:22324
+#: cp/pt.c:22428
#, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr ""
-#: cp/pt.c:23684
+#: cp/pt.c:23788
#, gcc-internal-format
msgid ""
"deducing from brace-enclosed initializer list requires #include "
"<initializer_list>"
msgstr ""
-#: cp/pt.c:23845
+#: cp/pt.c:23949
#, gcc-internal-format
msgid "direct-list-initialization of %<auto%> requires exactly one element"
msgstr ""
-#: cp/pt.c:23848
+#: cp/pt.c:23952
#, gcc-internal-format
msgid ""
"for deduction to %<std::initializer_list%>, use copy-list-initialization (i."
"e. add %<=%> before the %<{%>)"
msgstr ""
-#: cp/pt.c:23870
+#: cp/pt.c:23974
#, gcc-internal-format
msgid "%qT as type rather than plain %<decltype(auto)%>"
msgstr ""
-#: cp/pt.c:23905
+#: cp/pt.c:24009
#, gcc-internal-format
msgid "unable to deduce lambda return type from %qE"
msgstr ""
-#: cp/pt.c:23907
+#: cp/pt.c:24011
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
-#: cp/pt.c:23928
+#: cp/pt.c:24032
#, gcc-internal-format
msgid "placeholder constraints not satisfied"
msgstr ""
-#: cp/pt.c:23931
+#: cp/pt.c:24035
#, gcc-internal-format
msgid "deduced initializer does not satisfy placeholder constraints"
msgstr ""
-#: cp/pt.c:23935
+#: cp/pt.c:24039
#, gcc-internal-format
msgid "deduced return type does not satisfy placeholder constraints"
msgstr ""
-#: cp/pt.c:23939
+#: cp/pt.c:24043
#, gcc-internal-format
msgid "deduced expression type does not saatisy placeholder constraints"
msgstr ""
@@ -45041,17 +45194,17 @@ msgstr ""
msgid "typeid of qualified function type %qT"
msgstr ""
-#: cp/rtti.c:665 cp/rtti.c:680
+#: cp/rtti.c:666 cp/rtti.c:681
#, gcc-internal-format
msgid "dynamic_cast of %q#D to %q#T can never succeed"
msgstr ""
-#: cp/rtti.c:691
+#: cp/rtti.c:692
#, gcc-internal-format
msgid "%<dynamic_cast%> not permitted with -fno-rtti"
msgstr ""
-#: cp/rtti.c:770
+#: cp/rtti.c:771
#, gcc-internal-format
msgid "cannot dynamic_cast %qE (of type %q#T) to type %q#T (%s)"
msgstr ""
@@ -45066,678 +45219,673 @@ msgstr ""
msgid "%qT is an inaccessible base of %qT"
msgstr ""
-#: cp/search.c:2050
+#: cp/search.c:2052
#, gcc-internal-format
msgid "invalid covariant return type for %q#D"
msgstr ""
-#: cp/search.c:2052
+#: cp/search.c:2054
#, gcc-internal-format
msgid " overriding %q#D"
msgstr ""
-#: cp/search.c:2065
+#: cp/search.c:2067
#, gcc-internal-format
msgid "invalid covariant return type for %q+#D"
msgstr ""
-#: cp/search.c:2066 cp/search.c:2071 cp/search.c:2098
+#: cp/search.c:2068 cp/search.c:2073 cp/search.c:2100
#, gcc-internal-format
msgid " overriding %q+#D"
msgstr ""
-#: cp/search.c:2070
+#: cp/search.c:2072
#, gcc-internal-format
msgid "conflicting return type specified for %q+#D"
msgstr ""
-#: cp/search.c:2085
+#: cp/search.c:2087
#, gcc-internal-format
msgid "looser throw specifier for %q+#F"
msgstr ""
-#: cp/search.c:2086
+#: cp/search.c:2088
#, gcc-internal-format
msgid " overriding %q+#F"
msgstr ""
-#: cp/search.c:2097
+#: cp/search.c:2099
#, gcc-internal-format
msgid "conflicting type attributes specified for %q+#D"
msgstr ""
-#: cp/search.c:2113
+#: cp/search.c:2115
#, gcc-internal-format
msgid "%qD declared %<transaction_safe_dynamic%>"
msgstr ""
-#: cp/search.c:2115
+#: cp/search.c:2117
#, gcc-internal-format
msgid "overriding %qD declared %<transaction_safe%>"
msgstr ""
-#: cp/search.c:2122
+#: cp/search.c:2124
#, gcc-internal-format
msgid "deleted function %q+D"
msgstr ""
-#: cp/search.c:2123
+#: cp/search.c:2125
#, gcc-internal-format
msgid "overriding non-deleted function %q+D"
msgstr ""
-#: cp/search.c:2128
+#: cp/search.c:2130
#, gcc-internal-format
msgid "non-deleted function %q+D"
msgstr ""
-#: cp/search.c:2129
+#: cp/search.c:2131
#, gcc-internal-format
msgid "overriding deleted function %q+D"
msgstr ""
-#: cp/search.c:2135
+#: cp/search.c:2137
#, gcc-internal-format
msgid "virtual function %q+D"
msgstr ""
-#: cp/search.c:2136
+#: cp/search.c:2138
#, gcc-internal-format
msgid "overriding final function %q+D"
msgstr ""
#. A static member function cannot match an inherited
#. virtual member function.
-#: cp/search.c:2232
+#: cp/search.c:2234
#, gcc-internal-format
msgid "%q+#D cannot be declared"
msgstr ""
-#: cp/search.c:2233
+#: cp/search.c:2235
#, gcc-internal-format
msgid " since %q+#D declared in base class"
msgstr ""
-#: cp/semantics.c:837
+#: cp/semantics.c:840
#, gcc-internal-format
msgid "suggest explicit braces around empty body in %<do%> statement"
msgstr ""
-#: cp/semantics.c:1505
+#: cp/semantics.c:1508
#, gcc-internal-format
msgid "type of asm operand %qE could not be determined"
msgstr ""
-#: cp/semantics.c:1570
+#: cp/semantics.c:1573
#, gcc-internal-format
msgid "__label__ declarations are only allowed in function scopes"
msgstr ""
-#: cp/semantics.c:1725
+#: cp/semantics.c:1760
#, gcc-internal-format
msgid "invalid use of member %qD in static member function"
msgstr ""
-#: cp/semantics.c:2419
+#: cp/semantics.c:2467
#, gcc-internal-format
msgid "arguments to destructor are not allowed"
msgstr ""
-#: cp/semantics.c:2516
+#: cp/semantics.c:2564
#, gcc-internal-format
msgid "%<this%> is unavailable for static member functions"
msgstr ""
-#: cp/semantics.c:2518
+#: cp/semantics.c:2566
#, gcc-internal-format
msgid "invalid use of %<this%> in non-member function"
msgstr ""
-#: cp/semantics.c:2520
+#: cp/semantics.c:2568
#, gcc-internal-format
msgid "invalid use of %<this%> at top level"
msgstr ""
-#: cp/semantics.c:2542
+#: cp/semantics.c:2590
#, gcc-internal-format
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2550 cp/typeck.c:2530
+#: cp/semantics.c:2598 cp/typeck.c:2530
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/semantics.c:2572
+#: cp/semantics.c:2620
#, gcc-internal-format
msgid "%qE is not of type %qT"
msgstr ""
-#: cp/semantics.c:2643
+#: cp/semantics.c:2691
#, gcc-internal-format
msgid "compound literal of non-object type %qT"
msgstr ""
-#: cp/semantics.c:2760
+#: cp/semantics.c:2808
#, gcc-internal-format
msgid "template type parameters must use the keyword %<class%> or %<typename%>"
msgstr ""
-#: cp/semantics.c:2810
+#: cp/semantics.c:2858
#, gcc-internal-format
msgid ""
"invalid use of type %qT as a default value for a template template-parameter"
msgstr ""
-#: cp/semantics.c:2813
+#: cp/semantics.c:2861
#, gcc-internal-format
msgid "invalid default argument for a template template parameter"
msgstr ""
-#: cp/semantics.c:2830
+#: cp/semantics.c:2878
#, gcc-internal-format
msgid "definition of %q#T inside template parameter list"
msgstr ""
-#: cp/semantics.c:2861
+#: cp/semantics.c:2909
#, gcc-internal-format
msgid "invalid definition of qualified type %qT"
msgstr ""
-#: cp/semantics.c:3141
+#: cp/semantics.c:3189
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr ""
-#: cp/semantics.c:3300
+#: cp/semantics.c:3348
#, gcc-internal-format
msgid "cannot capture member %qD of anonymous union"
msgstr ""
-#: cp/semantics.c:3313 cp/semantics.c:9197
+#: cp/semantics.c:3361 cp/semantics.c:9254
#, gcc-internal-format
msgid "%qD is not captured"
msgstr ""
-#: cp/semantics.c:3318
+#: cp/semantics.c:3366
#, gcc-internal-format
msgid "the lambda has no capture-default"
msgstr ""
-#: cp/semantics.c:3320
+#: cp/semantics.c:3368
#, gcc-internal-format
msgid ""
"lambda in local class %q+T cannot capture variables from the enclosing "
"context"
msgstr ""
-#: cp/semantics.c:3331
+#: cp/semantics.c:3379
#, gcc-internal-format
msgid "use of local variable with automatic storage from containing function"
msgstr ""
-#: cp/semantics.c:3332
+#: cp/semantics.c:3380
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr ""
-#: cp/semantics.c:3494
+#: cp/semantics.c:3542
#, 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:3581
+#: cp/semantics.c:3629
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr ""
-#: cp/semantics.c:3586
+#: cp/semantics.c:3634
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:3592
+#: cp/semantics.c:3640
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:3618
+#: cp/semantics.c:3666
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr ""
-#: cp/semantics.c:3743
+#: cp/semantics.c:3791
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr ""
-#: cp/semantics.c:3771
+#: cp/semantics.c:3819
#, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr ""
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3926
+#: cp/semantics.c:3974
#, gcc-internal-format
msgid "Parameter pack __bases only valid in template declaration"
msgstr ""
-#: cp/semantics.c:3955
+#: cp/semantics.c:4003
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3964
+#: cp/semantics.c:4012
#, gcc-internal-format
msgid ""
"second operand of %<offsetof%> is neither a single identifier nor a sequence "
"of member accesses and array references"
msgstr ""
-#: cp/semantics.c:3972
+#: cp/semantics.c:4020
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr ""
-#: cp/semantics.c:3988
+#: cp/semantics.c:4036
#, gcc-internal-format
msgid "offsetof within non-standard-layout type %qT is undefined"
msgstr ""
-#: cp/semantics.c:4492 cp/semantics.c:5948 cp/semantics.c:6004
-#: cp/semantics.c:6043 cp/semantics.c:6394 cp/semantics.c:6493
-#: cp/semantics.c:6627
+#: cp/semantics.c:4541 cp/semantics.c:5997 cp/semantics.c:6053
+#: cp/semantics.c:6092 cp/semantics.c:6443 cp/semantics.c:6542
+#: cp/semantics.c:6676
#, gcc-internal-format
msgid "%<this%> allowed in OpenMP only in %<declare simd%> clauses"
msgstr ""
-#: cp/semantics.c:5168
+#: cp/semantics.c:5217
#, gcc-internal-format
msgid "user defined reduction lookup is ambiguous"
msgstr ""
-#: cp/semantics.c:5441
+#: cp/semantics.c:5490
#, gcc-internal-format
msgid "%qE in %<reduction%> clause is a zero size array"
msgstr ""
-#: cp/semantics.c:5489
+#: cp/semantics.c:5538
#, gcc-internal-format
msgid "%qE has const type for %<reduction%>"
msgstr ""
-#: cp/semantics.c:5601
+#: cp/semantics.c:5650
#, gcc-internal-format
msgid "user defined reduction with constructor initializer for base class %qT"
msgstr ""
-#: cp/semantics.c:5823
+#: cp/semantics.c:5872
#, gcc-internal-format
msgid ""
"linear clause with %qs modifier applied to non-reference variable with %qT "
"type"
msgstr ""
-#: cp/semantics.c:5835
+#: cp/semantics.c:5884
#, gcc-internal-format
msgid ""
"linear clause applied to non-integral non-pointer variable with %qT type"
msgstr ""
-#: cp/semantics.c:5856
+#: cp/semantics.c:5905
#, gcc-internal-format
msgid "linear step expression must be integral"
msgstr ""
-#: cp/semantics.c:5959
+#: cp/semantics.c:6008
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr ""
-#: cp/semantics.c:6015
+#: cp/semantics.c:6064
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr ""
-#: cp/semantics.c:6054
+#: cp/semantics.c:6103
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr ""
-#: cp/semantics.c:6099
+#: cp/semantics.c:6148
#, gcc-internal-format
msgid "%<gang%> static expression must be integral"
msgstr ""
-#: cp/semantics.c:6113
+#: cp/semantics.c:6162
#, gcc-internal-format
msgid "%<gang%> static value must bepositive"
msgstr ""
-#: cp/semantics.c:6145
+#: cp/semantics.c:6194
#, gcc-internal-format
msgid "%<gang%> num expression must be integral"
msgstr ""
-#: cp/semantics.c:6148
+#: cp/semantics.c:6197
#, gcc-internal-format
msgid "%<vector%> length expression must be integral"
msgstr ""
-#: cp/semantics.c:6152
+#: cp/semantics.c:6201
#, gcc-internal-format
msgid "%<worker%> num expression must be integral"
msgstr ""
-#: cp/semantics.c:6156
+#: cp/semantics.c:6205
#, gcc-internal-format
msgid "%qs expression must be integral"
msgstr ""
-#: cp/semantics.c:6174
+#: cp/semantics.c:6223
#, gcc-internal-format
msgid "%<gang%> num value must be positive"
msgstr ""
-#: cp/semantics.c:6178
+#: cp/semantics.c:6227
#, gcc-internal-format
msgid "%<vector%> length value must bepositive"
msgstr ""
-#: cp/semantics.c:6183
+#: cp/semantics.c:6232
#, gcc-internal-format
msgid "%<worker%> num value must bepositive"
msgstr ""
-#: cp/semantics.c:6188
+#: cp/semantics.c:6237
#, gcc-internal-format
msgid "%qs value must be positive"
msgstr ""
-#: cp/semantics.c:6235
+#: cp/semantics.c:6284
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:6267
+#: cp/semantics.c:6316
#, gcc-internal-format
msgid "%qs length expression must be integral"
msgstr ""
-#: cp/semantics.c:6280
+#: cp/semantics.c:6329
#, gcc-internal-format
msgid "%qs length expression must be positive constant integer expression"
msgstr ""
-#: cp/semantics.c:6299
+#: cp/semantics.c:6348
#, gcc-internal-format
msgid "%<async%> expression must be integral"
msgstr ""
-#: cp/semantics.c:6327
+#: cp/semantics.c:6376
#, gcc-internal-format
msgid "%<thread_limit%> expression must be integral"
msgstr ""
-#: cp/semantics.c:6356
+#: cp/semantics.c:6405
#, gcc-internal-format
msgid "%<device%> id must be integral"
msgstr ""
-#: cp/semantics.c:6377
+#: cp/semantics.c:6426
#, gcc-internal-format
msgid "%<dist_schedule%> chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:6404
+#: cp/semantics.c:6453
#, gcc-internal-format
msgid "%qD is not a variable in %<aligned%> clause"
msgstr ""
-#: cp/semantics.c:6418
+#: cp/semantics.c:6467
#, gcc-internal-format
msgid ""
"%qE in %<aligned%> clause is neither a pointer nor an array nor a reference "
"to pointer or array"
msgstr ""
-#: cp/semantics.c:6424
+#: cp/semantics.c:6473
#, gcc-internal-format
msgid "%qD appears more than once in %<aligned%> clauses"
msgstr ""
-#: cp/semantics.c:6437
+#: cp/semantics.c:6486
#, gcc-internal-format
msgid "%<aligned%> clause alignment expression must be integral"
msgstr ""
-#: cp/semantics.c:6486
+#: cp/semantics.c:6535
#, gcc-internal-format
msgid "%qD is not a variable in %<depend%> clause"
msgstr ""
-#: cp/semantics.c:6746
+#: cp/semantics.c:6803
#, gcc-internal-format
msgid "overloaded function name %qE in clause %qs"
msgstr ""
-#: cp/semantics.c:6750
+#: cp/semantics.c:6807
#, gcc-internal-format
msgid "template %qE in clause %qs"
msgstr ""
-#: cp/semantics.c:6815
+#: cp/semantics.c:6872
#, gcc-internal-format
msgid "%<grainsize%> expression must be integral"
msgstr ""
-#: cp/semantics.c:6844
+#: cp/semantics.c:6901
#, gcc-internal-format
msgid "%<priority%> expression must be integral"
msgstr ""
-#: cp/semantics.c:6873
+#: cp/semantics.c:6930
#, gcc-internal-format
msgid "%<num_tasks%> expression must be integral"
msgstr ""
-#: cp/semantics.c:6902
+#: cp/semantics.c:6959
#, gcc-internal-format
msgid ""
"%qs variable is neither a pointer, nor an arraynor reference to pointer or "
"array"
msgstr ""
-#: cp/semantics.c:7358
+#: cp/semantics.c:7415
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:7372
+#: cp/semantics.c:7429
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:7577
+#: cp/semantics.c:7634
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
-#: cp/semantics.c:7997
+#: cp/semantics.c:8054
#, gcc-internal-format
msgid "%<#pragma omp simd%> used with class iteration variable %qE"
msgstr ""
-#: cp/semantics.c:8339 cp/semantics.c:8349
+#: cp/semantics.c:8396 cp/semantics.c:8406
#, gcc-internal-format
msgid "%<#pragma omp atomic update%> uses two different expressions for memory"
msgstr ""
-#: cp/semantics.c:8642
+#: cp/semantics.c:8699
#, gcc-internal-format
msgid "static assertion failed"
msgstr ""
-#: cp/semantics.c:8644
+#: cp/semantics.c:8701
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr ""
-#: cp/semantics.c:8649
+#: cp/semantics.c:8706
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr ""
-#: cp/semantics.c:8679
+#: cp/semantics.c:8736
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr ""
-#: cp/semantics.c:8707
+#: cp/semantics.c:8764
#, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr ""
-#: cp/semantics.c:9236
+#: cp/semantics.c:9293
#, gcc-internal-format
msgid "operand of fold expression has no unexpanded parameter packs"
msgstr ""
-#: cp/semantics.c:9289
+#: cp/semantics.c:9346
#, gcc-internal-format
msgid "both arguments in binary fold have unexpanded parameter packs"
msgstr ""
-#: cp/semantics.c:9291
+#: cp/semantics.c:9348
#, gcc-internal-format
msgid "no unexpanded parameter packs in binary fold"
msgstr ""
-#: cp/tree.c:1139
+#: cp/tree.c:1146
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:1616
+#: cp/tree.c:1637
#, gcc-internal-format
msgid "lambda-expression in a constant expression"
msgstr ""
-#: cp/tree.c:3539
+#: cp/tree.c:3573
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:3568
+#: cp/tree.c:3602
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:3574
+#: cp/tree.c:3608
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:3601
+#: cp/tree.c:3635
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:3623
+#: cp/tree.c:3657
#, gcc-internal-format
msgid ""
"can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:3631
+#: cp/tree.c:3665
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:3641
+#: cp/tree.c:3675
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:3652
+#: cp/tree.c:3686
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr ""
-#: cp/tree.c:3679
+#: cp/tree.c:3713
#, gcc-internal-format
msgid "redeclaration of %qD adds abi tag %E"
msgstr ""
-#: cp/tree.c:3685
-#, gcc-internal-format
-msgid "previous declaration here"
-msgstr ""
-
-#: cp/tree.c:3699
+#: cp/tree.c:3733
#, gcc-internal-format
msgid "the %qE attribute requires arguments"
msgstr ""
-#: cp/tree.c:3710
+#: cp/tree.c:3744
#, gcc-internal-format
msgid "arguments to the %qE attribute must be narrow string literals"
msgstr ""
-#: cp/tree.c:3723 cp/tree.c:3736
+#: cp/tree.c:3757 cp/tree.c:3770
#, gcc-internal-format
msgid "arguments to the %qE attribute must contain valid identifiers"
msgstr ""
-#: cp/tree.c:3725
+#: cp/tree.c:3759
#, gcc-internal-format
msgid "%<%c%> is not a valid first character for an identifier"
msgstr ""
-#: cp/tree.c:3738
+#: cp/tree.c:3772
#, gcc-internal-format
msgid "%<%c%> is not a valid character in an identifier"
msgstr ""
-#: cp/tree.c:3762
+#: cp/tree.c:3796
#, gcc-internal-format
msgid "%qE attribute applied to non-class, non-enum type %qT"
msgstr ""
-#: cp/tree.c:3768
+#: cp/tree.c:3802
#, gcc-internal-format
msgid "%qE attribute applied to %qT after its definition"
msgstr ""
-#: cp/tree.c:3775
+#: cp/tree.c:3809
#, gcc-internal-format
msgid "ignoring %qE attribute applied to template instantiation %qT"
msgstr ""
-#: cp/tree.c:3782
+#: cp/tree.c:3816
#, gcc-internal-format
msgid "ignoring %qE attribute applied to template specialization %qT"
msgstr ""
-#: cp/tree.c:3804
+#: cp/tree.c:3838
#, gcc-internal-format
msgid "%qE attribute applied to non-function, non-variable %qD"
msgstr ""
-#: cp/tree.c:3810
+#: cp/tree.c:3844
#, gcc-internal-format
msgid "%qE attribute applied to extern \"C\" declaration %qD"
msgstr ""
-#: cp/tree.c:4511
+#: cp/tree.c:4545
#, gcc-internal-format
msgid "zero as null pointer constant"
msgstr ""
-#: cp/tree.c:4524
+#: cp/tree.c:4558
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -45855,14 +46003,14 @@ msgstr ""
msgid "deprecated conversion from string constant to %qT"
msgstr ""
-#: cp/typeck.c:2302 cp/typeck.c:2695
+#: cp/typeck.c:2302 cp/typeck.c:2703
#, gcc-internal-format
msgid ""
"request for member %qD in %qE, which is of pointer type %qT (maybe you meant "
"to use %<->%> ?)"
msgstr ""
-#: cp/typeck.c:2306 cp/typeck.c:2699
+#: cp/typeck.c:2306 cp/typeck.c:2707
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
@@ -45888,300 +46036,295 @@ msgstr ""
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2739 cp/typeck.c:2751
+#: cp/typeck.c:2747 cp/typeck.c:2759
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr ""
-#: cp/typeck.c:2788
+#: cp/typeck.c:2796
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr ""
-#: cp/typeck.c:2812
+#: cp/typeck.c:2820
#, gcc-internal-format
msgid "%q#T has no member named %qE; did you mean %qE?"
msgstr ""
-#: cp/typeck.c:2816
+#: cp/typeck.c:2824
#, gcc-internal-format
msgid "%q#T has no member named %qE"
msgstr ""
-#: cp/typeck.c:2835
+#: cp/typeck.c:2843
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr ""
-#: cp/typeck.c:3001
+#: cp/typeck.c:3009
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr ""
-#: cp/typeck.c:3032
+#: cp/typeck.c:3040
#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr ""
-#: cp/typeck.c:3035
+#: cp/typeck.c:3043
#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr ""
-#: cp/typeck.c:3038
+#: cp/typeck.c:3046
#, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr ""
-#: cp/typeck.c:3041
+#: cp/typeck.c:3049
#, gcc-internal-format
msgid ""
"left hand operand of %<->*%> must be a pointer to class, but is a pointer to "
"member of type %qT"
msgstr ""
-#: cp/typeck.c:3077
+#: cp/typeck.c:3085
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr ""
-#: cp/typeck.c:3093
+#: cp/typeck.c:3101
#, gcc-internal-format
msgid "rank of the array%'s index is greater than 1"
msgstr ""
-#: cp/typeck.c:3189
+#: cp/typeck.c:3197
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr ""
-#: cp/typeck.c:3223
+#: cp/typeck.c:3231
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: cp/typeck.c:3296
+#: cp/typeck.c:3304
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr ""
-#: cp/typeck.c:3527
+#: cp/typeck.c:3535
#, gcc-internal-format
msgid "cannot call function %qD"
msgstr ""
-#: cp/typeck.c:3542
+#: cp/typeck.c:3550
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr ""
-#: cp/typeck.c:3563
+#: cp/typeck.c:3571
#, gcc-internal-format
msgid ""
"must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E "
"(...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:3580
+#: cp/typeck.c:3588
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr ""
-#: cp/typeck.c:3583
+#: cp/typeck.c:3591
#, gcc-internal-format
msgid "%qD cannot be used as a function"
msgstr ""
-#: cp/typeck.c:3586
+#: cp/typeck.c:3594
#, gcc-internal-format
msgid "expression cannot be used as a function"
msgstr ""
-#: cp/typeck.c:3635
+#: cp/typeck.c:3643
#, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr ""
-#: cp/typeck.c:3636
+#: cp/typeck.c:3644
#, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr ""
-#: cp/typeck.c:3641
+#: cp/typeck.c:3649
#, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr ""
-#: cp/typeck.c:3642
+#: cp/typeck.c:3650
#, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr ""
-#: cp/typeck.c:3648
+#: cp/typeck.c:3656
#, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr ""
-#: cp/typeck.c:3649
+#: cp/typeck.c:3657
#, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr ""
-#: cp/typeck.c:3659
+#: cp/typeck.c:3667
#, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr ""
-#: cp/typeck.c:3660
+#: cp/typeck.c:3668
#, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr ""
-#: cp/typeck.c:3663
+#: cp/typeck.c:3671
#, gcc-internal-format
msgid "too many arguments to function"
msgstr ""
-#: cp/typeck.c:3664
+#: cp/typeck.c:3672
#, gcc-internal-format
msgid "too few arguments to function"
msgstr ""
-#: cp/typeck.c:3743
+#: cp/typeck.c:3751
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr ""
-#: cp/typeck.c:3746
+#: cp/typeck.c:3754
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr ""
-#: cp/typeck.c:4083 cp/typeck.c:4094
+#: cp/typeck.c:3993
#, gcc-internal-format
-msgid "assuming cast to type %qT from overloaded function"
-msgstr ""
-
-#: cp/typeck.c:4140
-#, gcc-internal-format
-msgid "NULL used in arithmetic"
+msgid "the address of %qD will never be NULL"
msgstr ""
-#: cp/typeck.c:4463
+#: cp/typeck.c:4004
#, gcc-internal-format
-msgid "left rotate count is negative"
+msgid "the compiler can assume that the address of %qD will never be NULL"
msgstr ""
-#: cp/typeck.c:4464
+#: cp/typeck.c:4123 cp/typeck.c:4134
#, gcc-internal-format
-msgid "right rotate count is negative"
+msgid "assuming cast to type %qT from overloaded function"
msgstr ""
-#: cp/typeck.c:4470
+#: cp/typeck.c:4180
#, gcc-internal-format
-msgid "left rotate count >= width of type"
+msgid "NULL used in arithmetic"
msgstr ""
-#: cp/typeck.c:4471
+#: cp/typeck.c:4503
#, gcc-internal-format
-msgid "right rotate count >= width of type"
+msgid "left rotate count is negative"
msgstr ""
-#: cp/typeck.c:4492 cp/typeck.c:4793
+#: cp/typeck.c:4504
#, gcc-internal-format
-msgid "comparison with string literal results in unspecified behaviour"
+msgid "right rotate count is negative"
msgstr ""
-#: cp/typeck.c:4523 cp/typeck.c:4567
+#: cp/typeck.c:4510
#, gcc-internal-format
-msgid "the address of %qD will never be NULL"
+msgid "left rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:4539 cp/typeck.c:4583
+#: cp/typeck.c:4511
#, gcc-internal-format
-msgid "the compiler can assume that the address of %qD will never be NULL"
+msgid "right rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:4599 cp/typeck.c:4607 cp/typeck.c:4885 cp/typeck.c:4893
+#: cp/typeck.c:4582 cp/typeck.c:4590 cp/typeck.c:4869 cp/typeck.c:4877
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:4808 cp/typeck.c:4820
+#: cp/typeck.c:4792 cp/typeck.c:4804
#, gcc-internal-format
msgid "operand types are %qT and %qT"
msgstr ""
-#: cp/typeck.c:4846
+#: cp/typeck.c:4830
#, gcc-internal-format
msgid "could not find an integer type of the same size as %qT"
msgstr ""
-#: cp/typeck.c:4910
+#: cp/typeck.c:4894
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: cp/typeck.c:4965
+#: cp/typeck.c:4949
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr ""
-#: cp/typeck.c:5265
+#: cp/typeck.c:5249
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr ""
-#: cp/typeck.c:5273
+#: cp/typeck.c:5257
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:5281
+#: cp/typeck.c:5265
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:5300
+#: cp/typeck.c:5284
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:5375
+#: cp/typeck.c:5359
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr ""
-#: cp/typeck.c:5376
+#: cp/typeck.c:5360
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr ""
-#: cp/typeck.c:5392
+#: cp/typeck.c:5376
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:5395
+#: cp/typeck.c:5379
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:5402
+#: cp/typeck.c:5386
#, gcc-internal-format
msgid ""
"parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:5561
+#: cp/typeck.c:5545
#, 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:5566
+#: cp/typeck.c:5550
#, gcc-internal-format
msgid ""
"ISO C++ forbids taking the address of a bound member function to form a "
@@ -46189,388 +46332,388 @@ msgid ""
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:5603
+#: cp/typeck.c:5587
#, gcc-internal-format
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:5605
+#: cp/typeck.c:5589
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr ""
-#: cp/typeck.c:5622
+#: cp/typeck.c:5606
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr ""
-#: cp/typeck.c:5677
+#: cp/typeck.c:5661
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:5705
+#: cp/typeck.c:5689
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr ""
-#: cp/typeck.c:5983
+#: cp/typeck.c:5967
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr ""
-#: cp/typeck.c:5984
+#: cp/typeck.c:5968
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr ""
-#: cp/typeck.c:6000
+#: cp/typeck.c:5984
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr ""
-#: cp/typeck.c:6001
+#: cp/typeck.c:5985
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr ""
-#: cp/typeck.c:6012
+#: cp/typeck.c:5996
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:6013
+#: cp/typeck.c:5997
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:6048
+#: cp/typeck.c:6032
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr ""
-#: cp/typeck.c:6210
+#: cp/typeck.c:6194
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:6232
+#: cp/typeck.c:6216
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr ""
-#: cp/typeck.c:6237
+#: cp/typeck.c:6221
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:6320
+#: cp/typeck.c:6304
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
-#: cp/typeck.c:6332
+#: cp/typeck.c:6316
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr ""
-#: cp/typeck.c:6336
+#: cp/typeck.c:6320
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr ""
-#: cp/typeck.c:6340
+#: cp/typeck.c:6324
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr ""
-#: cp/typeck.c:6377
+#: cp/typeck.c:6361
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr ""
-#: cp/typeck.c:6474
+#: cp/typeck.c:6458
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:6507
+#: cp/typeck.c:6491
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:6513
+#: cp/typeck.c:6497
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:6519
+#: cp/typeck.c:6503
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:6542
+#: cp/typeck.c:6526
#, gcc-internal-format
msgid "useless cast to type %qT"
msgstr ""
-#: cp/typeck.c:6917
+#: cp/typeck.c:6897
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6943
+#: cp/typeck.c:6923
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr ""
-#: cp/typeck.c:6995
+#: cp/typeck.c:6975
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:7065
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr ""
-#: cp/typeck.c:7105
+#: cp/typeck.c:7085
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr ""
-#: cp/typeck.c:7123
+#: cp/typeck.c:7103
#, gcc-internal-format
msgid ""
"casting between pointer-to-function and pointer-to-object is conditionally-"
"supported"
msgstr ""
-#: cp/typeck.c:7137
+#: cp/typeck.c:7117
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:7198
+#: cp/typeck.c:7178
#, 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:7207
+#: cp/typeck.c:7187
#, 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:7247
+#: cp/typeck.c:7227
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:7308
+#: cp/typeck.c:7288
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:7401 cp/typeck.c:7409
+#: cp/typeck.c:7381 cp/typeck.c:7389
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr ""
-#: cp/typeck.c:7418
+#: cp/typeck.c:7398
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr ""
-#: cp/typeck.c:7699
+#: cp/typeck.c:7679
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:7760
+#: cp/typeck.c:7740
#, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr ""
-#: cp/typeck.c:7786
+#: cp/typeck.c:7766
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr ""
-#: cp/typeck.c:7800
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "array used as initializer"
msgstr ""
-#: cp/typeck.c:7802
+#: cp/typeck.c:7782
#, gcc-internal-format
msgid "invalid array assignment"
msgstr ""
-#: cp/typeck.c:7932
+#: cp/typeck.c:7912
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:7946
+#: cp/typeck.c:7926
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr ""
-#: cp/typeck.c:7993 cp/typeck.c:8012
+#: cp/typeck.c:7973 cp/typeck.c:7992
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:8093
+#: cp/typeck.c:8073
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr ""
-#: cp/typeck.c:8369
+#: cp/typeck.c:8349
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr ""
-#: cp/typeck.c:8375
+#: cp/typeck.c:8355
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr ""
-#: cp/typeck.c:8379
+#: cp/typeck.c:8359
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr ""
-#: cp/typeck.c:8383
+#: cp/typeck.c:8363
#, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr ""
-#: cp/typeck.c:8387
+#: cp/typeck.c:8367
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr ""
-#: cp/typeck.c:8391
+#: cp/typeck.c:8371
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr ""
-#: cp/typeck.c:8395
+#: cp/typeck.c:8375
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr ""
-#: cp/typeck.c:8408
+#: cp/typeck.c:8388
#, gcc-internal-format
msgid "class type %qT is incomplete"
msgstr ""
-#: cp/typeck.c:8426
+#: cp/typeck.c:8406
#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:8430
+#: cp/typeck.c:8410
#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:8435
+#: cp/typeck.c:8415
#, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:8440
+#: cp/typeck.c:8420
#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:8450
+#: cp/typeck.c:8430
#, gcc-internal-format
msgid ""
"left-hand side of assignment might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:8545
+#: cp/typeck.c:8525
#, gcc-internal-format
msgid "in passing argument %P of %qD"
msgstr ""
-#: cp/typeck.c:8604
+#: cp/typeck.c:8584
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:8611
+#: cp/typeck.c:8591
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:8626
+#: cp/typeck.c:8606
#, gcc-internal-format
msgid "reference to local variable %qD returned"
msgstr ""
-#: cp/typeck.c:8630
+#: cp/typeck.c:8610
#, gcc-internal-format
msgid "address of label %qD returned"
msgstr ""
-#: cp/typeck.c:8634
+#: cp/typeck.c:8614
#, gcc-internal-format
msgid "address of local variable %qD returned"
msgstr ""
-#: cp/typeck.c:8680
+#: cp/typeck.c:8660
#, 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:8688
+#: cp/typeck.c:8668
#, 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:8691
+#: cp/typeck.c:8671
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr ""
#. Give a helpful error message.
-#: cp/typeck.c:8721 cp/typeck.c:8767
+#: cp/typeck.c:8701 cp/typeck.c:8747
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr ""
-#: cp/typeck.c:8729
+#: cp/typeck.c:8709
#, gcc-internal-format
msgid "returning initializer list"
msgstr ""
-#: cp/typeck.c:8748
+#: cp/typeck.c:8728
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:8751
+#: cp/typeck.c:8731
#, gcc-internal-format
msgid "inconsistent deduction for auto return type: %qT and then %qT"
msgstr ""
-#: cp/typeck.c:8786
+#: cp/typeck.c:8766
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr ""
-#: cp/typeck.c:8816
+#: cp/typeck.c:8796
#, gcc-internal-format
msgid ""
"%<operator new%> must not return NULL unless it is declared %<throw()%> (or -"
@@ -46578,12 +46721,12 @@ msgid ""
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:9435
+#: cp/typeck.c:9405
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:9437
+#: cp/typeck.c:9407
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -46805,29 +46948,29 @@ msgstr ""
msgid "constructor syntax used, but no constructor declared for type %qT"
msgstr ""
-#: cp/typeck2.c:947
+#: cp/typeck2.c:950
#, gcc-internal-format
msgid ""
"narrowing conversion of %qE from %qT to %qT inside { } is ill-formed in C++11"
msgstr ""
-#: cp/typeck2.c:957 cp/typeck2.c:970
+#: cp/typeck2.c:960 cp/typeck2.c:973
#, gcc-internal-format
msgid "narrowing conversion of %qE from %qT to %qT inside { }"
msgstr ""
-#: cp/typeck2.c:960
+#: cp/typeck2.c:963
#, gcc-internal-format
msgid ""
" the expression has a constant value but is not a C++ constant-expression"
msgstr ""
-#: cp/typeck2.c:1047
+#: cp/typeck2.c:1049
#, gcc-internal-format
msgid "int-array initialized from non-wide string"
msgstr ""
-#: cp/typeck2.c:1053
+#: cp/typeck2.c:1055
#, gcc-internal-format
msgid "int-array initialized from incompatible wide string"
msgstr ""
@@ -46847,92 +46990,92 @@ msgstr ""
msgid "array must be initialized with a brace-enclosed initializer"
msgstr ""
-#: cp/typeck2.c:1431 cp/typeck2.c:1460
+#: cp/typeck2.c:1430 cp/typeck2.c:1457
#, gcc-internal-format
msgid "missing initializer for member %qD"
msgstr ""
-#: cp/typeck2.c:1439
+#: cp/typeck2.c:1438
#, gcc-internal-format
msgid "member %qD is uninitialized reference"
msgstr ""
-#: cp/typeck2.c:1446
+#: cp/typeck2.c:1445
#, gcc-internal-format
msgid "member %qD with uninitialized reference fields"
msgstr ""
-#: cp/typeck2.c:1536
+#: cp/typeck2.c:1548
#, gcc-internal-format
msgid "no field %qD found in union being initialized"
msgstr ""
-#: cp/typeck2.c:1547
+#: cp/typeck2.c:1559
#, gcc-internal-format
msgid "index value instead of field name in union initializer"
msgstr ""
-#: cp/typeck2.c:1729
+#: cp/typeck2.c:1741
#, gcc-internal-format
msgid "circular pointer delegation detected"
msgstr ""
-#: cp/typeck2.c:1743
+#: cp/typeck2.c:1755
#, gcc-internal-format
msgid "base operand of %<->%> has non-pointer type %qT"
msgstr ""
-#: cp/typeck2.c:1769
+#: cp/typeck2.c:1781
#, gcc-internal-format
msgid "result of %<operator->()%> yields non-pointer result"
msgstr ""
-#: cp/typeck2.c:1771
+#: cp/typeck2.c:1783
#, gcc-internal-format
msgid "base operand of %<->%> is not a pointer"
msgstr ""
-#: cp/typeck2.c:1798
+#: cp/typeck2.c:1810
#, gcc-internal-format
msgid "%qE cannot be used as a member pointer, since it is of type %qT"
msgstr ""
-#: cp/typeck2.c:1807
+#: cp/typeck2.c:1819
#, gcc-internal-format
msgid "cannot apply member pointer %qE to %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck2.c:1829
+#: cp/typeck2.c:1841
#, gcc-internal-format
msgid "pointer to member type %qT incompatible with object type %qT"
msgstr ""
-#: cp/typeck2.c:1888
+#: cp/typeck2.c:1900
#, gcc-internal-format
msgid "pointer-to-member-function type %qT requires an rvalue"
msgstr ""
-#: cp/typeck2.c:1895
+#: cp/typeck2.c:1907
#, gcc-internal-format
msgid "pointer-to-member-function type %qT requires an lvalue"
msgstr ""
-#: cp/typeck2.c:1936
+#: cp/typeck2.c:1948
#, gcc-internal-format
msgid "functional cast to array type %qT"
msgstr ""
-#: cp/typeck2.c:1957
+#: cp/typeck2.c:1969
#, gcc-internal-format
msgid "invalid value-initialization of reference type"
msgstr ""
-#: cp/typeck2.c:2184
+#: cp/typeck2.c:2196
#, gcc-internal-format
msgid "call to function %qD which throws incomplete type %q#T"
msgstr ""
-#: cp/typeck2.c:2187
+#: cp/typeck2.c:2199
#, gcc-internal-format
msgid "call to function which throws incomplete type %q#T"
msgstr ""
@@ -47146,8 +47289,8 @@ msgstr ""
#: fortran/array.c:213 fortran/array.c:615 fortran/check.c:2642
#: fortran/check.c:4950 fortran/check.c:4988 fortran/check.c:5030
-#: fortran/check.c:5229 fortran/match.c:1674 fortran/match.c:2781
-#: fortran/match.c:2976 fortran/match.c:3172 fortran/simplify.c:4733
+#: fortran/check.c:5229 fortran/match.c:1680 fortran/match.c:2787
+#: fortran/match.c:2982 fortran/match.c:3178 fortran/simplify.c:4733
#, gcc-internal-format
msgid "Coarrays disabled at %C, use %<-fcoarray=%> to enable"
msgstr ""
@@ -47287,7 +47430,7 @@ msgstr ""
msgid "Array constructor including type specification at %C"
msgstr ""
-#: fortran/array.c:1112 fortran/match.c:3602
+#: fortran/array.c:1112 fortran/match.c:3608
#, gcc-internal-format, gfc-internal-format
msgid "Type-spec at %L cannot contain a deferred type parameter"
msgstr ""
@@ -48427,7 +48570,7 @@ msgstr ""
#. Since the extension field is 8 bit wide, we can only have
#. up to 255 extension levels.
-#: fortran/class.c:725 fortran/decl.c:8136
+#: fortran/class.c:725 fortran/decl.c:8176
#, gcc-internal-format
msgid "Maximum extension level reached with type %qs at %L"
msgstr ""
@@ -48646,1306 +48789,1311 @@ msgid ""
"at %L"
msgstr ""
-#: fortran/decl.c:1275
+#: fortran/decl.c:1244
+#, gcc-internal-format
+msgid "Symbol %qs at %C also declared as a type at %L"
+msgstr ""
+
+#: fortran/decl.c:1303
#, gcc-internal-format
msgid ""
"Variable %qs in common block %qs at %C must be declared with a C "
"interoperable kind since common block %qs is BIND(C)"
msgstr ""
-#: fortran/decl.c:1320
+#: fortran/decl.c:1348
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression at %L is being truncated (%d/%d)"
msgstr ""
-#: fortran/decl.c:1327
+#: fortran/decl.c:1355
#, gcc-internal-format, gfc-internal-format
msgid ""
"The CHARACTER elements of the array constructor at %L must have the same "
"length (%d/%d)"
msgstr ""
-#: fortran/decl.c:1417
+#: fortran/decl.c:1445
#, gcc-internal-format
msgid "Initializer not allowed for PARAMETER %qs at %C"
msgstr ""
-#: fortran/decl.c:1427
+#: fortran/decl.c:1455
#, gcc-internal-format, gfc-internal-format
msgid "PARAMETER at %L is missing an initializer"
msgstr ""
-#: fortran/decl.c:1437
+#: fortran/decl.c:1465
#, gcc-internal-format
msgid ""
"Variable %qs at %C with an initializer already appears in a DATA statement"
msgstr ""
-#: fortran/decl.c:1530
+#: fortran/decl.c:1558
#, gcc-internal-format, gfc-internal-format
msgid "Can't initialize implied-shape array at %L with scalar"
msgstr ""
-#: fortran/decl.c:1565
+#: fortran/decl.c:1593
#, gcc-internal-format, gfc-internal-format
msgid "Non-constant lower bound in implied-shape declaration at %L"
msgstr ""
-#: fortran/decl.c:1650
+#: fortran/decl.c:1678
#, gcc-internal-format, gfc-internal-format
msgid "Component at %C must have the POINTER attribute"
msgstr ""
-#: fortran/decl.c:1658
+#: fortran/decl.c:1686
#, gcc-internal-format, gfc-internal-format
msgid "Array component of structure at %C must have explicit or deferred shape"
msgstr ""
-#: fortran/decl.c:1739
+#: fortran/decl.c:1767
#, gcc-internal-format, gfc-internal-format
msgid "Pointer array component of structure at %C must have a deferred shape"
msgstr ""
-#: fortran/decl.c:1748
+#: fortran/decl.c:1776
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable component of structure at %C must have a deferred shape"
msgstr ""
-#: fortran/decl.c:1757
+#: fortran/decl.c:1785
#, gcc-internal-format, gfc-internal-format
msgid "Array component of structure at %C must have an explicit shape"
msgstr ""
-#: fortran/decl.c:1811
+#: fortran/decl.c:1839
#, gcc-internal-format, gfc-internal-format
msgid "NULL() initialization at %C is ambiguous"
msgstr ""
-#: fortran/decl.c:1828
+#: fortran/decl.c:1856
#, gcc-internal-format, gfc-internal-format
msgid "NULL() initialization at %C may not have MOLD"
msgstr ""
-#: fortran/decl.c:1845
+#: fortran/decl.c:1873
#, gcc-internal-format, gfc-internal-format
msgid "Initialization of pointer at %C is not allowed in a PURE procedure"
msgstr ""
-#: fortran/decl.c:1866
+#: fortran/decl.c:1894
#, gcc-internal-format, gfc-internal-format
msgid "Error in pointer initialization at %C"
msgstr ""
-#: fortran/decl.c:1873
+#: fortran/decl.c:1901
#, gcc-internal-format, gfc-internal-format
msgid "non-NULL pointer initialization at %C"
msgstr ""
-#: fortran/decl.c:1896
+#: fortran/decl.c:1924
#, gcc-internal-format
msgid "Function name %qs not allowed at %C"
msgstr ""
-#: fortran/decl.c:1963
+#: fortran/decl.c:1991
#, gcc-internal-format
msgid "Non-PARAMETER symbol %qs at %L can't be implied-shape"
msgstr ""
-#: fortran/decl.c:1973
+#: fortran/decl.c:2001
#, gcc-internal-format, gfc-internal-format
msgid "Implied-shape array at %L"
msgstr ""
-#: fortran/decl.c:2026
+#: fortran/decl.c:2054
#, gcc-internal-format
msgid ""
"%qs at %C is a redefinition of the declaration in the corresponding "
"interface for MODULE PROCEDURE %qs"
msgstr ""
-#: fortran/decl.c:2055 fortran/decl.c:6911
+#: fortran/decl.c:2083 fortran/decl.c:6950
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate array spec for Cray pointee at %C"
msgstr ""
-#: fortran/decl.c:2063
+#: fortran/decl.c:2091
#, gcc-internal-format
msgid "Couldn't set pointee array spec."
msgstr ""
-#: fortran/decl.c:2126
+#: fortran/decl.c:2154
#, gcc-internal-format, gfc-internal-format
msgid "Old-style initialization at %C"
msgstr ""
-#: fortran/decl.c:2131
+#: fortran/decl.c:2159
#, gcc-internal-format, gfc-internal-format
msgid "Invalid old style initialization for derived type component at %C"
msgstr ""
-#: fortran/decl.c:2148 fortran/decl.c:5239
+#: fortran/decl.c:2176 fortran/decl.c:5265
#, gcc-internal-format, gfc-internal-format
msgid "Initialization at %C isn't for a pointer variable"
msgstr ""
-#: fortran/decl.c:2161
+#: fortran/decl.c:2189
#, gcc-internal-format
msgid "Pointer initialization at %C requires %<=>%>, not %<=%>"
msgstr ""
-#: fortran/decl.c:2170 fortran/decl.c:8285
+#: fortran/decl.c:2198 fortran/decl.c:8325
#, gcc-internal-format, gfc-internal-format
msgid "Expected an initialization expression at %C"
msgstr ""
-#: fortran/decl.c:2177
+#: fortran/decl.c:2205
#, gcc-internal-format, gfc-internal-format
msgid "Initialization of variable at %C is not allowed in a PURE procedure"
msgstr ""
-#: fortran/decl.c:2194
+#: fortran/decl.c:2222
#, gcc-internal-format, gfc-internal-format
msgid "Initialization of allocatable component at %C is not allowed"
msgstr ""
-#: fortran/decl.c:2248 fortran/decl.c:2284
+#: fortran/decl.c:2276 fortran/decl.c:2312
#, gcc-internal-format, gfc-internal-format
msgid "Old-style type declaration %s*%d not supported at %C"
msgstr ""
-#: fortran/decl.c:2290
+#: fortran/decl.c:2318
#, gcc-internal-format, gfc-internal-format
msgid "Nonstandard type declaration %s*%d at %C"
msgstr ""
-#: fortran/decl.c:2341 fortran/decl.c:2417
+#: fortran/decl.c:2369 fortran/decl.c:2445
#, gcc-internal-format, gfc-internal-format
msgid "Missing right parenthesis at %C"
msgstr ""
-#: fortran/decl.c:2354 fortran/decl.c:2488
+#: fortran/decl.c:2382 fortran/decl.c:2516
#, gcc-internal-format, gfc-internal-format
msgid "Expected initialization expression at %C"
msgstr ""
-#: fortran/decl.c:2362 fortran/decl.c:2494
+#: fortran/decl.c:2390 fortran/decl.c:2522
#, gcc-internal-format, gfc-internal-format
msgid "Expected scalar initialization expression at %C"
msgstr ""
-#: fortran/decl.c:2393
+#: fortran/decl.c:2421
#, gcc-internal-format, gfc-internal-format
msgid "Kind %d not supported for type %s at %C"
msgstr ""
-#: fortran/decl.c:2406
+#: fortran/decl.c:2434
#, gcc-internal-format, gfc-internal-format
msgid "C kind type parameter is for type %s but type at %L is %s"
msgstr ""
-#: fortran/decl.c:2415
+#: fortran/decl.c:2443
#, gcc-internal-format, gfc-internal-format
msgid "Missing right parenthesis or comma at %C"
msgstr ""
-#: fortran/decl.c:2514
+#: fortran/decl.c:2542
#, gcc-internal-format, gfc-internal-format
msgid "Kind %d is not supported for CHARACTER at %C"
msgstr ""
-#: fortran/decl.c:2646
+#: fortran/decl.c:2674
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in CHARACTER declaration at %C"
msgstr ""
-#: fortran/decl.c:2731
+#: fortran/decl.c:2759
#, gcc-internal-format, gfc-internal-format
msgid "BYTE type at %C"
msgstr ""
-#: fortran/decl.c:2736
+#: fortran/decl.c:2764
#, gcc-internal-format, gfc-internal-format
msgid "BYTE type used at %C is not available on the target machine"
msgstr ""
-#: fortran/decl.c:2758
+#: fortran/decl.c:2786
#, gcc-internal-format, gfc-internal-format
msgid "Assumed type at %C is not allowed for components"
msgstr ""
-#: fortran/decl.c:2761
+#: fortran/decl.c:2789
#, gcc-internal-format, gfc-internal-format
msgid "Assumed type at %C"
msgstr ""
-#: fortran/decl.c:2784 fortran/decl.c:2815 fortran/decl.c:2844
-#: fortran/decl.c:3023
+#: fortran/decl.c:2812 fortran/decl.c:2843 fortran/decl.c:2872
+#: fortran/decl.c:3051
#, gcc-internal-format, gfc-internal-format
msgid "TYPE with intrinsic-type-spec at %C"
msgstr ""
-#: fortran/decl.c:2840
+#: fortran/decl.c:2868
#, gcc-internal-format, gfc-internal-format
msgid "DOUBLE COMPLEX at %C"
msgstr ""
-#: fortran/decl.c:2914
+#: fortran/decl.c:2942
#, gcc-internal-format, gfc-internal-format
msgid "CLASS statement at %C"
msgstr ""
-#: fortran/decl.c:2949 fortran/decl.c:2962 fortran/decl.c:3418
-#: fortran/decl.c:3426
+#: fortran/decl.c:2977 fortran/decl.c:2990 fortran/decl.c:3446
+#: fortran/decl.c:3454
#, gcc-internal-format
msgid "Type name %qs at %C is ambiguous"
msgstr ""
-#: fortran/decl.c:2977
+#: fortran/decl.c:3005
#, gcc-internal-format
msgid ""
"Type name %qs at %C conflicts with previously declared entity at %L, which "
"has the same name"
msgstr ""
-#: fortran/decl.c:3094
+#: fortran/decl.c:3122
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate IMPLICIT NONE statement at %C"
msgstr ""
-#: fortran/decl.c:3103
+#: fortran/decl.c:3131
#, gcc-internal-format, gfc-internal-format
msgid "IMPORT NONE with spec list at %C"
msgstr ""
-#: fortran/decl.c:3162
+#: fortran/decl.c:3190
#, gcc-internal-format, gfc-internal-format
msgid "Missing character range in IMPLICIT at %C"
msgstr ""
-#: fortran/decl.c:3208
+#: fortran/decl.c:3236
#, gcc-internal-format, gfc-internal-format
msgid "Letters must be in alphabetic order in IMPLICIT statement at %C"
msgstr ""
-#: fortran/decl.c:3261
+#: fortran/decl.c:3289
#, gcc-internal-format, gfc-internal-format
msgid "IMPLICIT statement at %C following an IMPLICIT NONE (type) statement"
msgstr ""
-#: fortran/decl.c:3271
+#: fortran/decl.c:3299
#, gcc-internal-format, gfc-internal-format
msgid "Empty IMPLICIT statement at %C"
msgstr ""
-#: fortran/decl.c:3377
+#: fortran/decl.c:3405
#, gcc-internal-format, gfc-internal-format
msgid "IMPORT statement at %C only permitted in an INTERFACE body"
msgstr ""
-#: fortran/decl.c:3384
+#: fortran/decl.c:3412
#, gcc-internal-format, gfc-internal-format
msgid ""
"F2008: C1210 IMPORT statement at %C is not permitted in a module procedure "
"interface body"
msgstr ""
-#: fortran/decl.c:3389
+#: fortran/decl.c:3417
#, gcc-internal-format, gfc-internal-format
msgid "IMPORT statement at %C"
msgstr ""
-#: fortran/decl.c:3403
+#: fortran/decl.c:3431
#, gcc-internal-format, gfc-internal-format
msgid "Expecting list of named entities at %C"
msgstr ""
-#: fortran/decl.c:3432
+#: fortran/decl.c:3460
#, gcc-internal-format
msgid "Cannot IMPORT %qs from host scoping unit at %C - does not exist."
msgstr ""
-#: fortran/decl.c:3439
+#: fortran/decl.c:3467
#, gcc-internal-format
msgid "%qs is already IMPORTed from host scoping unit at %C"
msgstr ""
-#: fortran/decl.c:3482
+#: fortran/decl.c:3510
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in IMPORT statement at %C"
msgstr ""
-#: fortran/decl.c:3781
+#: fortran/decl.c:3809
#, gcc-internal-format, gfc-internal-format
msgid "Missing codimension specification at %C"
msgstr ""
-#: fortran/decl.c:3783
+#: fortran/decl.c:3811
#, gcc-internal-format, gfc-internal-format
msgid "Missing dimension specification at %C"
msgstr ""
-#: fortran/decl.c:3866
+#: fortran/decl.c:3894
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate %s attribute at %L"
msgstr ""
-#: fortran/decl.c:3885
+#: fortran/decl.c:3913
#, gcc-internal-format, gfc-internal-format
msgid "ALLOCATABLE attribute at %C in a TYPE definition"
msgstr ""
-#: fortran/decl.c:3894
+#: fortran/decl.c:3922
#, gcc-internal-format, gfc-internal-format
msgid "Attribute at %L is not allowed in a TYPE definition"
msgstr ""
-#: fortran/decl.c:3912
+#: fortran/decl.c:3940
#, gcc-internal-format, gfc-internal-format
msgid "Attribute %s at %L in a TYPE definition"
msgstr ""
-#: fortran/decl.c:3922
+#: fortran/decl.c:3950
#, gcc-internal-format, gfc-internal-format
msgid ""
"%s attribute at %L is not allowed outside of the specification part of a "
"module"
msgstr ""
-#: fortran/decl.c:3936
+#: fortran/decl.c:3964
#, gcc-internal-format, gfc-internal-format
msgid "ASYNCHRONOUS attribute at %C"
msgstr ""
-#: fortran/decl.c:3947
+#: fortran/decl.c:3975
#, gcc-internal-format, gfc-internal-format
msgid "CONTIGUOUS attribute at %C"
msgstr ""
-#: fortran/decl.c:3994 fortran/decl.c:7207
+#: fortran/decl.c:4022 fortran/decl.c:7246
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED at %C only allowed in specification part of a module"
msgstr ""
-#: fortran/decl.c:4000
+#: fortran/decl.c:4028
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute at %C"
msgstr ""
-#: fortran/decl.c:4029
+#: fortran/decl.c:4057
#, gcc-internal-format, gfc-internal-format
msgid "VALUE attribute at %C"
msgstr ""
-#: fortran/decl.c:4036
+#: fortran/decl.c:4064
#, gcc-internal-format, gfc-internal-format
msgid "VOLATILE attribute at %C"
msgstr ""
-#: fortran/decl.c:4043
+#: fortran/decl.c:4071
#, gcc-internal-format
msgid "match_attr_spec(): Bad attribute"
msgstr ""
-#: fortran/decl.c:4083
+#: fortran/decl.c:4111
#, gcc-internal-format, gfc-internal-format
msgid "Multiple identifiers provided with single NAME= specifier at %C"
msgstr ""
-#: fortran/decl.c:4181
+#: fortran/decl.c:4209
#, gcc-internal-format
msgid ""
"Implicitly declared BIND(C) function %qs at %L may not be C interoperable"
msgstr ""
-#: fortran/decl.c:4203
+#: fortran/decl.c:4231
#, gcc-internal-format
msgid ""
"Variable %qs in common block %qs at %L may not be a C interoperable kind "
"though common block %qs is BIND(C)"
msgstr ""
-#: fortran/decl.c:4212
+#: fortran/decl.c:4240
#, gcc-internal-format
msgid "Type declaration %qs at %L is not C interoperable but it is BIND(C)"
msgstr ""
-#: fortran/decl.c:4216
+#: fortran/decl.c:4244
#, gcc-internal-format
msgid "Variable %qs at %L may not be a C interoperable kind but it is BIND(C)"
msgstr ""
-#: fortran/decl.c:4228
+#: fortran/decl.c:4256
#, gcc-internal-format
msgid ""
"Variable %qs in common block %qs at %L cannot be declared with BIND(C) since "
"it is not a global"
msgstr ""
-#: fortran/decl.c:4242
+#: fortran/decl.c:4270
#, gcc-internal-format
msgid "Variable %qs at %L cannot have both the POINTER and BIND(C) attributes"
msgstr ""
-#: fortran/decl.c:4250
+#: fortran/decl.c:4278
#, gcc-internal-format
msgid ""
"Variable %qs at %L cannot have both the ALLOCATABLE and BIND(C) attributes"
msgstr ""
-#: fortran/decl.c:4262
+#: fortran/decl.c:4290
#, gcc-internal-format
msgid "Return type of BIND(C) function %qs at %L cannot be an array"
msgstr ""
-#: fortran/decl.c:4270
+#: fortran/decl.c:4298
#, gcc-internal-format
msgid "Return type of BIND(C) function %qs 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:4281
+#: fortran/decl.c:4309
#, gcc-internal-format
msgid ""
"Symbol %qs at %L is marked PRIVATE but has been given the binding label %qs"
msgstr ""
-#: fortran/decl.c:4355
+#: fortran/decl.c:4383
#, gcc-internal-format, gfc-internal-format
msgid ""
"Need either entity or common block name for attribute specification "
"statement at %C"
msgstr ""
-#: fortran/decl.c:4400
+#: fortran/decl.c:4428
#, gcc-internal-format, gfc-internal-format
msgid ""
"Missing entity or common block name for attribute specification statement at "
"%C"
msgstr ""
-#: fortran/decl.c:4407
+#: fortran/decl.c:4435
#, gcc-internal-format
msgid "Missing symbol"
msgstr ""
-#: fortran/decl.c:4436
+#: fortran/decl.c:4464
#, gcc-internal-format, gfc-internal-format
msgid "BIND(C) statement at %C"
msgstr ""
-#: fortran/decl.c:4514
+#: fortran/decl.c:4542
#, gcc-internal-format, gfc-internal-format
msgid ""
"Derived type at %C has not been previously defined and so cannot appear in a "
"derived type definition"
msgstr ""
-#: fortran/decl.c:4546
+#: fortran/decl.c:4574
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in data declaration at %C"
msgstr ""
-#: fortran/decl.c:4619
+#: fortran/decl.c:4615
#, gcc-internal-format, gfc-internal-format
-msgid "IMPURE procedure at %C"
+msgid "MODULE prefix at %C"
msgstr ""
-#: fortran/decl.c:4631
+#: fortran/decl.c:4660
#, gcc-internal-format, gfc-internal-format
-msgid "PURE and IMPURE must not appear both at %C"
+msgid "IMPURE procedure at %C"
msgstr ""
-#: fortran/decl.c:4654
+#: fortran/decl.c:4672
#, gcc-internal-format, gfc-internal-format
-msgid "MODULE prefix at %C"
+msgid "PURE and IMPURE must not appear both at %C"
msgstr ""
-#: fortran/decl.c:4730 fortran/primary.c:1773
+#: fortran/decl.c:4756 fortran/primary.c:1779
#, gcc-internal-format, gfc-internal-format
msgid "Alternate-return argument at %C"
msgstr ""
-#: fortran/decl.c:4776
+#: fortran/decl.c:4802
#, gcc-internal-format
msgid "Name %qs at %C is the name of the procedure"
msgstr ""
-#: fortran/decl.c:4788
+#: fortran/decl.c:4814
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk in formal argument list at %C"
msgstr ""
-#: fortran/decl.c:4805
+#: fortran/decl.c:4831
#, gcc-internal-format
msgid "Duplicate symbol %qs in formal argument list at %C"
msgstr ""
-#: fortran/decl.c:4844
+#: fortran/decl.c:4870
#, gcc-internal-format, gfc-internal-format
msgid "Mismatch in MODULE PROCEDURE formal argument names (%s/%s) at %C"
msgstr ""
-#: fortran/decl.c:4850
+#: fortran/decl.c:4876
#, gcc-internal-format, gfc-internal-format
msgid "Mismatch in number of MODULE PROCEDURE formal arguments at %C"
msgstr ""
-#: fortran/decl.c:4889
+#: fortran/decl.c:4915
#, gcc-internal-format, gfc-internal-format
msgid "RESULT variable at %C must be different than function name"
msgstr ""
-#: fortran/decl.c:4966
+#: fortran/decl.c:4992
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after function declaration at %C"
msgstr ""
-#: fortran/decl.c:4976 fortran/decl.c:6061
+#: fortran/decl.c:5002 fortran/decl.c:6095
#, gcc-internal-format, gfc-internal-format
msgid "BIND(C) attribute at %L may not be specified for an internal procedure"
msgstr ""
-#: fortran/decl.c:5178
+#: fortran/decl.c:5204
#, gcc-internal-format, gfc-internal-format
msgid "BIND(C) attribute at %C requires an interface with BIND(C)"
msgstr ""
-#: fortran/decl.c:5185
+#: fortran/decl.c:5211
#, gcc-internal-format, gfc-internal-format
msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C"
msgstr ""
-#: fortran/decl.c:5191
+#: fortran/decl.c:5217
#, gcc-internal-format, gfc-internal-format
msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME"
msgstr ""
-#: fortran/decl.c:5214
+#: fortran/decl.c:5240
#, gcc-internal-format
msgid "Procedure %qs at %L already has basic type of %s"
msgstr ""
-#: fortran/decl.c:5260 fortran/decl.c:5448 fortran/decl.c:8766
+#: fortran/decl.c:5286 fortran/decl.c:5474 fortran/decl.c:8806
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:5309 fortran/decl.c:8668
+#: fortran/decl.c:5335 fortran/decl.c:8708
#, gcc-internal-format
msgid "Expected %<::%> after binding-attributes at %C"
msgstr ""
-#: fortran/decl.c:5316
+#: fortran/decl.c:5342
#, gcc-internal-format, gfc-internal-format
msgid "NOPASS or explicit interface required at %C"
msgstr ""
-#: fortran/decl.c:5320
+#: fortran/decl.c:5346
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component at %C"
msgstr ""
-#: fortran/decl.c:5392
+#: fortran/decl.c:5418
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in procedure pointer component at %C"
msgstr ""
-#: fortran/decl.c:5410
+#: fortran/decl.c:5436
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE at %C must be in a generic interface"
msgstr ""
-#: fortran/decl.c:5419 fortran/decl.c:7797
+#: fortran/decl.c:5445 fortran/decl.c:7837
#, gcc-internal-format, gfc-internal-format
msgid "double colon in MODULE PROCEDURE statement at %L"
msgstr ""
-#: fortran/decl.c:5489
+#: fortran/decl.c:5515
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:5561
+#: fortran/decl.c:5587
#, gcc-internal-format, gfc-internal-format
msgid "Expected formal argument list in function definition at %C"
msgstr ""
-#: fortran/decl.c:5585 fortran/decl.c:5589 fortran/decl.c:5833
-#: fortran/decl.c:5837 fortran/decl.c:6029 fortran/decl.c:6033
+#: fortran/decl.c:5611 fortran/decl.c:5615 fortran/decl.c:5867
+#: fortran/decl.c:5871 fortran/decl.c:6063 fortran/decl.c:6067
#: fortran/symbol.c:1712
#, gcc-internal-format, gfc-internal-format
msgid "BIND(C) attribute at %L can only be used for variables or common blocks"
msgstr ""
-#: fortran/decl.c:5735
+#: fortran/decl.c:5769
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C"
msgstr ""
-#: fortran/decl.c:5744
+#: fortran/decl.c:5778
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a PROGRAM"
msgstr ""
-#: fortran/decl.c:5747
+#: fortran/decl.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a MODULE"
msgstr ""
-#: fortran/decl.c:5750
+#: fortran/decl.c:5784
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a SUBMODULE"
msgstr ""
-#: fortran/decl.c:5753
+#: fortran/decl.c:5787
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a BLOCK DATA"
msgstr ""
-#: fortran/decl.c:5757 fortran/decl.c:5798
+#: fortran/decl.c:5791 fortran/decl.c:5832
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within an INTERFACE"
msgstr ""
-#: fortran/decl.c:5761
+#: fortran/decl.c:5795
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block"
msgstr ""
-#: fortran/decl.c:5765
+#: fortran/decl.c:5799
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within an IF-THEN block"
msgstr ""
-#: fortran/decl.c:5770
+#: fortran/decl.c:5804
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a DO block"
msgstr ""
-#: fortran/decl.c:5774
+#: fortran/decl.c:5808
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a SELECT block"
msgstr ""
-#: fortran/decl.c:5778
+#: fortran/decl.c:5812
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a FORALL block"
msgstr ""
-#: fortran/decl.c:5782
+#: fortran/decl.c:5816
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a WHERE block"
msgstr ""
-#: fortran/decl.c:5786
+#: fortran/decl.c:5820
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a contained subprogram"
msgstr ""
-#: fortran/decl.c:5790
+#: fortran/decl.c:5824
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected ENTRY statement at %C"
msgstr ""
-#: fortran/decl.c:5811
+#: fortran/decl.c:5845
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear in a contained procedure"
msgstr ""
-#: fortran/decl.c:5862 fortran/decl.c:6068
+#: fortran/decl.c:5896 fortran/decl.c:6102
#, gcc-internal-format, gfc-internal-format
msgid "Missing required parentheses before BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:6125 fortran/decl.c:6132
+#: fortran/decl.c:6164 fortran/decl.c:6171
#, gcc-internal-format, gfc-internal-format
msgid "Invalid C identifier in NAME= specifier at %C"
msgstr ""
-#: fortran/decl.c:6172
+#: fortran/decl.c:6211
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in NAME= specifier for binding label at %C"
msgstr ""
-#: fortran/decl.c:6188
+#: fortran/decl.c:6227
#, gcc-internal-format, gfc-internal-format
msgid "NAME= specifier at %C should be a constant expression"
msgstr ""
-#: fortran/decl.c:6196
+#: fortran/decl.c:6235
#, gcc-internal-format, gfc-internal-format
msgid "NAME= specifier at %C should be a scalar of default character kind"
msgstr ""
-#: fortran/decl.c:6215
+#: fortran/decl.c:6254
#, gcc-internal-format, gfc-internal-format
msgid "Missing closing paren for binding label at %C"
msgstr ""
-#: fortran/decl.c:6221
+#: fortran/decl.c:6260
#, gcc-internal-format, gfc-internal-format
msgid "No binding name is allowed in BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:6227
+#: fortran/decl.c:6266
#, gcc-internal-format, gfc-internal-format
msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:6256
+#: fortran/decl.c:6295
#, gcc-internal-format, gfc-internal-format
msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C"
msgstr ""
-#: fortran/decl.c:6481
+#: fortran/decl.c:6520
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected END statement at %C"
msgstr ""
-#: fortran/decl.c:6490
+#: fortran/decl.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "END statement instead of %s statement at %L"
msgstr ""
#. We would have required END [something].
-#: fortran/decl.c:6499
+#: fortran/decl.c:6538
#, gcc-internal-format, gfc-internal-format
msgid "%s statement expected at %L"
msgstr ""
-#: fortran/decl.c:6510
+#: fortran/decl.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "Expecting %s statement at %L"
msgstr ""
-#: fortran/decl.c:6530
+#: fortran/decl.c:6569
#, gcc-internal-format
msgid "Expected block name of %qs in %s statement at %L"
msgstr ""
-#: fortran/decl.c:6547
+#: fortran/decl.c:6586
#, gcc-internal-format, gfc-internal-format
msgid "Expected terminating name at %C"
msgstr ""
-#: fortran/decl.c:6561 fortran/decl.c:6569
+#: fortran/decl.c:6600 fortran/decl.c:6608
#, gcc-internal-format
msgid "Expected label %qs for %s statement at %C"
msgstr ""
-#: fortran/decl.c:6668
+#: fortran/decl.c:6707
#, gcc-internal-format, gfc-internal-format
msgid "Missing array specification at %L in DIMENSION statement"
msgstr ""
-#: fortran/decl.c:6676
+#: fortran/decl.c:6715
#, gcc-internal-format, gfc-internal-format
msgid "Dimensions specified for %s at %L after its initialisation"
msgstr ""
-#: fortran/decl.c:6684
+#: fortran/decl.c:6723
#, gcc-internal-format, gfc-internal-format
msgid "Missing array specification at %L in CODIMENSION statement"
msgstr ""
-#: fortran/decl.c:6693
+#: fortran/decl.c:6732
#, gcc-internal-format, gfc-internal-format
msgid "Array specification must be deferred at %L"
msgstr ""
-#: fortran/decl.c:6791
+#: fortran/decl.c:6830
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected character in variable list at %C"
msgstr ""
-#: fortran/decl.c:6828
+#: fortran/decl.c:6867
#, gcc-internal-format
msgid "Expected %<(%> at %C"
msgstr ""
-#: fortran/decl.c:6842 fortran/decl.c:6882
+#: fortran/decl.c:6881 fortran/decl.c:6921
#, gcc-internal-format, gfc-internal-format
msgid "Expected variable name at %C"
msgstr ""
-#: fortran/decl.c:6858
+#: fortran/decl.c:6897
#, gcc-internal-format, gfc-internal-format
msgid "Cray pointer at %C must be an integer"
msgstr ""
-#: fortran/decl.c:6862
+#: fortran/decl.c:6901
#, gcc-internal-format, gfc-internal-format
msgid ""
"Cray pointer at %C has %d bytes of precision; memory addresses require %d "
"bytes"
msgstr ""
-#: fortran/decl.c:6868
+#: fortran/decl.c:6907
#, gcc-internal-format, gfc-internal-format
msgid "Expected \",\" at %C"
msgstr ""
-#: fortran/decl.c:6907
+#: fortran/decl.c:6946
#, gcc-internal-format
msgid "Couldn't set Cray pointee array spec."
msgstr ""
-#: fortran/decl.c:6931
+#: fortran/decl.c:6970
#, gcc-internal-format, gfc-internal-format
msgid "Expected \")\" at %C"
msgstr ""
-#: fortran/decl.c:6943
+#: fortran/decl.c:6982
#, gcc-internal-format
msgid "Expected %<,%> or end of statement at %C"
msgstr ""
-#: fortran/decl.c:6969
+#: fortran/decl.c:7008
#, gcc-internal-format, gfc-internal-format
msgid "INTENT is not allowed inside of BLOCK at %C"
msgstr ""
-#: fortran/decl.c:7001
+#: fortran/decl.c:7040
#, gcc-internal-format, gfc-internal-format
msgid "OPTIONAL is not allowed inside of BLOCK at %C"
msgstr ""
-#: fortran/decl.c:7020
+#: fortran/decl.c:7059
#, gcc-internal-format, gfc-internal-format
msgid "Cray pointer declaration at %C requires -fcray-pointer flag"
msgstr ""
-#: fortran/decl.c:7059
+#: fortran/decl.c:7098
#, gcc-internal-format, gfc-internal-format
msgid "CONTIGUOUS statement at %C"
msgstr ""
-#: fortran/decl.c:7157
+#: fortran/decl.c:7196
#, gcc-internal-format, gfc-internal-format
msgid ""
"Access specification of the %s operator at %C has already been specified"
msgstr ""
-#: fortran/decl.c:7174
+#: fortran/decl.c:7213
#, gcc-internal-format, gfc-internal-format
msgid ""
"Access specification of the .%s. operator at %C has already been specified"
msgstr ""
-#: fortran/decl.c:7213
+#: fortran/decl.c:7252
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED statement at %C"
msgstr ""
-#: fortran/decl.c:7251
+#: fortran/decl.c:7290
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in PROTECTED statement at %C"
msgstr ""
-#: fortran/decl.c:7275
+#: fortran/decl.c:7314
#, gcc-internal-format, gfc-internal-format
msgid ""
"PRIVATE statement at %C is only allowed in the specification part of a module"
msgstr ""
-#: fortran/decl.c:7312
+#: fortran/decl.c:7351
#, gcc-internal-format, gfc-internal-format
msgid ""
"PUBLIC statement at %C is only allowed in the specification part of a module"
msgstr ""
-#: fortran/decl.c:7340
+#: fortran/decl.c:7379
#, gcc-internal-format, gfc-internal-format
msgid "Expected variable name at %C in PARAMETER statement"
msgstr ""
-#: fortran/decl.c:7347
+#: fortran/decl.c:7386
#, gcc-internal-format, gfc-internal-format
msgid "Expected = sign in PARAMETER statement at %C"
msgstr ""
-#: fortran/decl.c:7353
+#: fortran/decl.c:7392
#, gcc-internal-format, gfc-internal-format
msgid "Expected expression at %C in PARAMETER statement"
msgstr ""
-#: fortran/decl.c:7373
+#: fortran/decl.c:7412
#, gcc-internal-format, gfc-internal-format
msgid "Initializing already initialized variable at %C"
msgstr ""
-#: fortran/decl.c:7408
+#: fortran/decl.c:7447
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected characters in PARAMETER statement at %C"
msgstr ""
-#: fortran/decl.c:7432
+#: fortran/decl.c:7471
#, gcc-internal-format, gfc-internal-format
msgid "Blanket SAVE statement at %C follows previous SAVE statement"
msgstr ""
-#: fortran/decl.c:7443
+#: fortran/decl.c:7482
#, gcc-internal-format, gfc-internal-format
msgid "SAVE statement at %C follows blanket SAVE statement"
msgstr ""
-#: fortran/decl.c:7489
+#: fortran/decl.c:7528
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in SAVE statement at %C"
msgstr ""
-#: fortran/decl.c:7503
+#: fortran/decl.c:7542
#, gcc-internal-format, gfc-internal-format
msgid "VALUE is not allowed inside of BLOCK at %C"
msgstr ""
-#: fortran/decl.c:7507
+#: fortran/decl.c:7546
#, gcc-internal-format, gfc-internal-format
msgid "VALUE statement at %C"
msgstr ""
-#: fortran/decl.c:7545
+#: fortran/decl.c:7584
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in VALUE statement at %C"
msgstr ""
-#: fortran/decl.c:7556
+#: fortran/decl.c:7595
#, gcc-internal-format, gfc-internal-format
msgid "VOLATILE statement at %C"
msgstr ""
-#: fortran/decl.c:7579
+#: fortran/decl.c:7618
#, gcc-internal-format
msgid ""
"Specifying VOLATILE for coarray variable %qs at %C, which is use-/host-"
"associated"
msgstr ""
-#: fortran/decl.c:7604
+#: fortran/decl.c:7643
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in VOLATILE statement at %C"
msgstr ""
-#: fortran/decl.c:7615
+#: fortran/decl.c:7654
#, gcc-internal-format, gfc-internal-format
msgid "ASYNCHRONOUS statement at %C"
msgstr ""
-#: fortran/decl.c:7655
+#: fortran/decl.c:7694
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in ASYNCHRONOUS statement at %C"
msgstr ""
-#: fortran/decl.c:7679
+#: fortran/decl.c:7719
#, gcc-internal-format, gfc-internal-format
msgid "MODULE PROCEDURE declaration at %C"
msgstr ""
-#: fortran/decl.c:7772
+#: fortran/decl.c:7812
#, gcc-internal-format, gfc-internal-format
msgid "MODULE PROCEDURE at %C must be in a generic module interface"
msgstr ""
-#: fortran/decl.c:7830
+#: fortran/decl.c:7870
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE"
msgstr ""
-#: fortran/decl.c:7879
+#: fortran/decl.c:7919
#, gcc-internal-format, gfc-internal-format
msgid "Ambiguous symbol in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:7888
+#: fortran/decl.c:7928
#, gcc-internal-format
msgid "Symbol %qs at %C has not been previously defined"
msgstr ""
-#: fortran/decl.c:7894
+#: fortran/decl.c:7934
#, gcc-internal-format
msgid "%qs in EXTENDS expression at %C is not a derived type"
msgstr ""
-#: fortran/decl.c:7901
+#: fortran/decl.c:7941
#, gcc-internal-format
msgid "%qs cannot be extended at %C because it is BIND(C)"
msgstr ""
-#: fortran/decl.c:7908
+#: fortran/decl.c:7948
#, gcc-internal-format
msgid "%qs cannot be extended at %C because it is a SEQUENCE type"
msgstr ""
-#: fortran/decl.c:7931
+#: fortran/decl.c:7971
#, gcc-internal-format, gfc-internal-format
msgid ""
"Derived type at %C can only be PRIVATE in the specification part of a module"
msgstr ""
-#: fortran/decl.c:7943
+#: fortran/decl.c:7983
#, gcc-internal-format, gfc-internal-format
msgid ""
"Derived type at %C can only be PUBLIC in the specification part of a module"
msgstr ""
-#: fortran/decl.c:7964
+#: fortran/decl.c:8004
#, gcc-internal-format, gfc-internal-format
msgid "ABSTRACT type at %C"
msgstr ""
-#: fortran/decl.c:8028
+#: fortran/decl.c:8068
#, gcc-internal-format, gfc-internal-format
msgid "Expected :: in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:8039
+#: fortran/decl.c:8079
#, gcc-internal-format
msgid "Type name %qs at %C cannot be the same as an intrinsic type"
msgstr ""
-#: fortran/decl.c:8049
+#: fortran/decl.c:8089
#, gcc-internal-format
msgid "Derived type name %qs at %C already has a basic type of %s"
msgstr ""
-#: fortran/decl.c:8066
+#: fortran/decl.c:8106
#, gcc-internal-format
msgid "Derived type definition of %qs at %C has already been defined"
msgstr ""
-#: fortran/decl.c:8171
+#: fortran/decl.c:8211
#, gcc-internal-format, gfc-internal-format
msgid "Cray Pointee at %C cannot be assumed shape array"
msgstr ""
-#: fortran/decl.c:8191
+#: fortran/decl.c:8231
#, gcc-internal-format, gfc-internal-format
msgid "ENUM and ENUMERATOR at %C"
msgstr ""
-#: fortran/decl.c:8223
+#: fortran/decl.c:8263
#, gcc-internal-format, gfc-internal-format
msgid "Enumerator exceeds the C integer type at %C"
msgstr ""
-#: fortran/decl.c:8302
+#: fortran/decl.c:8342
#, gcc-internal-format, gfc-internal-format
msgid "ENUMERATOR %L not initialized with integer expression"
msgstr ""
-#: fortran/decl.c:8350
+#: fortran/decl.c:8390
#, gcc-internal-format, gfc-internal-format
msgid "ENUM definition statement expected before %C"
msgstr ""
-#: fortran/decl.c:8386
+#: fortran/decl.c:8426
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in ENUMERATOR definition at %C"
msgstr ""
-#: fortran/decl.c:8433 fortran/decl.c:8448
+#: fortran/decl.c:8473 fortran/decl.c:8488
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate access-specifier at %C"
msgstr ""
-#: fortran/decl.c:8468
+#: fortran/decl.c:8508
#, gcc-internal-format, gfc-internal-format
msgid "Binding attributes already specify passing, illegal NOPASS at %C"
msgstr ""
-#: fortran/decl.c:8488
+#: fortran/decl.c:8528
#, gcc-internal-format, gfc-internal-format
msgid "Binding attributes already specify passing, illegal PASS at %C"
msgstr ""
-#: fortran/decl.c:8515
+#: fortran/decl.c:8555
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate POINTER attribute at %C"
msgstr ""
-#: fortran/decl.c:8533
+#: fortran/decl.c:8573
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate NON_OVERRIDABLE at %C"
msgstr ""
-#: fortran/decl.c:8549
+#: fortran/decl.c:8589
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate DEFERRED at %C"
msgstr ""
-#: fortran/decl.c:8562
+#: fortran/decl.c:8602
#, gcc-internal-format, gfc-internal-format
msgid "Expected access-specifier at %C"
msgstr ""
-#: fortran/decl.c:8564
+#: fortran/decl.c:8604
#, gcc-internal-format, gfc-internal-format
msgid "Expected binding attribute at %C"
msgstr ""
-#: fortran/decl.c:8572
+#: fortran/decl.c:8612
#, gcc-internal-format, gfc-internal-format
msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C"
msgstr ""
-#: fortran/decl.c:8584
+#: fortran/decl.c:8624
#, gcc-internal-format, gfc-internal-format
msgid "POINTER attribute is required for procedure pointer component at %C"
msgstr ""
-#: fortran/decl.c:8626
+#: fortran/decl.c:8666
#, gcc-internal-format
msgid "Interface-name expected after %<(%> at %C"
msgstr ""
-#: fortran/decl.c:8632
+#: fortran/decl.c:8672
#, gcc-internal-format
msgid "%<)%> expected at %C"
msgstr ""
-#: fortran/decl.c:8652
+#: fortran/decl.c:8692
#, gcc-internal-format, gfc-internal-format
msgid "Interface must be specified for DEFERRED binding at %C"
msgstr ""
-#: fortran/decl.c:8657
+#: fortran/decl.c:8697
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE(interface) at %C should be declared DEFERRED"
msgstr ""
-#: fortran/decl.c:8680
+#: fortran/decl.c:8720
#, gcc-internal-format, gfc-internal-format
msgid "Expected binding name at %C"
msgstr ""
-#: fortran/decl.c:8684
+#: fortran/decl.c:8724
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE list at %C"
msgstr ""
-#: fortran/decl.c:8696
+#: fortran/decl.c:8736
#, gcc-internal-format
msgid "%<=> target%> is invalid for DEFERRED binding at %C"
msgstr ""
-#: fortran/decl.c:8702
+#: fortran/decl.c:8742
#, gcc-internal-format
msgid "%<::%> needed in PROCEDURE binding with explicit target at %C"
msgstr ""
-#: fortran/decl.c:8712
+#: fortran/decl.c:8752
#, gcc-internal-format
msgid "Expected binding target after %<=>%> at %C"
msgstr ""
-#: fortran/decl.c:8729
+#: fortran/decl.c:8769
#, gcc-internal-format
msgid "Type %qs containing DEFERRED binding at %C is not ABSTRACT"
msgstr ""
-#: fortran/decl.c:8740
+#: fortran/decl.c:8780
#, gcc-internal-format
msgid ""
"There is already a procedure with binding name %qs for the derived type %qs "
"at %C"
msgstr ""
-#: fortran/decl.c:8789
+#: fortran/decl.c:8829
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC at %C must be inside a derived-type CONTAINS"
msgstr ""
-#: fortran/decl.c:8809
+#: fortran/decl.c:8849
#, gcc-internal-format
msgid "Expected %<::%> at %C"
msgstr ""
-#: fortran/decl.c:8821
+#: fortran/decl.c:8861
#, gcc-internal-format, gfc-internal-format
msgid "Expected generic name or operator descriptor at %C"
msgstr ""
-#: fortran/decl.c:8841
+#: fortran/decl.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "Malformed GENERIC statement at %C"
msgstr ""
-#: fortran/decl.c:8852
+#: fortran/decl.c:8892
#, gcc-internal-format
msgid "Expected %<=>%> at %C"
msgstr ""
-#: fortran/decl.c:8894
+#: fortran/decl.c:8934
#, gcc-internal-format
msgid ""
"There's already a non-generic procedure with binding name %qs for the "
"derived type %qs at %C"
msgstr ""
-#: fortran/decl.c:8902
+#: fortran/decl.c:8942
#, gcc-internal-format
msgid "Binding at %C must have the same access as already defined binding %qs"
msgstr ""
-#: fortran/decl.c:8951
+#: fortran/decl.c:8991
#, gcc-internal-format, gfc-internal-format
msgid "Expected specific binding name at %C"
msgstr ""
-#: fortran/decl.c:8961
+#: fortran/decl.c:9001
#, gcc-internal-format
msgid "%qs already defined as specific binding for the generic %qs at %C"
msgstr ""
-#: fortran/decl.c:8979
+#: fortran/decl.c:9019
#, gcc-internal-format, gfc-internal-format
msgid "Junk after GENERIC binding at %C"
msgstr ""
-#: fortran/decl.c:9014
+#: fortran/decl.c:9054
#, gcc-internal-format, gfc-internal-format
msgid "FINAL declaration at %C must be inside a derived type CONTAINS section"
msgstr ""
-#: fortran/decl.c:9025
+#: fortran/decl.c:9065
#, gcc-internal-format, gfc-internal-format
msgid ""
"Derived type declaration with FINAL at %C must be in the specification part "
"of a MODULE"
msgstr ""
-#: fortran/decl.c:9047
+#: fortran/decl.c:9087
#, gcc-internal-format, gfc-internal-format
msgid "Empty FINAL at %C"
msgstr ""
-#: fortran/decl.c:9054
+#: fortran/decl.c:9094
#, gcc-internal-format, gfc-internal-format
msgid "Expected module procedure name at %C"
msgstr ""
-#: fortran/decl.c:9064
+#: fortran/decl.c:9104
#, gcc-internal-format
msgid "Expected %<,%> at %C"
msgstr ""
-#: fortran/decl.c:9070
+#: fortran/decl.c:9110
#, gcc-internal-format
msgid "Unknown procedure name %qs at %C"
msgstr ""
-#: fortran/decl.c:9083
+#: fortran/decl.c:9123
#, gcc-internal-format
msgid "%qs at %C is already defined as FINAL procedure!"
msgstr ""
-#: fortran/decl.c:9153
+#: fortran/decl.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C"
msgstr ""
-#: fortran/decl.c:9199
+#: fortran/decl.c:9239
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C"
msgstr ""
@@ -49991,7 +50139,7 @@ msgstr ""
msgid "show_expr(): Don't know how to show expr"
msgstr ""
-#: fortran/dump-parse-tree.c:2520
+#: fortran/dump-parse-tree.c:2532
#, gcc-internal-format
msgid "show_code_node(): Bad statement code"
msgstr ""
@@ -50269,32 +50417,32 @@ msgstr ""
msgid "BOZ literal at %L used to initialize non-integer variable %qs"
msgstr ""
-#: fortran/expr.c:3252 fortran/resolve.c:9531
+#: fortran/expr.c:3252 fortran/resolve.c:9542
#, gcc-internal-format, gfc-internal-format
msgid ""
"BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3263 fortran/resolve.c:9542
+#: fortran/expr.c:3263 fortran/resolve.c:9553
#, gcc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol %qs"
msgstr ""
-#: fortran/expr.c:3271 fortran/resolve.c:9551
+#: fortran/expr.c:3271 fortran/resolve.c:9562
#, gcc-internal-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:3275 fortran/resolve.c:9555
+#: fortran/expr.c:3275 fortran/resolve.c:9566
#, gcc-internal-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:3279 fortran/resolve.c:9559
+#: fortran/expr.c:3279 fortran/resolve.c:9570
#, gcc-internal-format
msgid ""
"Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled "
@@ -50616,62 +50764,62 @@ msgstr ""
msgid "can't open input file: %s"
msgstr ""
-#: fortran/frontend-passes.c:298
+#: fortran/frontend-passes.c:297
#, gcc-internal-format
msgid "Illegal id in copy_walk_reduction_arg"
msgstr ""
-#: fortran/frontend-passes.c:694 fortran/trans-array.c:1044
-#: fortran/trans-array.c:6156 fortran/trans-array.c:7507
+#: fortran/frontend-passes.c:693 fortran/trans-array.c:1044
+#: fortran/trans-array.c:6167 fortran/trans-array.c:7518
#: fortran/trans-intrinsic.c:6278
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr ""
-#: fortran/frontend-passes.c:718 fortran/frontend-passes.c:721
+#: fortran/frontend-passes.c:717 fortran/frontend-passes.c:720
#, gcc-internal-format
msgid "Removing call to function %qs at %L"
msgstr ""
-#: fortran/frontend-passes.c:1696
+#: fortran/frontend-passes.c:1695
#, gcc-internal-format
msgid "illegal OP in optimize_comparison"
msgstr ""
-#: fortran/frontend-passes.c:1888
+#: fortran/frontend-passes.c:1887
#, gcc-internal-format
msgid ""
"Variable %qs at %L set to undefined value inside loop beginning at %L as "
"INTENT(OUT) argument to subroutine %qs"
msgstr ""
-#: fortran/frontend-passes.c:1895
+#: fortran/frontend-passes.c:1894
#, gcc-internal-format
msgid ""
"Variable %qs at %L not definable inside loop beginning at %L as "
"INTENT(INOUT) argument to subroutine %qs"
msgstr ""
-#: fortran/frontend-passes.c:1960
+#: fortran/frontend-passes.c:1959
#, gcc-internal-format
msgid ""
"Variable %qs at %L set to undefined value inside loop beginning at %L as "
"INTENT(OUT) argument to function %qs"
msgstr ""
-#: fortran/frontend-passes.c:1966
+#: fortran/frontend-passes.c:1965
#, gcc-internal-format
msgid ""
"Variable %qs at %L not definable inside loop beginning at %L as "
"INTENT(INOUT) argument to function %qs"
msgstr ""
-#: fortran/frontend-passes.c:2214 fortran/trans-expr.c:1491
+#: fortran/frontend-passes.c:2213 fortran/trans-expr.c:1522
#, gcc-internal-format, gfc-internal-format
msgid "Code for reallocating the allocatable array at %L will be added"
msgstr ""
-#: fortran/frontend-passes.c:2693
+#: fortran/frontend-passes.c:2692
#, gcc-internal-format
msgid "Scalarization using DIMEN_RANGE unimplemented"
msgstr ""
@@ -50790,12 +50938,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:761 fortran/resolve.c:15347
+#: fortran/interface.c:761 fortran/resolve.c:15373
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:768 fortran/resolve.c:15365
+#: fortran/interface.c:768 fortran/resolve.c:15391
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -51855,268 +52003,268 @@ msgstr ""
msgid "UNIT specifier not allowed with NEWUNIT at %C"
msgstr ""
-#: fortran/io.c:1897
+#: fortran/io.c:1899
#, gcc-internal-format, gfc-internal-format
msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %C"
msgstr ""
-#: fortran/io.c:1904
+#: fortran/io.c:1907
#, gcc-internal-format, gfc-internal-format
msgid "OPEN statement at %C must have UNIT or NEWUNIT specified"
msgstr ""
-#: fortran/io.c:1942
+#: fortran/io.c:1945
#, gcc-internal-format, gfc-internal-format
msgid "ASYNCHRONOUS= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:1963 fortran/io.c:3458
+#: fortran/io.c:1966 fortran/io.c:3461
#, gcc-internal-format, gfc-internal-format
msgid "BLANK= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:1984 fortran/io.c:3434
+#: fortran/io.c:1987 fortran/io.c:3437
#, gcc-internal-format, gfc-internal-format
msgid "DECIMAL= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:2022
+#: fortran/io.c:2025
#, gcc-internal-format, gfc-internal-format
msgid "ENCODING= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:2085 fortran/io.c:3507
+#: fortran/io.c:2088 fortran/io.c:3510
#, gcc-internal-format, gfc-internal-format
msgid "ROUND= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:2108
+#: fortran/io.c:2111
#, gcc-internal-format, gfc-internal-format
msgid "SIGN= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:2329
+#: fortran/io.c:2332
#, gcc-internal-format, gfc-internal-format
msgid "CLOSE statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:2391
+#: fortran/io.c:2394
#, gcc-internal-format, gfc-internal-format
msgid "CLOSE statement at %L requires a UNIT number"
msgstr ""
-#: fortran/io.c:2399
+#: fortran/io.c:2402
#, gcc-internal-format, gfc-internal-format
msgid "UNIT number in CLOSE statement at %L must be non-negative"
msgstr ""
-#: fortran/io.c:2497 fortran/match.c:2633
+#: fortran/io.c:2500 fortran/match.c:2639
#, gcc-internal-format, gfc-internal-format
msgid "%s statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:2531
+#: fortran/io.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "UNIT number missing in statement at %L"
msgstr ""
-#: fortran/io.c:2539 fortran/io.c:2976
+#: fortran/io.c:2542 fortran/io.c:2979
#, gcc-internal-format, gfc-internal-format
msgid "UNIT number in statement at %L must be non-negative"
msgstr ""
-#: fortran/io.c:2572
+#: fortran/io.c:2575
#, gcc-internal-format, gfc-internal-format
msgid "FLUSH statement at %C"
msgstr ""
-#: fortran/io.c:2627
+#: fortran/io.c:2630
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate UNIT specification at %C"
msgstr ""
-#: fortran/io.c:2701
+#: fortran/io.c:2704
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate format specification at %C"
msgstr ""
-#: fortran/io.c:2718
+#: fortran/io.c:2721
#, gcc-internal-format
msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
msgstr ""
-#: fortran/io.c:2754
+#: fortran/io.c:2757
#, gcc-internal-format, gfc-internal-format
msgid "Duplicate NML specification at %C"
msgstr ""
-#: fortran/io.c:2763
+#: fortran/io.c:2766
#, gcc-internal-format
msgid "Symbol %qs at %C must be a NAMELIST group name"
msgstr ""
-#: fortran/io.c:2833
+#: fortran/io.c:2836
#, gcc-internal-format, gfc-internal-format
msgid "END tag at %C not allowed in output statement"
msgstr ""
-#: fortran/io.c:2910
+#: fortran/io.c:2913
#, gcc-internal-format, gfc-internal-format
msgid "UNIT not specified at %L"
msgstr ""
-#: fortran/io.c:2922
+#: fortran/io.c:2925
#, gcc-internal-format, gfc-internal-format
msgid ""
"UNIT specification at %L must be an INTEGER expression or a CHARACTER "
"variable"
msgstr ""
-#: fortran/io.c:2944
+#: fortran/io.c:2947
#, gcc-internal-format, gfc-internal-format
msgid "Invalid form of WRITE statement at %L, UNIT required"
msgstr ""
-#: fortran/io.c:2955
+#: fortran/io.c:2958
#, gcc-internal-format, gfc-internal-format
msgid "Internal unit with vector subscript at %L"
msgstr ""
-#: fortran/io.c:2969
+#: fortran/io.c:2972
#, gcc-internal-format, gfc-internal-format
msgid "External IO UNIT cannot be an array at %L"
msgstr ""
-#: fortran/io.c:2997
+#: fortran/io.c:3000
#, gcc-internal-format
msgid ""
"NAMELIST %qs in READ statement at %L contains the symbol %qs which may not "
"appear in a variable definition context"
msgstr ""
-#: fortran/io.c:3007
+#: fortran/io.c:3010
#, gcc-internal-format, gfc-internal-format
msgid "Comma before i/o item list at %L"
msgstr ""
-#: fortran/io.c:3017
+#: fortran/io.c:3020
#, gcc-internal-format, gfc-internal-format
msgid "ERR tag label %d at %L not defined"
msgstr ""
-#: fortran/io.c:3029
+#: fortran/io.c:3032
#, gcc-internal-format, gfc-internal-format
msgid "END tag label %d at %L not defined"
msgstr ""
-#: fortran/io.c:3041
+#: fortran/io.c:3044
#, gcc-internal-format, gfc-internal-format
msgid "EOR tag label %d at %L not defined"
msgstr ""
-#: fortran/io.c:3051
+#: fortran/io.c:3054
#, gcc-internal-format, gfc-internal-format
msgid "FORMAT label %d at %L not defined"
msgstr ""
-#: fortran/io.c:3082
+#: fortran/io.c:3085
#, gcc-internal-format
msgid "io_kind_name(): bad I/O-kind"
msgstr ""
-#: fortran/io.c:3171
+#: fortran/io.c:3174
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in I/O iterator at %C"
msgstr ""
-#: fortran/io.c:3202
+#: fortran/io.c:3205
#, gcc-internal-format, gfc-internal-format
msgid "Expected variable in READ statement at %C"
msgstr ""
-#: fortran/io.c:3208
+#: fortran/io.c:3211
#, gcc-internal-format, gfc-internal-format
msgid "Expected expression in %s statement at %C"
msgstr ""
#. A general purpose syntax error.
-#: fortran/io.c:3265 fortran/io.c:3883 fortran/gfortran.h:2715
+#: fortran/io.c:3268 fortran/io.c:3886 fortran/gfortran.h:2718
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in %s statement at %C"
msgstr ""
-#: fortran/io.c:3349
+#: fortran/io.c:3352
#, gcc-internal-format, gfc-internal-format
msgid "Internal file at %L with namelist"
msgstr ""
-#: fortran/io.c:3405
+#: fortran/io.c:3408
#, gcc-internal-format, gfc-internal-format
msgid "ASYNCHRONOUS= specifier at %L must be an initialization expression"
msgstr ""
-#: fortran/io.c:3483
+#: fortran/io.c:3486
#, gcc-internal-format, gfc-internal-format
msgid "PAD= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:3559
+#: fortran/io.c:3562
#, gcc-internal-format, gfc-internal-format
msgid "DELIM= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:3711
+#: fortran/io.c:3714
#, gcc-internal-format, gfc-internal-format
msgid "PRINT namelist at %C is an extension"
msgstr ""
-#: fortran/io.c:3854
+#: fortran/io.c:3857
#, gcc-internal-format, gfc-internal-format
msgid "Expected comma in I/O list at %C"
msgstr ""
-#: fortran/io.c:3917
+#: fortran/io.c:3920
#, gcc-internal-format, gfc-internal-format
msgid "PRINT statement at %C not allowed within PURE procedure"
msgstr ""
-#: fortran/io.c:4080 fortran/io.c:4140
+#: fortran/io.c:4083 fortran/io.c:4143
#, gcc-internal-format, gfc-internal-format
msgid "INQUIRE statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:4108
+#: fortran/io.c:4111
#, gcc-internal-format, gfc-internal-format
msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
msgstr ""
-#: fortran/io.c:4118 fortran/trans-io.c:1303
+#: fortran/io.c:4121 fortran/trans-io.c:1303
#, gcc-internal-format, gfc-internal-format
msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
msgstr ""
-#: fortran/io.c:4125
+#: fortran/io.c:4128
#, gcc-internal-format, gfc-internal-format
msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
msgstr ""
-#: fortran/io.c:4134
+#: fortran/io.c:4137
#, gcc-internal-format, gfc-internal-format
msgid "UNIT number in INQUIRE statement at %L can not be -1"
msgstr ""
-#: fortran/io.c:4148
+#: fortran/io.c:4151
#, gcc-internal-format, gfc-internal-format
msgid ""
"INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
msgstr ""
-#: fortran/io.c:4324
+#: fortran/io.c:4327
#, gcc-internal-format, gfc-internal-format
msgid "WAIT at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:4330
+#: fortran/io.c:4333
#, gcc-internal-format, gfc-internal-format
msgid "WAIT statement not allowed in PURE procedure at %C"
msgstr ""
@@ -52178,559 +52326,564 @@ msgid ""
"extension"
msgstr ""
-#: fortran/match.c:883
+#: fortran/match.c:882
#, gcc-internal-format, gfc-internal-format
-msgid "Loop variable at %C cannot be a coarray"
+msgid "Loop variable at %C cannot be an array"
msgstr ""
#: fortran/match.c:889
#, gcc-internal-format, gfc-internal-format
+msgid "Loop variable at %C cannot be a coarray"
+msgstr ""
+
+#: fortran/match.c:895
+#, gcc-internal-format, gfc-internal-format
msgid "Loop variable at %C cannot be a sub-component"
msgstr ""
-#: fortran/match.c:923
+#: fortran/match.c:929
#, gcc-internal-format, gfc-internal-format
msgid "Expected a step value in iterator at %C"
msgstr ""
-#: fortran/match.c:935
+#: fortran/match.c:941
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in iterator at %C"
msgstr ""
-#: fortran/match.c:1103
+#: fortran/match.c:1109
#, gcc-internal-format, gfc-internal-format
msgid "gfc_match(): Bad match code %c"
msgstr ""
-#: fortran/match.c:1176
+#: fortran/match.c:1182
#, gcc-internal-format, gfc-internal-format
msgid "Invalid form of PROGRAM statement at %C"
msgstr ""
-#: fortran/match.c:1306 fortran/match.c:1386
+#: fortran/match.c:1312 fortran/match.c:1392
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %C"
msgstr ""
-#: fortran/match.c:1361
+#: fortran/match.c:1367
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in IF-expression at %C"
msgstr ""
-#: fortran/match.c:1372
+#: fortran/match.c:1378
#, gcc-internal-format, gfc-internal-format
msgid "Block label not appropriate for arithmetic IF statement at %C"
msgstr ""
-#: fortran/match.c:1409
+#: fortran/match.c:1415
#, gcc-internal-format, gfc-internal-format
msgid "Block label is not appropriate for IF statement at %C"
msgstr ""
-#: fortran/match.c:1497
+#: fortran/match.c:1503
#, gcc-internal-format, gfc-internal-format
msgid "Cannot assign to a named constant at %C"
msgstr ""
-#: fortran/match.c:1507
+#: fortran/match.c:1513
#, gcc-internal-format, gfc-internal-format
msgid "Unclassifiable statement in IF-clause at %C"
msgstr ""
-#: fortran/match.c:1514
+#: fortran/match.c:1520
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in IF-clause at %C"
msgstr ""
-#: fortran/match.c:1557
+#: fortran/match.c:1563
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after ELSE statement at %C"
msgstr ""
-#: fortran/match.c:1563 fortran/match.c:1598
+#: fortran/match.c:1569 fortran/match.c:1604
#, gcc-internal-format
msgid "Label %qs at %C doesn't match IF label %qs"
msgstr ""
-#: fortran/match.c:1592
+#: fortran/match.c:1598
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after ELSE IF statement at %C"
msgstr ""
-#: fortran/match.c:1656
+#: fortran/match.c:1662
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement CRITICAL at %C in PURE procedure"
msgstr ""
-#: fortran/match.c:1662
+#: fortran/match.c:1668
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement CRITICAL at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:1669
+#: fortran/match.c:1675
#, gcc-internal-format, gfc-internal-format
msgid "CRITICAL statement at %C"
msgstr ""
-#: fortran/match.c:1681
+#: fortran/match.c:1687
#, gcc-internal-format, gfc-internal-format
msgid "Nested CRITICAL block at %C"
msgstr ""
-#: fortran/match.c:1733
+#: fortran/match.c:1739
#, gcc-internal-format, gfc-internal-format
msgid "Expected association list at %C"
msgstr ""
-#: fortran/match.c:1746
+#: fortran/match.c:1752
#, gcc-internal-format, gfc-internal-format
msgid "Expected association at %C"
msgstr ""
-#: fortran/match.c:1755
+#: fortran/match.c:1761
#, gcc-internal-format
msgid "Duplicate name %qs in association at %C"
msgstr ""
-#: fortran/match.c:1763
+#: fortran/match.c:1769
#, gcc-internal-format, gfc-internal-format
msgid "Association target at %C must not be coindexed"
msgstr ""
-#: fortran/match.c:1781
+#: fortran/match.c:1787
#, gcc-internal-format
msgid "Expected %<)%> or %<,%> at %C"
msgstr ""
-#: fortran/match.c:1799
+#: fortran/match.c:1805
#, gcc-internal-format, gfc-internal-format
msgid "Junk after ASSOCIATE statement at %C"
msgstr ""
-#: fortran/match.c:1868
+#: fortran/match.c:1874
#, gcc-internal-format
msgid "Derived type %qs at %L may not be ABSTRACT"
msgstr ""
-#: fortran/match.c:1931
+#: fortran/match.c:1937
#, gcc-internal-format, gfc-internal-format
msgid "Invalid type-spec at %C"
msgstr ""
-#: fortran/match.c:2030
+#: fortran/match.c:2036
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in FORALL iterator at %C"
msgstr ""
-#: fortran/match.c:2295
+#: fortran/match.c:2301
#, gcc-internal-format, gfc-internal-format
msgid "DO CONCURRENT construct at %C"
msgstr ""
-#: fortran/match.c:2420
+#: fortran/match.c:2426
#, gcc-internal-format
msgid "Name %qs in %s statement at %C is unknown"
msgstr ""
-#: fortran/match.c:2428
+#: fortran/match.c:2434
#, gcc-internal-format
msgid "Name %qs in %s statement at %C is not a construct name"
msgstr ""
-#: fortran/match.c:2440
+#: fortran/match.c:2446
#, gcc-internal-format, gfc-internal-format
msgid "%s statement at %C leaves CRITICAL construct"
msgstr ""
#. F2008, C821 & C845.
-#: fortran/match.c:2448
+#: fortran/match.c:2454
#, gcc-internal-format, gfc-internal-format
msgid "%s statement at %C leaves DO CONCURRENT construct"
msgstr ""
-#: fortran/match.c:2460
+#: fortran/match.c:2466
#, gcc-internal-format, gfc-internal-format
msgid "%s statement at %C is not within a construct"
msgstr ""
-#: fortran/match.c:2463
+#: fortran/match.c:2469
#, gcc-internal-format
msgid "%s statement at %C is not within construct %qs"
msgstr ""
-#: fortran/match.c:2488
+#: fortran/match.c:2494
#, gcc-internal-format
msgid "CYCLE statement at %C is not applicable to non-loop construct %qs"
msgstr ""
-#: fortran/match.c:2493
+#: fortran/match.c:2499
#, gcc-internal-format, gfc-internal-format
msgid "EXIT statement with no do-construct-name at %C"
msgstr ""
-#: fortran/match.c:2499
+#: fortran/match.c:2505
#, gcc-internal-format
msgid "%s statement at %C is not applicable to construct %qs"
msgstr ""
-#: fortran/match.c:2507
+#: fortran/match.c:2513
#, gcc-internal-format, gfc-internal-format
msgid "%s statement at %C leaving OpenACC structured block"
msgstr ""
-#: fortran/match.c:2532
+#: fortran/match.c:2538
#, gcc-internal-format, gfc-internal-format
msgid "EXIT statement at %C terminating !$ACC LOOP loop"
msgstr ""
-#: fortran/match.c:2537
+#: fortran/match.c:2543
#, gcc-internal-format, gfc-internal-format
msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop"
msgstr ""
-#: fortran/match.c:2562
+#: fortran/match.c:2568
#, gcc-internal-format, gfc-internal-format
msgid "EXIT statement at %C terminating !$OMP DO loop"
msgstr ""
-#: fortran/match.c:2567
+#: fortran/match.c:2573
#, gcc-internal-format, gfc-internal-format
msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
msgstr ""
-#: fortran/match.c:2627
+#: fortran/match.c:2633
#, gcc-internal-format, gfc-internal-format
msgid "%s statement at %C in PURE procedure"
msgstr ""
-#: fortran/match.c:2643
+#: fortran/match.c:2649
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement STOP at %C in CRITICAL block"
msgstr ""
-#: fortran/match.c:2648
+#: fortran/match.c:2654
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement STOP at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:2656
+#: fortran/match.c:2662
#, gcc-internal-format, gfc-internal-format
msgid "STOP code at %L must be either INTEGER or CHARACTER type"
msgstr ""
-#: fortran/match.c:2663
+#: fortran/match.c:2669
#, gcc-internal-format, gfc-internal-format
msgid "STOP code at %L must be scalar"
msgstr ""
-#: fortran/match.c:2671
+#: fortran/match.c:2677
#, gcc-internal-format, gfc-internal-format
msgid "STOP code at %L must be default character KIND=%d"
msgstr ""
-#: fortran/match.c:2679
+#: fortran/match.c:2685
#, gcc-internal-format, gfc-internal-format
msgid "STOP code at %L must be default integer KIND=%d"
msgstr ""
-#: fortran/match.c:2725
+#: fortran/match.c:2731
#, gcc-internal-format, gfc-internal-format
msgid "PAUSE statement at %C"
msgstr ""
-#: fortran/match.c:2746
+#: fortran/match.c:2752
#, gcc-internal-format, gfc-internal-format
msgid "ERROR STOP statement at %C"
msgstr ""
-#: fortran/match.c:2772
+#: fortran/match.c:2778
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement EVENT %s at %C in PURE procedure"
msgstr ""
-#: fortran/match.c:2787
+#: fortran/match.c:2793
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement EVENT %s at %C in CRITICAL block"
msgstr ""
-#: fortran/match.c:2794
+#: fortran/match.c:2800
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:2824 fortran/match.c:3019 fortran/match.c:3231
-#: fortran/match.c:3741 fortran/match.c:4078
+#: fortran/match.c:2830 fortran/match.c:3025 fortran/match.c:3237
+#: fortran/match.c:3747 fortran/match.c:4084
#, gcc-internal-format, gfc-internal-format
msgid "Redundant STAT tag found at %L "
msgstr ""
-#: fortran/match.c:2845 fortran/match.c:3040 fortran/match.c:3251
-#: fortran/match.c:3767 fortran/match.c:4103
+#: fortran/match.c:2851 fortran/match.c:3046 fortran/match.c:3257
+#: fortran/match.c:3773 fortran/match.c:4109
#, gcc-internal-format, gfc-internal-format
msgid "Redundant ERRMSG tag found at %L "
msgstr ""
-#: fortran/match.c:2866
+#: fortran/match.c:2872
#, gcc-internal-format, gfc-internal-format
msgid "Redundant UNTIL_COUNT tag found at %L "
msgstr ""
-#: fortran/match.c:2932
+#: fortran/match.c:2938
#, gcc-internal-format, gfc-internal-format
msgid "EVENT POST statement at %C"
msgstr ""
-#: fortran/match.c:2942
+#: fortran/match.c:2948
#, gcc-internal-format, gfc-internal-format
msgid "EVENT WAIT statement at %C"
msgstr ""
-#: fortran/match.c:2967
+#: fortran/match.c:2973
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement %s at %C in PURE procedure"
msgstr ""
-#: fortran/match.c:2982
+#: fortran/match.c:2988
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement %s at %C in CRITICAL block"
msgstr ""
-#: fortran/match.c:2989
+#: fortran/match.c:2995
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement %s at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:3061
+#: fortran/match.c:3067
#, gcc-internal-format, gfc-internal-format
msgid "Redundant ACQUIRED_LOCK tag found at %L "
msgstr ""
-#: fortran/match.c:3126
+#: fortran/match.c:3132
#, gcc-internal-format, gfc-internal-format
msgid "LOCK statement at %C"
msgstr ""
-#: fortran/match.c:3136
+#: fortran/match.c:3142
#, gcc-internal-format, gfc-internal-format
msgid "UNLOCK statement at %C"
msgstr ""
-#: fortran/match.c:3161
+#: fortran/match.c:3167
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement SYNC at %C in PURE procedure"
msgstr ""
-#: fortran/match.c:3167
+#: fortran/match.c:3173
#, gcc-internal-format, gfc-internal-format
msgid "SYNC statement at %C"
msgstr ""
-#: fortran/match.c:3179
+#: fortran/match.c:3185
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement SYNC at %C in CRITICAL block"
msgstr ""
-#: fortran/match.c:3185
+#: fortran/match.c:3191
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement SYNC at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:3365
+#: fortran/match.c:3371
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %C"
msgstr ""
-#: fortran/match.c:3409
+#: fortran/match.c:3415
#, gcc-internal-format, gfc-internal-format
msgid "Assigned GOTO statement at %C"
msgstr ""
-#: fortran/match.c:3453 fortran/match.c:3504
+#: fortran/match.c:3459 fortran/match.c:3510
#, gcc-internal-format, gfc-internal-format
msgid "Statement label list in GOTO at %C cannot be empty"
msgstr ""
-#: fortran/match.c:3514
+#: fortran/match.c:3520
#, gcc-internal-format, gfc-internal-format
msgid "Computed GOTO at %C"
msgstr ""
-#: fortran/match.c:3586
+#: fortran/match.c:3592
#, gcc-internal-format, gfc-internal-format
msgid "Error in type-spec at %L"
msgstr ""
-#: fortran/match.c:3596
+#: fortran/match.c:3602
#, gcc-internal-format, gfc-internal-format
msgid "typespec in ALLOCATE at %L"
msgstr ""
-#: fortran/match.c:3639
+#: fortran/match.c:3645
#, gcc-internal-format, gfc-internal-format
msgid "Bad allocate-object at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:3663
+#: fortran/match.c:3669
#, gcc-internal-format, gfc-internal-format
msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:3668
+#: fortran/match.c:3674
#, gcc-internal-format, gfc-internal-format
msgid "ALLOCATE of coarray at %C in CRITICAL block"
msgstr ""
-#: fortran/match.c:3690
+#: fortran/match.c:3696
#, gcc-internal-format, gfc-internal-format
msgid ""
"Allocate-object at %L is neither a data pointer nor an allocatable variable"
msgstr ""
-#: fortran/match.c:3702
+#: fortran/match.c:3708
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with typespec"
msgstr ""
-#: fortran/match.c:3710
+#: fortran/match.c:3716
#, gcc-internal-format, gfc-internal-format
msgid ""
"Kind type parameter for entity at %L differs from the kind type parameter of "
"the typespec"
msgstr ""
-#: fortran/match.c:3724
+#: fortran/match.c:3730
#, gcc-internal-format, gfc-internal-format
msgid "Shape specification for allocatable scalar at %C"
msgstr ""
-#: fortran/match.c:3761
+#: fortran/match.c:3767
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG tag at %L"
msgstr ""
-#: fortran/match.c:3784
+#: fortran/match.c:3790
#, gcc-internal-format, gfc-internal-format
msgid "SOURCE tag at %L"
msgstr ""
-#: fortran/match.c:3790
+#: fortran/match.c:3796
#, gcc-internal-format, gfc-internal-format
msgid "Redundant SOURCE tag found at %L "
msgstr ""
-#: fortran/match.c:3797
+#: fortran/match.c:3803
#, gcc-internal-format, gfc-internal-format
msgid "SOURCE tag at %L conflicts with the typespec at %L"
msgstr ""
-#: fortran/match.c:3803
+#: fortran/match.c:3809
#, gcc-internal-format, gfc-internal-format
msgid "SOURCE tag at %L with more than a single allocate object"
msgstr ""
-#: fortran/match.c:3821
+#: fortran/match.c:3827
#, gcc-internal-format, gfc-internal-format
msgid "MOLD tag at %L"
msgstr ""
-#: fortran/match.c:3827
+#: fortran/match.c:3833
#, gcc-internal-format, gfc-internal-format
msgid "Redundant MOLD tag found at %L "
msgstr ""
-#: fortran/match.c:3834
+#: fortran/match.c:3840
#, gcc-internal-format, gfc-internal-format
msgid "MOLD tag at %L conflicts with the typespec at %L"
msgstr ""
-#: fortran/match.c:3860
+#: fortran/match.c:3866
#, gcc-internal-format, gfc-internal-format
msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
msgstr ""
-#: fortran/match.c:3868
+#: fortran/match.c:3874
#, gcc-internal-format, gfc-internal-format
msgid ""
"Allocate-object at %L with a deferred type parameter requires either a type-"
"spec or SOURCE tag or a MOLD tag"
msgstr ""
-#: fortran/match.c:3880
+#: fortran/match.c:3886
#, gcc-internal-format, gfc-internal-format
msgid ""
"Unlimited polymorphic allocate-object at %L requires either a type-spec or "
"SOURCE tag or a MOLD tag"
msgstr ""
-#: fortran/match.c:3942
+#: fortran/match.c:3948
#, gcc-internal-format, gfc-internal-format
msgid "Pointer object at %C shall not be coindexed"
msgstr ""
-#: fortran/match.c:4028
+#: fortran/match.c:4034
#, gcc-internal-format, gfc-internal-format
msgid "Illegal allocate-object at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:4038
+#: fortran/match.c:4044
#, gcc-internal-format, gfc-internal-format
msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:4045
+#: fortran/match.c:4051
#, gcc-internal-format, gfc-internal-format
msgid "DEALLOCATE of coarray at %C in CRITICAL block"
msgstr ""
-#: fortran/match.c:4061
+#: fortran/match.c:4067
#, gcc-internal-format, gfc-internal-format
msgid ""
"Allocate-object at %C is not a nonprocedure pointer nor an allocatable "
"variable"
msgstr ""
-#: fortran/match.c:4098
+#: fortran/match.c:4104
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L"
msgstr ""
-#: fortran/match.c:4155
+#: fortran/match.c:4161
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement RETURN at %C in CRITICAL block"
msgstr ""
-#: fortran/match.c:4161
+#: fortran/match.c:4167
#, gcc-internal-format, gfc-internal-format
msgid "Image control statement RETURN at %C in DO CONCURRENT block"
msgstr ""
-#: fortran/match.c:4170
+#: fortran/match.c:4176
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
msgstr ""
-#: fortran/match.c:4201
+#: fortran/match.c:4207
#, gcc-internal-format, gfc-internal-format
msgid "RETURN statement in main program at %C"
msgstr ""
-#: fortran/match.c:4229
+#: fortran/match.c:4235
#, gcc-internal-format, gfc-internal-format
msgid "Expected component reference at %C"
msgstr ""
-#: fortran/match.c:4238
+#: fortran/match.c:4244
#, gcc-internal-format, gfc-internal-format
msgid "Junk after CALL at %C"
msgstr ""
-#: fortran/match.c:4249
+#: fortran/match.c:4255
#, gcc-internal-format, gfc-internal-format
msgid "Expected type-bound procedure or procedure pointer component at %C"
msgstr ""
-#: fortran/match.c:4470
+#: fortran/match.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in common block name at %C"
msgstr ""
@@ -52738,169 +52891,169 @@ 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:4537
+#: fortran/match.c:4543
#, gcc-internal-format
msgid ""
"Variable %qs at %L in common block %qs at %C must be declared with a C "
"interoperable kind since common block %qs is bind(c)"
msgstr ""
-#: fortran/match.c:4546
+#: fortran/match.c:4552
#, gcc-internal-format
msgid ""
"Variable %qs in common block %qs at %C can not be bind(c) since it is not "
"global"
msgstr ""
-#: fortran/match.c:4553
+#: fortran/match.c:4559
#, gcc-internal-format
msgid "Symbol %qs at %C is already in a COMMON block"
msgstr ""
-#: fortran/match.c:4561
+#: fortran/match.c:4567
#, gcc-internal-format
msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
msgstr ""
-#: fortran/match.c:4577
+#: fortran/match.c:4583
#, gcc-internal-format
msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
msgstr ""
-#: fortran/match.c:4587
+#: fortran/match.c:4593
#, gcc-internal-format
msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
msgstr ""
-#: fortran/match.c:4633
+#: fortran/match.c:4639
#, gcc-internal-format
msgid ""
"Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to "
"another COMMON block %qs"
msgstr ""
-#: fortran/match.c:4761
+#: fortran/match.c:4767
#, gcc-internal-format
msgid "Namelist group name %qs at %C already has a basic type of %s"
msgstr ""
-#: fortran/match.c:4769
+#: fortran/match.c:4775
#, gcc-internal-format
msgid ""
"Namelist group name %qs at %C already is USE associated and cannot be "
"respecified."
msgstr ""
-#: fortran/match.c:4795
+#: fortran/match.c:4801
#, gcc-internal-format
msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
msgstr ""
-#: fortran/match.c:4929
+#: fortran/match.c:4935
#, gcc-internal-format, gfc-internal-format
msgid "Derived type component %C is not a permitted EQUIVALENCE member"
msgstr ""
-#: fortran/match.c:4937
+#: fortran/match.c:4943
#, gcc-internal-format, gfc-internal-format
msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
msgstr ""
-#: fortran/match.c:4965
+#: fortran/match.c:4971
#, gcc-internal-format, gfc-internal-format
msgid "EQUIVALENCE at %C requires two or more objects"
msgstr ""
-#: fortran/match.c:4979
+#: fortran/match.c:4985
#, gcc-internal-format, gfc-internal-format
msgid ""
"Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
msgstr ""
-#: fortran/match.c:4992
+#: fortran/match.c:4998
#, gcc-internal-format, gfc-internal-format
msgid "Expecting a comma in EQUIVALENCE at %C"
msgstr ""
-#: fortran/match.c:5108
+#: fortran/match.c:5114
#, gcc-internal-format, gfc-internal-format
msgid "Statement function at %L is recursive"
msgstr ""
-#: fortran/match.c:5118
+#: fortran/match.c:5124
#, gcc-internal-format, gfc-internal-format
msgid "Statement function at %L cannot appear within an INTERFACE"
msgstr ""
-#: fortran/match.c:5123
+#: fortran/match.c:5129
#, gcc-internal-format, gfc-internal-format
msgid "Statement function at %C"
msgstr ""
-#: fortran/match.c:5248 fortran/match.c:5264
+#: fortran/match.c:5254 fortran/match.c:5270
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE selector at %L cannot be %s"
msgstr ""
-#: fortran/match.c:5286
+#: fortran/match.c:5292
#, gcc-internal-format, gfc-internal-format
msgid "Expected initialization expression in CASE at %C"
msgstr ""
-#: fortran/match.c:5318
+#: fortran/match.c:5324
#, gcc-internal-format
msgid "Expected block name %qs of SELECT construct at %C"
msgstr ""
-#: fortran/match.c:5598
+#: fortran/match.c:5604
#, gcc-internal-format, gfc-internal-format
msgid "parse error in SELECT TYPE statement at %C"
msgstr ""
-#: fortran/match.c:5622
+#: fortran/match.c:5628
#, gcc-internal-format, gfc-internal-format
msgid ""
"Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
msgstr ""
-#: fortran/match.c:5656
+#: fortran/match.c:5662
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected CASE statement at %C"
msgstr ""
-#: fortran/match.c:5708
+#: fortran/match.c:5714
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in CASE specification at %C"
msgstr ""
-#: fortran/match.c:5726
+#: fortran/match.c:5732
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected TYPE IS statement at %C"
msgstr ""
-#: fortran/match.c:5758
+#: fortran/match.c:5764
#, gcc-internal-format, gfc-internal-format
msgid ""
"The type-spec shall not specify a sequence derived type or a type with the "
"BIND attribute in SELECT TYPE at %C [F2003:C815]"
msgstr ""
-#: fortran/match.c:5770
+#: fortran/match.c:5776
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in TYPE IS specification at %C"
msgstr ""
-#: fortran/match.c:5846
+#: fortran/match.c:5852
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in CLASS IS specification at %C"
msgstr ""
-#: fortran/match.c:5964
+#: fortran/match.c:5970
#, gcc-internal-format, gfc-internal-format
msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
msgstr ""
-#: fortran/match.c:6002
+#: fortran/match.c:6008
#, gcc-internal-format
msgid "Label %qs at %C doesn't match WHERE label %qs"
msgstr ""
@@ -53239,899 +53392,899 @@ msgstr ""
msgid "Can't USE the same %smodule we're building!"
msgstr ""
-#: fortran/openmp.c:287 fortran/openmp.c:495 fortran/openmp.c:2397
-#: fortran/openmp.c:2471
+#: fortran/openmp.c:289 fortran/openmp.c:497 fortran/openmp.c:2399
+#: fortran/openmp.c:2473
#, gcc-internal-format, gfc-internal-format
msgid "COMMON block /%s/ not found at %C"
msgstr ""
-#: fortran/openmp.c:326
+#: fortran/openmp.c:328
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in OpenMP variable list at %C"
msgstr ""
-#: fortran/openmp.c:388
+#: fortran/openmp.c:390
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in OpenACC expression list at %C"
msgstr ""
-#: fortran/openmp.c:463
+#: fortran/openmp.c:465
#, gcc-internal-format, gfc-internal-format
msgid "Variable at %C is an element of a COMMON block"
msgstr ""
-#: fortran/openmp.c:523
+#: fortran/openmp.c:525
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after !$ACC DECLARE at %C"
msgstr ""
-#: fortran/openmp.c:533
+#: fortran/openmp.c:535
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$ACC DECLARE list at %C"
msgstr ""
-#: fortran/openmp.c:989
+#: fortran/openmp.c:991
#, gcc-internal-format, gfc-internal-format
msgid "!$OMP DECLARE REDUCTION %s not found at %L"
msgstr ""
-#: fortran/openmp.c:1089
+#: fortran/openmp.c:1091
#, gcc-internal-format, gfc-internal-format
msgid "COLLAPSE clause argument not constant positive integer at %C"
msgstr ""
-#: fortran/openmp.c:1474
+#: fortran/openmp.c:1476
#, gcc-internal-format, gfc-internal-format
msgid "Invalid clause in module with $!ACC DECLARE at %L"
msgstr ""
-#: fortran/openmp.c:1484
+#: fortran/openmp.c:1486
#, gcc-internal-format, gfc-internal-format
msgid "Variable is USE-associated with $!ACC DECLARE at %L"
msgstr ""
-#: fortran/openmp.c:1492
+#: fortran/openmp.c:1494
#, gcc-internal-format, gfc-internal-format
msgid "Assumed-size dummy array with $!ACC DECLARE at %L"
msgstr ""
-#: fortran/openmp.c:1539
+#: fortran/openmp.c:1541
#, gcc-internal-format
msgid ""
"%<acc update%> must contain at least one %<device%> or %<host%> or %<self%> "
"clause at %L"
msgstr ""
-#: fortran/openmp.c:1589
+#: fortran/openmp.c:1591
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk in !$ACC WAIT at %C"
msgstr ""
-#: fortran/openmp.c:1598
+#: fortran/openmp.c:1600
#, gcc-internal-format, gfc-internal-format
msgid "Invalid argument to $!ACC WAIT at %L"
msgstr ""
-#: fortran/openmp.c:1607
+#: fortran/openmp.c:1609
#, gcc-internal-format, gfc-internal-format
msgid "WAIT clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:1636
+#: fortran/openmp.c:1638
#, gcc-internal-format, gfc-internal-format
msgid "ACC CACHE directive must be inside of loop %C"
msgstr ""
-#: fortran/openmp.c:1667
+#: fortran/openmp.c:1669
#, gcc-internal-format
msgid "Multiple loop axes specified for routine"
msgstr ""
-#: fortran/openmp.c:1693
+#: fortran/openmp.c:1695
#, gcc-internal-format, gfc-internal-format
msgid ""
"Only the !$ACC ROUTINE form without list is allowed in interface block at %C"
msgstr ""
-#: fortran/openmp.c:1720
+#: fortran/openmp.c:1722
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C, invalid function name %s"
msgstr ""
-#: fortran/openmp.c:1729
+#: fortran/openmp.c:1731
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C"
msgstr ""
-#: fortran/openmp.c:1736
+#: fortran/openmp.c:1738
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C, expecting ')' after NAME"
msgstr ""
-#: fortran/openmp.c:1842
+#: fortran/openmp.c:1844
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP CRITICAL statement at %C"
msgstr ""
-#: fortran/openmp.c:1907
+#: fortran/openmp.c:1909
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP FLUSH statement at %C"
msgstr ""
-#: fortran/openmp.c:2290 fortran/openmp.c:5149
+#: fortran/openmp.c:2292 fortran/openmp.c:5151
#, gcc-internal-format, gfc-internal-format
msgid "Redefinition of predefined %s !$OMP DECLARE REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:2294 fortran/openmp.c:5153
+#: fortran/openmp.c:2296 fortran/openmp.c:5155
#, gcc-internal-format, gfc-internal-format
msgid "Redefinition of predefined !$OMP DECLARE REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:2299
+#: fortran/openmp.c:2301
#, gcc-internal-format, gfc-internal-format
msgid "Redefinition of !$OMP DECLARE REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:2301
+#: fortran/openmp.c:2303
#, gcc-internal-format, gfc-internal-format
msgid "Previous !$OMP DECLARE REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:2321
+#: fortran/openmp.c:2323
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after !$OMP DECLARE REDUCTION at %C"
msgstr ""
-#: fortran/openmp.c:2350
+#: fortran/openmp.c:2352
#, gcc-internal-format, gfc-internal-format
msgid ""
"Only the !$OMP DECLARE TARGET form without list is allowed in interface "
"block at %C"
msgstr ""
-#: fortran/openmp.c:2376
+#: fortran/openmp.c:2378
#, gcc-internal-format, gfc-internal-format
msgid "OMP DECLARE TARGET on a variable at %C is an element of a COMMON block"
msgstr ""
-#: fortran/openmp.c:2415
+#: fortran/openmp.c:2417
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after !$OMP DECLARE TARGET at %C"
msgstr ""
-#: fortran/openmp.c:2421
+#: fortran/openmp.c:2423
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$OMP DECLARE TARGET list at %C"
msgstr ""
-#: fortran/openmp.c:2451
+#: fortran/openmp.c:2453
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate variable at %C is an element of a COMMON block"
msgstr ""
-#: fortran/openmp.c:2488
+#: fortran/openmp.c:2490
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after OMP THREADPRIVATE at %C"
msgstr ""
-#: fortran/openmp.c:2495
+#: fortran/openmp.c:2497
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$OMP THREADPRIVATE list at %C"
msgstr ""
-#: fortran/openmp.c:2576
+#: fortran/openmp.c:2578
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after TASKWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:2590
+#: fortran/openmp.c:2592
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after TASKYIELD clause at %C"
msgstr ""
-#: fortran/openmp.c:2715
+#: fortran/openmp.c:2717
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP WORKSHARE statement at %C"
msgstr ""
-#: fortran/openmp.c:2729
+#: fortran/openmp.c:2731
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP MASTER statement at %C"
msgstr ""
-#: fortran/openmp.c:2743
+#: fortran/openmp.c:2745
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP ORDERED statement at %C"
msgstr ""
-#: fortran/openmp.c:2788
+#: fortran/openmp.c:2790
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP ATOMIC statement at %C"
msgstr ""
-#: fortran/openmp.c:2815
+#: fortran/openmp.c:2817
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP BARRIER statement at %C"
msgstr ""
-#: fortran/openmp.c:2829
+#: fortran/openmp.c:2831
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP TASKGROUP statement at %C"
msgstr ""
-#: fortran/openmp.c:2879
+#: fortran/openmp.c:2881
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after $OMP CANCELLATION POINT statement at %C"
msgstr ""
-#: fortran/openmp.c:2899
+#: fortran/openmp.c:2901
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:2939
+#: fortran/openmp.c:2941
#, gcc-internal-format, gfc-internal-format
msgid "%s clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:2950
+#: fortran/openmp.c:2952
#, gcc-internal-format, gfc-internal-format
msgid "INTEGER expression of %s clause at %L must be positive"
msgstr ""
-#: fortran/openmp.c:2961
+#: fortran/openmp.c:2963
#, gcc-internal-format
msgid "POINTER object %qs of derived type in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:2964
+#: fortran/openmp.c:2966
#, gcc-internal-format
msgid "Cray pointer object of derived type %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:2967
+#: fortran/openmp.c:2969
#, gcc-internal-format
msgid "Cray pointee object of derived type %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:2973
+#: fortran/openmp.c:2975
#, gcc-internal-format
msgid "POINTER object %qs of polymorphic type in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:2978
+#: fortran/openmp.c:2980
#, gcc-internal-format
msgid "Cray pointer object of polymorphic type %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:2983
+#: fortran/openmp.c:2985
#, gcc-internal-format
msgid "Cray pointee object of polymorphic type %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:2993 fortran/openmp.c:3519
+#: fortran/openmp.c:2995 fortran/openmp.c:3521
#, gcc-internal-format
msgid "Assumed size array %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:2996
+#: fortran/openmp.c:2998
#, gcc-internal-format
msgid "Assumed rank array %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3000
+#: fortran/openmp.c:3002
#, gcc-internal-format
msgid "Noncontiguous deferred shape array %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3008
+#: fortran/openmp.c:3010
#, gcc-internal-format
msgid "ALLOCATABLE object %qs of derived type in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3013
+#: fortran/openmp.c:3015
#, gcc-internal-format
msgid "ALLOCATABLE object %qs of polymorphic type in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3025 fortran/openmp.c:3509 fortran/openmp.c:3682
+#: fortran/openmp.c:3027 fortran/openmp.c:3511 fortran/openmp.c:3684
#, gcc-internal-format
msgid "POINTER object %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3030 fortran/openmp.c:3685
+#: fortran/openmp.c:3032 fortran/openmp.c:3687
#, gcc-internal-format
msgid "Cray pointer object %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3035 fortran/openmp.c:3688
+#: fortran/openmp.c:3037 fortran/openmp.c:3690
#, gcc-internal-format
msgid "Cray pointee object %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3040 fortran/openmp.c:3677
+#: fortran/openmp.c:3042 fortran/openmp.c:3679
#, gcc-internal-format
msgid "ALLOCATABLE object %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3043
+#: fortran/openmp.c:3045
#, gcc-internal-format
msgid "VALUE object %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3086
+#: fortran/openmp.c:3088
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly declared function %s used in !$OMP DECLARE REDUCTION at %L "
msgstr ""
-#: fortran/openmp.c:3135
+#: fortran/openmp.c:3137
#, gcc-internal-format, gfc-internal-format
msgid ""
"Implicitly declared subroutine %s used in !$OMP DECLARE REDUCTION at %L "
msgstr ""
-#: fortran/openmp.c:3169 fortran/resolve.c:9384 fortran/resolve.c:10606
+#: fortran/openmp.c:3171 fortran/resolve.c:9395 fortran/resolve.c:10617
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/openmp.c:3177
+#: fortran/openmp.c:3179
#, gcc-internal-format, gfc-internal-format
msgid "FINAL clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/openmp.c:3185
+#: fortran/openmp.c:3187
#, gcc-internal-format, gfc-internal-format
msgid "NUM_THREADS clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3193
+#: fortran/openmp.c:3195
#, gcc-internal-format, gfc-internal-format
msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3208
+#: fortran/openmp.c:3210
#, gcc-internal-format
msgid "Variable %qs is not a dummy argument at %L"
msgstr ""
-#: fortran/openmp.c:3240
+#: fortran/openmp.c:3242
#, gcc-internal-format
msgid "Object %qs is not a variable at %L"
msgstr ""
-#: fortran/openmp.c:3256 fortran/openmp.c:3267 fortran/openmp.c:3275
-#: fortran/openmp.c:3286 fortran/openmp.c:3298 fortran/openmp.c:3313
-#: fortran/openmp.c:4956
+#: fortran/openmp.c:3258 fortran/openmp.c:3269 fortran/openmp.c:3277
+#: fortran/openmp.c:3288 fortran/openmp.c:3300 fortran/openmp.c:3315
+#: fortran/openmp.c:4958
#, gcc-internal-format
msgid "Symbol %qs present on multiple clauses at %L"
msgstr ""
-#: fortran/openmp.c:3320
+#: fortran/openmp.c:3322
#, gcc-internal-format
msgid "Array %qs is not permitted in reduction at %L"
msgstr ""
-#: fortran/openmp.c:3333
+#: fortran/openmp.c:3335
#, gcc-internal-format
msgid "Symbol %qs present on both FROM and TO clauses at %L"
msgstr ""
-#: fortran/openmp.c:3355
+#: fortran/openmp.c:3357
#, gcc-internal-format
msgid "Non-THREADPRIVATE object %qs in COPYIN clause at %L"
msgstr ""
-#: fortran/openmp.c:3363
+#: fortran/openmp.c:3365
#, gcc-internal-format
msgid "Assumed size array %qs in COPYPRIVATE clause at %L"
msgstr ""
-#: fortran/openmp.c:3366
+#: fortran/openmp.c:3368
#, gcc-internal-format
msgid "INTENT(IN) POINTER %qs in COPYPRIVATE clause at %L"
msgstr ""
-#: fortran/openmp.c:3374
+#: fortran/openmp.c:3376
#, gcc-internal-format
msgid "THREADPRIVATE object %qs in SHARED clause at %L"
msgstr ""
-#: fortran/openmp.c:3377
+#: fortran/openmp.c:3379
#, gcc-internal-format
msgid "Cray pointee %qs in SHARED clause at %L"
msgstr ""
-#: fortran/openmp.c:3380
+#: fortran/openmp.c:3382
#, gcc-internal-format
msgid "ASSOCIATE name %qs in SHARED clause at %L"
msgstr ""
-#: fortran/openmp.c:3395
+#: fortran/openmp.c:3397
#, gcc-internal-format
msgid ""
"%qs in ALIGNED clause must be POINTER, ALLOCATABLE, Cray pointer or C_PTR at "
"%L"
msgstr ""
-#: fortran/openmp.c:3407
+#: fortran/openmp.c:3409
#, gcc-internal-format
msgid ""
"%qs in ALIGNED clause at %L requires a scalar positive constant integer "
"alignment expression"
msgstr ""
-#: fortran/openmp.c:3427 fortran/openmp.c:3448
+#: fortran/openmp.c:3429 fortran/openmp.c:3450
#, gcc-internal-format
msgid "%qs in %s clause at %L is not a proper array section"
msgstr ""
-#: fortran/openmp.c:3431
+#: fortran/openmp.c:3433
#, gcc-internal-format, gfc-internal-format
msgid "Coarrays not supported in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3440
+#: fortran/openmp.c:3442
#, gcc-internal-format, gfc-internal-format
msgid "Stride should not be specified for array section in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3461
+#: fortran/openmp.c:3463
#, gcc-internal-format
msgid "%qs in DEPEND clause at %L is a zero size array section"
msgstr ""
-#: fortran/openmp.c:3483 fortran/openmp.c:3495
+#: fortran/openmp.c:3485 fortran/openmp.c:3497
#, gcc-internal-format
msgid "THREADPRIVATE object %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3486 fortran/openmp.c:3498
+#: fortran/openmp.c:3488 fortran/openmp.c:3500
#, gcc-internal-format
msgid "Cray pointee %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3501
+#: fortran/openmp.c:3503
#, gcc-internal-format
msgid "ASSOCIATE name %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3506
+#: fortran/openmp.c:3508
#, gcc-internal-format
msgid "Procedure pointer %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3512
+#: fortran/openmp.c:3514
#, gcc-internal-format
msgid "Cray pointer %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3522
+#: fortran/openmp.c:3524
#, gcc-internal-format
msgid "Variable %qs in %s clause is used in NAMELIST statement at %L"
msgstr ""
#. case OMP_LIST_REDUCTION:
-#: fortran/openmp.c:3532
+#: fortran/openmp.c:3534
#, gcc-internal-format
msgid "INTENT(IN) POINTER %qs in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:3625
+#: fortran/openmp.c:3627
#, gcc-internal-format, gfc-internal-format
msgid "!$OMP DECLARE REDUCTION %s not found for type %s at %L"
msgstr ""
-#: fortran/openmp.c:3648
+#: fortran/openmp.c:3650
#, gcc-internal-format
msgid "LINEAR variable %qs must be INTEGER at %L"
msgstr ""
-#: fortran/openmp.c:3651
+#: fortran/openmp.c:3653
#, gcc-internal-format
msgid "LINEAR dummy argument %qs must have VALUE attribute at %L"
msgstr ""
-#: fortran/openmp.c:3659
+#: fortran/openmp.c:3661
#, gcc-internal-format
msgid ""
"%qs in LINEAR clause at %L requires a scalar integer linear-step expression"
msgstr ""
-#: fortran/openmp.c:3663
+#: fortran/openmp.c:3665
#, gcc-internal-format
msgid ""
"%qs in LINEAR clause at %L requires a constant integer linear-step expression"
msgstr ""
-#: fortran/openmp.c:3707
+#: fortran/openmp.c:3709
#, gcc-internal-format, gfc-internal-format
msgid "SAFELEN clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3715
+#: fortran/openmp.c:3717
#, gcc-internal-format, gfc-internal-format
msgid "SIMDLEN clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3723
+#: fortran/openmp.c:3725
#, gcc-internal-format, gfc-internal-format
msgid "NUM_TEAMS clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3731
+#: fortran/openmp.c:3733
#, gcc-internal-format, gfc-internal-format
msgid "DEVICE clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3739
+#: fortran/openmp.c:3741
#, gcc-internal-format, gfc-internal-format
msgid ""
"DIST_SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3747
+#: fortran/openmp.c:3749
#, gcc-internal-format, gfc-internal-format
msgid "THREAD_LIMIT clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:3875
+#: fortran/openmp.c:3877
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
msgstr ""
-#: fortran/openmp.c:3900
+#: fortran/openmp.c:3902
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC READ statement must read from a scalar variable of intrinsic "
"type at %L"
msgstr ""
-#: fortran/openmp.c:3905
+#: fortran/openmp.c:3907
#, gcc-internal-format, gfc-internal-format
msgid ""
"expr in !$OMP ATOMIC WRITE assignment var = expr must be scalar and cannot "
"reference var at %L"
msgstr ""
-#: fortran/openmp.c:3927 fortran/openmp.c:4218
+#: fortran/openmp.c:3929 fortran/openmp.c:4220
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC CAPTURE capture statement must read from a scalar variable of "
"intrinsic type at %L"
msgstr ""
-#: fortran/openmp.c:3942
+#: fortran/openmp.c:3944
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC CAPTURE update statement must set a scalar variable of "
"intrinsic type at %L"
msgstr ""
-#: fortran/openmp.c:3949 fortran/openmp.c:4225
+#: fortran/openmp.c:3951 fortran/openmp.c:4227
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC CAPTURE capture statement reads from different variable than "
"update statement writes into at %L"
msgstr ""
-#: fortran/openmp.c:3965
+#: fortran/openmp.c:3967
#, gcc-internal-format, gfc-internal-format
msgid "!$OMP ATOMIC with ALLOCATABLE variable at %L"
msgstr ""
-#: fortran/openmp.c:4007
+#: fortran/openmp.c:4009
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC assignment operator must be binary +, *, -, /, .AND., .OR., ."
"EQV. or .NEQV. at %L"
msgstr ""
-#: fortran/openmp.c:4055
+#: fortran/openmp.c:4057
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L"
msgstr ""
-#: fortran/openmp.c:4069
+#: fortran/openmp.c:4071
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op "
"(expr) at %L"
msgstr ""
-#: fortran/openmp.c:4101
+#: fortran/openmp.c:4103
#, gcc-internal-format, gfc-internal-format
msgid ""
"expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot "
"reference var at %L"
msgstr ""
-#: fortran/openmp.c:4125
+#: fortran/openmp.c:4127
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments "
"at %L"
msgstr ""
-#: fortran/openmp.c:4132
+#: fortran/openmp.c:4134
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L"
msgstr ""
-#: fortran/openmp.c:4149
+#: fortran/openmp.c:4151
#, gcc-internal-format
msgid ""
"!$OMP ATOMIC intrinsic arguments except one must not reference %qs at %L"
msgstr ""
-#: fortran/openmp.c:4156
+#: fortran/openmp.c:4158
#, gcc-internal-format, gfc-internal-format
msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L"
msgstr ""
-#: fortran/openmp.c:4164
+#: fortran/openmp.c:4166
#, gcc-internal-format
msgid "First or last !$OMP ATOMIC intrinsic argument must be %qs at %L"
msgstr ""
-#: fortran/openmp.c:4182
+#: fortran/openmp.c:4184
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC assignment must have an operator or intrinsic on right hand "
"side at %L"
msgstr ""
-#: fortran/openmp.c:4196
+#: fortran/openmp.c:4198
#, gcc-internal-format, gfc-internal-format
msgid ""
"!$OMP ATOMIC CAPTURE capture statement must set a scalar variable of "
"intrinsic type at %L"
msgstr ""
-#: fortran/openmp.c:4473
+#: fortran/openmp.c:4475
#, gcc-internal-format, gfc-internal-format
msgid "%s cannot be a DO WHILE or DO without loop control at %L"
msgstr ""
-#: fortran/openmp.c:4479
+#: fortran/openmp.c:4481
#, gcc-internal-format, gfc-internal-format
msgid "%s cannot be a DO CONCURRENT loop at %L"
msgstr ""
-#: fortran/openmp.c:4485
+#: fortran/openmp.c:4487
#, gcc-internal-format, gfc-internal-format
msgid "%s iteration variable must be of type integer at %L"
msgstr ""
-#: fortran/openmp.c:4489
+#: fortran/openmp.c:4491
#, gcc-internal-format, gfc-internal-format
msgid "%s iteration variable must not be THREADPRIVATE at %L"
msgstr ""
-#: fortran/openmp.c:4502
+#: fortran/openmp.c:4504
#, gcc-internal-format, gfc-internal-format
msgid ""
"%s iteration variable present on clause other than PRIVATE or LASTPRIVATE at "
"%L"
msgstr ""
-#: fortran/openmp.c:4506
+#: fortran/openmp.c:4508
#, gcc-internal-format, gfc-internal-format
msgid "%s iteration variable present on clause other than LASTPRIVATE at %L"
msgstr ""
-#: fortran/openmp.c:4510
+#: fortran/openmp.c:4512
#, gcc-internal-format, gfc-internal-format
msgid "%s iteration variable present on clause other than LINEAR at %L"
msgstr ""
-#: fortran/openmp.c:4528
+#: fortran/openmp.c:4530
#, gcc-internal-format, gfc-internal-format
msgid "%s collapsed loops don't form rectangular iteration space at %L"
msgstr ""
-#: fortran/openmp.c:4542
+#: fortran/openmp.c:4544
#, gcc-internal-format, gfc-internal-format
msgid "collapsed %s loops not perfectly nested at %L"
msgstr ""
-#: fortran/openmp.c:4551 fortran/openmp.c:4559
+#: fortran/openmp.c:4553 fortran/openmp.c:4561
#, gcc-internal-format, gfc-internal-format
msgid "not enough DO loops for collapsed %s at %L"
msgstr ""
-#: fortran/openmp.c:4643 fortran/openmp.c:4656
+#: fortran/openmp.c:4645 fortran/openmp.c:4658
#, gcc-internal-format, gfc-internal-format
msgid "The %s directive cannot be specified within a %s region at %L"
msgstr ""
-#: fortran/openmp.c:4675
+#: fortran/openmp.c:4677
#, gcc-internal-format, gfc-internal-format
msgid "!$ACC LOOP cannot be a DO WHILE or DO without loop control at %L"
msgstr ""
-#: fortran/openmp.c:4681
+#: fortran/openmp.c:4683
#, gcc-internal-format, gfc-internal-format
msgid "!$ACC LOOP iteration variable must be of type integer at %L"
msgstr ""
-#: fortran/openmp.c:4697
+#: fortran/openmp.c:4699
#, gcc-internal-format, gfc-internal-format
msgid "!$ACC LOOP %s loops don't form rectangular iteration space at %L"
msgstr ""
-#: fortran/openmp.c:4711
+#: fortran/openmp.c:4713
#, gcc-internal-format, gfc-internal-format
msgid "%s !$ACC LOOP loops not perfectly nested at %L"
msgstr ""
-#: fortran/openmp.c:4721 fortran/openmp.c:4730
+#: fortran/openmp.c:4723 fortran/openmp.c:4732
#, gcc-internal-format, gfc-internal-format
msgid "not enough DO loops for %s !$ACC LOOP at %L"
msgstr ""
-#: fortran/openmp.c:4745 fortran/openmp.c:4752
+#: fortran/openmp.c:4747 fortran/openmp.c:4754
#, gcc-internal-format, gfc-internal-format
msgid "!$ACC LOOP %s in PARALLEL region doesn't allow %s arguments at %L"
msgstr ""
-#: fortran/openmp.c:4774
+#: fortran/openmp.c:4776
#, gcc-internal-format, gfc-internal-format
msgid ""
"Loop parallelized across gangs is not allowed inside another loop "
"parallelized across gangs at %L"
msgstr ""
-#: fortran/openmp.c:4778 fortran/openmp.c:4782
+#: fortran/openmp.c:4780 fortran/openmp.c:4784
#, gcc-internal-format, gfc-internal-format
msgid ""
"Loop parallelized across gangs is not allowed inside loop parallelized "
"across workers at %L"
msgstr ""
-#: fortran/openmp.c:4789
+#: fortran/openmp.c:4791
#, gcc-internal-format, gfc-internal-format
msgid ""
"Loop parallelized across workers is not allowed inside another loop "
"parallelized across workers at %L"
msgstr ""
-#: fortran/openmp.c:4793
+#: fortran/openmp.c:4795
#, gcc-internal-format, gfc-internal-format
msgid ""
"Loop parallelized across workers is not allowed inside another loop "
"parallelized across vectors at %L"
msgstr ""
-#: fortran/openmp.c:4799
+#: fortran/openmp.c:4801
#, gcc-internal-format, gfc-internal-format
msgid ""
"Loop parallelized across vectors is not allowed inside another loop "
"parallelized across vectors at %L"
msgstr ""
-#: fortran/openmp.c:4811
+#: fortran/openmp.c:4813
#, gcc-internal-format, gfc-internal-format
msgid "Clause SEQ conflicts with INDEPENDENT at %L"
msgstr ""
-#: fortran/openmp.c:4813
+#: fortran/openmp.c:4815
#, gcc-internal-format, gfc-internal-format
msgid "Clause SEQ conflicts with GANG at %L"
msgstr ""
-#: fortran/openmp.c:4815
+#: fortran/openmp.c:4817
#, gcc-internal-format, gfc-internal-format
msgid "Clause SEQ conflicts with WORKER at %L"
msgstr ""
-#: fortran/openmp.c:4817
+#: fortran/openmp.c:4819
#, gcc-internal-format, gfc-internal-format
msgid "Clause SEQ conflicts with VECTOR at %L"
msgstr ""
-#: fortran/openmp.c:4819
+#: fortran/openmp.c:4821
#, gcc-internal-format, gfc-internal-format
msgid "Clause SEQ conflicts with AUTO at %L"
msgstr ""
-#: fortran/openmp.c:4824
+#: fortran/openmp.c:4826
#, gcc-internal-format, gfc-internal-format
msgid "Clause AUTO conflicts with GANG at %L"
msgstr ""
-#: fortran/openmp.c:4826
+#: fortran/openmp.c:4828
#, gcc-internal-format, gfc-internal-format
msgid "Clause AUTO conflicts with WORKER at %L"
msgstr ""
-#: fortran/openmp.c:4828
+#: fortran/openmp.c:4830
#, gcc-internal-format, gfc-internal-format
msgid "Clause AUTO conflicts with VECTOR at %L"
msgstr ""
-#: fortran/openmp.c:4832
+#: fortran/openmp.c:4834
#, gcc-internal-format, gfc-internal-format
msgid ""
"Tiled loop cannot be parallelized across gangs, workers and vectors at the "
"same time at %L"
msgstr ""
-#: fortran/openmp.c:4867
+#: fortran/openmp.c:4869
#, gcc-internal-format, gfc-internal-format
msgid "TILE requires constant expression at %L"
msgstr ""
-#: fortran/openmp.c:4932
+#: fortran/openmp.c:4934
#, gcc-internal-format
msgid "PARAMETER object %qs is not allowed at %L"
msgstr ""
-#: fortran/openmp.c:4939
+#: fortran/openmp.c:4941
#, gcc-internal-format
msgid "Array sections: %qs not allowed in $!ACC DECLARE at %L"
msgstr ""
-#: fortran/openmp.c:5058
+#: fortran/openmp.c:5060
#, gcc-internal-format, gfc-internal-format
msgid "OMP TARGET UPDATE at %L requires at least one TO or FROM clause"
msgstr ""
-#: fortran/openmp.c:5079
+#: fortran/openmp.c:5081
#, gcc-internal-format
msgid "!$OMP DECLARE SIMD should refer to containing procedure %qs at %L"
msgstr ""
-#: fortran/openmp.c:5103
+#: fortran/openmp.c:5105
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable other than OMP_PRIV or OMP_ORIG used in INITIALIZER clause of !$OMP "
"DECLARE REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:5111
+#: fortran/openmp.c:5113
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable other than OMP_OUT or OMP_IN used in combiner of !$OMP DECLARE "
"REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:5140
+#: fortran/openmp.c:5142
#, gcc-internal-format, gfc-internal-format
msgid "Invalid operator for !$OMP DECLARE REDUCTION %s at %L"
msgstr ""
-#: fortran/openmp.c:5162
+#: fortran/openmp.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER length in !$OMP DECLARE REDUCTION %s not constant at %L"
msgstr ""
-#: fortran/openmp.c:5178
+#: fortran/openmp.c:5180
#, gcc-internal-format, gfc-internal-format
msgid ""
"Subroutine call with alternate returns in combiner of !$OMP DECLARE "
"REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:5193
+#: fortran/openmp.c:5195
#, gcc-internal-format, gfc-internal-format
msgid ""
"Subroutine call with alternate returns in INITIALIZER clause of !$OMP "
"DECLARE REDUCTION at %L"
msgstr ""
-#: fortran/openmp.c:5203
+#: fortran/openmp.c:5205
#, gcc-internal-format, gfc-internal-format
msgid ""
"One of actual subroutine arguments in INITIALIZER clause of !$OMP DECLARE "
"REDUCTION must be OMP_PRIV at %L"
msgstr ""
-#: fortran/openmp.c:5211
+#: fortran/openmp.c:5213
#, gcc-internal-format, gfc-internal-format
msgid ""
"Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type "
@@ -54216,27 +54369,27 @@ msgstr ""
msgid "Argument to %<-ffpe-summary%> is not valid: %s"
msgstr ""
-#: fortran/options.c:520
+#: fortran/options.c:529
#, gcc-internal-format
msgid "Argument to %<-fcheck%> is not valid: %s"
msgstr ""
-#: fortran/options.c:569
+#: fortran/options.c:578
#, gcc-internal-format
msgid "%<-static-libgfortran%> is not supported in this configuration"
msgstr ""
-#: fortran/options.c:592
+#: fortran/options.c:601
#, gcc-internal-format, gfc-internal-format
msgid "Maximum supported identifier length is %d"
msgstr ""
-#: fortran/options.c:612
+#: fortran/options.c:621
#, gcc-internal-format
msgid "Unrecognized option to %<-finit-logical%>: %s"
msgstr ""
-#: fortran/options.c:628
+#: fortran/options.c:637
#, gcc-internal-format
msgid "The value of n in %<-finit-character=n%> must be between 0 and 127"
msgstr ""
@@ -54642,102 +54795,102 @@ msgstr ""
msgid "ASSOCIATE construct at %C"
msgstr ""
-#: fortran/parse.c:4234
+#: fortran/parse.c:4235
#, gcc-internal-format, gfc-internal-format
msgid "Statement label in ENDDO at %C doesn't match DO label"
msgstr ""
-#: fortran/parse.c:4250
+#: fortran/parse.c:4251
#, gcc-internal-format, gfc-internal-format
msgid "Named block DO at %L requires matching ENDDO name"
msgstr ""
-#: fortran/parse.c:4431
+#: fortran/parse.c:4432
#, gcc-internal-format, gfc-internal-format
msgid "Missing !$OMP END ATOMIC after !$OMP ATOMIC CAPTURE at %C"
msgstr ""
-#: fortran/parse.c:4447 fortran/parse.c:4506
+#: fortran/parse.c:4448 fortran/parse.c:4507
#, gcc-internal-format, gfc-internal-format
msgid "OpenACC directive inside of CRITICAL block at %C"
msgstr ""
-#: fortran/parse.c:4481
+#: fortran/parse.c:4482
#, gcc-internal-format, gfc-internal-format
msgid "Expecting %s at %C"
msgstr ""
-#: fortran/parse.c:4525
+#: fortran/parse.c:4526
#, gcc-internal-format, gfc-internal-format
msgid "Expected DO loop at %C"
msgstr ""
-#: fortran/parse.c:4545
+#: fortran/parse.c:4546
#, gcc-internal-format, gfc-internal-format
msgid "Redundant !$ACC END LOOP at %C"
msgstr ""
-#: fortran/parse.c:4758
+#: fortran/parse.c:4759
#, gcc-internal-format, gfc-internal-format
msgid "Name after !$omp critical and !$omp end critical does not match at %C"
msgstr ""
-#: fortran/parse.c:4815
+#: fortran/parse.c:4816
#, gcc-internal-format, gfc-internal-format
msgid "%s statement at %C cannot terminate a non-block DO loop"
msgstr ""
-#: fortran/parse.c:4829
+#: fortran/parse.c:4830
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %C after the first executable statement"
msgstr ""
-#: fortran/parse.c:5060
+#: fortran/parse.c:5061
#, gcc-internal-format
msgid "Contained procedure %qs at %C is already ambiguous"
msgstr ""
-#: fortran/parse.c:5117
+#: fortran/parse.c:5118
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected %s statement in CONTAINS section at %C"
msgstr ""
-#: fortran/parse.c:5142
+#: fortran/parse.c:5143
#, gcc-internal-format, gfc-internal-format
msgid "CONTAINS statement without FUNCTION or SUBROUTINE statement at %C"
msgstr ""
-#: fortran/parse.c:5254
+#: fortran/parse.c:5255
#, gcc-internal-format, gfc-internal-format
msgid "CONTAINS statement at %C is already in a contained program unit"
msgstr ""
-#: fortran/parse.c:5300
+#: fortran/parse.c:5301
#, gcc-internal-format
msgid "gfc_global_used(): Bad type"
msgstr ""
-#: fortran/parse.c:5305
+#: fortran/parse.c:5306
#, gcc-internal-format
msgid "Global binding name %qs at %L is already being used as a %s at %L"
msgstr ""
-#: fortran/parse.c:5308
+#: fortran/parse.c:5309
#, gcc-internal-format
msgid "Global name %qs at %L is already being used as a %s at %L"
msgstr ""
-#: fortran/parse.c:5329
+#: fortran/parse.c:5330
#, gcc-internal-format, gfc-internal-format
msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L"
msgstr ""
-#: fortran/parse.c:5355
+#: fortran/parse.c:5356
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected %s statement in BLOCK DATA at %C"
msgstr ""
-#: fortran/parse.c:5440
+#: fortran/parse.c:5441
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected %s statement in MODULE at %C"
msgstr ""
@@ -54745,7 +54898,7 @@ 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:5827
+#: fortran/parse.c:5828
#, gcc-internal-format, gfc-internal-format
msgid "Two main PROGRAMs at %L and %C"
msgstr ""
@@ -54942,186 +55095,191 @@ msgstr ""
msgid "Syntax error in COMPLEX constant at %C"
msgstr ""
-#: fortran/primary.c:1637
+#: fortran/primary.c:1557
+#, gcc-internal-format, gfc-internal-format
+msgid "Namelist '%s' can not be an argument at %L"
+msgstr ""
+
+#: fortran/primary.c:1643
#, gcc-internal-format
msgid "Keyword %qs at %C has already appeared in the current argument list"
msgstr ""
-#: fortran/primary.c:1701
+#: fortran/primary.c:1707
#, gcc-internal-format, gfc-internal-format
msgid "argument list function at %C"
msgstr ""
-#: fortran/primary.c:1769
+#: fortran/primary.c:1775
#, gcc-internal-format, gfc-internal-format
msgid "Expected alternate return label at %C"
msgstr ""
-#: fortran/primary.c:1791
+#: fortran/primary.c:1797
#, gcc-internal-format, gfc-internal-format
msgid "Missing keyword name in actual argument list at %C"
msgstr ""
-#: fortran/primary.c:1837
+#: fortran/primary.c:1843
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in argument list at %C"
msgstr ""
-#: fortran/primary.c:1858
+#: fortran/primary.c:1864
#, gcc-internal-format
msgid "extend_ref(): Bad tail"
msgstr ""
-#: fortran/primary.c:1896
+#: fortran/primary.c:1902
#, gcc-internal-format, gfc-internal-format
msgid ""
"Array section designator, e.g. '(:)', is required besides the coarray "
"designator '[...]' at %C"
msgstr ""
-#: fortran/primary.c:1904
+#: fortran/primary.c:1910
#, gcc-internal-format
msgid "Coarray designator at %C but %qs is not a coarray"
msgstr ""
-#: fortran/primary.c:1975
+#: fortran/primary.c:1981
#, gcc-internal-format
msgid "Symbol %qs at %C has no IMPLICIT type"
msgstr ""
-#: fortran/primary.c:1981
+#: fortran/primary.c:1987
#, gcc-internal-format
msgid "Unexpected %<%%%> for nonderived-type variable %qs at %C"
msgstr ""
-#: fortran/primary.c:1999
+#: fortran/primary.c:2005
#, gcc-internal-format, gfc-internal-format
msgid "Expected structure component name at %C"
msgstr ""
-#: fortran/primary.c:2050
+#: fortran/primary.c:2056
#, gcc-internal-format, gfc-internal-format
msgid "Expected argument list at %C"
msgstr ""
-#: fortran/primary.c:2081
+#: fortran/primary.c:2087
#, gcc-internal-format
msgid "Procedure pointer component %qs requires an argument list at %C"
msgstr ""
-#: fortran/primary.c:2169
+#: fortran/primary.c:2175
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed procedure-pointer component at %C"
msgstr ""
-#: fortran/primary.c:2204
+#: fortran/primary.c:2210
#, gcc-internal-format
msgid "gfc_variable_attr(): Expression isn't a variable"
msgstr ""
-#: fortran/primary.c:2259
+#: fortran/primary.c:2265
#, gcc-internal-format
msgid "gfc_variable_attr(): Bad array reference"
msgstr ""
-#: fortran/primary.c:2429
+#: fortran/primary.c:2435
#, gcc-internal-format, gfc-internal-format
msgid "Structure constructor with missing optional arguments at %C"
msgstr ""
-#: fortran/primary.c:2438
+#: fortran/primary.c:2444
#, gcc-internal-format
msgid ""
"No initializer for allocatable component '%qs' given in the structure "
"constructor at %C"
msgstr ""
-#: fortran/primary.c:2445
+#: fortran/primary.c:2451
#, gcc-internal-format
msgid ""
"No initializer for component %qs given in the structure constructor at %C!"
msgstr ""
-#: fortran/primary.c:2493
+#: fortran/primary.c:2499
#, gcc-internal-format
msgid "Can't construct ABSTRACT type %qs at %L"
msgstr ""
-#: fortran/primary.c:2513
+#: fortran/primary.c:2519
#, gcc-internal-format, gfc-internal-format
msgid "Structure constructor with named arguments at %C"
msgstr ""
-#: fortran/primary.c:2528
+#: fortran/primary.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "Component initializer without name after component named %s at %L!"
msgstr ""
-#: fortran/primary.c:2533
+#: fortran/primary.c:2539
#, gcc-internal-format, gfc-internal-format
msgid "Too many components in structure constructor at %L!"
msgstr ""
-#: fortran/primary.c:2570
+#: fortran/primary.c:2576
#, gcc-internal-format
msgid "Component %qs is initialized twice in the structure constructor at %L!"
msgstr ""
-#: fortran/primary.c:2582
+#: fortran/primary.c:2588
#, gcc-internal-format
msgid ""
"Coindexed expression to pointer component %qs in structure constructor at %L!"
msgstr ""
-#: fortran/primary.c:2636
+#: fortran/primary.c:2642
#, gcc-internal-format
msgid ""
"component %qs at %L has already been set by a parent derived type constructor"
msgstr ""
-#: fortran/primary.c:2825
+#: fortran/primary.c:2831
#, gcc-internal-format
msgid ""
"%qs 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:2948
+#: fortran/primary.c:2954
#, gcc-internal-format
msgid "Unexpected use of subroutine name %qs at %C"
msgstr ""
-#: fortran/primary.c:2980
+#: fortran/primary.c:2986
#, gcc-internal-format
msgid "Statement function %qs requires argument list at %C"
msgstr ""
-#: fortran/primary.c:2983
+#: fortran/primary.c:2989
#, gcc-internal-format
msgid "Function %qs requires an argument list at %C"
msgstr ""
-#: fortran/primary.c:3033
+#: fortran/primary.c:3039
#, gcc-internal-format
msgid "Missing argument to %qs at %C"
msgstr ""
-#: fortran/primary.c:3189
+#: fortran/primary.c:3195
#, gcc-internal-format
msgid "Missing argument list in function %qs at %C"
msgstr ""
-#: fortran/primary.c:3223
+#: fortran/primary.c:3233
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %C is not appropriate for an expression"
msgstr ""
-#: fortran/primary.c:3323
+#: fortran/primary.c:3333
#, gcc-internal-format, gfc-internal-format
msgid "Named constant at %C in an EQUIVALENCE"
msgstr ""
-#: fortran/primary.c:3357
+#: fortran/primary.c:3367
#, gcc-internal-format
msgid "%qs at %C is not a variable"
msgstr ""
@@ -55507,7 +55665,7 @@ msgid ""
"Declare it RECURSIVE or use %<-frecursive%>"
msgstr ""
-#: fortran/resolve.c:1776 fortran/resolve.c:8921 fortran/resolve.c:10546
+#: fortran/resolve.c:1776 fortran/resolve.c:8932 fortran/resolve.c:10557
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr ""
@@ -55624,7 +55782,7 @@ msgstr ""
msgid "Unable to resolve the specific function %qs at %L"
msgstr ""
-#: fortran/resolve.c:2740 fortran/resolve.c:15282
+#: fortran/resolve.c:2740 fortran/resolve.c:15308
#, gcc-internal-format
msgid "Function %qs at %L has no IMPLICIT type"
msgstr ""
@@ -56186,69 +56344,76 @@ msgid ""
"parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7217 fortran/resolve.c:7224
+#: fortran/resolve.c:7217 fortran/resolve.c:7232
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7239
+#: fortran/resolve.c:7224
+#, gcc-internal-format, gfc-internal-format
+msgid ""
+"Array specification or array-valued SOURCE= expression required in ALLOCATE "
+"statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:7247
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7266
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7285
+#: fortran/resolve.c:7293
#, gcc-internal-format
msgid ""
"%qs must not appear in the array specification at %L in the same ALLOCATE "
"statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7300
+#: fortran/resolve.c:7308
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7311
+#: fortran/resolve.c:7319
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7343
+#: fortran/resolve.c:7351
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7366
+#: fortran/resolve.c:7374
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7377
+#: fortran/resolve.c:7385
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7388
+#: fortran/resolve.c:7396
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7411
+#: fortran/resolve.c:7419
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7441
+#: fortran/resolve.c:7449
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7447 fortran/resolve.c:7453
+#: fortran/resolve.c:7455 fortran/resolve.c:7461
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -56257,234 +56422,234 @@ 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:7665
+#: fortran/resolve.c:7673
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7716
+#: fortran/resolve.c:7724
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr ""
-#: fortran/resolve.c:7727
+#: fortran/resolve.c:7735
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:7740
+#: fortran/resolve.c:7748
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7786
+#: fortran/resolve.c:7794
#, gcc-internal-format, gfc-internal-format
msgid ""
"Selection expression in computed GOTO statement at %L must be a scalar "
"integer expression"
msgstr ""
-#: fortran/resolve.c:7805
+#: fortran/resolve.c:7813
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7815
+#: fortran/resolve.c:7823
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L must be a scalar expression"
msgstr ""
-#: fortran/resolve.c:7833 fortran/resolve.c:7841
+#: fortran/resolve.c:7841 fortran/resolve.c:7849
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr ""
-#: fortran/resolve.c:7903 fortran/resolve.c:8339
+#: fortran/resolve.c:7911 fortran/resolve.c:8350
#, gcc-internal-format, gfc-internal-format
msgid ""
"The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7929
+#: fortran/resolve.c:7937
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7941
+#: fortran/resolve.c:7949
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7956
+#: fortran/resolve.c:7964
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:8059
+#: fortran/resolve.c:8067
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:8134
+#: fortran/resolve.c:8142
#, gcc-internal-format
msgid "Associate-name %qs at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8145
+#: fortran/resolve.c:8153
#, gcc-internal-format, gfc-internal-format
msgid "CLASS selector at %L needs a temporary which is not yet implemented"
msgstr ""
-#: fortran/resolve.c:8258
+#: fortran/resolve.c:8269
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8275 fortran/resolve.c:8287
+#: fortran/resolve.c:8286 fortran/resolve.c:8298
#, gcc-internal-format, gfc-internal-format
msgid "Selector at %L must not be coindexed"
msgstr ""
-#: fortran/resolve.c:8303
+#: fortran/resolve.c:8314
#, gcc-internal-format
msgid "Derived type %qs at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8315
+#: fortran/resolve.c:8326
#, gcc-internal-format
msgid "Derived type %qs at %L must be an extension of %qs"
msgstr ""
-#: fortran/resolve.c:8318
+#: fortran/resolve.c:8329
#, gcc-internal-format
msgid "Unexpected intrinsic type %qs at %L"
msgstr ""
-#: fortran/resolve.c:8327
+#: fortran/resolve.c:8338
#, gcc-internal-format, gfc-internal-format
msgid ""
"The type-spec at %L shall specify that each length type parameter is assumed"
msgstr ""
-#: fortran/resolve.c:8519
+#: fortran/resolve.c:8530
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8608
+#: fortran/resolve.c:8619
#, gcc-internal-format, gfc-internal-format
msgid "Invalid context for NULL () intrinsic at %L"
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8636
+#: fortran/resolve.c:8647
#, gcc-internal-format, gfc-internal-format
msgid ""
"Data transfer element at %L cannot be polymorphic unless it is processed by "
"a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8648
+#: fortran/resolve.c:8659
#, gcc-internal-format, gfc-internal-format
msgid ""
"Data transfer element at %L cannot have POINTER components unless it is "
"processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8657
+#: fortran/resolve.c:8668
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8664
+#: fortran/resolve.c:8675
#, gcc-internal-format, gfc-internal-format
msgid ""
"Data transfer element at %L cannot have ALLOCATABLE components unless it is "
"processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8675 fortran/resolve.c:8681
+#: fortran/resolve.c:8686 fortran/resolve.c:8692
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8695
+#: fortran/resolve.c:8706
#, gcc-internal-format, gfc-internal-format
msgid ""
"Data transfer element at %L cannot be a full reference to an assumed-size "
"array"
msgstr ""
-#: fortran/resolve.c:8752
+#: fortran/resolve.c:8763
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8762
+#: fortran/resolve.c:8773
#, gcc-internal-format, gfc-internal-format
msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
msgstr ""
-#: fortran/resolve.c:8766
+#: fortran/resolve.c:8777
#, gcc-internal-format, gfc-internal-format
msgid "Event variable argument at %L must be a coarray or coindexed"
msgstr ""
-#: fortran/resolve.c:8769
+#: fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Event variable argument at %L must be a coarray but not coindexed"
msgstr ""
-#: fortran/resolve.c:8776 fortran/resolve.c:8894
+#: fortran/resolve.c:8787 fortran/resolve.c:8905
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:8788 fortran/resolve.c:8901
+#: fortran/resolve.c:8799 fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8800
+#: fortran/resolve.c:8811
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8811
+#: fortran/resolve.c:8822
#, gcc-internal-format, gfc-internal-format
msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8871
+#: fortran/resolve.c:8882
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8875 fortran/resolve.c:8885
+#: fortran/resolve.c:8886 fortran/resolve.c:8896
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr ""
-#: fortran/resolve.c:8928
+#: fortran/resolve.c:8939
#, gcc-internal-format, gfc-internal-format
msgid ""
"Statement at %L is not a valid branch target statement for the branch "
"statement at %L"
msgstr ""
-#: fortran/resolve.c:8938
+#: fortran/resolve.c:8949
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8955 fortran/resolve.c:8978
+#: fortran/resolve.c:8966 fortran/resolve.c:8989
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8959 fortran/resolve.c:8984
+#: fortran/resolve.c:8970 fortran/resolve.c:8995
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -56492,93 +56657,93 @@ 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:8999
+#: fortran/resolve.c:9010
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:9071
+#: fortran/resolve.c:9082
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:9087
+#: fortran/resolve.c:9098
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:9095 fortran/resolve.c:9182
+#: fortran/resolve.c:9106 fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:9105 fortran/resolve.c:9192
+#: fortran/resolve.c:9116 fortran/resolve.c:9203
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:9136
+#: fortran/resolve.c:9147
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:9145
+#: fortran/resolve.c:9156
#, gcc-internal-format
msgid ""
"The FORALL with index %qs 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:9314
+#: fortran/resolve.c:9325
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:9392
+#: fortran/resolve.c:9403
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9470
+#: fortran/resolve.c:9481
#, gcc-internal-format
msgid "gfc_resolve_blocks(): Bad block type"
msgstr ""
-#: fortran/resolve.c:9584
+#: fortran/resolve.c:9595
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9616
+#: fortran/resolve.c:9627
#, gcc-internal-format, gfc-internal-format
msgid ""
"Coindexed expression at %L is assigned to a derived type variable with a "
"POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9621
+#: fortran/resolve.c:9632
#, gcc-internal-format, gfc-internal-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:9631
+#: fortran/resolve.c:9642
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9663
+#: fortran/resolve.c:9674
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to polymorphic coarray at %L is not permitted"
msgstr ""
-#: fortran/resolve.c:9667
+#: fortran/resolve.c:9678
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to an allocatable polymorphic variable at %L"
msgstr ""
-#: fortran/resolve.c:9672
+#: fortran/resolve.c:9683
#, gcc-internal-format
msgid ""
"Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-"
@@ -56586,27 +56751,27 @@ msgid ""
msgstr ""
#. See PR 43366.
-#: fortran/resolve.c:9677
+#: fortran/resolve.c:9688
#, gcc-internal-format, gfc-internal-format
msgid ""
"Assignment to an allocatable polymorphic variable at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:9683
+#: fortran/resolve.c:9694
#, gcc-internal-format, gfc-internal-format
msgid ""
"Nonallocatable variable must not be polymorphic in intrinsic assignment at "
"%L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9705
#, gcc-internal-format, gfc-internal-format
msgid ""
"Coindexed variable must not have an allocatable ultimate component in "
"assignment at %L"
msgstr ""
-#: fortran/resolve.c:9997
+#: fortran/resolve.c:10008
#, gcc-internal-format, gfc-internal-format
msgid ""
"TODO: type-bound defined assignment(s) at %L not done because multiple part "
@@ -56615,72 +56780,72 @@ msgstr ""
#. Even if standard does not support this feature, continue to build
#. the two statements to avoid upsetting frontend_passes.c.
-#: fortran/resolve.c:10239
+#: fortran/resolve.c:10250
#, gcc-internal-format, gfc-internal-format
msgid "Pointer procedure assignment at %L"
msgstr ""
-#: fortran/resolve.c:10251
+#: fortran/resolve.c:10262
#, gcc-internal-format, gfc-internal-format
msgid ""
"The function result on the lhs of the assignment at %L must have the pointer "
"attribute."
msgstr ""
-#: fortran/resolve.c:10478
+#: fortran/resolve.c:10489
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:10481
+#: fortran/resolve.c:10492
#, gcc-internal-format
msgid "Variable %qs has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:10492
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid ""
"Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:10554
+#: fortran/resolve.c:10565
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:10589
+#: fortran/resolve.c:10600
#, gcc-internal-format, gfc-internal-format
msgid "Invalid NULL at %L"
msgstr ""
-#: fortran/resolve.c:10593
+#: fortran/resolve.c:10604
#, gcc-internal-format, gfc-internal-format
msgid ""
"Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
msgstr ""
-#: fortran/resolve.c:10649
+#: fortran/resolve.c:10660
#, gcc-internal-format
msgid "gfc_resolve_code(): No expression on DO WHILE"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10665
#, gcc-internal-format, gfc-internal-format
msgid ""
"Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:10738
+#: fortran/resolve.c:10749
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:10809
+#: fortran/resolve.c:10820
#, gcc-internal-format
msgid "gfc_resolve_code(): Bad statement code"
msgstr ""
-#: fortran/resolve.c:10904
+#: fortran/resolve.c:10915
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s with binding label %s at %L uses the same global identifier as "
@@ -56689,7 +56854,7 @@ msgstr ""
#. This can only happen if the variable is defined in a module - if it
#. isn't the same module, reject it.
-#: fortran/resolve.c:10917
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s from module %s with binding label %s at %L uses the same global "
@@ -56699,56 +56864,56 @@ msgstr ""
#. Print an error if the procedure is defined multiple times; we have to
#. exclude references to the same procedure via module association or
#. multiple checks for the same procedure.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10945
#, gcc-internal-format, gfc-internal-format
msgid ""
"Procedure %s with binding label %s at %L uses the same global identifier as "
"entity at %L"
msgstr ""
-#: fortran/resolve.c:11011
+#: fortran/resolve.c:11022
#, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr ""
-#: fortran/resolve.c:11347
+#: fortran/resolve.c:11358
#, gcc-internal-format
msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
msgstr ""
-#: fortran/resolve.c:11351
+#: fortran/resolve.c:11362
#, gcc-internal-format
msgid "Scalar object %qs at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11359
+#: fortran/resolve.c:11370
#, gcc-internal-format
msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
msgstr ""
-#: fortran/resolve.c:11369
+#: fortran/resolve.c:11380
#, gcc-internal-format
msgid "Array %qs at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:11384
+#: fortran/resolve.c:11395
#, gcc-internal-format
msgid "Type %qs of CLASS variable %qs at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:11396
+#: fortran/resolve.c:11407
#, gcc-internal-format
msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11438
#, gcc-internal-format
msgid ""
"The type %qs 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:11449
+#: fortran/resolve.c:11460
#, gcc-internal-format
msgid ""
"Implied SAVE for module variable %qs at %L, needed due to the default "
@@ -56757,495 +56922,495 @@ msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:11497
+#: fortran/resolve.c:11508
#, gcc-internal-format
msgid "The module or main program array %qs at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:11509
+#: fortran/resolve.c:11520
#, gcc-internal-format
msgid ""
"Entity %qs at %L has a deferred type parameter and requires either the "
"pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:11525
+#: fortran/resolve.c:11536
#, gcc-internal-format, gfc-internal-format
msgid ""
"Entity with assumed character length at %L must be a dummy argument or a "
"PARAMETER"
msgstr ""
-#: fortran/resolve.c:11546
+#: fortran/resolve.c:11557
#, gcc-internal-format
msgid "%qs at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:11553
+#: fortran/resolve.c:11564
#, gcc-internal-format
msgid "COMMON variable %qs at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:11600
+#: fortran/resolve.c:11611
#, gcc-internal-format
msgid "Allocatable %qs at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:11603
+#: fortran/resolve.c:11614
#, gcc-internal-format
msgid "External %qs at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:11607
+#: fortran/resolve.c:11618
#, gcc-internal-format
msgid "Dummy %qs at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:11610
+#: fortran/resolve.c:11621
#, gcc-internal-format
msgid "Intrinsic %qs at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:11613
+#: fortran/resolve.c:11624
#, gcc-internal-format
msgid "Function result %qs at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11627
#, gcc-internal-format
msgid "Automatic array %qs at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:11658
+#: fortran/resolve.c:11669
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L"
msgstr ""
-#: fortran/resolve.c:11685
+#: fortran/resolve.c:11696
#, gcc-internal-format
msgid "Character-valued statement function %qs at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:11707
+#: fortran/resolve.c:11718
#, gcc-internal-format
msgid ""
"%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is "
"PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11729
+#: fortran/resolve.c:11740
#, gcc-internal-format
msgid ""
"Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs "
"which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:11747
+#: fortran/resolve.c:11758
#, gcc-internal-format
msgid "Function %qs at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:11756
+#: fortran/resolve.c:11767
#, gcc-internal-format
msgid "External object %qs at %L may not have an initializer"
msgstr ""
-#: fortran/resolve.c:11764
+#: fortran/resolve.c:11775
#, gcc-internal-format
msgid "ELEMENTAL function %qs at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:11774
+#: fortran/resolve.c:11785
#, gcc-internal-format
msgid ""
"Statement function %qs at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:11793
+#: fortran/resolve.c:11804
#, gcc-internal-format
msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11808
#, gcc-internal-format
msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:11801
+#: fortran/resolve.c:11812
#, gcc-internal-format
msgid "CHARACTER(*) function %qs at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:11805
+#: fortran/resolve.c:11816
#, gcc-internal-format
msgid "CHARACTER(*) function %qs at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:11818
+#: fortran/resolve.c:11829
#, gcc-internal-format
msgid "CHARACTER(*) function %qs at %L"
msgstr ""
-#: fortran/resolve.c:11827
+#: fortran/resolve.c:11838
#, gcc-internal-format
msgid "Procedure pointer %qs at %L shall not be elemental"
msgstr ""
-#: fortran/resolve.c:11833
+#: fortran/resolve.c:11844
#, gcc-internal-format
msgid "Dummy procedure %qs at %L shall not be elemental"
msgstr ""
-#: fortran/resolve.c:11889
+#: fortran/resolve.c:11900
#, gcc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
msgstr ""
-#: fortran/resolve.c:11895
+#: fortran/resolve.c:11906
#, gcc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
msgstr ""
-#: fortran/resolve.c:11901
+#: fortran/resolve.c:11912
#, gcc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
msgstr ""
-#: fortran/resolve.c:11909
+#: fortran/resolve.c:11920
#, gcc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
msgstr ""
-#: fortran/resolve.c:11915
+#: fortran/resolve.c:11926
#, gcc-internal-format
msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:11953
+#: fortran/resolve.c:11964
#, gcc-internal-format, gfc-internal-format
msgid ""
"Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface "
"in %s"
msgstr ""
-#: fortran/resolve.c:11961
+#: fortran/resolve.c:11972
#, gcc-internal-format, gfc-internal-format
msgid ""
"Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its "
"interface in %s"
msgstr ""
-#: fortran/resolve.c:11969
+#: fortran/resolve.c:11980
#, gcc-internal-format, gfc-internal-format
msgid ""
"Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its "
"interface in %s"
msgstr ""
-#: fortran/resolve.c:11978
+#: fortran/resolve.c:11989
#, gcc-internal-format, gfc-internal-format
msgid ""
"%s between the MODULE PROCEDURE declaration in module %s and the declaration "
"at %L in SUBMODULE %s"
msgstr ""
-#: fortran/resolve.c:12063
+#: fortran/resolve.c:12074
#, gcc-internal-format
msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:12072
+#: fortran/resolve.c:12083
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr ""
-#: fortran/resolve.c:12081
+#: fortran/resolve.c:12092
#, gcc-internal-format
msgid "Argument of FINAL procedure at %L must be of type %qs"
msgstr ""
-#: fortran/resolve.c:12089
+#: fortran/resolve.c:12100
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:12095
+#: fortran/resolve.c:12106
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:12101
+#: fortran/resolve.c:12112
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:12109
+#: fortran/resolve.c:12120
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12118
+#: fortran/resolve.c:12129
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:12140
+#: fortran/resolve.c:12151
#, gcc-internal-format
msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
msgstr ""
-#: fortran/resolve.c:12177
+#: fortran/resolve.c:12188
#, gcc-internal-format
msgid ""
"Only array FINAL procedures declared for derived type %qs defined at %L, "
"suggest also scalar one"
msgstr ""
-#: fortran/resolve.c:12217
+#: fortran/resolve.c:12228
#, gcc-internal-format
msgid "%qs and %qs can't be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
msgstr ""
-#: fortran/resolve.c:12253
+#: fortran/resolve.c:12264
#, gcc-internal-format
msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:12312
+#: fortran/resolve.c:12323
#, gcc-internal-format
msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
msgstr ""
-#: fortran/resolve.c:12324
+#: fortran/resolve.c:12335
#, gcc-internal-format
msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:12352
+#: fortran/resolve.c:12363
#, gcc-internal-format
msgid "GENERIC %qs at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12419
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:12590
+#: fortran/resolve.c:12601
#, gcc-internal-format
msgid ""
"%qs must be a module procedure or an external procedure with an explicit "
"interface at %L"
msgstr ""
-#: fortran/resolve.c:12632
+#: fortran/resolve.c:12643
#, gcc-internal-format
msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
msgstr ""
-#: fortran/resolve.c:12646
+#: fortran/resolve.c:12657
#, gcc-internal-format
msgid "Procedure %qs with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:12660 fortran/resolve.c:13155
+#: fortran/resolve.c:12671 fortran/resolve.c:13166
#, gcc-internal-format
msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
msgstr ""
-#: fortran/resolve.c:12668
+#: fortran/resolve.c:12679
#, gcc-internal-format
msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
msgstr ""
-#: fortran/resolve.c:12677
+#: fortran/resolve.c:12688
#, gcc-internal-format
msgid "Passed-object dummy argument of %qs at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:12683
+#: fortran/resolve.c:12694
#, gcc-internal-format
msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:12689
+#: fortran/resolve.c:12700
#, gcc-internal-format
msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
msgstr ""
-#: fortran/resolve.c:12718
+#: fortran/resolve.c:12729
#, gcc-internal-format
msgid "Procedure %qs at %L has the same name as a component of %qs"
msgstr ""
-#: fortran/resolve.c:12727
+#: fortran/resolve.c:12738
#, gcc-internal-format
msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
msgstr ""
-#: fortran/resolve.c:12819
+#: fortran/resolve.c:12830
#, gcc-internal-format
msgid ""
"Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and "
"not overridden"
msgstr ""
-#: fortran/resolve.c:12917
+#: fortran/resolve.c:12928
#, gcc-internal-format
msgid ""
"As extending type %qs at %L has a coarray component, parent type %qs shall "
"also have one"
msgstr ""
-#: fortran/resolve.c:12930
+#: fortran/resolve.c:12941
#, gcc-internal-format
msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:12950
+#: fortran/resolve.c:12961
#, gcc-internal-format
msgid "Coarray component %qs at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:12960
+#: fortran/resolve.c:12971
#, gcc-internal-format
msgid ""
"Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12971
+#: fortran/resolve.c:12982
#, gcc-internal-format
msgid ""
"Component %qs at %L with coarray component shall be a nonpointer, "
"nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12981
+#: fortran/resolve.c:12992
#, gcc-internal-format
msgid ""
"Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:13082
+#: fortran/resolve.c:13093
#, gcc-internal-format
msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
msgstr ""
-#: fortran/resolve.c:13097
+#: fortran/resolve.c:13108
#, gcc-internal-format
msgid ""
"Procedure pointer component %qs with PASS at %L must have at least one "
"argument"
msgstr ""
-#: fortran/resolve.c:13114
+#: fortran/resolve.c:13125
#, gcc-internal-format
msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
msgstr ""
-#: fortran/resolve.c:13125
+#: fortran/resolve.c:13136
#, gcc-internal-format
msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:13135
+#: fortran/resolve.c:13146
#, gcc-internal-format
msgid ""
"Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:13145
+#: fortran/resolve.c:13156
#, gcc-internal-format
msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:13187
+#: fortran/resolve.c:13198
#, gcc-internal-format
msgid ""
"Component %qs of %qs at %L has the same name as an inherited type-bound "
"procedure"
msgstr ""
-#: fortran/resolve.c:13200
+#: fortran/resolve.c:13211
#, gcc-internal-format
msgid ""
"Character length of component %qs needs to be a constant specification "
"expression at %L"
msgstr ""
-#: fortran/resolve.c:13211
+#: fortran/resolve.c:13222
#, gcc-internal-format
msgid ""
"Character component %qs of %qs at %L with deferred length must be a POINTER "
"or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:13242
+#: fortran/resolve.c:13253
#, gcc-internal-format
msgid ""
"the component %qs is a PRIVATE type and cannot be a component of %qs, which "
"is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:13250
+#: fortran/resolve.c:13261
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:13259
+#: fortran/resolve.c:13270
#, gcc-internal-format, gfc-internal-format
msgid ""
"Component %s of SEQUENCE type declared at %L does not have the SEQUENCE "
"attribute"
msgstr ""
-#: fortran/resolve.c:13277 fortran/resolve.c:13289
+#: fortran/resolve.c:13288 fortran/resolve.c:13300
#, gcc-internal-format
msgid ""
"The pointer component %qs of %qs at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:13301
+#: fortran/resolve.c:13312
#, gcc-internal-format
msgid "Component %qs with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:13369
+#: fortran/resolve.c:13380
#, gcc-internal-format
msgid ""
"Generic name %qs of function %qs at %L being the same name as derived type "
"at %L"
msgstr ""
-#: fortran/resolve.c:13425
+#: fortran/resolve.c:13436
#, gcc-internal-format
msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:13431
+#: fortran/resolve.c:13442
#, gcc-internal-format
msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
msgstr ""
-#: fortran/resolve.c:13437
+#: fortran/resolve.c:13448
#, gcc-internal-format
msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
msgstr ""
-#: fortran/resolve.c:13445
+#: fortran/resolve.c:13456
#, gcc-internal-format
msgid ""
"NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
msgstr ""
-#: fortran/resolve.c:13455
+#: fortran/resolve.c:13466
#, gcc-internal-format
msgid ""
"NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a "
"defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:13465
+#: fortran/resolve.c:13476
#, gcc-internal-format
msgid ""
"NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER "
@@ -57254,471 +57419,476 @@ msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:13473
+#: fortran/resolve.c:13484
#, gcc-internal-format
msgid ""
"NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER "
"components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:13490
+#: fortran/resolve.c:13501
#, gcc-internal-format
msgid ""
"NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC "
"namelist %qs at %L"
msgstr ""
-#: fortran/resolve.c:13500
+#: fortran/resolve.c:13511
#, gcc-internal-format
msgid ""
"NAMELIST object %qs has use-associated PRIVATE components and cannot be "
"member of namelist %qs at %L"
msgstr ""
-#: fortran/resolve.c:13511
+#: fortran/resolve.c:13522
#, gcc-internal-format
msgid ""
"NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC "
"namelist %qs at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13549
#, gcc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
msgstr ""
-#: fortran/resolve.c:13557
+#: fortran/resolve.c:13568
#, gcc-internal-format
msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:13569
+#: fortran/resolve.c:13580
#, gcc-internal-format
msgid ""
"Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13580
+#: fortran/resolve.c:13591
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:13667
+#: fortran/resolve.c:13678
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr ""
-#: fortran/resolve.c:13670
+#: fortran/resolve.c:13681
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr ""
-#: fortran/resolve.c:13759
+#: fortran/resolve.c:13770
#, gcc-internal-format
msgid ""
"%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an "
"assumed-shape or assumed-rank array"
msgstr ""
-#: fortran/resolve.c:13777
+#: fortran/resolve.c:13788
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:13780
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:13788
+#: fortran/resolve.c:13799
#, gcc-internal-format, gfc-internal-format
msgid "Assumed-rank array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:13795
+#: fortran/resolve.c:13806
#, gcc-internal-format, gfc-internal-format
msgid ""
"Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
msgstr ""
-#: fortran/resolve.c:13808
+#: fortran/resolve.c:13819
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:13814
+#: fortran/resolve.c:13825
#, gcc-internal-format
msgid ""
"%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:13824
+#: fortran/resolve.c:13835
#, gcc-internal-format
msgid ""
"Character dummy variable %qs at %L with VALUE attribute must have constant "
"length"
msgstr ""
-#: fortran/resolve.c:13833
+#: fortran/resolve.c:13844
#, gcc-internal-format
msgid ""
"C interoperable character dummy variable %qs at %L with VALUE attribute must "
"have length one"
msgstr ""
-#: fortran/resolve.c:13846 fortran/resolve.c:14013
+#: fortran/resolve.c:13857 fortran/resolve.c:14024
#, gcc-internal-format
msgid "The derived type %qs at %L is of type %qs, which has not been defined"
msgstr ""
-#: fortran/resolve.c:13860
+#: fortran/resolve.c:13871
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
msgstr ""
-#: fortran/resolve.c:13869
+#: fortran/resolve.c:13880
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of "
"an numeric intrinsic type"
msgstr ""
-#: fortran/resolve.c:13878
+#: fortran/resolve.c:13889
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, "
"CODIMENSION, POINTER or VALUE attribute"
msgstr ""
-#: fortran/resolve.c:13886
+#: fortran/resolve.c:13897
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) "
"attribute"
msgstr ""
-#: fortran/resolve.c:13893
+#: fortran/resolve.c:13904
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an "
"assumed-size array"
msgstr ""
-#: fortran/resolve.c:13913
+#: fortran/resolve.c:13924
#, gcc-internal-format, gfc-internal-format
msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
msgstr ""
-#: fortran/resolve.c:13920
+#: fortran/resolve.c:13931
#, gcc-internal-format, gfc-internal-format
msgid ""
"Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, "
"POINTER or VALUE attribute"
msgstr ""
-#: fortran/resolve.c:13927
+#: fortran/resolve.c:13938
#, gcc-internal-format, gfc-internal-format
msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
msgstr ""
-#: fortran/resolve.c:13934
+#: fortran/resolve.c:13945
#, gcc-internal-format, gfc-internal-format
msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
msgstr ""
-#: fortran/resolve.c:13959
+#: fortran/resolve.c:13970
#, gcc-internal-format
msgid ""
"Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block "
"nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:14039
+#: fortran/resolve.c:14050
#, gcc-internal-format
msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
msgstr ""
-#: fortran/resolve.c:14054
+#: fortran/resolve.c:14065
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE "
"must be a coarray"
msgstr ""
-#: fortran/resolve.c:14067
+#: fortran/resolve.c:14078
#, gcc-internal-format, gfc-internal-format
msgid ""
"Variable %s at %L of type EVENT_TYPE or with subcomponent of type LOCK_TYPE "
"must be a coarray"
msgstr ""
-#: fortran/resolve.c:14085
+#: fortran/resolve.c:14096
#, gcc-internal-format
msgid ""
"The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have "
"a default initializer"
msgstr ""
-#: fortran/resolve.c:14097
+#: fortran/resolve.c:14108
#, gcc-internal-format
msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:14106
+#: fortran/resolve.c:14117
#, gcc-internal-format
msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:14118
+#: fortran/resolve.c:14129
#, gcc-internal-format
msgid ""
"Function result %qs at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:14127
+#: fortran/resolve.c:14138
#, gcc-internal-format
msgid ""
"Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:14139
+#: fortran/resolve.c:14150
#, gcc-internal-format
msgid ""
"Variable %qs at %L with coarray component shall be a nonpointer, "
"nonallocatable scalar, which is not a coarray"
msgstr ""
-#: fortran/resolve.c:14154
+#: fortran/resolve.c:14165
#, gcc-internal-format
msgid ""
"Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy "
"argument"
msgstr ""
-#: fortran/resolve.c:14162
+#: fortran/resolve.c:14173
#, gcc-internal-format
msgid ""
"Coarray variable %qs at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:14169
+#: fortran/resolve.c:14180
#, gcc-internal-format
msgid "Allocatable coarray variable %qs at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:14181
+#: fortran/resolve.c:14192
#, gcc-internal-format
msgid ""
"Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray "
"or have coarray components"
msgstr ""
-#: fortran/resolve.c:14190
+#: fortran/resolve.c:14201
#, gcc-internal-format
msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
msgstr ""
-#: fortran/resolve.c:14206
+#: fortran/resolve.c:14217
#, gcc-internal-format
msgid ""
"LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure "
"%qs"
msgstr ""
-#: fortran/resolve.c:14212
+#: fortran/resolve.c:14223
#, gcc-internal-format
msgid ""
"LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure "
"%qs"
msgstr ""
-#: fortran/resolve.c:14291
+#: fortran/resolve.c:14248
+#, gcc-internal-format, gfc-internal-format
+msgid "Namelist '%s' can not be an argument to subroutine or function at %L"
+msgstr ""
+
+#: fortran/resolve.c:14317
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:14302
+#: fortran/resolve.c:14328
#, gcc-internal-format
msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:14394
+#: fortran/resolve.c:14420
#, gcc-internal-format
msgid "check_data_variable(): Bad expression"
msgstr ""
-#: fortran/resolve.c:14400
+#: fortran/resolve.c:14426
#, gcc-internal-format
msgid "BLOCK DATA element %qs at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:14406
+#: fortran/resolve.c:14432
#, gcc-internal-format
msgid "DATA array %qs at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:14415
+#: fortran/resolve.c:14441
#, gcc-internal-format
msgid "DATA element %qs at %L cannot have a coindex"
msgstr ""
-#: fortran/resolve.c:14429
+#: fortran/resolve.c:14455
#, gcc-internal-format
msgid "DATA element %qs at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:14475
+#: fortran/resolve.c:14501
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:14488
+#: fortran/resolve.c:14514
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:14587
+#: fortran/resolve.c:14613
#, gcc-internal-format, gfc-internal-format
msgid ""
"start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:14595
+#: fortran/resolve.c:14621
#, gcc-internal-format, gfc-internal-format
msgid ""
"end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:14603
+#: fortran/resolve.c:14629
#, gcc-internal-format, gfc-internal-format
msgid ""
"step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:14728
+#: fortran/resolve.c:14754
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:14893
+#: fortran/resolve.c:14919
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr ""
-#: fortran/resolve.c:14898
+#: fortran/resolve.c:14924
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr ""
-#: fortran/resolve.c:14982
+#: fortran/resolve.c:15008
#, gcc-internal-format
msgid ""
"Derived type variable %qs at %L must have SEQUENCE attribute to be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:14991
+#: fortran/resolve.c:15017
#, gcc-internal-format
msgid ""
"Derived type variable %qs at %L cannot have ALLOCATABLE components to be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:14999
+#: fortran/resolve.c:15025
#, gcc-internal-format
msgid ""
"Derived type variable %qs at %L with default initialization cannot be in "
"EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:15015
+#: fortran/resolve.c:15041
#, gcc-internal-format
msgid ""
"Derived type variable %qs at %L with pointer component(s) cannot be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:15118
+#: fortran/resolve.c:15144
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:15133
+#: fortran/resolve.c:15159
#, gcc-internal-format, gfc-internal-format
msgid ""
"Either all or none of the objects in the EQUIVALENCE set at %L shall have "
"the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:15145
+#: fortran/resolve.c:15171
#, gcc-internal-format
msgid ""
"Common block member %qs at %L cannot be an EQUIVALENCE object in the pure "
"procedure %qs"
msgstr ""
-#: fortran/resolve.c:15154
+#: fortran/resolve.c:15180
#, gcc-internal-format
msgid "Named constant %qs at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:15227
+#: fortran/resolve.c:15253
#, gcc-internal-format
msgid ""
"Array %qs at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:15238
+#: fortran/resolve.c:15264
#, gcc-internal-format
msgid "Structure component %qs at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:15249
+#: fortran/resolve.c:15275
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:15292
+#: fortran/resolve.c:15318
#, gcc-internal-format
msgid "PUBLIC function %qs at %L of PRIVATE type %qs"
msgstr ""
-#: fortran/resolve.c:15305
+#: fortran/resolve.c:15331
#, gcc-internal-format
msgid "ENTRY %qs at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:15322
+#: fortran/resolve.c:15348
#, gcc-internal-format
msgid "User operator procedure %qs at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:15332
+#: fortran/resolve.c:15358
#, gcc-internal-format
msgid "User operator procedure %qs at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:15340
+#: fortran/resolve.c:15366
#, gcc-internal-format
msgid "User operator procedure %qs at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:15354
+#: fortran/resolve.c:15380
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:15372
+#: fortran/resolve.c:15398
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:15379
+#: fortran/resolve.c:15405
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:15457
+#: fortran/resolve.c:15483
#, gcc-internal-format
msgid "Contained procedure %qs at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -57797,7 +57967,7 @@ msgstr ""
msgid "Illegal preprocessor directive"
msgstr ""
-#: fortran/scanner.c:2232
+#: fortran/scanner.c:2235
#, gcc-internal-format
msgid "Can't open file %qs"
msgstr ""
@@ -58586,19 +58756,19 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/trans-array.c:5648
+#: fortran/trans-array.c:5659
#, gcc-internal-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:7503
+#: fortran/trans-array.c:7514
#, gcc-internal-format
msgid "Creating array temporary at %L for argument %qs"
msgstr ""
-#: fortran/trans-array.c:9582
+#: fortran/trans-array.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -58702,115 +58872,115 @@ msgstr ""
msgid "non-constant initialization expression at %L"
msgstr ""
-#: fortran/trans-decl.c:1555
+#: fortran/trans-decl.c:1557
#, gcc-internal-format
msgid "intrinsic variable which isn't a procedure"
msgstr ""
-#: fortran/trans-decl.c:3958 fortran/trans-decl.c:6184
+#: fortran/trans-decl.c:4031 fortran/trans-decl.c:6231
#, gcc-internal-format
msgid "Return value of function %qs at %L not set"
msgstr ""
-#: fortran/trans-decl.c:4373
+#: fortran/trans-decl.c:4419
#, gcc-internal-format
msgid "Deferred type parameter not yet supported"
msgstr ""
-#: fortran/trans-decl.c:4601
+#: fortran/trans-decl.c:4648
#, gcc-internal-format
msgid "backend decl for module variable %qs already exists"
msgstr ""
-#: fortran/trans-decl.c:4614
+#: fortran/trans-decl.c:4661
#, gcc-internal-format
msgid "Unused PRIVATE module variable %qs declared at %L"
msgstr ""
-#: fortran/trans-decl.c:5183
+#: fortran/trans-decl.c:5230
#, gcc-internal-format
msgid "Dummy argument %qs at %L was declared INTENT(OUT) but was not set"
msgstr ""
-#: fortran/trans-decl.c:5189
+#: fortran/trans-decl.c:5236
#, gcc-internal-format
msgid ""
"Derived-type dummy argument %qs at %L was declared INTENT(OUT) but was not "
"set and does not have a default initializer"
msgstr ""
-#: fortran/trans-decl.c:5199 fortran/trans-decl.c:5330
+#: fortran/trans-decl.c:5246 fortran/trans-decl.c:5377
#, gcc-internal-format
msgid "Unused dummy argument %qs at %L"
msgstr ""
-#: fortran/trans-decl.c:5214
+#: fortran/trans-decl.c:5261
#, gcc-internal-format
msgid "Unused module variable %qs which has been explicitly imported at %L"
msgstr ""
-#: fortran/trans-decl.c:5223
+#: fortran/trans-decl.c:5270
#, gcc-internal-format
msgid "Unused variable %qs declared at %L"
msgstr ""
-#: fortran/trans-decl.c:5272
+#: fortran/trans-decl.c:5319
#, gcc-internal-format
msgid "Unused parameter %qs declared at %L"
msgstr ""
-#: fortran/trans-decl.c:5276
+#: fortran/trans-decl.c:5323
#, gcc-internal-format
msgid "Unused parameter %qs which has been explicitly imported at %L"
msgstr ""
-#: fortran/trans-decl.c:5302
+#: fortran/trans-decl.c:5349
#, gcc-internal-format
msgid "Return value %qs of function %qs declared at %L not set"
msgstr ""
-#: fortran/trans-decl.c:5911
+#: fortran/trans-decl.c:5958
#, gcc-internal-format, gfc-internal-format
msgid "Sorry, $!ACC DECLARE at %L is not allowed in BLOCK construct"
msgstr ""
-#: fortran/trans-expr.c:803
+#: fortran/trans-expr.c:827
#, gcc-internal-format, gfc-internal-format
msgid "Can't compute the length of the char array at %L."
msgstr ""
-#: fortran/trans-expr.c:1495
+#: fortran/trans-expr.c:1526
#, gcc-internal-format, gfc-internal-format
msgid "Code for reallocating the allocatable variable at %L will be added"
msgstr ""
-#: fortran/trans-expr.c:1802
+#: fortran/trans-expr.c:1833
#, gcc-internal-format, gfc-internal-format
msgid ""
"Sorry, coindexed access to a pointer or allocatable component of the "
"coindexed coarray at %L is not yet supported"
msgstr ""
-#: fortran/trans-expr.c:1816
+#: fortran/trans-expr.c:1847
#, gcc-internal-format, gfc-internal-format
msgid ""
"Sorry, coindexed coarray at %L with allocatable component is not yet "
"supported"
msgstr ""
-#: fortran/trans-expr.c:1839
+#: fortran/trans-expr.c:1870
#, gcc-internal-format, gfc-internal-format
msgid ""
"Sorry, coindexed access at %L to a scalar component with an array partref is "
"not yet supported"
msgstr ""
-#: fortran/trans-expr.c:3272
+#: fortran/trans-expr.c:3303
#, gcc-internal-format
msgid "Unknown intrinsic op"
msgstr ""
-#: fortran/trans-expr.c:4560
+#: fortran/trans-expr.c:4591
#, gcc-internal-format, gfc-internal-format
msgid "Unknown argument list function at %L"
msgstr ""
@@ -58826,7 +58996,7 @@ msgstr ""
msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
msgstr ""
-#: fortran/trans-intrinsic.c:9366 fortran/trans-stmt.c:913
+#: fortran/trans-intrinsic.c:9366 fortran/trans-stmt.c:919
#, gcc-internal-format, gfc-internal-format
msgid "Sorry, the event component of derived type at %L is not yet supported"
msgstr ""
@@ -58856,17 +59026,17 @@ msgstr ""
msgid "An alternate return at %L without a * dummy argument"
msgstr ""
-#: fortran/trans-stmt.c:717
+#: fortran/trans-stmt.c:723
#, gcc-internal-format, gfc-internal-format
msgid "Sorry, the lock component of derived type at %L is not yet supported"
msgstr ""
-#: fortran/trans-stmt.c:1172
+#: fortran/trans-stmt.c:1178
#, gcc-internal-format, gfc-internal-format
msgid "Sorry, only support for integer kind %d implemented for image-set at %L"
msgstr ""
-#: fortran/trans-stmt.c:2943
+#: fortran/trans-stmt.c:2951
#, gcc-internal-format
msgid "gfc_trans_select(): Bad type for case expr."
msgstr ""
diff --git a/gcc/ree.c b/gcc/ree.c
index 13a7a0586ac..4627b4f99b5 100644
--- a/gcc/ree.c
+++ b/gcc/ree.c
@@ -1025,11 +1025,11 @@ add_removable_extension (const_rtx expr, rtx_insn *insn,
return;
}
/* For vector mode extensions, ensure that all uses of the
- XEXP (src, 0) register are the same extension (both code
- and to which mode), as unlike integral extensions lowpart
- subreg of the sign/zero extended register are not equal
- to the original register, so we have to change all uses or
- none. */
+ XEXP (src, 0) register are in insn or debug insns, as unlike
+ integral extensions lowpart subreg of the sign/zero extended
+ register are not equal to the original register, so we have
+ to change all uses or none and the current code isn't able
+ to change them all at once in one transaction. */
else if (VECTOR_MODE_P (GET_MODE (XEXP (src, 0))))
{
if (idx == 0)
@@ -1046,15 +1046,7 @@ add_removable_extension (const_rtx expr, rtx_insn *insn,
break;
}
rtx_insn *use_insn = DF_REF_INSN (ref_link->ref);
- const_rtx use_set;
- if (use_insn == insn || DEBUG_INSN_P (use_insn))
- continue;
- if (!(use_set = single_set (use_insn))
- || !REG_P (SET_DEST (use_set))
- || GET_MODE (SET_DEST (use_set)) != GET_MODE (dest)
- || GET_CODE (SET_SRC (use_set)) != code
- || !rtx_equal_p (XEXP (SET_SRC (use_set), 0),
- XEXP (src, 0)))
+ if (use_insn != insn && !DEBUG_INSN_P (use_insn))
{
idx = -1U;
break;
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 7f0bfa443a0..8267252b196 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2747,6 +2747,8 @@ extern unsigned int subreg_highpart_offset (machine_mode,
machine_mode);
extern int byte_lowpart_offset (machine_mode, machine_mode);
extern rtx make_safe_from (rtx, rtx);
+extern rtx convert_memory_address_addr_space_1 (machine_mode, rtx,
+ addr_space_t, bool, bool);
extern rtx convert_memory_address_addr_space (machine_mode, rtx,
addr_space_t);
#define convert_memory_address(to_mode,x) \
@@ -3652,6 +3654,8 @@ extern int anti_dependence (const_rtx, const_rtx);
extern int canon_anti_dependence (const_rtx, bool,
const_rtx, machine_mode, rtx);
extern int output_dependence (const_rtx, const_rtx);
+extern int canon_output_dependence (const_rtx, bool,
+ const_rtx, machine_mode, rtx);
extern int may_alias_p (const_rtx, const_rtx);
extern void init_alias_target (void);
extern void init_alias_analysis (void);
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index e1a0319c26f..fdc4b366c74 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -1482,7 +1482,14 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op)
&& REG_POINTER (SUBREG_REG (op))
&& GET_MODE (SUBREG_REG (op)) == Pmode))
&& !targetm.have_ptr_extend ())
- return convert_memory_address (Pmode, op);
+ {
+ temp
+ = convert_memory_address_addr_space_1 (Pmode, op,
+ ADDR_SPACE_GENERIC, false,
+ true);
+ if (temp)
+ return temp;
+ }
#endif
break;
@@ -1604,7 +1611,14 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op)
&& REG_POINTER (SUBREG_REG (op))
&& GET_MODE (SUBREG_REG (op)) == Pmode))
&& !targetm.have_ptr_extend ())
- return convert_memory_address (Pmode, op);
+ {
+ temp
+ = convert_memory_address_addr_space_1 (Pmode, op,
+ ADDR_SPACE_GENERIC, false,
+ true);
+ if (temp)
+ return temp;
+ }
#endif
break;
@@ -3665,7 +3679,7 @@ simplify_binary_operation_1 (enum rtx_code code, machine_mode mode,
for (int i = 0; i < XVECLEN (trueop1, 0); i++)
{
rtx j = XVECEXP (trueop1, 0, i);
- if (sel & (1 << UINTVAL (j)))
+ if (sel & (HOST_WIDE_INT_1U << UINTVAL (j)))
all_operand1 = false;
else
all_operand0 = false;
diff --git a/gcc/symtab.c b/gcc/symtab.c
index 2d7705e657c..3d3cc4f738c 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -1287,6 +1287,61 @@ symtab_node::make_decl_local (void)
SYMBOL_REF_WEAK (symbol) = DECL_WEAK (decl);
}
+/* Copy visibility from N.
+ This is useful when THIS becomes a transparent alias of N. */
+
+void
+symtab_node::copy_visibility_from (symtab_node *n)
+{
+ gcc_checking_assert (n->weakref == weakref);
+
+ ipa_ref *ref;
+ for (unsigned i = 0; iterate_direct_aliases (i, ref); i++)
+ {
+ struct symtab_node *alias = ref->referring;
+ if (alias->transparent_alias)
+ alias->copy_visibility_from (n);
+ }
+
+ if (TREE_CODE (decl) == VAR_DECL)
+ {
+ DECL_COMMON (decl) = DECL_COMMON (n->decl);
+ /* ADDRESSABLE flag is not defined for public symbols. */
+ if (TREE_PUBLIC (decl) && !TREE_PUBLIC (n->decl))
+ TREE_ADDRESSABLE (decl) = 1;
+ TREE_STATIC (decl) = TREE_STATIC (n->decl);
+ }
+ else gcc_assert (TREE_CODE (decl) == FUNCTION_DECL);
+
+ DECL_COMDAT (decl) = DECL_COMDAT (n->decl);
+ DECL_WEAK (decl) = DECL_WEAK (n->decl);
+ DECL_EXTERNAL (decl) = DECL_EXTERNAL (n->decl);
+ DECL_VISIBILITY_SPECIFIED (decl) = DECL_VISIBILITY_SPECIFIED (n->decl);
+ DECL_VISIBILITY (decl) = DECL_VISIBILITY (n->decl);
+ TREE_PUBLIC (decl) = TREE_PUBLIC (n->decl);
+ DECL_DLLIMPORT_P (decl) = DECL_DLLIMPORT_P (n->decl);
+ resolution = n->resolution;
+ set_comdat_group (n->get_comdat_group ());
+ call_for_symbol_and_aliases (symtab_node::set_section,
+ const_cast<char *>(n->get_section ()), true);
+ externally_visible = n->externally_visible;
+ if (!DECL_RTL_SET_P (decl))
+ return;
+
+ /* Update rtl flags. */
+ make_decl_rtl (decl);
+
+ rtx rtl = DECL_RTL (decl);
+ if (!MEM_P (rtl))
+ return;
+
+ rtx symbol = XEXP (rtl, 0);
+ if (GET_CODE (symbol) != SYMBOL_REF)
+ return;
+
+ SYMBOL_REF_WEAK (symbol) = DECL_WEAK (decl);
+}
+
/* Walk the alias chain to return the symbol NODE is alias of.
If NODE is not an alias, return NODE.
Assumes NODE is known to be alias. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ec0b95a8c43..4131b9fcfe4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,530 @@
+2016-04-14 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/70669
+ * gcc.target/powerpc/pr70669.c: New test.
+
+ PR target/70640
+ * gcc.target/powerpc/pr70640.c: Fix test so it correctly works on
+ a power7 system that does not have an assembler that supports
+ power8.
+
+2016-04-14 Martin Sebor <msebor@redhat.com>
+
+ PR c++/69517
+ PR c++/70019
+ PR c++/70588
+ * c-c++-common/ubsan/vla-1.c: Revert.
+ * g++.dg/cpp1y/vla11.C: Same.
+ * g++.dg/cpp1y/vla12.C: Same.
+ * g++.dg/cpp1y/vla13.C: Same.
+ * g++.dg/cpp1y/vla14.C: Same.
+ * g++.dg/cpp1y/vla3.C: Same.
+ * gcc/testsuite/g++.dg/init/array24.C: Same.
+ * g++.dg/ubsan/vla-1.C: Same.
+
+2016-04-14 Marek Polacek <polacek@redhat.com>
+ Jan Hubicka <hubicka@ucw.cz>
+
+ PR c++/70029
+ * g++.dg/torture/pr70029.C: New test.
+
+2016-04-14 Martin Sebor <msebor@redhat.com>
+
+ * g++.dg/cpp1y/vla11.C: Avoid using attribute aligned to increase
+ type size to prevent failures on targets with very low maximum
+ alignment.
+
+2016-04-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/70623
+ * gcc.dg/torture/pr70623.c: New testcase.
+ * gcc.dg/torture/pr70623-2.c: Likewise.
+
+2016-04-13 Martin Sebor <msebor@redhat.com>
+
+ PR c++/69517
+ PR c++/70019
+ PR c++/70588
+ * c-c++-common/ubsan/vla-1.c (main): Catch exceptions.
+ * g++.dg/cpp1y/vla11.C: New test.
+ * g++.dg/cpp1y/vla12.C: New test.
+ * g++.dg/cpp1y/vla13.C: New test.
+ * g++.dg/cpp1y/vla14.C: New test.
+ * g++.dg/cpp1y/vla3.C: Restore deleted test.
+ * gcc/testsuite/g++.dg/init/array24.C: Fully brace VLA initializer.
+ * g++.dg/ubsan/vla-1.C: Disable exceptions.
+
+2016-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70641
+ * g++.dg/opt/pr70641.C: New test.
+
+2016-04-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR rtl-optimization/68749
+ * gcc.dg/ifcvt-4.c: Use "word_mode" rather than "int" to limit the
+ effects of argument promotions.
+ Remove default args to dg-skip-if.
+
+2016-04-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/70635
+ * g++.dg/parse/pr70635.C: New.
+
+2016-04-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/70639
+ * c-c++-common/Wmisleading-indentation-4.c: New test.
+
+2016-04-13 Marek Polacek <polacek@redhat.com>
+
+ PR c/70436
+ * testsuite/gcc.dg/Wparentheses-12.c: New test.
+ * testsuite/gcc.dg/Wparentheses-13.c: New test.
+
+2016-04-13 Ilya Enkovich <ilya.enkovich@intel.com>
+
+ * gcc.target/i386/avx512bw-kunpckdq-2.c: New test.
+ * gcc.target/i386/avx512bw-kunpckwd-2.c: New test.
+ * gcc.target/i386/avx512f-kunpckbw-2.c: New test.
+
+2016-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70633
+ * gcc.c-torture/compile/pr70633.c: New test.
+
+ PR debug/70628
+ * gcc.dg/torture/pr70628.c: New test.
+
+2016-04-12 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70610
+ * g++.dg/template/pr70610.C: New test.
+ * g++.dg/template/pr70610-2.C: New test.
+ * g++.dg/template/pr70610-3.C: New test.
+ * g++.dg/template/pr70610-4.C: New test.
+
+2016-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/cilk-plus/SE/ef_error2.c (func2): Use vectorlength
+ 128 instead of 32.
+
+ PR c++/70571
+ * g++.dg/ext/pr70571.C: New test.
+
+2016-04-12 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/70640
+ * gcc.target/powerpc/pr70640.c: New test.
+
+2016-04-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/68722
+ * g++.dg/parse/pr68722.C: New.
+
+2016-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/70596
+ * gcc.target/i386/pr70596.c: New test.
+
+2016-04-12 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/70501
+ * g++.dg/init/pr70501.C: New.
+
+2016-04-12 David Wohlferd <dw@LimeGreenSocks.com>
+
+ * gcc.target/i386/asm-flag-6.c: New test.
+
+2016-04-12 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/68756
+ * gcc.dg/graphite/pr68756.c: New test.
+
+2016-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/70602
+ * gcc.c-torture/execute/pr70602.c: New test.
+
+2016-04-11 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/70381
+ * gcc.target/powerpc/float128-1.c: New tests to make sure the
+ __float128 emulator is built and runs.
+ * gcc.target/powerpc/float128-1.c: Likewise.
+
+ * lib/target-supports.exp (check_ppc_float128_sw_available):
+ Rework tests for __float128 software and hardware
+ availability. Fix exit condition to return 0 on success.
+
+2016-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ PR target/70133
+ * gcc.target/aarch64/mgeneral-regs_4.c: Fix expected output.
+ * gcc.target/aarch64/target_attr_15.c: Likewise.
+
+2016-04-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/69066
+ * g++.dg/cpp1y/pr69066.C: New.
+
+2016-04-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/68566
+ * gfortran.dg/pr36192.f90: Update test.
+ * gfortran.dg/pr36192_1.f90: Update test.
+ * gfortran.dg/real_dimension_1.f: Update test.
+ * gfortran.dg/parameter_array_init_7.f90: New test.
+
+2016-04-09 John David Anglin <danglin@gcc.gnu.org>
+
+ PR testsuite/64039
+ * gcc.dg/tree-ssa/ssa-dom-cse-2.c: xfail scan-tree-dump on hppa*64*-*-*.
+
+ * gcc.dg/pr70317.c: Add -fno-common on hppa*-*-hpux*.
+
+ PR rtl-optimization/66669
+ * gcc.dg/loop-8.c: Skip on hppa*-*-*.
+
+ * gcc.dg/debug/dwarf2/prod-options.c: Adjust scan for hppa*64*-*-*.
+
+ * gcc.dg/pic-1.c: Skip on hppa*-*-*.
+ * gcc.dg/pie-1.c: Likewise.
+ * gcc.dg/pic-3.c: Skip on hppa*64*-*-*.
+ * gcc.dg/pic-4.c: Likewise.
+ * gcc.dg/pie-3.c: Likewise.
+ * gcc.dg/pie-4.c: Likewise.
+
+ * gcc.dg/uninit-19.c: Fix warning line for hppa*64*-*-*.
+
+ PR tree-optimization/68644
+ * gcc.dg/tree-ssa/ivopts-lt-2.c: Skip on hppa*-*-*.
+
+ PR rtl-optimization/64886
+ * gcc.dg/pr64434.c: Skip on hppa*-*-hpux*.
+
+2016-04-09 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/68953
+ * gcc.dg/graphite/pr68953.c: New test.
+
+2016-04-09 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ PR fortran/70592
+ * gfortran.dg/deferred_character_16.f90: New test.
+
+2016-04-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/70586
+ * gcc.c-torture/execute/pr70586.c: New test.
+
+2016-04-09 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ PR sanitizer/70573
+ * c-c++-common/asan/halt_on_error-1.c: Replace memset
+ with __builtin_memset
+ * c-c++-common/asan/halt_on_error-2.c: Likewise.
+
+2016-04-08 Cesar Philippidis <cesar@codesourcery.com>
+
+ PR lto/70289
+ PR ipa/70348
+ PR tree-optimization/70373
+ PR middle-end/70533
+ PR middle-end/70534
+ PR middle-end/70535
+ * c-c++-common/goacc/reduction-5.c: New test.
+ * c-c++-common/goacc/reduction-promotions.c: New test.
+ * gfortran.dg/goacc/reduction-3.f95: New test.
+ * gfortran.dg/goacc/reduction-promotions.f90: New test.
+
+2016-04-08 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70590
+ PR c++/70452
+ * g++.dg/pr70590.C: New test.
+ * g++.dg/pr70590-2.C: New test.
+
+2016-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70593
+ * gcc.target/i386/pr70593.c: New test.
+
+ PR rtl-optimization/70574
+ * gcc.target/i386/avx2-pr70574.c: New test.
+
+2016-04-08 Maxim Ostapenko <m.ostapenko@samsung.com>
+
+ PR sanitizer/70541
+ * c-c++-common/asan/pr70541.c: New test.
+
+2016-04-08 Tom de Vries <tom@codesourcery.com>
+
+ * c-c++-common/goacc/uninit-firstprivate-clause.c: New test.
+ * gfortran.dg/goacc/uninit-firstprivate-clause.f95: New test.
+
+2016-04-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/70566
+ * gcc.c-torture/execute/pr70566.c: New test.
+
+2016-04-08 Tom de Vries <tom@codesourcery.com>
+
+ * c-c++-common/goacc/uninit-copy-clause.c: New test.
+ * gfortran.dg/goacc/uninit-copy-clause.f95: New test.
+
+2016-04-08 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/pr70117.c: New.
+
+2016-04-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/70581
+ * gcc.dg/lto/simd-function_0.c: New test.
+
+ * c-c++-common/attr-simd.c: Add scan-assembler* directives for AVX512F
+ clones.
+ * c-c++-common/attr-simd-2.c: Likewise.
+ * c-c++-common/attr-simd-4.c: Likewise.
+ * gcc.dg/gomp/simd-clones-2.c: Likewise.
+ * gcc.dg/gomp/simd-clones-3.c: Likewise.
+
+2016-04-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ PR testsuite/70553
+ * gcc.target/arm/pr70496.c: Also require arm_arm_ok effective target.
+
+2016-04-07 Thomas Schwinge <thomas@codesourcery.com>
+ Tom de Vries <tom@codesourcery.com>
+
+ * gfortran.dg/goacc/kernels-loop-2.f95: Scan for parallelization.
+ * gfortran.dg/goacc/kernels-loop-data-2.f95: Likewise.
+ * gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95: Likewise.
+ * gfortran.dg/goacc/kernels-loop-data-enter-exit.f95: Likewise.
+ * gfortran.dg/goacc/kernels-loop-data-update.f95: Likewise.
+ * gfortran.dg/goacc/kernels-loop-data.f95: Likewise.
+ * gfortran.dg/goacc/kernels-loop.f95: Likewise.
+ * gfortran.dg/goacc/kernels-loop-n.f95: Likewise, XFAILed.
+
+2016-04-06 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c/70436
+ * g++.dg/warn/Wparentheses-29.C: New test.
+
+2016-04-06 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c/70436
+ * g++.dg/plugin/pragma_plugin.c (handle_pragma_sayhello): Add
+ explicit braces to resolve a future -Wparentheses warning.
+
+2016-04-06 Richard Henderson <rth@redhat.com>
+
+ * gcc.dg/pr61817-1.c: New test.
+ * gcc.dg/pr61817-2.c: New test.
+ * gcc.dg/pr69391-1.c: New test.
+ * gcc.dg/pr69391-2.c: New test.
+
+2016-04-06 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/70398
+ * testsuite/gcc.target/aarch64/pr70398.c: New.
+
+2016-04-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20101011-1.c (__VISIUM__): Set DO_TEST to 0.
+
+2016-04-06 Yvan Roux <yvan.roux@linaro.org>
+ Pedro Alves <palves@redhat.com>
+
+ * gcc.dg/guality/guality.h (main): Avoid GDB being blocked on signals.
+
+2016-04-06 Jakub Jelinek <jakub@redhat.com>
+
+ * lib/target-supports.exp (check_effective_target_vect_simd_clones):
+ Check for avx512f effective targets instead of avx2.
+ * gcc.dg/gomp/declare-simd-1.c: Add scan-assembler-times directives
+ for AVX512F clones.
+ * gcc.dg/gomp/declare-simd-3.c: Likewise.
+ * g++.dg/gomp/declare-simd-1.C: Likewise.
+ * g++.dg/gomp/declare-simd-3.C: Likewise.
+ * g++.dg/gomp/declare-simd-4.C: Likewise.
+
+ PR middle-end/70550
+ * c-c++-common/gomp/pr70550-1.c: New test.
+ * c-c++-common/gomp/pr70550-2.c: New test.
+
+2016-04-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/70512
+ * g++.dg/ext/attribute-may-alias-5.C: New.
+
+2016-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70336
+ * c-c++-common/pr70336.c: New test.
+ * gcc.dg/torture/builtin-isinf_sign-1.c (foo): Guard tests
+ no longer optimized away at -O0 with #ifndef __OPTIMIZE__.
+
+2016-04-05 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/66223
+ * g++.dg/ipa/devirt-51.C: Use -fsanitize=unreachable.
+
+2016-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/70542
+ * gcc.dg/torture/pr70542.c: New test.
+ * gcc.target/i386/avx2-pr70542.c: New test.
+
+2016-04-05 Zdenek Sojka <zsojka@seznam.cz>
+
+ PR tree-optimization/70509
+ * gcc.target/i386/avx512bw-pr70509.c: New test.
+
+2016-04-05 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/70452
+ * g++.dg/ext/constexpr-vla4.C: New test.
+
+2016-04-05 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/70510
+ * gcc.target/i386/pr70510.c: New test.
+
+2016-04-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/70526
+ * g++.dg/torture/pr70526.C: New testcase.
+
+2016-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/70525
+ * gcc.target/i386/pr70525.c: New test.
+
+2016-04-05 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/70499
+ * g++.dg/torture/pr70499.C: New testcase.
+
+2016-04-05 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/20030814-6.c: Fix testcase, disable FRE,
+ remove XFAIL.
+
+2016-04-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70307
+ * gcc.dg/torture/pr70307.c: Add -Wno-psabi to dg-options. Prune
+ rs6000 ABI warnings.
+
+2016-04-04 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/66223
+ * g++.dg/ipa/devirt-51.C: New testcase.
+
+2016-04-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70457
+ * gcc.dg/torture/pr70457.c: New.
+
+2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org>
+
+ PR fortran/67538
+ * gfortran.dg/allocate_with_source_19.f08: New test.
+
+2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org>
+
+ PR fortran/65795
+ * gfortran.dg/coarray_allocate_6.f08: New test.
+
+2016-04-04 Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/70484
+ * gcc.dg/torture/pr70484.c: New testcase.
+
+2016-04-04 Marek Polacek <polacek@redhat.com>
+
+ PR c/70307
+ * gcc.dg/torture/pr70307.c: New test.
+
+2016-04-03 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/70416
+ PR target/67391
+ * gcc.target/sh/torture/pr70416.c: New.
+
+2016-04-02 Martin Sebor <msebor@redhat.com>
+
+ PR c++/67376
+ PR c++/70170
+ PR c++/70172
+ PR c++/70228
+ * g++.dg/cpp0x/constexpr-array-ptr10.C: New test.
+ * g++.dg/cpp0x/constexpr-array-ptr9.C: New test.
+ * g++.dg/cpp0x/constexpr-nullptr-1.C: New test.
+ * g++.dg/cpp0x/constexpr-array5.C: Adjust text of expected diagnostic.
+ * g++.dg/cpp0x/constexpr-string.C: Same.
+ * g++.dg/cpp0x/constexpr-wstring2.C: Same.
+ * g++.dg/cpp0x/pr65398.C: Same.
+ * g++.dg/ext/constexpr-vla1.C: Same.
+ * g++.dg/ext/constexpr-vla2.C: Same.
+ * g++.dg/ext/constexpr-vla3.C: Same.
+ * g++.dg/ubsan/pr63956.C: Same.
+
+2016-04-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/70467
+ * gcc.target/i386/pr70467-2.c: New test.
+
+2016-04-01 Jakub Jelinek <jakub@redhat.com>
+ Marek Polacek <polacek@redhat.com>
+
+ PR c++/70488
+ * g++.dg/init/new47.C: New test.
+
+2016-04-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR target/70496
+ * gcc.target/arm/pr70496.c: New test.
+
+2016-04-01 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/68475
+ * g++.dg/g++.dg/cpp0x/noexcept29.C: New.
+
+2016-04-01 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR target/69890
+ * gcc.dg/strlenopt.h (memmove): New.
+ * gcc.target/i386/chkp-strlen-1.c: Include "../../gcc.dg/strlenopt.h"
+ instead of "string.h".
+ * gcc.target/i386/chkp-strlen-2.c: Likewise.
+ * gcc.target/i386/chkp-strlen-3.c: Likewise.
+ * gcc.target/i386/chkp-strlen-4.c: Likewise.
+ * gcc.target/i386/chkp-strlen-5.c: Likewise.
+ * gcc.target/i386/chkp-stropt-1.c: Likewise.
+ * gcc.target/i386/chkp-stropt-10.c: Likewise.
+ * gcc.target/i386/chkp-stropt-11.c: Likewise.
+ * gcc.target/i386/chkp-stropt-12.c: Likewise.
+ * gcc.target/i386/chkp-stropt-13.c: Likewise.
+ * gcc.target/i386/chkp-stropt-14.c: Likewise.
+ * gcc.target/i386/chkp-stropt-15.c: Likewise.
+ * gcc.target/i386/chkp-stropt-16.c: Likewise.
+ * gcc.target/i386/chkp-stropt-2.c: Likewise.
+ * gcc.target/i386/chkp-stropt-3.c: Likewise.
+ * gcc.target/i386/chkp-stropt-4.c: Likewise.
+ * gcc.target/i386/chkp-stropt-5.c: Likewise.
+ * gcc.target/i386/chkp-stropt-6.c: Likewise.
+ * gcc.target/i386/chkp-stropt-7.c: Likewise.
+ * gcc.target/i386/chkp-stropt-8.c: Likewise.
+ * gcc.target/i386/chkp-stropt-9.c: Likewise.
+
+2016-03-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * g++.dg/template/ptrmem30.C (read): Rename to data_read.
+ (Holder::foo): Reflect this.
+
2016-03-31 Ilya Enkovich <enkovich.gnu@gmail.com>
PR target/70442
@@ -61,8 +588,7 @@
Tom de Vries <tom@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
- * c-c++-common/goacc/combined-directives.c: Clean up dg-*
- directives.
+ * c-c++-common/goacc/combined-directives.c: Clean up dg-* directives.
* c-c++-common/goacc/loop-clauses.c: Likewise.
* g++.dg/goacc/template.C: Likewise.
* gfortran.dg/goacc/combined-directives.f90: Likewise.
@@ -113,6 +639,15 @@
* gcc.dg/torture/pr70421.c: New test.
* gcc.target/i386/avx512f-pr70421.c: New test.
+2016-03-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR testsuite/70364
+ * gcc.target/i386/cleanup-1.c: Include <stddef.h>.
+ (check): New function.
+ (bar): Call check.
+ (foo): Align stack to 16 bytes when calling bar.
+ * gcc.target/i386/cleanup-2.c: Likewise.
+
2016-03-30 Patrick Palka <ppalka@gcc.gnu.org>
PR tree-optimization/59124
@@ -147,12 +682,12 @@
2016-03-28 Dominique d'Humieres <dominiq@lps.ens.fr>
- g++.dg/ext/fnname5.C: Update the test for Darwin.
+ * g++.dg/ext/fnname5.C: Update the test for Darwin.
2016-03-28 Kirill Yukhin <kirill.yukhin@intel.com>
PR target/70406
- * gcc.target/i386/pr70406.c: New test.
+ * gcc.target/i386/pr70406.c: New test.
2016-03-27 Eric Botcazou <ebotcazou@adacore.com>
@@ -233,7 +768,8 @@
2016-03-24 Jakub Jelinek <jakub@redhat.com>
PR target/70290
- * g++.dg/ext/pr70290.C: Add -Wno-psabi -w to dg-options. Formatting.
+ * g++.dg/ext/pr70290.C: Add -Wno-psabi -w to dg-options.
+ Fix formatting.
2016-03-24 Richard Biener <rguenther@suse.de>
diff --git a/gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c b/gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c
new file mode 100644
index 00000000000..d15a4793da4
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c
@@ -0,0 +1,11 @@
+/* PR c++/70639 */
+/* { dg-do compile } */
+/* { dg-options "-Wmisleading-indentation" } */
+
+void bar (int);
+void
+foo (int x)
+{
+ switch (x);
+ bar (x);
+}
diff --git a/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c b/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c
index b015e9684bf..52e705d6138 100644
--- a/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c
+++ b/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c
@@ -9,7 +9,7 @@ volatile int ten = 10;
int main() {
char x[10];
- memset(x, 0, ten + 1);
+ __builtin_memset(x, 0, ten + 1);
asm volatile ("" : : : "memory");
volatile int res = x[ten];
x[ten] = res + 3;
diff --git a/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c b/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c
index 4527889af14..35dc0fa2ddc 100644
--- a/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c
+++ b/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c
@@ -10,7 +10,7 @@ volatile int ten = 10;
int main() {
char x[10];
- memset(x, 0, ten + 1);
+ __builtin_memset(x, 0, ten + 1);
asm volatile ("" : : : "memory");
volatile int res = x[ten];
x[ten] = res + 3;
diff --git a/gcc/testsuite/c-c++-common/asan/pr70541.c b/gcc/testsuite/c-c++-common/asan/pr70541.c
new file mode 100644
index 00000000000..b2a4bd5e079
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/asan/pr70541.c
@@ -0,0 +1,34 @@
+/* { dg-do run } */
+/* { dg-options "-fno-builtin-malloc -fno-builtin-free" } */
+/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
+/* { dg-shouldfail "asan" } */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+struct Simple {
+ int value;
+};
+
+int f(struct Simple simple) {
+ return simple.value;
+}
+
+int main() {
+ struct Simple *psimple = (struct Simple *) malloc(sizeof(struct Simple));
+ psimple->value = 42;
+ free(psimple);
+ printf("%d\n", f(*psimple));
+ return 0;
+}
+
+/* { dg-output "ERROR: AddressSanitizer:? heap-use-after-free on address\[^\n\r]*" } */
+/* { dg-output "0x\[0-9a-f\]+ at pc 0x\[0-9a-f\]+ bp 0x\[0-9a-f\]+ sp 0x\[0-9a-f\]+\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output "\[^\n\r]*READ of size 4 at 0x\[0-9a-f\]+ thread T0\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output " #0 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*pr70541.c:21|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */
+/* { dg-output "\[^\n\r]*freed by thread T0 here:\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output " #0 0x\[0-9a-f\]+ +(in _*(interceptor_|wrap_|)free|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output " #1 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*pr70541.c:20|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */
+/* { dg-output "\[^\n\r]*previously allocated by thread T0 here:\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output " #0 0x\[0-9a-f\]+ +(in _*(interceptor_|wrap_|)malloc|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output " #1 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*pr70541.c:18|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
diff --git a/gcc/testsuite/c-c++-common/attr-simd-2.c b/gcc/testsuite/c-c++-common/attr-simd-2.c
index dd08d1865fd..d76eba6a471 100644
--- a/gcc/testsuite/c-c++-common/attr-simd-2.c
+++ b/gcc/testsuite/c-c++-common/attr-simd-2.c
@@ -19,3 +19,5 @@ int simd_attr (void)
/* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
diff --git a/gcc/testsuite/c-c++-common/attr-simd-4.c b/gcc/testsuite/c-c++-common/attr-simd-4.c
index 66cd8f1853d..2a58587ce36 100644
--- a/gcc/testsuite/c-c++-common/attr-simd-4.c
+++ b/gcc/testsuite/c-c++-common/attr-simd-4.c
@@ -15,9 +15,11 @@ int simd_attr (void)
/* { dg-final { scan-assembler-times "_ZGVbN4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVcN4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-not "_ZGVbM4_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-not "_ZGVcM4_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-not "_ZGVdM8_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-not "_ZGVeM16_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */
extern
#ifdef __cplusplus
@@ -33,6 +35,8 @@ int simd_attr2 (void)
/* { dg-final { scan-assembler-not "_ZGVbN4_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-not "_ZGVcN4_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-not "_ZGVdN8_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-not "_ZGVeN16_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVbM4_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
diff --git a/gcc/testsuite/c-c++-common/attr-simd.c b/gcc/testsuite/c-c++-common/attr-simd.c
index 7674588ecd3..dde2475f9b0 100644
--- a/gcc/testsuite/c-c++-common/attr-simd.c
+++ b/gcc/testsuite/c-c++-common/attr-simd.c
@@ -18,6 +18,8 @@ int simd_attr (void)
/* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */
extern
#ifdef __cplusplus
@@ -36,3 +38,5 @@ int simd_attr2 (void)
/* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c
index 518d6407eeb..89e0c39b02c 100644
--- a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c
+++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c
@@ -1,8 +1,8 @@
/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus -Wall" } */
-__attribute__((vector (vectorlength(32))))
-//#pragma omp simd simdlen (32)
+__attribute__((vector (vectorlength(128))))
+//#pragma omp simd simdlen (128)
int func2 (int x, int y) /* { dg-warning "unsupported simdlen" } */
{
return (x+y);
diff --git a/gcc/testsuite/c-c++-common/goacc/reduction-5.c b/gcc/testsuite/c-c++-common/goacc/reduction-5.c
new file mode 100644
index 00000000000..74daad35a5d
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/reduction-5.c
@@ -0,0 +1,16 @@
+/* Integer reductions. */
+
+#define n 1000
+
+int
+main(void)
+{
+ int v1;
+
+#pragma acc parallel reduction(+:v1) private(v1) /* { dg-error "appears more than once in data clauses" } */
+ ;
+#pragma acc parallel reduction(+:v1) firstprivate(v1) /* { dg-error "appears more than once in data clauses" } */
+ ;
+
+ return 0;
+}
diff --git a/gcc/testsuite/c-c++-common/goacc/reduction-promotions.c b/gcc/testsuite/c-c++-common/goacc/reduction-promotions.c
new file mode 100644
index 00000000000..4cc09da9980
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/reduction-promotions.c
@@ -0,0 +1,32 @@
+/* Integer reductions. */
+
+#define n 1000
+
+int
+main(void)
+{
+ int v1, v2;
+
+#pragma acc parallel reduction(+:v1,v2)
+ ;
+#pragma acc parallel reduction(+:v1,v2) copy(v1,v2)
+ ;
+#pragma acc parallel reduction(+:v1,v2) pcopy(v1,v2)
+ ;
+#pragma acc parallel reduction(+:v1,v2) present(v1,v2)
+ ;
+#pragma acc parallel reduction(+:v1,v2) copyin(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */
+ ;
+#pragma acc parallel reduction(+:v1,v2) pcopyin(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */
+ ;
+#pragma acc parallel reduction(+:v1,v2) copyout(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */
+ ;
+#pragma acc parallel reduction(+:v1,v2) pcopyout(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */
+ ;
+#pragma acc parallel reduction(+:v1,v2) create(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */
+ ;
+#pragma acc parallel reduction(+:v1,v2) pcreate(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */
+ ;
+
+ return 0;
+}
diff --git a/gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c b/gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c
new file mode 100644
index 00000000000..b3cc4459328
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c
@@ -0,0 +1,38 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-Wuninitialized" } */
+
+void
+foo (void)
+{
+ int i;
+
+#pragma acc kernels
+ {
+ i = 1;
+ }
+
+}
+
+void
+foo2 (void)
+{
+ int i;
+
+#pragma acc kernels copy (i)
+ {
+ i = 1;
+ }
+
+}
+
+void
+foo3 (void)
+{
+ int i;
+
+#pragma acc kernels copyin(i)
+ {
+ i = 1;
+ }
+
+}
diff --git a/gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c b/gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c
new file mode 100644
index 00000000000..2584033a8c5
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-Wuninitialized" } */
+
+void
+foo (void)
+{
+ int i;
+
+#pragma acc parallel
+ {
+ i = 1;
+ }
+}
+
+
+void
+foo2 (void)
+{
+ int i;
+
+#pragma acc parallel firstprivate (i) /* { dg-warning "is used uninitialized in this function" } */
+ {
+ i = 1;
+ }
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr70550-1.c b/gcc/testsuite/c-c++-common/gomp/pr70550-1.c
new file mode 100644
index 00000000000..493d4175993
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr70550-1.c
@@ -0,0 +1,81 @@
+/* PR middle-end/70550 */
+/* { dg-do compile } */
+/* { dg-additional-options "-Wuninitialized" } */
+
+#ifdef __SIZEOF_INT128__
+typedef __int128 T;
+#else
+typedef long long T;
+#endif
+
+void bar (T);
+#pragma omp declare target (bar)
+
+void
+foo (void)
+{
+ {
+ int i;
+ #pragma omp target defaultmap(tofrom:scalar) /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ i = 26;
+ bar (i);
+ }
+ }
+ {
+ T j;
+ #pragma omp target defaultmap(tofrom:scalar) /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ j = 37;
+ bar (j);
+ }
+ }
+ {
+ int i;
+ #pragma omp target /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ i = 26;
+ bar (i);
+ }
+ }
+ {
+ T j;
+ #pragma omp target /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ j = 37;
+ bar (j);
+ }
+ }
+ {
+ int i;
+ #pragma omp target firstprivate (i) /* { dg-warning "is used uninitialized in this function" } */
+ {
+ i = 26;
+ bar (i);
+ }
+ }
+ {
+ T j;
+ #pragma omp target firstprivate (j) /* { dg-warning "is used uninitialized in this function" } */
+ {
+ j = 37;
+ bar (j);
+ }
+ }
+ {
+ int i;
+ #pragma omp target private (i) /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ i = 26;
+ bar (i);
+ }
+ }
+ {
+ T j;
+ #pragma omp target private (j) /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ j = 37;
+ bar (j);
+ }
+ }
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr70550-2.c b/gcc/testsuite/c-c++-common/gomp/pr70550-2.c
new file mode 100644
index 00000000000..31c34da4711
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr70550-2.c
@@ -0,0 +1,55 @@
+/* PR middle-end/70550 */
+/* { dg-do compile } */
+/* { dg-additional-options "-Wuninitialized" } */
+
+void bar (int);
+
+void
+foo (void)
+{
+ int i, j, k, l, m, n, o, p, q;
+ #pragma omp task /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ i = 2;
+ bar (i);
+ }
+ #pragma omp taskloop /* { dg-bogus "is used uninitialized in this function" } */
+ for (j = 0; j < 10; j++)
+ {
+ k = 7;
+ bar (k);
+ }
+ #pragma omp task firstprivate (l) /* { dg-warning "is used uninitialized in this function" } */
+ {
+ l = 2;
+ bar (l);
+ }
+ #pragma omp taskloop firstprivate (m) /* { dg-warning "is used uninitialized in this function" } */
+ for (j = 0; j < 10; j++)
+ {
+ m = 7;
+ bar (m);
+ }
+ #pragma omp task shared (n) /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ n = 2;
+ bar (n);
+ }
+ #pragma omp taskloop shared (o) /* { dg-bogus "is used uninitialized in this function" } */
+ for (j = 0; j < 10; j++)
+ {
+ o = 7;
+ bar (o);
+ }
+ #pragma omp task private (p) /* { dg-bogus "is used uninitialized in this function" } */
+ {
+ p = 2;
+ bar (p);
+ }
+ #pragma omp taskloop shared (q) /* { dg-bogus "is used uninitialized in this function" } */
+ for (j = 0; j < 10; j++)
+ {
+ q = 7;
+ bar (q);
+ }
+}
diff --git a/gcc/testsuite/c-c++-common/pr70336.c b/gcc/testsuite/c-c++-common/pr70336.c
new file mode 100644
index 00000000000..095bd569b18
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr70336.c
@@ -0,0 +1,37 @@
+/* PR c++/70336 */
+/* { dg-do compile } */
+/* { dg-options "-Wconversion" } */
+
+void
+f1 (unsigned char * x, int y, int z)
+{
+ x[z / 8] |= (unsigned char) (0x80 >> y); /* { dg-bogus "may alter its value" } */
+}
+
+unsigned char
+f2 (unsigned char x, int y)
+{
+ x = x | (unsigned char) (0x80 >> y); /* { dg-bogus "may alter its value" } */
+ return x;
+}
+
+unsigned char
+f3 (unsigned char x, int y)
+{
+ x = x | (unsigned char) (y & 255); /* { dg-bogus "may alter its value" } */
+ return x;
+}
+
+unsigned char
+f4 (unsigned char x, unsigned char y)
+{
+ x = x | (unsigned char) (y & 255); /* { dg-bogus "may alter its value" } */
+ return x;
+}
+
+unsigned char
+f5 (unsigned char x, int y)
+{
+ x = (unsigned char) (y & 255); /* { dg-bogus "may alter its value" } */
+ return x;
+}
diff --git a/gcc/testsuite/g++.dg/abi/abi-tag19.C b/gcc/testsuite/g++.dg/abi/abi-tag19.C
new file mode 100644
index 00000000000..e21d7b1256d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/abi-tag19.C
@@ -0,0 +1,4 @@
+struct __attribute__((abi_tag("a"))) X { };
+template<typename T> struct Y { X f() { return X(); } };
+template struct Y<int>;
+// { dg-final { scan-assembler "_ZN1YIiE1fB1aEv" } }
diff --git a/gcc/testsuite/g++.dg/abi/abi-tag20.C b/gcc/testsuite/g++.dg/abi/abi-tag20.C
new file mode 100644
index 00000000000..229c1709be5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/abi-tag20.C
@@ -0,0 +1,15 @@
+// { dg-do compile { target c++11 } }
+// { dg-final { scan-assembler "_ZN1B1gIcEEN7__cxx111XEv" } }
+
+inline namespace __cxx11 __attribute__((__abi_tag__ ("ABI_TAG"))) {
+ class X {};
+}
+struct B {
+ X f();
+ template <class U> X g();
+};
+int main() {
+ B b;
+ b.g<char>();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto47.C b/gcc/testsuite/g++.dg/cpp0x/auto47.C
new file mode 100644
index 00000000000..0d80be6d72f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto47.C
@@ -0,0 +1,7 @@
+// PR c++/70622
+// { dg-do compile { target c++11 } }
+
+int main()
+{
+ auto x = 0, *y = &x;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C
new file mode 100644
index 00000000000..f75b3c3227f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C
@@ -0,0 +1,112 @@
+// PR c++/67376 - [5/6 regression] Comparison with pointer to past-the-end
+// of array fails inside constant expression
+// This test verifies the aspect of the bug raised in comment #10,
+// specifically comparing pointers to null. The basic regression test
+// is in g++.dg/cpp0x/constexpr-67376.C.
+// Note also that while the description of the bug talks about pointers
+// pointing past the end of arrays but the prolem is more general than
+// that and involves all constexpr object pointers.
+
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-Wall -Wextra" }
+
+namespace A {
+
+extern int i;
+
+constexpr int *p0 = &i;
+
+constexpr bool b0 = p0; // { dg-warning "address of .A::i." }
+constexpr bool b1 = p0 == 0; // { dg-warning "address of .A::i." }
+constexpr bool b2 = p0 != 0; // { dg-warning "address of .A::i." }
+constexpr bool b3 = p0 < 0; // { dg-warning "ordered comparison" }
+constexpr bool b4 = p0 <= 0; // { dg-warning "ordered comparison" }
+constexpr bool b5 = p0 > 0; // { dg-warning "ordered comparison" }
+constexpr bool b6 = p0 >= 0; // { dg-warning "ordered comparison" }
+
+constexpr bool b7 = !p0; // { dg-warning "address of .A::i." }
+constexpr bool b8 = 0 == p0; // { dg-warning "address of .A::i." }
+constexpr bool b9 = 0 != p0; // { dg-warning "address of .A::i." }
+constexpr bool b10 = 0 < p0; // { dg-warning "ordered comparison" }
+constexpr bool b11 = 0 <= p0; // { dg-warning "ordered comparison" }
+constexpr bool b12 = 0 > p0; // { dg-warning "ordered comparison" }
+constexpr bool b13 = 0 >= p0; // { dg-warning "ordered comparison" }
+
+}
+
+namespace B {
+
+// PR c++/70172 - incorrect reinterpret_cast from integer to pointer
+// error on invalid constexpr initialization
+
+struct S { int a, b[1]; } s;
+
+constexpr S *p0 = &s;
+
+constexpr int *q0 = p0->b; // { dg-bogus "reinterpret_cast from integer to pointer" }
+
+}
+
+namespace WeakRefTest1 {
+
+extern __attribute__ ((weak)) int i;
+
+constexpr int *p0 = &i;
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wextra"
+// Suppress warning: ordered comparison of pointer with integer zero
+
+constexpr bool b0 = p0; // { dg-error "not a constant expression" }
+constexpr bool b1 = p0 == 0; // { dg-error "not a constant expression" }
+constexpr bool b2 = p0 != 0; // { dg-error "not a constant expression" }
+constexpr bool b4 = p0 <= 0; // { dg-error "not a constant expression" }
+constexpr bool b5 = p0 > 0; // { dg-error "not a constant expression" }
+
+constexpr bool b7 = !p0; // { dg-error "not a constant expression" }
+constexpr bool b8 = 0 == p0; // { dg-error "not a constant expression" }
+constexpr bool b9 = 0 != p0; // { dg-error "not a constant expression" }
+constexpr bool b10 = 0 < p0; // { dg-error "not a constant expression" }
+constexpr bool b13 = 0 >= p0; // { dg-error "not a constant expression" }
+
+// The following are accepted as constant expressions due to bug c++/70196.
+constexpr bool b3 = p0 < 0;
+constexpr bool b6 = p0 >= 0;
+constexpr bool b11 = 0 <= p0;
+constexpr bool b12 = 0 > p0;
+
+#pragma GCC diagnostic pop
+
+}
+
+namespace WeakRefTest2 {
+
+extern __attribute__ ((weak)) int i;
+
+constexpr int *p1 = &i + 1;
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wextra"
+// Suppress warning: ordered comparison of pointer with integer zero
+
+constexpr bool b0 = p1; // { dg-error "not a constant expression" }
+constexpr bool b1 = p1 == 0; // { dg-error "not a constant expression" }
+constexpr bool b2 = p1 != 0; // { dg-error "not a constant expression" }
+constexpr bool b4 = p1 <= 0; // { dg-error "not a constant expression" }
+constexpr bool b5 = p1 > 0; // { dg-error "not a constant expression" }
+
+constexpr bool b7 = !p1; // { dg-error "not a constant expression" }
+constexpr bool b8 = 0 == p1; // { dg-error "not a constant expression" }
+constexpr bool b9 = 0 != p1; // { dg-error "not a constant expression" }
+constexpr bool b10 = 0 < p1; // { dg-error "not a constant expression" }
+constexpr bool b13 = 0 >= p1; // { dg-error "not a constant expression" }
+
+// The following are accepted as constant expressions due to bug c++/70196.
+// constexpr bool b3 = p1 < 0;
+// constexpr bool b6 = p1 >= 0;
+// constexpr bool b11 = 0 <= p1;
+// constexpr bool b12 = 0 > p1;
+
+#pragma GCC diagnostic pop
+
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr9.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr9.C
new file mode 100644
index 00000000000..f0250cbcd22
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr9.C
@@ -0,0 +1,57 @@
+// PR c++/67376 - [5/6 regression] Comparison with pointer to past-the-end
+// of array fails inside constant expression
+// { dg-do compile { target c++11 } }
+
+int a [2];
+
+constexpr const int* pa[] = {
+ a,
+ a + 0,
+ a + 1,
+ a + 2,
+ &a [0],
+ &a [0] + 0,
+ &a [0] + 1,
+ &a [0] + 2,
+ &a [1],
+ &a [1] - 1,
+ &a [1] + 0,
+ &a [1] + 1,
+ &a [2] - 2,
+ &a [2] - 1,
+ &a [2] + 0
+};
+
+#define Assert(e) static_assert ((e), #e)
+
+Assert (!(a == 0));
+Assert (!(a == (int*)0));
+Assert (!(a == nullptr));
+
+Assert (a != 0);
+Assert (a != (int*)0);
+Assert (a != nullptr);
+
+Assert (!(0 == a));
+Assert (!((int*)0 == a));
+Assert (!(nullptr == a));
+
+Assert (0 != a);
+Assert ((int*)0 != a);
+Assert (nullptr != a);
+
+bool constexpr test_eq (unsigned inx)
+{
+ return inx ? pa [inx - 1] == 0 && 0 == pa [inx - 1]
+ && test_eq (inx - 1) : pa [inx] == 0 && 0 == pa [inx];
+}
+
+Assert (!test_eq (sizeof pa / sizeof *pa));
+
+bool constexpr test_ne (unsigned inx)
+{
+ return inx ? pa [inx - 1] != 0 && 0 != pa [inx - 1]
+ && test_ne (inx - 1) : pa [inx] != 0 && 0 != pa [inx];
+}
+
+Assert (test_ne (sizeof pa / sizeof *pa));
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C
index 4605b4be902..00dfd6db4df 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C
@@ -3,7 +3,7 @@
// Reliable ICE
constexpr int n[3] = {};
-constexpr int k = n[-1]; // { dg-error "negative" }
+constexpr int k = n[-1]; // { dg-error "array subscript" }
// Some random byte
-constexpr char c = "foo"[-1000]; // { dg-error "negative" }
+constexpr char c = "foo"[-1000]; // { dg-error "array subscript" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C
index 45e1ed27fae..42ca30a38ce 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C
@@ -3,6 +3,7 @@
template <typename Tp>
struct C {
+ C() = default;
constexpr C(const Tp& r) { }
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
index a67505d749b..8d352d0bb99 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
@@ -7,6 +7,6 @@ struct A {
struct B: A { };
constexpr int f(B b) { return b.i; }
-struct C { C(); }; // { dg-message "calls non-constexpr" }
-struct D: C { }; // { dg-message "no constexpr constructor" }
+struct C { C(); }; // { dg-message "" }
+struct D: C { }; // { dg-message "" }
constexpr int g(D d) { return 42; } // { dg-error "invalid type" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
index 30e0a643bcb..bf95b2443c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
@@ -6,6 +6,6 @@ struct A
A(int);
};
-struct B : A {}; // { dg-error "no matching" }
+struct B : A {}; // { dg-message "" }
constexpr int foo(B) { return 0; } // { dg-error "invalid type" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist10.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist10.C
new file mode 100644
index 00000000000..c12347dcc80
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist10.C
@@ -0,0 +1,11 @@
+// PR c++/70648
+// { dg-do compile { target c++11 } }
+
+struct C
+{
+ template <class... U>
+ constexpr C (...) : c { static_cast<U &&>(0)... } {}
+ int c[1];
+};
+
+static constexpr int b = C{}.c[0];
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
new file mode 100644
index 00000000000..420a04b7768
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
@@ -0,0 +1,125 @@
+// Verify the correctness of folding relational expressions involving
+// pointers to array elements and struct data members and null pointers.
+// Although the C semantics of relational expressions are only defined
+// for pointers to objects, C++ makes them well-defined when
+// (nullptr < p) yields true. See the discussion of the patch for
+// c++/67376 on gcc-patches for additional background.
+
+// { dg-do compile { target c++11 } }
+// { dg-options "-fdump-tree-optimized" }
+
+// Runtime assert. Used for potentially invalid expressions.
+#define RA(e) ((e) ? (void)0 : __builtin_abort ())
+
+// Static assert. Used for valid core constant expressions.
+#define SA(e) static_assert ((e), #e)
+
+void test_first_array_element ()
+{
+ static constexpr int a[] = { 0 };
+ constexpr const int *null = 0;
+ constexpr const int *pi = a;
+
+ // The following are valid constant expressions since in &*pi
+ // the '&*' "cancel each other out."
+ SA (!(null == &*pi));
+ SA ( (null != &*pi));
+
+ // The validity of the relational expressions involving null
+ // pointers in a constexpr context is questionable. Use a run
+ // time assertion to verify these.
+ RA ( (null < &*pi));
+ RA ( (null <= &*pi));
+ RA (!(null > &*pi));
+ RA (!(null >= &*pi));
+
+ SA (!(&*pi == null));
+ SA ( (&*pi != null));
+ RA (!(&*pi < null));
+ RA (!(&*pi <= null));
+ RA ( (&*pi > null));
+ RA ( (&*pi >= null));
+
+ // The following are valid constant expressions since &pi [0] is
+ // equivalent to &*pi.
+ SA (!(null == &pi [0]));
+ SA ( (null != &pi [0]));
+ RA ( (null < &pi [0]));
+ RA ( (null <= &pi [0]));
+ RA (!(null > &pi [0]));
+ RA (!(null >= &pi [0]));
+
+ SA (!(&pi [0] == null));
+ SA ( (&pi [0] != null));
+ RA (!(&pi [0] < null));
+ RA (!(&pi [0] <= null));
+ RA ( (&pi [0] > null));
+ RA ( (&pi [0] >= null));
+}
+
+void test_first_null_array_element ()
+{
+ constexpr const int *pi = 0;
+ constexpr const int *qi = 0;
+
+ // The following are valid constant expressions since in &*qi
+ // the '&*' "cancel each other out."
+ SA ( (pi == &*qi));
+ SA (!(pi != &*qi));
+
+ // The validity of the relational expressions involving null
+ // pointers in a constexpr context is questionable.
+ RA (!(pi < &*qi));
+ RA ( (pi <= &*qi));
+ RA (!(pi > &*qi));
+ RA ( (pi >= &*qi));
+
+ SA ( (&*qi == pi));
+ SA (!(&*qi != pi));
+ RA (!(&*qi < pi));
+ RA ( (&*qi <= pi));
+ RA (!(&*qi > pi));
+ RA ( (&*qi >= pi));
+
+ // The following are valid constant expressions since &qi [0] is
+ // equivalent to &*qi.
+ SA ( (pi == &qi [0]));
+ SA (!(pi != &qi [0]));
+ RA (!(pi < &qi [0]));
+ RA ( (pi <= &qi [0]));
+ RA (!(pi > &qi [0]));
+ RA ( (pi >= &qi [0]));
+
+ SA ( (&qi [0] == pi));
+ SA (!(&qi [0] != pi));
+ RA (!(&qi [0] < pi));
+ RA ( (&qi [0] <= pi));
+ RA (!(&qi [0] > pi));
+ RA ( (&qi [0] >= pi));
+}
+
+void test_first_struct_member ()
+{
+ static struct S { int a, b; } s = { 0, 0 };
+
+ constexpr const int *p = 0;
+ constexpr const S *q = &s;
+
+ SA (!(p == &q->b));
+ SA ( (p != &q->b));
+ RA ( (p < &q->b));
+ RA ( (p <= &q->b));
+ RA (!(p > &q->b));
+ RA (!(p >= &q->b));
+
+ SA (!(&q->b == p));
+ SA ( (&q->b != p));
+ RA (!(&q->b < p));
+ RA (!(&q->b <= p));
+ RA ( (&q->b > p));
+ RA ( (&q->b >= p));
+}
+
+// Expect all runtime asserts to have been eliminated as a result
+// of the tested expressions constant folded into true.
+// { dg-final { scan-assembler-not "abort" } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C
index 0f561a4360c..41fa4664ed6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C
@@ -2,4 +2,4 @@
constexpr char c1 = "hi"[1];
constexpr char c2 = "hi"[2];
-constexpr char c3 = "hi"[3]; // { dg-error "out of bound" }
+constexpr char c3 = "hi"[3]; // { dg-error "array subscript" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C
new file mode 100644
index 00000000000..2ca641d77e3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C
@@ -0,0 +1,17 @@
+// PR c++/70543
+// { dg-do compile { target c++11 } }
+
+template <typename>
+struct X
+{
+ template <unsigned int = 0>
+ static constexpr int
+ calc (void)
+ {
+ return 0;
+ }
+
+ static constexpr unsigned int value = calc ();
+
+ char foo[value];
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
index db79a9c75e2..4055e0ee8ec 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
@@ -1,6 +1,6 @@
// PR c++/48570
// { dg-do compile { target c++11 } }
-constexpr wchar_t c1 = L"hi"[3]; // { dg-error "out of bound" }
-constexpr char16_t c2 = u"hi"[3]; // { dg-error "out of bound" }
-constexpr char32_t c3 = U"hi"[3]; // { dg-error "out of bound" }
+constexpr wchar_t c1 = L"hi"[3]; // { dg-error "array subscript" }
+constexpr char16_t c2 = u"hi"[3]; // { dg-error "array subscript" }
+constexpr char32_t c3 = U"hi"[3]; // { dg-error "array subscript" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum_base3.C b/gcc/testsuite/g++.dg/cpp0x/enum_base3.C
new file mode 100644
index 00000000000..3cb2d6d8186
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/enum_base3.C
@@ -0,0 +1,29 @@
+// PR c++/70627
+// { dg-do compile { target c++11 } }
+
+struct D;
+struct A
+{
+ D *operator->();
+};
+struct B
+{
+ template <typename... T> void foo (T &&...) {}
+};
+typedef unsigned char G;
+enum class H : G;
+struct C
+{
+};
+struct D : C
+{
+ B foo () const { B a; a.foo (d); }
+ H d;
+};
+struct F : C
+{
+ void foo ();
+ A f;
+};
+enum class H : unsigned char;
+void F::foo () { B b = f->foo (); }
diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C b/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C
index 7a22f8830ec..7e2d58b422e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C
+++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C
@@ -8,7 +8,7 @@ struct A
struct B : A
{
- using A::A; // { dg-error "inherited" }
+ using A::A;
};
constexpr B b; // { dg-error "literal" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept29.C b/gcc/testsuite/g++.dg/cpp0x/noexcept29.C
new file mode 100644
index 00000000000..8b920c5b4bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept29.C
@@ -0,0 +1,19 @@
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-fno-exceptions" }
+
+// PR68475 we used to not check eh spec matching with -fno-exceptions,
+// but this could lead to ICEs.
+
+template <typename> struct traits;
+
+template <typename T> struct X
+{
+ void Foo () noexcept (traits <T>::foo ()); // { dg-message "previous declaration" }
+};
+
+template <typename T>
+void
+X<T>::Foo () noexcept (traits <T>::bar ()) // { dg-error "different exception specifier" }
+{
+}
+
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr65398.C b/gcc/testsuite/g++.dg/cpp0x/pr65398.C
index a4aeba580fc..6bd34a4ffca 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr65398.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr65398.C
@@ -12,12 +12,12 @@ constexpr char c5 = *(&s[2] + 0);
constexpr char c6 = *(&s[0] + 2);
constexpr char c7 = *(&s[2] + 1);
-constexpr char d1 = *(&s[4] - 0); // { dg-error "array subscript out of bound" }
+constexpr char d1 = *(&s[4] - 0); // { dg-error "array subscript" }
constexpr char d2 = *(&s[4] - 1);
constexpr char d3 = *(&s[4] - 2);
constexpr char d4 = *(&s[4] - 3);
constexpr char d5 = *(&s[4] - 4);
-constexpr char d6 = *(&s[4] - 5); // { dg-error "negative array subscript" }
+constexpr char d6 = *(&s[4] - 5); // { dg-error "array subscript" }
/* Don't accept invalid stuff. */
constexpr char e1 = *(&s[5] - 1); // { dg-error "is not a constant expression" }
@@ -45,12 +45,12 @@ constexpr int i5 = *(&l[2] + 0);
constexpr int i6 = *(&l[0] + 2);
constexpr int i7 = *(&l[2] + 1);
-constexpr char j1 = *(&l[4] - 0); // { dg-error "array subscript out of bound" }
+constexpr char j1 = *(&l[4] - 0); // { dg-error "array subscript" }
constexpr char j2 = *(&l[4] - 1);
constexpr char j3 = *(&l[4] - 2);
constexpr char j4 = *(&l[4] - 3);
constexpr char j5 = *(&l[4] - 4);
-constexpr char j6 = *(&l[4] - 5); // { dg-error "negative array subscript" }
+constexpr char j6 = *(&l[4] - 5); // { dg-error "array subscript" }
/* Don't accept invalid stuff. */
constexpr char k1 = *(&l[5] - 1); // { dg-error "is not a constant expression" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr70528.C b/gcc/testsuite/g++.dg/cpp0x/pr70528.C
new file mode 100644
index 00000000000..af1c84e1e94
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr70528.C
@@ -0,0 +1,16 @@
+// PR c++/70258
+// { dg-do compile { target c++11 } }
+
+template <class T>
+struct H
+{
+ template <typename A = T, typename = decltype (A())>
+ H ();
+};
+
+struct J {
+ struct K {
+ int First = 0;
+ };
+ H<K> FunctionMDInfo;
+};
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C
new file mode 100644
index 00000000000..79e0b5a8da1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C
@@ -0,0 +1,16 @@
+// PR c++/70449
+// { dg-do compile { target c++14 } }
+// { dg-options "-Wall" }
+
+template <int N>
+constexpr int f1 ()
+{
+ enum E { a = f1<0> () }; // { dg-error "called in a constant expression before its definition is complete|is not an integer constant" }
+ return 0;
+}
+
+constexpr int f3 ()
+{
+ enum E { a = f3 () }; // { dg-error "called in a constant expression before its definition is complete|is not an integer constant" }
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr69066.C b/gcc/testsuite/g++.dg/cpp1y/pr69066.C
new file mode 100644
index 00000000000..263e1b61e9f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/pr69066.C
@@ -0,0 +1,75 @@
+// PR c++/69066
+// { dg-do compile { target c++14 } }
+
+template <typename T> T&& declval();
+
+template<typename T, T v>
+struct integral_constant
+{
+ static constexpr T value = v;
+ typedef T value_type;
+ typedef integral_constant<T, v> type;
+ constexpr operator value_type() const { return value; }
+};
+
+typedef integral_constant<bool, true> true_type;
+typedef integral_constant<bool, false> false_type;
+
+template <typename...>
+using void_t = void;
+
+template <typename, typename = void>
+class is_zero_callable : public false_type
+{
+};
+
+template <typename T>
+class is_zero_callable<T, void_t<decltype(declval<T>()())>>
+ : public true_type
+{
+};
+
+template <typename TF, bool TLastStep>
+struct curry_impl
+{
+ static auto exec(TF f)
+ {
+ // Bind `x` to subsequent calls.
+ return [=](auto x)
+ {
+ auto bound_f = [=](auto... xs) -> decltype(f(x, xs...))
+ {
+ return f(x, xs...);
+ };
+
+ // Recursive step.
+ return curry_impl<decltype(bound_f),
+ is_zero_callable<decltype(bound_f)>{}>::exec(bound_f);
+ };
+ }
+};
+
+template <typename TF>
+struct curry_impl<TF, true>
+{
+ static auto exec(TF f)
+ {
+ return f();
+ }
+};
+
+template <typename TF>
+auto curry(TF f)
+{
+ return curry_impl<TF, is_zero_callable<decltype(f)>{}>::exec(f);
+}
+
+int main()
+{
+ auto sum = [](int x, int y)
+ {
+ return x + y;
+ };
+
+ (void)curry(sum)(1)(1);
+}
diff --git a/gcc/testsuite/g++.dg/cpp1y/vla11.C b/gcc/testsuite/g++.dg/cpp1y/vla11.C
new file mode 100644
index 00000000000..36609abe53b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/vla11.C
@@ -0,0 +1,712 @@
+// PR c++/69517 - [5/6 regression] SEGV on a VLA with excess initializer
+// elements
+// PR c++/70019 - VLA size overflow not detected
+//
+// Runtime test to verify that attempting to either construct a VLA with
+// erroneous bounds, or initialize one with an initializer-list that
+// contains more elements than the VLA's non-constant (runtime) bounds
+// causes an exception to be thrown. Test also verifies that valid
+// VLAs and their initializers don't cause such an exception.
+
+// { dg-do run { target c++11 } }
+// { dg-additional-options "-Wno-vla" }
+
+#pragma GCC diagnostic ignored "-Wvla"
+
+#define INT_MAX __INT_MAX__
+#define LONG_MAX __LONG_MAX__
+#define SIZE_MAX __SIZE_MAX__
+#define UINT_MAX (~0U)
+#define ULONG_MAX (~0LU)
+
+#define INT_MIN (-__INT_MAX__ - 1)
+#define LONG_MIN (-__LONG_MAX__ - 1)
+
+// The size of the largest allowed VLA in bytes. Bigger objects
+// cause an exception to be thrown. Unless the maximum size is
+// obscenely large, smaller objects should be successfully created
+// provided there's enough stack space. See TEST_NEAR_VLA_MAX_SIZE
+// below.
+#define MAX (__SIZE_MAX__ / 2)
+
+// Define to non-zero to exercise very large VLAs with size just
+// below the implementation-defined maximum.
+#define TEST_NEAR_VLA_MAX_SIZE 0
+
+// Define to zero to enable tests that cause an ICE due to c++/58646.
+#define BUG_58646 1
+
+// Helper macro to make it possible to pass as one multpile arguments
+// to another macro.
+#define Init(...) __VA_ARGS__
+
+typedef __SIZE_TYPE__ size_t;
+
+// Incremented for each test failure.
+int fail;
+
+// Used to convert a constant array dimension to a non-constant one.
+template <class T>
+T d (T n)
+{
+ return n;
+}
+
+// Verify either that an expected exception has been thrown or that
+// one hasn't been thrown if one isn't expected.
+int __attribute__ ((noclone, noinline))
+sink (void *p, int line, bool expect, const char *expr)
+{
+ if (!p != expect)
+ {
+ __builtin_printf ("line %i: Assertion failed: '%s': "
+ "exception unexpectedly %sthrown\n",
+ line, expr, !p ? "" : "not ");
+ ++fail;
+ }
+ else
+ {
+#if defined DEBUG && DEBUG
+ __builtin_printf ("line %i: Assertion passed: '%s': "
+ "exception %sthrown as expected\n",
+ line, expr, !p ? "" : "not ");
+#endif
+ }
+ return 0;
+}
+
+#define _CAT(name, line) name ## line
+#define CAT(name, line) _CAT (name, line)
+
+#define STR(...) #__VA_ARGS__
+
+// Type to exercise VLA with. TYPESIZE is the size of the type in bytes.
+// Using a template serves two purposes. First, it makes it possible to
+// parameterize the test on VLAs of different size. Second, it verifies
+// that the checking code can deal with templates (i.e., completes
+// the element type of the VLA when necessary).
+template <unsigned TypeSize>
+union TestType
+{
+ char data;
+ char padding [TypeSize];
+};
+
+// Test function invoked with a pointer to each test case. Must
+// return a value though what value doesn't matter.
+int __attribute__ ((noclone, noinline))
+tester (int (*testcase)(const char*),
+ const char *str, int line, bool expect)
+{
+ try
+ {
+ return testcase (str);
+ }
+ catch (...)
+ {
+ return sink (0, line, expect, str);
+ }
+}
+
+// Macro to define a unique specialization of a function template to
+// exercise a VLA of type T, rank N, with dimensions given by Dims
+// and initializer Init. Expect is true when the VLA initialization
+// is expected to trigger an exception.
+// The macro creates a unique global dummy int object and initializes
+// it with the result of the function. The dummy object servers no
+// other purpose but to call the function. The function verifies
+// the expected postconditions.
+#define TEST(TypeSize, Dims, Init, Expect) \
+ static int CAT (testcase, __LINE__)(const char *str) \
+ { \
+ TestType<TypeSize> vla Dims Init; \
+ static_assert (sizeof (TestType<TypeSize>) == TypeSize, \
+ "wrong test type size"); \
+ return sink (vla, __LINE__, Expect, str); \
+ } \
+ const int CAT (dummy, __LINE__) \
+ = tester (CAT (testcase, __LINE__), \
+ "T<" #TypeSize "> a" #Dims " " STR (Init) ";", \
+ __LINE__, Expect)
+
+
+// Create and run a test function exercising a VLA definition
+// of one of the following forms:
+// TestType<Size> VLA Dims; // uninitialized (with Init ())
+// or:
+// TestType<Size> VLA Dims Init; // initialized (with = Init ({...})
+//
+// +-- Element Size (in Bytes)
+// | +-- VLA Dimensions (constant as in [3], otherwise d(3))
+// | | +-- VLA Initializer Expression (if any)
+// | | | +-- Expect Exception
+// | | | |
+// V V V V
+TEST (1, [d(0)], Init (/* none*/), true); // uninitialized
+
+#if !BUG_58646
+// The following causes an ICE due to c++/58646.
+TEST (1, [d(0)], Init ({}), true);
+#endif
+TEST (1, [d(0)], Init ({1}), true); // initialized with " {1}"
+TEST (1, [d(0)], = Init ({1}), true); // initialized with "= {1}"
+
+TEST (1, [d(1)], Init (), false);
+TEST (1, [d(1)], Init ({}), false);
+TEST (1, [d(1)], = Init ({}), false);
+TEST (1, [d(1)], Init ({1}), false);
+TEST (1, [d(1)], = Init ({1}), false);
+TEST (1, [d(1)], Init ({1, 2}), true);
+TEST (1, [d(1)], = Init ({1, 2}), true);
+
+TEST (1, [d(2)], Init (), false);
+TEST (1, [d(2)], Init ({}), false);
+TEST (1, [d(2)], Init ({1}), false);
+TEST (1, [d(2)], Init ({1, 2}), false);
+TEST (1, [d(2)], Init ({1, 2, 3}), true);
+
+#if TEST_NEAR_VLA_MAX_SIZE
+// Very large but not erroneous one dimensional VLAs.
+TEST (1, [d(MAX)], Init (), false);
+TEST (1, [d(MAX)], Init ({}), false);
+TEST (1, [d(MAX)], Init ({1}), false);
+TEST (1, [d(MAX)], Init ({1, 2}), false);
+TEST (1, [d(MAX)], Init ({1, 2, 3}), false);
+
+TEST ( 2, [d(MAX / 2)], Init (), false);
+TEST ( 4, [d(MAX / 4)], Init (), false);
+TEST ( 8, [d(MAX / 8)], Init (), false);
+TEST (16, [d(MAX / 16)], Init (), false);
+TEST (32, [d(MAX / 32)], Init (), false);
+TEST (64, [d(MAX / 64)], Init (), false);
+#endif // TEST_NEAR_VLA_MAX_SIZE
+
+// One dimensional VLAs with a negative upper bound.
+TEST (1, [d(LONG_MIN)], Init (), true);
+TEST (1, [d(INT_MIN)], Init (), true);
+TEST (1, [d(-1234)], Init (), true);
+TEST (1, [d(-1)], Init (), true);
+
+// Excessively large one dimensional VLAs.
+TEST ( 1, [d(MAX + 1)], Init (), true);
+TEST ( 2, [d(MAX)], Init (), true);
+TEST ( 4, [d(MAX / 2)], Init (), true);
+TEST ( 4, [d(MAX / 3)], Init (), true);
+TEST ( 8, [d(MAX / 2)], Init (), true);
+TEST ( 8, [d(MAX / 3)], Init (), true);
+TEST ( 8, [d(MAX / 4)], Init (), true);
+TEST ( 8, [d(MAX / 5)], Init (), true);
+TEST ( 8, [d(MAX / 6)], Init (), true);
+TEST ( 8, [d(MAX / 7)], Init (), true);
+TEST (16, [d(MAX / 15)], Init (), true);
+TEST (32, [d(MAX / 31)], Init (), true);
+TEST (64, [d(MAX / 63)], Init (), true);
+TEST ( 1, [d(SIZE_MAX)], Init (), true);
+
+TEST (1, [d(LONG_MIN)], Init ({}), true);
+TEST (1, [d(INT_MIN)], Init ({}), true);
+TEST (1, [d(-1)], Init ({}), true);
+
+TEST (1, [d(SIZE_MAX)], Init ({}), true);
+
+TEST (1, [d(LONG_MIN)], Init ({0}), true);
+TEST (1, [d(INT_MIN)], Init ({0}), true);
+TEST (1, [d(-1)], Init ({0}), true);
+
+TEST (1, [d(SIZE_MAX)], Init ({0}), true);
+
+TEST ( 1, [d(SIZE_MAX/2) + 1], Init (), true);
+TEST ( 2, [d(SIZE_MAX/4) + 1], Init (), true);
+TEST ( 4, [d(SIZE_MAX/8) + 1], Init (), true);
+TEST ( 8, [d(SIZE_MAX/16) + 1], Init (), true);
+TEST (16, [d(SIZE_MAX/32) + 1], Init (), true);
+
+TEST ( 1, [d(SIZE_MAX/2) + 1], Init ({1}), true);
+TEST ( 2, [d(SIZE_MAX/4) + 1], Init ({1, 2}), true);
+TEST ( 4, [d(SIZE_MAX/8) + 1], Init ({1, 2, 3}), true);
+TEST ( 8, [d(SIZE_MAX/16) + 1], Init ({1, 2, 3, 4}), true);
+TEST (16, [d(SIZE_MAX/32) + 1], Init ({1, 2, 3, 4, 5}), true);
+
+// Two dimensional VLAs with one constant bound.
+
+TEST (1, [1][d(0)], Init (), true);
+
+#if !BUG_58646
+// The following causes an ICE due to c++/58646.
+TEST (1, [1][d(0)], Init ({}), true);
+#endif
+TEST (1, [ ][d(0)], Init ({{1}}), true); // unspecified bound
+TEST (1, [1][d(0)], Init ({{1}}), true);
+
+TEST (1, [1][d(1)], Init (), false);
+TEST (1, [1][d(1)], Init ({{1}}), false);
+TEST (1, [1][d(1)], Init ({{1, 2}}), true);
+TEST (1, [ ][d(1)], Init ({{1, 2}}), true);
+
+TEST (1, [1][d(2)], Init (), false);
+TEST (1, [1][d(2)], Init ({{1}}), false);
+TEST (1, [1][d(2)], Init ({{1, 2}}), false);
+TEST (1, [ ][d(2)], Init ({{1, 2}}), false);
+TEST (1, [1][d(2)], Init ({{1, 2, 3}}), true);
+TEST (1, [ ][d(2)], Init ({{1, 2, 3}}), true);
+
+TEST (1, [2][d(1)], Init (), false);
+TEST (1, [2][d(1)], Init ({{1}}), false);
+TEST (1, [ ][d(1)], Init ({{1}}), false);
+TEST (1, [2][d(1)], Init ({{1}, {2}}), false);
+TEST (1, [ ][d(1)], Init ({{1}, {2}}), false);
+TEST (1, [2][d(1)], Init ({{1, 2}}), true);
+TEST (1, [ ][d(1)], Init ({{1, 2}}), true);
+TEST (1, [2][d(1)], Init ({{1}, {2, 3}}), true);
+TEST (1, [ ][d(1)], Init ({{1}, {2, 3}}), true);
+TEST (1, [2][d(1)], Init ({{1, 2, 3}}), true);
+TEST (1, [ ][d(1)], Init ({{1, 2, 3}}), true);
+TEST (1, [2][d(1)], Init ({{1, 2, 3}, {4}}), true);
+TEST (1, [ ][d(1)], Init ({{1, 2, 3}, {4}}), true);
+TEST (1, [2][d(1)], Init ({{1, 2}, {3, 4}}), true);
+TEST (1, [ ][d(1)], Init ({{1, 2}, {3, 4}}), true);
+
+TEST (1, [2][d(2)], Init (), false);
+TEST (1, [2][d(2)], Init ({{1}}), false);
+TEST (1, [2][d(2)], Init ({{1, 2}}), false);
+TEST (1, [2][d(2)], Init ({{1, 2}, {3}}), false);
+TEST (1, [2][d(2)], Init ({{1, 2}, {3, 4}}), false);
+TEST (1, [2][d(2)], Init ({{1}, {2, 3, 4}}), true);
+TEST (1, [2][d(2)], Init ({{1}, {2, 3, 4, 5}}), true);
+TEST (1, [2][d(2)], Init ({{1, 2}, {3, 4, 5}}), true);
+TEST (1, [2][d(2)], Init ({{1, 2, 3}, {4, 5}}), true);
+TEST (1, [2][d(2)], Init ({{1, 2, 3}, {4, 5, 6}}), true);
+
+TEST (1, [2][d(3)], Init (), false);
+TEST (1, [2][d(3)], Init ({{1}}), false);
+TEST (1, [2][d(3)], Init ({{1, 2}}), false);
+TEST (1, [2][d(3)], Init ({{1, 2}, {3}}), false);
+TEST (1, [2][d(3)], Init ({{1, 2}, {3, 4}}), false);
+TEST (1, [2][d(3)], Init ({{1}, {2, 3, 4}}), false);
+TEST (1, [2][d(3)], Init ({{1}, {2, 3, 4, 5}}), true);
+TEST (1, [2][d(3)], Init ({{1, 2}, {3, 4, 5}}), false);
+TEST (1, [2][d(3)], Init ({{1, 2, 3}, {4, 5}}), false);
+TEST (1, [2][d(3)], Init ({{1, 2, 3}, {4, 5, 6}}), false);
+TEST (1, [2][d(3)], Init ({{1, 2, 3}, {4, 5, 6, 7}}), true);
+TEST (1, [2][d(3)], Init ({{1, 2, 3, 4}, {5, 6, 7}}), true);
+TEST (1, [2][d(3)], Init ({{1, 2, 3, 4, 5}, {6, 7}}), true);
+TEST (1, [2][d(3)], Init ({{1, 2, 3, 4, 5, 6}, {7}}), true);
+TEST (1, [2][d(3)], Init ({{1, 2, 3, 4, 5, 6, 7}}), true);
+
+#if TEST_NEAR_VLA_MAX_SIZE
+TEST (1, [1][d(MAX)], Init (), false);
+# if !BUG_58646
+// The following causes an ICE due to c++/58646.
+TEST (1, [1][d(MAX)], Init ({}), false);
+# endif
+TEST (1, [1][d(MAX)], Init ({{1}}), false);
+TEST (1, [1][d(MAX)], Init ({{1, 2}}), false);
+TEST (1, [1][d(MAX)], Init ({{1, 2, 3}}), false);
+TEST (1, [1][d(MAX)], Init ({{1, 2, 3, 4}}), false);
+
+TEST (1, [2][d(MAX / 2)], Init (), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3, 4}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1}, {2}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1}, {2, 3}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2}, {3}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2}, {3, 4}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}, {4}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5}}), false);
+TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5, 6}}), false);
+#endif // TEST_NEAR_VLA_MAX_SIZE
+
+// Excessively large two dimensional VLAs.
+TEST (1, [1][d(LONG_MIN)], Init (), true);
+TEST (1, [1][d(INT_MIN)], Init (), true);
+TEST (1, [1][d(-1)], Init (), true);
+
+TEST (1, [1][d(SIZE_MAX)], Init (), true);
+
+#if !BUG_58646
+// The following cause an ICE due to c++/58646.
+TEST (1, [1][d(LONG_MIN)], Init ({}), true);
+TEST (1, [1][d(INT_MIN)], Init ({}), true);
+TEST (1, [1][d(-1)], Init ({}), true);
+TEST (1, [1][d(SIZE_MAX)], Init ({}), true);
+#endif
+
+TEST (1, [1][d(LONG_MIN)], Init ({{0}}), true);
+TEST (1, [1][d(INT_MIN)], Init ({{0}}), true);
+TEST (1, [1][d(-1)], Init ({{0}}), true);
+TEST (1, [1][d(SIZE_MAX)], Init ({{0}}), true);
+
+TEST (1, [d(LONG_MIN)][1], Init (), true);
+TEST (1, [d(INT_MIN)][1], Init (), true);
+TEST (1, [d(-1)][1], Init (), true);
+TEST (1, [d(SIZE_MAX)][1], Init (), true);
+
+TEST (1, [d(LONG_MIN)][1], Init ({}), true);
+TEST (1, [d(INT_MIN)][1], Init ({}), true);
+TEST (1, [d(-1)][1], Init ({}), true);
+TEST (1, [d(SIZE_MAX)][1], Init ({}), true);
+
+TEST (1, [d(LONG_MIN)][1], Init ({{0}}), true);
+TEST (1, [d(INT_MIN)][1], Init ({{0}}), true);
+TEST (1, [d(-1)][1], Init ({{0}}), true);
+TEST (1, [d(SIZE_MAX)][1], Init ({{0}}), true);
+
+// Two dimensional VLAs with no constant bound.
+TEST (1, [d(0)][d(0)], Init (), true);
+TEST (1, [d(0)][d(0)], Init ({}), true);
+#if !BUG_58646
+// The following cause an ICE due to c++/58646.
+TEST (1, [d(0)][d(0)], Init ({{}}), true);
+TEST (1, [d(0)][d(0)], Init ({{}, {}}), true);
+#endif
+
+TEST (1, [d(0)][d(0)], Init ({{1}}), true);
+TEST (1, [d(0)][d(0)], Init ({{1, 2}}), true);
+#if !BUG_58646
+TEST (1, [d(0)][d(0)], Init ({{1}, {}}), true);
+TEST (1, [d(0)][d(0)], Init ({{}, {1}}), true);
+#endif
+
+TEST (1, [d(1)][d(0)], Init (), true);
+TEST (1, [d(1)][d(0)], Init ({}), true);
+TEST (1, [d(1)][d(0)], Init ({{1}}), true);
+
+TEST (1, [d(1)][d(1)], Init (), false);
+TEST (1, [d(1)][d(1)], Init ({{1}}), false);
+TEST (1, [d(1)][d(1)], Init ({{1, 2}}), true);
+
+TEST (1, [d(1)][d(2)], Init (), false);
+TEST (1, [d(1)][d(2)], Init ({{1}}), false);
+TEST (1, [d(1)][d(2)], Init ({{1, 2}}), false);
+TEST (1, [d(1)][d(2)], Init ({{1, 2, 3}}), true);
+
+TEST (1, [d(2)][d(1)], Init (), false);
+TEST (1, [d(2)][d(1)], Init ({{1}}), false);
+TEST (1, [d(2)][d(1)], Init ({{1}, {2}}), false);
+TEST (1, [d(2)][d(1)], Init ({{1, 2}}), true);
+TEST (1, [d(2)][d(1)], Init ({{1}, {2, 3}}), true);
+TEST (1, [d(2)][d(1)], Init ({{1, 2, 3}}), true);
+TEST (1, [d(2)][d(1)], Init ({{1, 2, 3}, {4}}), true);
+TEST (1, [d(2)][d(1)], Init ({{1, 2}, {3, 4}}), true);
+
+TEST (1, [d(2)][d(2)], Init (), false);
+TEST (1, [d(2)][d(2)], Init ({{1}}), false);
+TEST (1, [d(2)][d(2)], Init ({{1, 2}}), false);
+TEST (1, [d(2)][d(2)], Init ({{1, 2}, {3}}), false);
+TEST (1, [d(2)][d(2)], Init ({{1, 2}, {3, 4}}), false);
+TEST (1, [d(2)][d(2)], Init ({{1}, {2, 3, 4}}), true);
+TEST (1, [d(2)][d(2)], Init ({{1}, {2, 3, 4, 5}}), true);
+TEST (1, [d(2)][d(2)], Init ({{1, 2}, {3, 4, 5}}), true);
+TEST (1, [d(2)][d(2)], Init ({{1, 2, 3}, {4, 5}}), true);
+TEST (1, [d(2)][d(2)], Init ({{1, 2, 3}, {4, 5, 6}}), true);
+
+TEST (1, [d(2)][d(3)], Init (), false);
+TEST (1, [d(2)][d(3)], Init ({{1}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1, 2}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1, 2}, {3}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1, 2}, {3, 4}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1}, {2, 3, 4}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1}, {2, 3, 4, 5}}), true);
+TEST (1, [d(2)][d(3)], Init ({{1, 2}, {3, 4, 5}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1, 2, 3}, {4, 5}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1, 2, 3}, {4, 5, 6}}), false);
+TEST (1, [d(2)][d(3)], Init ({{1, 2, 3}, {4, 5, 6, 7}}), true);
+TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4}, {5, 6, 7}}), true);
+TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4, 5}, {6, 7}}), true);
+TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4, 5, 6}, {7}}), true);
+TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4, 5, 6, 7}}), true);
+
+#if TEST_NEAR_VLA_MAX_SIZE
+TEST (1, [d(1)][d(MAX)], Init (), false);
+TEST (1, [d(1)][d(MAX)], Init ({}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6, 7}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6, 7, 8}}), false);
+TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6, 7, 8, 9}}), false);
+
+TEST (1, [d(2)][d(MAX / 2)], Init (), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6, 7}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6, 7, 8}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6, 7, 8, 9}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1}, {2}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1}, {2, 3}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2}, {3}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2}, {3, 4}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}, {4}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5}}), false);
+TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5, 6}}), false);
+#endif
+
+TEST (1, [d(2)][d(MAX)], Init (), true);
+TEST (1, [d(2)][d(MAX)], Init ({{1}}), true);
+TEST (1, [d(MAX)][d(MAX)], Init ({{1, 2}}), true);
+TEST (1, [d(0)][d(MAX)], Init ({{1}, {2}}), true);
+TEST (1, [d(INT_MAX)][d(MAX)], Init ({{1}, {2, 3}}), true);
+TEST (1, [d(SIZE_MAX)][d(MAX)], Init ({{1, 2}, {3, 4}, {5}}), true);
+
+// Erroneous two-dimensional VLAs with size exceeding SIZE_MAX / 2
+// (those must be rejected because no object can be bigger than that,
+// otherwise pointer arithmetic breaks).
+TEST ( 1, [2][d(SIZE_MAX/2)], Init (), true);
+TEST ( 2, [2][d(SIZE_MAX/4)], Init (), true);
+TEST ( 4, [2][d(SIZE_MAX/8)], Init (), true);
+TEST ( 8, [2][d(SIZE_MAX/16)], Init (), true);
+TEST (16, [2][d(SIZE_MAX/32)], Init (), true);
+
+TEST ( 1, [d(SIZE_MAX/2)][2], Init (), true);
+TEST ( 2, [d(SIZE_MAX/4)][2], Init (), true);
+TEST ( 4, [d(SIZE_MAX/8)][2], Init (), true);
+TEST ( 8, [d(SIZE_MAX/16)][2], Init (), true);
+TEST (16, [d(SIZE_MAX/32)][2], Init (), true);
+
+// Verify that the unspecified bound is factored into the computation
+// of the total size.
+TEST ( 1, [][d(SIZE_MAX/2)], Init ({{1}, {2}}), true);
+TEST ( 2, [][d(SIZE_MAX/4)], Init ({{1}, {2}}), true);
+TEST ( 4, [][d(SIZE_MAX/8)], Init ({{1}, {2}}), true);
+TEST ( 8, [][d(SIZE_MAX/16)], Init ({{1}, {2}}), true);
+TEST (16, [][d(SIZE_MAX/32)], Init ({{1}, {2}}), true);
+TEST (16, [][d(SIZE_MAX/64)], Init ({{1}, {2}, {3}}), true);
+
+// Three dimensional VLAs with two constant bounds.
+
+TEST (1, [1][1][d(-1)], Init (), true);
+TEST (1, [1][1][d(0)], Init (), true);
+
+#if !BUG_58646
+// The following causes an ICE due to c++/58646.
+TEST (1, [1][1][d(0)], Init ({}), true);
+TEST (1, [1][1][d(-1)], Init ({{}}), true);
+TEST (1, [1][d(-1)][1], Init ({{}}), true);
+TEST (1, [d(-1)][1][1], Init ({{}}), true);
+
+TEST (1, [1][1][d(0)], Init ({{}}), true);
+TEST (1, [1][d(0)][1], Init ({{}}), true);
+TEST (1, [d(0)][1][1], Init ({{}}), true);
+#endif
+
+TEST (1, [1][1][d(1)], Init (), false);
+
+#if !BUG_58646
+TEST (1, [1][1][d(1)], Init ({{}}), false);
+TEST (1, [1][1][d(1)], Init ({{{}}}), false);
+TEST (1, [1][1][d(1)], Init ({{{1}}}), false);
+#endif
+
+TEST (1, [1][1][d(1)], Init ({{{1, 2}}}), true);
+TEST (1, [1][1][d(1)], Init ({{{1, 2, 3}}}), true);
+
+TEST (1, [1][d(1)][1], Init (), false);
+
+#if !BUG_58646
+TEST (1, [1][d(1)][1], Init ({{}}), false);
+TEST (1, [1][d(1)][1], Init ({{{}}}), false);
+#endif
+
+TEST (1, [1][d(1)][1], Init ({{{1}}}), false);
+TEST (1, [1][d(1)][1], Init ({{{1}, {2}}}), true);
+TEST (1, [1][d(1)][1], Init ({{{1}, {2}, {3}}}), true);
+
+TEST (1, [d(1)][1][1], Init (), false);
+
+#if !BUG_58646
+TEST (1, [d(1)][1][1], Init ({{}}), false);
+TEST (1, [d(1)][1][1], Init ({{{}}}), false);
+#endif
+
+TEST (1, [d(1)][1][1], Init ({{{1}}}), false);
+TEST (1, [d(1)][1][1], Init ({{{1}}, {{2}}}), true);
+TEST (1, [d(1)][1][1], Init ({{{1}}, {{2}}, {{3}}}), true);
+
+TEST (1, [1][1][d(2)], Init (), false);
+
+#if !BUG_58646
+TEST (1, [1][1][d(2)], Init ({{}}), false);
+TEST (1, [1][1][d(2)], Init ({{{}}}), false);
+#endif
+
+TEST (1, [1][1][d(2)], Init ({{{1}}}), false);
+TEST (1, [1][1][d(2)], Init ({{{1, 2}}}), false);
+TEST (1, [1][1][d(2)], Init ({{{1, 2, 3}}}), true);
+
+TEST (1, [1][d(2)][1], Init (), false);
+
+#if !BUG_58646
+TEST (1, [1][d(2)][1], Init ({{}}), false);
+TEST (1, [1][d(2)][1], Init ({{{}}}), false);
+#endif
+TEST (1, [1][d(2)][1], Init ({{{1}}}), false);
+TEST (1, [1][d(2)][1], Init ({{{1}, {2}}}), false);
+TEST (1, [1][d(2)][1], Init ({{{1}, {2}, {3}}}), true);
+
+TEST (1, [d(2)][1][1], Init (), false);
+
+#if !BUG_58646
+TEST (1, [d(2)][1][1], Init ({{}}), false);
+TEST (1, [d(2)][1][1], Init ({{{}}}), false);
+#endif
+TEST (1, [d(2)][1][1], Init ({{{1}}}), false);
+TEST (1, [d(2)][1][1], Init ({{{1}}, {{2}}}), false);
+TEST (1, [d(2)][1][1], Init ({{{1}}, {{2}}, {{3}}}), true);
+
+TEST (1, [1][2][d(2)], Init (), false);
+
+#if !BUG_58646
+TEST (1, [1][2][d(2)], Init ({{}}), false);
+TEST (1, [1][2][d(2)], Init ({{{}}}), false);
+#endif
+
+TEST (1, [1][2][d(2)], Init ({{{1}}}), false);
+TEST (1, [1][2][d(2)], Init ({{{1, 2}}}), false);
+TEST (1, [1][2][d(2)], Init ({{{1, 2, 3}}}), true);
+
+TEST (1, [1][2][d(2)], Init ({{{1}, {2}}}), false);
+TEST (1, [1][2][d(2)], Init ({{{1}, {2, 3}}}), false);
+TEST (1, [1][2][d(2)], Init ({{{1, 2}, {3}}}), false);
+TEST (1, [1][2][d(2)], Init ({{{1, 2}, {3, 4}}}), false);
+TEST (1, [1][2][d(2)], Init ({{{1}, {2, 3, 4}}}), true);
+TEST (1, [1][2][d(2)], Init ({{{1, 2, 3}, {}}}), true);
+TEST (1, [1][2][d(2)], Init ({{{1, 2, 3}, {4}}}), true);
+TEST (1, [1][2][d(2)], Init ({{{1, 2, 3, 4}}}), true);
+TEST (1, [1][2][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true);
+TEST (1, [1][2][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true);
+
+TEST (1, [2][2][d(2)], Init ({{{1}, {2}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1}, {2, 3}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7}}}), false);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}), false);
+
+TEST (1, [2][2][d(2)], Init ({{{1}, {2, 3, 4}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2, 3}, {}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2, 3}, {4}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2, 3, 4}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8, 9}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6, 7}, {8, 9}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4, 5}}, {{6, 7}, {8, 9}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1, 2, 3}, {4, 5}}, {{6, 7}, {8, 9}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1}, {2}}, {{3}, {4, 5, 6}}}), true);
+TEST (1, [2][2][d(2)], Init ({{{1}}, {{2}, {3, 4, 5, 6}}}), true);
+
+// Three dimensional VLAs with one constant bound.
+TEST (1, [2][d(-1)][d(-1)], Init (), true);
+TEST (1, [2][d(-1)][d(0)], Init (), true);
+TEST (1, [2][d(0)][d(-1)], Init (), true);
+TEST (1, [2][d(1)][d(-1)], Init (), true);
+TEST (1, [2][d(1)][d(0)], Init (), true);
+TEST (1, [2][d(-1)][d(1)], Init (), true);
+TEST (1, [2][d(0)][d(1)], Init (), true);
+
+TEST (1, [2][d(2)][d(2)], Init (), false);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}}}), false);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1}}}), false);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2}}}), false);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2}}}), false);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3}}}), false);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2, 3}}}), false);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3}}}), false);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2}, {3}}}), false);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}}), false);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}}), false);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}), false);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}), false);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {}}}), true);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3}, {}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {4}}}), true);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3}, {4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}}}), true);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3, 4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true);
+TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3}, {4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8, 9}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6, 7}, {8, 9}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4, 5}}, {{6, 7}, {8, 9}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {4, 5}}, {{6, 7}, {8, 9}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2}}, {{3}, {4, 5, 6}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}}, {{2}, {3, 4, 5, 6}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2}, {3}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3}, {4}}}), true);
+TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3, 4}, {5}}}), true);
+
+#if TEST_NEAR_VLA_MAX_SIZE
+// Very large but not erroneous three-dimensional VLAs.
+TEST ( 1, [2][d(1)][d(MAX/2)], Init (), false);
+TEST ( 2, [2][d(1)][d(MAX/4)], Init (), false);
+TEST ( 4, [2][d(1)][d(MAX/8)], Init (), false);
+TEST ( 8, [2][d(1)][d(MAX/16)], Init (), false);
+TEST (16, [2][d(1)][d(MAX/32)], Init (), false);
+
+TEST ( 1, [2][d(MAX/2)][d(1)], Init (), false);
+TEST ( 2, [2][d(MAX/4)][d(1)], Init (), false);
+TEST ( 4, [2][d(MAX/8)][d(1)], Init (), false);
+TEST ( 8, [2][d(MAX/16)][d(1)], Init (), false);
+TEST (16, [2][d(MAX/32)][d(1)], Init (), false);
+
+TEST ( 1, [d(MAX/2)][2][d(1)], Init (), false);
+TEST ( 2, [d(MAX/4)][2][d(1)], Init (), false);
+TEST ( 4, [d(MAX/8)][2][d(1)], Init (), false);
+TEST ( 8, [d(MAX/16)][2][d(1)], Init (), false);
+TEST (16, [d(MAX/32)][2][d(1)], Init (), false);
+#endif // TEST_NEAR_VLA_MAX_SIZE
+
+// Erroneous three-dimensional VLAs with size exceeding SIZE_MAX / 2
+// (those must be rejected because no object can be bigger than that,
+// otherwise pointer arithmetic breaks).
+TEST ( 1, [2][d(1)][d(SIZE_MAX/2)], Init (), true);
+TEST ( 2, [2][d(1)][d(SIZE_MAX/4)], Init (), true);
+TEST ( 4, [2][d(1)][d(SIZE_MAX/8)], Init (), true);
+TEST ( 8, [2][d(1)][d(SIZE_MAX/16)], Init (), true);
+TEST (16, [2][d(1)][d(SIZE_MAX/32)], Init (), true);
+
+TEST ( 1, [2][d(SIZE_MAX/2)][d(1)], Init (), true);
+TEST ( 2, [2][d(SIZE_MAX/4)][d(1)], Init (), true);
+TEST ( 4, [2][d(SIZE_MAX/8)][d(1)], Init (), true);
+TEST ( 8, [2][d(SIZE_MAX/16)][d(1)], Init (), true);
+TEST (16, [2][d(SIZE_MAX/32)][d(1)], Init (), true);
+
+TEST ( 1, [d(SIZE_MAX/2)][2][d(1)], Init (), true);
+TEST ( 2, [d(SIZE_MAX/4)][2][d(1)], Init (), true);
+TEST ( 4, [d(SIZE_MAX/8)][2][d(1)], Init (), true);
+TEST ( 8, [d(SIZE_MAX/16)][2][d(1)], Init (), true);
+TEST (16, [d(SIZE_MAX/32)][2][d(1)], Init (), true);
+
+TEST (16, [3][d(SIZE_MAX)][d(SIZE_MAX)], Init (), true);
+TEST (32, [d(SIZE_MAX)][5][d(SIZE_MAX)], Init (), true);
+TEST (64, [d(SIZE_MAX)][d(SIZE_MAX)][7], Init (), true);
+
+int main ()
+{
+ if (fail)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C b/gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C
new file mode 100644
index 00000000000..198e2bad5e5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C
@@ -0,0 +1,9 @@
+// PR c++/70512
+
+struct S
+{
+ S& operator= (int)
+ {
+ return *this;
+ }
+} __attribute__ ((__may_alias__));
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla1.C b/gcc/testsuite/g++.dg/ext/constexpr-vla1.C
index a5615bb3620..21eb93dc654 100644
--- a/gcc/testsuite/g++.dg/ext/constexpr-vla1.C
+++ b/gcc/testsuite/g++.dg/ext/constexpr-vla1.C
@@ -27,4 +27,4 @@ fn_not_ok (int n)
}
constexpr int n1 = fn_ok (3);
-constexpr int n2 = fn_not_ok (3); // { dg-error "array subscript out of bound" }
+constexpr int n2 = fn_not_ok (3); // { dg-error "array subscript" }
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla2.C b/gcc/testsuite/g++.dg/ext/constexpr-vla2.C
index 6cb1f708a23..6aab18436d5 100644
--- a/gcc/testsuite/g++.dg/ext/constexpr-vla2.C
+++ b/gcc/testsuite/g++.dg/ext/constexpr-vla2.C
@@ -18,4 +18,4 @@ fn_ok (int n)
}
constexpr int i1 = fn_ok (3);
-constexpr int i2 = fn_bad (3); // { dg-error "array subscript out of bound" }
+constexpr int i2 = fn_bad (3); // { dg-error "array subscript" }
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla3.C b/gcc/testsuite/g++.dg/ext/constexpr-vla3.C
index ba4eb50f5de..33fc968ad5a 100644
--- a/gcc/testsuite/g++.dg/ext/constexpr-vla3.C
+++ b/gcc/testsuite/g++.dg/ext/constexpr-vla3.C
@@ -11,4 +11,4 @@ foo (int n)
return z;
}
-constexpr int n = foo (3); // { dg-error "array subscript out of bound" }
+constexpr int n = foo (3); // { dg-error "array subscript" }
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla4.C b/gcc/testsuite/g++.dg/ext/constexpr-vla4.C
new file mode 100644
index 00000000000..428a8fd5224
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/constexpr-vla4.C
@@ -0,0 +1,17 @@
+// PR c++/70452
+// { dg-do compile { target c++14 } }
+
+constexpr int
+foo (int n, bool p)
+{
+ __extension__ int a [n] = { 0 };
+ if (n == 3)
+ foo (n - 2, false);
+ if (n == 3)
+ foo(n - 1, true);
+ if (p)
+ return a[1];
+ return 0;
+}
+
+constexpr int i2 = foo (3, false); // { dg-bogus "array subscript out of bound" }
diff --git a/gcc/testsuite/g++.dg/ext/pr70571.C b/gcc/testsuite/g++.dg/ext/pr70571.C
new file mode 100644
index 00000000000..2381bfe589c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/pr70571.C
@@ -0,0 +1,10 @@
+// PR c++/70571
+// { dg-do compile }
+
+typedef int V __attribute__ ((vector_size (sizeof (int))));
+
+void
+foo (V *x, V *y, int z)
+{
+ *x = (z == *y);
+}
diff --git a/gcc/testsuite/g++.dg/gomp/declare-simd-1.C b/gcc/testsuite/g++.dg/gomp/declare-simd-1.C
index 1462efd7a1d..d2659e18339 100644
--- a/gcc/testsuite/g++.dg/gomp/declare-simd-1.C
+++ b/gcc/testsuite/g++.dg/gomp/declare-simd-1.C
@@ -20,6 +20,8 @@ int f2 (int a, int *b, int c)
// { dg-final { scan-assembler-times "_ZGVcN8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
#pragma omp declare simd uniform (c) aligned (b : 4 * sizeof (int)) linear (a : 4) simdlen (4)
template <typename T>
@@ -85,6 +87,8 @@ namespace N1
// { dg-final { scan-assembler-times "_ZGVcN2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } }
struct A
{
@@ -193,6 +197,8 @@ int B<int>::f25<7> (int a, int *b, int c)
// { dg-final { scan-assembler-times "_ZGVcN8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
#pragma omp declare simd simdlen (4) aligned (b : 8 * sizeof (int)) linear (a, c : 2)
template <>
@@ -208,6 +214,8 @@ int B<int>::f26<-1> (int a, int *b, int c)
// { dg-final { scan-assembler-times "_ZGVcN4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } }
int
f27 (int x)
@@ -237,6 +245,8 @@ f30 (int x)
// { dg-final { scan-assembler-times "_ZGVcN16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } }
template <int N>
struct C
diff --git a/gcc/testsuite/g++.dg/gomp/declare-simd-3.C b/gcc/testsuite/g++.dg/gomp/declare-simd-3.C
index 4ae42514875..32cdc581b6e 100644
--- a/gcc/testsuite/g++.dg/gomp/declare-simd-3.C
+++ b/gcc/testsuite/g++.dg/gomp/declare-simd-3.C
@@ -19,6 +19,8 @@ int f1 (int a, int b, int c, int &d, int &e, int &f)
// { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
#pragma omp declare simd uniform(b) linear(c, d) linear(uval(e)) linear(ref(f))
int f2 (int a, int b, int c, int &d, int &e, int &f)
@@ -44,6 +46,8 @@ int f2 (int a, int b, int c, int &d, int &e, int &f)
// { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
#pragma omp declare simd uniform(b) linear(c, d) linear(uval(e)) linear(ref(f))
int f3 (const int a, const int b, const int c, const int &d, const int &e, const int &f)
@@ -57,6 +61,8 @@ int f3 (const int a, const int b, const int c, const int &d, const int &e, const
// { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
#pragma omp declare simd uniform(b) linear(c, d) linear(uval(e)) linear(ref(f))
int f4 (const int a, const int b, const int c, const int &d, const int &e, const int &f)
@@ -76,3 +82,5 @@ int f4 (const int a, const int b, const int c, const int &d, const int &e, const
// { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } }
diff --git a/gcc/testsuite/g++.dg/gomp/declare-simd-4.C b/gcc/testsuite/g++.dg/gomp/declare-simd-4.C
index 51382bffe27..acf03d99e82 100644
--- a/gcc/testsuite/g++.dg/gomp/declare-simd-4.C
+++ b/gcc/testsuite/g++.dg/gomp/declare-simd-4.C
@@ -11,6 +11,8 @@ f1 (int *p, int *q, short *s)
// { dg-final { scan-assembler-times "_ZGVcN4l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdM8l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeM16l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN16l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } }
#pragma omp declare simd linear(p:s) linear(q:t) uniform (s) linear(r:s) notinbranch simdlen(8) uniform(t)
int
@@ -22,6 +24,7 @@ f2 (int *p, short *q, int s, int r, int &t)
// { dg-final { scan-assembler-times "_ZGVbN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVcN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } }
#pragma omp declare simd linear(ref(p):s) linear(val(q):t) uniform (s) linear(uval(r):s) notinbranch simdlen(8) uniform(t)
int
@@ -33,3 +36,4 @@ f3 (int &p, short &q, int s, int &r, int &t)
// { dg-final { scan-assembler-times "_ZGVbN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVcN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
// { dg-final { scan-assembler-times "_ZGVdN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
+// { dg-final { scan-assembler-times "_ZGVeN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } }
diff --git a/gcc/testsuite/g++.dg/init/new47.C b/gcc/testsuite/g++.dg/init/new47.C
new file mode 100644
index 00000000000..acd52d7993b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new47.C
@@ -0,0 +1,19 @@
+// PR c++/70448
+// { dg-do compile }
+// { dg-options "-Wall" }
+
+typedef __typeof__ (sizeof 0) size_t;
+void *operator new (size_t, void *p) { return p; }
+void *operator new[] (size_t, void *p) { return p; }
+struct S { size_t s; };
+void bar (S *);
+
+void
+foo (unsigned int s)
+{
+ char t[sizeof (S) + s];
+ S *f = new (t) S;
+ bar (f);
+ f = new (t) S[1];
+ bar (f);
+}
diff --git a/gcc/testsuite/g++.dg/init/pr70501.C b/gcc/testsuite/g++.dg/init/pr70501.C
new file mode 100644
index 00000000000..901b3c1b5a2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/pr70501.C
@@ -0,0 +1,11 @@
+/* { dg-options "" } Not pedantic */
+
+typedef int v4si __attribute__ ((vector_size (16)));
+
+struct S { v4si v; };
+
+void
+fn2 (int i, int j)
+{
+ struct S s = { .v = i <= j + (v4si){(1, 2)} };
+}
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-51.C b/gcc/testsuite/g++.dg/ipa/devirt-51.C
new file mode 100644
index 00000000000..236635af23e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/devirt-51.C
@@ -0,0 +1,32 @@
+/* Be sure we do not optimize the virtual call into call of the only non-virtual
+ variant. Either keeping virtual call or optimizing to cxa_pure_virtual
+ is fine. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fsanitize=unreachable -fdump-tree-optimized" } */
+namespace {
+ struct B {
+ B* self;
+ B() : self( this ) { self->f(); }
+ void E(void);
+ virtual void f() = 0;
+ };
+
+ struct D : B
+ {
+ void f() {}
+ };
+}
+
+struct D e;
+
+__attribute__ ((used))
+void B::E(void)
+ {
+ this->f();
+}
+
+ int main()
+ {
+ D d;
+ }
+/* { dg-final { scan-tree-dump "cxa_pure_virtual" "optimized" } } */
diff --git a/gcc/testsuite/g++.dg/opt/pr70641.C b/gcc/testsuite/g++.dg/opt/pr70641.C
new file mode 100644
index 00000000000..99af74248f2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr70641.C
@@ -0,0 +1,10 @@
+// PR c++/70641
+// { dg-do compile }
+// { dg-options "-O2" }
+
+void
+foo ()
+{
+ try { foo (); }
+ catch (...) { __builtin_abort (); }
+}
diff --git a/gcc/testsuite/g++.dg/opt/ptrmem7.C b/gcc/testsuite/g++.dg/opt/ptrmem7.C
new file mode 100644
index 00000000000..7d9e9b17d3d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/ptrmem7.C
@@ -0,0 +1,31 @@
+// PR c++/70615
+// { dg-options -O }
+
+struct C
+{
+ virtual void f () {}
+};
+
+struct B
+{
+ virtual ~B () {}
+};
+
+class D : public B, public C
+{
+public:
+ D () {}
+};
+
+typedef void (C::*FP) ();
+typedef void (D::*D_f) ();
+
+int
+main ()
+{
+ D *d = new D ();
+ C *c = d;
+ const FP fptr = (FP) & D::f;
+ (d->*(D_f) fptr) ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/parse/pr68722.C b/gcc/testsuite/g++.dg/parse/pr68722.C
new file mode 100644
index 00000000000..44a6213a0a6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/pr68722.C
@@ -0,0 +1,9 @@
+// PR c++/68722
+
+class A {
+ &__loc // { dg-error "" }
+} class ios_base { // { dg-error "" }
+ A _M_ios_locale ios_base(ios_base &) template <_Traits> class basic_ios { // { dg-error "" }
+basic_ios basic_ios = operator= // { dg-error "" }
+
+// { dg-prune-output "file ends in default argument" }
diff --git a/gcc/testsuite/g++.dg/parse/pr70635.C b/gcc/testsuite/g++.dg/parse/pr70635.C
new file mode 100644
index 00000000000..0873840daf5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/pr70635.C
@@ -0,0 +1,25 @@
+// PR c++/70635
+// { dg-options "-fpermissive -w" }
+
+template < typename T >
+struct A
+{
+ struct B;
+ typedef typename B::type type;
+};
+
+template < typename T >
+struct A < T >::B
+{
+ typedef typename A < type >::type type; // { dg-error "type" }
+ type Foo ();
+};
+
+template < typename T >
+typename A < T >::B::type
+A < T >::B::Foo ()
+{
+ return 0;
+}
+
+template class A<int>;
diff --git a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c
index 940c302df7d..6f4739868d3 100644
--- a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c
@@ -32,14 +32,16 @@ handle_pragma_sayhello (cpp_reader *dummy)
return;
}
if (TREE_STRING_LENGTH (message) > 1)
- if (cfun)
- warning (OPT_Wpragmas,
- "%<pragma GCCPLUGIN sayhello%> from function %qE: %s",
- cfun->decl, TREE_STRING_POINTER (message));
+ {
+ if (cfun)
+ warning (OPT_Wpragmas,
+ "%<pragma GCCPLUGIN sayhello%> from function %qE: %s",
+ cfun->decl, TREE_STRING_POINTER (message));
else
- warning (OPT_Wpragmas,
- "%<pragma GCCPLUGIN sayhello%> outside of function: %s",
- TREE_STRING_POINTER (message));
+ warning (OPT_Wpragmas,
+ "%<pragma GCCPLUGIN sayhello%> outside of function: %s",
+ TREE_STRING_POINTER (message));
+ }
}
/* Plugin callback called during pragma registration */
diff --git a/gcc/testsuite/g++.dg/pr70590-2.C b/gcc/testsuite/g++.dg/pr70590-2.C
new file mode 100644
index 00000000000..409c86eccd1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr70590-2.C
@@ -0,0 +1,21 @@
+// PR c++/70590
+// { dg-do compile { target c++11 } }
+// { dg-options "-O2" }
+
+int a;
+
+constexpr int *foo = &a;
+
+void blah (int *);
+
+int
+bar ()
+{
+ blah (foo);
+}
+
+int
+baz ()
+{
+ blah (foo);
+}
diff --git a/gcc/testsuite/g++.dg/pr70590.C b/gcc/testsuite/g++.dg/pr70590.C
new file mode 100644
index 00000000000..488620065ee
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr70590.C
@@ -0,0 +1,25 @@
+// PR c++/70590
+// { dg-do compile { target c++11 } }
+// { dg-options "-O2" }
+
+int a;
+
+constexpr int *
+foo ()
+{
+ return &a;
+}
+
+void blah (int *);
+
+int
+bar ()
+{
+ blah (foo ());
+}
+
+int
+baz ()
+{
+ blah (foo ());
+}
diff --git a/gcc/testsuite/g++.dg/template/dependent-expr10.C b/gcc/testsuite/g++.dg/template/dependent-expr10.C
new file mode 100644
index 00000000000..94d66fc92b8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/dependent-expr10.C
@@ -0,0 +1,8 @@
+// PR c++/70634
+
+template < typename T >
+bool foo ()
+{
+ const int i = sizeof (i) > 1 ? sizeof (T) : 0;
+ return i > 0;
+}
diff --git a/gcc/testsuite/g++.dg/template/pr70610-2.C b/gcc/testsuite/g++.dg/template/pr70610-2.C
new file mode 100644
index 00000000000..3368a5e5d89
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr70610-2.C
@@ -0,0 +1,21 @@
+// PR c++/70610
+// { dg-do link }
+
+struct A { };
+
+void operator+ (const A &, A &);
+void operator+ (A &, const A &);
+void operator+ (const A &, const A &) { }
+
+template <typename T>
+void
+foo ()
+{
+ A () + A ();
+}
+
+int
+main ()
+{
+ foo<int> ();
+}
diff --git a/gcc/testsuite/g++.dg/template/pr70610-3.C b/gcc/testsuite/g++.dg/template/pr70610-3.C
new file mode 100644
index 00000000000..4be458cca59
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr70610-3.C
@@ -0,0 +1,21 @@
+// PR c++/70610
+// { dg-do link }
+
+void bar (const int &, int &);
+void bar (int &, const int &);
+void bar (const int &, const int &) { }
+
+int a, b;
+
+template <typename T>
+void
+foo ()
+{
+ bar (a + 1, b + 2);
+}
+
+int
+main ()
+{
+ foo<int> ();
+}
diff --git a/gcc/testsuite/g++.dg/template/pr70610-4.C b/gcc/testsuite/g++.dg/template/pr70610-4.C
new file mode 100644
index 00000000000..127abdc44e3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr70610-4.C
@@ -0,0 +1,19 @@
+// PR c++/70610
+// { dg-do link }
+
+struct A { void operator+ (const A &) { }; };
+
+void operator+ (const A &, A &);
+
+template <typename T>
+void
+foo ()
+{
+ A () + A ();
+}
+
+int
+main ()
+{
+ foo<int> ();
+}
diff --git a/gcc/testsuite/g++.dg/template/pr70610.C b/gcc/testsuite/g++.dg/template/pr70610.C
new file mode 100644
index 00000000000..c7dde1c5cec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr70610.C
@@ -0,0 +1,21 @@
+// PR c++/70610
+// { dg-do link }
+
+struct A { };
+
+void operator+ (A &);
+void operator+ (const A &) { }
+
+
+template <typename T>
+void
+foo ()
+{
+ +A ();
+}
+
+int
+main ()
+{
+ foo<int> ();
+}
diff --git a/gcc/testsuite/g++.dg/template/ptrmem30.C b/gcc/testsuite/g++.dg/template/ptrmem30.C
index 923238bec4d..31e9b5d17f6 100644
--- a/gcc/testsuite/g++.dg/template/ptrmem30.C
+++ b/gcc/testsuite/g++.dg/template/ptrmem30.C
@@ -1,11 +1,11 @@
// PR c++/70096
// { dg-do run }
-int read;
+int data_read;
struct Holder
{
- void foo () { read = data; }
+ void foo () { data_read = data; }
int data;
};
diff --git a/gcc/testsuite/g++.dg/torture/pr70029.C b/gcc/testsuite/g++.dg/torture/pr70029.C
new file mode 100644
index 00000000000..9592f0cc987
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr70029.C
@@ -0,0 +1,12 @@
+// PR c++/70029
+// { dg-do compile }
+// { dg-options "-std=c++11 -g -flto" }
+// { dg-require-effective-target lto }
+
+struct A
+{
+ A();
+ int foo() && __attribute__ ((__warn_unused_result__)) { return 0; }
+};
+
+A a;
diff --git a/gcc/testsuite/g++.dg/torture/pr70499.C b/gcc/testsuite/g++.dg/torture/pr70499.C
new file mode 100644
index 00000000000..954fea5de2f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr70499.C
@@ -0,0 +1,39 @@
+// { dg-do compile }
+// { dg-additional-options "-w -Wno-psabi" }
+// { dg-additional-options "-mavx" { target x86_64-*-* i?86-*-* } }
+
+typedef double __m256d __attribute__ ((__vector_size__ (32), __may_alias__));
+
+struct SIMD {
+ __m256d data;
+ SIMD() {};
+ SIMD (double val) { }
+ SIMD(__m256d _data) { data = _data; }
+ SIMD operator* (SIMD a) { return a; }
+};
+
+struct Foo {
+ SIMD val;
+ SIMD dval[2];
+ __attribute__((__always_inline__)) SIMD & Value() throw() { return val; }
+ __attribute__((__always_inline__)) Foo operator* ( const Foo & y) throw()
+ {
+ Foo res;
+ SIMD hx;
+ SIMD hy;
+ res.Value() = hx*hy;
+ res.dval[0] = hx*hy;
+ return res;
+ }
+};
+
+template<typename Tx>
+__attribute__((__always_inline__)) inline void inlineFunc(Tx hx[]) {
+ Tx x = hx[0], y = hx[1];
+ Tx lam[1] = (x*y);
+}
+
+void FooBarFunc () {
+ Foo adp[2];
+ inlineFunc (adp);
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr70526.C b/gcc/testsuite/g++.dg/torture/pr70526.C
new file mode 100644
index 00000000000..37a3e5f5a49
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr70526.C
@@ -0,0 +1,35 @@
+// { dg-do run }
+
+typedef unsigned uint32_t;
+
+template<typename T>
+struct AlignedStorage2
+{
+ char mBytes[sizeof(T)];
+
+ const T* addr() const { return reinterpret_cast<const T*>(mBytes); }
+ T* addr() { return reinterpret_cast<T*>(mBytes); }
+};
+
+struct Register {
+ uint32_t reg_;
+};
+
+class TypedOrValueRegister
+{
+ AlignedStorage2<Register> typed;
+ __attribute__((noinline)) Register& dataTyped() { return *typed.addr(); }
+public:
+ TypedOrValueRegister(Register reg)
+ {
+ dataTyped() = reg;
+ }
+ Register typedReg() const { return *typed.addr(); }
+};
+
+int main() {
+ Register reg = { 10u };
+ if (TypedOrValueRegister(reg).typedReg().reg_ != 10)
+ __builtin_abort();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/ubsan/pr63956.C b/gcc/testsuite/g++.dg/ubsan/pr63956.C
index b2656313b33..90360be112a 100644
--- a/gcc/testsuite/g++.dg/ubsan/pr63956.C
+++ b/gcc/testsuite/g++.dg/ubsan/pr63956.C
@@ -86,7 +86,7 @@ fn5 (const int *a, int b)
constexpr int m1[4] = { 1, 2, 3, 4 };
constexpr int m2 = fn5 (m1, 3);
-constexpr int m3 = fn5 (m1, 4); // { dg-error "array subscript out of bound" }
+constexpr int m3 = fn5 (m1, 4); // { dg-error "array subscript" }
constexpr int
fn6 (const int &a, int b)
@@ -116,7 +116,7 @@ fn8 (int i)
}
constexpr int o1 = fn8 (9);
-constexpr int o2 = fn8 (10); // { dg-error "array subscript out of bound" }
+constexpr int o2 = fn8 (10); // { dg-error "array subscript" }
constexpr int
fn9 (int a, int b)
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-29.C b/gcc/testsuite/g++.dg/warn/Wparentheses-29.C
new file mode 100644
index 00000000000..7832415f1ed
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-29.C
@@ -0,0 +1,135 @@
+/* PR c/70436 */
+/* { dg-options "-Wparentheses" } */
+
+int a, b, c;
+void bar (void);
+void baz (void);
+
+void
+foo (void)
+{
+ int i, j;
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (;;)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ while (1)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ while (1)
+ for (;;)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ while (1)
+ while (1)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a)
+ for (i = 0; i < 10; i++)
+ if (b) /* { dg-warning "ambiguous" } */
+ for (j = 0; j < 10; j++)
+ if (c)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (i = 0; i < 10; i++)
+ if (b)
+ for (j = 0; j < 10; j++)
+ if (c)
+ bar ();
+ else
+ baz ();
+ else
+ bar ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (;;)
+ if (b)
+ while (1)
+ if (a)
+ bar ();
+ else
+ baz ();
+ else
+ bar ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (;;)
+ if (b)
+ while (1)
+ {
+ if (a) { bar (); } else { baz (); }
+ }
+ else
+ bar ();
+
+ if (a)
+ for (;;)
+ if (b)
+ bar ();
+ else
+ baz ();
+ else bar ();
+
+ if (a)
+ while (1)
+ if (b)
+ bar ();
+ else
+ baz ();
+ else bar ();
+
+ if (a)
+ for (;;)
+ {
+ if (b)
+ bar ();
+ else
+ baz ();
+ }
+
+ if (a)
+ {
+ for (;;)
+ if (b)
+ bar ();
+ }
+ else baz ();
+
+ if (a)
+ do
+ if (b) bar (); else baz ();
+ while (b);
+
+ if (a)
+ do
+ if (b) bar ();
+ while (b);
+ else baz ();
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr70633.c b/gcc/testsuite/gcc.c-torture/compile/pr70633.c
new file mode 100644
index 00000000000..6d783cb3166
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr70633.c
@@ -0,0 +1,12 @@
+/* PR middle-end/70633 */
+
+typedef long V __attribute__((vector_size (4 * sizeof (long))));
+
+void foo (V *);
+
+void
+bar (void)
+{
+ V b = { (long) bar, 0, 0, 0 };
+ foo (&b);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
index e7157c59168..744763f2662 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
@@ -30,6 +30,9 @@
#elif defined (__TMS320C6X__)
/* On TI C6X division by zero does not trap. */
# define DO_TEST 0
+#elif defined (__VISIUM__)
+ /* On Visium division by zero does not trap. */
+# define DO_TEST 0
#elif defined (__mips__) && !defined(__linux__)
/* MIPS divisions do trap by default, but libgloss targets do not
intercept the trap and raise a SIGFPE. The same is probably
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr70566.c b/gcc/testsuite/gcc.c-torture/execute/pr70566.c
new file mode 100644
index 00000000000..f47106e70c7
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr70566.c
@@ -0,0 +1,47 @@
+/* PR target/70566. */
+
+#define NULL 0
+
+struct mystruct
+{
+ unsigned int f1 : 1;
+ unsigned int f2 : 1;
+ unsigned int f3 : 1;
+};
+
+__attribute__ ((noinline)) void
+myfunc (int a, void *b)
+{
+}
+__attribute__ ((noinline)) int
+myfunc2 (void *a)
+{
+ return 0;
+}
+
+static void
+set_f2 (struct mystruct *user, int f2)
+{
+ if (user->f2 != f2)
+ myfunc (myfunc2 (NULL), NULL);
+ else
+ __builtin_abort ();
+}
+
+__attribute__ ((noinline)) void
+foo (void *data)
+{
+ struct mystruct *user = data;
+ if (!user->f2)
+ set_f2 (user, 1);
+}
+
+int
+main (void)
+{
+ struct mystruct a;
+ a.f1 = 1;
+ a.f2 = 0;
+ foo (&a);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr70586.c b/gcc/testsuite/gcc.c-torture/execute/pr70586.c
new file mode 100644
index 00000000000..32e9e502cac
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr70586.c
@@ -0,0 +1,30 @@
+/* PR tree-optimization/70586 */
+
+int a, e, f;
+short b, c, d;
+
+int
+foo (int x, int y)
+{
+ return (y == 0 || (x && y == 1)) ? x : x % y;
+}
+
+static short
+bar (void)
+{
+ int i = foo (c, f);
+ f = foo (d, 2);
+ int g = foo (b, c);
+ int h = foo (g > 0, c);
+ c = (3 >= h ^ 7) <= foo (i, c);
+ if (foo (e, 1))
+ return a;
+ return 0;
+}
+
+int
+main ()
+{
+ bar ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr70602.c b/gcc/testsuite/gcc.c-torture/execute/pr70602.c
new file mode 100644
index 00000000000..c6628b037b2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr70602.c
@@ -0,0 +1,23 @@
+/* PR tree-optimization/70602 */
+
+struct __attribute__((packed)) S
+{
+ int s : 1;
+ int t : 20;
+};
+
+int a, b, c;
+
+int
+main ()
+{
+ for (; a < 1; a++)
+ {
+ struct S e[] = { {0, 9}, {0, 9}, {0, 9}, {0, 0}, {0, 9}, {0, 9}, {0, 9},
+ {0, 0}, {0, 9}, {0, 9}, {0, 9}, {0, 0}, {0, 9}, {0, 9},
+ {0, 9}, {0, 0}, {0, 9}, {0, 9}, {0, 9}, {0, 0}, {0, 9} };
+ b = b || e[0].s;
+ c = e[0].t;
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/Wparentheses-12.c b/gcc/testsuite/gcc.dg/Wparentheses-12.c
new file mode 100644
index 00000000000..7832415f1ed
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wparentheses-12.c
@@ -0,0 +1,135 @@
+/* PR c/70436 */
+/* { dg-options "-Wparentheses" } */
+
+int a, b, c;
+void bar (void);
+void baz (void);
+
+void
+foo (void)
+{
+ int i, j;
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (;;)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ while (1)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ while (1)
+ for (;;)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ while (1)
+ while (1)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ if (b)
+ bar ();
+ else
+ baz ();
+
+ if (a)
+ for (i = 0; i < 10; i++)
+ if (b) /* { dg-warning "ambiguous" } */
+ for (j = 0; j < 10; j++)
+ if (c)
+ bar ();
+ else
+ baz ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (i = 0; i < 10; i++)
+ if (b)
+ for (j = 0; j < 10; j++)
+ if (c)
+ bar ();
+ else
+ baz ();
+ else
+ bar ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (;;)
+ if (b)
+ while (1)
+ if (a)
+ bar ();
+ else
+ baz ();
+ else
+ bar ();
+
+ if (a) /* { dg-warning "ambiguous" } */
+ for (;;)
+ if (b)
+ while (1)
+ {
+ if (a) { bar (); } else { baz (); }
+ }
+ else
+ bar ();
+
+ if (a)
+ for (;;)
+ if (b)
+ bar ();
+ else
+ baz ();
+ else bar ();
+
+ if (a)
+ while (1)
+ if (b)
+ bar ();
+ else
+ baz ();
+ else bar ();
+
+ if (a)
+ for (;;)
+ {
+ if (b)
+ bar ();
+ else
+ baz ();
+ }
+
+ if (a)
+ {
+ for (;;)
+ if (b)
+ bar ();
+ }
+ else baz ();
+
+ if (a)
+ do
+ if (b) bar (); else baz ();
+ while (b);
+
+ if (a)
+ do
+ if (b) bar ();
+ while (b);
+ else baz ();
+}
diff --git a/gcc/testsuite/gcc.dg/Wparentheses-13.c b/gcc/testsuite/gcc.dg/Wparentheses-13.c
new file mode 100644
index 00000000000..9837ba566d9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wparentheses-13.c
@@ -0,0 +1,67 @@
+/* PR c/70436 */
+/* { dg-options "-Wparentheses" } */
+
+int a, b, c;
+void bar (int);
+
+void
+foo (void)
+{
+ if (a) /* { dg-warning "ambiguous" } */
+ if (b)
+ {
+ if (c)
+ bar (0);
+ }
+ else
+ bar (1);
+
+ if (a > 0)
+ if (a > 1)
+ if (a > 2)
+ if (a > 3)
+ if (a > 4)
+ if (a > 5) /* { dg-warning "ambiguous" } */
+ if (a > 6)
+ while (1)
+ bar (0);
+ else
+ bar (1);
+
+ if (a) /* { dg-warning "ambiguous" } */
+ if (b)
+ switch (c);
+ else
+ bar (1);
+
+ switch (a)
+ {
+ default:
+ if (b) /* { dg-warning "ambiguous" } */
+ if (c)
+ for (;;)
+ bar (0);
+ else
+ bar (1);
+ }
+
+ if (a) /* { dg-warning "ambiguous" } */
+ if (a)
+ {
+ bar (2);
+ }
+ else
+ bar (3);
+
+ if (a)
+ do if (b) bar (4); while (1);
+ else bar (5);
+
+ do
+ {
+ if (a)
+ if (b) /* { dg-warning "ambiguous" } */
+ if (c) for (;;) bar (6);
+ else bar (7);
+ } while (0);
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c b/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
index 8db8b394d21..e6bc1371f26 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
@@ -4,8 +4,8 @@
as well. */
/* { dg-do compile } */
/* { dg-options "-O2 -gdwarf -dA -fdebug-prefix-map=a=b" } */
-/* { dg-final { scan-assembler "DW_AT_producer: \"GNU C" { target { { ! *-*-solaris2* } || gas } } } } */
-/* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" { target { *-*-solaris2* && { ! gas } } } } } */
+/* { dg-final { scan-assembler "DW_AT_producer: \"GNU C" { target { { { ! *-*-solaris2* } || gas } && { ! hppa*64*-*-* } } } } } */
+/* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" { target { { *-*-solaris2* && { ! gas } } || { hppa*64*-*-* } } } } } */
/* { dg-final { scan-assembler-not "debug-prefix-map" } } */
void func (void)
diff --git a/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c b/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c
index 027b24a5b60..5022fbbc057 100644
--- a/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c
+++ b/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c
@@ -19,6 +19,8 @@ int f2 (int a, int *b, int c)
/* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
#pragma omp declare simd uniform (a) aligned (b : 8 * sizeof (long long)) linear (c : 4) simdlen (8)
__extension__
@@ -53,6 +55,8 @@ f7 (int x)
/* { dg-final { scan-assembler-times "_ZGVcN16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */
int
f9 (int x)
@@ -82,6 +86,8 @@ f13 (int c; int *b; int a; int a, int *b, int c)
/* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */
#pragma omp declare simd uniform (a) aligned (b : 8 * sizeof (int)) linear (c : 4) simdlen (8)
int
@@ -98,6 +104,8 @@ f14 (a, b, c)
/* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */
#pragma omp declare simd uniform (a) aligned (b : 8 * sizeof (int)) linear (c : 4) simdlen (8)
int
@@ -112,6 +120,8 @@ f15 (int a, int *b, int c)
/* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */
#pragma omp declare simd uniform (d) aligned (e : 8 * sizeof (int)) linear (f : 4) simdlen (8)
int f15 (int d, int *e, int f);
@@ -131,12 +141,16 @@ int f17 (int g, long *h)
/* { dg-final { scan-assembler-times "_ZGVcN4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
/* { dg-final { scan-assembler-times "_ZGVbM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVbN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVcM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVcN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
#pragma omp declare simd aligned (i : sizeof (*i)) linear (j : 2 * sizeof (i[0]) + sizeof (j)) simdlen (4)
int
@@ -153,9 +167,13 @@ f18 (j, i)
/* { dg-final { scan-assembler-times "_ZGVcN4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
/* { dg-final { scan-assembler-times "_ZGVbM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVbN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVcM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVcN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */
diff --git a/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c b/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
index 51f08be4f1b..9b8546dbe76 100644
--- a/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
+++ b/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
@@ -11,6 +11,8 @@ f1 (int *p, int *q, short *s)
/* { dg-final { scan-assembler-times "_ZGVcN4l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdM8l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeM16l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN16l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */
#pragma omp declare simd linear(p:s) linear(q:t) uniform (s) linear(r:s) notinbranch simdlen(8) uniform(t)
int
@@ -22,3 +24,4 @@ f2 (int *p, short *q, int s, int r, int t)
/* { dg-final { scan-assembler-times "_ZGVbN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVcN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
/* { dg-final { scan-assembler-times "_ZGVdN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-assembler-times "_ZGVeN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */
diff --git a/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c b/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
index 4fb9c40d1a6..df7f6314133 100644
--- a/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
+++ b/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
@@ -23,3 +23,6 @@ float setArray(float *a, float x, int k)
/* { dg-final { scan-tree-dump "_ZGVdN8ua32vl_setArray" "optimized" { target i?86-*-* x86_64-*-* } } } */
/* { dg-final { scan-tree-dump "_ZGVdN8vvva32_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
/* { dg-final { scan-tree-dump "_ZGVdM8vl66u_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+/* { dg-final { scan-tree-dump "_ZGVeN16ua32vl_setArray" "optimized" { target i?86-*-* x86_64-*-* } } } */
+/* { dg-final { scan-tree-dump "_ZGVeN16vvva32_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+/* { dg-final { scan-tree-dump "_ZGVeM16vl66u_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c b/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c
index 622b80145bd..28570a244cb 100644
--- a/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c
+++ b/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c
@@ -15,3 +15,5 @@ int addit(int a, int b, int c)
/* { dg-final { scan-tree-dump "_ZGVcM4vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
/* { dg-final { scan-tree-dump "_ZGVdN8vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
/* { dg-final { scan-tree-dump "_ZGVdM8vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+/* { dg-final { scan-tree-dump "_ZGVeN16vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+/* { dg-final { scan-tree-dump "_ZGVeM16vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/graphite/pr68756.c b/gcc/testsuite/gcc.dg/graphite/pr68756.c
new file mode 100644
index 00000000000..ddb9789f133
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr68756.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -floop-nest-optimize" } */
+
+unsigned int z4, pz;
+int nn[2];
+
+static unsigned int
+xq (unsigned int dj)
+{
+ return dj > 1 ? z4 : z4 + dj;
+}
+
+void
+la (void)
+{
+ int hd, dl;
+ unsigned int hn = 0;
+
+ for (hd = 0; hd < 2; ++hd)
+ {
+ for (dl = 0; dl < 2; ++dl)
+ nn[dl] = 0;
+ --hn;
+ pz = xq (hn);
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/pr68953.c b/gcc/testsuite/gcc.dg/graphite/pr68953.c
new file mode 100644
index 00000000000..12c632dbbf0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr68953.c
@@ -0,0 +1,30 @@
+/* { dg-do run } */
+/* { dg-options "-O1 -floop-nest-optimize" } */
+
+extern void abort (void);
+
+int yu[4][1] = { { 1 }, { 2 }, { 3 }, { 4 } };
+
+static void __attribute__((noinline,noclone))
+foo (void)
+{
+ int zh, ro;
+
+ for (zh = 0; zh < 2; ++zh)
+ for (ro = 0; ro < 3; ++ro)
+ yu[ro][0] = yu[zh + 1][0];
+}
+
+int
+main (void)
+{
+ foo ();
+
+ if (yu[0][0] != 2
+ || yu[1][0] != 2
+ || yu[2][0] != 2
+ || yu[3][0] != 4)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/guality.h b/gcc/testsuite/gcc.dg/guality/guality.h
index 52fa706ffe3..d5867d8ba96 100644
--- a/gcc/testsuite/gcc.dg/guality/guality.h
+++ b/gcc/testsuite/gcc.dg/guality/guality.h
@@ -252,6 +252,10 @@ main (int argc, char *argv[])
if (!guality_gdb_input
|| fprintf (guality_gdb_input, "\
set height 0\n\
+handle SIGINT pass nostop\n\
+handle SIGTERM pass nostop\n\
+handle SIGSEGV pass nostop\n\
+handle SIGBUS pass nostop\n\
attach %i\n\
set guality_attached = 1\n\
b %i\n\
diff --git a/gcc/testsuite/gcc.dg/ifcvt-4.c b/gcc/testsuite/gcc.dg/ifcvt-4.c
index d0d131b9ad8..319b583e4e2 100644
--- a/gcc/testsuite/gcc.dg/ifcvt-4.c
+++ b/gcc/testsuite/gcc.dg/ifcvt-4.c
@@ -1,12 +1,14 @@
/* { dg-options "-fdump-rtl-ce1 -O2 --param max-rtl-if-conversion-insns=3" } */
/* { dg-additional-options "-misel" { target { powerpc*-*-* } } } */
-/* { dg-skip-if "Multiple set if-conversion not guaranteed on all subtargets" { "arm*-*-* hppa*64*-*-* visium-*-*" } {"*"} { "" } } */
+/* { dg-skip-if "Multiple set if-conversion not guaranteed on all subtargets" { "arm*-*-* hppa*64*-*-* visium-*-*" } } */
-int
-foo (int x, int y, int a)
+typedef int word __attribute__((mode(word)));
+
+word
+foo (word x, word y, word a)
{
- int i = x;
- int j = y;
+ word i = x;
+ word j = y;
/* Try to make taking the branch likely. */
__builtin_expect (x > y, 1);
if (x > y)
diff --git a/gcc/testsuite/gcc.dg/loop-8.c b/gcc/testsuite/gcc.dg/loop-8.c
index 529f5c8f3dd..463c5d0a29a 100644
--- a/gcc/testsuite/gcc.dg/loop-8.c
+++ b/gcc/testsuite/gcc.dg/loop-8.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-rtl-loop2_invariant" } */
-/* { dg-skip-if "unexpected IV" { "visium-*-*" } { "*" } { "" } } */
+/* { dg-skip-if "unexpected IV" { "hppa*-*-* visium-*-*" } { "*" } { "" } } */
void
f (int *a, int *b)
diff --git a/gcc/testsuite/gcc.dg/lto/simd-function_0.c b/gcc/testsuite/gcc.dg/lto/simd-function_0.c
index cda31aafb2e..59f419b6714 100644
--- a/gcc/testsuite/gcc.dg/lto/simd-function_0.c
+++ b/gcc/testsuite/gcc.dg/lto/simd-function_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target vect_simd_clones } */
/* { dg-require-effective-target avx2 } */
/* { dg-lto-options { { -fopenmp-simd -O3 -ffast-math -mavx2 -flto -flto-partition=max } } } */
diff --git a/gcc/testsuite/gcc.dg/pic-1.c b/gcc/testsuite/gcc.dg/pic-1.c
index 86360aa3ae4..38414e9708b 100644
--- a/gcc/testsuite/gcc.dg/pic-1.c
+++ b/gcc/testsuite/gcc.dg/pic-1.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! *-*-darwin* } } } */
+/* { dg-do compile { target { ! { *-*-darwin* hppa*-*-* } } } } */
/* { dg-options "-fpic" } */
#if __PIC__ != 1
diff --git a/gcc/testsuite/gcc.dg/pic-3.c b/gcc/testsuite/gcc.dg/pic-3.c
index 7c4bbced218..23ce9995cc4 100644
--- a/gcc/testsuite/gcc.dg/pic-3.c
+++ b/gcc/testsuite/gcc.dg/pic-3.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! *-*-darwin* } } } */
+/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */
/* { dg-options "-fno-pic" } */
#ifdef __PIC__
diff --git a/gcc/testsuite/gcc.dg/pic-4.c b/gcc/testsuite/gcc.dg/pic-4.c
index 727fe14bace..8e14714e40d 100644
--- a/gcc/testsuite/gcc.dg/pic-4.c
+++ b/gcc/testsuite/gcc.dg/pic-4.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! *-*-darwin* } } } */
+/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */
/* { dg-options "-fno-PIC" } */
#ifdef __PIC__
diff --git a/gcc/testsuite/gcc.dg/pie-1.c b/gcc/testsuite/gcc.dg/pie-1.c
index ca43e8b7adc..e64763bcd77 100644
--- a/gcc/testsuite/gcc.dg/pie-1.c
+++ b/gcc/testsuite/gcc.dg/pie-1.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! *-*-darwin* } } } */
+/* { dg-do compile { target { ! { *-*-darwin* hppa*-*-* } } } } */
/* { dg-options "-fpie" } */
#if __PIC__ != 1
diff --git a/gcc/testsuite/gcc.dg/pie-3.c b/gcc/testsuite/gcc.dg/pie-3.c
index 0ccc56b194d..a7201c08f87 100644
--- a/gcc/testsuite/gcc.dg/pie-3.c
+++ b/gcc/testsuite/gcc.dg/pie-3.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! *-*-darwin* } } } */
+/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */
/* { dg-options "-fno-pie" } */
#ifdef __PIC__
diff --git a/gcc/testsuite/gcc.dg/pie-4.c b/gcc/testsuite/gcc.dg/pie-4.c
index f42bad3d297..b24eb8cb3e1 100644
--- a/gcc/testsuite/gcc.dg/pie-4.c
+++ b/gcc/testsuite/gcc.dg/pie-4.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! *-*-darwin* } } } */
+/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */
/* { dg-options "-fno-PIE" } */
#ifdef __PIC__
diff --git a/gcc/testsuite/gcc.dg/pr61817-1.c b/gcc/testsuite/gcc.dg/pr61817-1.c
new file mode 100644
index 00000000000..4230485e635
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr61817-1.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c11 -ftrack-macro-expansion=0" } */
+
+#define A(x) _Static_assert(x, #x)
+#define F(x, y, z) a = __LINE__, b = x ## y, c = z
+
+enum {
+#line 10
+ F
+ (
+ __LI,
+ NE__,
+ __LINE__
+ )
+};
+
+A(a == 15);
+A(b == 15);
+A(c == 15);
diff --git a/gcc/testsuite/gcc.dg/pr61817-2.c b/gcc/testsuite/gcc.dg/pr61817-2.c
new file mode 100644
index 00000000000..e4326b81f26
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr61817-2.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c11 -ftrack-macro-expansion=1" } */
+
+#define A(x) _Static_assert(x, #x)
+#define F(x, y, z) a = __LINE__, b = x ## y, c = z
+
+enum {
+#line 10
+ F
+ (
+ __LI,
+ NE__,
+ __LINE__
+ )
+};
+
+A(a == 15);
+A(b == 15);
+A(c == 15);
diff --git a/gcc/testsuite/gcc.dg/pr64434.c b/gcc/testsuite/gcc.dg/pr64434.c
index 550a63d2b13..699687136fd 100644
--- a/gcc/testsuite/gcc.dg/pr64434.c
+++ b/gcc/testsuite/gcc.dg/pr64434.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-rtl-expand-details" } */
+/* { dg-skip-if "PR64886" { hppa*-*-hpux* } { "*" } { "" } } */
#define N 256
int a1[N], a2[N], a3[N], a4[N];
diff --git a/gcc/testsuite/gcc.dg/pr69391-1.c b/gcc/testsuite/gcc.dg/pr69391-1.c
new file mode 100644
index 00000000000..15e49dc657d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr69391-1.c
@@ -0,0 +1,12 @@
+/* { dg-do run } */
+/* { dg-additional-options "-ftrack-macro-expansion=0" } */
+#define STR_I(X) #X
+#define STR(X) STR_I(X)
+#define LINE STR(__LINE__) STR(__LINE__)
+int main()
+{
+ const char *s = LINE;
+ if (s[0] != '8' || s[1] != '8')
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr69391-2.c b/gcc/testsuite/gcc.dg/pr69391-2.c
new file mode 100644
index 00000000000..7d2faae50d8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr69391-2.c
@@ -0,0 +1,12 @@
+/* { dg-do run } */
+/* { dg-additional-options "-ftrack-macro-expansion=1" } */
+#define STR_I(X) #X
+#define STR(X) STR_I(X)
+#define LINE STR(__LINE__) STR(__LINE__)
+int main()
+{
+ const char *s = LINE;
+ if (s[0] != '8' || s[1] != '8')
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr70317.c b/gcc/testsuite/gcc.dg/pr70317.c
index 8f0864b76e0..3a9c52e7ac4 100644
--- a/gcc/testsuite/gcc.dg/pr70317.c
+++ b/gcc/testsuite/gcc.dg/pr70317.c
@@ -2,6 +2,7 @@
/* { dg-do compile } */
/* { dg-skip-if "No NaN support" { spu*-*-* vax*-*-* pdp11*-*-* } } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-additional-options "-fno-common" { target hppa*-*-hpux* } } */
typedef double V __attribute__((vector_size (256)));
typedef __typeof ((V) {} < (V) {}) T;
diff --git a/gcc/testsuite/gcc.dg/strlenopt.h b/gcc/testsuite/gcc.dg/strlenopt.h
index ef47e5ac9ad..8f69940b027 100644
--- a/gcc/testsuite/gcc.dg/strlenopt.h
+++ b/gcc/testsuite/gcc.dg/strlenopt.h
@@ -10,6 +10,7 @@ void free (void *);
char *strdup (const char *);
size_t strlen (const char *);
void *memcpy (void *__restrict, const void *__restrict, size_t);
+void *memmove (void *, const void *, size_t);
char *strcpy (char *__restrict, const char *__restrict);
char *strcat (char *__restrict, const char *__restrict);
char *strchr (const char *, int);
@@ -31,6 +32,12 @@ memcpy (void *__restrict dest, const void *__restrict src, size_t len)
return __builtin___memcpy_chk (dest, src, len, bos0 (dest));
}
+extern inline __attribute__((gnu_inline, always_inline, artificial)) void *
+memmove (void *dest, const void *src, size_t len)
+{
+ return __builtin___memmove_chk (dest, src, len, bos0 (dest));
+}
+
extern inline __attribute__((gnu_inline, always_inline, artificial)) char *
strcpy (char *__restrict dest, const char *__restrict src)
{
diff --git a/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c b/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c
index 6dc2326ede0..adfffcdb824 100644
--- a/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c
+++ b/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c
@@ -24,6 +24,7 @@ foo (float f, double d, long double ld)
!= (__builtin_isinf(ld) ? (__builtin_signbitl(ld) ? -1 : 1) : 0))
link_error (__LINE__);
+#ifdef __OPTIMIZE__
/* In boolean contexts, GCC will fold the inner conditional
expression to 1. So isinf_sign folds to plain isinf. */
@@ -33,6 +34,7 @@ foo (float f, double d, long double ld)
link_error (__LINE__);
if ((_Bool)__builtin_isinf_sign(ld) != (__builtin_isinf(ld) != 0))
link_error (__LINE__);
+#endif
if ((__builtin_isinf_sign(f) != 0) != (__builtin_isinf(f) != 0))
link_error (__LINE__);
diff --git a/gcc/testsuite/gcc.dg/torture/pr70307.c b/gcc/testsuite/gcc.dg/torture/pr70307.c
new file mode 100644
index 00000000000..0e0f1460b32
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr70307.c
@@ -0,0 +1,67 @@
+/* PR c/70307 */
+/* { dg-do compile } */
+/* { dg-options "-Wno-psabi" } */
+
+typedef int v4si __attribute__ ((vector_size (16)));
+
+v4si foo (v4si);
+
+v4si
+fn1 (int i)
+{
+ return i <= (v4si){(0, 0)};
+}
+
+v4si
+fn2 (int i)
+{
+ v4si r;
+ r = i <= (v4si){(0, 0)};
+ return r;
+}
+
+v4si
+fn3 (int i)
+{
+ return foo (i <= (v4si){(0, 0)});
+}
+
+v4si
+fn4 (int i)
+{
+ struct S { v4si v; };
+ struct S s = { .v = i <= (v4si){(0, 0)} };
+ return s.v;
+}
+
+v4si
+fn5 (int i)
+{
+ return (v4si){(1, i++)} == (v4si){(0, 0)};
+}
+
+v4si
+fn6 (int i)
+{
+ v4si r;
+ r = (v4si){(1, i++)} == (v4si){(0, 0)};
+ return r;
+}
+
+v4si
+fn7 (int i)
+{
+ return foo ((v4si){(1, i++)} == (v4si){(0, 0)});
+}
+
+v4si
+fn8 (int i)
+{
+ struct S { v4si v; };
+ struct S s = { .v = (v4si){(1, i++)} == (v4si){(0, 0)} };
+ return s.v;
+}
+
+/* Ignore a warning that is irrelevant to the purpose of this test. */
+/* { dg-prune-output "\[^\n\r\]*GCC vector passed by reference\[^\n\r\]*" } */
+/* { dg-prune-output "\[^\n\r\]*GCC vector returned by reference\[^\n\r\]*" } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr70457.c b/gcc/testsuite/gcc.dg/torture/pr70457.c
new file mode 100644
index 00000000000..74daed4d36f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr70457.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+
+/* This formerly ICEd when trying to expand pow as a built-in with
+ the wrong number of arguments. */
+
+extern double pow (double, double) __attribute__ ((__nothrow__ , __leaf__));
+
+typedef struct {
+ long long data;
+ int tag;
+} Object;
+
+extern Object Make_Flonum (double);
+extern Object P_Pow (Object, Object);
+
+Object General_Function (Object x, Object y, double (*fun)()) {
+ double d, ret;
+
+ d = 1.0;
+
+ if (y.tag >> 1)
+ ret = (*fun) (d);
+ else
+ ret = (*fun) (d, 0.0);
+
+ return Make_Flonum (ret);
+}
+
+Object P_Pow (Object x, Object y) { return General_Function (x, y, pow); }
diff --git a/gcc/testsuite/gcc.dg/torture/pr70484.c b/gcc/testsuite/gcc.dg/torture/pr70484.c
new file mode 100644
index 00000000000..7604c654fbe
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr70484.c
@@ -0,0 +1,19 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+int __attribute__((noinline,noclone))
+f(int *pi, long *pl)
+{
+ *pi = 1;
+ *pl = 0;
+ return *(char *)pi;
+}
+
+int main()
+{
+ union { long l; int i; } a;
+ if (f (&a.i, &a.l) != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr70542.c b/gcc/testsuite/gcc.dg/torture/pr70542.c
new file mode 100644
index 00000000000..ed7ab9dae73
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr70542.c
@@ -0,0 +1,31 @@
+/* PR rtl-optimization/70542 */
+/* { dg-do run } */
+
+int a[113], d[113];
+short b[113], c[113], e[113];
+
+int
+main ()
+{
+ int i;
+ long j;
+ for (i = 0; i < 113; ++i)
+ {
+ a[i] = -636544305;
+ b[i] = -31804;
+ }
+ for (j = 1; j <= 112; ++j)
+ {
+ c[j] = b[j] >> ((a[j] & 1587842570) - 1510214139);
+ if (a[j])
+ d[j] = j;
+ e[j] = 7 << ((2312631697 - b[j]) - 2312663500);
+ }
+ asm volatile ("" : : : "memory");
+ if (c[0] || d[0] || e[0])
+ __builtin_abort ();
+ for (i = 1; i <= 112; ++i)
+ if (c[i] != -1 || d[i] != i || e[i] != 14)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr70623-2.c b/gcc/testsuite/gcc.dg/torture/pr70623-2.c
new file mode 100644
index 00000000000..8e8dc96df0e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr70623-2.c
@@ -0,0 +1,41 @@
+/* { dg-do compile } */
+
+int b8, il, rc, nm;
+
+void
+h9(void)
+{
+ int *av = &b8;
+
+is:
+ for (;;) {
+ int vj, wk;
+ int *m9 = &b8;
+
+ if (*m9 == *av) {
+ if (il == 0)
+ goto is;
+
+di:
+ continue;
+ for (vj = 0; vj < 1; ++vj) {
+ goto di;
+kz:
+ ;
+ }
+ }
+
+ for (rc = 0; rc < 2; ++rc) {
+ int bc = rc ? rc : nm;
+ int ud = bc ? (*av ? 0 : rc) : 1;
+
+ if (ud != 0)
+ if (*av != 0)
+ goto kz;
+ }
+
+ for (wk = 0; wk < 3; ++wk)
+ ++(*av);
+ av = 0;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr70623.c b/gcc/testsuite/gcc.dg/torture/pr70623.c
new file mode 100644
index 00000000000..37f2712d87d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr70623.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-w" } */
+
+int nm;
+int *av;
+
+void
+h9(void)
+{
+ for (;;) {
+ int wk, rc;
+ int **ptr_10 = &av;
+ if (*av != 0) {
+ }
+u4:
+ wk = 0;
+ for (rc = 0; rc < 3; ++rc) {
+ int bc = (rc ? rc : nm);
+ int ud = bc ? (*av ? 0 : rc) : 1;
+ if (ud != 0) {
+ if (*av != 0)
+ goto u4;
+ for (;;) {
+ }
+ }
+ }
+ while (wk < 3) {
+ av = **ptr_10;
+ ++wk;
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr70628.c b/gcc/testsuite/gcc.dg/torture/pr70628.c
new file mode 100644
index 00000000000..00acae74b4d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr70628.c
@@ -0,0 +1,46 @@
+/* PR debug/70628 */
+/* { dg-do compile } */
+/* { dg-options "-g -w" } */
+
+struct S { char s[64]; int *t; } *a;
+char b[64];
+int *foo (void);
+struct S *bar (int *);
+int baz (void);
+
+void
+test (const char *p, long q)
+{
+ int *c;
+ c = foo ();
+ while (a = bar (c))
+ {
+ if (__builtin_strstr (p, "ABCD")
+ || __builtin_strstr (p, "EFGHI")
+ || __builtin_strstr (p, "JKL")
+ || __builtin_strstr (p, "MNOPQR")
+ || __builtin_strstr (p, "STUV")
+ || __builtin_strstr (p, "WXYZabcd")
+ || __builtin_strstr (p, "efghij")
+ || __builtin_strstr (p, "klmno")
+ || __builtin_strstr (p, "pqrstuvw")
+ || __builtin_strstr (b, "MNOPQR") != "EFGHI"
+ || __builtin_strstr (b, "JKL"))
+ if (__builtin_strstr (a->s, "xyz12"))
+ continue;
+ __builtin_printf ("%p\n", a->t);
+ }
+ bar (c);
+ while (a)
+ if (__builtin_strstr (p, "ABCD")
+ || __builtin_strstr (p, "EFGHI")
+ || __builtin_strstr (p, "JKL")
+ || __builtin_strstr (p, "MNOPQR")
+ || __builtin_strstr (p, "STUV")
+ || __builtin_strstr (p, "WXYZabcd")
+ || __builtin_strstr (p, "efghij")
+ || __builtin_strstr (p, "klmno")
+ || __builtin_strstr (p, "pqrstuvw")
+ || __builtin_strstr ((const char *) q, "MNOPQR"))
+ baz ();
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c b/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c
index e84c958c31a..e4b8d43d299 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom2" } */
+/* { dg-options "-O1 -fno-tree-fre -fdump-tree-dom2" } */
extern void abort (void);
union tree_node;
@@ -15,6 +15,7 @@ struct tree_common
};
struct tree_type
{
+ struct tree_common common;
double alias_set;
};
union tree_node
@@ -39,6 +40,4 @@ foo (t, set)
}
/* There should be precisely one load of common.code. If there is
more than one, then the dominator optimizations failed. */
-/* ??? Will fail until we properly distinguish member stores. At
- present the write to type.alias_set kills the previous load. */
-/* { dg-final { scan-tree-dump-times "common.code" 1 "dom2" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "common.code" 1 "dom2" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c
index 0f3f301d773..c809c9aa483 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-ivopts" } */
+/* { dg-skip-if "PR68644" { hppa*-*-* } { "*" } { "" } } */
void
f1 (int *p, unsigned int i)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
index 827cc7a61b4..1a4bfe65d97 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
@@ -25,4 +25,4 @@ foo ()
but the loop reads only one element at a time, and DOM cannot resolve these.
The same happens on powerpc depending on the SIMD support available. */
-/* { dg-final { scan-tree-dump "return 28;" "optimized" { xfail { { alpha*-*-* powerpc64*-*-* } || { sparc*-*-* && lp64 } } } } } */
+/* { dg-final { scan-tree-dump "return 28;" "optimized" { xfail { { alpha*-*-* hppa*64*-*-* powerpc64*-*-* } || { sparc*-*-* && lp64 } } } } } */
diff --git a/gcc/testsuite/gcc.dg/uninit-19.c b/gcc/testsuite/gcc.dg/uninit-19.c
index d7b9ed04b7d..b138a2c89dc 100644
--- a/gcc/testsuite/gcc.dg/uninit-19.c
+++ b/gcc/testsuite/gcc.dg/uninit-19.c
@@ -22,5 +22,5 @@ fn2 ()
fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 22. */
}
-/* { dg-warning "may be used uninitialized" "" { target nonpic } 13 } */
-/* { dg-warning "may be used uninitialized" "" { target { ! nonpic } } 22 } */
+/* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } 13 } */
+/* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } 22 } */
diff --git a/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c b/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c
index 8eb50aafa2b..49b74d9e265 100644
--- a/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c
+++ b/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c
@@ -6,4 +6,4 @@ test (void)
return 1;
}
-/* { dg-final { scan-assembler "\.arch.*fp.*simd" } } */
+/* { dg-final { scan-assembler-times "\\.arch armv8-a\n" 1 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/pr70398.c b/gcc/testsuite/gcc.target/aarch64/pr70398.c
new file mode 100644
index 00000000000..dbe5ad1b24f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr70398.c
@@ -0,0 +1,26 @@
+/* { dg-do run } */
+/* { dg-options "-O -fno-tree-loop-optimize -fno-tree-ter -static" } */
+unsigned int in[8 * 8] =
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 };
+
+unsigned char out[8 * 8];
+
+int
+main (void)
+{
+ int i;
+ for (i = 0; i < 8 * 4; i++)
+ {
+ out[i * 2] = (unsigned char) in[i * 2] + 1;
+ out[i * 2 + 1] = (unsigned char) in[i * 2 + 1] + 2;
+ }
+ __asm__("":::"memory");
+ for (i = 0; i < 8 * 4; i++)
+ {
+ if (out[i * 2] != in[i * 2] + 1
+ || out[i * 2 + 1] != in[i * 2 + 1] + 2)
+ __builtin_abort ();
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/target_attr_15.c b/gcc/testsuite/gcc.target/aarch64/target_attr_15.c
index f72bec878bf..2d8c7b955ce 100644
--- a/gcc/testsuite/gcc.target/aarch64/target_attr_15.c
+++ b/gcc/testsuite/gcc.target/aarch64/target_attr_15.c
@@ -10,4 +10,4 @@ foo (int a)
return a + 1;
}
-/* { dg-final { scan-assembler-times "\\.arch armv8-a\n" 1 } } */
+/* { dg-final { scan-assembler-times "\\.arch armv8-a\\+nofp\\+nosimd\n" 1 } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr70496.c b/gcc/testsuite/gcc.target/arm/pr70496.c
new file mode 100644
index 00000000000..d3ee0b505a8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr70496.c
@@ -0,0 +1,13 @@
+/* { dg-do assemble } */
+/* { dg-options "-mthumb -O2" } */
+/* { dg-require-effective-target arm_arm_ok } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+
+int i;
+void
+main (void)
+{
+ __asm__ volatile (".arm");
+ i = 0;
+ __asm__ volatile ("\n cbz r0, 2f\n2:");
+}
diff --git a/gcc/testsuite/gcc.target/i386/asm-flag-6.c b/gcc/testsuite/gcc.target/i386/asm-flag-6.c
new file mode 100644
index 00000000000..458587ec9dc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/asm-flag-6.c
@@ -0,0 +1,276 @@
+/* Executable testcase for 'output flags.' */
+/* { dg-do run } */
+
+char TestC ()
+{
+ char r;
+
+ __asm__ ("stc" : "=@ccc"(r));
+ if (r)
+ {
+ __asm__ ("clc" : "=@ccnc"(r));
+ if (r)
+ return 1;
+ }
+ return 0;
+}
+
+char TestE ()
+{
+ char r;
+
+ /* 1 equals 1. */
+ __asm__ ("cmp $1, %1" : "=@cce"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 not equals 2. */
+ __asm__ ("cmp $2, %1" : "=@ccne"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ return 0;
+}
+
+char TestZ ()
+{
+ char r;
+
+ /* 1 equals 1. */
+ __asm__ ("cmp $1, %1" : "=@ccz"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 not equals 2. */
+ __asm__ ("cmp $2, %1" : "=@ccnz"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ return 0;
+}
+
+char TestA ()
+{
+ char r;
+
+ /* 1 a 0. */
+ __asm__ ("cmp $0, %1" : "=@cca"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 na 2. */
+ __asm__ ("cmp $2, %1" : "=@ccna"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 na 1. */
+ __asm__ ("cmp $1, %1" : "=@ccna"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestAE ()
+{
+ char r;
+
+ /* 1 ae 0. */
+ __asm__ ("cmp $0, %1" : "=@ccae"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nae 2. */
+ __asm__ ("cmp $2, %1" : "=@ccnae"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 ae 1. */
+ __asm__ ("cmp $1, %1" : "=@ccae"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestB ()
+{
+ char r;
+
+ /* 1 b 2. */
+ __asm__ ("cmp $2, %1" : "=@ccb"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nb 0. */
+ __asm__ ("cmp $0, %1" : "=@ccnb"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nb 1. */
+ __asm__ ("cmp $1, %1" : "=@ccnb"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestBE ()
+{
+ char r;
+
+ /* 1 be 2. */
+ __asm__ ("cmp $2, %1" : "=@ccbe"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nbe 0. */
+ __asm__ ("cmp $0, %1" : "=@ccnbe"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 be 1. */
+ __asm__ ("cmp $1, %1" : "=@ccbe"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestG ()
+{
+ char r;
+
+ /* 1 g 0. */
+ __asm__ ("cmp $0, %1" : "=@ccg"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 ng 2. */
+ __asm__ ("cmp $2, %1" : "=@ccng"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 ng 1. */
+ __asm__ ("cmp $1, %1" : "=@ccng"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestGE ()
+{
+ char r;
+
+ /* 1 ge 0. */
+ __asm__ ("cmp $0, %1" : "=@ccge"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nge 2. */
+ __asm__ ("cmp $2, %1" : "=@ccnge"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 ge 1. */
+ __asm__ ("cmp $1, %1" : "=@ccge"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestL ()
+{
+ char r;
+
+ /* 1 l 2. */
+ __asm__ ("cmp $2, %1" : "=@ccl"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nl 0. */
+ __asm__ ("cmp $0, %1" : "=@ccnl"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nl 1. */
+ __asm__ ("cmp $1, %1" : "=@ccnl"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestLE ()
+{
+ char r;
+
+ /* 1 le 2. */
+ __asm__ ("cmp $2, %1" : "=@ccle"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 nle 0. */
+ __asm__ ("cmp $0, %1" : "=@ccnle"(r) : "r" (1));
+ if (r)
+ {
+ /* 1 le 1. */
+ __asm__ ("cmp $1, %1" : "=@ccle"(r) : "r" (1));
+ if (r)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+char TestO ()
+{
+ char r;
+ unsigned char res = 128;
+
+ /* overflow. */
+ __asm__ ("addb $128, %1" : "=@cco"(r), "+r"(res));
+ if (r)
+ {
+ /* not overflow. */
+ __asm__ ("addb $1, %1" : "=@ccno"(r), "+r"(res));
+ if (r)
+ return 1;
+ }
+ return 0;
+}
+
+char TestP ()
+{
+ char r, res = 1;
+
+ /* even # bits. */
+ __asm__ ("addb $2, %1" : "=@ccp"(r), "+r"(res));
+ if (r)
+ {
+ /* odd # bits. */
+ __asm__ ("addb $1, %1" : "=@ccnp"(r), "+r"(res));
+ if (r)
+ return 1;
+ }
+ return 0;
+}
+
+char TestS ()
+{
+ char r, res = 1;
+
+ /* sign bit set. */
+ __asm__ ("addb $128, %1" : "=@ccs"(r), "+r"(res));
+ if (r)
+ {
+ /* sign bit not set. */
+ __asm__ ("subb $128, %1" : "=@ccns"(r), "+r"(res));
+ if (r)
+ return 1;
+ }
+ return 0;
+}
+
+/* dg-do treats exit code of 0 as success. */
+int main ()
+{
+ if (TestC () && TestE () && TestZ () && TestA ()
+ && TestAE () && TestB () && TestBE () && TestG ()
+ && TestGE () && TestL () && TestLE () && TestO ()
+ && TestP () && TestS ())
+ return 0;
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx2-pr70542.c b/gcc/testsuite/gcc.target/i386/avx2-pr70542.c
new file mode 100644
index 00000000000..2a95c5a027d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx2-pr70542.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/70542 */
+/* { dg-do run } */
+/* { dg-options "-O3 -mavx2" } */
+/* { dg-require-effective-target avx2 } */
+
+#include "avx2-check.h"
+
+#define main() do_main ()
+
+#include "../../gcc.dg/torture/pr70542.c"
+
+static void
+avx2_test (void)
+{
+ do_main ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx2-pr70574.c b/gcc/testsuite/gcc.target/i386/avx2-pr70574.c
new file mode 100644
index 00000000000..c9867ddf9b0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx2-pr70574.c
@@ -0,0 +1,26 @@
+/* PR rtl-optimization/70574 */
+/* { dg-do run { target lp64 } } */
+/* { dg-require-effective-target avx2 } */
+/* { dg-options "-O -frerun-cse-after-loop -fno-tree-ccp -mcmodel=medium -mavx2" } */
+/* { dg-additional-options "-fPIC" { target fpic } } */
+
+#include "avx2-check.h"
+
+typedef char A __attribute__((vector_size (32)));
+typedef short B __attribute__((vector_size (32)));
+
+int
+foo (int x, __int128 y, __int128 z, A w)
+{
+ y <<= 64;
+ w *= (A) { 0, -1, z, 0, ~y };
+ return w[0] + ((B) { x, 0, y, 0, -1 } | 1)[4];
+}
+
+static void
+avx2_test ()
+{
+ int x = foo (0, 0, 0, (A) {});
+ if (x != -1)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c
new file mode 100644
index 00000000000..4fe503e42ac
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c
@@ -0,0 +1,24 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -mavx512bw" } */
+/* { dg-require-effective-target avx512bw } */
+
+#define AVX512BW
+
+#include "avx512f-helper.h"
+
+static __mmask64 __attribute__((noinline,noclone))
+unpack (__mmask64 arg1, __mmask64 arg2)
+{
+ __mmask64 res;
+
+ res = _mm512_kunpackd (arg1, arg2);
+
+ return res;
+}
+
+void
+TEST (void)
+{
+ if (unpack (0x07UL, 0x70UL) != 0x0700000070UL)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c
new file mode 100644
index 00000000000..5d7f8955975
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c
@@ -0,0 +1,24 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -mavx512bw" } */
+/* { dg-require-effective-target avx512bw } */
+
+#define AVX512BW
+
+#include "avx512f-helper.h"
+
+static __mmask32 __attribute__((noinline,noclone))
+unpack (__mmask32 arg1, __mmask32 arg2)
+{
+ __mmask32 res;
+
+ res = _mm512_kunpackw (arg1, arg2);
+
+ return res;
+}
+
+void
+TEST (void)
+{
+ if (unpack (0x07, 0x70) != 0x070070)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c b/gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c
new file mode 100644
index 00000000000..d7bd659f73a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c
@@ -0,0 +1,26 @@
+/* PR tree-optimization/70509 */
+/* { dg-do run } */
+/* { dg-options "-O1 -mavx512bw" } */
+/* { dg-require-effective-target avx512bw } */
+
+#define AVX512BW
+#include "avx512f-helper.h"
+
+typedef char V __attribute__ ((vector_size (64)));
+
+int __attribute__ ((noinline, noclone))
+foo (V u, V v)
+{
+ u /= v[0x20];
+ return u[0];
+}
+
+void
+TEST (void)
+{
+ int x = foo ((V) { 9 }, (V) { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3 });
+ if (x != 3)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-2.c
new file mode 100644
index 00000000000..86580f289aa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-2.c
@@ -0,0 +1,24 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#define AVX512F
+
+#include "avx512f-helper.h"
+
+static __mmask16 __attribute__((noinline,noclone))
+unpack (__mmask16 arg1, __mmask16 arg2)
+{
+ __mmask16 res;
+
+ res = _mm512_kunpackb (arg1, arg2);
+
+ return res;
+}
+
+void
+TEST (void)
+{
+ if (unpack (0x07, 0x70) != 0x0770)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
index de6279f1dfa..38d53900627 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
/* { dg-final { scan-tree-dump "memcpy.chkp" "strlen" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
char *test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
index 470ac4715a9..789ebc1f2d8 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
@@ -3,8 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
/* { dg-final { scan-tree-dump-not "strlen" "strlen" } } */
-#define _GNU_SOURCE
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
char *test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
index 311c9a042e0..276f4127975 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
/* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
size_t test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
index dbf568b8418..51ff96028be 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
@@ -3,8 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
/* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */
-#define _GNU_SOURCE
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
char * test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
index e44096cd429..bbafecc3063 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
@@ -3,7 +3,7 @@
/* { dg-final { scan-tree-dump-times "strlen" 2 "strlen" } } */
/* { dg-final { scan-tree-dump "memcpy" "strlen" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
size_t test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
index 18aa2819cdf..d6148a87fd1 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
/* { dg-final { scan-tree-dump "memcpy_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
index 26e9f13a190..18cff739b01 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump-not "memset_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
index e84963f11f7..c53db6a17e4 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump-not "memmove_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, void *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
index 638810b8be5..a076d17cd9a 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
@@ -3,8 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump-not "mempcpy_nobnd" "chkpopt" } } */
-#define _GNU_SOURCE
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, void *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
index 3b926b11f83..279cae3e5bf 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memcpy_nobnd_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
index a8d000ba1fa..b810c682569 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memset_nobnd_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
index 7c6065657c0..a9a79c1e330 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memmove_nobnd_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
index b0f43a6880d..6ce170c9d68 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
@@ -3,8 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "mempcpy_nobnd_nochk" "chkpopt" } } */
-#define _GNU_SOURCE
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
index cac0feaecbb..6a0c24ee887 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
/* { dg-final { scan-tree-dump "memset_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
index 72ff3869f7b..310dec77456 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
/* { dg-final { scan-tree-dump "memmove_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
index 216ed521edb..7a30d17b8e6 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
@@ -3,8 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
/* { dg-final { scan-tree-dump "mempcpy_nochk" "chkpopt" } } */
-#define _GNU_SOURCE
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
index 02ad9ccc496..39850d62be8 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memcpy_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
index 6db5d83a0bc..06dcbfb9a25 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memset_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
index 761e6263d86..40ded068f8e 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memmove_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
index afde3c92b9f..7e575bb40bb 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
@@ -3,8 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "mempcpy_nobnd" "chkpopt" } } */
-#define _GNU_SOURCE
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
index b79d09633dd..bf26874e5a8 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump-not "memcpy_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, void *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/pr70467-2.c b/gcc/testsuite/gcc.target/i386/pr70467-2.c
new file mode 100644
index 00000000000..4c1715c87e5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70467-2.c
@@ -0,0 +1,20 @@
+/* PR rtl-optimization/70467 */
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O2" } */
+
+unsigned long long
+foo (unsigned long long x)
+{
+ return x + 0x12345600000000ULL;
+}
+
+unsigned long long
+bar (unsigned long long x)
+{
+ return x - 0x12345600000000ULL;
+}
+
+/* { dg-final { scan-assembler-not "addl\[ \t\]*.0," } } */
+/* { dg-final { scan-assembler-not "subl\[ \t\]*.0," } } */
+/* { dg-final { scan-assembler-not "adcl\[^\n\r\]*%" } } */
+/* { dg-final { scan-assembler-not "sbbl\[^\n\r\]*%" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr70510.c b/gcc/testsuite/gcc.target/i386/pr70510.c
new file mode 100644
index 00000000000..fdad97a16f4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70510.c
@@ -0,0 +1,14 @@
+/* PR target/70510 */
+/* { dg-do assemble { target avx512bw } } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-options "-Og -mavx512bw -masm=intel" } */
+
+typedef int V __attribute__ ((vector_size (64)));
+
+V
+foo (V u, V v)
+{
+ v[0] |= v[u[0]];
+ u /= ((V)v)[0];
+ return u;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70525.c b/gcc/testsuite/gcc.target/i386/pr70525.c
new file mode 100644
index 00000000000..78ba752f94b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70525.c
@@ -0,0 +1,32 @@
+/* PR target/70525 */
+/* { dg-do assemble { target avx512bw } } */
+/* { dg-options "-O2 -mavx512bw -mno-avx512vl" } */
+
+typedef char v64qi __attribute__ ((vector_size (64)));
+typedef short v32hi __attribute__ ((vector_size (64)));
+typedef int v16si __attribute__ ((vector_size (64)));
+typedef long long v8di __attribute__ ((vector_size (64)));
+
+v64qi
+f1 (v64qi x, v64qi y)
+{
+ return x & ~y;
+}
+
+v32hi
+f2 (v32hi x, v32hi y)
+{
+ return x & ~y;
+}
+
+v16si
+f3 (v16si x, v16si y)
+{
+ return x & ~y;
+}
+
+v8di
+f4 (v8di x, v8di y)
+{
+ return x & ~y;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70593.c b/gcc/testsuite/gcc.target/i386/pr70593.c
new file mode 100644
index 00000000000..c013683688b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70593.c
@@ -0,0 +1,19 @@
+/* PR middle-end/70593 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+__attribute__((noinline, noclone)) unsigned long
+foo (unsigned x)
+{
+ unsigned long a, c = x;
+ asm volatile ("xorl\t%k1, %k1\n\tmovl\t$7, %k0" : "=c" (c), "=a" (a) : "0" (c), "1" (c) : "memory");
+ return c;
+}
+
+int
+main ()
+{
+ if (foo (3) != 7)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70596.c b/gcc/testsuite/gcc.target/i386/pr70596.c
new file mode 100644
index 00000000000..0c73e838be1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70596.c
@@ -0,0 +1,13 @@
+/* PR rtl-optimization/70596 */
+/* { dg-do compile { target avx512f } } */
+/* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-coalesce-vars -fno-tree-dce -fno-tree-fre -fno-tree-pre -fcompare-debug -mavx512f" } */
+
+typedef char V __attribute__((vector_size (64)));
+
+int
+foo (V u, V v)
+{
+ v /= u | 1;
+ v[18] = 1 | v[8];
+ return v[1] + v[6] + v[0] + v[1] + v[18] + v[2] + v[7];
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-1.c b/gcc/testsuite/gcc.target/powerpc/float128-1.c
new file mode 100644
index 00000000000..b8e71ceaaae
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/float128-1.c
@@ -0,0 +1,147 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-require-effective-target ppc_float128_sw } */
+/* { dg-options "-mcpu=power7 -O2 -mfloat128 -static-libgcc" } */
+
+#ifdef DEBUG
+#include <stdio.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <inttypes.h>
+#endif
+
+#if !defined(__FLOAT128__) || !defined(_ARCH_PPC)
+static __float128
+pass_through (__float128 x)
+{
+ return x;
+}
+
+__float128 (*no_optimize) (__float128) = pass_through;
+#endif
+
+#ifdef DEBUG
+__attribute__((__noinline__))
+static void
+print_f128 (__float128 x)
+{
+ unsigned sign;
+ unsigned exponent;
+ uint64_t mantissa1;
+ uint64_t mantissa2;
+ uint64_t upper;
+ uint64_t lower;
+
+#if defined(_ARCH_PPC) && defined(__BIG_ENDIAN__)
+ struct ieee128 {
+ uint64_t upper;
+ uint64_t lower;
+ };
+
+#elif (defined(_ARCH_PPC) && defined(__LITTLE_ENDIAN__)) || defined(__x86_64__)
+ struct ieee128 {
+ uint64_t lower;
+ uint64_t upper;
+ };
+
+#else
+#error "Unknown system"
+#endif
+
+ union {
+ __float128 f128;
+ struct ieee128 s128;
+ } u;
+
+ u.f128 = x;
+ upper = u.s128.upper;
+ lower = u.s128.lower;
+
+ sign = (unsigned)((upper >> 63) & 1);
+ exponent = (unsigned)((upper >> 48) & ((((uint64_t)1) << 16) - 1));
+ mantissa1 = (upper & ((((uint64_t)1) << 48) - 1));
+ mantissa2 = lower;
+
+ printf ("%c 0x%.4x 0x%.12" PRIx64 " 0x%.16" PRIx64,
+ sign ? '-' : '+',
+ exponent,
+ mantissa1,
+ mantissa2);
+}
+#endif
+
+__attribute__((__noinline__))
+static void
+do_test (__float128 expected, __float128 got, const char *name)
+{
+ int equal_p = (expected == got);
+
+#ifdef DEBUG
+ printf ("Test %s, expected: ", name);
+ print_f128 (expected);
+ printf (" %5g, got: ", (double) expected);
+ print_f128 (got);
+ printf (" %5g, result %s\n",
+ (double) got,
+ (equal_p) ? "equal" : "not equal");
+#endif
+
+ if (!equal_p)
+ __builtin_abort ();
+}
+
+
+int
+main (void)
+{
+ __float128 one = 1.0q;
+ __float128 two = 2.0q;
+ __float128 three = 3.0q;
+ __float128 four = 4.0q;
+ __float128 five = 5.0q;
+ __float128 add_result = (1.0q + 2.0q);
+ __float128 mul_result = ((1.0q + 2.0q) * 3.0q);
+ __float128 div_result = (((1.0q + 2.0q) * 3.0q) / 4.0q);
+ __float128 sub_result = ((((1.0q + 2.0q) * 3.0q) / 4.0q) - 5.0q);
+ __float128 neg_result = - sub_result;
+ __float128 add_xresult;
+ __float128 mul_xresult;
+ __float128 div_xresult;
+ __float128 sub_xresult;
+ __float128 neg_xresult;
+
+#if defined(__FLOAT128__) && defined(_ARCH_PPC)
+ __asm__ (" #prevent constant folding, %x0" : "+wa" (one));
+ __asm__ (" #prevent constant folding, %x0" : "+wa" (two));
+ __asm__ (" #prevent constant folding, %x0" : "+wa" (three));
+ __asm__ (" #prevent constant folding, %x0" : "+wa" (four));
+ __asm__ (" #prevent constant folding, %x0" : "+wa" (five));
+
+#else
+ one = no_optimize (one);
+ two = no_optimize (two);
+ three = no_optimize (three);
+ four = no_optimize (four);
+ five = no_optimize (five);
+#endif
+
+ add_xresult = (one + two);
+ do_test (add_result, add_xresult, "add");
+
+ mul_xresult = add_xresult * three;
+ do_test (mul_result, mul_xresult, "mul");
+
+ div_xresult = mul_xresult / four;
+ do_test (div_result, div_xresult, "div");
+
+ sub_xresult = div_xresult - five;
+ do_test (sub_result, sub_xresult, "sub");
+
+ neg_xresult = - sub_xresult;
+ do_test (neg_result, neg_xresult, "neg");
+
+#ifdef DEBUG
+ printf ("Passed\n");
+#endif
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-2.c b/gcc/testsuite/gcc.target/powerpc/float128-2.c
new file mode 100644
index 00000000000..f517686bd25
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/float128-2.c
@@ -0,0 +1,226 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-require-effective-target ppc_float128_sw } */
+/* { dg-options "-mcpu=power7 -O2 -mfloat128 -static-libgcc" } */
+
+/*
+ * Test program to make sure we are getting more precision than the 53 bits we
+ * get with IEEE double.
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <stddef.h>
+
+#ifndef TYPE
+#define TYPE __float128
+#endif
+
+#ifndef NO_INLINE
+#define NO_INLINE __attribute__((__noinline__))
+#endif
+
+static TYPE power_of_two (ssize_t) NO_INLINE;
+static TYPE calc1 (TYPE) NO_INLINE;
+static TYPE calc2 (TYPE) NO_INLINE;
+static TYPE calc3 (TYPE) NO_INLINE;
+
+#ifndef POWER2
+#define POWER2 60
+#endif
+
+
+/*
+ * Print TYPE in hex.
+ */
+
+
+#if defined(DEBUG) || defined(DEBUG2)
+static void print_hex (const char *prefix, TYPE, const char *suffix) NO_INLINE;
+
+#if defined (__i386__) || defined (__x86_64__) || defined (__LITTLE_ENDIAN__)
+#define ENDIAN_REVERSE(N, MAX) ((MAX) - 1 - (N))
+
+#else
+#define ENDIAN_REVERSE(N, MAX) (N)
+#endif
+
+static void
+print_hex (const char *prefix, TYPE value, const char *suffix)
+{
+ union {
+ TYPE f128;
+ unsigned char uc[sizeof (TYPE)];
+ } u;
+
+ size_t i;
+
+ u.f128 = value;
+ printf ("%s0x", prefix);
+ for (i = 0; i < sizeof (TYPE); i++)
+ printf ("%.2x", u.uc[ ENDIAN_REVERSE (i, sizeof (TYPE)) ]);
+
+ printf (", %24.2Lf%s", (long double)value, suffix);
+}
+#endif
+
+
+/*
+ * Return a power of two.
+ */
+
+static TYPE
+power_of_two (ssize_t num)
+{
+ TYPE ret = (TYPE) 1.0;
+ ssize_t i;
+
+ if (num >= 0)
+ {
+ for (i = 0; i < num; i++)
+ ret *= (TYPE) 2.0;
+ }
+ else
+ {
+ ssize_t num2 = -num;
+ for (i = 0; i < num2; i++)
+ ret /= (TYPE) 2.0;
+ }
+
+#ifdef DEBUG
+ printf ("power_of_two (%2ld) = ", (long) num);
+ print_hex ("", ret, "\n");
+#endif
+
+ return ret;
+}
+
+
+#ifdef ADDSUB
+static TYPE add (TYPE a, TYPE b) NO_INLINE;
+static TYPE sub (TYPE a, TYPE b) NO_INLINE;
+
+static TYPE
+add (TYPE a, TYPE b)
+{
+ TYPE c;
+#ifdef DEBUG
+ print_hex ("add, arg1 = ", a, "\n");
+ print_hex ("add, arg2 = ", b, "\n");
+#endif
+ c = a + b;
+#ifdef DEBUG
+ print_hex ("add, result = ", c, "\n");
+#endif
+ return c;
+}
+
+static TYPE
+sub (TYPE a, TYPE b)
+{
+ TYPE c;
+#ifdef DEBUG
+ print_hex ("sub, arg1 = ", a, "\n");
+ print_hex ("sub, arg2 = ", b, "\n");
+#endif
+ c = a - b;
+#ifdef DEBUG
+ print_hex ("sub, result = ", c, "\n");
+#endif
+ return c;
+}
+
+#else
+#define add(x, y) ((x) + (y))
+#define sub(x, y) ((x) - (y))
+#endif
+
+/*
+ * Various calculations. Add in 2**POWER2, and subtract 2**(POWER2-1) twice, and we should
+ * get the original value.
+ */
+
+static TYPE
+calc1 (TYPE num)
+{
+ TYPE num2 = add (power_of_two (POWER2), num);
+ TYPE ret;
+
+#ifdef DEBUG
+ print_hex ("calc1 (before call) = ", num2, "\n");
+#endif
+
+ ret = calc2 (num2);
+
+#ifdef DEBUG
+ print_hex ("calc1 (after call) = ", ret, "\n");
+#endif
+
+ return ret;
+}
+
+static TYPE
+calc2 (TYPE num)
+{
+ TYPE num2 = sub (num, power_of_two (POWER2-1));
+ TYPE ret;
+
+#ifdef DEBUG
+ print_hex ("calc2 (before call) = ", num2, "\n");
+#endif
+
+ ret = calc3 (num2);
+
+#ifdef DEBUG
+ print_hex ("calc2 (after call) = ", ret, "\n");
+#endif
+
+ return ret;
+}
+
+static TYPE
+calc3 (TYPE num)
+{
+ TYPE ret = sub (num, (((TYPE) 2.0) * power_of_two (POWER2-2)));
+
+#ifdef DEBUG
+ print_hex ("calc3 = ", ret, "\n");
+#endif
+
+ return ret;
+}
+
+
+int
+main (void)
+{
+ TYPE input, output;
+
+#ifdef DEBUG
+ printf ("Testing, %ld bytes\n", (long) sizeof (TYPE));
+#endif
+
+ input = power_of_two (-1);
+ if ((double)input != 0.5)
+ {
+#if defined(DEBUG) || defined(DEBUG2)
+ print_hex ("Input should be 0.5: ", output, "\n");
+ return 1;
+#else
+ __builtin_abort ();
+#endif
+ }
+
+ output = calc1 (input);
+ if ((double)output != 0.5)
+ {
+#if defined(DEBUG) || defined(DEBUG2)
+ print_hex ("Output should be 0.5: ", output, "\n");
+ return 1;
+#else
+ __builtin_abort ();
+#endif
+ }
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr70117.c b/gcc/testsuite/gcc.target/powerpc/pr70117.c
new file mode 100644
index 00000000000..f1fdedb6c59
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr70117.c
@@ -0,0 +1,92 @@
+/* { dg-do run { target { powerpc*-*-linux* powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* } } } */
+/* { dg-options "-std=c99 -mlong-double-128 -O2" } */
+
+#include <float.h>
+
+union gl_long_double_union
+{
+ struct { double hi; double lo; } dd;
+ long double ld;
+};
+
+/* This is gnulib's LDBL_MAX which, being 107 bits in precision, is
+ slightly larger than gcc's 106 bit precision LDBL_MAX. */
+volatile union gl_long_double_union gl_LDBL_MAX =
+ { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } };
+
+volatile double min_denorm = 0x1p-1074;
+volatile double ld_low = 0x1p-969;
+volatile double dinf = 1.0/0.0;
+volatile double dnan = 0.0/0.0;
+
+int
+main (void)
+{
+ long double ld;
+
+ ld = gl_LDBL_MAX.ld;
+ if (__builtin_isinfl (ld))
+ __builtin_abort ();
+ ld = -gl_LDBL_MAX.ld;
+ if (__builtin_isinfl (ld))
+ __builtin_abort ();
+
+ ld = gl_LDBL_MAX.ld;
+ if (!__builtin_isfinite (ld))
+ __builtin_abort ();
+ ld = -gl_LDBL_MAX.ld;
+ if (!__builtin_isfinite (ld))
+ __builtin_abort ();
+
+ ld = ld_low;
+ if (!__builtin_isnormal (ld))
+ __builtin_abort ();
+ ld = -ld_low;
+ if (!__builtin_isnormal (ld))
+ __builtin_abort ();
+
+ ld = -min_denorm;
+ ld += ld_low;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+ ld = min_denorm;
+ ld -= ld_low;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+
+ ld = 0.0;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+ ld = -0.0;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+
+ ld = LDBL_MAX;
+ if (!__builtin_isnormal (ld))
+ __builtin_abort ();
+ ld = -LDBL_MAX;
+ if (!__builtin_isnormal (ld))
+ __builtin_abort ();
+
+ ld = gl_LDBL_MAX.ld;
+ if (!__builtin_isnormal (ld))
+ __builtin_abort ();
+ ld = -gl_LDBL_MAX.ld;
+ if (!__builtin_isnormal (ld))
+ __builtin_abort ();
+
+ ld = dinf;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+ ld = -dinf;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+
+ ld = dnan;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+ ld = -dnan;
+ if (__builtin_isnormal (ld))
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr70640.c b/gcc/testsuite/gcc.target/powerpc/pr70640.c
new file mode 100644
index 00000000000..5d49c6331f3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr70640.c
@@ -0,0 +1,11 @@
+/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-require-effective-target powerpc_float128_sw_ok } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+/* { dg-options "-O2 -mcpu=power8 -mfloat128" } */
+
+__float128 foo (__float128 a) { return -a; }
+
+/* { dg-final { scan-assembler "xxlorc\|vspltisw" } } */
+/* { dg-final { scan-assembler "xxlxor" } } */
+/* { dg-final { scan-assembler "vslb" } } */
+/* { dg-final { scan-assembler "vsldoi" } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr70669.c b/gcc/testsuite/gcc.target/powerpc/pr70669.c
new file mode 100644
index 00000000000..8054102ee50
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr70669.c
@@ -0,0 +1,22 @@
+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+/* { dg-options "-O2 -mcpu=power8 -mfloat128" } */
+
+#ifndef TYPE
+#define TYPE __float128
+#endif
+
+void foo (TYPE *p, TYPE *q)
+{
+ TYPE r = *q;
+#ifndef NO_ASM
+ __asm__ (" # %0" : "+r" (r));
+#endif
+ *p = r;
+}
+
+/* { dg-final { scan-assembler "mfvsrd" } } */
+/* { dg-final { scan-assembler "mtvsrd" } } */
+/* { dg-final { scan-assembler-times "stxvd2x" 1 } } */
+/* { dg-final { scan-assembler-times "lxvd2x" 1 } } */
diff --git a/gcc/testsuite/gcc.target/sh/torture/pr70416.c b/gcc/testsuite/gcc.target/sh/torture/pr70416.c
new file mode 100644
index 00000000000..b1123bee029
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/torture/pr70416.c
@@ -0,0 +1,136 @@
+/* { dg-additional-options "-std=gnu99 -fpic" } */
+/* { dg-do compile } */
+
+typedef unsigned long VALUE;
+typedef unsigned long ID;
+
+typedef struct rb_callable_method_entry_struct
+{
+ ID called_id;
+ const VALUE owner;
+} rb_callable_method_entry_t;
+
+typedef struct rb_iseq_struct rb_iseq_t;
+
+struct __jmp_buf_tag { int xx; };
+typedef struct __jmp_buf_tag jmp_buf[1];
+
+struct rb_iseq_struct
+{
+ const struct iseq_catch_table *catch_table;
+};
+
+typedef struct rb_control_frame_struct
+{
+ const VALUE *pc;
+ VALUE *sp;
+ const rb_iseq_t *iseq;
+ VALUE flag;
+ VALUE *ep;
+} rb_control_frame_t;
+
+typedef jmp_buf rb_jmpbuf_t;
+struct rb_vm_tag
+{
+ rb_jmpbuf_t buf;
+}rb_ensure_list_t;
+
+typedef struct rb_thread_struct
+{
+ rb_control_frame_t *cfp;
+ struct rb_vm_tag *tag;
+} rb_thread_t;
+
+struct iseq_catch_table_entry
+{
+ const rb_iseq_t *iseq;
+};
+
+struct iseq_catch_table
+{
+ unsigned int size;
+};
+
+extern unsigned long long __sdt_unsp;
+extern unsigned short ruby_cmethod__return_semaphore;
+
+struct ruby_dtrace_method_hook_args
+{
+ const char *classname;
+ const char *methodname;
+ const char *filename;
+ int line_no;
+};
+
+int ruby_th_dtrace_setup(rb_thread_t *th, VALUE klass, ID id, struct ruby_dtrace_method_hook_args *args);
+int rb_threadptr_tag_state (rb_thread_t *th);
+VALUE vm_exec_core (rb_thread_t *th, VALUE initial);
+const rb_callable_method_entry_t *rb_vm_frame_method_entry (const rb_control_frame_t *cfp);
+
+struct vm_throw_data;
+const rb_control_frame_t * THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj);
+rb_control_frame_t * vm_push_frame(rb_thread_t *th, const rb_iseq_t *iseq, VALUE type, VALUE self, VALUE specval, VALUE cref_or_me, const VALUE *pc, VALUE *sp, int local_size, int stack_max);
+
+
+VALUE vm_exec(rb_thread_t *th)
+{
+ int state;
+ VALUE result;
+ VALUE initial = 0;
+ struct vm_throw_data *err;
+ rb_thread_t * const _th = (th);
+ struct rb_vm_tag _tag;
+
+ if ((state = (__builtin_setjmp((_tag.buf)) ? rb_threadptr_tag_state((_th)) : ((void)(_th->tag = &_tag), 0))) == 0)
+ {
+ result = vm_exec_core(th, initial);
+ }
+ else
+ {
+ unsigned int i;
+ const struct iseq_catch_table_entry *entry;
+ const struct iseq_catch_table *ct;
+ unsigned long epc, cont_pc, cont_sp;
+ const rb_iseq_t *catch_iseq;
+ rb_control_frame_t *cfp;
+ const rb_control_frame_t *escape_cfp;
+
+ while (th->cfp->pc == 0 || th->cfp->iseq == 0)
+ {
+ if (ruby_cmethod__return_semaphore)
+ {
+ struct ruby_dtrace_method_hook_args args;
+ if (ruby_th_dtrace_setup(th, rb_vm_frame_method_entry(th->cfp)->owner, rb_vm_frame_method_entry(th->cfp)->called_id, &args))
+ {
+ __asm__ __volatile__ (
+ ".asciz \"%n[_SDT_S1]@%[_SDT_A1] %n[_SDT_S2]@%[_SDT_A2] %n[_SDT_S3]@%[_SDT_A3] %n[_SDT_S4]@%[_SDT_A4]\"\n"
+ :
+ : [_SDT_S1] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.classname ) + 3) & -4) == 4, ( args.classname ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.classname ) + 3) & -4) == 4, ( args.classname ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.classname ) + 3) & -4) == 4, ( args.classname ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.classname ) == 14 || __builtin_classify_type ( args.classname ) == 5) ? sizeof (void *) : sizeof ( args.classname ))),
+ [_SDT_A1] "nor" (( args.classname )),
+ [_SDT_S2] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.methodname ) + 3) & -4) == 4, ( args.methodname ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.methodname ) + 3) & -4) == 4, ( args.methodname ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.methodname ) + 3) & -4) == 4, ( args.methodname ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.methodname ) == 14 || __builtin_classify_type ( args.methodname ) == 5) ? sizeof (void *) : sizeof ( args.methodname ))),
+ [_SDT_A2] "nor" (( args.methodname )),
+ [_SDT_S3] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.filename ) + 3) & -4) == 4, ( args.filename ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.filename ) + 3) & -4) == 4, ( args.filename ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.filename ) + 3) & -4) == 4, ( args.filename ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.filename ) == 14 || __builtin_classify_type ( args.filename ) == 5) ? sizeof (void *) : sizeof ( args.filename ))),
+ [_SDT_A3] "nor" (( args.filename )),
+ [_SDT_S4] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.line_no ) + 3) & -4) == 4, ( args.line_no ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.line_no ) + 3) & -4) == 4, ( args.line_no ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.line_no ) + 3) & -4) == 4, ( args.line_no ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.line_no ) == 14 || __builtin_classify_type ( args.line_no ) == 5) ? sizeof (void *) : sizeof ( args.line_no ))),
+ [_SDT_A4] "nor" (( args.line_no ))
+ );
+ }
+ }
+ }
+
+ if (cfp == escape_cfp && !(((cfp)->flag & 0x0200) != 0))
+ catch_iseq = entry->iseq;
+
+ if (state == 6)
+ {
+ escape_cfp = THROW_DATA_CATCH_FRAME(err);
+
+ if (ct)
+ for (i = 0; i < ct->size; i++) { }
+ }
+ else
+ ct = cfp->iseq->catch_table;
+
+ vm_push_frame(th, catch_iseq, 0xb1, 0, 1, 0, 0, 0, 5, 123);
+ }
+}
diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_19.f08 b/gcc/testsuite/gfortran.dg/allocate_with_source_19.f08
new file mode 100644
index 00000000000..ff8451093a8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/allocate_with_source_19.f08
@@ -0,0 +1,22 @@
+! { dg-do compile }
+! { dg-options -std=f2008 }
+
+! Contributed by mrestelli@gmail.com
+! Check that instead of an ICE the error message is emitted.
+
+module m
+ implicit none
+contains
+
+ subroutine s()
+ real, allocatable :: x(:)
+ real :: y
+
+ y = 5.0
+ ! x either needs an array spec, or y needs to be an array.
+ allocate( x , source=y ) ! { dg-error "Array specification or array-valued SOURCE= expression required in ALLOCATE statement" }
+
+ end subroutine s
+
+end module m
+
diff --git a/gcc/testsuite/gfortran.dg/coarray_allocate_6.f08 b/gcc/testsuite/gfortran.dg/coarray_allocate_6.f08
new file mode 100644
index 00000000000..2fdd4c128ef
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_allocate_6.f08
@@ -0,0 +1,27 @@
+! { dg-do run }
+! { dg-options "-fcoarray=single -fdump-tree-original" }
+
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+! Test fix for pr65795.
+
+implicit none
+
+type t2
+ integer, allocatable :: x
+end type t2
+
+type t3
+ type(t2), allocatable :: caf[:]
+end type t3
+
+!type(t3), save, target :: c, d
+type(t3), target :: c, d
+integer :: stat
+
+allocate(c%caf[*], stat=stat)
+end
+
+! Besides checking that the executable does not crash anymore, check
+! that the cause has been remove.
+! { dg-final { scan-tree-dump-not "c.caf.x = 0B" "original" } }
+
diff --git a/gcc/testsuite/gfortran.dg/deferred_character_16.f90 b/gcc/testsuite/gfortran.dg/deferred_character_16.f90
new file mode 100644
index 00000000000..f5931acd3c7
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/deferred_character_16.f90
@@ -0,0 +1,19 @@
+! { dg-do run }
+! PR70592 dynamically-allocated character array
+! Contributed by Peter Knowles <KnowlesPJ@Cardiff.ac.uk>
+!
+PROGRAM main
+ character(len=7) :: res
+ CHARACTER(len=:), DIMENSION(:), POINTER :: cp
+ INTEGER :: i
+ ALLOCATE(CHARACTER(len=1) :: cp(1:6))
+ if (SIZE(cp) /= 6 .or. LBOUND(cp,1) /= 1 .or. UBOUND(cp,1) /= 6) call abort()
+ cp(1)='1'
+ cp(2)='2'
+ cp(3)='3'
+ cp(4)='4'
+ cp(5)='5'
+ cp(6)='6'
+ write (res, *) cp
+ if (res /= ' 123456') call abort()
+END PROGRAM main
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
index 5cc2e8b2df9..865f7a62e5c 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
@@ -40,3 +40,5 @@ end program main
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } }
+
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
index d1bfc70c134..c9f3a6283cf 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
@@ -47,3 +47,4 @@ end program main
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } }
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
index feac7b2e529..33616076a59 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
@@ -46,3 +46,5 @@ end program main
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } }
+
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95
index 632983febc4..5ba56fb34ab 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95
@@ -44,3 +44,5 @@ end program main
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } }
+
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95
index 41b0d965586..a622a965d13 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95
@@ -43,3 +43,5 @@ end program main
! Check that the loop has been split off into a function.
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } }
+
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 2 "parloops1" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95
index 3de20575419..4ec2ac38b8d 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95
@@ -44,3 +44,5 @@ end program main
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } }
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } }
+
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95
index 21e2e86316a..409fe6f71fa 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95
@@ -36,3 +36,6 @@ end module test
! Check that the loop has been split off into a function.
! { dg-final { scan-tree-dump-times "(?n);; Function __test_MOD_foo._omp_fn.0 " 1 "optimized" } }
+
+! TODO, PR70545.
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" { xfail *-*-* } } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
index f7e14b421b7..ae2cac6adaf 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
@@ -34,3 +34,5 @@ end program main
! Check that the loop has been split off into a function.
! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } }
+
+! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/reduction-3.f95 b/gcc/testsuite/gfortran.dg/goacc/reduction-3.f95
new file mode 100644
index 00000000000..72f0eb95a98
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/goacc/reduction-3.f95
@@ -0,0 +1,10 @@
+! { dg-do compile }
+
+subroutine foo (ia1)
+integer :: i1, i2
+
+!$acc parallel reduction (+:i1) private(i1) ! { dg-error "invalid private reduction on .i1." }
+!$acc end parallel
+!$acc parallel reduction (+:i2) firstprivate(i2) ! { dg-error "invalid private reduction on .i2." }
+!$acc end parallel
+end subroutine foo
diff --git a/gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90 b/gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90
new file mode 100644
index 00000000000..6ff913ade8d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90
@@ -0,0 +1,46 @@
+! Ensure that each parallel reduction variable as a copy or pcopy
+! data clause.
+
+! { dg-additional-options "-fdump-tree-gimple" }
+
+program test
+ implicit none
+ integer :: v1, v2
+
+ !$acc parallel reduction(+:v1,v2)
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) copy(v1,v2)
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) pcopy(v1,v2)
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) present(v1,v2)
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) copyin(v1,v2) ! { dg-warning "incompatible data clause" }
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) pcopyin(v1,v2) ! { dg-warning "incompatible data clause" }
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) copyout(v1,v2) ! { dg-warning "incompatible data clause" }
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) pcopyout(v1,v2) ! { dg-warning "incompatible data clause" }
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) create(v1,v2) ! { dg-warning "incompatible data clause" }
+ !$acc end parallel
+
+ !$acc parallel reduction(+:v1,v2) pcreate(v1,v2) ! { dg-warning "incompatible data clause" }
+ !$acc end parallel
+end program test
+
+! { dg-final { scan-tree-dump-times "map.tofrom:v1" 8 "gimple" } }
+! { dg-final { scan-tree-dump-times "map.tofrom:v2" 8 "gimple" } }
+! { dg-final { scan-tree-dump-times "map.force_tofrom:v1" 1 "gimple" } }
+! { dg-final { scan-tree-dump-times "map.force_tofrom:v2" 1 "gimple" } }
+! { dg-final { scan-tree-dump-times "map.force_present:v1" 1 "gimple" } }
+! { dg-final { scan-tree-dump-times "map.force_present:v2" 1 "gimple" } }
diff --git a/gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95 b/gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
new file mode 100644
index 00000000000..b2aae1df522
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
@@ -0,0 +1,29 @@
+! { dg-do compile }
+! { dg-additional-options "-Wuninitialized" }
+
+subroutine foo
+ integer :: i
+
+ !$acc kernels
+ i = 1
+ !$acc end kernels
+
+end subroutine foo
+
+subroutine foo2
+ integer :: i
+
+ !$acc kernels copy (i)
+ i = 1
+ !$acc end kernels
+
+end subroutine foo2
+
+subroutine foo3
+ integer :: i
+
+ !$acc kernels copyin (i)
+ i = 1
+ !$acc end kernels
+
+end subroutine foo3
diff --git a/gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95 b/gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
new file mode 100644
index 00000000000..14d960a1f38
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! { dg-additional-options "-Wuninitialized" }
+
+subroutine test
+ INTEGER :: i
+
+ !$acc parallel
+ i = 1
+ !$acc end parallel
+end subroutine test
+
+subroutine test2
+ INTEGER :: i
+
+ !$acc parallel firstprivate (i) ! { dg-warning "is used uninitialized in this function" }
+ i = 1
+ !$acc end parallel
+end subroutine test2
diff --git a/gcc/testsuite/gfortran.dg/parameter_array_init_7.f90 b/gcc/testsuite/gfortran.dg/parameter_array_init_7.f90
new file mode 100644
index 00000000000..890da35da98
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/parameter_array_init_7.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR68566 ICE on using unusable array in reshape
+program p
+ integer, parameter :: n = 2
+ integer, parameter :: a(:) = 0 !{ dg-error "automatic or of deferred shape" }
+ integer, parameter :: b(n, n) = reshape([a, 1+a], [n, n])
+end
+
diff --git a/gcc/testsuite/gfortran.dg/pr36192.f90 b/gcc/testsuite/gfortran.dg/pr36192.f90
index df3bfd75f24..ebf95e35bfe 100644
--- a/gcc/testsuite/gfortran.dg/pr36192.f90
+++ b/gcc/testsuite/gfortran.dg/pr36192.f90
@@ -3,7 +3,6 @@
!
program three_body
real, parameter :: n = 2, d = 2
- real, dimension(n,d) :: x ! { dg-error "of INTEGER type|of INTEGER type" }
- x(1,:) = (/ 1.0, 0.0 /)
+ real, dimension(n,d) :: x ! { dg-error "Expecting a scalar INTEGER" }
+ x(1,:) = (/ 1.0, 0.0 /) ! { dg-error "Unclassifiable" }
end program three_body
-! { dg-prune-output "have constant shape" }
diff --git a/gcc/testsuite/gfortran.dg/pr36192_1.f90 b/gcc/testsuite/gfortran.dg/pr36192_1.f90
index 77df31765ac..687a465f8c0 100644
--- a/gcc/testsuite/gfortran.dg/pr36192_1.f90
+++ b/gcc/testsuite/gfortran.dg/pr36192_1.f90
@@ -2,11 +2,11 @@
! PR fortran/36192
program three_body
real, parameter :: n = 2, d = 2
- real, dimension(n,d) :: x_hq ! { dg-error "of INTEGER type|of INTEGER type" }
+ real, dimension(n,d) :: x_hq ! { dg-error "Expecting a scalar INTEGER" }
call step(x_hq)
contains
subroutine step(x)
real, dimension(:,:), intent(in) :: x
end subroutine step
end program three_body
-! { dg-prune-output "must have constant shape" }
+! { dg-prune-output "Rank mismatch in argument" }
diff --git a/gcc/testsuite/gfortran.dg/real_dimension_1.f b/gcc/testsuite/gfortran.dg/real_dimension_1.f
index 73e9131aaee..3dd1a5afc36 100644
--- a/gcc/testsuite/gfortran.dg/real_dimension_1.f
+++ b/gcc/testsuite/gfortran.dg/real_dimension_1.f
@@ -1,7 +1,7 @@
! { dg-do compile }
-! PR 34305 - make sure there's an error message for specifying a
+! PR 34305 - Test for specifying a real as dimension
program test
- parameter (datasize = 1000)
- dimension idata (datasize) ! { dg-error "must be of INTEGER type|must have constant shape" }
- idata (1) = -1
+ real , parameter :: dsize = 1000
+ dimension idata (dsize) ! { dg-error "scalar INTEGER expression" }
+ idata (1) = -1 ! { dg-error "must have the pointer attribute" }
end
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 777bff89a0d..3d44e1721dd 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1740,7 +1740,7 @@ proc check_ppc_float128_sw_available { } {
int main()
{
__float128 z = x + y;
- return (z == 3.0q);
+ return (z != 3.0q);
}
} $options
}
@@ -1759,7 +1759,7 @@ proc check_ppc_float128_hw_available { } {
|| [istarget *-*-darwin*]} {
expr 0
} else {
- set options "-mfloat128-hardware"
+ set options "-mfloat128 -mvsx -mfloat128-hardware -mpower9-vector"
check_runtime_nocache ppc_float128_hw_available {
volatile __float128 x = 1.0q;
volatile __float128 y = 2.0q;
@@ -1769,7 +1769,7 @@ proc check_ppc_float128_hw_available { } {
__float128 w = -1.0q;
__asm__ ("xsaddqp %0,%1,%2" : "+v" (w) : "v" (x), "v" (y));
- return ((z == 3.0q) && (z == w);
+ return ((z != 3.0q) || (z != w);
}
} $options
}
@@ -2603,7 +2603,7 @@ proc check_effective_target_vect_simd_clones { } {
# avx2 clone. Only the right clone for the specified arch will be
# chosen, but still we need to at least be able to assemble
# avx2.
- if { [check_effective_target_avx2] } {
+ if { [check_effective_target_avx512f] } {
set et_vect_simd_clones_saved 1
}
}
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 5206d202bab..a4e044c611b 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -4065,7 +4065,7 @@ estimate_num_insns (gimple *stmt, eni_weights *weights)
return 0;
else if (is_inexpensive_builtin (decl))
return weights->target_builtin_call_cost;
- else if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
+ else if (gimple_call_builtin_p (stmt, BUILT_IN_NORMAL))
{
/* We canonicalize x * x to pow (x, 2.0) with -ffast-math, so
specialize the cheap expansion we do here.
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index e498e5b62b7..2e55b7961d8 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -767,14 +767,16 @@ eliminate_local_variables (edge entry, edge exit)
FOR_EACH_VEC_ELT (body, i, bb)
if (bb != entry_bb && bb != exit_bb)
- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- if (is_gimple_debug (gsi_stmt (gsi)))
- {
- if (gimple_debug_bind_p (gsi_stmt (gsi)))
- has_debug_stmt = true;
- }
- else
- eliminate_local_variables_stmt (entry, &gsi, &decl_address);
+ {
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ if (is_gimple_debug (gsi_stmt (gsi)))
+ {
+ if (gimple_debug_bind_p (gsi_stmt (gsi)))
+ has_debug_stmt = true;
+ }
+ else
+ eliminate_local_variables_stmt (entry, &gsi, &decl_address);
+ }
if (has_debug_stmt)
FOR_EACH_VEC_ELT (body, i, bb)
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 39e3691a48f..f8a6b43219d 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -161,6 +161,85 @@ print_generic_expr (FILE *file, tree t, int flags)
pp_flush (tree_pp);
}
+/* Dump NAME, an IDENTIFIER_POINTER, sanitized so that D<num> sequences
+ in it are replaced with Dxxxx, as long as they are at the start or
+ preceded by $ and at the end or followed by $. See make_fancy_name
+ in tree-sra.c. */
+
+static void
+dump_fancy_name (pretty_printer *pp, tree name)
+{
+ int cnt = 0;
+ int length = IDENTIFIER_LENGTH (name);
+ const char *n = IDENTIFIER_POINTER (name);
+ do
+ {
+ n = strchr (n, 'D');
+ if (n == NULL)
+ break;
+ if (ISDIGIT (n[1])
+ && (n == IDENTIFIER_POINTER (name) || n[-1] == '$'))
+ {
+ int l = 2;
+ while (ISDIGIT (n[l]))
+ l++;
+ if (n[l] == '\0' || n[l] == '$')
+ {
+ cnt++;
+ length += 5 - l;
+ }
+ n += l;
+ }
+ else
+ n++;
+ }
+ while (1);
+ if (cnt == 0)
+ {
+ pp_tree_identifier (pp, name);
+ return;
+ }
+
+ char *str = XNEWVEC (char, length + 1);
+ char *p = str;
+ const char *q;
+ q = n = IDENTIFIER_POINTER (name);
+ do
+ {
+ q = strchr (q, 'D');
+ if (q == NULL)
+ break;
+ if (ISDIGIT (q[1])
+ && (q == IDENTIFIER_POINTER (name) || q[-1] == '$'))
+ {
+ int l = 2;
+ while (ISDIGIT (q[l]))
+ l++;
+ if (q[l] == '\0' || q[l] == '$')
+ {
+ memcpy (p, n, q - n);
+ memcpy (p + (q - n), "Dxxxx", 5);
+ p += (q - n) + 5;
+ n = q + l;
+ }
+ q += l;
+ }
+ else
+ q++;
+ }
+ while (1);
+ memcpy (p, n, IDENTIFIER_LENGTH (name) - (n - IDENTIFIER_POINTER (name)));
+ str[length] = '\0';
+ if (pp_translate_identifiers (pp))
+ {
+ const char *text = identifier_to_locale (str);
+ pp_append_text (pp, text, text + strlen (text));
+ }
+ else
+ pp_append_text (pp, str, str + length);
+ XDELETEVEC (str);
+}
+
/* Dump the name of a _DECL node and its DECL_UID if TDF_UID is set
in FLAGS. */
@@ -171,6 +250,10 @@ dump_decl_name (pretty_printer *pp, tree node, int flags)
{
if ((flags & TDF_ASMNAME) && DECL_ASSEMBLER_NAME_SET_P (node))
pp_tree_identifier (pp, DECL_ASSEMBLER_NAME (node));
+ /* For DECL_NAMELESS names look for embedded uids in the
+ names and sanitize them for TDF_NOUID. */
+ else if ((flags & TDF_NOUID) && DECL_NAMELESS (node))
+ dump_fancy_name (pp, DECL_NAME (node));
else
pp_tree_identifier (pp, DECL_NAME (node));
}
@@ -2593,8 +2676,15 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, int flags,
case SSA_NAME:
if (SSA_NAME_IDENTIFIER (node))
- dump_generic_node (pp, SSA_NAME_IDENTIFIER (node),
- spc, flags, false);
+ {
+ if ((flags & TDF_NOUID)
+ && SSA_NAME_VAR (node)
+ && DECL_NAMELESS (SSA_NAME_VAR (node)))
+ dump_fancy_name (pp, SSA_NAME_IDENTIFIER (node));
+ else
+ dump_generic_node (pp, SSA_NAME_IDENTIFIER (node),
+ spc, flags, false);
+ }
pp_underscore (pp);
pp_decimal_int (pp, SSA_NAME_VERSION (node));
if (SSA_NAME_IS_DEFAULT_DEF (node))
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index fdd5da0589a..88a0eaaa82d 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -1510,6 +1510,9 @@ analyze_evolution_in_loop (gphi *loop_phi_node,
/* When there are multiple back edges of the loop (which in fact never
happens currently, but nevertheless), merge their evolutions. */
evolution_function = chrec_merge (evolution_function, ev_fn);
+
+ if (evolution_function == chrec_dont_know)
+ break;
}
if (dump_file && (dump_flags & TDF_SCEV))
@@ -1687,6 +1690,8 @@ interpret_condition_phi (struct loop *loop, gphi *condition_phi)
(loop, PHI_ARG_DEF (condition_phi, i));
res = chrec_merge (res, branch_chrec);
+ if (res == chrec_dont_know)
+ break;
}
return res;
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index a3fb59ce5a4..6fafe559cf2 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -1673,7 +1673,7 @@ build_ref_for_offset (location_t loc, tree base, HOST_WIDE_INT offset,
}
else
{
- off = build_int_cst (reference_alias_ptr_type (base),
+ off = build_int_cst (reference_alias_ptr_type (prev_base),
base_offset + offset / BITS_PER_UNIT);
base = build_fold_addr_expr (unshare_expr (base));
}
@@ -2132,6 +2132,7 @@ create_access_replacement (struct access *access)
bool fail = false;
DECL_NAME (repl) = get_identifier (pretty_name);
+ DECL_NAMELESS (repl) = 1;
obstack_free (&name_obstack, pretty_name);
/* Get rid of any SSA_NAMEs embedded in debug_expr,
@@ -2743,6 +2744,9 @@ generate_subtree_copies (struct access *access, tree agg,
gimple_stmt_iterator *gsi, bool write,
bool insert_after, location_t loc)
{
+ /* Never write anything into constant pool decls. See PR70602. */
+ if (!write && constant_decl_p (agg))
+ return;
do
{
if (chunk_size && access->offset >= start_offset + chunk_size)
@@ -4701,6 +4705,7 @@ get_replaced_param_substitute (struct ipa_parm_adjustment *adj)
repl = create_tmp_reg (TREE_TYPE (adj->base), "ISR");
DECL_NAME (repl) = get_identifier (pretty_name);
+ DECL_NAMELESS (repl) = 1;
obstack_free (&name_obstack, pretty_name);
adj->new_ssa_base = repl;
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c
index 93e1e2eafe9..4b0134d082c 100644
--- a/gcc/tree-ssa-coalesce.c
+++ b/gcc/tree-ssa-coalesce.c
@@ -906,6 +906,23 @@ build_ssa_conflict_graph (tree_live_info_p liveinfo)
else if (is_gimple_debug (stmt))
continue;
+ /* For stmts with more than one SSA_NAME definition pretend all the
+ SSA_NAME outputs but the first one are live at this point, so
+ that conflicts are added in between all those even when they are
+ actually not really live after the asm, because expansion might
+ copy those into pseudos after the asm and if multiple outputs
+ share the same partition, it might overwrite those that should
+ be live. E.g.
+ asm volatile (".." : "=r" (a) : "=r" (b) : "0" (a), "1" (a));
+ return a;
+ See PR70593. */
+ bool first = true;
+ FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_DEF)
+ if (first)
+ first = false;
+ else
+ live_track_process_use (live, var);
+
FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_DEF)
live_track_process_def (live, var, graph);
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index f64ee0a8114..c40f9e20d22 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -1773,7 +1773,7 @@ simplify_bitfield_ref (gimple_stmt_iterator *gsi)
if (code == VEC_PERM_EXPR)
{
- tree p, m, index, tem;
+ tree p, m, tem;
unsigned nelts;
m = gimple_assign_rhs3 (def_stmt);
if (TREE_CODE (m) != VECTOR_CST)
@@ -1790,9 +1790,8 @@ simplify_bitfield_ref (gimple_stmt_iterator *gsi)
p = gimple_assign_rhs2 (def_stmt);
idx -= nelts;
}
- index = build_int_cst (TREE_TYPE (TREE_TYPE (m)), idx * size);
tem = build3 (BIT_FIELD_REF, TREE_TYPE (op),
- unshare_expr (p), op1, index);
+ unshare_expr (p), op1, bitsize_int (idx * size));
gimple_assign_set_rhs1 (stmt, tem);
fold_stmt (gsi);
update_stmt (gsi_stmt (*gsi));
diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c
index 22b8b78a83f..79fe3a8b2d0 100644
--- a/gcc/tree-ssa-ifcombine.c
+++ b/gcc/tree-ssa-ifcombine.c
@@ -125,7 +125,14 @@ bb_no_side_effects_p (basic_block bb)
if (gimple_has_side_effects (stmt)
|| gimple_uses_undefined_value_p (stmt)
|| gimple_could_trap_p (stmt)
- || gimple_vuse (stmt))
+ || gimple_vuse (stmt)
+ /* const calls don't match any of the above, yet they could
+ still have some side-effects - they could contain
+ gimple_could_trap_p statements, like floating point
+ exceptions or integer division by zero. See PR70586.
+ FIXME: perhaps gimple_has_side_effects or gimple_could_trap_p
+ should handle this. */
+ || is_gimple_call (stmt))
return false;
}
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c
index c76051ac542..15fc43f8126 100644
--- a/gcc/tree-ssa-live.c
+++ b/gcc/tree-ssa-live.c
@@ -393,14 +393,16 @@ remove_unused_scope_block_p (tree scope, bool in_ctor_dtor_block)
in_ctor_dtor_block = true;
unused = false;
}
- /* 2) inside such blocks, the outermost block with BLOCK_ABSTRACT_ORIGIN
+ /* 2) inside such blocks, the outermost block with block_ultimate_origin
being a FUNCTION_DECL. */
- else if (in_ctor_dtor_block
- && BLOCK_ABSTRACT_ORIGIN (scope)
- && TREE_CODE (BLOCK_ABSTRACT_ORIGIN (scope)) == FUNCTION_DECL)
+ else if (in_ctor_dtor_block)
{
- in_ctor_dtor_block = false;
- unused = false;
+ tree fn = block_ultimate_origin (scope);
+ if (fn && TREE_CODE (fn) == FUNCTION_DECL)
+ {
+ in_ctor_dtor_block = false;
+ unused = false;
+ }
}
for (t = &BLOCK_VARS (scope); *t; t = next)
@@ -855,7 +857,9 @@ remove_unused_locals (void)
cfun->local_decls->truncate (dstidx);
}
- remove_unused_scope_block_p (DECL_INITIAL (current_function_decl), false);
+ remove_unused_scope_block_p (DECL_INITIAL (current_function_decl),
+ polymorphic_ctor_dtor_p (current_function_decl,
+ true) != NULL_TREE);
clear_unused_block_pointer ();
BITMAP_FREE (usedvars);
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 7be4f16fbac..a016e9f64c4 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -121,11 +121,7 @@ avg_loop_niter (struct loop *loop)
{
HOST_WIDE_INT niter = estimated_stmt_executions_int (loop);
if (niter == -1)
- {
- niter = max_stmt_executions_int (loop);
- if (niter == -1 || niter > AVG_LOOP_NITER (loop))
- return AVG_LOOP_NITER (loop);
- }
+ return AVG_LOOP_NITER (loop);
return niter;
}
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index c93e563e51c..81689fc1aa4 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -3115,6 +3115,7 @@ idx_infer_loop_bounds (tree base, tree *idx, void *dta)
tree low, high, type, next;
bool sign, upper = true, at_end = false;
struct loop *loop = data->loop;
+ bool reliable = true;
if (TREE_CODE (base) != ARRAY_REF)
return true;
@@ -3186,14 +3187,14 @@ idx_infer_loop_bounds (tree base, tree *idx, void *dta)
&& tree_int_cst_compare (next, high) <= 0)
return true;
- /* If access is not executed on every iteration, we must ensure that overlow
- may not make the access valid later. */
+ /* If access is not executed on every iteration, we must ensure that overlow may
+ not make the access valid later. */
if (!dominated_by_p (CDI_DOMINATORS, loop->latch, gimple_bb (data->stmt))
&& scev_probably_wraps_p (initial_condition_in_loop_num (ev, loop->num),
step, data->stmt, loop, true))
- upper = false;
+ reliable = false;
- record_nonwrapping_iv (loop, init, step, data->stmt, low, high, false, upper);
+ record_nonwrapping_iv (loop, init, step, data->stmt, low, high, reliable, upper);
return true;
}
diff --git a/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c
index 77acd66e997..dd6fd01256a 100644
--- a/gcc/tree-ssa-loop-unswitch.c
+++ b/gcc/tree-ssa-loop-unswitch.c
@@ -223,8 +223,6 @@ tree_unswitch_single_loop (struct loop *loop, int num)
/* If the loop is not expected to iterate, there is no need
for unswitching. */
iterations = estimated_loop_iterations_int (loop);
- if (iterations < 0)
- iterations = max_loop_iterations_int (loop);
if (iterations >= 0 && iterations <= 1)
{
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -441,8 +439,6 @@ tree_unswitch_outer_loop (struct loop *loop)
/* If the loop is not expected to iterate, there is no need
for unswitching. */
iterations = estimated_loop_iterations_int (loop);
- if (iterations < 0)
- iterations = max_loop_iterations_int (loop);
if (iterations >= 0 && iterations <= 1)
{
if (dump_file && (dump_flags & TDF_DETAILS))
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index 4626022b8b8..735b7c67c31 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -3827,7 +3827,7 @@ pass_optimize_widening_mul::execute (function *fun)
{
tree fndecl = gimple_call_fndecl (stmt);
if (fndecl
- && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL)
+ && gimple_call_builtin_p (stmt, BUILT_IN_NORMAL))
{
switch (DECL_FUNCTION_CODE (fndecl))
{
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index b2d63acf930..f1a3130cb1c 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -2062,11 +2062,6 @@ prune_clobbered_mems (bitmap_set_t set, basic_block block)
static sbitmap has_abnormal_preds;
-/* List of blocks that may have changed during ANTIC computation and
- thus need to be iterated over. */
-
-static sbitmap changed_blocks;
-
/* Compute the ANTIC set for BLOCK.
If succs(BLOCK) > 1 then
@@ -2125,6 +2120,16 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
first = e->dest;
else if (BB_VISITED (e->dest))
worklist.quick_push (e->dest);
+ else
+ {
+ /* Unvisited successors get their ANTIC_IN replaced by the
+ maximal set to arrive at a maximum ANTIC_IN solution.
+ We can ignore them in the intersection operation and thus
+ need not explicitely represent that maximum solution. */
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "ANTIC_IN is MAX on %d->%d\n",
+ e->src->index, e->dest->index);
+ }
}
/* Of multiple successors we have to have visited one already
@@ -2167,14 +2172,7 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
clean (ANTIC_IN (block));
if (!bitmap_set_equal (old, ANTIC_IN (block)))
- {
- changed = true;
- bitmap_set_bit (changed_blocks, block->index);
- FOR_EACH_EDGE (e, ei, block->preds)
- bitmap_set_bit (changed_blocks, e->src->index);
- }
- else
- bitmap_clear_bit (changed_blocks, block->index);
+ changed = true;
maybe_dump_sets:
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -2182,6 +2180,8 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
if (ANTIC_OUT)
print_bitmap_set (dump_file, ANTIC_OUT, "ANTIC_OUT", block->index);
+ if (changed)
+ fprintf (dump_file, "[changed] ");
print_bitmap_set (dump_file, ANTIC_IN (block), "ANTIC_IN",
block->index);
@@ -2313,14 +2313,7 @@ compute_partial_antic_aux (basic_block block,
dependent_clean (PA_IN (block), ANTIC_IN (block));
if (!bitmap_set_equal (old_PA_IN, PA_IN (block)))
- {
- changed = true;
- bitmap_set_bit (changed_blocks, block->index);
- FOR_EACH_EDGE (e, ei, block->preds)
- bitmap_set_bit (changed_blocks, e->src->index);
- }
- else
- bitmap_clear_bit (changed_blocks, block->index);
+ changed = true;
maybe_dump_sets:
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -2346,6 +2339,8 @@ compute_antic (void)
int num_iterations = 0;
basic_block block;
int i;
+ edge_iterator ei;
+ edge e;
/* If any predecessor edges are abnormal, we punt, so antic_in is empty.
We pre-build the map of blocks with incoming abnormal edges here. */
@@ -2354,18 +2349,12 @@ compute_antic (void)
FOR_ALL_BB_FN (block, cfun)
{
- edge_iterator ei;
- edge e;
-
FOR_EACH_EDGE (e, ei, block->preds)
- {
- e->flags &= ~EDGE_DFS_BACK;
- if (e->flags & EDGE_ABNORMAL)
- {
- bitmap_set_bit (has_abnormal_preds, block->index);
- break;
- }
- }
+ if (e->flags & EDGE_ABNORMAL)
+ {
+ bitmap_set_bit (has_abnormal_preds, block->index);
+ break;
+ }
BB_VISITED (block) = 0;
@@ -2377,8 +2366,8 @@ compute_antic (void)
/* At the exit block we anticipate nothing. */
BB_VISITED (EXIT_BLOCK_PTR_FOR_FN (cfun)) = 1;
- changed_blocks = sbitmap_alloc (last_basic_block_for_fn (cfun) + 1);
- bitmap_ones (changed_blocks);
+ sbitmap worklist = sbitmap_alloc (last_basic_block_for_fn (cfun) + 1);
+ bitmap_ones (worklist);
while (changed)
{
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -2391,12 +2380,18 @@ compute_antic (void)
changed = false;
for (i = postorder_num - 1; i >= 0; i--)
{
- if (bitmap_bit_p (changed_blocks, postorder[i]))
+ if (bitmap_bit_p (worklist, postorder[i]))
{
basic_block block = BASIC_BLOCK_FOR_FN (cfun, postorder[i]);
- changed |= compute_antic_aux (block,
- bitmap_bit_p (has_abnormal_preds,
- block->index));
+ bitmap_clear_bit (worklist, block->index);
+ if (compute_antic_aux (block,
+ bitmap_bit_p (has_abnormal_preds,
+ block->index)))
+ {
+ FOR_EACH_EDGE (e, ei, block->preds)
+ bitmap_set_bit (worklist, e->src->index);
+ changed = true;
+ }
}
}
/* Theoretically possible, but *highly* unlikely. */
@@ -2408,8 +2403,7 @@ compute_antic (void)
if (do_partial_partial)
{
- bitmap_ones (changed_blocks);
- mark_dfs_back_edges ();
+ bitmap_ones (worklist);
num_iterations = 0;
changed = true;
while (changed)
@@ -2420,13 +2414,18 @@ compute_antic (void)
changed = false;
for (i = postorder_num - 1 ; i >= 0; i--)
{
- if (bitmap_bit_p (changed_blocks, postorder[i]))
+ if (bitmap_bit_p (worklist, postorder[i]))
{
basic_block block = BASIC_BLOCK_FOR_FN (cfun, postorder[i]);
- changed
- |= compute_partial_antic_aux (block,
- bitmap_bit_p (has_abnormal_preds,
- block->index));
+ bitmap_clear_bit (worklist, block->index);
+ if (compute_partial_antic_aux (block,
+ bitmap_bit_p (has_abnormal_preds,
+ block->index)))
+ {
+ FOR_EACH_EDGE (e, ei, block->preds)
+ bitmap_set_bit (worklist, e->src->index);
+ changed = true;
+ }
}
}
/* Theoretically possible, but *highly* unlikely. */
@@ -2436,7 +2435,7 @@ compute_antic (void)
num_iterations);
}
sbitmap_free (has_abnormal_preds);
- sbitmap_free (changed_blocks);
+ sbitmap_free (worklist);
}
@@ -4695,12 +4694,14 @@ init_pre (void)
connect_infinite_loops_to_exit ();
memset (&pre_stats, 0, sizeof (pre_stats));
+ /* For ANTIC computation we need a postorder that also guarantees that
+ a block with a single successor is visited after its successor.
+ RPO on the inverted CFG has this property. */
postorder = XNEWVEC (int, n_basic_blocks_for_fn (cfun));
postorder_num = inverted_post_order_compute (postorder);
alloc_aux_for_blocks (sizeof (struct bb_bitmap_sets));
- calculate_dominance_info (CDI_POST_DOMINATORS);
calculate_dominance_info (CDI_DOMINATORS);
bitmap_obstack_initialize (&grand_bitmap_obstack);
@@ -4734,8 +4735,6 @@ fini_pre ()
name_to_id.release ();
free_aux_for_blocks ();
-
- free_dominance_info (CDI_POST_DOMINATORS);
}
namespace {
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index f977ee9351b..d813b862592 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -2063,8 +2063,6 @@ start_over:
estimated_niter
= estimated_stmt_executions_int (LOOP_VINFO_LOOP (loop_vinfo));
- if (estimated_niter != -1)
- estimated_niter = max_niter;
if (estimated_niter != -1
&& ((unsigned HOST_WIDE_INT) estimated_niter
<= MAX (th, (unsigned)min_profitable_estimate)))
diff --git a/gcc/tree.c b/gcc/tree.c
index ed28429b1e1..c64d7204acb 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -13584,7 +13584,9 @@ verify_type (const_tree t)
debug_tree (ct);
error_found = true;
}
- if (TYPE_MAIN_VARIANT (t) == t && ct && TYPE_MAIN_VARIANT (ct) != ct)
+ /* FIXME: this is violated by the C++ FE as discussed in PR70029, when
+ FUNCTION_*_QUALIFIED flags are set. */
+ if (0 && TYPE_MAIN_VARIANT (t) == t && ct && TYPE_MAIN_VARIANT (ct) != ct)
{
error ("TYPE_CANONICAL of main variant is not main variant");
debug_tree (ct);
diff --git a/gcc/tree.def b/gcc/tree.def
index 2355a7c0fe3..44130d7c77f 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -870,10 +870,10 @@ DEFTREECODE (POSTINCREMENT_EXPR, "postincrement_expr", tcc_expression, 2)
/* Used to implement `va_arg'. */
DEFTREECODE (VA_ARG_EXPR, "va_arg_expr", tcc_expression, 1)
-/* Evaluate operand 1. If and only if an exception is thrown during
- the evaluation of operand 1, evaluate operand 2.
+/* Evaluate operand 0. If and only if an exception is thrown during
+ the evaluation of operand 0, evaluate operand 1.
- This differs from TRY_FINALLY_EXPR in that operand 2 is not evaluated
+ This differs from TRY_FINALLY_EXPR in that operand 1 is not evaluated
on a normal or jump exit, only on an exception. */
DEFTREECODE (TRY_CATCH_EXPR, "try_catch_expr", tcc_statement, 2)
diff --git a/gcc/tree.h b/gcc/tree.h
index 544a6a163df..87e756390f6 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1430,6 +1430,10 @@ extern void protected_set_expr_location (tree, location_t);
#define OMP_CLAUSE_PRIVATE_TASKLOOP_IV(NODE) \
TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE))
+/* True on a FIRSTPRIVATE clause if it has been added implicitly. */
+#define OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT(NODE) \
+ (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_FIRSTPRIVATE)->base.public_flag)
+
/* True on a LASTPRIVATE clause if a FIRSTPRIVATE clause for the same
decl is present in the chain. */
#define OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE(NODE) \
@@ -1532,6 +1536,9 @@ extern void protected_set_expr_location (tree, location_t);
treatment if OMP_CLAUSE_SIZE is zero. */
#define OMP_CLAUSE_MAP_MAYBE_ZERO_LENGTH_ARRAY_SECTION(NODE) \
TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP))
+/* Nonzero if this map clause is for an ACC parallel reduction variable. */
+#define OMP_CLAUSE_MAP_IN_REDUCTION(NODE) \
+ TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP))
#define OMP_CLAUSE_PROC_BIND_KIND(NODE) \
(OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PROC_BIND)->omp_clause.subcode.proc_bind_kind)
diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog
index bdcd968f308..18aa7021d66 100644
--- a/gnattools/ChangeLog
+++ b/gnattools/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-04 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR bootstrap/70173
+ * Makefile.in (distclean): Also delete config.cache .
+
2015-12-06 Eric Botcazou <ebotcazou@adacore.com>
PR ada/50048
diff --git a/gnattools/Makefile.in b/gnattools/Makefile.in
index 0c889eeec7b..f949ca9b34b 100644
--- a/gnattools/Makefile.in
+++ b/gnattools/Makefile.in
@@ -309,7 +309,7 @@ mostlyclean:
clean:
distclean:
- $(RM) Makefile config.status config.log
+ $(RM) Makefile config.status config.log config.cache
maintainer-clean:
diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog
index 1efcb68e04b..a65af09c6e6 100644
--- a/libcc1/ChangeLog
+++ b/libcc1/ChangeLog
@@ -1,3 +1,10 @@
+2016-04-11 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR bootstrap/70173
+ * Makefile.am (MOSTLYCLEANFILES): New, add compiler-name.h .
+ (compiler-name.h): Shorten recipe so that it fits the line.
+ * Makefile.in: Regenerate.
+
2016-03-14 Andreas Schwab <schwab@suse.de>
* configure.ac (CONFIG_STATUS_DEPENDENCIES): Substitute.
diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
index 7a274b3470c..b40820b2189 100644
--- a/libcc1/Makefile.am
+++ b/libcc1/Makefile.am
@@ -44,11 +44,12 @@ cc1lib_LTLIBRARIES = libcc1.la
endif
BUILT_SOURCES = compiler-name.h
+MOSTLYCLEANFILES = compiler-name.h
# Put this in a header so we don't run sed for each compilation. This
# is also simpler to debug as one can easily see the constant.
compiler-name.h: Makefile
- echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > compiler-name.h
+ echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > $@
shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \
diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in
index 9e003682363..79d39d3f46a 100644
--- a/libcc1/Makefile.in
+++ b/libcc1/Makefile.in
@@ -296,6 +296,7 @@ cc1libdir = $(libdir)/$(libsuffix)
@ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la
@ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la
BUILT_SOURCES = compiler-name.h
+MOSTLYCLEANFILES = compiler-name.h
shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \
marshall.cc marshall.hh rpc.hh status.hh
@@ -563,6 +564,7 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
@@ -672,7 +674,7 @@ override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS))
# Put this in a header so we don't run sed for each compilation. This
# is also simpler to debug as one can easily see the constant.
compiler-name.h: Makefile
- echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > compiler-name.h
+ echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 49b6e71abbb..acb8d75dccf 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,20 @@
+2016-04-13 Bernd Schmidt <bschmidt@redhat.com>
+
+ Patch from Roger Orr <rogero@howzatt.demon.co.uk>
+ PR preprocessor/69650
+ * directives.c (do_linemarker): Reread map after calling
+ cpp_get_token.
+
+2016-04-06 Richard Henderson <rth@redhat.com>
+
+ PR preprocessor/61817
+ PR preprocessor/69391
+ * internal.h (_cpp_builtin_macro_text): Update decl.
+ * macro.c (_cpp_builtin_macro_text): Accept location for __LINE__.
+ (builtin_macro): Accept a second location for __LINE__.
+ (enter_macro_context): Compute both virtual and real expansion
+ locations for the macro.
+
2016-03-25 Bernd Schmidt <bschmidt@redhat.com>
PR lto/69650
diff --git a/libcpp/directives.c b/libcpp/directives.c
index 6aa6bd1f86a..1617ff61c3c 100644
--- a/libcpp/directives.c
+++ b/libcpp/directives.c
@@ -1048,6 +1048,9 @@ do_linemarker (cpp_reader *pfile)
if (reason == LC_LEAVE)
{
+ /* Reread map since cpp_get_token can invalidate it with a
+ reallocation. */
+ map = LINEMAPS_LAST_ORDINARY_MAP (line_table);
const line_map_ordinary *from;
if (MAIN_FILE_P (map)
|| (new_file
@@ -1055,7 +1058,8 @@ do_linemarker (cpp_reader *pfile)
&& filename_cmp (ORDINARY_MAP_FILE_NAME (from), new_file) != 0))
{
cpp_warning (pfile, CPP_W_NONE,
- "file \"%s\" linemarker ignored due to incorrect nesting", new_file);
+ "file \"%s\" linemarker ignored due to "
+ "incorrect nesting", new_file);
return;
}
}
diff --git a/libcpp/internal.h b/libcpp/internal.h
index bafd4803865..9ce870738cc 100644
--- a/libcpp/internal.h
+++ b/libcpp/internal.h
@@ -626,7 +626,8 @@ extern bool _cpp_save_parameter (cpp_reader *, cpp_macro *, cpp_hashnode *,
extern bool _cpp_arguments_ok (cpp_reader *, cpp_macro *, const cpp_hashnode *,
unsigned int);
extern const unsigned char *_cpp_builtin_macro_text (cpp_reader *,
- cpp_hashnode *);
+ cpp_hashnode *,
+ source_location = 0);
extern int _cpp_warn_if_unused_macro (cpp_reader *, cpp_hashnode *, void *);
extern void _cpp_push_token_context (cpp_reader *, cpp_hashnode *,
const cpp_token *, unsigned int);
diff --git a/libcpp/macro.c b/libcpp/macro.c
index 759fbe7f028..c2515534504 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -93,7 +93,8 @@ struct macro_arg_saved_data {
static int enter_macro_context (cpp_reader *, cpp_hashnode *,
const cpp_token *, source_location);
-static int builtin_macro (cpp_reader *, cpp_hashnode *, source_location);
+static int builtin_macro (cpp_reader *, cpp_hashnode *,
+ source_location, source_location);
static void push_ptoken_context (cpp_reader *, cpp_hashnode *, _cpp_buff *,
const cpp_token **, unsigned int);
static void push_extended_tokens_context (cpp_reader *, cpp_hashnode *,
@@ -229,7 +230,8 @@ static const char * const monthnames[] =
/* Helper function for builtin_macro. Returns the text generated by
a builtin macro. */
const uchar *
-_cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
+_cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node,
+ source_location loc)
{
const uchar *result = NULL;
linenum_type number = 1;
@@ -319,11 +321,14 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
case BT_SPECLINE:
/* If __LINE__ is embedded in a macro, it must expand to the
line of the macro's invocation, not its definition.
- Otherwise things like assert() will not work properly. */
- number = linemap_get_expansion_line (pfile->line_table,
- CPP_OPTION (pfile, traditional)
- ? pfile->line_table->highest_line
- : pfile->cur_token[-1].src_loc);
+ Otherwise things like assert() will not work properly.
+ See WG14 N1911, WG21 N4220 sec 6.5, and PR 61861. */
+ if (CPP_OPTION (pfile, traditional))
+ loc = pfile->line_table->highest_line;
+ else
+ loc = linemap_resolve_location (pfile->line_table, loc,
+ LRK_MACRO_EXPANSION_POINT, NULL);
+ number = linemap_get_expansion_line (pfile->line_table, loc);
break;
/* __STDC__ has the value 1 under normal circumstances.
@@ -417,7 +422,8 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
return the token to the caller. LOC is the location of the expansion
point of the macro. */
static int
-builtin_macro (cpp_reader *pfile, cpp_hashnode *node, source_location loc)
+builtin_macro (cpp_reader *pfile, cpp_hashnode *node,
+ source_location loc, source_location expand_loc)
{
const uchar *buf;
size_t len;
@@ -433,7 +439,7 @@ builtin_macro (cpp_reader *pfile, cpp_hashnode *node, source_location loc)
return _cpp_do__Pragma (pfile, loc);
}
- buf = _cpp_builtin_macro_text (pfile, node);
+ buf = _cpp_builtin_macro_text (pfile, node, expand_loc);
len = ustrlen (buf);
nbuf = (char *) alloca (len + 1);
memcpy (nbuf, buf, len);
@@ -456,8 +462,7 @@ builtin_macro (cpp_reader *pfile, cpp_hashnode *node, source_location loc)
source_location *virt_locs = NULL;
_cpp_buff *token_buf = tokens_buff_new (pfile, 1, &virt_locs);
const line_map_macro * map =
- linemap_enter_macro (pfile->line_table, node,
- token->src_loc, 1);
+ linemap_enter_macro (pfile->line_table, node, loc, 1);
tokens_buff_add_token (token_buf, virt_locs, token,
pfile->line_table->builtin_location,
pfile->line_table->builtin_location,
@@ -1231,22 +1236,29 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node,
pfile->about_to_expand_macro_p = false;
/* Handle built-in macros and the _Pragma operator. */
{
- source_location loc;
+ source_location loc, expand_loc;
+
if (/* The top-level macro invocation that triggered the expansion
we are looking at is with a standard macro ...*/
!(pfile->top_most_macro_node->flags & NODE_BUILTIN)
/* ... and it's a function-like macro invocation. */
&& pfile->top_most_macro_node->value.macro->fun_like)
- /* Then the location of the end of the macro invocation is the
- location of the closing parenthesis. */
- loc = pfile->cur_token[-1].src_loc;
+ {
+ /* Then the location of the end of the macro invocation is the
+ location of the closing parenthesis. */
+ loc = pfile->cur_token[-1].src_loc;
+ expand_loc = loc;
+ }
else
- /* Otherwise, the location of the end of the macro invocation is
- the location of the expansion point of that top-level macro
- invocation. */
- loc = location;
+ {
+ /* Otherwise, the location of the end of the macro invocation is
+ the location of the expansion point of that top-level macro
+ invocation. */
+ loc = location;
+ expand_loc = pfile->invocation_location;
+ }
- return builtin_macro (pfile, node, loc);
+ return builtin_macro (pfile, node, loc, expand_loc);
}
}
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index d5996646b54..4343e49a6c4 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2016-04-08 Joseph Myers <joseph@codesourcery.com>
+
+ * cpplib.pot: Regenerate.
+
2016-03-30 Joseph Myers <joseph@codesourcery.com>
* da.po: Update.
diff --git a/libcpp/po/cpplib.pot b/libcpp/po/cpplib.pot
index ebf8f5afe78..56b4b3bbf0a 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: 2016-01-31 15:50+0000\n"
+"POT-Creation-Date: 2016-04-08 20:55+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"
@@ -89,7 +89,7 @@ msgid "universal character %.*s is not valid at the start of an identifier"
msgstr ""
#: charset.c:1110
-#: charset.c:1684
+#: charset.c:1691
msgid "converting UCN to source character set"
msgstr ""
@@ -149,7 +149,7 @@ msgstr ""
msgid "empty character constant"
msgstr ""
-#: charset.c:1731
+#: charset.c:1738
#, c-format
msgid "failure to convert %s to %s"
msgstr ""
@@ -277,143 +277,148 @@ msgstr ""
msgid "\"%s\" after # is not a positive integer"
msgstr ""
-#: directives.c:1103
-#: directives.c:1105
-#: directives.c:1107
-#: directives.c:1693
+#: directives.c:1058
+#, c-format
+msgid "file \"%s\" linemarker ignored due to incorrect nesting"
+msgstr ""
+
+#: directives.c:1116
+#: directives.c:1118
+#: directives.c:1120
+#: directives.c:1706
#, c-format
msgid "%s"
msgstr ""
-#: directives.c:1131
+#: directives.c:1144
#, c-format
msgid "invalid #%s directive"
msgstr ""
-#: directives.c:1194
+#: directives.c:1207
#, c-format
msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
msgstr ""
-#: directives.c:1203
+#: directives.c:1216
#, c-format
msgid "registering pragma \"%s\" with name expansion and no namespace"
msgstr ""
-#: directives.c:1221
+#: directives.c:1234
#, c-format
msgid "registering \"%s\" as both a pragma and a pragma namespace"
msgstr ""
-#: directives.c:1224
+#: directives.c:1237
#, c-format
msgid "#pragma %s %s is already registered"
msgstr ""
-#: directives.c:1227
+#: directives.c:1240
#, c-format
msgid "#pragma %s is already registered"
msgstr ""
-#: directives.c:1257
+#: directives.c:1270
msgid "registering pragma with NULL handler"
msgstr ""
-#: directives.c:1474
+#: directives.c:1487
msgid "#pragma once in main file"
msgstr ""
-#: directives.c:1497
+#: directives.c:1510
msgid "invalid #pragma push_macro directive"
msgstr ""
-#: directives.c:1552
+#: directives.c:1565
msgid "invalid #pragma pop_macro directive"
msgstr ""
-#: directives.c:1607
+#: directives.c:1620
msgid "invalid #pragma GCC poison directive"
msgstr ""
-#: directives.c:1616
+#: directives.c:1629
#, c-format
msgid "poisoning existing macro \"%s\""
msgstr ""
-#: directives.c:1635
+#: directives.c:1648
msgid "#pragma system_header ignored outside include file"
msgstr ""
-#: directives.c:1660
+#: directives.c:1673
#, c-format
msgid "cannot find source file %s"
msgstr ""
-#: directives.c:1664
+#: directives.c:1677
#, c-format
msgid "current file is older than %s"
msgstr ""
-#: directives.c:1688
+#: directives.c:1701
#, c-format
msgid "invalid \"#pragma GCC %s\" directive"
msgstr ""
-#: directives.c:1889
+#: directives.c:1902
msgid "_Pragma takes a parenthesized string literal"
msgstr ""
-#: directives.c:2010
+#: directives.c:2023
msgid "#else without #if"
msgstr ""
-#: directives.c:2015
+#: directives.c:2028
msgid "#else after #else"
msgstr ""
-#: directives.c:2017
-#: directives.c:2050
+#: directives.c:2030
+#: directives.c:2063
msgid "the conditional began here"
msgstr ""
-#: directives.c:2043
+#: directives.c:2056
msgid "#elif without #if"
msgstr ""
-#: directives.c:2048
+#: directives.c:2061
msgid "#elif after #else"
msgstr ""
-#: directives.c:2079
+#: directives.c:2092
msgid "#endif without #if"
msgstr ""
-#: directives.c:2159
+#: directives.c:2172
msgid "missing '(' after predicate"
msgstr ""
-#: directives.c:2174
+#: directives.c:2187
msgid "missing ')' to complete answer"
msgstr ""
-#: directives.c:2194
+#: directives.c:2207
msgid "predicate's answer is empty"
msgstr ""
-#: directives.c:2221
+#: directives.c:2234
msgid "assertion without predicate"
msgstr ""
-#: directives.c:2224
+#: directives.c:2237
msgid "predicate must be an identifier"
msgstr ""
-#: directives.c:2310
+#: directives.c:2323
#, c-format
msgid "\"%s\" re-asserted"
msgstr ""
-#: directives.c:2602
+#: directives.c:2615
#, c-format
msgid "unterminated #%s"
msgstr ""
@@ -424,13 +429,13 @@ msgstr ""
msgid "unterminated comment"
msgstr ""
-#: errors.c:233
-#: errors.c:246
+#: errors.c:234
+#: errors.c:247
#, c-format
msgid "%s: %s"
msgstr ""
-#: errors.c:244
+#: errors.c:245
msgid "stdout"
msgstr ""
@@ -444,7 +449,7 @@ msgid "invalid prefix \"0b\" for floating constant"
msgstr ""
#: expr.c:555
-msgid "use of C++11 hexadecimal floating constant"
+msgid "use of C++1z hexadecimal floating constant"
msgstr ""
#: expr.c:558
@@ -805,163 +810,163 @@ msgstr ""
msgid "unspellable token %s"
msgstr ""
-#: macro.c:202
+#: macro.c:203
#, c-format
msgid "macro \"%s\" is not used"
msgstr ""
-#: macro.c:240
-#: macro.c:472
+#: macro.c:242
+#: macro.c:477
#, c-format
msgid "invalid built-in macro \"%s\""
msgstr ""
-#: macro.c:247
-#: macro.c:344
+#: macro.c:249
+#: macro.c:349
#, c-format
msgid "macro \"%s\" might prevent reproducible builds"
msgstr ""
-#: macro.c:278
+#: macro.c:280
msgid "could not determine file timestamp"
msgstr ""
-#: macro.c:379
+#: macro.c:384
msgid "could not determine date and time"
msgstr ""
-#: macro.c:395
+#: macro.c:400
msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
msgstr ""
-#: macro.c:583
+#: macro.c:588
msgid "invalid string literal, ignoring final '\\'"
msgstr ""
-#: macro.c:645
+#: macro.c:650
#, c-format
msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
msgstr ""
-#: macro.c:769
+#: macro.c:774
msgid ""
"ISO C++11 requires at least one argument for the \"...\" in a variadic macro"
msgstr ""
-#: macro.c:773
+#: macro.c:778
msgid ""
"ISO C99 requires at least one argument for the \"...\" in a variadic macro"
msgstr ""
-#: macro.c:780
+#: macro.c:785
#, c-format
msgid "macro \"%s\" requires %u arguments, but only %u given"
msgstr ""
-#: macro.c:785
+#: macro.c:790
#, c-format
msgid "macro \"%s\" passed %u arguments, but takes just %u"
msgstr ""
-#: macro.c:979
+#: macro.c:984
#: traditional.c:819
#, c-format
msgid "unterminated argument list invoking macro \"%s\""
msgstr ""
-#: macro.c:1130
+#: macro.c:1135
#, c-format
msgid "function-like macro \"%s\" must be used with arguments in traditional C"
msgstr ""
-#: macro.c:1813
+#: macro.c:1825
#, c-format
msgid ""
"invoking macro %s argument %d: empty macro arguments are undefined in ISO C+"
"+98"
msgstr ""
-#: macro.c:1821
-#: macro.c:1830
+#: macro.c:1833
+#: macro.c:1842
#, c-format
msgid ""
"invoking macro %s argument %d: empty macro arguments are undefined in ISO C90"
msgstr ""
-#: macro.c:2794
+#: macro.c:2806
#, c-format
msgid "duplicate macro parameter \"%s\""
msgstr ""
-#: macro.c:2843
+#: macro.c:2855
#, c-format
msgid "\"%s\" may not appear in macro parameter list"
msgstr ""
-#: macro.c:2851
+#: macro.c:2863
msgid "macro parameters must be comma-separated"
msgstr ""
-#: macro.c:2869
+#: macro.c:2881
msgid "parameter name missing"
msgstr ""
-#: macro.c:2890
+#: macro.c:2902
msgid "anonymous variadic macros were introduced in C++11"
msgstr ""
-#: macro.c:2894
-#: macro.c:2899
+#: macro.c:2906
+#: macro.c:2911
msgid "anonymous variadic macros were introduced in C99"
msgstr ""
-#: macro.c:2906
+#: macro.c:2918
msgid "ISO C++ does not permit named variadic macros"
msgstr ""
-#: macro.c:2909
+#: macro.c:2921
msgid "ISO C does not permit named variadic macros"
msgstr ""
-#: macro.c:2919
+#: macro.c:2931
msgid "missing ')' in macro parameter list"
msgstr ""
-#: macro.c:2970
+#: macro.c:2982
msgid "'##' cannot appear at either end of a macro expansion"
msgstr ""
-#: macro.c:3007
+#: macro.c:3019
msgid "ISO C++11 requires whitespace after the macro name"
msgstr ""
-#: macro.c:3010
+#: macro.c:3022
msgid "ISO C99 requires whitespace after the macro name"
msgstr ""
-#: macro.c:3035
+#: macro.c:3047
msgid "missing whitespace after the macro name"
msgstr ""
-#: macro.c:3069
+#: macro.c:3081
msgid "'#' is not followed by a macro parameter"
msgstr ""
-#: macro.c:3230
+#: macro.c:3242
#, c-format
msgid "\"%s\" redefined"
msgstr ""
-#: macro.c:3235
+#: macro.c:3247
msgid "this is the location of the previous definition"
msgstr ""
-#: macro.c:3296
+#: macro.c:3308
#, c-format
msgid "macro argument \"%s\" would be stringified in traditional C"
msgstr ""
-#: macro.c:3323
+#: macro.c:3344
#, c-format
msgid "invalid hash type %d in cpp_macro_definition"
msgstr ""
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 7c761b0351d..2a138628326 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,17 @@
+2016-04-11 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/70381
+ * configure.ac (powerpc*-*-linux*): Rework tests to build
+ __float128 emulation routines to not depend on using #pragma GCC
+ target to enable -mfloat128.
+ * configure: Regnerate.
+
+2016-04-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/67172
+ * libgcc2.c (L__main): Undefine __LIBGCC_EH_FRAME_SECTION_NAME__ if
+ __MINGW32__ is defined.
+
2016-03-28 James Bowman <james.bowman@ftdichip.com>
* libgcc/config/ft32/lib1funcs.S (*divsi3, *modsi3): New.
diff --git a/libgcc/configure b/libgcc/configure
index f3f360512c4..e7d6c75a6f7 100644
--- a/libgcc/configure
+++ b/libgcc/configure
@@ -4767,16 +4767,20 @@ esac
esac
case ${host} in
+# At present, we cannot turn -mfloat128 on via #pragma GCC target,
+# so just check if we have VSX (ISA 2.06) support to build the
+# software libraries, and whether the assembler can handle xsaddqp
+# for hardware support.
powerpc*-*-linux*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the PowerPC compiler can do __float128" >&5
-$as_echo_n "checking whether the PowerPC compiler can do __float128... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 2.06 to build __float128 libraries" >&5
+$as_echo_n "checking for PowerPC ISA 2.06 to build __float128 libraries... " >&6; }
if test "${libgcc_cv_powerpc_float128+set}" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#pragma GCC target ("vsx,float128")
- __float128 add (__float128 *a) { return *a + *(a+1); }
+#pragma GCC target ("vsx")
+ vector double dadd (vector double a, vector double b) { return a + b; }
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
libgcc_cv_powerpc_float128=yes
@@ -4788,21 +4792,21 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128" >&5
$as_echo "$libgcc_cv_powerpc_float128" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the PowerPC compiler can do hardware __float128" >&5
-$as_echo_n "checking whether the PowerPC compiler can do hardware __float128... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 3.0 to build hardware __float128 libraries" >&5
+$as_echo_n "checking for PowerPC ISA 3.0 to build hardware __float128 libraries... " >&6; }
if test "${libgcc_cv_powerpc_float128_hw+set}" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#pragma GCC target ("cpu=power9,float128,float128-hardware")
+#pragma GCC target ("vsx,power9-vector")
#include <sys/auxv.h>
#ifndef AT_PLATFORM
#error "AT_PLATFORM is not defined"
#endif
- __float128 add (__float128 a, __float128 b)
+ vector unsigned char (vector unsigned char a, vector unsigned char b)
{
- __float128 ret;
+ vector unsigned char ret;
__asm__ ("xsaddqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b));
return ret;
}
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
index 897259e62bc..269997f23e2 100644
--- a/libgcc/configure.ac
+++ b/libgcc/configure.ac
@@ -374,26 +374,30 @@ esac
esac
case ${host} in
+# At present, we cannot turn -mfloat128 on via #pragma GCC target,
+# so just check if we have VSX (ISA 2.06) support to build the
+# software libraries, and whether the assembler can handle xsaddqp
+# for hardware support.
powerpc*-*-linux*)
- AC_CACHE_CHECK([whether the PowerPC compiler can do __float128],
+ AC_CACHE_CHECK([for PowerPC ISA 2.06 to build __float128 libraries],
[libgcc_cv_powerpc_float128],
[AC_COMPILE_IFELSE(
- [#pragma GCC target ("vsx,float128")
- __float128 add (__float128 *a) { return *a + *(a+1); }],
+ [#pragma GCC target ("vsx")
+ vector double dadd (vector double a, vector double b) { return a + b; }],
[libgcc_cv_powerpc_float128=yes],
[libgcc_cv_powerpc_float128=no])])
- AC_CACHE_CHECK([whether the PowerPC compiler can do hardware __float128],
+ AC_CACHE_CHECK([for PowerPC ISA 3.0 to build hardware __float128 libraries],
[libgcc_cv_powerpc_float128_hw],
[AC_COMPILE_IFELSE(
- [#pragma GCC target ("cpu=power9,float128,float128-hardware")
+ [#pragma GCC target ("vsx,power9-vector")
#include <sys/auxv.h>
#ifndef AT_PLATFORM
#error "AT_PLATFORM is not defined"
#endif
- __float128 add (__float128 a, __float128 b)
+ vector unsigned char (vector unsigned char a, vector unsigned char b)
{
- __float128 ret;
+ vector unsigned char ret;
__asm__ ("xsaddqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b));
return ret;
}
diff --git a/libgcc/libgcc2.c b/libgcc/libgcc2.c
index 340d1f725fd..6bc9a2f6c40 100644
--- a/libgcc/libgcc2.c
+++ b/libgcc/libgcc2.c
@@ -2209,7 +2209,12 @@ TRANSFER_FROM_TRAMPOLINE
#if !defined (HAS_INIT_SECTION) || !defined (OBJECT_FORMAT_ELF)
/* Some ELF crosses use crtstuff.c to provide __CTOR_LIST__, but use this
- code to run constructors. In that case, we need to handle EH here, too. */
+ code to run constructors. In that case, we need to handle EH here, too.
+ But MINGW32 is special because it handles CRTSTUFF and EH on its own. */
+
+#ifdef __MINGW32__
+#undef __LIBGCC_EH_FRAME_SECTION_NAME__
+#endif
#ifdef __LIBGCC_EH_FRAME_SECTION_NAME__
#include "unwind-dw2-fde.h"
diff --git a/libgo/MERGE b/libgo/MERGE
index 3cb26c37c07..a40967cea24 100644
--- a/libgo/MERGE
+++ b/libgo/MERGE
@@ -1,4 +1,4 @@
-7bc40ffb05d8813bf9b41a331b45d37216f9e747
+f5cf5673590a68c55b2330df9dfcdd6fac75b893
The first line of this file holds the git revision number of the
last merge done from the master library sources.
diff --git a/libgo/VERSION b/libgo/VERSION
index 0be00434da5..e1bf218d1df 100644
--- a/libgo/VERSION
+++ b/libgo/VERSION
@@ -1 +1 @@
-go1.6 \ No newline at end of file
+go1.6.1 \ No newline at end of file
diff --git a/libgo/go/crypto/dsa/dsa.go b/libgo/go/crypto/dsa/dsa.go
index 28e981b9dde..9f414a470c7 100644
--- a/libgo/go/crypto/dsa/dsa.go
+++ b/libgo/go/crypto/dsa/dsa.go
@@ -249,6 +249,10 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err
func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool {
// FIPS 186-3, section 4.7
+ if pub.P.Sign() == 0 {
+ return false
+ }
+
if r.Sign() < 1 || r.Cmp(pub.Q) >= 0 {
return false
}
diff --git a/libgo/go/crypto/ecdsa/ecdsa.go b/libgo/go/crypto/ecdsa/ecdsa.go
index 0731f2b6703..e54488c9cf6 100644
--- a/libgo/go/crypto/ecdsa/ecdsa.go
+++ b/libgo/go/crypto/ecdsa/ecdsa.go
@@ -23,6 +23,7 @@ import (
"crypto/elliptic"
"crypto/sha512"
"encoding/asn1"
+ "errors"
"io"
"math/big"
)
@@ -140,6 +141,8 @@ func fermatInverse(k, N *big.Int) *big.Int {
return new(big.Int).Exp(k, nMinus2, N)
}
+var errZeroParam = errors.New("zero parameter")
+
// Sign signs an arbitrary length hash (which should be the result of hashing a
// larger message) using the private key, priv. It returns the signature as a
// pair of integers. The security of the private key depends on the entropy of
@@ -180,7 +183,9 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err
// See [NSA] 3.4.1
c := priv.PublicKey.Curve
N := c.Params().N
-
+ if N.Sign() == 0 {
+ return nil, nil, errZeroParam
+ }
var k, kInv *big.Int
for {
for {
@@ -193,7 +198,7 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err
if in, ok := priv.Curve.(invertible); ok {
kInv = in.Inverse(k)
} else {
- kInv = fermatInverse(k, N)
+ kInv = fermatInverse(k, N) // N != 0
}
r, _ = priv.Curve.ScalarBaseMult(k.Bytes())
@@ -207,7 +212,7 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err
s = new(big.Int).Mul(priv.D, r)
s.Add(s, e)
s.Mul(s, kInv)
- s.Mod(s, N)
+ s.Mod(s, N) // N != 0
if s.Sign() != 0 {
break
}
diff --git a/libgo/go/crypto/rsa/rsa.go b/libgo/go/crypto/rsa/rsa.go
index ee022b803ae..0f487fe1524 100644
--- a/libgo/go/crypto/rsa/rsa.go
+++ b/libgo/go/crypto/rsa/rsa.go
@@ -465,6 +465,9 @@ func decrypt(random io.Reader, priv *PrivateKey, c *big.Int) (m *big.Int, err er
err = ErrDecryption
return
}
+ if priv.N.Sign() == 0 {
+ return nil, ErrDecryption
+ }
var ir *big.Int
if random != nil {
@@ -490,7 +493,7 @@ func decrypt(random io.Reader, priv *PrivateKey, c *big.Int) (m *big.Int, err er
}
}
bigE := big.NewInt(int64(priv.E))
- rpowe := new(big.Int).Exp(r, bigE, priv.N)
+ rpowe := new(big.Int).Exp(r, bigE, priv.N) // N != 0
cCopy := new(big.Int).Set(c)
cCopy.Mul(cCopy, rpowe)
cCopy.Mod(cCopy, priv.N)
diff --git a/libgo/go/go/build/deps_test.go b/libgo/go/go/build/deps_test.go
index bd8b343adbe..c7cd8804da7 100644
--- a/libgo/go/go/build/deps_test.go
+++ b/libgo/go/go/build/deps_test.go
@@ -132,10 +132,10 @@ var pkgDeps = map[string][]string{
// End of linear dependency definitions.
// Operating system access.
- "syscall": {"L0", "internal/race", "unicode/utf16"},
+ "syscall": {"L0", "internal/race", "internal/syscall/windows/sysdll", "unicode/utf16"},
"internal/syscall/unix": {"L0", "syscall"},
- "internal/syscall/windows": {"L0", "syscall"},
- "internal/syscall/windows/registry": {"L0", "syscall", "unicode/utf16"},
+ "internal/syscall/windows": {"L0", "syscall", "internal/syscall/windows/sysdll"},
+ "internal/syscall/windows/registry": {"L0", "syscall", "internal/syscall/windows/sysdll", "unicode/utf16"},
"time": {"L0", "syscall", "internal/syscall/windows/registry"},
"os": {"L1", "os", "syscall", "time", "internal/syscall/windows"},
"path/filepath": {"L2", "os", "syscall"},
diff --git a/libgo/go/internal/syscall/windows/registry/syscall.go b/libgo/go/internal/syscall/windows/registry/syscall.go
index 5426cae9096..02d985cec90 100644
--- a/libgo/go/internal/syscall/windows/registry/syscall.go
+++ b/libgo/go/internal/syscall/windows/registry/syscall.go
@@ -8,7 +8,7 @@ package registry
import "syscall"
-//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go syscall.go
+//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go -systemdll syscall.go
const (
_REG_OPTION_NON_VOLATILE = 0
diff --git a/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go b/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go
index 9c17675a249..7e473d4e1de 100644
--- a/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go
+++ b/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go
@@ -4,12 +4,13 @@ package registry
import "unsafe"
import "syscall"
+import "internal/syscall/windows/sysdll"
var _ unsafe.Pointer
var (
- modadvapi32 = syscall.NewLazyDLL("advapi32.dll")
- modkernel32 = syscall.NewLazyDLL("kernel32.dll")
+ modadvapi32 = syscall.NewLazyDLL(sysdll.Add("advapi32.dll"))
+ modkernel32 = syscall.NewLazyDLL(sysdll.Add("kernel32.dll"))
procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW")
procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW")
diff --git a/libgo/go/internal/syscall/windows/syscall_windows.go b/libgo/go/internal/syscall/windows/syscall_windows.go
index 165e8945ec3..e6a3f238d88 100644
--- a/libgo/go/internal/syscall/windows/syscall_windows.go
+++ b/libgo/go/internal/syscall/windows/syscall_windows.go
@@ -6,7 +6,7 @@ package windows
import "syscall"
-//go:generate go run ../../../syscall/mksyscall_windows.go -output zsyscall_windows.go syscall_windows.go
+//go:generate go run ../../../syscall/mksyscall_windows.go -output zsyscall_windows.go -systemdll syscall_windows.go
const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
diff --git a/libgo/go/internal/syscall/windows/sysdll/sysdll.go b/libgo/go/internal/syscall/windows/sysdll/sysdll.go
new file mode 100644
index 00000000000..4e0018f3877
--- /dev/null
+++ b/libgo/go/internal/syscall/windows/sysdll/sysdll.go
@@ -0,0 +1,28 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package sysdll is an internal leaf package that records and reports
+// which Windows DLL names are used by Go itself. These DLLs are then
+// only loaded from the System32 directory. See Issue 14959.
+package sysdll
+
+// IsSystemDLL reports whether the named dll key (a base name, like
+// "foo.dll") is a system DLL which should only be loaded from the
+// Windows SYSTEM32 directory.
+//
+// Filenames are case sensitive, but that doesn't matter because
+// the case registered with Add is also the same case used with
+// LoadDLL later.
+//
+// It has no associated mutex and should only be mutated serially
+// (currently: during init), and not concurrent with DLL loading.
+var IsSystemDLL = map[string]bool{}
+
+// Add notes that dll is a system32 DLL which should only be loaded
+// from the Windows SYSTEM32 directory. It returns its argument back,
+// for ease of use in generated code.
+func Add(dll string) string {
+ IsSystemDLL[dll] = true
+ return dll
+}
diff --git a/libgo/go/internal/syscall/windows/zsyscall_windows.go b/libgo/go/internal/syscall/windows/zsyscall_windows.go
index de41786c76e..d599258976b 100644
--- a/libgo/go/internal/syscall/windows/zsyscall_windows.go
+++ b/libgo/go/internal/syscall/windows/zsyscall_windows.go
@@ -4,12 +4,13 @@ package windows
import "unsafe"
import "syscall"
+import "internal/syscall/windows/sysdll"
var _ unsafe.Pointer
var (
- modiphlpapi = syscall.NewLazyDLL("iphlpapi.dll")
- modkernel32 = syscall.NewLazyDLL("kernel32.dll")
+ modiphlpapi = syscall.NewLazyDLL(sysdll.Add("iphlpapi.dll"))
+ modkernel32 = syscall.NewLazyDLL(sysdll.Add("kernel32.dll"))
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
diff --git a/libgo/go/reflect/all_test.go b/libgo/go/reflect/all_test.go
index 595d6908f7d..b8e7cd883cb 100644
--- a/libgo/go/reflect/all_test.go
+++ b/libgo/go/reflect/all_test.go
@@ -1478,6 +1478,12 @@ func TestFunc(t *testing.T) {
if i != 10 || j != 20 || k != 30 || l != (two{40, 50}) || m != 60 || n != 70 || o != 80 {
t.Errorf("Call returned %d, %d, %d, %v, %d, %g, %d; want 10, 20, 30, [40, 50], 60, 70, 80", i, j, k, l, m, n, o)
}
+
+ for i, v := range ret {
+ if v.CanAddr() {
+ t.Errorf("result %d is addressable", i)
+ }
+ }
}
type emptyStruct struct{}
diff --git a/libgo/go/reflect/value.go b/libgo/go/reflect/value.go
index 0f0eb846fc2..75944a6e532 100644
--- a/libgo/go/reflect/value.go
+++ b/libgo/go/reflect/value.go
@@ -433,9 +433,11 @@ func (v Value) call(op string, in []Value) []Value {
ret := make([]Value, nout)
results := make([]unsafe.Pointer, nout)
for i := 0; i < nout; i++ {
- v := New(t.Out(i))
- results[i] = unsafe.Pointer(v.Pointer())
- ret[i] = Indirect(v)
+ tv := t.Out(i)
+ v := New(tv)
+ results[i] = v.pointer()
+ fl := flagIndir | flag(tv.Kind())
+ ret[i] = Value{tv.common(), v.pointer(), fl}
}
var pp *unsafe.Pointer
diff --git a/libgo/go/runtime/export_windows_test.go b/libgo/go/runtime/export_windows_test.go
index f712c6f6535..7b269ecccb4 100644
--- a/libgo/go/runtime/export_windows_test.go
+++ b/libgo/go/runtime/export_windows_test.go
@@ -15,3 +15,7 @@ func NumberOfProcessors() int32 {
stdcall1(_GetSystemInfo, uintptr(unsafe.Pointer(&info)))
return int32(info.dwnumberofprocessors)
}
+
+func LoadLibraryExStatus() (useEx, haveEx, haveFlags bool) {
+ return useLoadLibraryEx, _LoadLibraryExW != nil, _AddDllDirectory != nil
+}
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c
index 9ba199b8cae..c6ac972bd41 100644
--- a/libgo/runtime/proc.c
+++ b/libgo/runtime/proc.c
@@ -2042,7 +2042,7 @@ doentersyscall()
m->mcache = nil;
m->p->m = nil;
runtime_atomicstore(&m->p->status, Psyscall);
- if(runtime_sched.gcwaiting) {
+ if(runtime_atomicload(&runtime_sched.gcwaiting)) {
runtime_lock(&runtime_sched);
if (runtime_sched.stopwait > 0 && runtime_cas(&m->p->status, Psyscall, Pgcstop)) {
if(--runtime_sched.stopwait == 0)
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index a1763b68c9e..1c82e5de1ef 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,134 @@
+2016-04-14 Cesar Philippidis <cesar@codesourcery.com>
+
+ * testsuite/libgomp.oacc-fortran/non-scalar-data.f90: Don't
+ pass parameter variables to subroutines.
+
+2016-04-14 Cesar Philippidis <cesar@codesourcery.com>
+
+ PR middle-end/70643
+ * testsuite/libgomp.oacc-fortran/pr70643.f90: New test.
+
+2016-04-13 Cesar Philippidis <cesar@codesourcery.com>
+
+ PR testsuite/68242
+ * testsuite/libgomp.oacc-c-c++-common/reduction-1.c: Adjust test.
+ * testsuite/libgomp.oacc-c-c++-common/reduction-2.c: Likewise.
+
+2016-04-12 Thomas Schwinge <thomas@codesourcery.com>
+
+ * libgomp_g.h: Rename GOACC_parallel_keyd prototype to
+ GOACC_parallel_keyed, restore GOACC_parallel prototype, new
+ GOACC_declare prototype.
+
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gang-np-1.c:
+ Merge this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gv-np-1.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gw-np-1.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-1.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-2.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-3.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-4.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-1.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-2.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-worker-p-1.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-1.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-2.c:
+ ... this file, and...
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-3.c:
+ ... this file into...
+ * testsuite/libgomp.oacc-c-c++-common/reduction-7.c: ... this
+ file.
+
+ * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c:
+ Make failure observable.
+
+2016-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * libgomp.h (struct gomp_target_task): Remove firstprivate_copies
+ field.
+ * target.c (gomp_target_fallback_firstprivate,
+ gomp_target_unshare_firstprivate): Removed.
+ (GOMP_target_ext): Copy firstprivate vars into gomp_allocaed memory
+ before waiting for dependencies.
+ (gomp_target_task_fn): Don't copy firstprivate vars here.
+ * task.c (GOMP_PLUGIN_target_task_completion): Don't free
+ firstprivate_copies here.
+ (gomp_create_target_task): Don't initialize firstprivate_copies field.
+ * testsuite/libgomp.c/target-25.c (main): Use map (to:) instead of
+ explicit/implicit firstprivate.
+
+2016-04-08 Cesar Philippidis <cesar@codesourcery.com>
+
+ PR lto/70289
+ PR ipa/70348
+ PR tree-optimization/70373
+ PR middle-end/70533
+ PR middle-end/70534
+ PR middle-end/70535
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gang-np-1.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gw-np-1.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-1.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-2.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-3.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-4.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-1.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-2.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-worker-p-1.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-1.c: New test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-2.c: New test.
+ * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-3.c: New test.
+ * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c: New
+ test.
+ * testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c: Add test
+ coverage.
+ * testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c: Likewise.
+ * testsuite/libgomp.oacc-c-c++-common/parallel-dims.c: Likewise.
+ * testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c: New test.
+ * testsuite/libgomp.oacc-c-c++-common/pr70289.c: New test.
+ * testsuite/libgomp.oacc-c-c++-common/pr70373.c: New test.
+ * testsuite/libgomp.oacc-c-c++-common/reduction-1.c: Add test
+ coverage.
+ * testsuite/libgomp.oacc-c-c++-common/reduction-2.c: Likewise.
+ * testsuite/libgomp.oacc-c-c++-common/reduction-3.c: Likewise.
+ * testsuite/libgomp.oacc-c-c++-common/reduction-4.c: Likewise.
+ * testsuite/libgomp.oacc-c-c++-common/reduction-5.c: Likewise.
+ * testsuite/libgomp.oacc-c-c++-common/reduction-6.c: New test.
+ * testsuite/libgomp.oacc-c-c++-common/reduction.h: New test.
+ * testsuite/libgomp.oacc-fortran/parallel-reduction.f90: New test.
+ * testsuite/libgomp.oacc-fortran/pr70289.f90: New test.
+ * testsuite/libgomp.oacc-fortran/reduction-1.f90: Add test coverage.
+ * testsuite/libgomp.oacc-fortran/reduction-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-4.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-5.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-6.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-7.f90: New test.
+
2016-03-30 Thomas Schwinge <thomas@codesourcery.com>
James Norris <jnorris@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
diff --git a/libgomp/libgomp.h b/libgomp/libgomp.h
index 7108a6d0118..664e76b52d1 100644
--- a/libgomp/libgomp.h
+++ b/libgomp/libgomp.h
@@ -496,8 +496,6 @@ struct gomp_target_task
struct target_mem_desc *tgt;
struct gomp_task *task;
struct gomp_team *team;
- /* Copies of firstprivate mapped data for shared memory accelerators. */
- void *firstprivate_copies;
/* Device-specific target arguments. */
void **args;
void *hostaddrs[];
diff --git a/libgomp/libgomp_g.h b/libgomp/libgomp_g.h
index 24eebb68e67..20454e63a17 100644
--- a/libgomp/libgomp_g.h
+++ b/libgomp/libgomp_g.h
@@ -295,17 +295,20 @@ extern void GOMP_teams (unsigned int, unsigned int);
/* oacc-parallel.c */
+extern void GOACC_parallel_keyed (int, void (*) (void *), size_t,
+ void **, size_t *, unsigned short *, ...);
+extern void GOACC_parallel (int, void (*) (void *), size_t, void **, size_t *,
+ unsigned short *, int, int, int, int, int, ...);
extern void GOACC_data_start (int, size_t, void **, size_t *,
unsigned short *);
extern void GOACC_data_end (void);
extern void GOACC_enter_exit_data (int, size_t, void **,
size_t *, unsigned short *, int, int, ...);
-extern void GOACC_parallel_keyd (int, void (*) (void *), size_t,
- void **, size_t *, unsigned short *, ...);
extern void GOACC_update (int, size_t, void **, size_t *,
unsigned short *, int, int, ...);
extern void GOACC_wait (int, int, ...);
extern int GOACC_get_num_threads (void);
extern int GOACC_get_thread_num (void);
+extern void GOACC_declare (int, size_t, void **, size_t *, unsigned short *);
#endif /* LIBGOMP_G_H */
diff --git a/libgomp/target.c b/libgomp/target.c
index 96fe3d5eb0d..e2dd0e08997 100644
--- a/libgomp/target.c
+++ b/libgomp/target.c
@@ -1372,47 +1372,6 @@ copy_firstprivate_data (char *tgt, size_t mapnum, void **hostaddrs,
}
}
-/* Host fallback with firstprivate map-type handling. */
-
-static void
-gomp_target_fallback_firstprivate (void (*fn) (void *), size_t mapnum,
- void **hostaddrs, size_t *sizes,
- unsigned short *kinds)
-{
- size_t tgt_align = 0, tgt_size = 0;
- calculate_firstprivate_requirements (mapnum, sizes, kinds, &tgt_align,
- &tgt_size);
- if (tgt_align)
- {
- char *tgt = gomp_alloca (tgt_size + tgt_align - 1);
- copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds, tgt_align,
- tgt_size);
- }
- gomp_target_fallback (fn, hostaddrs);
-}
-
-/* Handle firstprivate map-type for shared memory devices and the host
- fallback. Return the pointer of firstprivate copies which has to be freed
- after use. */
-
-static void *
-gomp_target_unshare_firstprivate (size_t mapnum, void **hostaddrs,
- size_t *sizes, unsigned short *kinds)
-{
- size_t tgt_align = 0, tgt_size = 0;
- char *tgt = NULL;
-
- calculate_firstprivate_requirements (mapnum, sizes, kinds, &tgt_align,
- &tgt_size);
- if (tgt_align)
- {
- tgt = gomp_malloc (tgt_size + tgt_align - 1);
- copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds, tgt_align,
- tgt_size);
- }
- return tgt;
-}
-
/* Helper function of GOMP_target{,_ext} routines. */
static void *
@@ -1504,6 +1463,8 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum,
unsigned int flags, void **depend, void **args)
{
struct gomp_device_descr *devicep = resolve_device (device);
+ size_t tgt_align = 0, tgt_size = 0;
+ bool fpc_done = false;
if (flags & GOMP_TARGET_FLAG_NOWAIT)
{
@@ -1555,7 +1516,19 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum,
{
struct gomp_thread *thr = gomp_thread ();
if (thr->task && thr->task->depend_hash)
- gomp_task_maybe_wait_for_dependencies (depend);
+ {
+ /* If we might need to wait, copy firstprivate now. */
+ calculate_firstprivate_requirements (mapnum, sizes, kinds,
+ &tgt_align, &tgt_size);
+ if (tgt_align)
+ {
+ char *tgt = gomp_alloca (tgt_size + tgt_align - 1);
+ copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds,
+ tgt_align, tgt_size);
+ }
+ fpc_done = true;
+ gomp_task_maybe_wait_for_dependencies (depend);
+ }
}
void *fn_addr;
@@ -1564,15 +1537,35 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum,
|| !(fn_addr = gomp_get_target_fn_addr (devicep, fn))
|| (devicep->can_run_func && !devicep->can_run_func (fn_addr)))
{
- gomp_target_fallback_firstprivate (fn, mapnum, hostaddrs, sizes, kinds);
+ if (!fpc_done)
+ {
+ calculate_firstprivate_requirements (mapnum, sizes, kinds,
+ &tgt_align, &tgt_size);
+ if (tgt_align)
+ {
+ char *tgt = gomp_alloca (tgt_size + tgt_align - 1);
+ copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds,
+ tgt_align, tgt_size);
+ }
+ }
+ gomp_target_fallback (fn, hostaddrs);
return;
}
struct target_mem_desc *tgt_vars;
- void *fpc = NULL;
if (devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM)
{
- fpc = gomp_target_unshare_firstprivate (mapnum, hostaddrs, sizes, kinds);
+ if (!fpc_done)
+ {
+ calculate_firstprivate_requirements (mapnum, sizes, kinds,
+ &tgt_align, &tgt_size);
+ if (tgt_align)
+ {
+ char *tgt = gomp_alloca (tgt_size + tgt_align - 1);
+ copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds,
+ tgt_align, tgt_size);
+ }
+ }
tgt_vars = NULL;
}
else
@@ -1583,8 +1576,6 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum,
args);
if (tgt_vars)
gomp_unmap_vars (tgt_vars, true);
- else
- free (fpc);
}
/* Host fallback for GOMP_target_data{,_ext} routines. */
@@ -1891,9 +1882,7 @@ gomp_target_task_fn (void *data)
|| (devicep->can_run_func && !devicep->can_run_func (fn_addr)))
{
ttask->state = GOMP_TARGET_TASK_FALLBACK;
- gomp_target_fallback_firstprivate (ttask->fn, ttask->mapnum,
- ttask->hostaddrs, ttask->sizes,
- ttask->kinds);
+ gomp_target_fallback (ttask->fn, ttask->hostaddrs);
return false;
}
@@ -1908,9 +1897,6 @@ gomp_target_task_fn (void *data)
if (devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM)
{
ttask->tgt = NULL;
- ttask->firstprivate_copies
- = gomp_target_unshare_firstprivate (ttask->mapnum, ttask->hostaddrs,
- ttask->sizes, ttask->kinds);
actual_arguments = ttask->hostaddrs;
}
else
diff --git a/libgomp/task.c b/libgomp/task.c
index 38d4e9b413b..023663f43d5 100644
--- a/libgomp/task.c
+++ b/libgomp/task.c
@@ -582,7 +582,6 @@ GOMP_PLUGIN_target_task_completion (void *data)
return;
}
ttask->state = GOMP_TARGET_TASK_FINISHED;
- free (ttask->firstprivate_copies);
gomp_target_task_completion (team, task);
gomp_mutex_unlock (&team->task_lock);
}
@@ -683,7 +682,6 @@ gomp_create_target_task (struct gomp_device_descr *devicep,
ttask->state = state;
ttask->task = task;
ttask->team = team;
- ttask->firstprivate_copies = NULL;
task->fn = NULL;
task->fn_data = ttask;
task->final_task = 0;
diff --git a/libgomp/testsuite/libgomp.c/target-25.c b/libgomp/testsuite/libgomp.c/target-25.c
index aeb19aee510..09b8d52184a 100644
--- a/libgomp/testsuite/libgomp.c/target-25.c
+++ b/libgomp/testsuite/libgomp.c/target-25.c
@@ -23,7 +23,7 @@ main ()
usleep (7000);
z = 3;
}
- #pragma omp target map(tofrom: x) map(from: err) firstprivate (y) depend(inout: x, z)
+ #pragma omp target map(tofrom: x) map(from: err) map (to: y, z) depend(inout: x, z)
err = (x != 1 || y != 2 || z != 3);
if (err)
abort ();
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c
new file mode 100644
index 00000000000..5e82e1d350c
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c
@@ -0,0 +1,38 @@
+#include <assert.h>
+
+/* Test of reduction on both parallel and loop directives (worker and
+ vector-partitioned loops individually in gang-partitioned mode, int
+ type). */
+
+int
+main (int argc, char *argv[])
+{
+ int i, j, arr[32768], res = 0, hres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ reduction(+:res) copy(res)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ #pragma acc loop worker reduction(+:res)
+ for (i = 0; i < 1024; i++)
+ res += arr[j * 1024 + i];
+
+ #pragma acc loop vector reduction(+:res)
+ for (i = 1023; i >= 0; i--)
+ res += arr[j * 1024 + i];
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ for (i = 0; i < 1024; i++)
+ hres += arr[j * 1024 + i] * 2;
+
+ assert (res == hres);
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c
new file mode 100644
index 00000000000..a339f327956
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c
@@ -0,0 +1,40 @@
+#include <assert.h>
+
+/* Test of reduction on both parallel and loop directives (workers and vectors
+ in gang-partitioned mode, int type with XOR). */
+
+int
+main (int argc, char *argv[])
+{
+ int i, j, arr[32768], res = 0, hres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ reduction(^:res)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ #pragma acc loop worker vector reduction(^:res)
+ for (i = 0; i < 1024; i++)
+ res ^= 3 * arr[j * 1024 + i];
+
+ #pragma acc loop worker vector reduction(^:res)
+ for (i = 0; i < 1024; i++)
+ res ^= arr[j * 1024 + (1023 - i)];
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ for (i = 0; i < 1024; i++)
+ {
+ hres ^= 3 * arr[j * 1024 + i];
+ hres ^= arr[j * 1024 + (1023 - i)];
+ }
+
+ assert (res == hres);
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c
new file mode 100644
index 00000000000..8d85fedc867
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c
@@ -0,0 +1,42 @@
+#include <assert.h>
+
+/* Test of reduction on both parallel and loop directives (workers and vectors
+ together in gang-partitioned mode, float type). */
+
+int
+main (int argc, char *argv[])
+{
+ int i, j;
+ float arr[32768];
+ float res = 0, hres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ reduction(+:res) copy(res)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ #pragma acc loop worker vector reduction(+:res)
+ for (i = 0; i < 1024; i++)
+ res += arr[j * 1024 + i];
+
+ #pragma acc loop worker vector reduction(+:res)
+ for (i = 0; i < 1024; i++)
+ res += arr[j * 1024 + (1023 - i)];
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ for (i = 0; i < 1024; i++)
+ {
+ hres += arr[j * 1024 + i];
+ hres += arr[j * 1024 + (1023 - i)];
+ }
+
+ assert (res == hres);
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c
new file mode 100644
index 00000000000..1904b4aa1e4
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c
@@ -0,0 +1,55 @@
+#include <assert.h>
+
+/* Test of reduction on both parallel and loop directives (workers and vectors
+ together in gang-partitioned mode, float type, multiple reductions). */
+
+int
+main (int argc, char *argv[])
+{
+ int i, j;
+ float arr[32768];
+ float res = 0, mres = 0, hres = 0, hmres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ reduction(+:res) reduction(max:mres) copy(res, mres)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ #pragma acc loop worker vector reduction(+:res) reduction(max:mres)
+ for (i = 0; i < 1024; i++)
+ {
+ res += arr[j * 1024 + i];
+ if (arr[j * 1024 + i] > mres)
+ mres = arr[j * 1024 + i];
+ }
+
+ #pragma acc loop worker vector reduction(+:res) reduction(max:mres)
+ for (i = 0; i < 1024; i++)
+ {
+ res += arr[j * 1024 + (1023 - i)];
+ if (arr[j * 1024 + (1023 - i)] > mres)
+ mres = arr[j * 1024 + (1023 - i)];
+ }
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ for (i = 0; i < 1024; i++)
+ {
+ hres += arr[j * 1024 + i];
+ hres += arr[j * 1024 + (1023 - i)];
+ if (arr[j * 1024 + i] > hmres)
+ hmres = arr[j * 1024 + i];
+ if (arr[j * 1024 + (1023 - i)] > hmres)
+ hmres = arr[j * 1024 + (1023 - i)];
+ }
+
+ assert (res == hres);
+ assert (mres == hmres);
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c
index dceac39cf15..a88b60f39f0 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c
@@ -1,40 +1,54 @@
+/* { dg-additional-options "-w" } */
+
#include <assert.h>
+/* Test of reduction on parallel directive. */
+
+#define ACTUAL_GANGS 256
+
int
main (int argc, char *argv[])
{
- int res, res2 = 0;
+ int res, res1 = 0, res2 = 0;
#if defined(ACC_DEVICE_TYPE_host)
# define GANGS 1
#else
# define GANGS 256
#endif
- #pragma acc parallel num_gangs(GANGS) copy(res2)
+ #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \
+ reduction(+:res1) copy(res2, res1)
{
+ res1 += 5;
+
#pragma acc atomic
res2 += 5;
}
res = GANGS * 5;
+ assert (res == res1);
assert (res == res2);
#undef GANGS
- res = res2 = 1;
+ res = res1 = res2 = 1;
#if defined(ACC_DEVICE_TYPE_host)
# define GANGS 1
#else
# define GANGS 8
#endif
- #pragma acc parallel num_gangs(GANGS) copy(res2)
+ #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \
+ reduction(*:res1) copy(res1, res2)
{
+ res1 *= 5;
+
#pragma acc atomic
res2 *= 5;
}
for (int i = 0; i < GANGS; ++i)
res *= 5;
+ assert (res == res1);
assert (res == res2);
#undef GANGS
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c
index bd5715c675c..911b76cc9be 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c
@@ -1,18 +1,25 @@
+/* { dg-additional-options "-w" } */
+
#include <assert.h>
#include <openacc.h>
+/* Test of reduction on parallel directive (with async). */
+
int
main (int argc, char *argv[])
{
- int res, res2 = 0;
+ int res, res1 = 0, res2 = 0;
#if defined(ACC_DEVICE_TYPE_host)
# define GANGS 1
#else
# define GANGS 256
#endif
- #pragma acc parallel num_gangs(GANGS) copy(res2) async(1)
+ #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \
+ reduction(+:res1) copy(res1, res2) async(1)
{
+ res1 += 5;
+
#pragma acc atomic
res2 += 5;
}
@@ -20,18 +27,22 @@ main (int argc, char *argv[])
acc_wait (1);
+ assert (res == res1);
assert (res == res2);
#undef GANGS
- res = res2 = 1;
+ res = res1 = res2 = 1;
#if defined(ACC_DEVICE_TYPE_host)
# define GANGS 1
#else
# define GANGS 8
#endif
- #pragma acc parallel num_gangs(GANGS) copy(res2) async(1)
+ #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \
+ reduction(*:res1) copy(res1, res2) async(1)
{
+ res1 *= 5;
+
#pragma acc atomic
res2 *= 5;
}
@@ -40,6 +51,7 @@ main (int argc, char *argv[])
acc_wait (1);
+ assert (res == res1);
assert (res == res2);
return 0;
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
index 39357ce357b..f5766a404b4 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
@@ -5,12 +5,20 @@
int main ()
{
+ int dummy[10];
+
#pragma acc parallel num_workers (2<<20) /* { dg-error "using num_workers" } */
{
+#pragma acc loop worker
+ for (int i = 0; i < 10; i++)
+ dummy[i] = i;
}
#pragma acc parallel vector_length (2<<20) /* { dg-error "using vector_length" } */
{
+#pragma acc loop vector
+ for (int i = 0; i < 10; i++)
+ dummy[i] = i;
}
return 0;
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c
new file mode 100644
index 00000000000..b2c60e52697
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c
@@ -0,0 +1,72 @@
+/* { dg-do run } */
+/* { dg-additional-options "-w" } */
+
+#include <stdlib.h>
+#include <openacc.h>
+
+#define N 10
+
+int
+main ()
+{
+ int s1 = 0, s2 = 0;
+ int i;
+ int dummy = 0;
+
+#pragma acc data copy (dummy)
+ {
+#pragma acc parallel num_gangs (N) reduction (+:s1) copy(s1)
+ {
+ s1++;
+ }
+ }
+
+ if (acc_get_device_type () != acc_device_nvidia)
+ {
+ if (s1 != 1)
+ abort ();
+ }
+ else
+ {
+ if (s1 != N)
+ abort ();
+ }
+
+ s1 = 0;
+ s2 = 0;
+
+#pragma acc parallel num_gangs (10) reduction (+:s1, s2) copy(s1, s2)
+ {
+ s1++;
+ s2 += N;
+ }
+
+ if (acc_get_device_type () != acc_device_nvidia)
+ {
+ if (s1 != 1)
+ abort ();
+ if (s2 != N)
+ abort ();
+ }
+ else
+ {
+ if (s1 != N)
+ abort ();
+ if (s2 != N*N)
+ abort ();
+ }
+
+ s1 = 0;
+
+#pragma acc parallel num_gangs (10) reduction (+:s1) copy(s1)
+ {
+#pragma acc loop gang reduction (+:s1)
+ for (i = 0; i < 10; i++)
+ s1++;
+ }
+
+ if (s1 != N)
+ abort ();
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c
new file mode 100644
index 00000000000..6d5222249b6
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c
@@ -0,0 +1,13 @@
+int
+main ()
+{
+ int i;
+ static int temp;
+
+#pragma acc parallel reduction(+:temp)
+ {
+ temp++;
+ }
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c
new file mode 100644
index 00000000000..af629c83ef7
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c
@@ -0,0 +1,20 @@
+#define N 32
+
+int
+foo (unsigned int sum)
+{
+#pragma acc parallel reduction (+:sum)
+ {
+ sum;
+ }
+
+ return sum;
+}
+
+int
+main (void)
+{
+ unsigned int sum = 0;
+ foo (sum);
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c
index e55793136f3..e8a8911faeb 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c
@@ -1,46 +1,59 @@
/* { dg-do run } */
+/* Ignore vector_length warnings for offloaded (nvptx) targets. */
+/* { dg-additional-options "-foffload=-w" } */
+
/* Integer reductions. */
#include <stdlib.h>
-#include <stdbool.h>
-
-#define vl 32
-
-#define DO_PRAGMA(x) _Pragma (#x)
-
-#define check_reduction_op(type, op, init, b) \
- { \
- type res, vres; \
- res = (init); \
- DO_PRAGMA (acc parallel vector_length (vl) copy(res)) \
-DO_PRAGMA (acc loop reduction (op:res))\
- for (i = 0; i < n; i++) \
- res = res op (b); \
- \
- vres = (init); \
- for (i = 0; i < n; i++) \
- vres = vres op (b); \
- \
- if (res != vres) \
- abort (); \
- }
+#include "reduction.h"
+
+const int ng = 8;
+const int nw = 4;
+const int vl = 32;
static void
-test_reductions_int (void)
+test_reductions (void)
{
- const int n = 1000;
+ const int n = 10;
int i;
int array[n];
for (i = 0; i < n; i++)
- array[i] = i;
-
- check_reduction_op (int, +, 0, array[i]);
- check_reduction_op (int, *, 1, array[i]);
- check_reduction_op (int, &, -1, array[i]);
- check_reduction_op (int, |, 0, array[i]);
- check_reduction_op (int, ^, 0, array[i]);
+ array[i] = i+1;
+
+ /* Gang reductions. */
+ check_reduction_op (int, +, 0, array[i], num_gangs (ng), gang);
+ check_reduction_op (int, *, 1, array[i], num_gangs (ng), gang);
+ check_reduction_op (int, &, -1, array[i], num_gangs (ng), gang);
+ check_reduction_op (int, |, 0, array[i], num_gangs (ng), gang);
+ check_reduction_op (int, ^, 0, array[i], num_gangs (ng), gang);
+
+ /* Worker reductions. */
+ check_reduction_op (int, +, 0, array[i], num_workers (nw), worker);
+ check_reduction_op (int, *, 1, array[i], num_workers (nw), worker);
+ check_reduction_op (int, &, -1, array[i], num_workers (nw), worker);
+ check_reduction_op (int, |, 0, array[i], num_workers (nw), worker);
+ check_reduction_op (int, ^, 0, array[i], num_workers (nw), worker);
+
+ /* Vector reductions. */
+ check_reduction_op (int, +, 0, array[i], vector_length (vl), vector);
+ check_reduction_op (int, *, 1, array[i], vector_length (vl), vector);
+ check_reduction_op (int, &, -1, array[i], vector_length (vl), vector);
+ check_reduction_op (int, |, 0, array[i], vector_length (vl), vector);
+ check_reduction_op (int, ^, 0, array[i], vector_length (vl), vector);
+
+ /* Combined reductions. */
+ check_reduction_op (int, +, 0, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+ check_reduction_op (int, *, 1, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+ check_reduction_op (int, &, -1, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+ check_reduction_op (int, |, 0, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+ check_reduction_op (int, ^, 0, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
}
static void
@@ -55,29 +68,31 @@ test_reductions_bool (void)
array[i] = i;
cmp_val = 5;
- check_reduction_op (bool, &&, true, (cmp_val > array[i]));
- check_reduction_op (bool, ||, false, (cmp_val > array[i]));
-}
-#define check_reduction_macro(type, op, init, b) \
- { \
- type res, vres; \
- res = (init); \
-DO_PRAGMA (acc parallel vector_length (vl) copy(res))\
-DO_PRAGMA (acc loop reduction (op:res))\
- for (i = 0; i < n; i++) \
- res = op (res, (b)); \
- \
- vres = (init); \
- for (i = 0; i < n; i++) \
- vres = op (vres, (b)); \
- \
- if (res != vres) \
- abort (); \
- }
-
-#define max(a, b) (((a) > (b)) ? (a) : (b))
-#define min(a, b) (((a) < (b)) ? (a) : (b))
+ /* Gang reductions. */
+ check_reduction_op (int, &&, 1, (cmp_val > array[i]), num_gangs (ng),
+ gang);
+ check_reduction_op (int, ||, 0, (cmp_val > array[i]), num_gangs (ng),
+ gang);
+
+ /* Worker reductions. */
+ check_reduction_op (int, &&, 1, (cmp_val > array[i]), num_workers (nw),
+ worker);
+ check_reduction_op (int, ||, 0, (cmp_val > array[i]), num_workers (nw),
+ worker);
+
+ /* Vector reductions. */
+ check_reduction_op (int, &&, 1, (cmp_val > array[i]), vector_length (vl),
+ vector);
+ check_reduction_op (int, ||, 0, (cmp_val > array[i]), vector_length (vl),
+ vector);
+
+ /* Combined reductions. */
+ check_reduction_op (int, &&, 1, (cmp_val > array[i]), num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker vector);
+ check_reduction_op (int, ||, 0, (cmp_val > array[i]), num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker vector);
+}
static void
test_reductions_minmax (void)
@@ -89,14 +104,32 @@ test_reductions_minmax (void)
for (i = 0; i < n; i++)
array[i] = i;
- check_reduction_macro (int, min, n + 1, array[i]);
- check_reduction_macro (int, max, -1, array[i]);
+ /* Gang reductions. */
+ check_reduction_macro (int, min, n + 1, array[i], num_gangs (ng), gang);
+ check_reduction_macro (int, max, -1, array[i], num_gangs (ng), gang);
+
+ /* Worker reductions. */
+ check_reduction_macro (int, min, n + 1, array[i], num_workers (nw), worker);
+ check_reduction_macro (int, max, -1, array[i], num_workers (nw), worker);
+
+ /* Vector reductions. */
+ check_reduction_macro (int, min, n + 1, array[i], vector_length (vl),
+ vector);
+ check_reduction_macro (int, max, -1, array[i], vector_length (vl), vector);
+
+ /* Combined reductions. */
+ check_reduction_macro (int, min, n + 1, array[i], num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker
+ vector);
+ check_reduction_macro (int, max, -1, array[i], num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker
+ vector);
}
int
main (void)
{
- test_reductions_int ();
+ test_reductions ();
test_reductions_bool ();
test_reductions_minmax ();
return 0;
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c
index 8a0b0d6df60..d19b1c825ca 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c
@@ -1,124 +1,83 @@
/* { dg-do run } */
+/* Ignore vector_length warnings for offloaded (nvptx) targets. */
+/* { dg-additional-options "-foffload=-w" } */
+
/* float reductions. */
#include <stdlib.h>
-#include <stdbool.h>
-#include <math.h>
+#include "reduction.h"
-#define vl 32
+const int ng = 8;
+const int nw = 4;
+const int vl = 32;
-int
-main(void)
+static void
+test_reductions (void)
{
- const int n = 1000;
+ const int n = 10;
int i;
- float vresult, result, array[n];
- bool lvresult, lresult;
+ float array[n];
for (i = 0; i < n; i++)
- array[i] = i;
-
- result = 0;
- vresult = 0;
+ array[i] = i+1;
- /* '+' reductions. */
-#pragma acc parallel vector_length (vl) copy(result)
-#pragma acc loop reduction (+:result)
- for (i = 0; i < n; i++)
- result += array[i];
+ /* Gang reductions. */
+ check_reduction_op (float, +, 0, array[i], num_gangs (ng), gang);
+ check_reduction_op (float, *, 1, array[i], num_gangs (ng), gang);
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- vresult += array[i];
-
- if (result != vresult)
- abort ();
-
- result = 0;
- vresult = 0;
-
- /* '*' reductions. */
-#pragma acc parallel vector_length (vl) copy(result)
-#pragma acc loop reduction (*:result)
- for (i = 0; i < n; i++)
- result *= array[i];
+ /* Worker reductions. */
+ check_reduction_op (float, +, 0, array[i], num_workers (nw), worker);
+ check_reduction_op (float, *, 1, array[i], num_workers (nw), worker);
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- vresult *= array[i];
-
- if (fabs(result - vresult) > .0001)
- abort ();
- result = 0;
- vresult = 0;
-
- /* 'max' reductions. */
-#pragma acc parallel vector_length (vl) copy(result)
-#pragma acc loop reduction (max:result)
- for (i = 0; i < n; i++)
- result = result > array[i] ? result : array[i];
-
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- vresult = vresult > array[i] ? vresult : array[i];
-
- if (result != vresult)
- abort ();
-
- result = 0;
- vresult = 0;
-
- /* 'min' reductions. */
-#pragma acc parallel vector_length (vl) copy(result)
-#pragma acc loop reduction (min:result)
- for (i = 0; i < n; i++)
- result = result < array[i] ? result : array[i];
+ /* Vector reductions. */
+ check_reduction_op (float, +, 0, array[i], vector_length (vl), vector);
+ check_reduction_op (float, *, 1, array[i], vector_length (vl), vector);
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- vresult = vresult < array[i] ? vresult : array[i];
-
- if (result != vresult)
- abort ();
-
- result = 5;
- vresult = 5;
-
- lresult = false;
- lvresult = false;
-
- /* '&&' reductions. */
-#pragma acc parallel vector_length (vl) copy(lresult)
-#pragma acc loop reduction (&&:lresult)
- for (i = 0; i < n; i++)
- lresult = lresult && (result > array[i]);
-
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- lvresult = lresult && (result > array[i]);
-
- if (lresult != lvresult)
- abort ();
-
- result = 5;
- vresult = 5;
-
- lresult = false;
- lvresult = false;
+ /* Combined reductions. */
+ check_reduction_op (float, +, 0, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+ check_reduction_op (float, *, 1, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+}
- /* '||' reductions. */
-#pragma acc parallel vector_length (vl) copy(lresult)
-#pragma acc loop reduction (||:lresult)
- for (i = 0; i < n; i++)
- lresult = lresult || (result > array[i]);
+static void
+test_reductions_minmax (void)
+{
+ const int n = 1000;
+ int i;
+ float array[n];
- /* Verify the reduction. */
for (i = 0; i < n; i++)
- lvresult = lresult || (result > array[i]);
+ array[i] = i;
- if (lresult != lvresult)
- abort ();
+ /* Gang reductions. */
+ check_reduction_macro (float, min, n + 1, array[i], num_gangs (ng), gang);
+ check_reduction_macro (float, max, -1, array[i], num_gangs (ng), gang);
+
+ /* Worker reductions. */
+ check_reduction_macro (float, min, n + 1, array[i], num_workers (nw),
+ worker);
+ check_reduction_macro (float, max, -1, array[i], num_workers (nw), worker);
+
+ /* Vector reductions. */
+ check_reduction_macro (float, min, n + 1, array[i], vector_length (vl),
+ vector);
+ check_reduction_macro (float, max, -1, array[i], vector_length (vl), vector);
+
+ /* Combined reductions. */
+ check_reduction_macro (float, min, n + 1, array[i], num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker
+ vector);
+ check_reduction_macro (float, max, -1, array[i], num_gangs (ng)
+ num_workers (nw)vector_length (vl), gang worker
+ vector);
+}
+int
+main (void)
+{
+ test_reductions ();
+ test_reductions_minmax ();
return 0;
}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c
index a233e29229c..1b948bef5a0 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c
@@ -1,93 +1,84 @@
/* { dg-do run } */
+/* Ignore vector_length warnings for offloaded (nvptx) targets. */
+/* { dg-additional-options "-foffload=-w" } */
+
/* double reductions. */
#include <stdlib.h>
-#include <stdbool.h>
-#include <math.h>
+#include "reduction.h"
-#define vl 32
+const int ng = 8;
+const int nw = 4;
+const int vl = 32;
-int
-main(void)
+static void
+test_reductions (void)
{
- const int n = 1000;
+ const int n = 10;
int i;
- double vresult, result, array[n];
- bool lvresult, lresult;
-
- for (i = 0; i < n; i++)
- array[i] = i;
-
- result = 0;
- vresult = 0;
-
- /* 'max' reductions. */
-#pragma acc parallel vector_length (vl) copy(result)
-#pragma acc loop reduction (max:result)
- for (i = 0; i < n; i++)
- result = result > array[i] ? result : array[i];
-
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- vresult = vresult > array[i] ? vresult : array[i];
-
- if (result != vresult)
- abort ();
-
- result = 0;
- vresult = 0;
-
- /* 'min' reductions. */
-#pragma acc parallel vector_length (vl) copy(result)
-#pragma acc loop reduction (min:result)
- for (i = 0; i < n; i++)
- result = result < array[i] ? result : array[i];
+ double array[n];
- /* Verify the reduction. */
for (i = 0; i < n; i++)
- vresult = vresult < array[i] ? vresult : array[i];
+ array[i] = i+1;
- if (result != vresult)
- abort ();
+ /* Gang reductions. */
+ check_reduction_op (double, +, 0, array[i], num_gangs (ng), gang);
+ check_reduction_op (double, *, 1, array[i], num_gangs (ng), gang);
- result = 5;
- vresult = 5;
+ /* Worker reductions. */
+ check_reduction_op (double, +, 0, array[i], num_workers (nw), worker);
+ check_reduction_op (double, *, 1, array[i], num_workers (nw), worker);
- lresult = false;
- lvresult = false;
+ /* Vector reductions. */
+ check_reduction_op (double, +, 0, array[i], vector_length (vl), vector);
+ check_reduction_op (double, *, 1, array[i], vector_length (vl), vector);
- /* '&&' reductions. */
-#pragma acc parallel vector_length (vl) copy(lresult)
-#pragma acc loop reduction (&&:lresult)
- for (i = 0; i < n; i++)
- lresult = lresult && (result > array[i]);
-
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- lvresult = lresult && (result > array[i]);
-
- if (lresult != lvresult)
- abort ();
-
- result = 5;
- vresult = 5;
-
- lresult = false;
- lvresult = false;
+ /* Combined reductions. */
+ check_reduction_op (double, +, 0, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+ check_reduction_op (double, *, 1, array[i], num_gangs (ng) num_workers (nw)
+ vector_length (vl), gang worker vector);
+}
- /* '||' reductions. */
-#pragma acc parallel vector_length (vl) copy(lresult)
-#pragma acc loop reduction (||:lresult)
- for (i = 0; i < n; i++)
- lresult = lresult || (result > array[i]);
+static void
+test_reductions_minmax (void)
+{
+ const int n = 1000;
+ int i;
+ double array[n];
- /* Verify the reduction. */
for (i = 0; i < n; i++)
- lvresult = lresult || (result > array[i]);
+ array[i] = i;
- if (lresult != lvresult)
- abort ();
+ /* Gang reductions. */
+ check_reduction_macro (double, min, n + 1, array[i], num_gangs (ng), gang);
+ check_reduction_macro (double, max, -1, array[i], num_gangs (ng), gang);
+
+ /* Worker reductions. */
+ check_reduction_macro (double, min, n + 1, array[i], num_workers (nw),
+ worker);
+ check_reduction_macro (double, max, -1, array[i], num_workers (nw), worker);
+
+ /* Vector reductions. */
+ check_reduction_macro (double, min, n + 1, array[i], vector_length (vl),
+ vector);
+ check_reduction_macro (double, max, -1, array[i], vector_length (vl),
+ vector);
+
+ /* Combined reductions. */
+ check_reduction_macro (double, min, n + 1, array[i], num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker
+ vector);
+ check_reduction_macro (double, max, -1, array[i], num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker
+ vector);
+}
+int
+main (void)
+{
+ test_reductions ();
+ test_reductions_minmax ();
return 0;
}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c
index 59d49c1b7a1..79355eded80 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c
@@ -1,59 +1,56 @@
/* { dg-do run { target { ! { hppa*-*-hpux* } } } } */
+/* Ignore vector_length warnings for offloaded (nvptx) targets. */
+/* { dg-additional-options "-foffload=-w" } */
+
/* complex reductions. */
#include <stdlib.h>
-#include <stdbool.h>
-#include <math.h>
#include <complex.h>
+#include "reduction.h"
-#define vl 32
+const int ng = 8;
+const int nw = 4;
+const int vl = 32;
-int
-main(void)
+static void
+test_reductions (void)
{
- const int n = 1000;
+ const int n = 10;
int i;
- double _Complex vresult, result, array[n];
- bool lvresult, lresult;
-
- for (i = 0; i < n; i++)
- array[i] = i;
-
- result = 0;
- vresult = 0;
-
- /* '&&' reductions. */
-#pragma acc parallel vector_length (vl) copy(lresult)
-#pragma acc loop reduction (&&:lresult)
- for (i = 0; i < n; i++)
- lresult = lresult && (creal(result) > creal(array[i]));
-
- /* Verify the reduction. */
- for (i = 0; i < n; i++)
- lvresult = lresult && (creal(result) > creal(array[i]));
+ double _Complex array[n];
- if (lresult != lvresult)
- abort ();
-
- result = 5;
- vresult = 5;
-
- lresult = false;
- lvresult = false;
-
- /* '||' reductions. */
-#pragma acc parallel vector_length (vl) copy(lresult)
-#pragma acc loop reduction (||:lresult)
- for (i = 0; i < n; i++)
- lresult = lresult || (creal(result) > creal(array[i]));
-
- /* Verify the reduction. */
for (i = 0; i < n; i++)
- lvresult = lresult || (creal(result) > creal(array[i]));
-
- if (lresult != lvresult)
- abort ();
+ array[i] = i+1;
+
+ /* Gang reductions. */
+ check_reduction_op (double, +, 0, creal (array[i]), num_gangs (ng), gang);
+ check_reduction_op (double, *, 1, creal (array[i]), num_gangs (ng), gang);
+
+ /* Worker reductions. */
+ check_reduction_op (double, +, 0, creal (array[i]), num_workers (nw),
+ worker);
+ check_reduction_op (double, *, 1, creal (array[i]), num_workers (nw),
+ worker);
+
+ /* Vector reductions. */
+ check_reduction_op (double, +, 0, creal (array[i]), vector_length (vl),
+ vector);
+ check_reduction_op (double, *, 1, creal (array[i]), vector_length (vl),
+ vector);
+
+ /* Combined reductions. */
+ check_reduction_op (double, +, 0, creal (array[i]), num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker
+ vector);
+ check_reduction_op (double, *, 1, creal (array[i]), num_gangs (ng)
+ num_workers (nw) vector_length (vl), gang worker
+ vector);
+}
+int
+main (void)
+{
+ test_reductions ();
return 0;
}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c
index efe87027bbf..46b553a61ff 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c
@@ -1,32 +1,57 @@
+/* { dg-do run } */
+/* { dg-additional-options "-w" } */
+
+/* Ignore vector_length warnings for offloaded (nvptx) targets. */
+/* { dg-additional-options "-foffload=-w" } */
+
+/* Multiple reductions. */
+
#include <stdio.h>
#include <stdlib.h>
+const int ng = 8;
+const int nw = 4;
+const int vl = 32;
+
+const int n = 100;
+
+#define DO_PRAGMA(x) _Pragma (#x)
+
+#define check_reduction(gwv_par, gwv_loop) \
+ { \
+ s1 = 2; s2 = 5; \
+DO_PRAGMA (acc parallel gwv_par copy (s1, s2)) \
+DO_PRAGMA (acc loop gwv_loop reduction (+:s1, s2)) \
+ for (i = 0; i < n; i++) \
+ { \
+ s1 = s1 + 3; \
+ s2 = s2 + 5; \
+ } \
+ \
+ if (s1 != v1 && s2 != v2) \
+ abort (); \
+ }
+
int
main (void)
{
int s1 = 2, s2 = 5, v1 = 2, v2 = 5;
- int n = 100;
int i;
-#pragma acc parallel vector_length (32) copy(s1,s2)
-#pragma acc loop reduction (+:s1, s2)
- for (i = 0; i < n; i++)
- {
- s1 = s1 + 3;
- s2 = s2 + 2;
- }
-
for (i = 0; i < n; i++)
{
v1 = v1 + 3;
v2 = v2 + 2;
}
-
- if (s1 != v1)
- abort ();
-
- if (s2 != v2)
- abort ();
-
+
+ check_reduction (num_gangs (ng), gang);
+
+ /* Nvptx targets require a vector_length or 32 in to allow spinlocks with
+ gangs. */
+ check_reduction (num_workers (nw) vector_length (vl), worker);
+ check_reduction (vector_length (vl), vector);
+ check_reduction (num_gangs (ng) num_workers (nw) vector_length (vl), gang
+ worker vector);
+
return 0;
}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c
new file mode 100644
index 00000000000..af30b31bd34
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c
@@ -0,0 +1,36 @@
+/* { dg-do run } */
+/* { dg-additional-options "-w" } */
+
+/* Test reductions on explicitly private variables. */
+
+#include <assert.h>
+
+int
+main ()
+{
+ int i, j, red[10];
+ int v;
+
+ for (i = 0; i < 10; i++)
+ red[i] = -1;
+
+#pragma acc parallel copyout(red)
+ {
+#pragma acc loop gang private(v)
+ for (j = 0; j < 10; j++)
+ {
+ v = j;
+
+#pragma acc loop vector reduction (+:v)
+ for (i = 0; i < 100; i++)
+ v++;
+
+ red[j] = v;
+ }
+ }
+
+ for (i = 0; i < 10; i++)
+ assert (red[i] == i + 100);
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c
index b23c75877f8..76c33e4470d 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c
@@ -118,12 +118,363 @@ void gwv_np_1()
}
+/* Test of reduction on loop directive (gangs, workers and vectors, non-private
+ reduction variable: separate gang and worker/vector loops). */
+
+void gwv_np_2()
+{
+ int i, j, arr[32768], res = 0, hres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ copy(res)
+ {
+ #pragma acc loop gang reduction(+:res)
+ for (j = 0; j < 32; j++)
+ {
+ #pragma acc loop worker vector reduction(+:res)
+ for (i = 0; i < 1024; i++)
+ res += arr[j * 1024 + i];
+ }
+ /* "res" is non-private, and is not available until after the parallel
+ region. */
+ }
+
+ for (i = 0; i < 32768; i++)
+ hres += arr[i];
+
+ assert (res == hres);
+}
+
+
+/* Test of reduction on loop directive (gangs, workers and vectors, non-private
+ reduction variable: separate gang and worker/vector loops). */
+
+void gwv_np_3()
+{
+ int i, j;
+ double arr[32768], res = 0, hres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ copyin(arr) copy(res)
+ {
+ #pragma acc loop gang reduction(+:res)
+ for (j = 0; j < 32; j++)
+ {
+ #pragma acc loop worker vector reduction(+:res)
+ for (i = 0; i < 1024; i++)
+ res += arr[j * 1024 + i];
+ }
+ }
+
+ for (i = 0; i < 32768; i++)
+ hres += arr[i];
+
+ assert (res == hres);
+}
+
+
+/* Test of reduction on loop directive (gangs, workers and vectors, multiple
+ non-private reduction variables, float type). */
+
+void gwv_np_4()
+{
+ int i, j;
+ float arr[32768];
+ float res = 0, mres = 0, hres = 0, hmres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ copy(res, mres)
+ {
+ #pragma acc loop gang reduction(+:res) reduction(max:mres)
+ for (j = 0; j < 32; j++)
+ {
+ #pragma acc loop worker vector reduction(+:res) reduction(max:mres)
+ for (i = 0; i < 1024; i++)
+ {
+ res += arr[j * 1024 + i];
+ if (arr[j * 1024 + i] > mres)
+ mres = arr[j * 1024 + i];
+ }
+
+ #pragma acc loop worker vector reduction(+:res) reduction(max:mres)
+ for (i = 0; i < 1024; i++)
+ {
+ res += arr[j * 1024 + (1023 - i)];
+ if (arr[j * 1024 + (1023 - i)] > mres)
+ mres = arr[j * 1024 + (1023 - i)];
+ }
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ for (i = 0; i < 1024; i++)
+ {
+ hres += arr[j * 1024 + i];
+ hres += arr[j * 1024 + (1023 - i)];
+ if (arr[j * 1024 + i] > hmres)
+ hmres = arr[j * 1024 + i];
+ if (arr[j * 1024 + (1023 - i)] > hmres)
+ hmres = arr[j * 1024 + (1023 - i)];
+ }
+
+ assert (res == hres);
+ assert (mres == hmres);
+}
+
+
+/* Test of reduction on loop directive (vectors, private reduction
+ variable). */
+
+void v_p_1()
+{
+ int i, j, arr[1024], out[32], res = 0, hres = 0;
+
+ for (i = 0; i < 1024; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ private(res) copyout(out)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ res = 0;
+
+ #pragma acc loop vector reduction(+:res)
+ for (i = 0; i < 32; i++)
+ res += arr[j * 32 + i];
+
+ out[j] = res;
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ {
+ hres = 0;
+
+ for (i = 0; i < 32; i++)
+ hres += arr[j * 32 + i];
+
+ assert (out[j] == hres);
+ }
+}
+
+
+/* Test of reduction on loop directive (vector reduction in
+ gang-partitioned/worker-partitioned mode, private reduction variable). */
+
+void v_p_2()
+{
+ int i, j, k;
+ double ina[1024], inb[1024], out[1024], acc;
+
+ for (j = 0; j < 32; j++)
+ for (i = 0; i < 32; i++)
+ {
+ ina[j * 32 + i] = (i == j) ? 2.0 : 0.0;
+ inb[j * 32 + i] = (double) (i + j);
+ }
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ private(acc) copyin(ina, inb) copyout(out)
+ {
+ #pragma acc loop gang worker
+ for (k = 0; k < 32; k++)
+ for (j = 0; j < 32; j++)
+ {
+ acc = 0;
+
+ #pragma acc loop vector reduction(+:acc)
+ for (i = 0; i < 32; i++)
+ acc += ina[k * 32 + i] * inb[i * 32 + j];
+
+ out[k * 32 + j] = acc;
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ for (i = 0; i < 32; i++)
+ assert (out[j * 32 + i] == (i + j) * 2);
+}
+
+
+/* Test of reduction on loop directive (workers, private reduction
+ variable). */
+
+void w_p_1()
+{
+ int i, j, arr[1024], out[32], res = 0, hres = 0;
+
+ for (i = 0; i < 1024; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ private(res) copyout(out)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ res = 0;
+
+ #pragma acc loop worker reduction(+:res)
+ for (i = 0; i < 32; i++)
+ res += arr[j * 32 + i];
+
+ out[j] = res;
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ {
+ hres = 0;
+
+ for (i = 0; i < 32; i++)
+ hres += arr[j * 32 + i];
+
+ assert (out[j] == hres);
+ }
+}
+
+
+/* Test of reduction on loop directive (workers and vectors, private reduction
+ variable). */
+
+void wv_p_1()
+{
+ int i, j, arr[1024], out[32], res = 0, hres = 0;
+
+ for (i = 0; i < 1024; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ private(res) copyout(out)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ res = 0;
+
+ #pragma acc loop worker vector reduction(+:res)
+ for (i = 0; i < 32; i++)
+ res += arr[j * 32 + i];
+
+ out[j] = res;
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ {
+ hres = 0;
+
+ for (i = 0; i < 32; i++)
+ hres += arr[j * 32 + i];
+
+ assert (out[j] == hres);
+ }
+}
+
+
+/* Test of reduction on loop directive (workers and vectors, private reduction
+ variable). */
+
+void wv_p_2()
+{
+ int i, j, arr[32768], out[32], res = 0, hres = 0;
+
+ for (i = 0; i < 32768; i++)
+ arr[i] = i;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ private(res) copyout(out)
+ {
+ #pragma acc loop gang
+ for (j = 0; j < 32; j++)
+ {
+ res = j;
+
+ #pragma acc loop worker reduction(+:res)
+ for (i = 0; i < 1024; i++)
+ res += arr[j * 1024 + i];
+
+ #pragma acc loop vector reduction(+:res)
+ for (i = 1023; i >= 0; i--)
+ res += arr[j * 1024 + i];
+
+ out[j] = res;
+ }
+ }
+
+ for (j = 0; j < 32; j++)
+ {
+ hres = j;
+
+ for (i = 0; i < 1024; i++)
+ hres += arr[j * 1024 + i] * 2;
+
+ assert (out[j] == hres);
+ }
+}
+
+
+/* Test of reduction on loop directive (workers and vectors, private reduction
+ variable: gang-redundant mode). */
+
+void wv_p_3()
+{
+ int i, arr[1024], out[32], res = 0, hres = 0;
+
+ for (i = 0; i < 1024; i++)
+ arr[i] = i ^ 33;
+
+ #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
+ private(res) copyin(arr) copyout(out)
+ {
+ /* Private variables aren't initialized by default in openacc. */
+ res = 0;
+
+ /* "res" should be available at the end of the following loop (and should
+ have the same value redundantly in each gang). */
+ #pragma acc loop worker vector reduction(+:res)
+ for (i = 0; i < 1024; i++)
+ res += arr[i];
+
+ #pragma acc loop gang (static: 1)
+ for (i = 0; i < 32; i++)
+ out[i] = res;
+ }
+
+ for (i = 0; i < 1024; i++)
+ hres += arr[i];
+
+ for (i = 0; i < 32; i++)
+ assert (out[i] == hres);
+}
+
+
int main()
{
g_np_1();
gv_np_1();
gw_np_1();
gwv_np_1();
+ gwv_np_2();
+ gwv_np_3();
+ gwv_np_4();
+ v_p_1();
+ v_p_2();
+ w_p_1();
+ wv_p_1();
+ wv_p_2();
+ wv_p_3();
return 0;
}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h
new file mode 100644
index 00000000000..1b3f8d45ace
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h
@@ -0,0 +1,43 @@
+#ifndef REDUCTION_H
+#define REDUCTION_H
+
+#define DO_PRAGMA(x) _Pragma (#x)
+
+#define check_reduction_op(type, op, init, b, gwv_par, gwv_loop) \
+ { \
+ type res, vres; \
+ res = (init); \
+DO_PRAGMA (acc parallel gwv_par copy (res)) \
+DO_PRAGMA (acc loop gwv_loop reduction (op:res)) \
+ for (i = 0; i < n; i++) \
+ res = res op (b); \
+ \
+ vres = (init); \
+ for (i = 0; i < n; i++) \
+ vres = vres op (b); \
+ \
+ if (res != vres) \
+ abort (); \
+ }
+
+#define check_reduction_macro(type, op, init, b, gwv_par, gwv_loop) \
+ { \
+ type res, vres; \
+ res = (init); \
+ DO_PRAGMA (acc parallel gwv_par copy(res)) \
+DO_PRAGMA (acc loop gwv_loop reduction (op:res)) \
+ for (i = 0; i < n; i++) \
+ res = op (res, (b)); \
+ \
+ vres = (init); \
+ for (i = 0; i < n; i++) \
+ vres = op (vres, (b)); \
+ \
+ if (res != vres) \
+ abort (); \
+ }
+
+#define max(a, b) (((a) > (b)) ? (a) : (b))
+#define min(a, b) (((a) < (b)) ? (a) : (b))
+
+#endif
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90 b/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90
index 4afb562e00c..94e4228e7a9 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90
@@ -6,9 +6,11 @@
program main
implicit none
- integer, parameter :: n = 100
- integer :: array(n), i
-
+ integer,parameter :: size = 100
+ integer :: array(size), i, n
+
+ n = size
+
!$acc data copy(array)
call kernels(array, n)
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90 b/libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90
new file mode 100644
index 00000000000..31db7e12454
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90
@@ -0,0 +1,47 @@
+! { dg-do run }
+! { dg-additional-options "-w" }
+
+program reduction
+ implicit none
+ integer, parameter :: n = 10
+ integer s1, s2
+ include "openacc_lib.h"
+
+ s1 = 0
+ s2 = 0
+
+ !$acc parallel reduction(+:s1,s2) num_gangs (n) copy(s1)
+ s1 = s1 + 1
+ s2 = s2 + 1
+ !$acc end parallel
+
+ if (acc_get_device_type () .eq. acc_device_nvidia) then
+ if (s1 .ne. n) call abort
+ if (s2 .ne. n) call abort
+ else
+ if (s1 .ne. 1) call abort
+ if (s2 .ne. 1) call abort
+ end if
+
+ ! Test reductions inside subroutines
+
+ s1 = 0
+ s2 = 0
+ call redsub (s1, s2, n)
+
+ if (acc_get_device_type () .eq. acc_device_nvidia) then
+ if (s1 .ne. n) call abort
+ else
+ if (s2 .ne. 1) call abort
+ end if
+end program reduction
+
+subroutine redsub(s1, s2, n)
+ implicit none
+ integer :: s1, s2, n
+
+ !$acc parallel reduction(+:s1,s2) num_gangs (10) copy(s1)
+ s1 = s1 + 1
+ s2 = s2 + 1
+ !$acc end parallel
+end subroutine redsub
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90 b/libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90
new file mode 100644
index 00000000000..63bde44100d
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90
@@ -0,0 +1,20 @@
+program foo
+ implicit none
+ integer :: i
+ integer :: temp = 0
+ integer :: temp2 = 0
+
+ !$acc parallel
+ !$acc loop gang private(temp)
+ do i=1, 10000
+ temp = 0
+ enddo
+ !$acc end parallel
+
+ !$acc parallel reduction(+:temp2)
+ !$acc loop gang reduction(+:temp2)
+ do i=1, 10000
+ temp2 = 0
+ enddo
+ !$acc end parallel
+end program foo
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90 b/libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90
new file mode 100644
index 00000000000..7c2e5eef904
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90
@@ -0,0 +1,51 @@
+MODULE reduction_test
+
+CONTAINS
+
+SUBROUTINE reduction_kernel(x_min,x_max,y_min,y_max,arr,sum)
+
+ IMPLICIT NONE
+
+ INTEGER :: x_min,x_max,y_min,y_max
+ REAL(KIND=8), DIMENSION(x_min-2:x_max+2,y_min-2:y_max+2) :: arr
+ REAL(KIND=8) :: sum
+
+ INTEGER :: j,k
+
+!$ACC DATA PRESENT(arr) COPY(sum)
+!$ACC PARALLEL LOOP REDUCTION(+ : sum)
+ DO k=y_min,y_max
+ DO j=x_min,x_max
+ sum=sum+arr(j,k)
+ ENDDO
+ ENDDO
+!$ACC END PARALLEL LOOP
+!$ACC END DATA
+END SUBROUTINE reduction_kernel
+
+END MODULE reduction_test
+
+program main
+ use reduction_test
+
+ integer :: x_min,x_max,y_min,y_max
+ real(kind=8), dimension(1:10,1:10) :: arr
+ real(kind=8) :: sum
+
+ x_min = 1
+ x_max = 2
+ y_min = 1
+ y_max = 2
+
+ arr(:,:) = 1.0
+
+ sum = 0.0
+
+ !$acc data copy(arr)
+
+ call reduction_kernel(x_min,x_max,y_min,y_max,arr,sum)
+
+ !$acc end data
+
+ if (sum .ne. 4.0) call abort
+end program
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
index db0a52d6a49..e51509f3397 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
@@ -1,28 +1,55 @@
! { dg-do run }
+! { dg-additional-options "-w" }
! Integer reductions
program reduction_1
implicit none
- integer, parameter :: n = 10, vl = 32
- integer :: i, vresult, result
- logical :: lresult, lvresult
+ integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32
+ integer :: i, vresult, rg, rw, rv, rc
+ logical :: lrg, lrw, lrv, lrc, lvresult
integer, dimension (n) :: array
do i = 1, n
array(i) = i
end do
- result = 0
+ !
+ ! '+' reductions
+ !
+
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
vresult = 0
- ! '+' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(+:rg) gang
+ do i = 1, n
+ rg = rg + array(i)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(+:result)
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(+:rw) worker
do i = 1, n
- result = result + array(i)
+ rw = rw + array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(+:rv) vector
+ do i = 1, n
+ rv = rv + array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(+:rc) gang worker vector
+ do i = 1, n
+ rc = rc + array(i)
end do
!$acc end parallel
@@ -31,17 +58,46 @@ program reduction_1
vresult = vresult + array(i)
end do
- if (result.ne.vresult) call abort
-
- result = 0
- vresult = 0
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+ !
! '*' reductions
+ !
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(*:result)
+ rg = 1
+ rw = 1
+ rv = 1
+ rc = 1
+ vresult = 1
+
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(*:rg) gang
do i = 1, n
- result = result * array(i)
+ rg = rg * array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(*:rw) worker
+ do i = 1, n
+ rw = rw * array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(*:rv) vector
+ do i = 1, n
+ rv = rv * array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(*:rc) gang worker vector
+ do i = 1, n
+ rc = rc * array(i)
end do
!$acc end parallel
@@ -50,17 +106,46 @@ program reduction_1
vresult = vresult * array(i)
end do
- if (result.ne.vresult) call abort
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+
+ !
+ ! 'max' reductions
+ !
- result = 0
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
vresult = 0
- ! 'max' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(max:rg) gang
+ do i = 1, n
+ rg = max (rg, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(max:rw) worker
+ do i = 1, n
+ rw = max (rw, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(max:rv) vector
+ do i = 1, n
+ rv = max (rv, array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(max:result)
+ !$acc parallel num_gangs(ng) Num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(max:rc) gang worker vector
do i = 1, n
- result = max (result, array(i))
+ rc = max (rc, array(i))
end do
!$acc end parallel
@@ -69,17 +154,46 @@ program reduction_1
vresult = max (vresult, array(i))
end do
- if (result.ne.vresult) call abort
-
- result = 1
- vresult = 1
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+ !
! 'min' reductions
+ !
+
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
+ vresult = 0
+
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(min:rg) gang
+ do i = 1, n
+ rg = min (rg, array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(min:result)
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(min:rw) worker
do i = 1, n
- result = min (result, array(i))
+ rw = min (rw, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(min:rv) vector
+ do i = 1, n
+ rv = min (rv, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(min:rc) gang worker vector
+ do i = 1, n
+ rc = min (rc, array(i))
end do
!$acc end parallel
@@ -88,17 +202,46 @@ program reduction_1
vresult = min (vresult, array(i))
end do
- if (result.ne.vresult) call abort
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+
+ !
+ ! 'iand' reductions
+ !
- result = 1
+ rg = 1
+ rw = 1
+ rv = 1
+ rc = 1
vresult = 1
- ! 'iand' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(iand:rg) gang
+ do i = 1, n
+ rg = iand (rg, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(iand:rw) worker
+ do i = 1, n
+ rw = iand (rw, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(iand:rv) vector
+ do i = 1, n
+ rv = iand (rv, array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(iand:result)
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(iand:rc) gang worker vector
do i = 1, n
- result = iand (result, array(i))
+ rc = iand (rc, array(i))
end do
!$acc end parallel
@@ -107,17 +250,46 @@ program reduction_1
vresult = iand (vresult, array(i))
end do
- if (result.ne.vresult) call abort
-
- result = 1
- vresult = 1
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+ !
! 'ior' reductions
+ !
+
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
+ vresult = 0
+
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(ior:rg) gang
+ do i = 1, n
+ rg = ior (rg, array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(ior:result)
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(ior:rw) worker
do i = 1, n
- result = ior (result, array(i))
+ rw = ior (rw, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(ior:rv) gang
+ do i = 1, n
+ rv = ior (rv, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(ior:rc) gang worker vector
+ do i = 1, n
+ rc = ior (rc, array(i))
end do
!$acc end parallel
@@ -126,17 +298,46 @@ program reduction_1
vresult = ior (vresult, array(i))
end do
- if (result.ne.vresult) call abort
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
- result = 0
+ !
+ ! 'ieor' reductions
+ !
+
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
vresult = 0
- ! 'ieor' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(ieor:rg) gang
+ do i = 1, n
+ rg = ieor (rg, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(ieor:rw) worker
+ do i = 1, n
+ rw = ieor (rw, array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(ieor:result)
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(ieor:rv) vector
do i = 1, n
- result = ieor (result, array(i))
+ rv = ieor (rv, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(ieor:rc) gang worker vector
+ do i = 1, n
+ rc = ieor (rc, array(i))
end do
!$acc end parallel
@@ -145,17 +346,46 @@ program reduction_1
vresult = ieor (vresult, array(i))
end do
- if (result.ne.vresult) call abort
-
- lresult = .false.
- lvresult = .false.
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+ !
! '.and.' reductions
+ !
+
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
+ lvresult = .true.
+
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.and.:lrg) gang
+ do i = 1, n
+ lrg = lrg .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.and.:lrw) worker
+ do i = 1, n
+ lrw = lrw .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.and.:lrv) vector
+ do i = 1, n
+ lrv = lrv .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.and.:lresult)
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.and.:lrc) gang worker vector
do i = 1, n
- lresult = lresult .and. (array(i) .ge. 5)
+ lrc = lrc .and. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -164,17 +394,46 @@ program reduction_1
lvresult = lvresult .and. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+
+ !
+ ! '.or.' reductions
+ !
- lresult = .false.
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
lvresult = .false.
- ! '.or.' reductions
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.or.:lrg) gang
+ do i = 1, n
+ lrg = lrg .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.or.:lrw) worker
+ do i = 1, n
+ lrw = lrw .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.or.:lrv) vector
+ do i = 1, n
+ lrv = lrv .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.or.:lresult)
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.or.:lrc) gang worker vector
do i = 1, n
- lresult = lresult .or. (array(i) .ge. 5)
+ lrc = lrc .or. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -183,17 +442,46 @@ program reduction_1
lvresult = lvresult .or. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
-
- lresult = .false.
- lvresult = .false.
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+ !
! '.eqv.' reductions
+ !
+
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
+ lvresult = .true.
+
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.eqv.:lrg) gang
+ do i = 1, n
+ lrg = lrg .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.eqv.:lrw) worker
+ do i = 1, n
+ lrw = lrw .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.eqv.:lrv) vector
+ do i = 1, n
+ lrv = lrv .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.eqv.:lresult)
+ !$acc parallel num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.eqv.:lrc) gang worker vector
do i = 1, n
- lresult = lresult .eqv. (array(i) .ge. 5)
+ lrc = lrc .eqv. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -202,17 +490,46 @@ program reduction_1
lvresult = lvresult .eqv. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
-
- lresult = .false.
- lvresult = .false.
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+ !
! '.neqv.' reductions
+ !
+
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
+ lvresult = .true.
+
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.neqv.:lrg) gang
+ do i = 1, n
+ lrg = lrg .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.neqv.:lrw) worker
+ do i = 1, n
+ lrw = lrw .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.neqv.:lrv) vector
+ do i = 1, n
+ lrv = lrv .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.neqv.:lresult)
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.neqv.:lrc) gang worker vector
do i = 1, n
- lresult = lresult .neqv. (array(i) .ge. 5)
+ lrc = lrc .neqv. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -221,5 +538,8 @@ program reduction_1
lvresult = lvresult .neqv. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
end program reduction_1
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90
index 96955ce71ba..b828feb60de 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90
@@ -5,26 +5,52 @@
program reduction_2
implicit none
- integer, parameter :: n = 10, vl = 32
+ integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32
integer :: i
- real, parameter :: e = .001
- real :: vresult, result
- logical :: lresult, lvresult
- real, dimension (n) :: array
+ real :: vresult, rg, rw, rv, rc
+ real, parameter :: e = 0.001
+ logical :: lrg, lrw, lrv, lrc, lvresult
+ real, dimension (n) :: array
do i = 1, n
array(i) = i
end do
- result = 0
+ !
+ ! '+' reductions
+ !
+
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
vresult = 0
- ! '+' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(+:rg) gang
+ do i = 1, n
+ rg = rg + array(i)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(+:result)
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(+:rw) worker
do i = 1, n
- result = result + array(i)
+ rw = rw + array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(+:rv) vector
+ do i = 1, n
+ rv = rv + array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(+:rc) gang worker vector
+ do i = 1, n
+ rc = rc + array(i)
end do
!$acc end parallel
@@ -33,17 +59,46 @@ program reduction_2
vresult = vresult + array(i)
end do
- if (abs (result - vresult) .ge. e) call abort
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+
+ !
+ ! '*' reductions
+ !
- result = 1
+ rg = 1
+ rw = 1
+ rv = 1
+ rc = 1
vresult = 1
- ! '*' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(*:rg) gang
+ do i = 1, n
+ rg = rg * array(i)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(*:result)
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(*:rw) worker
do i = 1, n
- result = result * array(i)
+ rw = rw * array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(*:rv) vector
+ do i = 1, n
+ rv = rv * array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(*:rc) gang worker vector
+ do i = 1, n
+ rc = rc * array(i)
end do
!$acc end parallel
@@ -52,17 +107,46 @@ program reduction_2
vresult = vresult * array(i)
end do
- if (result.ne.vresult) call abort
+ if (abs (rg - vresult) .ge. e) call abort
+ if (abs (rw - vresult) .ge. e) call abort
+ if (abs (rv - vresult) .ge. e) call abort
+ if (abs (rc - vresult) .ge. e) call abort
+
+ !
+ ! 'max' reductions
+ !
- result = 0
+ rg = 0
+ rw = 0
+ rg = 0
+ rc = 0
vresult = 0
- ! 'max' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(max:rg) gang
+ do i = 1, n
+ rg = max (rg, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(max:rw) worker
+ do i = 1, n
+ rw = max (rw, array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(max:result)
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(max:rv) vector
do i = 1, n
- result = max (result, array(i))
+ rv = max (rv, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(max:rc) gang worker vector
+ do i = 1, n
+ rc = max (rc, array(i))
end do
!$acc end parallel
@@ -71,17 +155,46 @@ program reduction_2
vresult = max (vresult, array(i))
end do
- if (result.ne.vresult) call abort
-
- result = 1
- vresult = 1
+ if (abs (rg - vresult) .ge. e) call abort
+ if (abs (rw - vresult) .ge. e) call abort
+ if (abs (rg - vresult) .ge. e) call abort
+ if (abs (rc - vresult) .ge. e) call abort
+ !
! 'min' reductions
+ !
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(min:result)
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
+ vresult = 0
+
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(min:rg) gang
+ do i = 1, n
+ rg = min (rg, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(min:rw) worker
+ do i = 1, n
+ rw = min (rw, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(min:rv) vector
do i = 1, n
- result = min (result, array(i))
+ rv = min (rv, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(min:rc) gang worker vector
+ do i = 1, n
+ rc = min (rc, array(i))
end do
!$acc end parallel
@@ -90,17 +203,46 @@ program reduction_2
vresult = min (vresult, array(i))
end do
- if (result.ne.vresult) call abort
+ if (rg .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+
+ !
+ ! '.and.' reductions
+ !
- lresult = .true.
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
lvresult = .true.
- ! '.and.' reductions
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.and.:lrg) gang
+ do i = 1, n
+ lrg = lrg .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.and.:lresult)
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.and.:lrw) worker
do i = 1, n
- lresult = lresult .and. (array(i) .ge. 5)
+ lrw = lrw .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.and.:lrv) vector
+ do i = 1, n
+ lrv = lrv .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.and.:lrc) gang worker vector
+ do i = 1, n
+ lrc = lrc .and. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -109,17 +251,46 @@ program reduction_2
lvresult = lvresult .and. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+
+ !
+ ! '.or.' reductions
+ !
- lresult = .false.
+ lrg = .false.
+ lrw = .false.
+ lrv = .false.
+ lrc = .false.
lvresult = .false.
- ! '.or.' reductions
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.or.:lrg) gang
+ do i = 1, n
+ lrg = lrg .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.or.:lrw) worker
+ do i = 1, n
+ lrw = lrw .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.or.:lresult)
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.or.:lrv) vector
do i = 1, n
- lresult = lresult .or. (array(i) .ge. 5)
+ lrv = lrv .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.or.:lrc) gang worker vector
+ do i = 1, n
+ lrc = lrc .or. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -128,17 +299,46 @@ program reduction_2
lvresult = lvresult .or. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
-
- lresult = .false.
- lvresult = .false.
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+ !
! '.eqv.' reductions
+ !
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.eqv.:lresult)
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
+ lvresult = .true.
+
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.eqv.:lrg) gang
+ do i = 1, n
+ lrg = lrg .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.eqv.:lrw) worker
do i = 1, n
- lresult = lresult .eqv. (array(i) .ge. 5)
+ lrw = lrw .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.eqv.:lrv) vector
+ do i = 1, n
+ lrv = lrv .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.eqv.:lrc) gang worker vector
+ do i = 1, n
+ lrc = lrc .eqv. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -147,17 +347,46 @@ program reduction_2
lvresult = lvresult .eqv. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
-
- lresult = .false.
- lvresult = .false.
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+ !
! '.neqv.' reductions
+ !
+
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
+ lvresult = .true.
+
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.neqv.:lrg) gang
+ do i = 1, n
+ lrg = lrg .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.neqv.:lrw) worker
+ do i = 1, n
+ lrw = lrw .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.neqv.:lrv) vector
+ do i = 1, n
+ lrv = lrv .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.neqv.:lresult)
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.neqv.:lrc) gang worker vector
do i = 1, n
- lresult = lresult .neqv. (array(i) .ge. 5)
+ lrc = lrc .neqv. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -166,5 +395,8 @@ program reduction_2
lvresult = lvresult .neqv. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
end program reduction_2
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90
index ecf7fbea3b8..3d8d753cfed 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90
@@ -5,26 +5,52 @@
program reduction_3
implicit none
- integer, parameter :: n = 10, vl = 32
+ integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32
integer :: i
- double precision, parameter :: e = .001
- double precision :: vresult, result
- logical :: lresult, lvresult
+ double precision :: vresult, rg, rw, rv, rc
+ double precision, parameter :: e = 0.001
+ logical :: lrg, lrw, lrv, lrc, lvresult
double precision, dimension (n) :: array
do i = 1, n
array(i) = i
end do
- result = 0
+ !
+ ! '+' reductions
+ !
+
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
vresult = 0
- ! '+' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(+:rg) gang
+ do i = 1, n
+ rg = rg + array(i)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(+:result)
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(+:rw) worker
do i = 1, n
- result = result + array(i)
+ rw = rw + array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(+:rv) vector
+ do i = 1, n
+ rv = rv + array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(+:rc) gang worker vector
+ do i = 1, n
+ rc = rc + array(i)
end do
!$acc end parallel
@@ -33,17 +59,46 @@ program reduction_3
vresult = vresult + array(i)
end do
- if (abs (result - vresult) .ge. e) call abort
+ if (abs (rg - vresult) .ge. e) call abort
+ if (abs (rw - vresult) .ge. e) call abort
+ if (abs (rv - vresult) .ge. e) call abort
+ if (abs (rc - vresult) .ge. e) call abort
+
+ !
+ ! '*' reductions
+ !
- result = 1
+ rg = 1
+ rw = 1
+ rv = 1
+ rc = 1
vresult = 1
- ! '*' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(*:rg) gang
+ do i = 1, n
+ rg = rg * array(i)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(*:result)
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(*:rw) worker
do i = 1, n
- result = result * array(i)
+ rw = rw * array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(*:rv) vector
+ do i = 1, n
+ rv = rv * array(i)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(*:rc) gang worker vector
+ do i = 1, n
+ rc = rc * array(i)
end do
!$acc end parallel
@@ -52,17 +107,46 @@ program reduction_3
vresult = vresult * array(i)
end do
- if (result.ne.vresult) call abort
+ if (abs (rg - vresult) .ge. e) call abort
+ if (abs (rw - vresult) .ge. e) call abort
+ if (abs (rv - vresult) .ge. e) call abort
+ if (abs (rc - vresult) .ge. e) call abort
+
+ !
+ ! 'max' reductions
+ !
- result = 0
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
vresult = 0
- ! 'max' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(max:rg) gang
+ do i = 1, n
+ rg = max (rg, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(max:rw) worker
+ do i = 1, n
+ rw = max (rw, array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(max:result)
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(max:rv) vector
do i = 1, n
- result = max (result, array(i))
+ rv = max (rv, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(max:rc) gang worker vector
+ do i = 1, n
+ rc = max (rc, array(i))
end do
!$acc end parallel
@@ -71,17 +155,46 @@ program reduction_3
vresult = max (vresult, array(i))
end do
- if (result.ne.vresult) call abort
-
- result = 1
- vresult = 1
+ if (abs (rg - vresult) .ge. e) call abort
+ if (abs (rw - vresult) .ge. e) call abort
+ if (abs (rv - vresult) .ge. e) call abort
+ if (abs (rc - vresult) .ge. e) call abort
+ !
! 'min' reductions
+ !
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(min:result)
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
+ vresult = 0
+
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(min:rg) gang
+ do i = 1, n
+ rg = min (rg, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(min:rw) worker
+ do i = 1, n
+ rw = min (rw, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(min:rv) vector
do i = 1, n
- result = min (result, array(i))
+ rv = min (rv, array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(min:rc) gang worker vector
+ do i = 1, n
+ rc = min (rc, array(i))
end do
!$acc end parallel
@@ -90,17 +203,46 @@ program reduction_3
vresult = min (vresult, array(i))
end do
- if (result.ne.vresult) call abort
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
+
+ !
+ ! '.and.' reductions
+ !
- lresult = .true.
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
lvresult = .true.
- ! '.and.' reductions
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.and.:lrg) gang
+ do i = 1, n
+ lrg = lrg .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.and.:lresult)
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.and.:lrw) worker
do i = 1, n
- lresult = lresult .and. (array(i) .ge. 5)
+ lrw = lrw .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.and.:lrv) vector
+ do i = 1, n
+ lrv = lrv .and. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.and.:lrc) gang worker vector
+ do i = 1, n
+ lrc = lrc .and. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -109,17 +251,46 @@ program reduction_3
lvresult = lvresult .and. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+
+ !
+ ! '.or.' reductions
+ !
- lresult = .false.
+ lrg = .false.
+ lrw = .false.
+ lrv = .false.
+ lrc = .false.
lvresult = .false.
- ! '.or.' reductions
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.or.:lrg) gang
+ do i = 1, n
+ lrg = lrg .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.or.:lrw) worker
+ do i = 1, n
+ lrw = lrw .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.or.:lresult)
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.or.:lrv) vector
do i = 1, n
- lresult = lresult .or. (array(i) .ge. 5)
+ lrv = lrv .or. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.or.:lrc) gang worker vector
+ do i = 1, n
+ lrc = lrc .or. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -128,17 +299,46 @@ program reduction_3
lvresult = lvresult .or. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
-
- lresult = .false.
- lvresult = .false.
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+ !
! '.eqv.' reductions
+ !
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.eqv.:lresult)
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
+ lvresult = .true.
+
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.eqv.:lrg) gang
+ do i = 1, n
+ lrg = lrg .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.eqv.:lrw) worker
do i = 1, n
- lresult = lresult .eqv. (array(i) .ge. 5)
+ lrw = lrw .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.eqv.:lrv) vector
+ do i = 1, n
+ lrv = lrv .eqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.eqv.:lrc) gang worker vector
+ do i = 1, n
+ lrc = lrc .eqv. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -147,17 +347,46 @@ program reduction_3
lvresult = lvresult .eqv. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
-
- lresult = .false.
- lvresult = .false.
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
+ !
! '.neqv.' reductions
+ !
+
+ lrg = .true.
+ lrw = .true.
+ lrv = .true.
+ lrc = .true.
+ lvresult = .true.
+
+ !$acc parallel num_gangs(ng) copy(lrg)
+ !$acc loop reduction(.neqv.:lrg) gang
+ do i = 1, n
+ lrg = lrg .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(lrw)
+ !$acc loop reduction(.neqv.:lrw) worker
+ do i = 1, n
+ lrw = lrw .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(lrv)
+ !$acc loop reduction(.neqv.:lrv) vector
+ do i = 1, n
+ lrv = lrv .neqv. (array(i) .ge. 5)
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(lresult)
- !$acc loop reduction(.neqv.:lresult)
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc)
+ !$acc loop reduction(.neqv.:lrc) gang worker vector
do i = 1, n
- lresult = lresult .neqv. (array(i) .ge. 5)
+ lrc = lrc .neqv. (array(i) .ge. 5)
end do
!$acc end parallel
@@ -166,5 +395,8 @@ program reduction_3
lvresult = lvresult .neqv. (array(i) .ge. 5)
end do
- if (result.ne.vresult) call abort
+ if (lrg .neqv. lvresult) call abort
+ if (lrw .neqv. lvresult) call abort
+ if (lrv .neqv. lvresult) call abort
+ if (lrc .neqv. lvresult) call abort
end program reduction_3
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90
index 8c99fdb32bf..c3bdaf610a1 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90
@@ -5,50 +5,108 @@
program reduction_4
implicit none
- integer, parameter :: n = 10, vl = 32
+ integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32
integer :: i
- complex :: vresult, result
+ real :: vresult, rg, rw, rv, rc
complex, dimension (n) :: array
do i = 1, n
array(i) = i
end do
- result = 0
+ !
+ ! '+' reductions
+ !
+
+ rg = 0
+ rw = 0
+ rv = 0
+ rc = 0
vresult = 0
- ! '+' reductions
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(+:rg) gang
+ do i = 1, n
+ rg = rg + REAL(array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(+:rw) worker
+ do i = 1, n
+ rw = rw + REAL(array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(+:rv) vector
+ do i = 1, n
+ rv = rv + REAL(array(i))
+ end do
+ !$acc end parallel
- !$acc parallel vector_length(vl) num_gangs(1) copy(result)
- !$acc loop reduction(+:result)
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(+:rc) gang worker vector
do i = 1, n
- result = result + array(i)
+ rc = rc + REAL(array(i))
end do
!$acc end parallel
! Verify the results
do i = 1, n
- vresult = vresult + array(i)
+ vresult = vresult + REAL(array(i))
end do
- if (result .ne. vresult) call abort
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
- result = 1
+ !
+ ! '*' reductions
+ !
+
+ rg = 1
+ rw = 1
+ rv = 1
+ rc = 1
vresult = 1
-! ! '*' reductions
-!
-! !$acc parallel vector_length(vl)
-! !$acc loop reduction(*:result)
-! do i = 1, n
-! result = result * array(i)
-! end do
-! !$acc end parallel
-!
-! ! Verify the results
-! do i = 1, n
-! vresult = vresult * array(i)
-! end do
-!
-! if (result.ne.vresult) call abort
+ !$acc parallel num_gangs(ng) copy(rg)
+ !$acc loop reduction(*:rg) gang
+ do i = 1, n
+ rg = rg * REAL(array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_workers(nw) copy(rw)
+ !$acc loop reduction(*:rw) worker
+ do i = 1, n
+ rw = rw * REAL(array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length(vl) copy(rv)
+ !$acc loop reduction(*:rv) vector
+ do i = 1, n
+ rv = rv * REAL(array(i))
+ end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc)
+ !$acc loop reduction(*:rc) gang worker vector
+ do i = 1, n
+ rc = rc * REAL(array(i))
+ end do
+ !$acc end parallel
+
+ ! Verify the results
+ do i = 1, n
+ vresult = vresult * REAL(array(i))
+ end do
+
+ if (rg .ne. vresult) call abort
+ if (rw .ne. vresult) call abort
+ if (rv .ne. vresult) call abort
+ if (rc .ne. vresult) call abort
end program reduction_4
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
index ec13e4e6c07..42106480c81 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
@@ -1,12 +1,17 @@
! { dg-do run }
+! { dg-additional-options "-w" }
! subroutine reduction
program reduction
integer, parameter :: n = 40, c = 10
- integer :: i, vsum, sum
+ integer :: i, vsum, gs, ws, vs, cs, ns
- call redsub (sum, n, c)
+ call redsub_gang (gs, n, c)
+ call redsub_worker (ws, n, c)
+ call redsub_vector (vs, n, c)
+ call redsub_combined (cs, n, c)
+ call redsub_nested (ns, n, c)
vsum = 0
@@ -15,21 +20,80 @@ program reduction
vsum = vsum + c
end do
- if (sum.ne.vsum) call abort ()
+ if (gs .ne. vsum) call abort ()
+ if (ws .ne. vsum) call abort ()
+ if (vs .ne. vsum) call abort ()
+ if (cs .ne. vsum) call abort ()
+ if (ns .ne. vsum) call abort ()
end program reduction
-subroutine redsub(sum, n, c)
+subroutine redsub_gang(sum, n, c)
integer :: sum, n, c
- integer :: s
- s = 0
+ sum = 0
- !$acc parallel vector_length(32) copyin (n, c) copy (s) num_gangs(1)
- !$acc loop reduction(+:s)
+ !$acc parallel copyin (n, c) num_gangs(n) copy(sum)
+ !$acc loop reduction(+:sum) gang
do i = 1, n
- s = s + c
+ sum = sum + c
end do
!$acc end parallel
+end subroutine redsub_gang
- sum = s
-end subroutine redsub
+subroutine redsub_worker(sum, n, c)
+ integer :: sum, n, c
+
+ sum = 0
+
+ !$acc parallel copyin (n, c) num_workers(4) vector_length (32) copy(sum)
+ !$acc loop reduction(+:sum) worker
+ do i = 1, n
+ sum = sum + c
+ end do
+ !$acc end parallel
+end subroutine redsub_worker
+
+subroutine redsub_vector(sum, n, c)
+ integer :: sum, n, c
+
+ sum = 0
+
+ !$acc parallel copyin (n, c) vector_length(32) copy(sum)
+ !$acc loop reduction(+:sum) vector
+ do i = 1, n
+ sum = sum + c
+ end do
+ !$acc end parallel
+end subroutine redsub_vector
+
+subroutine redsub_combined(sum, n, c)
+ integer :: sum, n, c
+
+ sum = 0
+
+ !$acc parallel num_gangs (8) num_workers (4) vector_length(32) copy(sum)
+ !$acc loop reduction(+:sum) gang worker vector
+ do i = 1, n
+ sum = sum + c
+ end do
+ !$acc end parallel
+end subroutine redsub_combined
+
+subroutine redsub_nested(sum, n, c)
+ integer :: sum, n, c
+ integer :: ii, jj
+
+ ii = n / 10;
+ jj = 10;
+ sum = 0
+
+ !$acc parallel num_gangs (8) copy(sum)
+ !$acc loop reduction(+:sum) gang
+ do i = 1, ii
+ !$acc loop reduction(+:sum) vector
+ do j = 1, jj
+ sum = sum + c
+ end do
+ end do
+ !$acc end parallel
+end subroutine redsub_nested
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90
index 2ff6f5fd17d..f3ed27527f5 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90
@@ -1,30 +1,94 @@
! { dg-do run }
+! { dg-additional-options "-cpp -w" }
program reduction
implicit none
- integer, parameter :: n = 100
- integer :: i, s1, s2, vs1, vs2
+ integer, parameter :: n = 100, n2 = 1000, chunksize = 10
+ integer :: i, gs1, gs2, ws1, ws2, vs1, vs2, cs1, cs2, hs1, hs2
+ integer :: j, red, vred
- s1 = 0
- s2 = 0
+ gs1 = 0
+ gs2 = 0
+ ws1 = 0
+ ws2 = 0
vs1 = 0
vs2 = 0
+ cs1 = 0
+ cs2 = 0
+ hs1 = 0
+ hs2 = 0
- !$acc parallel vector_length (32) copy(s1, s2)
- !$acc loop reduction(+:s1, s2)
+ !$acc parallel num_gangs (1000) copy(gs1, gs2)
+ !$acc loop reduction(+:gs1, gs2) gang
do i = 1, n
- s1 = s1 + 1
- s2 = s2 + 2
+ gs1 = gs1 + 1
+ gs2 = gs2 + 2
end do
!$acc end parallel
- ! Verify the results
+ !$acc parallel num_workers (4) vector_length (32) copy(ws1, ws2)
+ !$acc loop reduction(+:ws1, ws2) worker
+ do i = 1, n
+ ws1 = ws1 + 1
+ ws2 = ws2 + 2
+ end do
+ !$acc end parallel
+
+ !$acc parallel vector_length (32) copy(vs1, vs2)
+ !$acc loop reduction(+:vs1, vs2) vector
do i = 1, n
vs1 = vs1 + 1
vs2 = vs2 + 2
end do
+ !$acc end parallel
+
+ !$acc parallel num_gangs(8) num_workers(4) vector_length(32) copy(cs1, cs2)
+ !$acc loop reduction(+:cs1, cs2) gang worker vector
+ do i = 1, n
+ cs1 = cs1 + 1
+ cs2 = cs2 + 2
+ end do
+ !$acc end parallel
+
+ ! Verify the results on the host
+ do i = 1, n
+ hs1 = hs1 + 1
+ hs2 = hs2 + 2
+ end do
+
+ if (gs1 .ne. hs1) call abort ()
+ if (gs2 .ne. hs2) call abort ()
+
+ if (ws1 .ne. hs1) call abort ()
+ if (ws2 .ne. hs2) call abort ()
+
+ if (vs1 .ne. hs1) call abort ()
+ if (vs2 .ne. hs2) call abort ()
+
+ if (cs1 .ne. hs1) call abort ()
+ if (cs2 .ne. hs2) call abort ()
+
+ ! Nested reductions.
+
+ red = 0
+ vred = 0
+
+ !$acc parallel num_gangs(10) vector_length(32) copy(red)
+ !$acc loop reduction(+:red) gang
+ do i = 1, n/chunksize
+ !$acc loop reduction(+:red) vector
+ do j = 1, chunksize
+ red = red + chunksize
+ end do
+ end do
+ !$acc end parallel
+
+ do i = 1, n/chunksize
+ do j = 1, chunksize
+ vred = vred + chunksize
+ end do
+ end do
- if (s1.ne.vs1) call abort ()
- if (s2.ne.vs2) call abort ()
+ if (red .ne. vred) call abort ()
end program reduction
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90
new file mode 100644
index 00000000000..8ec36adf1e3
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90
@@ -0,0 +1,88 @@
+! { dg-do run }
+! { dg-additional-options "-w" }
+
+! subroutine reduction with private and firstprivate variables
+
+program reduction
+ integer, parameter :: n = 100
+ integer :: i, j, vsum, cs, arr(n)
+
+ call redsub_private (cs, n, arr)
+ call redsub_bogus (cs, n)
+ call redsub_combined (cs, n, arr)
+
+ vsum = 0
+
+ ! Verify the results
+ do i = 1, n
+ vsum = i
+ do j = 1, n
+ vsum = vsum + 1;
+ end do
+ if (vsum .ne. arr(i)) call abort ()
+ end do
+end program reduction
+
+! This subroutine tests a reduction with an explicit private variable.
+
+subroutine redsub_private(sum, n, arr)
+ integer :: sum, n, arr(n)
+ integer :: i, j, v
+
+ !$acc parallel copyout (arr)
+ !$acc loop gang private (v)
+ do j = 1, n
+ v = j
+
+ !$acc loop vector reduction (+:v)
+ do i = 1, 100
+ v = v + 1
+ end do
+
+ arr(j) = v
+ end do
+ !$acc end parallel
+
+ ! verify the results
+ do i = 1, 10
+ if (arr(i) .ne. 100+i) call abort ()
+ end do
+end subroutine redsub_private
+
+
+! Bogus reduction on an impliclitly firstprivate variable. The results do
+! survive the parallel region. The goal here is to ensure that gfortran
+! doesn't ICE.
+
+subroutine redsub_bogus(sum, n)
+ integer :: sum, n, arr(n)
+ integer :: i
+
+ !$acc parallel
+ !$acc loop gang worker vector reduction (+:sum)
+ do i = 1, n
+ sum = sum + 1
+ end do
+ !$acc end parallel
+end subroutine redsub_bogus
+
+! This reduction involving a firstprivate variable yields legitimate results.
+
+subroutine redsub_combined(sum, n, arr)
+ integer :: sum, n, arr(n)
+ integer :: i, j
+
+ !$acc parallel copy (arr)
+ !$acc loop gang
+ do i = 1, n
+ sum = i;
+
+ !$acc loop reduction(+:sum)
+ do j = 1, n
+ sum = sum + 1
+ end do
+
+ arr(i) = sum
+ end do
+ !$acc end parallel
+end subroutine redsub_combined
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 1e59c537aeb..fb3f1f74fd6 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,16 @@
+2016-04-08 Marcel Böhme <boehme.marcel@gmail.com>
+
+ PR c++/69687
+ * cplus-dem.c: Include <limits.h> if available.
+ (INT_MAX): Define if necessary.
+ (remember_type, remember_Ktype, register_Btype, string_need):
+ Abort if we detect cases where we the size of the allocation would
+ overflow.
+
+ PR c++/70492
+ * cplus-dem.c (gnu_special): Handle case where consume_count returns
+ -1.
+
2016-03-31 Mikhail Maltsev <maltsevm@gmail.com>
Marcel Bohme boehme.marcel@gmail.com
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index 7ab46ddac48..7514e57913c 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -56,6 +56,13 @@ void * malloc ();
void * realloc ();
#endif
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#ifndef INT_MAX
+# define INT_MAX (int)(((unsigned int) ~0) >> 1) /* 0x7FFFFFFF */
+#endif
+
#include <demangle.h>
#undef CURRENT_DEMANGLING_STYLE
#define CURRENT_DEMANGLING_STYLE work->options
@@ -3001,6 +3008,11 @@ gnu_special (struct work_stuff *work, const char **mangled, string *declp)
success = 1;
break;
}
+ else if (n == -1)
+ {
+ success = 0;
+ break;
+ }
}
else
{
@@ -4256,6 +4268,8 @@ remember_type (struct work_stuff *work, const char *start, int len)
}
else
{
+ if (work -> typevec_size > INT_MAX / 2)
+ xmalloc_failed (INT_MAX);
work -> typevec_size *= 2;
work -> typevec
= XRESIZEVEC (char *, work->typevec, work->typevec_size);
@@ -4283,6 +4297,8 @@ remember_Ktype (struct work_stuff *work, const char *start, int len)
}
else
{
+ if (work -> ksize > INT_MAX / 2)
+ xmalloc_failed (INT_MAX);
work -> ksize *= 2;
work -> ktypevec
= XRESIZEVEC (char *, work->ktypevec, work->ksize);
@@ -4312,6 +4328,8 @@ register_Btype (struct work_stuff *work)
}
else
{
+ if (work -> bsize > INT_MAX / 2)
+ xmalloc_failed (INT_MAX);
work -> bsize *= 2;
work -> btypevec
= XRESIZEVEC (char *, work->btypevec, work->bsize);
@@ -4766,6 +4784,8 @@ string_need (string *s, int n)
else if (s->e - s->p < n)
{
tem = s->p - s->b;
+ if (n > INT_MAX / 2 - tem)
+ xmalloc_failed (INT_MAX);
n += tem;
n *= 2;
s->b = XRESIZEVEC (char, s->b, n);
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4e6db2ab3db..f63e09145ba 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,80 @@
+2016-04-14 Jason Merrill <jason@redhat.com>
+
+ Revert Jonathan's empty ABI change from yesterday.
+
+2016-04-13 Martin Sebor <msebor@redhat.com>
+
+ PR c++/69517
+ * testsuite/25_algorithms/rotate/moveable2.cc: Make sure VLA
+ upper bound is positive.
+
+2016-04-13 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/c++config (_GLIBCXX_BEGIN_NAMESPACE_EMPTY_TYPES,
+ _GLIBCXX_END_NAMESPACE_EMPTY_TYPES, _GLIBCXX_ABI_TAG_EMPTY): Define.
+ * include/bits/hashtable.h (_Hashtable::_M_emplace): Change signatures
+ of functions taking empty structs by value. Add a template parameter
+ to overloads without hints. Rename overloads with hints to
+ _M_emplace_hint.
+ (_Hashtable::_M_erase(true_type, const_iterator),
+ _Hashtable::_M_erase(false_type, const_iterator)): Change signatures
+ by reordering parameters.
+ * include/bits/hashtable_policy.h (_Insert::insert): Adjust to call
+ _M_emplace_hint instead of _M_emplace.
+ * include/bits/shared_ptr.h (shared_ptr(_Tp1*, _Deleter, _Alloc),
+ shared_ptr(nullptr_t, _Deleter, _Alloc)): Use _GLIBCXX_ABI_TAG_EMPTY.
+ * include/bits/shared_ptr_base.h (_Sp_counted_deleter, __shared_count,
+ __shared_ptr): Likewise.
+ * include/bits/stl_algo.h (replace_if): Likewise.
+ * include/bits/stl_pair.h (piecewise_construct_t,
+ piecewise_construct): Use _GLIBCXX_BEGIN_NAMESPACE_EMPTY_TYPES.
+ * include/bits/uses_allocator.h (allocator_arg_t, allocator_arg,
+ __uses_alloc0): Likewise.
+ * include/ext/pb_ds/assoc_container.hpp (basic_hash_table): Likewise.
+ * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
+ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
+ * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
+ * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
+ * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Likewise.
+
+2016-04-12 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ Document C++17/TR29124 C++ Special Math Functions.
+ * include/bits/specfun.h: Add Doxygen markup.
+
+2016-04-07 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/30_threads/thread/70503.cc: Adjust from xfail to pass.
+
+2016-04-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * src/Makefile.am (libstdc++-symbols.ver): Remove useless /dev/null.
+ * src/Makefile.in: Regenerate.
+
+2016-04-05 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/70554
+ * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Don't test
+ __atomic_fetch_add for bool.
+ * configure: Regenerate.
+
+ * testsuite/30_threads/thread/70503.cc: Require -static to work.
+
+ PR libstdc++/70503
+ * src/c++11/thread.cc (execute_native_thread_routine,
+ execute_native_thread_routine_compat): Give internal linkage.
+ * testsuite/30_threads/thread/70503.cc: New test.
+
+2016-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ PR libstdc++/70437
+ * include/bits/stl_pair.h (_ConstructiblePair,
+ _ImplicitlyConvertiblePair, _MoveConstructiblePair,
+ _ImplicitlyMoveConvertiblePair): Add shortcut conditions
+ for same-type cases.
+ * testsuite/20_util/pair/70437.cc: New.
+
2016-03-24 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/69945
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 95df24a9062..b0f88cbb404 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -3290,7 +3290,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
atomic_type c1;
atomic_type c2;
atomic_type c3(0);
- __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ // N.B. __atomic_fetch_add is not supported for bool.
__atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
__ATOMIC_RELAXED);
__atomic_test_and_set(&c1, __ATOMIC_RELAXED);
@@ -3375,7 +3375,7 @@ int main()
atomic_type c1;
atomic_type c2;
atomic_type c3(0);
- __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ // N.B. __atomic_fetch_add is not supported for bool.
__atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
__ATOMIC_RELAXED);
__atomic_test_and_set(&c1, __ATOMIC_RELAXED);
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index acbc6a6bd6e..41797a971b5 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -15229,7 +15229,7 @@ typedef bool atomic_type;
atomic_type c1;
atomic_type c2;
atomic_type c3(0);
- __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ // N.B. __atomic_fetch_add is not supported for bool.
__atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
__ATOMIC_RELAXED);
__atomic_test_and_set(&c1, __ATOMIC_RELAXED);
@@ -15395,7 +15395,7 @@ int main()
atomic_type c1;
atomic_type c2;
atomic_type c3(0);
- __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ // N.B. __atomic_fetch_add is not supported for bool.
__atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
__ATOMIC_RELAXED);
__atomic_test_and_set(&c1, __ATOMIC_RELAXED);
diff --git a/libstdc++-v3/include/bits/specfun.h b/libstdc++-v3/include/bits/specfun.h
index 28c9d30e5be..77bbda36fd8 100644
--- a/libstdc++-v3/include/bits/specfun.h
+++ b/libstdc++-v3/include/bits/specfun.h
@@ -1,6 +1,6 @@
// Mathematical Special Functions for -*- C++ -*-
-// Copyright (C) 2006-2015 Free Software Foundation, Inc.
+// Copyright (C) 2006-2016 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
@@ -34,12 +34,14 @@
#include <bits/c++config.h>
+#define __STDCPP_MATH_SPEC_FUNCS__ 201003L
+
+#define __cpp_lib_math_special_functions 201603L
+
#if __STDCPP_WANT_MATH_SPEC_FUNCS__ == 0
# error include <cmath> and define __STDCPP_WANT_MATH_SPEC_FUNCS__
#endif
-#define __STDCPP_MATH_SPEC_FUNCS__ 201003L
-
#include <bits/stl_algobase.h>
#include <limits>
#include <type_traits>
@@ -69,16 +71,182 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @{
*/
+ /**
+ * @mainpage Mathematical Special Functions
+ *
+ * @section intro Introduction and History
+ * The first significant library upgrade on the road to C++2011,
+ * <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1836.pdf">
+ * TR1</a>, included a set of 23 mathematical functions that significantly
+ * extended the standard transcendental functions inherited from C and declared
+ * in @<cmath@>.
+ *
+ * Although most components from TR1 were eventually adopted for C++11 these
+ * math functions were left behind out of concern for implementability.
+ * The math functions were published as a separate international standard
+ * <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2010/n3060.pdf">
+ * IS 29124 - Extensions to the C++ Library to Support Mathematical Special
+ * Functions</a>.
+ *
+ * For C++17 these functions were incorporated into the main standard.
+ *
+ * @section contents Contents
+ * The following functions are implemented in namespace @c std:
+ * - @ref assoc_laguerre "assoc_laguerre - Associated Laguerre functions"
+ * - @ref assoc_legendre "assoc_legendre - Associated Legendre functions"
+ * - @ref beta "beta - Beta functions"
+ * - @ref comp_ellint_1 "comp_ellint_1 - Complete elliptic functions of the first kind"
+ * - @ref comp_ellint_2 "comp_ellint_2 - Complete elliptic functions of the second kind"
+ * - @ref comp_ellint_3 "comp_ellint_3 - Complete elliptic functions of the third kind"
+ * - @ref cyl_bessel_i "cyl_bessel_i - Regular modified cylindrical Bessel functions"
+ * - @ref cyl_bessel_j "cyl_bessel_j - Cylindrical Bessel functions of the first kind"
+ * - @ref cyl_bessel_k "cyl_bessel_k - Irregular modified cylindrical Bessel functions"
+ * - @ref cyl_neumann "cyl_neumann - Cylindrical Neumann functions or Cylindrical Bessel functions of the second kind"
+ * - @ref ellint_1 "ellint_1 - Incomplete elliptic functions of the first kind"
+ * - @ref ellint_2 "ellint_2 - Incomplete elliptic functions of the second kind"
+ * - @ref ellint_3 "ellint_3 - Incomplete elliptic functions of the third kind"
+ * - @ref expint "expint - The exponential integral"
+ * - @ref hermite "hermite - Hermite polynomials"
+ * - @ref laguerre "laguerre - Laguerre functions"
+ * - @ref legendre "legendre - Legendre polynomials"
+ * - @ref riemann_zeta "riemann_zeta - The Riemann zeta function"
+ * - @ref sph_bessel "sph_bessel - Spherical Bessel functions"
+ * - @ref sph_legendre "sph_legendre - Spherical Legendre functions"
+ * - @ref sph_neumann "sph_neumann - Spherical Neumann functions"
+ *
+ * The hypergeometric functions were stricken from the TR29124 and C++17
+ * versions of this math library because of implementation concerns.
+ * However, since they were in the TR1 version and since they are popular
+ * we kept them as an extension in namespace @c __gnu_cxx:
+ * - @ref conf_hyperg "conf_hyperg - Confluent hypergeometric functions"
+ * - @ref hyperg "hyperg - Hypergeometric functions"
+ *
+ * @section general General Features
+ *
+ * @subsection promotion Argument Promotion
+ * The arguments suppled to the non-suffixed functions will be promoted
+ * according to the following rules:
+ * 1. If any argument intended to be floating opint is given an integral value
+ * That integral value is promoted to double.
+ * 2. All floating point arguments are promoted up to the largest floating
+ * point precision among them.
+ *
+ * @subsection NaN NaN Arguments
+ * If any of the floating point arguments supplied to these functions is
+ * invalid or NaN (std::numeric_limits<Tp>::quiet_NaN),
+ * the value NaN is returned.
+ *
+ * @section impl Implementation
+ *
+ * We strive to implement the underlying math with type generic algorithms
+ * to the greatest extent possible. In practice, the functions are thin
+ * wrappers that dispatch to function templates. Type dependence is
+ * controlled with std::numeric_limits and functions thereof.
+ *
+ * We don't promote @c float to @c double or @c double to <tt>long double</tt>
+ * reflexively. The goal is for @c float functions to operate more quickly,
+ * at the cost of @c float accuracy and possibly a smaller domain of validity.
+ * Similaryly, <tt>long double</tt> should give you more dynamic range
+ * and slightly more pecision than @c double on many systems.
+ *
+ * @section testing Testing
+ *
+ * These functions have been tested against equivalent implementations
+ * from the <a href="http://www.gnu.org/software/gsl">
+ * Gnu Scientific Library, GSL</a> and
+ * <a href="http://www.boost.org/doc/libs/1_60_0/libs/math/doc/html/index.html>Boost</a>
+ * and the ratio
+ * @f[
+ * \frac{|f - f_{test}|}{|f_{test}|}
+ * @f]
+ * is generally found to be within 10^-15 for 64-bit double on linux-x86_64 systems
+ * over most of the ranges of validity.
+ *
+ * @todo Provide accuracy comparisons on a per-function basis for a small
+ * number of targets.
+ *
+ * @section bibliography General Bibliography
+ *
+ * @see Abramowitz and Stegun: Handbook of Mathematical Functions,
+ * with Formulas, Graphs, and Mathematical Tables
+ * Edited by Milton Abramowitz and Irene A. Stegun,
+ * National Bureau of Standards Applied Mathematics Series - 55
+ * Issued June 1964, Tenth Printing, December 1972, with corrections
+ * Electronic versions of A&S abound including both pdf and navigable html.
+ * @see for example http://people.math.sfu.ca/~cbm/aands/
+ *
+ * @see The old A&S has been redone as the
+ * NIST Digital Library of Mathematical Functions: http://dlmf.nist.gov/
+ * This version is far more navigable and includes more recent work.
+ *
+ * @see An Atlas of Functions: with Equator, the Atlas Function Calculator
+ * 2nd Edition, by Oldham, Keith B., Myland, Jan, Spanier, Jerome
+ *
+ * @see Asymptotics and Special Functions by Frank W. J. Olver,
+ * Academic Press, 1974
+ *
+ * @see Numerical Recipes in C, The Art of Scientific Computing,
+ * by William H. Press, Second Ed., Saul A. Teukolsky,
+ * William T. Vetterling, and Brian P. Flannery,
+ * Cambridge University Press, 1992
+ *
+ * @see The Special Functions and Their Approximations: Volumes 1 and 2,
+ * by Yudell L. Luke, Academic Press, 1969
+ */
+
// Associated Laguerre polynomials
+ /**
+ * Return the associated Laguerre polynomial of order @c n,
+ * degree @c m: @f$ L_n^m(x) @f$ for @c float argument.
+ *
+ * @see assoc_laguerre for more details.
+ */
inline float
assoc_laguerref(unsigned int __n, unsigned int __m, float __x)
{ return __detail::__assoc_laguerre<float>(__n, __m, __x); }
+ /**
+ * Return the associated Laguerre polynomial of order @c n,
+ * degree @c m: @f$ L_n^m(x) @f$.
+ *
+ * @see assoc_laguerre for more details.
+ */
inline long double
assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x)
{ return __detail::__assoc_laguerre<long double>(__n, __m, __x); }
+ /**
+ * Return the associated Laguerre polynomial of nonnegative order @c n,
+ * nonnegative degree @c m and real argument @c x: @f$ L_n^m(x) @f$.
+ *
+ * The associated Laguerre function of real degree @f$ \alpha @f$,
+ * @f$ L_n^\alpha(x) @f$, is defined by
+ * @f[
+ * L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!}
+ * {}_1F_1(-n; \alpha + 1; x)
+ * @f]
+ * where @f$ (\alpha)_n @f$ is the Pochhammer symbol and
+ * @f$ {}_1F_1(a; c; x) @f$ is the confluent hypergeometric function.
+ *
+ * The associated Laguerre polynomial is defined for integral
+ * degree @f$ \alpha = m @f$ by:
+ * @f[
+ * L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x)
+ * @f]
+ * where the Laguerre polynomial is defined by:
+ * @f[
+ * L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x})
+ * @f]
+ * and @f$ x >= 0 @f$.
+ * @see laguerre for details of the Laguerre function of degree @c n
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __n The order of the Laguerre function, <tt>__n >= 0</tt>.
+ * @param __m The degree of the Laguerre function, <tt>__m >= 0</tt>.
+ * @param __x The argument of the Laguerre function, <tt>__x >= 0</tt>.
+ * @throw std::domain_error if <tt>__x < 0</tt>.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
@@ -89,14 +257,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Associated Legendre functions
+ /**
+ * Return the associated Legendre function of degree @c l and order @c m
+ * for @c float argument.
+ *
+ * @see assoc_legendre for more details.
+ */
inline float
assoc_legendref(unsigned int __l, unsigned int __m, float __x)
{ return __detail::__assoc_legendre_p<float>(__l, __m, __x); }
+ /**
+ * Return the associated Legendre function of degree @c l and order @c m.
+ *
+ * @see assoc_legendre for more details.
+ */
inline long double
assoc_legendrel(unsigned int __l, unsigned int __m, long double __x)
{ return __detail::__assoc_legendre_p<long double>(__l, __m, __x); }
+
+ /**
+ * Return the associated Legendre function of degree @c l and order @c m.
+ *
+ * The associated Legendre function is derived from the Legendre function
+ * @f$ P_l(x) @f$ by the Rodrigues formula:
+ * @f[
+ * P_l^m(x) = (1 - x^2)^{m/2}\frac{d^m}{dx^m}P_l(x)
+ * @f]
+ * @see legendre for details of the Legendre function of degree @c l
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __l The degree <tt>__l >= 0</tt>.
+ * @param __m The order <tt>__m <= l</tt>.
+ * @param __x The argument, <tt>abs(__x) <= 1</tt>.
+ * @throw std::domain_error if <tt>abs(__x) > 1</tt>.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x)
@@ -107,32 +303,89 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Beta functions
+ /**
+ * Return the beta function, @f$ B(a,b) @f$, for @c float parameters @c a, @c b.
+ *
+ * @see beta for more details.
+ */
inline float
- betaf(float __x, float __y)
- { return __detail::__beta<float>(__x, __y); }
+ betaf(float __a, float __b)
+ { return __detail::__beta<float>(__a, __b); }
+ /**
+ * Return the beta function, @f$B(a,b)@f$, for long double
+ * parameters @c a, @c b.
+ *
+ * @see beta for more details.
+ */
inline long double
- betal(long double __x, long double __y)
- { return __detail::__beta<long double>(__x, __y); }
+ betal(long double __a, long double __b)
+ { return __detail::__beta<long double>(__a, __b); }
- template<typename _Tpx, typename _Tpy>
- inline typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type
- beta(_Tpx __x, _Tpy __y)
+ /**
+ * Return the beta function, @f$B(a,b)@f$, for real parameters @c a, @c b.
+ *
+ * The beta function is defined by
+ * @f[
+ * B(a,b) = \int_0^1 t^{a - 1} (1 - t)^{b - 1} dt
+ * = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)}
+ * @f]
+ * where @f$ a > 0 @f$ and @f$ b > 0 @f$
+ *
+ * @tparam _Tpa The floating-point type of the parameter @c __a.
+ * @tparam _Tpb The floating-point type of the parameter @c __b.
+ * @param __a The first argument of the beta function, <tt> __a > 0 </tt>.
+ * @param __b The second argument of the beta function, <tt> __b > 0 </tt>.
+ * @throw std::domain_error if <tt> __a < 0 </tt> or <tt> __b < 0 </tt>.
+ */
+ template<typename _Tpa, typename _Tpb>
+ inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type
+ beta(_Tpa __a, _Tpb __b)
{
- typedef typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type __type;
- return __detail::__beta<__type>(__x, __y);
+ typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type;
+ return __detail::__beta<__type>(__a, __b);
}
// Complete elliptic integrals of the first kind
+ /**
+ * Return the complete elliptic integral of the first kind @f$ E(k) @f$
+ * for @c float modulus @c k.
+ *
+ * @see comp_ellint_1 for details.
+ */
inline float
comp_ellint_1f(float __k)
{ return __detail::__comp_ellint_1<float>(__k); }
+ /**
+ * Return the complete elliptic integral of the first kind @f$ E(k) @f$
+ * for long double modulus @c k.
+ *
+ * @see comp_ellint_1 for details.
+ */
inline long double
comp_ellint_1l(long double __k)
{ return __detail::__comp_ellint_1<long double>(__k); }
+ /**
+ * Return the complete elliptic integral of the first kind
+ * @f$ K(k) @f$ for real modulus @c k.
+ *
+ * The complete elliptic integral of the first kind is defined as
+ * @f[
+ * K(k) = F(k,\pi/2) = \int_0^{\pi/2}\frac{d\theta}
+ * {\sqrt{1 - k^2 sin^2\theta}}
+ * @f]
+ * where @f$ F(k,\phi) @f$ is the incomplete elliptic integral of the
+ * first kind and the modulus @f$ |k| <= 1 @f$.
+ * @see ellint_1 for details of the incomplete elliptic function
+ * of the first kind.
+ *
+ * @tparam _Tp The floating-point type of the modulus @c __k.
+ * @param __k The modulus, <tt> abs(__k) <= 1 </tt>
+ * @throw std::domain_error if <tt> abs(__k) > 1 </tt>.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
comp_ellint_1(_Tp __k)
@@ -143,14 +396,43 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Complete elliptic integrals of the second kind
+ /**
+ * Return the complete elliptic integral of the second kind @f$ E(k) @f$
+ * for @c float modulus @c k.
+ *
+ * @see comp_ellint_2 for details.
+ */
inline float
comp_ellint_2f(float __k)
{ return __detail::__comp_ellint_2<float>(__k); }
+ /**
+ * Return the complete elliptic integral of the second kind @f$ E(k) @f$
+ * for long double modulus @c k.
+ *
+ * @see comp_ellint_2 for details.
+ */
inline long double
comp_ellint_2l(long double __k)
{ return __detail::__comp_ellint_2<long double>(__k); }
+ /**
+ * Return the complete elliptic integral of the second kind @f$ E(k) @f$
+ * for real modulus @c k.
+ *
+ * The complete elliptic integral of the second kind is defined as
+ * @f[
+ * E(k) = E(k,\pi/2) = \int_0^{\pi/2}\sqrt{1 - k^2 sin^2\theta}
+ * @f]
+ * where @f$ E(k,\phi) @f$ is the incomplete elliptic integral of the
+ * second kind and the modulus @f$ |k| <= 1 @f$.
+ * @see ellint_2 for details of the incomplete elliptic function
+ * of the second kind.
+ *
+ * @tparam _Tp The floating-point type of the modulus @c __k.
+ * @param __k The modulus, @c abs(__k) <= 1
+ * @throw std::domain_error if @c abs(__k) > 1.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
comp_ellint_2(_Tp __k)
@@ -161,14 +443,47 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Complete elliptic integrals of the third kind
+ /**
+ * @brief Return the complete elliptic integral of the third kind
+ * @f$ \Pi(k,\nu) @f$ for @c float modulus @c k.
+ *
+ * @see comp_ellint_3 for details.
+ */
inline float
comp_ellint_3f(float __k, float __nu)
{ return __detail::__comp_ellint_3<float>(__k, __nu); }
+ /**
+ * @brief Return the complete elliptic integral of the third kind
+ * @f$ \Pi(k,\nu) @f$ for <tt>long double</tt> modulus @c k.
+ *
+ * @see comp_ellint_3 for details.
+ */
inline long double
comp_ellint_3l(long double __k, long double __nu)
{ return __detail::__comp_ellint_3<long double>(__k, __nu); }
+ /**
+ * Return the complete elliptic integral of the third kind
+ * @f$ \Pi(k,\nu) = \Pi(k,\nu,\pi/2) @f$ for real modulus @c k.
+ *
+ * The complete elliptic integral of the third kind is defined as
+ * @f[
+ * \Pi(k,\nu) = \Pi(k,\nu,\pi/2) = \int_0^{\pi/2}
+ * \frac{d\theta}
+ * {(1 - \nu \sin^2\theta)\sqrt{1 - k^2 \sin^2\theta}}
+ * @f]
+ * where @f$ \Pi(k,\nu,\phi) @f$ is the incomplete elliptic integral of the
+ * second kind and the modulus @f$ |k| <= 1 @f$.
+ * @see ellint_3 for details of the incomplete elliptic function
+ * of the third kind.
+ *
+ * @tparam _Tp The floating-point type of the modulus @c __k.
+ * @tparam _Tpn The floating-point type of the argument @c __nu.
+ * @param __k The modulus, @c abs(__k) <= 1
+ * @param __nu The argument
+ * @throw std::domain_error if @c abs(__k) > 1.
+ */
template<typename _Tp, typename _Tpn>
inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type
comp_ellint_3(_Tp __k, _Tpn __nu)
@@ -179,14 +494,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Regular modified cylindrical Bessel functions
+ /**
+ * Return the regular modified Bessel function @f$ I_{\nu}(x) @f$
+ * for @c float order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * @see cyl_bessel_i for setails.
+ */
inline float
cyl_bessel_if(float __nu, float __x)
{ return __detail::__cyl_bessel_i<float>(__nu, __x); }
+ /**
+ * Return the regular modified Bessel function @f$ I_{\nu}(x) @f$
+ * for <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * @see cyl_bessel_i for setails.
+ */
inline long double
cyl_bessel_il(long double __nu, long double __x)
{ return __detail::__cyl_bessel_i<long double>(__nu, __x); }
+ /**
+ * Return the regular modified Bessel function @f$ I_{\nu}(x) @f$
+ * for real order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * The regular modified cylindrical Bessel function is:
+ * @f[
+ * I_{\nu}(x) = i^{-\nu}J_\nu(ix) = \sum_{k=0}^{\infty}
+ * \frac{(x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)}
+ * @f]
+ *
+ * @tparam _Tpnu The floating-point type of the order @c __nu.
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __nu The order
+ * @param __x The argument, <tt> __x >= 0 </tt>
+ * @throw std::domain_error if <tt> __x < 0 </tt>.
+ */
template<typename _Tpnu, typename _Tp>
inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
cyl_bessel_i(_Tpnu __nu, _Tp __x)
@@ -197,14 +540,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Cylindrical Bessel functions (of the first kind)
+ /**
+ * Return the Bessel function of the first kind @f$ J_{\nu}(x) @f$
+ * for @c float order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * @see cyl_bessel_j for setails.
+ */
inline float
cyl_bessel_jf(float __nu, float __x)
{ return __detail::__cyl_bessel_j<float>(__nu, __x); }
+ /**
+ * Return the Bessel function of the first kind @f$ J_{\nu}(x) @f$
+ * for <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * @see cyl_bessel_j for setails.
+ */
inline long double
cyl_bessel_jl(long double __nu, long double __x)
{ return __detail::__cyl_bessel_j<long double>(__nu, __x); }
+ /**
+ * Return the Bessel function @f$ J_{\nu}(x) @f$ of real order @f$ \nu @f$
+ * and argument @f$ x >= 0 @f$.
+ *
+ * The cylindrical Bessel function is:
+ * @f[
+ * J_{\nu}(x) = \sum_{k=0}^{\infty}
+ * \frac{(-1)^k (x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)}
+ * @f]
+ *
+ * @tparam _Tpnu The floating-point type of the order @c __nu.
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __nu The order
+ * @param __x The argument, <tt> __x >= 0 </tt>
+ * @throw std::domain_error if <tt> __x < 0 </tt>.
+ */
template<typename _Tpnu, typename _Tp>
inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
cyl_bessel_j(_Tpnu __nu, _Tp __x)
@@ -215,14 +586,48 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Irregular modified cylindrical Bessel functions
+ /**
+ * Return the irregular modified Bessel function @f$ K_{\nu}(x) @f$
+ * for @c float order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * @see cyl_bessel_k for setails.
+ */
inline float
cyl_bessel_kf(float __nu, float __x)
{ return __detail::__cyl_bessel_k<float>(__nu, __x); }
+ /**
+ * Return the irregular modified Bessel function @f$ K_{\nu}(x) @f$
+ * for <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * @see cyl_bessel_k for setails.
+ */
inline long double
cyl_bessel_kl(long double __nu, long double __x)
{ return __detail::__cyl_bessel_k<long double>(__nu, __x); }
+ /**
+ * Return the irregular modified Bessel function @f$ K_{\nu}(x) @f$
+ * of real order @f$ \nu @f$ and argument @f$ x @f$.
+ *
+ * The irregular modified Bessel function is defined by:
+ * @f[
+ * K_{\nu}(x) = \frac{\pi}{2}
+ * \frac{I_{-\nu}(x) - I_{\nu}(x)}{\sin \nu\pi}
+ * @f]
+ * where for integral @f$ \nu = n @f$ a limit is taken:
+ * @f$ lim_{\nu \to n} @f$.
+ * For negative argument we have simply:
+ * @f[
+ * K_{-\nu}(x) = K_{\nu}(x)
+ * @f]
+ *
+ * @tparam _Tpnu The floating-point type of the order @c __nu.
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __nu The order
+ * @param __x The argument, <tt> __x >= 0 </tt>
+ * @throw std::domain_error if <tt> __x < 0 </tt>.
+ */
template<typename _Tpnu, typename _Tp>
inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
cyl_bessel_k(_Tpnu __nu, _Tp __x)
@@ -233,14 +638,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Cylindrical Neumann functions
+ /**
+ * Return the Neumann function @f$ N_{\nu}(x) @f$
+ * of @c float order @f$ \nu @f$ and argument @f$ x @f$.
+ *
+ * @see cyl_neumann for setails.
+ */
inline float
cyl_neumannf(float __nu, float __x)
{ return __detail::__cyl_neumann_n<float>(__nu, __x); }
+ /**
+ * Return the Neumann function @f$ N_{\nu}(x) @f$
+ * of <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x @f$.
+ *
+ * @see cyl_neumann for setails.
+ */
inline long double
cyl_neumannl(long double __nu, long double __x)
{ return __detail::__cyl_neumann_n<long double>(__nu, __x); }
+ /**
+ * Return the Neumann function @f$ N_{\nu}(x) @f$
+ * of real order @f$ \nu @f$ and argument @f$ x >= 0 @f$.
+ *
+ * The Neumann function is defined by:
+ * @f[
+ * N_{\nu}(x) = \frac{J_{\nu}(x) \cos \nu\pi - J_{-\nu}(x)}
+ * {\sin \nu\pi}
+ * @f]
+ * where @f$ x >= 0 @f$ and for integral order @f$ \nu = n @f$
+ * a limit is taken: @f$ lim_{\nu \to n} @f$.
+ *
+ * @tparam _Tpnu The floating-point type of the order @c __nu.
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __nu The order
+ * @param __x The argument, <tt> __x >= 0 </tt>
+ * @throw std::domain_error if <tt> __x < 0 </tt>.
+ */
template<typename _Tpnu, typename _Tp>
inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
cyl_neumann(_Tpnu __nu, _Tp __x)
@@ -251,14 +686,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Incomplete elliptic integrals of the first kind
+ /**
+ * Return the incomplete elliptic integral of the first kind @f$ E(k,\phi) @f$
+ * for @c float modulus @f$ k @f$ and angle @f$ \phi @f$.
+ *
+ * @see ellint_1 for details.
+ */
inline float
ellint_1f(float __k, float __phi)
{ return __detail::__ellint_1<float>(__k, __phi); }
+ /**
+ * Return the incomplete elliptic integral of the first kind @f$ E(k,\phi) @f$
+ * for <tt>long double</tt> modulus @f$ k @f$ and angle @f$ \phi @f$.
+ *
+ * @see ellint_1 for details.
+ */
inline long double
ellint_1l(long double __k, long double __phi)
{ return __detail::__ellint_1<long double>(__k, __phi); }
+ /**
+ * Return the incomplete elliptic integral of the first kind @f$ F(k,\phi) @f$
+ * for @c real modulus @f$ k @f$ and angle @f$ \phi @f$.
+ *
+ * The incomplete elliptic integral of the first kind is defined as
+ * @f[
+ * F(k,\phi) = \int_0^{\phi}\frac{d\theta}
+ * {\sqrt{1 - k^2 sin^2\theta}}
+ * @f]
+ * For @f$ \phi= \pi/2 @f$ this becomes the complete elliptic integral of
+ * the first kind, @f$ K(k) @f$. @see comp_ellint_1.
+ *
+ * @tparam _Tp The floating-point type of the modulus @c __k.
+ * @tparam _Tpp The floating-point type of the angle @c __phi.
+ * @param __k The modulus, <tt> abs(__k) <= 1 </tt>
+ * @param __phi The integral limit argument in radians
+ * @throw std::domain_error if <tt> abs(__k) > 1 </tt>.
+ */
template<typename _Tp, typename _Tpp>
inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
ellint_1(_Tp __k, _Tpp __phi)
@@ -269,14 +734,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Incomplete elliptic integrals of the second kind
+ /**
+ * @brief Return the incomplete elliptic integral of the second kind
+ * @f$ E(k,\phi) @f$ for @c float argument.
+ *
+ * @see ellint_2 for details.
+ */
inline float
ellint_2f(float __k, float __phi)
{ return __detail::__ellint_2<float>(__k, __phi); }
+ /**
+ * @brief Return the incomplete elliptic integral of the second kind
+ * @f$ E(k,\phi) @f$.
+ *
+ * @see ellint_2 for details.
+ */
inline long double
ellint_2l(long double __k, long double __phi)
{ return __detail::__ellint_2<long double>(__k, __phi); }
+ /**
+ * Return the incomplete elliptic integral of the second kind
+ * @f$ E(k,\phi) @f$.
+ *
+ * The incomplete elliptic integral of the second kind is defined as
+ * @f[
+ * E(k,\phi) = \int_0^{\phi} \sqrt{1 - k^2 sin^2\theta}
+ * @f]
+ * For @f$ \phi= \pi/2 @f$ this becomes the complete elliptic integral of
+ * the second kind, @f$ E(k) @f$. @see comp_ellint_2.
+ *
+ * @tparam _Tp The floating-point type of the modulus @c __k.
+ * @tparam _Tpp The floating-point type of the angle @c __phi.
+ * @param __k The modulus, <tt> abs(__k) <= 1 </tt>
+ * @param __phi The integral limit argument in radians
+ * @return The elliptic function of the second kind.
+ * @throw std::domain_error if <tt> abs(__k) > 1 </tt>.
+ */
template<typename _Tp, typename _Tpp>
inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
ellint_2(_Tp __k, _Tpp __phi)
@@ -287,14 +782,49 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Incomplete elliptic integrals of the third kind
+ /**
+ * @brief Return the incomplete elliptic integral of the third kind
+ * @f$ \Pi(k,\nu,\phi) @f$ for @c float argument.
+ *
+ * @see ellint_3 for details.
+ */
inline float
ellint_3f(float __k, float __nu, float __phi)
{ return __detail::__ellint_3<float>(__k, __nu, __phi); }
+ /**
+ * @brief Return the incomplete elliptic integral of the third kind
+ * @f$ \Pi(k,\nu,\phi) @f$.
+ *
+ * @see ellint_3 for details.
+ */
inline long double
ellint_3l(long double __k, long double __nu, long double __phi)
{ return __detail::__ellint_3<long double>(__k, __nu, __phi); }
+ /**
+ * @brief Return the incomplete elliptic integral of the third kind
+ * @f$ \Pi(k,\nu,\phi) @f$.
+ *
+ * The incomplete elliptic integral of the third kind is defined by:
+ * @f[
+ * \Pi(k,\nu,\phi) = \int_0^{\phi}
+ * \frac{d\theta}
+ * {(1 - \nu \sin^2\theta)
+ * \sqrt{1 - k^2 \sin^2\theta}}
+ * @f]
+ * For @f$ \phi= \pi/2 @f$ this becomes the complete elliptic integral of
+ * the third kind, @f$ \Pi(k,\nu) @f$. @see comp_ellint_3.
+ *
+ * @tparam _Tp The floating-point type of the modulus @c __k.
+ * @tparam _Tpn The floating-point type of the argument @c __nu.
+ * @tparam _Tpp The floating-point type of the angle @c __phi.
+ * @param __k The modulus, <tt> abs(__k) <= 1 </tt>
+ * @param __nu The second argument
+ * @param __phi The integral limit argument in radians
+ * @return The elliptic function of the third kind.
+ * @throw std::domain_error if <tt> abs(__k) > 1 </tt>.
+ */
template<typename _Tp, typename _Tpn, typename _Tpp>
inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type
ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi)
@@ -305,14 +835,36 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Exponential integrals
+ /**
+ * Return the exponential integral @f$ Ei(x) @f$ for @c float argument @c x.
+ *
+ * @see expint for details.
+ */
inline float
expintf(float __x)
{ return __detail::__expint<float>(__x); }
+ /**
+ * Return the exponential integral @f$ Ei(x) @f$
+ * for <tt>long double</tt> argument @c x.
+ *
+ * @see expint for details.
+ */
inline long double
expintl(long double __x)
{ return __detail::__expint<long double>(__x); }
+ /**
+ * Return the exponential integral @f$ Ei(x) @f$ for @c real argument @c x.
+ *
+ * The exponential integral is given by
+ * \f[
+ * Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt
+ * \f]
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __x The argument of the exponential integral function.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
expint(_Tp __x)
@@ -323,14 +875,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Hermite polynomials
+ /**
+ * Return the Hermite polynomial @f$ H_n(x) @f$ of nonnegative order n
+ * and float argument @c x.
+ *
+ * @see hermite for details.
+ */
inline float
hermitef(unsigned int __n, float __x)
{ return __detail::__poly_hermite<float>(__n, __x); }
+ /**
+ * Return the Hermite polynomial @f$ H_n(x) @f$ of nonnegative order n
+ * and <tt>long double</tt> argument @c x.
+ *
+ * @see hermite for details.
+ */
inline long double
hermitel(unsigned int __n, long double __x)
{ return __detail::__poly_hermite<long double>(__n, __x); }
+ /**
+ * Return the Hermite polynomial @f$ H_n(x) @f$ of order n
+ * and @c real argument @c x.
+ *
+ * The Hermite polynomial is defined by:
+ * @f[
+ * H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2}
+ * @f]
+ *
+ * The Hermite polynomial obeys a reflection formula:
+ * @f[
+ * H_n(-x) = (-1)^n H_n(x)
+ * @f]
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __n The order
+ * @param __x The argument
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
hermite(unsigned int __n, _Tp __x)
@@ -341,14 +923,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Laguerre polynomials
+ /**
+ * Returns the Laguerre polynomial @f$ L_n(x) @f$ of nonnegative degree @c n
+ * and @c float argument @f$ x >= 0 @f$.
+ *
+ * @see laguerre for more details.
+ */
inline float
laguerref(unsigned int __n, float __x)
{ return __detail::__laguerre<float>(__n, __x); }
+ /**
+ * Returns the Laguerre polynomial @f$ L_n(x) @f$ of nonnegative degree @c n
+ * and <tt>long double</tt> argument @f$ x >= 0 @f$.
+ *
+ * @see laguerre for more details.
+ */
inline long double
laguerrel(unsigned int __n, long double __x)
{ return __detail::__laguerre<long double>(__n, __x); }
+ /**
+ * Returns the Laguerre polynomial @f$ L_n(x) @f$
+ * of nonnegative degree @c n and real argument @f$ x >= 0 @f$.
+ *
+ * The Laguerre polynomial is defined by:
+ * @f[
+ * L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x})
+ * @f]
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __n The nonnegative order
+ * @param __x The argument <tt> __x >= 0 </tt>
+ * @throw std::domain_error if <tt> __x < 0 </tt>.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
laguerre(unsigned int __n, _Tp __x)
@@ -359,32 +967,92 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Legendre polynomials
+ /**
+ * Return the Legendre polynomial @f$ P_l(x) @f$ of nonnegative
+ * degree @f$ l @f$ and @c float argument @f$ |x| <= 0 @f$.
+ *
+ * @see legendre for more details.
+ */
inline float
- legendref(unsigned int __n, float __x)
- { return __detail::__poly_legendre_p<float>(__n, __x); }
+ legendref(unsigned int __l, float __x)
+ { return __detail::__poly_legendre_p<float>(__l, __x); }
+ /**
+ * Return the Legendre polynomial @f$ P_l(x) @f$ of nonnegative
+ * degree @f$ l @f$ and <tt>long double</tt> argument @f$ |x| <= 0 @f$.
+ *
+ * @see legendre for more details.
+ */
inline long double
- legendrel(unsigned int __n, long double __x)
- { return __detail::__poly_legendre_p<long double>(__n, __x); }
+ legendrel(unsigned int __l, long double __x)
+ { return __detail::__poly_legendre_p<long double>(__l, __x); }
+ /**
+ * Return the Legendre polynomial @f$ P_l(x) @f$ of nonnegative
+ * degree @f$ l @f$ and real argument @f$ |x| <= 0 @f$.
+ *
+ * The Legendre function of order @f$ l @f$ and argument @f$ x @f$,
+ * @f$ P_l(x) @f$, is defined by:
+ * @f[
+ * P_l(x) = \frac{1}{2^l l!}\frac{d^l}{dx^l}(x^2 - 1)^{l}
+ * @f]
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __l The degree @f$ l >= 0 @f$
+ * @param __x The argument @c abs(__x) <= 1
+ * @throw std::domain_error if @c abs(__x) > 1
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
- legendre(unsigned int __n, _Tp __x)
+ legendre(unsigned int __l, _Tp __x)
{
typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
- return __detail::__poly_legendre_p<__type>(__n, __x);
+ return __detail::__poly_legendre_p<__type>(__l, __x);
}
// Riemann zeta functions
+ /**
+ * Return the Riemann zeta function @f$ \zeta(s) @f$
+ * for @c float argument @f$ s @f$.
+ *
+ * @see riemann_zeta for more details.
+ */
inline float
riemann_zetaf(float __s)
{ return __detail::__riemann_zeta<float>(__s); }
+ /**
+ * Return the Riemann zeta function @f$ \zeta(s) @f$
+ * for <tt>long double</tt> argument @f$ s @f$.
+ *
+ * @see riemann_zeta for more details.
+ */
inline long double
riemann_zetal(long double __s)
{ return __detail::__riemann_zeta<long double>(__s); }
+ /**
+ * Return the Riemann zeta function @f$ \zeta(s) @f$
+ * for real argument @f$ s @f$.
+ *
+ * The Riemann zeta function is defined by:
+ * @f[
+ * \zeta(s) = \sum_{k=1}^{\infty} k^{-s} \hbox{ for } s > 1
+ * @f]
+ * and
+ * @f[
+ * \zeta(s) = \frac{1}{1-2^{1-s}}\sum_{k=1}^{\infty}(-1)^{k-1}k^{-s}
+ * \hbox{ for } 0 <= s <= 1
+ * @f]
+ * For s < 1 use the reflection formula:
+ * @f[
+ * \zeta(s) = 2^s \pi^{s-1} \sin(\frac{\pi s}{2}) \Gamma(1-s) \zeta(1-s)
+ * @f]
+ *
+ * @tparam _Tp The floating-point type of the argument @c __s.
+ * @param __s The argument <tt> s != 1 </tt>
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
riemann_zeta(_Tp __s)
@@ -395,14 +1063,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Spherical Bessel functions
+ /**
+ * Return the spherical Bessel function @f$ j_n(x) @f$ of nonnegative order n
+ * and @c float argument @f$ x >= 0 @f$.
+ *
+ * @see sph_bessel for more details.
+ */
inline float
sph_besself(unsigned int __n, float __x)
{ return __detail::__sph_bessel<float>(__n, __x); }
+ /**
+ * Return the spherical Bessel function @f$ j_n(x) @f$ of nonnegative order n
+ * and <tt>long double</tt> argument @f$ x >= 0 @f$.
+ *
+ * @see sph_bessel for more details.
+ */
inline long double
sph_bessell(unsigned int __n, long double __x)
{ return __detail::__sph_bessel<long double>(__n, __x); }
+ /**
+ * Return the spherical Bessel function @f$ j_n(x) @f$ of nonnegative order n
+ * and real argument @f$ x >= 0 @f$.
+ *
+ * The spherical Bessel function is defined by:
+ * @f[
+ * j_n(x) = \left(\frac{\pi}{2x} \right) ^{1/2} J_{n+1/2}(x)
+ * @f]
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __n The integral order <tt> n >= 0 </tt>
+ * @param __x The real argument <tt> x >= 0 </tt>
+ * @throw std::domain_error if <tt> __x < 0 </tt>.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
sph_bessel(unsigned int __n, _Tp __x)
@@ -413,14 +1107,43 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Spherical associated Legendre functions
+ /**
+ * Return the spherical Legendre function of nonnegative integral
+ * degree @c l and order @c m and float angle @f$ \theta @f$ in radians.
+ *
+ * @see sph_legendre for details.
+ */
inline float
sph_legendref(unsigned int __l, unsigned int __m, float __theta)
{ return __detail::__sph_legendre<float>(__l, __m, __theta); }
+ /**
+ * Return the spherical Legendre function of nonnegative integral
+ * degree @c l and order @c m and <tt>long double</tt> angle @f$ \theta @f$
+ * in radians.
+ *
+ * @see sph_legendre for details.
+ */
inline long double
sph_legendrel(unsigned int __l, unsigned int __m, long double __theta)
{ return __detail::__sph_legendre<long double>(__l, __m, __theta); }
+ /**
+ * Return the spherical Legendre function of nonnegative integral
+ * degree @c l and order @c m and real angle @f$ \theta @f$ in radians.
+ *
+ * The spherical Legendre function is defined by
+ * @f[
+ * Y_l^m(\theta,\phi) = (-1)^m[\frac{(2l+1)}{4\pi}
+ * \frac{(l-m)!}{(l+m)!}]
+ * P_l^m(\cos\theta) \exp^{im\phi}
+ * @f]
+ *
+ * @tparam _Tp The floating-point type of the angle @c __theta.
+ * @param __l The order <tt> __l >= 0 </tt>
+ * @param __m The degree <tt> __m >= 0 </tt> and <tt> __m <= __l </tt>
+ * @param __theta The radian polar angle argument
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
@@ -431,14 +1154,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Spherical Neumann functions
+ /**
+ * Return the spherical Neumann function of integral order @f$ n >= 0 @f$
+ * and @c float argument @f$ x >= 0 @f$.
+ *
+ * @see sph_neumann for details.
+ */
inline float
sph_neumannf(unsigned int __n, float __x)
{ return __detail::__sph_neumann<float>(__n, __x); }
+ /**
+ * Return the spherical Neumann function of integral order @f$ n >= 0 @f$
+ * and <tt>long double</tt> @f$ x >= 0 @f$.
+ *
+ * @see sph_neumann for details.
+ */
inline long double
sph_neumannl(unsigned int __n, long double __x)
{ return __detail::__sph_neumann<long double>(__n, __x); }
+ /**
+ * Return the spherical Neumann function of integral order @f$ n >= 0 @f$
+ * and real argument @f$ x >= 0 @f$.
+ *
+ * The spherical Neumann function is defined by
+ * @f[
+ * n_n(x) = \left(\frac{\pi}{2x} \right) ^{1/2} N_{n+1/2}(x)
+ * @f]
+ *
+ * @tparam _Tp The floating-point type of the argument @c __x.
+ * @param __n The integral order <tt> n >= 0 </tt>
+ * @param __x The real argument <tt> __x >= 0 </tt>
+ * @throw std::domain_error if <tt> __x < 0 </tt>.
+ */
template<typename _Tp>
inline typename __gnu_cxx::__promote<_Tp>::__type
sph_neumann(unsigned int __n, _Tp __x)
@@ -457,14 +1206,44 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
// Confluent hypergeometric functions
+ /**
+ * Return the confluent hypergeometric function @f$ {}_1F_1(a;c;x) @f$
+ * of @c float numeratorial parameter @c a, denominatorial parameter @c c,
+ * and argument @c x.
+ *
+ * @see conf_hyperg for details.
+ */
inline float
conf_hypergf(float __a, float __c, float __x)
{ return std::__detail::__conf_hyperg<float>(__a, __c, __x); }
+ /**
+ * Return the confluent hypergeometric function @f$ {}_1F_1(a;c;x) @f$
+ * of <tt>long double</tt> numeratorial parameter @c a,
+ * denominatorial parameter @c c, and argument @c x.
+ *
+ * @see conf_hyperg for details.
+ */
inline long double
conf_hypergl(long double __a, long double __c, long double __x)
{ return std::__detail::__conf_hyperg<long double>(__a, __c, __x); }
+ /**
+ * Return the confluent hypergeometric function @f$ {}_1F_1(a;c;x) @f$
+ * of real numeratorial parameter @c a, denominatorial parameter @c c,
+ * and argument @c x.
+ *
+ * The confluent hypergeometric function is defined by
+ * @f[
+ * {}_1F_1(a;c;x) = \sum_{n=0}^{\infty} \frac{(a)_n x^n}{(c)_n n!}
+ * @f]
+ * where the Pochhammer symbol is @f$ (x)_k = (x)(x+1)...(x+k-1) @f$,
+ * @f$ (x)_0 = 1 @f$
+ *
+ * @param __a The numeratorial parameter
+ * @param __c The denominatorial parameter
+ * @param __x The argument
+ */
template<typename _Tpa, typename _Tpc, typename _Tp>
inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type
conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x)
@@ -475,14 +1254,45 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
// Hypergeometric functions
+ /**
+ * Return the hypergeometric function @f$ {}_2F_1(a,b;c;x) @f$
+ * of @ float numeratorial parameters @c a and @c b,
+ * denominatorial parameter @c c, and argument @c x.
+ *
+ * @see hyperg for details.
+ */
inline float
hypergf(float __a, float __b, float __c, float __x)
{ return std::__detail::__hyperg<float>(__a, __b, __c, __x); }
+ /**
+ * Return the hypergeometric function @f$ {}_2F_1(a,b;c;x) @f$
+ * of <tt>long double</tt> numeratorial parameters @c a and @c b,
+ * denominatorial parameter @c c, and argument @c x.
+ *
+ * @see hyperg for details.
+ */
inline long double
hypergl(long double __a, long double __b, long double __c, long double __x)
{ return std::__detail::__hyperg<long double>(__a, __b, __c, __x); }
+ /**
+ * Return the hypergeometric function @f$ {}_2F_1(a,b;c;x) @f$
+ * of real numeratorial parameters @c a and @c b,
+ * denominatorial parameter @c c, and argument @c x.
+ *
+ * The hypergeometric function is defined by
+ * @f[
+ * {}_2F_1(a;c;x) = \sum_{n=0}^{\infty} \frac{(a)_n (b)_n x^n}{(c)_n n!}
+ * @f]
+ * where the Pochhammer symbol is @f$ (x)_k = (x)(x+1)...(x+k-1) @f$,
+ * @f$ (x)_0 = 1 @f$
+ *
+ * @param __a The first numeratorial parameter
+ * @param __b The second numeratorial parameter
+ * @param __c The denominatorial parameter
+ * @param __x The argument
+ */
template<typename _Tpa, typename _Tpb, typename _Tpc, typename _Tp>
inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type
hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h
index 7057030d9d7..37ee5cc4053 100644
--- a/libstdc++-v3/include/bits/stl_pair.h
+++ b/libstdc++-v3/include/bits/stl_pair.h
@@ -87,32 +87,51 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Concept utility functions, reused in conditionally-explicit
// constructors.
+ // See PR 70437, don't look at is_constructible or
+ // is_convertible if the decayed types are the same to
+ // avoid querying those properties for incomplete types.
template <typename _T1, typename _T2, typename _U1, typename _U2>
constexpr bool _ConstructiblePair()
{
- return __and_<is_constructible<_T1, const _U1&>,
- is_constructible<_T2, const _U2&>>::value;
+ return __and_<__or_<is_same<typename decay<_T1>::type,
+ typename decay<_U1>::type>,
+ is_constructible<_T1, const _U1&>>,
+ __or_<is_same<typename decay<_T2>::type,
+ typename decay<_U2>::type>,
+ is_constructible<_T2, const _U2&>>>::value;
}
template <typename _T1, typename _T2, typename _U1, typename _U2>
constexpr bool _ImplicitlyConvertiblePair()
{
- return __and_<is_convertible<const _U1&, _T1>,
- is_convertible<const _U2&, _T2>>::value;
+ return __and_<__or_<is_same<typename decay<_T1>::type,
+ typename decay<_U1>::type>,
+ is_convertible<const _U1&, _T1>>,
+ __or_<is_same<typename decay<_T2>::type,
+ typename decay<_U2>::type>,
+ is_convertible<const _U2&, _T2>>>::value;
}
template <typename _T1, typename _T2, typename _U1, typename _U2>
constexpr bool _MoveConstructiblePair()
{
- return __and_<is_constructible<_T1, _U1&&>,
- is_constructible<_T2, _U2&&>>::value;
+ return __and_<__or_<is_same<typename decay<_T1>::type,
+ typename decay<_U1>::type>,
+ is_constructible<_T1, _U1&&>>,
+ __or_<is_same<typename decay<_T2>::type,
+ typename decay<_U2>::type>,
+ is_constructible<_T2, _U2&&>>>::value;
}
template <typename _T1, typename _T2, typename _U1, typename _U2>
constexpr bool _ImplicitlyMoveConvertiblePair()
{
- return __and_<is_convertible<_U1&&, _T1>,
- is_convertible<_U2&&, _T2>>::value;
+ return __and_<__or_<is_same<typename decay<_T1>::type,
+ typename decay<_U1>::type>,
+ is_convertible<_U1&&, _T1>>,
+ __or_<is_same<typename decay<_T2>::type,
+ typename decay<_U2>::type>,
+ is_convertible<_U2&&, _T2>>>::value;
}
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 7b510abc404..dce25a6bd8b 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -228,7 +228,7 @@ libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \
chmod +w $@.tmp
if test "x$(port_specific_symbol_files)" != x; then \
if grep '^# Appended to version file.' \
- $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
+ $(port_specific_symbol_files) > /dev/null 2>&1; then \
cat $(port_specific_symbol_files) >> $@.tmp; \
else \
sed -n '1,/DO NOT DELETE/p' $@.tmp > tmp.top; \
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index 0776dccc212..75a207a5e7d 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -939,7 +939,7 @@ compatibility-condvar.o: compatibility-condvar.cc
@ENABLE_SYMVERS_TRUE@ chmod +w $@.tmp
@ENABLE_SYMVERS_TRUE@ if test "x$(port_specific_symbol_files)" != x; then \
@ENABLE_SYMVERS_TRUE@ if grep '^# Appended to version file.' \
-@ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
+@ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) > /dev/null 2>&1; then \
@ENABLE_SYMVERS_TRUE@ cat $(port_specific_symbol_files) >> $@.tmp; \
@ENABLE_SYMVERS_TRUE@ else \
@ENABLE_SYMVERS_TRUE@ sed -n '1,/DO NOT DELETE/p' $@.tmp > tmp.top; \
diff --git a/libstdc++-v3/src/c++11/thread.cc b/libstdc++-v3/src/c++11/thread.cc
index d2a7dc3e1ee..a027fcf4bb2 100644
--- a/libstdc++-v3/src/c++11/thread.cc
+++ b/libstdc++-v3/src/c++11/thread.cc
@@ -71,9 +71,9 @@ static inline int get_nprocs()
namespace std _GLIBCXX_VISIBILITY(default)
{
- namespace
+ extern "C"
{
- extern "C" void*
+ static void*
execute_native_thread_routine(void* __p)
{
thread::_State_ptr __t{ static_cast<thread::_State*>(__p) };
@@ -95,7 +95,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
}
#if _GLIBCXX_THREAD_ABI_COMPAT
- extern "C" void*
+ static void*
execute_native_thread_routine_compat(void* __p)
{
thread::_Impl_base* __t = static_cast<thread::_Impl_base*>(__p);
@@ -121,7 +121,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
return nullptr;
}
#endif
- }
+ } // extern "C"
_GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/testsuite/20_util/pair/70437.cc b/libstdc++-v3/testsuite/20_util/pair/70437.cc
new file mode 100644
index 00000000000..37e6fb7ec1a
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/pair/70437.cc
@@ -0,0 +1,37 @@
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
+
+// Copyright (C) 2016 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 <utility>
+
+template <class T> struct B;
+
+template <class T> struct A
+{
+ A(A&&) = default;
+ A(const B<T> &);
+};
+
+template <class T> struct B
+{
+ std::pair<A<T>,int> a;
+ B(B&&) = default;
+};
+
+bool b = std::is_move_constructible<A<int> >::value;
diff --git a/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc b/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
index d9d1f2a44ca..f944236f061 100644
--- a/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
@@ -44,7 +44,8 @@ template<typename Con>
{
bool test __attribute__((unused)) = true;
- rvalstruct array[length];
+ /* Make sure the VLA upper bound is positive. */
+ rvalstruct array[length + 1];
for(int i = 0; i < length; ++i)
array[i] = i;
Con con(array, array + length);
diff --git a/libstdc++-v3/testsuite/30_threads/thread/70503.cc b/libstdc++-v3/testsuite/30_threads/thread/70503.cc
new file mode 100644
index 00000000000..3b64ef8d2de
--- /dev/null
+++ b/libstdc++-v3/testsuite/30_threads/thread/70503.cc
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 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/>.
+
+// { dg-do link }
+// { dg-options "-std=gnu++11 -static" { target *-*-*gnu* } }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+// { dg-require-effective-target static }
+
+#include <thread>
+
+extern "C" {
+ // Should not get multiple definition errors from libstdc++.a(thread.o)
+ void execute_native_thread_routine(void) { }
+ void execute_native_thread_routine_compat(void) { }
+}
+
+int main()
+{
+ execute_native_thread_routine();
+ execute_native_thread_routine_compat();
+
+ std::thread{}.detach(); // ensure libstdc++.a(thread.o) is linked in
+}