diff --git a/.github/alpine_32bit_log_warnings b/.github/alpine_32bit_log_warnings index 9c99c7c14029..39a725b83724 100644 --- a/.github/alpine_32bit_log_warnings +++ b/.github/alpine_32bit_log_warnings @@ -66,8 +66,8 @@ ../../gcc/../libgcc/libgcov-util.c:529:43: warning: 'void* calloc(size_t, size_t)' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Wcalloc-transposed-args] ../../gcc/analyzer/store.h:310:5: warning: 'size_in_bytes.generic_wide_int >::fixed_wide_int_storage<128>.fixed_wide_int_storage<128>::val[1]' may be used uninitialized [-Wmaybe-uninitialized] ../../gcc/expmed.cc:1845:45: warning: '*(unsigned int*)((char*)&imode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))' may be used uninitialized [-Wmaybe-uninitialized] -../../gcc/text-art/style.cc:150:25: warning: spurious leading punctuation sequence ';' in format [-Wformat-diag] -../../gcc/text-art/style.cc:160:25: warning: spurious leading punctuation sequence ';' in format [-Wformat-diag] +../../gcc/text-art/style.cc:151:25: warning: spurious leading punctuation sequence ';' in format [-Wformat-diag] +../../gcc/text-art/style.cc:161:25: warning: spurious leading punctuation sequence ';' in format [-Wformat-diag] ../../gcc/text-art/table.cc:981:62: warning: unquoted keyword 'char' in format [-Wformat-diag] ../../gcc/text-art/table.cc:981:69: warning: spurious trailing punctuation sequence '])' in format [-Wformat-diag] gengtype-lex.cc:356:15: warning: this statement may fall through [-Wimplicit-fallthrough=] diff --git a/.github/glibcxx_ubuntu64b_log_expected_warnings b/.github/glibcxx_ubuntu64b_log_expected_warnings index 214a64aadcae..cfb2fff2331f 100644 --- a/.github/glibcxx_ubuntu64b_log_expected_warnings +++ b/.github/glibcxx_ubuntu64b_log_expected_warnings @@ -71,8 +71,8 @@ ../../../libcpp/expr.cc:877:35: warning: format not a string literal and no format arguments [-Wformat-security] ../../../libcpp/macro.cc:185:26: warning: format not a string literal and no format arguments [-Wformat-security] ../../../libcpp/macro.cc:214:34: warning: format not a string literal and no format arguments [-Wformat-security] -../../../libcpp/macro.cc:3710:25: warning: format not a string literal and no format arguments [-Wformat-security] -../../../libcpp/macro.cc:3725:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../../libcpp/macro.cc:3713:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../../libcpp/macro.cc:3728:25: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/analyzer/program-state.cc:1498:15: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/c-family/c-common.cc:6763:14: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/c-family/c-common.cc:6767:16: warning: format not a string literal and no format arguments [-Wformat-security] @@ -82,8 +82,8 @@ ../../gcc/c/c-typeck.cc:4648:16: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/c/c-typeck.cc:6913:23: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/collect-utils.cc:237:21: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/collect2.cc:2400:21: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/diagnostic.cc:2316:15: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/collect2.cc:2401:21: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/diagnostic.cc:2333:15: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/fold-const.cc:384:13: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/gcc.cc:2412:30: warning: too many arguments for format [-Wformat-extra-args] ../../gcc/gcc.cc:2413:32: warning: unknown conversion type character ‘t’ in format [-Wformat=] @@ -105,10 +105,10 @@ ../../gcc/gcc.cc:2553:51: warning: unknown conversion type character ‘t’ in format [-Wformat=] ../../gcc/gimple-range-gori.cc:318:19: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/ipa-devirt.cc:967:10: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/lto-wrapper.cc:1369:10: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/lto-wrapper.cc:1971:23: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/text-art/style.cc:150:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] -../../gcc/text-art/style.cc:160:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] +../../gcc/lto-wrapper.cc:1373:10: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/lto-wrapper.cc:1975:23: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/text-art/style.cc:151:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] +../../gcc/text-art/style.cc:161:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] ../../gcc/text-art/table.cc:981:62: warning: unquoted keyword ‘char’ in format [-Wformat-diag] ../../gcc/text-art/table.cc:981:69: warning: spurious trailing punctuation sequence ‘])’ in format [-Wformat-diag] ../../gcc/tree-ssa-sccvn.cc:286:21: warning: format not a string literal and no format arguments [-Wformat-security] @@ -120,13 +120,13 @@ ../../libcpp/expr.cc:877:35: warning: format not a string literal and no format arguments [-Wformat-security] ../../libcpp/macro.cc:185:26: warning: format not a string literal and no format arguments [-Wformat-security] ../../libcpp/macro.cc:214:34: warning: format not a string literal and no format arguments [-Wformat-security] -../../libcpp/macro.cc:3710:25: warning: format not a string literal and no format arguments [-Wformat-security] -../../libcpp/macro.cc:3725:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../libcpp/macro.cc:3713:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../libcpp/macro.cc:3728:25: warning: format not a string literal and no format arguments [-Wformat-security] /home/runner/work/gccrs/gccrs/gccrs-build/x86_64-pc-linux-gnu/32/libssp/../../../../libssp/gets-chk.c:73: warning: the `gets' function is dangerous and should not be used. /home/runner/work/gccrs/gccrs/gccrs-build/x86_64-pc-linux-gnu/libssp/../../../libssp/gets-chk.c:73: warning: the `gets' function is dangerous and should not be used. gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] -install.texi:2230: warning: `.' or `,' must follow @xref, not f +install.texi:2241: warning: `.' or `,' must follow @xref, not f libtool: install: warning: remember to run `libtool --finish /usr/local/libexec/gcc/x86_64-pc-linux-gnu/14.0.1' diff --git a/.github/log_expected_warnings b/.github/log_expected_warnings index 9829eb2709cf..e39a3468397c 100644 --- a/.github/log_expected_warnings +++ b/.github/log_expected_warnings @@ -72,8 +72,8 @@ ../../../libcpp/lex.cc:2120:39: warning: ‘loc’ may be used uninitialized [-Wmaybe-uninitialized] ../../../libcpp/macro.cc:185:26: warning: format not a string literal and no format arguments [-Wformat-security] ../../../libcpp/macro.cc:214:34: warning: format not a string literal and no format arguments [-Wformat-security] -../../../libcpp/macro.cc:3710:25: warning: format not a string literal and no format arguments [-Wformat-security] -../../../libcpp/macro.cc:3725:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../../libcpp/macro.cc:3713:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../../libcpp/macro.cc:3728:25: warning: format not a string literal and no format arguments [-Wformat-security] ../../c++tools/server.cc:490:11: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] ../../c++tools/server.cc:620:10: warning: ignoring return value of ‘int pipe(int*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] ../../gcc/../libgcc/libgcov-util.c:455:9: warning: ignoring return value of ‘int chdir(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] @@ -87,8 +87,8 @@ ../../gcc/c/c-typeck.cc:4648:16: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/c/c-typeck.cc:6913:23: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/collect-utils.cc:237:21: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/collect2.cc:2400:21: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/diagnostic.cc:2316:15: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/collect2.cc:2401:21: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/diagnostic.cc:2333:15: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/expmed.cc:1845:45: warning: ‘*(unsigned int*)((char*)&imode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ may be used uninitialized in this function [-Wmaybe-uninitialized] ../../gcc/fold-const.cc:384:13: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/gcc.cc:10668:12: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] @@ -120,18 +120,18 @@ ../../gcc/genhooks.cc:180:14: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] ../../gcc/gimple-range-gori.cc:318:19: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/ipa-devirt.cc:967:10: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/lto-wrapper.cc:1151:8: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] -../../gcc/lto-wrapper.cc:1369:10: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/lto-wrapper.cc:1971:23: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/lto-wrapper.cc:1155:8: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] +../../gcc/lto-wrapper.cc:1373:10: warning: format not a string literal and no format arguments [-Wformat-security] +../../gcc/lto-wrapper.cc:1975:23: warning: format not a string literal and no format arguments [-Wformat-security] ../../gcc/lto/lto-common.cc:2084:10: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] ../../gcc/lto/lto-common.cc:2086:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] ../../gcc/lto/lto-common.cc:2106:10: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] -../../gcc/text-art/style.cc:150:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] -../../gcc/text-art/style.cc:160:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] +../../gcc/text-art/style.cc:151:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] +../../gcc/text-art/style.cc:161:25: warning: spurious leading punctuation sequence ‘;’ in format [-Wformat-diag] ../../gcc/text-art/table.cc:981:62: warning: unquoted keyword ‘char’ in format [-Wformat-diag] ../../gcc/text-art/table.cc:981:69: warning: spurious trailing punctuation sequence ‘])’ in format [-Wformat-diag] ../../gcc/tree-ssa-sccvn.cc:286:21: warning: format not a string literal and no format arguments [-Wformat-security] -../../gcc/tree-vect-stmts.cc:10397:47: warning: ‘stride_step’ may be used uninitialized in this function [-Wmaybe-uninitialized] +../../gcc/tree-vect-stmts.cc:10415:47: warning: ‘stride_step’ may be used uninitialized in this function [-Wmaybe-uninitialized] ../../gcc/vec.h:347:10: warning: ‘void free(void*)’ called on unallocated object ‘dest_bbs’ [-Wfree-nonheap-object] ../../libcpp/expr.cc:842:35: warning: format not a string literal and no format arguments [-Wformat-security] ../../libcpp/expr.cc:845:38: warning: format not a string literal and no format arguments [-Wformat-security] @@ -142,13 +142,13 @@ ../../libcpp/lex.cc:2120:39: warning: ‘loc’ may be used uninitialized [-Wmaybe-uninitialized] ../../libcpp/macro.cc:185:26: warning: format not a string literal and no format arguments [-Wformat-security] ../../libcpp/macro.cc:214:34: warning: format not a string literal and no format arguments [-Wformat-security] -../../libcpp/macro.cc:3710:25: warning: format not a string literal and no format arguments [-Wformat-security] -../../libcpp/macro.cc:3725:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../libcpp/macro.cc:3713:25: warning: format not a string literal and no format arguments [-Wformat-security] +../../libcpp/macro.cc:3728:25: warning: format not a string literal and no format arguments [-Wformat-security] /home/runner/work/gccrs/gccrs/gccrs-build/x86_64-pc-linux-gnu/32/libssp/../../../../libssp/gets-chk.c:73: warning: the `gets' function is dangerous and should not be used. /home/runner/work/gccrs/gccrs/gccrs-build/x86_64-pc-linux-gnu/libssp/../../../libssp/gets-chk.c:73: warning: the `gets' function is dangerous and should not be used. gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=] -install.texi:2230: warning: `.' or `,' must follow @xref, not f +install.texi:2241: warning: `.' or `,' must follow @xref, not f libtool: install: warning: remember to run `libtool --finish /usr/local/libexec/gcc/x86_64-pc-linux-gnu/14.0.1' diff --git a/ChangeLog b/ChangeLog index da4aeb9d0478..68af19738f41 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2024-04-04 Paul-Antoine Arras + + * MAINTAINERS: Update my email address. + +2024-04-04 Kyrylo Tkachov + + * MAINTAINERS: Update my email details, remove myself as arm + maintainer. Add myself to DCO section. + +2024-04-02 Jakub Jelinek + + PR bootstrap/106472 + * Makefile.tpl (make-postboot-target-dep): New lambda. + Use it to add --enable-bootstrap dependencies of target modules + on other target modules if the latter aren't bootstrapped. + * Makefile.in: Regenerate. + +2024-04-02 Jakub Jelinek + + * Makefile.tpl: Fix duplicated words; returns returns -> + returns. + 2024-03-08 Filip Kastl * MAINTAINERS: Fix order of names in Write After Aproval diff --git a/MAINTAINERS b/MAINTAINERS index 8f64ee630b45..27e3872ef936 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -52,7 +52,7 @@ docs, and the testsuite related to that. aarch64 port Richard Earnshaw aarch64 port Richard Sandiford aarch64 port Marcus Shawcroft -aarch64 port Kyrylo Tkachov +aarch64 port Kyrylo Tkachov alpha port Richard Henderson amdgcn port Julian Brown amdgcn port Andrew Stubbs @@ -61,7 +61,6 @@ arc port Claudiu Zissulescu arm port Nick Clifton arm port Richard Earnshaw arm port Ramana Radhakrishnan -arm port Kyrylo Tkachov avr port Denis Chertykov bfin port Jie Zhang bpf port Jose E. Marchesi @@ -325,7 +324,7 @@ from other maintainers or reviewers. Mark G. Adams Ajit Kumar Agarwal Pedro Alves -Paul-Antoine Arras +Paul-Antoine Arras Arsen Arsenović Raksit Ashok Matt Austern @@ -782,6 +781,7 @@ Nathaniel Shead Nathan Sidwell Edward Smith-Rowland Fangrui Song +Kyrylo Tkachov Petter Tomner Martin Uecker Jonathan Wakely diff --git a/Makefile.in b/Makefile.in index 1753fb6b8625..34c5550beca2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -68680,6 +68680,39 @@ configure-flex: stage_last configure-m4: stage_last @endif gcc-bootstrap +@if gcc-bootstrap +@unless target-zlib-bootstrap +configure-target-fastjar: maybe-configure-target-zlib +@endunless target-zlib-bootstrap +@unless target-zlib-bootstrap +all-target-fastjar: maybe-all-target-zlib +@endunless target-zlib-bootstrap +@unless target-libstdc++-v3-bootstrap +configure-target-libgo: maybe-all-target-libstdc++-v3 +@endunless target-libstdc++-v3-bootstrap +@unless target-libbacktrace-bootstrap +all-target-libgo: maybe-all-target-libbacktrace +@endunless target-libbacktrace-bootstrap +@unless target-libatomic-bootstrap +all-target-libgo: maybe-all-target-libatomic +@endunless target-libatomic-bootstrap +@unless target-libstdc++-v3-bootstrap +configure-target-libgm2: maybe-all-target-libstdc++-v3 +@endunless target-libstdc++-v3-bootstrap +@unless target-libatomic-bootstrap +all-target-libgm2: maybe-all-target-libatomic +@endunless target-libatomic-bootstrap +@unless target-libstdc++-v3-bootstrap +configure-target-libgrust: maybe-all-target-libstdc++-v3 +@endunless target-libstdc++-v3-bootstrap +@unless target-libbacktrace-bootstrap +configure-target-libgfortran: maybe-all-target-libbacktrace +@endunless target-libbacktrace-bootstrap +@unless target-libbacktrace-bootstrap +configure-target-libgo: maybe-all-target-libbacktrace +@endunless target-libbacktrace-bootstrap +@endif gcc-bootstrap + @unless gcc-bootstrap all-gnattools: maybe-all-target-libstdc++-v3 configure-libcc1: maybe-configure-gcc diff --git a/Makefile.tpl b/Makefile.tpl index 4aeaad3c1a5f..8f4bf297918c 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -1979,7 +1979,7 @@ configure-target-[+module+]: maybe-all-gcc[+ (define dep-maybe (lambda () (if (exist? "hard") "" "maybe-"))) - ;; dep-kind returns returns "prebootstrap" for configure or build + ;; dep-kind returns "prebootstrap" for configure or build ;; dependencies of bootstrapped modules on a build module ;; (e.g. all-gcc on all-build-bison); "normal" if the dependency is ;; on an "install" target, or if the dependence module is not @@ -2016,6 +2016,25 @@ configure-target-[+module+]: maybe-all-gcc[+ (unless (=* target "target-") (string-append "configure-" target ": " dep "\n")))))) + ;; Dependencies in between target modules if the dependencies + ;; are bootstrap target modules and the target modules which + ;; depend on them are emitted inside of @unless gcc-bootstrap. + ;; Unfortunately, some target modules like libatomic or libbacktrace + ;; have bootstrap flag set, but whether they are actually built + ;; during bootstrap or after bootstrap depends on e.g. enabled languages; + ;; if d is enabled, libphobos is built as target module and depends + ;; on libatomic and libbacktrace, which are therefore also built as + ;; bootstrap modules. If d is not enabled but go is, libatomic and + ;; libbacktrace are just dependencies of libgo which is not a bootstrap + ;; target module, but we need dependencies on libatomic and libbacktrace + ;; in that case even when gcc-bootstrap. This lambda emits those. + (define make-postboot-target-dep (lambda () + (let ((target (dep-module "module")) (on (dep-module "on"))) + (when (=* on "target-") + (when (=* target "target-") + (string-append "@unless " on "-bootstrap\n" (make-dep "" "") + "\n@endunless " on "-bootstrap\n")))))) + ;; We now build the hash table that is used by dep-kind. (define boot-modules (make-hash-table 113)) (define postboot-targets (make-hash-table 113)) @@ -2048,6 +2067,11 @@ configure-target-[+module+]: maybe-all-gcc[+ [+ == "postbootstrap" +][+ (make-postboot-dep) +][+ ESAC +][+ ENDFOR dependencies +]@endif gcc-bootstrap +@if gcc-bootstrap +[+ FOR dependencies +][+ CASE (dep-kind) +] +[+ == "postbootstrap" +][+ (make-postboot-target-dep) +][+ ESAC +][+ +ENDFOR dependencies +]@endif gcc-bootstrap + @unless gcc-bootstrap [+ FOR dependencies +][+ CASE (dep-kind) +] [+ == "postbootstrap" +][+ (make-dep "" "") +] diff --git a/config/ChangeLog b/config/ChangeLog index 5998f095df55..a67f961b69b6 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,8 @@ +2024-04-02 Jakub Jelinek + + * lcmessage.m4: Fix duplicated words; can can -> can, + package package -> package. + 2024-01-11 Mike Frysinger * acinclude.m4 (CYG_AC_PATH_LIBERTY): Delete. diff --git a/config/lcmessage.m4 b/config/lcmessage.m4 index ffd4008b8252..62a9186af2f1 100644 --- a/config/lcmessage.m4 +++ b/config/lcmessage.m4 @@ -6,13 +6,13 @@ dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff --git a/contrib/ChangeLog b/contrib/ChangeLog index a85c1bfcfbe0..cdb63c3aaad4 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,27 @@ +2024-04-12 Filip Kastl + + * check-params-in-docs.py: Ignore target specific params. + +2024-04-11 Martin Jambor + + * check-params-in-docs.py (ignored): Add + gcn-preferred-vectorization-factor. + +2024-04-08 Jakub Jelinek + + * gcc-changelog/git_update_version.py: Add + 8057f9aa1f7e70490064de796d7a8d42d446caf8 to IGNORED_COMMITS. + +2024-03-19 Jonathan Wakely + + * unicode/gen_libstdcxx_unicode_data.py: Fix header of generated + file to name the correct script. + +2024-03-18 Jonathan Wakely + + * gcc_update: Add more generated files in libcc1, lto-plugin, + fixincludes, and libstdc++-v3. + 2024-03-08 Sam James PR other/109668 diff --git a/contrib/check-params-in-docs.py b/contrib/check-params-in-docs.py index 623c82284e26..ccdb8d721696 100755 --- a/contrib/check-params-in-docs.py +++ b/contrib/check-params-in-docs.py @@ -38,6 +38,9 @@ def get_param_tuple(line): description = line[i:].strip() return (name, description) +def target_specific(param): + return param.split('-')[0] in ('aarch64', 'gcn', 'x86') + parser = argparse.ArgumentParser() parser.add_argument('texi_file') @@ -46,12 +49,15 @@ def get_param_tuple(line): args = parser.parse_args() ignored = {'logical-op-non-short-circuit'} -params = {} +help_params = {} for line in open(args.params_output).readlines(): if line.startswith(' ' * 2) and not line.startswith(' ' * 8): r = get_param_tuple(line) - params[r[0]] = r[1] + help_params[r[0]] = r[1] + +# Skip target-specific params +help_params = [x for x in help_params.keys() if not target_specific(x)] # Find section in .texi manual with parameters texi = ([x.strip() for x in open(args.texi_file).readlines()]) @@ -66,14 +72,13 @@ def get_param_tuple(line): texi_params.append(line[len(token):]) break -# skip digits +# Skip digits texi_params = [x for x in texi_params if not x[0].isdigit()] -# skip aarch64 params -texi_params = [x for x in texi_params if not x.startswith('aarch64')] -sorted_params = sorted(texi_params) +# Skip target-specific params +texi_params = [x for x in texi_params if not target_specific(x)] texi_set = set(texi_params) - ignored -params_set = set(params.keys()) - ignored +params_set = set(help_params) - ignored success = True extra = texi_set - params_set diff --git a/contrib/gcc-changelog/git_update_version.py b/contrib/gcc-changelog/git_update_version.py index 92639ba626fd..3e79dab00969 100755 --- a/contrib/gcc-changelog/git_update_version.py +++ b/contrib/gcc-changelog/git_update_version.py @@ -38,7 +38,8 @@ '86d8e0c0652ef5236a460b75c25e4f7093cc0651', 'e4cba49413ca429dc82f6aa2e88129ecb3fdd943', '1957bedf29a1b2cc231972aba680fe80199d5498', - '040e5b0edbca861196d9e2ea2af5e805769c8d5d') + '040e5b0edbca861196d9e2ea2af5e805769c8d5d', + '8057f9aa1f7e70490064de796d7a8d42d446caf8') FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s' logging.basicConfig(level=logging.INFO, format=FORMAT, diff --git a/contrib/gcc_update b/contrib/gcc_update index 2c50592eb359..417e0483b3f3 100755 --- a/contrib/gcc_update +++ b/contrib/gcc_update @@ -70,6 +70,7 @@ files_and_dependencies () { # fixincludes fixincludes/configure: fixincludes/configure.ac fixincludes/aclocal.m4 fixincludes/config.h.in: fixincludes/configure.ac fixincludes/aclocal.m4 +fixincludes/fixincl.x: fixincludes/inclhack.def fixincludes/fixincl.tpl # intl library intl/plural.c: intl/plural.y intl/plural-config.h: intl/plural.y @@ -106,6 +107,7 @@ gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h # direct2s.c:35: warning: current file is older than direct2.c gcc/testsuite/gcc.dg/cpp/direct2s.c: gcc/testsuite/gcc.dg/cpp/direct2.c # lto-plugin +lto-plugin/aclocal.m4: lto-plugin/configure.ac lto-plugin/configure: lto-plugin/configure.ac lto-plugin/aclocal.m4 lto-plugin/Makefile.in: lto-plugin/Makefile.am lto-plugin/aclocal.m4 # tools @@ -187,7 +189,13 @@ libphobos/config.h.in: libphobos/configure.ac libphobos/aclocal.m4 libphobos/configure: libphobos/configure.ac libphobos/aclocal.m4 libphobos/src/Makefile.in: libphobos/src/Makefile.am libphobos/aclocal.m4 libphobos/testsuite/Makefile.in: libphobos/testsuite/Makefile.am libphobos/aclocal.m4 +libstdc++-v3/aclocal.m4: libstdc++-v3/configure.ac libstdc++-v3/acinclude.m4 +libstdc++-v3/Makefile.in: libstdc++-v3/Makefile.am libstdc++-v3/aclocal.m4 +libstdc++-v3/configure: libstdc++-v3/configure.ac libstdc++-v3/acinclude.m4 libstdc++-v3/include/bits/version.h: libstdc++-v3/include/bits/version.def libstdc++-v3/include/bits/version.tpl +libcc1/aclocal.m4: libcc1/configure.ac +libcc1/Makefile.in: libcc1/Makefile.am libcc1/configure.ac libcc1/aclocal.m4 +libcc1/configure: libcc1/configure.ac # Top level Makefile.in: Makefile.tpl Makefile.def configure: configure.ac config/acx.m4 diff --git a/contrib/unicode/gen_libstdcxx_unicode_data.py b/contrib/unicode/gen_libstdcxx_unicode_data.py index 2341a442f6ae..da2f6ee66bf4 100755 --- a/contrib/unicode/gen_libstdcxx_unicode_data.py +++ b/contrib/unicode/gen_libstdcxx_unicode_data.py @@ -29,9 +29,11 @@ import sys import re import math +import os -print("""// Generated by contrib/unicode/gen_std_format_width.py, do not edit. - +self = os.path.basename(__file__) +print("// Generated by contrib/unicode/{}, do not edit.".format(self)) +print(""" // Copyright The GNU Toolchain Authors. // // This file is part of the GNU ISO C++ Library. This library is free diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5b966a63e80e..91060182dcd5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,2217 @@ +2024-04-12 Andrew Carlotti + + * config/aarch64/aarch64-option-extensions.def: Add RCPC to + RCPC3 dependencies. + * config/aarch64/aarch64.h (AARCH64_ISA_RCPC8_4): Add test for + RCPC3 bit + +2024-04-12 Andrew Carlotti + + * config/aarch64/aarch64-arches.def: Add CSSC to V8_9A + dependencies. + +2024-04-12 Will Schmidt + Peter Bergner + + PR target/101865 + * config/rs6000/rs6000-builtin.cc (rs6000_builtin_is_supported): Use + TARGET_POWER8. + * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Use + OPTION_MASK_POWER8. + * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_POWER8. + (ISA_2_7_MASKS_SERVER): Likewise. + * config/rs6000/rs6000.cc (rs6000_option_override_internal): Update + comment. Use OPTION_MASK_POWER8 and TARGET_POWER8. + * config/rs6000/rs6000.h (TARGET_SYNC_HI_QI): Use TARGET_POWER8. + * config/rs6000/rs6000.md (define_attr "isa"): Add p8. + (define_attr "enabled"): Handle it. + (define_insn "prefetch"): Use TARGET_POWER8. + * config/rs6000/rs6000.opt (mpower8-internal): New. + +2024-04-12 Jason Merrill + Patrick Palka + + PR c++/113141 + * doc/invoke.texi: Document -Wcast-user-defined. + +2024-04-12 Tatsuyuki Ishi + + * config/riscv/riscv.opt.urls: Regenerated. + +2024-04-12 Andrew Pinski + + PR tree-optimization/114666 + * match.pd (`!a?b:c`): Reject signed types for the condition. + (`a?~t:t`): Likewise. + +2024-04-12 Richard Sandiford + + * config/aarch64/aarch64.cc (aarch64_output_sme_zero_za): Require + all tiles to have the same suffix. + +2024-04-12 Pan Li + + * config/riscv/riscv.cc (riscv_vector_float_type_p): Take int + as the return value instead of unsigned. + (riscv_vector_element_bitsize): Ditto. + (riscv_vector_required_min_vlen): Ditto. + (riscv_validate_vector_type): Take int type for local variable(s). + +2024-04-12 Jakub Jelinek + + * tree-cfg.cc (gimple_verify_flow_info): Make the misplaced + returns_twice diagnostics translatable. + +2024-04-12 Jakub Jelinek + + PR sanitizer/114687 + * gimple-iterator.cc (gsi_safe_insert_before): Only use + edge_before_returns_twice_call if bb_has_abnormal_pred. + (gsi_safe_insert_seq_before): Likewise. + * gimple-lower-bitint.cc (bitint_large_huge::lower_call): Only + push to m_returns_twice_calls if bb_has_abnormal_pred. + +2024-04-12 Pan Li + + PR target/114639 + * config/riscv/riscv.cc (riscv_function_value_regno_p): Add + TARGET_VECTOR predicate for V_RETURN regno. + +2024-04-11 David Faust + + * btfout.cc (btf_asm_type_ref): Convert IDs to BTF internally and + fix potentially looking up wrong type for asm debug comment info. + Split into... + (btf_asm_datasec_type_ref): ... This. New. + (btf_asm_datasec_entry): Call it here, instead of btf_asm_type_ref. + (btf_asm_type, btf_asm_array, btf_asm_varent, btf_asm_sou_member) + (btf_asm_func_arg, btf_asm_func_type): Adapt btf_asm_type_ref call. + +2024-04-11 David Faust + + * btfout.cc (btf_asm_sou_member): Always emit non-representable + bitfield members as having 'void' type. Refactor slightly. + +2024-04-11 Andrew Carlotti + + * config/aarch64/aarch64-option-extensions.def: + Remove "memtag", "memtag2", "ssbs", "ssbs2", "ls64", "ls64_v" + and "ls64_accdata" FMV features. + +2024-04-11 Andrew Carlotti + + * config/aarch64/aarch64-option-extensions.def: + Remove "flagm2", "sha1", "pmull", "dit", "dpb", "dpb2", "jscvt", + "fcma", "rcpc2", "frintts", "dgh", "ebf16", "sve-bf16", + "sve-ebf16", "sve-i8mm", "sve2-pmull128", "memtag3", "bti" and + "wfxt" entries. + +2024-04-11 Andrew Carlotti + + * config/aarch64/aarch64-option-extensions.def: + Fix "rmd"->"rdm", and add FMV to "rdma". + * config/aarch64/aarch64.cc (FEAT_RDMA): Define as FEAT_RDM. + +2024-04-11 Andrew Carlotti + + * config/aarch64/aarch64.cc (compare_feature_masks): + Use ARRAY_SIZE and >=0 for iteration bounds. + (aarch64_mangle_decl_assembler_name): Use ARRAY_SIZE. + +2024-04-11 Andrew Carlotti + + * config/aarch64/aarch64-option-extensions.def: Reorder FMV entries. + +2024-04-11 Gaius Mulley + + * doc/standards.texi (Language Standards Supported by GCC): + Add Modula-2 language section. + +2024-04-11 Jakub Jelinek + + PR middle-end/110027 + * asan.cc (asan_emit_stack_protection): Assert offsets[0] is + zero if there is no stack protect guard, otherwise + -ASAN_RED_ZONE_SIZE. If alignb > ASAN_RED_ZONE_SIZE and there is + stack pointer guard, take the ASAN_RED_ZONE_SIZE bytes allocated at + the top of the stack into account when computing base_align_bias. + Recompute use_after_return_class from asan_frame_size + base_align_bias + and set to -1 if that would overflow to 11. + +2024-04-11 Richard Biener + + PR tree-optimization/109596 + * tree-ssa-loop-ch.cc (ch_base::copy_headers): Propagate + debug stmts to nonexit->dest rather than exit->dest. + +2024-04-11 Richard Biener + + PR middle-end/114681 + * tree-inline.cc (copy_bb): Key on the remapped stmt + to identify gconds to have condition coverage data remapped. + +2024-04-11 Pan Li + + PR target/114639 + * config/riscv/riscv.cc (riscv_function_value_regno_p): New func + impl for hook TARGET_FUNCTION_VALUE_REGNO_P. + (riscv_get_raw_result_mode): New func imple for hook + TARGET_GET_RAW_RESULT_MODE. + (TARGET_FUNCTION_VALUE_REGNO_P): Impl the hook. + (TARGET_GET_RAW_RESULT_MODE): Ditto. + * config/riscv/riscv.h (V_RETURN): New macro for vector return. + (GP_RETURN_FIRST): New macro for the first GPR in return. + (GP_RETURN_LAST): New macro for the last GPR in return. + (FP_RETURN_FIRST): Diito but for FPR. + (FP_RETURN_LAST): Ditto. + (FUNCTION_VALUE_REGNO_P): Remove as deprecated and replace by + TARGET_FUNCTION_VALUE_REGNO_P. + +2024-04-11 Indu Bhagat + + * btfout.cc (btf_asm_type): Do not skip emitting members of + unknown type. + +2024-04-11 Indu Bhagat + + PR debug/112878 + * dwarf2ctf.cc (gen_ctf_sou_type): Check for conditions before + call to ctf_add_slice. Use CTF_K_UNKNOWN type if fail. + +2024-04-10 Marek Polacek + + PR target/114606 + * config/i386/i386-options.cc (ix86_option_override_internal): Use + opts_set rather than checking == CF_NONE. + +2024-04-10 David Malcolm + + * doc/analyzer.texi: Various tweaks. + +2024-04-10 Richard Biener + + PR tree-optimization/114672 + * tree-ssa-math-opts.cc (convert_plusminus_to_widen): Only + allow mode-precision results. + +2024-04-10 Andre Vieira + + * config/aarch64/aarch64.cc (TARGET_C_BITINT_TYPE_INFO): Declare MACRO. + (aarch64_bitint_type_info): New function. + (aarch64_return_in_memory_1): Return large _BitInt's in memory. + (aarch64_function_arg_alignment): Adapt to correctly return the ABI + mandated alignment of _BitInt(N) where N > 128 as the alignment of + TImode. + (aarch64_composite_type_p): Return true for _BitInt(N), where N > 128. + +2024-04-10 Andre Vieira + + * config/aarch64/aarch64.cc (bitint_or_aggr_of_bitint_p): New function. + (aarch64_layout_arg): Don't emit diagnostics for types involving + _BitInt(N). + +2024-04-10 Jakub Jelinek + + PR c++/114462 + * tree-core.h (enum annot_expr_kind): Add + annot_expr_maybe_infinite_kind enumerator. + * gimplify.cc (gimple_boolify): Handle annot_expr_maybe_infinite_kind. + * tree-cfg.cc (replace_loop_annotate_in_block): Likewise. + (replace_loop_annotate): Likewise. Move loop->finite_p initialization + before the replace_loop_annotate_in_block calls. + * tree-pretty-print.cc (dump_generic_node): Handle + annot_expr_maybe_infinite_kind. + +2024-04-10 Richard Biener + + Revert: + 2024-03-27 Segher Boessenkool + + PR rtl-optimization/101523 + * combine.cc (try_combine): Don't do a 2-insn combination if + it does not in fact change I2. + +2024-04-10 Peter Bergner + + PR target/101865 + * config/rs6000/rs6000.h (TARGET_DIRECT_MOVE): Define. + * config/rs6000/rs6000.cc (rs6000_option_override_internal): Replace + OPTION_MASK_DIRECT_MOVE with OPTION_MASK_P8_VECTOR. Delete redundant + OPTION_MASK_DIRECT_MOVE usage. Delete TARGET_DIRECT_MOVE dead code. + (rs6000_opt_masks): Neuter the "direct-move" option. + * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Replace + OPTION_MASK_DIRECT_MOVE with OPTION_MASK_P8_VECTOR. Delete useless + comment. + * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete + OPTION_MASK_DIRECT_MOVE. + (OTHER_VSX_VECTOR_MASKS): Likewise. + (POWERPC_MASKS): Likewise. + * config/rs6000/rs6000.opt (mdirect-move): Remove Mask and Var. + +2024-04-10 Hongyu Wang + + * config/i386/sse.md (sha1msg1): Use "ja" instead of "Bm" for + memory constraint. + (sha1msg2): Likewise. + (sha1nexte): Likewise. + (sha1rnds4): Likewise. + (sha256msg1): Likewise. + (sha256msg2): Likewise. + (sha256rnds2): Likewise. + (aesu8): Use "jm" instead of "m" for memory + constraint. + (*aesu8): Likewise. + (*encodekey128u32): Use "jr" instead of "r" for register + constraints. + (*encodekey256u32): Likewise. + +2024-04-09 Juergen Christ + + * config/s390/s390.cc (expand_perm_as_replicate): Implement. + (vectorize_vec_perm_const_1): Call new function. + * config/s390/vx-builtins.md (vec_splat): Change to... + (@vec_splat): ...this. + +2024-04-09 David Faust + + PR debug/114608 + * btfout.cc (btf_asm_datasec_entry): Only emit a symbol reference when + generating BTF for BPF CO-RE target. + +2024-04-09 Richard Ball + + * config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64): + Add functions_nulls parameter to pragma_handlers. + * config/aarch64/aarch64-protos.h: Likewise. + * config/aarch64/aarch64-sve-builtins.h + (enum handle_pragma_index): Add enum to count + number of pragmas to be handled. + * config/aarch64/aarch64-sve-builtins.cc + (GTY): Add global variable for initial indexes + and change overload_names to an array. + (function_builder::function_builder): + Add pragma handler information. + (function_builder::add_function): + Add code for overwriting previous + registered_functions entries. + (add_unique_function): + Use an array to register overload_names + for both pragma handler modes. + (add_overloaded_function): Likewise. + (init_builtins): + Add functions_nulls parameter to pragma_handlers. + (handle_arm_sve_h): + Initialize pragma handler information. + (handle_arm_neon_sve_bridge_h): Likewise. + (handle_arm_sme_h): Likewise. + +2024-04-09 Richard Biener + + PR lto/114655 + * lto-wrapper.cc (merge_flto_options): Add force argument. + (merge_and_complain): Do not force here. + (run_gcc): But here to make the link-time -flto option override + any compile-time one. + +2024-04-09 Sebastian Huber + + * config/rs6000/rtems.h (OS_MISSING_POWERPC64): Define. + +2024-04-09 Jørgen Kvalsvik + + PR gcov-profile/114601 + * tree-profile.cc (condition_uid): Guard fn->cond_uids access. + +2024-04-09 Jakub Jelinek + + PR target/114576 + * config/i386/i386.md (isa): Remove aes, add vaes_avx512vl. + (enabled): Remove aes isa check, add vaes_avx512vl. + * config/i386/sse.md (aesenc, aesenclast, aesdec, aesdeclast): Use + jm instead of m for second alternative and emit {evex} prefix + for it if !TARGET_AES. Use noavx,avx,vaes_avx512vl isa attribute. + (vaesdec_, vaesdeclast_, vaesenc_, + vaesenclast_): Add second alternative with x instead of v + and jm instead of m. + +2024-04-09 Gaius Mulley + + * doc/gm2.texi (Compiler options): Remove -fdebug-trace-quad. + Remove -fdebug-trace-api. + Add -fm2-debug-trace=. + +2024-04-09 Yang Yujie + + PR target/113233 + * config/loongarch/loongarch.cc (loongarch_reg_init): + Reinitialize the loongarch_regno_mode_ok cache. + (loongarch_option_override): Same. + (loongarch_save_restore_target_globals): Restore target globals. + (loongarch_set_current_function): Restore the target contexts + for functions. + (TARGET_SET_CURRENT_FUNCTION): Define. + * config/loongarch/loongarch.h (SWITCHABLE_TARGET): Enable + switchable target context. + * config/loongarch/loongarch-builtins.cc (loongarch_init_builtins): + Initialize all builtin functions at startup. + (loongarch_expand_builtin): Turn assertion of builtin availability + into a test. + +2024-04-09 Jørgen Kvalsvik + + PR middle-end/114627 + * tree-profile.cc (instrument_decisions): Generate constant + at the start of loop. + +2024-04-09 Jørgen Kvalsvik + + PR middle-end/114599 + * tree-inline.cc (copy_bb): Copy cond_uids into callee. + (prepend_lexical_block): Remove outdated comment. + (add_local_variables): Remove bad cond_uids copy. + +2024-04-09 Jakub Jelinek + + * expr.cc (convert_mode_scalar): Fix duplicated words in comment; + into into -> it into. + * function.h (function::cond_uids): Fix duplicated words in comment; + same same -> same. + * config/riscv/riscv-vector-costs.cc + (costs::adjust_vect_cost_per_loop): Fix duplicated words in comment; + model model -> model. + * config/riscv/riscv-vector-builtins-shapes.cc (build_base): Fix + duplicated words in comment; for for -> for. + * config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Fix + duplicated words in comment; more more -> more. + * config/aarch64/driver-aarch64.cc (host_detect_local_cpu): Fix + duplicated words in comment; be be -> be. + * tree-profile.cc (masking_vectors): Fix duplicated words in comment; + has has -> has, the the -> the. + * value-range.cc (irange::set_range_from_bitmask): Fix duplicated + words in comment; the the -> the. + * gcov.cc (add_condition_counts): Fix duplicated words in comment; + to to -> to. + * vr-values.cc (get_scev_info): Fix duplicated words in comment; + the the -> to the. + * tree-vrp.cc (fully_replaceable): Fix duplicated words in comment; + by by -> by. + * mode-switching.cc (single_succ_confluence_n): Fix duplicated words + in comment; the the -> the. + * tree-ssa-phiopt.cc (value_replacement): Fix duplicated words in + comment; can can -> we can. + * gimple-range-phi.cc (phi_analyzer::process_phi): Fix duplicated words + in comment; it it -> it is. + * tree-ssa-sccvn.cc (visit_phi): Fix duplicated words in comment; + to to -> to. + * rtl-ssa/accesses.h (use_info::next_debug_insn_use): Fix duplicated + words in comment; if if -> if. + * doc/options.texi (InverseMask): Fix duplicated words; and and -> and. + Change take to takes. + * doc/invoke.texi (fanalyzer-undo-inlining): Fix duplicated words; + be be -> be. + (-minline-memops-threshold): Likewise. + +2024-04-09 Jakub Jelinek + + PR middle-end/114628 + * gimple-lower-bitint.cc (gimple_lower_bitint): Keep debug stmts + before returns_twice calls as is, don't push them into arg_stmts + vector/move to edges. + +2024-04-09 Sergey Bugaev + + * config.gcc: Recognize aarch64*-*-gnu* targets. + * config/aarch64/aarch64-gnu.h: New file. + +2024-04-09 Sergey Bugaev + + * config/i386/gnu.h: Move GNU/Hurd STARTFILE_SPEC from here... + * config/gnu.h: ...to here. + +2024-04-09 Richard Biener + + PR middle-end/114604 + * gimple-range.cc (enable_ranger): Initialize the global + bitmap obstack. + (disable_ranger): Release it. + +2024-04-09 Sebastian Huber + + * config.gcc (aarch64-*-rtems*): Add target makefile fragment + t-aarch64-rtems. + * config/aarch64/t-aarch64-rtems: New file. + +2024-04-09 H.J. Lu + + PR target/114587 + * config/i386/i386-c.cc (ix86_target_macros_internal): Define + __APX_INLINE_ASM_USE_GPR32__ for -mapx-inline-asm-use-gpr32. + +2024-04-09 Kewen Lin + Andrew Pinski + + PR target/88309 + * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Fix + wrong align passed to function build_aligned_type. + * tree-ssa-loop-prefetch.cc (is_miss_rate_acceptable): Add an + assertion to ensure align_unit should be positive. + * tree.cc (build_qualified_type): Update function comments. + +2024-04-08 Uros Bizjak + + PR rtl-optimization/112560 + * combine.cc (try_combine): Replace cc_use_loc with the entire + new RTX only in case cc_use_loc satisfies COMPARISON_P predicate. + Otherwise scan the entire cc_use_loc RTX for CC reg to be updated + with a new mode. + * config/i386/i386.md (@pushf2): Allow all CC modes for + operand 1. + +2024-04-08 Thomas Schwinge + + * config/gcn/gcn.opt (--param=gcn-preferred-vectorization-factor): + New. + * config/gcn/gcn.cc (gcn_vectorize_preferred_simd_mode) Use it. + * doc/invoke.texi (Optimize Options): Document it. + +2024-04-08 Thomas Schwinge + + * doc/sourcebuild.texi (Effective-Target Keywords): Document + 'asm_goto_with_outputs'. Add comment to 'lra'. + +2024-04-08 Martin Jambor + + PR ipa/113359 + * ipa-icf-gimple.h (func_checker): New members + safe_for_total_scalarization_p, m_total_scalarization_limit_known_p + and m_total_scalarization_limit. + (func_checker::func_checker): Initialize new member variables. + * ipa-icf-gimple.cc: Include tree-sra.h. + (func_checker::func_checker): Initialize new member variables. + (func_checker::safe_for_total_scalarization_p): New function. + (func_checker::compare_operand): Use the new function. + * tree-sra.h (sra_get_max_scalarization_size): Declare. + (sra_total_scalarization_would_copy_same_data_p): Likewise. + * tree-sra.cc (prepare_iteration_over_array_elts): New function. + (class sra_padding_collecting): New. + (sra_padding_collecting::record_padding): Likewise. + (scalarizable_type_p): Rename to totally_scalarizable_type_p. Add + ability to record padding when requested. + (totally_scalarize_subtree): Split out gathering information necessary + to iterate over array elements to prepare_iteration_over_array_elts. + Fix errornous early exit. + (analyze_all_variable_accesses): Adjust the call to + totally_scalarizable_type_p. Move determining of total scalariation + size limit... + (sra_get_max_scalarization_size): ...here. + (check_ts_and_push_padding_to_vec): New function. + (sra_total_scalarization_would_copy_same_data_p): Likewise. + +2024-04-08 Martin Jambor + + PR ipa/113907 + * ipa-prop.h (class ipa_vr): Declare new overload of a member function + equal_p. + (ipa_jump_functions_equivalent_p): Declare. + * ipa-prop.cc (ipa_vr::equal_p): New function. + (ipa_agg_pass_through_jf_equivalent_p): Likewise. + (ipa_agg_jump_functions_equivalent_p): Likewise. + (ipa_jump_functions_equivalent_p): Likewise. + * ipa-cp.h (values_equal_for_ipcp_p): Declare. + * ipa-cp.cc (values_equal_for_ipcp_p): Make function public. + * ipa-icf-gimple.cc: Include alloc-pool.h, symbol-summary.h, sreal.h, + ipa-cp.h and ipa-prop.h. + (func_checker::compare_gimple_call): Comapre jump functions. + +2024-04-08 Richard Sandiford + + PR target/114607 + * config/aarch64/aarch64-sve-builtins-base.cc + (svusdot_impl::expand): Fix botched attempt to swap the operands + for svsudot. + +2024-04-08 Tatsuyuki Ishi + + * config/riscv/riscv.opt: Add -mtls-dialect to configure TLS flavor. + * config.gcc: Add --with-tls configuration option to change the + default TLS flavor. + * config/riscv/riscv.h: Add TARGET_TLSDESC determined from + -mtls-dialect and with_tls defaults. + * config/riscv/riscv-opts.h: Define enum riscv_tls_type for the + two TLS flavors. + * config/riscv/riscv-protos.h: Define SYMBOL_TLSDESC symbol type. + * config/riscv/riscv.md: Add instruction sequence for TLSDESC. + * config/riscv/riscv.cc (riscv_symbol_insns): Add instruction + sequence length data for TLSDESC. + (riscv_legitimize_tls_address): Add lowering of TLSDESC. + * doc/install.texi: Document --with-tls for RISC-V. + * doc/invoke.texi: Document -mtls-dialect for RISC-V. + +2024-04-08 Jakub Jelinek + + PR target/114605 + * config/s390/s390.cc (s390_const_int_pool_entry_p): Punt + if mem doesn't have MODE_INT mode, or pool constant doesn't + have MODE_INT mode, or if pool constant mode is smaller than + mem mode. If mem mode is different from pool constant mode, + try to simplify subreg. If that doesn't work, punt, if it + does, use the simplified constant instead of the constant pool + constant. + * config/s390/s390.md (movdi from const pool peephole): If + either low or high 32-bit part is zero, just emit move insn + instead of move + ior. + +2024-04-08 Richard Biener + + PR tree-optimization/114624 + * tree-scalar-evolution.cc (final_value_replacement_loop): + Get at the PHI arg location before releasing the PHI node. + +2024-04-08 Pan Li + + * config/riscv/riscv-vector-builtins-shapes.cc (build_one): Pass + required_ext arg when invoke add function. + (build_th_loadstore): Ditto. + (struct vcreate_def): Ditto. + (struct read_vl_def): Ditto. + (struct vlenb_def): Ditto. + * config/riscv/riscv-vector-builtins.cc (function_builder::add_function): + Introduce new arg required_ext to fill in the register func. + (function_builder::add_unique_function): Ditto. + (function_builder::add_overloaded_function): Ditto. + (expand_builtin): Leverage required_extensions_specified to + check if the required extension is provided. + * config/riscv/riscv-vector-builtins.h (reqired_ext_to_isa_name): New + func impl to convert the required_ext enum to the extension name. + (required_extensions_specified): New func impl to predicate if + the required extension is well feeded. + +2024-04-08 Iain Sandoe + + * config/darwin.h (LINK_COMMAND_SPEC_A): Update coverage + specs. + +2024-04-08 demin.han + + * config/riscv/riscv-vector-costs.cc: Use length() + +2024-04-08 Pan Li + + * config/riscv/riscv-c.cc (struct pragma_intrinsic_flags): New + struct to hold all intrinisc related flags. + (riscv_pragma_intrinsic_flags_pollute): New func to pollute + the intrinsic flags and backup original flags. + (riscv_pragma_intrinsic_flags_restore): New func to restore + the flags from the backup intrinsic flags. + (riscv_pragma_intrinsic): Pollute the flags and register all + possible builtin types and functions, then restore and reinit. + * config/riscv/riscv-protos.h (reinit_builtins): New func + decl to reinit after flags pollution. + (riscv_option_override): New extern func decl. + * config/riscv/riscv-vector-builtins.cc (register_builtin_types_on_null): + New func to register builtin types if null. + (DEF_RVV_TYPE): Ditto. + (DEF_RVV_TUPLE_TYPE): Ditto. + (reinit_builtins): New func impl to reinit after flags pollution. + (expand_builtin): Return + target rtx after error_at. + * config/riscv/riscv.cc (riscv_vector_int_type_p): New predicate + func to tell one tree type is integer or not. + (riscv_vector_float_type_p): New predicate func to tell one tree + type is float or not. + (riscv_vector_element_bitsize): New func to get the element bitsize + of a vector tree type. + (riscv_vector_required_min_vlen): New func to get the required min vlen + of a vector tree type. + (riscv_validate_vector_type): New func to validate the tree type + is valid on flags. + (riscv_return_value_is_vector_type_p): Leverage the func + riscv_validate_vector_type to do the tree type validation. + (riscv_arguments_is_vector_type_p): Ditto. + (riscv_override_options_internal): Ditto. + +2024-04-08 Lulu Cheng + + PR target/112919 + * config/loongarch/loongarch-def.cc (la664_align): Newly defined + function that sets alignment rules under the LA664 microarchitecture. + * config/loongarch/loongarch-opts.cc + (loongarch_target_option_override): If not optimizing for size, set + the default alignment to what the target wants. + * config/loongarch/loongarch-tune.h (struct loongarch_align): Add + new member variables jump and loop. + +2024-04-06 H.J. Lu + + PR target/114590 + * config/i386/i386.md (x86_64_shld): Use explicit shift count in + AT&T syntax. + (x86_64_shld_ndd): Likewise. + (x86_shld): Likewise. + (x86_shld_ndd): Likewise. + (x86_64_shrd): Likewise. + (x86_64_shrd_ndd): Likewise. + (x86_shrd): Likewise. + (x86_shrd_ndd): Likewise. + +2024-04-06 Jørgen Kvalsvik + + PR middle-end/114599 + * tree-inline.cc (add_local_variables): Copy cond_uids mappings. + +2024-04-05 David Malcolm + + PR analyzer/114588 + * diagnostic-color.cc (color_dict): Add "valid" and "invalid" as + color capability names. + * doc/invoke.texi: Document them in description of GCC_COLORS. + * text-art/style.cc: Include "diagnostic-color.h". + (text_art::get_style_from_color_cap_name): New. + * text-art/types.h (get_style_from_color_cap_name): New decl. + +2024-04-05 Alex Coplan + + * config/aarch64/aarch64-ldp-fusion.cc (struct alias_walker): + Fix double space after const qualifier on valid (). + +2024-04-05 Martin Jambor + + PR ipa/113964 + * ipa-param-manipulation.cc (ipa_param_adjustments::modify_call): + Force values obtined through pass-through maps to the expected + split type. + +2024-04-05 Mark Wielaard + + * common.opt.urls: Regenerate. + +2024-04-05 Richard Sandiford + + PR target/114603 + * config/aarch64/aarch64-sve.md (@aarch64_pred_cnot): Replace + with... + (@aarch64_ptrue_cnot): ...this, requiring operand 1 to be + a ptrue. + (*cnot): Require operand 1 to be a ptrue. + * config/aarch64/aarch64-sve-builtins-base.cc (svcnot_impl::expand): + Use aarch64_ptrue_cnot for _x operations that are predicated + with a ptrue. Represent other _x operations as fully-defined _m + operations. + +2024-04-05 Jakub Jelinek + + PR tree-optimization/114566 + * tree-vect-loop.cc (update_epilogue_loop_vinfo): Don't clear + base_misaligned. + +2024-04-05 Richard Biener + + PR middle-end/114599 + PR gcov-profile/114115 + * symtab.cc (ifunc_ref_map): Do not use auto_bitmap. + (is_caller_ifunc_resolver): Optimize bitmap_bit_p/bitmap_set_bit + pair. + (symtab_node::check_ifunc_callee_symtab_nodes): Properly + allocate ifunc_ref_map here. + +2024-04-04 Martin Jambor + + PR ipa/111571 + * ipa-param-manipulation.cc + (ipa_param_body_adjustments::common_initialization): Avoid creating + duplicate replacement entries. + +2024-04-04 Vladimir N. Makarov + + PR rtl-optimization/114415 + * sched-deps.cc (add_insn_mem_dependence): Add memory check for mem argument. + (sched_analyze_1): Treat stack pointer modification as memory read. + (sched_analyze_2, sched_analyze_insn): Add memory guard for processing pending_read_mems. + * sched-int.h (deps_desc): Add comment to pending_read_mems. + +2024-04-04 Tobias Burnus + + * config/nvptx/mkoffload.cc (main): Call + gcc_init_libintl and diagnostic_color_init. + +2024-04-04 H.J. Lu + + PR target/114587 + * config/i386/i386-c.cc (ix86_target_macros_internal): Define + __APX_F__ when APX is enabled. + +2024-04-04 Jørgen Kvalsvik + + * builtins.cc (expand_builtin_fork_or_exec): Check + condition_coverage_flag. + * collect2.cc (main): Add -fno-condition-coverage to OBSTACK. + * common.opt: Add new options -fcondition-coverage and + -Wcoverage-too-many-conditions. + * doc/gcov.texi: Add --conditions documentation. + * doc/invoke.texi: Add -fcondition-coverage documentation. + * function.cc (free_after_compilation): Free cond_uids. + * function.h (struct function): Add cond_uids. + * gcc.cc: Link gcov on -fcondition-coverage. + * gcov-counter.def (GCOV_COUNTER_CONDS): New. + * gcov-dump.cc (tag_conditions): New. + * gcov-io.h (GCOV_TAG_CONDS): New. + (GCOV_TAG_CONDS_LENGTH): New. + (GCOV_TAG_CONDS_NUM): New. + * gcov.cc (class condition_info): New. + (condition_info::condition_info): New. + (condition_info::popcount): New. + (struct coverage_info): New. + (add_condition_counts): New. + (output_conditions): New. + (print_usage): Add -g, --conditions. + (process_args): Likewise. + (output_intermediate_json_line): Output conditions. + (read_graph_file): Read condition counters. + (read_count_file): Likewise. + (file_summary): Print conditions. + (accumulate_line_info): Accumulate conditions. + (output_line_details): Print conditions. + * gimplify.cc (next_cond_uid): New. + (reset_cond_uid): New. + (shortcut_cond_r): Set condition discriminator. + (tag_shortcut_cond): New. + (gimple_associate_condition_with_expr): New. + (shortcut_cond_expr): Set condition discriminator. + (gimplify_cond_expr): Likewise. + (gimplify_function_tree): Call reset_cond_uid. + * ipa-inline.cc (can_early_inline_edge_p): Check + condition_coverage_flag. + * ipa-split.cc (pass_split_functions::gate): Likewise. + * passes.cc (finish_optimization_passes): Likewise. + * profile.cc (struct condcov): New declaration. + (cov_length): Likewise. + (cov_blocks): Likewise. + (cov_masks): Likewise. + (cov_maps): Likewise. + (cov_free): Likewise. + (instrument_decisions): New. + (read_thunk_profile): Control output to file. + (branch_prob): Call find_conditions, instrument_decisions. + (init_branch_prob): Add total_num_conds. + (end_branch_prob): Likewise. + * tree-core.h (struct tree_exp): Add condition_uid. + * tree-profile.cc (struct conds_ctx): New. + (CONDITIONS_MAX_TERMS): New. + (EDGE_CONDITION): New. + (topological_cmp): New. + (index_of): New. + (single_p): New. + (single_edge): New. + (contract_edge_up): New. + (struct outcomes): New. + (conditional_succs): New. + (condition_index): New. + (condition_uid): New. + (masking_vectors): New. + (emit_assign): New. + (emit_bitwise_op): New. + (make_top_index_visit): New. + (make_top_index): New. + (paths_between): New. + (struct condcov): New. + (cov_length): New. + (cov_blocks): New. + (cov_masks): New. + (cov_maps): New. + (cov_free): New. + (find_conditions): New. + (struct counters): New. + (find_counters): New. + (resolve_counter): New. + (resolve_counters): New. + (instrument_decisions): New. + (tree_profiling): Check condition_coverage_flag. + (pass_ipa_tree_profile::gate): Likewise. + * tree.h (SET_EXPR_UID): New. + (EXPR_COND_UID): New. + +2024-04-04 Richard Sandiford + + PR target/114577 + * config/aarch64/aarch64-sve-builtins.h (aarch64_sve::lookup_fndecl): + Declare. + * config/aarch64/aarch64-sve-builtins.cc (aarch64_sve::lookup_fndecl): + New function. + * config/aarch64/aarch64-sve-builtins-base.cc (is_undef): Likewise. + (svset_neonq_impl::expand): Optimise expansions whose first argument + is undefined. + +2024-04-04 Richard Biener + + PR tree-optimization/114485 + * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p): + vect_step_op_neg isn't OK for partial vectors but only + for unknown niter. + +2024-04-04 Jakub Jelinek + + PR c++/114537 + * fold-const.cc (native_encode_initializer): Look through + NON_LVALUE_EXPR if val is INTEGER_CST. + +2024-04-04 Jakub Jelinek + + PR tree-optimization/114555 + * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): For + m_bitfld_load and save_cast_conditional add any needed PHIs + and adjust t4 accordingly. + +2024-04-04 Richard Biener + + PR tree-optimization/114551 + * tree-ssa-loop-split.cc (split_loop): If the guard is + only conditionally evaluated rewrite computations with + possibly undefined overflow to unsigned arithmetic. + +2024-04-04 Eugene Rozenfeld + + PR gcov-profile/113765 + * auto-profile.cc (afdo_annotate_cfg): Don't set full_profile to true + +2024-04-03 Mark Wielaard + + * config/i386/i386.opt.urls: Regenerate. + +2024-04-03 H.J. Lu + + PR tree-optimization/114115 + * cgraph.h (symtab_node): Add check_ifunc_callee_symtab_nodes. + (cgraph_node): Add called_by_ifunc_resolver. + * cgraphunit.cc (symbol_table::compile): Call + symtab_node::check_ifunc_callee_symtab_nodes. + * symtab.cc (check_ifunc_resolver): New. + (ifunc_ref_map): Likewise. + (is_caller_ifunc_resolver): Likewise. + (symtab_node::check_ifunc_callee_symtab_nodes): Likewise. + * tree-profile.cc (gimple_gen_ic_func_profiler): Disable indirect + call profiling for IFUNC resolvers and their callees. + +2024-04-03 Tobias Burnus + + * lto-wrapper.cc (compile_offload_image): Prefix 'offload_args' + suffix by the target name. + +2024-04-03 Tobias Burnus + + * doc/install.texi (amdgcn-*-amdhsa): Update Newlib recommendation + and update wording for LLVM 18 release. + +2024-04-03 Tobias Burnus + + PR other/111966 + * config/gcn/mkoffload.cc (get_arch): New; moved -march= flag + handling from ... + (main): ... here; call it to handle --with-arch config option + and -march= commandline. + +2024-04-03 Jakub Jelinek + + PR middle-end/114552 + * expr.cc (emit_push_insn): Only use store_constructor for + immediate_const_ctor_p if int_expr_size matches size. + +2024-04-03 Richard Biener + + PR tree-optimization/114557 + PR tree-optimization/114480 + * tree-phinodes.cc (release_phi_node): Return PHIs from + allocation buckets not covered by free_phinodes to GC. + (remove_phi_node): Release the PHI LHS before freeing the + PHI node. + * tree-vect-loop.cc (vectorizable_live_operation): Get PHI lhs + before releasing it. + +2024-04-03 Jiahao Xu + + * config/loongarch/lasx.md: Remove unused code. + * config/loongarch/loongarch-protos.h + (loongarch_split_lsx_copy_d): Remove. + (loongarch_split_lsx_insert_d): Ditto. + (loongarch_split_lsx_fill_d): Ditto. + * config/loongarch/loongarch.cc + (loongarch_split_lsx_copy_d): Ditto. + (loongarch_split_lsx_insert_d): Ditto. + (loongarch_split_lsx_fill_d): Ditto. + * config/loongarch/lsx.md (lsx_vpickve2gr_du): Remove splitter. + (lsx_vpickve2gr_): Ditto. + (abs2): Remove expander. + (vabs2): Rename 2 abs2. + +2024-04-02 Christophe Lyon + + * config/aarch64/aarch64-option-extensions.def: Fix comment. + +2024-04-02 Tom Tromey + + * dwarf2out.cc (print_dw_val) : Don't + print newline when not recursing. + +2024-04-02 Iain Sandoe + + * config/darwin.cc (darwin_override_options): Update the + clang major version value in the dsymutil check. + +2024-04-02 Iain Sandoe + + * config/darwin.cc (darwin_override_options): Reduce the debug + level to 2 if dsymutil cannot handle .macinfo sections. + +2024-04-02 Yang Yujie + + * config/loongarch/t-loongarch: Add loongarch-def-arrays.h + to OPTION_H_EXTRA. + +2024-04-02 mengqinggang + Lulu Cheng + Xi Ruoyao + + * config.gcc: Add --with-tls option to change TLS flavor. + * config/loongarch/genopts/loongarch.opt.in: Add -mtls-dialect to + configure TLS flavor. + * config/loongarch/loongarch-def.h (struct loongarch_target): Add + tls_dialect. + * config/loongarch/loongarch-driver.cc (la_driver_init): Add tls + flavor. + * config/loongarch/loongarch-opts.cc (loongarch_init_target): Add + tls_dialect. + (loongarch_config_target): Ditto. + (loongarch_update_gcc_opt_status): Ditto. + * config/loongarch/loongarch-opts.h (loongarch_init_target): Ditto. + (TARGET_TLS_DESC): New define. + * config/loongarch/loongarch.cc (loongarch_symbol_insns): Add TLS + DESC instructions sequence length. + (loongarch_legitimize_tls_address): New TLS DESC instruction sequence. + (loongarch_option_override_internal): Add la_opt_tls_dialect. + (loongarch_option_restore): Add la_target.tls_dialect. + * config/loongarch/loongarch.md (@got_load_tls_desc): Normal + code model for TLS DESC. + (got_load_tls_desc_off64): Extreme cmode model for TLS DESC. + * config/loongarch/loongarch.opt: Regenerate. + * config/loongarch/loongarch.opt.urls: Ditto. + * doc/invoke.texi: Add a description of the compilation option + '-mtls-dialect={trad,desc}'. + +2024-04-02 Lulu Cheng + + * config/loongarch/loongarch.opt.urls: Regenerate. + +2024-04-01 Yang Yujie + + * config/loongarch/genopts/loongarch.opt.in: Mark -m[no-]recip as + aliases to -mrecip={all,none}, respectively. + * config/loongarch/loongarch.opt: Regenerate. + * config/loongarch/loongarch-def.h (ABI_FPU_64): Rename to... + (ABI_FPU64_P): ...this. + (ABI_FPU_32): Rename to... + (ABI_FPU32_P): ...this. + (ABI_FPU_NONE): Rename to... + (ABI_NOFPU_P): ...this. + (ABI_LP64_P): Define. + * config/loongarch/loongarch.cc (loongarch_init_print_operand_punct): + Merged into loongarch_global_init. + (loongarch_cpu_option_override): Renamed to + loongarch_target_option_override. + (loongarch_option_override_internal): Move the work after + loongarch_config_target into loongarch_target_option_override. + (loongarch_global_init): Define. + (INIT_TARGET_FLAG): Move to loongarch-opts.cc. + (loongarch_option_override): Call loongarch_global_init + separately. + * config/loongarch/loongarch-opts.cc (loongarch_parse_mrecip_scheme): + Split the parsing of -mrecip= from + loongarch_option_override_internal. + (loongarch_generate_mrecip_scheme): Define. Split from + loongarch_option_override_internal. + (loongarch_target_option_override): Define. Renamed from + loongarch_cpu_option_override. + (loongarch_init_misc_options): Define. Split from + loongarch_option_override_internal. + (INIT_TARGET_FLAG): Move from loongarch.cc. + * config/loongarch/loongarch-opts.h (loongarch_target_option_override): + New prototype. + (loongarch_parse_mrecip_scheme): New prototype. + (loongarch_init_misc_options): New prototype. + (TARGET_ABI_LP64): Simplify with ABI_LP64_P. + * config/loongarch/loongarch.h (TARGET_RECIP_DIV): Simplify. + Do not reference specific CPU architecture (LA664). + (TARGET_RECIP_SQRT): Same. + (TARGET_RECIP_RSQRT): Same. + (TARGET_RECIP_VEC_DIV): Same. + (TARGET_RECIP_VEC_SQRT): Same. + (TARGET_RECIP_VEC_RSQRT): Same. + +2024-04-01 Lulu Cheng + + * doc/invoke.texi: Add descriptions for the compilation + options. + +2024-03-31 Jeff Law + + * config/riscv/xiangshan.md (xiangshan_jump): Add branch, jalr, ret + and sfb_alu. + +2024-03-31 Pan Li + + * config/riscv/riscv-vector-builtins.cc (expand_builtin): Take + the term built-in over builtin. + +2024-03-31 Pan Li + + * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): + Remove unused var decl. + +2024-03-30 Xi Ruoyao + + PR target/114175 + * config/mips/mips.cc (mips_setup_incoming_varargs): Only skip + mips_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P + functions if arg.type is NULL. + +2024-03-29 Andrew Pinski + + * lto-compress.cc (lto_end_uncompression): Use + fatal_error instead of internal_error when ZSTD + is not enabled. + +2024-03-28 Jeff Law + + * config/h8300/extensions.md (zero_extendqihi*): Add output + template for reg->reg case where the regs don't match. + +2024-03-28 Gaius Mulley <(no_default)> + + PR modula2/114517 + * doc/gm2.texi: Mention gm2 treats a # in the first column + as a preprocessor directive unless -fno-cpp is supplied. + +2024-03-28 Jakub Jelinek + + * predict.cc (estimate_bb_frequencies): Fix comment typo, + scalling -> scaling. + +2024-03-28 Jakub Jelinek + + PR tree-optimization/112303 + * profile-count.h (profile_count::operator+): Perform + addition in uint64_t variable and set m_val to MIN of that + val and max_count. + (profile_count::operator+=): Likewise. + (profile_count::operator-=): Formatting fix. + (profile_count::apply_probability): Use safe_scale_64bit + even in the int overload. + +2024-03-28 Jan Hubicka + + PR middle-end/113907 + * ipa-icf.cc (sem_function::init): Hash PHI operands + (sem_function::compare_phi_node): Add argument about preserving order + +2024-03-28 Richard Biener + + PR middle-end/114480 + * cfganal.cc (compute_idf): Use simpler bitmap iteration, + touch work_set only when phi_insertion_points changed. + +2024-03-28 Palmer Dabbelt + + * config/riscv/riscv.h (REGISTER_NAMES): Add vxsat. + +2024-03-27 Segher Boessenkool + + PR rtl-optimization/101523 + * combine.cc (try_combine): Don't do a 2-insn combination if + it does not in fact change I2. + +2024-03-27 Jakub Jelinek + + * doc/invoke.texi (Spec Files): Use @var{S} instead of S, + @var{X} instead of X etc. for other placeholders. + +2024-03-27 Richard Biener + + PR tree-optimization/114057 + * tree-vect-slp.cc (vect_bb_slp_mark_live_stmts): Mark + BB reduction remain defs as scalar uses. + +2024-03-27 Victor Do Nascimento + + * config/aarch64/aarch64-option-extensions.def (rcpc3): + Fix FEATURE_STRING field to "lrcpc3". + +2024-03-27 Victor Do Nascimento + + * config/aarch64/aarch64-option-extensions.def: Add LSE128 + AARCH64_OPT_EXTENSION, adding it as a dependency for the D128 + feature. + * doc/invoke.texi (AArch64 Options): Document +lse128. + +2024-03-26 Richard Sandiford + + * config/aarch64/aarch64-feature-deps.h: Use constexpr for + out-of-line statics. + +2024-03-26 Cupertino Miranda + + PR target/114431 + * btfout.cc (get_name_for_datasec_entry): Add function. + (btf_asm_datasec_entry): Print label when possible. + +2024-03-26 Richard Ball + + PR target/114272 + * config/aarch64/aarch64-cores.def (AARCH64_CORE): + Change SCHEDULER_IDENT from cortexa55 to cortexa53 + for Cortex-A510 and Cortex-A520. + +2024-03-26 Jakub Jelinek + + PR middle-end/111151 + * fold-const.cc (extract_muldiv_1) : Punt for + MULT_EXPR altogether, or for MAX_EXPR if c is -1. + +2024-03-26 Jakub Jelinek + + PR sanitizer/111736 + * tsan.cc (instrument_expr): Punt on non-generic address space + accesses. + +2024-03-26 Richard Biener + + PR tree-optimization/114471 + * tree-vect-stmts.cc (vectorizable_operation): Verify operand + types are compatible with the result type. + +2024-03-26 Richard Biener + + PR tree-optimization/114464 + * tree-vect-loop.cc (vectorizable_recurr): Verify the latch + vector type is compatible with what we chose for the recurrence. + +2024-03-26 Jakub Jelinek + + * cfgloopmanip.cc (update_loop_exit_probability_scale_dom_bbs): + Fix comment typo - multple -> multiple. + * config/i386/x86-tune.def (X86_TUNE_ACCUMULATE_OUTGOING_ARGS): + Likewise. + +2024-03-26 YunQiang Su + + * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Predefine + __mips_strict_alignment if STRICT_ALIGNMENT. + +2024-03-25 Richard Biener + + * config.gcc (amdgcn): Add gfx1036 entries. + * config/gcn/gcn-hsa.h (NO_XNACK): Likewise. + (gcn_local_sym_hash): Likewise. + * config/gcn/gcn-opts.h (enum processor_type): Likewise. + (TARGET_GFX1036): New macro. + * config/gcn/gcn.cc (gcn_option_override): Handle gfx1036. + (gcn_omp_device_kind_arch_isa): Likewise. + (output_file_start): Likewise. + * config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __gfx1036__. + (TARGET_CPU_CPP_BUILTINS): Rename __gfx1030 to __gfx1030__. + * config/gcn/gcn.opt: Add gfx1036. + * config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX1036): New. + (main): Handle gfx1036. + * config/gcn/t-omp-device: Add gfx1036 isa. + * doc/install.texi (amdgcn): Add gfx1036. + * doc/invoke.texi (-march): Likewise. + +2024-03-25 Pan Li + + * config/riscv/riscv-c.cc (riscv_pragma_intrinsic): Remove error + when V is disabled and init the RVV types and intrinic APIs. + * config/riscv/riscv-vector-builtins.cc (expand_builtin): Report + error if V ext is disabled. + * config/riscv/riscv.cc (riscv_return_value_is_vector_type_p): + Ditto. + (riscv_arguments_is_vector_type_p): Ditto. + (riscv_vector_cc_function_p): Ditto. + * config/riscv/riscv_vector.h: Remove error if V is disable. + +2024-03-23 John David Anglin + + * config/pa/pa.cc (pa_output_global_address): Handle + UNSPEC_DLTIND14R addresses. + * config/pa/pa.h (PRINT_OPERAND_ADDRESS): Output "RT'" for + UNSPEC_DLTIND14R address. + +2024-03-23 Jakub Jelinek + + PR tree-optimization/114433 + * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): For + m_bitfld_load check save_first rather than m_first. + +2024-03-23 Jakub Jelinek + + PR tree-optimization/114425 + * gimple-lower-bitint.cc (build_bitint_stmt_ssa_conflicts): Handle + _Complex large/huge _BitInt types like the large/huge _BitInt types. + +2024-03-23 Jakub Jelinek + + PR middle-end/111683 + * tree-predcom.cc (pcom_worker::suitable_component_p): If has_write + and comp_step is RS_NONZERO, return false if any reference in the + component doesn't have DR_STEP a multiple of access size. + +2024-03-23 Takayuki 'January June' Suwa + + * config/xtensa/xtensa.md: Add new split pattern described above. + +2024-03-22 Georg-Johann Lay + + * config/avr/avr.cc (avr_set_current_function): Adjust diagnostic + for deprecated SIGNAL and INTERRUPT usage without respective header. + +2024-03-22 Andrew Stubbs + + * config/gcn/gcn.md (*memory_barrier): Split into RDNA and !RDNA. + (atomic_load): Adjust RDNA cache settings. + (atomic_store): Likewise. + (atomic_exchange): Likewise. + +2024-03-22 Andrew Stubbs + + * config/gcn/gcn.cc (gcn_vectorize_preferred_simd_mode): Prefer V32 on + RDNA devices. + +2024-03-22 Andrew Stubbs + + * config.gcc (amdgcn): Add gfx1103 entries. + * config/gcn/gcn-hsa.h (NO_XNACK): Likewise. + (gcn_local_sym_hash): Likewise. + * config/gcn/gcn-opts.h (enum processor_type): Likewise. + (TARGET_GFX1103): New macro. + * config/gcn/gcn.cc (gcn_option_override): Handle gfx1103. + (gcn_omp_device_kind_arch_isa): Likewise. + (output_file_start): Likewise. + (gcn_hsa_declare_function_name): Use TARGET_RDNA3, not just gfx1100. + * config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __gfx1103__. + * config/gcn/gcn.opt: Add gfx1103. + * config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX1103): New. + (main): Handle gfx1103. + * config/gcn/t-omp-device: Add gfx1103 isa. + * doc/install.texi (amdgcn): Add gfx1103. + * doc/invoke.texi (-march): Likewise. + +2024-03-22 Andrew Stubbs + + * dojump.cc (do_compare_rtx_and_jump): Clear excess bits in vector + bitmasks. + (do_compare_and_jump): Remove now-redundant similar code. + * internal-fn.cc (expand_fn_using_insn): Clear excess bits in vector + bitmasks. + (add_mask_and_len_args): Likewise. + +2024-03-22 Pan Li + + * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Add pre-define + macro __riscv_v_fixed_vlen when zvl. + * config/riscv/riscv.cc (riscv_handle_rvv_vector_bits_attribute): + New static func to take care of the RVV types decorated by + the attributes. + +2024-03-22 Andrew Pinski + + PR c/109619 + * builtins.cc (fold_builtin_1): Use error_operand_p + instead of checking against ERROR_MARK. + (fold_builtin_2): Likewise. + (fold_builtin_3): Likewise. + +2024-03-22 Jakub Jelinek + + PR sanitizer/111736 + * ubsan.cc (ubsan_expand_null_ifn, instrument_mem_ref): Avoid + SANITIZE_NULL instrumentation for non-generic address spaces + for which targetm.addr_space.zero_address_valid (as) is true. + +2024-03-22 Jakub Jelinek + + PR tree-optimization/114405 + * gimple-lower-bitint.cc (bitint_large_huge::lower_mergeable_stmt): + Set rprec to limb_prec rather than 0 if tprec is divisible by + limb_prec. In the last bf_cur handling, set rprec to (tprec + bo_bit) + % limb_prec rather than tprec % limb_prec and use just rprec instead + of rprec + bo_bit. For build_bit_field_ref offset, divide + (tprec + bo_bit) by limb_prec rather than just tprec. + +2024-03-22 Christoph Müllner + + PR target/114194 + * config/riscv/vector-iterators.md: Split VI into VI_FRAC and VI_NOFRAC. + Only include VI_NOFRAC in V_VLS without TARGET_XTHEADVECTOR. + +2024-03-22 Jeff Law + + * config/riscv/riscv.cc (riscv_expand_prologue): Add missing stack + tie for scalable and final stack adjustment if needed. + Co-authored-by: Raphael Zinsly + +2024-03-22 Pan Li + + PR target/114352 + * common/config/riscv/riscv-common.cc (struct riscv_func_target_info): + New struct for func decl and target name. + (struct riscv_func_target_hasher): New hasher for hash table mapping + from the fn_decl to fn_target_name. + (riscv_func_decl_hash): New func to compute the hash for fn_decl. + (riscv_func_target_hasher::hash): New func to impl hash interface. + (riscv_func_target_hasher::equal): New func to impl equal interface. + (riscv_cmdline_subset_list): New static var for cmdline subset list. + (riscv_func_target_table_lazy_init): New func to lazy init the func + target hash table. + (riscv_func_target_get): New func to get target name from hash table. + (riscv_func_target_put): New func to put target name into hash table. + (riscv_func_target_remove_and_destory): New func to remove target + info from the hash table and destory it. + (riscv_parse_arch_string): Set the static var cmdline_subset_list. + * config/riscv/riscv-subset.h (riscv_cmdline_subset_list): New static + var for cmdline subset list. + (riscv_func_target_get): New func decl. + (riscv_func_target_put): Ditto. + (riscv_func_target_remove_and_destory): Ditto. + * config/riscv/riscv-target-attr.cc (riscv_target_attr_parser::parse_arch): + Take cmdline_subset_list instead of current_subset_list when clone. + (riscv_process_target_attr): Record the func target info to hash table. + (riscv_option_valid_attribute_p): Add new arg tree fndel. + * config/riscv/riscv.cc (riscv_declare_function_name): Consume the + func target info and print the arch message. + +2024-03-22 Pan Li + + PR target/114352 + * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): + Replace implied, combine and check to func finalize. + (riscv_subset_list::finalize): New func impl to take care of + implied, combine ext and related checks. + * config/riscv/riscv-subset.h: Add func decl for finalize. + * config/riscv/riscv-target-attr.cc (riscv_target_attr_parser::parse_arch): + Finalize the ext before return succeed. + * config/riscv/riscv.cc (riscv_set_current_function): Reinit the + machine mode before when set cur function. + +2024-03-21 Andrew Stubbs + + * config/gcn/gcn.cc (gcn_expand_builtin_1): Comment correction. + +2024-03-21 Andrew Stubbs + + * config/gcn/gcn-hsa.h (ASM_SPEC): Pass -mattr=+cumode. + +2024-03-21 Andrew Stubbs + + * config/gcn/gcn-run.cc (main): Add an hsa_memory_free calls for each + device_malloc call. + +2024-03-21 liuhongt + + PR tree-optimization/114396 + * tree-vect-loop.cc (vect_peel_nonlinear_iv_init): Pass utype + and true to wi::from_mpz. + +2024-03-21 Richard Biener + + PR tree-optimization/111736 + * asan.cc (instrument_derefs): Do not instrument accesses + to non-generic address-spaces. + +2024-03-21 Richard Biener + + PR tree-optimization/113727 + * tree-sra.cc (analyze_access_subtree): Do not allow + replacements in subtrees when grp_partial_lhs. + +2024-03-21 liuhongt + + PR middle-end/114347 + * doc/invoke.texi: Document -fexcess-precision=16. + +2024-03-20 Cupertino Miranda + + * config/bpf/core-builtins.cc (bpf_core_get_index): Check if + field contains a DECL_NAME. + +2024-03-20 Cupertino Miranda + + * config/bpf/btfext-out.cc (cpf_core_reloc_add): Correct for new code. + Add assert to validate the string is set. + * config/bpf/core-builtins.cc (cr_final): Make string struct + field as const. + (process_enum_value): Correct for field type change. + (process_type): Set access string to "0". + +2024-03-20 Cupertino Miranda + + * config/bpf/core-builtins.cc (core_field_info): Add + support for POINTER_PLUS_EXPR in the root of the field expression. + (bpf_core_get_index): Likewise. + (pack_field_expr): Make the BTF type to point to the structure + related node, instead of its pointer type. + (make_core_safe_access_index): Correct to new code. + +2024-03-20 Xi Ruoyao + + PR target/114407 + * config/loongarch/loongarch-opts.cc (loongarch_config_target): + Fix typo in diagnostic message, enabing -> enabling. + +2024-03-20 Jakub Jelinek + + PR target/114175 + * config/visium/visium.cc (visium_setup_incoming_varargs): Only skip + TARGET_FUNCTION_ARG_ADVANCE for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-20 Jakub Jelinek + + PR target/114175 + * config/nios2/nios2.cc (nios2_setup_incoming_varargs): Only skip + nios2_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-20 Jakub Jelinek + + PR target/114175 + * config/nds32/nds32.cc (nds32_setup_incoming_varargs): Only skip + function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-20 Jakub Jelinek + + PR target/114175 + * config/m32r/m32r.cc (m32r_setup_incoming_varargs): Only skip + function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-20 Jakub Jelinek + + PR target/114175 + * config/ft32/ft32.cc (ft32_setup_incoming_varargs): Only skip + function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-20 Jakub Jelinek + + PR target/114175 + * config/epiphany/epiphany.cc (epiphany_setup_incoming_varargs): Only + skip function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-20 Jakub Jelinek + + PR target/114175 + * config/csky/csky.cc (csky_setup_incoming_varargs): Only skip + csky_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-20 Yury Khrustalev + + * config/aarch64/aarch64-sys-regs.def: Copy from Binutils. + +2024-03-20 Jakub Jelinek + + PR tree-optimization/114365 + * gimple-lower-bitint.cc (bitint_large_huge::handle_load): When adding + a PHI node, set iv2 to its result afterwards. + +2024-03-20 Jakub Jelinek + + * tree-ssa-loop-ch.cc (update_profile_after_ch): Fix comment typo: + probabbility -> probability. + (ch_base::copy_headers): Fix comment typo: itrations -> iterations. + +2024-03-20 Jakub Jelinek + + PR bootstrap/114369 + * system.h (vec_step): Define to vec_step_ when compiling + with clang on PowerPC. + +2024-03-20 demin.han + + PR target/112651 + * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Rename + (enum rvv_max_lmul_enum): Ditto + (TARGET_MAX_LMUL): Ditto + * config/riscv/riscv-v.cc (preferred_simd_mode): Ditto + * config/riscv/riscv-vector-costs.cc (costs::record_potential_unexpected_spills): Ditto + (costs::better_main_loop_than_p): Ditto + * config/riscv/riscv.opt: Replace -param=riscv-autovec-lmul with -mrvv-max-lmul + +2024-03-20 Richard Biener + + PR middle-end/113396 + * tree-dfa.cc (get_ref_base_and_extent): Use index range + bounds only if they fit within the address-range constraints + of offset_int. + +2024-03-20 Chenghui Pan + + * config/loongarch/loongarch.cc + (loongarch_hard_regno_mode_ok_uncached): Combine UNITS_PER_FP_REG and + UNITS_PER_FPREG macros. + (loongarch_hard_regno_nregs): Ditto. + (loongarch_class_max_nregs): Ditto. + (loongarch_get_separate_components): Ditto. + (loongarch_process_components): Ditto. + * config/loongarch/loongarch.h (UNITS_PER_FPREG): Ditto. + (UNITS_PER_HWFPVALUE): Ditto. + (UNITS_PER_FPVALUE): Ditto. + +2024-03-20 Chenghui Pan + + * config/loongarch/lasx.md (vec_cmp): Remove checking + of loongarch_expand_vec_cmp()'s return value. + (vec_cmpu): Ditto. + * config/loongarch/lsx.md (vec_cmp): Ditto. + (vec_cmpu): Ditto. + * config/loongarch/loongarch-protos.h + (loongarch_expand_vec_cmp): Change loongarch_expand_vec_cmp()'s return + type from bool to void. + * config/loongarch/loongarch.cc (loongarch_expand_vec_cmp): Ditto. + +2024-03-20 Chenghui Pan + + * config/loongarch/loongarch-protos.h + (loongarch_cfun_has_cprestore_slot_p): Delete. + (loongarch_adjust_insn_length): Delete. + (current_section_name): Delete. + (loongarch_split_symbol_type): Delete. + * config/loongarch/loongarch.cc + (loongarch_case_values_threshold): Delete. + (loongarch_spill_class): Delete. + (TARGET_OPTAB_SUPPORTED_P): Delete. + (TARGET_CASE_VALUES_THRESHOLD): Delete. + (TARGET_SPILL_CLASS): Delete. + +2024-03-20 Lewis Hyatt + + PR c++/111918 + * diagnostic-core.h (enum diagnostic_t): Add DK_ANY special flag. + * diagnostic.cc (diagnostic_option_classifier::classify_diagnostic): + Make use of DK_ANY to indicate a diagnostic was initially enabled. + (diagnostic_context::diagnostic_enabled): Do not change the type of + a diagnostic if the saved classification is type DK_ANY. + +2024-03-19 Martin Jambor + + PR ipa/108802 + PR ipa/114254 + * ipa-prop.cc (ipa_get_stmt_member_ptr_load_param): Fix case looking + at COMPONENT_REFs directly from a PARM_DECL, also recognize loads from + a pointer parameter. + (ipa_analyze_indirect_call_uses): Also recognize loads from a pointer + parameter, also recognize the case when pfn pointer is loaded in its + own BB. + +2024-03-19 Vladimir N. Makarov + + PR target/99829 + * lra-constraints.cc (lra_constraints): Prevent removing insn + with reverse equivalence to memory if the memory was reloaded. + +2024-03-19 David Malcolm + + PR middle-end/114348 + * diagnostic-format-json.cc + (json_stderr_output_format::machine_readable_stderr_p): New. + (json_file_output_format::machine_readable_stderr_p): New. + * diagnostic-format-sarif.cc + (sarif_stream_output_format::machine_readable_stderr_p): New. + (sarif_file_output_format::machine_readable_stderr_p): New. + * diagnostic.cc (diagnostic_context::action_after_output): Move + "fnotice" to before "finish" call, so that we still have the + diagnostic_context. + (fnotice): Bail out if the user requested one of the + machine-readable diagnostic output formats on stderr. + * diagnostic.h + (diagnostic_output_format::machine_readable_stderr_p): New pure + virtual function. + (diagnostic_text_output_format::machine_readable_stderr_p): New. + (diagnostic_context::get_output_format): New accessor. + +2024-03-19 Edwin Lu + + PR target/114175 + * config/riscv/riscv.cc (riscv_setup_incoming_varargs): Only skip + riscv_funciton_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL + +2024-03-19 Jonathan Wakely + + * doc/install.texi (Prerequisites): Document use of autogen for + libstdc++. + +2024-03-19 Richard Biener + + PR tree-optimization/114151 + PR tree-optimization/114269 + PR tree-optimization/114322 + PR tree-optimization/114074 + * tree-chrec.cc (chrec_fold_multiply): Restrict the use of + unsigned arithmetic when actual overflow on constant operands + is observed. + +2024-03-19 Jakub Jelinek + + PR target/114175 + * config/arc/arc.cc (arc_setup_incoming_varargs): Only skip + arc_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-19 Xi Ruoyao + + PR target/114175 + * config/loongarch/loongarch.cc + (loongarch_setup_incoming_varargs): Only skip + loongarch_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P + functions if arg.type is NULL. + +2024-03-19 Christophe Lyon + + PR target/114323 + * config/arm/arm-mve-builtins.cc + (function_instance::reads_global_state_p): Take CP_READ_MEMORY + into account. + +2024-03-19 Jakub Jelinek + + PR target/114175 + * config/alpha/alpha.cc (alpha_setup_incoming_varargs): Only skip + function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-19 Jakub Jelinek + + PR target/114175 + * config/rs6000/rs6000-call.cc (setup_incoming_varargs): Only skip + rs6000_function_arg_advance_1 for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-19 Richard Biener + + PR tree-optimization/114375 + * tree-vect-slp.cc (vect_build_slp_tree_2): Compute the + load permutation for masked loads but reject it when any + such is necessary. + * tree-vect-stmts.cc (vectorizable_load): Reject masked + VMAT_ELEMENTWISE and VMAT_STRIDED_SLP as those are not + supported. + +2024-03-19 Mary Bennett + + * common/config/riscv/riscv-common.cc: Create XCVbi extension + support. + * config/riscv/riscv.opt: Likewise. + * config/riscv/corev.md: Implement cv_branch pattern + for cv.beqimm and cv.bneimm. + * config/riscv/riscv.md: Add CORE-V branch immediate to RISC-V + branch instruction pattern. + * config/riscv/constraints.md: Implement constraints + cv_bi_s5 - signed 5-bit immediate. + * config/riscv/predicates.md: Implement predicate + const_int5s_operand - signed 5 bit immediate. + * doc/sourcebuild.texi: Add XCVbi documentation. + +2024-03-19 Chen Jiawei + + * config/riscv/riscv-cores.def (RISCV_TUNE): New def. + (RISCV_CORE): Ditto. + * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): New + option. + * config/riscv/riscv.cc: New def. + * config/riscv/riscv.md: New include. + * config/riscv/xiangshan.md: New file. + +2024-03-18 David Malcolm + + PR analyzer/110902 + PR analyzer/110928 + PR analyzer/111305 + PR analyzer/111441 + * selftest.h (ASSERT_NE_AT): New macro. + +2024-03-18 Uros Bizjak + + PR target/111822 + * config/i386/i386-features.cc (smode_convert_cst): New function + to handle SImode, DImode and TImode immediates, generalized from + timode_convert_cst. + (timode_convert_cst): Remove. + (scalar_chain::convert_op): Unify from + general_scalar_chain::convert_op and timode_scalar_chain::convert_op. + (general_scalar_chain::convert_op): Remove. + (timode_scalar_chain::convert_op): Remove. + (timode_scalar_chain::convert_insn): Update the call to + renamed timode_convert_cst. + * config/i386/i386-features.h (class scalar_chain): + Redeclare convert_op as protected class member. + (class general_calar_chain): Remove convert_op. + (class timode_scalar_chain): Ditto. + +2024-03-18 Jan Hubicka + + * config/i386/zn4zn5.md: Add file missed in the previous commit. + +2024-03-18 Jan Hubicka + Karthiban Anbazhagan + + * common/config/i386/cpuinfo.h (get_amd_cpu): Recognize znver5. + * common/config/i386/i386-common.cc (processor_names): Add znver5. + (processor_alias_table): Likewise. + * common/config/i386/i386-cpuinfo.h (processor_types): Add new zen + family. + (processor_subtypes): Add znver5. + * config.gcc (x86_64-*-* |...): Likewise. + * config/i386/driver-i386.cc (host_detect_local_cpu): Let + march=native detect znver5 cpu's. + * config/i386/i386-c.cc (ix86_target_macros_internal): Add + znver5. + * config/i386/i386-options.cc (m_ZNVER5): New definition + (processor_cost_table): Add znver5. + * config/i386/i386.cc (ix86_reassociation_width): Likewise. + * config/i386/i386.h (processor_type): Add PROCESSOR_ZNVER5 + (PTA_ZNVER5): New definition. + * config/i386/i386.md (define_attr "cpu"): Add znver5. + (Scheduling descriptions) Add znver5.md. + * config/i386/x86-tune-costs.h (znver5_cost): New definition. + * config/i386/x86-tune-sched.cc (ix86_issue_rate): Add znver5. + (ix86_adjust_cost): Likewise. + * config/i386/x86-tune.def (avx512_move_by_pieces): Add m_ZNVER5. + (avx512_store_by_pieces): Add m_ZNVER5. + * doc/extend.texi: Add znver5. + * doc/invoke.texi: Likewise. + * config/i386/znver4.md: Rename to zn4zn5.md; combine znver4 and znver5 Scheduler. + +2024-03-18 Georg-Johann Lay + + * config/avr/constraints.md (CX2, CX3, CX4): New constraints. + * config/avr/avr-protos.h (avr_xor_noclobber_dconst): New proto. + * config/avr/avr.cc (avr_xor_noclobber_dconst): New function. + * config/avr/avr.md (xorhi3, *xorhi3): Add "d,0,CX2,X" alternative. + (xorpsi3, *xorpsi3): Add "d,0,CX3,X" alternative. + (xorsi3, *xorsi3): Add "d,0,CX4,X" alternative. + +2024-03-18 liuhongt + + PR target/114334 + * config/i386/i386.md (mode): Add new number V8BF,V16BF,V32BF. + (MODEF248): New mode iterator. + (ssevecmodesuffix): Hanlde BF and HF. + * config/i386/sse.md (andnot3): Extend to HF/BF. + (3): Ditto. + +2024-03-18 John David Anglin + + PR rtl-optimization/112415 + * config/pa/pa.cc (pa_emit_move_sequence): Revise condition + for symbolic memory operands. + (pa_legitimate_address_p): Revise LO_SUM condition. + * config/pa/pa.h (INT14_OK_STRICT): Revise define. Move + comment about GNU linker to predicates.md. + * config/pa/predicates.md (floating_point_store_memory_operand): + Revise condition for symbolic memory operands. Update + comment. + +2024-03-17 John David Anglin + + * config/pa/pa.cc (pa_delegitimize_address): Delegitimize UNSPEC_TP. + +2024-03-16 Jakub Jelinek + + PR target/114175 + * config/i386/i386.cc (ix86_setup_incoming_varargs): Only skip + ix86_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions + if arg.type is NULL. + +2024-03-16 Jakub Jelinek + + PR tree-optimization/114329 + * gimple-lower-bitint.cc (struct bitint_large_huge): Declare + build_bit_field_ref method. + (bitint_large_huge::build_bit_field_ref): New method. + (bitint_large_huge::lower_mergeable_stmt): Use it. + +2024-03-15 YunQiang Su + + * config/riscv/riscv.opt.urls: Regenerated. + * config/rs6000/sysv4.opt.urls: Likewise. + * config/xtensa/xtensa.opt.urls: Likewise. + +2024-03-15 Jakub Jelinek + + * lower-subreg.cc (resolve_simple_move): Fix comment typo, + betwee -> between. + * edit-context.cc (class line_event): Fix comment typo, + betweeen -> between. + +2024-03-15 Jakub Jelinek + + PR target/114339 + * config/i386/i386-expand.cc (ix86_expand_int_sse_cmp) : Fix + a pasto, compare code against LE rather than GE. + +2024-03-15 Joe Ramsay + + * match.pd: Fix truncation pattern for -fno-signed-zeroes + +2024-03-15 Jakub Jelinek + + PR middle-end/114332 + * expr.cc (expand_expr_real_1): EXTEND_BITINT also CALL_EXPR results. + +2024-03-15 Jakub Jelinek + + PR tree-optimization/113466 + * gimple-lower-bitint.cc (bitint_large_huge): Add m_returns_twice_calls + member. + (bitint_large_huge::bitint_large_huge): Initialize it. + (bitint_large_huge::~bitint_large_huge): Release it. + (bitint_large_huge::lower_call): Remember ECF_RETURNS_TWICE call stmts + before which at least one statement has been inserted. + (gimple_lower_bitint): Move argument loads before ECF_RETURNS_TWICE + calls to a different block and add corresponding PHIs. + +2024-03-15 YunQiang Su + + * config/mips/mips.opt: Support -mstrict-align, and use + TARGET_STRICT_ALIGN as the flag; keep -m(no-)unaligned-access + as alias. + * config/mips/mips.h: Use TARGET_STRICT_ALIGN. + * config/mips/mips.opt.urls: Regenerate. + * doc/invoke.texi: Document -m(no-)strict-algin for MIPSr6. + +2024-03-15 Tejas Belagod + + PR middle-end/114108 + * tree-vect-patterns.cc (vect_recog_abd_pattern): Call + vect_convert_output with the correct vecitype. + +2024-03-15 Chenghui Pan + + * config/loongarch/lasx.md (lasx_xvpermi_q_): + Remove masking of operand 3. + +2024-03-14 Jason Merrill + + * tree-core.h (enum clobber_kind): Clarify CLOBBER_OBJECT_* + comments. + +2024-03-14 John David Anglin + + PR target/114288 + * config/pa/pa.cc (pa_legitimate_address_p): Don't allow + 14-bit displacements before reload for modes that may use + a floating-point load or store. + +2024-03-14 David Faust + + * config/bpf/bpf.h (INT8_TYPE): Change to signed char. + +2024-03-14 Max Filippov + + * config/xtensa/xtensa.md (movsi_internal): Move l32i and s32i + patterns ahead of the l32i.n and s32i.n. + +2024-03-14 Jakub Jelinek + + * config/gcn/gcn-hsa.h (ABI_VERSION_SPEC): Fix comment typo. + +2024-03-14 Jakub Jelinek + + PR middle-end/113907 + * ipa-icf.cc (sem_item_optimizer::merge_classes): Reset + SSA_NAME_RANGE_INFO and SSA_NAME_PTR_INFO on successfully ICF merged + functions. + +2024-03-14 Xi Ruoyao + + * config/loongarch/loongarch.md (any_ge): Remove. + (sge_): Remove. + +2024-03-14 Jakub Jelinek + + PR target/114310 + * config/aarch64/aarch64.cc (aarch64_expand_compare_and_swap): For + TImode force newval into a register. + +2024-03-14 Chung-Lin Tang + + * tree.h (OMP_CLAUSE_MAP_READONLY): New macro. + (OMP_CLAUSE__CACHE__READONLY): New macro. + * tree-core.h (struct GTY(()) tree_base): Adjust comments for new + uses of readonly_flag bit in OMP_CLAUSE_MAP_READONLY and + OMP_CLAUSE__CACHE__READONLY. + * tree-pretty-print.cc (dump_omp_clause): Add support for printing + OMP_CLAUSE_MAP_READONLY and OMP_CLAUSE__CACHE__READONLY. + +2024-03-14 Andreas Krebbel + + * config/s390/s390.cc (s390_encode_section_info): Adjust the check + for misaligned symbols. + * config/s390/s390.opt: Improve documentation. + +2024-03-14 Jakub Jelinek + + * gimple-iterator.cc (edge_before_returns_twice_call): Copy all + flags and probability from ad_edge to e edge. If CDI_DOMINATORS + are computed, recompute immediate dominator of other_edge->src + and other_edge->dest. + (gsi_safe_insert_before, gsi_safe_insert_seq_before): Update *iter + for the returns_twice call case to the gsi_for_stmt (stmt) to deal + with update it for bb splitting. + +2024-03-14 liuhongt + + * config/i386/i386-features.cc + (general_scalar_chain::convert_op): Handle REG_EH_REGION note. + (convert_scalars_to_vector): Ditto. + * config/i386/i386-features.h (class scalar_chain): New + memeber control_flow_insns. + +2024-03-13 Jakub Jelinek + + PR middle-end/114319 + * gimple-ssa-store-merging.cc + (imm_store_chain_info::try_coalesce_bswap): For 32-bit targets + allow matching __builtin_bswap64 if there is bswapsi2 optab. + +2024-03-13 Stefan Schulze Frielinghaus + + * config/s390/s390.cc (s390_secondary_reload): Guard + SYMBOL_FLAG_NOTALIGN2_P. + +2024-03-13 Stefan Schulze Frielinghaus + + * config/s390/s390-builtin-types.def: Update to reflect latest + changes. + * config/s390/s390-builtins.def: Streamline vector builtins with + LLVM. + +2024-03-13 Stefan Schulze Frielinghaus + + * config/s390/s390-builtins.def (vec_permi): Deprecate. + (vec_ctd): Deprecate. + (vec_ctd_s64): Deprecate. + (vec_ctd_u64): Deprecate. + (vec_ctsl): Deprecate. + (vec_ctul): Deprecate. + (vec_ld2f): Deprecate. + (vec_st2f): Deprecate. + (vec_insert): Deprecate overloads with bool vectors. + +2024-03-13 Jakub Jelinek + + PR middle-end/114313 + * gimple-lower-bitint.cc (bitint_large_huge::limb_access): Use + TYPE_SIZE of TREE_TYPE (var) rather than TYPE_SIZE of type. + (bitint_large_huge::handle_load): Pass NULL_TREE rather than + rhs_type to limb_access for the bitfield load cases. + (bitint_large_huge::lower_mergeable_stmt): Pass NULL_TREE rather than + lhs_type to limb_access if nlhs is non-NULL. + +2024-03-13 Jakub Jelinek + + PR sanitizer/112709 + * asan.cc (maybe_create_ssa_name, maybe_cast_to_ptrmode, + build_check_stmt, maybe_instrument_call, asan_expand_mark_ifn): Use + gsi_safe_insert_before instead of gsi_insert_before. + +2024-03-13 Jakub Jelinek + + PR sanitizer/112709 + * gimple-iterator.h (gsi_safe_insert_before, + gsi_safe_insert_seq_before): Declare. + * gimple-iterator.cc: Include gimplify.h. + (edge_before_returns_twice_call, adjust_before_returns_twice_call, + gsi_safe_insert_before, gsi_safe_insert_seq_before): New functions. + * ubsan.cc (instrument_mem_ref, instrument_pointer_overflow, + instrument_nonnull_arg, instrument_nonnull_return): Use + gsi_safe_insert_before instead of gsi_insert_before. + (maybe_instrument_pointer_overflow): Use force_gimple_operand, + gimple_seq_add_seq_without_update and gsi_safe_insert_seq_before + instead of force_gimple_operand_gsi. + (instrument_object_size): Likewise. Use gsi_safe_insert_before + instead of gsi_insert_before. + +2024-03-12 Richard Biener + + PR tree-optimization/114121 + * tree-chrec.cc (chrec_fold_plus_1): Guard recursion with + converted operand properly. + (chrec_fold_multiply): Likewise. Handle missed recursion. + +2024-03-12 Jakub Jelinek + + PR sanitizer/112709 + * asan.cc (has_stmt_been_instrumented_p): Don't instrument call + stores on the caller side unless it is a call to a builtin or + internal function or function doesn't return by hidden reference. + (maybe_instrument_call): Likewise. + (instrument_derefs): Instrument stores to RESULT_DECL if + returning by hidden reference. + +2024-03-12 Jakub Jelinek + + PR tree-optimization/114293 + * tree-ssa-strlen.cc (strlen_pass::handle_builtin_strlen): If + max is smaller than min, set max to ~(size_t)0. + +2024-03-12 Pan Li + + * config/riscv/riscv-c.cc (riscv_ext_version_value): Fix + code style greater than 80 chars. + (riscv_cpu_cpp_builtins): Fix useless empty line, indent + with 3 space(s) and argument unalignment. + +2024-03-12 Richard Biener + + PR tree-optimization/114297 + * tree-vect-loop.cc (vectorizable_live_operation): Pass in the + live stmts SLP node to vect_create_epilog_for_reduction. + +2024-03-12 Andrew Pinski + + PR driver/114314 + * common.opt (fmultiflags): Add RejectNegative. + +2024-03-11 Szabolcs Nagy + + * config/aarch64/aarch64.md: Rename aarch_ to aarch64_. + * config/aarch64/aarch64.opt: Likewise. + * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise. + * config/aarch64/aarch64.cc (aarch64_expand_prologue): Likewise. + (aarch64_expand_epilogue): Likewise. + (aarch64_post_cfi_startproc): Likewise. + (aarch64_handle_no_branch_protection): Copy and rename. + (aarch64_handle_standard_branch_protection): Likewise. + (aarch64_handle_pac_ret_protection): Likewise. + (aarch64_handle_pac_ret_leaf): Likewise. + (aarch64_handle_pac_ret_b_key): Likewise. + (aarch64_handle_bti_protection): Likewise. + (aarch64_override_options): Update branch protection validation. + (aarch64_handle_attr_branch_protection): Likewise. + * config/arm/aarch-common-protos.h (aarch_validate_mbranch_protection): + Pass branch protection type description as argument. + (struct aarch_branch_protect_type): Move from aarch-common.h. + * config/arm/aarch-common.cc (aarch_handle_no_branch_protection): + Remove. + (aarch_handle_standard_branch_protection): Remove. + (aarch_handle_pac_ret_protection): Remove. + (aarch_handle_pac_ret_leaf): Remove. + (aarch_handle_pac_ret_b_key): Remove. + (aarch_handle_bti_protection): Remove. + (aarch_validate_mbranch_protection): Pass branch protection type + description as argument. + * config/arm/aarch-common.h (enum aarch_key_type): Remove. + (struct aarch_branch_protect_type): Remove. + * config/arm/arm-c.cc (arm_cpu_builtins): Remove aarch_ra_sign_key. + * config/arm/arm.cc (arm_handle_no_branch_protection): Copy and rename. + (arm_handle_standard_branch_protection): Likewise. + (arm_handle_pac_ret_protection): Likewise. + (arm_handle_pac_ret_leaf): Likewise. + (arm_handle_bti_protection): Likewise. + (arm_configure_build_target): Update branch protection validation. + * config/arm/arm.opt: Remove aarch_ra_sign_key. + +2024-03-11 Richard Biener + + PR middle-end/114299 + * gimplify.cc (internal_get_tmp_var): When gimplification + of VAL failed, return a decl. + +2024-03-11 Jakub Jelinek + + PR tree-optimization/114278 + * tree-ssa.cc (maybe_optimize_var): If large/huge _BitInt vars are no + longer addressable, set DECL_NOT_GIMPLE_REG_P on them. + +2024-03-11 Eric Botcazou + + PR debug/113519 + PR debug/113777 + * dwarf2out.cc (gen_enumeration_type_die): In the reverse case, + generate the DIE with the same parent as in the regular case. + +2024-03-11 Andrew Pinski + + PR middle-end/95351 + * fold-const.cc (merge_truthop_with_opposite_arm): Use + the type of the operands of the comparison and not the type + of the comparison. + +2024-03-10 jlaw + + PR tree-optimization/110199 + * tree-ssa-scopedtables.cc + (avail_exprs_stack::simplify_binary_operation): Generalize handling + of MIN_EXPR/MAX_EXPR to allow additional simplifications. Canonicalize + comparison operands for other cases. + +2024-03-10 Pan Li + + * tree-vect-stmts.cc (vectorizable_store): Enable the assert + during transform process. + (vectorizable_load): Ditto. + +2024-03-10 jlaw + + PR target/102250 + * doc/install.texi: Document need for python when building + RISC-V compilers. + +2024-03-10 jlaw + + PR target/111362 + * mode-switching.cc (optimize_mode_switching): Only process + NONDEBUG insns. + +2024-03-09 Georg-Johann Lay + + * config/avr/avr.md: Fix typos in comment, indentation glitches + and some other nits. + +2024-03-09 Jakub Jelinek + + PR target/114284 + * fwprop.cc (try_fwprop_subst_pattern): Don't propagate + src containing MEMs unless prop.likely_profitable_p (). + +2024-03-09 Xi Ruoyao + + * config/loongarch/loongarch.cc (loongarch_print_operand_reloc): + Support 'Q' for R_LARCH_RELAX for TLS IE. + (loongarch_output_move): Use 'Q' to print R_LARCH_RELAX for TLS + IE. + * config/loongarch/loongarch.md (ld_from_got): Likewise. + +2024-03-09 Georg-Johann Lay + + * config/avr/avr.cc (avr_rtx_costs_1) [PLUS]: Determine cost for + usum_widenqihi and add_zero_extend1. + [MINUS]: Determine costs for udiff_widenqihi, sub+zero_extend, + sub+sign_extend. + * config/avr/avr.md (*addhi3.sign_extend1, *subhi3.sign_extend2): + Compute exact insn lengths. + (*usum_widenqihi3): Allow input operands to commute. + +2024-03-09 Jakub Jelinek + + * config/i386/i386.opt.urls: Regenerate. + +2024-03-09 Lulu Cheng + + * config/loongarch/sync.md (atomic_cas_value_strong): + In loongarch64, a sign extension operation is added when + operands[2] is a register operand and the mode is SImode. + 2024-03-08 Martin Jambor PR ipa/113757 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7237a5054bab..bc62afe9d00e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20240309 +20240415 diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog index 22a54e5332ec..113dd8ade453 100644 --- a/gcc/analyzer/ChangeLog +++ b/gcc/analyzer/ChangeLog @@ -1,3 +1,277 @@ +2024-04-12 Stefan Schulze Frielinghaus + + * region-model.cc (region_model::check_region_size): Bail out + early on function pointers. + +2024-04-10 David Malcolm + + PR analyzer/114472 + * access-diagram.cc (bit_size_expr::maybe_get_formatted_str): + Reject attempts to print sizes that are too large. + * region.cc (region_offset::calc_symbolic_bit_offset): Use a + typeless svalue for the bit offset. + * store.cc (bit_range::intersects_p): Replace assertion with + test. + (bit_range::exceeds_p): Likewise. + (bit_range::falls_short_of_p): Likewise. + +2024-04-10 David Malcolm + + * infinite-loop.cc: Include "diagnostic-format-sarif.h". + (infinite_loop::to_json): New. + (infinite_loop_diagnostic::maybe_add_sarif_properties): New. + +2024-04-10 David Malcolm + + * infinite-recursion.cc: Include "diagnostic-format-sarif.h". + (infinite_recursion_diagnostic::maybe_add_sarif_properties): New. + +2024-04-10 David Malcolm + + * call-details.cc: Include "diagnostic-format-sarif.h". + (overlapping_buffers::overlapping_buffers): Add params for new + fields. + (overlapping_buffers::maybe_add_sarif_properties): New. + (overlapping_buffers::m_byte_range_a): New field. + (overlapping_buffers::byte_range_b): New field. + (overlapping_buffers::m_num_bytes_read_sval): New field. + (call_details::complain_about_overlap): Pass new params to + overlapping_buffers ctor. + * ranges.cc (symbolic_byte_offset::to_json): New. + (symbolic_byte_range::to_json): New. + * ranges.h (symbolic_byte_offset::to_json): New decl. + (symbolic_byte_range::to_json): New decl. + +2024-04-10 David Malcolm + + * sm-taint.cc (tainted_allocation_size::tainted_allocation_size): + Add "size_in_bytes" param. + (tainted_allocation_size::maybe_add_sarif_properties): New. + (tainted_allocation_size::m_size_in_bytes): New field. + (region_model::check_dynamic_size_for_taint): Pass size_in_bytes + to tainted_allocation_size ctor. + +2024-04-09 Jakub Jelinek + + * analyzer.opt (Wanalyzer-undefined-behavior-strtok): Fix duplicated + words; in in -> in. + * program-state.cc (sm_state_map::replay_call_summary): Fix duplicated + words in comment; to to -> to. + (program_state::replay_call_summary): Likewise. + * region-model.cc (region_model::replay_call_summary): Likewise. + +2024-04-05 David Malcolm + + PR analyzer/114588 + * access-diagram.cc (access_diagram_impl::access_diagram_impl): + Replace hardcoded colors for valid_style and invalid_style with + calls to text_art::get_style_from_color_cap_name. + +2024-04-02 David Malcolm + + * region-model-manager.cc (maybe_undo_optimize_bit_field_compare): + Guard against null types. + * region-model.cc (apply_constraints_for_gswitch): Likewise. + +2024-03-27 David Malcolm + + PR analyzer/114473 + * call-summary.cc + (call_summary_replay::convert_svalue_from_summary): Assert that + the types match. + (call_summary_replay::convert_region_from_summary): Likewise. + (call_summary_replay::convert_region_from_summary_1): Add missing + cast for the deref of RK_SYMBOLIC case. + +2024-03-23 David Malcolm + + PR analyzer/114408 + * engine.cc (impl_run_checkers): Free up any dominance info that + we may have created. + * kf.cc (class kf_ubsan_handler): New. + (register_sanitizer_builtins): New. + (register_known_functions): Call register_sanitizer_builtins. + +2024-03-22 David Malcolm + + PR analyzer/112974 + PR analyzer/112975 + * sm-taint.cc (taint_state_machine::on_condition): Strip away + casts before considering LHS and RHS, to increase the chance of + detecting places where sanitization of a value may have happened. + +2024-03-22 David Malcolm + + * sm-taint.cc: Include "diagnostic-format-sarif.h". + (bounds_to_str): New. + (taint_diagnostic::maybe_add_sarif_properties): New. + (tainted_offset::tainted_offset): Add "offset" param. + (tainted_offset::maybe_add_sarif_properties): New. + (tainted_offset::m_offset): New. + (region_model::check_region_for_taint): Pass offset to + tainted_offset ctor. + +2024-03-21 David Malcolm + + PR analyzer/113619 + * region-model.cc (region_model::eval_condition): Fix + cast-handling from r14-3632-ge7b267444045c5 so that if those give + an unknown result, we continue trying the constraint manager. + +2024-03-20 David Malcolm + + PR analyzer/109251 + * sm-malloc.cc (deref_before_check::emit): Reject cases where the + check is in a loop header within a macro expansion. + (deref_before_check::loop_header_p): New. + +2024-03-20 Jakub Jelinek + + * constraint-manager.cc (test_range, test_constraint_conditions, + test_constant_comparisons, test_constraint_impl, test_purging, + test_bits): Use integer_zero_node instead of + build_zero_cst (integer_type_node) or + build_int_cst (integer_type_node, 0) and integer_one_node instead of + build_int_cst (integer_type_node, 1). + * region-model.cc (region_model::get_store_value, + append_interesting_constants, test_array_1, + test_get_representative_tree, test_unique_constants, test_assignment, + test_stack_frames, test_constraint_merging, test_widening_constraints, + test_iteration_1, test_array_2): Likewise. + +2024-03-19 Jakub Jelinek + + PR analyzer/113505 + * region-model.cc (get_tree_for_byte_offset, + region_model::get_representative_path_var_1, + test_mem_ref, test_POINTER_PLUS_EXPR_then_MEM_REF): Use + char __attribute__((may_alias)) * as type of MEM_REF second argument. + +2024-03-19 David Malcolm + + PR analyzer/114286 + * kf.cc (class kf_atomic_exchange): Reimplement based on signature + seen in gimple, rather than user-facing signature. + (class kf_atomic_load): Likewise. + (class kf_atomic_store): New. + (register_atomic_builtins): Register kf_atomic_store. + +2024-03-18 David Malcolm + + PR analyzer/110902 + PR analyzer/110928 + PR analyzer/111305 + PR analyzer/111441 + * access-diagram.cc: Include "analyzer/analyzer-selftests.h". + (get_access_size_str): Reimplement for conversion of + implmementation of bit_size_expr from tree to const svalue &. Use + svalue::maybe_print_for_user rather than tree printing routines. + (remove_ssa_names): Make non-static. + (bit_size_expr::get_formatted_str): Rename to... + (bit_size_expr::maybe_get_formatted_str): ...this, adding "model" + param and converting return type to a unique_ptr. Update for + conversion of implementation of bit_size_expr from tree to + const svalue &. Use svalue::maybe_print_for_user rather than tree + printing routines. + (bit_size_expr::print): Rename to... + (bit_size_expr::maybe_print_for_user): ...this, adding "model" + param and converting return type to bool. Update for + conversion of implementation of bit_size_expr from tree to + const svalue &. Use svalue::maybe_print_for_user rather than tree + printing routines. + (bit_size_expr::maybe_get_as_bytes): Add "mgr" param and convert + return type from tree to const svalue *; reimplement. + (access_range::access_range): Call strip_types when on region_offset + intializations. + (access_range::get_size): Update for conversion of implementation + of bit_size_expr from tree to const svalue &. + (access_operation::get_valid_bits): Pass manager to access_range + ctor. + (access_operation::maybe_get_invalid_before_bits): Likewise. + (access_operation::maybe_get_invalid_after_bits): Likewise. + (boundaries::add): Likewise. + (bit_to_table_map::populate): Add "mgr" param and pass it to + access_range ctor. + (access_diagram_impl::access_diagram_impl): Pass manager to + bit_to_table_map::populate. + (access_diagram_impl::maybe_add_gap): Use svalue rather than tree + for symbolic bit offsets. Port to new bit_size_expr + representation. + (access_diagram_impl::add_valid_vs_invalid_ruler): Port to new + bit_size_expr representation. + (selftest::assert_eq_typeless_integer): New. + (ASSERT_EQ_TYPELESS_INTEGER): New. + (selftest::test_bit_size_expr_to_bytes): New. + (selftest::analyzer_access_diagram_cc_tests): New. + * access-diagram.h (class bit_size_expr): Reimplement, converting + implementation from tree to const svalue &. + (access_range::access_range): Add "mgr" param. Call strip_types + on region_offset initializations. + (access_range::get_size): Update decl for reimplementation. + * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call + selftest::analyzer_access_diagram_cc_tests. + * analyzer-selftests.h + (selftest::analyzer_checker_script_cc_tests): Delete this stray + typo. + (selftest::analyzer_access_diagram_cc_tests): New decl. + * analyzer.h (print_expr_for_user): New decl. + (calc_symbolic_bit_offset): Update decl for reimplementation. + (strip_types): New decls. + (remove_ssa_names): New decl. + * bounds-checking.cc (strip_types): New. + (region_model::check_symbolic_bounds): Use typeless svalues. + * region-model-manager.cc + (region_model_manager::get_or_create_constant_svalue): Add "type" + param. Add overload with old signature. + (region_model_manager::get_or_create_int_cst): Support type being + NULL_TREE. + (region_model_manager::maybe_fold_unaryop): Gracefully reject folding + of casts to NULL_TREE type. + (get_code_for_cast): Use NOP_EXPR for "casting" svalues to + NULL_TREE type. + (region_model_manager::get_or_create_cast): Support "casting" + svalues to NULL_TREE type. + (region_model_manager::maybe_fold_binop): Don't crash on inputs + with NULL_TREE type. Handle folding of binops on constants with + NULL_TREE type. Add missing cast from PR analyzer/110902. + Support enough folding of other ops on NULL_TREE type to support + bounds checking. + (region_model_manager::get_or_create_const_fn_result_svalue): + Remove assertion that type is nonnull. + * region-model-manager.h + (region_model_manager::get_or_create_constant_svalue): Add + overloaded decl taking a type. + (region_model_manager::maybe_fold_binop): Make public. + (region_model_manager::constants_map_t): Use + constant_svalue::key_t for the key, rather than just tree. + * region-model.cc (print_expr_for_user): New. + (selftest::test_array_2): Handle casts. + * region.cc (region_offset::calc_symbolic_bit_offset): Return + const svalue & rather than tree, and reimplement accordingly. + (region::calc_offset): Use ptrdiff_type_node for types of byte + offsets. + (region::maybe_print_for_user): New. + (element_region::get_relative_symbolic_offset): Use NULL_TREE for + types of bit offsets. + (offset_region::get_bit_offset): Likewise. + (sized_region::get_bit_size_sval): Likewise for bit sizes. + * region.h (region::maybe_print_for_user): New decl. + * svalue.cc (class auto_add_parens): New. + (svalue::maybe_print_for_user): New. + (svalue::cmp_ptr): Support typeless constant svalues. + (tristate_from_boolean_tree_node): New, taken from... + (constant_svalue::eval_condition): ...here. Handle comparison of + typeless integer svalue constants. + * svalue.h (svalue::maybe_print_for_user): New decl. + (class constant_svalue): Support the type of the svalue being + NULL_TREE. + (struct default_hash_traits): New. + +2024-03-18 David Malcolm + + * access-diagram.cc (remove_ssa_names): Support operands being + NULL_TREE, such as e.g. for COMPONENT_REF's operand 2. + 2024-03-07 Jakub Jelinek * access-diagram.cc: Include diagnostic-core.h before including diff --git a/gcc/analyzer/access-diagram.cc b/gcc/analyzer/access-diagram.cc index 2836308c0199..500480b68328 100644 --- a/gcc/analyzer/access-diagram.cc +++ b/gcc/analyzer/access-diagram.cc @@ -40,6 +40,7 @@ along with GCC; see the file COPYING3. If not see #include "analyzer/access-diagram.h" #include "text-art/ruler.h" #include "fold-const.h" +#include "analyzer/analyzer-selftests.h" #if ENABLE_ANALYZER @@ -237,16 +238,14 @@ get_access_size_str (style_manager &sm, access_range accessed_range, tree type) { - bit_size_expr num_bits; - if (accessed_range.get_size (op.m_model, &num_bits)) + bit_size_expr num_bits (accessed_range.get_size (op.m_model.get_manager ())); + if (type) { - if (type) + styled_string s; + pretty_printer pp; + pp_format_decoder (&pp) = default_tree_printer; + if (num_bits.maybe_print_for_user (&pp, op.m_model)) { - styled_string s; - - pretty_printer pp; - num_bits.print (&pp); - if (op.m_dir == DIR_READ) return fmt_styled_string (sm, _("read of %qT (%s)"), @@ -258,22 +257,30 @@ get_access_size_str (style_manager &sm, type, pp_formatted_text (&pp)); } - if (op.m_dir == DIR_READ) - return num_bits.get_formatted_str (sm, - _("read of %wi bit"), - _("read of %wi bits"), - _("read of %wi byte"), - _("read of %wi bytes"), - _("read of %qE bits"), - _("read of %qE bytes")); - else - return num_bits.get_formatted_str (sm, - _("write of %wi bit"), - _("write of %wi bits"), - _("write of %wi byte"), - _("write of %wi bytes"), - _("write of %qE bits"), - _("write of %qE bytes")); + } + if (op.m_dir == DIR_READ) + { + if (auto p + = num_bits.maybe_get_formatted_str (sm, op.m_model, + _("read of %wi bit"), + _("read of %wi bits"), + _("read of %wi byte"), + _("read of %wi bytes"), + _("read of %qs bits"), + _("read of %qs bytes"))) + return std::move (*p.get ()); + } + else + { + if (auto p + = num_bits.maybe_get_formatted_str (sm, op.m_model, + _("write of %wi bit"), + _("write of %wi bits"), + _("write of %wi byte"), + _("write of %wi bytes"), + _("write of %qs bits"), + _("write of %qs bytes"))) + return std::move (*p.get ()); } if (type) @@ -301,9 +308,9 @@ strip_any_cast (tree expr) return expr; } -/* Subroutine of clean_up_for_diagram. */ +/* Duplicate EXPR, replacing any SSA names with the underlying variable. */ -static tree +tree remove_ssa_names (tree expr) { if (TREE_CODE (expr) == SSA_NAME @@ -311,7 +318,8 @@ remove_ssa_names (tree expr) return SSA_NAME_VAR (expr); tree t = copy_node (expr); for (int i = 0; i < TREE_OPERAND_LENGTH (expr); i++) - TREE_OPERAND (t, i) = remove_ssa_names (TREE_OPERAND (expr, i)); + if (TREE_OPERAND (expr, i)) + TREE_OPERAND (t, i) = remove_ssa_names (TREE_OPERAND (expr, i)); return t; } @@ -342,112 +350,128 @@ clean_up_for_diagram (tree expr) /* struct bit_size_expr. */ -text_art::styled_string -bit_size_expr::get_formatted_str (text_art::style_manager &sm, - const char *concrete_single_bit_fmt, - const char *concrete_plural_bits_fmt, - const char *concrete_single_byte_fmt, - const char *concrete_plural_bytes_fmt, - const char *symbolic_bits_fmt, - const char *symbolic_bytes_fmt) const +/* Attempt to generate a user-facing styled string that mentions this + bit_size_expr. + Use MODEL for extracting representative tree values where necessary. + The CONCRETE_* format strings should contain a single %wi. + The SYMBOLIC_* format strings should contain a single %qs. + Return nullptr if unable to represent the expression. */ + +std::unique_ptr +bit_size_expr::maybe_get_formatted_str (text_art::style_manager &sm, + const region_model &model, + const char *concrete_single_bit_fmt, + const char *concrete_plural_bits_fmt, + const char *concrete_single_byte_fmt, + const char *concrete_plural_bytes_fmt, + const char *symbolic_bits_fmt, + const char *symbolic_bytes_fmt) const { - if (TREE_CODE (m_num_bits) == INTEGER_CST) + region_model_manager &mgr = *model.get_manager (); + if (const svalue *num_bytes = maybe_get_as_bytes (mgr)) { - bit_size_t concrete_num_bits = wi::to_offset (m_num_bits); - if (concrete_num_bits % BITS_PER_UNIT == 0) + if (tree cst = num_bytes->maybe_get_constant ()) { - byte_size_t concrete_num_bytes = concrete_num_bits / BITS_PER_UNIT; + byte_size_t concrete_num_bytes = wi::to_offset (cst); + if (!wi::fits_uhwi_p (concrete_num_bytes)) + return nullptr; if (concrete_num_bytes == 1) - return fmt_styled_string (sm, concrete_single_byte_fmt, - concrete_num_bytes.to_uhwi ()); + return ::make_unique + (fmt_styled_string (sm, concrete_single_byte_fmt, + concrete_num_bytes.to_uhwi ())); else - return fmt_styled_string (sm, concrete_plural_bytes_fmt, - concrete_num_bytes.to_uhwi ()); + return ::make_unique + (fmt_styled_string (sm, concrete_plural_bytes_fmt, + concrete_num_bytes.to_uhwi ())); } else { - if (concrete_num_bits == 1) - return fmt_styled_string (sm, concrete_single_bit_fmt, - concrete_num_bits.to_uhwi ()); - else - return fmt_styled_string (sm, concrete_plural_bits_fmt, - concrete_num_bits.to_uhwi ()); + pretty_printer pp; + pp_format_decoder (&pp) = default_tree_printer; + if (!num_bytes->maybe_print_for_user (&pp, model)) + return nullptr; + return ::make_unique + (fmt_styled_string (sm, symbolic_bytes_fmt, + pp_formatted_text (&pp))); } } + else if (tree cst = m_num_bits.maybe_get_constant ()) + { + bit_size_t concrete_num_bits = wi::to_offset (cst); + if (!wi::fits_uhwi_p (concrete_num_bits)) + return nullptr; + if (concrete_num_bits == 1) + return ::make_unique + (fmt_styled_string (sm, concrete_single_bit_fmt, + concrete_num_bits.to_uhwi ())); + else + return ::make_unique + (fmt_styled_string (sm, concrete_plural_bits_fmt, + concrete_num_bits.to_uhwi ())); + } else { - if (tree bytes_expr = maybe_get_as_bytes ()) - return fmt_styled_string (sm, - symbolic_bytes_fmt, - clean_up_for_diagram (bytes_expr)); - return fmt_styled_string (sm, - symbolic_bits_fmt, - clean_up_for_diagram (m_num_bits)); + pretty_printer pp; + pp_format_decoder (&pp) = default_tree_printer; + if (!m_num_bits.maybe_print_for_user (&pp, model)) + return nullptr; + return ::make_unique + (fmt_styled_string (sm, symbolic_bits_fmt, + pp_formatted_text (&pp))); } } -void -bit_size_expr::print (pretty_printer *pp) const +bool +bit_size_expr::maybe_print_for_user (pretty_printer *pp, + const region_model &model) const { - if (TREE_CODE (m_num_bits) == INTEGER_CST) + if (tree cst = m_num_bits.maybe_get_constant ()) { - bit_size_t concrete_num_bits = wi::to_offset (m_num_bits); + bit_size_t concrete_num_bits = wi::to_offset (cst); pp_bit_size_t (pp, concrete_num_bits); + return true; } else { - if (tree bytes_expr = maybe_get_as_bytes ()) - pp_printf (pp, _("%qE bytes"), bytes_expr); + if (const svalue *num_bytes = maybe_get_as_bytes (*model.get_manager ())) + { + pretty_printer tmp_pp; + pp_format_decoder (&tmp_pp) = default_tree_printer; + if (!num_bytes->maybe_print_for_user (&tmp_pp, model)) + return false; + pp_printf (pp, _("%qs bytes"), pp_formatted_text (&tmp_pp)); + return true; + } else - pp_printf (pp, _("%qE bits"), m_num_bits); + { + pretty_printer tmp_pp; + pp_format_decoder (&tmp_pp) = default_tree_printer; + if (!m_num_bits.maybe_print_for_user (&tmp_pp, model)) + return false; + pp_printf (pp, _("%qs bits"), pp_formatted_text (&tmp_pp)); + return true; + } } } -tree -bit_size_expr::maybe_get_as_bytes () const +/* Attempt to get a symbolic value for this symbolic bit size, + expressed in bytes. + Return null if it's not known to divide exactly. */ + +const svalue * +bit_size_expr::maybe_get_as_bytes (region_model_manager &mgr) const { - switch (TREE_CODE (m_num_bits)) + if (tree cst = m_num_bits.maybe_get_constant ()) { - default: - break; - case INTEGER_CST: - { - const bit_size_t num_bits = wi::to_offset (m_num_bits); - if (num_bits % BITS_PER_UNIT != 0) - return NULL_TREE; - const bit_size_t num_bytes = num_bits / BITS_PER_UNIT; - return wide_int_to_tree (size_type_node, num_bytes); - } - break; - case PLUS_EXPR: - case MINUS_EXPR: - { - bit_size_expr op0 - = bit_size_expr (TREE_OPERAND (m_num_bits, 0)); - tree op0_as_bytes = op0.maybe_get_as_bytes (); - if (!op0_as_bytes) - return NULL_TREE; - bit_size_expr op1 - = bit_size_expr (TREE_OPERAND (m_num_bits, 1)); - tree op1_as_bytes = op1.maybe_get_as_bytes (); - if (!op1_as_bytes) - return NULL_TREE; - return fold_build2 (TREE_CODE (m_num_bits), size_type_node, - op0_as_bytes, op1_as_bytes); - } - break; - case MULT_EXPR: - { - bit_size_expr op1 - = bit_size_expr (TREE_OPERAND (m_num_bits, 1)); - if (tree op1_as_bytes = op1.maybe_get_as_bytes ()) - return fold_build2 (MULT_EXPR, size_type_node, - TREE_OPERAND (m_num_bits, 0), - op1_as_bytes); - } - break; + bit_offset_t concrete_bits = wi::to_offset (cst); + if (concrete_bits % BITS_PER_UNIT != 0) + /* Not an exact multiple, so fail. */ + return nullptr; } - return NULL_TREE; + const svalue *bits_per_byte + = mgr.get_or_create_int_cst (NULL_TREE, BITS_PER_UNIT); + return mgr.maybe_fold_binop (NULL_TREE, EXACT_DIV_EXPR, + &m_num_bits, bits_per_byte); } /* struct access_range. */ @@ -469,23 +493,19 @@ access_range::access_range (const region *base_region, const byte_range &bytes) } access_range::access_range (const region ®, region_model_manager *mgr) -: m_start (reg.get_offset (mgr)), - m_next (reg.get_next_offset (mgr)) +: m_start (strip_types (reg.get_offset (mgr), *mgr)), + m_next (strip_types (reg.get_next_offset (mgr), *mgr)) { } -bool -access_range::get_size (const region_model &model, bit_size_expr *out) const +bit_size_expr +access_range::get_size (region_model_manager *mgr) const { - tree start_expr = m_start.calc_symbolic_bit_offset (model); - if (!start_expr) - return false; - tree next_expr = m_next.calc_symbolic_bit_offset (model); - if (!next_expr) - return false; - *out = bit_size_expr (fold_build2 (MINUS_EXPR, size_type_node, - next_expr, start_expr)); - return true; + const svalue &start_bit_offset = m_start.calc_symbolic_bit_offset (mgr); + const svalue &next_bit_offset = m_next.calc_symbolic_bit_offset (mgr); + return bit_size_expr + (*mgr->get_or_create_binop (NULL_TREE, MINUS_EXPR, + &next_bit_offset, &start_bit_offset)); } bool @@ -550,7 +570,8 @@ access_operation::get_valid_bits () const const svalue *capacity_in_bytes_sval = m_model.get_capacity (m_base_region); return access_range (region_offset::make_concrete (m_base_region, 0), - region_offset::make_byte_offset (m_base_region, capacity_in_bytes_sval)); + region_offset::make_byte_offset (m_base_region, capacity_in_bytes_sval), + *get_manager ()); } access_range @@ -578,7 +599,8 @@ access_operation::maybe_get_invalid_before_bits (access_range *out) const else if (actual_bits.m_next > valid_bits.m_start) { /* Get part of accessed range that's before the valid range. */ - *out = access_range (actual_bits.m_start, valid_bits.m_start); + *out = access_range (actual_bits.m_start, valid_bits.m_start, + *get_manager ()); return true; } else @@ -607,7 +629,8 @@ access_operation::maybe_get_invalid_after_bits (access_range *out) const else if (actual_bits.m_start < valid_bits.m_next) { /* Get part of accessed range that's after the valid range. */ - *out = access_range (valid_bits.m_next, actual_bits.m_next); + *out = access_range (valid_bits.m_next, actual_bits.m_next, + *get_manager ()); return true; } else @@ -662,7 +685,8 @@ class boundaries void add (const region ®, region_model_manager *mgr, enum kind kind) { add (access_range (reg.get_offset (mgr), - reg.get_next_offset (mgr)), + reg.get_next_offset (mgr), + *mgr), kind); } @@ -1003,7 +1027,9 @@ class bit_to_table_map { public: /* Populate m_table_x_for_bit and m_bit_for_table_x. */ - void populate (const boundaries &boundaries, logger *logger) + void populate (const boundaries &boundaries, + region_model_manager &mgr, + logger *logger) { LOG_SCOPE (logger); @@ -1042,7 +1068,8 @@ class bit_to_table_map { const region_offset &next_offset = vec_boundaries[idx + 1]; m_table_x_for_prev_offset[next_offset] = table_x; - m_range_for_table_x[table_x] = access_range (offset, next_offset); + m_range_for_table_x[table_x] + = access_range (offset, next_offset, mgr); } table_x += 1; } @@ -2036,14 +2063,10 @@ class access_diagram_impl : public vbox_widget /* Register painting styles. */ { - style valid_style; - valid_style.m_fg_color = style::named_color::GREEN; - valid_style.m_bold = true; + style valid_style (get_style_from_color_cap_name ("valid")); m_valid_style_id = m_sm.get_or_create_id (valid_style); - style invalid_style; - invalid_style.m_fg_color = style::named_color::RED; - invalid_style.m_bold = true; + style invalid_style (get_style_from_color_cap_name ("invalid")); m_invalid_style_id = m_sm.get_or_create_id (invalid_style); } @@ -2071,7 +2094,7 @@ class access_diagram_impl : public vbox_widget We don't create a column in the table for the final offset, but we do populate it, so that looking at the table_x of one beyond the final table column gives us the upper bound offset. */ - m_btm.populate (*m_boundaries, logger); + m_btm.populate (*m_boundaries, *m_op.get_manager (), logger); /* Gracefully reject cases where the boundary sorting has gone wrong (due to awkward combinations of symbolic values). */ @@ -2290,30 +2313,19 @@ class access_diagram_impl : public vbox_widget lower.log ("lower", *m_logger); upper.log ("upper", *m_logger); } - tree lower_next = lower.m_next.calc_symbolic_bit_offset (m_op.m_model); - if (!lower_next) - { - if (m_logger) - m_logger->log ("failed to get lower_next"); - return; - } - tree upper_start = upper.m_start.calc_symbolic_bit_offset (m_op.m_model); - if (!upper_start) - { - if (m_logger) - m_logger->log ("failed to get upper_start"); - return; - } - tree num_bits_gap = fold_build2 (MINUS_EXPR, - size_type_node, - upper_start, lower_next); + region_model_manager *mgr = m_op.get_manager (); + const svalue &lower_next = lower.m_next.calc_symbolic_bit_offset (mgr); + const svalue &upper_start = upper.m_start.calc_symbolic_bit_offset (mgr); + const svalue *num_bits_gap + = mgr->get_or_create_binop (NULL_TREE, MINUS_EXPR, + &upper_start, &lower_next); if (m_logger) - m_logger->log ("num_bits_gap: %qE", num_bits_gap); - tree zero = build_int_cst (size_type_node, 0); + m_logger->log ("num_bits_gap: %qs", num_bits_gap->get_desc ().get ()); + + const svalue *zero = mgr->get_or_create_int_cst (NULL_TREE, 0); tristate ts_gt_zero = m_op.m_model.eval_condition (num_bits_gap, GT_EXPR, - zero, - NULL); + zero); if (ts_gt_zero.is_false ()) { if (m_logger) @@ -2321,18 +2333,23 @@ class access_diagram_impl : public vbox_widget return; } - bit_size_expr num_bits (num_bits_gap); - styled_string label = num_bits.get_formatted_str (m_sm, - _("%wi bit"), - _("%wi bits"), - _("%wi byte"), - _("%wi bytes"), - _("%qE bits"), - _("%qE bytes")); - w->add_range (m_btm.get_table_x_for_range (access_range (lower.m_next, - upper.m_start)), - std::move (label), - style::id_plain); + bit_size_expr num_bits (*num_bits_gap); + if (auto p = num_bits.maybe_get_formatted_str (m_sm, m_op.m_model, + _("%wi bit"), + _("%wi bits"), + _("%wi byte"), + _("%wi bytes"), + _("%qs bits"), + _("%qs bytes"))) + { + styled_string label = std::move (*p.get ()); + w->add_range (m_btm.get_table_x_for_range + (access_range (lower.m_next, + upper.m_start, + *mgr)), + std::move (label), + style::id_plain); + } } styled_string @@ -2366,32 +2383,31 @@ class access_diagram_impl : public vbox_widget { if (m_logger) invalid_before_bits.log ("invalid_before_bits", *m_logger); - bit_size_expr num_before_bits; - if (invalid_before_bits.get_size (m_op.m_model, &num_before_bits)) - { - styled_string label; - if (m_op.m_dir == DIR_READ) - label = num_before_bits.get_formatted_str - (m_sm, - _("under-read of %wi bit"), - _("under-read of %wi bits"), - _("under-read of %wi byte"), - _("under-read of %wi bytes"), - _("under-read of %qE bits"), - _("under-read of %qE bytes")); - else - label = num_before_bits.get_formatted_str - (m_sm, - _("underwrite of %wi bit"), - _("underwrite of %wi bits"), - _("underwrite of %wi byte"), - _("underwrite of %wi bytes"), - _("underwrite of %qE bits"), - _("underwrite of %qE bytes")); - w->add_range (m_btm.get_table_x_for_range (invalid_before_bits), - make_warning_string (std::move (label)), - m_invalid_style_id); - } + bit_size_expr num_before_bits + (invalid_before_bits.get_size (m_op.get_manager ())); + std::unique_ptr label; + if (m_op.m_dir == DIR_READ) + label = num_before_bits.maybe_get_formatted_str + (m_sm, m_op.m_model, + _("under-read of %wi bit"), + _("under-read of %wi bits"), + _("under-read of %wi byte"), + _("under-read of %wi bytes"), + _("under-read of %qs bits"), + _("under-read of %qs bytes")); + else + label = num_before_bits.maybe_get_formatted_str + (m_sm, m_op.m_model, + _("underwrite of %wi bit"), + _("underwrite of %wi bits"), + _("underwrite of %wi byte"), + _("underwrite of %wi bytes"), + _("underwrite of %qs bits"), + _("underwrite of %qs bytes")); + if (label) + w->add_range (m_btm.get_table_x_for_range (invalid_before_bits), + make_warning_string (std::move (*label)), + m_invalid_style_id); } else { @@ -2403,36 +2419,37 @@ class access_diagram_impl : public vbox_widget but std::optional is C++17. */ bool got_valid_bits = false; access_range valid_bits (m_op.get_valid_bits ()); - bit_size_expr num_valid_bits; - if (valid_bits.get_size (m_op.m_model, &num_valid_bits)) - { - if (m_logger) - valid_bits.log ("valid_bits", *m_logger); - - got_valid_bits = true; - maybe_add_gap (w, invalid_before_bits, valid_bits); - - styled_string label; - if (m_op.m_dir == DIR_READ) - label = num_valid_bits.get_formatted_str (m_sm, - _("size: %wi bit"), - _("size: %wi bits"), - _("size: %wi byte"), - _("size: %wi bytes"), - _("size: %qE bits"), - _("size: %qE bytes")); - else - label = num_valid_bits.get_formatted_str (m_sm, - _("capacity: %wi bit"), - _("capacity: %wi bits"), - _("capacity: %wi byte"), - _("capacity: %wi bytes"), - _("capacity: %qE bits"), - _("capacity: %qE bytes")); - w->add_range (m_btm.get_table_x_for_range (m_op.get_valid_bits ()), - std::move (label), - m_valid_style_id); - } + bit_size_expr num_valid_bits (valid_bits.get_size (m_op.get_manager ())); + if (m_logger) + valid_bits.log ("valid_bits", *m_logger); + + got_valid_bits = true; + maybe_add_gap (w, invalid_before_bits, valid_bits); + + std::unique_ptr label; + if (m_op.m_dir == DIR_READ) + label = num_valid_bits.maybe_get_formatted_str (m_sm, + m_op.m_model, + _("size: %wi bit"), + _("size: %wi bits"), + _("size: %wi byte"), + _("size: %wi bytes"), + _("size: %qs bits"), + _("size: %qs bytes")); + else + label + = num_valid_bits.maybe_get_formatted_str (m_sm, + m_op.m_model, + _("capacity: %wi bit"), + _("capacity: %wi bits"), + _("capacity: %wi byte"), + _("capacity: %wi bytes"), + _("capacity: %qs bits"), + _("capacity: %qs bytes")); + if (label) + w->add_range (m_btm.get_table_x_for_range (m_op.get_valid_bits ()), + std::move (*label), + m_valid_style_id); access_range invalid_after_bits; if (m_op.maybe_get_invalid_after_bits (&invalid_after_bits)) @@ -2443,32 +2460,31 @@ class access_diagram_impl : public vbox_widget if (m_logger) invalid_before_bits.log ("invalid_after_bits", *m_logger); - bit_size_expr num_after_bits; - if (invalid_after_bits.get_size (m_op.m_model, &num_after_bits)) - { - styled_string label; - if (m_op.m_dir == DIR_READ) - label = num_after_bits.get_formatted_str - (m_sm, - _("over-read of %wi bit"), - _("over-read of %wi bits"), - _("over-read of %wi byte"), - _("over-read of %wi bytes"), - _("over-read of %qE bits"), - _("over-read of %qE bytes")); - else - label = num_after_bits.get_formatted_str - (m_sm, - _("overflow of %wi bit"), - _("overflow of %wi bits"), - _("overflow of %wi byte"), - _("overflow of %wi bytes"), - _("over-read of %qE bits"), - _("overflow of %qE bytes")); - w->add_range (m_btm.get_table_x_for_range (invalid_after_bits), - make_warning_string (std::move (label)), - m_invalid_style_id); - } + bit_size_expr num_after_bits + (invalid_after_bits.get_size (m_op.get_manager ())); + std::unique_ptr label; + if (m_op.m_dir == DIR_READ) + label = num_after_bits.maybe_get_formatted_str + (m_sm, m_op.m_model, + _("over-read of %wi bit"), + _("over-read of %wi bits"), + _("over-read of %wi byte"), + _("over-read of %wi bytes"), + _("over-read of %qs bits"), + _("over-read of %qs bytes")); + else + label = num_after_bits.maybe_get_formatted_str + (m_sm, m_op.m_model, + _("overflow of %wi bit"), + _("overflow of %wi bits"), + _("overflow of %wi byte"), + _("overflow of %wi bytes"), + _("overflow of %qs bits"), + _("overflow of %qs bytes")); + if (label) + w->add_range (m_btm.get_table_x_for_range (invalid_after_bits), + make_warning_string (std::move (*label)), + m_invalid_style_id); } else { @@ -2672,6 +2688,101 @@ access_diagram::access_diagram (const access_operation &op, { } +#if CHECKING_P + +namespace selftest { + +/* Implementation detail of ASSERT_EQ_TYPELESS_INTEGER. */ + +static void +assert_eq_typeless_integer (const location &loc, + const svalue *sval, + int expected_int_val) +{ + ASSERT_NE_AT (loc, sval, nullptr); + ASSERT_EQ_AT (loc, sval->get_kind (), SK_CONSTANT); + ASSERT_EQ_AT (loc, + wi::to_offset (sval->maybe_get_constant ()), + expected_int_val); + ASSERT_EQ_AT (loc, sval->get_type (), NULL_TREE); +} + +/* Assert that SVAL is a constant_svalue equal to EXPECTED_INT_VAL, + with NULL_TREE as its type. */ + +#define ASSERT_EQ_TYPELESS_INTEGER(SVAL, EXPECTED_INT_VAL) \ + SELFTEST_BEGIN_STMT \ + assert_eq_typeless_integer ((SELFTEST_LOCATION), \ + (SVAL), \ + (EXPECTED_INT_VAL)); \ + SELFTEST_END_STMT + + +/* Various tests of bit_size_expr::maybe_get_as_bytes. */ + +static void +test_bit_size_expr_to_bytes () +{ + region_model_manager mgr; + + /* 40 bits: should be 5 bytes. */ + { + bit_size_expr num_bits (*mgr.get_or_create_int_cst (NULL_TREE, 40)); + const svalue *as_bytes = num_bits.maybe_get_as_bytes (mgr); + ASSERT_EQ_TYPELESS_INTEGER (as_bytes, 5); + } + + /* 41 bits: should not convert to bytes. */ + { + bit_size_expr num_bits (*mgr.get_or_create_int_cst (NULL_TREE, 41)); + const svalue *as_bytes = num_bits.maybe_get_as_bytes (mgr); + ASSERT_EQ (as_bytes, nullptr); + } + + tree n = build_global_decl ("n", size_type_node); + + const svalue *init_n + = mgr.get_or_create_initial_value (mgr.get_region_for_global (n)); + + const svalue *n_times_8 + = mgr.get_or_create_binop (NULL_TREE, MULT_EXPR, + init_n, + mgr.get_or_create_int_cst (NULL_TREE, 8)); + + /* (n * 8) bits should be n bytes */ + { + bit_size_expr num_bits (*n_times_8); + const svalue *as_bytes = num_bits.maybe_get_as_bytes (mgr); + ASSERT_EQ (as_bytes, mgr.get_or_create_cast (NULL_TREE, init_n)); + } + + /* (n * 8) + 16 bits should be n + 2 bytes */ + { + bit_size_expr num_bits + (*mgr.get_or_create_binop (NULL_TREE, PLUS_EXPR, + n_times_8, + mgr.get_or_create_int_cst (NULL_TREE, 16))); + const svalue *as_bytes = num_bits.maybe_get_as_bytes (mgr); + ASSERT_EQ (as_bytes->get_kind (), SK_BINOP); + const binop_svalue *binop = as_bytes->dyn_cast_binop_svalue (); + ASSERT_EQ (binop->get_op (), PLUS_EXPR); + ASSERT_EQ (binop->get_arg0 (), mgr.get_or_create_cast (NULL_TREE, init_n)); + ASSERT_EQ_TYPELESS_INTEGER (binop->get_arg1 (), 2); + } +} + +/* Run all of the selftests within this file. */ + +void +analyzer_access_diagram_cc_tests () +{ + test_bit_size_expr_to_bytes (); +} + +} // namespace selftest + +#endif /* CHECKING_P */ + } // namespace ana #endif /* #if ENABLE_ANALYZER */ diff --git a/gcc/analyzer/access-diagram.h b/gcc/analyzer/access-diagram.h index 435690b4772d..a54d1e6cf529 100644 --- a/gcc/analyzer/access-diagram.h +++ b/gcc/analyzer/access-diagram.h @@ -32,23 +32,24 @@ namespace ana { class bit_size_expr { public: - bit_size_expr () : m_num_bits (NULL) {} - bit_size_expr (tree num_bits) : m_num_bits (num_bits) {} - - text_art::styled_string - get_formatted_str (text_art::style_manager &sm, - const char *concrete_single_bit_fmt, - const char *concrete_plural_bits_fmt, - const char *concrete_single_byte_fmt, - const char *concrete_plural_bytes_fmt, - const char *symbolic_bits_fmt, - const char *symbolic_bytes_fmt) const; - void print (pretty_printer *pp) const; - - tree maybe_get_as_bytes () const; + bit_size_expr (const svalue &num_bits) : m_num_bits (num_bits) {} + + std::unique_ptr + maybe_get_formatted_str (text_art::style_manager &sm, + const region_model &model, + const char *concrete_single_bit_fmt, + const char *concrete_plural_bits_fmt, + const char *concrete_single_byte_fmt, + const char *concrete_plural_bytes_fmt, + const char *symbolic_bits_fmt, + const char *symbolic_bytes_fmt) const; + bool maybe_print_for_user (pretty_printer *pp, + const region_model &model) const; + + const svalue *maybe_get_as_bytes (region_model_manager &mgr) const; private: - tree m_num_bits; + const svalue &m_num_bits; }; /* A range of bits within a base region, where each endpoint @@ -60,8 +61,9 @@ struct access_range : m_start (), m_next () { } - access_range (region_offset start, region_offset next) - : m_start (start), m_next (next) + access_range (region_offset start, region_offset next, + region_model_manager &mgr) + : m_start (strip_types (start, mgr)), m_next (strip_types (next, mgr)) {} access_range (const region *base_region, const bit_range &bits); access_range (const region *base_region, const byte_range &bytes); @@ -74,7 +76,7 @@ struct access_range bool empty_p () const; - bool get_size (const region_model &model, bit_size_expr *out) const; + bit_size_expr get_size (region_model_manager *mgr) const; bool get_size_in_bits (bit_size_t *out) const { diff --git a/gcc/analyzer/analyzer-selftests.cc b/gcc/analyzer/analyzer-selftests.cc index 20fdba768ad0..4500e3a78f3a 100644 --- a/gcc/analyzer/analyzer-selftests.cc +++ b/gcc/analyzer/analyzer-selftests.cc @@ -51,6 +51,7 @@ void run_analyzer_selftests () { #if ENABLE_ANALYZER + analyzer_access_diagram_cc_tests (); analyzer_constraint_manager_cc_tests (); analyzer_function_set_cc_tests (); analyzer_program_point_cc_tests (); diff --git a/gcc/analyzer/analyzer-selftests.h b/gcc/analyzer/analyzer-selftests.h index 20a2bc4ea391..9cfe37a1b1d2 100644 --- a/gcc/analyzer/analyzer-selftests.h +++ b/gcc/analyzer/analyzer-selftests.h @@ -33,7 +33,7 @@ extern void run_analyzer_selftests (); /* Declarations for specific families of tests (by source file), in alphabetical order. */ -extern void analyzer_checker_script_cc_tests (); +extern void analyzer_access_diagram_cc_tests (); extern void analyzer_constraint_manager_cc_tests (); extern void analyzer_function_set_cc_tests (); extern void analyzer_program_point_cc_tests (); diff --git a/gcc/analyzer/analyzer.h b/gcc/analyzer/analyzer.h index 1d792ed23ec7..d43812e39635 100644 --- a/gcc/analyzer/analyzer.h +++ b/gcc/analyzer/analyzer.h @@ -140,6 +140,7 @@ class known_function; extern void dump_tree (pretty_printer *pp, tree t); extern void dump_quoted_tree (pretty_printer *pp, tree t); extern void print_quoted_type (pretty_printer *pp, tree t); +extern void print_expr_for_user (pretty_printer *pp, tree t); extern int readability_comparator (const void *p1, const void *p2); extern int tree_cmp (const void *p1, const void *p2); extern tree fixup_tree_for_diagnostic (tree); @@ -236,7 +237,7 @@ class region_offset return m_sym_offset; } - tree calc_symbolic_bit_offset (const region_model &model) const; + const svalue &calc_symbolic_bit_offset (region_model_manager *mgr) const; const svalue *calc_symbolic_byte_offset (region_model_manager *mgr) const; bool operator== (const region_offset &other) const @@ -436,6 +437,14 @@ get_string_cst_size (const_tree string_cst); extern tree get_ssa_default_def (const function &fun, tree var); +extern const svalue * +strip_types (const svalue *sval, region_model_manager &mgr); + +extern region_offset +strip_types (const region_offset &offset, region_model_manager &mgr); + +extern tree remove_ssa_names (tree expr); + } // namespace ana extern bool is_special_named_call_p (const gcall *call, const char *funcname, diff --git a/gcc/analyzer/analyzer.opt b/gcc/analyzer/analyzer.opt index 67c0c5023eba..bbf2ba670d8a 100644 --- a/gcc/analyzer/analyzer.opt +++ b/gcc/analyzer/analyzer.opt @@ -224,7 +224,7 @@ Warn about code paths in which an unsanitized value is used as a size. Wanalyzer-undefined-behavior-strtok Common Var(warn_analyzer_undefined_behavior_strtok) Init(1) Warning -Warn about code paths in in which a call is made to strtok with undefined behavior. +Warn about code paths in which a call is made to strtok with undefined behavior. Wanalyzer-use-after-free Common Var(warn_analyzer_use_after_free) Init(1) Warning diff --git a/gcc/analyzer/bounds-checking.cc b/gcc/analyzer/bounds-checking.cc index f46058ea478c..f8644addbfdc 100644 --- a/gcc/analyzer/bounds-checking.cc +++ b/gcc/analyzer/bounds-checking.cc @@ -1154,6 +1154,149 @@ class symbolic_buffer_over_read : public symbolic_past_the_end enum access_direction get_dir () const final override { return DIR_READ; } }; +const svalue * +strip_types (const svalue *sval, + region_model_manager &mgr) +{ + switch (sval->get_kind ()) + { + default: + gcc_unreachable (); + case SK_REGION: + { + const region_svalue *region_sval = (const region_svalue *)sval; + return mgr.get_ptr_svalue (NULL_TREE, region_sval->get_pointee ()); + } + case SK_CONSTANT: + return sval; + case SK_UNKNOWN: + return mgr.get_or_create_unknown_svalue (NULL_TREE); + case SK_POISONED: + { + const poisoned_svalue *poisoned_sval = (const poisoned_svalue *)sval; + return mgr.get_or_create_poisoned_svalue + (poisoned_sval->get_poison_kind (), + NULL_TREE); + } + case SK_SETJMP: + return sval; + case SK_INITIAL: + return sval; + case SK_UNARYOP: + { + const unaryop_svalue *unaryop_sval = (const unaryop_svalue *)sval; + const enum tree_code op = unaryop_sval->get_op (); + if (op == VIEW_CONVERT_EXPR || op == NOP_EXPR) + return strip_types (unaryop_sval->get_arg (), mgr); + return mgr.get_or_create_unaryop + (NULL_TREE, + op, + strip_types (unaryop_sval->get_arg (), mgr)); + } + case SK_BINOP: + { + const binop_svalue *binop_sval = (const binop_svalue *)sval; + const enum tree_code op = binop_sval->get_op (); + return mgr.get_or_create_binop + (NULL_TREE, + op, + strip_types (binop_sval->get_arg0 (), mgr), + strip_types (binop_sval->get_arg1 (), mgr)); + } + case SK_SUB: + { + const sub_svalue *sub_sval = (const sub_svalue *)sval; + return mgr.get_or_create_sub_svalue + (NULL_TREE, + strip_types (sub_sval->get_parent (), mgr), + sub_sval->get_subregion ()); + } + case SK_REPEATED: + { + const repeated_svalue *repeated_sval = (const repeated_svalue *)sval; + return mgr.get_or_create_repeated_svalue + (NULL_TREE, + strip_types (repeated_sval->get_outer_size (), mgr), + strip_types (repeated_sval->get_inner_svalue (), mgr)); + } + case SK_BITS_WITHIN: + { + const bits_within_svalue *bits_within_sval + = (const bits_within_svalue *)sval; + return mgr.get_or_create_bits_within + (NULL_TREE, + bits_within_sval->get_bits (), + strip_types (bits_within_sval->get_inner_svalue (), mgr)); + } + case SK_UNMERGEABLE: + { + const unmergeable_svalue *unmergeable_sval + = (const unmergeable_svalue *)sval; + return mgr.get_or_create_unmergeable + (strip_types (unmergeable_sval->get_arg (), mgr)); + } + case SK_PLACEHOLDER: + return sval; + case SK_WIDENING: + { + const widening_svalue *widening_sval = (const widening_svalue *)sval; + return mgr.get_or_create_widening_svalue + (NULL_TREE, + widening_sval->get_point (), + strip_types (widening_sval->get_base_svalue (), mgr), + strip_types (widening_sval->get_iter_svalue (), mgr)); + } + case SK_COMPOUND: + { + const compound_svalue *compound_sval = (const compound_svalue *)sval; + binding_map typeless_map; + for (auto iter : compound_sval->get_map ()) + { + const binding_key *key = iter.first; + const svalue *bound_sval = iter.second; + typeless_map.put (key, strip_types (bound_sval, mgr)); + } + return mgr.get_or_create_compound_svalue (NULL_TREE, typeless_map); + } + case SK_CONJURED: + return sval; + case SK_ASM_OUTPUT: + { + const asm_output_svalue *asm_output_sval + = (const asm_output_svalue *)sval; + auto_vec typeless_inputs + (asm_output_sval->get_num_inputs ()); + for (unsigned idx = 0; idx < asm_output_sval->get_num_inputs (); idx++) + typeless_inputs.quick_push + (strip_types (asm_output_sval->get_input (idx), + mgr)); + return mgr.get_or_create_asm_output_svalue + (NULL_TREE, + asm_output_sval->get_asm_string (), + asm_output_sval->get_output_idx (), + asm_output_sval->get_num_outputs (), + typeless_inputs); + } + case SK_CONST_FN_RESULT: + { + const const_fn_result_svalue *const_fn_result_sval + = (const const_fn_result_svalue *)sval; + auto_vec typeless_inputs + (const_fn_result_sval->get_num_inputs ()); + for (unsigned idx = 0; + idx < const_fn_result_sval->get_num_inputs (); + idx++) + typeless_inputs.quick_push + (strip_types (const_fn_result_sval->get_input (idx), + mgr)); + return mgr.get_or_create_const_fn_result_svalue + (NULL_TREE, + const_fn_result_sval->get_fndecl (), + typeless_inputs); + } + } +} + /* Check whether an access is past the end of the BASE_REG. Return TRUE if the access was valid, FALSE otherwise. */ @@ -1169,9 +1312,12 @@ region_model::check_symbolic_bounds (const region *base_reg, gcc_assert (ctxt); const svalue *next_byte - = m_mgr->get_or_create_binop (num_bytes_sval->get_type (), PLUS_EXPR, + = m_mgr->get_or_create_binop (NULL_TREE, PLUS_EXPR, sym_byte_offset, num_bytes_sval); + next_byte = strip_types (next_byte, *m_mgr); + capacity = strip_types (capacity, *m_mgr); + if (eval_condition (next_byte, GT_EXPR, capacity).is_true ()) { tree diag_arg = get_representative_tree (base_reg); diff --git a/gcc/analyzer/call-details.cc b/gcc/analyzer/call-details.cc index 5b145a2ce638..ca47953f1461 100644 --- a/gcc/analyzer/call-details.cc +++ b/gcc/analyzer/call-details.cc @@ -38,6 +38,7 @@ along with GCC; see the file COPYING3. If not see #include "stringpool.h" #include "attribs.h" #include "make-unique.h" +#include "diagnostic-format-sarif.h" #if ENABLE_ANALYZER @@ -425,8 +426,14 @@ class overlapping_buffers : public pending_diagnostic_subclass { public: - overlapping_buffers (tree fndecl) - : m_fndecl (fndecl) + overlapping_buffers (tree fndecl, + const symbolic_byte_range &byte_range_a, + const symbolic_byte_range &byte_range_b, + const svalue *num_bytes_read_sval) + : m_fndecl (fndecl), + m_byte_range_a (byte_range_a), + m_byte_range_b (byte_range_b), + m_num_bytes_read_sval (num_bytes_read_sval) { } @@ -469,8 +476,25 @@ class overlapping_buffers m_fndecl); } + void maybe_add_sarif_properties (sarif_object &result_obj) + const final override + { + sarif_property_bag &props = result_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/overlapping_buffers/" + props.set (PROPERTY_PREFIX "bytes_range_a", + m_byte_range_a.to_json ()); + props.set (PROPERTY_PREFIX "bytes_range_b", + m_byte_range_b.to_json ()); + props.set (PROPERTY_PREFIX "num_bytes_read_sval", + m_num_bytes_read_sval->to_json ()); +#undef PROPERTY_PREFIX + } + private: tree m_fndecl; + symbolic_byte_range m_byte_range_a; + symbolic_byte_range m_byte_range_b; + const svalue *m_num_bytes_read_sval; }; @@ -517,7 +541,10 @@ call_details::complain_about_overlap (unsigned arg_idx_a, if (!byte_range_a.intersection (byte_range_b, *model).is_true ()) return; - ctxt->warn (make_unique (get_fndecl_for_call ())); + ctxt->warn (make_unique (get_fndecl_for_call (), + byte_range_a, + byte_range_b, + num_bytes_read_sval)); } } // namespace ana diff --git a/gcc/analyzer/call-summary.cc b/gcc/analyzer/call-summary.cc index a569bb94cec5..c2c9c71f79b4 100644 --- a/gcc/analyzer/call-summary.cc +++ b/gcc/analyzer/call-summary.cc @@ -235,6 +235,11 @@ call_summary_replay::convert_svalue_from_summary (const svalue *summary_sval) const svalue *caller_sval = convert_svalue_from_summary_1 (summary_sval); + if (caller_sval) + if (summary_sval->get_type () && caller_sval->get_type ()) + gcc_assert (types_compatible_p (summary_sval->get_type (), + caller_sval->get_type ())); + /* Add to cache. */ add_svalue_mapping (summary_sval, caller_sval); @@ -552,6 +557,11 @@ call_summary_replay::convert_region_from_summary (const region *summary_reg) const region *caller_reg = convert_region_from_summary_1 (summary_reg); + if (caller_reg) + if (summary_reg->get_type () && caller_reg->get_type ()) + gcc_assert (types_compatible_p (summary_reg->get_type (), + caller_reg->get_type ())); + /* Add to cache. */ add_region_mapping (summary_reg, caller_reg); @@ -603,6 +613,8 @@ call_summary_replay::convert_region_from_summary_1 (const region *summary_reg) = get_caller_model ()->deref_rvalue (caller_ptr_sval, NULL_TREE, get_ctxt ()); + caller_reg = mgr->get_cast_region (caller_reg, + summary_reg->get_type ()); return caller_reg; } break; diff --git a/gcc/analyzer/constraint-manager.cc b/gcc/analyzer/constraint-manager.cc index a380b95315ee..06a2bb860e63 100644 --- a/gcc/analyzer/constraint-manager.cc +++ b/gcc/analyzer/constraint-manager.cc @@ -3374,8 +3374,8 @@ namespace selftest { static void test_range () { - tree int_0 = build_int_cst (integer_type_node, 0); - tree int_1 = build_int_cst (integer_type_node, 1); + tree int_0 = integer_zero_node; + tree int_1 = integer_one_node; tree int_2 = build_int_cst (integer_type_node, 2); tree int_5 = build_int_cst (integer_type_node, 5); @@ -3419,7 +3419,7 @@ static void test_constraint_conditions () { tree int_42 = build_int_cst (integer_type_node, 42); - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree x = build_global_decl ("x", integer_type_node); tree y = build_global_decl ("y", integer_type_node); @@ -3874,7 +3874,7 @@ test_transitivity () static void test_constant_comparisons () { - tree int_1 = build_int_cst (integer_type_node, 1); + tree int_1 = integer_one_node; tree int_3 = build_int_cst (integer_type_node, 3); tree int_4 = build_int_cst (integer_type_node, 4); tree int_5 = build_int_cst (integer_type_node, 5); @@ -4058,7 +4058,7 @@ static void test_constraint_impl () { tree int_42 = build_int_cst (integer_type_node, 42); - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree x = build_global_decl ("x", integer_type_node); tree y = build_global_decl ("y", integer_type_node); @@ -4220,7 +4220,7 @@ test_many_constants () static void test_purging (void) { - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree a = build_global_decl ("a", integer_type_node); tree b = build_global_decl ("b", integer_type_node); @@ -4654,7 +4654,7 @@ test_bits (void) { region_model_manager mgr; - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree int_0x80 = build_int_cst (integer_type_node, 0x80); tree int_0xff = build_int_cst (integer_type_node, 0xff); tree x = build_global_decl ("x", integer_type_node); diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc index ad310b4d8731..e0dc0e66e88c 100644 --- a/gcc/analyzer/engine.cc +++ b/gcc/analyzer/engine.cc @@ -6251,6 +6251,13 @@ impl_run_checkers (logger *logger) eng.get_model_manager ()->dump_untracked_regions (); delete purge_map; + + /* Free up any dominance info that we may have created. */ + FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) + { + function *fun = node->get_fun (); + free_dominance_info (fun, CDI_DOMINATORS); + } } /* Handle -fdump-analyzer and -fdump-analyzer-stderr. */ diff --git a/gcc/analyzer/infinite-loop.cc b/gcc/analyzer/infinite-loop.cc index 296489b1146d..e277a8384a04 100644 --- a/gcc/analyzer/infinite-loop.cc +++ b/gcc/analyzer/infinite-loop.cc @@ -63,6 +63,7 @@ along with GCC; see the file COPYING3. If not see #include "analyzer/checker-path.h" #include "analyzer/feasible-graph.h" #include "make-unique.h" +#include "diagnostic-format-sarif.h" /* A bundle of data characterizing a particular infinite loop identified within the exploded graph. */ @@ -105,6 +106,18 @@ struct infinite_loop && m_loc == other.m_loc); } + json::object * + to_json () const + { + json::object *loop_obj = new json::object (); + loop_obj->set_integer ("enode", m_enode.m_index); + json::array *edge_arr = new json::array (); + for (auto eedge : m_eedge_vec) + edge_arr->append (eedge->to_json ()); + loop_obj->set ("eedges", edge_arr); + return loop_obj; + } + const exploded_node &m_enode; location_t m_loc; std::vector m_eedge_vec; @@ -297,6 +310,15 @@ class infinite_loop_diagnostic } } + void maybe_add_sarif_properties (sarif_object &result_obj) + const final override + { + sarif_property_bag &props = result_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/infinite_loop_diagnostic/" + props.set (PROPERTY_PREFIX "inf_loop", m_inf_loop->to_json ()); +#undef PROPERTY_PREFIX + } + private: std::unique_ptr m_inf_loop; }; diff --git a/gcc/analyzer/infinite-recursion.cc b/gcc/analyzer/infinite-recursion.cc index 112e4bd08f28..65f136ddad6b 100644 --- a/gcc/analyzer/infinite-recursion.cc +++ b/gcc/analyzer/infinite-recursion.cc @@ -62,6 +62,7 @@ along with GCC; see the file COPYING3. If not see #include "make-unique.h" #include "analyzer/checker-path.h" #include "analyzer/feasible-graph.h" +#include "diagnostic-format-sarif.h" /* A subclass of pending_diagnostic for complaining about suspected infinite recursion. */ @@ -236,6 +237,18 @@ class infinite_recursion_diagnostic return false; } + void maybe_add_sarif_properties (sarif_object &result_obj) + const final override + { + sarif_property_bag &props = result_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/infinite_recursion_diagnostic/" + props.set_integer (PROPERTY_PREFIX "prev_entry_enode", + m_prev_entry_enode->m_index); + props.set_integer (PROPERTY_PREFIX "new_entry_enode", + m_new_entry_enode->m_index); +#undef PROPERTY_PREFIX + } + private: /* Return true iff control flow along FEDGE was affected by a conjured_svalue. */ diff --git a/gcc/analyzer/kf.cc b/gcc/analyzer/kf.cc index ed48ffbcba25..6931f07bd75e 100644 --- a/gcc/analyzer/kf.cc +++ b/gcc/analyzer/kf.cc @@ -116,39 +116,54 @@ kf_alloca::impl_call_pre (const call_details &cd) const cd.maybe_set_lhs (ptr_sval); } -/* Handler for: - void __atomic_exchange (type *ptr, type *val, type *ret, int memorder). */ +/* Handler for __atomic_exchange. + Although the user-facing documentation specifies it as having this + signature: + void __atomic_exchange (type *ptr, type *val, type *ret, int memorder) + + by the time the C/C++ frontends have acted on it, any calls that + can't be mapped to a _N variation end up with this signature: + + void + __atomic_exchange (size_t sz, void *ptr, void *val, void *ret, + int memorder) + + as seen in the gimple seen by the analyzer, and as specified + in sync-builtins.def. */ class kf_atomic_exchange : public internal_known_function { public: /* This is effectively: - *RET = *PTR; - *PTR = *VAL; + tmpA = *PTR; + tmpB = *VAL; + *PTR = tmpB; + *RET = tmpA; */ void impl_call_pre (const call_details &cd) const final override { - const svalue *ptr_ptr_sval = cd.get_arg_svalue (0); - tree ptr_ptr_tree = cd.get_arg_tree (0); - const svalue *val_ptr_sval = cd.get_arg_svalue (1); - tree val_ptr_tree = cd.get_arg_tree (1); - const svalue *ret_ptr_sval = cd.get_arg_svalue (2); - tree ret_ptr_tree = cd.get_arg_tree (2); + const svalue *num_bytes_sval = cd.get_arg_svalue (0); + const svalue *ptr_sval = cd.get_arg_svalue (1); + tree ptr_tree = cd.get_arg_tree (1); + const svalue *val_sval = cd.get_arg_svalue (2); + tree val_tree = cd.get_arg_tree (2); + const svalue *ret_sval = cd.get_arg_svalue (3); + tree ret_tree = cd.get_arg_tree (3); /* Ignore the memorder param. */ region_model *model = cd.get_model (); region_model_context *ctxt = cd.get_ctxt (); - const region *val_region - = model->deref_rvalue (val_ptr_sval, val_ptr_tree, ctxt); - const svalue *star_val_sval = model->get_store_value (val_region, ctxt); - const region *ptr_region - = model->deref_rvalue (ptr_ptr_sval, ptr_ptr_tree, ctxt); - const svalue *star_ptr_sval = model->get_store_value (ptr_region, ctxt); - const region *ret_region - = model->deref_rvalue (ret_ptr_sval, ret_ptr_tree, ctxt); - model->set_value (ptr_region, star_val_sval, ctxt); - model->set_value (ret_region, star_ptr_sval, ctxt); + const region *ptr_reg = model->deref_rvalue (ptr_sval, ptr_tree, ctxt); + const region *val_reg = model->deref_rvalue (val_sval, val_tree, ctxt); + const region *ret_reg = model->deref_rvalue (ret_sval, ret_tree, ctxt); + + const svalue *tmp_a_sval + = model->read_bytes (ptr_reg, ptr_tree, num_bytes_sval, ctxt); + const svalue *tmp_b_sval + = model->read_bytes (val_reg, val_tree, num_bytes_sval, ctxt); + model->write_bytes (ptr_reg, num_bytes_sval, tmp_b_sval, ctxt); + model->write_bytes (ret_reg, num_bytes_sval, tmp_a_sval, ctxt); } }; @@ -265,32 +280,85 @@ class kf_atomic_op_fetch : public internal_known_function enum tree_code m_op; }; -/* Handler for: - void __atomic_load (type *ptr, type *ret, int memorder). */ +/* Handler for __atomic_load. + Although the user-facing documentation specifies it as having this + signature: + + void __atomic_load (type *ptr, type *ret, int memorder) + + by the time the C/C++ frontends have acted on it, any calls that + can't be mapped to a _N variation end up with this signature: + + void __atomic_load (size_t sz, const void *src, void *dst, int memorder); + + as seen in the gimple seen by the analyzer, and as specified + in sync-builtins.def. */ class kf_atomic_load : public internal_known_function { public: /* This is effectively: - *RET = *PTR; + memmove (dst, src, sz); */ void impl_call_pre (const call_details &cd) const final override { - const svalue *ptr_ptr_sval = cd.get_arg_svalue (0); - tree ptr_ptr_tree = cd.get_arg_tree (0); - const svalue *ret_ptr_sval = cd.get_arg_svalue (1); - tree ret_ptr_tree = cd.get_arg_tree (1); + const svalue *num_bytes_sval = cd.get_arg_svalue (0); + const svalue *src_sval = cd.get_arg_svalue (1); + tree src_tree = cd.get_arg_tree (1); + const svalue *dst_sval = cd.get_arg_svalue (2); + tree dst_tree = cd.get_arg_tree (2); /* Ignore the memorder param. */ region_model *model = cd.get_model (); region_model_context *ctxt = cd.get_ctxt (); - const region *ptr_region - = model->deref_rvalue (ptr_ptr_sval, ptr_ptr_tree, ctxt); - const svalue *star_ptr_sval = model->get_store_value (ptr_region, ctxt); - const region *ret_region - = model->deref_rvalue (ret_ptr_sval, ret_ptr_tree, ctxt); - model->set_value (ret_region, star_ptr_sval, ctxt); + const region *dst_reg = model->deref_rvalue (dst_sval, dst_tree, ctxt); + const region *src_reg = model->deref_rvalue (src_sval, src_tree, ctxt); + + const svalue *data_sval + = model->read_bytes (src_reg, src_tree, num_bytes_sval, ctxt); + model->write_bytes (dst_reg, num_bytes_sval, data_sval, ctxt); + } +}; + +/* Handler for __atomic_store. + Although the user-facing documentation specifies it as having this + signature: + + void __atomic_store (type *ptr, type *val, int memorder) + + by the time the C/C++ frontends have acted on it, any calls that + can't be mapped to a _N variation end up with this signature: + + void __atomic_store (size_t sz, type *dst, type *src, int memorder) + + as seen in the gimple seen by the analyzer, and as specified + in sync-builtins.def. */ + +class kf_atomic_store : public internal_known_function +{ +public: + /* This is effectively: + memmove (dst, src, sz); + */ + void impl_call_pre (const call_details &cd) const final override + { + const svalue *num_bytes_sval = cd.get_arg_svalue (0); + const svalue *dst_sval = cd.get_arg_svalue (1); + tree dst_tree = cd.get_arg_tree (1); + const svalue *src_sval = cd.get_arg_svalue (2); + tree src_tree = cd.get_arg_tree (2); + /* Ignore the memorder param. */ + + region_model *model = cd.get_model (); + region_model_context *ctxt = cd.get_ctxt (); + + const region *dst_reg = model->deref_rvalue (dst_sval, dst_tree, ctxt); + const region *src_reg = model->deref_rvalue (src_sval, src_tree, ctxt); + + const svalue *data_sval + = model->read_bytes (src_reg, src_tree, num_bytes_sval, ctxt); + model->write_bytes (dst_reg, num_bytes_sval, data_sval, ctxt); } }; @@ -2021,6 +2089,7 @@ register_atomic_builtins (known_function_manager &kfm) kfm.add (BUILT_IN_ATOMIC_LOAD_4, make_unique ()); kfm.add (BUILT_IN_ATOMIC_LOAD_8, make_unique ()); kfm.add (BUILT_IN_ATOMIC_LOAD_16, make_unique ()); + kfm.add (BUILT_IN_ATOMIC_STORE, make_unique ()); kfm.add (BUILT_IN_ATOMIC_STORE_N, make_unique ()); kfm.add (BUILT_IN_ATOMIC_STORE_1, make_unique ()); kfm.add (BUILT_IN_ATOMIC_STORE_2, make_unique ()); @@ -2129,6 +2198,27 @@ register_atomic_builtins (known_function_manager &kfm) make_unique (BIT_IOR_EXPR)); } +/* Handle calls to the various __builtin___ubsan_handle_*. + These can return, but continuing after such a return + isn't likely to be interesting to the user of the analyzer. + Hence we terminate the analysis path at one of these calls. */ + +class kf_ubsan_handler : public internal_known_function +{ + void impl_call_post (const call_details &cd) const final override + { + if (cd.get_ctxt ()) + cd.get_ctxt ()->terminate_path (); + } +}; + +static void +register_sanitizer_builtins (known_function_manager &kfm) +{ + kfm.add (BUILT_IN_UBSAN_HANDLE_NONNULL_ARG, + make_unique ()); +} + /* Populate KFM with instances of known functions supported by the core of the analyzer (as opposed to plugins). */ @@ -2155,6 +2245,7 @@ register_known_functions (known_function_manager &kfm, kfm.add (BUILT_IN_STACK_SAVE, make_unique ()); register_atomic_builtins (kfm); + register_sanitizer_builtins (kfm); register_varargs_builtins (kfm); } diff --git a/gcc/analyzer/program-state.cc b/gcc/analyzer/program-state.cc index c88652baf5ca..7842b596a4b2 100644 --- a/gcc/analyzer/program-state.cc +++ b/gcc/analyzer/program-state.cc @@ -877,7 +877,7 @@ program_state::program_state (const extrinsic_state &ext_state) } } -/* Attempt to to use R to replay SUMMARY into this object. +/* Attempt to use R to replay SUMMARY into this object. Return true if it is possible. */ bool @@ -1625,7 +1625,7 @@ program_state::detect_leaks (const program_state &src_state, dest_state.m_region_model->unset_dynamic_extents (reg); } -/* Attempt to to use R to replay SUMMARY into this object. +/* Attempt to use R to replay SUMMARY into this object. Return true if it is possible. */ bool diff --git a/gcc/analyzer/ranges.cc b/gcc/analyzer/ranges.cc index ffdd0d4c5722..659ada7609d6 100644 --- a/gcc/analyzer/ranges.cc +++ b/gcc/analyzer/ranges.cc @@ -103,6 +103,12 @@ symbolic_byte_offset::dump (bool simple) const pp_flush (&pp); } +json::value * +symbolic_byte_offset::to_json () const +{ + return m_num_bytes_sval->to_json (); +} + tree symbolic_byte_offset::maybe_get_constant () const { @@ -156,6 +162,15 @@ symbolic_byte_range::dump (bool simple, region_model_manager &mgr) const pp_flush (&pp); } +json::value * +symbolic_byte_range::to_json () const +{ + json::object *obj = new json::object (); + obj->set ("start", m_start.to_json ()); + obj->set ("size", m_size.to_json ()); + return obj; +} + bool symbolic_byte_range::empty_p () const { diff --git a/gcc/analyzer/ranges.h b/gcc/analyzer/ranges.h index 92d963b7a2bc..aca4554bde69 100644 --- a/gcc/analyzer/ranges.h +++ b/gcc/analyzer/ranges.h @@ -39,6 +39,8 @@ class symbolic_byte_offset void dump_to_pp (pretty_printer *pp, bool) const; void dump (bool) const; + json::value *to_json () const; + bool operator== (const symbolic_byte_offset &other) const { return m_num_bytes_sval == other.m_num_bytes_sval; @@ -70,6 +72,8 @@ class symbolic_byte_range region_model_manager &mgr) const; void dump (bool, region_model_manager &mgr) const; + json::value *to_json () const; + bool empty_p () const; symbolic_byte_offset get_start_byte_offset () const diff --git a/gcc/analyzer/region-model-manager.cc b/gcc/analyzer/region-model-manager.cc index 8530f49e74ab..f155eeb87c0d 100644 --- a/gcc/analyzer/region-model-manager.cc +++ b/gcc/analyzer/region-model-manager.cc @@ -222,21 +222,29 @@ region_model_manager::reject_if_too_complex (svalue *sval) of trees */ const svalue * -region_model_manager::get_or_create_constant_svalue (tree cst_expr) +region_model_manager::get_or_create_constant_svalue (tree type, tree cst_expr) { gcc_assert (cst_expr); gcc_assert (CONSTANT_CLASS_P (cst_expr)); + gcc_assert (type == TREE_TYPE (cst_expr) || type == NULL_TREE); - constant_svalue **slot = m_constants_map.get (cst_expr); + constant_svalue::key_t key (type, cst_expr); + constant_svalue **slot = m_constants_map.get (key); if (slot) return *slot; constant_svalue *cst_sval - = new constant_svalue (alloc_symbol_id (), cst_expr); + = new constant_svalue (alloc_symbol_id (), type, cst_expr); RETURN_UNKNOWN_IF_TOO_COMPLEX (cst_sval); - m_constants_map.put (cst_expr, cst_sval); + m_constants_map.put (key, cst_sval); return cst_sval; } +const svalue * +region_model_manager::get_or_create_constant_svalue (tree cst_expr) +{ + return get_or_create_constant_svalue (TREE_TYPE (cst_expr), cst_expr); +} + /* Return the svalue * for a constant_svalue for the INTEGER_CST for VAL of type TYPE, creating it if necessary. */ @@ -244,10 +252,13 @@ const svalue * region_model_manager::get_or_create_int_cst (tree type, const poly_wide_int_ref &cst) { - gcc_assert (type); - gcc_assert (INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type)); - tree tree_cst = wide_int_to_tree (type, cst); - return get_or_create_constant_svalue (tree_cst); + tree effective_type = type; + if (!type) + effective_type = ptrdiff_type_node; + gcc_assert (INTEGRAL_TYPE_P (effective_type) + || POINTER_TYPE_P (effective_type)); + tree tree_cst = wide_int_to_tree (effective_type, cst); + return get_or_create_constant_svalue (type, tree_cst); } /* Return the svalue * for the constant_svalue for the NULL pointer @@ -432,6 +443,9 @@ region_model_manager::maybe_fold_unaryop (tree type, enum tree_code op, case VIEW_CONVERT_EXPR: case NOP_EXPR: { + if (!type) + return nullptr; + /* Handle redundant casts. */ if (arg->get_type () && useless_type_conversion_p (arg->get_type (), type)) @@ -442,13 +456,13 @@ region_model_manager::maybe_fold_unaryop (tree type, enum tree_code op, unless INNER_TYPE is narrower than TYPE. */ if (const svalue *innermost_arg = arg->maybe_undo_cast ()) { - tree inner_type = arg->get_type (); - if (TYPE_SIZE (type) - && TYPE_SIZE (inner_type) - && (fold_binary (LE_EXPR, boolean_type_node, - TYPE_SIZE (type), TYPE_SIZE (inner_type)) - == boolean_true_node)) - return maybe_fold_unaryop (type, op, innermost_arg); + if (tree inner_type = arg->get_type ()) + if (TYPE_SIZE (type) + && TYPE_SIZE (inner_type) + && (fold_binary (LE_EXPR, boolean_type_node, + TYPE_SIZE (type), TYPE_SIZE (inner_type)) + == boolean_true_node)) + return maybe_fold_unaryop (type, op, innermost_arg); } /* Avoid creating symbolic regions for pointer casts by simplifying (T*)(®ION) to ((T*)®ION). */ @@ -546,7 +560,8 @@ region_model_manager::get_or_create_unaryop (tree type, enum tree_code op, static enum tree_code get_code_for_cast (tree dst_type, tree src_type) { - gcc_assert (dst_type); + if (!dst_type) + return NOP_EXPR; if (!src_type) return NOP_EXPR; @@ -567,17 +582,16 @@ get_code_for_cast (tree dst_type, tree src_type) const svalue * region_model_manager::get_or_create_cast (tree type, const svalue *arg) { - gcc_assert (type); - /* No-op if the types are the same. */ if (type == arg->get_type ()) return arg; /* Don't attempt to handle casts involving vector types for now. */ - if (VECTOR_TYPE_P (type) - || (arg->get_type () - && VECTOR_TYPE_P (arg->get_type ()))) - return get_or_create_unknown_svalue (type); + if (type) + if (VECTOR_TYPE_P (type) + || (arg->get_type () + && VECTOR_TYPE_P (arg->get_type ()))) + return get_or_create_unknown_svalue (type); enum tree_code op = get_code_for_cast (type, arg->get_type ()); return get_or_create_unaryop (type, op, arg); @@ -602,6 +616,8 @@ maybe_undo_optimize_bit_field_compare (tree type, tree cst, const svalue *arg1) { + if (!type) + return nullptr; if (!INTEGRAL_TYPE_P (type)) return NULL; @@ -650,9 +666,17 @@ region_model_manager::maybe_fold_binop (tree type, enum tree_code op, /* (CST OP CST). */ if (cst0 && cst1) { - if (tree result = fold_binary (op, type, cst0, cst1)) - if (CONSTANT_CLASS_P (result)) - return get_or_create_constant_svalue (result); + if (type) + { + if (tree result = fold_binary (op, type, cst0, cst1)) + if (CONSTANT_CLASS_P (result)) + return get_or_create_constant_svalue (result); + } + else + { + if (tree result = int_const_binop (op, cst0, cst1, -1)) + return get_or_create_constant_svalue (NULL_TREE, result); + } } if ((type && FLOAT_TYPE_P (type)) @@ -685,20 +709,21 @@ region_model_manager::maybe_fold_binop (tree type, enum tree_code op, break; case MULT_EXPR: /* (VAL * 0). */ - if (cst1 && zerop (cst1) && INTEGRAL_TYPE_P (type)) - return get_or_create_constant_svalue (build_int_cst (type, 0)); + if (cst1 + && zerop (cst1) + && (type == NULL_TREE || INTEGRAL_TYPE_P (type))) + return get_or_create_int_cst (type, 0); /* (VAL * 1) -> VAL. */ if (cst1 && integer_onep (cst1)) - /* TODO: we ought to have a cast to TYPE here, but doing so introduces - regressions; see PR analyzer/110902. */ - return arg0; + return get_or_create_cast (type, arg0); break; case BIT_AND_EXPR: if (cst1) { - if (zerop (cst1) && INTEGRAL_TYPE_P (type)) + if (zerop (cst1) + && (type == NULL_TREE || INTEGRAL_TYPE_P (type))) /* "(ARG0 & 0)" -> "0". */ - return get_or_create_constant_svalue (build_int_cst (type, 0)); + return get_or_create_int_cst (type, 0); if (const compound_svalue *compound_sval = arg0->dyn_cast_compound_svalue ()) @@ -810,6 +835,80 @@ region_model_manager::maybe_fold_binop (tree type, enum tree_code op, binop->get_arg1 (), arg1)); } + + /* Typeless operations, assumed to be effectively arbitrary sized + integers following normal arithmetic rules. */ + if (!type) + switch (op) + { + default: + break; + case MINUS_EXPR: + { + /* (X - X) -> 0. */ + if (arg0 == arg1) + return get_or_create_int_cst (type, 0); + + /* (X + A) - (A + B) -> (A - B). */ + if (const binop_svalue *binop0 = arg0->dyn_cast_binop_svalue ()) + if (const binop_svalue *binop1 = arg1->dyn_cast_binop_svalue ()) + if (binop0->get_op () == PLUS_EXPR + && binop1->get_op () == PLUS_EXPR + && binop0->get_arg0 () == binop1->get_arg0 ()) + return get_or_create_binop (NULL_TREE, op, + binop0->get_arg1 (), + binop1->get_arg1 ()); + } + break; + + case EXACT_DIV_EXPR: + { + if (const unaryop_svalue *unaryop0 = arg0->dyn_cast_unaryop_svalue ()) + { + if (unaryop0->get_op () == NOP_EXPR) + if (const svalue *sval = maybe_fold_binop (NULL_TREE, op, + unaryop0->get_arg (), + arg1)) + return sval; + } + if (const binop_svalue *binop0 = arg0->dyn_cast_binop_svalue ()) + { + switch (binop0->get_op ()) + { + default: + break; + + case PLUS_EXPR: + case MINUS_EXPR: + /* (A op B) / C -> (A / C) op (B / C). */ + { + if (const svalue *op_on_a + = maybe_fold_binop (NULL_TREE, op, + binop0->get_arg0 (), arg1)) + if (const svalue *op_on_b + = maybe_fold_binop (NULL_TREE, op, + binop0->get_arg1 (), arg1)) + return get_or_create_binop (NULL_TREE, + binop0->get_op (), + op_on_a, op_on_b); + } + break; + + case MULT_EXPR: + /* (A * B) / C -> A * (B / C) if C is a divisor of B. + In particular, this should also handle the case + (A * B) / B -> A. */ + if (const svalue *b_div_c + = maybe_fold_binop (NULL_TREE, op, + binop0->get_arg1 (), arg1)) + return get_or_create_binop (NULL_TREE, binop0->get_op (), + binop0->get_arg0 (), b_div_c); + } + } + } + break; + } + /* etc. */ return NULL; @@ -1391,7 +1490,6 @@ get_or_create_const_fn_result_svalue (tree type, tree fndecl, const vec &inputs) { - gcc_assert (type); gcc_assert (fndecl); gcc_assert (DECL_P (fndecl)); gcc_assert (TREE_READONLY (fndecl)); diff --git a/gcc/analyzer/region-model-manager.h b/gcc/analyzer/region-model-manager.h index 7d1208c70a70..857bdf94c3a3 100644 --- a/gcc/analyzer/region-model-manager.h +++ b/gcc/analyzer/region-model-manager.h @@ -44,6 +44,7 @@ class region_model_manager } /* svalue consolidation. */ + const svalue *get_or_create_constant_svalue (tree type, tree cst_expr); const svalue *get_or_create_constant_svalue (tree cst_expr); const svalue *get_or_create_int_cst (tree type, const poly_wide_int_ref &cst); const svalue *get_or_create_null_ptr (tree pointer_type); @@ -170,14 +171,14 @@ class region_model_manager void dump_untracked_regions () const; + const svalue *maybe_fold_binop (tree type, enum tree_code op, + const svalue *arg0, const svalue *arg1); private: bool too_complex_p (const complexity &c) const; bool reject_if_too_complex (svalue *sval); const svalue *maybe_fold_unaryop (tree type, enum tree_code op, const svalue *arg); - const svalue *maybe_fold_binop (tree type, enum tree_code op, - const svalue *arg0, const svalue *arg1); const svalue *maybe_fold_sub_svalue (tree type, const svalue *parent_svalue, const region *subregion); @@ -204,7 +205,7 @@ class region_model_manager heap_region m_heap_region; /* svalue consolidation. */ - typedef hash_map constants_map_t; + typedef hash_map constants_map_t; constants_map_t m_constants_map; typedef hash_map unknowns_map_t; diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc index 33a4584841e4..bebe2ed3cd69 100644 --- a/gcc/analyzer/region-model.cc +++ b/gcc/analyzer/region-model.cc @@ -120,11 +120,29 @@ dump_quoted_tree (pretty_printer *pp, tree t) void print_quoted_type (pretty_printer *pp, tree t) { + if (!t) + return; pp_begin_quote (pp, pp_show_color (pp)); dump_generic_node (pp, t, 0, TDF_SLIM, 0); pp_end_quote (pp, pp_show_color (pp)); } +/* Print EXPR to PP, without quotes. + For use within svalue::maybe_print_for_user + and region::maybe_print_for_user. */ + +void +print_expr_for_user (pretty_printer *pp, tree expr) +{ + /* Workaround for C++'s lang_hooks.decl_printable_name, + which unhelpfully (for us) prefixes the decl with its + type. */ + if (DECL_P (expr)) + dump_generic_node (pp, expr, 0, TDF_SLIM, 0); + else + pp_printf (pp, "%E", expr); +} + /* class region_to_value_map. */ /* Assignment operator for region_to_value_map. */ @@ -2706,7 +2724,7 @@ region_model::get_store_value (const region *reg, = cast_reg->get_original_region ()->dyn_cast_string_region ()) { tree string_cst = str_reg->get_string_cst (); - tree byte_offset_cst = build_int_cst (integer_type_node, 0); + tree byte_offset_cst = integer_zero_node; if (const svalue *char_sval = m_mgr->maybe_get_char_from_string_cst (string_cst, byte_offset_cst)) @@ -3496,6 +3514,10 @@ region_model::check_region_size (const region *lhs_reg, const svalue *rhs_sval, || TYPE_SIZE_UNIT (pointee_type) == NULL_TREE) return; + /* Bail out early on function pointers. */ + if (TREE_CODE (pointee_type) == FUNCTION_TYPE) + return; + /* Bail out early on pointers to structs where we can not deduce whether the buffer size is compatible. */ bool is_struct = RECORD_OR_UNION_TYPE_P (pointee_type); @@ -3949,9 +3971,10 @@ static tree get_tree_for_byte_offset (tree ptr_expr, byte_offset_t byte_offset) { gcc_assert (ptr_expr); + tree ptype = build_pointer_type_for_mode (char_type_node, ptr_mode, true); return fold_build2 (MEM_REF, char_type_node, - ptr_expr, wide_int_to_tree (size_type_node, byte_offset)); + ptr_expr, wide_int_to_tree (ptype, byte_offset)); } /* Simulate a series of reads of REG until we find a 0 byte @@ -4685,17 +4708,27 @@ region_model::eval_condition (const svalue *lhs, if (lhs_un_op && CONVERT_EXPR_CODE_P (lhs_un_op->get_op ()) && rhs_un_op && CONVERT_EXPR_CODE_P (rhs_un_op->get_op ()) && lhs_type == rhs_type) - return eval_condition (lhs_un_op->get_arg (), - op, - rhs_un_op->get_arg ()); - + { + tristate res = eval_condition (lhs_un_op->get_arg (), + op, + rhs_un_op->get_arg ()); + if (res.is_known ()) + return res; + } else if (lhs_un_op && CONVERT_EXPR_CODE_P (lhs_un_op->get_op ()) && lhs_type == rhs_type) - return eval_condition (lhs_un_op->get_arg (), op, rhs); - + { + tristate res = eval_condition (lhs_un_op->get_arg (), op, rhs); + if (res.is_known ()) + return res; + } else if (rhs_un_op && CONVERT_EXPR_CODE_P (rhs_un_op->get_op ()) && lhs_type == rhs_type) - return eval_condition (lhs, op, rhs_un_op->get_arg ()); + { + tristate res = eval_condition (lhs, op, rhs_un_op->get_arg ()); + if (res.is_known ()) + return res; + } } /* Otherwise, try constraints. @@ -5342,9 +5375,10 @@ region_model::get_representative_path_var_1 (const region *reg, tree addr_parent = build1 (ADDR_EXPR, build_pointer_type (reg->get_type ()), parent_pv.m_tree); - return path_var (build2 (MEM_REF, - reg->get_type (), - addr_parent, offset_pv.m_tree), + tree ptype = build_pointer_type_for_mode (char_type_node, ptr_mode, + true); + return path_var (build2 (MEM_REF, reg->get_type (), addr_parent, + fold_convert (ptype, offset_pv.m_tree)), parent_pv.m_stack_depth); } @@ -5593,7 +5627,7 @@ region_model::update_for_return_superedge (const return_superedge &return_edge, update_for_return_gcall (call_stmt, ctxt); } -/* Attempt to to use R to replay SUMMARY into this object. +/* Attempt to use R to replay SUMMARY into this object. Return true if it is possible. */ bool @@ -5751,7 +5785,8 @@ apply_constraints_for_gswitch (const switch_cfg_superedge &edge, && is_a (unaryop->get_arg ())) if (const initial_svalue *initvalop = (as_a (unaryop->get_arg ()))) - if (TREE_CODE (initvalop->get_type ()) == ENUMERAL_TYPE) + if (initvalop->get_type () + && TREE_CODE (initvalop->get_type ()) == ENUMERAL_TYPE) { index_sval = initvalop; check_index_type = false; @@ -7148,7 +7183,7 @@ build_real_cst_from_string (tree type, const char *str) static void append_interesting_constants (auto_vec *out) { - out->safe_push (build_int_cst (integer_type_node, 0)); + out->safe_push (integer_zero_node); out->safe_push (build_int_cst (integer_type_node, 42)); out->safe_push (build_int_cst (unsigned_type_node, 0)); out->safe_push (build_int_cst (unsigned_type_node, 42)); @@ -7373,7 +7408,7 @@ test_array_1 () region_model_manager mgr; region_model model (&mgr); - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree a_0 = build4 (ARRAY_REF, char_type_node, a, int_0, NULL_TREE, NULL_TREE); tree char_A = build_int_cst (char_type_node, 'A'); @@ -7430,7 +7465,7 @@ test_get_representative_tree () { test_region_model_context ctxt; region_model model (&mgr); - tree idx = build_int_cst (integer_type_node, 0); + tree idx = integer_zero_node; tree a_0 = build4 (ARRAY_REF, char_type_node, a, idx, NULL_TREE, NULL_TREE); const region *a_0_reg = model.get_lvalue (a_0, &ctxt); @@ -7482,7 +7517,7 @@ test_get_representative_tree () static void test_unique_constants () { - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree int_42 = build_int_cst (integer_type_node, 42); test_region_model_context ctxt; @@ -7865,7 +7900,7 @@ test_bit_range_regions () static void test_assignment () { - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree x = build_global_decl ("x", integer_type_node); tree y = build_global_decl ("y", integer_type_node); @@ -7924,7 +7959,7 @@ test_stack_frames () tree int_42 = build_int_cst (integer_type_node, 42); tree int_10 = build_int_cst (integer_type_node, 10); tree int_5 = build_int_cst (integer_type_node, 5); - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; auto_vec param_types; tree parent_fndecl = make_fndecl (integer_type_node, @@ -8607,7 +8642,7 @@ test_state_merging () static void test_constraint_merging () { - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree int_5 = build_int_cst (integer_type_node, 5); tree x = build_global_decl ("x", integer_type_node); tree y = build_global_decl ("y", integer_type_node); @@ -8654,9 +8689,9 @@ test_widening_constraints () { region_model_manager mgr; function_point point (program_point::origin (mgr).get_function_point ()); - tree int_0 = build_int_cst (integer_type_node, 0); + tree int_0 = integer_zero_node; tree int_m1 = build_int_cst (integer_type_node, -1); - tree int_1 = build_int_cst (integer_type_node, 1); + tree int_1 = integer_one_node; tree int_256 = build_int_cst (integer_type_node, 256); test_region_model_context ctxt; const svalue *int_0_sval = mgr.get_or_create_constant_svalue (int_0); @@ -8770,8 +8805,8 @@ test_iteration_1 () region_model_manager mgr; program_point point (program_point::origin (mgr)); - tree int_0 = build_int_cst (integer_type_node, 0); - tree int_1 = build_int_cst (integer_type_node, 1); + tree int_0 = integer_zero_node; + tree int_1 = integer_one_node; tree int_256 = build_int_cst (integer_type_node, 256); tree i = build_global_decl ("i", integer_type_node); @@ -8924,8 +8959,8 @@ test_array_2 () /* "int i;" */ tree i = build_global_decl ("i", integer_type_node); - tree int_0 = build_int_cst (integer_type_node, 0); - tree int_1 = build_int_cst (integer_type_node, 1); + tree int_0 = integer_zero_node; + tree int_1 = integer_one_node; tree arr_0 = build4 (ARRAY_REF, integer_type_node, arr, int_0, NULL_TREE, NULL_TREE); @@ -8973,7 +9008,10 @@ test_array_2 () const region *arr_i_reg = model.get_lvalue (arr_i, NULL); region_offset offset = arr_i_reg->get_offset (&mgr); ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL)); - ASSERT_EQ (offset.get_symbolic_byte_offset ()->get_kind (), SK_BINOP); + const svalue *offset_sval = offset.get_symbolic_byte_offset (); + if (const svalue *cast = offset_sval->maybe_undo_cast ()) + offset_sval = cast; + ASSERT_EQ (offset_sval->get_kind (), SK_BINOP); } /* "arr[i] = i;" - this should remove the earlier bindings. */ @@ -9003,7 +9041,8 @@ test_mem_ref () tree int_17 = build_int_cst (integer_type_node, 17); tree addr_of_x = build1 (ADDR_EXPR, int_star, x); - tree offset_0 = build_int_cst (integer_type_node, 0); + tree ptype = build_pointer_type_for_mode (char_type_node, ptr_mode, true); + tree offset_0 = build_int_cst (ptype, 0); tree star_p = build2 (MEM_REF, integer_type_node, p, offset_0); region_model_manager mgr; @@ -9053,7 +9092,8 @@ test_POINTER_PLUS_EXPR_then_MEM_REF () tree a = build_global_decl ("a", int_star); tree offset_12 = build_int_cst (size_type_node, 12); tree pointer_plus_expr = build2 (POINTER_PLUS_EXPR, int_star, a, offset_12); - tree offset_0 = build_int_cst (integer_type_node, 0); + tree ptype = build_pointer_type_for_mode (char_type_node, ptr_mode, true); + tree offset_0 = build_int_cst (ptype, 0); tree mem_ref = build2 (MEM_REF, integer_type_node, pointer_plus_expr, offset_0); region_model_manager mgr; diff --git a/gcc/analyzer/region.cc b/gcc/analyzer/region.cc index d45706141fb0..7d79b45563fd 100644 --- a/gcc/analyzer/region.cc +++ b/gcc/analyzer/region.cc @@ -78,23 +78,18 @@ region_offset::make_byte_offset (const region *base_region, } } -tree -region_offset::calc_symbolic_bit_offset (const region_model &model) const +const svalue & +region_offset::calc_symbolic_bit_offset (region_model_manager *mgr) const { if (symbolic_p ()) { - tree num_bytes_expr = model.get_representative_tree (m_sym_offset); - if (!num_bytes_expr) - return NULL_TREE; - tree bytes_to_bits_scale = build_int_cst (size_type_node, BITS_PER_UNIT); - return fold_build2 (MULT_EXPR, size_type_node, - num_bytes_expr, bytes_to_bits_scale); + const svalue *bits_per_byte + = mgr->get_or_create_int_cst (NULL_TREE, BITS_PER_UNIT); + return *mgr->get_or_create_binop (NULL_TREE, MULT_EXPR, + m_sym_offset, bits_per_byte); } else - { - tree cst = wide_int_to_tree (size_type_node, m_offset); - return cst; - } + return *mgr->get_or_create_int_cst (NULL_TREE, m_offset); } const svalue * @@ -388,6 +383,18 @@ operator>= (const region_offset &a, const region_offset &b) return b <= a; } +region_offset +strip_types (const region_offset &offset, region_model_manager &mgr) +{ + if (offset.symbolic_p ()) + return region_offset::make_symbolic + (offset.get_base_region (), + strip_types (offset.get_symbolic_byte_offset (), + mgr)); + else + return offset; +} + /* class region and its various subclasses. */ /* class region. */ @@ -923,7 +930,7 @@ region::calc_offset (region_model_manager *mgr) const const svalue *sval = iter_region->get_relative_symbolic_offset (mgr); accum_byte_sval - = mgr->get_or_create_binop (sval->get_type (), PLUS_EXPR, + = mgr->get_or_create_binop (ptrdiff_type_node, PLUS_EXPR, accum_byte_sval, sval); iter_region = iter_region->get_parent_region (); } @@ -941,7 +948,7 @@ region::calc_offset (region_model_manager *mgr) const accumulated bits to a svalue in bytes and revisit the iter_region collecting the symbolic value. */ byte_offset_t byte_offset = accum_bit_offset / BITS_PER_UNIT; - tree offset_tree = wide_int_to_tree (integer_type_node, + tree offset_tree = wide_int_to_tree (ptrdiff_type_node, byte_offset); accum_byte_sval = mgr->get_or_create_constant_svalue (offset_tree); @@ -1043,6 +1050,28 @@ region::to_json () const return reg_js; } +bool +region::maybe_print_for_user (pretty_printer *pp, + const region_model &) const +{ + switch (get_kind ()) + { + default: + break; + case RK_DECL: + { + const decl_region *reg = (const decl_region *)this; + tree decl = reg->get_decl (); + if (TREE_CODE (decl) == SSA_NAME) + decl = SSA_NAME_VAR (decl); + print_expr_for_user (pp, decl); + return true; + } + } + + return false; +} + /* Generate a description of this region. */ DEBUG_FUNCTION label_text @@ -1909,7 +1938,7 @@ element_region::get_relative_symbolic_offset (region_model_manager *mgr) const hwi_byte_size); const svalue *byte_size_sval = mgr->get_or_create_constant_svalue (byte_size_tree); - return mgr->get_or_create_binop (ptrdiff_type_node, MULT_EXPR, + return mgr->get_or_create_binop (NULL_TREE, MULT_EXPR, m_index, byte_size_sval); } return mgr->get_or_create_unknown_svalue (ptrdiff_type_node); @@ -1955,8 +1984,8 @@ const svalue * offset_region::get_bit_offset (region_model_manager *mgr) const { const svalue *bits_per_byte_sval - = mgr->get_or_create_int_cst (size_type_node, BITS_PER_UNIT); - return mgr->get_or_create_binop (size_type_node, MULT_EXPR, + = mgr->get_or_create_int_cst (NULL_TREE, BITS_PER_UNIT); + return mgr->get_or_create_binop (NULL_TREE, MULT_EXPR, m_byte_offset, bits_per_byte_sval); } @@ -2056,8 +2085,8 @@ const svalue * sized_region::get_bit_size_sval (region_model_manager *mgr) const { const svalue *bits_per_byte_sval - = mgr->get_or_create_int_cst (size_type_node, BITS_PER_UNIT); - return mgr->get_or_create_binop (size_type_node, MULT_EXPR, + = mgr->get_or_create_int_cst (NULL_TREE, BITS_PER_UNIT); + return mgr->get_or_create_binop (NULL_TREE, MULT_EXPR, m_byte_size_sval, bits_per_byte_sval); } diff --git a/gcc/analyzer/region.h b/gcc/analyzer/region.h index 73f35f55ba71..0c190c2f0a2e 100644 --- a/gcc/analyzer/region.h +++ b/gcc/analyzer/region.h @@ -176,6 +176,9 @@ class region : public symbol json::value *to_json () const; + bool maybe_print_for_user (pretty_printer *pp, + const region_model &model) const; + bool non_null_p () const; static int cmp_ptr_ptr (const void *, const void *); diff --git a/gcc/analyzer/sm-malloc.cc b/gcc/analyzer/sm-malloc.cc index a518816b2b8b..4e11d6dfc630 100644 --- a/gcc/analyzer/sm-malloc.cc +++ b/gcc/analyzer/sm-malloc.cc @@ -1563,6 +1563,21 @@ class deref_before_check : public malloc_diagnostic if (linemap_location_from_macro_definition_p (line_table, check_loc)) return false; + /* Reject warning if the check is in a loop header within a + macro expansion. This rejects cases like: + | deref of x; + | [...snip...] + | FOR_EACH(x) { + | [...snip...] + | } + where the FOR_EACH macro tests for non-nullness of x, since + the user is hoping to encapsulate the details of iteration + in the macro, and the extra check on the first iteration + would just be noise if we reported it. */ + if (loop_header_p (m_check_enode->get_point ()) + && linemap_location_from_macro_expansion_p (line_table, check_loc)) + return false; + /* Reject if m_deref_expr is sufficiently different from m_arg for cases where the dereference is spelled differently from the check, which is probably two different ways to get the @@ -1618,6 +1633,21 @@ class deref_before_check : public malloc_diagnostic } private: + static bool loop_header_p (const program_point &point) + { + const supernode *snode = point.get_supernode (); + if (!snode) + return false; + for (auto &in_edge : snode->m_preds) + { + if (const cfg_superedge *cfg_in_edge + = in_edge->dyn_cast_cfg_superedge ()) + if (cfg_in_edge->back_edge_p ()) + return true; + } + return false; + } + static bool sufficiently_similar_p (tree expr_a, tree expr_b) { pretty_printer *pp_a = global_dc->printer->clone (); diff --git a/gcc/analyzer/sm-taint.cc b/gcc/analyzer/sm-taint.cc index bbf683f82efc..a9c6d4db43f4 100644 --- a/gcc/analyzer/sm-taint.cc +++ b/gcc/analyzer/sm-taint.cc @@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see #include "analyzer/program-state.h" #include "analyzer/pending-diagnostic.h" #include "analyzer/constraint-manager.h" +#include "diagnostic-format-sarif.h" #if ENABLE_ANALYZER @@ -71,6 +72,22 @@ enum bounds BOUNDS_LOWER }; +static const char * +bounds_to_str (enum bounds b) +{ + switch (b) + { + default: + gcc_unreachable (); + case BOUNDS_NONE: + return "BOUNDS_NONE"; + case BOUNDS_UPPER: + return "BOUNDS_UPPER"; + case BOUNDS_LOWER: + return "BOUNDS_LOWER"; + } +} + /* An experimental state machine, for tracking "taint": unsanitized uses of data potentially under an attacker's control. */ @@ -193,6 +210,17 @@ class taint_diagnostic : public pending_diagnostic return diagnostic_event::meaning (); } + void maybe_add_sarif_properties (sarif_object &result_obj) + const override + { + sarif_property_bag &props = result_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/taint_diagnostic/" + props.set (PROPERTY_PREFIX "arg", tree_to_json (m_arg)); + props.set_string (PROPERTY_PREFIX "has_bounds", + bounds_to_str (m_has_bounds)); +#undef PROPERTY_PREFIX + } + protected: const taint_state_machine &m_sm; tree m_arg; @@ -315,8 +343,10 @@ class tainted_offset : public taint_diagnostic { public: tainted_offset (const taint_state_machine &sm, tree arg, - enum bounds has_bounds) - : taint_diagnostic (sm, arg, has_bounds) + enum bounds has_bounds, + const svalue *offset) + : taint_diagnostic (sm, arg, has_bounds), + m_offset (offset) {} const char *get_kind () const final override { return "tainted_offset"; } @@ -409,6 +439,19 @@ class tainted_offset : public taint_diagnostic " checking"); } } + + void maybe_add_sarif_properties (sarif_object &result_obj) + const final override + { + taint_diagnostic::maybe_add_sarif_properties (result_obj); + sarif_property_bag &props = result_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/tainted_offset/" + props.set (PROPERTY_PREFIX "offset", m_offset->to_json ()); +#undef PROPERTY_PREFIX + } + +private: + const svalue *m_offset; }; /* Concrete taint_diagnostic subclass for reporting attacker-controlled @@ -602,8 +645,10 @@ class tainted_allocation_size : public taint_diagnostic { public: tainted_allocation_size (const taint_state_machine &sm, tree arg, + const svalue *size_in_bytes, enum bounds has_bounds, enum memory_space mem_space) : taint_diagnostic (sm, arg, has_bounds), + m_size_in_bytes (size_in_bytes), m_mem_space (mem_space) { } @@ -738,7 +783,18 @@ class tainted_allocation_size : public taint_diagnostic } } + void maybe_add_sarif_properties (sarif_object &result_obj) + const final override + { + taint_diagnostic::maybe_add_sarif_properties (result_obj); + sarif_property_bag &props = result_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/tainted_allocation_size/" + props.set (PROPERTY_PREFIX "size_in_bytes", m_size_in_bytes->to_json ()); +#undef PROPERTY_PREFIX + } + private: + const svalue *m_size_in_bytes; enum memory_space m_mem_space; }; @@ -1066,6 +1122,14 @@ taint_state_machine::on_condition (sm_context *sm_ctxt, return; } + /* Strip away casts before considering LHS and RHS, to increase the + chance of detecting places where sanitization of a value may have + happened. */ + if (const svalue *inner = lhs->maybe_undo_cast ()) + lhs = inner; + if (const svalue *inner = rhs->maybe_undo_cast ()) + rhs = inner; + // TODO switch (op) { @@ -1554,7 +1618,8 @@ region_model::check_region_for_taint (const region *reg, if (taint_sm.get_taint (state, effective_type, &b)) { tree arg = get_representative_tree (offset); - ctxt->warn (make_unique (taint_sm, arg, b)); + ctxt->warn (make_unique (taint_sm, arg, b, + offset)); } } break; @@ -1626,7 +1691,7 @@ region_model::check_dynamic_size_for_taint (enum memory_space mem_space, { tree arg = get_representative_tree (size_in_bytes); ctxt->warn (make_unique - (taint_sm, arg, b, mem_space)); + (taint_sm, arg, size_in_bytes, b, mem_space)); } } diff --git a/gcc/analyzer/store.cc b/gcc/analyzer/store.cc index e85a19647f7e..a36de13c1743 100644 --- a/gcc/analyzer/store.cc +++ b/gcc/analyzer/store.cc @@ -290,7 +290,10 @@ bit_range::intersects_p (const bit_range &other, bit_offset_t overlap_next = MIN (get_next_bit_offset (), other.get_next_bit_offset ()); - gcc_assert (overlap_next > overlap_start); + if (overlap_next <= overlap_start) + /* If this has happened, some kind of overflow has happened in + our arithmetic. For now, reject such cases. */ + return false; bit_range abs_overlap_bits (overlap_start, overlap_next - overlap_start); *out_this = abs_overlap_bits - get_start_bit_offset (); *out_other = abs_overlap_bits - other.get_start_bit_offset (); @@ -316,7 +319,10 @@ bit_range::intersects_p (const bit_range &other, other.get_start_bit_offset ()); bit_offset_t overlap_next = MIN (get_next_bit_offset (), other.get_next_bit_offset ()); - gcc_assert (overlap_next > overlap_start); + if (overlap_next <= overlap_start) + /* If this has happened, some kind of overflow has happened in + our arithmetic. For now, reject such cases. */ + return false; *out_num_overlap_bits = overlap_next - overlap_start; return true; } @@ -339,7 +345,10 @@ bit_range::exceeds_p (const bit_range &other, bit_offset_t start = MAX (get_start_bit_offset (), other.get_next_bit_offset ()); bit_offset_t size = get_next_bit_offset () - start; - gcc_assert (size > 0); + if (size <= 0) + /* If this has happened, some kind of overflow has happened in + our arithmetic. For now, reject such cases. */ + return false; out_overhanging_bit_range->m_start_bit_offset = start; out_overhanging_bit_range->m_size_in_bits = size; return true; @@ -362,7 +371,10 @@ bit_range::falls_short_of_p (bit_offset_t offset, /* THIS falls short of OFFSET. */ bit_offset_t start = get_start_bit_offset (); bit_offset_t size = MIN (offset, get_next_bit_offset ()) - start; - gcc_assert (size > 0); + if (size <= 0) + /* If this has happened, some kind of overflow has happened in + our arithmetic. For now, reject such cases. */ + return false; out_fall_short_bits->m_start_bit_offset = start; out_fall_short_bits->m_size_in_bits = size; return true; diff --git a/gcc/analyzer/svalue.cc b/gcc/analyzer/svalue.cc index 8d8f0d4579aa..e64f62d266e1 100644 --- a/gcc/analyzer/svalue.cc +++ b/gcc/analyzer/svalue.cc @@ -95,6 +95,114 @@ svalue::to_json () const return sval_js; } +/* Class for optionally adding open/close paren pairs within + svalue::maybe_print_for_user. */ + +class auto_add_parens +{ +public: + auto_add_parens (pretty_printer *pp, + const svalue *outer_sval, + const svalue &inner_sval) + : m_pp (pp), + m_needs_parens (needs_parens_p (outer_sval, inner_sval)) + { + if (m_needs_parens) + pp_string (m_pp, "("); + } + ~auto_add_parens () + { + if (m_needs_parens) + pp_string (m_pp, ")"); + } + +private: + static bool needs_parens_p (const svalue *outer_sval, + const svalue &inner_sval) + { + if (!outer_sval) + return false; + if (inner_sval.get_kind () == SK_BINOP) + return true; + return false; + } + + pretty_printer *m_pp; + bool m_needs_parens; +}; + +/* Attempt to print a user-facing description of this svalue to PP, + using MODEL for extracting representative tree values if necessary. + Use OUTER_SVAL (which can be null) to determine if we need to wrap + this value in parentheses. */ + +bool +svalue::maybe_print_for_user (pretty_printer *pp, + const region_model &model, + const svalue *outer_sval) const +{ + auto_add_parens p (pp, outer_sval, *this); + + switch (get_kind ()) + { + default: + break; + case SK_CONSTANT: + { + const constant_svalue *sval = (const constant_svalue *)this; + pp_printf (pp, "%E", sval->get_constant ()); + return true; + } + case SK_INITIAL: + { + const initial_svalue *sval = (const initial_svalue *)this; + return sval->get_region ()->maybe_print_for_user (pp, model); + } + case SK_UNARYOP: + { + const unaryop_svalue *sval = (const unaryop_svalue *)this; + if (sval->get_op () == NOP_EXPR) + { + if (!sval->get_arg ()->maybe_print_for_user (pp, model, outer_sval)) + return false; + return true; + } + } + break; + case SK_BINOP: + { + const binop_svalue *sval = (const binop_svalue *)this; + switch (sval->get_op ()) + { + default: + break; + + case PLUS_EXPR: + case MINUS_EXPR: + case MULT_EXPR: + { + if (!sval->get_arg0 ()->maybe_print_for_user (pp, model, this)) + return false; + pp_printf (pp, " %s ", op_symbol_code (sval->get_op ())); + if (!sval->get_arg1 ()->maybe_print_for_user (pp, model, this)) + return false; + return true; + } + } + } + break; + } + + if (tree expr = model.get_representative_tree (this)) + { + expr = remove_ssa_names (expr); + print_expr_for_user (pp, expr); + return true; + } + + return false; +} + /* If this svalue is a constant_svalue, return the underlying tree constant. Otherwise return NULL_TREE. */ @@ -389,7 +497,9 @@ svalue::cmp_ptr (const svalue *sval1, const svalue *sval2) const constant_svalue *constant_sval2 = (const constant_svalue *)sval2; const_tree cst1 = constant_sval1->get_constant (); const_tree cst2 = constant_sval2->get_constant (); - return cmp_csts_same_type (cst1, cst2); + /* The svalues have the same type, but the underlying trees + might not (for the case where both svalues are typeless). */ + return cmp_csts_and_types (cst1, cst2); } break; case SK_UNKNOWN: @@ -850,14 +960,31 @@ constant_svalue::implicitly_live_p (const svalue_set *, return true; } +/* Given EXPR, a non-NULL expression of boolean type, convert to + a tristate based on whether this is known to be true, false, + or is not known. */ + +static tristate +tristate_from_boolean_tree_node (tree expr) +{ + gcc_assert (TREE_TYPE (expr) == boolean_type_node); + + if (expr == boolean_true_node) + return tristate (tristate::TS_TRUE); + else if (expr == boolean_false_node) + return tristate (tristate::TS_FALSE); + else + return tristate (tristate::TS_UNKNOWN); +} + /* Evaluate the condition LHS OP RHS. Subroutine of region_model::eval_condition for when we have a pair of constants. */ tristate constant_svalue::eval_condition (const constant_svalue *lhs, - enum tree_code op, - const constant_svalue *rhs) + enum tree_code op, + const constant_svalue *rhs) { tree lhs_const = lhs->get_constant (); tree rhs_const = rhs->get_constant (); @@ -865,15 +992,28 @@ constant_svalue::eval_condition (const constant_svalue *lhs, gcc_assert (CONSTANT_CLASS_P (lhs_const)); gcc_assert (CONSTANT_CLASS_P (rhs_const)); + if ((lhs->get_type () == NULL_TREE || rhs->get_type () == NULL_TREE) + && TREE_CODE (lhs_const) == INTEGER_CST + && TREE_CODE (rhs_const) == INTEGER_CST + ) + { + if (tree tree_cmp = const_binop (op, boolean_type_node, + lhs_const, rhs_const)) + { + tristate ts = tristate_from_boolean_tree_node (tree_cmp); + if (ts.is_known ()) + return ts; + } + } + /* Check for comparable types. */ if (types_compatible_p (TREE_TYPE (lhs_const), TREE_TYPE (rhs_const))) { - tree comparison + tree tree_cmp = fold_binary (op, boolean_type_node, lhs_const, rhs_const); - if (comparison == boolean_true_node) - return tristate (tristate::TS_TRUE); - if (comparison == boolean_false_node) - return tristate (tristate::TS_FALSE); + tristate ts = tristate_from_boolean_tree_node (tree_cmp); + if (ts.is_known ()) + return ts; } return tristate::TS_UNKNOWN; } diff --git a/gcc/analyzer/svalue.h b/gcc/analyzer/svalue.h index 4f7171b04126..3a2b0319a195 100644 --- a/gcc/analyzer/svalue.h +++ b/gcc/analyzer/svalue.h @@ -177,6 +177,10 @@ class svalue : public symbol const region *maybe_get_deref_base_region () const; + bool maybe_print_for_user (pretty_printer *pp, + const region_model &model, + const svalue *outer_sval = nullptr) const; + protected: svalue (complexity c, symbol::id_t id, tree type) : symbol (c, id), m_type (type) @@ -265,16 +269,49 @@ template <> struct default_hash_traits namespace ana { -/* Concrete subclass of svalue representing a specific constant value. */ +/* Concrete subclass of svalue representing a specific constant value. + The type will either be the same as that of the underlying tree constant, + or NULL_TREE indicating the constant is intended to be "typeless". */ class constant_svalue : public svalue { public: - constant_svalue (symbol::id_t id, tree cst_expr) - : svalue (complexity (1, 1), id, TREE_TYPE (cst_expr)), m_cst_expr (cst_expr) + /* A support class for uniquifying instances of region_svalue. */ + struct key_t + { + key_t (tree type, tree cst) + : m_type (type), m_cst (cst) + {} + + hashval_t hash () const + { + inchash::hash hstate; + hstate.add_ptr (m_type); + hstate.add_ptr (m_cst); + return hstate.end (); + } + + bool operator== (const key_t &other) const + { + return (m_type == other.m_type && m_cst == other.m_cst); + } + + void mark_deleted () { m_type = reinterpret_cast (1); } + void mark_empty () { m_type = reinterpret_cast (2); } + bool is_deleted () const { return m_type == reinterpret_cast (1); } + bool is_empty () const { return m_type == reinterpret_cast (2); } + + tree m_type; + tree m_cst; + }; + + constant_svalue (symbol::id_t id, tree type, tree cst_expr) + : svalue (complexity (1, 1), id, type), + m_cst_expr (cst_expr) { gcc_assert (cst_expr); gcc_assert (CONSTANT_CLASS_P (cst_expr)); + gcc_assert (type == TREE_TYPE (cst_expr) || type == NULL_TREE); } enum svalue_kind get_kind () const final override { return SK_CONSTANT; } @@ -312,6 +349,12 @@ is_a_helper ::test (const svalue *sval) return sval->get_kind () == SK_CONSTANT; } +template <> struct default_hash_traits +: public member_function_hash_traits +{ + static const bool empty_zero_p = false; +}; + namespace ana { /* Concrete subclass of svalue representing an unknowable value, the bottom diff --git a/gcc/asan.cc b/gcc/asan.cc index d621ec9c3232..57c3a9b00e19 100644 --- a/gcc/asan.cc +++ b/gcc/asan.cc @@ -1372,7 +1372,12 @@ has_stmt_been_instrumented_p (gimple *stmt) return true; } } - else if (is_gimple_call (stmt) && gimple_store_p (stmt)) + else if (is_gimple_call (stmt) + && gimple_store_p (stmt) + && (gimple_call_builtin_p (stmt) + || gimple_call_internal_p (stmt) + || !aggregate_value_p (TREE_TYPE (gimple_call_lhs (stmt)), + gimple_call_fntype (stmt)))) { asan_mem_ref r; asan_mem_ref_init (&r, NULL, 1); @@ -1906,19 +1911,39 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, } str_cst = asan_pp_string (&asan_pp); + gcc_checking_assert (offsets[0] == (crtl->stack_protect_guard + ? -ASAN_RED_ZONE_SIZE : 0)); /* Emit the prologue sequence. */ if (asan_frame_size > 32 && asan_frame_size <= 65536 && pbase && param_asan_use_after_return) { + HOST_WIDE_INT adjusted_frame_size = asan_frame_size; + /* The stack protector guard is allocated at the top of the frame + and cfgexpand.cc then uses align_frame_offset (ASAN_RED_ZONE_SIZE); + while in that case we can still use asan_frame_size, we need to take + that into account when computing base_align_bias. */ + if (alignb > ASAN_RED_ZONE_SIZE && crtl->stack_protect_guard) + adjusted_frame_size += ASAN_RED_ZONE_SIZE; use_after_return_class = floor_log2 (asan_frame_size - 1) - 5; /* __asan_stack_malloc_N guarantees alignment N < 6 ? (64 << N) : 4096 bytes. */ if (alignb > (use_after_return_class < 6 ? (64U << use_after_return_class) : 4096U)) use_after_return_class = -1; - else if (alignb > ASAN_RED_ZONE_SIZE && (asan_frame_size & (alignb - 1))) - base_align_bias = ((asan_frame_size + alignb - 1) - & ~(alignb - HOST_WIDE_INT_1)) - asan_frame_size; + else if (alignb > ASAN_RED_ZONE_SIZE + && (adjusted_frame_size & (alignb - 1))) + { + base_align_bias + = ((adjusted_frame_size + alignb - 1) + & ~(alignb - HOST_WIDE_INT_1)) - adjusted_frame_size; + use_after_return_class + = floor_log2 (asan_frame_size + base_align_bias - 1) - 5; + if (use_after_return_class > 10) + { + base_align_bias = 0; + use_after_return_class = -1; + } + } } /* Align base if target is STRICT_ALIGNMENT. */ @@ -2569,7 +2594,7 @@ maybe_create_ssa_name (location_t loc, tree base, gimple_stmt_iterator *iter, gimple *g = gimple_build_assign (make_ssa_name (TREE_TYPE (base)), base); gimple_set_location (g, loc); if (before_p) - gsi_insert_before (iter, g, GSI_SAME_STMT); + gsi_safe_insert_before (iter, g); else gsi_insert_after (iter, g, GSI_NEW_STMT); return gimple_assign_lhs (g); @@ -2588,7 +2613,7 @@ maybe_cast_to_ptrmode (location_t loc, tree len, gimple_stmt_iterator *iter, NOP_EXPR, len); gimple_set_location (g, loc); if (before_p) - gsi_insert_before (iter, g, GSI_SAME_STMT); + gsi_safe_insert_before (iter, g); else gsi_insert_after (iter, g, GSI_NEW_STMT); return gimple_assign_lhs (g); @@ -2679,7 +2704,7 @@ build_check_stmt (location_t loc, tree base, tree len, align / BITS_PER_UNIT)); gimple_set_location (g, loc); if (before_p) - gsi_insert_before (&gsi, g, GSI_SAME_STMT); + gsi_safe_insert_before (&gsi, g); else { gsi_insert_after (&gsi, g, GSI_NEW_STMT); @@ -2750,8 +2775,14 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t, if (VAR_P (inner) && DECL_HARD_REGISTER (inner)) return; + /* Accesses to non-generic address-spaces should not be instrumented. */ + if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (TREE_TYPE (inner)))) + return; + poly_int64 decl_size; - if ((VAR_P (inner) || TREE_CODE (inner) == RESULT_DECL) + if ((VAR_P (inner) + || (TREE_CODE (inner) == RESULT_DECL + && !aggregate_value_p (inner, current_function_decl))) && offset == NULL_TREE && DECL_SIZE (inner) && poly_int_tree_p (DECL_SIZE (inner), &decl_size) @@ -3018,12 +3049,16 @@ maybe_instrument_call (gimple_stmt_iterator *iter) tree decl = builtin_decl_implicit (BUILT_IN_ASAN_HANDLE_NO_RETURN); gimple *g = gimple_build_call (decl, 0); gimple_set_location (g, gimple_location (stmt)); - gsi_insert_before (iter, g, GSI_SAME_STMT); + gsi_safe_insert_before (iter, g); } } bool instrumented = false; - if (gimple_store_p (stmt)) + if (gimple_store_p (stmt) + && (gimple_call_builtin_p (stmt) + || gimple_call_internal_p (stmt) + || !aggregate_value_p (TREE_TYPE (gimple_call_lhs (stmt)), + gimple_call_fntype (stmt)))) { tree ref_expr = gimple_call_lhs (stmt); instrument_derefs (iter, ref_expr, @@ -3841,7 +3876,7 @@ asan_expand_mark_ifn (gimple_stmt_iterator *iter) g = gimple_build_assign (make_ssa_name (pointer_sized_int_node), NOP_EXPR, len); gimple_set_location (g, loc); - gsi_insert_before (iter, g, GSI_SAME_STMT); + gsi_safe_insert_before (iter, g); tree sz_arg = gimple_assign_lhs (g); tree fun diff --git a/gcc/attribs.cc b/gcc/attribs.cc index fc7459c3850a..12ffc5f170a1 100644 --- a/gcc/attribs.cc +++ b/gcc/attribs.cc @@ -468,7 +468,12 @@ diag_attr_exclusions (tree last_decl, tree node, tree attrname, if (DECL_P (node)) { attrs[0] = DECL_ATTRIBUTES (node); - attrs[1] = TYPE_ATTRIBUTES (TREE_TYPE (node)); + if (TREE_TYPE (node)) + attrs[1] = TYPE_ATTRIBUTES (TREE_TYPE (node)); + else + /* TREE_TYPE can be NULL e.g. while processing attributes on + enumerators. */ + attrs[1] = NULL_TREE; } else { diff --git a/gcc/auto-profile.cc b/gcc/auto-profile.cc index e5407d32fbbf..de59b94bcb33 100644 --- a/gcc/auto-profile.cc +++ b/gcc/auto-profile.cc @@ -1580,7 +1580,6 @@ afdo_annotate_cfg (const stmt_set &promoted_stmts) } update_max_bb_count (); profile_status_for_fn (cfun) = PROFILE_READ; - cfun->cfg->full_profile = true; if (flag_value_profile_transformations) { gimple_value_profile_transformations (); diff --git a/gcc/btfout.cc b/gcc/btfout.cc index 7aabd99f3e7c..07f066a47068 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -738,36 +738,22 @@ btf_dmd_representable_bitfield_p (ctf_container_ref ctfc, ctf_dmdef_t *dmd) /* Asm'out a reference to another BTF type. */ static void -btf_asm_type_ref (const char *prefix, ctf_container_ref ctfc, ctf_id_t ref_id) +btf_asm_type_ref (const char *prefix, ctf_container_ref ctfc, ctf_id_t ctf_id) { - if (ref_id == BTF_VOID_TYPEID || ref_id == BTF_INVALID_TYPEID) + ctf_id_t btf_id = get_btf_id (ctf_id); + if (btf_id == BTF_VOID_TYPEID || btf_id == BTF_INVALID_TYPEID) { /* There is no explicit void type. Also handle any invalid refs that made it this far, just in case. */ - dw2_asm_output_data (4, ref_id, "%s: void", prefix); - } - else if (ref_id >= num_types_added + 1 - && ref_id < num_types_added + num_vars_added + 1) - { - /* Ref to a variable. Should only appear in DATASEC entries. */ - ctf_id_t var_id = btf_relative_var_id (ref_id); - ctf_dvdef_ref dvd = ctfc->ctfc_vars_list[var_id]; - dw2_asm_output_data (4, ref_id, "%s: (BTF_KIND_VAR '%s')", - prefix, dvd->dvd_name); - - } - else if (ref_id >= num_types_added + num_vars_added + 1) - { - /* Ref to a FUNC record. */ - size_t func_id = btf_relative_func_id (ref_id); - ctf_dtdef_ref ref_type = (*funcs)[func_id]; - dw2_asm_output_data (4, ref_id, "%s: (BTF_KIND_FUNC '%s')", - prefix, get_btf_type_name (ref_type)); + dw2_asm_output_data (4, btf_id, "%s: void", prefix); } else { - /* Ref to a standard type in the types list. */ - ctf_dtdef_ref ref_type = ctfc->ctfc_types_list[ref_id]; + gcc_assert (btf_id <= num_types_added); + + /* Ref to a standard type in the types list. Note: take care that we + must index the type list by the original CTF id, not the BTF id. */ + ctf_dtdef_ref ref_type = ctfc->ctfc_types_list[ctf_id]; uint32_t ref_kind = get_btf_kind (CTF_V2_INFO_KIND (ref_type->dtd_data.ctti_info)); @@ -775,12 +761,43 @@ btf_asm_type_ref (const char *prefix, ctf_container_ref ctfc, ctf_id_t ref_id) ? btf_kind_name (BTF_KIND_ENUM) : btf_kind_name (ref_kind); - dw2_asm_output_data (4, ref_id, "%s: (BTF_KIND_%s '%s')", + dw2_asm_output_data (4, btf_id, "%s: (BTF_KIND_%s '%s')", prefix, kind_name, get_btf_type_name (ref_type)); } } +/* Asm'out a reference to a BTF_KIND_VAR or BTF_KIND_FUNC type. These type + kinds are BTF-specific, and should only be referred to by entries in + BTF_KIND_DATASEC records. */ + +static void +btf_asm_datasec_type_ref (const char *prefix, ctf_container_ref ctfc, + ctf_id_t btf_id) +{ + if (btf_id >= num_types_added + 1 + && btf_id < num_types_added + num_vars_added + 1) + { + /* Ref to a variable. Should only appear in DATASEC entries. */ + ctf_id_t var_id = btf_relative_var_id (btf_id); + ctf_dvdef_ref dvd = ctfc->ctfc_vars_list[var_id]; + dw2_asm_output_data (4, btf_id, "%s: (BTF_KIND_VAR '%s')", + prefix, dvd->dvd_name); + + } + else if (btf_id >= num_types_added + num_vars_added + 1) + { + /* Ref to a FUNC record. */ + size_t func_id = btf_relative_func_id (btf_id); + ctf_dtdef_ref ref_type = (*funcs)[func_id]; + dw2_asm_output_data (4, btf_id, "%s: (BTF_KIND_FUNC '%s')", + prefix, get_btf_type_name (ref_type)); + } + else + /* The caller should not be calling this. */ + gcc_unreachable (); +} + /* Asm'out a BTF type. This routine is responsible for the bulk of the task of converting CTF types to their BTF representation. */ @@ -820,11 +837,6 @@ btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd) /* Set kflag if this member is a representable bitfield. */ if (btf_dmd_representable_bitfield_p (ctfc, dmd)) btf_kflag = 1; - - /* Struct members that refer to unsupported types or bitfield formats - shall be skipped. These are marked during preprocessing. */ - else if (!btf_emit_id_p (dmd->dmd_type)) - btf_vlen -= 1; } } @@ -892,7 +904,7 @@ btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd) break; } - ctf_id_t ref_id = get_btf_id (dtd->dtd_data.ctti_type); + ctf_id_t ref_id = dtd->dtd_data.ctti_type; btf_asm_type_ref ("btt_type", ctfc, ref_id); } @@ -901,8 +913,8 @@ btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd) static void btf_asm_array (ctf_container_ref ctfc, ctf_arinfo_t arr) { - btf_asm_type_ref ("bta_elem_type", ctfc, get_btf_id (arr.ctr_contents)); - btf_asm_type_ref ("bta_index_type", ctfc, get_btf_id (arr.ctr_index)); + btf_asm_type_ref ("bta_elem_type", ctfc, arr.ctr_contents); + btf_asm_type_ref ("bta_index_type", ctfc, arr.ctr_index); dw2_asm_output_data (4, arr.ctr_nelems, "bta_nelems"); } @@ -911,12 +923,11 @@ btf_asm_array (ctf_container_ref ctfc, ctf_arinfo_t arr) static void btf_asm_varent (ctf_container_ref ctfc, ctf_dvdef_ref var) { - ctf_id_t ref_id = get_btf_id (var->dvd_type); dw2_asm_output_data (4, var->dvd_name_offset, "TYPE %u BTF_KIND_VAR '%s'", (*(btf_var_ids->get (var)) + num_types_added + 1), var->dvd_name); dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_VAR, 0, 0), "btv_info"); - btf_asm_type_ref ("btv_type", ctfc, ref_id); + btf_asm_type_ref ("btv_type", ctfc, var->dvd_type); dw2_asm_output_data (4, var->dvd_visibility, "btv_linkage"); } @@ -927,41 +938,39 @@ static void btf_asm_sou_member (ctf_container_ref ctfc, ctf_dmdef_t * dmd, unsigned int idx) { ctf_dtdef_ref ref_type = ctfc->ctfc_types_list[dmd->dmd_type]; + ctf_id_t base_type = dmd->dmd_type; + uint64_t sou_offset = dmd->dmd_offset; + + dw2_asm_output_data (4, dmd->dmd_name_offset, + "MEMBER '%s' idx=%u", + dmd->dmd_name, idx); /* Re-encode bitfields to BTF representation. */ if (CTF_V2_INFO_KIND (ref_type->dtd_data.ctti_info) == CTF_K_SLICE) { - ctf_id_t base_type = ref_type->dtd_u.dtu_slice.cts_type; - unsigned short word_offset = ref_type->dtd_u.dtu_slice.cts_offset; - unsigned short bits = ref_type->dtd_u.dtu_slice.cts_bits; - uint64_t sou_offset = dmd->dmd_offset; - - /* Pack the bit offset and bitfield size together. */ - sou_offset += word_offset; - - /* If this bitfield cannot be represented, do not output anything. - The parent struct/union 'vlen' field has already been updated. */ - if ((bits > 0xff) || (sou_offset > 0xffffff)) - return; + if (btf_dmd_representable_bitfield_p (ctfc, dmd)) + { + unsigned short word_offset = ref_type->dtd_u.dtu_slice.cts_offset; + unsigned short bits = ref_type->dtd_u.dtu_slice.cts_bits; - sou_offset &= 0x00ffffff; - sou_offset |= ((bits & 0xff) << 24); + /* Pack the bit offset and bitfield size together. */ + sou_offset += word_offset; + sou_offset &= 0x00ffffff; + sou_offset |= ((bits & 0xff) << 24); - dw2_asm_output_data (4, dmd->dmd_name_offset, - "MEMBER '%s' idx=%u", - dmd->dmd_name, idx); - /* Refer to the base type of the slice. */ - btf_asm_type_ref ("btm_type", ctfc, get_btf_id (base_type)); - dw2_asm_output_data (4, sou_offset, "btm_offset"); - } - else - { - dw2_asm_output_data (4, dmd->dmd_name_offset, - "MEMBER '%s' idx=%u", - dmd->dmd_name, idx); - btf_asm_type_ref ("btm_type", ctfc, get_btf_id (dmd->dmd_type)); - dw2_asm_output_data (4, dmd->dmd_offset, "btm_offset"); + /* Refer to the base type of the slice. */ + base_type = ref_type->dtd_u.dtu_slice.cts_type; + } + else + { + /* Bitfield cannot be represented in BTF. Emit the member as having + 'void' type. */ + base_type = BTF_VOID_TYPEID; + } } + + btf_asm_type_ref ("btm_type", ctfc, base_type); + dw2_asm_output_data (4, sou_offset, "btm_offset"); } /* Asm'out an enum constant following a BTF_KIND_ENUM{,64}. */ @@ -996,7 +1005,7 @@ btf_asm_func_arg (ctf_container_ref ctfc, ctf_func_arg_t * farg, btf_asm_type_ref ("farg_type", ctfc, (btf_removed_type_p (farg->farg_type) ? BTF_VOID_TYPEID - : get_btf_id (farg->farg_type))); + : farg->farg_type)); } /* Asm'out a BTF_KIND_FUNC type. */ @@ -1011,7 +1020,31 @@ btf_asm_func_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd, ctf_id_t id) dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, dtd->linkage), "btt_info: kind=%u, kflag=%u, linkage=%u", BTF_KIND_FUNC, 0, dtd->linkage); - btf_asm_type_ref ("btt_type", ctfc, get_btf_id (ref_id)); + btf_asm_type_ref ("btt_type", ctfc, ref_id); +} + +/* Collect the name for the DATASEC reference required to be output as a + symbol. */ + +static const char * +get_name_for_datasec_entry (ctf_container_ref ctfc, ctf_id_t ref_id) +{ + if (ref_id >= num_types_added + 1 + && ref_id < num_types_added + num_vars_added + 1) + { + /* Ref to a variable. Should only appear in DATASEC entries. */ + ctf_id_t var_id = btf_relative_var_id (ref_id); + ctf_dvdef_ref dvd = ctfc->ctfc_vars_list[var_id]; + return dvd->dvd_name; + } + else if (ref_id >= num_types_added + num_vars_added + 1) + { + /* Ref to a FUNC record. */ + size_t func_id = btf_relative_func_id (ref_id); + ctf_dtdef_ref ref_type = (*funcs)[func_id]; + return get_btf_type_name (ref_type); + } + return NULL; } /* Asm'out a variable entry following a BTF_KIND_DATASEC. */ @@ -1019,8 +1052,12 @@ btf_asm_func_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd, ctf_id_t id) static void btf_asm_datasec_entry (ctf_container_ref ctfc, struct btf_var_secinfo info) { - btf_asm_type_ref ("bts_type", ctfc, info.type); - dw2_asm_output_data (4, info.offset, "bts_offset"); + const char *symbol_name = get_name_for_datasec_entry (ctfc, info.type); + btf_asm_datasec_type_ref ("bts_type", ctfc, info.type); + if (!btf_with_core_debuginfo_p () || symbol_name == NULL) + dw2_asm_output_data (4, info.offset, "bts_offset"); + else + dw2_asm_output_offset (4, symbol_name, NULL, "bts_offset"); dw2_asm_output_data (4, info.size, "bts_size"); } diff --git a/gcc/builtins.cc b/gcc/builtins.cc index eda8bea9c4be..f8d94c4b4356 100644 --- a/gcc/builtins.cc +++ b/gcc/builtins.cc @@ -6329,7 +6329,7 @@ expand_builtin_fork_or_exec (tree fn, tree exp, rtx target, int ignore) tree call; /* If we are not profiling, just call the function. */ - if (!profile_arc_flag) + if (!profile_arc_flag && !condition_coverage_flag) return NULL_RTX; /* Otherwise call the wrapper. This should be equivalent for the rest of @@ -10461,7 +10461,7 @@ fold_builtin_1 (location_t loc, tree expr, tree fndecl, tree arg0) tree type = TREE_TYPE (TREE_TYPE (fndecl)); enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl); - if (TREE_CODE (arg0) == ERROR_MARK) + if (error_operand_p (arg0)) return NULL_TREE; if (tree ret = fold_const_call (as_combined_fn (fcode), type, arg0)) @@ -10601,8 +10601,8 @@ fold_builtin_2 (location_t loc, tree expr, tree fndecl, tree arg0, tree arg1) tree type = TREE_TYPE (TREE_TYPE (fndecl)); enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl); - if (TREE_CODE (arg0) == ERROR_MARK - || TREE_CODE (arg1) == ERROR_MARK) + if (error_operand_p (arg0) + || error_operand_p (arg1)) return NULL_TREE; if (tree ret = fold_const_call (as_combined_fn (fcode), type, arg0, arg1)) @@ -10693,9 +10693,9 @@ fold_builtin_3 (location_t loc, tree fndecl, tree type = TREE_TYPE (TREE_TYPE (fndecl)); enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl); - if (TREE_CODE (arg0) == ERROR_MARK - || TREE_CODE (arg1) == ERROR_MARK - || TREE_CODE (arg2) == ERROR_MARK) + if (error_operand_p (arg0) + || error_operand_p (arg1) + || error_operand_p (arg2)) return NULL_TREE; if (tree ret = fold_const_call (as_combined_fn (fcode), type, diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 71291e72d369..0e8784f98210 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,40 @@ +2024-04-13 Mark Wielaard + + * c.opt.urls: Regenerate. + +2024-04-12 Jason Merrill + Patrick Palka + + PR c++/113141 + * c.opt: Add -Wcast-user-defined. + +2024-04-05 Marek Polacek + + * c-warn.cc (warn_about_parentheses): Remove an #undef. + +2024-03-27 Jakub Jelinek + + PR tree-optimization/114469 + * c-common.cc (resolve_overloaded_builtin): For _BitInt result + on !extended targets convert result to the _BitInt type before + using VIEW_CONVERT_EXPR. + +2024-03-26 Jakub Jelinek + + PR c++/112724 + * c-pretty-print.cc (pp_c_cast_expression, + c_pretty_printer::expression): Handle EXCESS_PRECISION_EXPR like + NOP_EXPR. + +2024-03-19 Jakub Jelinek + + PR c/114364 + * c-omp.cc (enum check_loop_binding_expr_ctx): New type. + (check_loop_binding_expr): Remove context argument, add ctx + argument with check_loop_binding_expr_ctx type at the end. Don't + create diagnostic message from multiple pieces. + (c_omp_check_loop_binding_exprs): Adjust callers. + 2024-03-08 Jakub Jelinek * c-common.cc (resolve_overloaded_atomic_exchange): Instead of setting diff --git a/gcc/c-family/c-common.cc b/gcc/c-family/c-common.cc index 48844b17f77a..6fa8243b02b5 100644 --- a/gcc/c-family/c-common.cc +++ b/gcc/c-family/c-common.cc @@ -8461,7 +8461,19 @@ resolve_overloaded_builtin (location_t loc, tree function, if (new_return) { /* Cast function result from I{1,2,4,8,16} to the required type. */ - result = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (new_return), result); + if (TREE_CODE (TREE_TYPE (new_return)) == BITINT_TYPE) + { + struct bitint_info info; + unsigned prec = TYPE_PRECISION (TREE_TYPE (new_return)); + targetm.c.bitint_type_info (prec, &info); + if (!info.extended) + /* For _BitInt which has the padding bits undefined + convert to the _BitInt type rather than VCE to force + zero or sign extension. */ + result = build1 (NOP_EXPR, TREE_TYPE (new_return), result); + } + result + = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (new_return), result); result = build2 (MODIFY_EXPR, TREE_TYPE (new_return), new_return, result); TREE_SIDE_EFFECTS (result) = 1; diff --git a/gcc/c-family/c-omp.cc b/gcc/c-family/c-omp.cc index 5117022e330c..c0e02aa422f2 100644 --- a/gcc/c-family/c-omp.cc +++ b/gcc/c-family/c-omp.cc @@ -1793,22 +1793,46 @@ check_loop_binding_expr_r (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED, #define LOCATION_OR(loc1, loc2) \ ((loc1) != UNKNOWN_LOCATION ? (loc1) : (loc2)) +enum check_loop_binding_expr_ctx { + CHECK_LOOP_BINDING_EXPR_CTX_LOOP_VAR, + CHECK_LOOP_BINDING_EXPR_CTX_IN_INIT, + CHECK_LOOP_BINDING_EXPR_CTX_END_TEST, + CHECK_LOOP_BINDING_EXPR_CTX_INCR +}; + /* Check a single expression EXPR for references to variables bound in intervening code in BODY. Return true if ok, otherwise give an error referencing CONTEXT and return false. Use LOC for the error message if EXPR doesn't have one. */ static bool -check_loop_binding_expr (tree expr, tree body, const char *context, - location_t loc) +check_loop_binding_expr (tree expr, tree body, location_t loc, + check_loop_binding_expr_ctx ctx) { tree bad = walk_tree (&expr, check_loop_binding_expr_r, (void *)&body, NULL); if (bad) { location_t eloc = EXPR_LOCATION (expr); - error_at (LOCATION_OR (eloc, loc), - "variable %qD used %s is bound " - "in intervening code", bad, context); + eloc = LOCATION_OR (eloc, loc); + switch (ctx) + { + case CHECK_LOOP_BINDING_EXPR_CTX_LOOP_VAR: + error_at (eloc, "variable %qD used as loop variable is bound " + "in intervening code", bad); + break; + case CHECK_LOOP_BINDING_EXPR_CTX_IN_INIT: + error_at (eloc, "variable %qD used in initializer is bound " + "in intervening code", bad); + break; + case CHECK_LOOP_BINDING_EXPR_CTX_END_TEST: + error_at (eloc, "variable %qD used in end test is bound " + "in intervening code", bad); + break; + case CHECK_LOOP_BINDING_EXPR_CTX_INCR: + error_at (eloc, "variable %qD used in increment expression is bound " + "in intervening code", bad); + break; + } return false; } return true; @@ -1839,13 +1863,15 @@ c_omp_check_loop_binding_exprs (tree stmt, vec *orig_inits) e = TREE_OPERAND (init, 1); eloc = LOCATION_OR (EXPR_LOCATION (init), loc); - if (!check_loop_binding_expr (decl, body, "as loop variable", eloc)) + if (!check_loop_binding_expr (decl, body, eloc, + CHECK_LOOP_BINDING_EXPR_CTX_LOOP_VAR)) ok = false; - if (!check_loop_binding_expr (e, body, "in initializer", eloc)) + if (!check_loop_binding_expr (e, body, eloc, + CHECK_LOOP_BINDING_EXPR_CTX_IN_INIT)) ok = false; if (orig_init - && !check_loop_binding_expr (orig_init, body, - "in initializer", eloc)) + && !check_loop_binding_expr (orig_init, body, eloc, + CHECK_LOOP_BINDING_EXPR_CTX_IN_INIT)) ok = false; /* INCR and/or COND may be null if this is a template with a @@ -1859,7 +1885,8 @@ c_omp_check_loop_binding_exprs (tree stmt, vec *orig_inits) e = TREE_OPERAND (cond, 0); else e = cond; - if (!check_loop_binding_expr (e, body, "in end test", eloc)) + if (!check_loop_binding_expr (e, body, eloc, + CHECK_LOOP_BINDING_EXPR_CTX_END_TEST)) ok = false; } @@ -1870,8 +1897,8 @@ c_omp_check_loop_binding_exprs (tree stmt, vec *orig_inits) increment/decrement. We don't have to check the latter since there are no operands besides the iteration variable. */ if (TREE_CODE (incr) == MODIFY_EXPR - && !check_loop_binding_expr (TREE_OPERAND (incr, 1), body, - "in increment expression", eloc)) + && !check_loop_binding_expr (TREE_OPERAND (incr, 1), body, eloc, + CHECK_LOOP_BINDING_EXPR_CTX_INCR)) ok = false; } } diff --git a/gcc/c-family/c-pretty-print.cc b/gcc/c-family/c-pretty-print.cc index 45045fb2242f..da7934d783a5 100644 --- a/gcc/c-family/c-pretty-print.cc +++ b/gcc/c-family/c-pretty-print.cc @@ -2327,6 +2327,7 @@ pp_c_cast_expression (c_pretty_printer *pp, tree e) case FIX_TRUNC_EXPR: CASE_CONVERT: case VIEW_CONVERT_EXPR: + case EXCESS_PRECISION_EXPR: if (!location_wrapper_p (e)) pp_c_type_cast (pp, TREE_TYPE (e)); pp_c_cast_expression (pp, TREE_OPERAND (e, 0)); @@ -2753,6 +2754,7 @@ c_pretty_printer::expression (tree e) case FIX_TRUNC_EXPR: CASE_CONVERT: case VIEW_CONVERT_EXPR: + case EXCESS_PRECISION_EXPR: pp_c_cast_expression (this, e); break; diff --git a/gcc/c-family/c-warn.cc b/gcc/c-family/c-warn.cc index 8168696fa45d..bff87be05ae3 100644 --- a/gcc/c-family/c-warn.cc +++ b/gcc/c-family/c-warn.cc @@ -2176,7 +2176,6 @@ warn_about_parentheses (location_t loc, enum tree_code code, } return; } -#undef NOT_A_BOOLEAN_EXPR_P } /* If LABEL (a LABEL_DECL) has not been used, issue a warning. */ diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 56cccf2a67bd..848c2fda2038 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -514,6 +514,10 @@ Wcast-qual C ObjC C++ ObjC++ Var(warn_cast_qual) Warning Warn about casts which discard qualifiers. +Wcast-user-defined +C++ ObjC++ Var(warn_cast_user_defined) Warning Init(1) +Warn about a cast to reference type that does not use a related user-defined conversion function. + Wcatch-value C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0) Warn about catch handlers of non-reference type. diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls index 631719863a5e..dd455d7c0dc7 100644 --- a/gcc/c-family/c.opt.urls +++ b/gcc/c-family/c.opt.urls @@ -208,6 +208,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wcast-function-type) Wcast-qual UrlSuffix(gcc/Warning-Options.html#index-Wcast-qual) +Wcast-user-defined +UrlSuffix(gcc/Warning-Options.html#index-Wcast-user-defined) + Wcatch-value UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value) diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index f8b56315ce5d..58ff5c9f6085 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,34 @@ +2024-04-09 Jakub Jelinek + + * c-decl.cc (previous_tag): Fix duplicated words in comment; the the + -> the. + (diagnose_mismatched_decls): Fix duplicated words in comment; + about about -> about. + +2024-04-05 Martin Uecker + + Revert: + 2024-04-02 Martin Uecker + + PR c/114361 + * c-decl.cc (finish_struct): Set TYPE_CANONICAL when completing + strucute types. + +2024-04-02 Martin Uecker + + PR c/114361 + * c-decl.cc (finish_struct): Set TYPE_CANONICAL when completing + strucute types. + +2024-03-14 Chung-Lin Tang + + * c-parser.cc (c_parser_oacc_data_clause): Add parsing support for + 'readonly' modifier, set OMP_CLAUSE_MAP_READONLY if readonly modifier + found, update comments. + (c_parser_oacc_cache): Add parsing support for 'readonly' modifier, + set OMP_CLAUSE__CACHE__READONLY if readonly modifier found, update + comments. + 2024-03-08 Jakub Jelinek PR debug/113918 diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index c747abe9f4ef..345090dae38b 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -2069,7 +2069,7 @@ locate_old_decl (tree decl) /* Helper function. For a tagged type, it finds the declaration - for a visible tag declared in the the same scope if such a + for a visible tag declared in the same scope if such a declaration exists. */ static tree previous_tag (tree type) @@ -2316,7 +2316,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, (C23 6.7.2.2/5), but may pose portability problems. */ else if (enum_and_int_p && TREE_CODE (newdecl) != TYPE_DECL - /* Don't warn about about acc_on_device built-in redeclaration, + /* Don't warn about acc_on_device built-in redeclaration, the built-in is declared with int rather than enum because the enum isn't intrinsic. */ && !(TREE_CODE (olddecl) == FUNCTION_DECL diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index 53e99aa29d96..00f8bf4376e5 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -15627,7 +15627,11 @@ c_parser_omp_var_list_parens (c_parser *parser, enum omp_clause_code kind, OpenACC 2.6: no_create ( variable-list ) attach ( variable-list ) - detach ( variable-list ) */ + detach ( variable-list ) + + OpenACC 2.7: + copyin (readonly : variable-list ) + */ static tree c_parser_oacc_data_clause (c_parser *parser, pragma_omp_clause c_kind, @@ -15680,11 +15684,37 @@ c_parser_oacc_data_clause (c_parser *parser, pragma_omp_clause c_kind, default: gcc_unreachable (); } - tree nl, c; - nl = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_MAP, list, false); - for (c = nl; c != list; c = OMP_CLAUSE_CHAIN (c)) - OMP_CLAUSE_SET_MAP_KIND (c, kind); + tree nl = list; + bool readonly = false; + location_t open_loc = c_parser_peek_token (parser)->location; + matching_parens parens; + if (parens.require_open (parser)) + { + /* Turn on readonly modifier parsing for copyin clause. */ + if (c_kind == PRAGMA_OACC_CLAUSE_COPYIN) + { + c_token *token = c_parser_peek_token (parser); + if (token->type == CPP_NAME + && !strcmp (IDENTIFIER_POINTER (token->value), "readonly") + && c_parser_peek_2nd_token (parser)->type == CPP_COLON) + { + c_parser_consume_token (parser); + c_parser_consume_token (parser); + readonly = true; + } + } + nl = c_parser_omp_variable_list (parser, open_loc, OMP_CLAUSE_MAP, list, + false); + parens.skip_until_found_close (parser); + } + + for (tree c = nl; c != list; c = OMP_CLAUSE_CHAIN (c)) + { + OMP_CLAUSE_SET_MAP_KIND (c, kind); + if (readonly) + OMP_CLAUSE_MAP_READONLY (c) = 1; + } return nl; } @@ -19821,15 +19851,39 @@ c_parser_omp_structured_block (c_parser *parser, bool *if_p) /* OpenACC 2.0: # pragma acc cache (variable-list) new-line + OpenACC 2.7: + # pragma acc cache (readonly: variable-list) new-line + LOC is the location of the #pragma token. */ static tree c_parser_oacc_cache (location_t loc, c_parser *parser) { - tree stmt, clauses; + tree stmt, clauses = NULL_TREE; + bool readonly = false; + location_t open_loc = c_parser_peek_token (parser)->location; + matching_parens parens; + if (parens.require_open (parser)) + { + c_token *token = c_parser_peek_token (parser); + if (token->type == CPP_NAME + && !strcmp (IDENTIFIER_POINTER (token->value), "readonly") + && c_parser_peek_2nd_token (parser)->type == CPP_COLON) + { + c_parser_consume_token (parser); + c_parser_consume_token (parser); + readonly = true; + } + clauses = c_parser_omp_variable_list (parser, open_loc, + OMP_CLAUSE__CACHE_, NULL_TREE); + parens.skip_until_found_close (parser); + } + + if (readonly) + for (tree c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) + OMP_CLAUSE__CACHE__READONLY (c) = 1; - clauses = c_parser_omp_var_list_parens (parser, OMP_CLAUSE__CACHE_, NULL); clauses = c_finish_omp_clauses (clauses, C_ORT_ACC); c_parser_skip_to_pragma_eol (parser); diff --git a/gcc/cfganal.cc b/gcc/cfganal.cc index 432775decf1c..35c59f3f5d26 100644 --- a/gcc/cfganal.cc +++ b/gcc/cfganal.cc @@ -1701,8 +1701,7 @@ compute_idf (bitmap def_blocks, bitmap_head *dfs) on earlier blocks first is better. ??? Basic blocks are by no means guaranteed to be ordered in optimal order for this iteration. */ - bb_index = bitmap_first_set_bit (work_set); - bitmap_clear_bit (work_set, bb_index); + bb_index = bitmap_clear_first_set_bit (work_set); /* Since the registration of NEW -> OLD name mappings is done separately from the call to update_ssa, when updating the SSA @@ -1712,12 +1711,14 @@ compute_idf (bitmap def_blocks, bitmap_head *dfs) gcc_checking_assert (bb_index < (unsigned) last_basic_block_for_fn (cfun)); - EXECUTE_IF_AND_COMPL_IN_BITMAP (&dfs[bb_index], phi_insertion_points, - 0, i, bi) - { + /* The population counts of the dominance frontiers is low + compared to that of phi_insertion_points which approaches + the IDF and of work_set which is at most that of the IDF + as well. That makes iterating over the DFS bitmap preferential + to whole bitmap operations involving also phi_insertion_points. */ + EXECUTE_IF_SET_IN_BITMAP (&dfs[bb_index], 0, i, bi) + if (bitmap_set_bit (phi_insertion_points, i)) bitmap_set_bit (work_set, i); - bitmap_set_bit (phi_insertion_points, i); - } } return phi_insertion_points; diff --git a/gcc/cfgloopmanip.cc b/gcc/cfgloopmanip.cc index 946cbe6085cc..3707db2fdb39 100644 --- a/gcc/cfgloopmanip.cc +++ b/gcc/cfgloopmanip.cc @@ -669,7 +669,7 @@ update_loop_exit_probability_scale_dom_bbs (class loop *loop, + old_exit_count - exit_edge->count (); } else - /* If there are multple blocks, just scale. */ + /* If there are multiple blocks, just scale. */ scale_dominated_blocks_in_loop (loop, exit_edge->src, exit_edge->src->count - exit_edge->count (), exit_edge->src->count - old_exit_count); diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 47f35e8078df..a8c3224802c1 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -479,6 +479,9 @@ struct GTY((desc ("%h.type"), tag ("SYMTAB_SYMBOL"), Return NULL if there's no such node. */ static symtab_node *get_for_asmname (const_tree asmname); + /* Check symbol table for callees of IFUNC resolvers. */ + static void check_ifunc_callee_symtab_nodes (void); + /* Verify symbol table for internal consistency. */ static DEBUG_FUNCTION void verify_symtab_nodes (void); @@ -896,6 +899,7 @@ struct GTY((tag ("SYMTAB_FUNCTION"))) cgraph_node : public symtab_node redefined_extern_inline (false), tm_may_enter_irr (false), ipcp_clone (false), declare_variant_alt (false), calls_declare_variant_alt (false), gc_candidate (false), + called_by_ifunc_resolver (false), m_uid (uid), m_summary_id (-1) {} @@ -1495,6 +1499,8 @@ struct GTY((tag ("SYMTAB_FUNCTION"))) cgraph_node : public symtab_node is set for local SIMD clones when they are created and cleared if the vectorizer uses them. */ unsigned gc_candidate : 1; + /* Set if the function is called by an IFUNC resolver. */ + unsigned called_by_ifunc_resolver : 1; private: /* Unique id of the node. */ diff --git a/gcc/cgraphunit.cc b/gcc/cgraphunit.cc index d200166f7e93..2bd0289ffba5 100644 --- a/gcc/cgraphunit.cc +++ b/gcc/cgraphunit.cc @@ -2317,6 +2317,8 @@ symbol_table::compile (void) symtab_node::checking_verify_symtab_nodes (); + symtab_node::check_ifunc_callee_symtab_nodes (); + timevar_push (TV_CGRAPHOPT); if (pre_ipa_mem_report) dump_memory_report ("Memory consumption before IPA"); diff --git a/gcc/collect2.cc b/gcc/collect2.cc index 14306f647285..902014a9cc15 100644 --- a/gcc/collect2.cc +++ b/gcc/collect2.cc @@ -1035,9 +1035,9 @@ main (int argc, char **argv) lto_mode = LTO_MODE_LTO; } - /* -fno-profile-arcs -fno-test-coverage -fno-branch-probabilities - -fno-exceptions -w -fno-whole-program */ - num_c_args += 6; + /* -fno-profile-arcs -fno-condition-coverage -fno-test-coverage + -fno-branch-probabilities -fno-exceptions -w -fno-whole-program */ + num_c_args += 7; c_argv = XCNEWVEC (char *, num_c_args); c_ptr = CONST_CAST2 (const char **, char **, c_argv); @@ -1233,6 +1233,7 @@ main (int argc, char **argv) } obstack_free (&temporary_obstack, temporary_firstobj); *c_ptr++ = "-fno-profile-arcs"; + *c_ptr++ = "-fno-condition-coverage"; *c_ptr++ = "-fno-test-coverage"; *c_ptr++ = "-fno-branch-probabilities"; *c_ptr++ = "-fno-exceptions"; diff --git a/gcc/combine.cc b/gcc/combine.cc index a4479f8d8364..92b8d98e6c15 100644 --- a/gcc/combine.cc +++ b/gcc/combine.cc @@ -3222,8 +3222,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, #endif /* Cases for modifying the CC-using comparison. */ if (compare_code != orig_compare_code - /* ??? Do we need to verify the zero rtx? */ - && XEXP (*cc_use_loc, 1) == const0_rtx) + && COMPARISON_P (*cc_use_loc)) { /* Replace cc_use_loc with entire new RTX. */ SUBST (*cc_use_loc, @@ -3233,8 +3232,19 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, } else if (compare_mode != orig_compare_mode) { + subrtx_ptr_iterator::array_type array; + /* Just replace the CC reg with a new mode. */ - SUBST (XEXP (*cc_use_loc, 0), newpat_dest); + FOR_EACH_SUBRTX_PTR (iter, array, cc_use_loc, NONCONST) + { + rtx *loc = *iter; + if (REG_P (*loc) + && REGNO (*loc) == REGNO (newpat_dest)) + { + SUBST (*loc, newpat_dest); + iter.skip_subrtxes (); + } + } undobuf.other_insn = cc_use_insn; } } diff --git a/gcc/common.opt b/gcc/common.opt index 51c4a17da83b..ad3488447752 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -870,6 +870,11 @@ Wcoverage-invalid-line-number Common Var(warn_coverage_invalid_linenum) Init(1) Warning Warn in case a function ends earlier than it begins due to an invalid linenum macros. +Wcoverage-too-many-conditions +Common Var(warn_too_many_conditions) Init(1) Warning +Warn when a conditional has too many terms and condition coverage profiling +gives up instrumenting the expression. + Wmissing-profile Common Var(warn_missing_profile) Init(1) Warning Warn in case profiles in -fprofile-use do not exist. @@ -2295,7 +2300,7 @@ Common Var(flag_move_loop_stores) Optimization Move stores out of loops. fmultiflags -Common Driver +Common Driver RejectNegative Building block for specs-based multilib-aware TFLAGS. fdce @@ -2464,6 +2469,10 @@ fprofile-arcs Common Var(profile_arc_flag) Insert arc-based program profiling code. +fcondition-coverage +Common Var(condition_coverage_flag) +Insert condition coverage profiling code. + fprofile-dir= Common Joined RejectNegative Var(profile_data_prefix) Set the top-level directory for storing the profile data. diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls index db4354989fcc..f71ed80a34b4 100644 --- a/gcc/common.opt.urls +++ b/gcc/common.opt.urls @@ -280,6 +280,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-mismatch) Wcoverage-invalid-line-number UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-invalid-line-number) +Wcoverage-too-many-conditions +UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-too-many-conditions) + Wmissing-profile UrlSuffix(gcc/Warning-Options.html#index-Wmissing-profile) @@ -1057,6 +1060,9 @@ UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-abs-path) ; duplicate: 'gcc/Instrumentation-Options.html#index-fprofile-arcs' ; duplicate: 'gcc/Other-Builtins.html#index-fprofile-arcs-1' +fcondition-coverage +UrlSuffix(gcc/Instrumentation-Options.html#index-fcondition-coverage) + fprofile-dir= UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-dir) diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index a595ee537a88..017a952a5db0 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -310,6 +310,22 @@ get_amd_cpu (struct __processor_model *cpu_model, cpu_model->__cpu_subtype = AMDFAM19H_ZNVER3; } break; + case 0x1a: + cpu_model->__cpu_type = AMDFAM1AH; + if (model <= 0x77) + { + cpu = "znver5"; + CHECK___builtin_cpu_is ("znver5"); + cpu_model->__cpu_subtype = AMDFAM1AH_ZNVER5; + } + else if (has_cpu_feature (cpu_model, cpu_features2, + FEATURE_AVX512VP2INTERSECT)) + { + cpu = "znver5"; + CHECK___builtin_cpu_is ("znver5"); + cpu_model->__cpu_subtype = AMDFAM1AH_ZNVER5; + } + break; default: break; } diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386/i386-common.cc index c35191e69251..f814df8385b9 100644 --- a/gcc/common/config/i386/i386-common.cc +++ b/gcc/common/config/i386/i386-common.cc @@ -2166,7 +2166,8 @@ const char *const processor_names[] = "znver1", "znver2", "znver3", - "znver4" + "znver4", + "znver5" }; /* Guarantee that the array is aligned with enum processor_type. */ @@ -2435,6 +2436,9 @@ const pta processor_alias_table[] = {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER4, PTA_ZNVER4, M_CPU_SUBTYPE (AMDFAM19H_ZNVER4), P_PROC_AVX512F}, + {"znver5", PROCESSOR_ZNVER5, CPU_ZNVER5, + PTA_ZNVER5, + M_CPU_SUBTYPE (AMDFAM1AH_ZNVER5), P_PROC_AVX512F}, {"btver1", PROCESSOR_BTVER1, CPU_GENERIC, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 | PTA_SSE4A | PTA_ABM | PTA_CX16 | PTA_PRFCHW diff --git a/gcc/common/config/i386/i386-cpuinfo.h b/gcc/common/config/i386/i386-cpuinfo.h index 2ee7470c8daa..73131657eabc 100644 --- a/gcc/common/config/i386/i386-cpuinfo.h +++ b/gcc/common/config/i386/i386-cpuinfo.h @@ -63,6 +63,7 @@ enum processor_types INTEL_SIERRAFOREST, INTEL_GRANDRIDGE, INTEL_CLEARWATERFOREST, + AMDFAM1AH, CPU_TYPE_MAX, BUILTIN_CPU_TYPE_MAX = CPU_TYPE_MAX }; @@ -104,6 +105,7 @@ enum processor_subtypes INTEL_COREI7_ARROWLAKE_S, INTEL_COREI7_PANTHERLAKE, ZHAOXIN_FAM7H_YONGFENG, + AMDFAM1AH_ZNVER5, CPU_SUBTYPE_MAX }; diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index 48efef40dfd1..43b7549e3ec5 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -366,6 +366,7 @@ static const struct riscv_ext_version riscv_ext_version_table[] = {"xcvalu", ISA_SPEC_CLASS_NONE, 1, 0}, {"xcvelw", ISA_SPEC_CLASS_NONE, 1, 0}, {"xcvsimd", ISA_SPEC_CLASS_NONE, 1, 0}, + {"xcvbi", ISA_SPEC_CLASS_NONE, 1, 0}, {"xtheadba", ISA_SPEC_CLASS_NONE, 1, 0}, {"xtheadbb", ISA_SPEC_CLASS_NONE, 1, 0}, @@ -425,11 +426,108 @@ bool riscv_subset_list::parse_failed = false; static riscv_subset_list *current_subset_list = NULL; +static riscv_subset_list *cmdline_subset_list = NULL; + +struct riscv_func_target_info +{ + tree fn_decl; + std::string fn_target_name; + + riscv_func_target_info (const tree &decl, const std::string &target_name) + : fn_decl (decl), fn_target_name (target_name) + { + } +}; + +struct riscv_func_target_hasher : nofree_ptr_hash +{ + typedef tree compare_type; + + static hashval_t hash (value_type); + static bool equal (value_type, const compare_type &); +}; + +static hash_table *func_target_table = NULL; + +static inline hashval_t riscv_func_decl_hash (tree fn_decl) +{ + inchash::hash h; + + h.add_ptr (fn_decl); + + return h.end (); +} + +inline hashval_t +riscv_func_target_hasher::hash (value_type value) +{ + return riscv_func_decl_hash (value->fn_decl); +} + +inline bool +riscv_func_target_hasher::equal (value_type value, const compare_type &key) +{ + return value->fn_decl == key; +} + const riscv_subset_list *riscv_current_subset_list () { return current_subset_list; } +const riscv_subset_list * riscv_cmdline_subset_list () +{ + return cmdline_subset_list; +} + +static inline void riscv_func_target_table_lazy_init () +{ + if (func_target_table != NULL) + return; + + func_target_table = new hash_table (1023); +} + +std::string * riscv_func_target_get (tree fn_decl) +{ + riscv_func_target_table_lazy_init (); + + hashval_t hash = riscv_func_decl_hash (fn_decl); + struct riscv_func_target_info *info + = func_target_table->find_with_hash (fn_decl, hash); + + return info == NULL ? NULL : &info->fn_target_name; +} + +void riscv_func_target_put (tree fn_decl, std::string fn_target_name) +{ + riscv_func_target_table_lazy_init (); + + hashval_t hash = riscv_func_decl_hash (fn_decl); + struct riscv_func_target_info **target_info_slot + = func_target_table->find_slot_with_hash (fn_decl, hash, INSERT); + + gcc_assert (!*target_info_slot); + + struct riscv_func_target_info *info + = new riscv_func_target_info (fn_decl, fn_target_name); + + *target_info_slot = info; +} + +void riscv_func_target_remove_and_destory (tree fn_decl) +{ + hashval_t hash = riscv_func_decl_hash (fn_decl); + struct riscv_func_target_info *info + = func_target_table->find_with_hash (fn_decl, hash); + + if (info) + { + func_target_table->remove_elt_with_hash (fn_decl, hash); + delete info; + } +} + /* struct for recording multi-lib info. */ struct riscv_multi_lib_info_t { std::string path; @@ -1400,7 +1498,6 @@ riscv_subset_list::parse (const char *arch, location_t loc) return NULL; riscv_subset_list *subset_list = new riscv_subset_list (arch, loc); - riscv_subset_t *itr; const char *p = arch; p = subset_list->parse_base_ext (p); if (p == NULL) @@ -1427,16 +1524,7 @@ riscv_subset_list::parse (const char *arch, location_t loc) if (p == NULL) goto fail; - for (itr = subset_list->m_head; itr != NULL; itr = itr->next) - { - subset_list->handle_implied_ext (itr->name.c_str ()); - } - - /* Make sure all implied extensions are included. */ - gcc_assert (subset_list->check_implied_ext ()); - - subset_list->handle_combine_ext (); - subset_list->check_conflict_ext (); + subset_list->finalize (); return subset_list; @@ -1466,6 +1554,26 @@ riscv_subset_list::set_loc (location_t loc) m_loc = loc; } +/* Make sure the implied or combined extension is included after add + a new std extension to subset list or likewise. For exmaple as below, + + void __attribute__((target("arch=+v"))) func () with -march=rv64gc. + + The implied zvl128b and zve64d of the std v should be included. */ +void +riscv_subset_list::finalize () +{ + riscv_subset_t *subset; + + for (subset = m_head; subset != NULL; subset = subset->next) + handle_implied_ext (subset->name.c_str ()); + + gcc_assert (check_implied_ext ()); + + handle_combine_ext (); + check_conflict_ext (); +} + /* Return the current arch string. */ std::string @@ -1618,6 +1726,7 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = {"xcvalu", &gcc_options::x_riscv_xcv_subext, MASK_XCVALU}, {"xcvelw", &gcc_options::x_riscv_xcv_subext, MASK_XCVELW}, {"xcvsimd", &gcc_options::x_riscv_xcv_subext, MASK_XCVSIMD}, + {"xcvbi", &gcc_options::x_riscv_xcv_subext, MASK_XCVBI}, {"xtheadba", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBA}, {"xtheadbb", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBB}, @@ -1718,10 +1827,14 @@ riscv_parse_arch_string (const char *isa, } } - if (current_subset_list) + /* Avoid double delete if current_subset_list equals cmdline_subset_list. */ + if (current_subset_list && current_subset_list != cmdline_subset_list) delete current_subset_list; - current_subset_list = subset_list; + if (cmdline_subset_list) + delete cmdline_subset_list; + + current_subset_list = cmdline_subset_list = subset_list; } /* Return the riscv_cpu_info entry for CPU, NULL if not found. */ diff --git a/gcc/config.gcc b/gcc/config.gcc index 624e0dae191a..5df3c52f8e98 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -703,9 +703,9 @@ c7 esther" # 64-bit x86 processors supported by --with-arch=. Each processor # MUST be separated by exactly one space. x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \ -bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 k8 k8-sse3 opteron \ -opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \ -slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \ +bdver3 bdver4 znver1 znver2 znver3 znver4 znver5 btver1 btver2 k8 k8-sse3 \ +opteron opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 \ +atom slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \ silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \ skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \ sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \ @@ -1199,6 +1199,7 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*) ;; aarch64-*-rtems*) tm_file="${tm_file} aarch64/rtems.h rtems.h" + tmake_file="${tmake_file} aarch64/t-aarch64-rtems" ;; esac case $target in @@ -1264,6 +1265,12 @@ aarch64*-*-linux*) done TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'` ;; +aarch64*-*-gnu*) + tm_file="${tm_file} elfos.h gnu-user.h gnu.h glibc-stdint.h" + tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-gnu.h" + tmake_file="${tmake_file} aarch64/t-aarch64" + tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1" + ;; aarch64*-wrs-vxworks*) tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h" tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h" @@ -2492,6 +2499,7 @@ riscv*-*-linux*) # Force .init_array support. The configure script cannot always # automatically detect that GAS supports it, yet we require it. gcc_cv_initfini_array=yes + with_tls=${with_tls:-trad} ;; riscv*-*-elf* | riscv*-*-rtems*) tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h" @@ -2534,6 +2542,7 @@ riscv*-*-freebsd*) # Force .init_array support. The configure script cannot always # automatically detect that GAS supports it, yet we require it. gcc_cv_initfini_array=yes + with_tls=${with_tls:-trad} ;; loongarch*-*-linux*) @@ -3759,6 +3768,10 @@ case ${target} in arch=znver4 cpu=znver4 ;; + znver5-*) + arch=znver5 + cpu=znver5 + ;; bdver4-*) arch=bdver4 cpu=bdver4 @@ -3896,6 +3909,10 @@ case ${target} in arch=znver4 cpu=znver4 ;; + znver5-*) + arch=znver5 + cpu=znver5 + ;; bdver4-*) arch=bdver4 cpu=bdver4 @@ -4552,7 +4569,7 @@ case "${target}" in for which in arch tune; do eval "val=\$with_$which" case ${val} in - "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030 | gfx1100) + "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030 | gfx1036 | gfx1100 | gfx1103) # OK ;; *) @@ -4568,7 +4585,7 @@ case "${target}" in TM_MULTILIB_CONFIG= ;; xdefault | xyes) - TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1100" | sed "s/${with_arch},\?//;s/,$//"` + TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1036,gfx1100,gfx1103" | sed "s/${with_arch},\?//;s/,$//"` ;; *) TM_MULTILIB_CONFIG="${with_multilib_list}" @@ -4663,7 +4680,7 @@ case "${target}" in ;; riscv*-*-*) - supported_defaults="abi arch tune riscv_attribute isa_spec" + supported_defaults="abi arch tune riscv_attribute isa_spec tls" case "${target}" in riscv-* | riscv32*) xlen=32 ;; @@ -4793,6 +4810,17 @@ case "${target}" in ;; esac fi + # Handle --with-tls. + case "$with_tls" in + "" \ + | trad | desc) + # OK + ;; + *) + echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2 + exit 1 + ;; + esac # Handle --with-multilib-list. if test "x${with_multilib_list}" != xdefault; then @@ -4991,7 +5019,7 @@ case "${target}" in ;; loongarch*-*) - supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib" + supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib tls" # Local variables unset \ @@ -5249,6 +5277,18 @@ case "${target}" in with_multilib_list="${abi_base}/${abi_ext}" fi + # Handle --with-tls. + case "$with_tls" in + "" \ + | trad | desc) + # OK + ;; + *) + echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2 + exit 1 + ;; + esac + # Check if the configured default ABI combination is included in # ${with_multilib_list}. loongarch_multilib_list_sane=no @@ -5914,6 +5954,11 @@ case ${target} in lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;; esac + case ${with_tls} in + "" | trad) tm_defines="$tm_defines DEFAULT_TLS_TYPE=TLS_TRADITIONAL" ;; + desc) tm_defines="$tm_defines DEFAULT_TLS_TYPE=TLS_DESCRIPTORS" ;; + esac + tmake_file="loongarch/t-loongarch $tmake_file" ;; diff --git a/gcc/config/aarch64/aarch64-arches.def b/gcc/config/aarch64/aarch64-arches.def index 9bec30e9203b..4634b272e280 100644 --- a/gcc/config/aarch64/aarch64-arches.def +++ b/gcc/config/aarch64/aarch64-arches.def @@ -39,7 +39,7 @@ AARCH64_ARCH("armv8.5-a", generic_armv8_a, V8_5A, 8, (V8_4A, SB, SSBS AARCH64_ARCH("armv8.6-a", generic_armv8_a, V8_6A, 8, (V8_5A, I8MM, BF16)) AARCH64_ARCH("armv8.7-a", generic_armv8_a, V8_7A, 8, (V8_6A)) AARCH64_ARCH("armv8.8-a", generic_armv8_a, V8_8A, 8, (V8_7A, MOPS)) -AARCH64_ARCH("armv8.9-a", generic_armv8_a, V8_9A, 8, (V8_8A)) +AARCH64_ARCH("armv8.9-a", generic_armv8_a, V8_9A, 8, (V8_8A, CSSC)) AARCH64_ARCH("armv8-r", generic_armv8_a, V8R , 8, (V8_4A)) AARCH64_ARCH("armv9-a", generic_armv9_a, V9A , 9, (V8_5A, SVE2)) AARCH64_ARCH("armv9.1-a", generic_armv9_a, V9_1A, 9, (V8_6A, V9A)) diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc index c3bc8c490343..fe1a20e4e546 100644 --- a/gcc/config/aarch64/aarch64-c.cc +++ b/gcc/config/aarch64/aarch64-c.cc @@ -235,9 +235,9 @@ aarch64_update_cpp_builtins (cpp_reader *pfile) if (aarch_ra_sign_scope != AARCH_FUNCTION_NONE) { int v = 0; - if (aarch_ra_sign_key == AARCH_KEY_A) + if (aarch64_ra_sign_key == AARCH64_KEY_A) v |= 1; - if (aarch_ra_sign_key == AARCH_KEY_B) + if (aarch64_ra_sign_key == AARCH64_KEY_B) v |= 2; if (aarch_ra_sign_scope == AARCH_FUNCTION_ALL) v |= 4; @@ -344,15 +344,15 @@ aarch64_pragma_aarch64 (cpp_reader *) const char *name = TREE_STRING_POINTER (x); if (strcmp (name, "arm_sve.h") == 0) - aarch64_sve::handle_arm_sve_h (); + aarch64_sve::handle_arm_sve_h (false); else if (strcmp (name, "arm_sme.h") == 0) - aarch64_sve::handle_arm_sme_h (); + aarch64_sve::handle_arm_sme_h (false); else if (strcmp (name, "arm_neon.h") == 0) handle_arm_neon_h (); else if (strcmp (name, "arm_acle.h") == 0) handle_arm_acle_h (); else if (strcmp (name, "arm_neon_sve_bridge.h") == 0) - aarch64_sve::handle_arm_neon_sve_bridge_h (); + aarch64_sve::handle_arm_neon_sve_bridge_h (false); else error ("unknown %<#pragma GCC aarch64%> option %qs", name); } diff --git a/gcc/config/aarch64/aarch64-cores.def b/gcc/config/aarch64/aarch64-cores.def index 7ebefcf543b6..f69fc212d564 100644 --- a/gcc/config/aarch64/aarch64-cores.def +++ b/gcc/config/aarch64/aarch64-cores.def @@ -169,9 +169,9 @@ AARCH64_CORE("cortex-r82", cortexr82, cortexa53, V8R, (), cortexa53, 0x41, 0xd15 /* Armv9.0-A Architecture Processors. */ /* Arm ('A') cores. */ -AARCH64_CORE("cortex-a510", cortexa510, cortexa55, V9A, (SVE2_BITPERM, MEMTAG, I8MM, BF16), cortexa53, 0x41, 0xd46, -1) +AARCH64_CORE("cortex-a510", cortexa510, cortexa53, V9A, (SVE2_BITPERM, MEMTAG, I8MM, BF16), cortexa53, 0x41, 0xd46, -1) -AARCH64_CORE("cortex-a520", cortexa520, cortexa55, V9_2A, (SVE2_BITPERM, MEMTAG), cortexa53, 0x41, 0xd80, -1) +AARCH64_CORE("cortex-a520", cortexa520, cortexa53, V9_2A, (SVE2_BITPERM, MEMTAG), cortexa53, 0x41, 0xd80, -1) AARCH64_CORE("cortex-a710", cortexa710, cortexa57, V9A, (SVE2_BITPERM, MEMTAG, I8MM, BF16), neoversen2, 0x41, 0xd47, -1) diff --git a/gcc/config/aarch64/aarch64-feature-deps.h b/gcc/config/aarch64/aarch64-feature-deps.h index 3641badb82f5..79126db88254 100644 --- a/gcc/config/aarch64/aarch64-feature-deps.h +++ b/gcc/config/aarch64/aarch64-feature-deps.h @@ -71,9 +71,9 @@ template struct info; static constexpr auto enable = flag | get_enable REQUIRES; \ static constexpr auto explicit_on = enable | get_enable EXPLICIT_ON; \ }; \ - const aarch64_feature_flags info::flag; \ - const aarch64_feature_flags info::enable; \ - const aarch64_feature_flags info::explicit_on; \ + constexpr aarch64_feature_flags info::flag; \ + constexpr aarch64_feature_flags info::enable; \ + constexpr aarch64_feature_flags info::explicit_on; \ constexpr info IDENT () \ { \ return info (); \ diff --git a/gcc/config/aarch64/aarch64-gnu.h b/gcc/config/aarch64/aarch64-gnu.h new file mode 100644 index 000000000000..ee54940342d3 --- /dev/null +++ b/gcc/config/aarch64/aarch64-gnu.h @@ -0,0 +1,68 @@ +/* Definitions for AArch64 running GNU/Hurd. + Copyright (C) 2009-2024 Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + +#ifndef GCC_AARCH64_GNU_H +#define GCC_AARCH64_GNU_H + +#define GNU_USER_DYNAMIC_LINKER "/lib/ld-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" + +#define CPP_SPEC "%{pthread:-D_REENTRANT}" + +#define GNU_TARGET_LINK_SPEC "%{h*} \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ + %{!static:%{!static-pie: \ + %{rdynamic:-export-dynamic} \ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}} \ + %{static-pie:-Bstatic -pie --no-dynamic-linker -z text} \ + -X \ + %{mbig-endian:-EB} %{mlittle-endian:-EL} \ + -maarch64gnu%{mabi=ilp32:32}%{mbig-endian:b}" + + +#define LINK_SPEC GNU_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC + +#define GNU_USER_TARGET_MATHFILE_SPEC \ + "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + GNU_USER_TARGET_MATHFILE_SPEC " " \ + GNU_USER_TARGET_ENDFILE_SPEC + +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + GNU_USER_TARGET_OS_CPP_BUILTINS(); \ + } \ + while (0) + +#define TARGET_ASM_FILE_END aarch64_file_end_indicate_exec_stack + +/* Uninitialized common symbols in non-PIE executables, even with + strong definitions in dependent shared libraries, will resolve + to COPY relocated symbol in the executable. See PR65780. */ +#undef TARGET_BINDS_LOCAL_P +#define TARGET_BINDS_LOCAL_P default_binds_local_p_2 + +/* Define this to be nonzero if static stack checking is supported. */ +#define STACK_CHECK_STATIC_BUILTIN 1 + +#endif /* GCC_AARCH64_GNU_H */ diff --git a/gcc/config/aarch64/aarch64-ldp-fusion.cc b/gcc/config/aarch64/aarch64-ldp-fusion.cc index 22ed95eb743c..365dcf48b221 100644 --- a/gcc/config/aarch64/aarch64-ldp-fusion.cc +++ b/gcc/config/aarch64/aarch64-ldp-fusion.cc @@ -2138,7 +2138,7 @@ struct alias_walker { virtual bool conflict_p (int &budget) const = 0; virtual insn_info *insn () const = 0; - virtual bool valid () const = 0; + virtual bool valid () const = 0; virtual void advance () = 0; }; diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def index 1a3b91c68cf8..42ec0eec31e2 100644 --- a/gcc/config/aarch64/aarch64-option-extensions.def +++ b/gcc/config/aarch64/aarch64-option-extensions.def @@ -54,14 +54,14 @@ If a feature A appears in this list then the list implicitly includes any features that are transitively dependent on A (according to REQUIRES). - - 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 space (" ") separated list of the strings in 'Features' - that are required. Their order is not important. An empty string means - do not detect this feature during auto detection. + - FEATURE_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 space (" ") separated list of the strings + in 'Features' that are required. Their order is not important. An empty + string means do not detect this feature during auto detection. - OPT_FLAGS is a list of feature IDENTS that should be enabled (along with their transitive dependencies) when the specified FMV feature is present. @@ -99,17 +99,15 @@ AARCH64_OPT_EXTENSION(NAME, IDENT, REQUIRES, EXPLICIT_ON, EXPLICIT_OFF, \ AARCH64_FMV_FEATURE(NAME, IDENT, (IDENT)) -AARCH64_OPT_EXTENSION("fp", FP, (), (), (), "fp") - -AARCH64_OPT_EXTENSION("simd", SIMD, (FP), (), (), "asimd") - AARCH64_OPT_FMV_EXTENSION("rng", RNG, (), (), (), "rng") AARCH64_OPT_FMV_EXTENSION("flagm", FLAGM, (), (), (), "flagm") -AARCH64_FMV_FEATURE("flagm2", FLAGM2, (FLAGM)) +AARCH64_OPT_FMV_EXTENSION("lse", LSE, (), (), (), "atomics") -AARCH64_FMV_FEATURE("fp16fml", FP16FML, (F16FML)) +AARCH64_OPT_FMV_EXTENSION("fp", FP, (), (), (), "fp") + +AARCH64_OPT_FMV_EXTENSION("simd", SIMD, (FP), (), (), "asimd") AARCH64_OPT_FMV_EXTENSION("dotprod", DOTPROD, (SIMD), (), (), "asimddp") @@ -117,28 +115,19 @@ AARCH64_OPT_FMV_EXTENSION("sm4", SM4, (SIMD), (), (), "sm3 sm4") /* An explicit +rdma implies +simd, but +rdma+nosimd still enables scalar RDMA instructions. */ -AARCH64_OPT_EXTENSION("rdma", RDMA, (), (SIMD), (), "asimdrdm") - -AARCH64_FMV_FEATURE("rmd", RDM, (RDMA)) - -AARCH64_OPT_FMV_EXTENSION("lse", LSE, (), (), (), "atomics") - -AARCH64_FMV_FEATURE("fp", FP, (FP)) +AARCH64_OPT_FMV_EXTENSION("rdma", RDMA, (), (SIMD), (), "asimdrdm") -AARCH64_FMV_FEATURE("simd", SIMD, (SIMD)) +/* rdm is an alias for rdma. */ +AARCH64_FMV_FEATURE("rdm", RDM, (RDMA)) AARCH64_OPT_FMV_EXTENSION("crc", CRC, (), (), (), "crc32") -AARCH64_FMV_FEATURE("sha1", SHA1, ()) - AARCH64_OPT_FMV_EXTENSION("sha2", SHA2, (SIMD), (), (), "sha1 sha2") AARCH64_FMV_FEATURE("sha3", SHA3, (SHA3)) AARCH64_OPT_FMV_EXTENSION("aes", AES, (SIMD), (), (), "aes") -AARCH64_FMV_FEATURE("pmull", PMULL, ()) - /* +nocrypto disables AES, SHA2 and SM4, and anything that depends on them (such as SHA3 and the SVE2 crypto extensions). */ AARCH64_OPT_EXTENSION("crypto", CRYPTO, (AES, SHA2), (), (AES, SHA2, SM4), @@ -160,25 +149,11 @@ AARCH64_FMV_FEATURE("fp16", FP16, (F16)) -march=armv8.4-a+nofp16+fp16 enables F16 but not F16FML. */ AARCH64_OPT_EXTENSION("fp16fml", F16FML, (), (F16), (), "asimdfhm") -AARCH64_FMV_FEATURE("dit", DIT, ()) - -AARCH64_FMV_FEATURE("dpb", DPB, ()) - -AARCH64_FMV_FEATURE("dpb2", DPB2, ()) - -AARCH64_FMV_FEATURE("jscvt", JSCVT, ()) - -AARCH64_FMV_FEATURE("fcma", FCMA, (SIMD)) +AARCH64_FMV_FEATURE("fp16fml", FP16FML, (F16FML)) AARCH64_OPT_FMV_EXTENSION("rcpc", RCPC, (), (), (), "lrcpc") -AARCH64_FMV_FEATURE("rcpc2", RCPC2, (RCPC)) - -AARCH64_OPT_FMV_EXTENSION("rcpc3", RCPC3, (), (), (), "rcpc3") - -AARCH64_FMV_FEATURE("frintts", FRINTTS, ()) - -AARCH64_FMV_FEATURE("dgh", DGH, ()) +AARCH64_OPT_FMV_EXTENSION("rcpc3", RCPC3, (RCPC), (), (), "lrcpc3") AARCH64_OPT_FMV_EXTENSION("i8mm", I8MM, (SIMD), (), (), "i8mm") @@ -186,18 +161,10 @@ AARCH64_OPT_FMV_EXTENSION("i8mm", I8MM, (SIMD), (), (), "i8mm") instructions. */ AARCH64_OPT_FMV_EXTENSION("bf16", BF16, (FP), (SIMD), (), "bf16") -AARCH64_FMV_FEATURE("ebf16", EBF16, (BF16)) - AARCH64_FMV_FEATURE("rpres", RPRES, ()) AARCH64_OPT_FMV_EXTENSION("sve", SVE, (SIMD, F16), (), (), "sve") -AARCH64_FMV_FEATURE("sve-bf16", SVE_BF16, (SVE, BF16)) - -AARCH64_FMV_FEATURE("sve-ebf16", SVE_EBF16, (SVE, BF16)) - -AARCH64_FMV_FEATURE("sve-i8mm", SVE_I8MM, (SVE, I8MM)) - AARCH64_OPT_EXTENSION("f32mm", F32MM, (SVE), (), (), "f32mm") AARCH64_FMV_FEATURE("f32mm", SVE_F32MM, (F32MM)) @@ -212,8 +179,6 @@ AARCH64_OPT_EXTENSION("sve2-aes", SVE2_AES, (SVE2, AES), (), (), "sveaes") AARCH64_FMV_FEATURE("sve2-aes", SVE_AES, (SVE2_AES)) -AARCH64_FMV_FEATURE("sve2-pmull128", SVE_PMULL128, (SVE2)) - AARCH64_OPT_EXTENSION("sve2-bitperm", SVE2_BITPERM, (SVE2), (), (), "svebitperm") @@ -229,21 +194,13 @@ AARCH64_FMV_FEATURE("sve2-sm4", SVE_SM4, (SVE2_SM4)) AARCH64_OPT_FMV_EXTENSION("sme", SME, (BF16, SVE2), (), (), "sme") -AARCH64_OPT_FMV_EXTENSION("memtag", MEMTAG, (), (), (), "") - -AARCH64_FMV_FEATURE("memtag2", MEMTAG2, (MEMTAG)) - -AARCH64_FMV_FEATURE("memtag3", MEMTAG3, (MEMTAG)) +AARCH64_OPT_EXTENSION("memtag", MEMTAG, (), (), (), "") AARCH64_OPT_FMV_EXTENSION("sb", SB, (), (), (), "sb") AARCH64_OPT_FMV_EXTENSION("predres", PREDRES, (), (), (), "") -AARCH64_OPT_FMV_EXTENSION("ssbs", SSBS, (), (), (), "ssbs") - -AARCH64_FMV_FEATURE("ssbs2", SSBS2, (SSBS)) - -AARCH64_FMV_FEATURE("bti", BTI, ()) +AARCH64_OPT_EXTENSION("ssbs", SSBS, (), (), (), "ssbs") AARCH64_OPT_EXTENSION("profile", PROFILE, (), (), (), "") @@ -253,14 +210,6 @@ AARCH64_OPT_EXTENSION("pauth", PAUTH, (), (), (), "paca pacg") AARCH64_OPT_EXTENSION("ls64", LS64, (), (), (), "") -AARCH64_FMV_FEATURE("ls64", LS64, ()) - -AARCH64_FMV_FEATURE("ls64_v", LS64_V, ()) - -AARCH64_FMV_FEATURE("ls64_accdata", LS64_ACCDATA, (LS64)) - -AARCH64_FMV_FEATURE("wfxt", WFXT, ()) - AARCH64_OPT_EXTENSION("sme-f64f64", SME_F64F64, (SME), (), (), "") AARCH64_FMV_FEATURE("sme-f64f64", SME_F64, (SME_F64F64)) @@ -275,7 +224,9 @@ AARCH64_OPT_EXTENSION("mops", MOPS, (), (), (), "") AARCH64_OPT_EXTENSION("cssc", CSSC, (), (), (), "cssc") -AARCH64_OPT_EXTENSION("d128", D128, (), (), (), "d128") +AARCH64_OPT_EXTENSION("lse128", LSE128, (LSE), (), (), "lse128") + +AARCH64_OPT_EXTENSION("d128", D128, (LSE128), (), (), "d128") AARCH64_OPT_EXTENSION("the", THE, (), (), (), "the") diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index bd719b992a54..42639e9efcf1 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -1014,9 +1014,9 @@ bool aarch64_general_check_builtin_call (location_t, vec, namespace aarch64_sve { void init_builtins (); - void handle_arm_sve_h (); - void handle_arm_sme_h (); - void handle_arm_neon_sve_bridge_h (); + void handle_arm_sve_h (bool); + void handle_arm_sme_h (bool); + void handle_arm_neon_sve_bridge_h (bool); tree builtin_decl (unsigned, bool); bool builtin_type_p (const_tree); bool builtin_type_p (const_tree, unsigned int *, unsigned int *); diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc index a8c3f84a70b5..0d2edf3f19e1 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc @@ -47,11 +47,31 @@ #include "aarch64-builtins.h" #include "ssa.h" #include "gimple-fold.h" +#include "tree-ssa.h" using namespace aarch64_sve; namespace { +/* Return true if VAL is an undefined value. */ +static bool +is_undef (tree val) +{ + if (TREE_CODE (val) == SSA_NAME) + { + if (ssa_undefined_value_p (val, false)) + return true; + + gimple *def = SSA_NAME_DEF_STMT (val); + if (gcall *call = dyn_cast (def)) + if (tree fndecl = gimple_call_fndecl (call)) + if (const function_instance *instance = lookup_fndecl (fndecl)) + if (instance->base == functions::svundef) + return true; + } + return false; +} + /* Return the UNSPEC_CMLA* unspec for rotation amount ROT. */ static int unspec_cmla (int rot) @@ -497,15 +517,22 @@ class svcnot_impl : public function_base expand (function_expander &e) const override { machine_mode mode = e.vector_mode (0); - if (e.pred == PRED_x) - { - /* The pattern for CNOT includes an UNSPEC_PRED_Z, so needs - a ptrue hint. */ - e.add_ptrue_hint (0, e.gp_mode (0)); - return e.use_pred_x_insn (code_for_aarch64_pred_cnot (mode)); - } + machine_mode pred_mode = e.gp_mode (0); + /* The underlying _x pattern is effectively: + + dst = src == 0 ? 1 : 0 + + rather than an UNSPEC_PRED_X. Using this form allows autovec + constructs to be matched by combine, but it means that the + predicate on the src == 0 comparison must be all-true. - return e.use_cond_insn (code_for_cond_cnot (mode), 0); + For simplicity, represent other _x operations as fully-defined _m + operations rather than using a separate bespoke pattern. */ + if (e.pred == PRED_x + && gen_lowpart (pred_mode, e.args[0]) == CONSTM1_RTX (pred_mode)) + return e.use_pred_x_insn (code_for_aarch64_ptrue_cnot (mode)); + return e.use_cond_insn (code_for_cond_cnot (mode), + e.pred == PRED_x ? 1 : 0); } }; @@ -1142,6 +1169,13 @@ class svset_neonq_impl : public function_base expand (function_expander &e) const override { machine_mode mode = e.vector_mode (0); + + /* If the SVE argument is undefined, we just need to reinterpret the + Advanced SIMD argument as an SVE vector. */ + if (!BYTES_BIG_ENDIAN + && is_undef (CALL_EXPR_ARG (e.call_expr, 0))) + return simplify_gen_subreg (mode, e.args[1], GET_MODE (e.args[1]), 0); + rtx_vector_builder builder (VNx16BImode, 16, 2); for (unsigned int i = 0; i < 16; i++) builder.quick_push (CONST1_RTX (BImode)); @@ -2775,7 +2809,7 @@ class svusdot_impl : public function_base version) is through the USDOT instruction but with the second and third inputs swapped. */ if (m_su) - e.rotate_inputs_left (1, 2); + e.rotate_inputs_left (1, 3); /* The ACLE function has the same order requirements as for svdot. While there's no requirement for the RTL pattern to have the same sort of order as that for dot_prod, it's easier to read. diff --git a/gcc/config/aarch64/aarch64-sve-builtins.cc b/gcc/config/aarch64/aarch64-sve-builtins.cc index 11f5c5c500c8..f3983a123e35 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins.cc @@ -933,14 +933,19 @@ tree acle_svprfop; /* The list of all registered function decls, indexed by code. */ static GTY(()) vec *registered_functions; +/* Stores the starting function index for each pragma handler. */ +static unsigned int initial_indexes[NUM_PRAGMA_HANDLERS]; + /* All registered function decls, hashed on the function_instance that they implement. This is used for looking up implementations of overloaded functions. */ static hash_table *function_table; -/* Maps all overloaded function names that we've registered so far to - their associated function_instances. The map keys are IDENTIFIER_NODEs. */ -static GTY(()) hash_map *overload_names; +/* Index 0 maps all overloaded function names that we've registered so far to + their associated function_instances. Index 1 does the same for functions + that we've skipped over without registering. In both cases, the map keys + are IDENTIFIER_NODEs. */ +static GTY(()) hash_map *overload_names[2]; /* True if we've already complained about attempts to use functions when the required extension is disabled. */ @@ -1055,6 +1060,22 @@ get_vector_type (sve_type type) return acle_vector_types[type.num_vectors - 1][vector_type]; } +/* If FNDECL is an SVE builtin, return its function instance, otherwise + return null. */ +const function_instance * +lookup_fndecl (tree fndecl) +{ + if (!fndecl_built_in_p (fndecl, BUILT_IN_MD)) + return nullptr; + + unsigned int code = DECL_MD_FUNCTION_CODE (fndecl); + if ((code & AARCH64_BUILTIN_CLASS) != AARCH64_BUILTIN_SVE) + return nullptr; + + unsigned int subcode = code >> AARCH64_BUILTIN_SHIFT; + return &(*registered_functions)[subcode]->instance; +} + /* Report an error against LOCATION that the user has tried to use function FNDECL when extension EXTENSION is disabled. */ static void @@ -1332,10 +1353,21 @@ sve_switcher::~sve_switcher () maximum_field_alignment = m_old_maximum_field_alignment; } -function_builder::function_builder () +function_builder::function_builder (handle_pragma_index pragma_index, + bool function_nulls) { m_overload_type = build_function_type (void_type_node, void_list_node); m_direct_overloads = lang_GNU_CXX (); + + if (initial_indexes[pragma_index] == 0) + { + unsigned int index = vec_safe_length (registered_functions); + initial_indexes[pragma_index] = index; + } + + m_function_index = initial_indexes[pragma_index]; + m_function_nulls = function_nulls; + gcc_obstack_init (&m_string_obstack); } @@ -1499,9 +1531,8 @@ function_builder::add_function (const function_instance &instance, bool overloaded_p, bool placeholder_p) { - unsigned int code = vec_safe_length (registered_functions); - code = (code << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_SVE; - + unsigned int length = vec_safe_length (registered_functions); + unsigned int code = (m_function_index << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_SVE; /* We need to be able to generate placeholders to enusre that we have a consistent numbering scheme for function codes between the C and C++ frontends, so that everything ties up in LTO. @@ -1515,7 +1546,7 @@ function_builder::add_function (const function_instance &instance, nodes and remove the target hook. For now, however, we need to appease the validation and return a non-NULL, non-error_mark_node node, so we arbitrarily choose integer_zero_node. */ - tree decl = placeholder_p + tree decl = placeholder_p || m_function_nulls ? integer_zero_node : simulate_builtin_function_decl (input_location, name, fntype, code, NULL, attrs); @@ -1525,7 +1556,11 @@ function_builder::add_function (const function_instance &instance, rfn.decl = decl; rfn.required_extensions = required_extensions; rfn.overloaded_p = overloaded_p; - vec_safe_push (registered_functions, &rfn); + if (m_function_index >= length) + vec_safe_push (registered_functions, &rfn); + else + (*registered_functions)[m_function_index] = &rfn; + m_function_index++; return rfn; } @@ -1554,11 +1589,14 @@ add_unique_function (const function_instance &instance, required_extensions, false, false); /* Enter the function into the hash table. */ - hashval_t hash = instance.hash (); - registered_function **rfn_slot - = function_table->find_slot_with_hash (instance, hash, INSERT); - gcc_assert (!*rfn_slot); - *rfn_slot = &rfn; + if (!m_function_nulls) + { + hashval_t hash = instance.hash (); + registered_function **rfn_slot + = function_table->find_slot_with_hash (instance, hash, INSERT); + gcc_assert (!*rfn_slot); + *rfn_slot = &rfn; + } /* Also add the function under its overloaded alias, if we want a separate decl for each instance of an overloaded function. */ @@ -1589,12 +1627,13 @@ function_builder:: add_overloaded_function (const function_instance &instance, aarch64_feature_flags required_extensions) { - if (!overload_names) - overload_names = hash_map::create_ggc (); + auto &name_map = overload_names[m_function_nulls]; + if (!name_map) + name_map = hash_map::create_ggc (); char *name = get_name (instance, true); tree id = get_identifier (name); - if (registered_function **map_value = overload_names->get (id)) + if (registered_function **map_value = name_map->get (id)) gcc_assert ((*map_value)->instance == instance && ((*map_value)->required_extensions & ~required_extensions) == 0); @@ -1603,7 +1642,7 @@ add_overloaded_function (const function_instance &instance, registered_function &rfn = add_function (instance, name, m_overload_type, NULL_TREE, required_extensions, true, m_direct_overloads); - overload_names->put (id, &rfn); + name_map->put (id, &rfn); } obstack_free (&m_string_obstack, name); } @@ -4510,9 +4549,9 @@ init_builtins () register_builtin_types (); if (in_lto_p) { - handle_arm_sve_h (); - handle_arm_sme_h (); - handle_arm_neon_sve_bridge_h (); + handle_arm_sve_h (false); + handle_arm_sme_h (false); + handle_arm_neon_sve_bridge_h (false); } } @@ -4614,7 +4653,7 @@ register_svprfop () /* Implement #pragma GCC aarch64 "arm_sve.h". */ void -handle_arm_sve_h () +handle_arm_sve_h (bool function_nulls_p) { if (function_table) { @@ -4641,17 +4680,20 @@ handle_arm_sve_h () /* Define the functions. */ function_table = new hash_table (1023); - function_builder builder; + function_builder builder (arm_sve_handle, function_nulls_p); for (unsigned int i = 0; i < ARRAY_SIZE (function_groups); ++i) builder.register_function_group (function_groups[i]); } /* Implement #pragma GCC aarch64 "arm_neon_sve_bridge.h". */ void -handle_arm_neon_sve_bridge_h () +handle_arm_neon_sve_bridge_h (bool function_nulls_p) { + if (initial_indexes[arm_sme_handle] == 0) + handle_arm_sme_h (true); + /* Define the functions. */ - function_builder builder; + function_builder builder (arm_neon_sve_handle, function_nulls_p); for (unsigned int i = 0; i < ARRAY_SIZE (neon_sve_function_groups); ++i) builder.register_function_group (neon_sve_function_groups[i]); } @@ -4668,7 +4710,7 @@ builtin_decl (unsigned int code, bool) /* Implement #pragma GCC aarch64 "arm_sme.h". */ void -handle_arm_sme_h () +handle_arm_sme_h (bool function_nulls_p) { if (!function_table) { @@ -4677,17 +4719,9 @@ handle_arm_sme_h () return; } - static bool initialized_p; - if (initialized_p) - { - error ("duplicate definition of %qs", "arm_sme.h"); - return; - } - initialized_p = true; - sme_switcher sme; - function_builder builder; + function_builder builder (arm_sme_handle, function_nulls_p); for (unsigned int i = 0; i < ARRAY_SIZE (sme_function_groups); ++i) builder.register_function_group (sme_function_groups[i]); } diff --git a/gcc/config/aarch64/aarch64-sve-builtins.h b/gcc/config/aarch64/aarch64-sve-builtins.h index e66729ed6353..9cc07d5fa3de 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins.h +++ b/gcc/config/aarch64/aarch64-sve-builtins.h @@ -123,6 +123,15 @@ enum units_index UNITS_vectors }; +/* Enumerates the pragma handlers. */ +enum handle_pragma_index +{ + arm_sve_handle, + arm_sme_handle, + arm_neon_sve_handle, + NUM_PRAGMA_HANDLERS +}; + /* Describes the various uses of a governing predicate. */ enum predication_index { @@ -419,7 +428,7 @@ class registered_function; class function_builder { public: - function_builder (); + function_builder (handle_pragma_index, bool); ~function_builder (); void add_unique_function (const function_instance &, tree, @@ -453,6 +462,12 @@ class function_builder /* Used for building up function names. */ obstack m_string_obstack; + + /* Used to store the index for the current function. */ + unsigned int m_function_index; + + /* Stores the mode of the current pragma handler. */ + bool m_function_nulls; }; /* A base class for handling calls to built-in functions. */ @@ -810,6 +825,7 @@ extern tree acle_svprfop; bool vector_cst_all_same (tree, unsigned int); bool is_ptrue (tree, unsigned int); +const function_instance *lookup_fndecl (tree); /* Try to find a mode with the given mode_suffix_info fields. Return the mode on success or MODE_none on failure. */ diff --git a/gcc/config/aarch64/aarch64-sve.md b/gcc/config/aarch64/aarch64-sve.md index eca8623e587a..0434358122d2 100644 --- a/gcc/config/aarch64/aarch64-sve.md +++ b/gcc/config/aarch64/aarch64-sve.md @@ -3363,24 +3363,24 @@ ;; - CNOT ;; ------------------------------------------------------------------------- -;; Predicated logical inverse. -(define_expand "@aarch64_pred_cnot" +;; Logical inverse, predicated with a ptrue. +(define_expand "@aarch64_ptrue_cnot" [(set (match_operand:SVE_FULL_I 0 "register_operand") (unspec:SVE_FULL_I [(unspec: [(match_operand: 1 "register_operand") - (match_operand:SI 2 "aarch64_sve_ptrue_flag") + (const_int SVE_KNOWN_PTRUE) (eq: - (match_operand:SVE_FULL_I 3 "register_operand") - (match_dup 4))] + (match_operand:SVE_FULL_I 2 "register_operand") + (match_dup 3))] UNSPEC_PRED_Z) - (match_dup 5) - (match_dup 4)] + (match_dup 4) + (match_dup 3)] UNSPEC_SEL))] "TARGET_SVE" { - operands[4] = CONST0_RTX (mode); - operands[5] = CONST1_RTX (mode); + operands[3] = CONST0_RTX (mode); + operands[4] = CONST1_RTX (mode); } ) @@ -3389,7 +3389,7 @@ (unspec:SVE_I [(unspec: [(match_operand: 1 "register_operand") - (match_operand:SI 5 "aarch64_sve_ptrue_flag") + (const_int SVE_KNOWN_PTRUE) (eq: (match_operand:SVE_I 2 "register_operand") (match_operand:SVE_I 3 "aarch64_simd_imm_zero"))] @@ -11001,4 +11001,4 @@ GET_MODE (operands[2])); return "sel\t%0., %3, %2., %1."; } -) \ No newline at end of file +) diff --git a/gcc/config/aarch64/aarch64-sys-regs.def b/gcc/config/aarch64/aarch64-sys-regs.def index 6a948171d6e4..8b65673a5d60 100644 --- a/gcc/config/aarch64/aarch64-sys-regs.def +++ b/gcc/config/aarch64/aarch64-sys-regs.def @@ -521,6 +521,7 @@ SYSREG ("id_aa64isar0_el1", CPENC (3,0,0,6,0), F_REG_READ, AARCH64_NO_FEATURES) SYSREG ("id_aa64isar1_el1", CPENC (3,0,0,6,1), F_REG_READ, AARCH64_NO_FEATURES) SYSREG ("id_aa64isar2_el1", CPENC (3,0,0,6,2), F_REG_READ, AARCH64_NO_FEATURES) + SYSREG ("id_aa64isar3_el1", CPENC (3,0,0,6,3), F_REG_READ, AARCH64_NO_FEATURES) SYSREG ("id_aa64mmfr0_el1", CPENC (3,0,0,7,0), F_REG_READ, AARCH64_NO_FEATURES) SYSREG ("id_aa64mmfr1_el1", CPENC (3,0,0,7,1), F_REG_READ, AARCH64_NO_FEATURES) SYSREG ("id_aa64mmfr2_el1", CPENC (3,0,0,7,2), F_REG_READ, AARCH64_NO_FEATURES) diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 0a28e033088a..1beec94629d1 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -6583,6 +6583,7 @@ aarch64_return_in_memory_1 (const_tree type) int count; if (!AGGREGATE_TYPE_P (type) + && TREE_CODE (type) != BITINT_TYPE && TREE_CODE (type) != COMPLEX_TYPE && TREE_CODE (type) != VECTOR_TYPE) /* Simple scalar types always returned in registers. */ @@ -6744,6 +6745,37 @@ aarch64_function_arg_alignment (machine_mode mode, const_tree type, return alignment; } +/* Return true if TYPE describes a _BitInt(N) or an angreggate that uses the + _BitInt(N) type. These include ARRAY_TYPE's with an element that is a + _BitInt(N) or an aggregate that uses it, and a RECORD_TYPE or a UNION_TYPE + with a field member that is a _BitInt(N) or an aggregate that uses it. + Return false otherwise. */ + +static bool +bitint_or_aggr_of_bitint_p (tree type) +{ + if (!type) + return false; + + if (TREE_CODE (type) == BITINT_TYPE) + return true; + + /* If ARRAY_TYPE, check it's element type. */ + if (TREE_CODE (type) == ARRAY_TYPE) + return bitint_or_aggr_of_bitint_p (TREE_TYPE (type)); + + /* If RECORD_TYPE or UNION_TYPE, check the fields' types. */ + if (RECORD_OR_UNION_TYPE_P (type)) + for (tree field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) + { + if (TREE_CODE (field) != FIELD_DECL) + continue; + if (bitint_or_aggr_of_bitint_p (TREE_TYPE (field))) + return true; + } + return false; +} + /* Layout a function argument according to the AAPCS64 rules. The rule numbers refer to the rule numbers in the AAPCS64. ORIG_MODE is the mode that was originally given to us by the target hook, whereas the @@ -6907,6 +6939,10 @@ aarch64_layout_arg (cumulative_args_t pcum_v, const function_arg_info &arg) && (!alignment || abi_break_gcc_9 < alignment) && (!abi_break_gcc_13 || alignment < abi_break_gcc_13)); + /* _BitInt(N) was only added in GCC 14. */ + bool warn_pcs_change_le_gcc14 + = warn_pcs_change && !bitint_or_aggr_of_bitint_p (type); + /* allocate_ncrn may be false-positive, but allocate_nvrn is quite reliable. The following code thus handles passing by SIMD/FP registers first. */ @@ -6978,14 +7014,14 @@ aarch64_layout_arg (cumulative_args_t pcum_v, const function_arg_info &arg) { /* Emit a warning if the alignment changed when taking the 'packed' attribute into account. */ - if (warn_pcs_change + if (warn_pcs_change_le_gcc14 && abi_break_gcc_13 && ((abi_break_gcc_13 == 16 * BITS_PER_UNIT) != (alignment == 16 * BITS_PER_UNIT))) inform (input_location, "parameter passing for argument of type " "%qT changed in GCC 13.1", type); - if (warn_pcs_change + if (warn_pcs_change_le_gcc14 && abi_break_gcc_14 && ((abi_break_gcc_14 == 16 * BITS_PER_UNIT) != (alignment == 16 * BITS_PER_UNIT))) @@ -6998,7 +7034,8 @@ aarch64_layout_arg (cumulative_args_t pcum_v, const function_arg_info &arg) passed by reference rather than value. */ if (alignment == 16 * BITS_PER_UNIT) { - if (warn_pcs_change && abi_break_gcc_9) + if (warn_pcs_change_le_gcc14 + && abi_break_gcc_9) inform (input_location, "parameter passing for argument of type " "%qT changed in GCC 9.1", type); ++ncrn; @@ -7056,14 +7093,14 @@ aarch64_layout_arg (cumulative_args_t pcum_v, const function_arg_info &arg) on_stack: pcum->aapcs_stack_words = size / UNITS_PER_WORD; - if (warn_pcs_change + if (warn_pcs_change_le_gcc14 && abi_break_gcc_13 && ((abi_break_gcc_13 >= 16 * BITS_PER_UNIT) != (alignment >= 16 * BITS_PER_UNIT))) inform (input_location, "parameter passing for argument of type " "%qT changed in GCC 13.1", type); - if (warn_pcs_change + if (warn_pcs_change_le_gcc14 && abi_break_gcc_14 && ((abi_break_gcc_14 >= 16 * BITS_PER_UNIT) != (alignment >= 16 * BITS_PER_UNIT))) @@ -7075,7 +7112,8 @@ aarch64_layout_arg (cumulative_args_t pcum_v, const function_arg_info &arg) int new_size = ROUND_UP (pcum->aapcs_stack_size, 16 / UNITS_PER_WORD); if (pcum->aapcs_stack_size != new_size) { - if (warn_pcs_change && abi_break_gcc_9) + if (warn_pcs_change_le_gcc14 + && abi_break_gcc_9) inform (input_location, "parameter passing for argument of type " "%qT changed in GCC 9.1", type); pcum->aapcs_stack_size = new_size; @@ -9541,12 +9579,12 @@ aarch64_expand_prologue (void) /* Sign return address for functions. */ if (aarch64_return_address_signing_enabled ()) { - switch (aarch_ra_sign_key) + switch (aarch64_ra_sign_key) { - case AARCH_KEY_A: + case AARCH64_KEY_A: insn = emit_insn (gen_paciasp ()); break; - case AARCH_KEY_B: + case AARCH64_KEY_B: insn = emit_insn (gen_pacibsp ()); break; default: @@ -9962,12 +10000,12 @@ aarch64_expand_epilogue (rtx_call_insn *sibcall) if (aarch64_return_address_signing_enabled () && (sibcall || !TARGET_ARMV8_3)) { - switch (aarch_ra_sign_key) + switch (aarch64_ra_sign_key) { - case AARCH_KEY_A: + case AARCH64_KEY_A: insn = emit_insn (gen_autiasp ()); break; - case AARCH_KEY_B: + case AARCH64_KEY_B: insn = emit_insn (gen_autibsp ()); break; default: @@ -13172,29 +13210,33 @@ aarch64_output_sme_zero_za (rtx mask) /* The last entry in the list has the form "za7.d }", but that's the same length as "za7.d, ". */ static char buffer[sizeof("zero\t{ ") + sizeof ("za7.d, ") * 8 + 1]; - unsigned int i = 0; - i += snprintf (buffer + i, sizeof (buffer) - i, "zero\t"); - const char *prefix = "{ "; for (auto &tile : tiles) { unsigned int tile_mask = tile.mask; unsigned int tile_index = 0; + unsigned int i = snprintf (buffer, sizeof (buffer), "zero\t"); + const char *prefix = "{ "; + auto remaining_mask = mask_val; while (tile_mask < 0x100) { - if ((mask_val & tile_mask) == tile_mask) + if ((remaining_mask & tile_mask) == tile_mask) { i += snprintf (buffer + i, sizeof (buffer) - i, "%sza%d.%c", prefix, tile_index, tile.letter); prefix = ", "; - mask_val &= ~tile_mask; + remaining_mask &= ~tile_mask; } tile_mask <<= 1; tile_index += 1; } + if (remaining_mask == 0) + { + gcc_assert (i + 3 <= sizeof (buffer)); + snprintf (buffer + i, sizeof (buffer) - i, " }"); + return buffer; + } } - gcc_assert (mask_val == 0 && i + 3 <= sizeof (buffer)); - snprintf (buffer + i, sizeof (buffer) - i, " }"); - return buffer; + gcc_unreachable (); } /* Return size in bits of an arithmetic operand which is shifted/scaled and @@ -18689,6 +18731,62 @@ aarch64_set_asm_isa_flags (aarch64_feature_flags flags) aarch64_set_asm_isa_flags (&global_options, flags); } +static void +aarch64_handle_no_branch_protection (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_NONE; + aarch_enable_bti = 0; +} + +static void +aarch64_handle_standard_branch_protection (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF; + aarch64_ra_sign_key = AARCH64_KEY_A; + aarch_enable_bti = 1; +} + +static void +aarch64_handle_pac_ret_protection (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF; + aarch64_ra_sign_key = AARCH64_KEY_A; +} + +static void +aarch64_handle_pac_ret_leaf (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_ALL; +} + +static void +aarch64_handle_pac_ret_b_key (void) +{ + aarch64_ra_sign_key = AARCH64_KEY_B; +} + +static void +aarch64_handle_bti_protection (void) +{ + aarch_enable_bti = 1; +} + +static const struct aarch_branch_protect_type aarch64_pac_ret_subtypes[] = { + { "leaf", false, aarch64_handle_pac_ret_leaf, NULL, 0 }, + { "b-key", false, aarch64_handle_pac_ret_b_key, NULL, 0 }, + { NULL, false, NULL, NULL, 0 } +}; + +static const struct aarch_branch_protect_type aarch64_branch_protect_types[] = +{ + { "none", true, aarch64_handle_no_branch_protection, NULL, 0 }, + { "standard", true, aarch64_handle_standard_branch_protection, NULL, 0 }, + { "pac-ret", false, aarch64_handle_pac_ret_protection, + aarch64_pac_ret_subtypes, ARRAY_SIZE (aarch64_pac_ret_subtypes) }, + { "bti", false, aarch64_handle_bti_protection, NULL, 0 }, + { NULL, false, NULL, NULL, 0 } +}; + /* Implement TARGET_OPTION_OVERRIDE. This is called once in the beginning and is used to parse the -m{cpu,tune,arch} strings and setup the initial tuning structs. In particular it must set selected_tune and @@ -18711,7 +18809,8 @@ aarch64_override_options (void) aarch64_validate_sls_mitigation (aarch64_harden_sls_string); if (aarch64_branch_protection_string) - aarch_validate_mbranch_protection (aarch64_branch_protection_string, + aarch_validate_mbranch_protection (aarch64_branch_protect_types, + aarch64_branch_protection_string, "-mbranch-protection="); /* -mcpu=CPU is shorthand for -march=ARCH_FOR_CPU, -mtune=CPU. @@ -19149,7 +19248,7 @@ aarch64_handle_attr_cpu (const char *str) static bool aarch64_handle_attr_branch_protection (const char* str) { - return aarch_validate_mbranch_protection (str, + return aarch_validate_mbranch_protection (aarch64_branch_protect_types, str, "target(\"branch-protection=\")"); } @@ -19600,6 +19699,10 @@ typedef struct #define AARCH64_FMV_FEATURE(NAME, FEAT_NAME, C) \ {NAME, 1ULL << FEAT_##FEAT_NAME, ::feature_deps::fmv_deps_##FEAT_NAME}, +/* The "rdma" alias uses a different FEAT_NAME to avoid a duplicate + feature_deps name. */ +#define FEAT_RDMA FEAT_RDM + /* FMV features are listed in priority order, to make it easier to sort target strings. */ static aarch64_fmv_feature_datum aarch64_fmv_feature_data[] = { @@ -19643,7 +19746,7 @@ aarch64_parse_fmv_features (const char *str, aarch64_feature_flags *isa_flags, if (len == 0) return AARCH_PARSE_MISSING_ARG; - static const int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); + int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); int i; for (i = 0; i < num_features; i++) { @@ -19842,7 +19945,8 @@ compare_feature_masks (aarch64_fmv_feature_mask mask1, auto diff_mask = mask1 ^ mask2; if (diff_mask == 0ULL) return 0; - for (int i = FEAT_MAX - 1; i > 0; i--) + int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); + for (int i = num_features - 1; i >= 0; i--) { auto bit_mask = aarch64_fmv_feature_data[i].feature_mask; if (diff_mask & bit_mask) @@ -19925,7 +20029,8 @@ aarch64_mangle_decl_assembler_name (tree decl, tree id) name += "._"; - for (int i = 0; i < FEAT_MAX; i++) + int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); + for (int i = 0; i < num_features; i++) { if (feature_mask & aarch64_fmv_feature_data[i].feature_mask) { @@ -21209,19 +21314,25 @@ aarch64_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p, rsize = ROUND_UP (size, UNITS_PER_WORD); nregs = rsize / UNITS_PER_WORD; - if (align <= 8 && abi_break_gcc_13 && warn_psabi) + if (align <= 8 + && abi_break_gcc_13 + && warn_psabi + && !bitint_or_aggr_of_bitint_p (type)) inform (input_location, "parameter passing for argument of type " "%qT changed in GCC 13.1", type); if (warn_psabi && abi_break_gcc_14 - && (abi_break_gcc_14 > 8 * BITS_PER_UNIT) != (align > 8)) + && (abi_break_gcc_14 > 8 * BITS_PER_UNIT) != (align > 8) + && !bitint_or_aggr_of_bitint_p (type)) inform (input_location, "parameter passing for argument of type " "%qT changed in GCC 14.1", type); if (align > 8) { - if (abi_break_gcc_9 && warn_psabi) + if (abi_break_gcc_9 + && warn_psabi + && !bitint_or_aggr_of_bitint_p (type)) inform (input_location, "parameter passing for argument of type " "%qT changed in GCC 9.1", type); dw_align = true; @@ -21895,6 +22006,11 @@ aarch64_composite_type_p (const_tree type, if (type && (AGGREGATE_TYPE_P (type) || TREE_CODE (type) == COMPLEX_TYPE)) return true; + if (type + && TREE_CODE (type) == BITINT_TYPE + && int_size_in_bytes (type) > 16) + return true; + if (mode == BLKmode || GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT) @@ -24449,7 +24565,7 @@ void aarch64_post_cfi_startproc (FILE *f, tree ignored ATTRIBUTE_UNUSED) { if (cfun->machine->frame.laid_out && aarch64_return_address_signing_enabled () - && aarch_ra_sign_key == AARCH_KEY_B) + && aarch64_ra_sign_key == AARCH64_KEY_B) asm_fprintf (f, "\t.cfi_b_key_frame\n"); } @@ -24636,6 +24752,8 @@ aarch64_expand_compare_and_swap (rtx operands[]) rval = copy_to_mode_reg (r_mode, oldval); else emit_move_insn (rval, gen_lowpart (r_mode, oldval)); + if (mode == TImode) + newval = force_reg (mode, newval); emit_insn (gen_aarch64_compare_and_swap_lse (mode, rval, mem, newval, mod_s)); @@ -28374,6 +28492,42 @@ aarch64_excess_precision (enum excess_precision_type type) return FLT_EVAL_METHOD_UNPREDICTABLE; } +/* Implement TARGET_C_BITINT_TYPE_INFO. + Return true if _BitInt(N) is supported and fill its details into *INFO. */ +bool +aarch64_bitint_type_info (int n, struct bitint_info *info) +{ + if (TARGET_BIG_END) + return false; + + if (n <= 8) + info->limb_mode = QImode; + else if (n <= 16) + info->limb_mode = HImode; + else if (n <= 32) + info->limb_mode = SImode; + else if (n <= 64) + info->limb_mode = DImode; + else if (n <= 128) + info->limb_mode = TImode; + else + /* The AAPCS for AArch64 defines _BitInt(N > 128) as an array with + type {signed,unsigned} __int128[M] where M*128 >= N. However, to be + able to use libgcc's implementation to support large _BitInt's we need + to use a LIMB_MODE that is no larger than 'long long'. This is why we + use DImode for our internal LIMB_MODE and we define the ABI_LIMB_MODE to + be TImode to ensure we are ABI compliant. */ + info->limb_mode = DImode; + + if (n > 128) + info->abi_limb_mode = TImode; + else + info->abi_limb_mode = info->limb_mode; + info->big_endian = TARGET_BIG_END; + info->extended = false; + return true; +} + /* Implement TARGET_SCHED_CAN_SPECULATE_INSN. Return true if INSN can be scheduled for speculative execution. Reject the long-running division and square-root instructions. */ @@ -30498,6 +30652,9 @@ aarch64_run_selftests (void) #undef TARGET_C_EXCESS_PRECISION #define TARGET_C_EXCESS_PRECISION aarch64_excess_precision +#undef TARGET_C_BITINT_TYPE_INFO +#define TARGET_C_BITINT_TYPE_INFO aarch64_bitint_type_info + #undef TARGET_EXPAND_BUILTIN #define TARGET_EXPAND_BUILTIN aarch64_expand_builtin diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 45e901cda644..4fa1dfc79065 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -242,7 +242,8 @@ constexpr auto AARCH64_FL_DEFAULT_ISA_MODE = AARCH64_FL_SM_OFF; #define AARCH64_ISA_SHA3 (aarch64_isa_flags & AARCH64_FL_SHA3) #define AARCH64_ISA_F16FML (aarch64_isa_flags & AARCH64_FL_F16FML) #define AARCH64_ISA_RCPC (aarch64_isa_flags & AARCH64_FL_RCPC) -#define AARCH64_ISA_RCPC8_4 (aarch64_isa_flags & AARCH64_FL_V8_4A) +#define AARCH64_ISA_RCPC8_4 ((AARCH64_ISA_RCPC && AARCH64_ISA_V8_4A) \ + || (aarch64_isa_flags & AARCH64_FL_RCPC3)) #define AARCH64_ISA_RNG (aarch64_isa_flags & AARCH64_FL_RNG) #define AARCH64_ISA_V8_5A (aarch64_isa_flags & AARCH64_FL_V8_5A) #define AARCH64_ISA_TME (aarch64_isa_flags & AARCH64_FL_TME) diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 7d51d923bf68..385a669b9b3c 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -1027,7 +1027,7 @@ if (aarch64_return_address_signing_enabled () && (TARGET_PAUTH)) { - if (aarch_ra_sign_key == AARCH_KEY_B) + if (aarch64_ra_sign_key == AARCH64_KEY_B) ret = "retab"; else ret = "retaa"; diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt index ceed5cdb201f..6356c419399b 100644 --- a/gcc/config/aarch64/aarch64.opt +++ b/gcc/config/aarch64/aarch64.opt @@ -40,7 +40,7 @@ TargetVariable unsigned aarch_enable_bti = 2 TargetVariable -enum aarch_key_type aarch_ra_sign_key = AARCH_KEY_A +enum aarch64_key_type aarch64_ra_sign_key = AARCH64_KEY_A ; The TLS dialect names to use with -mtls-dialect. diff --git a/gcc/config/aarch64/driver-aarch64.cc b/gcc/config/aarch64/driver-aarch64.cc index 5c6ee60a266e..b620351e5720 100644 --- a/gcc/config/aarch64/driver-aarch64.cc +++ b/gcc/config/aarch64/driver-aarch64.cc @@ -452,7 +452,7 @@ host_detect_local_cpu (int argc, const char **argv) if (tune) return res; - /* Add any features that should be be present, but can't be verified using + /* Add any features that should be present, but can't be verified using the /proc/cpuinfo "Features" list. */ extension_flags |= unchecked_extension_flags & default_flags; diff --git a/gcc/config/aarch64/t-aarch64-rtems b/gcc/config/aarch64/t-aarch64-rtems new file mode 100644 index 000000000000..7598d6361657 --- /dev/null +++ b/gcc/config/aarch64/t-aarch64-rtems @@ -0,0 +1,42 @@ +# Multilibs for aarch64 RTEMS targets. +# +# Copyright (C) 2024 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +MULTILIB_OPTIONS = +MULTILIB_DIRNAMES = +MULTILIB_REQUIRED = + +MULTILIB_OPTIONS += mabi=ilp32 +MULTILIB_DIRNAMES += ilp32 + +MULTILIB_OPTIONS += mno-outline-atomics +MULTILIB_DIRNAMES += nooa + +MULTILIB_OPTIONS += mcpu=cortex-a53 +MULTILIB_DIRNAMES += a53 + +MULTILIB_OPTIONS += mfix-cortex-a53-835769 +MULTILIB_DIRNAMES += fix835769 + +MULTILIB_OPTIONS += mfix-cortex-a53-843419 +MULTILIB_DIRNAMES += fix843419 + +MULTILIB_REQUIRED += mabi=ilp32 +MULTILIB_REQUIRED += mabi=ilp32/mno-outline-atomics/mcpu=cortex-a53/mfix-cortex-a53-835769/mfix-cortex-a53-843419 +MULTILIB_REQUIRED += mno-outline-atomics/mcpu=cortex-a53/mfix-cortex-a53-835769/mfix-cortex-a53-843419 diff --git a/gcc/config/alpha/alpha.cc b/gcc/config/alpha/alpha.cc index 98df142fb061..1126cea1f7ba 100644 --- a/gcc/config/alpha/alpha.cc +++ b/gcc/config/alpha/alpha.cc @@ -6090,7 +6090,8 @@ alpha_setup_incoming_varargs (cumulative_args_t pcum, { CUMULATIVE_ARGS cum = *get_cumulative_args (pcum); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) /* Skip the current argument. */ targetm.calls.function_arg_advance (pack_cumulative_args (&cum), arg); diff --git a/gcc/config/arc/arc.cc b/gcc/config/arc/arc.cc index 179f11f70778..686de0ff2d57 100644 --- a/gcc/config/arc/arc.cc +++ b/gcc/config/arc/arc.cc @@ -2352,7 +2352,8 @@ arc_setup_incoming_varargs (cumulative_args_t args_so_far, /* We must treat `__builtin_va_alist' as an anonymous arg. */ next_cum = *get_cumulative_args (args_so_far); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) arc_function_arg_advance (pack_cumulative_args (&next_cum), arg); first_anon_arg = next_cum; diff --git a/gcc/config/arm/aarch-common-protos.h b/gcc/config/arm/aarch-common-protos.h index 936d03c82ee8..9849fcbc0985 100644 --- a/gcc/config/arm/aarch-common-protos.h +++ b/gcc/config/arm/aarch-common-protos.h @@ -159,7 +159,22 @@ rtx_insn *arm_md_asm_adjust (vec &outputs, vec & /*inputs*/, vec &clobbers, HARD_REG_SET &clobbered_regs, location_t loc); -/* Validation routine for branch-protection common to AArch64 and Arm. */ -bool aarch_validate_mbranch_protection (const char *, const char *); +/* Specifies a -mbranch-protection= argument. */ +struct aarch_branch_protect_type +{ + /* The type's name that the user passes to the branch-protection option + string. */ + const char* name; + /* The type can only appear alone, other types should be rejected. */ + int alone; + /* Function to handle the protection type and set global variables. */ + void (*handler)(void); + /* A list of types that can follow this type in the option string. */ + const struct aarch_branch_protect_type* subtypes; + unsigned int num_subtypes; +}; + +bool aarch_validate_mbranch_protection ( + const struct aarch_branch_protect_type *, const char *, const char *); #endif /* GCC_AARCH_COMMON_PROTOS_H */ diff --git a/gcc/config/arm/aarch-common.cc b/gcc/config/arm/aarch-common.cc index 9bbde9369787..aa405af8192b 100644 --- a/gcc/config/arm/aarch-common.cc +++ b/gcc/config/arm/aarch-common.cc @@ -37,6 +37,7 @@ #include "function.h" #include "emit-rtl.h" #include "aarch-common.h" +#include "aarch-common-protos.h" /* Return TRUE if X is either an arithmetic shift left, or is a multiplication by a power of two. */ @@ -660,61 +661,6 @@ arm_md_asm_adjust (vec &outputs, vec & /*inputs*/, return saw_asm_flag ? seq : NULL; } -static void -aarch_handle_no_branch_protection (void) -{ - aarch_ra_sign_scope = AARCH_FUNCTION_NONE; - aarch_enable_bti = 0; -} - -static void -aarch_handle_standard_branch_protection (void) -{ - aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF; - aarch_ra_sign_key = AARCH_KEY_A; - aarch_enable_bti = 1; -} - -static void -aarch_handle_pac_ret_protection (void) -{ - aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF; - aarch_ra_sign_key = AARCH_KEY_A; -} - -static void -aarch_handle_pac_ret_leaf (void) -{ - aarch_ra_sign_scope = AARCH_FUNCTION_ALL; -} - -static void -aarch_handle_pac_ret_b_key (void) -{ - aarch_ra_sign_key = AARCH_KEY_B; -} - -static void -aarch_handle_bti_protection (void) -{ - aarch_enable_bti = 1; -} - -static const struct aarch_branch_protect_type aarch_pac_ret_subtypes[] = { - { "leaf", false, aarch_handle_pac_ret_leaf, NULL, 0 }, - { "b-key", false, aarch_handle_pac_ret_b_key, NULL, 0 }, - { NULL, false, NULL, NULL, 0 } -}; - -static const struct aarch_branch_protect_type aarch_branch_protect_types[] = { - { "none", true, aarch_handle_no_branch_protection, NULL, 0 }, - { "standard", true, aarch_handle_standard_branch_protection, NULL, 0 }, - { "pac-ret", false, aarch_handle_pac_ret_protection, aarch_pac_ret_subtypes, - ARRAY_SIZE (aarch_pac_ret_subtypes) }, - { "bti", false, aarch_handle_bti_protection, NULL, 0 }, - { NULL, false, NULL, NULL, 0 } -}; - /* In-place split *str at delim, return *str and set *str to the tail of the string or NULL if the end is reached. */ @@ -735,12 +681,15 @@ next_tok (char **str, int delim) return tok; } -/* Parses CONST_STR for branch protection features specified in - aarch64_branch_protect_types, and set any global variables required. - Returns true on success. */ +/* Parses CONST_STR according to branch protection features specified in + TYPES. The first type resets the settings, the last type is marked with + name == NULL. On failure an error message is printed referencing OPT as + the source of the options. Returns true on success. */ bool -aarch_validate_mbranch_protection (const char *const_str, const char *opt) +aarch_validate_mbranch_protection ( + const struct aarch_branch_protect_type *types, const char *const_str, + const char *opt) { char *str_root = xstrdup (const_str); char *next_str = str_root; @@ -750,11 +699,11 @@ aarch_validate_mbranch_protection (const char *const_str, const char *opt) bool res = true; /* First entry is "none" and it is used to reset the state. */ - aarch_branch_protect_types[0].handler (); + types->handler (); while (str) { - const aarch_branch_protect_type *type = aarch_branch_protect_types; + const aarch_branch_protect_type *type = types; for (; type->name; type++) if (strcmp (str, type->name) == 0) break; diff --git a/gcc/config/arm/aarch-common.h b/gcc/config/arm/aarch-common.h index 8a1964fdf17d..6bfdbdacf16d 100644 --- a/gcc/config/arm/aarch-common.h +++ b/gcc/config/arm/aarch-common.h @@ -45,24 +45,4 @@ enum aarch_function_type { AARCH_FUNCTION_ALL }; -/* The key type that -msign-return-address should use. */ -enum aarch_key_type { - AARCH_KEY_A, - AARCH_KEY_B -}; - -struct aarch_branch_protect_type -{ - /* The type's name that the user passes to the branch-protection option - string. */ - const char* name; - /* The type can only appear alone, other types should be rejected. */ - int alone; - /* Function to handle the protection type and set global variables. */ - void (*handler)(void); - /* A list of types that can follow this type in the option string. */ - const struct aarch_branch_protect_type* subtypes; - unsigned int num_subtypes; -}; - #endif /* GCC_AARCH_COMMON_H */ diff --git a/gcc/config/arm/arm-c.cc b/gcc/config/arm/arm-c.cc index 2e181bf7f36b..6e10262b0678 100644 --- a/gcc/config/arm/arm-c.cc +++ b/gcc/config/arm/arm-c.cc @@ -248,8 +248,6 @@ arm_cpu_builtins (struct cpp_reader* pfile) { unsigned int pac = 1; - gcc_assert (aarch_ra_sign_key == AARCH_KEY_A); - if (aarch_ra_sign_scope == AARCH_FUNCTION_ALL) pac |= 0x4; diff --git a/gcc/config/arm/arm-mve-builtins.cc b/gcc/config/arm/arm-mve-builtins.cc index c533d0e93ae3..7e8217666fee 100644 --- a/gcc/config/arm/arm-mve-builtins.cc +++ b/gcc/config/arm/arm-mve-builtins.cc @@ -657,7 +657,7 @@ function_instance::reads_global_state_p () const if (flags & CP_READ_FPCR) return true; - return false; + return flags & CP_READ_MEMORY; } /* Return true if calls to the function could modify some form of diff --git a/gcc/config/arm/arm.cc b/gcc/config/arm/arm.cc index 6a35fe441381..0217abc218d6 100644 --- a/gcc/config/arm/arm.cc +++ b/gcc/config/arm/arm.cc @@ -3259,6 +3259,52 @@ static sbitmap isa_all_fpubits_internal; static sbitmap isa_all_fpbits; static sbitmap isa_quirkbits; +static void +arm_handle_no_branch_protection (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_NONE; + aarch_enable_bti = 0; +} + +static void +arm_handle_standard_branch_protection (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF; + aarch_enable_bti = 1; +} + +static void +arm_handle_pac_ret_protection (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF; +} + +static void +arm_handle_pac_ret_leaf (void) +{ + aarch_ra_sign_scope = AARCH_FUNCTION_ALL; +} + +static void +arm_handle_bti_protection (void) +{ + aarch_enable_bti = 1; +} + +static const struct aarch_branch_protect_type arm_pac_ret_subtypes[] = { + { "leaf", false, arm_handle_pac_ret_leaf, NULL, 0 }, + { NULL, false, NULL, NULL, 0 } +}; + +static const struct aarch_branch_protect_type arm_branch_protect_types[] = { + { "none", true, arm_handle_no_branch_protection, NULL, 0 }, + { "standard", true, arm_handle_standard_branch_protection, NULL, 0 }, + { "pac-ret", false, arm_handle_pac_ret_protection, arm_pac_ret_subtypes, + ARRAY_SIZE (arm_pac_ret_subtypes) }, + { "bti", false, arm_handle_bti_protection, NULL, 0 }, + { NULL, false, NULL, NULL, 0 } +}; + /* Configure a build target TARGET from the user-specified options OPTS and OPTS_SET. If WARN_COMPATIBLE, emit a diagnostic if both the CPU and architecture have been specified, but the two are not identical. */ @@ -3306,14 +3352,9 @@ arm_configure_build_target (struct arm_build_target *target, if (opts->x_arm_branch_protection_string) { - aarch_validate_mbranch_protection (opts->x_arm_branch_protection_string, + aarch_validate_mbranch_protection (arm_branch_protect_types, + opts->x_arm_branch_protection_string, "-mbranch-protection="); - - if (aarch_ra_sign_key != AARCH_KEY_A) - { - warning (0, "invalid key type for %<-mbranch-protection=%>"); - aarch_ra_sign_key = AARCH_KEY_A; - } } if (arm_selected_arch) diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt index e4b29facad3b..0cd3fc2cd0cc 100644 --- a/gcc/config/arm/arm.opt +++ b/gcc/config/arm/arm.opt @@ -30,9 +30,6 @@ enum aarch_function_type aarch_ra_sign_scope = AARCH_FUNCTION_NONE TargetVariable unsigned aarch_enable_bti = 0 -TargetVariable -enum aarch_key_type aarch_ra_sign_key = AARCH_KEY_A - Enum Name(tls_type) Type(enum arm_tls_type) TLS dialect to use: diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h index bb6803121177..dc23cfbf461c 100644 --- a/gcc/config/avr/avr-protos.h +++ b/gcc/config/avr/avr-protos.h @@ -101,6 +101,7 @@ extern const char* avr_out_xload (rtx_insn *, rtx*, int*); extern const char* avr_out_cpymem (rtx_insn *, rtx*, int*); extern const char* avr_out_insert_bits (rtx*, int*); extern bool avr_popcount_each_byte (rtx, int, int); +extern bool avr_xor_noclobber_dconst (rtx, int); extern bool avr_has_nibble_0xf (rtx); extern int extra_constraint_Q (rtx x); diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc index 00fce8da15f1..4a5a921107bb 100644 --- a/gcc/config/avr/avr.cc +++ b/gcc/config/avr/avr.cc @@ -281,6 +281,31 @@ avr_popcount_each_byte (rtx xval, int n_bytes, int pop_mask) } +/* Constraint helper function. XVAL is a CONST_INT. Return true if we + can perform XOR without a clobber reg, provided the operation is on + a d-register. This means each byte is in { 0, 0xff, 0x80 }. */ + +bool +avr_xor_noclobber_dconst (rtx xval, int n_bytes) +{ + machine_mode mode = GET_MODE (xval); + + if (VOIDmode == mode) + mode = SImode; + + for (int i = 0; i < n_bytes; ++i) + { + rtx xval8 = simplify_gen_subreg (QImode, xval, mode, i); + unsigned int val8 = UINTVAL (xval8) & GET_MODE_MASK (QImode); + + if (val8 != 0 && val8 != 0xff && val8 != 0x80) + return false; + } + + return true; +} + + /* Access some RTX as INT_MODE. If X is a CONST_FIXED we can get the bit representation of X by "casting" it to CONST_INT. */ @@ -1470,14 +1495,20 @@ avr_set_current_function (tree decl) // Common problem is using "ISR" without first including avr/interrupt.h. const char *name = IDENTIFIER_POINTER (DECL_NAME (decl)); name = default_strip_name_encoding (name); - if (strcmp ("ISR", name) == 0 - || strcmp ("INTERRUPT", name) == 0 - || strcmp ("SIGNAL", name) == 0) + if (strcmp ("ISR", name) == 0) { warning_at (loc, OPT_Wmisspelled_isr, "%qs is a reserved identifier" " in AVR-LibC. Consider %<#include %>" " before using the %qs macro", name, name); } + if (strcmp ("INTERRUPT", name) == 0 + || strcmp ("SIGNAL", name) == 0) + { + warning_at (loc, OPT_Wmisspelled_isr, "%qs is a deprecated identifier" + " in AVR-LibC. Consider %<#include %>" + " or %<#include %>" + " before using the %qs macro", name, name); + } #endif // AVR-LibC naming conventions /* Don't print the above diagnostics more than once. */ diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index bc408633eb5d..97f42be7729c 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -4741,10 +4741,10 @@ [(set_attr "length" "1")]) (define_insn_and_split "xorhi3" - [(set (match_operand:HI 0 "register_operand" "=??r,r ,r") - (xor:HI (match_operand:HI 1 "register_operand" "%0,0 ,0") - (match_operand:HI 2 "nonmemory_operand" "r,Cx2,n"))) - (clobber (match_scratch:QI 3 "=X,X ,&d"))] + [(set (match_operand:HI 0 "register_operand" "=??r,r ,d ,r") + (xor:HI (match_operand:HI 1 "register_operand" "%0,0 ,0 ,0") + (match_operand:HI 2 "nonmemory_operand" "r,Cx2,CX2,n"))) + (clobber (match_scratch:QI 3 "=X,X ,X ,&d"))] "" "#" "&& reload_completed" @@ -4755,10 +4755,10 @@ (clobber (reg:CC REG_CC))])]) (define_insn "*xorhi3" - [(set (match_operand:HI 0 "register_operand" "=??r,r ,r") - (xor:HI (match_operand:HI 1 "register_operand" "%0,0 ,0") - (match_operand:HI 2 "nonmemory_operand" "r,Cx2,n"))) - (clobber (match_scratch:QI 3 "=X,X ,&d")) + [(set (match_operand:HI 0 "register_operand" "=??r,r ,d ,r") + (xor:HI (match_operand:HI 1 "register_operand" "%0,0 ,0 ,0") + (match_operand:HI 2 "nonmemory_operand" "r,Cx2,CX2,n"))) + (clobber (match_scratch:QI 3 "=X,X ,X ,&d")) (clobber (reg:CC REG_CC))] "reload_completed" { @@ -4767,14 +4767,14 @@ return avr_out_bitop (insn, operands, NULL); } - [(set_attr "length" "2,2,4") - (set_attr "adjust_len" "*,out_bitop,out_bitop")]) + [(set_attr "length" "2,2,4,4") + (set_attr "adjust_len" "*,out_bitop,out_bitop,out_bitop")]) (define_insn_and_split "xorpsi3" - [(set (match_operand:PSI 0 "register_operand" "=??r,r ,r") - (xor:PSI (match_operand:PSI 1 "register_operand" "%0,0 ,0") - (match_operand:PSI 2 "nonmemory_operand" "r,Cx3,n"))) - (clobber (match_scratch:QI 3 "=X,X ,&d"))] + [(set (match_operand:PSI 0 "register_operand" "=??r,r ,d ,r") + (xor:PSI (match_operand:PSI 1 "register_operand" "%0,0 ,0 ,0") + (match_operand:PSI 2 "nonmemory_operand" "r,Cx3,CX3,n"))) + (clobber (match_scratch:QI 3 "=X,X ,X ,&d"))] "" "#" "&& reload_completed" @@ -4785,10 +4785,10 @@ (clobber (reg:CC REG_CC))])]) (define_insn "*xorpsi3" - [(set (match_operand:PSI 0 "register_operand" "=??r,r ,r") - (xor:PSI (match_operand:PSI 1 "register_operand" "%0,0 ,0") - (match_operand:PSI 2 "nonmemory_operand" "r,Cx3,n"))) - (clobber (match_scratch:QI 3 "=X,X ,&d")) + [(set (match_operand:PSI 0 "register_operand" "=??r,r ,d ,r") + (xor:PSI (match_operand:PSI 1 "register_operand" "%0,0 ,0 ,0") + (match_operand:PSI 2 "nonmemory_operand" "r,Cx3,CX3,n"))) + (clobber (match_scratch:QI 3 "=X,X ,X ,&d")) (clobber (reg:CC REG_CC))] "reload_completed" { @@ -4799,14 +4799,14 @@ return avr_out_bitop (insn, operands, NULL); } - [(set_attr "length" "3,6,6") - (set_attr "adjust_len" "*,out_bitop,out_bitop")]) + [(set_attr "length" "3,6,6,6") + (set_attr "adjust_len" "*,out_bitop,out_bitop,out_bitop")]) (define_insn_and_split "xorsi3" - [(set (match_operand:SI 0 "register_operand" "=??r,r ,r") - (xor:SI (match_operand:SI 1 "register_operand" "%0,0 ,0") - (match_operand:SI 2 "nonmemory_operand" "r,Cx4,n"))) - (clobber (match_scratch:QI 3 "=X,X ,&d"))] + [(set (match_operand:SI 0 "register_operand" "=??r,r ,d ,r") + (xor:SI (match_operand:SI 1 "register_operand" "%0,0 ,0 ,0") + (match_operand:SI 2 "nonmemory_operand" "r,Cx4,CX4,n"))) + (clobber (match_scratch:QI 3 "=X,X ,X ,&d"))] "" "#" "&& reload_completed" @@ -4817,10 +4817,10 @@ (clobber (reg:CC REG_CC))])]) (define_insn "*xorsi3" - [(set (match_operand:SI 0 "register_operand" "=??r,r ,r") - (xor:SI (match_operand:SI 1 "register_operand" "%0,0 ,0") - (match_operand:SI 2 "nonmemory_operand" "r,Cx4,n"))) - (clobber (match_scratch:QI 3 "=X,X ,&d")) + [(set (match_operand:SI 0 "register_operand" "=??r,r ,d ,r") + (xor:SI (match_operand:SI 1 "register_operand" "%0,0 ,0 ,0") + (match_operand:SI 2 "nonmemory_operand" "r,Cx4,CX4,n"))) + (clobber (match_scratch:QI 3 "=X,X ,X ,&d")) (clobber (reg:CC REG_CC))] "reload_completed" { @@ -4832,8 +4832,8 @@ return avr_out_bitop (insn, operands, NULL); } - [(set_attr "length" "4,8,8") - (set_attr "adjust_len" "*,out_bitop,out_bitop")]) + [(set_attr "length" "4,8,8,8") + (set_attr "adjust_len" "*,out_bitop,out_bitop,out_bitop")]) (define_split diff --git a/gcc/config/avr/constraints.md b/gcc/config/avr/constraints.md index fac54da17dbd..b4e5525d1978 100644 --- a/gcc/config/avr/constraints.md +++ b/gcc/config/avr/constraints.md @@ -169,7 +169,7 @@ (match_test "avr_popcount_each_byte (op, 4, (1<<0) | (1<<7) | (1<<8))"))) (define_constraint "Co1" - "Constant 1-byte integer that allows AND by means of SET + BLD." + "Constant 1-byte integer that allows OR by means of SET + BLD." (and (match_code "const_int") (match_test "avr_popcount_each_byte (op, 1, 1<<1)"))) @@ -218,6 +218,21 @@ (and (match_code "const_int") (match_test "avr_popcount_each_byte (op, 4, (1<<0) | (1<<8))"))) +(define_constraint "CX2" + "Constant 2-byte integer that allows XOR without clobber register but requires a d-register." + (and (match_code "const_int") + (match_test "avr_xor_noclobber_dconst (op, 2)"))) + +(define_constraint "CX3" + "Constant 3-byte integer that allows XOR without clobber register but requires a d-register." + (and (match_code "const_int") + (match_test "avr_xor_noclobber_dconst (op, 3)"))) + +(define_constraint "CX4" + "Constant 4-byte integer that allows XOR without clobber register but requires a d-register." + (and (match_code "const_int") + (match_test "avr_xor_noclobber_dconst (op, 4)"))) + (define_constraint "Csp" "Integer constant in the range -11 @dots{} 6." (and (match_code "const_int") diff --git a/gcc/config/bpf/bpf.h b/gcc/config/bpf/bpf.h index f107a5a4c349..3cc5daa1b58d 100644 --- a/gcc/config/bpf/bpf.h +++ b/gcc/config/bpf/bpf.h @@ -99,7 +99,7 @@ #define SIG_ATOMIC_TYPE "char" -#define INT8_TYPE "char" +#define INT8_TYPE "signed char" #define INT16_TYPE "short int" #define INT32_TYPE "int" #define INT64_TYPE "long int" diff --git a/gcc/config/bpf/btfext-out.cc b/gcc/config/bpf/btfext-out.cc index 00d2501a976b..7ec438fd1d10 100644 --- a/gcc/config/bpf/btfext-out.cc +++ b/gcc/config/bpf/btfext-out.cc @@ -299,8 +299,9 @@ bpf_core_reloc_add (const tree type, const char * section_name, /* Buffer the access string in the auxiliary strtab. */ bpfcr->bpfcr_astr_off = 0; - if (accessor != NULL) - bpfcr->bpfcr_astr_off = btf_ext_add_string (accessor); + gcc_assert (accessor != NULL); + bpfcr->bpfcr_astr_off = btf_ext_add_string (accessor); + bpfcr->bpfcr_type = get_btf_id (ctf_lookup_tree_type (ctfc, type)); bpfcr->bpfcr_insn_label = label; bpfcr->bpfcr_kind = kind; diff --git a/gcc/config/bpf/core-builtins.cc b/gcc/config/bpf/core-builtins.cc index 8d8c54c1fb3d..8333ad81d0e0 100644 --- a/gcc/config/bpf/core-builtins.cc +++ b/gcc/config/bpf/core-builtins.cc @@ -205,7 +205,7 @@ struct cr_local /* Core Relocation Final data */ struct cr_final { - char *str; + const char *str; tree type; enum btf_core_reloc_kind kind; }; @@ -388,8 +388,8 @@ core_field_info (tree src, enum btf_core_reloc_kind kind) src = root_for_core_field_info (src); - get_inner_reference (src, &bitsize, &bitpos, &var_off, &mode, &unsignedp, - &reversep, &volatilep); + tree root = get_inner_reference (src, &bitsize, &bitpos, &var_off, &mode, + &unsignedp, &reversep, &volatilep); /* Note: Use DECL_BIT_FIELD_TYPE rather than DECL_BIT_FIELD here, because it remembers whether the field in question was originally declared as a @@ -414,6 +414,23 @@ core_field_info (tree src, enum btf_core_reloc_kind kind) { case BPF_RELO_FIELD_BYTE_OFFSET: { + result = 0; + if (var_off == NULL_TREE + && TREE_CODE (root) == INDIRECT_REF + && TREE_CODE (TREE_OPERAND (root, 0)) == POINTER_PLUS_EXPR) + { + tree node = TREE_OPERAND (root, 0); + tree offset = TREE_OPERAND (node, 1); + tree type = TREE_TYPE (TREE_OPERAND (node, 0)); + type = TREE_TYPE (type); + + gcc_assert (TREE_CODE (offset) == INTEGER_CST && tree_fits_shwi_p (offset) + && COMPLETE_TYPE_P (type) && tree_fits_shwi_p (TYPE_SIZE (type))); + + HOST_WIDE_INT offset_i = tree_to_shwi (offset); + result += offset_i; + } + type = unsigned_type_node; if (var_off != NULL_TREE) { @@ -422,9 +439,9 @@ core_field_info (tree src, enum btf_core_reloc_kind kind) } if (bitfieldp) - result = start_bitpos / 8; + result += start_bitpos / 8; else - result = bitpos / 8; + result += bitpos / 8; } break; @@ -536,7 +553,11 @@ bpf_core_get_index (const tree node, bool *valid) { if (l == node) return i; - i++; + /* Skip unnamed padding, not represented by BTF. */ + if (DECL_NAME(l) != NULL_TREE + || TREE_CODE (TREE_TYPE (l)) == UNION_TYPE + || TREE_CODE (TREE_TYPE (l)) == RECORD_TYPE) + i++; } } else if (code == ARRAY_REF || code == ARRAY_RANGE_REF || code == MEM_REF) @@ -552,6 +573,7 @@ bpf_core_get_index (const tree node, bool *valid) { tree offset = TREE_OPERAND (node, 1); tree type = TREE_TYPE (TREE_OPERAND (node, 0)); + type = TREE_TYPE (type); if (TREE_CODE (offset) == INTEGER_CST && tree_fits_shwi_p (offset) && COMPLETE_TYPE_P (type) && tree_fits_shwi_p (TYPE_SIZE (type))) @@ -627,14 +649,18 @@ compute_field_expr (tree node, unsigned int *accessors, switch (TREE_CODE (node)) { - case ADDR_EXPR: - return 0; case INDIRECT_REF: - accessors[0] = 0; - return 1; - case POINTER_PLUS_EXPR: - accessors[0] = bpf_core_get_index (node, valid); - return 1; + if (TREE_CODE (node = TREE_OPERAND (node, 0)) == POINTER_PLUS_EXPR) + { + accessors[0] = bpf_core_get_index (node, valid); + *access_node = TREE_OPERAND (node, 0); + return 1; + } + else + { + accessors[0] = 0; + return 1; + } case COMPONENT_REF: n = compute_field_expr (TREE_OPERAND (node, 0), accessors, valid, @@ -660,6 +686,7 @@ compute_field_expr (tree node, unsigned int *accessors, access_node, false); return n; + case ADDR_EXPR: case CALL_EXPR: case SSA_NAME: case VAR_DECL: @@ -688,6 +715,9 @@ pack_field_expr (tree *args, tree access_node = NULL_TREE; tree type = NULL_TREE; + if (TREE_CODE (root) == ADDR_EXPR) + root = TREE_OPERAND (root, 0); + ret.reloc_decision = REPLACE_CREATE_RELOCATION; unsigned int accessors[100]; @@ -695,6 +725,8 @@ pack_field_expr (tree *args, compute_field_expr (root, accessors, &valid, &access_node, false); type = TREE_TYPE (access_node); + if (POINTER_TYPE_P (type)) + type = TREE_TYPE (type); if (valid == true) { @@ -840,8 +872,10 @@ process_enum_value (struct cr_builtins *data) { if (TREE_VALUE (l) == expr) { - ret.str = (char *) ggc_alloc_atomic ((index / 10) + 1); - sprintf (ret.str, "%d", index); + char *tmp = (char *) ggc_alloc_atomic ((index / 10) + 1); + sprintf (tmp, "%d", index); + ret.str = (const char *) tmp; + break; } index++; @@ -959,7 +993,7 @@ process_type (struct cr_builtins *data) || data->kind == BPF_RELO_TYPE_MATCHES); struct cr_final ret; - ret.str = NULL; + ret.str = ggc_strdup ("0"); ret.type = data->type; ret.kind = data->kind; @@ -1351,6 +1385,8 @@ make_core_safe_access_index (tree expr, bool *changed, bool entry = true) if (base == NULL_TREE || base == expr) return expr; + base = expr; + tree ret = NULL_TREE; int n; bool valid = true; @@ -1365,6 +1401,8 @@ make_core_safe_access_index (tree expr, bool *changed, bool entry = true) { if (TREE_CODE (access_node) == INDIRECT_REF) base = TREE_OPERAND (access_node, 0); + else + base = access_node; bool local_changed = false; ret = make_core_safe_access_index (base, &local_changed, false); diff --git a/gcc/config/csky/csky.cc b/gcc/config/csky/csky.cc index e33ca8cf4346..72619ea30312 100644 --- a/gcc/config/csky/csky.cc +++ b/gcc/config/csky/csky.cc @@ -2090,7 +2090,8 @@ csky_setup_incoming_varargs (cumulative_args_t pcum_v, cfun->machine->uses_anonymous_args = 1; local_cum = *pcum; - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) csky_function_arg_advance (local_cum_v, arg); regs_to_push = CSKY_NPARM_REGS - local_cum.reg; if (regs_to_push) diff --git a/gcc/config/darwin.cc b/gcc/config/darwin.cc index 9e5d64e6f32c..63b8c509405d 100644 --- a/gcc/config/darwin.cc +++ b/gcc/config/darwin.cc @@ -3415,17 +3415,12 @@ darwin_override_options (void) global_options.x_flag_objc_abi); } - /* Limit DWARF to the chosen version, the linker and debug linker might not - be able to consume newer structures. */ - if (!OPTION_SET_P (dwarf_strict)) - dwarf_strict = 1; - if (!OPTION_SET_P (dwarf_version)) { /* External toolchains based on LLVM or clang 7+ have support for dwarf-4. */ if ((dsymutil_version.kind == LLVM && dsymutil_version.major >= 7) - || (dsymutil_version.kind == CLANG && dsymutil_version.major >= 7)) + || (dsymutil_version.kind == CLANG && dsymutil_version.major >= 700)) dwarf_version = 4; else if (dsymutil_version.kind == DWARFUTILS && dsymutil_version.major >= 121) @@ -3442,6 +3437,24 @@ darwin_override_options (void) OPTION_SET_P (dwarf_split_debug_info) = 0; } + /* Cases where dsymutil will exclude files with .macinfo sections; we are + better off forcing the debug level to 2 than completely excluding the + files. If strict dwarf is set, then emit the macinfo anyway. */ + if (debug_info_level == DINFO_LEVEL_VERBOSE + && (!OPTION_SET_P (dwarf_strict) || dwarf_strict == 0) + && ((dsymutil_version.kind == CLANG && dsymutil_version.major >= 1500) + || (dsymutil_version.kind == LLVM && dsymutil_version.major >= 15))) + { + inform (input_location, + "%<-g3%> is not supported by the debug linker in use (set to 2)"); + debug_info_level = DINFO_LEVEL_NORMAL; + } + + /* Limit DWARF to the chosen version, the linker and debug linker might not + be able to consume newer structures. */ + if (!OPTION_SET_P (dwarf_strict)) + dwarf_strict = 1; + /* Do not allow unwind tables to be generated by default for m32. fnon-call-exceptions will override this, regardless of what we do. */ if (generating_for_darwin_version < 10 diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 31019a0c49d4..c09b9e9dc94d 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -406,7 +406,7 @@ extern GTY(()) int darwin_ms_struct; %{!r:%{!nostdlib:%{!nodefaultlibs: " DARWIN_WEAK_CRTS "}}} \ %o \ %{!r:%{!nostdlib:%{!nodefaultlibs:\ - %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ + %{fprofile-arcs|fcondition-coverage|fprofile-generate*|coverage:-lgcov} \ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \ %{static|static-libgcc|static-libstdc++|static-libgfortran: \ libgomp.a%s; : -lgomp }} \ diff --git a/gcc/config/epiphany/epiphany.cc b/gcc/config/epiphany/epiphany.cc index d6c057f1685b..79254c202542 100644 --- a/gcc/config/epiphany/epiphany.cc +++ b/gcc/config/epiphany/epiphany.cc @@ -728,7 +728,8 @@ epiphany_setup_incoming_varargs (cumulative_args_t cum, gcc_assert (arg.mode != BLKmode); next_cum = *get_cumulative_args (cum); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) next_cum = (ROUND_ADVANCE_CUM (next_cum, arg.mode, arg.type) + ROUND_ADVANCE_ARG (arg.mode, arg.type)); first_anon_arg = next_cum; diff --git a/gcc/config/ft32/ft32.cc b/gcc/config/ft32/ft32.cc index 36d3dcfd7b52..3c6e5fb1f6ca 100644 --- a/gcc/config/ft32/ft32.cc +++ b/gcc/config/ft32/ft32.cc @@ -635,9 +635,10 @@ ft32_setup_incoming_varargs (cumulative_args_t cum_v, { CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); int named_size = 0; - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) - named_size = - GET_MODE_SIZE (SImode) * (*cum - FT32_R0) + GET_MODE_SIZE (arg.mode); + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) + named_size + = GET_MODE_SIZE (SImode) * (*cum - FT32_R0) + GET_MODE_SIZE (arg.mode); if (named_size < 24) *pretend_size = 24 - named_size; diff --git a/gcc/config/gcn/gcn-hsa.h b/gcc/config/gcn/gcn-hsa.h index e5b93f7d9e54..7d6e3141cea1 100644 --- a/gcc/config/gcn/gcn-hsa.h +++ b/gcc/config/gcn/gcn-hsa.h @@ -80,7 +80,7 @@ extern unsigned int gcn_local_sym_hash (const char *name); writes a new AMD GPU object file and the ABI version needs to be the same. - LLVM <= 17 defaults to 4 while LLVM >= 18 defaults to 5. GCC supports LLVM >= 13.0.1 and only LLVM >= 14 supports version 5. - Note that Fiji is only suppored with LLVM <= 17 as version 3 i no longer + Note that Fiji is only suppored with LLVM <= 17 as version 3 is no longer supported in LLVM >= 18. */ #define ABI_VERSION_SPEC "march=fiji:--amdhsa-code-object-version=3;" \ "!march=*|march=*:--amdhsa-code-object-version=4" @@ -90,7 +90,7 @@ extern unsigned int gcn_local_sym_hash (const char *name); the ELF flags (e_flags) of that generated file must be identical to those generated by the compiler. */ -#define NO_XNACK "march=fiji:;march=gfx1030:;march=gfx1100:;" \ +#define NO_XNACK "march=fiji:;march=gfx1030:;march=gfx1036:;march=gfx1100:;march=gfx1103:;" \ /* These match the defaults set in gcn.cc. */ \ "!mxnack*|mxnack=default:%{march=gfx900|march=gfx906|march=gfx908:-mattr=-xnack};" #define NO_SRAM_ECC "!march=*:;march=fiji:;march=gfx900:;march=gfx906:;" @@ -106,7 +106,8 @@ extern unsigned int gcn_local_sym_hash (const char *name); "%{" ABI_VERSION_SPEC "} " \ "%{" NO_XNACK XNACKOPT "} " \ "%{" NO_SRAM_ECC SRAMOPT "} " \ - "%{march=gfx1030|march=gfx1100:-mattr=+wavefrontsize64} " \ + "%{march=gfx1030|march=gfx1036|march=gfx1100|march=gfx1103:-mattr=+wavefrontsize64} " \ + "%{march=gfx1030|march=gfx1036|march=gfx1100|march=gfx1103:-mattr=+cumode} " \ "-filetype=obj" #define LINK_SPEC "--pie --export-dynamic" #define LIB_SPEC "-lc" diff --git a/gcc/config/gcn/gcn-opts.h b/gcc/config/gcn/gcn-opts.h index 6be2c9204fa9..49099bad7e72 100644 --- a/gcc/config/gcn/gcn-opts.h +++ b/gcc/config/gcn/gcn-opts.h @@ -26,7 +26,9 @@ enum processor_type PROCESSOR_GFX908, PROCESSOR_GFX90a, PROCESSOR_GFX1030, - PROCESSOR_GFX1100 + PROCESSOR_GFX1036, + PROCESSOR_GFX1100, + PROCESSOR_GFX1103 }; #define TARGET_FIJI (gcn_arch == PROCESSOR_FIJI) @@ -35,7 +37,9 @@ enum processor_type #define TARGET_GFX908 (gcn_arch == PROCESSOR_GFX908) #define TARGET_GFX90a (gcn_arch == PROCESSOR_GFX90a) #define TARGET_GFX1030 (gcn_arch == PROCESSOR_GFX1030) +#define TARGET_GFX1036 (gcn_arch == PROCESSOR_GFX1036) #define TARGET_GFX1100 (gcn_arch == PROCESSOR_GFX1100) +#define TARGET_GFX1103 (gcn_arch == PROCESSOR_GFX1103) /* Set in gcn_option_override. */ extern enum gcn_isa { diff --git a/gcc/config/gcn/gcn-run.cc b/gcc/config/gcn/gcn-run.cc index d45ff3e6c2ba..2f3ed2d41d2f 100644 --- a/gcc/config/gcn/gcn-run.cc +++ b/gcc/config/gcn/gcn-run.cc @@ -755,7 +755,13 @@ main (int argc, char *argv[]) /* Clean shut down. */ XHSA (hsa_fns.hsa_memory_free_fn (kernargs), - "Clean up device memory"); + "Clean up device kernargs memory"); + XHSA (hsa_fns.hsa_memory_free_fn (args), + "Clean up device args memory"); + XHSA (hsa_fns.hsa_memory_free_fn (heap), + "Clean up device heap memory"); + XHSA (hsa_fns.hsa_memory_free_fn (stack), + "Clean up device stack memory"); XHSA (hsa_fns.hsa_executable_destroy_fn (executable), "Clean up GCN executable"); XHSA (hsa_fns.hsa_queue_destroy_fn (queue), diff --git a/gcc/config/gcn/gcn.cc b/gcc/config/gcn/gcn.cc index bc076d1120d9..9f91d4f9ebd1 100644 --- a/gcc/config/gcn/gcn.cc +++ b/gcc/config/gcn/gcn.cc @@ -139,7 +139,9 @@ gcn_option_override (void) : gcn_arch == PROCESSOR_GFX908 ? ISA_CDNA1 : gcn_arch == PROCESSOR_GFX90a ? ISA_CDNA2 : gcn_arch == PROCESSOR_GFX1030 ? ISA_RDNA2 + : gcn_arch == PROCESSOR_GFX1036 ? ISA_RDNA2 : gcn_arch == PROCESSOR_GFX1100 ? ISA_RDNA3 + : gcn_arch == PROCESSOR_GFX1103 ? ISA_RDNA3 : ISA_UNKNOWN); gcc_assert (gcn_isa != ISA_UNKNOWN); @@ -164,13 +166,17 @@ gcn_option_override (void) /* gfx803 "Fiji", gfx1030 and gfx1100 do not support XNACK. */ if (gcn_arch == PROCESSOR_FIJI || gcn_arch == PROCESSOR_GFX1030 - || gcn_arch == PROCESSOR_GFX1100) + || gcn_arch == PROCESSOR_GFX1036 + || gcn_arch == PROCESSOR_GFX1100 + || gcn_arch == PROCESSOR_GFX1103) { if (flag_xnack == HSACO_ATTR_ON) error ("%<-mxnack=on%> is incompatible with %<-march=%s%>", (gcn_arch == PROCESSOR_FIJI ? "fiji" : gcn_arch == PROCESSOR_GFX1030 ? "gfx1030" + : gcn_arch == PROCESSOR_GFX1036 ? "gfx1036" : gcn_arch == PROCESSOR_GFX1100 ? "gfx1100" + : gcn_arch == PROCESSOR_GFX1103 ? "gfx1103" : NULL)); /* Allow HSACO_ATTR_ANY silently because that's the default. */ flag_xnack = HSACO_ATTR_OFF; @@ -3046,8 +3052,12 @@ gcn_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait, return gcn_arch == PROCESSOR_GFX90a; if (strcmp (name, "gfx1030") == 0) return gcn_arch == PROCESSOR_GFX1030; + if (strcmp (name, "gfx1036") == 0) + return gcn_arch == PROCESSOR_GFX1036; if (strcmp (name, "gfx1100") == 0) return gcn_arch == PROCESSOR_GFX1100; + if (strcmp (name, "gfx1103") == 0) + return gcn_arch == PROCESSOR_GFX1103; return 0; default: gcc_unreachable (); @@ -4932,8 +4942,8 @@ gcn_expand_builtin_1 (tree exp, rtx target, rtx /*subtarget */ , } case GCN_BUILTIN_FIRST_CALL_THIS_THREAD_P: { - /* Stash a marker in the unused upper 16 bits of s[0:1] to indicate - whether it was the first call. */ + /* Stash a marker in the unused upper 16 bits of QUEUE_PTR_ARG to + indicate whether it was the first call. */ rtx result = gen_reg_rtx (BImode); emit_move_insn (result, const0_rtx); if (cfun->machine->args.reg[QUEUE_PTR_ARG] >= 0) @@ -5221,6 +5231,44 @@ gcn_vector_mode_supported_p (machine_mode mode) static machine_mode gcn_vectorize_preferred_simd_mode (scalar_mode mode) { + bool v32; + if (gcn_preferred_vectorization_factor == 32) + v32 = true; + else if (gcn_preferred_vectorization_factor == 64) + v32 = false; + else if (gcn_preferred_vectorization_factor != -1) + gcc_unreachable (); + else if (TARGET_RDNA2_PLUS) + /* RDNA devices have 32-lane vectors with limited support for 64-bit vectors + (in particular, permute operations are only available for cases that don't + span the 32-lane boundary). + + From the RDNA3 manual: "Hardware may choose to skip either half if the + EXEC mask for that half is all zeros...". This means that preferring + 32-lanes is a good stop-gap until we have proper wave32 support. */ + v32 = true; + else + v32 = false; + + if (v32) + switch (mode) + { + case E_QImode: + return V32QImode; + case E_HImode: + return V32HImode; + case E_SImode: + return V32SImode; + case E_DImode: + return V32DImode; + case E_SFmode: + return V32SFmode; + case E_DFmode: + return V32DFmode; + default: + return word_mode; + } + switch (mode) { case E_QImode: @@ -6553,11 +6601,21 @@ output_file_start (void) xnack = ""; sram_ecc = ""; break; + case PROCESSOR_GFX1036: + cpu = "gfx1036"; + xnack = ""; + sram_ecc = ""; + break; case PROCESSOR_GFX1100: cpu = "gfx1100"; xnack = ""; sram_ecc = ""; break; + case PROCESSOR_GFX1103: + cpu = "gfx1103"; + xnack = ""; + sram_ecc = ""; + break; default: gcc_unreachable (); } @@ -6705,7 +6763,7 @@ gcn_hsa_declare_function_name (FILE *file, const char *name, xnack_enabled, LDS_SIZE); /* Not supported with 'architected flat scratch'. */ - if (gcn_arch != PROCESSOR_GFX1100) + if (!TARGET_RDNA3) fprintf (file, "\t .amdhsa_reserve_flat_scratch\t0\n"); if (gcn_arch == PROCESSOR_GFX90a) diff --git a/gcc/config/gcn/gcn.h b/gcc/config/gcn/gcn.h index c314c7b4ae8e..4148ceaf5828 100644 --- a/gcc/config/gcn/gcn.h +++ b/gcc/config/gcn/gcn.h @@ -48,9 +48,13 @@ else if (TARGET_GFX90a) \ builtin_define ("__gfx90a__"); \ else if (TARGET_GFX1030) \ - builtin_define ("__gfx1030"); \ + builtin_define ("__gfx1030__"); \ + else if (TARGET_GFX1036) \ + builtin_define ("__gfx1036__"); \ else if (TARGET_GFX1100) \ builtin_define ("__gfx1100__"); \ + else if (TARGET_GFX1103) \ + builtin_define ("__gfx1103__"); \ else \ gcc_unreachable (); \ } while (0) diff --git a/gcc/config/gcn/gcn.md b/gcc/config/gcn/gcn.md index 3b51453aacaa..574c2f87e8c9 100644 --- a/gcc/config/gcn/gcn.md +++ b/gcc/config/gcn/gcn.md @@ -1960,11 +1960,19 @@ (define_insn "*memory_barrier" [(set (match_operand:BLK 0) (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))] - "" - "{buffer_wbinvl1_vol|buffer_gl0_inv}" + "!TARGET_RDNA2_PLUS" + "buffer_wbinvl1_vol" [(set_attr "type" "mubuf") (set_attr "length" "4")]) +(define_insn "*memory_barrier" + [(set (match_operand:BLK 0) + (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))] + "TARGET_RDNA2_PLUS" + "buffer_gl1_inv\;buffer_gl0_inv" + [(set_attr "type" "mult") + (set_attr "length" "8")]) + ; FIXME: These patterns have been disabled as they do not seem to work ; reliably - they can cause hangs or incorrect results. ; TODO: flush caches according to memory model @@ -2094,9 +2102,13 @@ case 0: return "s_load%o0\t%0, %A1 glc\;s_waitcnt\tlgkmcnt(0)"; case 1: - return "flat_load%o0\t%0, %A1%O1 glc\;s_waitcnt\t0"; + return (TARGET_RDNA2 /* Not GFX11. */ + ? "flat_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\t0" + : "flat_load%o0\t%0, %A1%O1 glc\;s_waitcnt\t0"); case 2: - return "global_load%o0\t%0, %A1%O1 glc\;s_waitcnt\tvmcnt(0)"; + return (TARGET_RDNA2 /* Not GFX11. */ + ? "global_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\tvmcnt(0)" + : "global_load%o0\t%0, %A1%O1 glc\;s_waitcnt\tvmcnt(0)"); } break; case MEMMODEL_CONSUME: @@ -2108,15 +2120,21 @@ return "s_load%o0\t%0, %A1 glc\;s_waitcnt\tlgkmcnt(0)\;" "s_dcache_wb_vol"; case 1: - return (TARGET_RDNA2_PLUS + return (TARGET_RDNA2 + ? "flat_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\t0\;" + "buffer_gl1_inv\;buffer_gl0_inv" + : TARGET_RDNA3 ? "flat_load%o0\t%0, %A1%O1 glc\;s_waitcnt\t0\;" - "buffer_gl0_inv" + "buffer_gl1_inv\;buffer_gl0_inv" : "flat_load%o0\t%0, %A1%O1 glc\;s_waitcnt\t0\;" "buffer_wbinvl1_vol"); case 2: - return (TARGET_RDNA2_PLUS + return (TARGET_RDNA2 + ? "global_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\tvmcnt(0)\;" + "buffer_gl1_inv\;buffer_gl0_inv" + : TARGET_RDNA3 ? "global_load%o0\t%0, %A1%O1 glc\;s_waitcnt\tvmcnt(0)\;" - "buffer_gl0_inv" + "buffer_gl1_inv\;buffer_gl0_inv" : "global_load%o0\t%0, %A1%O1 glc\;s_waitcnt\tvmcnt(0)\;" "buffer_wbinvl1_vol"); } @@ -2130,15 +2148,21 @@ return "s_dcache_wb_vol\;s_load%o0\t%0, %A1 glc\;" "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol"; case 1: - return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;flat_load%o0\t%0, %A1%O1 glc\;" - "s_waitcnt\t0\;buffer_gl0_inv" + return (TARGET_RDNA2 + ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_load%o0\t%0, %A1%O1 glc dlc\;" + "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv" + : TARGET_RDNA3 + ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_load%o0\t%0, %A1%O1 glc\;" + "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv" : "buffer_wbinvl1_vol\;flat_load%o0\t%0, %A1%O1 glc\;" "s_waitcnt\t0\;buffer_wbinvl1_vol"); case 2: - return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;global_load%o0\t%0, %A1%O1 glc\;" - "s_waitcnt\tvmcnt(0)\;buffer_gl0_inv" + return (TARGET_RDNA2 + ? "buffer_gl1_inv\;buffer_gl0_inv\;global_load%o0\t%0, %A1%O1 glc dlc\;" + "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv" + : TARGET_RDNA3 + ? "buffer_gl1_inv\;buffer_gl0_inv\;global_load%o0\t%0, %A1%O1 glc\;" + "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv" : "buffer_wbinvl1_vol\;global_load%o0\t%0, %A1%O1 glc\;" "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"); } @@ -2147,7 +2171,7 @@ gcc_unreachable (); } [(set_attr "type" "smem,flat,flat") - (set_attr "length" "20") + (set_attr "length" "28") (set_attr "gcn_version" "gcn5,*,gcn5") (set_attr "rdna" "no,*,*")]) @@ -2180,11 +2204,11 @@ return "s_dcache_wb_vol\;s_store%o1\t%1, %A0 glc"; case 1: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 glc" + ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 glc" : "buffer_wbinvl1_vol\;flat_store%o1\t%A0, %1%O0 glc"); case 2: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 glc" + ? "buffer_gl1_inv\;buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 glc" : "buffer_wbinvl1_vol\;global_store%o1\t%A0, %1%O0 glc"); } break; @@ -2198,14 +2222,14 @@ "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol"; case 1: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 glc\;" - "s_waitcnt\t0\;buffer_gl0_inv" + ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 glc\;" + "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv" : "buffer_wbinvl1_vol\;flat_store%o1\t%A0, %1%O0 glc\;" "s_waitcnt\t0\;buffer_wbinvl1_vol"); case 2: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 glc\;" - "s_waitcnt\tvmcnt(0)\;buffer_gl0_inv" + ? "buffer_gl1_inv\;buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 glc\;" + "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv" : "buffer_wbinvl1_vol\;global_store%o1\t%A0, %1%O0 glc\;" "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"); } @@ -2214,7 +2238,7 @@ gcc_unreachable (); } [(set_attr "type" "smem,flat,flat") - (set_attr "length" "20") + (set_attr "length" "28") (set_attr "gcn_version" "gcn5,*,gcn5") (set_attr "rdna" "no,*,*")]) @@ -2253,13 +2277,13 @@ case 1: return (TARGET_RDNA2_PLUS ? "flat_atomic_swap\t%0, %1, %2 glc\;s_waitcnt\t0\;" - "buffer_gl0_inv" + "buffer_gl1_inv\;buffer_gl0_inv" : "flat_atomic_swap\t%0, %1, %2 glc\;s_waitcnt\t0\;" "buffer_wbinvl1_vol"); case 2: return (TARGET_RDNA2_PLUS ? "global_atomic_swap\t%0, %A1, %2%O1 glc\;" - "s_waitcnt\tvmcnt(0)\;buffer_gl0_inv" + "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv" : "global_atomic_swap\t%0, %A1, %2%O1 glc\;" "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"); } @@ -2273,13 +2297,13 @@ "s_waitcnt\tlgkmcnt(0)"; case 1: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;flat_atomic_swap\t%0, %1, %2 glc\;" + ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_atomic_swap\t%0, %1, %2 glc\;" "s_waitcnt\t0" : "buffer_wbinvl1_vol\;flat_atomic_swap\t%0, %1, %2 glc\;" "s_waitcnt\t0"); case 2: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;" + ? "buffer_gl1_inv\;buffer_gl0_inv\;" "global_atomic_swap\t%0, %A1, %2%O1 glc\;" "s_waitcnt\tvmcnt(0)" : "buffer_wbinvl1_vol\;" @@ -2297,15 +2321,15 @@ "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol"; case 1: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;flat_atomic_swap\t%0, %1, %2 glc\;" - "s_waitcnt\t0\;buffer_gl0_inv" + ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_atomic_swap\t%0, %1, %2 glc\;" + "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv" : "buffer_wbinvl1_vol\;flat_atomic_swap\t%0, %1, %2 glc\;" "s_waitcnt\t0\;buffer_wbinvl1_vol"); case 2: return (TARGET_RDNA2_PLUS - ? "buffer_gl0_inv\;" + ? "buffer_gl1_inv\;buffer_gl0_inv\;" "global_atomic_swap\t%0, %A1, %2%O1 glc\;" - "s_waitcnt\tvmcnt(0)\;buffer_gl0_inv" + "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv" : "buffer_wbinvl1_vol\;" "global_atomic_swap\t%0, %A1, %2%O1 glc\;" "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"); @@ -2315,7 +2339,7 @@ gcc_unreachable (); } [(set_attr "type" "smem,flat,flat") - (set_attr "length" "20") + (set_attr "length" "28") (set_attr "gcn_version" "gcn5,*,gcn5") (set_attr "rdna" "no,*,*")]) diff --git a/gcc/config/gcn/gcn.opt b/gcc/config/gcn/gcn.opt index 842fd36d25c9..42bb5f75a426 100644 --- a/gcc/config/gcn/gcn.opt +++ b/gcc/config/gcn/gcn.opt @@ -43,9 +43,15 @@ Enum(gpu_type) String(gfx90a) Value(PROCESSOR_GFX90a) EnumValue Enum(gpu_type) String(gfx1030) Value(PROCESSOR_GFX1030) +EnumValue +Enum(gpu_type) String(gfx1036) Value(PROCESSOR_GFX1036) + EnumValue Enum(gpu_type) String(gfx1100) Value(PROCESSOR_GFX1100) +EnumValue +Enum(gpu_type) String(gfx1103) Value(PROCESSOR_GFX1103) + march= Target RejectNegative Negative(march=) Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI) Specify the name of the target GPU. @@ -110,3 +116,19 @@ Compile for devices requiring XNACK enabled. Default \"any\" if USM is supported msram-ecc= Target RejectNegative Joined ToLower Enum(hsaco_attr_type) Var(flag_sram_ecc) Init(HSACO_ATTR_ANY) Compile for devices with the SRAM ECC feature enabled, or not. Default \"any\". + +-param=gcn-preferred-vectorization-factor= +Target Joined Enum(gcn_preferred_vectorization_factor) Var(gcn_preferred_vectorization_factor) Init(-1) Param +--param=gcn-preferred-vectorization-factor=[default,32,64] Preferred vectorization factor. + +Enum +Name(gcn_preferred_vectorization_factor) Type(int) + +EnumValue +Enum(gcn_preferred_vectorization_factor) String(default) Value(-1) + +EnumValue +Enum(gcn_preferred_vectorization_factor) String(32) Value(32) + +EnumValue +Enum(gcn_preferred_vectorization_factor) String(64) Value(64) diff --git a/gcc/config/gcn/mkoffload.cc b/gcc/config/gcn/mkoffload.cc index fe443abba217..9a438de331ad 100644 --- a/gcc/config/gcn/mkoffload.cc +++ b/gcc/config/gcn/mkoffload.cc @@ -35,6 +35,8 @@ #include "gomp-constants.h" #include "simple-object.h" #include "elf.h" +#include "configargs.h" /* For configure_default_options. */ +#include "multilib.h" /* For multilib_options. */ /* These probably won't (all) be in elf.h for a while. */ #undef EM_AMDGPU @@ -59,8 +61,12 @@ #define EF_AMDGPU_MACH_AMDGCN_GFX90a 0x3f #undef EF_AMDGPU_MACH_AMDGCN_GFX1030 #define EF_AMDGPU_MACH_AMDGCN_GFX1030 0x36 +#undef EF_AMDGPU_MACH_AMDGCN_GFX1036 +#define EF_AMDGPU_MACH_AMDGCN_GFX1036 0x45 #undef EF_AMDGPU_MACH_AMDGCN_GFX1100 #define EF_AMDGPU_MACH_AMDGCN_GFX1100 0x41 +#undef EF_AMDGPU_MACH_AMDGCN_GFX1103 +#define EF_AMDGPU_MACH_AMDGCN_GFX1103 0x44 #define EF_AMDGPU_FEATURE_XNACK_V4 0x300 /* Mask. */ #define EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4 0x000 @@ -842,6 +848,62 @@ compile_native (const char *infile, const char *outfile, const char *compiler, obstack_free (&argv_obstack, NULL); } +static int +get_arch (const char *str, const char *with_arch_str) +{ + if (strcmp (str, "fiji") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX803; + else if (strcmp (str, "gfx900") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX900; + else if (strcmp (str, "gfx906") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX906; + else if (strcmp (str, "gfx908") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX908; + else if (strcmp (str, "gfx90a") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX90a; + else if (strcmp (str, "gfx1030") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX1030; + else if (strcmp (str, "gfx1036") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX1036; + else if (strcmp (str, "gfx1100") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX1100; + else if (strcmp (str, "gfx1103") == 0) + return EF_AMDGPU_MACH_AMDGCN_GFX1103; + + error ("unrecognized argument in option %<-march=%s%>", str); + + /* The suggestions are based on the configured multilib support; the compiler + itself might support more. */ + if (multilib_options[0] != '\0') + { + /* Example: "march=gfx900/march=gfx906" */ + char *args = (char *) alloca (strlen (multilib_options)); + const char *p = multilib_options, *q = NULL; + args[0] = '\0'; + while (true) + { + p = strchr (p, '='); + if (!p) + break; + if (q) + strcat (args, ", "); + ++p; + q = strchr (p, '/'); + if (q) + strncat (args, p, q-p); + else + strcat (args, p); + } + inform (UNKNOWN_LOCATION, "valid arguments to %<-march=%> are: %s", args); + } + else if (with_arch_str) + inform (UNKNOWN_LOCATION, "valid argument to %<-march=%> is %qs", with_arch_str); + + exit (FATAL_EXIT_CODE); + + return 0; +} + int main (int argc, char **argv) { @@ -849,9 +911,21 @@ main (int argc, char **argv) FILE *out = stdout; FILE *cfile = stdout; const char *outname = 0; + const char *with_arch_str = NULL; progname = tool_name; + gcc_init_libintl (); diagnostic_initialize (global_dc, 0); + diagnostic_color_init (global_dc); + + for (size_t i = 0; i < ARRAY_SIZE (configure_default_options); i++) + if (configure_default_options[i].name != NULL + && strcmp (configure_default_options[i].name, "arch") == 0) + { + with_arch_str = configure_default_options[0].value; + elf_arch = get_arch (configure_default_options[0].value, NULL); + break; + } obstack_init (&files_to_cleanup); if (atexit (mkoffload_cleanup) != 0) @@ -957,20 +1031,8 @@ main (int argc, char **argv) else if (strcmp (argv[i], "-dumpbase") == 0 && i + 1 < argc) dumppfx = argv[++i]; - else if (strcmp (argv[i], "-march=fiji") == 0) - elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX803; - else if (strcmp (argv[i], "-march=gfx900") == 0) - elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX900; - else if (strcmp (argv[i], "-march=gfx906") == 0) - elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX906; - else if (strcmp (argv[i], "-march=gfx908") == 0) - elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX908; - else if (strcmp (argv[i], "-march=gfx90a") == 0) - elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX90a; - else if (strcmp (argv[i], "-march=gfx1030") == 0) - elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX1030; - else if (strcmp (argv[i], "-march=gfx1100") == 0) - elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX1100; + else if (startswith (argv[i], "-march=")) + elf_arch = get_arch (argv[i] + strlen ("-march="), with_arch_str); #define STR "-mstack-size=" else if (startswith (argv[i], STR)) gcn_stack_size = atoi (argv[i] + strlen (STR)); @@ -1012,7 +1074,9 @@ main (int argc, char **argv) { case EF_AMDGPU_MACH_AMDGCN_GFX803: case EF_AMDGPU_MACH_AMDGCN_GFX1030: + case EF_AMDGPU_MACH_AMDGCN_GFX1036: case EF_AMDGPU_MACH_AMDGCN_GFX1100: + case EF_AMDGPU_MACH_AMDGCN_GFX1103: SET_XNACK_UNSET (elf_flags); SET_SRAM_ECC_UNSET (elf_flags); break; diff --git a/gcc/config/gcn/t-omp-device b/gcc/config/gcn/t-omp-device index 2315ad594a38..7bcf910cbd0f 100644 --- a/gcc/config/gcn/t-omp-device +++ b/gcc/config/gcn/t-omp-device @@ -1,4 +1,4 @@ omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.cc echo kind: gpu > $@ echo arch: amdgcn gcn >> $@ - echo isa: fiji gfx803 gfx900 gfx906 gfx908 gfx90a gfx1030 gfx1100 >> $@ + echo isa: fiji gfx803 gfx900 gfx906 gfx908 gfx90a gfx1030 gfx1036 gfx1100 gfx1103 >> $@ diff --git a/gcc/config/gnu.h b/gcc/config/gnu.h index ac99f7605475..e2a33baf0402 100644 --- a/gcc/config/gnu.h +++ b/gcc/config/gnu.h @@ -31,3 +31,19 @@ along with GCC. If not, see . builtin_assert ("system=unix"); \ builtin_assert ("system=posix"); \ } while (0) + + +#ifndef GNU_USER_TARGET_STARTFILE_SPEC +# warning This file should be included after gnu-user.h, to override its STARTFILE_SPEC +#endif + +#undef STARTFILE_SPEC +#if defined HAVE_LD_PIE +#define STARTFILE_SPEC \ + "%{!shared: %{pg|p|profile:%{static-pie:grcrt0.o%s;static:gcrt0.o%s;:gcrt1.o%s};static-pie:rcrt0.o%s;static:crt0.o%s;" PIE_SPEC ":Scrt1.o%s;:crt1.o%s}} \ + crti.o%s %{static:crtbeginT.o%s;shared|static-pie|" PIE_SPEC ":crtbeginS.o%s;:crtbegin.o%s}" +#else +#define STARTFILE_SPEC \ + "%{!shared: %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};static:crt0.o%s;:crt1.o%s}} \ + crti.o%s %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}" +#endif diff --git a/gcc/config/h8300/extensions.md b/gcc/config/h8300/extensions.md index 7149dc0ac52e..a1e8c4abd37e 100644 --- a/gcc/config/h8300/extensions.md +++ b/gcc/config/h8300/extensions.md @@ -12,8 +12,8 @@ }) (define_insn_and_split "*zero_extendqihi2" - [(set (match_operand:HI 0 "register_operand" "=r,r") - (zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))] + [(set (match_operand:HI 0 "register_operand" "=r,r,r") + (zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,r,g>")))] "" "#" "&& reload_completed" @@ -21,14 +21,15 @@ (clobber (reg:CC CC_REG))])]) (define_insn "*zero_extendqihi2" - [(set (match_operand:HI 0 "register_operand" "=r,r") - (zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>"))) + [(set (match_operand:HI 0 "register_operand" "=r,r,r") + (zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,r,g>"))) (clobber (reg:CC CC_REG))] "" "@ extu.w %T0 + mov.b\t%X1,%R0\;extu.w\t%T0 #" - [(set_attr "length" "2,10")]) + [(set_attr "length" "2,4,10")]) ;; Split the zero extension of a general operand (actually a memory ;; operand) into a load of the operand and the actual zero extension diff --git a/gcc/config/i386/driver-i386.cc b/gcc/config/i386/driver-i386.cc index 04f523963565..bb53af4b2039 100644 --- a/gcc/config/i386/driver-i386.cc +++ b/gcc/config/i386/driver-i386.cc @@ -492,6 +492,8 @@ const char *host_detect_local_cpu (int argc, const char **argv) processor = PROCESSOR_GEODE; else if (has_feature (FEATURE_MOVBE) && family == 22) processor = PROCESSOR_BTVER2; + else if (has_feature (FEATURE_AVX512VP2INTERSECT)) + processor = PROCESSOR_ZNVER5; else if (has_feature (FEATURE_AVX512F)) processor = PROCESSOR_ZNVER4; else if (has_feature (FEATURE_VAES)) @@ -834,6 +836,9 @@ const char *host_detect_local_cpu (int argc, const char **argv) case PROCESSOR_ZNVER4: cpu = "znver4"; break; + case PROCESSOR_ZNVER5: + cpu = "znver5"; + break; case PROCESSOR_BTVER1: cpu = "btver1"; break; diff --git a/gcc/config/i386/gnu.h b/gcc/config/i386/gnu.h index 3f42714d16cb..af1d55887ed9 100644 --- a/gcc/config/i386/gnu.h +++ b/gcc/config/i386/gnu.h @@ -24,17 +24,6 @@ along with GCC. If not, see . #undef GNU_USER_DYNAMIC_LINKER #define GNU_USER_DYNAMIC_LINKER "/lib/ld.so" -#undef STARTFILE_SPEC -#if defined HAVE_LD_PIE -#define STARTFILE_SPEC \ - "%{!shared: %{pg|p|profile:%{static-pie:grcrt0.o%s;static:gcrt0.o%s;:gcrt1.o%s};static-pie:rcrt0.o%s;static:crt0.o%s;" PIE_SPEC ":Scrt1.o%s;:crt1.o%s}} \ - crti.o%s %{static:crtbeginT.o%s;shared|static-pie|" PIE_SPEC ":crtbeginS.o%s;:crtbegin.o%s}" -#else -#define STARTFILE_SPEC \ - "%{!shared: %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};static:crt0.o%s;:crt1.o%s}} \ - crti.o%s %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}" -#endif - #ifdef TARGET_LIBC_PROVIDES_SSP /* i386 glibc provides __stack_chk_guard in %gs:0x14. */ diff --git a/gcc/config/i386/i386-c.cc b/gcc/config/i386/i386-c.cc index 366b560158a1..07f4936ba910 100644 --- a/gcc/config/i386/i386-c.cc +++ b/gcc/config/i386/i386-c.cc @@ -136,6 +136,10 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__znver4"); def_or_undef (parse_in, "__znver4__"); break; + case PROCESSOR_ZNVER5: + def_or_undef (parse_in, "__znver5"); + def_or_undef (parse_in, "__znver5__"); + break; case PROCESSOR_BTVER1: def_or_undef (parse_in, "__btver1"); def_or_undef (parse_in, "__btver1__"); @@ -374,6 +378,9 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, case PROCESSOR_ZNVER4: def_or_undef (parse_in, "__tune_znver4__"); break; + case PROCESSOR_ZNVER5: + def_or_undef (parse_in, "__tune_znver5__"); + break; case PROCESSOR_BTVER1: def_or_undef (parse_in, "__tune_btver1__"); break; @@ -742,6 +749,10 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, } if (isa_flag2 & OPTION_MASK_ISA2_AVX10_1_512) def_or_undef (parse_in, "__AVX10_1_512__"); + if (isa_flag2 & OPTION_MASK_ISA2_APX_F) + def_or_undef (parse_in, "__APX_F__"); + if (ix86_apx_inline_asm_use_gpr32) + def_or_undef (parse_in, "__APX_INLINE_ASM_USE_GPR32__"); if (TARGET_IAMCU) { def_or_undef (parse_in, "__iamcu"); diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index 2210e6f7cc85..8bb8f21e6860 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -4690,7 +4690,7 @@ ix86_expand_int_sse_cmp (rtx dest, enum rtx_code code, rtx cop0, rtx cop1, rtx elt = CONST_VECTOR_ELT (cop1, i); if (!CONST_INT_P (elt)) break; - if (code == GE) + if (code == LE) { /* For LE punt if some element is signed maximum. */ if ((INTVAL (elt) & (GET_MODE_MASK (eltmode) >> 1)) diff --git a/gcc/config/i386/i386-features.cc b/gcc/config/i386/i386-features.cc index 1de2a07ed75c..e3e004d55267 100644 --- a/gcc/config/i386/i386-features.cc +++ b/gcc/config/i386/i386-features.cc @@ -980,14 +980,35 @@ scalar_chain::convert_reg (rtx_insn *insn, rtx dst, rtx src) REGNO (src), REGNO (dst), INSN_UID (insn)); } +/* Helper function to convert immediate constant X to vmode. */ +static rtx +smode_convert_cst (rtx x, enum machine_mode vmode) +{ + /* Prefer all ones vector in case of -1. */ + if (constm1_operand (x, GET_MODE (x))) + return CONSTM1_RTX (vmode); + + unsigned n = GET_MODE_NUNITS (vmode); + rtx *v = XALLOCAVEC (rtx, n); + v[0] = x; + for (unsigned i = 1; i < n; ++i) + v[i] = const0_rtx; + return gen_rtx_CONST_VECTOR (vmode, gen_rtvec_v (n, v)); +} + /* Convert operand OP in INSN. We should handle memory operands and uninitialized registers. All other register uses are converted during registers conversion. */ void -general_scalar_chain::convert_op (rtx *op, rtx_insn *insn) +scalar_chain::convert_op (rtx *op, rtx_insn *insn) { + rtx tmp; + + if (GET_MODE (*op) == V1TImode) + return; + *op = copy_rtx_if_shared (*op); if (GET_CODE (*op) == NOT @@ -998,47 +1019,48 @@ general_scalar_chain::convert_op (rtx *op, rtx_insn *insn) } else if (MEM_P (*op)) { - rtx tmp = gen_reg_rtx (GET_MODE (*op)); + rtx_insn *movabs = NULL; - /* Handle movabs. */ + /* Emit MOVABS to load from a 64-bit absolute address to a GPR. */ if (!memory_operand (*op, GET_MODE (*op))) { - rtx tmp2 = gen_reg_rtx (GET_MODE (*op)); + tmp = gen_reg_rtx (GET_MODE (*op)); + movabs = emit_insn_before (gen_rtx_SET (tmp, *op), insn); - emit_insn_before (gen_rtx_SET (tmp2, *op), insn); - *op = tmp2; + *op = tmp; } - emit_insn_before (gen_rtx_SET (gen_rtx_SUBREG (vmode, tmp, 0), - gen_gpr_to_xmm_move_src (vmode, *op)), - insn); - *op = gen_rtx_SUBREG (vmode, tmp, 0); + tmp = gen_rtx_SUBREG (vmode, gen_reg_rtx (GET_MODE (*op)), 0); + + rtx_insn *eh_insn + = emit_insn_before (gen_rtx_SET (copy_rtx (tmp), + gen_gpr_to_xmm_move_src (vmode, *op)), + insn); + + if (cfun->can_throw_non_call_exceptions) + { + /* Handle REG_EH_REGION note. */ + rtx note = find_reg_note (insn, REG_EH_REGION, NULL_RTX); + if (note) + { + if (movabs) + eh_insn = movabs; + control_flow_insns.safe_push (eh_insn); + add_reg_note (eh_insn, REG_EH_REGION, XEXP (note, 0)); + } + } + + *op = tmp; if (dump_file) fprintf (dump_file, " Preloading operand for insn %d into r%d\n", INSN_UID (insn), REGNO (tmp)); } else if (REG_P (*op)) + *op = gen_rtx_SUBREG (vmode, *op, 0); + else if (CONST_SCALAR_INT_P (*op)) { - *op = gen_rtx_SUBREG (vmode, *op, 0); - } - else if (CONST_INT_P (*op)) - { - rtx vec_cst; - rtx tmp = gen_rtx_SUBREG (vmode, gen_reg_rtx (smode), 0); - - /* Prefer all ones vector in case of -1. */ - if (constm1_operand (*op, GET_MODE (*op))) - vec_cst = CONSTM1_RTX (vmode); - else - { - unsigned n = GET_MODE_NUNITS (vmode); - rtx *v = XALLOCAVEC (rtx, n); - v[0] = *op; - for (unsigned i = 1; i < n; ++i) - v[i] = const0_rtx; - vec_cst = gen_rtx_CONST_VECTOR (vmode, gen_rtvec_v (n, v)); - } + rtx vec_cst = smode_convert_cst (*op, vmode); if (!standard_sse_constant_p (vec_cst, vmode)) { @@ -1049,6 +1071,8 @@ general_scalar_chain::convert_op (rtx *op, rtx_insn *insn) emit_insn_before (seq, insn); } + tmp = gen_rtx_SUBREG (vmode, gen_reg_rtx (smode), 0); + emit_insn_before (gen_move_insn (copy_rtx (tmp), vec_cst), insn); *op = tmp; } @@ -1751,67 +1775,6 @@ timode_scalar_chain::fix_debug_reg_uses (rtx reg) } } -/* Helper function to convert immediate constant X to V1TImode. */ -static rtx -timode_convert_cst (rtx x) -{ - /* Prefer all ones vector in case of -1. */ - if (constm1_operand (x, TImode)) - return CONSTM1_RTX (V1TImode); - - rtx *v = XALLOCAVEC (rtx, 1); - v[0] = x; - return gen_rtx_CONST_VECTOR (V1TImode, gen_rtvec_v (1, v)); -} - -/* Convert operand OP in INSN from TImode to V1TImode. */ - -void -timode_scalar_chain::convert_op (rtx *op, rtx_insn *insn) -{ - if (GET_MODE (*op) == V1TImode) - return; - - *op = copy_rtx_if_shared (*op); - - if (REG_P (*op)) - *op = gen_rtx_SUBREG (V1TImode, *op, 0); - else if (MEM_P (*op)) - { - rtx tmp = gen_reg_rtx (V1TImode); - emit_insn_before (gen_rtx_SET (tmp, - gen_gpr_to_xmm_move_src (V1TImode, *op)), - insn); - *op = tmp; - - if (dump_file) - fprintf (dump_file, " Preloading operand for insn %d into r%d\n", - INSN_UID (insn), REGNO (tmp)); - } - else if (CONST_SCALAR_INT_P (*op)) - { - rtx tmp = gen_reg_rtx (V1TImode); - rtx vec_cst = timode_convert_cst (*op); - - if (!standard_sse_constant_p (vec_cst, V1TImode)) - { - start_sequence (); - vec_cst = validize_mem (force_const_mem (V1TImode, vec_cst)); - rtx_insn *seq = get_insns (); - end_sequence (); - emit_insn_before (seq, insn); - } - - emit_insn_before (gen_move_insn (tmp, vec_cst), insn); - *op = tmp; - } - else - { - gcc_assert (SUBREG_P (*op)); - gcc_assert (GET_MODE (*op) == vmode); - } -} - /* Convert INSN from TImode to V1T1mode. */ void @@ -1876,7 +1839,7 @@ timode_scalar_chain::convert_insn (rtx_insn *insn) } else { - src = timode_convert_cst (src); + src = smode_convert_cst (src, V1TImode); src = validize_mem (force_const_mem (V1TImode, src)); use_move = MEM_P (dst); } @@ -2494,6 +2457,7 @@ convert_scalars_to_vector (bool timode_p) { basic_block bb; int converted_insns = 0; + auto_vec control_flow_insns; bitmap_obstack_initialize (NULL); const machine_mode cand_mode[3] = { SImode, DImode, TImode }; @@ -2575,6 +2539,11 @@ convert_scalars_to_vector (bool timode_p) chain->chain_id); } + rtx_insn* iter_insn; + unsigned int ii; + FOR_EACH_VEC_ELT (chain->control_flow_insns, ii, iter_insn) + control_flow_insns.safe_push (iter_insn); + delete chain; } } @@ -2643,6 +2612,24 @@ convert_scalars_to_vector (bool timode_p) DECL_INCOMING_RTL (parm) = gen_rtx_SUBREG (TImode, r, 0); } } + + if (!control_flow_insns.is_empty ()) + { + free_dominance_info (CDI_DOMINATORS); + + unsigned int i; + rtx_insn* insn; + FOR_EACH_VEC_ELT (control_flow_insns, i, insn) + if (control_flow_insn_p (insn)) + { + /* Split the block after insn. There will be a fallthru + edge, which is OK so we keep it. We have to create + the exception edges ourselves. */ + bb = BLOCK_FOR_INSN (insn); + split_block (bb, insn); + rtl_make_eh_edge (NULL, bb, BB_END (bb)); + } + } } return 0; diff --git a/gcc/config/i386/i386-features.h b/gcc/config/i386/i386-features.h index 8bab2d8666de..fbf72377afb8 100644 --- a/gcc/config/i386/i386-features.h +++ b/gcc/config/i386/i386-features.h @@ -155,6 +155,7 @@ class scalar_chain hash_map defs_map; unsigned n_sse_to_integer; unsigned n_integer_to_sse; + auto_vec control_flow_insns; bool build (bitmap candidates, unsigned insn_uid, bitmap disallowed); virtual int compute_convert_gain () = 0; @@ -169,13 +170,13 @@ class scalar_chain void convert_insn_common (rtx_insn *insn); void make_vector_copies (rtx_insn *, rtx); void convert_registers (); + void convert_op (rtx *op, rtx_insn *insn); private: bool add_insn (bitmap candidates, unsigned insn_uid, bitmap disallowed); bool analyze_register_chain (bitmap candidates, df_ref ref, bitmap disallowed); virtual void convert_insn (rtx_insn *insn) = 0; - virtual void convert_op (rtx *op, rtx_insn *insn) = 0; }; class general_scalar_chain : public scalar_chain @@ -187,7 +188,6 @@ class general_scalar_chain : public scalar_chain private: void convert_insn (rtx_insn *insn) final override; - void convert_op (rtx *op, rtx_insn *insn) final override; int vector_const_cost (rtx exp); rtx convert_rotate (enum rtx_code, rtx op0, rtx op1, rtx_insn *insn); }; @@ -201,7 +201,6 @@ class timode_scalar_chain : public scalar_chain private: void fix_debug_reg_uses (rtx reg); void convert_insn (rtx_insn *insn) final override; - void convert_op (rtx *op, rtx_insn *insn) final override; }; } // anon namespace diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc index 3cc147fa70c3..68a2e1c69109 100644 --- a/gcc/config/i386/i386-options.cc +++ b/gcc/config/i386/i386-options.cc @@ -174,11 +174,12 @@ along with GCC; see the file COPYING3. If not see #define m_ZNVER2 (HOST_WIDE_INT_1U<x_flag_hardened && cf_okay_p) { - if (opts->x_flag_cf_protection == CF_NONE) + if (!opts_set->x_flag_cf_protection) opts->x_flag_cf_protection = CF_FULL; else if (opts->x_flag_cf_protection != CF_FULL) warning_at (UNKNOWN_LOCATION, OPT_Whardened, diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index 4b6b665e5997..4d6b2b98761d 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -4643,7 +4643,8 @@ ix86_setup_incoming_varargs (cumulative_args_t cum_v, /* For varargs, we do not want to skip the dummy va_dcl argument. For stdargs, we do want to skip the last named argument. */ next_cum = *cum; - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + if ((!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) && stdarg_p (fntype)) ix86_function_arg_advance (pack_cumulative_args (&next_cum), arg); @@ -24468,7 +24469,8 @@ ix86_reassociation_width (unsigned int op, machine_mode mode) /* Integer vector instructions execute in FP unit and can execute 3 additions and one multiplication per cycle. */ if ((ix86_tune == PROCESSOR_ZNVER1 || ix86_tune == PROCESSOR_ZNVER2 - || ix86_tune == PROCESSOR_ZNVER3 || ix86_tune == PROCESSOR_ZNVER4) + || ix86_tune == PROCESSOR_ZNVER3 || ix86_tune == PROCESSOR_ZNVER4 + || ix86_tune == PROCESSOR_ZNVER5) && INTEGRAL_MODE_P (mode) && op != PLUS && op != MINUS) return 1; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index efd46a143136..529edff93a41 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -2320,6 +2320,7 @@ enum processor_type PROCESSOR_ZNVER2, PROCESSOR_ZNVER3, PROCESSOR_ZNVER4, + PROCESSOR_ZNVER5, PROCESSOR_max }; @@ -2442,7 +2443,8 @@ constexpr wide_int_bitmask PTA_ZNVER4 = PTA_ZNVER3 | PTA_AVX512F | PTA_AVX512DQ | PTA_AVX512IFMA | PTA_AVX512CD | PTA_AVX512BW | PTA_AVX512VL | PTA_AVX512BF16 | PTA_AVX512VBMI | PTA_AVX512VBMI2 | PTA_GFNI | PTA_AVX512VNNI | PTA_AVX512BITALG | PTA_AVX512VPOPCNTDQ | PTA_EVEX512; - +constexpr wide_int_bitmask PTA_ZNVER5 = PTA_ZNVER4 | PTA_AVXVNNI + | PTA_MOVDIRI | PTA_MOVDIR64B | PTA_AVX512VP2INTERSECT | PTA_PREFETCHI; constexpr wide_int_bitmask PTA_LUJIAZUI = PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_BMI | PTA_BMI2 | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index df97a2d6270d..d4ce3809e6d5 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -518,7 +518,8 @@ ;; Processor type. (define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,nehalem, atom,slm,glm,haswell,generic,lujiazui,yongfeng,amdfam10,bdver1, - bdver2,bdver3,bdver4,btver2,znver1,znver2,znver3,znver4" + bdver2,bdver3,bdver4,btver2,znver1,znver2,znver3,znver4, + znver5" (const (symbol_ref "ix86_schedule"))) ;; A basic instruction type. Refinements due to arguments to be @@ -543,8 +544,9 @@ ;; Main data type used by the insn (define_attr "mode" - "unknown,none,QI,HI,SI,DI,TI,OI,XI,HF,BF,SF,DF,XF,TF,V32HF,V16HF,V8HF, - V16SF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,V8DF,V4HF,V4BF,V2HF,V2BF" + "unknown,none,QI,HI,SI,DI,TI,OI,XI,HF,BF,SF,DF,XF,TF, + V32HF,V16HF,V8HF,V4HF,V2HF,V32BF,V16BF,V8BF,V4BF,V2BF, + V16SF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,V8DF" (const_string "unknown")) ;; The CPU unit operations uses. @@ -566,13 +568,14 @@ ;; Used to control the "enabled" attribute on a per-instruction basis. (define_attr "isa" "base,x64,nox64,x64_sse2,x64_sse4,x64_sse4_noavx, - x64_avx,x64_avx512bw,x64_avx512dq,aes,apx_ndd, + x64_avx,x64_avx512bw,x64_avx512dq,apx_ndd, sse_noavx,sse2,sse2_noavx,sse3,sse3_noavx,sse4,sse4_noavx, avx,noavx,avx2,noavx2,bmi,bmi2,fma4,fma,avx512f,avx512f_512, noavx512f,avx512bw,avx512bw_512,noavx512bw,avx512dq, noavx512dq,fma_or_avx512vl,avx512vl,noavx512vl,avxvnni, avx512vnnivl,avx512fp16,avxifma,avx512ifmavl,avxneconvert, - avx512bf16vl,vpclmulqdqvl,avx_noavx512f,avx_noavx512vl" + avx512bf16vl,vpclmulqdqvl,avx_noavx512f,avx_noavx512vl, + vaes_avx512vl" (const_string "base")) ;; The (bounding maximum) length of an instruction immediate. @@ -913,7 +916,6 @@ (symbol_ref "TARGET_64BIT && TARGET_AVX512BW") (eq_attr "isa" "x64_avx512dq") (symbol_ref "TARGET_64BIT && TARGET_AVX512DQ") - (eq_attr "isa" "aes") (symbol_ref "TARGET_AES") (eq_attr "isa" "sse_noavx") (symbol_ref "TARGET_SSE && !TARGET_AVX") (eq_attr "isa" "sse2") (symbol_ref "TARGET_SSE2") @@ -966,6 +968,8 @@ (symbol_ref "TARGET_VPCLMULQDQ && TARGET_AVX512VL") (eq_attr "isa" "apx_ndd") (symbol_ref "TARGET_APX_NDD") + (eq_attr "isa" "vaes_avx512vl") + (symbol_ref "TARGET_VAES && TARGET_AVX512VL") (eq_attr "mmx_isa" "native") (symbol_ref "!TARGET_MMX_WITH_SSE") @@ -1323,6 +1327,8 @@ ;; SSE and x87 SFmode and DFmode floating point modes (define_mode_iterator MODEF [SF DF]) +(define_mode_iterator MODEF248 [BF HF SF (DF "TARGET_SSE2")]) + ;; SSE floating point modes (define_mode_iterator MODEFH [(HF "TARGET_AVX512FP16") SF DF]) @@ -1347,7 +1353,8 @@ (V64QI "b") (V32HI "w") (V16SI "d") (V8DI "q")]) ;; SSE vector suffix for floating point modes -(define_mode_attr ssevecmodesuffix [(SF "ps") (DF "pd")]) +;; BF HF use same suffix as SF for logic operations. +(define_mode_attr ssevecmodesuffix [(BF "ps") (HF "ps") (SF "ps") (DF "pd")]) ;; SSE vector mode corresponding to a scalar mode (define_mode_attr ssevecmode @@ -1357,7 +1364,8 @@ ;; AVX512F vector mode corresponding to a scalar mode (define_mode_attr avx512fvecmode - [(QI "V64QI") (HI "V32HI") (SI "V16SI") (DI "V8DI") (SF "V16SF") (DF "V8DF")]) + [(QI "V64QI") (HI "V32HI") (SI "V16SI") (DI "V8DI") + (HF "V32HF") (BF "V32BF") (SF "V16SF") (DF "V8DF")]) ;; Instruction suffix for REX 64bit operators. (define_mode_attr rex64suffix [(SI "{l}") (DI "{q}")]) @@ -1387,7 +1395,7 @@ (include "bdver3.md") (include "btver2.md") (include "znver.md") -(include "znver4.md") +(include "zn4zn5.md") (include "geode.md") (include "atom.md") (include "slm.md") @@ -2213,9 +2221,9 @@ (define_insn "@pushfl2" [(set (match_operand:W 0 "push_operand" "=<") - (unspec:W [(match_operand:CC 1 "flags_reg_operand")] + (unspec:W [(match_operand 1 "flags_reg_operand")] UNSPEC_PUSHFL))] - "" + "GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_CC" "pushf{}" [(set_attr "type" "push") (set_attr "mode" "")]) @@ -14497,7 +14505,7 @@ (and:QI (match_dup 2) (const_int 63)))) 0))) (clobber (reg:CC FLAGS_REG))] "TARGET_64BIT" - "shld{q}\t{%s2%1, %0|%0, %1, %2}" + "shld{q}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "DI") @@ -14518,7 +14526,7 @@ (and:QI (match_dup 3) (const_int 63)))) 0))) (clobber (reg:CC FLAGS_REG))] "TARGET_APX_NDD" - "shld{q}\t{%s3%2, %1, %0|%0, %1, %2, %3}" + "shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "DI")]) @@ -14675,7 +14683,7 @@ (and:QI (match_dup 2) (const_int 31)))) 0))) (clobber (reg:CC FLAGS_REG))] "" - "shld{l}\t{%s2%1, %0|%0, %1, %2}" + "shld{l}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "SI") @@ -14697,7 +14705,7 @@ (and:QI (match_dup 3) (const_int 31)))) 0))) (clobber (reg:CC FLAGS_REG))] "TARGET_APX_NDD" - "shld{l}\t{%s3%2, %1, %0|%0, %1, %2, %3}" + "shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "SI")]) @@ -15786,7 +15794,7 @@ (and:QI (match_dup 2) (const_int 63)))) 0))) (clobber (reg:CC FLAGS_REG))] "TARGET_64BIT" - "shrd{q}\t{%s2%1, %0|%0, %1, %2}" + "shrd{q}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "DI") @@ -15807,7 +15815,7 @@ (and:QI (match_dup 3) (const_int 63)))) 0))) (clobber (reg:CC FLAGS_REG))] "TARGET_APX_NDD" - "shrd{q}\t{%s3%2, %1, %0|%0, %1, %2, %3}" + "shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "DI")]) @@ -15965,7 +15973,7 @@ (and:QI (match_dup 2) (const_int 31)))) 0))) (clobber (reg:CC FLAGS_REG))] "" - "shrd{l}\t{%s2%1, %0|%0, %1, %2}" + "shrd{l}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "SI") @@ -15987,7 +15995,7 @@ (and:QI (match_dup 3) (const_int 31)))) 0))) (clobber (reg:CC FLAGS_REG))] "TARGET_APX_NDD" - "shrd{l}\t{%s3%2, %1, %0|%0, %1, %2, %3}" + "shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "SI")]) diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls index fa821eba2006..81c5bb9a9270 100644 --- a/gcc/config/i386/i386.opt.urls +++ b/gcc/config/i386/i386.opt.urls @@ -128,7 +128,7 @@ mstackrealign UrlSuffix(gcc/x86-Options.html#index-mstackrealign) mtls-dialect= -UrlSuffix(gcc/x86-Options.html#index-mtls-dialect-1) +UrlSuffix(gcc/x86-Options.html#index-mtls-dialect-2) mtls-direct-seg-refs UrlSuffix(gcc/x86-Options.html#index-mtls-direct-seg-refs) diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 1bc614ab7027..5bb49823f9a5 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -5125,12 +5125,12 @@ ;; because the native instructions read the full 128-bits. (define_insn "*andnot3" - [(set (match_operand:MODEF 0 "register_operand" "=x,x,v,v") - (and:MODEF - (not:MODEF - (match_operand:MODEF 1 "register_operand" "0,x,v,v")) - (match_operand:MODEF 2 "register_operand" "x,x,v,v")))] - "SSE_FLOAT_MODE_P (mode)" + [(set (match_operand:MODEF248 0 "register_operand" "=x,x,v,v") + (and:MODEF248 + (not:MODEF248 + (match_operand:MODEF248 1 "register_operand" "0,x,v,v")) + (match_operand:MODEF248 2 "register_operand" "x,x,v,v")))] + "TARGET_SSE" { char buf[128]; const char *ops; @@ -5257,11 +5257,11 @@ (const_string "TI")))]) (define_insn "3" - [(set (match_operand:MODEF 0 "register_operand" "=x,x,v,v") - (any_logic:MODEF - (match_operand:MODEF 1 "register_operand" "%0,x,v,v") - (match_operand:MODEF 2 "register_operand" "x,x,v,v")))] - "SSE_FLOAT_MODE_P (mode)" + [(set (match_operand:MODEF248 0 "register_operand" "=x,x,v,v") + (any_logic:MODEF248 + (match_operand:MODEF248 1 "register_operand" "%0,x,v,v") + (match_operand:MODEF248 2 "register_operand" "x,x,v,v")))] + "TARGET_SSE" { char buf[128]; const char *ops; @@ -26279,72 +26279,72 @@ (define_insn "aesenc" [(set (match_operand:V2DI 0 "register_operand" "=x,x,v") (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0,x,v") - (match_operand:V2DI 2 "vector_operand" "xja,xm,vm")] + (match_operand:V2DI 2 "vector_operand" "xja,xjm,vm")] UNSPEC_AESENC))] "TARGET_AES || (TARGET_VAES && TARGET_AVX512VL)" "@ aesenc\t{%2, %0|%0, %2} - vaesenc\t{%2, %1, %0|%0, %1, %2} + * return TARGET_AES ? \"vaesenc\t{%2, %1, %0|%0, %1, %2}\" : \"%{evex%} vaesenc\t{%2, %1, %0|%0, %1, %2}\"; vaesenc\t{%2, %1, %0|%0, %1, %2}" - [(set_attr "isa" "noavx,aes,avx512vl") + [(set_attr "isa" "noavx,avx,vaes_avx512vl") (set_attr "type" "sselog1") (set_attr "addr" "gpr16,*,*") (set_attr "prefix_extra" "1") - (set_attr "prefix" "orig,vex,evex") + (set_attr "prefix" "orig,maybe_evex,evex") (set_attr "btver2_decode" "double,double,double") (set_attr "mode" "TI")]) (define_insn "aesenclast" [(set (match_operand:V2DI 0 "register_operand" "=x,x,v") (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0,x,v") - (match_operand:V2DI 2 "vector_operand" "xja,xm,vm")] + (match_operand:V2DI 2 "vector_operand" "xja,xjm,vm")] UNSPEC_AESENCLAST))] "TARGET_AES || (TARGET_VAES && TARGET_AVX512VL)" "@ aesenclast\t{%2, %0|%0, %2} - vaesenclast\t{%2, %1, %0|%0, %1, %2} + * return TARGET_AES ? \"vaesenclast\t{%2, %1, %0|%0, %1, %2}\" : \"%{evex%} vaesenclast\t{%2, %1, %0|%0, %1, %2}\"; vaesenclast\t{%2, %1, %0|%0, %1, %2}" - [(set_attr "isa" "noavx,aes,avx512vl") + [(set_attr "isa" "noavx,avx,vaes_avx512vl") (set_attr "type" "sselog1") (set_attr "addr" "gpr16,*,*") (set_attr "prefix_extra" "1") - (set_attr "prefix" "orig,vex,evex") - (set_attr "btver2_decode" "double,double,double") + (set_attr "prefix" "orig,maybe_evex,evex") + (set_attr "btver2_decode" "double,double,double") (set_attr "mode" "TI")]) (define_insn "aesdec" [(set (match_operand:V2DI 0 "register_operand" "=x,x,v") (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0,x,v") - (match_operand:V2DI 2 "vector_operand" "xja,xm,vm")] + (match_operand:V2DI 2 "vector_operand" "xja,xjm,vm")] UNSPEC_AESDEC))] "TARGET_AES || (TARGET_VAES && TARGET_AVX512VL)" "@ aesdec\t{%2, %0|%0, %2} - vaesdec\t{%2, %1, %0|%0, %1, %2} + * return TARGET_AES ? \"vaesdec\t{%2, %1, %0|%0, %1, %2}\" : \"%{evex%} vaesdec\t{%2, %1, %0|%0, %1, %2}\"; vaesdec\t{%2, %1, %0|%0, %1, %2}" - [(set_attr "isa" "noavx,aes,avx512vl") + [(set_attr "isa" "noavx,avx,vaes_avx512vl") (set_attr "type" "sselog1") (set_attr "addr" "gpr16,*,*") (set_attr "prefix_extra" "1") - (set_attr "prefix" "orig,vex,evex") + (set_attr "prefix" "orig,maybe_evex,evex") (set_attr "btver2_decode" "double,double,double") (set_attr "mode" "TI")]) (define_insn "aesdeclast" [(set (match_operand:V2DI 0 "register_operand" "=x,x,v") (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0,x,v") - (match_operand:V2DI 2 "vector_operand" "xja,xm,vm")] + (match_operand:V2DI 2 "vector_operand" "xja,xjm,vm")] UNSPEC_AESDECLAST))] "TARGET_AES || (TARGET_VAES && TARGET_AVX512VL)" "@ aesdeclast\t{%2, %0|%0, %2} - vaesdeclast\t{%2, %1, %0|%0, %1, %2} + * return TARGET_AES ? \"vaesdeclast\t{%2, %1, %0|%0, %1, %2}\" : \"%{evex%} vaesdeclast\t{%2, %1, %0|%0, %1, %2}\"; vaesdeclast\t{%2, %1, %0|%0, %1, %2}" - [(set_attr "isa" "noavx,aes,avx512vl") + [(set_attr "isa" "noavx,avx,vaes_avx512vl") (set_attr "addr" "gpr16,*,*") (set_attr "type" "sselog1") (set_attr "prefix_extra" "1") - (set_attr "prefix" "orig,vex,evex") + (set_attr "prefix" "orig,maybe_evex,evex") (set_attr "btver2_decode" "double,double,double") (set_attr "mode" "TI")]) @@ -29104,7 +29104,7 @@ [(set (match_operand:V4SI 0 "register_operand" "=x") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") - (match_operand:V4SI 2 "vector_operand" "xBm")] + (match_operand:V4SI 2 "vector_operand" "xja")] UNSPEC_SHA1MSG1))] "TARGET_SHA" "sha1msg1\t{%2, %0|%0, %2}" @@ -29115,7 +29115,7 @@ [(set (match_operand:V4SI 0 "register_operand" "=x") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") - (match_operand:V4SI 2 "vector_operand" "xBm")] + (match_operand:V4SI 2 "vector_operand" "xja")] UNSPEC_SHA1MSG2))] "TARGET_SHA" "sha1msg2\t{%2, %0|%0, %2}" @@ -29126,7 +29126,7 @@ [(set (match_operand:V4SI 0 "register_operand" "=x") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") - (match_operand:V4SI 2 "vector_operand" "xBm")] + (match_operand:V4SI 2 "vector_operand" "xja")] UNSPEC_SHA1NEXTE))] "TARGET_SHA" "sha1nexte\t{%2, %0|%0, %2}" @@ -29137,7 +29137,7 @@ [(set (match_operand:V4SI 0 "register_operand" "=x") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") - (match_operand:V4SI 2 "vector_operand" "xBm") + (match_operand:V4SI 2 "vector_operand" "xja") (match_operand:SI 3 "const_0_to_3_operand")] UNSPEC_SHA1RNDS4))] "TARGET_SHA" @@ -29150,7 +29150,7 @@ [(set (match_operand:V4SI 0 "register_operand" "=x") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") - (match_operand:V4SI 2 "vector_operand" "xBm")] + (match_operand:V4SI 2 "vector_operand" "xja")] UNSPEC_SHA256MSG1))] "TARGET_SHA" "sha256msg1\t{%2, %0|%0, %2}" @@ -29161,7 +29161,7 @@ [(set (match_operand:V4SI 0 "register_operand" "=x") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") - (match_operand:V4SI 2 "vector_operand" "xBm")] + (match_operand:V4SI 2 "vector_operand" "xja")] UNSPEC_SHA256MSG2))] "TARGET_SHA" "sha256msg2\t{%2, %0|%0, %2}" @@ -29172,7 +29172,7 @@ [(set (match_operand:V4SI 0 "register_operand" "=x") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") - (match_operand:V4SI 2 "vector_operand" "xBm") + (match_operand:V4SI 2 "vector_operand" "xja") (match_operand:V4SI 3 "register_operand" "Yz")] UNSPEC_SHA256RNDS2))] "TARGET_SHA" @@ -30246,44 +30246,60 @@ [(set_attr ("prefix") ("evex"))]) (define_insn "vaesdec_" - [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v") + [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=x,v") (unspec:VI1_AVX512VL_F - [(match_operand:VI1_AVX512VL_F 1 "register_operand" "v") - (match_operand:VI1_AVX512VL_F 2 "vector_operand" "vm")] + [(match_operand:VI1_AVX512VL_F 1 "register_operand" "x,v") + (match_operand:VI1_AVX512VL_F 2 "vector_operand" "xjm,vm")] UNSPEC_VAESDEC))] "TARGET_VAES" - "vaesdec\t{%2, %1, %0|%0, %1, %2}" -) +{ + if (which_alternative == 0 && mode == V16QImode) + return "%{evex%} vaesdec\t{%2, %1, %0|%0, %1, %2}"; + else + return "vaesdec\t{%2, %1, %0|%0, %1, %2}"; +}) (define_insn "vaesdeclast_" - [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v") + [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=x,v") (unspec:VI1_AVX512VL_F - [(match_operand:VI1_AVX512VL_F 1 "register_operand" "v") - (match_operand:VI1_AVX512VL_F 2 "vector_operand" "vm")] + [(match_operand:VI1_AVX512VL_F 1 "register_operand" "x,v") + (match_operand:VI1_AVX512VL_F 2 "vector_operand" "xjm,vm")] UNSPEC_VAESDECLAST))] "TARGET_VAES" - "vaesdeclast\t{%2, %1, %0|%0, %1, %2}" -) +{ + if (which_alternative == 0 && mode == V16QImode) + return "%{evex%} vaesdeclast\t{%2, %1, %0|%0, %1, %2}"; + else + return "vaesdeclast\t{%2, %1, %0|%0, %1, %2}"; +}) (define_insn "vaesenc_" - [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v") + [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=x,v") (unspec:VI1_AVX512VL_F - [(match_operand:VI1_AVX512VL_F 1 "register_operand" "v") - (match_operand:VI1_AVX512VL_F 2 "vector_operand" "vm")] + [(match_operand:VI1_AVX512VL_F 1 "register_operand" "x,v") + (match_operand:VI1_AVX512VL_F 2 "vector_operand" "xjm,vm")] UNSPEC_VAESENC))] "TARGET_VAES" - "vaesenc\t{%2, %1, %0|%0, %1, %2}" -) +{ + if (which_alternative == 0 && mode == V16QImode) + return "%{evex%} vaesenc\t{%2, %1, %0|%0, %1, %2}"; + else + return "vaesenc\t{%2, %1, %0|%0, %1, %2}"; +}) (define_insn "vaesenclast_" - [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v") + [(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=x,v") (unspec:VI1_AVX512VL_F - [(match_operand:VI1_AVX512VL_F 1 "register_operand" "v") - (match_operand:VI1_AVX512VL_F 2 "vector_operand" "vm")] + [(match_operand:VI1_AVX512VL_F 1 "register_operand" "x,v") + (match_operand:VI1_AVX512VL_F 2 "vector_operand" "xjm,vm")] UNSPEC_VAESENCLAST))] "TARGET_VAES" - "vaesenclast\t{%2, %1, %0|%0, %1, %2}" -) +{ + if (which_alternative == 0 && mode == V16QImode) + return "%{evex%} vaesenclast\t{%2, %1, %0|%0, %1, %2}"; + else + return "vaesenclast\t{%2, %1, %0|%0, %1, %2}"; +}) (define_insn "vpclmulqdq_" [(set (match_operand:VI8_FVL 0 "register_operand" "=v") @@ -30575,9 +30591,9 @@ (define_insn "*encodekey128u32" [(match_parallel 2 "encodekey128_operation" - [(set (match_operand:SI 0 "register_operand" "=r") + [(set (match_operand:SI 0 "register_operand" "=jr") (unspec_volatile:SI - [(match_operand:SI 1 "register_operand" "r") + [(match_operand:SI 1 "register_operand" "jr") (reg:V2DI XMM0_REG)] UNSPECV_ENCODEKEY128U32))])] "TARGET_KL" @@ -30632,9 +30648,9 @@ (define_insn "*encodekey256u32" [(match_parallel 2 "encodekey256_operation" - [(set (match_operand:SI 0 "register_operand" "=r") + [(set (match_operand:SI 0 "register_operand" "=jr") (unspec_volatile:SI - [(match_operand:SI 1 "register_operand" "r") + [(match_operand:SI 1 "register_operand" "jr") (reg:V2DI XMM0_REG) (reg:V2DI XMM1_REG)] UNSPECV_ENCODEKEY256U32))])] @@ -30655,7 +30671,7 @@ (define_insn "aesu8" [(set (match_operand:V2DI 0 "register_operand" "=x") (unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0") - (match_operand:BLK 2 "memory_operand" "m")] + (match_operand:BLK 2 "memory_operand" "jm")] AESDECENCKL)) (set (reg:CCZ FLAGS_REG) (unspec_volatile:CCZ [(match_dup 1) (match_dup 2)] AESDECENCKL))] @@ -30719,7 +30735,7 @@ [(match_parallel 1 "aeswidekl_operation" [(set (reg:CCZ FLAGS_REG) (unspec_volatile:CCZ - [(match_operand:BLK 0 "memory_operand" "m")] + [(match_operand:BLK 0 "memory_operand" "jm")] AESDECENCWIDEKL))])] "TARGET_WIDEKL" "aes\t%0" diff --git a/gcc/config/i386/x86-tune-costs.h b/gcc/config/i386/x86-tune-costs.h index fb97de4f3ac2..65d7d1f7e429 100644 --- a/gcc/config/i386/x86-tune-costs.h +++ b/gcc/config/i386/x86-tune-costs.h @@ -1986,6 +1986,142 @@ struct processor_costs znver4_cost = { 2, /* Small unroll factor. */ }; +/* This table currently replicates znver4_cost table. */ +struct processor_costs znver5_cost = { + { + /* Start of register allocator costs. integer->integer move cost is 2. */ + + /* reg-reg moves are done by renaming and thus they are even cheaper than + 1 cycle. Because reg-reg move cost is 2 and following tables correspond + to doubles of latencies, we do not model this correctly. It does not + seem to make practical difference to bump prices up even more. */ + 6, /* cost for loading QImode using + movzbl. */ + {6, 6, 6}, /* cost of loading integer registers + in QImode, HImode and SImode. + Relative to reg-reg move (2). */ + {8, 8, 8}, /* cost of storing integer + registers. */ + 2, /* cost of reg,reg fld/fst. */ + {14, 14, 17}, /* cost of loading fp registers + in SFmode, DFmode and XFmode. */ + {12, 12, 16}, /* cost of storing fp registers + in SFmode, DFmode and XFmode. */ + 2, /* cost of moving MMX register. */ + {6, 6}, /* cost of loading MMX registers + in SImode and DImode. */ + {8, 8}, /* cost of storing MMX registers + in SImode and DImode. */ + 2, 2, 3, /* cost of moving XMM,YMM,ZMM + register. */ + {6, 6, 10, 10, 12}, /* cost of loading SSE registers + in 32,64,128,256 and 512-bit. */ + {8, 8, 8, 12, 12}, /* cost of storing SSE registers + in 32,64,128,256 and 512-bit. */ + 6, 8, /* SSE->integer and integer->SSE + moves. */ + 8, 8, /* mask->integer and integer->mask moves */ + {6, 6, 6}, /* cost of loading mask register + in QImode, HImode, SImode. */ + {8, 8, 8}, /* cost if storing mask register + in QImode, HImode, SImode. */ + 2, /* cost of moving mask register. */ + /* End of register allocator costs. */ + }, + + COSTS_N_INSNS (1), /* cost of an add instruction. */ + /* TODO: Lea with 3 components has cost 2. */ + COSTS_N_INSNS (1), /* cost of a lea instruction. */ + COSTS_N_INSNS (1), /* variable shift costs. */ + COSTS_N_INSNS (1), /* constant shift costs. */ + {COSTS_N_INSNS (3), /* cost of starting multiply for QI. */ + COSTS_N_INSNS (3), /* HI. */ + COSTS_N_INSNS (3), /* SI. */ + COSTS_N_INSNS (3), /* DI. */ + COSTS_N_INSNS (3)}, /* other. */ + 0, /* cost of multiply per each bit + set. */ + {COSTS_N_INSNS (10), /* cost of a divide/mod for QI. */ + COSTS_N_INSNS (11), /* HI. */ + COSTS_N_INSNS (13), /* SI. */ + COSTS_N_INSNS (16), /* DI. */ + COSTS_N_INSNS (16)}, /* other. */ + COSTS_N_INSNS (1), /* cost of movsx. */ + COSTS_N_INSNS (1), /* cost of movzx. */ + 8, /* "large" insn. */ + 9, /* MOVE_RATIO. */ + 6, /* CLEAR_RATIO */ + {6, 6, 6}, /* cost of loading integer registers + in QImode, HImode and SImode. + Relative to reg-reg move (2). */ + {8, 8, 8}, /* cost of storing integer + registers. */ + {6, 6, 10, 10, 12}, /* cost of loading SSE registers + in 32bit, 64bit, 128bit, 256bit and 512bit */ + {8, 8, 8, 12, 12}, /* cost of storing SSE register + in 32bit, 64bit, 128bit, 256bit and 512bit */ + {6, 6, 6, 6, 6}, /* cost of unaligned loads. */ + {8, 8, 8, 8, 8}, /* cost of unaligned stores. */ + 2, 2, 2, /* cost of moving XMM,YMM,ZMM + register. */ + 6, /* cost of moving SSE register to integer. */ + /* VGATHERDPD is 17 uops and throughput is 4, VGATHERDPS is 24 uops, + throughput 5. Approx 7 uops do not depend on vector size and every load + is 5 uops. */ + 14, 10, /* Gather load static, per_elt. */ + 14, 20, /* Gather store static, per_elt. */ + 32, /* size of l1 cache. */ + 1024, /* size of l2 cache. */ + 64, /* size of prefetch block. */ + /* New AMD processors never drop prefetches; if they cannot be performed + immediately, they are queued. We set number of simultaneous prefetches + to a large constant to reflect this (it probably is not a good idea not + to limit number of prefetches at all, as their execution also takes some + time). */ + 100, /* number of parallel prefetches. */ + 3, /* Branch cost. */ + COSTS_N_INSNS (7), /* cost of FADD and FSUB insns. */ + COSTS_N_INSNS (7), /* cost of FMUL instruction. */ + /* Latency of fdiv is 8-15. */ + COSTS_N_INSNS (15), /* cost of FDIV instruction. */ + COSTS_N_INSNS (1), /* cost of FABS instruction. */ + COSTS_N_INSNS (1), /* cost of FCHS instruction. */ + /* Latency of fsqrt is 4-10. */ + COSTS_N_INSNS (25), /* cost of FSQRT instruction. */ + + COSTS_N_INSNS (1), /* cost of cheap SSE instruction. */ + COSTS_N_INSNS (3), /* cost of ADDSS/SD SUBSS/SD insns. */ + COSTS_N_INSNS (3), /* cost of MULSS instruction. */ + COSTS_N_INSNS (3), /* cost of MULSD instruction. */ + COSTS_N_INSNS (4), /* cost of FMA SS instruction. */ + COSTS_N_INSNS (4), /* cost of FMA SD instruction. */ + COSTS_N_INSNS (10), /* cost of DIVSS instruction. */ + /* 9-13. */ + COSTS_N_INSNS (13), /* cost of DIVSD instruction. */ + COSTS_N_INSNS (14), /* cost of SQRTSS instruction. */ + COSTS_N_INSNS (20), /* cost of SQRTSD instruction. */ + /* Zen can execute 4 integer operations per cycle. FP operations + take 3 cycles and it can execute 2 integer additions and 2 + multiplications thus reassociation may make sense up to with of 6. + SPEC2k6 bencharks suggests + that 4 works better than 6 probably due to register pressure. + + Integer vector operations are taken by FP unit and execute 3 vector + plus/minus operations per cycle but only one multiply. This is adjusted + in ix86_reassociation_width. */ + 4, 4, 3, 6, /* reassoc int, fp, vec_int, vec_fp. */ + znver2_memcpy, + znver2_memset, + COSTS_N_INSNS (4), /* cond_taken_branch_cost. */ + COSTS_N_INSNS (2), /* cond_not_taken_branch_cost. */ + "16", /* Loop alignment. */ + "16", /* Jump alignment. */ + "0:0:8", /* Label alignment. */ + "16", /* Func alignment. */ + 4, /* Small unroll limit. */ + 2, /* Small unroll factor. */ +}; + /* skylake_cost should produce code tuned for Skylake familly of CPUs. */ static stringop_algs skylake_memcpy[2] = { {libcall, diff --git a/gcc/config/i386/x86-tune-sched.cc b/gcc/config/i386/x86-tune-sched.cc index 23a333714a60..578ba57e6b22 100644 --- a/gcc/config/i386/x86-tune-sched.cc +++ b/gcc/config/i386/x86-tune-sched.cc @@ -69,6 +69,7 @@ ix86_issue_rate (void) case PROCESSOR_ZNVER2: case PROCESSOR_ZNVER3: case PROCESSOR_ZNVER4: + case PROCESSOR_ZNVER5: case PROCESSOR_CORE2: case PROCESSOR_NEHALEM: case PROCESSOR_SANDYBRIDGE: @@ -417,6 +418,7 @@ ix86_adjust_cost (rtx_insn *insn, int dep_type, rtx_insn *dep_insn, int cost, case PROCESSOR_ZNVER2: case PROCESSOR_ZNVER3: case PROCESSOR_ZNVER4: + case PROCESSOR_ZNVER5: /* Stack engine allows to execute push&pop instructions in parall. */ if ((insn_type == TYPE_PUSH || insn_type == TYPE_POP) && (dep_insn_type == TYPE_PUSH || dep_insn_type == TYPE_POP)) diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def index 8f855914316f..710009712f68 100644 --- a/gcc/config/i386/x86-tune.def +++ b/gcc/config/i386/x86-tune.def @@ -157,7 +157,7 @@ DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH, "fuse_alu_and_branch", by push/pop instructions. This increase code size by about 5% in 32bit mode, less so in 64bit mode because parameters are passed in registers. It is considerable - win for targets without stack engine that prevents multple push operations + win for targets without stack engine that prevents multiple push operations to happen in parallel. */ DEF_TUNE (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, "accumulate_outgoing_args", @@ -575,12 +575,12 @@ DEF_TUNE (X86_TUNE_AVX256_STORE_BY_PIECES, "avx256_store_by_pieces", /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit AVX instructions. */ DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces", - m_SAPPHIRERAPIDS | m_ZNVER4) + m_SAPPHIRERAPIDS | m_ZNVER4 | m_ZNVER5) /* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit AVX instructions. */ DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces", - m_SAPPHIRERAPIDS | m_ZNVER4) + m_SAPPHIRERAPIDS | m_ZNVER4 | m_ZNVER5) /*****************************************************************************/ /*****************************************************************************/ diff --git a/gcc/config/i386/znver4.md b/gcc/config/i386/zn4zn5.md similarity index 56% rename from gcc/config/i386/znver4.md rename to gcc/config/i386/zn4zn5.md index 0d3b29e54bb6..ba9cfbb5dfcf 100644 --- a/gcc/config/i386/znver4.md +++ b/gcc/config/i386/zn4zn5.md @@ -21,7 +21,7 @@ (define_attr "znver4_decode" "direct,vector,double" (const_string "direct")) -;; AMD znver4 Scheduling +;; AMD znver4 and znver5 Scheduling ;; Modeling automatons for zen decoders, integer execution pipes, ;; AGU pipes, branch, floating point execution and fp store units. (define_automaton "znver4, znver4_ieu, znver4_idiv, znver4_fdiv, znver4_agu, znver4_fpu, znver4_fp_store") @@ -44,32 +44,44 @@ (define_reservation "znver4-double" "znver4-direct") -;; Integer unit 4 ALU pipes. +;; Integer unit 4 ALU pipes in znver4 6 ALU pipes in znver5. (define_cpu_unit "znver4-ieu0" "znver4_ieu") (define_cpu_unit "znver4-ieu1" "znver4_ieu") (define_cpu_unit "znver4-ieu2" "znver4_ieu") (define_cpu_unit "znver4-ieu3" "znver4_ieu") +(define_cpu_unit "znver5-ieu4" "znver4_ieu") +(define_cpu_unit "znver5-ieu5" "znver4_ieu") + ;; Znver4 has an additional branch unit. (define_cpu_unit "znver4-bru0" "znver4_ieu") + (define_reservation "znver4-ieu" "znver4-ieu0|znver4-ieu1|znver4-ieu2|znver4-ieu3") +(define_reservation "znver5-ieu" "znver4-ieu0|znver4-ieu1|znver4-ieu2|znver4-ieu3|znver5-ieu4|znver5-ieu5") -;; 3 AGU pipes in znver4 +;; 3 AGU pipes in znver4 and 4 AGU pipes in znver5 (define_cpu_unit "znver4-agu0" "znver4_agu") (define_cpu_unit "znver4-agu1" "znver4_agu") (define_cpu_unit "znver4-agu2" "znver4_agu") +(define_cpu_unit "znver5-agu3" "znver4_agu") + (define_reservation "znver4-agu-reserve" "znver4-agu0|znver4-agu1|znver4-agu2") +(define_reservation "znver5-agu-reserve" "znver4-agu0|znver4-agu1|znver4-agu2|znver5-agu3") ;; Load is 4 cycles. We do not model reservation of load unit. (define_reservation "znver4-load" "znver4-agu-reserve") (define_reservation "znver4-store" "znver4-agu-reserve") +(define_reservation "znver5-load" "znver5-agu-reserve") +(define_reservation "znver5-store" "znver5-agu-reserve") ;; vectorpath (microcoded) instructions are single issue instructions. ;; So, they occupy all the integer units. +;; This is used for both Znver4 and Znver5, since reserving extra units not used otherwise +;; is harmless. (define_reservation "znver4-ivector" "znver4-ieu0+znver4-ieu1 - +znver4-ieu2+znver4-ieu3+znver4-bru0 - +znver4-agu0+znver4-agu1+znver4-agu2") + +znver4-ieu2+znver4-ieu3+znver5-ieu4+znver5-ieu5+znver4-bru0 + +znver4-agu0+znver4-agu1+znver4-agu2+znver5-agu3") -;; Floating point unit 4 FP pipes. +;; Floating point unit 4 FP pipes in znver4 and znver5. (define_cpu_unit "znver4-fpu0" "znver4_fpu") (define_cpu_unit "znver4-fpu1" "znver4_fpu") (define_cpu_unit "znver4-fpu2" "znver4_fpu") @@ -77,10 +89,6 @@ (define_reservation "znver4-fpu" "znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") -(define_reservation "znver4-fvector" "znver4-fpu0+znver4-fpu1 - +znver4-fpu2+znver4-fpu3 - +znver4-agu0+znver4-agu1+znver4-agu2") - ;; DIV units (define_cpu_unit "znver4-idiv" "znver4_idiv") (define_cpu_unit "znver4-fdiv" "znver4_fdiv") @@ -89,6 +97,19 @@ ;; throughput is limited to only one per cycle. (define_cpu_unit "znver4-fp-store" "znver4_fp_store") +;; Floating point store unit 2 FP pipes in znver5. +(define_cpu_unit "znver5-fp-store0" "znver4_fp_store") +(define_cpu_unit "znver5-fp-store1" "znver4_fp_store") + +;; This is used for both Znver4 and Znver5, since reserving extra units not used otherwise +;; is harmless. +(define_reservation "znver4-fvector" "znver4-fpu0+znver4-fpu1 + +znver4-fpu2+znver4-fpu3+znver5-fp-store0+znver5-fp-store1 + +znver4-agu0+znver4-agu1+znver4-agu2+znver5-agu3") + +(define_reservation "znver5-fp-store256" "znver5-fp-store0|znver5-fp-store1") +(define_reservation "znver5-fp-store-512" "znver5-fp-store0+znver5-fp-store1") + ;; Integer Instructions ;; Move instructions @@ -100,6 +121,13 @@ (eq_attr "memory" "none")))) "znver4-double,znver4-ieu") +(define_insn_reservation "znver5_imov_double" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imov") + (eq_attr "memory" "none")))) + "znver4-double,znver5-ieu") + (define_insn_reservation "znver4_imov_double_load" 5 (and (eq_attr "cpu" "znver4") (and (eq_attr "znver1_decode" "double") @@ -107,6 +135,13 @@ (eq_attr "memory" "load")))) "znver4-double,znver4-load,znver4-ieu") +(define_insn_reservation "znver5_imov_double_load" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imov") + (eq_attr "memory" "load")))) + "znver4-double,znver5-load,znver5-ieu") + ;; imov, imovx (define_insn_reservation "znver4_imov" 1 (and (eq_attr "cpu" "znver4") @@ -114,12 +149,24 @@ (eq_attr "memory" "none"))) "znver4-direct,znver4-ieu") +(define_insn_reservation "znver5_imov" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "imov,imovx") + (eq_attr "memory" "none"))) + "znver4-direct,znver5-ieu") + (define_insn_reservation "znver4_imov_load" 5 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "imov,imovx") (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-ieu") +(define_insn_reservation "znver5_imov_load" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "imov,imovx") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver5-ieu") + ;; Push Instruction (define_insn_reservation "znver4_push" 1 (and (eq_attr "cpu" "znver4") @@ -127,12 +174,24 @@ (eq_attr "memory" "store"))) "znver4-direct,znver4-store") +(define_insn_reservation "znver5_push" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "push") + (eq_attr "memory" "store"))) + "znver4-direct,znver5-store") + (define_insn_reservation "znver4_push_mem" 5 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "push") (eq_attr "memory" "both"))) "znver4-direct,znver4-load,znver4-store") +(define_insn_reservation "znver5_push_mem" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "push") + (eq_attr "memory" "both"))) + "znver4-direct,znver5-load,znver5-store") + ;; Pop instruction (define_insn_reservation "znver4_pop" 4 (and (eq_attr "cpu" "znver4") @@ -140,16 +199,28 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load") +(define_insn_reservation "znver5_pop" 4 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "pop") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load") + (define_insn_reservation "znver4_pop_mem" 5 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "pop") (eq_attr "memory" "both"))) "znver4-direct,znver4-load,znver4-store") +(define_insn_reservation "znver5_pop_mem" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "pop") + (eq_attr "memory" "both"))) + "znver4-direct,znver5-load,znver5-store") + ;; Integer Instructions or General instructions ;; Multiplications (define_insn_reservation "znver4_imul" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "imul") (eq_attr "memory" "none"))) "znver4-direct,znver4-ieu1") @@ -160,30 +231,36 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-ieu1") +(define_insn_reservation "znver5_imul_load" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "imul") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-ieu1") + ;; Divisions (define_insn_reservation "znver4_idiv_DI" 18 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "DI") (eq_attr "memory" "none")))) "znver4-double,znver4-idiv*10") (define_insn_reservation "znver4_idiv_SI" 12 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "SI") (eq_attr "memory" "none")))) "znver4-double,znver4-idiv*6") (define_insn_reservation "znver4_idiv_HI" 10 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "HI") (eq_attr "memory" "none")))) "znver4-double,znver4-idiv*4") (define_insn_reservation "znver4_idiv_QI" 9 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "QI") (eq_attr "memory" "none")))) @@ -196,6 +273,13 @@ (eq_attr "memory" "load")))) "znver4-double,znver4-load,znver4-idiv*10") +(define_insn_reservation "znver5_idiv_DI_load" 22 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "load")))) + "znver4-double,znver5-load,znver4-idiv*10") + (define_insn_reservation "znver4_idiv_SI_load" 16 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "idiv") @@ -203,6 +287,13 @@ (eq_attr "memory" "load")))) "znver4-double,znver4-load,znver4-idiv*6") +(define_insn_reservation "znver5_idiv_SI_load" 16 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "load")))) + "znver4-double,znver5-load,znver4-idiv*6") + (define_insn_reservation "znver4_idiv_HI_load" 14 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "idiv") @@ -210,6 +301,13 @@ (eq_attr "memory" "load")))) "znver4-double,znver4-load,znver4-idiv*4") +(define_insn_reservation "znver5_idiv_HI_load" 14 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "HI") + (eq_attr "memory" "load")))) + "znver4-double,znver5-load,znver4-idiv*4") + (define_insn_reservation "znver4_idiv_QI_load" 13 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "idiv") @@ -217,6 +315,13 @@ (eq_attr "memory" "load")))) "znver4-double,znver4-load,znver4-idiv*4") +(define_insn_reservation "znver5_idiv_QI_load" 13 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "QI") + (eq_attr "memory" "load")))) + "znver4-double,znver5-load,znver4-idiv*4") + ;; INTEGER/GENERAL Instructions (define_insn_reservation "znver4_insn" 1 (and (eq_attr "cpu" "znver4") @@ -224,14 +329,26 @@ (eq_attr "memory" "none,unknown"))) "znver4-direct,znver4-ieu") +(define_insn_reservation "znver5_insn" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver5-ieu") + (define_insn_reservation "znver4_insn_load" 5 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp") (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-ieu") +(define_insn_reservation "znver5_insn_load" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver5-ieu") + (define_insn_reservation "znver4_insn2" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "icmov,setcc") (eq_attr "memory" "none,unknown"))) "znver4-direct,znver4-ieu0|znver4-ieu3") @@ -242,8 +359,14 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-ieu0|znver4-ieu3") +(define_insn_reservation "znver5_insn2_load" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-ieu0|znver4-ieu3") + (define_insn_reservation "znver4_rotate" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "rotate") (eq_attr "memory" "none,unknown"))) "znver4-direct,znver4-ieu1|znver4-ieu2") @@ -254,27 +377,51 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-ieu1|znver4-ieu2") +(define_insn_reservation "znver5_rotate_load" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-ieu1|znver4-ieu2") + (define_insn_reservation "znver4_insn_store" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp") (eq_attr "memory" "store"))) "znver4-direct,znver4-ieu,znver4-store") +(define_insn_reservation "znver5_insn_store" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu,znver5-store") + (define_insn_reservation "znver4_insn2_store" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "icmov,setcc") (eq_attr "memory" "store"))) "znver4-direct,znver4-ieu0|znver4-ieu3,znver4-store") +(define_insn_reservation "znver5_insn2_store" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu0|znver4-ieu3,znver5-store") + (define_insn_reservation "znver4_rotate_store" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "rotate") (eq_attr "memory" "store"))) "znver4-direct,znver4-ieu1|znver4-ieu2,znver4-store") +(define_insn_reservation "znver5_rotate_store" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu1|znver4-ieu2,znver5-store") + ;; alu1 instructions (define_insn_reservation "znver4_alu1_vector" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "znver1_decode" "vector") (and (eq_attr "type" "alu1") (eq_attr "memory" "none,unknown")))) @@ -287,15 +434,27 @@ (eq_attr "memory" "load")))) "znver4-vector,znver4-load,znver4-ivector*3") +(define_insn_reservation "znver5_alu1_vector_load" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "znver1_decode" "vector") + (and (eq_attr "type" "alu1") + (eq_attr "memory" "load")))) + "znver4-vector,znver5-load,znver4-ivector*3") + ;; Call Instruction (define_insn_reservation "znver4_call" 1 (and (eq_attr "cpu" "znver4") (eq_attr "type" "call,callv")) "znver4-double,znver4-ieu0|znver4-bru0,znver4-store") +(define_insn_reservation "znver5_call" 1 + (and (eq_attr "cpu" "znver5") + (eq_attr "type" "call,callv")) + "znver4-double,znver4-ieu0|znver4-bru0,znver5-store") + ;; Branches (define_insn_reservation "znver4_branch" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ibr") (eq_attr "memory" "none"))) "znver4-direct,znver4-ieu0|znver4-bru0") @@ -306,8 +465,14 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-ieu0|znver4-bru0") +(define_insn_reservation "znver5_branch_load" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-ieu0|znver4-bru0") + (define_insn_reservation "znver4_branch_vector" 2 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ibr") (eq_attr "memory" "none,unknown"))) "znver4-vector,znver4-ivector*2") @@ -318,21 +483,36 @@ (eq_attr "memory" "load"))) "znver4-vector,znver4-load,znver4-ivector*2") +(define_insn_reservation "znver5_branch_vector_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "load"))) + "znver4-vector,znver5-load,znver4-ivector*2") + ;; LEA instruction with simple addressing (define_insn_reservation "znver4_lea" 1 (and (eq_attr "cpu" "znver4") (eq_attr "type" "lea")) "znver4-direct,znver4-ieu") +(define_insn_reservation "znver5_lea" 1 + (and (eq_attr "cpu" "znver5") + (eq_attr "type" "lea")) + "znver4-direct,znver5-ieu") ;; Leave (define_insn_reservation "znver4_leave" 1 (and (eq_attr "cpu" "znver4") (eq_attr "type" "leave")) "znver4-double,znver4-ieu,znver4-store") +(define_insn_reservation "znver5_leave" 1 + (and (eq_attr "cpu" "znver5") + (eq_attr "type" "leave")) + "znver4-double,znver5-ieu,znver5-store") + ;; STR and ISHIFT are microcoded. (define_insn_reservation "znver4_str" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "str") (eq_attr "memory" "none"))) "znver4-vector,znver4-ivector*3") @@ -343,8 +523,14 @@ (eq_attr "memory" "load"))) "znver4-vector,znver4-load,znver4-ivector*3") +(define_insn_reservation "znver5_str_load" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "str") + (eq_attr "memory" "load"))) + "znver4-vector,znver5-load,znver4-ivector*3") + (define_insn_reservation "znver4_ishift" 2 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ishift") (eq_attr "memory" "none"))) "znver4-vector,znver4-ivector*2") @@ -355,9 +541,15 @@ (eq_attr "memory" "load"))) "znver4-vector,znver4-load,znver4-ivector*2") +(define_insn_reservation "znver5_ishift_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ishift") + (eq_attr "memory" "load"))) + "znver4-vector,znver5-load,znver4-ivector*2") + ;; Other vector type (define_insn_reservation "znver4_ieu_vector" 5 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "other,multi") (eq_attr "memory" "none,unknown"))) "znver4-vector,znver4-ivector*5") @@ -368,15 +560,21 @@ (eq_attr "memory" "load"))) "znver4-vector,znver4-load,znver4-ivector*5") +(define_insn_reservation "znver5_ieu_vector_load" 9 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "other,multi") + (eq_attr "memory" "load"))) + "znver4-vector,znver5-load,znver4-ivector*5") + ;; Floating Point ;; FP movs (define_insn_reservation "znver4_fp_cmov" 4 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (eq_attr "type" "fcmov")) "znver4-vector,znver4-fvector*3") (define_insn_reservation "znver4_fp_mov_direct" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (eq_attr "type" "fmov")) "znver4-direct,znver4-fpu0|znver4-fpu1") @@ -388,6 +586,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") +(define_insn_reservation "znver5_fp_mov_direct_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu1") + ;;FST (define_insn_reservation "znver4_fp_mov_direct_store" 6 (and (eq_attr "cpu" "znver4") @@ -396,6 +601,13 @@ (eq_attr "memory" "store")))) "znver4-direct,znver4-fpu0|znver4-fpu1,znver4-fp-store") +(define_insn_reservation "znver5_fp_mov_direct_store" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu0|znver4-fpu1,znver5-fp-store256") + ;;FILD (define_insn_reservation "znver4_fp_mov_double_load" 13 (and (eq_attr "cpu" "znver4") @@ -404,6 +616,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1") +(define_insn_reservation "znver5_fp_mov_double_load" 13 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu1") + ;;FIST (define_insn_reservation "znver4_fp_mov_double_store" 7 (and (eq_attr "cpu" "znver4") @@ -412,9 +631,16 @@ (eq_attr "memory" "store")))) "znver4-double,znver4-fpu1,znver4-fp-store") +(define_insn_reservation "znver5_fp_mov_double_store" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "store")))) + "znver4-double,znver4-fpu1,znver5-fp-store256") + ;; FSQRT (define_insn_reservation "znver4_fsqrt" 22 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "fpspc") (and (eq_attr "mode" "XF") (eq_attr "memory" "none")))) @@ -422,20 +648,20 @@ ;; FPSPC instructions (define_insn_reservation "znver4_fp_spc" 6 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "fpspc") (eq_attr "memory" "none"))) "znver4-vector,znver4-fvector*6") (define_insn_reservation "znver4_fp_insn_vector" 6 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "znver1_decode" "vector") (eq_attr "type" "mmxcvt,sselog1,ssemov"))) "znver4-vector,znver4-fvector*6") ;; FADD, FSUB, FMUL (define_insn_reservation "znver4_fp_op_mul" 7 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "fop,fmul") (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu0") @@ -446,9 +672,14 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-fpu0") +(define_insn_reservation "znver5_fp_op_mul_load" 12 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "fop,fmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-fpu0") ;; FDIV (define_insn_reservation "znver4_fp_div" 15 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "fdiv") (eq_attr "memory" "none"))) "znver4-direct,znver4-fdiv*6") @@ -459,6 +690,12 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-fdiv*6") +(define_insn_reservation "znver5_fp_div_load" 20 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "fdiv") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-fdiv*6") + (define_insn_reservation "znver4_fp_idiv_load" 24 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "fdiv") @@ -466,15 +703,27 @@ (eq_attr "memory" "load")))) "znver4-double,znver4-load,znver4-fdiv*6") +(define_insn_reservation "znver5_fp_idiv_load" 24 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "fdiv") + (and (eq_attr "fp_int_src" "true") + (eq_attr "memory" "load")))) + "znver4-double,znver5-load,znver4-fdiv*6") + ;; FABS, FCHS (define_insn_reservation "znver4_fp_fsgn" 1 (and (eq_attr "cpu" "znver4") (eq_attr "type" "fsgn")) "znver4-direct,znver4-fpu0|znver4-fpu1") +(define_insn_reservation "znver5_fp_fsgn" 1 + (and (eq_attr "cpu" "znver5") + (eq_attr "type" "fsgn")) + "znver4-direct,znver4-fpu1|znver4-fpu2") + ;; FCMP (define_insn_reservation "znver4_fp_fcmp" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "fcmp") (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu1") @@ -486,14 +735,21 @@ (eq_attr "memory" "none")))) "znver4-double,znver4-fpu1,znver4-fpu2") +(define_insn_reservation "znver5_fp_fcmp_double" 4 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "fcmp") + (and (eq_attr "znver1_decode" "double") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1,znver5-fp-store256") + ;; MMX, SSE, SSEn.n instructions (define_insn_reservation "znver4_fp_mmx " 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (eq_attr "type" "mmx")) "znver4-direct,znver4-fpu1|znver4-fpu2") (define_insn_reservation "znver4_mmx_add_cmp" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "mmxadd,mmxcmp") (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu") @@ -504,32 +760,62 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-fpu") +(define_insn_reservation "znver5_mmx_add_cmp_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "mmxadd,mmxcmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-fpu") + (define_insn_reservation "znver4_mmx_insn" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu1|znver4-fpu2") +(define_insn_reservation "znver5_mmx_insn" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_mmx_insn_load" 6 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") +(define_insn_reservation "znver5_mmx_insn_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_mmx_mov" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "mmxmov") (eq_attr "memory" "store"))) "znver4-direct,znver4-fp-store") +(define_insn_reservation "znver5_mmx_mov" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "mmxmov") + (eq_attr "memory" "store"))) + "znver4-direct,znver5-fp-store256") + (define_insn_reservation "znver4_mmx_mov_load" 6 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "mmxmov") (eq_attr "memory" "both"))) "znver4-direct,znver4-load,znver4-fp-store") +(define_insn_reservation "znver5_mmx_mov_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "mmxmov") + (eq_attr "memory" "both"))) + "znver4-direct,znver5-load,znver5-fp-store256") + (define_insn_reservation "znver4_mmx_mul" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "mmxmul") (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu0|znver4-fpu3") @@ -540,9 +826,15 @@ (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu3") +(define_insn_reservation "znver5_mmx_mul_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "mmxmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu3") + ;; AVX instructions (define_insn_reservation "znver4_sse_log" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "sselog") (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") (eq_attr "memory" "none")))) @@ -555,6 +847,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu") +(define_insn_reservation "znver5_sse_log_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu") + (define_insn_reservation "znver4_sse_log1" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sselog1") @@ -562,6 +861,13 @@ (eq_attr "memory" "store")))) "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store") +(define_insn_reservation "znver5_sse_log1" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver5-fp-store256") + (define_insn_reservation "znver4_sse_log1_load" 6 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sselog1") @@ -569,20 +875,39 @@ (eq_attr "memory" "both")))) "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2,znver4-fp-store") +(define_insn_reservation "znver5_sse_log1_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "both")))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2,znver5-fp-store256") + (define_insn_reservation "znver4_sse_comi" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecomi") (eq_attr "memory" "store"))) "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store") +(define_insn_reservation "znver5_sse_comi" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "store"))) + "znver4-double,znver4-fpu2|znver4-fpu3,znver5-fp-store256") + (define_insn_reservation "znver4_sse_comi_load" 6 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecomi") (eq_attr "memory" "both"))) "znver4-double,znver4-load,znver4-fpu2|znver4-fpu3,znver4-fp-store") +(define_insn_reservation "znver5_sse_comi_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "both"))) + "znver4-double,znver5-load,znver4-fpu2|znver4-fpu3,znver5-fp-store256") + (define_insn_reservation "znver4_sse_test" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "prefix_extra" "1") (and (eq_attr "type" "ssecomi") (eq_attr "memory" "none")))) @@ -595,8 +920,15 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") +(define_insn_reservation "znver5_sse_test_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "prefix_extra" "1") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_imul" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "sseimul") (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") (eq_attr "memory" "none")))) @@ -609,8 +941,15 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") +(define_insn_reservation "znver5_sse_imul_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_mov" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssemov") (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") (eq_attr "memory" "none")))) @@ -623,6 +962,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") +(define_insn_reservation "znver5_sse_mov_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_mov_store" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemov") @@ -630,8 +976,15 @@ (eq_attr "memory" "store")))) "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store") +(define_insn_reservation "znver5_sse_mov_store" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver5-fp-store256") + (define_insn_reservation "znver4_sse_mov_fp" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssemov") (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") (eq_attr "memory" "none")))) @@ -644,6 +997,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu") +(define_insn_reservation "znver5_sse_mov_fp_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu") + (define_insn_reservation "znver4_sse_mov_fp_store" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemov") @@ -651,8 +1011,22 @@ (eq_attr "memory" "store")))) "znver4-direct,znver4-fp-store") +(define_insn_reservation "znver5_sse_mov_fp_store" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "store")))) + "znver4-direct,znver5-fp-store256") + +(define_insn_reservation "znver5_sse_mov_fp_store_512" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "store")))) + "znver4-direct,znver5-fp-store-512") + (define_insn_reservation "znver4_sse_add" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "sseadd") (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") (eq_attr "memory" "none")))) @@ -665,8 +1039,15 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") +(define_insn_reservation "znver5_sse_add_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_add1" 4 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "sseadd1") (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") (eq_attr "memory" "none")))) @@ -679,8 +1060,15 @@ (eq_attr "memory" "load")))) "znver4-vector,znver4-load,znver4-fvector*2") +(define_insn_reservation "znver5_sse_add1_load" 9 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseadd1") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-vector,znver5-load,znver4-fvector*2") + (define_insn_reservation "znver4_sse_iadd" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "sseiadd") (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") (eq_attr "memory" "none")))) @@ -693,8 +1081,15 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu") +(define_insn_reservation "znver5_sse_iadd_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu") + (define_insn_reservation "znver4_sse_mul" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssemul") (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") (eq_attr "memory" "none")))) @@ -707,15 +1102,22 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") +(define_insn_reservation "znver5_sse_mul_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_div_pd" 13 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssediv") (and (eq_attr "mode" "V4DF,V2DF,V1DF") (eq_attr "memory" "none")))) "znver4-direct,znver4-fdiv*5") (define_insn_reservation "znver4_sse_div_ps" 10 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssediv") (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") (eq_attr "memory" "none")))) @@ -728,6 +1130,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fdiv*5") +(define_insn_reservation "znver5_sse_div_pd_load" 18 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V4DF,V2DF,V1DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fdiv*5") + (define_insn_reservation "znver4_sse_div_ps_load" 15 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssediv") @@ -735,8 +1144,15 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fdiv*3") +(define_insn_reservation "znver5_sse_div_ps_load" 15 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fdiv*3") + (define_insn_reservation "znver4_sse_cmp_avx" 1 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssecmp") (and (eq_attr "prefix" "vex") (eq_attr "memory" "none")))) @@ -749,20 +1165,39 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") +(define_insn_reservation "znver5_sse_cmp_avx_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "prefix" "vex") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_comi_avx" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecomi") (eq_attr "memory" "store"))) "znver4-direct,znver4-fpu2+znver4-fpu3,znver4-fp-store") +(define_insn_reservation "znver5_sse_comi_avx" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-fpu2+znver4-fpu3,znver5-fp-store256") + (define_insn_reservation "znver4_sse_comi_avx_load" 6 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecomi") (eq_attr "memory" "both"))) "znver4-direct,znver4-load,znver4-fpu2+znver4-fpu3,znver4-fp-store") +(define_insn_reservation "znver5_sse_comi_avx_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "both"))) + "znver4-direct,znver5-load,znver4-fpu2+znver4-fpu3,znver5-fp-store256") + (define_insn_reservation "znver4_sse_cvt" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssecvt") (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") (eq_attr "memory" "none")))) @@ -775,8 +1210,15 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") +(define_insn_reservation "znver5_sse_cvt_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_icvt" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "ssecvt") (and (eq_attr "mode" "SI") (eq_attr "memory" "none")))) @@ -789,6 +1231,13 @@ (eq_attr "memory" "store")))) "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store") +(define_insn_reservation "znver5_sse_icvt_store" 4 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "store")))) + "znver4-double,znver4-fpu2|znver4-fpu3,znver5-fp-store256") + (define_insn_reservation "znver4_sse_shuf" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseshuf") @@ -796,6 +1245,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu1|znver4-fpu2") +(define_insn_reservation "znver5_sse_shuf" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_shuf_load" 6 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseshuf") @@ -803,8 +1259,15 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu") +(define_insn_reservation "znver5_sse_shuf_load" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu") + (define_insn_reservation "znver4_sse_ishuf" 3 - (and (eq_attr "cpu" "znver4") + (and (eq_attr "cpu" "znver4,znver5") (and (eq_attr "type" "sseshuf") (and (eq_attr "mode" "OI") (eq_attr "memory" "none")))) @@ -817,6 +1280,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") +(define_insn_reservation "znver5_sse_ishuf_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + ;; AVX512 instructions (define_insn_reservation "znver4_sse_log_evex" 1 (and (eq_attr "cpu" "znver4") @@ -825,6 +1295,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_log_evex" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_log_evex_load" 7 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sselog") @@ -832,6 +1309,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_log_evex_load" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_log1_evex" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sselog1") @@ -839,6 +1323,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store") +(define_insn_reservation "znver5_sse_log1_evex" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver5-fp-store-512") + (define_insn_reservation "znver4_sse_log1_evex_load" 7 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sselog1") @@ -846,6 +1337,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store") +(define_insn_reservation "znver5_sse_log1_evex_load" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2,znver5-fp-store-512") + (define_insn_reservation "znver4_sse_mul_evex" 3 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemul") @@ -853,6 +1351,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_mul_evex" 3 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_mul_evex_load" 9 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemul") @@ -860,6 +1365,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_mul_evex_load" 9 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_imul_evex" 3 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseimul") @@ -867,6 +1379,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu0*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_imul_evex" 3 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + (define_insn_reservation "znver4_sse_imul_evex_load" 9 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseimul") @@ -874,6 +1393,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_imul_evex_load" 9 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_mov_evex" 4 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemov") @@ -881,6 +1407,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu1*2|znver4-fpu2*2") +(define_insn_reservation "znver5_sse_mov_evex" 2 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_mov_evex_load" 10 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemov") @@ -888,6 +1421,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2") +(define_insn_reservation "znver5_sse_mov_evex_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_mov_evex_store" 5 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemov") @@ -895,6 +1435,13 @@ (eq_attr "memory" "store")))) "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store") +(define_insn_reservation "znver5_sse_mov_evex_store" 3 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver5-fp-store-512") + (define_insn_reservation "znver4_sse_add_evex" 3 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseadd") @@ -902,6 +1449,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_add_evex" 2 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_add_evex_load" 9 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseadd") @@ -909,6 +1463,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_add_evex_load" 8 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_iadd_evex" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseiadd") @@ -916,6 +1477,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_iadd_evex" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_iadd_evex_load" 7 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseiadd") @@ -923,6 +1491,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_iadd_evex_load" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_div_pd_evex" 13 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssediv") @@ -930,6 +1505,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fdiv*9") +(define_insn_reservation "znver5_sse_div_pd_evex" 13 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*9") + (define_insn_reservation "znver4_sse_div_ps_evex" 10 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssediv") @@ -937,6 +1519,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fdiv*6") +(define_insn_reservation "znver5_sse_div_ps_evex" 10 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*6") + (define_insn_reservation "znver4_sse_div_pd_evex_load" 19 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssediv") @@ -944,6 +1533,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fdiv*9") +(define_insn_reservation "znver5_sse_div_pd_evex_load" 19 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fdiv*9") + (define_insn_reservation "znver4_sse_div_ps_evex_load" 16 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssediv") @@ -951,6 +1547,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fdiv*6") +(define_insn_reservation "znver5_sse_div_ps_evex_load" 16 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fdiv*6") + (define_insn_reservation "znver4_sse_cmp_avx128" 3 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecmp") @@ -959,6 +1562,14 @@ (eq_attr "memory" "none"))))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_cmp_avx128" 3 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "none"))))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_cmp_avx128_load" 9 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecmp") @@ -967,6 +1578,14 @@ (eq_attr "memory" "load"))))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_cmp_avx128_load" 9 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "load"))))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_cmp_avx256" 4 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecmp") @@ -975,6 +1594,14 @@ (eq_attr "memory" "none"))))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_cmp_avx256" 4 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V8SF,V4DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "none"))))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_cmp_avx256_load" 10 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecmp") @@ -983,6 +1610,14 @@ (eq_attr "memory" "load"))))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_cmp_avx256_load" 10 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V8SF,V4DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "load"))))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_cmp_avx512" 5 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecmp") @@ -991,6 +1626,14 @@ (eq_attr "memory" "none"))))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_cmp_avx512" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V16SF,V8DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "none"))))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_cmp_avx512_load" 11 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecmp") @@ -999,6 +1642,14 @@ (eq_attr "memory" "load"))))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_cmp_avx512_load" 11 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V16SF,V8DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "load"))))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_cvt_evex" 6 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecvt") @@ -1006,6 +1657,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_cvt_evex" 6 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_cvt_evex_load" 12 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssecvt") @@ -1013,6 +1671,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_cvt_evex_load" 12 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2,znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_shuf_evex" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseshuf") @@ -1020,6 +1685,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_shuf_evex" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_shuf_evex_load" 7 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseshuf") @@ -1027,6 +1699,13 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2") +(define_insn_reservation "znver5_sse_shuf_evex_load" 7 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3") + (define_insn_reservation "znver4_sse_ishuf_evex" 4 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseshuf") @@ -1034,6 +1713,13 @@ (eq_attr "memory" "none")))) "znver4-direct,znver4-fpu1*2|znver4-fpu2*2") +(define_insn_reservation "znver5_sse_ishuf_evex" 5 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_ishuf_evex_load" 10 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseshuf") @@ -1041,18 +1727,37 @@ (eq_attr "memory" "load")))) "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2") +(define_insn_reservation "znver5_sse_ishuf_evex_load" 10 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + (define_insn_reservation "znver4_sse_muladd" 4 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "ssemuladd") (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_muladd" 4 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "ssemuladd") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_muladd_load" 10 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "sseshuf") (eq_attr "memory" "load"))) "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_muladd_load" 10 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "sseshuf") + (eq_attr "memory" "load"))) + "znver4-direct,znver5-load,znver4-fpu1|znver4-fpu2") + ;; AVX512 mask instructions (define_insn_reservation "znver4_sse_mskmov" 2 @@ -1061,8 +1766,20 @@ (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") +(define_insn_reservation "znver5_sse_mskmov" 2 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "mskmov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + (define_insn_reservation "znver4_sse_msklog" 1 (and (eq_attr "cpu" "znver4") (and (eq_attr "type" "msklog") (eq_attr "memory" "none"))) "znver4-direct,znver4-fpu2*2|znver4-fpu3*2") + +(define_insn_reservation "znver5_sse_msklog" 1 + (and (eq_attr "cpu" "znver5") + (and (eq_attr "type" "msklog") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu3") diff --git a/gcc/config/loongarch/genopts/loongarch.opt.in b/gcc/config/loongarch/genopts/loongarch.opt.in index 02f918053f55..50ea47a161f2 100644 --- a/gcc/config/loongarch/genopts/loongarch.opt.in +++ b/gcc/config/loongarch/genopts/loongarch.opt.in @@ -197,14 +197,14 @@ mexplicit-relocs Target Alias(mexplicit-relocs=, always, none) Use %reloc() assembly operators (for backward compatibility). -mrecip -Target RejectNegative Var(la_recip) Save -Generate approximate reciprocal divide and square root for better throughput. - mrecip= Target RejectNegative Joined Var(la_recip_name) Save Control generation of reciprocal estimates. +mrecip +Target Alias(mrecip=, all, none) +Generate approximate reciprocal divide and square root for better throughput. + ; The code model option names for -mcmodel. Enum Name(cmodel) Type(int) @@ -245,6 +245,20 @@ mpass-mrelax-to-as Driver Var(la_pass_mrelax_to_as) Init(HAVE_AS_MRELAX_OPTION) Pass -mrelax or -mno-relax option to the assembler. +Enum +Name(tls_type) Type(int) +The possible TLS dialects: + +EnumValue +Enum(tls_type) String(trad) Value(TLS_TRADITIONAL) + +EnumValue +Enum(tls_type) String(desc) Value(TLS_DESCRIPTORS) + +mtls-dialect= +Target RejectNegative Joined Enum(tls_type) Var(la_opt_tls_dialect) Init(M_OPT_UNSET) Save +Specify TLS dialect. + -param=loongarch-vect-unroll-limit= Target Joined UInteger Var(la_vect_unroll_limit) Init(6) IntegerRange(1, 64) Param Used to limit unroll factor which indicates how much the autovectorizer may diff --git a/gcc/config/loongarch/lasx.md b/gcc/config/loongarch/lasx.md index ac84db7f0ce1..7bd61f8ed5b7 100644 --- a/gcc/config/loongarch/lasx.md +++ b/gcc/config/loongarch/lasx.md @@ -572,12 +572,7 @@ (match_operand 3 "const__operand" "")))] "ISA_HAS_LASX" { -#if 0 - if (!TARGET_64BIT && (mode == V4DImode || mode == V4DFmode)) - return "#"; - else -#endif - return "xvinsgr2vr.\t%u0,%z1,%y3"; + return "xvinsgr2vr.\t%u0,%z1,%y3"; } [(set_attr "type" "simd_insert") (set_attr "mode" "")]) @@ -640,8 +635,6 @@ (set_attr "mode" "")]) ;; xvpermi.q -;; Unused bits in operands[3] need be set to 0 to avoid -;; causing undefined behavior on LA464. (define_insn "lasx_xvpermi_q_" [(set (match_operand:LASX 0 "register_operand" "=f") (unspec:LASX @@ -651,9 +644,6 @@ UNSPEC_LASX_XVPERMI_Q))] "ISA_HAS_LASX" { - int mask = 0x33; - mask &= INTVAL (operands[3]); - operands[3] = GEN_INT (mask); return "xvpermi.q\t%u0,%u2,%3"; } [(set_attr "type" "simd_splat") @@ -1383,8 +1373,7 @@ (match_operand:LASX 3 "register_operand")]))] "ISA_HAS_LASX" { - bool ok = loongarch_expand_vec_cmp (operands); - gcc_assert (ok); + loongarch_expand_vec_cmp (operands); DONE; }) @@ -1395,8 +1384,7 @@ (match_operand:ILASX 3 "register_operand")]))] "ISA_HAS_LASX" { - bool ok = loongarch_expand_vec_cmp (operands); - gcc_assert (ok); + loongarch_expand_vec_cmp (operands); DONE; }) @@ -1453,10 +1441,7 @@ if (which_alternative == 1) return "xvldi.b\t%u0,0" ; - if (!TARGET_64BIT && (mode == V2DImode || mode == V2DFmode)) - return "#"; - else - return "xvreplgr2vr.\t%u0,%z1"; + return "xvreplgr2vr.\t%u0,%z1"; } [(set_attr "type" "simd_fill") (set_attr "mode" "") diff --git a/gcc/config/loongarch/loongarch-builtins.cc b/gcc/config/loongarch/loongarch-builtins.cc index efe7e5e5ebc9..fbe46833c9b7 100644 --- a/gcc/config/loongarch/loongarch-builtins.cc +++ b/gcc/config/loongarch/loongarch-builtins.cc @@ -2512,14 +2512,11 @@ loongarch_init_builtins (void) for (i = 0; i < ARRAY_SIZE (loongarch_builtins); i++) { d = &loongarch_builtins[i]; - if (d->avail ()) - { - type = loongarch_build_function_type (d->function_type); - loongarch_builtin_decls[i] - = add_builtin_function (d->name, type, i, BUILT_IN_MD, NULL, - NULL); - loongarch_get_builtin_decl_index[d->icode] = i; - } + type = loongarch_build_function_type (d->function_type); + loongarch_builtin_decls[i] + = add_builtin_function (d->name, type, i, BUILT_IN_MD, NULL, + NULL); + loongarch_get_builtin_decl_index[d->icode] = i; } } @@ -3105,15 +3102,21 @@ loongarch_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED) { tree fndecl; - unsigned int fcode, avail; + unsigned int fcode; const struct loongarch_builtin_description *d; fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); fcode = DECL_MD_FUNCTION_CODE (fndecl); gcc_assert (fcode < ARRAY_SIZE (loongarch_builtins)); d = &loongarch_builtins[fcode]; - avail = d->avail (); - gcc_assert (avail != 0); + + if (!d->avail ()) + { + error_at (EXPR_LOCATION (exp), + "built-in function %qD is not enabled", fndecl); + return target; + } + switch (d->builtin_type) { case LARCH_BUILTIN_DIRECT: diff --git a/gcc/config/loongarch/loongarch-def.cc b/gcc/config/loongarch/loongarch-def.cc index e8c129ce643a..63a8f108f4ec 100644 --- a/gcc/config/loongarch/loongarch-def.cc +++ b/gcc/config/loongarch/loongarch-def.cc @@ -81,14 +81,19 @@ array_tune loongarch_cpu_cache = static inline loongarch_align la464_align () { - return loongarch_align ().function_ ("32").label_ ("16"); + return loongarch_align ().function_ ("32").loop_ ("16").jump_ ("16"); +} + +static inline loongarch_align la664_align () +{ + return loongarch_align ().function_ ("8").loop_ ("8").jump_ ("32"); } array_tune loongarch_cpu_align = array_tune () - .set (CPU_LOONGARCH64, la464_align ()) + .set (CPU_LOONGARCH64, la664_align ()) .set (CPU_LA464, la464_align ()) - .set (CPU_LA664, la464_align ()); + .set (CPU_LA664, la664_align ()); /* Default RTX cost initializer. */ loongarch_rtx_cost_data::loongarch_rtx_cost_data () diff --git a/gcc/config/loongarch/loongarch-def.h b/gcc/config/loongarch/loongarch-def.h index 2dbf006d013c..60ce3e230f12 100644 --- a/gcc/config/loongarch/loongarch-def.h +++ b/gcc/config/loongarch/loongarch-def.h @@ -90,11 +90,16 @@ extern loongarch_def_array #define TO_LP64_ABI_BASE(C) (C) -#define ABI_FPU_64(abi_base) \ +#define ABI_LP64_P(abi_base) \ + (abi_base == ABI_BASE_LP64D \ + || abi_base == ABI_BASE_LP64F \ + || abi_base == ABI_BASE_LP64S) + +#define ABI_FPU64_P(abi_base) \ (abi_base == ABI_BASE_LP64D) -#define ABI_FPU_32(abi_base) \ +#define ABI_FPU32_P(abi_base) \ (abi_base == ABI_BASE_LP64F) -#define ABI_FPU_NONE(abi_base) \ +#define ABI_NOFPU_P(abi_base) \ (abi_base == ABI_BASE_LP64S) @@ -175,6 +180,7 @@ struct loongarch_target int cpu_arch; /* CPU_ */ int cpu_tune; /* same */ int cmodel; /* CMODEL_ */ + int tls_dialect; /* TLS_ */ }; /* CPU model */ @@ -188,6 +194,12 @@ enum { N_TUNE_TYPES = 5 }; +/* TLS types. */ +enum { + TLS_TRADITIONAL = 0, + TLS_DESCRIPTORS = 1 +}; + /* CPU model properties */ extern loongarch_def_array loongarch_cpu_strings; diff --git a/gcc/config/loongarch/loongarch-driver.cc b/gcc/config/loongarch/loongarch-driver.cc index 62658f531ad5..8c4ed34698bb 100644 --- a/gcc/config/loongarch/loongarch-driver.cc +++ b/gcc/config/loongarch/loongarch-driver.cc @@ -45,7 +45,7 @@ la_driver_init (int argc ATTRIBUTE_UNUSED, const char **argv ATTRIBUTE_UNUSED) /* Initialize all fields of la_target. */ loongarch_init_target (&la_target, M_OPT_UNSET, M_OPT_UNSET, M_OPT_UNSET, M_OPT_UNSET, M_OPT_UNSET, M_OPT_UNSET, M_OPT_UNSET, - 0, 0); + M_OPT_UNSET, 0, 0); return ""; } diff --git a/gcc/config/loongarch/loongarch-opts.cc b/gcc/config/loongarch/loongarch-opts.cc index 7eeac43ed2f2..7b21cc311a83 100644 --- a/gcc/config/loongarch/loongarch-opts.cc +++ b/gcc/config/loongarch/loongarch-opts.cc @@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see #include "coretypes.h" #include "tm.h" #include "obstack.h" +#include "opts.h" #include "diagnostic-core.h" #include "loongarch-cpu.h" @@ -32,8 +33,12 @@ along with GCC; see the file COPYING3. If not see #include "loongarch-str.h" #include "loongarch-def.h" +/* Target configuration */ struct loongarch_target la_target; +/* RTL cost information */ +const struct loongarch_rtx_cost_data *loongarch_cost; + /* ABI-related configuration. */ #define ABI_COUNT (sizeof(abi_priority_list)/sizeof(struct loongarch_abi)) static const struct loongarch_abi @@ -139,6 +144,7 @@ void loongarch_init_target (struct loongarch_target *target, int cpu_arch, int cpu_tune, int fpu, int simd, int abi_base, int abi_ext, int cmodel, + int tls_dialect, HOST_WIDE_INT isa_evolution, HOST_WIDE_INT isa_evolution_set) { @@ -153,6 +159,7 @@ loongarch_init_target (struct loongarch_target *target, target->abi.base = abi_base; target->abi.ext = abi_ext; target->cmodel = cmodel; + target->tls_dialect = tls_dialect; } @@ -174,7 +181,8 @@ loongarch_config_target (struct loongarch_target *target, obstack_init (&msg_obstack); struct { - int arch, tune, fpu, simd, abi_base, abi_ext, cmodel, abi_flt; + int arch, tune, fpu, simd, abi_base, abi_ext, cmodel, + tls_dialect, abi_flt; } constrained = { M_OPT_ABSENT (target->cpu_arch) ? 0 : 1, M_OPT_ABSENT (target->cpu_tune) ? 0 : 1, @@ -183,6 +191,7 @@ loongarch_config_target (struct loongarch_target *target, M_OPT_ABSENT (target->abi.base) ? 0 : 1, M_OPT_ABSENT (target->abi.ext) ? 0 : 1, M_OPT_ABSENT (target->cmodel) ? 0 : 1, + M_OPT_ABSENT (target->tls_dialect) ? 0 : 1, M_OPT_ABSENT (target->abi.base) ? 0 : 1, }; @@ -362,7 +371,7 @@ loongarch_config_target (struct loongarch_target *target, gcc_assert (constrained.simd); inform (UNKNOWN_LOCATION, - "enabing %qs promotes %<%s%s%> to %<%s%s%>", + "enabling %qs promotes %<%s%s%> to %<%s%s%>", loongarch_isa_ext_strings[t.isa.simd], OPTSTR_ISA_EXT_FPU, loongarch_isa_ext_strings[t.isa.fpu], OPTSTR_ISA_EXT_FPU, loongarch_isa_ext_strings[ISA_EXT_FPU64]); @@ -551,6 +560,9 @@ loongarch_config_target (struct loongarch_target *target, gcc_unreachable (); } + t.tls_dialect = constrained.tls_dialect ? target->tls_dialect + : DEFAULT_TLS_TYPE; + /* Cleanup and return. */ obstack_free (&msg_obstack, NULL); *target = t; @@ -786,6 +798,9 @@ loongarch_update_gcc_opt_status (struct loongarch_target *target, /* status of -mcmodel */ opts->x_la_opt_cmodel = target->cmodel; + /* status of -mtls-dialect */ + opts->x_la_opt_tls_dialect = target->tls_dialect; + /* status of -mfpu */ opts->x_la_opt_fpu = target->isa.fpu; @@ -795,3 +810,258 @@ loongarch_update_gcc_opt_status (struct loongarch_target *target, /* ISA evolution features */ opts->x_la_isa_evolution = target->isa.evolution; } + +/* -mrecip= handling */ +static struct + { + const char *string; /* option name. */ + unsigned int mask; /* mask bits to set. */ + } +const recip_options[] = { + { "all", RECIP_MASK_ALL }, + { "none", RECIP_MASK_NONE }, + { "div", RECIP_MASK_DIV }, + { "sqrt", RECIP_MASK_SQRT }, + { "rsqrt", RECIP_MASK_RSQRT }, + { "vec-div", RECIP_MASK_VEC_DIV }, + { "vec-sqrt", RECIP_MASK_VEC_SQRT }, + { "vec-rsqrt", RECIP_MASK_VEC_RSQRT }, +}; + +/* Parser for -mrecip=. */ +unsigned int +loongarch_parse_mrecip_scheme (const char *recip_string) +{ + unsigned int result_mask = RECIP_MASK_NONE; + + if (recip_string) + { + char *p = ASTRDUP (recip_string); + char *q; + unsigned int mask, i; + bool invert; + + while ((q = strtok (p, ",")) != NULL) + { + p = NULL; + if (*q == '!') + { + invert = true; + q++; + } + else + invert = false; + + if (!strcmp (q, "default")) + mask = RECIP_MASK_ALL; + else + { + for (i = 0; i < ARRAY_SIZE (recip_options); i++) + if (!strcmp (q, recip_options[i].string)) + { + mask = recip_options[i].mask; + break; + } + + if (i == ARRAY_SIZE (recip_options)) + { + error ("unknown option for %<-mrecip=%s%>", q); + invert = false; + mask = RECIP_MASK_NONE; + } + } + + if (invert) + result_mask &= ~mask; + else + result_mask |= mask; + } + } + return result_mask; +} + +/* Generate -mrecip= argument based on the mask. */ +const char* +loongarch_generate_mrecip_scheme (unsigned int mask) +{ + static char recip_scheme_str[128]; + int p = 0, tmp; + + switch (mask) + { + case RECIP_MASK_ALL: + return "all"; + + case RECIP_MASK_NONE: + return "none"; + } + + for (unsigned long i = 2; i < ARRAY_SIZE (recip_options); i++) + { + if (mask & recip_options[i].mask) + { + if ((tmp = strlen (recip_options[i].string) + 1) >= 127 - p) + gcc_unreachable (); + + recip_scheme_str[p] = ','; + strcpy (recip_scheme_str + p + 1, recip_options[i].string); + p += tmp; + } + } + recip_scheme_str[p] = '\0'; + return recip_scheme_str + 1; +} + + + +/* Refresh the switches acccording to the resolved loongarch_target struct. */ +void +loongarch_target_option_override (struct loongarch_target *target, + struct gcc_options *opts, + struct gcc_options *opts_set) +{ + loongarch_update_gcc_opt_status (target, opts, opts_set); + + /* If not optimizing for size, set the default + alignment to what the target wants. */ + if (!opts->x_optimize_size) + { + if (opts->x_flag_align_functions && !opts->x_str_align_functions) + opts->x_str_align_functions + = loongarch_cpu_align[target->cpu_tune].function; + + if (opts->x_flag_align_loops && !opts->x_str_align_loops) + opts->x_str_align_loops = loongarch_cpu_align[target->cpu_tune].loop; + + if (opts->x_flag_align_jumps && !opts->x_str_align_jumps) + opts->x_str_align_jumps = loongarch_cpu_align[target->cpu_tune].jump; + } + + /* Set up parameters to be used in prefetching algorithm. */ + int simultaneous_prefetches + = loongarch_cpu_cache[target->cpu_tune].simultaneous_prefetches; + + SET_OPTION_IF_UNSET (opts, opts_set, param_simultaneous_prefetches, + simultaneous_prefetches); + + SET_OPTION_IF_UNSET (opts, opts_set, param_l1_cache_line_size, + loongarch_cpu_cache[target->cpu_tune].l1d_line_size); + + SET_OPTION_IF_UNSET (opts, opts_set, param_l1_cache_size, + loongarch_cpu_cache[target->cpu_tune].l1d_size); + + SET_OPTION_IF_UNSET (opts, opts_set, param_l2_cache_size, + loongarch_cpu_cache[target->cpu_tune].l2d_size); + + /* Other arch-specific overrides. */ + switch (target->cpu_arch) + { + case CPU_LA664: + /* Enable -mrecipe=all for LA664 by default. */ + if (!opts_set->x_recip_mask) + { + opts->x_recip_mask = RECIP_MASK_ALL; + opts_set->x_recip_mask = 1; + } + } + + /* -mrecip= */ + opts->x_la_recip_name + = loongarch_generate_mrecip_scheme (opts->x_recip_mask); + + /* Decide which rtx_costs structure to use. */ + if (opts->x_optimize_size) + loongarch_cost = &loongarch_rtx_cost_optimize_size; + else + loongarch_cost = &loongarch_cpu_rtx_cost_data[target->cpu_tune]; + + /* If the user hasn't specified a branch cost, use the processor's + default. */ + if (!opts_set->x_la_branch_cost) + opts->x_la_branch_cost = loongarch_cost->branch_cost; + + /* other stuff */ + if (ABI_LP64_P (target->abi.base)) + opts->x_flag_pcc_struct_return = 0; + + switch (target->cmodel) + { + case CMODEL_EXTREME: + if (opts->x_flag_plt) + { + if (opts_set->x_flag_plt) + error ("code model %qs is not compatible with %s", + "extreme", "-fplt"); + opts->x_flag_plt = 0; + } + break; + + case CMODEL_TINY_STATIC: + case CMODEL_MEDIUM: + case CMODEL_NORMAL: + case CMODEL_TINY: + case CMODEL_LARGE: + break; + + default: + gcc_unreachable (); + } +} + + +/* Resolve options that's not covered by la_target. */ +void +loongarch_init_misc_options (struct gcc_options *opts, + struct gcc_options *opts_set) +{ + if (opts->x_flag_pic) + opts->x_g_switch_value = 0; + + /* -mrecip options. */ + opts->x_recip_mask = loongarch_parse_mrecip_scheme (opts->x_la_recip_name); + +#define INIT_TARGET_FLAG(NAME, INIT) \ + { \ + if (!(opts_set->x_target_flags & MASK_##NAME)) \ + { \ + if (INIT) \ + opts->x_target_flags |= MASK_##NAME; \ + else \ + opts->x_target_flags &= ~MASK_##NAME; \ + } \ + } + + /* Enable conditional moves for int and float by default. */ + INIT_TARGET_FLAG (COND_MOVE_INT, 1) + INIT_TARGET_FLAG (COND_MOVE_FLOAT, 1) + + /* Set mrelax default. */ + INIT_TARGET_FLAG (LINKER_RELAXATION, + HAVE_AS_MRELAX_OPTION && HAVE_AS_COND_BRANCH_RELAXATION) + +#undef INIT_TARGET_FLAG + + /* Set mexplicit-relocs default. */ + if (opts->x_la_opt_explicit_relocs == M_OPT_UNSET) + opts->x_la_opt_explicit_relocs = (HAVE_AS_EXPLICIT_RELOCS + ? (TARGET_LINKER_RELAXATION + ? EXPLICIT_RELOCS_AUTO + : EXPLICIT_RELOCS_ALWAYS) + : EXPLICIT_RELOCS_NONE); + + /* Enable sw prefetching at -O3 and higher. */ + if (opts->x_flag_prefetch_loop_arrays < 0 + && (opts->x_optimize >= 3 || opts->x_flag_profile_use) + && !opts->x_optimize_size) + opts->x_flag_prefetch_loop_arrays = 1; + + if (TARGET_DIRECT_EXTERN_ACCESS_OPTS_P (opts) && opts->x_flag_shlib) + error ("%qs cannot be used for compiling a shared library", + "-mdirect-extern-access"); + + /* Enforce that interval is the same size as size so the mid-end does the + right thing. */ + SET_OPTION_IF_UNSET (opts, opts_set, + param_stack_clash_protection_probe_interval, + param_stack_clash_protection_guard_size); +} diff --git a/gcc/config/loongarch/loongarch-opts.h b/gcc/config/loongarch/loongarch-opts.h index 586e67e65ee1..9844b27ed270 100644 --- a/gcc/config/loongarch/loongarch-opts.h +++ b/gcc/config/loongarch/loongarch-opts.h @@ -30,11 +30,16 @@ along with GCC; see the file COPYING3. If not see /* Target configuration */ extern struct loongarch_target la_target; +/* RTL cost information */ +extern const struct loongarch_rtx_cost_data *loongarch_cost; + + /* Initialize loongarch_target from separate option variables. */ void loongarch_init_target (struct loongarch_target *target, int cpu_arch, int cpu_tune, int fpu, int simd, int abi_base, int abi_ext, int cmodel, + int tls_dialect, HOST_WIDE_INT isa_evolutions, HOST_WIDE_INT isa_evolutions_set); @@ -46,11 +51,30 @@ loongarch_config_target (struct loongarch_target *target, struct loongarch_flags *flags, int follow_multilib_list_p); + +/* Refresh the switches acccording to the resolved loongarch_target struct. */ +void +loongarch_target_option_override (struct loongarch_target *target, + struct gcc_options *opts, + struct gcc_options *opts_set); + + /* option status feedback for "gcc --help=target -Q" */ void loongarch_update_gcc_opt_status (struct loongarch_target *target, struct gcc_options *opts, struct gcc_options *opts_set); + + +/* Parser for -mrecip=. */ +unsigned int +loongarch_parse_mrecip_scheme (const char *recip_string); + + +/* Resolve options that's not covered by la_target. */ +void +loongarch_init_misc_options (struct gcc_options *opts, + struct gcc_options *opts_set); #endif /* Flag status */ @@ -80,9 +104,9 @@ struct loongarch_flags { #define TARGET_DOUBLE_FLOAT_ABI (la_target.abi.base == ABI_BASE_LP64D) #define TARGET_64BIT (la_target.isa.base == ISA_BASE_LA64) -#define TARGET_ABI_LP64 (la_target.abi.base == ABI_BASE_LP64D \ - || la_target.abi.base == ABI_BASE_LP64F \ - || la_target.abi.base == ABI_BASE_LP64S) +#define TARGET_ABI_LP64 ABI_LP64_P(la_target.abi.base) + +#define TARGET_TLS_DESC (la_target.tls_dialect == TLS_DESCRIPTORS) #define ISA_HAS_LSX \ (la_target.isa.simd == ISA_EXT_SIMD_LSX \ diff --git a/gcc/config/loongarch/loongarch-protos.h b/gcc/config/loongarch/loongarch-protos.h index 1fdfda9af01f..e238d795a738 100644 --- a/gcc/config/loongarch/loongarch-protos.h +++ b/gcc/config/loongarch/loongarch-protos.h @@ -89,14 +89,10 @@ extern void loongarch_split_128bit_move (rtx, rtx); extern bool loongarch_split_128bit_move_p (rtx, rtx); extern void loongarch_split_256bit_move (rtx, rtx); extern bool loongarch_split_256bit_move_p (rtx, rtx); -extern void loongarch_split_lsx_copy_d (rtx, rtx, rtx, rtx (*)(rtx, rtx, rtx)); -extern void loongarch_split_lsx_insert_d (rtx, rtx, rtx, rtx); -extern void loongarch_split_lsx_fill_d (rtx, rtx); extern const char *loongarch_output_move (rtx, rtx); -extern bool loongarch_cfun_has_cprestore_slot_p (void); #ifdef RTX_CODE extern void loongarch_expand_scc (rtx *); -extern bool loongarch_expand_vec_cmp (rtx *); +extern void loongarch_expand_vec_cmp (rtx *); extern void loongarch_expand_conditional_branch (rtx *); extern void loongarch_expand_conditional_move (rtx *); extern void loongarch_expand_conditional_trap (rtx); @@ -135,7 +131,6 @@ extern int loongarch_class_max_nregs (enum reg_class, machine_mode); extern machine_mode loongarch_hard_regno_caller_save_mode (unsigned int, unsigned int, machine_mode); -extern int loongarch_adjust_insn_length (rtx_insn *, int); extern const char *loongarch_output_conditional_branch (rtx_insn *, rtx *, const char *, const char *); @@ -157,7 +152,6 @@ extern bool loongarch_global_symbol_noweak_p (const_rtx); extern bool loongarch_weak_symbol_p (const_rtx); extern bool loongarch_symbol_binds_local_p (const_rtx); -extern const char *current_section_name (void); extern unsigned int current_section_flags (void); extern bool loongarch_use_ins_ext_p (rtx, HOST_WIDE_INT, HOST_WIDE_INT); extern bool loongarch_check_zero_div_p (void); @@ -198,8 +192,6 @@ extern bool loongarch_epilogue_uses (unsigned int); extern bool loongarch_load_store_bonding_p (rtx *, machine_mode, bool); extern bool loongarch_split_symbol_type (enum loongarch_symbol_type); -typedef rtx (*mulsidi3_gen_fn) (rtx, rtx, rtx); - extern void loongarch_register_frame_header_opt (void); extern void loongarch_expand_vec_cond_expr (machine_mode, machine_mode, rtx *); extern void loongarch_expand_vec_cond_mask_expr (machine_mode, machine_mode, diff --git a/gcc/config/loongarch/loongarch-tune.h b/gcc/config/loongarch/loongarch-tune.h index 72b75f6de3f5..cec9deb541ad 100644 --- a/gcc/config/loongarch/loongarch-tune.h +++ b/gcc/config/loongarch/loongarch-tune.h @@ -162,14 +162,16 @@ struct loongarch_cache { } }; -/* Alignment for functions and labels for best performance. For new uarchs - the value should be measured via benchmarking. See the documentation for - -falign-functions and -falign-labels in invoke.texi for the format. */ +/* Alignment for functions loops and jumps for best performance. For new + uarchs the value should be measured via benchmarking. See the + documentation for -falign-functions, -falign-loops, and -falign-jumps in + invoke.texi for the format. */ struct loongarch_align { const char *function; /* default value for -falign-functions */ - const char *label; /* default value for -falign-labels */ + const char *loop; /* default value for -falign-loops */ + const char *jump; /* default value for -falign-jumps */ - loongarch_align () : function (nullptr), label (nullptr) {} + loongarch_align () : function (nullptr), loop (nullptr), jump (nullptr) {} loongarch_align function_ (const char *_function) { @@ -177,9 +179,15 @@ struct loongarch_align { return *this; } - loongarch_align label_ (const char *_label) + loongarch_align loop_ (const char *_loop) { - label = _label; + loop = _loop; + return *this; + } + + loongarch_align jump_ (const char *_jump) + { + jump = _jump; return *this; } }; diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc index 70e31bb831c7..6b92e7034c56 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -208,9 +208,6 @@ const enum reg_class loongarch_regno_to_class[FIRST_PSEUDO_REGISTER] = { FRAME_REGS, FRAME_REGS }; -/* Which cost information to use. */ -static const struct loongarch_rtx_cost_data *loongarch_cost; - /* Information about a single argument. */ struct loongarch_arg_info { @@ -767,7 +764,13 @@ loongarch_setup_incoming_varargs (cumulative_args_t cum, argument. Advance a local copy of CUM past the last "real" named argument, to find out how many registers are left over. */ local_cum = *get_cumulative_args (cum); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + + /* For a C23 variadic function w/o any named argument, and w/o an + artifical argument for large return value, skip advancing args. + There is such an artifical argument iff. arg.type is non-NULL + (PR 114175). */ + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) loongarch_function_arg_advance (pack_cumulative_args (&local_cum), arg); /* Found out how many registers we need to save. */ @@ -2028,7 +2031,7 @@ loongarch_symbol_insns (enum loongarch_symbol_type type, machine_mode mode) case SYMBOL_TLSGD: case SYMBOL_TLSLDM: - return 3; + return TARGET_TLS_DESC ? 4 : 3; case SYMBOL_PCREL64: return 5; @@ -2930,24 +2933,43 @@ loongarch_call_tls_get_addr (rtx sym, enum loongarch_symbol_type type, rtx v0) static rtx loongarch_legitimize_tls_address (rtx loc) { - rtx dest, tp, tmp, tmp1, tmp2, tmp3; + rtx dest, tp, tmp, tmp1, tmp2, tmp3, a0; enum tls_model model = SYMBOL_REF_TLS_MODEL (loc); rtx_insn *insn; switch (model) { case TLS_MODEL_LOCAL_DYNAMIC: - tmp = gen_rtx_REG (Pmode, GP_RETURN); - dest = gen_reg_rtx (Pmode); - insn = loongarch_call_tls_get_addr (loc, SYMBOL_TLSLDM, tmp); - emit_libcall_block (insn, dest, tmp, loc); - break; - + if (!TARGET_TLS_DESC) + { + tmp = gen_rtx_REG (Pmode, GP_RETURN); + dest = gen_reg_rtx (Pmode); + insn = loongarch_call_tls_get_addr (loc, SYMBOL_TLSLDM, tmp); + emit_libcall_block (insn, dest, tmp, loc); + break; + } + /* Fall through. */ case TLS_MODEL_GLOBAL_DYNAMIC: - tmp = gen_rtx_REG (Pmode, GP_RETURN); - dest = gen_reg_rtx (Pmode); - insn = loongarch_call_tls_get_addr (loc, SYMBOL_TLSGD, tmp); - emit_libcall_block (insn, dest, tmp, loc); + if (TARGET_TLS_DESC) + { + a0 = gen_rtx_REG (Pmode, GP_ARG_FIRST); + dest = gen_reg_rtx (Pmode); + tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM); + + if (TARGET_CMODEL_EXTREME) + emit_insn (gen_got_load_tls_desc_off64 (loc, gen_reg_rtx (DImode))); + else + emit_insn (gen_got_load_tls_desc (Pmode, loc)); + + emit_insn (gen_add3_insn (dest, a0, tp)); + } + else + { + tmp = gen_rtx_REG (Pmode, GP_RETURN); + dest = gen_reg_rtx (Pmode); + insn = loongarch_call_tls_get_addr (loc, SYMBOL_TLSGD, tmp); + emit_libcall_block (insn, dest, tmp, loc); + } break; case TLS_MODEL_INITIAL_EXEC: @@ -4753,82 +4775,6 @@ loongarch_split_256bit_move (rtx dest, rtx src) } } - -/* Split a COPY_S.D with operands DEST, SRC and INDEX. GEN is a function - used to generate subregs. */ - -void -loongarch_split_lsx_copy_d (rtx dest, rtx src, rtx index, - rtx (*gen_fn)(rtx, rtx, rtx)) -{ - gcc_assert ((GET_MODE (src) == V2DImode && GET_MODE (dest) == DImode) - || (GET_MODE (src) == V2DFmode && GET_MODE (dest) == DFmode)); - - /* Note that low is always from the lower index, and high is always - from the higher index. */ - rtx low = loongarch_subword (dest, false); - rtx high = loongarch_subword (dest, true); - rtx new_src = simplify_gen_subreg (V4SImode, src, GET_MODE (src), 0); - - emit_insn (gen_fn (low, new_src, GEN_INT (INTVAL (index) * 2))); - emit_insn (gen_fn (high, new_src, GEN_INT (INTVAL (index) * 2 + 1))); -} - -/* Split a INSERT.D with operand DEST, SRC1.INDEX and SRC2. */ - -void -loongarch_split_lsx_insert_d (rtx dest, rtx src1, rtx index, rtx src2) -{ - int i; - gcc_assert (GET_MODE (dest) == GET_MODE (src1)); - gcc_assert ((GET_MODE (dest) == V2DImode - && (GET_MODE (src2) == DImode || src2 == const0_rtx)) - || (GET_MODE (dest) == V2DFmode && GET_MODE (src2) == DFmode)); - - /* Note that low is always from the lower index, and high is always - from the higher index. */ - rtx low = loongarch_subword (src2, false); - rtx high = loongarch_subword (src2, true); - rtx new_dest = simplify_gen_subreg (V4SImode, dest, GET_MODE (dest), 0); - rtx new_src1 = simplify_gen_subreg (V4SImode, src1, GET_MODE (src1), 0); - i = exact_log2 (INTVAL (index)); - gcc_assert (i != -1); - - emit_insn (gen_lsx_vinsgr2vr_w (new_dest, low, new_src1, - GEN_INT (1 << (i * 2)))); - emit_insn (gen_lsx_vinsgr2vr_w (new_dest, high, new_dest, - GEN_INT (1 << (i * 2 + 1)))); -} - -/* Split FILL.D. */ - -void -loongarch_split_lsx_fill_d (rtx dest, rtx src) -{ - gcc_assert ((GET_MODE (dest) == V2DImode - && (GET_MODE (src) == DImode || src == const0_rtx)) - || (GET_MODE (dest) == V2DFmode && GET_MODE (src) == DFmode)); - - /* Note that low is always from the lower index, and high is always - from the higher index. */ - rtx low, high; - if (src == const0_rtx) - { - low = src; - high = src; - } - else - { - low = loongarch_subword (src, false); - high = loongarch_subword (src, true); - } - rtx new_dest = simplify_gen_subreg (V4SImode, dest, GET_MODE (dest), 0); - emit_insn (gen_lsx_vreplgr2vr_w (new_dest, low)); - emit_insn (gen_lsx_vinsgr2vr_w (new_dest, high, new_dest, GEN_INT (1 << 1))); - emit_insn (gen_lsx_vinsgr2vr_w (new_dest, high, new_dest, GEN_INT (1 << 3))); -} - - /* Return the appropriate instructions to move SRC into DEST. Assume that SRC is operand 1 and DEST is operand 0. */ @@ -5905,17 +5851,6 @@ loongarch_print_operand_punctuation (FILE *file, int ch) } } -/* Initialize loongarch_print_operand_punct. */ - -static void -loongarch_init_print_operand_punct (void) -{ - const char *p; - - for (p = ".$"; *p; p++) - loongarch_print_operand_punct[(unsigned char) *p] = true; -} - /* PRINT_OPERAND prefix LETTER refers to the integer branch instruction associated with condition CODE. Print the condition part of the opcode to FILE. */ @@ -6770,7 +6705,7 @@ loongarch_hard_regno_mode_ok_uncached (unsigned int regno, machine_mode mode) and TRUNC. There's no point allowing sizes smaller than a word, because the FPU has no appropriate load/store instructions. */ if (mclass == MODE_INT) - return size >= MIN_UNITS_PER_WORD && size <= UNITS_PER_FPREG; + return size >= MIN_UNITS_PER_WORD && size <= UNITS_PER_FP_REG; } return false; @@ -6813,7 +6748,7 @@ loongarch_hard_regno_nregs (unsigned int regno, machine_mode mode) if (LASX_SUPPORTED_MODE_P (mode)) return 1; - return (GET_MODE_SIZE (mode) + UNITS_PER_FPREG - 1) / UNITS_PER_FPREG; + return (GET_MODE_SIZE (mode) + UNITS_PER_FP_REG - 1) / UNITS_PER_FP_REG; } /* All other registers are word-sized. */ @@ -6848,7 +6783,7 @@ loongarch_class_max_nregs (enum reg_class rclass, machine_mode mode) else if (LSX_SUPPORTED_MODE_P (mode)) size = MIN (size, UNITS_PER_LSX_REG); else - size = MIN (size, UNITS_PER_FPREG); + size = MIN (size, UNITS_PER_FP_REG); } left &= ~reg_class_contents[FP_REGS]; } @@ -7619,235 +7554,147 @@ loongarch_init_machine_status (void) } static void -loongarch_cpu_option_override (struct loongarch_target *target, - struct gcc_options *opts, - struct gcc_options *opts_set) +loongarch_global_init (void) { - /* alignments */ - if (opts->x_flag_align_functions && !opts->x_str_align_functions) - opts->x_str_align_functions - = loongarch_cpu_align[target->cpu_tune].function; - - if (opts->x_flag_align_labels && !opts->x_str_align_labels) - opts->x_str_align_labels = loongarch_cpu_align[target->cpu_tune].label; - - /* Set up parameters to be used in prefetching algorithm. */ - int simultaneous_prefetches - = loongarch_cpu_cache[target->cpu_tune].simultaneous_prefetches; - - SET_OPTION_IF_UNSET (opts, opts_set, param_simultaneous_prefetches, - simultaneous_prefetches); + /* Initialize loongarch_print_operand_punct. */ + for (const char *p = ".$"; *p; p++) + loongarch_print_operand_punct[(unsigned char) *p] = true; - SET_OPTION_IF_UNSET (opts, opts_set, param_l1_cache_line_size, - loongarch_cpu_cache[target->cpu_tune].l1d_line_size); + /* Set up array to map GCC register number to debug register number. + Ignore the special purpose register numbers. */ + for (int i = 0; i < FIRST_PSEUDO_REGISTER; i++) + { + if (GP_REG_P (i) || FP_REG_P (i)) + loongarch_dwarf_regno[i] = i; + else + loongarch_dwarf_regno[i] = INVALID_REGNUM; + } - SET_OPTION_IF_UNSET (opts, opts_set, param_l1_cache_size, - loongarch_cpu_cache[target->cpu_tune].l1d_size); + /* Function to allocate machine-dependent function status. */ + init_machine_status = &loongarch_init_machine_status; +}; - SET_OPTION_IF_UNSET (opts, opts_set, param_l2_cache_size, - loongarch_cpu_cache[target->cpu_tune].l2d_size); +static void +loongarch_reg_init (void) +{ + /* Set up loongarch_hard_regno_mode_ok. */ + for (int mode = 0; mode < MAX_MACHINE_MODE; mode++) + for (int regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) + loongarch_hard_regno_mode_ok_p[mode][regno] + = loongarch_hard_regno_mode_ok_uncached (regno, (machine_mode) mode); } static void -loongarch_option_override_internal (struct gcc_options *opts, +loongarch_option_override_internal (struct loongarch_target *target, + struct gcc_options *opts, struct gcc_options *opts_set) { - int i, regno, mode; - - if (flag_pic) - g_switch_value = 0; - - loongarch_init_target (&la_target, - la_opt_cpu_arch, la_opt_cpu_tune, la_opt_fpu, - la_opt_simd, la_opt_abi_base, la_opt_abi_ext, - la_opt_cmodel, opts->x_la_isa_evolution, + /* Handle options not covered by struct loongarch_target. */ + loongarch_init_misc_options (opts, opts_set); + + /* Resolve the target struct. */ + loongarch_init_target (target, + opts->x_la_opt_cpu_arch, + opts->x_la_opt_cpu_tune, + opts->x_la_opt_fpu, + opts->x_la_opt_simd, + opts->x_la_opt_abi_base, + opts->x_la_opt_abi_ext, + opts->x_la_opt_cmodel, + opts->x_la_opt_tls_dialect, + opts->x_la_isa_evolution, opts_set->x_la_isa_evolution); - /* Handle target-specific options: compute defaults/conflicts etc. */ - loongarch_config_target (&la_target, NULL, 0); - - loongarch_update_gcc_opt_status (&la_target, opts, opts_set); - loongarch_cpu_option_override (&la_target, opts, opts_set); - - if (TARGET_ABI_LP64) - flag_pcc_struct_return = 0; - - /* Decide which rtx_costs structure to use. */ - if (optimize_size) - loongarch_cost = &loongarch_rtx_cost_optimize_size; - else - loongarch_cost = &loongarch_cpu_rtx_cost_data[la_target.cpu_tune]; - - /* If the user hasn't specified a branch cost, use the processor's - default. */ - if (la_branch_cost == 0) - la_branch_cost = loongarch_cost->branch_cost; - - /* Enable sw prefetching at -O3 and higher. */ - if (opts->x_flag_prefetch_loop_arrays < 0 - && (opts->x_optimize >= 3 || opts->x_flag_profile_use) - && !opts->x_optimize_size) - opts->x_flag_prefetch_loop_arrays = 1; + loongarch_config_target (target, NULL, 0); - if (TARGET_DIRECT_EXTERN_ACCESS && flag_shlib) - error ("%qs cannot be used for compiling a shared library", - "-mdirect-extern-access"); - - switch (la_target.cmodel) - { - case CMODEL_EXTREME: - if (opts->x_flag_plt) - { - if (global_options_set.x_flag_plt) - error ("code model %qs is not compatible with %s", - "extreme", "-fplt"); - opts->x_flag_plt = 0; - } - break; + /* Override some options according to the resolved target. */ + loongarch_target_option_override (target, opts, opts_set); - case CMODEL_TINY_STATIC: - case CMODEL_MEDIUM: - case CMODEL_NORMAL: - case CMODEL_TINY: - case CMODEL_LARGE: - break; + target_option_default_node = target_option_current_node + = build_target_option_node (opts, opts_set); - default: - gcc_unreachable (); - } + loongarch_reg_init (); +} - /* Validate the guard size. */ - int guard_size = param_stack_clash_protection_guard_size; +/* Remember the last target of loongarch_set_current_function. */ - /* Enforce that interval is the same size as size so the mid-end does the - right thing. */ - SET_OPTION_IF_UNSET (opts, &global_options_set, - param_stack_clash_protection_probe_interval, - guard_size); +static GTY(()) tree loongarch_previous_fndecl; - loongarch_init_print_operand_punct (); +/* Restore or save the TREE_TARGET_GLOBALS from or to new_tree. + Used by loongarch_set_current_function to + make sure optab availability predicates are recomputed when necessary. */ - /* Set up array to map GCC register number to debug register number. - Ignore the special purpose register numbers. */ - - for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) - { - if (GP_REG_P (i) || FP_REG_P (i)) - loongarch_dwarf_regno[i] = i; - else - loongarch_dwarf_regno[i] = INVALID_REGNUM; - } +static void +loongarch_save_restore_target_globals (tree new_tree) +{ + if (TREE_TARGET_GLOBALS (new_tree)) + restore_target_globals (TREE_TARGET_GLOBALS (new_tree)); + else if (new_tree == target_option_default_node) + restore_target_globals (&default_target_globals); + else + TREE_TARGET_GLOBALS (new_tree) = save_target_globals_default_opts (); +} - /* Set up loongarch_hard_regno_mode_ok. */ - for (mode = 0; mode < MAX_MACHINE_MODE; mode++) - for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - loongarch_hard_regno_mode_ok_p[mode][regno] - = loongarch_hard_regno_mode_ok_uncached (regno, (machine_mode) mode); +/* Implement TARGET_SET_CURRENT_FUNCTION. */ - /* Function to allocate machine-dependent function status. */ - init_machine_status = &loongarch_init_machine_status; +static void +loongarch_set_current_function (tree fndecl) +{ + if (fndecl == loongarch_previous_fndecl) + return; - /* -mrecip options. */ - static struct - { - const char *string; /* option name. */ - unsigned int mask; /* mask bits to set. */ - } - const recip_options[] = { - { "all", RECIP_MASK_ALL }, - { "none", RECIP_MASK_NONE }, - { "div", RECIP_MASK_DIV }, - { "sqrt", RECIP_MASK_SQRT }, - { "rsqrt", RECIP_MASK_RSQRT }, - { "vec-div", RECIP_MASK_VEC_DIV }, - { "vec-sqrt", RECIP_MASK_VEC_SQRT }, - { "vec-rsqrt", RECIP_MASK_VEC_RSQRT }, - }; + tree old_tree; + if (loongarch_previous_fndecl == NULL_TREE) + old_tree = target_option_current_node; + else if (DECL_FUNCTION_SPECIFIC_TARGET (loongarch_previous_fndecl)) + old_tree = DECL_FUNCTION_SPECIFIC_TARGET (loongarch_previous_fndecl); + else + old_tree = target_option_default_node; - if (la_recip_name) + if (fndecl == NULL_TREE) { - char *p = ASTRDUP (la_recip_name); - char *q; - unsigned int mask, i; - bool invert; - - while ((q = strtok (p, ",")) != NULL) + if (old_tree != target_option_current_node) { - p = NULL; - if (*q == '!') - { - invert = true; - q++; - } - else - invert = false; - - if (!strcmp (q, "default")) - mask = RECIP_MASK_ALL; - else - { - for (i = 0; i < ARRAY_SIZE (recip_options); i++) - if (!strcmp (q, recip_options[i].string)) - { - mask = recip_options[i].mask; - break; - } - - if (i == ARRAY_SIZE (recip_options)) - { - error ("unknown option for %<-mrecip=%s%>", q); - invert = false; - mask = RECIP_MASK_NONE; - } - } - - if (invert) - recip_mask &= ~mask; - else - recip_mask |= mask; + loongarch_previous_fndecl = NULL_TREE; + cl_target_option_restore (&global_options, &global_options_set, + TREE_TARGET_OPTION + (target_option_current_node)); } + return; } - if (la_recip) - recip_mask |= RECIP_MASK_ALL; - if (!ISA_HAS_FRECIPE) - recip_mask = RECIP_MASK_NONE; -#define INIT_TARGET_FLAG(NAME, INIT) \ - { \ - if (!(target_flags_explicit & MASK_##NAME)) \ - { \ - if (INIT) \ - target_flags |= MASK_##NAME; \ - else \ - target_flags &= ~MASK_##NAME; \ - } \ - } + tree new_tree = DECL_FUNCTION_SPECIFIC_TARGET (fndecl); + if (new_tree == NULL_TREE) + new_tree = target_option_default_node; - /* Enable conditional moves for int and float by default. */ - INIT_TARGET_FLAG (COND_MOVE_INT, 1) - INIT_TARGET_FLAG (COND_MOVE_FLOAT, 1) + loongarch_previous_fndecl = fndecl; - /* Set mrelax default. */ - INIT_TARGET_FLAG (LINKER_RELAXATION, - HAVE_AS_MRELAX_OPTION && HAVE_AS_COND_BRANCH_RELAXATION) + if (new_tree == old_tree) + return; -#undef INIT_TARGET_FLAG + cl_target_option_restore (&global_options, &global_options_set, + TREE_TARGET_OPTION (new_tree)); - if (la_opt_explicit_relocs == M_OPT_UNSET) - la_opt_explicit_relocs = (HAVE_AS_EXPLICIT_RELOCS - ? (TARGET_LINKER_RELAXATION - ? EXPLICIT_RELOCS_AUTO - : EXPLICIT_RELOCS_ALWAYS) - : EXPLICIT_RELOCS_NONE); + loongarch_reg_init (); + + loongarch_save_restore_target_globals (new_tree); } + /* Implement TARGET_OPTION_OVERRIDE. */ static void loongarch_option_override (void) { - loongarch_option_override_internal (&global_options, &global_options_set); + /* Global initializations. */ + loongarch_global_init (); + + /* Setting up the target configuration. */ + loongarch_option_override_internal (&la_target, + &global_options, + &global_options_set); + } /* Implement TARGET_OPTION_SAVE. */ @@ -7873,6 +7720,7 @@ loongarch_option_restore (struct gcc_options *, la_target.isa.evolution = ptr->x_la_isa_evolution; la_target.cmodel = ptr->x_la_opt_cmodel; + la_target.tls_dialect = ptr->x_la_opt_tls_dialect; } /* Implement TARGET_CONDITIONAL_REGISTER_USAGE. */ @@ -8222,7 +8070,7 @@ loongarch_get_separate_components (void) if (IMM12_OPERAND (offset)) bitmap_set_bit (components, regno); - offset -= UNITS_PER_FPREG; + offset -= UNITS_PER_FP_REG; } /* Don't mess with the hard frame pointer. */ @@ -8301,7 +8149,7 @@ loongarch_process_components (sbitmap components, loongarch_save_restore_fn fn) if (bitmap_bit_p (components, regno)) loongarch_save_restore_reg (mode, regno, offset, fn); - offset -= UNITS_PER_FPREG; + offset -= UNITS_PER_FP_REG; } } @@ -10801,30 +10649,12 @@ loongarch_expand_vec_cond_mask_expr (machine_mode mode, machine_mode vimode, } /* Expand integer vector comparison */ -bool +void loongarch_expand_vec_cmp (rtx operands[]) { rtx_code code = GET_CODE (operands[1]); loongarch_expand_lsx_cmp (operands[0], code, operands[2], operands[3]); - return true; -} - -/* Implement TARGET_CASE_VALUES_THRESHOLD. */ - -unsigned int -loongarch_case_values_threshold (void) -{ - return default_case_values_threshold (); -} - -/* Implement TARGET_SPILL_CLASS. */ - -static reg_class_t -loongarch_spill_class (reg_class_t rclass ATTRIBUTE_UNUSED, - machine_mode mode ATTRIBUTE_UNUSED) -{ - return NO_REGS; } /* Implement TARGET_PROMOTE_FUNCTION_MODE. */ @@ -11181,6 +11011,9 @@ loongarch_asm_code_end (void) #undef TARGET_OPTION_RESTORE #define TARGET_OPTION_RESTORE loongarch_option_restore +#undef TARGET_SET_CURRENT_FUNCTION +#define TARGET_SET_CURRENT_FUNCTION loongarch_set_current_function + #undef TARGET_LEGITIMIZE_ADDRESS #define TARGET_LEGITIMIZE_ADDRESS loongarch_legitimize_address @@ -11281,9 +11114,6 @@ loongarch_asm_code_end (void) #undef TARGET_FUNCTION_ARG_BOUNDARY #define TARGET_FUNCTION_ARG_BOUNDARY loongarch_function_arg_boundary -#undef TARGET_OPTAB_SUPPORTED_P -#define TARGET_OPTAB_SUPPORTED_P loongarch_optab_supported_p - #undef TARGET_VECTOR_MODE_SUPPORTED_P #define TARGET_VECTOR_MODE_SUPPORTED_P loongarch_vector_mode_supported_p @@ -11353,18 +11183,12 @@ loongarch_asm_code_end (void) #undef TARGET_SCHED_REASSOCIATION_WIDTH #define TARGET_SCHED_REASSOCIATION_WIDTH loongarch_sched_reassociation_width -#undef TARGET_CASE_VALUES_THRESHOLD -#define TARGET_CASE_VALUES_THRESHOLD loongarch_case_values_threshold - #undef TARGET_ATOMIC_ASSIGN_EXPAND_FENV #define TARGET_ATOMIC_ASSIGN_EXPAND_FENV loongarch_atomic_assign_expand_fenv #undef TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS #define TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS true -#undef TARGET_SPILL_CLASS -#define TARGET_SPILL_CLASS loongarch_spill_class - #undef TARGET_HARD_REGNO_NREGS #define TARGET_HARD_REGNO_NREGS loongarch_hard_regno_nregs #undef TARGET_HARD_REGNO_MODE_OK diff --git a/gcc/config/loongarch/loongarch.h b/gcc/config/loongarch/loongarch.h index bf2351f0968f..db8a9eb95166 100644 --- a/gcc/config/loongarch/loongarch.h +++ b/gcc/config/loongarch/loongarch.h @@ -23,6 +23,8 @@ along with GCC; see the file COPYING3. If not see #include "config/loongarch/loongarch-opts.h" +#define SWITCHABLE_TARGET 1 + #define TARGET_SUPPORTS_WIDE_INT 1 /* Macros to silence warnings about numbers being signed in traditional @@ -138,19 +140,16 @@ along with GCC; see the file COPYING3. If not see /* Width of a LASX vector register in bits. */ #define BITS_PER_LASX_REG (UNITS_PER_LASX_REG * BITS_PER_UNIT) -/* For LARCH, width of a floating point register. */ -#define UNITS_PER_FPREG (TARGET_DOUBLE_FLOAT ? 8 : 4) - /* The largest size of value that can be held in floating-point registers and moved with a single instruction. */ #define UNITS_PER_HWFPVALUE \ - (TARGET_SOFT_FLOAT ? 0 : UNITS_PER_FPREG) + (TARGET_SOFT_FLOAT ? 0 : UNITS_PER_FP_REG) /* The largest size of value that can be held in floating-point registers. */ #define UNITS_PER_FPVALUE \ (TARGET_SOFT_FLOAT ? 0 \ - : TARGET_SINGLE_FLOAT ? UNITS_PER_FPREG \ + : TARGET_SINGLE_FLOAT ? UNITS_PER_FP_REG \ : LONG_DOUBLE_TYPE_SIZE / BITS_PER_UNIT) /* The number of bytes in a double. */ @@ -713,12 +712,18 @@ enum reg_class | RECIP_MASK_RSQRT | RECIP_MASK_VEC_SQRT \ | RECIP_MASK_VEC_DIV | RECIP_MASK_VEC_RSQRT) -#define TARGET_RECIP_DIV ((recip_mask & RECIP_MASK_DIV) != 0 || TARGET_uARCH_LA664) -#define TARGET_RECIP_SQRT ((recip_mask & RECIP_MASK_SQRT) != 0 || TARGET_uARCH_LA664) -#define TARGET_RECIP_RSQRT ((recip_mask & RECIP_MASK_RSQRT) != 0 || TARGET_uARCH_LA664) -#define TARGET_RECIP_VEC_DIV ((recip_mask & RECIP_MASK_VEC_DIV) != 0 || TARGET_uARCH_LA664) -#define TARGET_RECIP_VEC_SQRT ((recip_mask & RECIP_MASK_VEC_SQRT) != 0 || TARGET_uARCH_LA664) -#define TARGET_RECIP_VEC_RSQRT ((recip_mask & RECIP_MASK_VEC_RSQRT) != 0 || TARGET_uARCH_LA664) +#define TARGET_RECIP_DIV \ + ((recip_mask & RECIP_MASK_DIV) != 0 && ISA_HAS_FRECIPE) +#define TARGET_RECIP_SQRT \ + ((recip_mask & RECIP_MASK_SQRT) != 0 && ISA_HAS_FRECIPE) +#define TARGET_RECIP_RSQRT \ + ((recip_mask & RECIP_MASK_RSQRT) != 0 && ISA_HAS_FRECIPE) +#define TARGET_RECIP_VEC_DIV \ + ((recip_mask & RECIP_MASK_VEC_DIV) != 0 && ISA_HAS_FRECIPE) +#define TARGET_RECIP_VEC_SQRT \ + ((recip_mask & RECIP_MASK_VEC_SQRT) != 0 && ISA_HAS_FRECIPE) +#define TARGET_RECIP_VEC_RSQRT \ + ((recip_mask & RECIP_MASK_VEC_RSQRT) != 0 && ISA_HAS_FRECIPE) /* 1 if N is a possible register number for function argument passing. We have no FP argument registers when soft-float. */ diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md index 525e1e82183f..a316c8fb8207 100644 --- a/gcc/config/loongarch/loongarch.md +++ b/gcc/config/loongarch/loongarch.md @@ -52,6 +52,8 @@ ;; TLS UNSPEC_TLS + UNSPEC_TLS_DESC + UNSPEC_TLS_DESC_OFF64 ;; Stack tie UNSPEC_TIE @@ -127,6 +129,15 @@ (T1_REGNUM 13) (S0_REGNUM 23) + (FCC0_REGNUM 64) + (FCC1_REGNUM 65) + (FCC2_REGNUM 66) + (FCC3_REGNUM 67) + (FCC4_REGNUM 68) + (FCC5_REGNUM 69) + (FCC6_REGNUM 70) + (FCC7_REGNUM 71) + ;; Return path styles (NORMAL_RETURN 0) (SIBCALL_RETURN 1) @@ -517,7 +528,6 @@ ;; These code iterators allow the signed and unsigned scc operations to use ;; the same template. (define_code_iterator any_gt [gt gtu]) -(define_code_iterator any_ge [ge geu]) (define_code_iterator any_lt [lt ltu]) (define_code_iterator any_le [le leu]) @@ -2760,6 +2770,63 @@ ;; Thread-Local Storage +(define_insn "@got_load_tls_desc" + [(set (reg:P 4) + (unspec:P + [(match_operand:P 0 "symbolic_operand" "")] + UNSPEC_TLS_DESC)) + (clobber (reg:SI FCC0_REGNUM)) + (clobber (reg:SI FCC1_REGNUM)) + (clobber (reg:SI FCC2_REGNUM)) + (clobber (reg:SI FCC3_REGNUM)) + (clobber (reg:SI FCC4_REGNUM)) + (clobber (reg:SI FCC5_REGNUM)) + (clobber (reg:SI FCC6_REGNUM)) + (clobber (reg:SI FCC7_REGNUM)) + (clobber (reg:SI RETURN_ADDR_REGNUM))] + "TARGET_TLS_DESC" +{ + return TARGET_EXPLICIT_RELOCS + ? "pcalau12i\t$r4,%%desc_pc_hi20(%0)\n\t" + "addi.d\t$r4,$r4,%%desc_pc_lo12(%0)\n\t" + "ld.d\t$r1,$r4,%%desc_ld(%0)\n\t" + "jirl\t$r1,$r1,%%desc_call(%0)" + : "la.tls.desc\t$r4,%0"; +} + [(set_attr "got" "load") + (set_attr "mode" "") + (set_attr "length" "16")]) + +(define_insn "got_load_tls_desc_off64" + [(set (reg:DI 4) + (unspec:DI + [(match_operand:DI 0 "symbolic_operand" "")] + UNSPEC_TLS_DESC_OFF64)) + (clobber (reg:SI FCC0_REGNUM)) + (clobber (reg:SI FCC1_REGNUM)) + (clobber (reg:SI FCC2_REGNUM)) + (clobber (reg:SI FCC3_REGNUM)) + (clobber (reg:SI FCC4_REGNUM)) + (clobber (reg:SI FCC5_REGNUM)) + (clobber (reg:SI FCC6_REGNUM)) + (clobber (reg:SI FCC7_REGNUM)) + (clobber (reg:SI RETURN_ADDR_REGNUM)) + (clobber (match_operand:DI 1 "register_operand" "=&r"))] + "TARGET_TLS_DESC && TARGET_CMODEL_EXTREME" +{ + return TARGET_EXPLICIT_RELOCS + ? "pcalau12i\t$r4,%%desc_pc_hi20(%0)\n\t" + "addi.d\t%1,$r0,%%desc_pc_lo12(%0)\n\t" + "lu32i.d\t%1,%%desc64_pc_lo20(%0)\n\t" + "lu52i.d\t%1,%1,%%desc64_pc_hi12(%0)\n\t" + "add.d\t$r4,$r4,%1\n\t" + "ld.d\t$r1,$r4,%%desc_ld(%0)\n\t" + "jirl\t$r1,$r1,%%desc_call(%0)" + : "la.tls.desc\t$r4,%1,%0"; +} + [(set_attr "got" "load") + (set_attr "length" "28")]) + (define_insn "@load_tls" [(set (match_operand:P 0 "register_operand" "=r") (unspec:P @@ -3355,15 +3422,6 @@ [(set_attr "type" "slt") (set_attr "mode" "")]) -(define_insn "*sge_" - [(set (match_operand:GPR 0 "register_operand" "=r") - (any_ge:GPR (match_operand:X 1 "register_operand" "r") - (const_int 1)))] - "" - "slti\t%0,%.,%1" - [(set_attr "type" "slt") - (set_attr "mode" "")]) - (define_insn "*slt_" [(set (match_operand:GPR 0 "register_operand" "=r") (any_lt:GPR (match_operand:X 1 "register_operand" "r") diff --git a/gcc/config/loongarch/loongarch.opt b/gcc/config/loongarch/loongarch.opt index f10fcdd968cb..773747f2addd 100644 --- a/gcc/config/loongarch/loongarch.opt +++ b/gcc/config/loongarch/loongarch.opt @@ -205,14 +205,14 @@ mexplicit-relocs Target Alias(mexplicit-relocs=, always, none) Use %reloc() assembly operators (for backward compatibility). -mrecip -Target RejectNegative Var(la_recip) Save -Generate approximate reciprocal divide and square root for better throughput. - mrecip= Target RejectNegative Joined Var(la_recip_name) Save Control generation of reciprocal estimates. +mrecip +Target Alias(mrecip=, all, none) +Generate approximate reciprocal divide and square root for better throughput. + ; The code model option names for -mcmodel. Enum Name(cmodel) Type(int) @@ -253,6 +253,20 @@ mpass-mrelax-to-as Driver Var(la_pass_mrelax_to_as) Init(HAVE_AS_MRELAX_OPTION) Pass -mrelax or -mno-relax option to the assembler. +Enum +Name(tls_type) Type(int) +The possible TLS dialects: + +EnumValue +Enum(tls_type) String(trad) Value(TLS_TRADITIONAL) + +EnumValue +Enum(tls_type) String(desc) Value(TLS_DESCRIPTORS) + +mtls-dialect= +Target RejectNegative Joined Enum(tls_type) Var(la_opt_tls_dialect) Init(M_OPT_UNSET) Save +Specify TLS dialect. + -param=loongarch-vect-unroll-limit= Target Joined UInteger Var(la_vect_unroll_limit) Init(6) IntegerRange(1, 64) Param Used to limit unroll factor which indicates how much the autovectorizer may diff --git a/gcc/config/loongarch/loongarch.opt.urls b/gcc/config/loongarch/loongarch.opt.urls index c78bbfea2da8..88f0bb0f96fa 100644 --- a/gcc/config/loongarch/loongarch.opt.urls +++ b/gcc/config/loongarch/loongarch.opt.urls @@ -51,10 +51,10 @@ UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1) mexplicit-relocs UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1) -mrecip +mrecip= UrlSuffix(gcc/LoongArch-Options.html#index-mrecip) -mrecip= +mrecip UrlSuffix(gcc/LoongArch-Options.html#index-mrecip) ; skipping UrlSuffix for 'mcmodel=' due to finding no URLs @@ -64,3 +64,21 @@ UrlSuffix(gcc/LoongArch-Options.html#index-mdirect-extern-access) ; skipping UrlSuffix for 'mrelax' due to finding no URLs +mtls-dialect= +UrlSuffix(gcc/LoongArch-Options.html#index-mtls-dialect-1) + +mfrecipe +UrlSuffix(gcc/LoongArch-Options.html#index-mfrecipe) + +mdiv32 +UrlSuffix(gcc/LoongArch-Options.html#index-mdiv32) + +mlam-bh +UrlSuffix(gcc/LoongArch-Options.html#index-mlam-bh) + +mlamcas +UrlSuffix(gcc/LoongArch-Options.html#index-mlamcas) + +mld-seq-sa +UrlSuffix(gcc/LoongArch-Options.html#index-mld-seq-sa) + diff --git a/gcc/config/loongarch/lsx.md b/gcc/config/loongarch/lsx.md index b9b94b9079cb..454cda47876b 100644 --- a/gcc/config/loongarch/lsx.md +++ b/gcc/config/loongarch/lsx.md @@ -518,8 +518,7 @@ (match_operand:LSX 3 "register_operand")]))] "ISA_HAS_LSX" { - bool ok = loongarch_expand_vec_cmp (operands); - gcc_assert (ok); + loongarch_expand_vec_cmp (operands); DONE; }) @@ -530,8 +529,7 @@ (match_operand:ILSX 3 "register_operand")]))] "ISA_HAS_LSX" { - bool ok = loongarch_expand_vec_cmp (operands); - gcc_assert (ok); + loongarch_expand_vec_cmp (operands); DONE; }) @@ -584,28 +582,11 @@ (match_operand 3 "const__operand" "")))] "ISA_HAS_LSX" { - if (!TARGET_64BIT && (mode == V2DImode || mode == V2DFmode)) - return "#"; - else - return "vinsgr2vr.\t%w0,%z1,%y3"; + return "vinsgr2vr.\t%w0,%z1,%y3"; } [(set_attr "type" "simd_insert") (set_attr "mode" "")]) -(define_split - [(set (match_operand:LSX_D 0 "register_operand") - (vec_merge:LSX_D - (vec_duplicate:LSX_D - (match_operand: 1 "_operand")) - (match_operand:LSX_D 2 "register_operand") - (match_operand 3 "const__operand")))] - "reload_completed && ISA_HAS_LSX && !TARGET_64BIT" - [(const_int 0)] -{ - loongarch_split_lsx_insert_d (operands[0], operands[2], operands[3], operands[1]); - DONE; -}) - (define_insn "lsx_vextrins__internal" [(set (match_operand:LSX 0 "register_operand" "=f") (vec_merge:LSX @@ -655,70 +636,26 @@ [(set_attr "type" "simd_copy") (set_attr "mode" "")]) -(define_insn_and_split "lsx_vpickve2gr_du" +(define_insn "lsx_vpickve2gr_du" [(set (match_operand:DI 0 "register_operand" "=r") (vec_select:DI (match_operand:V2DI 1 "register_operand" "f") (parallel [(match_operand 2 "const_0_or_1_operand" "")])))] "ISA_HAS_LSX" -{ - if (TARGET_64BIT) - return "vpickve2gr.du\t%0,%w1,%2"; - else - return "#"; -} - "reload_completed && ISA_HAS_LSX && !TARGET_64BIT" - [(const_int 0)] -{ - loongarch_split_lsx_copy_d (operands[0], operands[1], operands[2], - gen_lsx_vpickve2gr_wu); - DONE; -} + "vpickve2gr.du\t%0,%w1,%2" [(set_attr "type" "simd_copy") (set_attr "mode" "V2DI")]) -(define_insn_and_split "lsx_vpickve2gr_" +(define_insn "lsx_vpickve2gr_" [(set (match_operand: 0 "register_operand" "=r") (vec_select: (match_operand:LSX_D 1 "register_operand" "f") (parallel [(match_operand 2 "const__operand" "")])))] "ISA_HAS_LSX" -{ - if (TARGET_64BIT) - return "vpickve2gr.\t%0,%w1,%2"; - else - return "#"; -} - "reload_completed && ISA_HAS_LSX && !TARGET_64BIT" - [(const_int 0)] -{ - loongarch_split_lsx_copy_d (operands[0], operands[1], operands[2], - gen_lsx_vpickve2gr_w); - DONE; -} + "vpickve2gr.\t%0,%w1,%2" [(set_attr "type" "simd_copy") (set_attr "mode" "")]) - -(define_expand "abs2" - [(match_operand:ILSX 0 "register_operand" "=f") - (abs:ILSX (match_operand:ILSX 1 "register_operand" "f"))] - "ISA_HAS_LSX" -{ - if (ISA_HAS_LSX) - { - emit_insn (gen_vabs2 (operands[0], operands[1])); - DONE; - } - else - { - rtx reg = gen_reg_rtx (mode); - emit_move_insn (reg, CONST0_RTX (mode)); - emit_insn (gen_lsx_vadda_ (operands[0], operands[1], reg)); - DONE; - } -}) - (define_expand "neg2" [(set (match_operand:ILSX 0 "register_operand") (neg:ILSX (match_operand:ILSX 1 "register_operand")))] @@ -1371,25 +1308,11 @@ if (which_alternative == 1) return "vldi.\t%w0,0"; - if (!TARGET_64BIT && (mode == V2DImode || mode == V2DFmode)) - return "#"; - else - return "vreplgr2vr.\t%w0,%z1"; + return "vreplgr2vr.\t%w0,%z1"; } [(set_attr "type" "simd_fill") (set_attr "mode" "")]) -(define_split - [(set (match_operand:LSX_D 0 "register_operand") - (vec_duplicate:LSX_D - (match_operand: 1 "register_operand")))] - "reload_completed && ISA_HAS_LSX && !TARGET_64BIT" - [(const_int 0)] -{ - loongarch_split_lsx_fill_d (operands[0], operands[1]); - DONE; -}) - (define_insn "logb2" [(set (match_operand:FLSX 0 "register_operand" "=f") (unspec:FLSX [(match_operand:FLSX 1 "register_operand" "f")] @@ -2430,7 +2353,7 @@ [(set_attr "type" "simd_logic") (set_attr "mode" "")]) -(define_insn "vabs2" +(define_insn "abs2" [(set (match_operand:ILSX 0 "register_operand" "=f") (abs:ILSX (match_operand:ILSX 1 "register_operand" "f")))] "ISA_HAS_LSX" diff --git a/gcc/config/loongarch/t-loongarch b/gcc/config/loongarch/t-loongarch index 3dd7c4b031e6..acf5da953103 100644 --- a/gcc/config/loongarch/t-loongarch +++ b/gcc/config/loongarch/t-loongarch @@ -18,8 +18,9 @@ GTM_H += loongarch-multilib.h -OPTIONS_H_EXTRA += $(srcdir)/config/loongarch/loongarch-def.h \ - $(srcdir)/config/loongarch/loongarch-tune.h \ +OPTIONS_H_EXTRA += $(srcdir)/config/loongarch/loongarch-def.h \ + $(srcdir)/config/loongarch/loongarch-def-array.h \ + $(srcdir)/config/loongarch/loongarch-tune.h \ $(srcdir)/config/loongarch/loongarch-cpucfg-map.h # Canonical target triplet from config.gcc diff --git a/gcc/config/m32r/m32r.cc b/gcc/config/m32r/m32r.cc index 65f74db95236..c45a7d616e86 100644 --- a/gcc/config/m32r/m32r.cc +++ b/gcc/config/m32r/m32r.cc @@ -1287,7 +1287,8 @@ m32r_setup_incoming_varargs (cumulative_args_t cum, if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) gcc_assert (arg.mode != BLKmode); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) first_anon_arg = (ROUND_ADVANCE_CUM (*get_cumulative_args (cum), arg.mode, arg.type) + ROUND_ADVANCE_ARG (arg.mode, arg.type)); diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc index 68e2ae8d8fab..ce764a5cb359 100644 --- a/gcc/config/mips/mips.cc +++ b/gcc/config/mips/mips.cc @@ -6834,7 +6834,13 @@ mips_setup_incoming_varargs (cumulative_args_t cum, argument. Advance a local copy of CUM past the last "real" named argument, to find out how many registers are left over. */ local_cum = *get_cumulative_args (cum); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + + /* For a C23 variadic function w/o any named argument, and w/o an + artifical argument for large return value, skip advancing args. + There is such an artifical argument iff. arg.type is non-NULL + (PR 114175). */ + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) mips_function_arg_advance (pack_cumulative_args (&local_cum), arg); /* Found out how many registers we need to save. */ diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 7145d23c6508..616a275b918c 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -251,7 +251,7 @@ struct mips_cpu_info { || ISA_HAS_MSA)) /* ISA load/store instructions can handle unaligned address */ -#define ISA_HAS_UNALIGNED_ACCESS (TARGET_UNALIGNED_ACCESS \ +#define ISA_HAS_UNALIGNED_ACCESS (!TARGET_STRICT_ALIGN \ && (mips_isa_rev >= 6)) /* The ISA compression flags that are currently in effect. */ @@ -694,6 +694,9 @@ struct mips_cpu_info { builtin_define ("__mips_compact_branches_always"); \ else \ builtin_define ("__mips_compact_branches_optimal"); \ + \ + if (STRICT_ALIGNMENT) \ + builtin_define ("__mips_strict_alignment"); \ } \ while (0) diff --git a/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt index ce36942aabe6..c1abb36212f9 100644 --- a/gcc/config/mips/mips.opt +++ b/gcc/config/mips/mips.opt @@ -429,9 +429,17 @@ mtune= Target RejectNegative Joined Var(mips_tune_option) ToLower Enum(mips_arch_opt_value) -mtune=PROCESSOR Optimize the output for PROCESSOR. +mstrict-align +Target Var(TARGET_STRICT_ALIGN) Init(0) +Don't generate code with unaligned load store, only valid for MIPS R6. + munaligned-access -Target Var(TARGET_UNALIGNED_ACCESS) Init(1) -Generate code with unaligned load store, valid for MIPS R6. +Target RejectNegative Alias(mstrict-align) NegativeAlias +Generate code with unaligned load store for R6 (alias of -mno-strict-align). + +mno-unaligned-access +Target RejectNegative Alias(mstrict-align) +Don't generate code with unaligned load store for R6 (alias of -mstrict-align). muninit-const-in-rodata Target Var(TARGET_UNINIT_CONST_IN_RODATA) diff --git a/gcc/config/mips/mips.opt.urls b/gcc/config/mips/mips.opt.urls index 96aba041026a..9d166646d65c 100644 --- a/gcc/config/mips/mips.opt.urls +++ b/gcc/config/mips/mips.opt.urls @@ -233,9 +233,15 @@ UrlSuffix(gcc/MIPS-Options.html#index-mmadd4) mtune= UrlSuffix(gcc/MIPS-Options.html#index-mtune-10) +mstrict-align +UrlSuffix(gcc/MIPS-Options.html#index-mstrict-align-3) + munaligned-access UrlSuffix(gcc/MIPS-Options.html#index-munaligned-access-1) +mno-unaligned-access +UrlSuffix(gcc/MIPS-Options.html#index-mno-unaligned-access-1) + muninit-const-in-rodata UrlSuffix(gcc/MIPS-Options.html#index-muninit-const-in-rodata) diff --git a/gcc/config/nds32/nds32.cc b/gcc/config/nds32/nds32.cc index 463df8604e08..f5ea1daad404 100644 --- a/gcc/config/nds32/nds32.cc +++ b/gcc/config/nds32/nds32.cc @@ -2374,7 +2374,8 @@ nds32_setup_incoming_varargs (cumulative_args_t ca, for varargs. */ total_args_regs = NDS32_MAX_GPR_REGS_FOR_ARGS + NDS32_GPR_ARG_FIRST_REGNUM; - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) num_of_used_regs = NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG (cum->gpr_offset, arg.mode, arg.type) + NDS32_NEED_N_REGS_FOR_ARG (arg.mode, arg.type); diff --git a/gcc/config/nios2/nios2.cc b/gcc/config/nios2/nios2.cc index fba13c34dae2..a981e5095ef0 100644 --- a/gcc/config/nios2/nios2.cc +++ b/gcc/config/nios2/nios2.cc @@ -3525,7 +3525,8 @@ nios2_setup_incoming_varargs (cumulative_args_t cum_v, cfun->machine->uses_anonymous_args = 1; local_cum = *cum; - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) nios2_function_arg_advance (local_cum_v, arg); regs_to_push = NUM_ARG_REGS - local_cum.regs_used; diff --git a/gcc/config/nvptx/mkoffload.cc b/gcc/config/nvptx/mkoffload.cc index a7fc28cbd3fe..503b1abcefde 100644 --- a/gcc/config/nvptx/mkoffload.cc +++ b/gcc/config/nvptx/mkoffload.cc @@ -638,7 +638,9 @@ main (int argc, char **argv) const char *outname = 0; progname = tool_name; + gcc_init_libintl (); diagnostic_initialize (global_dc, 0); + diagnostic_color_init (global_dc); if (atexit (mkoffload_cleanup) != 0) fatal_error (input_location, "atexit failed"); diff --git a/gcc/config/pa/pa.cc b/gcc/config/pa/pa.cc index 694123e37c9d..a7af6b8c121f 100644 --- a/gcc/config/pa/pa.cc +++ b/gcc/config/pa/pa.cc @@ -2039,7 +2039,8 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) op1 = replace_equiv_address (op1, scratch_reg); } } - else if ((!INT14_OK_STRICT && symbolic_memory_operand (op1, VOIDmode)) + else if (((TARGET_ELF32 || !TARGET_PA_20) + && symbolic_memory_operand (op1, VOIDmode)) || IS_LO_SUM_DLT_ADDR_P (XEXP (op1, 0)) || IS_INDEX_ADDR_P (XEXP (op1, 0))) { @@ -2088,7 +2089,8 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) op0 = replace_equiv_address (op0, scratch_reg); } } - else if ((!INT14_OK_STRICT && symbolic_memory_operand (op0, VOIDmode)) + else if (((TARGET_ELF32 || !TARGET_PA_20) + && symbolic_memory_operand (op0, VOIDmode)) || IS_LO_SUM_DLT_ADDR_P (XEXP (op0, 0)) || IS_INDEX_ADDR_P (XEXP (op0, 0))) { @@ -5782,7 +5784,12 @@ pa_output_global_address (FILE *file, rtx x, int round_constant) if (GET_CODE (x) == HIGH) x = XEXP (x, 0); - if (GET_CODE (x) == SYMBOL_REF && read_only_operand (x, VOIDmode)) + if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_DLTIND14R) + { + x = XVECEXP (x, 0, 0); + output_addr_const (file, x); + } + else if (GET_CODE (x) == SYMBOL_REF && read_only_operand (x, VOIDmode)) output_addr_const (file, x); else if (GET_CODE (x) == SYMBOL_REF && !flag_pic) { @@ -10707,7 +10714,13 @@ pa_trampoline_adjust_address (rtx addr) static rtx pa_delegitimize_address (rtx orig_x) { - rtx x = delegitimize_mem_from_attrs (orig_x); + rtx x; + + if (GET_CODE (orig_x) == UNSPEC + && XINT (orig_x, 1) == UNSPEC_TP) + orig_x = XVECEXP (orig_x, 0, 0); + + x = delegitimize_mem_from_attrs (orig_x); if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC @@ -10968,20 +10981,15 @@ pa_legitimate_address_p (machine_mode mode, rtx x, bool strict, code_helper) /* Long 14-bit displacements always okay for these cases. */ if (INT14_OK_STRICT + || reload_completed || mode == QImode || mode == HImode) return true; - /* A secondary reload may be needed to adjust the displacement - of floating-point accesses when STRICT is nonzero. */ - if (strict) - return false; - - /* We get significantly better code if we allow long displacements - before reload for all accesses. Instructions must satisfy their - constraints after reload, so we must have an integer access. - Return true for both cases. */ - return true; + /* We have to limit displacements to those supported by + both floating-point and integer accesses as reload can't + fix invalid displacements. See PR114288. */ + return false; } if (!TARGET_DISABLE_INDEXING @@ -11037,18 +11045,22 @@ pa_legitimate_address_p (machine_mode mode, rtx x, bool strict, code_helper) && (strict ? STRICT_REG_OK_FOR_BASE_P (y) : REG_OK_FOR_BASE_P (y))) { + y = XEXP (x, 1); + /* Needed for -fPIC */ if (mode == Pmode - && GET_CODE (XEXP (x, 1)) == UNSPEC) + && GET_CODE (y) == UNSPEC) return true; - if (!INT14_OK_STRICT - && (strict || !(reload_in_progress || reload_completed)) + /* Before reload, we need support for 14-bit floating + point loads and stores, and associated relocations. */ + if ((TARGET_ELF32 || !INT14_OK_STRICT) + && !reload_completed && mode != QImode && mode != HImode) return false; - if (CONSTANT_P (XEXP (x, 1))) + if (CONSTANT_P (y)) return true; } return false; diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 7abaeae269e9..127a0d1966d2 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -828,19 +828,8 @@ extern int may_call_alloca; /* Nonzero if 14-bit offsets can be used for all loads and stores. This is not possible when generating PA 1.x code as floating point - accesses only support 5-bit offsets. Note that we do not forbid - the use of 14-bit offsets prior to reload. Instead, we use secondary - reloads to fix REG+D memory addresses for floating-point accesses. - - FIXME: the GNU ELF linker clobbers the LSB of the FP register number - in PA 2.0 floating-point insns with long displacements. This is - because R_PARISC_DPREL14WR and other relocations like it are not - yet supported by GNU ld. For now, we reject long displacements - on this target. */ - -#define INT14_OK_STRICT \ - (TARGET_SOFT_FLOAT \ - || (TARGET_PA_20 && !TARGET_ELF32 && !TARGET_ELF64)) + accesses only support 5-bit offsets. */ +#define INT14_OK_STRICT (TARGET_SOFT_FLOAT || TARGET_PA_20) /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx and check its validity for a certain class. @@ -1258,12 +1247,15 @@ do { \ reg_names [REGNO (XEXP (addr, 0))]); \ break; \ case LO_SUM: \ - if (!symbolic_operand (XEXP (addr, 1), VOIDmode)) \ + if (GET_CODE (XEXP (addr, 1)) == UNSPEC \ + && XINT (XEXP (addr, 1), 1) == UNSPEC_DLTIND14R) \ + fputs ("RT'", FILE); \ + else if (!symbolic_operand (XEXP (addr, 1), VOIDmode)) \ fputs ("R'", FILE); \ else if (flag_pic == 0) \ fputs ("RR'", FILE); \ else \ - fputs ("RT'", FILE); \ + gcc_unreachable (); \ pa_output_global_address (FILE, XEXP (addr, 1), 0); \ fputs ("(", FILE); \ output_operand (XEXP (addr, 0), 0); \ diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index 3bd3a7c212f3..50dffa1138ca 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -331,12 +331,16 @@ && !IS_INDEX_ADDR_P (XEXP (op, 0))); }) -;; True iff the operand OP can be used as the destination operand of -;; a floating point store. This also implies the operand could be used as +;; True iff the operand OP can be used as the destination operand of a +;; floating point store. This also implies the operand could be used as ;; the source operand of a floating point load. LO_SUM DLT and indexed -;; memory operands are not allowed. Symbolic operands are accepted if -;; INT14_OK_STRICT is true. We accept reloading pseudos and other memory -;; operands. +;; memory operands are not allowed. Symbolic operands are accepted for +;; PA 2.0 when TARGET_ELF32 is not true. We accept reloading pseudos +;; and other memory; operands. + +;; FIXME: The GNU ELF32 linker clobbers the LSB of the FP register number +;; in PA 2.0 {fldw,fstw} insns with long displacements. This is because +;; R_PARISC_DPREL14WR and other relocations like it are not supported. (define_predicate "floating_point_store_memory_operand" (match_code "reg,mem") @@ -362,7 +366,8 @@ return false; return ((reload_in_progress || memory_address_p (mode, XEXP (op, 0))) - && (INT14_OK_STRICT || !symbolic_memory_operand (op, VOIDmode)) + && !((TARGET_ELF32 || !TARGET_PA_20) + && symbolic_memory_operand (op, VOIDmode)) && !IS_LO_SUM_DLT_ADDR_P (XEXP (op, 0)) && !IS_INDEX_ADDR_P (XEXP (op, 0))); }) diff --git a/gcc/config/riscv/constraints.md b/gcc/config/riscv/constraints.md index 41acaea04eba..972e8842c9f8 100644 --- a/gcc/config/riscv/constraints.md +++ b/gcc/config/riscv/constraints.md @@ -268,6 +268,12 @@ (and (match_test "IN_RANGE (ival, 0, 1073741823)") (match_test "exact_log2 (ival + 1) != -1")))) +(define_constraint "CV_bi_sign5" + "@internal + A 5-bit signed immediate for CORE-V Immediate Branch." + (and (match_code "const_int") + (match_test "IN_RANGE (ival, -16, 15)"))) + (define_constraint "CV_simd_si6" "A 6-bit signed immediate for SIMD." (and (match_code "const_int") diff --git a/gcc/config/riscv/corev.md b/gcc/config/riscv/corev.md index 3857c53ce101..e2db8f311307 100644 --- a/gcc/config/riscv/corev.md +++ b/gcc/config/riscv/corev.md @@ -2614,3 +2614,40 @@ cv.subrotmj.div8\t%0,%1,%2" [(set_attr "type" "arith") (set_attr "mode" "SI")]) + +;; XCVBI Instructions +(define_insn "*cv_branch" + [(set (pc) + (if_then_else + (match_operator 1 "equality_operator" + [(match_operand:X 2 "register_operand" "r") + (match_operand:X 3 "const_int5s_operand" "CV_bi_sign5")]) + (label_ref (match_operand 0 "" "")) + (pc)))] + "TARGET_XCVBI" +{ + if (get_attr_length (insn) == 12) + return "cv.b%N1\t%2,%z3,1f; jump\t%l0,ra; 1:"; + + return "cv.b%C1imm\t%2,%3,%0"; +} + [(set_attr "type" "branch") + (set_attr "mode" "none")]) + +(define_insn "*branch" + [(set (pc) + (if_then_else + (match_operator 1 "ordered_comparison_operator" + [(match_operand:X 2 "register_operand" "r") + (match_operand:X 3 "reg_or_0_operand" "rJ")]) + (label_ref (match_operand 0 "" "")) + (pc)))] + "TARGET_XCVBI" +{ + if (get_attr_length (insn) == 12) + return "b%N1\t%2,%z3,1f; jump\t%l0,ra; 1:"; + + return "b%C1\t%2,%z3,%l0"; +} + [(set_attr "type" "branch") + (set_attr "mode" "none")]) diff --git a/gcc/config/riscv/predicates.md b/gcc/config/riscv/predicates.md index 6c87a7bd1f49..539e0f7379b7 100644 --- a/gcc/config/riscv/predicates.md +++ b/gcc/config/riscv/predicates.md @@ -445,6 +445,10 @@ (ior (match_operand 0 "const_int6_operand") (match_operand 0 "register_operand"))) +(define_predicate "const_int5s_operand" + (and (match_code "const_int") + (match_test "IN_RANGE (INTVAL (op), -16, 15)"))) + ;; Predicates for the V extension. (define_special_predicate "vector_length_operand" (ior (match_operand 0 "pmode_register_operand") diff --git a/gcc/config/riscv/riscv-avlprop.cc b/gcc/config/riscv/riscv-avlprop.cc index 4ae15f25ca2a..71d6f6a04957 100644 --- a/gcc/config/riscv/riscv-avlprop.cc +++ b/gcc/config/riscv/riscv-avlprop.cc @@ -458,7 +458,7 @@ pass_avlprop::execute (function *fn) /* TODO: We only do AVL propagation for VLMAX AVL with tail agnostic policy since we have missed-LEN information partial - autovectorization. We could add more more AVL propagation + autovectorization. We could add more AVL propagation for intrinsic codes in the future. */ if (vlmax_ta_p (insn->rtl ())) m_candidates.safe_push (std::make_pair (AVLPROP_VLMAX_TA, insn)); diff --git a/gcc/config/riscv/riscv-c.cc b/gcc/config/riscv/riscv-c.cc index 3755ec0b8ef3..43c8eecbb6ff 100644 --- a/gcc/config/riscv/riscv-c.cc +++ b/gcc/config/riscv/riscv-c.cc @@ -34,10 +34,77 @@ along with GCC; see the file COPYING3. If not see #define builtin_define(TXT) cpp_define (pfile, TXT) +struct pragma_intrinsic_flags +{ + int intrinsic_target_flags; + + int intrinsic_riscv_vector_elen_flags; + int intrinsic_riscv_zvl_flags; + int intrinsic_riscv_zvb_subext; + int intrinsic_riscv_zvk_subext; +}; + +static void +riscv_pragma_intrinsic_flags_pollute (struct pragma_intrinsic_flags *flags) +{ + flags->intrinsic_target_flags = target_flags; + flags->intrinsic_riscv_vector_elen_flags = riscv_vector_elen_flags; + flags->intrinsic_riscv_zvl_flags = riscv_zvl_flags; + flags->intrinsic_riscv_zvb_subext = riscv_zvb_subext; + flags->intrinsic_riscv_zvk_subext = riscv_zvk_subext; + + target_flags = target_flags + | MASK_VECTOR; + + riscv_zvl_flags = riscv_zvl_flags + | MASK_ZVL32B + | MASK_ZVL64B + | MASK_ZVL128B; + + riscv_vector_elen_flags = riscv_vector_elen_flags + | MASK_VECTOR_ELEN_32 + | MASK_VECTOR_ELEN_64 + | MASK_VECTOR_ELEN_FP_16 + | MASK_VECTOR_ELEN_FP_32 + | MASK_VECTOR_ELEN_FP_64; + + riscv_zvb_subext = riscv_zvb_subext + | MASK_ZVBB + | MASK_ZVBC + | MASK_ZVKB; + + riscv_zvk_subext = riscv_zvk_subext + | MASK_ZVKG + | MASK_ZVKNED + | MASK_ZVKNHA + | MASK_ZVKNHB + | MASK_ZVKSED + | MASK_ZVKSH + | MASK_ZVKN + | MASK_ZVKNC + | MASK_ZVKNG + | MASK_ZVKS + | MASK_ZVKSC + | MASK_ZVKSG + | MASK_ZVKT; +} + +static void +riscv_pragma_intrinsic_flags_restore (struct pragma_intrinsic_flags *flags) +{ + target_flags = flags->intrinsic_target_flags; + + riscv_vector_elen_flags = flags->intrinsic_riscv_vector_elen_flags; + riscv_zvl_flags = flags->intrinsic_riscv_zvl_flags; + riscv_zvb_subext = flags->intrinsic_riscv_zvb_subext; + riscv_zvk_subext = flags->intrinsic_riscv_zvk_subext; +} + static int riscv_ext_version_value (unsigned major, unsigned minor) { - return (major * RISCV_MAJOR_VERSION_BASE) + (minor * RISCV_MINOR_VERSION_BASE); + return (major * RISCV_MAJOR_VERSION_BASE) + + (minor * RISCV_MINOR_VERSION_BASE); } /* Implement TARGET_CPU_CPP_BUILTINS. */ @@ -110,7 +177,6 @@ riscv_cpu_cpp_builtins (cpp_reader *pfile) case CM_MEDANY: builtin_define ("__riscv_cmodel_medany"); break; - } if (riscv_user_wants_strict_align) @@ -140,11 +206,14 @@ riscv_cpu_cpp_builtins (cpp_reader *pfile) builtin_define ("__riscv_vector"); builtin_define_with_int_value ("__riscv_v_intrinsic", riscv_ext_version_value (0, 12)); + + if (rvv_vector_bits == RVV_VECTOR_BITS_ZVL) + builtin_define_with_int_value ("__riscv_v_fixed_vlen", TARGET_MIN_VLEN); } - if (TARGET_XTHEADVECTOR) - builtin_define_with_int_value ("__riscv_th_v_intrinsic", - riscv_ext_version_value (0, 11)); + if (TARGET_XTHEADVECTOR) + builtin_define_with_int_value ("__riscv_th_v_intrinsic", + riscv_ext_version_value (0, 11)); /* Define architecture extension test macros. */ builtin_define_with_int_value ("__riscv_arch_test", 1); @@ -198,14 +267,20 @@ riscv_pragma_intrinsic (cpp_reader *) if (strcmp (name, "vector") == 0 || strcmp (name, "xtheadvector") == 0) { - if (!TARGET_VECTOR) - { - error ("%<#pragma riscv intrinsic%> option %qs needs 'V' or " - "'XTHEADVECTOR' extension enabled", - name); - return; - } + struct pragma_intrinsic_flags backup_flags; + + riscv_pragma_intrinsic_flags_pollute (&backup_flags); + + riscv_option_override (); + init_adjust_machine_modes (); + riscv_vector::reinit_builtins (); riscv_vector::handle_pragma_vector (); + + riscv_pragma_intrinsic_flags_restore (&backup_flags); + + /* Re-initialize after the flags are restored. */ + riscv_option_override (); + init_adjust_machine_modes (); } else error ("unknown %<#pragma riscv intrinsic%> option %qs", name); diff --git a/gcc/config/riscv/riscv-cores.def b/gcc/config/riscv/riscv-cores.def index 57928bccdc82..2f5efe3be86a 100644 --- a/gcc/config/riscv/riscv-cores.def +++ b/gcc/config/riscv/riscv-cores.def @@ -40,6 +40,7 @@ RISCV_TUNE("sifive-7-series", sifive_7, sifive_7_tune_info) RISCV_TUNE("sifive-p400-series", sifive_p400, sifive_p400_tune_info) RISCV_TUNE("sifive-p600-series", sifive_p600, sifive_p600_tune_info) RISCV_TUNE("thead-c906", generic, thead_c906_tune_info) +RISCV_TUNE("xiangshan-nanhu", xiangshan, xiangshan_nanhu_tune_info) RISCV_TUNE("generic-ooo", generic_ooo, generic_ooo_tune_info) RISCV_TUNE("size", generic, optimize_size_tune_info) @@ -90,4 +91,9 @@ RISCV_CORE("thead-c906", "rv64imafdc_xtheadba_xtheadbb_xtheadbs_xtheadcmo_" "xtheadcondmov_xtheadfmemidx_xtheadmac_" "xtheadmemidx_xtheadmempair_xtheadsync", "thead-c906") + +RISCV_CORE("xiangshan-nanhu", "rv64imafdc_zba_zbb_zbc_zbs_" + "zbkb_zbkc_zbkx_zknd_zkne_zknh_zksed_zksh_" + "svinval_zicbom_zicboz", + "xiangshan-nanhu") #undef RISCV_CORE diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index 281dd068c55f..1b2dd5757a8e 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -57,6 +57,7 @@ enum riscv_microarchitecture_type { sifive_7, sifive_p400, sifive_p600, + xiangshan, generic_ooo }; extern enum riscv_microarchitecture_type riscv_microarchitecture; @@ -73,7 +74,7 @@ enum stack_protector_guard { }; /* RISC-V auto-vectorization RVV LMUL. */ -enum riscv_autovec_lmul_enum { +enum rvv_max_lmul_enum { RVV_M1 = 1, RVV_M2 = 2, RVV_M4 = 4, @@ -151,6 +152,12 @@ enum rvv_vector_bits_enum { /* The maximmum LMUL according to user configuration. */ #define TARGET_MAX_LMUL \ - (int) (riscv_autovec_lmul == RVV_DYNAMIC ? RVV_M8 : riscv_autovec_lmul) + (int) (rvv_max_lmul == RVV_DYNAMIC ? RVV_M8 : rvv_max_lmul) + +/* TLS types. */ +enum riscv_tls_type { + TLS_TRADITIONAL, + TLS_DESCRIPTORS +}; #endif /* ! GCC_RISCV_OPTS_H */ diff --git a/gcc/config/riscv/riscv-protos.h b/gcc/config/riscv/riscv-protos.h index b87355938052..5d46a29d8b70 100644 --- a/gcc/config/riscv/riscv-protos.h +++ b/gcc/config/riscv/riscv-protos.h @@ -34,9 +34,10 @@ enum riscv_symbol_type { SYMBOL_TLS, SYMBOL_TLS_LE, SYMBOL_TLS_IE, - SYMBOL_TLS_GD + SYMBOL_TLS_GD, + SYMBOL_TLSDESC, }; -#define NUM_SYMBOL_TYPES (SYMBOL_TLS_GD + 1) +#define NUM_SYMBOL_TYPES (SYMBOL_TLSDESC + 1) /* Classifies an address. @@ -546,6 +547,7 @@ enum avl_type }; /* Routines implemented in riscv-vector-builtins.cc. */ void init_builtins (void); +void reinit_builtins (void); const char *mangle_builtin_type (const_tree); tree lookup_vector_type_attribute (const_tree); bool builtin_type_p (const_tree); @@ -762,6 +764,7 @@ extern bool riscv_option_valid_attribute_p (tree, tree, tree, int); extern void riscv_override_options_internal (struct gcc_options *); +extern void riscv_option_override (void); struct riscv_tune_param; /* Information about one micro-arch we know about. */ diff --git a/gcc/config/riscv/riscv-subset.h b/gcc/config/riscv/riscv-subset.h index ae849e2a3021..fe7f54d8bc57 100644 --- a/gcc/config/riscv/riscv-subset.h +++ b/gcc/config/riscv/riscv-subset.h @@ -105,9 +105,15 @@ class riscv_subset_list int match_score (riscv_subset_list *) const; void set_loc (location_t); + + void finalize (); }; extern const riscv_subset_list *riscv_current_subset_list (void); +extern const riscv_subset_list *riscv_cmdline_subset_list (void); +extern std::string * riscv_func_target_get (tree); +extern void riscv_func_target_put (tree, std::string); +extern void riscv_func_target_remove_and_destory (tree); extern void riscv_set_arch_by_subset_list (riscv_subset_list *, struct gcc_options *); diff --git a/gcc/config/riscv/riscv-target-attr.cc b/gcc/config/riscv/riscv-target-attr.cc index 9dbb78f28cc0..1a73d69bf50d 100644 --- a/gcc/config/riscv/riscv-target-attr.cc +++ b/gcc/config/riscv/riscv-target-attr.cc @@ -54,6 +54,10 @@ class riscv_target_attr_parser m_loc = loc; } + riscv_subset_list* get_riscv_subset_list () { + return m_subset_list; + } + void update_settings (struct gcc_options *opts) const; private: const char *m_raw_attr_str; @@ -109,7 +113,7 @@ riscv_target_attr_parser::parse_arch (const char *str) char *str_to_check = buf.get (); strcpy (str_to_check, str); const char *token = strtok_r (str_to_check, ",", &str_to_check); - m_subset_list = riscv_current_subset_list ()->clone (); + m_subset_list = riscv_cmdline_subset_list ()->clone (); m_subset_list->set_loc (m_loc); while (token) { @@ -136,6 +140,8 @@ riscv_target_attr_parser::parse_arch (const char *str) } token = strtok_r (NULL, ",", &str_to_check); } + + m_subset_list->finalize (); return true; } fail: @@ -295,7 +301,8 @@ num_occurences_in_str (char c, char *str) and update the global target options space. */ static bool -riscv_process_target_attr (tree args, location_t loc, struct gcc_options *opts) +riscv_process_target_attr (tree fndecl, tree args, location_t loc, + struct gcc_options *opts) { if (TREE_CODE (args) == TREE_LIST) { @@ -304,7 +311,7 @@ riscv_process_target_attr (tree args, location_t loc, struct gcc_options *opts) tree head = TREE_VALUE (args); if (head) { - if (!riscv_process_target_attr (head, loc, opts)) + if (!riscv_process_target_attr (fndecl, head, loc, opts)) return false; } args = TREE_CHAIN (args); @@ -357,6 +364,11 @@ riscv_process_target_attr (tree args, location_t loc, struct gcc_options *opts) /* Apply settings from target attribute. */ attr_parser.update_settings (opts); + /* Add the string of the target attribute to the fndecl hash table. */ + riscv_subset_list *subset_list = attr_parser.get_riscv_subset_list (); + if (subset_list) + riscv_func_target_put (fndecl, subset_list->to_string (true)); + return true; } @@ -374,7 +386,7 @@ riscv_option_valid_attribute_p (tree fndecl, tree, tree args, int) /* Save the current target options to restore at the end. */ cl_target_option_save (&cur_target, &global_options, &global_options_set); - ret = riscv_process_target_attr (args, loc, &global_options); + ret = riscv_process_target_attr (fndecl, args, loc, &global_options); if (ret) { diff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc index 967f4e382875..814c5febabe6 100644 --- a/gcc/config/riscv/riscv-v.cc +++ b/gcc/config/riscv/riscv-v.cc @@ -2338,7 +2338,7 @@ preferred_simd_mode (scalar_mode mode) if (autovec_use_vlmax_p ()) { /* We use LMUL = 1 as base bytesize which is BYTES_PER_RISCV_VECTOR and - riscv_autovec_lmul as multiply factor to calculate the the NUNITS to + rvv_max_lmul as multiply factor to calculate the NUNITS to get the auto-vectorization mode. */ poly_uint64 nunits; poly_uint64 vector_size = BYTES_PER_RISCV_VECTOR * TARGET_MAX_LMUL; diff --git a/gcc/config/riscv/riscv-vector-builtins-shapes.cc b/gcc/config/riscv/riscv-vector-builtins-shapes.cc index c5ffcc1f2c4c..a3ffa92e967f 100644 --- a/gcc/config/riscv/riscv-vector-builtins-shapes.cc +++ b/gcc/config/riscv/riscv-vector-builtins-shapes.cc @@ -72,9 +72,10 @@ build_one (function_builder &b, const function_group_info &group, if (TARGET_XTHEADVECTOR && !check_type (return_type, argument_types)) return; - b.add_overloaded_function (function_instance, *group.shape); + b.add_overloaded_function (function_instance, *group.shape, + group.required_extensions); b.add_unique_function (function_instance, (*group.shape), return_type, - argument_types); + argument_types, group.required_extensions); } /* Add a function instance for every operand && predicate && args @@ -101,7 +102,7 @@ build_all (function_builder &b, const function_group_info &group) #define BASE_NAME_MAX_LEN 16 -/* Base class for for build. */ +/* Base class for build. */ struct build_base : public function_shape { void build (function_builder &b, @@ -249,9 +250,10 @@ build_th_loadstore (function_builder &b, const function_group_info &group, if (strstr (group.base_name, "w") && (sew == 8 || sew ==16)) return; - b.add_overloaded_function (function_instance, *group.shape); + b.add_overloaded_function (function_instance, *group.shape, + group.required_extensions); b.add_unique_function (function_instance, (*group.shape), return_type, - argument_types); + argument_types, group.required_extensions); } /* th_loadstore_width_def class. */ @@ -931,7 +933,7 @@ struct vcreate_def : public build_base argument_types.quick_push (arg_type); b.add_unique_function (function_instance, (*group.shape), return_type, - argument_types); + argument_types, group.required_extensions); } } @@ -966,7 +968,8 @@ struct read_vl_def : public function_shape { auto_vec argument_types; b.add_unique_function (get_read_vl_instance (), (*group.shape), - size_type_node, argument_types); + size_type_node, argument_types, + group.required_extensions); } char *get_name (function_builder &b, const function_instance &instance, @@ -1024,7 +1027,8 @@ struct vlenb_def : public function_shape *group.shape, group.ops_infos.types[0], group.preds[0], &group.ops_infos); b.add_unique_function (function_instance, (*group.shape), - long_unsigned_type_node, argument_types); + long_unsigned_type_node, argument_types, + group.required_extensions); } char *get_name (function_builder &b, const function_instance &instance, diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc index c5881a501d13..192a6c230d1c 100644 --- a/gcc/config/riscv/riscv-vector-builtins.cc +++ b/gcc/config/riscv/riscv-vector-builtins.cc @@ -106,6 +106,9 @@ class GTY (()) registered_function /* Generate hash value based on the overload_name and the argument list passed by the user when calling. */ hashval_t overloaded_hash (const vec &); + + /* The reqired extension for the register function. */ + enum required_ext required; }; /* Hash traits for registered_function. */ @@ -3123,6 +3126,36 @@ register_builtin_types () #include "riscv-vector-builtins.def" } +/* Similar as register_builtin_types but perform the registration if and + only if the element of abi_vector_type is NULL_TREE. */ +static void +register_builtin_types_on_null () +{ + /* Get type node from get_typenode_from_name to prevent we have different type + node define in different target libraries, e.g. int32_t defined as + `long` in RV32/newlib-stdint, but `int` for RV32/glibc-stdint.h. + NOTE: uint[16|32|64]_type_node already defined in tree.h. */ + tree int8_type_node = get_typenode_from_name (INT8_TYPE); + tree uint8_type_node = get_typenode_from_name (UINT8_TYPE); + tree int16_type_node = get_typenode_from_name (INT16_TYPE); + tree int32_type_node = get_typenode_from_name (INT32_TYPE); + tree int64_type_node = get_typenode_from_name (INT64_TYPE); + + machine_mode mode; +#define DEF_RVV_TYPE(NAME, NCHARS, ABI_NAME, SCALAR_TYPE, VECTOR_MODE, \ + ARGS...) \ + mode = VECTOR_MODE##mode; \ + if (abi_vector_types[VECTOR_TYPE_##NAME] == NULL_TREE) \ + register_builtin_type (VECTOR_TYPE_##NAME, SCALAR_TYPE##_type_node, mode); + +#define DEF_RVV_TUPLE_TYPE(NAME, NCHARS, ABI_NAME, SUBPART_TYPE, SCALAR_TYPE, \ + NF, VECTOR_SUFFIX) \ + if (abi_vector_types[VECTOR_TYPE_##NAME] == NULL_TREE) \ + register_tuple_type (VECTOR_TYPE_##NAME, VECTOR_TYPE_##SUBPART_TYPE, \ + SCALAR_TYPE##_type_node, NF); +#include "riscv-vector-builtins.def" +} + /* Register vector type TYPE under its risv_vector.h name. */ static void register_vector_type (vector_type_index type) @@ -3671,6 +3704,7 @@ function_builder::add_function (const function_instance &instance, const char *name, tree fntype, tree attrs, bool placeholder_p, const char *overload_name, const vec &argument_types, + enum required_ext required, bool overloaded_p = false) { unsigned int code = vec_safe_length (registered_functions); @@ -3700,6 +3734,7 @@ function_builder::add_function (const function_instance &instance, rfn.overload_name = overload_name ? xstrdup (overload_name) : NULL; rfn.argument_types = argument_types; rfn.overloaded_p = overloaded_p; + rfn.required = required; vec_safe_push (registered_functions, &rfn); return rfn; @@ -3714,7 +3749,8 @@ void function_builder::add_unique_function (const function_instance &instance, const function_shape *shape, tree return_type, - vec &argument_types) + vec &argument_types, + enum required_ext required) { /* Do not add this function if it is invalid. */ if (!check_required_extensions (instance)) @@ -3732,7 +3768,7 @@ function_builder::add_unique_function (const function_instance &instance, tree attrs = get_attributes (instance); registered_function &rfn = add_function (instance, name, fntype, attrs, false, overload_name, - argument_types.copy ()); + argument_types.copy (), required); /* Enter the function into the hash table. */ hashval_t hash = instance.hash (); @@ -3747,7 +3783,7 @@ function_builder::add_unique_function (const function_instance &instance, tree attrs = get_attributes (instance); bool placeholder_p = !m_direct_overloads; add_function (instance, overload_name, fntype, attrs, placeholder_p, NULL, - vNULL); + vNULL, required); /* Enter the function into the non-overloaded hash table. */ hash = rfn.overloaded_hash (); @@ -3762,7 +3798,8 @@ function_builder::add_unique_function (const function_instance &instance, /* Add overloaded function for gcc. */ void function_builder::add_overloaded_function (const function_instance &instance, - const function_shape *shape) + const function_shape *shape, + enum required_ext required) { if (!check_required_extensions (instance)) return; @@ -3775,7 +3812,7 @@ function_builder::add_overloaded_function (const function_instance &instance, for the overloaded function. */ tree fntype = build_function_type (void_type_node, void_list_node); add_function (instance, name, fntype, NULL_TREE, m_direct_overloads, name, - vNULL, true); + vNULL, required, true); obstack_free (&m_string_obstack, name); } } @@ -4419,6 +4456,22 @@ init_builtins () handle_pragma_vector (); } +/* Reinitialize builtins similar to init_builtins, but only the null + builtin types will be registered. */ +void +reinit_builtins () +{ + rvv_switcher rvv; + + if (!TARGET_VECTOR) + return; + + register_builtin_types_on_null (); + + if (in_lto_p) + handle_pragma_vector (); +} + /* Implement TARGET_VERIFY_TYPE_CONTEXT for RVV types. */ bool verify_type_context (location_t loc, type_context_kind context, const_tree type, @@ -4586,6 +4639,16 @@ rtx expand_builtin (unsigned int code, tree exp, rtx target) { registered_function &rfn = *(*registered_functions)[code]; + + if (!required_extensions_specified (rfn.required)) + { + error_at (EXPR_LOCATION (exp), + "built-in function %qE requires the %qs ISA extension", + exp, + reqired_ext_to_isa_name (rfn.required)); + return target; + } + return function_expander (rfn.instance, rfn.decl, exp, target).expand (); } diff --git a/gcc/config/riscv/riscv-vector-builtins.h b/gcc/config/riscv/riscv-vector-builtins.h index 22fed60b4c31..05d18ae13225 100644 --- a/gcc/config/riscv/riscv-vector-builtins.h +++ b/gcc/config/riscv/riscv-vector-builtins.h @@ -124,8 +124,75 @@ enum required_ext ZVKSED_EXT, /* Crypto vector Zvksed sub-ext */ ZVKSH_EXT, /* Crypto vector Zvksh sub-ext */ XTHEADVECTOR_EXT, /* XTheadVector extension */ + /* Please update below to isa_name func when add or remove enum type(s). */ }; +static inline const char * reqired_ext_to_isa_name (enum required_ext required) +{ + switch (required) + { + case VECTOR_EXT: + return "v"; + case ZVBB_EXT: + return "zvbb"; + case ZVBB_OR_ZVKB_EXT: + return "zvbb or zvkb"; + case ZVBC_EXT: + return "zvbc"; + case ZVKG_EXT: + return "zvkg"; + case ZVKNED_EXT: + return "zvkned"; + case ZVKNHA_OR_ZVKNHB_EXT: + return "zvknha or zvknhb"; + case ZVKNHB_EXT: + return "zvknhb"; + case ZVKSED_EXT: + return "zvksed"; + case ZVKSH_EXT: + return "zvksh"; + case XTHEADVECTOR_EXT: + return "xthreadvector"; + default: + gcc_unreachable (); + } + + gcc_unreachable (); +} + +static inline bool required_extensions_specified (enum required_ext required) +{ + switch (required) + { + case VECTOR_EXT: + return TARGET_VECTOR;; + case ZVBB_EXT: + return TARGET_ZVBB; + case ZVBB_OR_ZVKB_EXT: + return TARGET_ZVBB || TARGET_ZVKB; + case ZVBC_EXT: + return TARGET_ZVBC; + case ZVKG_EXT: + return TARGET_ZVKG; + case ZVKNED_EXT: + return TARGET_ZVKNED; + case ZVKNHA_OR_ZVKNHB_EXT: + return TARGET_ZVKNHA || TARGET_ZVKNHB; + case ZVKNHB_EXT: + return TARGET_ZVKNHB; + case ZVKSED_EXT: + return TARGET_ZVKSED; + case ZVKSH_EXT: + return TARGET_ZVKSH; + case XTHEADVECTOR_EXT: + return TARGET_XTHEADVECTOR; + default: + gcc_unreachable (); + } + + gcc_unreachable (); +} + /* Enumerates the RVV operand types. */ enum operand_type_index { @@ -325,9 +392,10 @@ class function_builder void allocate_argument_types (const function_instance &, vec &) const; void apply_predication (const function_instance &, tree, vec &) const; void add_unique_function (const function_instance &, const function_shape *, - tree, vec &); + tree, vec &, enum required_ext); void add_overloaded_function (const function_instance &, - const function_shape *); + const function_shape *, + enum required_ext); void register_function_group (const function_group_info &); void append_name (const char *); void append_base_name (const char *); @@ -340,7 +408,8 @@ class function_builder registered_function &add_function (const function_instance &, const char *, tree, tree, bool, const char *, - const vec &, bool); + const vec &, enum required_ext, + bool); /* True if we should create a separate decl for each instance of an overloaded function, instead of using function_builder. */ diff --git a/gcc/config/riscv/riscv-vector-costs.cc b/gcc/config/riscv/riscv-vector-costs.cc index 5ac8655b4d87..d27bb68a7b92 100644 --- a/gcc/config/riscv/riscv-vector-costs.cc +++ b/gcc/config/riscv/riscv-vector-costs.cc @@ -752,7 +752,7 @@ update_local_live_ranges ( We will be likely using one more vector variable. */ unsigned int max_point - = (*program_points_per_bb.get (bb)).length () - 1; + = (*program_points_per_bb.get (bb)).length (); auto *live_ranges = live_ranges_per_bb.get (bb); bool existed_p = false; tree var = type == load_vec_info_type @@ -890,7 +890,7 @@ costs::record_potential_unexpected_spills (loop_vec_info loop_vinfo) { /* We only want to apply the heuristic if LOOP_VINFO is being vectorized for VLA and known NITERS VLS loop. */ - if (riscv_autovec_lmul == RVV_DYNAMIC + if (rvv_max_lmul == RVV_DYNAMIC && (m_cost_type == VLA_VECTOR_COST || (m_cost_type == VLS_VECTOR_COST && LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)))) @@ -998,7 +998,7 @@ costs::better_main_loop_than_p (const vector_costs *uncast_other) const return other_prefer_unrolled; } } - else if (riscv_autovec_lmul == RVV_DYNAMIC) + else if (rvv_max_lmul == RVV_DYNAMIC) { if (other->m_has_unexpected_spills_p) { @@ -1170,7 +1170,7 @@ costs::add_stmt_cost (int count, vect_cost_for_stmt kind, /* For some target specific vectorization cost which can't be handled per stmt, we check the requisite conditions and adjust the vectorization cost - accordingly if satisfied. One typical example is to model model and adjust + accordingly if satisfied. One typical example is to model and adjust loop_len cost for known_lt (NITERS, VF). */ void diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 680c4a728e92..74445bc977c6 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -498,6 +498,23 @@ static const struct riscv_tune_param thead_c906_tune_info = { NULL, /* vector cost */ }; +/* Costs to use when optimizing for xiangshan nanhu. */ +static const struct riscv_tune_param xiangshan_nanhu_tune_info = { + {COSTS_N_INSNS (3), COSTS_N_INSNS (3)}, /* fp_add */ + {COSTS_N_INSNS (3), COSTS_N_INSNS (3)}, /* fp_mul */ + {COSTS_N_INSNS (10), COSTS_N_INSNS (20)}, /* fp_div */ + {COSTS_N_INSNS (3), COSTS_N_INSNS (3)}, /* int_mul */ + {COSTS_N_INSNS (6), COSTS_N_INSNS (6)}, /* int_div */ + 6, /* issue_rate */ + 3, /* branch_cost */ + 3, /* memory_cost */ + 3, /* fmv_cost */ + true, /* slow_unaligned_access */ + false, /* use_divmod_expansion */ + RISCV_FUSE_ZEXTW | RISCV_FUSE_ZEXTH, /* fusible_ops */ + NULL, /* vector cost */ +}; + /* Costs to use when optimizing for a generic ooo profile. */ static const struct riscv_tune_param generic_ooo_tune_info = { {COSTS_N_INSNS (2), COSTS_N_INSNS (2)}, /* fp_add */ @@ -535,6 +552,8 @@ static const struct riscv_tune_param optimize_size_tune_info = { static bool riscv_avoid_shrink_wrapping_separate (); static tree riscv_handle_fndecl_attribute (tree *, tree, tree, int, bool *); static tree riscv_handle_type_attribute (tree *, tree, tree, int, bool *); +static tree riscv_handle_rvv_vector_bits_attribute (tree *, tree, tree, int, + bool *); /* Defining target-specific uses of __attribute__. */ static const attribute_spec riscv_gnu_attributes[] = @@ -557,7 +576,17 @@ static const attribute_spec riscv_gnu_attributes[] = /* This attribute is used to declare a function, forcing it to use the standard vector calling convention variant. Syntax: __attribute__((riscv_vector_cc)). */ - {"riscv_vector_cc", 0, 0, false, true, true, true, NULL, NULL} + {"riscv_vector_cc", 0, 0, false, true, true, true, NULL, NULL}, + /* This attribute is used to declare a new type, to appoint the exactly + bits size of the type. For example: + + typedef vint8m1_t f_vint8m1_t __attribute__((riscv_rvv_vector_bits(256))); + + The new created type f_vint8m1_t will be exactly 256 bits. It can be + be used in globals, structs, unions, and arrays instead of sizeless + types. */ + {"riscv_rvv_vector_bits", 1, 1, false, true, false, true, + riscv_handle_rvv_vector_bits_attribute, NULL}, }; static const scoped_attribute_specs riscv_gnu_attribute_table = @@ -570,7 +599,17 @@ static const attribute_spec riscv_attributes[] = /* This attribute is used to declare a function, forcing it to use the standard vector calling convention variant. Syntax: [[riscv::vector_cc]]. */ - {"vector_cc", 0, 0, false, true, true, true, NULL, NULL} + {"vector_cc", 0, 0, false, true, true, true, NULL, NULL}, + /* This attribute is used to declare a new type, to appoint the exactly + bits size of the type. For example: + + typedef vint8m1_t f_vint8m1_t __attribute__((riscv_rvv_vector_bits(256))); + + The new created type f_vint8m1_t will be exactly 256 bits. It can be + be used in globals, structs, unions, and arrays instead of sizeless + types. */ + {"rvv_vector_bits", 1, 1, false, true, false, true, + riscv_handle_rvv_vector_bits_attribute, NULL}, }; static const scoped_attribute_specs riscv_nongnu_attribute_table = @@ -1033,6 +1072,7 @@ static int riscv_symbol_insns (enum riscv_symbol_type type) case SYMBOL_ABSOLUTE: return 2; /* LUI + the reference. */ case SYMBOL_PCREL: return 2; /* AUIPC + the reference. */ case SYMBOL_TLS_LE: return 3; /* LUI + ADD TP + the reference. */ + case SYMBOL_TLSDESC: return 6; /* 4-instruction call + ADD TP + the reference. */ case SYMBOL_GOT_DISP: return 3; /* AUIPC + LD GOT + the reference. */ case SYMBOL_FORCE_TO_MEM: return 3; /* AUIPC + LD + the reference. */ default: gcc_unreachable (); @@ -2181,7 +2221,7 @@ riscv_call_tls_get_addr (rtx sym, rtx result) static rtx riscv_legitimize_tls_address (rtx loc) { - rtx dest, tp, tmp; + rtx dest, tp, tmp, a0; enum tls_model model = SYMBOL_REF_TLS_MODEL (loc); #if 0 @@ -2197,9 +2237,24 @@ riscv_legitimize_tls_address (rtx loc) /* Rely on section anchors for the optimization that LDM TLS provides. The anchor's address is loaded with GD TLS. */ case TLS_MODEL_GLOBAL_DYNAMIC: - tmp = gen_rtx_REG (Pmode, GP_RETURN); - dest = gen_reg_rtx (Pmode); - emit_libcall_block (riscv_call_tls_get_addr (loc, tmp), dest, tmp, loc); + if (TARGET_TLSDESC) + { + static unsigned seqno; + tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM); + a0 = gen_rtx_REG (Pmode, GP_ARG_FIRST); + dest = gen_reg_rtx (Pmode); + + emit_insn (gen_tlsdesc (Pmode, loc, GEN_INT (seqno))); + emit_insn (gen_add3_insn (dest, a0, tp)); + seqno++; + } + else + { + tmp = gen_rtx_REG (Pmode, GP_RETURN); + dest = gen_reg_rtx (Pmode); + emit_libcall_block (riscv_call_tls_get_addr (loc, tmp), dest, tmp, + loc); + } break; case TLS_MODEL_INITIAL_EXEC: @@ -5378,7 +5433,8 @@ riscv_setup_incoming_varargs (cumulative_args_t cum, argument. Advance a local copy of CUM past the last "real" named argument, to find out how many registers are left over. */ local_cum = *get_cumulative_args (cum); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) riscv_function_arg_advance (pack_cumulative_args (&local_cum), arg); /* Found out how many registers we need to save. */ @@ -5419,6 +5475,152 @@ riscv_v_abi () return v_abi; } +static bool +riscv_vector_int_type_p (const_tree type) +{ + machine_mode mode = TYPE_MODE (type); + + if (VECTOR_MODE_P (mode)) + return INTEGRAL_MODE_P (GET_MODE_INNER (mode)); + + const char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); + return strstr (name, "int") != NULL || strstr (name, "uint") != NULL; +} + +static bool +riscv_vector_float_type_p (const_tree type) +{ + machine_mode mode = TYPE_MODE (type); + + if (VECTOR_MODE_P (mode)) + return FLOAT_MODE_P (GET_MODE_INNER (mode)); + + const char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); + return strstr (name, "vfloat") != NULL; +} + +static int +riscv_vector_element_bitsize (const_tree type) +{ + machine_mode mode = TYPE_MODE (type); + + if (VECTOR_MODE_P (mode)) + return GET_MODE_BITSIZE (GET_MODE_INNER (mode)); + + const char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); + + if (strstr (name, "bool") != NULL) + return 1; + else if (strstr (name, "int8") != NULL) + return 8; + else if (strstr (name, "int16") != NULL || strstr (name, "float16") != NULL) + return 16; + else if (strstr (name, "int32") != NULL || strstr (name, "float32") != NULL) + return 32; + else if (strstr (name, "int64") != NULL || strstr (name, "float64") != NULL) + return 64; + + gcc_unreachable (); +} + +static int +riscv_vector_required_min_vlen (const_tree type) +{ + machine_mode mode = TYPE_MODE (type); + + if (riscv_v_ext_mode_p (mode)) + return TARGET_MIN_VLEN; + + int element_bitsize = riscv_vector_element_bitsize (type); + const char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); + + if (strstr (name, "bool64") != NULL) + return element_bitsize * 64; + else if (strstr (name, "bool32") != NULL) + return element_bitsize * 32; + else if (strstr (name, "bool16") != NULL) + return element_bitsize * 16; + else if (strstr (name, "bool8") != NULL) + return element_bitsize * 8; + else if (strstr (name, "bool4") != NULL) + return element_bitsize * 4; + else if (strstr (name, "bool2") != NULL) + return element_bitsize * 2; + + if (strstr (name, "mf8") != NULL) + return element_bitsize * 8; + else if (strstr (name, "mf4") != NULL) + return element_bitsize * 4; + else if (strstr (name, "mf2") != NULL) + return element_bitsize * 2; + + return element_bitsize; +} + +static void +riscv_validate_vector_type (const_tree type, const char *hint) +{ + gcc_assert (riscv_vector_type_p (type)); + + if (!TARGET_VECTOR) + { + error_at (input_location, "%s %qT requires the V ISA extension", + hint, type); + return; + } + + int element_bitsize = riscv_vector_element_bitsize (type); + bool int_type_p = riscv_vector_int_type_p (type); + + if (int_type_p && element_bitsize == 64 + && !TARGET_VECTOR_ELEN_64_P (riscv_vector_elen_flags)) + { + error_at (input_location, + "%s %qT requires the zve64x, zve64f, zve64d or v ISA extension", + hint, type); + return; + } + + bool float_type_p = riscv_vector_float_type_p (type); + + if (float_type_p && element_bitsize == 16 + && !TARGET_VECTOR_ELEN_FP_16_P (riscv_vector_elen_flags)) + { + error_at (input_location, + "%s %qT requires the zvfhmin or zvfh ISA extension", + hint, type); + return; + } + + if (float_type_p && element_bitsize == 32 + && !TARGET_VECTOR_ELEN_FP_32_P (riscv_vector_elen_flags)) + { + error_at (input_location, + "%s %qT requires the zve32f, zve64f, zve64d or v ISA extension", + hint, type); + return; + } + + if (float_type_p && element_bitsize == 64 + && !TARGET_VECTOR_ELEN_FP_64_P (riscv_vector_elen_flags)) + { + error_at (input_location, + "%s %qT requires the zve64d or v ISA extension", hint, type); + return; + } + + int required_min_vlen = riscv_vector_required_min_vlen (type); + + if (TARGET_MIN_VLEN < required_min_vlen) + { + error_at ( + input_location, + "%s %qT requires the minimal vector length %qd but %qd is given", + hint, type, required_min_vlen, TARGET_MIN_VLEN); + return; + } +} + /* Return true if a function with type FNTYPE returns its value in RISC-V V registers. */ @@ -5427,7 +5629,13 @@ riscv_return_value_is_vector_type_p (const_tree fntype) { tree return_type = TREE_TYPE (fntype); - return riscv_vector_type_p (return_type); + if (riscv_vector_type_p (return_type)) + { + riscv_validate_vector_type (return_type, "return type"); + return true; + } + else + return false; } /* Return true if a function with type FNTYPE takes arguments in @@ -5441,7 +5649,10 @@ riscv_arguments_is_vector_type_p (const_tree fntype) { tree arg_type = TREE_VALUE (chain); if (riscv_vector_type_p (arg_type)) - return true; + { + riscv_validate_vector_type (arg_type, "argument type"); + return true; + } } return false; @@ -5453,8 +5664,16 @@ riscv_arguments_is_vector_type_p (const_tree fntype) static bool riscv_vector_cc_function_p (const_tree fntype) { - return lookup_attribute ("vector_cc", TYPE_ATTRIBUTES (fntype)) != NULL_TREE - || lookup_attribute ("riscv_vector_cc", TYPE_ATTRIBUTES (fntype)) != NULL_TREE; + tree attr = TYPE_ATTRIBUTES (fntype); + bool vector_cc_p = lookup_attribute ("vector_cc", attr) != NULL_TREE + || lookup_attribute ("riscv_vector_cc", attr) != NULL_TREE; + + if (vector_cc_p && !TARGET_VECTOR) + error_at (input_location, + "function attribute %qs requires the V ISA extension", + "riscv_vector_cc"); + + return vector_cc_p; } /* Implement TARGET_FNTYPE_ABI. */ @@ -5555,6 +5774,67 @@ riscv_handle_type_attribute (tree *node ATTRIBUTE_UNUSED, tree name, tree args, return NULL_TREE; } +static tree +riscv_handle_rvv_vector_bits_attribute (tree *node, tree name, tree args, + ATTRIBUTE_UNUSED int flags, + bool *no_add_attrs) +{ + if (!is_attribute_p ("riscv_rvv_vector_bits", name)) + return NULL_TREE; + + *no_add_attrs = true; + + if (rvv_vector_bits != RVV_VECTOR_BITS_ZVL) + { + error ( + "%qs is only supported when %<-mrvv-vector-bits=zvl%> is specified", + "riscv_rvv_vector_bits"); + return NULL_TREE; + } + + tree type = *node; + + if (!VECTOR_TYPE_P (type) || !riscv_vector::builtin_type_p (type)) + { + error ("%qs applied to non-RVV type %qT", "riscv_rvv_vector_bits", type); + return NULL_TREE; + } + + tree size = TREE_VALUE (args); + + if (TREE_CODE (size) != INTEGER_CST) + { + error ("%qs requires an integer constant", "riscv_rvv_vector_bits"); + return NULL_TREE; + } + + unsigned HOST_WIDE_INT args_in_bits = tree_to_uhwi (size); + unsigned HOST_WIDE_INT type_mode_bits + = GET_MODE_PRECISION (TYPE_MODE (type)).to_constant (); + + if (args_in_bits != type_mode_bits) + { + error ("invalid RVV vector size %qd, " + "expected size is %qd based on LMUL of type and %qs", + (int)args_in_bits, (int)type_mode_bits, "-mrvv-vector-bits=zvl"); + return NULL_TREE; + } + + type = build_distinct_type_copy (type); + TYPE_ATTRIBUTES (type) + = remove_attribute ("RVV sizeless type", + copy_list (TYPE_ATTRIBUTES (type))); + + /* The operations like alu/cmp on vbool*_t is not well defined, + continue to treat vbool*_t as indivisible. */ + if (!VECTOR_BOOLEAN_TYPE_P (type)) + TYPE_INDIVISIBLE_P (type) = 0; + + *node = type; + + return NULL_TREE; +} + /* Return true if function TYPE is an interrupt function. */ static bool riscv_interrupt_type_p (tree type) @@ -7347,7 +7627,15 @@ riscv_expand_prologue (void) /* Second step for constant frame. */ HOST_WIDE_INT constant_frame = remaining_size.to_constant (); if (constant_frame == 0) - return; + { + /* We must have allocated stack space for the scalable frame. + Emit a stack tie if we have a frame pointer so that the + allocation is ordered WRT fp setup and subsequent writes + into the frame. */ + if (frame_pointer_needed) + riscv_emit_stack_tie (); + return; + } if (SMALL_OPERAND (-constant_frame)) { @@ -7367,6 +7655,13 @@ riscv_expand_prologue (void) insn = gen_rtx_SET (stack_pointer_rtx, insn); riscv_set_frame_expr (insn); } + + /* We must have allocated the remainder of the stack frame. + Emit a stack tie if we have a frame pointer so that the + allocation is ordered WRT fp setup and subsequent writes + into the frame. */ + if (frame_pointer_needed) + riscv_emit_stack_tie (); } } @@ -8673,8 +8968,13 @@ riscv_declare_function_name (FILE *stream, const char *name, tree fndecl) if (DECL_FUNCTION_SPECIFIC_TARGET (fndecl)) { fprintf (stream, "\t.option push\n"); - std::string isa = riscv_current_subset_list ()->to_string (true); + + std::string *target_name = riscv_func_target_get (fndecl); + std::string isa = target_name != NULL + ? *target_name + : riscv_cmdline_subset_list ()->to_string (true); fprintf (stream, "\t.option arch, %s\n", isa.c_str ()); + riscv_func_target_remove_and_destory (fndecl); struct cl_target_option *local_cl_target = TREE_TARGET_OPTION (DECL_FUNCTION_SPECIFIC_TARGET (fndecl)); @@ -8964,7 +9264,7 @@ riscv_override_options_internal (struct gcc_options *opts) /* Implement TARGET_OPTION_OVERRIDE. */ -static void +void riscv_option_override (void) { #ifdef SUBTARGET_OVERRIDE_OPTIONS @@ -9474,6 +9774,10 @@ riscv_set_current_function (tree decl) cl_target_option_restore (&global_options, &global_options_set, TREE_TARGET_OPTION (new_tree)); + /* The ISA extension can vary based on the function extension like target. + Thus, make sure that the machine modes are reflected correctly here. */ + init_adjust_machine_modes (); + riscv_save_restore_target_globals (new_tree); } @@ -10693,6 +10997,34 @@ riscv_vector_mode_supported_any_target_p (machine_mode) return true; } +/* Implements hook TARGET_FUNCTION_VALUE_REGNO_P. */ + +static bool +riscv_function_value_regno_p (const unsigned regno) +{ + if (GP_RETURN_FIRST <= regno && regno <= GP_RETURN_LAST) + return true; + + if (FP_RETURN_FIRST <= regno && regno <= FP_RETURN_LAST) + return true; + + if (TARGET_VECTOR && regno == V_RETURN) + return true; + + return false; +} + +/* Implements hook TARGET_GET_RAW_RESULT_MODE. */ + +static fixed_size_mode +riscv_get_raw_result_mode (int regno) +{ + if (!is_a (reg_raw_mode[regno])) + return as_a (VOIDmode); + + return default_get_reg_raw_mode (regno); +} + /* Initialize the GCC target structure. */ #undef TARGET_ASM_ALIGNED_HI_OP #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t" @@ -11039,6 +11371,12 @@ riscv_vector_mode_supported_any_target_p (machine_mode) #undef TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P #define TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P riscv_vector_mode_supported_any_target_p +#undef TARGET_FUNCTION_VALUE_REGNO_P +#define TARGET_FUNCTION_VALUE_REGNO_P riscv_function_value_regno_p + +#undef TARGET_GET_RAW_RESULT_MODE +#define TARGET_GET_RAW_RESULT_MODE riscv_get_raw_result_mode + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-riscv.h" diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h index da089a03e9d1..7797e67317a6 100644 --- a/gcc/config/riscv/riscv.h +++ b/gcc/config/riscv/riscv.h @@ -64,6 +64,7 @@ extern const char *riscv_arch_help (int argc, const char **argv); --with-abi is ignored if -mabi is specified. --with-tune is ignored if -mtune or -mcpu is specified. --with-isa-spec is ignored if -misa-spec is specified. + --with-tls is ignored if -mtls-dialect is specified. But using default -march/-mtune value if -mcpu don't have valid option. */ #define OPTION_DEFAULT_SPECS \ @@ -73,8 +74,9 @@ extern const char *riscv_arch_help (int argc, const char **argv); {"arch", "%{!march=*:" \ " %{!mcpu=*:-march=%(VALUE)}" \ " %{mcpu=*:%:riscv_expand_arch_from_cpu(%* %(VALUE))}}" }, \ - {"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \ - {"isa_spec", "%{!misa-spec=*:-misa-spec=%(VALUE)}" }, \ + {"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \ + {"isa_spec", "%{!misa-spec=*:-misa-spec=%(VALUE)}" }, \ + {"tls", "%{!mtls-dialect=*:-mtls-dialect=%(VALUE)}"}, \ #ifdef IN_LIBGCC2 #undef TARGET_64BIT @@ -681,6 +683,12 @@ enum reg_class #define GP_RETURN GP_ARG_FIRST #define FP_RETURN (UNITS_PER_FP_ARG == 0 ? GP_RETURN : FP_ARG_FIRST) +#define V_RETURN V_REG_FIRST + +#define GP_RETURN_FIRST GP_ARG_FIRST +#define GP_RETURN_LAST GP_ARG_FIRST + 1 +#define FP_RETURN_FIRST FP_RETURN +#define FP_RETURN_LAST FP_RETURN + 1 #define MAX_ARGS_IN_REGISTERS \ (riscv_abi == ABI_ILP32E || riscv_abi == ABI_LP64E \ @@ -712,8 +720,6 @@ enum reg_class #define FUNCTION_VALUE(VALTYPE, FUNC) \ riscv_function_value (VALTYPE, FUNC, VOIDmode) -#define FUNCTION_VALUE_REGNO_P(N) ((N) == GP_RETURN || (N) == FP_RETURN) - /* 1 if N is a possible register number for function argument passing. We have no FP argument registers when soft-float. */ @@ -933,7 +939,7 @@ extern enum riscv_cc get_riscv_cc (const rtx use); "fs0", "fs1", "fa0", "fa1", "fa2", "fa3", "fa4", "fa5", \ "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7", \ "fs8", "fs9", "fs10","fs11","ft8", "ft9", "ft10","ft11", \ - "arg", "frame", "vl", "vtype", "vxrm", "frm", "N/A", "N/A", \ + "arg", "frame", "vl", "vtype", "vxrm", "frm", "vxsat", "N/A", \ "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", \ "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", \ "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", \ @@ -1228,4 +1234,7 @@ extern void riscv_remove_unneeded_save_restore_calls (void); #define HAVE_POST_MODIFY_DISP TARGET_XTHEADMEMIDX #define HAVE_PRE_MODIFY_DISP TARGET_XTHEADMEMIDX +/* Check TLS Descriptors mechanism is selected. */ +#define TARGET_TLSDESC (riscv_tls_dialect == TLS_DESCRIPTORS) + #endif /* ! GCC_RISCV_H */ diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index b16ed97909c0..c2b4323c53a7 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -48,7 +48,7 @@ UNSPEC_TLS_LE UNSPEC_TLS_IE UNSPEC_TLS_GD - + UNSPEC_TLSDESC ;; High part of PC-relative address. UNSPEC_AUIPC @@ -685,7 +685,7 @@ ;; Microarchitectures we know how to tune for. ;; Keep this in sync with enum riscv_microarchitecture. (define_attr "tune" - "generic,sifive_7,sifive_p400,sifive_p600,generic_ooo" + "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo" (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)"))) ;; Describe a user's asm statement. @@ -2089,6 +2089,24 @@ (set_attr "type" "load") (set_attr "mode" "")]) +(define_insn "@tlsdesc" + [(set (reg:P A0_REGNUM) + (unspec:P + [(match_operand:P 0 "symbolic_operand" "") + (match_operand:P 1 "const_int_operand")] + UNSPEC_TLSDESC)) + (clobber (reg:P T0_REGNUM))] + "TARGET_TLSDESC" + { + return ".LT%1: auipc\ta0,%%tlsdesc_hi(%0)\;" + "\tt0,%%tlsdesc_load_lo(.LT%1)(a0)\;" + "addi\ta0,a0,%%tlsdesc_add_lo(.LT%1)\;" + "jalr\tt0,t0,%%tlsdesc_call(.LT%1)"; + } + [(set_attr "type" "multi") + (set_attr "length" "16") + (set_attr "mode" "")]) + (define_insn "auipc" [(set (match_operand:P 0 "register_operand" "=r") (unspec:P @@ -2756,7 +2774,7 @@ (match_operand:X 3 "reg_or_0_operand" "rJ")]) (label_ref (match_operand 0 "" "")) (pc)))] - "" + "!TARGET_XCVBI" { if (get_attr_length (insn) == 12) return "b%N1\t%2,%z3,1f; jump\t%l0,ra; 1:"; @@ -3859,3 +3877,4 @@ (include "sfb.md") (include "zc.md") (include "corev.md") +(include "xiangshan.md") diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt index 45a95177af38..8da0764eb4be 100644 --- a/gcc/config/riscv/riscv.opt +++ b/gcc/config/riscv/riscv.opt @@ -430,6 +430,8 @@ Mask(ZCMP) Var(riscv_zc_subext) Mask(ZCMT) Var(riscv_zc_subext) +Mask(XCVBI) Var(riscv_xcv_subext) + TargetVariable int riscv_sv_subext @@ -529,27 +531,27 @@ Target RejectNegative Joined UInteger Var(riscv_strcmp_inline_limit) Init(64) Max number of bytes to compare as part of inlined strcmp/strncmp routines (default: 64). Enum -Name(riscv_autovec_lmul) Type(enum riscv_autovec_lmul_enum) -The RVV possible LMUL (-param=riscv-autovec-lmul=): +Name(rvv_max_lmul) Type(enum rvv_max_lmul_enum) +The RVV possible LMUL (-mrvv-max-lmul=): EnumValue -Enum(riscv_autovec_lmul) String(m1) Value(RVV_M1) +Enum(rvv_max_lmul) String(m1) Value(RVV_M1) EnumValue -Enum(riscv_autovec_lmul) String(m2) Value(RVV_M2) +Enum(rvv_max_lmul) String(m2) Value(RVV_M2) EnumValue -Enum(riscv_autovec_lmul) String(m4) Value(RVV_M4) +Enum(rvv_max_lmul) String(m4) Value(RVV_M4) EnumValue -Enum(riscv_autovec_lmul) String(m8) Value(RVV_M8) +Enum(rvv_max_lmul) String(m8) Value(RVV_M8) EnumValue -Enum(riscv_autovec_lmul) String(dynamic) Value(RVV_DYNAMIC) +Enum(rvv_max_lmul) String(dynamic) Value(RVV_DYNAMIC) --param=riscv-autovec-lmul= -Target RejectNegative Joined Enum(riscv_autovec_lmul) Var(riscv_autovec_lmul) Init(RVV_M1) --param=riscv-autovec-lmul= Set the RVV LMUL of auto-vectorization in the RISC-V port. +mrvv-max-lmul= +Target RejectNegative Joined Enum(rvv_max_lmul) Var(rvv_max_lmul) Init(RVV_M1) +-mrvv-max-lmul= Set the RVV LMUL of auto-vectorization. madjust-lmul-cost Target Var(TARGET_ADJUST_LMUL_COST) Init(0) @@ -604,3 +606,17 @@ Enum(rvv_vector_bits) String(zvl) Value(RVV_VECTOR_BITS_ZVL) mrvv-vector-bits= Target RejectNegative Joined Enum(rvv_vector_bits) Var(rvv_vector_bits) Init(RVV_VECTOR_BITS_SCALABLE) -mrvv-vector-bits= Set the kind of bits for an RVV vector register. + +Enum +Name(tls_type) Type(enum riscv_tls_type) +The possible TLS dialects: + +EnumValue +Enum(tls_type) String(trad) Value(TLS_TRADITIONAL) + +EnumValue +Enum(tls_type) String(desc) Value(TLS_DESCRIPTORS) + +mtls-dialect= +Target RejectNegative Joined Enum(tls_type) Var(riscv_tls_dialect) Init(TLS_TRADITIONAL) Save +Specify TLS dialect. diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls index f40795866cfb..351f7f0dda27 100644 --- a/gcc/config/riscv/riscv.opt.urls +++ b/gcc/config/riscv/riscv.opt.urls @@ -44,7 +44,7 @@ UrlSuffix(gcc/RISC-V-Options.html#index-mshorten-memrefs) ; skipping UrlSuffix for 'mcmodel=' due to finding no URLs mstrict-align -UrlSuffix(gcc/RISC-V-Options.html#index-mstrict-align-3) +UrlSuffix(gcc/RISC-V-Options.html#index-mstrict-align-4) ; skipping UrlSuffix for 'mexplicit-relocs' due to finding no URLs @@ -89,3 +89,5 @@ UrlSuffix(gcc/RISC-V-Options.html#index-minline-strncmp) minline-strlen UrlSuffix(gcc/RISC-V-Options.html#index-minline-strlen) +; skipping UrlSuffix for 'mtls-dialect=' due to finding no URLs + diff --git a/gcc/config/riscv/riscv_vector.h b/gcc/config/riscv/riscv_vector.h index c2fc4b35242e..aa0c3aa69c08 100644 --- a/gcc/config/riscv/riscv_vector.h +++ b/gcc/config/riscv/riscv_vector.h @@ -28,9 +28,6 @@ #include #include -#ifndef __riscv_vector -#error "Vector intrinsics require the vector extension." -#else #ifdef __cplusplus extern "C" { #endif @@ -45,5 +42,4 @@ extern "C" { #ifdef __cplusplus } #endif // __cplusplus -#endif // __riscv_vector #endif // __RISCV_VECTOR_H diff --git a/gcc/config/riscv/vector-iterators.md b/gcc/config/riscv/vector-iterators.md index c2ea7e8b10ac..a24e1bf078fb 100644 --- a/gcc/config/riscv/vector-iterators.md +++ b/gcc/config/riscv/vector-iterators.md @@ -108,17 +108,24 @@ UNSPECV_FRM_RESTORE_EXIT ]) -(define_mode_iterator VI [ - RVVM8QI RVVM4QI RVVM2QI RVVM1QI RVVMF2QI RVVMF4QI (RVVMF8QI "TARGET_MIN_VLEN > 32") - - RVVM8HI RVVM4HI RVVM2HI RVVM1HI RVVMF2HI (RVVMF4HI "TARGET_MIN_VLEN > 32") - - RVVM8SI RVVM4SI RVVM2SI RVVM1SI (RVVMF2SI "TARGET_MIN_VLEN > 32") +;; Subset of VI with fractional LMUL types +(define_mode_iterator VI_FRAC [ + RVVMF2QI RVVMF4QI (RVVMF8QI "TARGET_MIN_VLEN > 32") + RVVMF2HI (RVVMF4HI "TARGET_MIN_VLEN > 32") + (RVVMF2SI "TARGET_MIN_VLEN > 32") +]) +;; Subset of VI with non-fractional LMUL types +(define_mode_iterator VI_NOFRAC [ + RVVM8QI RVVM4QI RVVM2QI RVVM1QI + RVVM8HI RVVM4HI RVVM2HI RVVM1HI + RVVM8SI RVVM4SI RVVM2SI RVVM1SI (RVVM8DI "TARGET_VECTOR_ELEN_64") (RVVM4DI "TARGET_VECTOR_ELEN_64") (RVVM2DI "TARGET_VECTOR_ELEN_64") (RVVM1DI "TARGET_VECTOR_ELEN_64") ]) +(define_mode_iterator VI [ VI_NOFRAC (VI_FRAC "!TARGET_XTHEADVECTOR") ]) + ;; This iterator is the same as above but with TARGET_VECTOR_ELEN_FP_16 ;; changed to TARGET_ZVFH. TARGET_VECTOR_ELEN_FP_16 is also true for ;; TARGET_ZVFHMIN while we actually want to disable all instructions apart diff --git a/gcc/config/riscv/xiangshan.md b/gcc/config/riscv/xiangshan.md new file mode 100644 index 000000000000..76539d332b82 --- /dev/null +++ b/gcc/config/riscv/xiangshan.md @@ -0,0 +1,148 @@ +;; Scheduling description for XiangShan Nanhu. + +;; Nanhu is a 6-issue, superscalar, out-of-order processor. + +;; ----------------------------------------------------- +;; Nanhu Core units +;; 1*jmp + 4*alu + 2*mdu + 4*fma + 2*fmisc + 2*ld + 2*st +;; ----------------------------------------------------- + +(define_automaton "xiangshan") + +(define_cpu_unit "xs_jmp" "xiangshan") +(define_cpu_unit "xs_i2f" "xiangshan") +(define_reservation "xs_jmp_rs" "xs_jmp | xs_i2f") + +(define_cpu_unit "xs_alu_0, xs_alu_1, xs_alu_2, xs_alu_3" "xiangshan") +(define_reservation "xs_alu_rs" + "xs_alu_0 | xs_alu_1 | xs_alu_2 | xs_alu_3") + +(define_cpu_unit "xs_mul_0, xs_mul_1" "xiangshan") +(define_cpu_unit "xs_div_0, xs_div_1" "xiangshan") +(define_reservation "xs_mdu_rs" + "(xs_mul_0 + xs_div_0) | (xs_mul_1 + xs_div_1)") + +(define_cpu_unit "xs_fadd_0, xs_fadd_1, xs_fadd_2, xs_fadd_3" "xiangshan") +(define_cpu_unit "xs_fmul_0, xs_fmul_1, xs_fmul_2, xs_fmul_3" "xiangshan") +(define_reservation "xs_fma_0" "xs_fadd_0 + xs_fmul_0") +(define_reservation "xs_fma_1" "xs_fadd_1 + xs_fmul_1") +(define_reservation "xs_fma_2" "xs_fadd_2 + xs_fmul_2") +(define_reservation "xs_fma_3" "xs_fadd_3 + xs_fmul_3") + +(define_cpu_unit "xs_f2f_0, xs_f2f_1" "xiangshan") +(define_cpu_unit "xs_f2i_0, xs_f2i_1" "xiangshan") +(define_cpu_unit "xs_fdiv_0, xs_fdiv_1" "xiangshan") +(define_reservation "xs_fmisc_rs" + "(xs_f2f_0 + xs_f2i_0 + xs_fdiv_0) | (xs_f2f_1 + xs_f2i_1 + xs_fdiv_1)") + +(define_cpu_unit "xs_ld_0, xs_ld_1" "xiangshan") +(define_cpu_unit "xs_st_0, xs_st_1" "xiangshan") +(define_reservation "xs_ld_rs" "xs_ld_0 | xs_ld_1") +(define_reservation "xs_st_rs" "xs_st_0 | xs_st_1") + +;; ---------------------------------------------------- +;; Memory (load/store) +;; ---------------------------------------------------- + +(define_insn_reservation "xiangshan_load" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "load")) + "xs_ld_rs") + +(define_insn_reservation "xiangshan_fpload" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fpload")) + "xs_ld_rs") + +(define_insn_reservation "xiangshan_store" 1 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "store")) + "xs_st_rs") + +(define_insn_reservation "xiangshan_fpstore" 1 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fpstore")) + "xs_st_rs") + +;; ---------------------------------------------------- +;; Int +;; ---------------------------------------------------- + +(define_insn_reservation "xiangshan_jump" 1 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "jump,call,auipc,unknown,branch,jalr,ret,sfb_alu")) + "xs_jmp_rs") + +(define_insn_reservation "xiangshan_i2f" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "mtc")) + "xs_jmp_rs") + +(define_insn_reservation "xiangshan_mul" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "imul")) + "xs_mdu_rs") + +(define_insn_reservation "xiangshan_div" 21 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "idiv")) + "xs_mdu_rs") + +(define_insn_reservation "xiangshan_alu" 1 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "nop,const,branch,arith,shift,slt,multi,logical,move,bitmanip,unknown")) + "xs_alu_rs") + +;; ---------------------------------------------------- +;; Float +;; ---------------------------------------------------- + + +(define_insn_reservation "xiangshan_fma" 5 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fmadd")) + "xs_fma_0 | xs_fma_1 | xs_fma_2 | xs_fma_3") + +(define_insn_reservation "xiangshan_fadd" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fadd")) + "xs_fadd_0 | xs_fadd_1 | xs_fadd_2 | xs_fadd_3") + +(define_insn_reservation "xiangshan_fmul" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fmul")) + "xs_fmul_0 | xs_fmul_1 | xs_fmul_2 | xs_fmul_3") + +(define_insn_reservation "xiangshan_f2f" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fcvt,fmove")) + "xs_fmisc_rs") + +(define_insn_reservation "xiangshan_f2i" 3 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "mfc,fcmp")) + "xs_fmisc_rs") + +(define_insn_reservation "xiangshan_sfdiv" 11 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fdiv") + (eq_attr "mode" "SF")) + "xs_fmisc_rs") + +(define_insn_reservation "xiangshan_sfsqrt" 17 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fsqrt") + (eq_attr "mode" "SF")) + "xs_fmisc_rs") + +(define_insn_reservation "xiangshan_dfdiv" 21 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fdiv") + (eq_attr "mode" "DF")) + "xs_fmisc_rs") + +(define_insn_reservation "xiangshan_dfsqrt" 37 + (and (eq_attr "tune" "xiangshan") + (eq_attr "type" "fsqrt") + (eq_attr "mode" "DF")) + "xs_fmisc_rs") diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc index 6698274031b9..320affd79e36 100644 --- a/gcc/config/rs6000/rs6000-builtin.cc +++ b/gcc/config/rs6000/rs6000-builtin.cc @@ -165,7 +165,7 @@ rs6000_builtin_is_supported (enum rs6000_gen_builtins fncode) case ENB_P7_64: return TARGET_POPCNTD && TARGET_POWERPC64; case ENB_P8: - return TARGET_DIRECT_MOVE; + return TARGET_POWER8; case ENB_P8V: return TARGET_P8_VECTOR; case ENB_P9: @@ -1900,7 +1900,7 @@ rs6000_gimple_fold_builtin (gimple_stmt_iterator *gsi) tree lhs_type = TREE_TYPE (lhs); /* In GIMPLE the type of the MEM_REF specifies the alignment. The required alignment (power) is 4 bytes regardless of data type. */ - tree align_ltype = build_aligned_type (lhs_type, 4); + tree align_ltype = build_aligned_type (lhs_type, 32); /* POINTER_PLUS_EXPR wants the offset to be of type 'sizetype'. Create the tree using the value from arg0. The resulting type will match the type of arg1. */ @@ -1944,7 +1944,7 @@ rs6000_gimple_fold_builtin (gimple_stmt_iterator *gsi) tree arg2_type = ptr_type_node; /* In GIMPLE the type of the MEM_REF specifies the alignment. The required alignment (power) is 4 bytes regardless of data type. */ - tree align_stype = build_aligned_type (arg0_type, 4); + tree align_stype = build_aligned_type (arg0_type, 32); /* POINTER_PLUS_EXPR wants the offset to be of type 'sizetype'. Create the tree using the value from arg1. */ gimple_seq stmts = NULL; diff --git a/gcc/config/rs6000/rs6000-c.cc b/gcc/config/rs6000/rs6000-c.cc index ce0b14a8d373..bd493ab87c5a 100644 --- a/gcc/config/rs6000/rs6000-c.cc +++ b/gcc/config/rs6000/rs6000-c.cc @@ -429,19 +429,7 @@ rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT flags) rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR6"); if ((flags & OPTION_MASK_POPCNTD) != 0) rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR7"); - /* Note that the OPTION_MASK_DIRECT_MOVE flag is automatically - turned on in the following condition: - 1. TARGET_P8_VECTOR is enabled and OPTION_MASK_DIRECT_MOVE is not - explicitly disabled. - Hereafter, the OPTION_MASK_DIRECT_MOVE flag is considered to - have been turned on explicitly. - Note that the OPTION_MASK_DIRECT_MOVE flag is automatically - turned off in any of the following conditions: - 1. TARGET_HARD_FLOAT, TARGET_ALTIVEC, or TARGET_VSX is explicitly - disabled and OPTION_MASK_DIRECT_MOVE was not explicitly - enabled. - 2. TARGET_VSX is off. */ - if ((flags & OPTION_MASK_DIRECT_MOVE) != 0) + if ((flags & OPTION_MASK_POWER8) != 0) rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR8"); if ((flags & OPTION_MASK_MODULO) != 0) rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR9"); diff --git a/gcc/config/rs6000/rs6000-call.cc b/gcc/config/rs6000/rs6000-call.cc index 8c590903c864..1f8f93a2ee78 100644 --- a/gcc/config/rs6000/rs6000-call.cc +++ b/gcc/config/rs6000/rs6000-call.cc @@ -2253,7 +2253,8 @@ setup_incoming_varargs (cumulative_args_t cum, /* Skip the last named argument. */ next_cum = *get_cumulative_args (cum); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) rs6000_function_arg_advance_1 (&next_cum, arg.mode, arg.type, arg.named, 0); diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def index 28249600318f..6ee678e69c32 100644 --- a/gcc/config/rs6000/rs6000-cpus.def +++ b/gcc/config/rs6000/rs6000-cpus.def @@ -47,9 +47,9 @@ fusion here, instead set it in rs6000.cc if we are tuning for a power8 system. */ #define ISA_2_7_MASKS_SERVER (ISA_2_6_MASKS_SERVER \ + | OPTION_MASK_POWER8 \ | OPTION_MASK_P8_VECTOR \ | OPTION_MASK_CRYPTO \ - | OPTION_MASK_DIRECT_MOVE \ | OPTION_MASK_EFFICIENT_UNALIGNED_VSX \ | OPTION_MASK_QUAD_MEMORY \ | OPTION_MASK_QUAD_MEMORY_ATOMIC) @@ -90,7 +90,6 @@ #define OTHER_VSX_VECTOR_MASKS (OPTION_MASK_EFFICIENT_UNALIGNED_VSX \ | OPTION_MASK_FLOAT128_KEYWORD \ | OPTION_MASK_P8_VECTOR \ - | OPTION_MASK_DIRECT_MOVE \ | OPTION_MASK_CRYPTO \ | OPTION_MASK_P9_VECTOR \ | OPTION_MASK_FLOAT128_HW \ @@ -118,7 +117,6 @@ | OPTION_MASK_CMPB \ | OPTION_MASK_CRYPTO \ | OPTION_MASK_DFP \ - | OPTION_MASK_DIRECT_MOVE \ | OPTION_MASK_DLMZB \ | OPTION_MASK_EFFICIENT_UNALIGNED_VSX \ | OPTION_MASK_FLOAT128_HW \ @@ -133,6 +131,7 @@ | OPTION_MASK_MODULO \ | OPTION_MASK_MULHW \ | OPTION_MASK_NO_UPDATE \ + | OPTION_MASK_POWER8 \ | OPTION_MASK_P8_FUSION \ | OPTION_MASK_P8_VECTOR \ | OPTION_MASK_P9_MINMAX \ diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 6ba9df4f02e7..117999613d83 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -3807,11 +3807,10 @@ rs6000_option_override_internal (bool global_init_p) "-mmultiple"); } - /* If little-endian, default to -mstrict-align on older processors. - Testing for direct_move matches power8 and later. */ + /* If little-endian, default to -mstrict-align on older processors. */ if (!BYTES_BIG_ENDIAN && !(processor_target_table[tune_index].target_enable - & OPTION_MASK_DIRECT_MOVE)) + & OPTION_MASK_POWER8)) rs6000_isa_flags |= ~rs6000_isa_flags_explicit & OPTION_MASK_STRICT_ALIGN; /* Add some warnings for VSX. */ @@ -3853,8 +3852,7 @@ rs6000_option_override_internal (bool global_init_p) && (rs6000_isa_flags_explicit & (OPTION_MASK_SOFT_FLOAT | OPTION_MASK_ALTIVEC | OPTION_MASK_VSX)) != 0) - rs6000_isa_flags &= ~((OPTION_MASK_P8_VECTOR | OPTION_MASK_CRYPTO - | OPTION_MASK_DIRECT_MOVE) + rs6000_isa_flags &= ~((OPTION_MASK_P8_VECTOR | OPTION_MASK_CRYPTO) & ~rs6000_isa_flags_explicit); if (TARGET_DEBUG_REG || TARGET_DEBUG_TARGET) @@ -3898,7 +3896,7 @@ rs6000_option_override_internal (bool global_init_p) else rs6000_isa_flags |= ISA_3_0_MASKS_SERVER; } - else if (TARGET_P8_VECTOR || TARGET_DIRECT_MOVE || TARGET_CRYPTO) + else if (TARGET_P8_VECTOR || TARGET_POWER8 || TARGET_CRYPTO) rs6000_isa_flags |= (ISA_2_7_MASKS_SERVER & ~ignore_masks); else if (TARGET_VSX) rs6000_isa_flags |= (ISA_2_6_MASKS_SERVER & ~ignore_masks); @@ -3939,13 +3937,6 @@ rs6000_option_override_internal (bool global_init_p) rs6000_isa_flags &= ~OPTION_MASK_FPRND; } - if (TARGET_DIRECT_MOVE && !TARGET_VSX) - { - if (rs6000_isa_flags_explicit & OPTION_MASK_DIRECT_MOVE) - error ("%qs requires %qs", "-mdirect-move", "-mvsx"); - rs6000_isa_flags &= ~OPTION_MASK_DIRECT_MOVE; - } - if (TARGET_P8_VECTOR && !TARGET_ALTIVEC) rs6000_isa_flags &= ~OPTION_MASK_P8_VECTOR; @@ -24429,7 +24420,7 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] = false, true }, { "cmpb", OPTION_MASK_CMPB, false, true }, { "crypto", OPTION_MASK_CRYPTO, false, true }, - { "direct-move", OPTION_MASK_DIRECT_MOVE, false, true }, + { "direct-move", 0, false, true }, { "dlmzb", OPTION_MASK_DLMZB, false, true }, { "efficient-unaligned-vsx", OPTION_MASK_EFFICIENT_UNALIGNED_VSX, false, true }, diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 68bc45d65baa..2cde2e329b0d 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -471,6 +471,8 @@ extern int rs6000_vector_align[]; #define TARGET_EXTSWSLI (TARGET_MODULO && TARGET_POWERPC64) #define TARGET_MADDLD TARGET_MODULO +/* TARGET_DIRECT_MOVE is redundant to TARGET_P8_VECTOR, so alias it to that. */ +#define TARGET_DIRECT_MOVE TARGET_P8_VECTOR #define TARGET_XSCVDPSPN (TARGET_DIRECT_MOVE || TARGET_P8_VECTOR) #define TARGET_XSCVSPDPN (TARGET_DIRECT_MOVE || TARGET_P8_VECTOR) #define TARGET_VADDUQM (TARGET_P8_VECTOR && TARGET_POWERPC64) @@ -488,7 +490,7 @@ extern int rs6000_vector_align[]; memory support. */ #define TARGET_SYNC_HI_QI (TARGET_QUAD_MEMORY \ || TARGET_QUAD_MEMORY_ATOMIC \ - || TARGET_DIRECT_MOVE) + || TARGET_POWER8) #define TARGET_SYNC_TI TARGET_QUAD_MEMORY_ATOMIC diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index bc8bc6ab060b..ac5651d7420c 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -355,7 +355,7 @@ (const (symbol_ref "(enum attr_cpu) rs6000_tune"))) ;; The ISA we implement. -(define_attr "isa" "any,p5,p6,p7,p7v,p8v,p9,p9v,p9kf,p9tf,p10" +(define_attr "isa" "any,p5,p6,p7,p7v,p8,p8v,p9,p9v,p9kf,p9tf,p10" (const_string "any")) ;; Is this alternative enabled for the current CPU/ISA/etc.? @@ -380,6 +380,10 @@ (match_test "TARGET_VSX")) (const_int 1) + (and (eq_attr "isa" "p8") + (match_test "TARGET_POWER8")) + (const_int 1) + (and (eq_attr "isa" "p8v") (match_test "TARGET_P8_VECTOR")) (const_int 1) @@ -14305,7 +14309,7 @@ AIX does not support the dcbtstt and dcbtt extended mnemonics. The AIX assembler does not support the three operand form of dcbt and dcbtst on Power 7 (-mpwr7). */ - int inst_select = INTVAL (operands[2]) || !TARGET_DIRECT_MOVE; + int inst_select = INTVAL (operands[2]) || !TARGET_POWER8; if (REG_P (operands[0])) { diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 83197681b661..e8ca70340df3 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -470,6 +470,10 @@ Save the TOC in the prologue for indirect calls rather than inline. mvsx-timode Target RejectNegative Undocumented Ignore +;; This option exists only to create its MASK. It is not intended for users. +mpower8-internal +Target Undocumented Mask(POWER8) Var(rs6000_isa_flags) Warn(Do not use %<-mpower8-internal%>; use %<-mcpu=power8%> instead) + mpower8-fusion Target Mask(P8_FUSION) Var(rs6000_isa_flags) Fuse certain integer operations together for better performance on power8. @@ -491,7 +495,7 @@ Target Mask(CRYPTO) Var(rs6000_isa_flags) Use ISA 2.07 Category:Vector.AES and Category:Vector.SHA2 instructions. mdirect-move -Target Undocumented Mask(DIRECT_MOVE) Var(rs6000_isa_flags) WarnRemoved +Target Undocumented WarnRemoved mhtm Target Mask(HTM) Var(rs6000_isa_flags) diff --git a/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h index 5a27f02960fb..06f481fcd7b2 100644 --- a/gcc/config/rs6000/rtems.h +++ b/gcc/config/rs6000/rtems.h @@ -36,6 +36,10 @@ #endif #endif +/* RTEMS configured for the 32-bit multilibs doesn't support saving and + restoring 64-bit regs. */ +#define OS_MISSING_POWERPC64 !TARGET_64BIT + /* Copy and paste from linux64.h and freebsd64.h */ #undef TARGET_AIX #define TARGET_AIX TARGET_64BIT diff --git a/gcc/config/rs6000/sysv4.opt.urls b/gcc/config/rs6000/sysv4.opt.urls index f8d58d6602cd..c155cddfa36c 100644 --- a/gcc/config/rs6000/sysv4.opt.urls +++ b/gcc/config/rs6000/sysv4.opt.urls @@ -12,7 +12,7 @@ mbit-align UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbit-align) mstrict-align -UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstrict-align-4) +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstrict-align-5) mrelocatable UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable) diff --git a/gcc/config/s390/s390-builtin-types.def b/gcc/config/s390/s390-builtin-types.def index 556104e0e239..d70eaade8eab 100644 --- a/gcc/config/s390/s390-builtin-types.def +++ b/gcc/config/s390/s390-builtin-types.def @@ -69,6 +69,7 @@ DEF_TYPE (BT_SHORTCONST, short_integer_type_node, 1) DEF_TYPE (BT_UCHAR, unsigned_char_type_node, 0) DEF_TYPE (BT_UCHARCONST, unsigned_char_type_node, 1) DEF_TYPE (BT_UINT, unsigned_type_node, 0) +DEF_TYPE (BT_UINT128, unsigned_intTI_type_node, 0) DEF_TYPE (BT_UINT64, c_uint64_type_node, 0) DEF_TYPE (BT_UINTCONST, unsigned_type_node, 1) DEF_TYPE (BT_ULONG, long_unsigned_type_node, 0) @@ -83,7 +84,6 @@ DEF_VECTOR_TYPE (BT_UV2DI, BT_ULONGLONG, 2) DEF_VECTOR_TYPE (BT_UV4SI, BT_UINT, 4) DEF_VECTOR_TYPE (BT_UV8HI, BT_USHORT, 8) DEF_VECTOR_TYPE (BT_V16QI, BT_SCHAR, 16) -DEF_VECTOR_TYPE (BT_V1TI, BT_INT128, 1) DEF_VECTOR_TYPE (BT_V2DF, BT_DBL, 2) DEF_VECTOR_TYPE (BT_V2DI, BT_LONGLONG, 2) DEF_VECTOR_TYPE (BT_V4SF, BT_FLT, 4) @@ -114,9 +114,11 @@ DEF_POINTER_TYPE (BT_VOIDCONSTPTR, BT_VOIDCONST) DEF_POINTER_TYPE (BT_VOIDPTR, BT_VOID) DEF_DISTINCT_TYPE (BT_BCHAR, BT_UCHAR) DEF_DISTINCT_TYPE (BT_BINT, BT_UINT) +DEF_DISTINCT_TYPE (BT_BINT128, BT_UINT128) DEF_DISTINCT_TYPE (BT_BLONGLONG, BT_ULONGLONG) DEF_DISTINCT_TYPE (BT_BSHORT, BT_USHORT) DEF_OPAQUE_VECTOR_TYPE (BT_BV16QI, BT_BCHAR, 16) +DEF_OPAQUE_VECTOR_TYPE (BT_BV1TI, BT_BINT128, 1) DEF_OPAQUE_VECTOR_TYPE (BT_BV2DI, BT_BLONGLONG, 2) DEF_OPAQUE_VECTOR_TYPE (BT_BV4SI, BT_BINT, 4) DEF_OPAQUE_VECTOR_TYPE (BT_BV8HI, BT_BSHORT, 8) @@ -131,6 +133,7 @@ DEF_FN_TYPE_1 (BT_FN_INT_VOIDPTR, BT_INT, BT_VOIDPTR) DEF_FN_TYPE_1 (BT_FN_OV4SI_INT, BT_OV4SI, BT_INT) DEF_FN_TYPE_1 (BT_FN_OV4SI_INTCONSTPTR, BT_OV4SI, BT_INTCONSTPTR) DEF_FN_TYPE_1 (BT_FN_OV4SI_OV4SI, BT_OV4SI, BT_OV4SI) +DEF_FN_TYPE_1 (BT_FN_UINT128_UINT128, BT_UINT128, BT_UINT128) DEF_FN_TYPE_1 (BT_FN_UV16QI_UCHAR, BT_UV16QI, BT_UCHAR) DEF_FN_TYPE_1 (BT_FN_UV16QI_UCHARCONSTPTR, BT_UV16QI, BT_UCHARCONSTPTR) DEF_FN_TYPE_1 (BT_FN_UV16QI_USHORT, BT_UV16QI, BT_USHORT) @@ -154,7 +157,6 @@ DEF_FN_TYPE_1 (BT_FN_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI) DEF_FN_TYPE_1 (BT_FN_V16QI_SCHAR, BT_V16QI, BT_SCHAR) DEF_FN_TYPE_1 (BT_FN_V16QI_UCHAR, BT_V16QI, BT_UCHAR) DEF_FN_TYPE_1 (BT_FN_V16QI_V16QI, BT_V16QI, BT_V16QI) -DEF_FN_TYPE_1 (BT_FN_V1TI_V1TI, BT_V1TI, BT_V1TI) DEF_FN_TYPE_1 (BT_FN_V2DF_DBL, BT_V2DF, BT_DBL) DEF_FN_TYPE_1 (BT_FN_V2DF_DBLCONSTPTR, BT_V2DF, BT_DBLCONSTPTR) DEF_FN_TYPE_1 (BT_FN_V2DF_FLTCONSTPTR, BT_V2DF, BT_FLTCONSTPTR) @@ -207,18 +209,18 @@ DEF_FN_TYPE_2 (BT_FN_OV4SI_OV4SI_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI) DEF_FN_TYPE_2 (BT_FN_OV4SI_OV4SI_UCHAR, BT_OV4SI, BT_OV4SI, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_OV4SI_OV4SI_ULONG, BT_OV4SI, BT_OV4SI, BT_ULONG) DEF_FN_TYPE_2 (BT_FN_UCHAR_UV16QI_INT, BT_UCHAR, BT_UV16QI, BT_INT) +DEF_FN_TYPE_2 (BT_FN_UINT128_UINT128_UINT128, BT_UINT128, BT_UINT128, BT_UINT128) +DEF_FN_TYPE_2 (BT_FN_UINT128_UV2DI_UV2DI, BT_UINT128, BT_UV2DI, BT_UV2DI) +DEF_FN_TYPE_2 (BT_FN_UINT128_UV4SI_UV4SI, BT_UINT128, BT_UV4SI, BT_UV4SI) DEF_FN_TYPE_2 (BT_FN_UINT_UV4SI_INT, BT_UINT, BT_UV4SI, BT_INT) DEF_FN_TYPE_2 (BT_FN_UINT_VOIDCONSTPTR_INT, BT_UINT, BT_VOIDCONSTPTR, BT_INT) DEF_FN_TYPE_2 (BT_FN_ULONGLONG_UV2DI_INT, BT_ULONGLONG, BT_UV2DI, BT_INT) DEF_FN_TYPE_2 (BT_FN_USHORT_UV8HI_INT, BT_USHORT, BT_UV8HI, BT_INT) -DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHARCONSTPTR_USHORT, BT_UV16QI, BT_UCHARCONSTPTR, BT_USHORT) DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHAR_INT, BT_UV16QI, BT_UCHAR, BT_INT) DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHAR_UCHAR, BT_UV16QI, BT_UCHAR, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_INTPTR) DEF_FN_TYPE_2 (BT_FN_UV16QI_UV16QI_UCHAR, BT_UV16QI, BT_UV16QI, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) -DEF_FN_TYPE_2 (BT_FN_UV16QI_UV2DI_UV2DI, BT_UV16QI, BT_UV2DI, BT_UV2DI) -DEF_FN_TYPE_2 (BT_FN_UV16QI_UV4SI_UV4SI, BT_UV16QI, BT_UV4SI, BT_UV4SI) DEF_FN_TYPE_2 (BT_FN_UV16QI_UV8HI_UV8HI, BT_UV16QI, BT_UV8HI, BT_UV8HI) DEF_FN_TYPE_2 (BT_FN_UV2DI_UCHAR_UCHAR, BT_UV2DI, BT_UCHAR, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_UV2DI_ULONGLONG_INT, BT_UV2DI, BT_ULONGLONG, BT_INT) @@ -249,6 +251,7 @@ DEF_FN_TYPE_2 (BT_FN_V16QI_UINT_VOIDCONSTPTR, BT_V16QI, BT_UINT, BT_VOIDCONSTPTR DEF_FN_TYPE_2 (BT_FN_V16QI_UV16QI_UV16QI, BT_V16QI, BT_UV16QI, BT_UV16QI) DEF_FN_TYPE_2 (BT_FN_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI) DEF_FN_TYPE_2 (BT_FN_V16QI_V8HI_V8HI, BT_V16QI, BT_V8HI, BT_V8HI) +DEF_FN_TYPE_2 (BT_FN_V16QI_VOIDCONSTPTR_INT, BT_V16QI, BT_VOIDCONSTPTR, BT_INT) DEF_FN_TYPE_2 (BT_FN_V2DF_DBL_INT, BT_V2DF, BT_DBL, BT_INT) DEF_FN_TYPE_2 (BT_FN_V2DF_UV2DI_INT, BT_V2DF, BT_UV2DI, BT_INT) DEF_FN_TYPE_2 (BT_FN_V2DF_UV4SI_INT, BT_V2DF, BT_UV4SI, BT_INT) @@ -281,7 +284,6 @@ DEF_FN_TYPE_2 (BT_FN_VOID_UINT64PTR_UINT64, BT_VOID, BT_UINT64PTR, BT_UINT64) DEF_FN_TYPE_2 (BT_FN_VOID_V2DF_FLTPTR, BT_VOID, BT_V2DF, BT_FLTPTR) DEF_FN_TYPE_3 (BT_FN_BV2DI_V2DF_USHORT_INTPTR, BT_BV2DI, BT_V2DF, BT_USHORT, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_BV4SI_V4SF_USHORT_INTPTR, BT_BV4SI, BT_V4SF, BT_USHORT, BT_INTPTR) -DEF_FN_TYPE_3 (BT_FN_INT128_INT128_INT128_INT128, BT_INT128, BT_INT128, BT_INT128, BT_INT128) DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_OV4SI_INTPTR, BT_INT, BT_OV4SI, BT_OV4SI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_OV4SI_INT_OV4SI_INT, BT_OV4SI, BT_INT, BT_OV4SI, BT_INT) DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_INT_INTPTR, BT_OV4SI, BT_OV4SI, BT_INT, BT_INTPTR) @@ -291,11 +293,12 @@ DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_O DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI_UCHAR, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI_UINT, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_UINT) DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI_ULONGLONG, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_ULONGLONG) +DEF_FN_TYPE_3 (BT_FN_UINT128_UINT128_UINT128_UINT128, BT_UINT128, BT_UINT128, BT_UINT128, BT_UINT128) +DEF_FN_TYPE_3 (BT_FN_UINT128_UV2DI_UV2DI_UINT128, BT_UINT128, BT_UV2DI, BT_UV2DI, BT_UINT128) DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UCHAR_INT, BT_UV16QI, BT_UV16QI, BT_UCHAR, BT_INT) DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UV16QI_INT, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT) DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UV2DI_UV2DI_UV16QI, BT_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV16QI) DEF_FN_TYPE_3 (BT_FN_UV16QI_UV8HI_UV8HI_INTPTR, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_ULONGLONG_INT, BT_UV2DI, BT_UV2DI, BT_ULONGLONG, BT_INT) DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UV2DI_INT, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) @@ -350,22 +353,22 @@ DEF_FN_TYPE_3 (BT_FN_V8HI_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI) DEF_FN_TYPE_3 (BT_FN_VOID_OV4SI_INT_VOIDPTR, BT_VOID, BT_OV4SI, BT_INT, BT_VOIDPTR) DEF_FN_TYPE_3 (BT_FN_VOID_OV4SI_VOIDPTR_UINT, BT_VOID, BT_OV4SI, BT_VOIDPTR, BT_UINT) DEF_FN_TYPE_3 (BT_FN_VOID_V16QI_UINT_VOIDPTR, BT_VOID, BT_V16QI, BT_UINT, BT_VOIDPTR) -DEF_FN_TYPE_4 (BT_FN_INT128_UV2DI_UV2DI_INT128_INT, BT_INT128, BT_UV2DI, BT_UV2DI, BT_INT128, BT_INT) DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OUV4SI_INTCONSTPTR_UCHAR, BT_OV4SI, BT_OV4SI, BT_OUV4SI, BT_INTCONSTPTR, BT_UCHAR) DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_UINT128_UV2DI_UV2DI_UINT128_INT, BT_UINT128, BT_UV2DI, BT_UV2DI, BT_UINT128, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV16QI_UV2DI_UV2DI_UV16QI_INT, BT_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV16QI, BT_INT) +DEF_FN_TYPE_4 (BT_FN_UV16QI_UV4SI_UV4SI_UV16QI_INTPTR, BT_UV16QI, BT_UV4SI, BT_UV4SI, BT_UV16QI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_UV16QI_UV8HI_UV8HI_UV16QI_INTPTR, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_UV16QI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR) DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_UV2DI_UV2DI_INT, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR) DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT) -DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV8HI_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV8HI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) -DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) DEF_FN_TYPE_4 (BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) DEF_FN_TYPE_4 (BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG, BT_VOID, BT_V4SI, BT_V4SI, BT_INTPTR, BT_ULONGLONG) diff --git a/gcc/config/s390/s390-builtins.def b/gcc/config/s390/s390-builtins.def index 680a038fa4b5..3a63213e5719 100644 --- a/gcc/config/s390/s390-builtins.def +++ b/gcc/config/s390/s390-builtins.def @@ -416,16 +416,16 @@ B_DEF (s390_vec_splat_s64, vec_splatsv2di, 0, OB_DEF (s390_vec_insert, s390_vec_insert_s8, s390_vec_insert_dbl,B_VX, BT_FN_OV4SI_INT_OV4SI_INT) OB_DEF_VAR (s390_vec_insert_s8, s390_vlvgb, 0, O3_ELEM, BT_OV_V16QI_SCHAR_V16QI_INT) OB_DEF_VAR (s390_vec_insert_u8, s390_vlvgb, 0, O3_ELEM, BT_OV_UV16QI_UCHAR_UV16QI_INT) -OB_DEF_VAR (s390_vec_insert_b8, s390_vlvgb, 0, O3_ELEM, BT_OV_UV16QI_UCHAR_BV16QI_INT) +OB_DEF_VAR (s390_vec_insert_b8, s390_vlvgb, B_DEP, O3_ELEM, BT_OV_UV16QI_UCHAR_BV16QI_INT) OB_DEF_VAR (s390_vec_insert_s16, s390_vlvgh, 0, O3_ELEM, BT_OV_V8HI_SHORT_V8HI_INT) OB_DEF_VAR (s390_vec_insert_u16, s390_vlvgh, 0, O3_ELEM, BT_OV_UV8HI_USHORT_UV8HI_INT) -OB_DEF_VAR (s390_vec_insert_b16, s390_vlvgh, 0, O3_ELEM, BT_OV_UV8HI_USHORT_BV8HI_INT) +OB_DEF_VAR (s390_vec_insert_b16, s390_vlvgh, B_DEP, O3_ELEM, BT_OV_UV8HI_USHORT_BV8HI_INT) OB_DEF_VAR (s390_vec_insert_s32, s390_vlvgf, 0, O3_ELEM, BT_OV_V4SI_INT_V4SI_INT) OB_DEF_VAR (s390_vec_insert_u32, s390_vlvgf, 0, O3_ELEM, BT_OV_UV4SI_UINT_UV4SI_INT) -OB_DEF_VAR (s390_vec_insert_b32, s390_vlvgf, 0, O3_ELEM, BT_OV_UV4SI_UINT_BV4SI_INT) +OB_DEF_VAR (s390_vec_insert_b32, s390_vlvgf, B_DEP, O3_ELEM, BT_OV_UV4SI_UINT_BV4SI_INT) OB_DEF_VAR (s390_vec_insert_s64, s390_vlvgg, 0, O3_ELEM, BT_OV_V2DI_LONGLONG_V2DI_INT) OB_DEF_VAR (s390_vec_insert_u64, s390_vlvgg, 0, O3_ELEM, BT_OV_UV2DI_ULONGLONG_UV2DI_INT) -OB_DEF_VAR (s390_vec_insert_b64, s390_vlvgg, 0, O3_ELEM, BT_OV_UV2DI_ULONGLONG_BV2DI_INT) +OB_DEF_VAR (s390_vec_insert_b64, s390_vlvgg, B_DEP, O3_ELEM, BT_OV_UV2DI_ULONGLONG_BV2DI_INT) OB_DEF_VAR (s390_vec_insert_flt, s390_vlvgf_flt, B_VXE, O3_ELEM, BT_OV_V4SF_FLT_V4SF_INT) /* vlvgf */ OB_DEF_VAR (s390_vec_insert_dbl, s390_vlvgg_dbl, 0, O3_ELEM, BT_OV_V2DF_DBL_V2DF_INT) /* vlvgg */ @@ -510,7 +510,7 @@ OB_DEF_VAR (s390_vec_load_bndry_u64, s390_vlbb, 0, OB_DEF_VAR (s390_vec_load_bndry_flt, s390_vlbb, B_VXE, O2_U16, BT_OV_V4SF_FLTCONSTPTR_USHORT) OB_DEF_VAR (s390_vec_load_bndry_dbl, s390_vlbb, 0, O2_U16, BT_OV_V2DF_DBLCONSTPTR_USHORT) -B_DEF (s390_vlbb, vlbb, 0, B_VX, O2_U3, BT_FN_UV16QI_UCHARCONSTPTR_USHORT) +B_DEF (s390_vlbb, vlbb, 0, B_VX, O2_U3, BT_FN_V16QI_VOIDCONSTPTR_INT) OB_DEF (s390_vec_load_pair, s390_vec_load_pair_s64,s390_vec_load_pair_u64,B_VX, BT_FN_OV2DI_LONGLONG_LONGLONG) OB_DEF_VAR (s390_vec_load_pair_s64, MAX, 0, 0, BT_OV_V2DI_LONGLONG_LONGLONG) /* vlvgp */ @@ -658,7 +658,7 @@ OB_DEF_VAR (s390_vec_perm_dbl, s390_vperm, 0, B_DEF (s390_vperm, vec_permv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI) -OB_DEF (s390_vec_permi, s390_vec_permi_s64, s390_vec_permi_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INT) +OB_DEF (s390_vec_permi, s390_vec_permi_s64, s390_vec_permi_dbl, B_DEP | B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INT) OB_DEF_VAR (s390_vec_permi_s64, s390_vpdi, 0, O3_U2, BT_OV_V2DI_V2DI_V2DI_INT) OB_DEF_VAR (s390_vec_permi_b64, s390_vpdi, 0, O3_U2, BT_OV_BV2DI_BV2DI_BV2DI_INT) OB_DEF_VAR (s390_vec_permi_u64, s390_vpdi, 0, O3_U2, BT_OV_UV2DI_UV2DI_UV2DI_INT) @@ -852,9 +852,9 @@ B_DEF (s390_vec_adde_u128, vacq, 0, B_DEF (s390_vec_addec_u128, vacccq, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI) B_DEF (s390_vaq, addti3, 0, B_VX, 0, BT_FN_INT128_INT128_INT128) -B_DEF (s390_vaccq, vaccq_ti, 0, B_VX, 0, BT_FN_INT128_INT128_INT128) -B_DEF (s390_vacq, vacq, 0, B_VX, 0, BT_FN_INT128_INT128_INT128_INT128) -B_DEF (s390_vacccq, vacccq, 0, B_VX, 0, BT_FN_INT128_INT128_INT128_INT128) +B_DEF (s390_vaccq, vaccq_ti, 0, B_VX, 0, BT_FN_UINT128_UINT128_UINT128) +B_DEF (s390_vacq, vacq, 0, B_VX, 0, BT_FN_UINT128_UINT128_UINT128_UINT128) +B_DEF (s390_vacccq, vacccq, 0, B_VX, 0, BT_FN_UINT128_UINT128_UINT128_UINT128) OB_DEF (s390_vec_and, s390_vec_and_b8, s390_vec_and_dbl_c, B_VX, BT_FN_OV4SI_OV4SI_OV4SI) OB_DEF_VAR (s390_vec_and_b8, s390_vn, 0, 0, BT_OV_BV16QI_BV16QI_BV16QI) @@ -1665,7 +1665,7 @@ OB_DEF_VAR (s390_vec_gfmsum_u32, s390_vgfmf, 0, B_DEF (s390_vgfmb, vec_gfmsumv16qi, 0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI) B_DEF (s390_vgfmh, vec_gfmsumv8hi, 0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI) B_DEF (s390_vgfmf, vec_gfmsumv4si, 0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI) -B_DEF (s390_vgfmg, vec_gfmsum_128, 0, B_VX, 0, BT_FN_UV16QI_UV2DI_UV2DI) +B_DEF (s390_vgfmg, vec_gfmsum_128, 0, B_VX, 0, BT_FN_UINT128_UV2DI_UV2DI) OB_DEF (s390_vec_gfmsum_accum, s390_vec_gfmsum_accum_u8,s390_vec_gfmsum_accum_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI) OB_DEF_VAR (s390_vec_gfmsum_accum_u8, s390_vgfmab, 0, 0, BT_OV_UV8HI_UV16QI_UV16QI_UV8HI) @@ -1675,7 +1675,7 @@ OB_DEF_VAR (s390_vec_gfmsum_accum_u32, s390_vgfmaf, 0, B_DEF (s390_vgfmab, vec_gfmsum_accumv16qi,0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI_UV8HI) B_DEF (s390_vgfmah, vec_gfmsum_accumv8hi,0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI_UV4SI) B_DEF (s390_vgfmaf, vec_gfmsum_accumv4si,0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI_UV2DI) -B_DEF (s390_vgfmag, vec_gfmsum_accum_128,0, B_VX, 0, BT_FN_UV16QI_UV2DI_UV2DI_UV16QI) +B_DEF (s390_vgfmag, vec_gfmsum_accum_128,0, B_VX, 0, BT_FN_UINT128_UV2DI_UV2DI_UINT128) OB_DEF (s390_vec_abs, s390_vec_abs_s8, s390_vec_abs_dbl, B_VX, BT_FN_OV4SI_OV4SI) OB_DEF_VAR (s390_vec_abs_s8, s390_vlpb, 0, 0, BT_OV_V16QI_V16QI) @@ -2263,9 +2263,9 @@ B_DEF (s390_vec_sube_u128, vsbiq, 0, B_DEF (s390_vec_subec_u128, vsbcbiq, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI) B_DEF (s390_vsq, subti3, 0, B_VX, 0, BT_FN_INT128_INT128_INT128) -B_DEF (s390_vscbiq, vscbiq_ti, 0, B_VX, 0, BT_FN_INT128_INT128_INT128) -B_DEF (s390_vsbiq, vsbiq, 0, B_VX, 0, BT_FN_INT128_INT128_INT128_INT128) -B_DEF (s390_vsbcbiq, vsbcbiq, 0, B_VX, 0, BT_FN_INT128_INT128_INT128_INT128) +B_DEF (s390_vscbiq, vscbiq_ti, 0, B_VX, 0, BT_FN_UINT128_UINT128_UINT128) +B_DEF (s390_vsbiq, vsbiq, 0, B_VX, 0, BT_FN_UINT128_UINT128_UINT128_UINT128) +B_DEF (s390_vsbcbiq, vsbcbiq, 0, B_VX, 0, BT_FN_UINT128_UINT128_UINT128_UINT128) OB_DEF (s390_vec_sum2, s390_vec_sum2_u16, s390_vec_sum2_u32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI) OB_DEF_VAR (s390_vec_sum2_u16, s390_vsumgh, 0, 0, BT_OV_UV2DI_UV8HI_UV8HI) @@ -2278,8 +2278,8 @@ OB_DEF (s390_vec_sum_u128, s390_vec_sum_u128_u32,s390_vec_sum_u128_ OB_DEF_VAR (s390_vec_sum_u128_u32, s390_vsumqf, 0, 0, BT_OV_UV16QI_UV4SI_UV4SI) OB_DEF_VAR (s390_vec_sum_u128_u64, s390_vsumqg, 0, 0, BT_OV_UV16QI_UV2DI_UV2DI) -B_DEF (s390_vsumqf, vec_sum_u128v4si, 0, B_VX, 0, BT_FN_UV16QI_UV4SI_UV4SI) -B_DEF (s390_vsumqg, vec_sum_u128v2di, 0, B_VX, 0, BT_FN_UV16QI_UV2DI_UV2DI) +B_DEF (s390_vsumqf, vec_sum_u128v4si, 0, B_VX, 0, BT_FN_UINT128_UV4SI_UV4SI) +B_DEF (s390_vsumqg, vec_sum_u128v2di, 0, B_VX, 0, BT_FN_UINT128_UV2DI_UV2DI) OB_DEF (s390_vec_sum4, s390_vec_sum4_u8, s390_vec_sum4_u16, B_VX, BT_FN_OV4SI_OV4SI_OV4SI) OB_DEF_VAR (s390_vec_sum4_u8, s390_vsumb, 0, 0, BT_OV_UV4SI_UV16QI_UV16QI) @@ -2303,7 +2303,7 @@ OB_DEF_VAR (s390_vec_test_mask_dbl, s390_vtm, 0, B_DEF (s390_vtm, vec_test_mask_intv16qi,0, B_VX, 0, BT_FN_INT_UV16QI_UV16QI) B_DEF (s390_vec_msum_u128, vec_msumv2di, 0, B_VXE, O4_M12, BT_FN_UV16QI_UV2DI_UV2DI_UV16QI_INT) -B_DEF (s390_vmslg, vmslg, 0, B_VXE, O4_M12, BT_FN_INT128_UV2DI_UV2DI_INT128_INT) +B_DEF (s390_vmslg, vmslg, 0, B_VXE, O4_M12, BT_FN_UINT128_UV2DI_UV2DI_UINT128_INT) OB_DEF (s390_vec_eqv, s390_vec_eqv_b8, s390_vec_eqv_dbl_c, B_VXE, BT_FN_OV4SI_OV4SI_OV4SI) OB_DEF_VAR (s390_vec_eqv_b8, s390_vnx, 0, 0, BT_OV_BV16QI_BV16QI_BV16QI) @@ -2806,7 +2806,7 @@ OB_DEF (s390_vec_any_ngt, s390_vec_any_ngt_flt,s390_vec_any_ngt_db OB_DEF_VAR (s390_vec_any_ngt_flt, vec_any_unlev4sf, B_VXE, 0, BT_OV_INT_V4SF_V4SF) OB_DEF_VAR (s390_vec_any_ngt_dbl, vec_any_unlev2df, 0, 0, BT_OV_INT_V2DF_V2DF) -OB_DEF (s390_vec_ctd, s390_vec_ctd_s64, s390_vec_ctd_u64, B_VX, BT_FN_V2DF_UV4SI_INT) +OB_DEF (s390_vec_ctd, s390_vec_ctd_s64, s390_vec_ctd_u64, B_DEP | B_VX, BT_FN_V2DF_UV4SI_INT) OB_DEF_VAR (s390_vec_ctd_s64, s390_vec_ctd_s64, 0, O2_U5, BT_OV_V2DF_V2DI_INT) /* vcdgb */ OB_DEF_VAR (s390_vec_ctd_u64, s390_vec_ctd_u64, 0, O2_U5, BT_OV_V2DF_UV2DI_INT) /* vcdlgb */ @@ -2814,10 +2814,10 @@ OB_DEF (s390_vfi, s390_vfi_flt, s390_vfi_dbl, OB_DEF_VAR (s390_vfi_flt, s390_vfisb, B_VXE, O2_U4 | O3_U3, BT_OV_V4SF_V4SF_UCHAR_UCHAR) /* vfisb */ OB_DEF_VAR (s390_vfi_dbl, s390_vfidb, 0, O2_U4 | O3_U3, BT_OV_V2DF_V2DF_UCHAR_UCHAR) /* vfidb */ -B_DEF (s390_vec_ctd_s64, vec_ctd_s64, 0, B_VX, O2_U3, BT_FN_V2DF_V2DI_INT) /* vcdgb */ -B_DEF (s390_vec_ctd_u64, vec_ctd_u64, 0, B_VX, O2_U3, BT_FN_V2DF_UV2DI_INT) /* vcdlgb */ -B_DEF (s390_vec_ctsl, vec_ctsl, 0, B_VX, O2_U3, BT_FN_V2DI_V2DF_INT) /* vcgdb */ -B_DEF (s390_vec_ctul, vec_ctul, 0, B_VX, O2_U3, BT_FN_UV2DI_V2DF_INT) /* vclgdb */ +B_DEF (s390_vec_ctd_s64, vec_ctd_s64, 0, B_DEP | B_VX, O2_U3, BT_FN_V2DF_V2DI_INT) /* vcdgb */ +B_DEF (s390_vec_ctd_u64, vec_ctd_u64, 0, B_DEP | B_VX, O2_U3, BT_FN_V2DF_UV2DI_INT) /* vcdlgb */ +B_DEF (s390_vec_ctsl, vec_ctsl, 0, B_DEP | B_VX, O2_U3, BT_FN_V2DI_V2DF_INT) /* vcgdb */ +B_DEF (s390_vec_ctul, vec_ctul, 0, B_DEP | B_VX, O2_U3, BT_FN_UV2DI_V2DF_INT) /* vclgdb */ OB_DEF (s390_vec_float, s390_vec_float_s32, s390_vec_float_u32, B_VXE2, BT_FN_OV4SI_OV4SI) @@ -2848,8 +2848,8 @@ B_DEF (s390_vclgdb, fixuns_truncv2dfv2di2, 0, B_DEF (s390_vfisb, vec_fpintv4sf, 0, B_VXE, O2_U4 | O3_U3, BT_FN_V4SF_V4SF_UCHAR_UCHAR) B_DEF (s390_vfidb, vec_fpintv2df, 0, B_VX, O2_U4 | O3_U3, BT_FN_V2DF_V2DF_UCHAR_UCHAR) -B_DEF (s390_vec_ld2f, vec_ld2f, 0, B_VX, 0, BT_FN_V2DF_FLTCONSTPTR) /* vldeb */ -B_DEF (s390_vec_st2f, vec_st2f, 0, B_VX, 0, BT_FN_VOID_V2DF_FLTPTR) /* vledb */ +B_DEF (s390_vec_ld2f, vec_ld2f, 0, B_DEP | B_VX, 0, BT_FN_V2DF_FLTCONSTPTR) /* vldeb */ +B_DEF (s390_vec_st2f, vec_st2f, 0, B_DEP | B_VX, 0, BT_FN_VOID_V2DF_FLTPTR) /* vledb */ B_DEF (s390_vfmasb, fmav4sf4, 0, B_VXE, 0, BT_FN_V4SF_V4SF_V4SF_V4SF) B_DEF (s390_vfmadb, fmav2df4, 0, B_VX, 0, BT_FN_V2DF_V2DF_V2DF_V2DF) @@ -2920,17 +2920,17 @@ OB_DEF_VAR (s390_vec_revb_u64, s390_vlbrg, 0, OB_DEF_VAR (s390_vec_revb_flt, s390_vlbrf_flt, B_VXE, 0, BT_OV_V4SF_V4SF) OB_DEF_VAR (s390_vec_revb_dbl, s390_vlbrg_dbl, 0, 0, BT_OV_V2DF_V2DF) -B_DEF (s390_vlbrh, bswapv8hi, 0, B_VX, 0, BT_FN_V8HI_V8HI) -B_DEF (s390_vlbrf, bswapv4si, 0, B_VX, 0, BT_FN_V4SI_V4SI) -B_DEF (s390_vlbrg, bswapv2di, 0, B_VX, 0, BT_FN_V2DI_V2DI) -B_DEF (s390_vlbrq, bswapv1ti, 0, B_VX, 0, BT_FN_V1TI_V1TI) +B_DEF (s390_vlbrh, bswapv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI) +B_DEF (s390_vlbrf, bswapv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI) +B_DEF (s390_vlbrg, bswapv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI) +B_DEF (s390_vlbrq, bswapti, 0, B_VX, 0, BT_FN_UINT128_UINT128) B_DEF (s390_vlbrf_flt, bswapv4sf, 0, B_VXE, 0, BT_FN_V4SF_V4SF) B_DEF (s390_vlbrg_dbl, bswapv2df, 0, B_VX, 0, BT_FN_V2DF_V2DF) -B_DEF (s390_vstbrh, bswapv8hi, 0, B_VX, 0, BT_FN_V8HI_V8HI) -B_DEF (s390_vstbrf, bswapv4si, 0, B_VX, 0, BT_FN_V4SI_V4SI) -B_DEF (s390_vstbrg, bswapv2di, 0, B_VX, 0, BT_FN_V2DI_V2DI) -B_DEF (s390_vstbrq, bswapv1ti, 0, B_VX, 0, BT_FN_V1TI_V1TI) +B_DEF (s390_vstbrh, bswapv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI) +B_DEF (s390_vstbrf, bswapv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI) +B_DEF (s390_vstbrg, bswapv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI) +B_DEF (s390_vstbrq, bswapti, 0, B_VX, 0, BT_FN_UINT128_UINT128) B_DEF (s390_vstbrf_flt, bswapv4sf, 0, B_VXE, 0, BT_FN_V4SF_V4SF) B_DEF (s390_vstbrg_dbl, bswapv2df, 0, B_VX, 0, BT_FN_V2DF_V2DF) @@ -3005,8 +3005,8 @@ OB_DEF_VAR (s390_vstrs_b32, s390_vstrsf, 0, OB_DEF_VAR (s390_vstrs_u32, s390_vstrsf, 0, 0, BT_OV_UV16QI_UV4SI_UV4SI_UV16QI_INTPTR) B_DEF (s390_vstrsb, vstrsv16qi, 0, B_VXE2, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR) -B_DEF (s390_vstrsh, vstrsv8hi, 0, B_VXE2, 0, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR) -B_DEF (s390_vstrsf, vstrsv4si, 0, B_VXE2, 0, BT_FN_UV4SI_UV4SI_UV4SI_UV8HI_INTPTR) +B_DEF (s390_vstrsh, vstrsv8hi, 0, B_VXE2, 0, BT_FN_UV16QI_UV8HI_UV8HI_UV16QI_INTPTR) +B_DEF (s390_vstrsf, vstrsv4si, 0, B_VXE2, 0, BT_FN_UV16QI_UV4SI_UV4SI_UV16QI_INTPTR) OB_DEF (s390_vec_search_string_until_zero_cc, s390_vstrsz_s8, s390_vstrsz_u32, B_VXE2, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR) OB_DEF_VAR (s390_vstrsz_s8, s390_vstrszb, 0, 0, BT_OV_UV16QI_V16QI_V16QI_UV16QI_INTPTR) @@ -3020,8 +3020,8 @@ OB_DEF_VAR (s390_vstrsz_b32, s390_vstrszf, 0, OB_DEF_VAR (s390_vstrsz_u32, s390_vstrszf, 0, 0, BT_OV_UV16QI_UV4SI_UV4SI_UV16QI_INTPTR) B_DEF (s390_vstrszb, vstrszv16qi, 0, B_VXE2, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR) -B_DEF (s390_vstrszh, vstrszv8hi, 0, B_VXE2, 0, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR) -B_DEF (s390_vstrszf, vstrszv4si, 0, B_VXE2, 0, BT_FN_UV4SI_UV4SI_UV4SI_UV8HI_INTPTR) +B_DEF (s390_vstrszh, vstrszv8hi, 0, B_VXE2, 0, BT_FN_UV16QI_UV8HI_UV8HI_UV16QI_INTPTR) +B_DEF (s390_vstrszf, vstrszv4si, 0, B_VXE2, 0, BT_FN_UV16QI_UV4SI_UV4SI_UV16QI_INTPTR) /* arch 14 builtins */ diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc index c857b2028f2e..bf46eab2d633 100644 --- a/gcc/config/s390/s390.cc +++ b/gcc/config/s390/s390.cc @@ -4779,7 +4779,7 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i, if (in_p && s390_loadrelative_operand_p (x, &symref, &offset) && mode == Pmode - && !SYMBOL_FLAG_NOTALIGN2_P (symref) + && (!SYMBOL_REF_P (symref) || !SYMBOL_FLAG_NOTALIGN2_P (symref)) && (offset & 1) == 1) sri->icode = ((mode == DImode) ? CODE_FOR_reloaddi_larl_odd_addend_z10 : CODE_FOR_reloadsi_larl_odd_addend_z10); @@ -9984,7 +9984,7 @@ s390_const_int_pool_entry_p (rtx mem, HOST_WIDE_INT *val) - (mem (unspec [(symbol_ref) (reg)] UNSPEC_LTREF)). - (mem (symbol_ref)). */ - if (!MEM_P (mem)) + if (!MEM_P (mem) || GET_MODE_CLASS (GET_MODE (mem)) != MODE_INT) return false; rtx addr = XEXP (mem, 0); @@ -9998,9 +9998,19 @@ s390_const_int_pool_entry_p (rtx mem, HOST_WIDE_INT *val) return false; rtx val_rtx = get_pool_constant (sym); - if (!CONST_INT_P (val_rtx)) + machine_mode mode = get_pool_mode (sym); + if (!CONST_INT_P (val_rtx) + || GET_MODE_CLASS (mode) != MODE_INT + || GET_MODE_SIZE (mode) < GET_MODE_SIZE (GET_MODE (mem))) return false; + if (mode != GET_MODE (mem)) + { + val_rtx = simplify_subreg (GET_MODE (mem), val_rtx, mode, 0); + if (val_rtx == NULL_RTX || !CONST_INT_P (val_rtx)) + return false; + } + if (val != nullptr) *val = INTVAL (val_rtx); return true; @@ -13802,10 +13812,19 @@ s390_encode_section_info (tree decl, rtx rtl, int first) that can go wrong (i.e. no FUNC_DECLs). All symbols without an explicit alignment are assumed to be 2 byte aligned as mandated by our ABI. This behavior can be - overridden for external symbols with the -munaligned-symbols - switch. */ + overridden for external and weak symbols with the + -munaligned-symbols switch. + For all external symbols without explicit alignment + DECL_ALIGN is already trimmed down to 8, however for weak + symbols this does not happen. These cases are catched by the + type size check. */ + const_tree size = TYPE_SIZE (TREE_TYPE (decl)); + unsigned HOST_WIDE_INT size_num = (tree_fits_uhwi_p (size) + ? tree_to_uhwi (size) : 0); if ((DECL_USER_ALIGN (decl) && DECL_ALIGN (decl) % 16) - || (s390_unaligned_symbols_p && !decl_binds_to_current_def_p (decl))) + || (s390_unaligned_symbols_p + && !decl_binds_to_current_def_p (decl) + && (DECL_USER_ALIGN (decl) ? DECL_ALIGN (decl) % 16 : size_num < 16))) SYMBOL_FLAG_SET_NOTALIGN2 (XEXP (rtl, 0)); else if (DECL_ALIGN (decl) % 32) SYMBOL_FLAG_SET_NOTALIGN4 (XEXP (rtl, 0)); @@ -17914,6 +17933,36 @@ expand_perm_as_a_vlbr_vstbr_candidate (const struct expand_vec_perm_d &d) return false; } +static bool +expand_perm_as_replicate (const struct expand_vec_perm_d &d) +{ + unsigned char i; + unsigned char elem; + rtx base = d.op0; + rtx insn; + /* Needed to silence maybe-uninitialized warning. */ + gcc_assert (d.nelt > 0); + elem = d.perm[0]; + for (i = 1; i < d.nelt; ++i) + if (d.perm[i] != elem) + return false; + if (!d.testing_p) + { + if (elem >= d.nelt) + { + base = d.op1; + elem -= d.nelt; + } + insn = maybe_gen_vec_splat (d.vmode, d.target, base, GEN_INT (elem)); + if (insn == NULL_RTX) + return false; + emit_insn (insn); + return true; + } + else + return maybe_code_for_vec_splat (d.vmode) != CODE_FOR_nothing; +} + /* Try to find the best sequence for the vector permute operation described by D. Return true if the operation could be expanded. */ @@ -17932,6 +17981,9 @@ vectorize_vec_perm_const_1 (const struct expand_vec_perm_d &d) if (expand_perm_as_a_vlbr_vstbr_candidate (d)) return true; + if (expand_perm_as_replicate (d)) + return true; + return false; } diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 8aa40ba5b7f7..c607dce3cf0f 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -2152,6 +2152,16 @@ gcc_assert (ok); operands[2] = GEN_INT (val & 0xFFFFFFFF00000000ULL); operands[3] = GEN_INT (val & 0x00000000FFFFFFFFULL); + if (operands[2] == const0_rtx) + { + emit_move_insn (operands[0], operands[3]); + DONE; + } + else if (operands[3] == const0_rtx) + { + emit_move_insn (operands[0], operands[2]); + DONE; + } }) ; diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt index 901ae4beb018..a5b5aa95a122 100644 --- a/gcc/config/s390/s390.opt +++ b/gcc/config/s390/s390.opt @@ -332,7 +332,8 @@ Store all argument registers on the stack. munaligned-symbols Target Var(s390_unaligned_symbols_p) Init(0) -Assume external symbols to be potentially unaligned. By default all -symbols without explicit alignment are assumed to reside on a 2 byte -boundary as mandated by the IBM Z ABI. +Assume external symbols, whose natural alignment would be 1, to be +potentially unaligned. By default all symbols without explicit +alignment are assumed to reside on a 2 byte boundary as mandated by +the IBM Z ABI. diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md index 432d81a719fc..93c0d408a43e 100644 --- a/gcc/config/s390/vx-builtins.md +++ b/gcc/config/s390/vx-builtins.md @@ -424,7 +424,7 @@ ; Replicate from vector element -(define_expand "vec_splat" +(define_expand "@vec_splat" [(set (match_operand:V_HW 0 "register_operand" "") (vec_duplicate:V_HW (vec_select: (match_operand:V_HW 1 "register_operand" "") diff --git a/gcc/config/visium/visium.cc b/gcc/config/visium/visium.cc index fd63f08c14e2..0368a0f40de2 100644 --- a/gcc/config/visium/visium.cc +++ b/gcc/config/visium/visium.cc @@ -1482,7 +1482,8 @@ visium_setup_incoming_varargs (cumulative_args_t pcum_v, /* The caller has advanced ARGS_SO_FAR up to, but not beyond, the last named argument. Advance a local copy of ARGS_SO_FAR past the last "real" named argument, to find out how many registers are left over. */ - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) TARGET_FUNCTION_ARG_ADVANCE (local_args_so_far, arg); /* Find how many registers we need to save. */ diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md index 1a2249b059a0..fbe40ec671ad 100644 --- a/gcc/config/xtensa/xtensa.md +++ b/gcc/config/xtensa/xtensa.md @@ -194,6 +194,20 @@ (set_attr "mode" "SI") (set_attr "length" "3")]) +(define_split + [(set (match_operand:SI 0 "register_operand") + (plus:SI (ashift:SI (match_operand:SI 1 "register_operand") + (match_operand:SI 3 "addsubx_operand")) + (match_operand:SI 2 "const_int_operand")))] + "TARGET_ADDX && can_create_pseudo_p ()" + [(set (match_dup 0) + (plus:SI (ashift:SI (match_dup 1) + (match_dup 3)) + (match_dup 2)))] +{ + operands[2] = force_reg (SImode, operands[2]); +}) + (define_expand "adddi3" [(set (match_operand:DI 0 "register_operand") (plus:DI (match_operand:DI 1 "register_operand") @@ -1270,13 +1284,15 @@ }) (define_insn "movsi_internal" - [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A") - (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))] + [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,a,U,D,R,R,a,q,a,a,W,a,*a,*A") + (match_operand:SI 1 "move_operand" "M,D,d,U,r,R,D,d,r,r,I,Y,i,T,*A,*r"))] "xtensa_valid_move (SImode, operands)" "@ movi.n\t%0, %x1 mov.n\t%0, %1 mov.n\t%0, %1 + %v1l32i\t%0, %1 + %v0s32i\t%1, %0 %v1l32i.n\t%0, %1 %v0s32i.n\t%1, %0 %v0s32i.n\t%1, %0 @@ -1286,13 +1302,11 @@ movi\t%0, %1 const16\t%0, %t1\;const16\t%0, %b1 %v1l32r\t%0, %1 - %v1l32i\t%0, %1 - %v0s32i\t%1, %0 rsr\t%0, ACCLO wsr\t%1, ACCLO" - [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,move,load,load,store,rsr,wsr") + [(set_attr "type" "move,move,move,load,store,load,store,store,move,move,move,move,move,load,rsr,wsr") (set_attr "mode" "SI") - (set_attr "length" "2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")]) + (set_attr "length" "2,2,2,3,3,2,2,2,3,3,3,3,6,3,3,3")]) (define_split [(set (match_operand:SHI 0 "register_operand") diff --git a/gcc/config/xtensa/xtensa.opt.urls b/gcc/config/xtensa/xtensa.opt.urls index 146db23d1e30..1f193a7da0c9 100644 --- a/gcc/config/xtensa/xtensa.opt.urls +++ b/gcc/config/xtensa/xtensa.opt.urls @@ -33,5 +33,5 @@ mabi=windowed UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dwindowed) mstrict-align -UrlSuffix(gcc/Xtensa-Options.html#index-mstrict-align-5) +UrlSuffix(gcc/Xtensa-Options.html#index-mstrict-align-6) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 85751b0e3151..27afe2216821 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,333 @@ +2024-04-14 Nathaniel Shead + + PR c++/106820 + * module.cc (trees_in::decl_value): Assemble alias when needed. + +2024-04-13 Patrick Palka + + * module.cc (struct bytes_in::bits_in): Define defaulted + move ctor. + (struct bytes_out::bits_out): Likewise. + +2024-04-13 Patrick Palka + + * module.cc: Update comment about classes defined within. + (class data): Enclose in an anonymous namespace. + (data::calc_crc): Moved from bytes::calc_crc. + (class bytes): Remove. Move bit_flush to namespace scope. + (class bytes_in): Enclose in an anonymous namespace. Inherit + directly from data and adjust accordingly. Move b and bflush + members to bits_in. + (class bytes_out): As above. Remove is_set static data member. + (bit_flush): Moved from class bytes. + (struct bytes_in::bits_in): Define. + (struct bytes_out::bits_out): Define. + (bytes_in::stream_bits): Define. + (bytes_out::stream_bits): Define. + (bytes_out::bflush): Moved to bits_out/in. + (bytes_in::bflush): Likewise + (bytes_in::bfill): Removed. + (bytes_out::b): Moved to bits_out/in. + (bytes_in::b): Likewise. + (class trees_in): Enclose in an anonymous namespace. + (class trees_out): Enclose in an anonymous namespace. + (trees_out::core_bools): Add bits_out/in parameter and use it. + Unconditionally stream a bit for public_flag. Add early exits + as appropriate. + (trees_out::core_bools): Likewise. + (trees_out::lang_decl_bools): Add bits_out/in parameter and use + it. Flush the current bit buffer at the start. Unconditionally + stream a bit for module_keyed_decls_p. + (trees_in::lang_decl_bools): Likewise. + (trees_out::lang_type_bools): Add bits_out/in parameter and use + it. Flush the current bit buffer at the start. + (trees_in::lang_type_bools): Likewise. + (trees_out::tree_node_bools): Construct a bits_out object and + use/pass it. + (trees_in::tree_node_bools): Likewise. + (trees_out::decl_value): Likewise. + (trees_in::decl_value): Likewise. + (module_state::write_define): Likewise. + (module_state::read_define): Likewise. + +2024-04-12 Marek Polacek + + PR c++/109966 + * typeck2.cc (potential_prvalue_result_of): Remove. + (replace_placeholders_for_class_temp_r): Check TARGET_EXPR_ELIDING_P. + Use a pset. Don't replace_placeholders in TARGET_EXPRs that initialize + a function argument. + +2024-04-12 Patrick Palka + + PR c++/99426 + * module.cc (merge_kind::MK_local_type): New enumerator. + (merge_kind_name): Update. + (trees_out::chained_decls): Move BLOCK-specific handling + of DECL_LOCAL_DECL_P decls to ... + (trees_out::core_vals) : ... here. Stream + BLOCK_VARS manually. + (trees_in::core_vals) : Stream BLOCK_VARS + manually. Handle deduplicated local types.. + (trees_out::key_local_type): Define. + (trees_in::key_local_type): Define. + (trees_out::get_merge_kind) : Return + MK_local_type for a local type. + (trees_out::key_mergeable) : Use + key_local_type. + (trees_in::key_mergeable) : Likewise. + (trees_in::is_matching_decl): Be flexible with type mismatches + for local entities. + (trees_in::register_duplicate): Also register the + DECL_TEMPLATE_RESULT of a TEMPLATE_DECL as a duplicate. + (depset_cmp): Return 0 for equal IDENTIFIER_HASH_VALUEs. + +2024-04-12 Jason Merrill + Patrick Palka + + PR c++/113141 + * call.cc (reference_binding): For an invalid cast, warn and don't + recalculate. + +2024-04-12 Jason Merrill + Patrick Palka + + DR 1996 + PR c++/113141 + * call.cc (reference_binding): Check direct binding from + a single-element list. + +2024-04-12 Jakub Jelinek + + PR c++/114691 + * semantics.cc (simplify_loop_decl_cond): Use cp_build_unary_op with + TRUTH_NOT_EXPR on ANNOTATE_EXPR argument (if any) rather than + ANNOTATE_EXPR itself. + +2024-04-12 Patrick Palka + + PR c++/114393 + * pt.cc (tsubst_lambda_expr): Also defer all dependent + substitution. + +2024-04-12 Jakub Jelinek + + PR c++/114426 + * constexpr.cc (is_valid_constexpr_fn): Return false/diagnose with + complain destructors in classes with virtual bases. + +2024-04-12 Patrick Palka + + PR c++/114393 + PR c++/107457 + PR c++/93595 + * cp-tree.h (LAMBDA_EXPR_EXTRA_ARGS): Define. + (tree_lambda_expr::extra_args): New field. + * module.cc (trees_out::core_vals) : Stream + LAMBDA_EXPR_EXTRA_ARGS. + (trees_in::core_vals) : Likewise. + * pt.cc (has_extra_args_mechanism_p): Return true for LAMBDA_EXPR. + (tree_extra_args): Handle LAMBDA_EXPR. + (tsubst_lambda_expr): Use LAMBDA_EXPR_EXTRA_ARGS to defer templated + substitution into a lambda-expr if we lost the template context. + Add sanity check for error_mark_node result from begin_lambda_type. + +2024-04-11 Patrick Palka + + PR c++/114303 + * constraint.cc (tsubst_requires_expr): Clear + REQUIRES_EXPR_EXTRA_ARGS before calling build_extra_args. + * pt.cc (tree_extra_args): Define. + (extract_locals_r): Assert *_EXTRA_ARGS is empty. + (tsubst_stmt) : Clear IF_SCOPE on the new + IF_STMT. Call build_extra_args on the new IF_STMT instead + of t which might already have IF_STMT_EXTRA_ARGS. + +2024-04-11 Jakub Jelinek + + PR c++/114409 + * pt.cc (tsubst_expr) : Move to ... + (tsubst_stmt) : ... here. Use tsubst_expr + instead of RECUR for the last 2 arguments. + +2024-04-10 Jakub Jelinek + + PR c++/114462 + * semantics.cc: Implement C++26 P2809R3 - Trivial infinite + loops are not Undefined Behavior. + (maybe_warn_for_constant_evaluated): Add trivial_infinite argument + and emit special diagnostics for that case. + (finish_if_stmt_cond): Adjust caller. + (finish_loop_cond): New function. + (finish_while_stmt): Use it. + (finish_do_stmt): Likewise. + (finish_for_stmt): Likewise. + +2024-04-10 Nathaniel Shead + + PR c++/104040 + * semantics.cc (expand_or_defer_fn_1): Keep DECL_SAVED_TREE for + all vague linkage cdtors with modules. + +2024-04-10 Nathaniel Shead + + PR c++/99377 + * module.cc (trees_in::install_entity): Overwrite entity map + index if installing from a partition. + +2024-04-09 Jakub Jelinek + + PR c++/114580 + * semantics.cc (finish_if_stmt_cond): Call + maybe_warn_for_constant_evaluated with IF_STMT_CONSTEXPR_P (if_stmt) + as the second argument, rather than true/false depending on if + it is if constexpr with non-dependent constant expression with + bool type. + +2024-04-09 Jakub Jelinek + + * constexpr.cc (build_new_constexpr_heap_type): Fix duplicated words + in comment; is is -> is. + * cp-tree.def (CO_RETURN_EXPR): Fix duplicated words in comment; + for for -> for. + * parser.cc (fixup_blocks_walker): Fix duplicated words in comment; + is is -> is. + * semantics.cc (fixup_template_type): Fix duplicated words in comment; + for for -> for. + (finish_omp_for): Fix duplicated words in comment; the the -> the. + * pt.cc (more_specialized_fn): Fix duplicated words in comment; + think think -> think. + (type_targs_deducible_from): Fix duplicated words in comment; the the + -> the. + +2024-04-05 Marek Polacek + + PR c++/111132 + * constexpr.cc (get_function_named_in_call): Use + cp_get_fndecl_from_callee. + * cvt.cc (cp_get_fndecl_from_callee): If there's a + DECL_LOCAL_DECL_ALIAS, use it. + +2024-04-05 Jakub Jelinek + + PR c++/114572 + * cp-gimplify.cc (cxx_omp_clause_apply_fn): Call build_cplus_new + on build_call_a result if it has class type. + +2024-04-04 centurion + + PR c++/114377 + * pt.cc (find_template_parameter_info::found): Use TREE_TYPE for + TEMPLATE_DECL instead of DECL_INITIAL. + +2024-04-02 Marek Polacek + + PR c++/114479 + * semantics.cc (trait_expr_value) : Return false + for zero-sized arrays. + +2024-04-02 Marek Polacek + + PR c++/103825 + * typeck.cc (is_bitfield_expr_with_lowered_type): Handle + CLEANUP_POINT_EXPR. + +2024-04-02 Jason Merrill + + PR c++/114561 + PR c++/114562 + * call.cc (convert_like_internal): Avoid adding qualification + conversion in direct reference binding. + +2024-04-01 Jason Merrill + + * typeck.cc (maybe_warn_about_returning_address_of_local): + Permerror in C++26. + +2024-03-28 Jason Merrill + + PR c++/100667 + * semantics.cc (same_type_ref_bind_p): New. + (finish_trait_expr): Use it. + +2024-03-26 Jakub Jelinek + + PR c++/112724 + * error.cc (dump_expr): Handle EXCESS_PRECISION_EXPR like NOP_EXPR. + +2024-03-25 Marek Polacek + + PR c++/114349 + * name-lookup.cc (maybe_push_to_top_level): For a non-lambda, + don't push to top level if decl_function_context is non-null. + * pt.cc (maybe_instantiate_noexcept): Use maybe_push_to_top_level. + +2024-03-25 Marek Polacek + + PR c++/114439 + * init.cc (can_init_array_with_p): Return true for a VEC_INIT_EXPR + wrapped in a TARGET_EXPR. + +2024-03-22 Marek Polacek + + PR c++/59465 + * init.cc (can_init_array_with_p): New. + (perform_member_init): Check it. + +2024-03-21 Marek Polacek + + PR c++/110323 + * decl2.cc (min_vis_expr_r) : Do nothing for + decl_constant_var_p VAR_DECLs. + +2024-03-20 Jakub Jelinek + + * coroutines.cc (expand_one_await_expression): Use + integer_zero_node instead of build_int_cst (integer_type_node, 0) + and integer_one_node instead of build_int_cst (integer_type_node, 1). + +2024-03-19 Nathaniel Shead + + * cp-tree.h (module_maybe_has_cmi_p): New function. + * decl.cc (grokfndecl): Mark block-scope functions as public if + they could be visible in other TUs. + * decl2.cc (no_linkage_error): Don't error for declarations that + could be defined in other TUs since C++20. Suppress duplicate + errors from 'check_global_declaration'. + * tree.cc (no_linkage_check): In relaxed mode, don't consider + types in a module CMI to have no linkage. + +2024-03-16 Nathaniel Shead + + PR c++/112631 + * cp-tree.h (named_module_attach_p): New function. + * decl.cc (start_decl): Check for attachment not purview. + (grokmethod): Likewise. + +2024-03-14 Chung-Lin Tang + + * parser.cc (cp_parser_oacc_data_clause): Add parsing support for + 'readonly' modifier, set OMP_CLAUSE_MAP_READONLY if readonly modifier + found, update comments. + (cp_parser_oacc_cache): Add parsing support for 'readonly' modifier, + set OMP_CLAUSE__CACHE__READONLY if readonly modifier found, update + comments. + +2024-03-12 Nathaniel Shead + + PR c++/98645 + PR c++/98688 + PR c++/111224 + * module.cc (enum tree_tag): Add new tag for builtin types. + (trees_out::start): POLY_INT_CSTs can be emitted. + (trees_in::start): Likewise. + (trees_out::core_vals): Stream POLY_INT_CSTs. + (trees_in::core_vals): Likewise. + (trees_out::type_node): Handle vectors with multiple coeffs. + (trees_in::tree_node): Likewise. + (init_modules): Register target-specific builtin types. Bump + initial capacity slightly. + 2024-03-08 Jakub Jelinek * pt.cc (tsubst_expr): Handle MEM_REF. diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc index 9e4c80736007..dbdd7c29fe88 100644 --- a/gcc/cp/call.cc +++ b/gcc/cp/call.cc @@ -1596,7 +1596,9 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p, return conv; } -/* Returns nonzero if T1 is reference-related to T2. */ +/* Returns nonzero if T1 is reference-related to T2. + + This is considered when a reference to T1 is initialized by a T2. */ bool reference_related_p (tree t1, tree t2) @@ -1757,6 +1759,7 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, } bool copy_list_init = false; + bool single_list_conv = false; if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr)) { maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); @@ -1783,6 +1786,11 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, from = etype; goto skip; } + else if (CLASS_TYPE_P (etype) && TYPE_HAS_CONVERSION (etype)) + /* CWG1996: jason's proposed drafting adds "or initializing T from E + would bind directly". We check that in the direct binding with + conversion code below. */ + single_list_conv = true; } /* Otherwise, if T is a reference type, a prvalue temporary of the type referenced by T is copy-list-initialized, and the reference is bound @@ -1907,9 +1915,14 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, (possibly cv-qualified) object to the (possibly cv-qualified) same object type (or a reference to it), to a (possibly cv-qualified) base class of that type (or a reference to it).... */ - else if (CLASS_TYPE_P (from) && !related_p - && !(flags & LOOKUP_NO_CONVERSION)) + else if (!related_p + && !(flags & LOOKUP_NO_CONVERSION) + && (CLASS_TYPE_P (from) || single_list_conv)) { + tree rexpr = expr; + if (single_list_conv) + rexpr = CONSTRUCTOR_ELT (expr, 0)->value; + /* [dcl.init.ref] If the initializer expression @@ -1923,7 +1936,7 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, the reference is bound to the lvalue result of the conversion in the second case. */ - z_candidate *cand = build_user_type_conversion_1 (rto, expr, flags, + z_candidate *cand = build_user_type_conversion_1 (rto, rexpr, flags, complain); if (cand) { @@ -2021,7 +2034,17 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, recalculate the second conversion sequence. */ for (conversion *t = conv; t; t = next_conversion (t)) if (t->kind == ck_user - && DECL_CONV_FN_P (t->cand->fn)) + && c_cast_p && !maybe_valid_p) + { + if (complain & tf_warning) + warning (OPT_Wcast_user_defined, + "casting %qT to %qT does not use %qD", + from, rto, t->cand->fn); + /* Don't let recalculation try to make this valid. */ + break; + } + else if (t->kind == ck_user + && DECL_CONV_FN_P (t->cand->fn)) { tree ftype = TREE_TYPE (TREE_TYPE (t->cand->fn)); /* A prvalue of non-class type is cv-unqualified. */ @@ -8742,7 +8765,15 @@ convert_like_internal (conversion *convs, tree expr, tree fn, int argnum, break; }; - expr = convert_like (next_conversion (convs), expr, fn, argnum, + conversion *nc = next_conversion (convs); + if (convs->kind == ck_ref_bind && nc->kind == ck_qual + && !convs->need_temporary_p) + /* direct_reference_binding might have inserted a ck_qual under + this ck_ref_bind for the benefit of conversion sequence ranking. + Don't actually perform that conversion. */ + nc = next_conversion (nc); + + expr = convert_like (nc, expr, fn, argnum, convs->kind == ck_ref_bind ? issue_conversion_warnings : false, c_cast_p, /*nested_p=*/true, complain & ~tf_no_cleanup); @@ -8820,19 +8851,6 @@ convert_like_internal (conversion *convs, tree expr, tree fn, int argnum, { tree ref_type = totype; - /* direct_reference_binding might have inserted a ck_qual under - this ck_ref_bind for the benefit of conversion sequence ranking. - Ignore the conversion; we'll create our own below. */ - if (next_conversion (convs)->kind == ck_qual - && !convs->need_temporary_p) - { - gcc_assert (same_type_p (TREE_TYPE (expr), - next_conversion (convs)->type)); - /* Strip the cast created by the ck_qual; cp_build_addr_expr - below expects an lvalue. */ - STRIP_NOPS (expr); - } - if (convs->bad_p && !next_conversion (convs)->bad_p) { tree extype = TREE_TYPE (expr); diff --git a/gcc/cp/constexpr.cc b/gcc/cp/constexpr.cc index fa346fe01c9c..fcc847d85df3 100644 --- a/gcc/cp/constexpr.cc +++ b/gcc/cp/constexpr.cc @@ -262,18 +262,15 @@ is_valid_constexpr_fn (tree fun, bool complain) inform (DECL_SOURCE_LOCATION (fun), "lambdas are implicitly % only in C++17 and later"); } - else if (DECL_DESTRUCTOR_P (fun)) + else if (DECL_DESTRUCTOR_P (fun) && cxx_dialect < cxx20) { - if (cxx_dialect < cxx20) - { - ret = false; - if (complain) - error_at (DECL_SOURCE_LOCATION (fun), - "% destructors only available" - " with %<-std=c++20%> or %<-std=gnu++20%>"); - } + ret = false; + if (complain) + error_at (DECL_SOURCE_LOCATION (fun), + "% destructors only available with " + "%<-std=c++20%> or %<-std=gnu++20%>"); } - else if (!DECL_CONSTRUCTOR_P (fun)) + else if (!DECL_CONSTRUCTOR_P (fun) && !DECL_DESTRUCTOR_P (fun)) { tree rettype = TREE_TYPE (TREE_TYPE (fun)); if (!literal_type_p (rettype)) @@ -702,16 +699,14 @@ build_constexpr_constructor_member_initializers (tree type, tree body) /* 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. */ + return the _DECL for that function. */ static tree get_function_named_in_call (tree t) { - tree fun = cp_get_callee (t); - if (fun && TREE_CODE (fun) == ADDR_EXPR - && TREE_CODE (TREE_OPERAND (fun, 0)) == FUNCTION_DECL) - fun = TREE_OPERAND (fun, 0); - return fun; + tree callee = cp_get_callee (t); + tree fun = cp_get_fndecl_from_callee (callee, /*fold*/false); + return fun ? fun : callee; } /* Subroutine of check_constexpr_fundef. BODY is the body of a function @@ -7226,7 +7221,7 @@ maybe_warn_about_constant_value (location_t loc, tree decl) in bytes. If COOKIE_SIZE is NULL, return array type ELT_TYPE[FULL_SIZE / sizeof(ELT_TYPE)], otherwise return struct { size_t[COOKIE_SIZE/sizeof(size_t)]; ELT_TYPE[N]; } - where N is is computed such that the size of the struct fits into FULL_SIZE. + where N is computed such that the size of the struct fits into FULL_SIZE. If ARG_SIZE is non-NULL, it is the first argument to the new operator. It should be passed if ELT_TYPE is zero sized type in which case FULL_SIZE will be also 0 and so it is not possible to determine the actual array diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc index 49de3211d4c7..8a3b5d80ba7c 100644 --- a/gcc/cp/constraint.cc +++ b/gcc/cp/constraint.cc @@ -2362,6 +2362,7 @@ tsubst_requires_expr (tree t, tree args, sat_info info) matching or dguide constraint rewriting), in which case we need to partially substitute. */ t = copy_node (t); + REQUIRES_EXPR_EXTRA_ARGS (t) = NULL_TREE; REQUIRES_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, info.complain); return t; } diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc index 9b037edbd144..b05cb9eb3302 100644 --- a/gcc/cp/coroutines.cc +++ b/gcc/cp/coroutines.cc @@ -1750,7 +1750,7 @@ expand_one_await_expression (tree *stmt, tree *await_expr, void *d) data->coro_fp); r = cp_build_init_expr (cond, r); finish_switch_cond (r, sw); - r = build_case_label (build_int_cst (integer_type_node, 0), NULL_TREE, + r = build_case_label (integer_zero_node, NULL_TREE, create_anon_label_with_ctx (loc, actor)); add_stmt (r); /* case 0: */ /* Implement the suspend, a scope exit without clean ups. */ @@ -1758,7 +1758,7 @@ expand_one_await_expression (tree *stmt, tree *await_expr, void *d) is_cont ? cont : susp); r = coro_build_cvt_void_expr_stmt (r, loc); add_stmt (r); /* goto ret; */ - r = build_case_label (build_int_cst (integer_type_node, 1), NULL_TREE, + r = build_case_label (integer_one_node, NULL_TREE, create_anon_label_with_ctx (loc, actor)); add_stmt (r); /* case 1: */ r = build1_loc (loc, GOTO_EXPR, void_type_node, resume_label); diff --git a/gcc/cp/cp-gimplify.cc b/gcc/cp/cp-gimplify.cc index f3baae6ade75..ab5acd18c993 100644 --- a/gcc/cp/cp-gimplify.cc +++ b/gcc/cp/cp-gimplify.cc @@ -2480,6 +2480,8 @@ cxx_omp_clause_apply_fn (tree fn, tree arg1, tree arg2) TREE_PURPOSE (parm), fn, i - is_method, tf_warning_or_error); t = build_call_a (fn, i, argarray); + if (MAYBE_CLASS_TYPE_P (TREE_TYPE (t))) + t = build_cplus_new (TREE_TYPE (t), t, tf_warning_or_error); t = fold_convert (void_type_node, t); t = fold_build_cleanup_point_expr (TREE_TYPE (t), t); append_to_statement_list (t, &ret); @@ -2513,6 +2515,8 @@ cxx_omp_clause_apply_fn (tree fn, tree arg1, tree arg2) TREE_PURPOSE (parm), fn, i - is_method, tf_warning_or_error); t = build_call_a (fn, i, argarray); + if (MAYBE_CLASS_TYPE_P (TREE_TYPE (t))) + t = build_cplus_new (TREE_TYPE (t), t, tf_warning_or_error); t = fold_convert (void_type_node, t); return fold_build_cleanup_point_expr (TREE_TYPE (t), t); } diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def index 6bf2ee82c4c1..3a7ac29636da 100644 --- a/gcc/cp/cp-tree.def +++ b/gcc/cp/cp-tree.def @@ -567,7 +567,7 @@ DEFTREECODE (CO_YIELD_EXPR, "co_yield", tcc_expression, 2) /* The co_return expression is used to support coroutines. Op0 is the original expr, can be void (for use in diagnostics) - Op1 is the promise return_xxxx call for for the expression given. */ + Op1 is the promise return_xxxx call for the expression given. */ DEFTREECODE (CO_RETURN_EXPR, "co_return", tcc_statement, 2) diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 14895bc65850..1dbb577a38d7 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1538,6 +1538,10 @@ enum cp_lambda_default_capture_mode_type { #define LAMBDA_EXPR_REGEN_INFO(NODE) \ (((struct tree_lambda_expr *)LAMBDA_EXPR_CHECK (NODE))->regen_info) +/* Like PACK_EXPANSION_EXTRA_ARGS, for lambda-expressions. */ +#define LAMBDA_EXPR_EXTRA_ARGS(NODE) \ + (((struct tree_lambda_expr *)LAMBDA_EXPR_CHECK (NODE))->extra_args) + /* The closure type of the lambda, which is also the type of the LAMBDA_EXPR. */ #define LAMBDA_EXPR_CLOSURE(NODE) \ @@ -1550,6 +1554,7 @@ struct GTY (()) tree_lambda_expr tree this_capture; tree extra_scope; tree regen_info; + tree extra_args; vec *pending_proxies; location_t locus; enum cp_lambda_default_capture_mode_type default_capture_mode : 2; @@ -7381,6 +7386,14 @@ inline bool module_attach_p () inline bool named_module_purview_p () { return named_module_p () && module_purview_p (); } +inline bool named_module_attach_p () +{ return named_module_p () && module_attach_p (); } + +/* We don't know if this TU will have a CMI while parsing the GMF, + so tentatively assume that it might, for the purpose of determining + whether no-linkage decls could be used by an importer. */ +inline bool module_maybe_has_cmi_p () +{ return module_has_cmi_p () || (named_module_p () && !module_purview_p ()); } /* We're currently exporting declarations. */ inline bool module_exporting_p () diff --git a/gcc/cp/cvt.cc b/gcc/cp/cvt.cc index cbed847b343a..db086c017e89 100644 --- a/gcc/cp/cvt.cc +++ b/gcc/cp/cvt.cc @@ -1001,8 +1001,22 @@ cp_get_fndecl_from_callee (tree fn, bool fold /* = true */) { if (fn == NULL_TREE) return fn; + + /* We evaluate constexpr functions on the original, pre-genericization + bodies. So block-scope extern declarations have not been mapped to + declarations in outer scopes. Use the namespace-scope declaration, + if any, so that retrieve_constexpr_fundef can find it (PR111132). */ + auto fn_or_local_alias = [] (tree f) + { + if (DECL_LOCAL_DECL_P (f)) + if (tree alias = DECL_LOCAL_DECL_ALIAS (f)) + if (alias != error_mark_node) + return alias; + return f; + }; + if (TREE_CODE (fn) == FUNCTION_DECL) - return fn; + return fn_or_local_alias (fn); tree type = TREE_TYPE (fn); if (type == NULL_TREE || !INDIRECT_TYPE_P (type)) return NULL_TREE; @@ -1013,7 +1027,7 @@ cp_get_fndecl_from_callee (tree fn, bool fold /* = true */) || TREE_CODE (fn) == FDESC_EXPR) fn = TREE_OPERAND (fn, 0); if (TREE_CODE (fn) == FUNCTION_DECL) - return fn; + return fn_or_local_alias (fn); return NULL_TREE; } diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc index dbc3df24e77f..65ab64885ff8 100644 --- a/gcc/cp/decl.cc +++ b/gcc/cp/decl.cc @@ -6092,10 +6092,10 @@ start_decl (const cp_declarator *declarator, { /* A function-scope decl of some namespace-scope decl. */ DECL_LOCAL_DECL_P (decl) = true; - if (named_module_purview_p ()) + if (named_module_attach_p ()) error_at (declarator->id_loc, - "block-scope extern declaration %q#D not permitted" - " in module purview", decl); + "block-scope extern declaration %q#D must not be" + " attached to a named module", decl); } /* Enter this declaration into the symbol table. Don't push the plain @@ -10756,9 +10756,15 @@ grokfndecl (tree ctype, /* Members of anonymous types and local classes have no linkage; make them internal. If a typedef is made later, this will be changed. */ - if (ctype && (!TREE_PUBLIC (TYPE_MAIN_DECL (ctype)) - || decl_function_context (TYPE_MAIN_DECL (ctype)))) + if (ctype && !TREE_PUBLIC (TYPE_MAIN_DECL (ctype))) publicp = 0; + else if (ctype && decl_function_context (TYPE_MAIN_DECL (ctype))) + /* But members of local classes in a module CMI should have their + definitions exported, in case they are (directly or indirectly) + used by an importer. We don't just use module_has_cmi_p here + because for entities in the GMF we don't yet know whether this + module will have a CMI, so we'll conservatively assume it might. */ + publicp = module_maybe_has_cmi_p (); if (publicp && cxx_dialect == cxx98) { @@ -18907,10 +18913,10 @@ grokmethod (cp_decl_specifier_seq *declspecs, check_template_shadow (fndecl); /* p1779 ABI-Isolation makes inline not a default for in-class - definitions in named module purview. If the user explicitly + definitions attached to a named module. If the user explicitly made it inline, grokdeclarator will already have done the right things. */ - if ((!named_module_purview_p () + if ((!named_module_attach_p () || flag_module_implicit_inline /* Lambda's operator function remains inline. */ || LAMBDA_TYPE_P (DECL_CONTEXT (fndecl))) diff --git a/gcc/cp/decl2.cc b/gcc/cp/decl2.cc index 6c9fd415d40e..1339f210dde5 100644 --- a/gcc/cp/decl2.cc +++ b/gcc/cp/decl2.cc @@ -2718,7 +2718,12 @@ min_vis_expr_r (tree *tp, int */*walk_subtrees*/, void *data) /* Fall through. */ case VAR_DECL: case FUNCTION_DECL: - if (! TREE_PUBLIC (t)) + if (decl_constant_var_p (t)) + /* The ODR allows definitions in different TUs to refer to distinct + constant variables with internal or no linkage, so such a reference + shouldn't affect visibility (PR110323). FIXME but only if the + lvalue-rvalue conversion is applied. */; + else if (! TREE_PUBLIC (t)) tpvis = VISIBILITY_ANON; else tpvis = DECL_VISIBILITY (t); @@ -4696,8 +4701,19 @@ no_linkage_error (tree decl) bool d = false; auto_diagnostic_group grp; if (cxx_dialect >= cxx11) - d = permerror (DECL_SOURCE_LOCATION (decl), "%q#D, declared using " - "unnamed type, is used but never defined", decl); + { + /* If t is declared in a module CMI, then decl could actually + be defined in a different TU, so don't warn since C++20. */ + tree relaxed = no_linkage_check (t, /*relaxed_p=*/true); + if (relaxed != NULL_TREE) + d = permerror (DECL_SOURCE_LOCATION (decl), + "%q#D, declared using an unnamed type, " + "is used but never defined", decl); + else if (cxx_dialect < cxx20) + d = pedwarn (DECL_SOURCE_LOCATION (decl), OPT_Wc__20_extensions, + "%q#D, declared using an unnamed type, " + "is used but not defined", decl); + } else if (DECL_EXTERN_C_P (decl)) /* Allow this; it's pretty common in C. */; else if (VAR_P (decl)) @@ -4716,13 +4732,31 @@ no_linkage_error (tree decl) inform (DECL_SOURCE_LOCATION (TYPE_NAME (t)), "%q#D does not refer " "to the unqualified type, so it is not used for linkage", TYPE_NAME (t)); + /* Suppress warning from check_global_declaration if needed. */ + if (d) + suppress_warning (decl, OPT_Wunused); } else if (cxx_dialect >= cxx11) { if (VAR_P (decl) || !DECL_PURE_VIRTUAL_P (decl)) - permerror (DECL_SOURCE_LOCATION (decl), - "%q#D, declared using local type " - "%qT, is used but never defined", decl, t); + { + /* Similarly for local types in a function with vague linkage or + defined in a module CMI, then decl could actually be defined + in a different TU, so don't warn since C++20. */ + bool d = false; + tree relaxed = no_linkage_check (t, /*relaxed_p=*/true); + if (relaxed != NULL_TREE) + d = permerror (DECL_SOURCE_LOCATION (decl), + "%q#D, declared using local type " + "%qT, is used but never defined", decl, t); + else if (cxx_dialect < cxx20) + d = pedwarn (DECL_SOURCE_LOCATION (decl), OPT_Wc__20_extensions, + "%q#D, declared using local type " + "%qT, is used but not defined here", decl, t); + /* Suppress warning from check_global_declaration if needed. */ + if (d) + suppress_warning (decl, OPT_Wunused); + } } else if (VAR_P (decl)) warning_at (DECL_SOURCE_LOCATION (decl), 0, "type %qT with no linkage " diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc index d3fcac70ea17..7074845154e3 100644 --- a/gcc/cp/error.cc +++ b/gcc/cp/error.cc @@ -2662,6 +2662,7 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags) CASE_CONVERT: case IMPLICIT_CONV_EXPR: case VIEW_CONVERT_EXPR: + case EXCESS_PRECISION_EXPR: { tree op = TREE_OPERAND (t, 0); diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc index d2586fad86b1..a93ce00800c4 100644 --- a/gcc/cp/init.cc +++ b/gcc/cp/init.cc @@ -934,6 +934,37 @@ find_uninit_fields (tree *t, hash_set *uninitialized, tree member) } } +/* Return true if it's OK to initialize an array TYPE from INIT. Mere mortals + can't copy arrays, but the compiler can do so with a VEC_INIT_EXPR in + certain cases. */ + +static bool +can_init_array_with_p (tree type, tree init) +{ + if (!init) + /* Value-init, OK. */ + return true; + if (!same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (init))) + return false; + /* We're called from synthesize_method, and we're processing the + mem-initializers of a constructor. */ + if (DECL_DEFAULTED_FN (current_function_decl)) + return true; + if (TREE_CODE (init) == TARGET_EXPR) + { + init = TARGET_EXPR_INITIAL (init); + /* As an extension, we allow copying from a compound literal. */ + if (TREE_CODE (init) == CONSTRUCTOR) + return CONSTRUCTOR_C99_COMPOUND_LITERAL (init); + /* VEC_INIT_EXPR is used for non-constant initialization of trailing + elements with no explicit initializers. */ + else if (TREE_CODE (init) == VEC_INIT_EXPR) + return true; + } + + return false; +} + /* Initialize MEMBER, a FIELD_DECL, with INIT, a TREE_LIST of arguments. If TREE_LIST is void_type_node, an empty initializer list was given; if NULL_TREE no initializer was given. UNINITIALIZED @@ -1087,9 +1118,7 @@ perform_member_init (tree member, tree init, hash_set &uninitialized) { if (TREE_CODE (type) == ARRAY_TYPE) { - if (init == NULL_TREE - || same_type_ignoring_top_level_qualifiers_p (type, - TREE_TYPE (init))) + if (can_init_array_with_p (type, init)) { if (TYPE_DOMAIN (type) && TYPE_MAX_VALUE (TYPE_DOMAIN (type))) { diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index 99055523d915..d94d8ff4df99 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -153,9 +153,11 @@ Classes used: data - buffer - bytes - data streamer - bytes_in : bytes - scalar reader - bytes_out : bytes - scalar writer + bytes_in : data - scalar reader + bytes_out : data - scalar writer + + bytes_in::bits_in - bit stream reader + bytes_out::bits_out - bit stream writer elf - ELROND format elf_in : elf - ELROND reader @@ -217,6 +219,7 @@ Classes used: #include "dumpfile.h" #include "bitmap.h" #include "cgraph.h" +#include "varasm.h" #include "tree-iterator.h" #include "cpplib.h" #include "mkdeps.h" @@ -346,6 +349,7 @@ typedef hash_map ptr_int_hash_map; /* Variable length buffer. */ +namespace { class data { public: class allocator { @@ -393,6 +397,8 @@ class data { return res; } + unsigned calc_crc (unsigned) const; + public: void unuse (unsigned count) { @@ -402,6 +408,7 @@ class data { public: static allocator simple_memory; }; +} // anon namespace /* The simple data allocator. */ data::allocator data::simple_memory; @@ -447,46 +454,11 @@ data::allocator::shrink (char *ptr) XDELETEVEC (ptr); } -/* Byte streamer base. Buffer with read/write position and smarts - for single bits. */ - -class bytes : public data { -public: - typedef data parent; - -protected: - uint32_t bit_val; /* Bit buffer. */ - unsigned bit_pos; /* Next bit in bit buffer. */ - -public: - bytes () - :parent (), bit_val (0), bit_pos (0) - {} - ~bytes () - { - } - -protected: - unsigned calc_crc (unsigned) const; - -protected: - /* Finish bit packet. Rewind the bytes not used. */ - unsigned bit_flush () - { - gcc_assert (bit_pos); - unsigned bytes = (bit_pos + 7) / 8; - unuse (4 - bytes); - bit_pos = 0; - bit_val = 0; - return bytes; - } -}; - /* Calculate the crc32 of the buffer. Note the CRC is stored in the first 4 bytes, so don't include them. */ unsigned -bytes::calc_crc (unsigned l) const +data::calc_crc (unsigned l) const { return crc32 (0, (unsigned char *)buffer + 4, l - 4); } @@ -495,8 +467,9 @@ class elf_in; /* Byte stream reader. */ -class bytes_in : public bytes { - typedef bytes parent; +namespace { +class bytes_in : public data { + typedef data parent; protected: bool overrun; /* Sticky read-too-much flag. */ @@ -531,7 +504,6 @@ class bytes_in : public bytes { if (offset > size) set_overrun (); pos = offset; - bit_pos = bit_val = 0; } public: @@ -573,14 +545,7 @@ class bytes_in : public bytes { unsigned u32 (); /* Read uncompressed integer. */ public: - bool b (); /* Read a bool. */ - void bflush (); /* Completed a block of bools. */ - -private: - void bfill (); /* Get the next block of bools. */ - -public: - int c (); /* Read a char. */ + int c () ATTRIBUTE_UNUSED; /* Read a char. */ int i (); /* Read a signed int. */ unsigned u (); /* Read an unsigned int. */ size_t z (); /* Read a size_t. */ @@ -589,7 +554,11 @@ class bytes_in : public bytes { const char *str (size_t * = NULL); /* Read a string. */ const void *buf (size_t); /* Read a fixed-length buffer. */ cpp_hashnode *cpp_node (); /* Read a cpp node. */ + + struct bits_in; + bits_in stream_bits (); }; +} // anon namespace /* Verify the buffer's CRC is correct. */ @@ -610,8 +579,9 @@ class elf_out; /* Byte stream writer. */ -class bytes_out : public bytes { - typedef bytes parent; +namespace { +class bytes_out : public data { + typedef data parent; public: allocator *memory; /* Obtainer of memory. */ @@ -659,11 +629,7 @@ class bytes_out : public bytes { void u32 (unsigned); /* Write uncompressed integer. */ public: - void b (bool); /* Write bool. */ - void bflush (); /* Finish block of bools. */ - -public: - void c (unsigned char); /* Write unsigned char. */ + void c (unsigned char) ATTRIBUTE_UNUSED; /* Write unsigned char. */ void i (int); /* Write signed int. */ void u (unsigned); /* Write unsigned int. */ void z (size_t s); /* Write size_t. */ @@ -681,6 +647,9 @@ class bytes_out : public bytes { void buf (const void *, size_t); /* Write fixed length buffer. */ void *buf (size_t); /* Create a writable buffer */ + struct bits_out; + bits_out stream_bits (); + public: /* Format a NUL-terminated raw string. */ void printf (const char *, ...) ATTRIBUTE_PRINTF_2; @@ -694,13 +663,145 @@ class bytes_out : public bytes { /* Instrumentation. */ static unsigned spans[4]; static unsigned lengths[4]; - static int is_set; }; +} // anon namespace + +/* Finish bit packet. Rewind the bytes not used. */ + +static unsigned +bit_flush (data& bits, uint32_t& bit_val, unsigned& bit_pos) +{ + gcc_assert (bit_pos); + unsigned bytes = (bit_pos + 7) / 8; + bits.unuse (4 - bytes); + bit_pos = 0; + bit_val = 0; + return bytes; +} + +/* Bit stream reader (RAII-enabled). Bools are packed into bytes. You + cannot mix bools and non-bools. Use bflush to flush the current stream + of bools on demand. Upon destruction bflush is called. + + When reading, we don't know how many bools we'll read in. So read + 4 bytes-worth, and then rewind when flushing if we didn't need them + all. You can't have a block of bools closer than 4 bytes to the + end of the buffer. + + Both bits_in and bits_out maintain the necessary state for bit packing, + and since these objects are locally constructed the compiler can more + easily track their state across consecutive reads/writes and optimize + away redundant buffering checks. */ + +struct bytes_in::bits_in { + bytes_in& in; + uint32_t bit_val = 0; + unsigned bit_pos = 0; + + bits_in (bytes_in& in) + : in (in) + { } + + ~bits_in () + { + bflush (); + } + + bits_in(bits_in&&) = default; + bits_in(const bits_in&) = delete; + bits_in& operator=(const bits_in&) = delete; + + /* Completed a block of bools. */ + void bflush () + { + if (bit_pos) + bit_flush (in, bit_val, bit_pos); + } + + /* Read one bit. */ + bool b () + { + if (!bit_pos) + bit_val = in.u32 (); + bool x = (bit_val >> bit_pos) & 1; + bit_pos = (bit_pos + 1) % 32; + return x; + } +}; + +/* Factory function for bits_in. */ + +bytes_in::bits_in +bytes_in::stream_bits () +{ + return bits_in (*this); +} + +/* Bit stream writer (RAII-enabled), counterpart to bits_in. */ + +struct bytes_out::bits_out { + bytes_out& out; + uint32_t bit_val = 0; + unsigned bit_pos = 0; + char is_set = -1; + + bits_out (bytes_out& out) + : out (out) + { } + + ~bits_out () + { + bflush (); + } + + bits_out(bits_out&&) = default; + bits_out(const bits_out&) = delete; + bits_out& operator=(const bits_out&) = delete; + + /* Completed a block of bools. */ + void bflush () + { + if (bit_pos) + { + out.u32 (bit_val); + out.lengths[2] += bit_flush (out, bit_val, bit_pos); + } + out.spans[2]++; + is_set = -1; + } + + /* Write one bit. + + It may be worth optimizing for most bools being zero. Some kind of + run-length encoding? */ + void b (bool x) + { + if (is_set != x) + { + is_set = x; + out.spans[x]++; + } + out.lengths[x]++; + bit_val |= unsigned (x) << bit_pos++; + if (bit_pos == 32) + { + out.u32 (bit_val); + out.lengths[2] += bit_flush (out, bit_val, bit_pos); + } + } +}; + +/* Factory function for bits_out. */ + +bytes_out::bits_out +bytes_out::stream_bits () +{ + return bits_out (*this); +} /* Instrumentation. */ unsigned bytes_out::spans[4]; unsigned bytes_out::lengths[4]; -int bytes_out::is_set = -1; /* If CRC_PTR non-null, set the CRC of the buffer. Mix the CRC into that pointed to by CRC_PTR. */ @@ -723,73 +824,6 @@ bytes_out::set_crc (unsigned *crc_ptr) } } -/* Finish a set of bools. */ - -void -bytes_out::bflush () -{ - if (bit_pos) - { - u32 (bit_val); - lengths[2] += bit_flush (); - } - spans[2]++; - is_set = -1; -} - -void -bytes_in::bflush () -{ - if (bit_pos) - bit_flush (); -} - -/* When reading, we don't know how many bools we'll read in. So read - 4 bytes-worth, and then rewind when flushing if we didn't need them - all. You can't have a block of bools closer than 4 bytes to the - end of the buffer. */ - -void -bytes_in::bfill () -{ - bit_val = u32 (); -} - -/* Bools are packed into bytes. You cannot mix bools and non-bools. - You must call bflush before emitting another type. So batch your - bools. - - It may be worth optimizing for most bools being zero. Some kind of - run-length encoding? */ - -void -bytes_out::b (bool x) -{ - if (is_set != x) - { - is_set = x; - spans[x]++; - } - lengths[x]++; - bit_val |= unsigned (x) << bit_pos++; - if (bit_pos == 32) - { - u32 (bit_val); - lengths[2] += bit_flush (); - } -} - -bool -bytes_in::b () -{ - if (!bit_pos) - bfill (); - bool v = (bit_val >> bit_pos++) & 1; - if (bit_pos == 32) - bit_flush (); - return v; -} - /* Exactly 4 bytes. Used internally for bool packing and a few other places. We can't simply use uint32_t because (a) alignment and (b) we need little-endian for the bool streaming rewinding to make @@ -2758,6 +2792,7 @@ enum merge_kind MK_enum, /* Found by CTX, & 1stMemberNAME. */ MK_keyed, /* Found by key & index. */ + MK_local_type, /* Found by CTX, index. */ MK_friend_spec, /* Like named, but has a tmpl & args too. */ MK_local_friend, /* Found by CTX, index. */ @@ -2784,7 +2819,7 @@ static char const *const merge_kind_name[MK_hwm] = "unique", "named", "field", "vtable", /* 0...3 */ "asbase", "partial", "enum", "attached", /* 4...7 */ - "friend spec", "local friend", NULL, NULL, /* 8...11 */ + "local type", "friend spec", "local friend", NULL, /* 8...11 */ NULL, NULL, NULL, NULL, "type spec", "type tmpl spec", /* 16,17 type (template). */ @@ -2830,7 +2865,12 @@ struct post_process_data { /* Tree stream reader. Note that reading a stream doesn't mark the read trees with TREE_VISITED. Thus it's quite safe to have multiple concurrent readers. Which is good, because lazy - loading. */ + loading. + + It's important that trees_in/out have internal linkage so that the + compiler knows core_bools, lang_type_bools and lang_decl_bools have + only a single caller (tree_node_bools) and inlines them appropriately. */ +namespace { class trees_in : public bytes_in { typedef bytes_in parent; @@ -2855,15 +2895,15 @@ class trees_in : public bytes_in { public: /* Needed for binfo writing */ - bool core_bools (tree); + bool core_bools (tree, bits_in&); private: /* Stream tree_core, lang_decl_specific and lang_type_specific bits. */ bool core_vals (tree); - bool lang_type_bools (tree); + bool lang_type_bools (tree, bits_in&); bool lang_type_vals (tree); - bool lang_decl_bools (tree); + bool lang_decl_bools (tree, bits_in&); bool lang_decl_vals (tree); bool lang_vals (tree); bool tree_node_bools (tree); @@ -2913,6 +2953,7 @@ class trees_in : public bytes_in { unsigned binfo_mergeable (tree *); private: + tree key_local_type (const merge_key&, tree, tree); uintptr_t *find_duplicate (tree existing); void register_duplicate (tree decl, tree existing); /* Mark as an already diagnosed bad duplicate. */ @@ -2950,6 +2991,7 @@ class trees_in : public bytes_in { private: void assert_definition (tree, bool installing); }; +} // anon namespace trees_in::trees_in (module_state *state) :parent (), state (state), unused (0) @@ -2967,6 +3009,7 @@ trees_in::~trees_in () } /* Tree stream writer. */ +namespace { class trees_out : public bytes_out { typedef bytes_out parent; @@ -3028,11 +3071,11 @@ class trees_out : public bytes_out { } private: - void core_bools (tree); + void core_bools (tree, bits_out&); void core_vals (tree); - void lang_type_bools (tree); + void lang_type_bools (tree, bits_out&); void lang_type_vals (tree); - void lang_decl_bools (tree); + void lang_decl_bools (tree, bits_out&); void lang_decl_vals (tree); void lang_vals (tree); void tree_node_bools (tree); @@ -3071,6 +3114,7 @@ class trees_out : public bytes_out { void binfo_mergeable (tree binfo); private: + void key_local_type (merge_key&, tree, tree); bool decl_node (tree, walk_kind ref); void type_node (tree); void tree_value (tree); @@ -3111,6 +3155,7 @@ class trees_out : public bytes_out { static unsigned back_ref_count; static unsigned null_count; }; +} // anon namespace /* Instrumentation counters. */ unsigned trees_out::tree_val_count; @@ -4937,18 +4982,7 @@ void trees_out::chained_decls (tree decls) { for (; decls; decls = DECL_CHAIN (decls)) - { - if (VAR_OR_FUNCTION_DECL_P (decls) - && DECL_LOCAL_DECL_P (decls)) - { - /* Make sure this is the first encounter, and mark for - walk-by-value. */ - gcc_checking_assert (!TREE_VISITED (decls) - && !DECL_TEMPLATE_INFO (decls)); - mark_by_value (decls); - } - tree_node (decls); - } + tree_node (decls); tree_node (NULL_TREE); } @@ -5173,7 +5207,6 @@ trees_out::start (tree t, bool code_streamed) break; case FIXED_CST: - case POLY_INT_CST: gcc_unreachable (); /* Not supported in C++. */ break; @@ -5259,7 +5292,6 @@ trees_in::start (unsigned code) case FIXED_CST: case IDENTIFIER_NODE: - case POLY_INT_CST: case SSA_NAME: case TARGET_MEM_REF: case TRANSLATION_UNIT_DECL: @@ -5277,9 +5309,13 @@ trees_in::start (unsigned code) /* Read & write the core boolean flags. */ void -trees_out::core_bools (tree t) +trees_out::core_bools (tree t, bits_out& bits) { -#define WB(X) (b (X)) +#define WB(X) (bits.b (X)) +/* Stream X if COND holds, and if !COND stream a dummy value so that the + overall number of bits streamed is independent of the runtime value + of COND, which allows the compiler to better optimize this function. */ +#define WB_IF(COND, X) WB ((COND) ? (X) : false) tree_code code = TREE_CODE (t); WB (t->base.side_effects_flag); @@ -5296,9 +5332,8 @@ trees_out::core_bools (tree t) decls they use. */ WB (t->base.nothrow_flag); WB (t->base.static_flag); - if (TREE_CODE_CLASS (code) != tcc_type) - /* This is TYPE_CACHED_VALUES_P for types. */ - WB (t->base.public_flag); + /* This is TYPE_CACHED_VALUES_P for types. */ + WB_IF (TREE_CODE_CLASS (code) != tcc_type, t->base.public_flag); WB (t->base.private_flag); WB (t->base.protected_flag); WB (t->base.deprecated_flag); @@ -5312,7 +5347,7 @@ trees_out::core_bools (tree t) case TARGET_MEM_REF: case TREE_VEC: /* These use different base.u fields. */ - break; + return; default: WB (t->base.u.bits.lang_flag_0); @@ -5345,7 +5380,7 @@ trees_out::core_bools (tree t) break; } - if (CODE_CONTAINS_STRUCT (code, TS_TYPE_COMMON)) + if (TREE_CODE_CLASS (code) == tcc_type) { WB (t->type_common.no_force_blk_flag); WB (t->type_common.needs_constructing_flag); @@ -5362,6 +5397,9 @@ trees_out::core_bools (tree t) WB (t->type_common.typeless_storage); } + if (TREE_CODE_CLASS (code) != tcc_declaration) + return; + if (CODE_CONTAINS_STRUCT (code, TS_DECL_COMMON)) { WB (t->decl_common.nonlocal_flag); @@ -5435,6 +5473,8 @@ trees_out::core_bools (tree t) WB (t->decl_common.decl_nonshareable_flag); WB (t->decl_common.decl_not_flexarray); } + else + return; if (CODE_CONTAINS_STRUCT (code, TS_DECL_WITH_VIS)) { @@ -5455,6 +5495,8 @@ trees_out::core_bools (tree t) WB (t->decl_with_vis.final); WB (t->decl_with_vis.regdecl_flag); } + else + return; if (CODE_CONTAINS_STRUCT (code, TS_FUNCTION_DECL)) { @@ -5481,13 +5523,17 @@ trees_out::core_bools (tree t) WB ((kind >> 0) & 1); WB ((kind >> 1) & 1); } +#undef WB_IF #undef WB } bool -trees_in::core_bools (tree t) +trees_in::core_bools (tree t, bits_in& bits) { -#define RB(X) ((X) = b ()) +#define RB(X) ((X) = bits.b ()) +/* See the comment for WB_IF in trees_out::core_bools. */ +#define RB_IF(COND, X) ((COND) ? RB (X) : bits.b ()) + tree_code code = TREE_CODE (t); RB (t->base.side_effects_flag); @@ -5501,8 +5547,7 @@ trees_in::core_bools (tree t) /* base.used_flag is not streamed. */ RB (t->base.nothrow_flag); RB (t->base.static_flag); - if (TREE_CODE_CLASS (code) != tcc_type) - RB (t->base.public_flag); + RB_IF (TREE_CODE_CLASS (code) != tcc_type, t->base.public_flag); RB (t->base.private_flag); RB (t->base.protected_flag); RB (t->base.deprecated_flag); @@ -5516,7 +5561,7 @@ trees_in::core_bools (tree t) case TARGET_MEM_REF: case TREE_VEC: /* These use different base.u fields. */ - break; + goto done; default: RB (t->base.u.bits.lang_flag_0); @@ -5536,7 +5581,7 @@ trees_in::core_bools (tree t) break; } - if (CODE_CONTAINS_STRUCT (code, TS_TYPE_COMMON)) + if (TREE_CODE_CLASS (code) == tcc_type) { RB (t->type_common.no_force_blk_flag); RB (t->type_common.needs_constructing_flag); @@ -5553,6 +5598,9 @@ trees_in::core_bools (tree t) RB (t->type_common.typeless_storage); } + if (TREE_CODE_CLASS (code) != tcc_declaration) + goto done; + if (CODE_CONTAINS_STRUCT (code, TS_DECL_COMMON)) { RB (t->decl_common.nonlocal_flag); @@ -5581,6 +5629,8 @@ trees_in::core_bools (tree t) RB (t->decl_common.decl_nonshareable_flag); RB (t->decl_common.decl_not_flexarray); } + else + goto done; if (CODE_CONTAINS_STRUCT (code, TS_DECL_WITH_VIS)) { @@ -5601,6 +5651,8 @@ trees_in::core_bools (tree t) RB (t->decl_with_vis.final); RB (t->decl_with_vis.regdecl_flag); } + else + goto done; if (CODE_CONTAINS_STRUCT (code, TS_FUNCTION_DECL)) { @@ -5624,20 +5676,23 @@ trees_in::core_bools (tree t) /* decl_type is a (misnamed) 2 bit discriminator. */ unsigned kind = 0; - kind |= unsigned (b ()) << 0; - kind |= unsigned (b ()) << 1; + kind |= unsigned (bits.b ()) << 0; + kind |= unsigned (bits.b ()) << 1; t->function_decl.decl_type = function_decl_type (kind); } +#undef RB_IF #undef RB +done: return !get_overrun (); } void -trees_out::lang_decl_bools (tree t) +trees_out::lang_decl_bools (tree t, bits_out& bits) { -#define WB(X) (b (X)) +#define WB(X) (bits.b (X)) const struct lang_decl *lang = DECL_LANG_SPECIFIC (t); + bits.bflush (); WB (lang->u.base.language == lang_cplusplus); WB ((lang->u.base.use_template >> 0) & 1); WB ((lang->u.base.use_template >> 1) & 1); @@ -5710,15 +5765,16 @@ trees_out::lang_decl_bools (tree t) } bool -trees_in::lang_decl_bools (tree t) +trees_in::lang_decl_bools (tree t, bits_in& bits) { -#define RB(X) ((X) = b ()) +#define RB(X) ((X) = bits.b ()) struct lang_decl *lang = DECL_LANG_SPECIFIC (t); - lang->u.base.language = b () ? lang_cplusplus : lang_c; + bits.bflush (); + lang->u.base.language = bits.b () ? lang_cplusplus : lang_c; unsigned v; - v = b () << 0; - v |= b () << 1; + v = bits.b () << 0; + v |= bits.b () << 1; lang->u.base.use_template = v; /* lang->u.base.not_really_extern is not streamed. */ RB (lang->u.base.initialized_in_class); @@ -5781,11 +5837,12 @@ trees_in::lang_decl_bools (tree t) } void -trees_out::lang_type_bools (tree t) +trees_out::lang_type_bools (tree t, bits_out& bits) { -#define WB(X) (b (X)) +#define WB(X) (bits.b (X)) const struct lang_type *lang = TYPE_LANG_SPECIFIC (t); + bits.bflush (); WB (lang->has_type_conversion); WB (lang->has_copy_ctor); WB (lang->has_default_ctor); @@ -5847,11 +5904,12 @@ trees_out::lang_type_bools (tree t) } bool -trees_in::lang_type_bools (tree t) +trees_in::lang_type_bools (tree t, bits_in& bits) { -#define RB(X) ((X) = b ()) +#define RB(X) ((X) = bits.b ()) struct lang_type *lang = TYPE_LANG_SPECIFIC (t); + bits.bflush (); RB (lang->has_type_conversion); RB (lang->has_copy_ctor); RB (lang->has_default_ctor); @@ -5859,8 +5917,8 @@ trees_in::lang_type_bools (tree t) RB (lang->ref_needs_init); RB (lang->has_const_copy_assign); unsigned v; - v = b () << 0; - v |= b () << 1; + v = bits.b () << 0; + v |= bits.b () << 1; lang->use_template = v; RB (lang->has_mutable); @@ -5872,8 +5930,8 @@ trees_in::lang_type_bools (tree t) RB (lang->has_new); RB (lang->has_array_new); - v = b () << 0; - v |= b () << 1; + v = bits.b () << 0; + v |= bits.b () << 1; lang->gets_delete = v; RB (lang->interface_only); RB (lang->interface_unknown); @@ -6106,7 +6164,10 @@ trees_out::core_vals (tree t) break; case POLY_INT_CST: - gcc_unreachable (); /* Not supported in C++. */ + if (streaming_p ()) + for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++) + WT (POLY_INT_CST_COEFF (t, ix)); + break; case REAL_CST: if (streaming_p ()) @@ -6197,7 +6258,21 @@ trees_out::core_vals (tree t) /* DECL_LOCAL_DECL_P decls are first encountered here and streamed by value. */ - chained_decls (t->block.vars); + for (tree decls = t->block.vars; decls; decls = DECL_CHAIN (decls)) + { + if (VAR_OR_FUNCTION_DECL_P (decls) + && DECL_LOCAL_DECL_P (decls)) + { + /* Make sure this is the first encounter, and mark for + walk-by-value. */ + gcc_checking_assert (!TREE_VISITED (decls) + && !DECL_TEMPLATE_INFO (decls)); + mark_by_value (decls); + } + tree_node (decls); + } + tree_node (NULL_TREE); + /* nonlocalized_vars is a middle-end thing. */ WT (t->block.subblocks); WT (t->block.supercontext); @@ -6311,6 +6386,7 @@ trees_out::core_vals (tree t) WT (((lang_tree_node *)t)->lambda_expression.this_capture); WT (((lang_tree_node *)t)->lambda_expression.extra_scope); WT (((lang_tree_node *)t)->lambda_expression.regen_info); + WT (((lang_tree_node *)t)->lambda_expression.extra_args); /* pending_proxies is a parse-time thing. */ gcc_assert (!((lang_tree_node *)t)->lambda_expression.pending_proxies); if (state) @@ -6615,8 +6691,9 @@ trees_in::core_vals (tree t) break; case POLY_INT_CST: - /* Not suported in C++. */ - return false; + for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++) + RT (POLY_INT_CST_COEFF (t, ix)); + break; case REAL_CST: if (const void *bytes = buf (sizeof (real_value))) @@ -6709,7 +6786,29 @@ trees_in::core_vals (tree t) case BLOCK: t->block.locus = state->read_location (*this); t->block.end_locus = state->read_location (*this); - t->block.vars = chained_decls (); + + for (tree *chain = &t->block.vars;;) + if (tree decl = tree_node ()) + { + /* For a deduplicated local type or enumerator, chain the + duplicate decl instead of the canonical in-TU decl. Seeing + a duplicate here means the containing function whose body + we're streaming in is a duplicate too, so we'll end up + discarding this BLOCK (and the rest of the duplicate function + body) anyway. */ + decl = maybe_duplicate (decl); + + if (!DECL_P (decl) || DECL_CHAIN (decl)) + { + set_overrun (); + break; + } + *chain = decl; + chain = &DECL_CHAIN (decl); + } + else + break; + /* nonlocalized_vars is middle-end. */ RT (t->block.subblocks); RT (t->block.supercontext); @@ -6812,6 +6911,7 @@ trees_in::core_vals (tree t) RT (((lang_tree_node *)t)->lambda_expression.this_capture); RT (((lang_tree_node *)t)->lambda_expression.extra_scope); RT (((lang_tree_node *)t)->lambda_expression.regen_info); + RT (((lang_tree_node *)t)->lambda_expression.extra_args); /* lambda_expression.pending_proxies is NULL */ ((lang_tree_node *)t)->lambda_expression.locus = state->read_location (*this); @@ -7102,18 +7202,19 @@ trees_out::tree_node_bools (tree t) gcc_checking_assert (TREE_CODE (t) != NAMESPACE_DECL || DECL_NAMESPACE_ALIAS (t)); - core_bools (t); + bits_out bits = stream_bits (); + core_bools (t, bits); switch (TREE_CODE_CLASS (TREE_CODE (t))) { case tcc_declaration: { bool specific = DECL_LANG_SPECIFIC (t) != NULL; - b (specific); + bits.b (specific); if (specific && VAR_P (t)) - b (DECL_DECOMPOSITION_P (t)); + bits.b (DECL_DECOMPOSITION_P (t)); if (specific) - lang_decl_bools (t); + lang_decl_bools (t, bits); } break; @@ -7124,9 +7225,9 @@ trees_out::tree_node_bools (tree t) gcc_assert (TYPE_LANG_SPECIFIC (t) == TYPE_LANG_SPECIFIC (TYPE_MAIN_VARIANT (t))); - b (specific); + bits.b (specific); if (specific) - lang_type_bools (t); + lang_type_bools (t, bits); } break; @@ -7134,34 +7235,35 @@ trees_out::tree_node_bools (tree t) break; } - bflush (); + bits.bflush (); } bool trees_in::tree_node_bools (tree t) { - bool ok = core_bools (t); + bits_in bits = stream_bits (); + bool ok = core_bools (t, bits); if (ok) switch (TREE_CODE_CLASS (TREE_CODE (t))) { case tcc_declaration: - if (b ()) + if (bits.b ()) { - bool decomp = VAR_P (t) && b (); + bool decomp = VAR_P (t) && bits.b (); ok = maybe_add_lang_decl_raw (t, decomp); if (ok) - ok = lang_decl_bools (t); - } + ok = lang_decl_bools (t, bits); + } break; case tcc_type: - if (b ()) + if (bits.b ()) { ok = maybe_add_lang_type_raw (t); if (ok) - ok = lang_type_bools (t); + ok = lang_type_bools (t, bits); } break; @@ -7169,7 +7271,7 @@ trees_in::tree_node_bools (tree t) break; } - bflush (); + bits.bflush (); if (!ok || get_overrun ()) return false; @@ -7647,6 +7749,19 @@ trees_in::install_entity (tree decl) gcc_checking_assert (!existed); slot = ident; } + else if (state->is_partition ()) + { + /* The decl is already in the entity map, but we see it again now from a + partition: we want to overwrite if the original decl wasn't also from + a (possibly different) partition. Otherwise, for things like template + instantiations, make_dependency might not realise that this is also + provided from a partition and should be considered part of this module + (and thus always emitted into the primary interface's CMI). */ + unsigned *slot = entity_map->get (DECL_UID (decl)); + module_state *imp = import_entity_module (*slot); + if (!imp->is_partition ()) + *slot = ident; + } return true; } @@ -7692,11 +7807,11 @@ trees_out::decl_value (tree decl, depset *dep) if (mk != MK_unique) { + bits_out bits = stream_bits (); if (!(mk & MK_template_mask) && !state->is_header ()) { /* Tell the importer whether this is a global module entity, - or a module entity. This bool merges into the next block - of bools. Sneaky. */ + or a module entity. */ tree o = get_originating_module_decl (decl); bool is_attached = false; @@ -7705,9 +7820,9 @@ trees_out::decl_value (tree decl, depset *dep) && DECL_MODULE_ATTACH_P (not_tmpl)) is_attached = true; - b (is_attached); + bits.b (is_attached); } - b (dep && dep->has_defn ()); + bits.b (dep && dep->has_defn ()); } tree_node_bools (decl); } @@ -7976,11 +8091,11 @@ trees_in::decl_value () { if (mk != MK_unique) { + bits_in bits = stream_bits (); if (!(mk & MK_template_mask) && !state->is_header ()) - /* See note in trees_out about where this bool is sequenced. */ - is_attached = b (); + is_attached = bits.b (); - has_defn = b (); + has_defn = bits.b (); } if (!tree_node_bools (decl)) @@ -8300,6 +8415,14 @@ trees_in::decl_value () if (state->is_header () && decl_tls_wrapper_p (decl)) note_vague_linkage_fn (decl); + + /* Setup aliases for the declaration. */ + if (tree alias = lookup_attribute ("alias", DECL_ATTRIBUTES (decl))) + { + alias = TREE_VALUE (TREE_VALUE (alias)); + alias = get_identifier (TREE_STRING_POINTER (alias)); + assemble_alias (decl, alias); + } } else { @@ -9068,8 +9191,8 @@ trees_out::type_node (tree type) if (streaming_p ()) { poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (type); - /* to_constant asserts that only coeff[0] is of interest. */ - wu (static_cast (nunits.to_constant ())); + for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++) + wu (nunits.coeffs[ix]); } break; } @@ -9630,9 +9753,11 @@ trees_in::tree_node (bool is_use) case VECTOR_TYPE: { - unsigned HOST_WIDE_INT nunits = wu (); + poly_uint64 nunits; + for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++) + nunits.coeffs[ix] = wu (); if (!get_overrun ()) - res = build_vector_type (res, static_cast (nunits)); + res = build_vector_type (res, nunits); } break; } @@ -10308,6 +10433,88 @@ trees_in::fn_parms_fini (int tag, tree fn, tree existing, bool is_defn) } } +/* Encode into KEY the position of the local type (class or enum) + declaration DECL within FN. The position is encoded as the + index of the innermost BLOCK (numbered in BFS order) along with + the index within its BLOCK_VARS list. */ + +void +trees_out::key_local_type (merge_key& key, tree decl, tree fn) +{ + auto_vec blocks; + blocks.quick_push (DECL_INITIAL (fn)); + unsigned block_ix = 0; + while (block_ix != blocks.length ()) + { + tree block = blocks[block_ix]; + unsigned decl_ix = 0; + for (tree var = BLOCK_VARS (block); var; var = DECL_CHAIN (var)) + { + if (TREE_CODE (var) != TYPE_DECL) + continue; + if (var == decl) + { + key.index = (block_ix << 10) | decl_ix; + return; + } + ++decl_ix; + } + for (tree sub = BLOCK_SUBBLOCKS (block); sub; sub = BLOCK_CHAIN (sub)) + blocks.safe_push (sub); + ++block_ix; + } + + /* Not-found value. */ + key.index = 1023; +} + +/* Look up the local type corresponding at the position encoded by + KEY within FN and named NAME. */ + +tree +trees_in::key_local_type (const merge_key& key, tree fn, tree name) +{ + if (!DECL_INITIAL (fn)) + return NULL_TREE; + + const unsigned block_pos = key.index >> 10; + const unsigned decl_pos = key.index & 1023; + + if (decl_pos == 1023) + return NULL_TREE; + + auto_vec blocks; + blocks.quick_push (DECL_INITIAL (fn)); + unsigned block_ix = 0; + while (block_ix != blocks.length ()) + { + tree block = blocks[block_ix]; + if (block_ix == block_pos) + { + unsigned decl_ix = 0; + for (tree var = BLOCK_VARS (block); var; var = DECL_CHAIN (var)) + { + if (TREE_CODE (var) != TYPE_DECL) + continue; + /* Prefer using the identifier as the key for more robustness + to ODR violations, except for anonymous types since their + compiler-generated identifiers aren't stable. */ + if (IDENTIFIER_ANON_P (name) + ? decl_ix == decl_pos + : DECL_NAME (var) == name) + return var; + ++decl_ix; + } + return NULL_TREE; + } + for (tree sub = BLOCK_SUBBLOCKS (block); sub; sub = BLOCK_CHAIN (sub)) + blocks.safe_push (sub); + ++block_ix; + } + + return NULL_TREE; +} + /* DEP is the depset of some decl we're streaming by value. Determine the merging behaviour. */ @@ -10427,17 +10634,10 @@ trees_out::get_merge_kind (tree decl, depset *dep) gcc_unreachable (); case FUNCTION_DECL: - // FIXME: This can occur for (a) voldemorty TYPE_DECLS - // (which are returned from a function), or (b) - // block-scope class definitions in template functions. - // These are as unique as the containing function. While - // on read-back we can discover if the CTX was a - // duplicate, we don't have a mechanism to get from the - // existing CTX to the existing version of this decl. gcc_checking_assert (DECL_IMPLICIT_TYPEDEF_P (STRIP_TEMPLATE (decl))); - mk = MK_unique; + mk = MK_local_type; break; case RECORD_TYPE: @@ -10739,6 +10939,10 @@ trees_out::key_mergeable (int tag, merge_kind mk, tree decl, tree inner, } break; + case MK_local_type: + key_local_type (key, STRIP_TEMPLATE (decl), container); + break; + case MK_enum: { /* Anonymous enums are located by their first identifier, @@ -11095,11 +11299,10 @@ trees_in::key_mergeable (int tag, merge_kind mk, tree decl, tree inner, break; case FUNCTION_DECL: - // FIXME: What about a voldemort? how do we find what it - // duplicates? Do we have to number vmorts relative to - // their containing function? But how would that work - // when matching an in-TU declaration? - kind = "unique"; + gcc_checking_assert (mk == MK_local_type); + existing = key_local_type (key, container, name); + if (existing && inner != decl) + existing = TYPE_TI_TEMPLATE (TREE_TYPE (existing)); break; case TYPE_DECL: @@ -11352,6 +11555,11 @@ trees_in::is_matching_decl (tree existing, tree decl, bool is_typedef) /* Just like duplicate_decls, presum the user knows what they're doing in overriding a builtin. */ TREE_TYPE (existing) = TREE_TYPE (decl); + else if (decl_function_context (decl)) + /* The type of a mergeable local entity (such as a function scope + capturing lambda's closure type fields) can depend on an + unmergeable local entity (such as a local variable), so type + equality isn't feasible in general for local entities. */; else { // FIXME:QOI Might be template specialization from a module, @@ -11601,6 +11809,13 @@ trees_in::register_duplicate (tree decl, tree existing) uintptr_t &slot = duplicates->get_or_insert (existing, &existed); gcc_checking_assert (!existed); slot = reinterpret_cast (decl); + + if (TREE_CODE (decl) == TEMPLATE_DECL) + /* Also register the DECL_TEMPLATE_RESULT as a duplicate so + that passing decl's _RESULT to maybe_duplicate naturally + gives us existing's _RESULT back. */ + register_duplicate (DECL_TEMPLATE_RESULT (decl), + DECL_TEMPLATE_RESULT (existing)); } /* We've read a definition of MAYBE_EXISTING. If not a duplicate, @@ -12875,7 +13090,7 @@ depset::hash::add_binding_entity (tree decl, WMB_Flags flags, void *data_) inner = DECL_TEMPLATE_RESULT (inner); if ((!DECL_LANG_SPECIFIC (inner) || !DECL_MODULE_PURVIEW_P (inner)) - && !(flags & (WMB_Using | WMB_Export))) + && !((flags & WMB_Using) && (flags & WMB_Export))) /* Ignore global module fragment entities unless explicitly exported with a using declaration. */ return false; @@ -13624,9 +13839,9 @@ depset_cmp (const void *a_, const void *b_) { /* Both are bindings. Order by identifier hash. */ gcc_checking_assert (a->get_name () != b->get_name ()); - return (IDENTIFIER_HASH_VALUE (a->get_name ()) - < IDENTIFIER_HASH_VALUE (b->get_name ()) - ? -1 : +1); + hashval_t ah = IDENTIFIER_HASH_VALUE (a->get_name ()); + hashval_t bh = IDENTIFIER_HASH_VALUE (b->get_name ()); + return (ah == bh ? 0 : ah < bh ? -1 : +1); } /* They are the same decl. This can happen with two using decls @@ -16657,10 +16872,11 @@ module_state::write_define (bytes_out &sec, const cpp_macro *macro) { sec.u (macro->count); - sec.b (macro->fun_like); - sec.b (macro->variadic); - sec.b (macro->syshdr); - sec.bflush (); + bytes_out::bits_out bits = sec.stream_bits (); + bits.b (macro->fun_like); + bits.b (macro->variadic); + bits.b (macro->syshdr); + bits.bflush (); write_location (sec, macro->line); if (macro->fun_like) @@ -16755,10 +16971,11 @@ module_state::read_define (bytes_in &sec, cpp_reader *reader) const macro->kind = cmk_macro; macro->imported_p = true; - macro->fun_like = sec.b (); - macro->variadic = sec.b (); - macro->syshdr = sec.b (); - sec.bflush (); + bytes_in::bits_in bits = sec.stream_bits (); + macro->fun_like = bits.b (); + macro->variadic = bits.b (); + macro->syshdr = bits.b (); + bits.bflush (); macro->line = read_location (sec); @@ -20151,7 +20368,7 @@ init_modules (cpp_reader *reader) some global trees are lazily created and we don't want that to mess with our syndrome of fixed trees. */ unsigned crc = 0; - vec_alloc (fixed_trees, 200); + vec_alloc (fixed_trees, 250); dump () && dump ("+Creating globals"); /* Insert the TRANSLATION_UNIT_DECL. */ @@ -20169,6 +20386,14 @@ init_modules (cpp_reader *reader) dump () && dump ("+%u", v); } } + /* OS- and machine-specific types are dynamically registered at + runtime, so cannot be part of global_tree_arys. */ + registered_builtin_types && dump ("") && dump ("+\tB:"); + for (tree t = registered_builtin_types; t; t = TREE_CHAIN (t)) + { + unsigned v = maybe_add_global (TREE_VALUE (t), crc); + dump () && dump ("+%u", v); + } global_crc = crc32_unsigned (crc, fixed_trees->length ()); dump ("") && dump ("Created %u unique globals, crc=%x", fixed_trees->length (), global_crc); diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc index dce4caf89819..7af7f00e34c2 100644 --- a/gcc/cp/name-lookup.cc +++ b/gcc/cp/name-lookup.cc @@ -8664,10 +8664,13 @@ maybe_push_to_top_level (tree d) { /* Push if D isn't function-local, or is a lambda function, for which name resolution is already done. */ - bool push_to_top - = !(current_function_decl - && !LAMBDA_FUNCTION_P (d) - && decl_function_context (d) == current_function_decl); + const bool push_to_top + = (LAMBDA_FUNCTION_P (d) + || (TREE_CODE (d) == TYPE_DECL + && TREE_TYPE (d) + && LAMBDA_TYPE_P (TREE_TYPE (d))) + || !current_function_decl + || !decl_function_context (d)); if (push_to_top) push_to_top_level (); diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index bc3aa9dd6adb..50d3ad35b611 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -38544,7 +38544,11 @@ cp_parser_omp_var_list (cp_parser *parser, enum omp_clause_code kind, tree list, OpenACC 2.6: no_create ( variable-list ) attach ( variable-list ) - detach ( variable-list ) */ + detach ( variable-list ) + + OpenACC 2.7: + copyin (readonly : variable-list ) + */ static tree cp_parser_oacc_data_clause (cp_parser *parser, pragma_omp_clause c_kind, @@ -38597,11 +38601,34 @@ cp_parser_oacc_data_clause (cp_parser *parser, pragma_omp_clause c_kind, default: gcc_unreachable (); } - tree nl, c; - nl = cp_parser_omp_var_list (parser, OMP_CLAUSE_MAP, list, false); - for (c = nl; c != list; c = OMP_CLAUSE_CHAIN (c)) - OMP_CLAUSE_SET_MAP_KIND (c, kind); + tree nl = list; + bool readonly = false; + if (cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) + { + /* Turn on readonly modifier parsing for copyin clause. */ + if (c_kind == PRAGMA_OACC_CLAUSE_COPYIN) + { + cp_token *token = cp_lexer_peek_token (parser->lexer); + if (token->type == CPP_NAME + && !strcmp (IDENTIFIER_POINTER (token->u.value), "readonly") + && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_COLON) + { + cp_lexer_consume_token (parser->lexer); + cp_lexer_consume_token (parser->lexer); + readonly = true; + } + } + nl = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_MAP, list, NULL, + false); + } + + for (tree c = nl; c != list; c = OMP_CLAUSE_CHAIN (c)) + { + OMP_CLAUSE_SET_MAP_KIND (c, kind); + if (readonly) + OMP_CLAUSE_MAP_READONLY (c) = 1; + } return nl; } @@ -45246,7 +45273,7 @@ substitute_in_tree (tree *context, tree orig, tree repl, bool flatten) } /* Walker to patch up the BLOCK_NODE hierarchy after the above surgery. - *DP is is the parent block. */ + *DP is the parent block. */ static tree fixup_blocks_walker (tree *tp, int *walk_subtrees, void *dp) @@ -47178,6 +47205,9 @@ cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok, /* OpenACC 2.0: # pragma acc cache (variable-list) new-line + + OpenACC 2.7: + # pragma acc cache (readonly: variable-list) new-line */ static tree @@ -47187,9 +47217,28 @@ cp_parser_oacc_cache (cp_parser *parser, cp_token *pragma_tok) clauses. */ auto_suppress_location_wrappers sentinel; - tree stmt, clauses; + tree stmt, clauses = NULL_TREE; + bool readonly = false; + + if (cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) + { + cp_token *token = cp_lexer_peek_token (parser->lexer); + if (token->type == CPP_NAME + && !strcmp (IDENTIFIER_POINTER (token->u.value), "readonly") + && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_COLON) + { + cp_lexer_consume_token (parser->lexer); + cp_lexer_consume_token (parser->lexer); + readonly = true; + } + clauses = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE__CACHE_, + NULL, NULL); + } + + if (readonly) + for (tree c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) + OMP_CLAUSE__CACHE__READONLY (c) = 1; - clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE__CACHE_, NULL_TREE); clauses = finish_omp_clauses (clauses, C_ORT_ACC); cp_parser_require_pragma_eol (parser, cp_lexer_peek_token (parser->lexer)); diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 8cf0d5b7a8d8..3b2106dd3f65 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -3855,7 +3855,28 @@ has_extra_args_mechanism_p (const_tree t) return (PACK_EXPANSION_P (t) /* PACK_EXPANSION_EXTRA_ARGS */ || TREE_CODE (t) == REQUIRES_EXPR /* REQUIRES_EXPR_EXTRA_ARGS */ || (TREE_CODE (t) == IF_STMT - && IF_STMT_CONSTEXPR_P (t))); /* IF_STMT_EXTRA_ARGS */ + && IF_STMT_CONSTEXPR_P (t)) /* IF_STMT_EXTRA_ARGS */ + || TREE_CODE (t) == LAMBDA_EXPR); /* LAMBDA_EXPR_EXTRA_ARGS */ +} + +/* Return *_EXTRA_ARGS of the given supported tree T. */ + +static tree& +tree_extra_args (tree t) +{ + gcc_checking_assert (has_extra_args_mechanism_p (t)); + + if (PACK_EXPANSION_P (t)) + return PACK_EXPANSION_EXTRA_ARGS (t); + else if (TREE_CODE (t) == REQUIRES_EXPR) + return REQUIRES_EXPR_EXTRA_ARGS (t); + else if (TREE_CODE (t) == IF_STMT + && IF_STMT_CONSTEXPR_P (t)) + return IF_STMT_EXTRA_ARGS (t); + else if (TREE_CODE (t) == LAMBDA_EXPR) + return LAMBDA_EXPR_EXTRA_ARGS (t); + + gcc_unreachable (); } /* Structure used to track the progress of find_parameter_packs_r. */ @@ -11032,7 +11053,8 @@ find_template_parameter_info::found (tree parm) { if (TREE_CODE (parm) == TREE_LIST) parm = TREE_VALUE (parm); - if (TREE_CODE (parm) == TYPE_DECL) + if (TREE_CODE (parm) == TYPE_DECL + || TREE_CODE (parm) == TEMPLATE_DECL) parm = TREE_TYPE (parm); else parm = DECL_INITIAL (parm); @@ -13290,6 +13312,16 @@ extract_locals_r (tree *tp, int *walk_subtrees, void *data_) /* Remember local typedefs (85214). */ tp = &TYPE_NAME (*tp); + if (has_extra_args_mechanism_p (*tp)) + /* Assert *_EXTRA_ARGS is empty, because we don't want to walk it and + potentially see a previously captured local in an evaluated context + that's really only used in an unevaluated context (PR114303). This + means callers of build_extra_args need to clear *_EXTRA_ARGS of the + outermost tree. Nested *_EXTRA_ARGS should naturally be empty since + the outermost (extra-args) tree will intercept any substitution before + a nested tree can. */ + gcc_checking_assert (tree_extra_args (*tp) == NULL_TREE); + if (TREE_CODE (*tp) == DECL_EXPR) { tree decl = DECL_EXPR_DECL (*tp); @@ -18715,10 +18747,11 @@ tsubst_stmt (tree t, tree args, tsubst_flags_t complain, tree in_decl) of the constexpr if is still dependent. Don't substitute into the branches now, just remember the template arguments. */ do_poplevel (IF_SCOPE (stmt)); + IF_SCOPE (stmt) = NULL_TREE; IF_COND (stmt) = IF_COND (t); THEN_CLAUSE (stmt) = THEN_CLAUSE (t); ELSE_CLAUSE (stmt) = ELSE_CLAUSE (t); - IF_STMT_EXTRA_ARGS (stmt) = build_extra_args (t, args, complain); + IF_STMT_EXTRA_ARGS (stmt) = build_extra_args (stmt, args, complain); add_stmt (stmt); break; } @@ -19432,6 +19465,23 @@ tsubst_stmt (tree t, tree args, tsubst_flags_t complain, tree in_decl) case PREDICT_EXPR: RETURN (add_stmt (copy_node (t))); + case ANNOTATE_EXPR: + { + /* Although ANNOTATE_EXPR is an expression, it can only appear in + WHILE_COND, DO_COND or FOR_COND expressions, which are tsubsted + using tsubst_stmt rather than tsubst_expr and can contain + DECL_EXPRs. */ + tree op1 = RECUR (TREE_OPERAND (t, 0)); + tree op2 = tsubst_expr (TREE_OPERAND (t, 1), args, complain, in_decl); + tree op3 = tsubst_expr (TREE_OPERAND (t, 2), args, complain, in_decl); + if (TREE_CODE (op2) == INTEGER_CST + && wi::to_widest (op2) == (int) annot_expr_unroll_kind) + op3 = cp_check_pragma_unroll (EXPR_LOCATION (TREE_OPERAND (t, 2)), + op3); + RETURN (build3_loc (EXPR_LOCATION (t), ANNOTATE_EXPR, + TREE_TYPE (op1), op1, op2, op3)); + } + default: gcc_assert (!STATEMENT_CODE_P (TREE_CODE (t))); @@ -19571,6 +19621,23 @@ tsubst_lambda_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl) tree oldfn = lambda_function (t); in_decl = oldfn; + args = add_extra_args (LAMBDA_EXPR_EXTRA_ARGS (t), args, complain, in_decl); + if (processing_template_decl + && (!in_template_context || any_dependent_template_arguments_p (args))) + { + /* Defer templated substitution into a lambda-expr if we lost the + necessary template context. This may happen for a lambda-expr + used as a default template argument. + + Defer dependent substitution as well so that we don't prematurely + lower the level of a deduced return type or any other auto or + template parameter belonging to the lambda. */ + t = copy_node (t); + LAMBDA_EXPR_EXTRA_ARGS (t) = NULL_TREE; + LAMBDA_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, complain); + return t; + } + tree r = build_lambda_expr (); LAMBDA_EXPR_LOCATION (r) @@ -19662,7 +19729,10 @@ tsubst_lambda_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl) tree type = begin_lambda_type (r); if (type == error_mark_node) - return error_mark_node; + { + gcc_checking_assert (!(complain & tf_error) || seen_error ()); + return error_mark_node; + } if (LAMBDA_EXPR_EXTRA_SCOPE (t)) record_lambda_scope (r); @@ -21771,19 +21841,6 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl) RETURN (op); } - case ANNOTATE_EXPR: - { - op1 = RECUR (TREE_OPERAND (t, 0)); - tree op2 = RECUR (TREE_OPERAND (t, 1)); - tree op3 = RECUR (TREE_OPERAND (t, 2)); - if (TREE_CODE (op2) == INTEGER_CST - && wi::to_widest (op2) == (int) annot_expr_unroll_kind) - op3 = cp_check_pragma_unroll (EXPR_LOCATION (TREE_OPERAND (t, 2)), - op3); - RETURN (build3_loc (EXPR_LOCATION (t), ANNOTATE_EXPR, - TREE_TYPE (op1), op1, op2, op3)); - } - default: /* Handle Objective-C++ constructs, if appropriate. */ if (tree subst = objcp_tsubst_expr (t, args, complain, in_decl)) @@ -25502,7 +25559,7 @@ more_specialized_fn (tree pat1, tree pat2, int len) if (DECL_STATIC_FUNCTION_P (decl1) || DECL_STATIC_FUNCTION_P (decl2)) { /* Note C++20 DR2445 extended the above to static member functions, but - I think think the old G++ behavior of just skipping the object + I think the old G++ behavior of just skipping the object parameter when comparing to a static member function was better, so let's stick with that for now. This is CWG2834. --jason 2023-12 */ if (DECL_OBJECT_MEMBER_FUNCTION_P (decl1)) @@ -26855,7 +26912,7 @@ maybe_instantiate_noexcept (tree fn, tsubst_flags_t complain) } else if (push_tinst_level (fn)) { - push_to_top_level (); + const bool push_to_top = maybe_push_to_top_level (fn); push_access_scope (fn); push_deferring_access_checks (dk_no_deferred); input_location = DECL_SOURCE_LOCATION (fn); @@ -26878,17 +26935,10 @@ maybe_instantiate_noexcept (tree fn, tsubst_flags_t complain) if (orig_fn) ++processing_template_decl; - ++cp_unevaluated_operand; - ++c_inhibit_evaluation_warnings; - ++cp_noexcept_operand; /* Do deferred instantiation of the noexcept-specifier. */ noex = tsubst_expr (DEFERRED_NOEXCEPT_PATTERN (noex), DEFERRED_NOEXCEPT_ARGS (noex), tf_warning_or_error, fn); - --cp_unevaluated_operand; - --c_inhibit_evaluation_warnings; - --cp_noexcept_operand; - /* Build up the noexcept-specification. */ spec = build_noexcept_spec (noex, tf_warning_or_error); @@ -26898,7 +26948,7 @@ maybe_instantiate_noexcept (tree fn, tsubst_flags_t complain) pop_deferring_access_checks (); pop_access_scope (fn); pop_tinst_level (); - pop_from_top_level (); + maybe_pop_from_top_level (push_to_top); } else spec = noexcept_false_spec; @@ -30570,7 +30620,7 @@ type_targs_deducible_from (tree tmpl, tree type) /* Maybe add in default template args. This seems like a flaw in the specification in terms of partial specialization, since it says the - partial specialization has the the template parameter list of A, but a + partial specialization has the template parameter list of A, but a partial specialization can't have default targs. */ targs = coerce_template_parms (tparms, targs, tmpl, tf_none); if (targs == error_mark_node) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index adb1ba48d299..02c7c1bf5a41 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -799,7 +799,11 @@ simplify_loop_decl_cond (tree *cond_p, tree body) *cond_p = boolean_true_node; if_stmt = begin_if_stmt (); - cond = cp_build_unary_op (TRUTH_NOT_EXPR, cond, false, tf_warning_or_error); + cond_p = &cond; + while (TREE_CODE (*cond_p) == ANNOTATE_EXPR) + cond_p = &TREE_OPERAND (*cond_p, 0); + *cond_p = cp_build_unary_op (TRUTH_NOT_EXPR, *cond_p, false, + tf_warning_or_error); finish_if_stmt_cond (cond, if_stmt); finish_break_stmt (); finish_then_clause (if_stmt); @@ -1090,7 +1094,8 @@ find_std_constant_evaluated_r (tree *tp, int *walk_subtrees, void *) (e.g., in a non-constexpr non-consteval function) so give the user a clue. */ static void -maybe_warn_for_constant_evaluated (tree cond, bool constexpr_if) +maybe_warn_for_constant_evaluated (tree cond, bool constexpr_if, + bool trivial_infinite) { if (!warn_tautological_compare) return; @@ -1108,6 +1113,18 @@ maybe_warn_for_constant_evaluated (tree cond, bool constexpr_if) warning_at (EXPR_LOCATION (cond), OPT_Wtautological_compare, "% always evaluates to " "true in %"); + else if (trivial_infinite) + { + auto_diagnostic_group d; + if (warning_at (EXPR_LOCATION (cond), OPT_Wtautological_compare, + "% evaluates to " + "true when checking if trivially empty iteration " + "statement is trivial infinite loop") + && !maybe_constexpr_fn (current_function_decl)) + inform (EXPR_LOCATION (cond), + "and evaluates to false when actually evaluating " + "the condition in non-% function"); + } else if (!maybe_constexpr_fn (current_function_decl)) warning_at (EXPR_LOCATION (cond), OPT_Wtautological_compare, "% always evaluates to " @@ -1126,6 +1143,8 @@ tree finish_if_stmt_cond (tree orig_cond, tree if_stmt) { tree cond = maybe_convert_cond (orig_cond); + maybe_warn_for_constant_evaluated (cond, IF_STMT_CONSTEXPR_P (if_stmt), + /*trivial_infinite=*/false); if (IF_STMT_CONSTEXPR_P (if_stmt) && !type_dependent_expression_p (cond) && require_constant_expression (cond) @@ -1134,16 +1153,11 @@ finish_if_stmt_cond (tree orig_cond, tree if_stmt) converted to bool. */ && TYPE_MAIN_VARIANT (TREE_TYPE (cond)) == boolean_type_node) { - maybe_warn_for_constant_evaluated (cond, /*constexpr_if=*/true); cond = instantiate_non_dependent_expr (cond); cond = cxx_constant_value (cond); } - else - { - maybe_warn_for_constant_evaluated (cond, /*constexpr_if=*/false); - if (processing_template_decl) - cond = orig_cond; - } + else if (processing_template_decl) + cond = orig_cond; finish_cond (&IF_COND (if_stmt), cond); add_stmt (if_stmt); THEN_CLAUSE (if_stmt) = push_stmt_list (); @@ -1209,6 +1223,48 @@ finish_if_stmt (tree if_stmt) add_stmt (do_poplevel (scope)); } +/* Determine if iteration statement with *CONDP condition and + loop BODY is trivially empty iteration statement or even + trivial infinite loop. In the latter case for -ffinite-loops + add ANNOTATE_EXPR to mark the loop as maybe validly infinite. + Also, emit -Wtautological-compare warning for std::is_constant_evaluated () + calls in the condition when needed. */ + +static void +finish_loop_cond (tree *condp, tree body) +{ + if (TREE_CODE (*condp) == INTEGER_CST) + return; + bool trivially_empty = expr_first (body) == NULL_TREE; + bool trivial_infinite = false; + if (trivially_empty) + { + tree c = fold_non_dependent_expr (*condp, tf_none, + /*manifestly_const_eval=*/true); + trivial_infinite = c && integer_nonzerop (c); + } + if (warn_tautological_compare) + { + tree cond = *condp; + while (TREE_CODE (cond) == ANNOTATE_EXPR) + cond = TREE_OPERAND (cond, 0); + if (trivial_infinite + && !DECL_IMMEDIATE_FUNCTION_P (current_function_decl)) + maybe_warn_for_constant_evaluated (cond, /*constexpr_if=*/false, + /*trivial_infinite=*/true); + else if (!trivially_empty + || !processing_template_decl + || DECL_IMMEDIATE_FUNCTION_P (current_function_decl)) + maybe_warn_for_constant_evaluated (cond, /*constexpr_if=*/false, + /*trivial_infinite=*/false); + } + if (trivial_infinite && flag_finite_loops && !processing_template_decl) + *condp = build3 (ANNOTATE_EXPR, TREE_TYPE (*condp), *condp, + build_int_cst (integer_type_node, + annot_expr_maybe_infinite_kind), + integer_zero_node); +} + /* Begin a while-statement. Returns a newly created WHILE_STMT if appropriate. */ @@ -1264,6 +1320,7 @@ finish_while_stmt (tree while_stmt) { end_maybe_infinite_loop (boolean_true_node); WHILE_BODY (while_stmt) = do_poplevel (WHILE_BODY (while_stmt)); + finish_loop_cond (&WHILE_COND (while_stmt), WHILE_BODY (while_stmt)); } /* Begin a do-statement. Returns a newly created DO_STMT if @@ -1321,6 +1378,12 @@ finish_do_stmt (tree cond, tree do_stmt, bool ivdep, tree unroll, build_int_cst (integer_type_node, annot_expr_no_vector_kind), integer_zero_node); DO_COND (do_stmt) = cond; + tree do_body = DO_BODY (do_stmt); + if (CONVERT_EXPR_P (do_body) + && integer_zerop (TREE_OPERAND (do_body, 0)) + && VOID_TYPE_P (TREE_TYPE (do_body))) + do_body = NULL_TREE; + finish_loop_cond (&DO_COND (do_stmt), do_body); } /* Finish a return-statement. The EXPRESSION returned, if any, is as @@ -1491,7 +1554,13 @@ finish_for_stmt (tree for_stmt) if (TREE_CODE (for_stmt) == RANGE_FOR_STMT) RANGE_FOR_BODY (for_stmt) = do_poplevel (RANGE_FOR_BODY (for_stmt)); else - FOR_BODY (for_stmt) = do_poplevel (FOR_BODY (for_stmt)); + { + FOR_BODY (for_stmt) = do_poplevel (FOR_BODY (for_stmt)); + if (FOR_COND (for_stmt)) + finish_loop_cond (&FOR_COND (for_stmt), + FOR_EXPR (for_stmt) ? integer_one_node + : FOR_BODY (for_stmt)); + } /* Pop the scope for the body of the loop. */ tree *scope_ptr = (TREE_CODE (for_stmt) == RANGE_FOR_STMT @@ -3895,7 +3964,7 @@ finish_template_decl (tree parms) // typename pair::first_type void f(T, U); // // Here, it is unlikely that there is a partial specialization of -// pair constrained for for Integral and Floating_point arguments. +// pair constrained for Integral and Floating_point arguments. // // The general rule is: if a constrained specialization with matching // constraints is found return that type. Also note that if TYPE is not a @@ -5033,9 +5102,13 @@ expand_or_defer_fn_1 (tree fn) /* We don't want to process FN again, so pretend we've written it out, even though we haven't. */ TREE_ASM_WRITTEN (fn) = 1; - /* If this is a constexpr function, keep DECL_SAVED_TREE. */ + /* If this is a constexpr function we still need the body to be + able to evaluate it. Similarly, with modules we only stream + the maybe-in-charge cdtor and regenerate the clones from it on + demand, so we also need to keep the body. Otherwise we don't + need it anymore. */ if (!DECL_DECLARED_CONSTEXPR_P (fn) - && !(modules_p () && DECL_DECLARED_INLINE_P (fn))) + && !(modules_p () && vague_linkage_p (fn))) DECL_SAVED_TREE (fn) = NULL_TREE; return false; } @@ -10692,7 +10765,7 @@ finish_omp_for (location_t locus, enum tree_code code, tree declv, initializer is a binding of the iteration variable, save that location. Any of these locations in the initialization clause for the current nested loop are better than using the argument locus, - that points to the "for" of the the outermost loop in the nest. */ + that points to the "for" of the outermost loop in the nest. */ if (init && EXPR_HAS_LOCATION (init)) elocus = EXPR_LOCATION (init); else if (decl && INDIRECT_REF_P (decl) && EXPR_HAS_LOCATION (decl)) @@ -12439,7 +12512,13 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree type2) return CP_AGGREGATE_TYPE_P (type1); case CPTK_IS_ARRAY: - return type_code1 == ARRAY_TYPE; + return (type_code1 == ARRAY_TYPE + /* We don't want to report T[0] as being an array type. + This is for compatibility with an implementation of + std::is_array by template argument deduction, because + compute_array_index_type_loc rejects a zero-size array + in SFINAE context. */ + && !(TYPE_SIZE (type1) && integer_zerop (TYPE_SIZE (type1)))); case CPTK_IS_ASSIGNABLE: return is_xible (MODIFY_EXPR, type1, type2); @@ -12607,6 +12686,45 @@ check_trait_type (tree type, int kind = 1) return true; } +/* True iff the conversion (if any) would be a direct reference + binding, not requiring complete types. This is LWG2939. */ + +static bool +same_type_ref_bind_p (cp_trait_kind kind, tree type1, tree type2) +{ + tree from, to; + switch (kind) + { + /* These put the target type first. */ + case CPTK_IS_CONSTRUCTIBLE: + case CPTK_IS_NOTHROW_CONSTRUCTIBLE: + case CPTK_IS_TRIVIALLY_CONSTRUCTIBLE: + case CPTK_REF_CONSTRUCTS_FROM_TEMPORARY: + case CPTK_REF_CONVERTS_FROM_TEMPORARY: + to = type1; + from = type2; + break; + + /* These put it second. */ + case CPTK_IS_CONVERTIBLE: + case CPTK_IS_NOTHROW_CONVERTIBLE: + to = type2; + from = type1; + break; + + default: + gcc_unreachable (); + } + + if (TREE_CODE (to) != REFERENCE_TYPE || !from) + return false; + if (TREE_CODE (from) == TREE_VEC && TREE_VEC_LENGTH (from) == 1) + from = TREE_VEC_ELT (from, 0); + return (TYPE_P (from) + && (same_type_ignoring_top_level_qualifiers_p + (non_reference (to), non_reference (from)))); +} + /* Process a trait expression. */ tree @@ -12666,20 +12784,21 @@ finish_trait_expr (location_t loc, cp_trait_kind kind, tree type1, tree type2) return error_mark_node; break; - case CPTK_IS_ASSIGNABLE: case CPTK_IS_CONSTRUCTIBLE: - if (!check_trait_type (type1)) - return error_mark_node; - break; - case CPTK_IS_CONVERTIBLE: - case CPTK_IS_NOTHROW_ASSIGNABLE: case CPTK_IS_NOTHROW_CONSTRUCTIBLE: case CPTK_IS_NOTHROW_CONVERTIBLE: - case CPTK_IS_TRIVIALLY_ASSIGNABLE: case CPTK_IS_TRIVIALLY_CONSTRUCTIBLE: case CPTK_REF_CONSTRUCTS_FROM_TEMPORARY: case CPTK_REF_CONVERTS_FROM_TEMPORARY: + /* Don't check completeness for direct reference binding. */; + if (same_type_ref_bind_p (kind, type1, type2)) + break; + gcc_fallthrough (); + + case CPTK_IS_ASSIGNABLE: + case CPTK_IS_NOTHROW_ASSIGNABLE: + case CPTK_IS_TRIVIALLY_ASSIGNABLE: if (!check_trait_type (type1) || !check_trait_type (type2)) return error_mark_node; diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc index e75be9a4e665..f1a23ffe8179 100644 --- a/gcc/cp/tree.cc +++ b/gcc/cp/tree.cc @@ -2971,7 +2971,8 @@ verify_stmt_tree (tree t) /* Check if the type T depends on a type with no linkage and if so, return it. If RELAXED_P then do not consider a class type declared - within a vague-linkage function to have no linkage. Remember: + within a vague-linkage function or in a module CMI to have no linkage, + since it can still be accessed within a different TU. Remember: no-linkage is not the same as internal-linkage. */ tree @@ -3012,7 +3013,15 @@ no_linkage_check (tree t, bool relaxed_p) /* Only treat unnamed types as having no linkage if they're at namespace scope. This is core issue 966. */ if (TYPE_UNNAMED_P (t) && TYPE_NAMESPACE_SCOPE_P (t)) - return t; + { + if (relaxed_p + && TREE_PUBLIC (CP_TYPE_CONTEXT (t)) + && module_maybe_has_cmi_p ()) + /* This type could possibly be accessed outside this TU. */ + return NULL_TREE; + else + return t; + } for (r = CP_TYPE_CONTEXT (t); ; ) { @@ -3023,10 +3032,12 @@ no_linkage_check (tree t, bool relaxed_p) return no_linkage_check (TYPE_CONTEXT (t), relaxed_p); else if (TREE_CODE (r) == FUNCTION_DECL) { - if (!relaxed_p || !vague_linkage_p (r)) - return t; - else + if (relaxed_p + && (vague_linkage_p (r) + || (TREE_PUBLIC (r) && module_maybe_has_cmi_p ()))) r = CP_DECL_CONTEXT (r); + else + return t; } else break; diff --git a/gcc/cp/typeck.cc b/gcc/cp/typeck.cc index f5a0a2273be2..e5a52dc2b39a 100644 --- a/gcc/cp/typeck.cc +++ b/gcc/cp/typeck.cc @@ -2400,6 +2400,7 @@ is_bitfield_expr_with_lowered_type (const_tree exp) case NEGATE_EXPR: case NON_LVALUE_EXPR: case BIT_NOT_EXPR: + case CLEANUP_POINT_EXPR: return is_bitfield_expr_with_lowered_type (TREE_OPERAND (exp, 0)); case COMPONENT_REF: @@ -10626,8 +10627,10 @@ maybe_warn_about_returning_address_of_local (tree retval, location_t loc) || TREE_CODE (whats_returned) == TARGET_EXPR) { if (TYPE_REF_P (valtype)) - warning_at (loc, OPT_Wreturn_local_addr, - "returning reference to temporary"); + /* P2748 made this an error in C++26. */ + emit_diagnostic (cxx_dialect >= cxx26 ? DK_PERMERROR : DK_WARNING, + loc, OPT_Wreturn_local_addr, + "returning reference to temporary"); else if (TYPE_PTR_P (valtype)) warning_at (loc, OPT_Wreturn_local_addr, "returning pointer to temporary"); diff --git a/gcc/cp/typeck2.cc b/gcc/cp/typeck2.cc index 31198b2f9f58..2985bfdf9ec1 100644 --- a/gcc/cp/typeck2.cc +++ b/gcc/cp/typeck2.cc @@ -1399,41 +1399,6 @@ digest_init_flags (tree type, tree init, int flags, tsubst_flags_t complain) return digest_init_r (type, init, 0, flags, complain); } -/* Return true if SUBOB initializes the same object as FULL_EXPR. - For instance: - - A a = A{}; // initializer - A a = (A{}); // initializer - A a = (1, A{}); // initializer - A a = true ? A{} : A{}; // initializer - auto x = A{}.x; // temporary materialization - auto x = foo(A{}); // temporary materialization - - FULL_EXPR is the whole expression, SUBOB is its TARGET_EXPR subobject. */ - -static bool -potential_prvalue_result_of (tree subob, tree full_expr) -{ - if (subob == full_expr) - return true; - else if (TREE_CODE (full_expr) == TARGET_EXPR) - { - tree init = TARGET_EXPR_INITIAL (full_expr); - if (TREE_CODE (init) == COND_EXPR) - return (potential_prvalue_result_of (subob, TREE_OPERAND (init, 1)) - || potential_prvalue_result_of (subob, TREE_OPERAND (init, 2))); - else if (TREE_CODE (init) == COMPOUND_EXPR) - return potential_prvalue_result_of (subob, TREE_OPERAND (init, 1)); - /* ??? I don't know if this can be hit. */ - else if (TREE_CODE (init) == PAREN_EXPR) - { - gcc_checking_assert (false); - return potential_prvalue_result_of (subob, TREE_OPERAND (init, 0)); - } - } - return false; -} - /* Callback to replace PLACEHOLDER_EXPRs in a TARGET_EXPR (which isn't used in the context of guaranteed copy elision). */ @@ -1441,11 +1406,13 @@ static tree replace_placeholders_for_class_temp_r (tree *tp, int *, void *data) { tree t = *tp; - tree full_expr = *static_cast(data); + auto pset = static_cast *>(data); /* We're looking for a TARGET_EXPR nested in the whole expression. */ if (TREE_CODE (t) == TARGET_EXPR - && !potential_prvalue_result_of (t, full_expr)) + /* That serves as temporary materialization, not an initializer. */ + && !TARGET_EXPR_ELIDING_P (t) + && !pset->add (t)) { tree init = TARGET_EXPR_INITIAL (t); while (TREE_CODE (init) == COMPOUND_EXPR) @@ -1460,6 +1427,16 @@ replace_placeholders_for_class_temp_r (tree *tp, int *, void *data) gcc_checking_assert (!find_placeholders (init)); } } + /* TARGET_EXPRs initializing function arguments are not marked as eliding, + even though gimplify_arg drops them on the floor. Don't go replacing + placeholders in them. */ + else if (TREE_CODE (t) == CALL_EXPR || TREE_CODE (t) == AGGR_INIT_EXPR) + for (int i = 0; i < call_expr_nargs (t); ++i) + { + tree arg = get_nth_callarg (t, i); + if (TREE_CODE (arg) == TARGET_EXPR && !TARGET_EXPR_ELIDING_P (arg)) + pset->add (arg); + } return NULL_TREE; } @@ -1507,8 +1484,8 @@ digest_nsdmi_init (tree decl, tree init, tsubst_flags_t complain) temporary materialization does not occur when initializing an object from a prvalue of the same type, therefore we must not replace the placeholder with a temporary object so that it can be elided. */ - cp_walk_tree (&init, replace_placeholders_for_class_temp_r, &init, - nullptr); + hash_set pset; + cp_walk_tree (&init, replace_placeholders_for_class_temp_r, &pset, nullptr); return init; } diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 595bb5993c44..e096154f80f3 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,20 @@ +2024-04-06 Iain Buclaw + + * dmd/MERGE: Merge upstream dmd b65767825f. + * dmd/VERSION: Bump version to v2.108.0. + +2024-03-17 Iain Buclaw + + * dmd/MERGE: Merge upstream dmd 855353a1d9. + * dmd/VERSION: + +2024-03-10 Iain Buclaw + + PR d/112285 + PR d/112290 + * d-target.cc (Target::preferPassByRef): Return true for all static + array and struct types. + 2024-03-03 Iain Buclaw * dmd/MERGE: Merge upstream dmd f8bae04558. diff --git a/gcc/d/d-target.cc b/gcc/d/d-target.cc index b9d124422b7a..127b9d7ce7c3 100644 --- a/gcc/d/d-target.cc +++ b/gcc/d/d-target.cc @@ -575,31 +575,16 @@ Target::supportsLinkerDirective (void) const } /* Decides whether an `in' parameter of the specified POD type PARAM_TYPE is to - be passed by reference or by valie. This is used only when compiling with + be passed by reference or by value. This is used only when compiling with `-fpreview=in' enabled. */ bool Target::preferPassByRef (Type *param_type) { - if (param_type->size () == SIZE_INVALID) + /* See note in Target::isReturnOnStack. */ + Type *tb = param_type->toBasetype (); + if (tb->size () == SIZE_INVALID) return false; - tree type = build_ctype (param_type); - - /* Prefer a `ref' if the type is an aggregate, and its size is greater than - its alignment. */ - if (AGGREGATE_TYPE_P (type) - && (!valid_constant_size_p (TYPE_SIZE_UNIT (type)) - || compare_tree_int (TYPE_SIZE_UNIT (type), TYPE_ALIGN (type)) > 0)) - return true; - - /* If the back-end is always going to pass this by invisible reference. */ - if (pass_by_reference (NULL, function_arg_info (type, true))) - return true; - - /* If returning the parameter means the caller will do RVO. */ - if (targetm.calls.return_in_memory (type, NULL_TREE)) - return true; - - return false; + return (tb->ty == TY::Tstruct || tb->ty == TY::Tsarray); } diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE index 4c0a0bc2aac4..dc47db87a80c 100644 --- a/gcc/d/dmd/MERGE +++ b/gcc/d/dmd/MERGE @@ -1,4 +1,4 @@ -f8bae0455851a1dfc8113d69323415f6de549e39 +b65767825f365dbc153457fc86e1054b03196c6d The first line of this file holds the git revision number of the last merge done from the dlang/dmd repository. diff --git a/gcc/d/dmd/VERSION b/gcc/d/dmd/VERSION index 416807683f5a..5868b8749552 100644 --- a/gcc/d/dmd/VERSION +++ b/gcc/d/dmd/VERSION @@ -1 +1 @@ -v2.108.0-beta.1 +v2.108.0 diff --git a/gcc/d/dmd/cxxfrontend.d b/gcc/d/dmd/cxxfrontend.d index 8c0463434686..a0432d2e1b46 100644 --- a/gcc/d/dmd/cxxfrontend.d +++ b/gcc/d/dmd/cxxfrontend.d @@ -14,6 +14,7 @@ import dmd.aggregate : AggregateDeclaration; import dmd.arraytypes; import dmd.astenums; import dmd.common.outbuffer : OutBuffer; +import dmd.denum : EnumDeclaration; import dmd.dmodule /*: Module*/; import dmd.dscope : Scope; import dmd.dstruct /*: StructDeclaration*/; @@ -213,6 +214,15 @@ void genCppHdrFiles(ref Modules ms) return dmd.dtoh.genCppHdrFiles(ms); } +/*********************************************************** + * enumsem.d + */ +Expression getDefaultValue(EnumDeclaration ed, const ref Loc loc) +{ + import dmd.enumsem; + return dmd.enumsem.getDefaultValue(ed, loc); +} + /*********************************************************** * expression.d */ diff --git a/gcc/d/dmd/dcast.d b/gcc/d/dmd/dcast.d index a49bd575f4bb..8a713f424d64 100644 --- a/gcc/d/dmd/dcast.d +++ b/gcc/d/dmd/dcast.d @@ -629,7 +629,7 @@ MATCH implicitConvTo(Expression e, Type t) TY tyn = e.type.nextOf().ty; - if (!tyn.isSomeChar) + if (!tyn.isSomeChar && !e.hexString) return visit(e); switch (t.ty) @@ -703,6 +703,11 @@ MATCH implicitConvTo(Expression e, Type t) return MATCH.nomatch; m = MATCH.constant; } + if (e.hexString && tn.isintegral && (tn.size == e.sz || (!e.committed && (e.len % tn.size) == 0))) + { + m = MATCH.convert; + return m; + } if (!e.committed) { switch (tn.ty) @@ -719,9 +724,6 @@ MATCH implicitConvTo(Expression e, Type t) if (e.postfix != 'd') m = MATCH.convert; return m; - case Tint8: - case Tuns8: - break; case Tenum: if (tn.isTypeEnum().sym.isSpecial()) { @@ -735,14 +737,6 @@ MATCH implicitConvTo(Expression e, Type t) break; } } - if (e.hexString) - { - if (tn.isintegral && tn.size == e.sz) - { - m = MATCH.convert; - return m; - } - } break; default: @@ -1884,6 +1878,19 @@ Expression castTo(Expression e, Scope* sc, Type t, Type att = null) Type tb = t.toBasetype(); Type typeb = e.type.toBasetype(); + if (e.hexString && !e.committed) + { + const szx = cast(ubyte) tb.nextOf().size(); + if (szx != se.sz && (e.len % szx) == 0) + { + import dmd.utils: arrayCastBigEndian; + const data = e.peekData(); + se.setData(arrayCastBigEndian(data, szx).ptr, data.length / szx, szx); + se.type = t; + return se; + } + } + //printf("\ttype = %s\n", e.type.toChars()); if (tb.ty == Tdelegate && typeb.ty != Tdelegate) { diff --git a/gcc/d/dmd/dinterpret.d b/gcc/d/dmd/dinterpret.d index c4924903f25a..5493fc188812 100644 --- a/gcc/d/dmd/dinterpret.d +++ b/gcc/d/dmd/dinterpret.d @@ -6118,7 +6118,7 @@ public: return; } - auto str = arrayCastBigEndian((cast(const ubyte[]) se.peekString()), sz); + auto str = arrayCastBigEndian(se.peekData(), sz); emplaceExp!(StringExp)(pue, e1.loc, str, se.len / sz, cast(ubyte) sz); result = pue.exp(); result.type = e.to; diff --git a/gcc/d/dmd/dsymbolsem.d b/gcc/d/dmd/dsymbolsem.d index bb0a1d6e2cc9..b13f98aee73b 100644 --- a/gcc/d/dmd/dsymbolsem.d +++ b/gcc/d/dmd/dsymbolsem.d @@ -4621,12 +4621,11 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, ArgumentList return aliasInstanceSemantic(tempinst, sc, tempdecl); } - Expressions* fargs = argumentList.arguments; // TODO: resolve named args /* See if there is an existing TemplateInstantiation that already * implements the typeargs. If so, just refer to that one instead. */ - tempinst.inst = tempdecl.findExistingInstance(tempinst, fargs); + tempinst.inst = tempdecl.findExistingInstance(tempinst, argumentList); TemplateInstance errinst = null; if (!tempinst.inst) { @@ -4874,7 +4873,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, ArgumentList /* If function template declaration */ - if (fargs && tempinst.aliasdecl) + if (argumentList.length > 0 && tempinst.aliasdecl) { if (auto fd = tempinst.aliasdecl.isFuncDeclaration()) { @@ -4883,7 +4882,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, ArgumentList */ if (fd.type) if (auto tf = fd.type.isTypeFunction()) - tf.fargs = fargs; + tf.inferenceArguments = argumentList; } } diff --git a/gcc/d/dmd/dtemplate.d b/gcc/d/dmd/dtemplate.d index 165a010059f9..d181facfc249 100644 --- a/gcc/d/dmd/dtemplate.d +++ b/gcc/d/dmd/dtemplate.d @@ -828,16 +828,24 @@ extern (C++) final class TemplateDeclaration : ScopeDsymbol } /**************************************************** - * Given a new instance tithis of this TemplateDeclaration, + * Given a new instance `tithis` of this TemplateDeclaration, * see if there already exists an instance. - * If so, return that existing instance. + * + * Params: + * tithis = template instance to check + * argumentList = For function templates, needed because different + * `auto ref` resolutions create different instances, + * even when template parameters are identical + * + * Returns: that existing instance, or `null` when it doesn't exist */ - extern (D) TemplateInstance findExistingInstance(TemplateInstance tithis, Expressions* fargs) + extern (D) TemplateInstance findExistingInstance(TemplateInstance tithis, ArgumentList argumentList) { //printf("findExistingInstance() %s\n", tithis.toChars()); - tithis.fargs = fargs; + tithis.fargs = argumentList.arguments; + tithis.fnames = argumentList.names; auto tibox = TemplateInstanceBox(tithis); - auto p = tibox in instances; + auto p = tibox in this.instances; debug (FindExistingInstance) ++(p ? nFound : nNotFound); //if (p) printf("\tfound %p\n", *p); else printf("\tnot found\n"); return p ? *p : null; @@ -3674,7 +3682,12 @@ extern (C++) class TemplateInstance : ScopeDsymbol TemplateInstance inst; // refer to existing instance ScopeDsymbol argsym; // argument symbol table size_t hash; // cached result of toHash() - Expressions* fargs; // for function template, these are the function arguments + + /// For function template, these are the function names and arguments + /// Relevant because different resolutions of `auto ref` parameters + /// create different template instances even with the same template arguments + Expressions* fargs; + Identifiers* fnames; TemplateInstances* deferred; @@ -3974,6 +3987,19 @@ extern (C++) class TemplateInstance : ScopeDsymbol { if (!fd.errors) { + auto resolvedArgs = fd.type.isTypeFunction().resolveNamedArgs( + ArgumentList(this.fargs, this.fnames), null); + + // resolvedArgs can be null when there's an error: fail_compilation/fail14669.d + // In that case, equalsx returns true to prevent endless template instantiations + // However, it can also mean the function was explicitly instantiated + // without function arguments: fail_compilation/fail14669 + // Hence the following check: + if (this.fargs && !resolvedArgs) + return true; + + Expression[] args = resolvedArgs ? (*resolvedArgs)[] : []; + auto fparameters = fd.getParameterList(); size_t nfparams = fparameters.length; // Num function parameters for (size_t j = 0; j < nfparams; j++) @@ -3981,7 +4007,12 @@ extern (C++) class TemplateInstance : ScopeDsymbol Parameter fparam = fparameters[j]; if (fparam.storageClass & STC.autoref) // if "auto ref" { - Expression farg = fargs && j < fargs.length ? (*fargs)[j] : fparam.defaultArg; + Expression farg = (j < args.length) ? args[j] : fparam.defaultArg; + // resolveNamedArgs strips trailing nulls / default params + // when it doesn't anymore, the ternary can be replaced with: + // assert(j < resolvedArgs.length); + if (!farg) + farg = fparam.defaultArg; if (!farg) goto Lnotequals; if (farg.isLvalue()) @@ -5723,8 +5754,7 @@ extern (C++) final class TemplateMixin : TemplateInstance /************************************ * This struct is needed for TemplateInstance to be the key in an associative array. - * Fixing https://issues.dlang.org/show_bug.cgi?id=15812 and - * https://issues.dlang.org/show_bug.cgi?id=15813 would make it unnecessary. + * Fixing https://issues.dlang.org/show_bug.cgi?id=15813 would make it unnecessary. */ struct TemplateInstanceBox { diff --git a/gcc/d/dmd/enum.h b/gcc/d/dmd/enum.h index 650bf3e2c7cd..4e6fbe2cacfb 100644 --- a/gcc/d/dmd/enum.h +++ b/gcc/d/dmd/enum.h @@ -17,6 +17,12 @@ class Identifier; class Type; class Expression; +namespace dmd +{ + // in enumsem.d + Expression *getDefaultValue(EnumDeclaration *ed, const Loc &loc); +} + class EnumDeclaration final : public ScopeDsymbol { public: diff --git a/gcc/d/dmd/expression.h b/gcc/d/dmd/expression.h index 9cd73a965ba0..2f6bb84acb9b 100644 --- a/gcc/d/dmd/expression.h +++ b/gcc/d/dmd/expression.h @@ -800,6 +800,21 @@ class DotTypeExp final : public UnaExp void accept(Visitor *v) override { v->visit(this); } }; +struct ArgumentList final +{ + Expressions* arguments; + Identifiers* names; + ArgumentList() : + arguments(), + names() + { + } + ArgumentList(Expressions* arguments, Identifiers* names = nullptr) : + arguments(arguments), + names(names) + {} +}; + class CallExp final : public UnaExp { public: diff --git a/gcc/d/dmd/expressionsem.d b/gcc/d/dmd/expressionsem.d index db40ae01decf..7ae7f400d166 100644 --- a/gcc/d/dmd/expressionsem.d +++ b/gcc/d/dmd/expressionsem.d @@ -2984,6 +2984,7 @@ private bool functionParameters(const ref Loc loc, Scope* sc, foreach (u; 0 .. elements.length) { Expression a = (*arguments)[i + u]; + assert(a); if (tret && a.implicitConvTo(tret)) { // p is a lazy array of delegates, tret is return type of the delegates @@ -4245,18 +4246,21 @@ private extern (C++) final class ExpressionSemanticVisitor : Visitor if (e.hexString) { - const data = cast(const ubyte[]) e.peekString(); switch (e.postfix) { case 'd': + e.committed = true; e.sz = 4; e.type = Type.tdstring; break; case 'w': + e.committed = true; e.sz = 2; e.type = Type.twstring; break; case 'c': + e.committed = true; + goto default; default: e.type = Type.tstring; e.sz = 1; @@ -4266,8 +4270,7 @@ private extern (C++) final class ExpressionSemanticVisitor : Visitor error(e.loc, "hex string with `%s` type needs to be multiple of %d bytes, not %d", e.type.toChars(), e.sz, cast(int) e.len); - e.setData(arrayCastBigEndian(data, e.sz).ptr, e.len / e.sz, e.sz); - e.committed = true; + e.setData(arrayCastBigEndian(e.peekData(), e.sz).ptr, e.len / e.sz, e.sz); } else switch (e.postfix) { diff --git a/gcc/d/dmd/hdrgen.d b/gcc/d/dmd/hdrgen.d index 8eef7992e2ae..41da11dedbec 100644 --- a/gcc/d/dmd/hdrgen.d +++ b/gcc/d/dmd/hdrgen.d @@ -2281,7 +2281,8 @@ private void expressionPrettyPrint(Expression e, ref OutBuffer buf, ref HdrGenSt { buf.writeByte('x'); buf.writeByte('"'); - buf.writeHexString(e.peekData, true); + foreach (i; 0 .. e.len) + buf.printf("%0*llX", e.sz, e.getIndex(i)); buf.writeByte('"'); if (e.postfix) buf.writeByte(e.postfix); diff --git a/gcc/d/dmd/lexer.d b/gcc/d/dmd/lexer.d index 937597cdf89d..c9c506e9cf3c 100644 --- a/gcc/d/dmd/lexer.d +++ b/gcc/d/dmd/lexer.d @@ -1568,7 +1568,6 @@ class Lexer stringbuffer.writeByte(v); } t.setString(stringbuffer); - t.postfix = 'h'; stringPostfix(t); return TOK.hexadecimalString; default: diff --git a/gcc/d/dmd/mtype.d b/gcc/d/dmd/mtype.d index 2c9e058bf325..715ee12159cb 100644 --- a/gcc/d/dmd/mtype.d +++ b/gcc/d/dmd/mtype.d @@ -3073,7 +3073,7 @@ extern (C++) final class TypeFunction : TypeNext TRUST trust; // level of trust PURE purity = PURE.impure; byte inuse; - Expressions* fargs; // function arguments + ArgumentList inferenceArguments; // function arguments to determine `auto ref` in type semantic extern (D) this(ParameterList pl, Type treturn, LINK linkage, StorageClass stc = 0) @safe { @@ -3146,7 +3146,7 @@ extern (C++) final class TypeFunction : TypeNext t.isInOutParam = isInOutParam; t.isInOutQual = isInOutQual; t.trust = trust; - t.fargs = fargs; + t.inferenceArguments = inferenceArguments; t.isctor = isctor; return t; } @@ -3197,10 +3197,12 @@ extern (C++) final class TypeFunction : TypeNext { Expression[] args = argumentList.arguments ? (*argumentList.arguments)[] : null; Identifier[] names = argumentList.names ? (*argumentList.names)[] : null; - auto newArgs = new Expressions(parameterList.length); + const nParams = parameterList.length(); // cached because O(n) + auto newArgs = new Expressions(nParams); newArgs.zero(); size_t ci = 0; bool hasNamedArgs = false; + const bool isVariadic = parameterList.varargs != VarArg.none; foreach (i, arg; args) { if (!arg) @@ -3223,7 +3225,7 @@ extern (C++) final class TypeFunction : TypeNext } if (ci >= newArgs.length) { - if (!parameterList.varargs) + if (!isVariadic) { // Without named args, let the caller diagnose argument overflow if (hasNamedArgs && pMessage) @@ -3247,7 +3249,12 @@ extern (C++) final class TypeFunction : TypeNext if (arg || parameterList[i].defaultArg) continue; - if (parameterList.varargs != VarArg.none && i + 1 == newArgs.length) + if (isVariadic && i + 1 == newArgs.length) + continue; + + // dtemplate sets `defaultArg=null` to avoid semantic on default arguments, + // don't complain about missing arguments in that case + if (this.incomplete) continue; if (pMessage) diff --git a/gcc/d/dmd/mtype.h b/gcc/d/dmd/mtype.h index 2f8bfa68d221..ad64b120f400 100644 --- a/gcc/d/dmd/mtype.h +++ b/gcc/d/dmd/mtype.h @@ -14,6 +14,7 @@ #include "arraytypes.h" #include "ast_node.h" +#include "expression.h" #include "globals.h" #include "visitor.h" @@ -254,8 +255,6 @@ class Type : public ASTNode bool isSharedWild() const { return (mod & (MODshared | MODwild)) == (MODshared | MODwild); } bool isNaked() const { return mod == 0; } Type *nullAttributes() const; - Type *arrayOf(); - Type *sarrayOf(dinteger_t dim); bool hasDeprecatedAliasThis(); virtual Type *makeConst(); virtual Type *makeImmutable(); @@ -567,7 +566,7 @@ class TypeFunction final : public TypeNext TRUST trust; // level of trust PURE purity; // PURExxxx char inuse; - Expressions *fargs; // function arguments + ArgumentList inferenceArguments; // function arguments static TypeFunction *create(Parameters *parameters, Type *treturn, VarArg varargs, LINK linkage, StorageClass stc = 0); const char *kind() override; diff --git a/gcc/d/dmd/root/filename.d b/gcc/d/dmd/root/filename.d index 41c2050057d3..d9f1a04057df 100644 --- a/gcc/d/dmd/root/filename.d +++ b/gcc/d/dmd/root/filename.d @@ -665,7 +665,7 @@ nothrow: * Returns: * if found, filename combined with path, otherwise null */ - extern (C++) static const(char)* searchPath(const ref Strings path, const char* name, bool cwd) + extern (C++) static const(char)* searchPath(const ref Strings path, const(char)* name, bool cwd) { return searchPath(path[], name.toDString, cwd).ptr; } diff --git a/gcc/d/dmd/root/filename.h b/gcc/d/dmd/root/filename.h index 0e52b9823233..e8c8b11fffdd 100644 --- a/gcc/d/dmd/root/filename.h +++ b/gcc/d/dmd/root/filename.h @@ -38,7 +38,7 @@ struct FileName bool equalsExt(const char *ext); - static const char *searchPath(Strings& path, const char *name, bool cwd); + static const char *searchPath(const Strings &path, const char *name, bool cwd); static int exists(const char *name); static bool ensurePathExists(const char *path); static const char *canonicalName(const char *name); diff --git a/gcc/d/dmd/template.h b/gcc/d/dmd/template.h index 0f96a1b3b098..bccec1a68c12 100644 --- a/gcc/d/dmd/template.h +++ b/gcc/d/dmd/template.h @@ -12,6 +12,7 @@ #include "arraytypes.h" #include "dsymbol.h" +#include "expression.h" class Identifier; class TemplateInstance; @@ -46,20 +47,6 @@ struct TemplatePrevious Objects *dedargs; }; -struct ArgumentList final -{ - Expressions* arguments; - Identifiers* names; - ArgumentList() : - arguments(), - names() - { - } - ArgumentList(Expressions* arguments, Identifiers* names = nullptr) : - arguments(arguments), - names(names) - {} -}; class TemplateDeclaration final : public ScopeDsymbol { @@ -271,6 +258,7 @@ class TemplateInstance : public ScopeDsymbol ScopeDsymbol *argsym; // argument symbol table hash_t hash; // cached result of toHash() Expressions *fargs; // for function template, these are the function arguments + Identifiers *fnames; // for function template, argument names TemplateInstances* deferred; diff --git a/gcc/d/dmd/templatesem.d b/gcc/d/dmd/templatesem.d index 0a36838e167d..bd3cd89588f7 100644 --- a/gcc/d/dmd/templatesem.d +++ b/gcc/d/dmd/templatesem.d @@ -250,7 +250,7 @@ MATCH matchWithInstance(Scope* sc, TemplateDeclaration td, TemplateInstance ti, return MATCH.nomatch; size_t parameters_dim = td.parameters.length; - int variadic = td.isVariadic() !is null; + const bool variadic = td.isVariadic() !is null; // If more arguments than parameters, no match if (ti.tiargs.length > parameters_dim && !variadic) @@ -338,12 +338,6 @@ MATCH matchWithInstance(Scope* sc, TemplateDeclaration td, TemplateInstance ti, if (fd) { TypeFunction tf = fd.type.isTypeFunction().syntaxCopy(); - if (argumentList.hasNames) - return nomatch(); - Expressions* fargs = argumentList.arguments; - // TODO: Expressions* fargs = tf.resolveNamedArgs(argumentList, null); - // if (!fargs) - // return nomatch(); fd = new FuncDeclaration(fd.loc, fd.endloc, fd.ident, fd.storage_class, tf); fd.parent = ti; @@ -357,7 +351,7 @@ MATCH matchWithInstance(Scope* sc, TemplateDeclaration td, TemplateInstance ti, tf.incomplete = true; // Resolve parameter types and 'auto ref's. - tf.fargs = fargs; + tf.inferenceArguments = argumentList; uint olderrors = global.startGagging(); fd.type = tf.typeSemantic(td.loc, paramscope); global.endGagging(olderrors); @@ -762,7 +756,7 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat } size_t ntargs = 0; // array size of tiargs - size_t inferStart = 0; // index of first parameter to infer + size_t inferStart = 0; // index of first template parameter to infer from function argument const Loc instLoc = ti.loc; MATCH matchTiargs = MATCH.exact; @@ -834,9 +828,6 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat ParameterList fparameters = fd.getParameterList(); // function parameter list const nfparams = fparameters.length; // number of function parameters - if (argumentList.hasNames) - return matcherror(); // TODO: resolve named args - Expression[] fargs = argumentList.arguments ? (*argumentList.arguments)[] : null; /* Check for match of function arguments with variadic template * parameter, such as: @@ -950,9 +941,14 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat { //printf("%s\n\tnfargs = %d, nfparams = %d, tuple_dim = %d\n", toChars(), nfargs, nfparams, declaredTuple ? declaredTuple.objects.length : 0); //printf("\ttp = %p, fptupindex = %d, found = %d, declaredTuple = %s\n", tp, fptupindex, fptupindex != IDX_NOTFOUND, declaredTuple ? declaredTuple.toChars() : NULL); - size_t argi = 0; - size_t nfargs2 = fargs.length; // nfargs + supplied defaultArgs + enum DEFAULT_ARGI = size_t.max - 10; // pseudo index signifying the parameter is expected to be assigned its default argument + size_t argi = 0; // current argument index + size_t argsConsumed = 0; // to ensure no excess arguments + size_t nfargs2 = argumentList.length; // total number of arguments including applied defaultArgs uint inoutMatch = 0; // for debugging only + Expression[] fargs = argumentList.arguments ? (*argumentList.arguments)[] : null; + Identifier[] fnames = argumentList.names ? (*argumentList.names)[] : null; + for (size_t parami = 0; parami < nfparams; parami++) { Parameter fparam = fparameters[parami]; @@ -961,11 +957,28 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat Type prmtype = fparam.type.addStorageClass(fparam.storageClass); Expression farg; + Identifier fname = argi < fnames.length ? fnames[argi] : null; + bool foundName = false; + if (fparam.ident) + { + foreach (i; 0 .. fnames.length) + { + if (fparam.ident == fnames[i]) + { + argi = i; + foundName = true; + } + } + } + if (fname && !foundName) + { + argi = DEFAULT_ARGI; + } /* See function parameters which wound up * as part of a template tuple parameter. */ - if (fptupindex != IDX_NOTFOUND && parami == fptupindex) + if (fptupindex != IDX_NOTFOUND && parami == fptupindex && argi != DEFAULT_ARGI) { TypeIdentifier tid = prmtype.isTypeIdentifier(); assert(tid); @@ -986,7 +999,12 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat Parameter p = fparameters[j]; if (p.defaultArg) { - break; + break; + } + foreach(name; fnames) + { + if (p.ident == name) + break; } if (!reliesOnTemplateParameters(p.type, (*td.parameters)[inferStart .. td.parameters.length])) { @@ -1055,6 +1073,7 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat } assert(declaredTuple); argi += declaredTuple.objects.length; + argsConsumed += declaredTuple.objects.length; continue; } @@ -1068,7 +1087,7 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat if (TypeTuple tt = prmtype.isTypeTuple()) { const tt_dim = tt.arguments.length; - for (size_t j = 0; j < tt_dim; j++, ++argi) + for (size_t j = 0; j < tt_dim; j++, ++argi, ++argsConsumed) { Parameter p = (*tt.arguments)[j]; if (j == tt_dim - 1 && fparameters.varargs == VarArg.typesafe && @@ -1171,7 +1190,9 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat } } } - nfargs2 = argi + 1; + + if (argi != DEFAULT_ARGI) + nfargs2 = argi + 1; /* If prmtype does not depend on any template parameters: * @@ -1189,7 +1210,11 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat */ if (prmtype.deco || prmtype.syntaxCopy().trySemantic(td.loc, paramscope)) { - ++argi; + if (argi != DEFAULT_ARGI) + { + ++argi; + ++argsConsumed; + } continue; } @@ -1203,6 +1228,7 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat farg = fargs[argi]; } { + assert(farg); // Check invalid arguments to detect errors early. if (farg.op == EXP.error || farg.type.ty == Terror) return nomatch(); @@ -1350,7 +1376,11 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat { if (m < match) match = m; // pick worst match - argi++; + if (argi != DEFAULT_ARGI) + { + argi++; + argsConsumed++; + } continue; } } @@ -1490,8 +1520,8 @@ extern (D) MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, Templat } assert(0); } - //printf(". argi = %d, nfargs = %d, nfargs2 = %d\n", argi, nfargs, nfargs2); - if (argi != nfargs2 && fparameters.varargs == VarArg.none) + // printf(". argi = %d, nfargs = %d, nfargs2 = %d, argsConsumed = %d\n", cast(int) argi, cast(int) nfargs, cast(int) nfargs2, cast(int) argsConsumed); + if (argsConsumed != nfargs2 && fparameters.varargs == VarArg.none) return nomatch(); } @@ -1618,7 +1648,7 @@ Lmatch: sc2.minst = sc.minst; sc2.stc |= fd.storage_class & STC.deprecated_; - fd = doHeaderInstantiation(td, ti, sc2, fd, tthis, argumentList.arguments); + fd = doHeaderInstantiation(td, ti, sc2, fd, tthis, argumentList); sc2 = sc2.pop(); sc2 = sc2.pop(); @@ -1650,7 +1680,7 @@ Lmatch: * Limited function template instantiation for using fd.leastAsSpecialized() */ private -FuncDeclaration doHeaderInstantiation(TemplateDeclaration td, TemplateInstance ti, Scope* sc2, FuncDeclaration fd, Type tthis, Expressions* fargs) +FuncDeclaration doHeaderInstantiation(TemplateDeclaration td, TemplateInstance ti, Scope* sc2, FuncDeclaration fd, Type tthis, ArgumentList inferenceArguments) { assert(fd); version (none) @@ -1667,7 +1697,7 @@ FuncDeclaration doHeaderInstantiation(TemplateDeclaration td, TemplateInstance t assert(fd.type.ty == Tfunction); auto tf = fd.type.isTypeFunction(); - tf.fargs = fargs; + tf.inferenceArguments = inferenceArguments; if (tthis) { @@ -2084,11 +2114,6 @@ void functionResolve(ref MatchAccumulator m, Dsymbol dstart, Loc loc, Scope* sc, } //printf("td = %s\n", td.toChars()); - if (argumentList.hasNames) - { - .error(loc, "named arguments with Implicit Function Template Instantiation are not supported yet"); - goto Lerror; - } auto f = td.onemember ? td.onemember.isFuncDeclaration() : null; if (!f) { diff --git a/gcc/d/dmd/typesem.d b/gcc/d/dmd/typesem.d index ad87ea0baebe..b2b9e38ead4d 100644 --- a/gcc/d/dmd/typesem.d +++ b/gcc/d/dmd/typesem.d @@ -2187,6 +2187,12 @@ Type typeSemantic(Type type, const ref Loc loc, Scope* sc) } } + Expressions* fargs = mtype.inferenceArguments.arguments; + + // mtype.argumentList only provided for Implicit Function Template Instantiation + if (mtype.inferenceArguments.length > 0) + fargs = tf.resolveNamedArgs(mtype.inferenceArguments, null); + // Now that we completed semantic for the argument types, // run semantic on their default values, // bearing in mind tuples have been expanded. @@ -2236,8 +2242,10 @@ Type typeSemantic(Type type, const ref Loc loc, Scope* sc) */ if (eparam.storageClass & STC.auto_) { - Expression farg = mtype.fargs && eidx < mtype.fargs.length ? - (*mtype.fargs)[eidx] : eparam.defaultArg; + Expression farg = (fargs && eidx < fargs.length) ? (*fargs)[eidx] : null; + if (!farg) + farg = eparam.defaultArg; + if (farg && (eparam.storageClass & STC.ref_)) { if (!farg.isLvalue()) @@ -5681,7 +5689,7 @@ Type addStorageClass(Type type, StorageClass stc) // Klunky to change these auto tf = new TypeFunction(t.parameterList, t.next, t.linkage, 0); tf.mod = t.mod; - tf.fargs = tf_src.fargs; + tf.inferenceArguments = tf_src.inferenceArguments; tf.purity = t.purity; tf.isnothrow = t.isnothrow; tf.isnogc = t.isnogc; @@ -6775,7 +6783,7 @@ Type substWildTo(Type type, uint mod) t.isInOutParam = false; t.isInOutQual = false; t.trust = tf.trust; - t.fargs = tf.fargs; + t.inferenceArguments = tf.inferenceArguments; t.isctor = tf.isctor; return t.merge(); } diff --git a/gcc/diagnostic-color.cc b/gcc/diagnostic-color.cc index 4859f36da6a9..f01a0fc2e377 100644 --- a/gcc/diagnostic-color.cc +++ b/gcc/diagnostic-color.cc @@ -101,6 +101,8 @@ static struct color_cap color_dict[] = { "diff-delete", SGR_SEQ (COLOR_FG_RED), 11, false }, { "diff-insert", SGR_SEQ (COLOR_FG_GREEN), 11, false }, { "type-diff", SGR_SEQ (COLOR_BOLD COLOR_SEPARATOR COLOR_FG_GREEN), 9, false }, + { "valid", SGR_SEQ (COLOR_BOLD COLOR_SEPARATOR COLOR_FG_GREEN), 5, false }, + { "invalid", SGR_SEQ (COLOR_BOLD COLOR_SEPARATOR COLOR_FG_RED), 7, false }, { NULL, NULL, 0, false } }; diff --git a/gcc/diagnostic-core.h b/gcc/diagnostic-core.h index f5e1e500dc34..8071cc1f69b5 100644 --- a/gcc/diagnostic-core.h +++ b/gcc/diagnostic-core.h @@ -33,7 +33,10 @@ typedef enum DK_LAST_DIAGNOSTIC_KIND, /* This is used for tagging pragma pops in the diagnostic classification history chain. */ - DK_POP + DK_POP, + /* This is used internally to note that a diagnostic is enabled + without mandating any specific type. */ + DK_ANY, } diagnostic_t; /* RAII-style class for grouping related diagnostics. */ diff --git a/gcc/diagnostic-format-json.cc b/gcc/diagnostic-format-json.cc index 51e016b64638..0782ae831eba 100644 --- a/gcc/diagnostic-format-json.cc +++ b/gcc/diagnostic-format-json.cc @@ -314,6 +314,10 @@ class json_stderr_output_format : public json_output_format { flush_to_file (stderr); } + bool machine_readable_stderr_p () const final override + { + return true; + } }; class json_file_output_format : public json_output_format @@ -345,6 +349,10 @@ class json_file_output_format : public json_output_format fclose (outf); free (filename); } + bool machine_readable_stderr_p () const final override + { + return false; + } private: char *m_base_file_name; diff --git a/gcc/diagnostic-format-sarif.cc b/gcc/diagnostic-format-sarif.cc index 307b2f56c280..97c5943cd339 100644 --- a/gcc/diagnostic-format-sarif.cc +++ b/gcc/diagnostic-format-sarif.cc @@ -1750,6 +1750,10 @@ class sarif_stream_output_format : public sarif_output_format { m_builder.flush_to_file (m_stream); } + bool machine_readable_stderr_p () const final override + { + return m_stream == stderr; + } private: FILE *m_stream; }; @@ -1782,6 +1786,10 @@ class sarif_file_output_format : public sarif_output_format fclose (outf); free (filename); } + bool machine_readable_stderr_p () const final override + { + return false; + } private: char *m_base_file_name; diff --git a/gcc/diagnostic.cc b/gcc/diagnostic.cc index 1d143fa74980..6ffd62361462 100644 --- a/gcc/diagnostic.cc +++ b/gcc/diagnostic.cc @@ -802,8 +802,8 @@ diagnostic_context::action_after_output (diagnostic_t diag_kind) case DK_FATAL: if (m_abort_on_error) real_abort (); - finish (); fnotice (stderr, "compilation terminated.\n"); + finish (); exit (FATAL_EXIT_CODE); default: @@ -1136,8 +1136,7 @@ classify_diagnostic (const diagnostic_context *context, if (old_kind == DK_UNSPECIFIED) { old_kind = !context->option_enabled_p (option_index) - ? DK_IGNORED : (context->warning_as_error_requested_p () - ? DK_ERROR : DK_WARNING); + ? DK_IGNORED : DK_ANY; m_classify_diagnostic[option_index] = old_kind; } @@ -1472,7 +1471,15 @@ diagnostic_context::diagnostic_enabled (diagnostic_info *diagnostic) option. */ if (diag_class == DK_UNSPECIFIED && !option_unspecified_p (diagnostic->option_index)) - diagnostic->kind = m_option_classifier.get_current_override (diagnostic->option_index); + { + const diagnostic_t new_kind + = m_option_classifier.get_current_override (diagnostic->option_index); + if (new_kind != DK_ANY) + /* DK_ANY means the diagnostic is not to be ignored, but we don't want + to change it specifically to DK_ERROR or DK_WARNING; we want to + preserve whatever the caller has specified. */ + diagnostic->kind = new_kind; + } /* This allows for future extensions, like temporarily disabling warnings for ranges of source code. */ @@ -2264,6 +2271,16 @@ diagnostic_context::emit_diagram (const diagnostic_diagram &diagram) void fnotice (FILE *file, const char *cmsgid, ...) { + /* If the user requested one of the machine-readable diagnostic output + formats on stderr (e.g. -fdiagnostics-format=sarif-stderr), then + emitting free-form text on stderr will lead to corrupt output. + Skip the message for such cases. */ + if (file == stderr && global_dc) + if (const diagnostic_output_format *output_format + = global_dc->get_output_format ()) + if (output_format->machine_readable_stderr_p ()) + return; + va_list ap; va_start (ap, cmsgid); diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h index 0a7c7e02b37c..065ac784e258 100644 --- a/gcc/diagnostic.h +++ b/gcc/diagnostic.h @@ -210,6 +210,7 @@ class diagnostic_output_format virtual void on_end_diagnostic (const diagnostic_info &, diagnostic_t orig_diag_kind) = 0; virtual void on_diagram (const diagnostic_diagram &diagram) = 0; + virtual bool machine_readable_stderr_p () const = 0; protected: diagnostic_output_format (diagnostic_context &context) @@ -238,6 +239,10 @@ class diagnostic_text_output_format : public diagnostic_output_format void on_end_diagnostic (const diagnostic_info &, diagnostic_t orig_diag_kind) override; void on_diagram (const diagnostic_diagram &diagram) override; + bool machine_readable_stderr_p () const final override + { + return false; + } }; /* A stack of sets of classifications: each entry in the stack is @@ -432,6 +437,11 @@ class diagnostic_context void emit_diagram (const diagnostic_diagram &diagram); + const diagnostic_output_format *get_output_format () const + { + return m_output_format; + } + /* Various setters for use by option-handling logic. */ void set_output_format (diagnostic_output_format *output_format); void set_text_art_charset (enum diagnostic_text_art_charset charset); diff --git a/gcc/doc/analyzer.texi b/gcc/doc/analyzer.texi index 8eb40272cb71..b53096e7b7d9 100644 --- a/gcc/doc/analyzer.texi +++ b/gcc/doc/analyzer.texi @@ -21,6 +21,9 @@ @subsection Overview +At a high-level, we're doing coverage-guided symbolic execution of the +user's code. + The analyzer implementation works on the gimple-SSA representation. (I chose this in the hopes of making it easy to work with LTO to do whole-program analysis). @@ -55,7 +58,9 @@ Next is the heart of the analyzer: we use a worklist to explore state within the supergraph, building an "exploded graph". Nodes in the exploded graph correspond to pairs, as in "Precise Interprocedural Dataflow Analysis via Graph Reachability" - (Thomas Reps, Susan Horwitz and Mooly Sagiv). + (Thomas Reps, Susan Horwitz and Mooly Sagiv) - but note that +we're not using the algorithm described in that paper, just the +``exploded graph'' terminology. We reuse nodes for pairs we've already seen, and avoid tracking state too closely, so that (hopefully) we rapidly converge @@ -499,7 +504,8 @@ which dumps a @file{SRC.eg.txt} file containing the full @code{exploded_graph}. Assuming that you have the @uref{https://gcc-newbies-guide.readthedocs.io/en/latest/debugging.html,,python support scripts for gdb} -installed, you can use: +installed (which you should do, it makes debugging GCC much easier), +you can use: @smallexample (gdb) break-on-saved-diagnostic diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index df0982fdfda5..7b54a241a7bf 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -26194,6 +26194,9 @@ AMD Family 19h Zen version 3. @item znver4 AMD Family 19h Zen version 4. + +@item znver5 +AMD Family 1ah Zen version 5. @end table Here is an example: diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index dda3f49f07d8..c118061aed54 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -124,6 +124,7 @@ gcov [@option{-v}|@option{--version}] [@option{-h}|@option{--help}] [@option{-a}|@option{--all-blocks}] [@option{-b}|@option{--branch-probabilities}] [@option{-c}|@option{--branch-counts}] + [@option{-g}|@option{--conditions}] [@option{-d}|@option{--display-progress}] [@option{-f}|@option{--function-summaries}] [@option{-j}|@option{--json-format}] @@ -169,6 +170,14 @@ be shown, unless the @option{-u} option is given. Write branch frequencies as the number of branches taken, rather than the percentage of branches taken. +@item -g +@itemx --conditions +Write condition coverage to the output file, and write condition summary info +to the standard output. This option allows you to see if the conditions in +your program at least once had an independent effect on the outcome of the +boolean expression (modified condition/decision coverage). This requires you +to compile the source with @option{-fcondition-coverage}. + @item -d @itemx --display-progress Display the progress on the standard output. @@ -301,6 +310,7 @@ Each @var{line} has the following form: "branches": ["$branch"], "calls": ["$call"], "count": 2, + "conditions": ["$condition"], "line_number": 15, "unexecuted_block": false, "function_name": "foo", @@ -384,6 +394,34 @@ to @var{line::count}) @var{destination_block_id}: ID of the basic block this calls continues after return @end itemize +Each @var{condition} has the following form: + +@smallexample +@{ + "count": 4, + "covered": 2, + "not_covered_false": [], + "not_covered_true": [0, 1], +@} + +@end smallexample + +Fields of the @var{condition} element have following semantics: + +@itemize @bullet +@item +@var{count}: number of condition outcomes in this expression + +@item +@var{covered}: number of covered condition outcomes in this expression + +@item +@var{not_covered_true}: terms, by index, not seen as true in this expression + +@item +@var{not_covered_false}: terms, by index, not seen as false in this expression +@end itemize + @item -H @itemx --human-readable Write counts in human readable format (like 24.6k). diff --git a/gcc/doc/gm2.texi b/gcc/doc/gm2.texi index 028a0715f64b..19b864573c12 100644 --- a/gcc/doc/gm2.texi +++ b/gcc/doc/gm2.texi @@ -398,14 +398,6 @@ it allows users to single step code into an intrinsic function. @c Modula-2 @c turn on internal debugging of the compiler (internal switch) -@c fdebug-trace-quad -@c Modula-2 -@c turn on quadruple tracing (internal switch) - -@c fdebug-trace-api -@c Modula-2 -@c turn on the Modula-2 api tracing (internal switch) - @c fdebug-function-line-numbers @c Modula-2 @c turn on the Modula-2 function line number generation (internal switch) @@ -474,6 +466,11 @@ this option forces the use of the static version. @c Modula-2 Joined @c set all location values to a specific value (internal switch) +@c fm2-debug-trace= +@c Modula-2 Joined +@c turn on trace debugging using a comma separated list: +@c line,token,quad,all. + @item -fm2-g improve the debugging experience for new programmers at the expense of generating @code{nop} instructions if necessary to ensure single @@ -1657,7 +1654,8 @@ The preprocessor @samp{cpp} can be invoked via the @samp{-fcpp} command line option. This in turn invokes @samp{cpp} with the following arguments @samp{-traditional -lang-asm}. These options preserve comments and all quotations. @samp{gm2} treats a @samp{#} -character in the first column as a preprocessor directive. +character in the first column as a preprocessor directive unless +@samp{-fno-cpp} is supplied. For example here is a module which calls @code{FatalError} via the macro @code{ERROR}. diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index d8414fdbdc94..c0c0c6033228 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -252,6 +252,11 @@ name of the package depends on your distro) or you must build GCC as a @option{--disable-multilib}. Otherwise, you may encounter an error such as @samp{fatal error: gnu/stubs-32.h: No such file} +@item Python +If you configure a RISC-V compiler with the option @option{--with-arch} and +the specified architecture string is non-canonical, then you will need +@command{python} installed on the build system. + @item @anchor{GNAT-prerequisite}GNAT In order to build GNAT, the Ada compiler, you need a working GNAT @@ -539,6 +544,8 @@ Necessary to run @samp{make check} for @file{fixinc}. Necessary to regenerate the top level @file{Makefile.in} file from @file{Makefile.tpl} and @file{Makefile.def}. +Necessary to regenerate the @file{bits/version.h} header for libstdc++. + @item Flex version 2.5.4 (or later) Necessary when modifying @file{*.l} files. @@ -1179,6 +1186,9 @@ Specify the default TLS dialect, for systems were there is a choice. For ARM targets, possible values for @var{dialect} are @code{gnu} or @code{gnu2}, which select between the original GNU dialect and the GNU TLS descriptor-based dialect. +For RISC-V targets, possible values for @var{dialect} are @code{trad} or +@code{desc}, which select between the traditional GNU dialect and the GNU TLS +descriptor-based dialect. @item --enable-multiarch Specify whether to enable or disable multiarch support. The default is @@ -1258,11 +1268,12 @@ default set of libraries is selected based on the value of @item amdgcn*-*-* @var{list} is a comma separated list of ISA names (allowed values: @code{fiji}, @code{gfx900}, @code{gfx906}, @code{gfx908}, @code{gfx90a}, @code{gfx1030}, -@code{gfx1100}). It ought not include the name of the default ISA, specified -via @option{--with-arch}. If @var{list} is empty, then there will be no -multilibs and only the default run-time library will be built. If @var{list} -is @code{default} or @option{--with-multilib-list=} is not specified, then -the default set of libraries is selected. +@code{gfx1036}, @code{gfx1100}, @code{gfx1103}). +It ought not include the name of the default +ISA, specified via @option{--with-arch}. If @var{list} is empty, then there +will be no multilibs and only the default run-time library will be built. If +@var{list} is @code{default} or @option{--with-multilib-list=} is not +specified, then the default set of libraries is selected. @item arm*-*-* @var{list} is a comma separated list of @code{aprofile} and @@ -3932,9 +3943,12 @@ Instead of GNU Binutils, you will need to install LLVM 15, or later, and copy @file{bin/llvm-nm} to @file{amdgcn-amdhsa/bin/nm}, and @file{bin/llvm-ar} to both @file{bin/amdgcn-amdhsa-ar} and @file{bin/amdgcn-amdhsa-ranlib}. Note that LLVM 13.0.1 or LLVM 14 can be used -by specifying a @code{--with-multilib-list=} that does not list @code{gfx1100}. +by specifying a @code{--with-multilib-list=} that does not list @code{gfx1100} +and @code{gfx1103}. -Use Newlib (4.3.0 or newer; 4.4.0 or later is recommended). +Use Newlib (4.3.0 or newer; 4.4.0 contains some improvements and git commit +7dd4eb1db (2025-03-25, post-4.4.0) fixes device console output for GFX10 and +GFX11 devices). To run the binaries, install the HSA Runtime from the @uref{https://rocm.docs.amd.com/,,ROCm Platform}, and use @@ -3944,8 +3958,8 @@ on the GPU. To enable support for GCN3 Fiji devices (gfx803), GCC has to be configured with @option{--with-arch=@code{fiji}} or @option{--with-multilib-list=@code{fiji},...}. Note that support for Fiji -devices has been removed in ROCm 4.0 and support in LLVM is deprecated and will -be removed in LLVM 18. +devices has been removed in ROCm 4.0 and support in LLVM was deprecated and has +been removed in LLVM 18. @html
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 85c938d4a148..e3285587e4e7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -640,6 +640,7 @@ Objective-C and Objective-C++ Dialects}. @item Program Instrumentation Options @xref{Instrumentation Options,,Program Instrumentation Options}. @gccoptlist{-p -pg -fprofile-arcs --coverage -ftest-coverage +-fcondition-coverage -fprofile-abs-path -fprofile-dir=@var{path} -fprofile-generate -fprofile-generate=@var{path} -fprofile-info-section -fprofile-info-section=@var{name} @@ -1058,8 +1059,10 @@ Objective-C and Objective-C++ Dialects}. -mmax-inline-memcpy-size=@var{n} -mexplicit-relocs=@var{style} -mexplicit-relocs -mno-explicit-relocs -mdirect-extern-access -mno-direct-extern-access --mcmodel=@var{code-model} -mrelax -mpass-mrelax-to-as} --mrecip -mrecip=@var{opt} +-mcmodel=@var{code-model} -mrelax -mpass-mrelax-to-as +-mrecip -mrecip=@var{opt} -mfrecipe -mno-frecipe -mdiv32 -mno-div32 +-mlam-bh -mno-lam-bh -mlamcas -mno-lamcas -mld-seq-sa -mno-ld-seq-sa +-mtls-dialect=@var{opt}} @emph{M32R/D Options} @gccoptlist{-m32r2 -m32rx -m32r @@ -1143,7 +1146,8 @@ Objective-C and Objective-C++ Dialects}. -mcheck-zero-division -mno-check-zero-division -mdivide-traps -mdivide-breaks -mload-store-pairs -mno-load-store-pairs --munaligned-access -mno-unaligned-access +-mstrict-align -mno-strict-align +-mno-unaligned-access -munaligned-access -mmemcpy -mno-memcpy -mlong-calls -mno-long-calls -mmad -mno-mad -mimadd -mno-imadd -mfused-madd -mno-fused-madd -nocpp -mfix-24k -mno-fix-24k @@ -1261,7 +1265,8 @@ See RS/6000 and PowerPC Options. -minline-atomics -mno-inline-atomics -minline-strlen -mno-inline-strlen -minline-strcmp -mno-inline-strcmp --minline-strncmp -mno-inline-strncmp} +-minline-strncmp -mno-inline-strncmp +-mtls-dialect=desc -mtls-dialect=trad} @emph{RL78 Options} @gccoptlist{-msim -mmul=none -mmul=g13 -mmul=g14 -mallregs @@ -5240,7 +5245,7 @@ The default @env{GCC_COLORS} is error=01;31:warning=01;35:note=01;36:range1=32:range2=34:locus=01:\ quote=01:path=01;36:fixit-insert=32:fixit-delete=31:\ diff-filename=01:diff-hunk=32:diff-delete=31:diff-insert=32:\ -type-diff=01;32:fnname=01;32:targs=35 +type-diff=01;32:fnname=01;32:targs=35:valid=01;31:invalid=01;32 @end smallexample @noindent where @samp{01;31} is bold red, @samp{01;35} is bold magenta, @@ -5323,6 +5328,14 @@ SGR substring for inserted lines within generated patches. @item type-diff= SGR substring for highlighting mismatching types within template arguments in the C++ frontend. + +@vindex valid GCC_COLORS @r{capability} +@item valid= +SGR substring for highlighting valid elements within text art diagrams. + +@vindex invalid GCC_COLORS @r{capability} +@item invalid= +SGR substring for highlighting invalid elements within text art diagrams. @end table @opindex fdiagnostics-urls @@ -6574,6 +6587,14 @@ poorly optimized code and is useful only in the case of very minor changes such as bug fixes to an existing code-base. Completely disabling the warning is not recommended. +@opindex Wno-coverage-too-many-conditions +@opindex Wcoverage-too-many-conditions +@item -Wno-coverage-too-many-conditions +Warn if @option{-fcondition-coverage} is used and an expression have too many +terms and GCC gives up coverage. Coverage is given up when there are more +terms in the conditional than there are bits in a @code{gcov_type_unsigned}. +This warning is enabled by default. + @opindex Wno-coverage-invalid-line-number @opindex Wcoverage-invalid-line-number @item -Wno-coverage-invalid-line-number @@ -9370,6 +9391,19 @@ In a cast involving pointer to member types this warning warns whenever the type cast is changing the pointer to member type. This warning is enabled by @option{-Wextra}. +@opindex Wcast-user-defined +@opindex Wno-cast-user-defined +@item -Wcast-user-defined +Warn when a cast to reference type does not involve a user-defined +conversion that the programmer might expect to be called. + +@smallexample +struct A @{ operator const int&(); @} a; +auto r = (int&)a; // warning +@end smallexample + +This warning is enabled by default. + @opindex Wwrite-strings @opindex Wno-write-strings @item -Wwrite-strings @@ -11689,7 +11723,7 @@ By default the analyzer attempts to reconstruct the original function frames, and to emit events showing the inlined calls. With @option{-fno-analyzer-undo-inlining} this attempt to reconstruct -the original frame information can be be disabled, which may be of help +the original frame information can be disabled, which may be of help when debugging issues in the analyzer. @item -fanalyzer-verbose-edges @@ -14930,6 +14964,9 @@ assignments). This option is enabled by default for C or C++ if a strict conformance option such as @option{-std=c99} or @option{-std=c++17} is used. @option{-ffast-math} enables @option{-fexcess-precision=fast} by default regardless of whether a strict conformance option is used. +If @option{-fexcess-precision=16} is specified, constants and the +results of expressions with types @code{_Float16} and @code{__bf16} +are computed without excess precision. @opindex mfpmath @option{-fexcess-precision=standard} is not implemented for languages @@ -16993,6 +17030,14 @@ loop. The default value is four. @end table +The following choices of @var{name} are available on GCN targets: + +@table @gcctabopt +@item gcn-preferred-vectorization-factor +Preferred vectorization factor: @samp{default}, @samp{32}, @samp{64}. + +@end table + The following choices of @var{name} are available on i386 and x86_64 targets: @table @gcctabopt @@ -17072,6 +17117,14 @@ Note that if a command line directly links source files, the corresponding E.g. @code{gcc a.c b.c -o binary} would generate @file{binary-a.gcda} and @file{binary-b.gcda} files. +@item -fcondition-coverage +@opindex fcondition-coverage +Add code so that program conditions are instrumented. During execution the +program records what terms in a conditional contributes to a decision, which +can be used to verify that all terms in a Boolean function are tested and have +an independent effect on the outcome of a decision. The result can be read +with @code{gcov --conditions}. + @xref{Cross-profiling}. @cindex @command{gcov} @@ -17134,6 +17187,10 @@ executed. When an arc is the only exit or only entrance to a block, the instrumentation code can be added to the block; otherwise, a new basic block must be created to hold the instrumentation code. +With @option{-fcondition-coverage}, for each conditional in your program GCC +creates a bitset and records the exercised boolean values that have an +independent effect on the outcome of that expression. + @need 2000 @opindex ftest-coverage @item -ftest-coverage @@ -21574,8 +21631,12 @@ Enable the FEAT_SME_I16I64 extension to SME. Enable the FEAT_SME_F64F64 extension to SME. +@item sme2 Enable the Scalable Matrix Extension 2. This also enables SME instructions. +@item lse128 +Enable the LSE128 128-bit atomic instructions extension. This also +enables LSE instructions. @item d128 Enable support for 128-bit system register read/write instructions. +This also enables the LSE128 extension. @item gcs Enable support for Armv9.4-a Guarded Control Stack extension. @item the @@ -21788,9 +21849,15 @@ Compile for CDNA2 Instinct MI200 series devices (gfx90a). @item gfx1030 Compile for RDNA2 gfx1030 devices (GFX10 series). +@item gfx1036 +Compile for RDNA2 gfx1036 devices (GFX10 series). + @item gfx1100 Compile for RDNA3 gfx1100 devices (GFX11 series). +@item gfx1103 +Compile for RDNA3 gfx1103 devices (GFX11 series). + @end table @opindex msram-ecc @@ -25705,7 +25772,7 @@ Outputs pseudo-c assembly dialect. @item -minline-memops-threshold=@var{bytes} Specifies a size threshold in bytes at or below which memmove, memcpy and memset shall always be expanded inline. Operations dealing with -sizes larger than this threshold would have to be be implemented using +sizes larger than this threshold would have to be implemented using a library call instead of being expanded inline, but since BPF doesn't allow libcalls, exceeding this threshold results in a compile-time error. The default is @samp{1024} bytes. @@ -27081,6 +27148,59 @@ Enable the approximation for vectorized reciprocal square root. So, for example, @option{-mrecip=all,!sqrt} enables all of the reciprocal approximations, except for scalar square root. +@opindex mfrecipe +@opindex mno-frecipe +@item -mfrecipe +@itemx -mno-frecipe +Use (do not use) @code{frecipe.@{s/d@}} and @code{frsqrte.@{s/d@}} +instructions. When build with @option{-march=la664}, it is enabled by default. +The default is @option{-mno-frecipe}. + +@opindex mdiv32 +@opindex mno-div32 +@item -mdiv32 +@itemx -mno-div32 +Use (do not use) @code{div.w[u]} and @code{mod.w[u]} instructions with input +not sign-extended. When build with @option{-march=la664}, it is enabled by +default. The default is @option{-mno-div32}. + +@opindex mlam-bh +@opindex mno-lam-bh +@item -mlam-bh +@itemx -mno-lam-bh +Use (do not use) @code{am@{swap/add@}[_db].@{b/h@}} instructions. When build +with @option{-march=la664}, it is enabled by default. The default is +@option{-mno-lam-bh}. + +@opindex mlamcas +@opindex mno-lamcas +@item -mlamcas +@itemx -mno-lamcas +Use (do not use) @code{amcas[_db].@{b/h/w/d@}} instructions. When build with +@option{-march=la664}, it is enabled by default. The default is +@option{-mno-lamcas}. + +@opindex mld-seq-sa +@opindex mno-ld-seq-sa +@item -mld-seq-sa +@itemx -mno-ld-seq-sa +Whether a load-load barrier (@code{dbar 0x700}) is needed. When build with +@option{-march=la664}, it is enabled by default. The default is +@option{-mno-ld-seq-sa}, the load-load barrier is needed. + +@opindex mtls-dialect +@item -mtls-dialect=@var{opt} +This option controls which tls dialect may be used for general dynamic and +local dynamic TLS models. + +@table @samp +@item trad +Use traditional TLS. This is the default. + +@item desc +Use TLS descriptors. +@end table + @item loongarch-vect-unroll-limit The vectorizer will use available tuning information to determine whether it would be beneficial to unroll the main vectorized loop and by how much. This @@ -28561,14 +28681,19 @@ instructions to enable load/store bonding. This option is enabled by default but only takes effect when the selected architecture is known to support bonding. +@opindex mstrict-align +@opindex mno-strict-align @opindex munaligned-access @opindex mno-unaligned-access -@item -munaligned-access +@item -mstrict-align +@itemx -mno-strict-align +@itemx -munaligned-access @itemx -mno-unaligned-access -Enable (disable) direct unaligned access for MIPS Release 6. -MIPSr6 requires load/store unaligned-access support, -by hardware or trap&emulate. -So @option{-mno-unaligned-access} may be needed by kernel. +Disable (enable) direct unaligned access for MIPS Release 6. +MIPSr6 requires load/store unaligned-access support, by hardware or +trap&emulate. So @option{-mstrict-align} may be needed by kernel. The +options @option{-munaligned-access} and @option{-mno-unaligned-access} +are obsoleted, and only for backward-compatible. @opindex mmemcpy @opindex mno-memcpy @@ -30960,6 +31085,16 @@ which register to use as base register for reading the canary, and from what offset from that base register. There is no default register or offset as this is entirely for use within the Linux kernel. + +@opindex mtls-dialect=desc +@item -mtls-dialect=desc +Use TLS descriptors as the thread-local storage mechanism for dynamic accesses +of TLS variables. + +@opindex mtls-dialect=trad +@item -mtls-dialect=trad +Use traditional TLS as the thread-local storage mechanism for dynamic accesses +of TLS variables. This is the default. @end table @node RL78 Options @@ -34481,6 +34616,16 @@ WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI and 64-bit instruction set extensions.) +@item znver5 +AMD Family 1ah core based CPUs with x86-64 instruction set support. (This +supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, +MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, +SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, +WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, +AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, +AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B, +AVX512VP2INTERSECT, PREFETCHI and 64-bit instruction set extensions.) + @item btver1 CPUs based on AMD Family 14h cores with x86-64 instruction set support. (This supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM and 64-bit @@ -36769,17 +36914,17 @@ Substitute the variable part of a matched option. See below. Note that each comma in the substituted string is replaced by a single space. -@item %S -Similar to @samp{%@var{S} +Similar to @samp{%<@var{S}}, but keep @code{-@var{S}} in the GCC command line. @item %:@var{function}(@var{args}) Call the named function @var{function}, passing it @var{args}. @@ -36963,47 +37108,47 @@ otherwise. @end smallexample @end table -@item %@{S@} -Substitutes the @code{-S} switch, if that switch is given to GCC@. +@item %@{@var{S}@} +Substitutes the @code{-@var{S}} switch, if that switch is given to GCC@. If that switch is not specified, this substitutes nothing. Note that the leading dash is omitted when specifying this option, and it is automatically inserted if the substitution is performed. Thus the spec string @samp{%@{foo@}} matches the command-line option @option{-foo} and outputs the command-line option @option{-foo}. -@item %W@{S@} -Like %@{@code{S}@} but mark last argument supplied within as a file to be +@item %W@{@var{S}@} +Like %@{@code{@var{S}}@} but mark last argument supplied within as a file to be deleted on failure. -@item %@@@{S@} -Like %@{@code{S}@} but puts the result into a @code{FILE} and substitutes +@item %@@@{@var{S}@} +Like %@{@code{@var{S}}@} but puts the result into a @code{FILE} and substitutes @code{@@FILE} if an @code{@@file} argument has been supplied. -@item %@{S*@} +@item %@{@var{S}*@} Substitutes all the switches specified to GCC whose names start -with @code{-S}, but which also take an argument. This is used for +with @code{-@var{S}}, but which also take an argument. This is used for switches like @option{-o}, @option{-D}, @option{-I}, etc. GCC considers @option{-o foo} as being one switch whose name starts with @samp{o}. %@{o*@} substitutes this text, including the space. Thus two arguments are generated. -@item %@{S*&T*@} -Like %@{@code{S}*@}, but preserve order of @code{S} and @code{T} options -(the order of @code{S} and @code{T} in the spec is not significant). +@item %@{@var{S}*&@var{T}*@} +Like %@{@code{@var{S}}*@}, but preserve order of @code{@var{S}} and @code{@var{T}} options +(the order of @code{@var{S}} and @code{@var{T}} in the spec is not significant). There can be any number of ampersand-separated variables; for each the wild card is optional. Useful for CPP as @samp{%@{D*&U*&A*@}}. -@item %@{S:X@} -Substitutes @code{X}, if the @option{-S} switch is given to GCC@. +@item %@{@var{S}:@var{X}@} +Substitutes @code{@var{X}}, if the @option{-@var{S}} switch is given to GCC@. -@item %@{!S:X@} -Substitutes @code{X}, if the @option{-S} switch is @emph{not} given to GCC@. +@item %@{!@var{S}:@var{X}@} +Substitutes @code{@var{X}}, if the @option{-@var{S}} switch is @emph{not} given to GCC@. -@item %@{S*:X@} -Substitutes @code{X} if one or more switches whose names start with -@code{-S} are specified to GCC@. Normally @code{X} is substituted only +@item %@{@var{S}*:@var{X}@} +Substitutes @code{@var{X}} if one or more switches whose names start with +@code{-@var{S}} are specified to GCC@. Normally @code{@var{X}} is substituted only once, no matter how many such switches appeared. However, if @code{%*} -appears somewhere in @code{X}, then @code{X} is substituted once +appears somewhere in @code{@var{X}}, then @code{@var{X}} is substituted once for each matching switch, with the @code{%*} replaced by the part of that switch matching the @code{*}. @@ -37024,23 +37169,23 @@ when matching an option like @option{-mcu=newchip} produces: --script=newchip/memory.ld @end smallexample -@item %@{.S:X@} -Substitutes @code{X}, if processing a file with suffix @code{S}. +@item %@{.@var{S}:@var{X}@} +Substitutes @code{@var{X}}, if processing a file with suffix @code{@var{S}}. -@item %@{!.S:X@} -Substitutes @code{X}, if @emph{not} processing a file with suffix @code{S}. +@item %@{!.@var{S}:@var{X}@} +Substitutes @code{@var{X}}, if @emph{not} processing a file with suffix @code{@var{S}}. -@item %@{,S:X@} -Substitutes @code{X}, if processing a file for language @code{S}. +@item %@{,@var{S}:@var{X}@} +Substitutes @code{@var{X}}, if processing a file for language @code{@var{S}}. -@item %@{!,S:X@} -Substitutes @code{X}, if not processing a file for language @code{S}. +@item %@{!,@var{S}:@var{X}@} +Substitutes @code{@var{X}}, if not processing a file for language @code{@var{S}}. -@item %@{S|P:X@} -Substitutes @code{X} if either @code{-S} or @code{-P} is given to +@item %@{@var{S}|@var{P}:@var{X}@} +Substitutes @code{@var{X}} if either @code{-@var{S}} or @code{-@var{P}} is given to GCC@. This may be combined with @samp{!}, @samp{.}, @samp{,}, and @code{*} sequences as well, although they have a stronger binding than -the @samp{|}. If @code{%*} appears in @code{X}, all of the +the @samp{|}. If @code{%*} appears in @code{@var{X}}, all of the alternatives must be starred, and only the first matching alternative is substituted. @@ -37061,33 +37206,33 @@ jim.d -bar -boggle -d jim.d -bar -baz -boggle @end smallexample -@item %@{%:@var{function}(@var{args}):X@} +@item %@{%:@var{function}(@var{args}):@var{X}@} Call function named @var{function} with args @var{args}. If the -function returns non-NULL, then @code{X} is substituted, if it returns +function returns non-NULL, then @code{@var{X}} is substituted, if it returns NULL, it isn't substituted. -@item %@{S:X; T:Y; :D@} +@item %@{@var{S}:@var{X}; @var{T}:@var{Y}; :@var{D}@} -If @code{S} is given to GCC, substitutes @code{X}; else if @code{T} is -given to GCC, substitutes @code{Y}; else substitutes @code{D}. There can +If @code{@var{S}} is given to GCC, substitutes @code{@var{X}}; else if @code{@var{T}} is +given to GCC, substitutes @code{@var{Y}}; else substitutes @code{@var{D}}. There can be as many clauses as you need. This may be combined with @code{.}, @code{,}, @code{!}, @code{|}, and @code{*} as needed. @end table -The switch matching text @code{S} in a @samp{%@{S@}}, @samp{%@{S:X@}} +The switch matching text @code{@var{S}} in a @samp{%@{@var{S}@}}, @samp{%@{@var{S}:@var{X}@}} or similar construct can use a backslash to ignore the special meaning of the character following it, thus allowing literal matching of a character that is otherwise specially treated. For example, -@samp{%@{std=iso9899\:1999:X@}} substitutes @code{X} if the +@samp{%@{std=iso9899\:1999:@var{X}@}} substitutes @code{@var{X}} if the @option{-std=iso9899:1999} option is given. -The conditional text @code{X} in a @samp{%@{S:X@}} or similar +The conditional text @code{@var{X}} in a @samp{%@{@var{S}:@var{X}@}} or similar construct may contain other nested @samp{%} constructs or spaces, or even newlines. They are processed as usual, as described above. -Trailing white space in @code{X} is ignored. White space may also +Trailing white space in @code{@var{X}} is ignored. White space may also appear anywhere on the left side of the colon in these constructs, except between @code{.} or @code{*} and the corresponding word. @@ -37095,7 +37240,7 @@ The @option{-O}, @option{-f}, @option{-m}, and @option{-W} switches are handled specifically in these constructs. If another value of @option{-O} or the negated form of a @option{-f}, @option{-m}, or @option{-W} switch is found later in the command line, the earlier -switch value is ignored, except with @{@code{S}*@} where @code{S} is +switch value is ignored, except with @{@code{@var{S}}*@} where @code{@var{S}} is just one letter, which passes all matching options. The character @samp{|} at the beginning of the predicate text is used to diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 01f3acf79e88..a8b3a3a0f4cc 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -422,9 +422,9 @@ The option is the inverse of another option that has the the options-processing script will declare @code{TARGET_@var{thisname}}, @code{TARGET_@var{name}_P} and @code{TARGET_@var{name}_OPTS_P} macros: @code{TARGET_@var{thisname}} is 1 when the option is active and 0 otherwise, -@code{TARGET_@var{name}_P} is similar to @code{TARGET_@var{name}} but take an -argument as @samp{target_flags}, and and @code{TARGET_@var{name}_OPTS_P} also -similar to @code{TARGET_@var{name}} but take an argument as @code{gcc_options}. +@code{TARGET_@var{name}_P} is similar to @code{TARGET_@var{name}} but takes an +argument as @samp{target_flags}, and @code{TARGET_@var{name}_OPTS_P} is also +similar to @code{TARGET_@var{name}} but takes an argument as @code{gcc_options}. @item Enum(@var{name}) The option's argument is a string from the set of strings associated diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index efab862b94f0..7c0df90e8223 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -2507,6 +2507,9 @@ Test system has an integer register width of 32 bits. @item rv64 Test system has an integer register width of 64 bits. +@item cv_bi +Test system has support for the CORE-V BI extension. + @end table @subsubsection CORE-V specific attributes @@ -2868,6 +2871,9 @@ Target supports weak undefined symbols @item R_flag_in_section Target supports the 'R' flag in .section directive in assembly inputs. +@item asm_goto_with_outputs +Target supports 'asm goto' with outputs. + @item automatic_stack_alignment Target supports automatic stack alignment. @@ -2942,6 +2948,9 @@ Target is using an LLVM assembler and/or linker, instead of GNU Binutils. @item lra Target supports local register allocator (LRA). +This must not be called (results in @code{ERROR}) for targets that +don't do register allocation, and therefore neither use nor don't use +LRA. @item lto Compiler has been configured to support link-time optimization (LTO). diff --git a/gcc/doc/standards.texi b/gcc/doc/standards.texi index 06444ee15f74..586835b28f31 100644 --- a/gcc/doc/standards.texi +++ b/gcc/doc/standards.texi @@ -332,6 +332,17 @@ GCC supports the D 2.0 programming language. The D language itself is currently defined by its reference implementation and supporting language specification, described at @uref{https://dlang.org/spec/spec.html}. +@section Modula-2 language + +GCC supports the Modula-2 language and is compliant with the PIM2, +PIM3, PIM4 and ISO dialects. Also implemented are a complete set of +free ISO libraries. It also contains a collection of PIM libraries +and some Logitech compatible libraries. + +For more information on Modula-2 see +@uref{https://gcc.gnu.org/readings.html}. The online manual is +available at @uref{https://gcc.gnu.org/onlinedocs/gm2/index.html}. + @section References for Other Languages @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm, diff --git a/gcc/dojump.cc b/gcc/dojump.cc index 88600cb42d3d..5f74b696b41d 100644 --- a/gcc/dojump.cc +++ b/gcc/dojump.cc @@ -1235,6 +1235,24 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_code code, int unsignedp, } } + /* For boolean vectors with less than mode precision + make sure to fill padding with consistent values. */ + if (val + && VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (val)) + && SCALAR_INT_MODE_P (mode)) + { + auto nunits = TYPE_VECTOR_SUBPARTS (TREE_TYPE (val)).to_constant (); + if (maybe_ne (GET_MODE_PRECISION (mode), nunits)) + { + op0 = expand_binop (mode, and_optab, op0, + GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1), + NULL_RTX, true, OPTAB_WIDEN); + op1 = expand_binop (mode, and_optab, op1, + GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1), + NULL_RTX, true, OPTAB_WIDEN); + } + } + emit_cmp_and_jump_insns (op0, op1, code, size, mode, unsignedp, val, if_true_label, prob); } @@ -1266,7 +1284,6 @@ do_compare_and_jump (tree treeop0, tree treeop1, enum rtx_code signed_code, machine_mode mode; int unsignedp; enum rtx_code code; - unsigned HOST_WIDE_INT nunits; /* Don't crash if the comparison was erroneous. */ op0 = expand_normal (treeop0); @@ -1309,21 +1326,6 @@ do_compare_and_jump (tree treeop0, tree treeop1, enum rtx_code signed_code, emit_insn (targetm.gen_canonicalize_funcptr_for_compare (new_op1, op1)); op1 = new_op1; } - /* For boolean vectors with less than mode precision - make sure to fill padding with consistent values. */ - else if (VECTOR_BOOLEAN_TYPE_P (type) - && SCALAR_INT_MODE_P (mode) - && TYPE_VECTOR_SUBPARTS (type).is_constant (&nunits) - && maybe_ne (GET_MODE_PRECISION (mode), nunits)) - { - gcc_assert (code == EQ || code == NE); - op0 = expand_binop (mode, and_optab, op0, - GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1), NULL_RTX, - true, OPTAB_WIDEN); - op1 = expand_binop (mode, and_optab, op1, - GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1), NULL_RTX, - true, OPTAB_WIDEN); - } do_compare_rtx_and_jump (op0, op1, code, unsignedp, treeop0, mode, ((mode == BLKmode) diff --git a/gcc/dwarf2ctf.cc b/gcc/dwarf2ctf.cc index 77d6bf896893..dc59569fe560 100644 --- a/gcc/dwarf2ctf.cc +++ b/gcc/dwarf2ctf.cc @@ -606,11 +606,16 @@ gen_ctf_sou_type (ctf_container_ref ctfc, dw_die_ref sou, uint32_t kind) if (attr) bitpos += AT_unsigned (attr); - field_type_id = ctf_add_slice (ctfc, CTF_ADD_NONROOT, - field_type_id, - bitpos - field_location, - bitsize, - c); + /* This is not precisely a TBD_CTF_REPRESENTATION_LIMIT, but + surely something to look at for the next format version bump + for CTF. */ + if (bitsize <= 255 && (bitpos - field_location) <= 255) + field_type_id = ctf_add_slice (ctfc, CTF_ADD_NONROOT, + field_type_id, + bitpos - field_location, + bitsize, c); + else + field_type_id = gen_ctf_unknown_type (ctfc); } /* Add the field type to the struct or union type. */ diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc index 87e4240b8715..1b0e8b5a5b29 100644 --- a/gcc/dwarf2out.cc +++ b/gcc/dwarf2out.cc @@ -6651,7 +6651,7 @@ print_dw_val (dw_val_node *val, bool recurse, FILE *outfile) case dw_val_class_loc: fprintf (outfile, "location descriptor"); if (val->v.val_loc == NULL) - fprintf (outfile, " -> \n"); + fprintf (outfile, " -> "); else if (recurse) { fprintf (outfile, ":\n"); @@ -6662,9 +6662,9 @@ print_dw_val (dw_val_node *val, bool recurse, FILE *outfile) else { if (flag_dump_noaddr || flag_dump_unnumbered) - fprintf (outfile, " #\n"); + fprintf (outfile, " #"); else - fprintf (outfile, " (%p)\n", (void *) val->v.val_loc); + fprintf (outfile, " (%p)", (void *) val->v.val_loc); } break; case dw_val_class_loc_list: @@ -22868,18 +22868,19 @@ gen_enumeration_type_die (tree type, dw_die_ref context_die, bool reverse) if (type_die == NULL || reverse) { + dw_die_ref scope_die = scope_die_for (type, context_die); + /* The DIE with DW_AT_endianity is placed right after the naked DIE. */ if (reverse) { gcc_assert (type_die); dw_die_ref after_die = type_die; type_die = new_die_raw (DW_TAG_enumeration_type); - add_child_die_after (context_die, type_die, after_die); + add_child_die_after (scope_die, type_die, after_die); } else { - type_die = new_die (DW_TAG_enumeration_type, - scope_die_for (type, context_die), type); + type_die = new_die (DW_TAG_enumeration_type, scope_die, type); equate_type_number_to_die (type, type_die); } add_name_attribute (type_die, type_tag (type)); diff --git a/gcc/edit-context.cc b/gcc/edit-context.cc index b02da6e809ea..37ac4989de0b 100644 --- a/gcc/edit-context.cc +++ b/gcc/edit-context.cc @@ -129,7 +129,7 @@ class added_line }; /* Class for representing edit events that have occurred on one line of - one file: the replacement of some text betweeen some columns + one file: the replacement of some text between some columns on the line. Subsequent events will need their columns adjusting if they're diff --git a/gcc/expr.cc b/gcc/expr.cc index f7d74525c15b..d4414e242cb9 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -392,7 +392,7 @@ convert_mode_scalar (rtx to, rtx from, int unsignedp) BFmode -> SFmode -> HFmode conversion where SFmode has superset of BFmode values. We don't need to handle sNaNs by raising exception and turning - into into qNaN though, as that can be done in the + it into qNaN though, as that can be done in the SFmode -> HFmode conversion too. */ rtx temp = gen_reg_rtx (SFmode); int save_flag_finite_math_only = flag_finite_math_only; @@ -5466,6 +5466,7 @@ emit_push_insn (rtx x, machine_mode mode, tree type, rtx size, /* If source is a constant VAR_DECL with a simple constructor, store the constructor to the stack instead of moving it. */ const_tree decl; + HOST_WIDE_INT sz; if (partial == 0 && MEM_P (xinner) && SYMBOL_REF_P (XEXP (xinner, 0)) @@ -5473,9 +5474,11 @@ emit_push_insn (rtx x, machine_mode mode, tree type, rtx size, && VAR_P (decl) && TREE_READONLY (decl) && !TREE_SIDE_EFFECTS (decl) - && immediate_const_ctor_p (DECL_INITIAL (decl), 2)) - store_constructor (DECL_INITIAL (decl), target, 0, - int_expr_size (DECL_INITIAL (decl)), false); + && immediate_const_ctor_p (DECL_INITIAL (decl), 2) + && (sz = int_expr_size (DECL_INITIAL (decl))) > 0 + && CONST_INT_P (size) + && INTVAL (size) == sz) + store_constructor (DECL_INITIAL (decl), target, 0, sz, false); else emit_block_move (target, xinner, size, BLOCK_OP_CALL_PARM); } @@ -12350,7 +12353,8 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, return expand_builtin (exp, target, subtarget, tmode, ignore); } } - return expand_call (exp, target, ignore); + temp = expand_call (exp, target, ignore); + return EXTEND_BITINT (temp); case VIEW_CONVERT_EXPR: op0 = NULL_RTX; diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc index 43105d20be35..7b268964acc4 100644 --- a/gcc/fold-const.cc +++ b/gcc/fold-const.cc @@ -6420,7 +6420,6 @@ static tree merge_truthop_with_opposite_arm (location_t loc, tree op, tree cmpop, bool rhs_only) { - tree type = TREE_TYPE (cmpop); enum tree_code code = TREE_CODE (cmpop); enum tree_code truthop_code = TREE_CODE (op); tree lhs = TREE_OPERAND (op, 0); @@ -6436,6 +6435,8 @@ merge_truthop_with_opposite_arm (location_t loc, tree op, tree cmpop, if (TREE_CODE_CLASS (code) != tcc_comparison) return NULL_TREE; + tree type = TREE_TYPE (TREE_OPERAND (cmpop, 0)); + if (rhs_code == truthop_code) { tree newrhs = merge_truthop_with_opposite_arm (loc, rhs, cmpop, rhs_only); @@ -7103,6 +7104,27 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type, if (TYPE_UNSIGNED (ctype) != TYPE_UNSIGNED (type)) break; + /* Punt for multiplication altogether. + MAX (1U + INT_MAX, 1U) * 2U is not equivalent to + MAX ((1U + INT_MAX) * 2U, 1U * 2U), the former is + 0U, the latter is 2U. + MAX (INT_MIN / 2, 0) * -2 is not equivalent to + MIN (INT_MIN / 2 * -2, 0 * -2), the former is + well defined 0, the latter invokes UB. + MAX (INT_MIN / 2, 5) * 5 is not equivalent to + MAX (INT_MIN / 2 * 5, 5 * 5), the former is + well defined 25, the latter invokes UB. */ + if (code == MULT_EXPR) + break; + /* For division/modulo, punt on c being -1 for MAX, as + MAX (INT_MIN, 0) / -1 is not equivalent to + MIN (INT_MIN / -1, 0 / -1), the former is well defined + 0, the latter invokes UB (or for -fwrapv is INT_MIN). + MIN (INT_MIN, 0) / -1 already invokes UB, so the + transformation won't make it worse. */ + else if (tcode == MAX_EXPR && integer_minus_onep (c)) + break; + /* MIN (a, b) / 5 -> MIN (a / 5, b / 5) */ sub_strict_overflow_p = false; if ((t1 = extract_muldiv (op0, c, code, wide_type, @@ -8579,6 +8601,8 @@ native_encode_initializer (tree init, unsigned char *ptr, int len, if (BYTES_BIG_ENDIAN != WORDS_BIG_ENDIAN) return 0; + if (TREE_CODE (val) == NON_LVALUE_EXPR) + val = TREE_OPERAND (val, 0); if (TREE_CODE (val) != INTEGER_CST) return 0; diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index fb11c05186a8..a270aea0c569 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,261 @@ +2024-04-10 Harald Anlauf + + PR fortran/106500 + * check.cc (is_c_interoperable): Fix checks for C_SIZEOF. + (gfc_check_c_f_pointer): Reject function returning a pointer as FPTR, + and improve an error message. + +2024-04-09 Paul Thomas + + PR fortran/114535 + * resolve.cc (resolve_symbol): Remove last chunk that checked + for finalization of unreferenced symbols. + +2024-04-09 Paul Thomas + + PR fortran/113956 + * trans-expr.cc (gfc_trans_pointer_assignment): Remove assert + causing the ICE since it was unnecesary. + +2024-04-02 Paul Thomas + + PR fortran/106999 + * interface.cc (gfc_compare_interfaces): Add error for a + subroutine proc pointer passed to a variable formal. + (compare_parameter): If a procedure pointer is being passed to + a non-procedure formal arg, and there is an an interface, use + gfc_compare_interfaces to check and provide a more useful error + message. + +2024-04-02 Paul Thomas + + PR fortran/112407 + * resolve.cc (resolve_procedure_expression): Change the test for + for recursion in the case of hidden procedures from modules. + (resolve_typebound_static): Add warning for possible recursive + calls to typebound procedures. + * trans-expr.cc (gfc_trans_class_init_assign): Do not apply + default initializer to class dummy where component initializers + are all null. + +2024-03-29 Harald Anlauf + + PR fortran/50410 + * trans-expr.cc (gfc_conv_structure): Check for NULL pointer. + +2024-03-29 Paul Thomas + + PR fortran/36337 + PR fortran/110987 + PR fortran/113885 + * trans-expr.cc (gfc_trans_assignment_1): Place finalization + block before rhs post block for elemental rhs. + * trans.cc (gfc_finalize_tree_expr): Check directly if a type + has no components, rather than the zero components attribute. + Treat elemental zero component expressions in the same way as + scalars. + +2024-03-28 Harald Anlauf + + PR fortran/114474 + * primary.cc (gfc_variable_attr): Catch variables used in structure + constructors within DATA statements that are still tagged with a + temporary type BT_PROCEDURE from match_actual_arg and which have the + target attribute, and fix their typespec. + +2024-03-28 Mikael Morin + Harald Anlauf + + PR fortran/111781 + PR fortran/114475 + * expr.cc (check_restricted): In submodules, allow variables host- + associated from the parent module. + +2024-03-22 Harald Anlauf + + PR fortran/55978 + * interface.cc (gfc_compare_actual_formal): Skip size check for + NULL() actual without MOLD argument. + +2024-03-22 Mikael Morin + + PR fortran/107426 + * gfortran.h (gfc_save_module_list, gfc_restore_old_module_list): + New declarations. + * module.cc (old_module_list_tail): New global variable. + (gfc_save_module_list, gfc_restore_old_module_list): New functions. + (gfc_use_modules): Set module_list and old_module_list_tail. + * parse.cc (next_statement): Save module_list before doing any work. + (reject_statement): Restore module_list to its saved value. + +2024-03-22 Mikael Morin + + PR fortran/111781 + * symbol.cc (gfc_get_procedure_ns, gfc_get_spec_ns): New functions. + * gfortran.h (gfc_get_procedure_ns, gfc_get_spec ns): Declare them. + (gfc_is_formal_arg): Remove. + * expr.cc (check_restricted): Remove special case allowing local + variable in dummy argument bound expressions. Use gfc_get_spec_ns + to get the right namespace. + * resolve.cc (gfc_is_formal_arg, formal_arg_flag): Remove. + (gfc_resolve_formal_arglist): Set gfc_current_ns. Quit loop and + restore gfc_current_ns instead of early returning. + (resolve_symbol): Factor common array spec resolution code to... + (resolve_symbol_array_spec): ... this new function. Additionnally + set and restore gfc_current_ns. + +2024-03-21 Harald Anlauf + + PR fortran/30802 + * trans-array.cc (abridged_ref_name): New helper function. + (trans_array_bound_check): Use it. + (array_bound_check_elemental): Likewise. + (gfc_conv_array_ref): Likewise. + +2024-03-20 Jakub Jelinek + + * trans-array.cc (structure_alloc_comps): Use integer_zero_node + instead of build_zero_cst (integer_type_node) or + build_int_cst (integer_type_node, 0) and integer_one_node instead of + build_int_cst (integer_type_node, 1). + * trans-expr.cc (conv_scalar_char_value): Likewise. + * trans-stmt.cc (gfc_trans_form_team, gfc_trans_change_team, + gfc_trans_sync_team, gfc_trans_sync): Likewise. + * trans-decl.cc (create_main_function): Likewise. + * trans-intrinsic.cc (trans_this_image, conv_intrinsic_move_alloc): + Likewise. + * trans.cc (gfc_allocate_using_caf_lib, gfc_deallocate_with_status): + Likewise. + +2024-03-18 Harald Anlauf + + PR fortran/103715 + * frontend-passes.cc (check_externals_expr): Prevent invalid read + in case of mismatch of external subroutine with function. + +2024-03-17 Harald Anlauf + + PR fortran/101135 + * trans-array.cc (gfc_get_dataptr_offset): Check for optional + arguments being present before dereferencing data pointer. + +2024-03-15 Paul Thomas + + PR fortran/87477 + PR fortran/89645 + PR fortran/99065 + PR fortran/114141 + PR fortran/114280 + * class.cc (gfc_change_class): New function needed for + associate names, when rank changes or a derived type is + produced by resolution + * dump-parse-tree.cc (show_code_node): Make output for SELECT + TYPE more comprehensible. + * expr.cc (find_inquiry_ref): Do not simplify expressions of + an inferred type. + * gfortran.h : Add 'gfc_association_list' to structure + 'gfc_association_list'. Add prototypes for + 'gfc_find_derived_types', 'gfc_fixup_inferred_type_refs' and + 'gfc_change_class'. Add macro IS_INFERRED_TYPE. + * match.cc (copy_ts_from_selector_to_associate): Add bolean arg + 'select_type' with default false. If this is a select type name + and the selector is a inferred type, build the class type and + apply it to the associate name. + (build_associate_name): Pass true to 'select_type' in call to + previous. + * parse.cc (parse_associate): If the selector is inferred type + the associate name is too. Make sure that function selector + class and rank, if known, are passed to the associate name. If + a function result exists, pass its typespec to the associate + name. + * primary.cc (resolvable_fcns): New function to check that all + the function references are resolvable. + (gfc_match_varspec): If a scalar derived type select type + temporary has an array reference, match the array reference, + treating this in the same way as an equivalence member. Do not + set 'inquiry' if applied to an unknown type the inquiry name + is ambiguous with the component of an accessible derived type. + Check that resolution of the target expression is OK by testing + if the symbol is declared or is an operator expression, then + using 'resolvable_fcns' recursively. If all is well, resolve + the expression. If this is an inferred type with a component + reference, call 'gfc_find_derived_types' to find a suitable + derived type. If there is an inquiry ref and the symbol either + is of unknown type or is inferred to be a derived type, set the + primary and symbol TKR appropriately. + * resolve.cc (resolve_variable): Call new function below. + (gfc_fixup_inferred_type_refs): New function to ensure that the + expression references for a inferred type are consistent with + the now fixed up selector. + (resolve_assoc_var): Ensure that derived type or class function + selectors transmit the correct arrayspec to the associate name. + (resolve_select_type): If the selector is an associate name of + inferred type and has no component references, the associate + name should have its typespec. Simplify the conversion of a + class array to class scalar by calling 'gfc_change_class'. + Make sure that a class, inferred type selector with an array + ref transfers the typespec from the symbol to the expression. + * symbol.cc (gfc_set_default_type): If an associate name with + unknown type has a selector expression, try resolving the expr. + (find_derived_types, gfc_find_derived_types): New functions + that search for a derived type with a given name. + * trans-expr.cc (gfc_conv_variable): Some inferred type exprs + escape resolution so call 'gfc_fixup_inferred_type_refs'. + * trans-stmt.cc (trans_associate_var): Tidy up expression for + 'class_target'. Finalize and free class function results. + Correctly handle selectors that are class functions and class + array references, passed as derived types. + +2024-03-14 Thomas Schwinge + + * dump-parse-tree.cc (show_omp_clauses): Handle 'self_expr'. + * openmp.cc (gfc_free_omp_clauses): Likewise. + * trans-openmp.cc (gfc_split_omp_clauses): Don't handle 'self_expr'. + +2024-03-14 Chung-Lin Tang + + * dump-parse-tree.cc (show_omp_namelist): Print "readonly," for + OMP_LIST_MAP and OMP_LIST_CACHE if n->u.map.readonly is set. + Adjust 'n->u.map_op' to 'n->u.map.op'. + * gfortran.h (typedef struct gfc_omp_namelist): Adjust map_op as + 'ENUM_BITFIELD (gfc_omp_map_op) op:8', add 'bool readonly' field, + change to named struct field 'map'. + * openmp.cc (gfc_match_omp_map_clause): Adjust 'n->u.map_op' to + 'n->u.map.op'. + (gfc_match_omp_clause_reduction): Likewise. + (gfc_match_omp_clauses): Add readonly modifier parsing for OpenACC + copyin clause, set 'n->u.map.op' and 'n->u.map.readonly' for parsed + clause. Adjust 'n->u.map_op' to 'n->u.map.op'. + (gfc_match_oacc_declare): Adjust 'n->u.map_op' to 'n->u.map.op'. + (gfc_match_oacc_cache): Add readonly modifier parsing for OpenACC + cache directive. + (resolve_omp_clauses): Adjust 'n->u.map_op' to 'n->u.map.op'. + * trans-decl.cc (add_clause): Adjust 'n->u.map_op' to 'n->u.map.op'. + (finish_oacc_declare): Likewise. + * trans-openmp.cc (gfc_trans_omp_clauses): Set OMP_CLAUSE_MAP_READONLY, + OMP_CLAUSE__CACHE__READONLY to 1 when readonly is set. Adjust + 'n->u.map_op' to 'n->u.map.op'. + (gfc_add_clause_implicitly): Adjust 'n->u.map_op' to 'n->u.map.op'. + +2024-03-13 Harald Anlauf + + PR fortran/114001 + * expr.cc (gfc_is_simply_contiguous): Adjust logic so that CLASS + symbols are also handled. + +2024-03-13 Tobias Burnus + + PR fortran/114283 + * trans-openmp.cc (gfc_omp_predetermined_mapping): Map dummy + procedures as firstprivate. + +2024-03-12 Harald Anlauf + + PR fortran/110826 + * array.cc (gfc_array_dimen_size): When walking the ref chain of an + array and the ultimate component is a procedure pointer, do not try + to figure out its dimension even if it is a array-valued function. + 2024-03-06 Harald Anlauf PR fortran/103707 diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc index 3a6e3a7c95bc..e9934f1491b2 100644 --- a/gcc/fortran/array.cc +++ b/gcc/fortran/array.cc @@ -2597,6 +2597,13 @@ gfc_array_dimen_size (gfc_expr *array, int dimen, mpz_t *result) case EXPR_FUNCTION: for (ref = array->ref; ref; ref = ref->next) { + /* Ultimate component is a procedure pointer. */ + if (ref->type == REF_COMPONENT + && !ref->next + && ref->u.c.component->attr.function + && IS_PROC_POINTER (ref->u.c.component)) + return false; + if (ref->type != REF_ARRAY) continue; diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc index db74dcf3f40b..2f50d84b876f 100644 --- a/gcc/fortran/check.cc +++ b/gcc/fortran/check.cc @@ -5299,18 +5299,14 @@ is_c_interoperable (gfc_expr *expr, const char **msg, bool c_loc, bool c_f_ptr) return false; } - if (!c_loc && expr->rank > 0 && expr->expr_type != EXPR_ARRAY) + /* Checks for C_SIZEOF need to take into account edits to 18-007r1, see + https://j3-fortran.org/doc/year/22/22-101r1.txt . */ + if (!c_loc && !c_f_ptr && expr->rank > 0 && expr->expr_type == EXPR_VARIABLE) { gfc_array_ref *ar = gfc_find_array_ref (expr); - if (ar->type != AR_FULL) + if (ar->type == AR_FULL && ar->as->type == AS_ASSUMED_SIZE) { - *msg = "Only whole-arrays are interoperable"; - return false; - } - if (!c_f_ptr && ar->as->type != AS_EXPLICIT - && ar->as->type != AS_ASSUMED_SIZE) - { - *msg = "Only explicit-size and assumed-size arrays are interoperable"; + *msg = "Assumed-size arrays are not interoperable"; return false; } } @@ -5475,9 +5471,17 @@ gfc_check_c_f_pointer (gfc_expr *cptr, gfc_expr *fptr, gfc_expr *shape) return false; } + if (fptr->ts.type == BT_PROCEDURE && attr.function) + { + gfc_error ("FPTR argument to C_F_POINTER at %L is a function " + "returning a pointer", &fptr->where); + return false; + } + if (fptr->rank > 0 && !is_c_interoperable (fptr, &msg, false, true)) - return gfc_notify_std (GFC_STD_F2018, "Noninteroperable array FPTR " - "at %L to C_F_POINTER: %s", &fptr->where, msg); + return gfc_notify_std (GFC_STD_F2018, + "Noninteroperable array FPTR argument to " + "C_F_POINTER at %L: %s", &fptr->where, msg); return true; } diff --git a/gcc/fortran/class.cc b/gcc/fortran/class.cc index ce31a93abcd0..abe89630be3c 100644 --- a/gcc/fortran/class.cc +++ b/gcc/fortran/class.cc @@ -815,6 +815,56 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr, } +/* Change class, using gfc_build_class_symbol. This is needed for associate + names, when rank changes or a derived type is produced by resolution. */ + +void +gfc_change_class (gfc_typespec *ts, symbol_attribute *sym_attr, + gfc_array_spec *sym_as, int rank, int corank) +{ + symbol_attribute attr; + gfc_component *c; + gfc_array_spec *as = NULL; + gfc_symbol *der = ts->u.derived; + + ts->type = BT_CLASS; + attr = *sym_attr; + attr.class_ok = 0; + attr.associate_var = 1; + attr.class_pointer = 1; + attr.allocatable = 0; + attr.pointer = 1; + attr.dimension = rank ? 1 : 0; + if (rank) + { + if (sym_as) + as = gfc_copy_array_spec (sym_as); + else + { + as = gfc_get_array_spec (); + as->rank = rank; + as->type = AS_DEFERRED; + as->corank = corank; + } + } + if (as && as->corank != 0) + attr.codimension = 1; + + if (!gfc_build_class_symbol (ts, &attr, &as)) + gcc_unreachable (); + + gfc_set_sym_referenced (ts->u.derived); + + /* Make sure the _vptr is set. */ + c = gfc_find_component (ts->u.derived, "_vptr", true, true, NULL); + if (c->ts.u.derived == NULL) + c->ts.u.derived = gfc_find_derived_vtab (der); + /* _vptr now has the _vtab in it, change it to the _vtype. */ + if (c->ts.u.derived->attr.vtab) + c->ts.u.derived = c->ts.u.derived->ts.u.derived; +} + + /* Add a procedure pointer component to the vtype to represent a specific type-bound procedure. */ diff --git a/gcc/fortran/dump-parse-tree.cc b/gcc/fortran/dump-parse-tree.cc index 7b154eb3ca71..87a65036a3dd 100644 --- a/gcc/fortran/dump-parse-tree.cc +++ b/gcc/fortran/dump-parse-tree.cc @@ -1400,6 +1400,9 @@ show_omp_namelist (int list_type, gfc_omp_namelist *n) fputs (") ALLOCATE(", dumpfile); continue; } + if ((list_type == OMP_LIST_MAP || list_type == OMP_LIST_CACHE) + && n->u.map.readonly) + fputs ("readonly,", dumpfile); if (list_type == OMP_LIST_REDUCTION) switch (n->u.reduction_op) { @@ -1467,7 +1470,7 @@ show_omp_namelist (int list_type, gfc_omp_namelist *n) default: break; } else if (list_type == OMP_LIST_MAP) - switch (n->u.map_op) + switch (n->u.map.op) { case OMP_MAP_ALLOC: fputs ("alloc:", dumpfile); break; case OMP_MAP_TO: fputs ("to:", dumpfile); break; @@ -1616,6 +1619,12 @@ show_omp_clauses (gfc_omp_clauses *omp_clauses) show_expr (omp_clauses->if_exprs[i]); fputc (')', dumpfile); } + if (omp_clauses->self_expr) + { + fputs (" SELF(", dumpfile); + show_expr (omp_clauses->self_expr); + fputc (')', dumpfile); + } if (omp_clauses->final_expr) { fputs (" FINAL(", dumpfile); @@ -2692,11 +2701,20 @@ show_code_node (int level, gfc_code *c) case EXEC_BLOCK: { - const char* blocktype; + const char *blocktype, *sname = NULL; gfc_namespace *saved_ns; gfc_association_list *alist; - if (c->ext.block.assoc) + if (c->ext.block.ns && c->ext.block.ns->code + && c->ext.block.ns->code->op == EXEC_SELECT_TYPE) + { + gfc_expr *fcn = c->ext.block.ns->code->expr1; + blocktype = "SELECT TYPE"; + /* expr1 is _loc(assoc_name->vptr) */ + if (fcn && fcn->expr_type == EXPR_FUNCTION) + sname = fcn->value.function.actual->expr->symtree->n.sym->name; + } + else if (c->ext.block.assoc) blocktype = "ASSOCIATE"; else blocktype = "BLOCK"; @@ -2704,7 +2722,7 @@ show_code_node (int level, gfc_code *c) fprintf (dumpfile, "%s ", blocktype); for (alist = c->ext.block.assoc; alist; alist = alist->next) { - fprintf (dumpfile, " %s = ", alist->name); + fprintf (dumpfile, " %s = ", sname ? sname : alist->name); show_expr (alist->target); } @@ -2735,7 +2753,7 @@ show_code_node (int level, gfc_code *c) if (c->op == EXEC_SELECT_RANK) fputs ("SELECT RANK ", dumpfile); else if (c->op == EXEC_SELECT_TYPE) - fputs ("SELECT TYPE ", dumpfile); + fputs ("SELECT CASE ", dumpfile); // Preceded by SELECT TYPE construct else fputs ("SELECT CASE ", dumpfile); show_expr (c->expr1); diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index 37ea95d0185c..09d1ebd95d2b 100644 --- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -1844,6 +1844,11 @@ find_inquiry_ref (gfc_expr *p, gfc_expr **newp) gfc_resolve_expr (tmp); + /* Leave these to the backend since the type and kind is not confirmed until + resolution. */ + if (IS_INFERRED_TYPE (tmp)) + goto cleanup; + /* In principle there can be more than one inquiry reference. */ for (; inquiry; inquiry = inquiry->next) { @@ -3509,19 +3514,14 @@ check_restricted (gfc_expr *e) if (!check_references (e->ref, &check_restricted)) break; - /* gfc_is_formal_arg broadcasts that a formal argument list is being - processed in resolve.cc(resolve_formal_arglist). This is done so - that host associated dummy array indices are accepted (PR23446). - This mechanism also does the same for the specification expressions - of array-valued functions. */ if (e->error || sym->attr.in_common || sym->attr.use_assoc + || sym->attr.used_in_submodule || sym->attr.dummy || sym->attr.implied_index || sym->attr.flavor == FL_PARAMETER - || is_parent_of_current_ns (sym->ns) - || (gfc_is_formal_arg () && (sym->ns == gfc_current_ns))) + || is_parent_of_current_ns (gfc_get_spec_ns (sym))) { t = true; break; @@ -6025,15 +6025,16 @@ gfc_is_simply_contiguous (gfc_expr *expr, bool strict, bool permit_element) } sym = expr->symtree->n.sym; - if (expr->ts.type != BT_CLASS - && ((part_ref - && !part_ref->u.c.component->attr.contiguous - && part_ref->u.c.component->attr.pointer) - || (!part_ref - && !sym->attr.contiguous - && (sym->attr.pointer - || (sym->as && sym->as->type == AS_ASSUMED_RANK) - || (sym->as && sym->as->type == AS_ASSUMED_SHAPE))))) + if ((part_ref + && part_ref->u.c.component + && !part_ref->u.c.component->attr.contiguous + && IS_POINTER (part_ref->u.c.component)) + || (!part_ref + && expr->ts.type != BT_CLASS + && !sym->attr.contiguous + && (sym->attr.pointer + || (sym->as && sym->as->type == AS_ASSUMED_RANK) + || (sym->as && sym->as->type == AS_ASSUMED_SHAPE)))) return false; if (!ar || ar->type == AR_FULL) diff --git a/gcc/fortran/frontend-passes.cc b/gcc/fortran/frontend-passes.cc index 06dfa1a32321..3c06018fdbbf 100644 --- a/gcc/fortran/frontend-passes.cc +++ b/gcc/fortran/frontend-passes.cc @@ -5807,6 +5807,9 @@ check_externals_expr (gfc_expr **ep, int *walk_subtrees ATTRIBUTE_UNUSED, if (e->expr_type != EXPR_FUNCTION) return 0; + if (e->symtree && e->symtree->n.sym->attr.subroutine) + return 0; + sym = e->value.function.esym; if (sym == NULL) return 0; diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index ebba2336e129..58505446bac5 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1363,7 +1363,11 @@ typedef struct gfc_omp_namelist { gfc_omp_reduction_op reduction_op; gfc_omp_depend_doacross_op depend_doacross_op; - gfc_omp_map_op map_op; + struct + { + ENUM_BITFIELD (gfc_omp_map_op) op:8; + bool readonly; + } map; gfc_expr *align; struct { @@ -2963,6 +2967,11 @@ typedef struct gfc_association_list locus where; gfc_expr *target; + + /* Used for inferring the derived type of an associate name, whose selector + is a sibling derived type function that has not yet been parsed. */ + gfc_symbol *derived_types; + unsigned inferred_type:1; } gfc_association_list; #define gfc_get_association_list() XCNEW (gfc_association_list) @@ -3529,6 +3538,8 @@ bool gfc_add_component (gfc_symbol *, const char *, gfc_component **); gfc_symbol *gfc_use_derived (gfc_symbol *); gfc_component *gfc_find_component (gfc_symbol *, const char *, bool, bool, gfc_ref **); +int gfc_find_derived_types (gfc_symbol *, gfc_namespace *, const char *, + bool stash = false); gfc_st_label *gfc_get_st_label (int); void gfc_free_st_label (gfc_st_label *); @@ -3601,6 +3612,9 @@ bool gfc_is_associate_pointer (gfc_symbol*); gfc_symbol * gfc_find_dt_in_generic (gfc_symbol *); gfc_formal_arglist *gfc_sym_get_dummy_args (gfc_symbol *); +gfc_namespace * gfc_get_procedure_ns (gfc_symbol *); +gfc_namespace * gfc_get_spec_ns (gfc_symbol *); + /* intrinsic.cc -- true if working in an init-expr, false otherwise. */ extern bool gfc_init_expr_flag; @@ -3795,6 +3809,7 @@ void gfc_free_association_list (gfc_association_list *); void gfc_expression_rank (gfc_expr *); bool gfc_op_rank_conformable (gfc_expr *, gfc_expr *); bool gfc_resolve_ref (gfc_expr *); +void gfc_fixup_inferred_type_refs (gfc_expr *); bool gfc_resolve_expr (gfc_expr *); void gfc_resolve (gfc_namespace *); void gfc_resolve_code (gfc_code *, gfc_namespace *); @@ -3809,7 +3824,6 @@ bool gfc_resolve_iterator (gfc_iterator *, bool, bool); bool find_forall_index (gfc_expr *, gfc_symbol *, int); bool gfc_resolve_index (gfc_expr *, int); bool gfc_resolve_dim_arg (gfc_expr *); -bool gfc_is_formal_arg (void); bool gfc_resolve_substring (gfc_ref *, bool *); void gfc_resolve_substring_charlen (gfc_expr *); gfc_expr *gfc_expr_to_initialize (gfc_expr *); @@ -3914,6 +3928,8 @@ void gfc_module_done_2 (void); void gfc_dump_module (const char *, int); bool gfc_check_symbol_access (gfc_symbol *); void gfc_free_use_stmts (gfc_use_list *); +void gfc_save_module_list (); +void gfc_restore_old_module_list (); const char *gfc_dt_lower_string (const char *); const char *gfc_dt_upper_string (const char *); @@ -3921,6 +3937,7 @@ const char *gfc_dt_upper_string (const char *); symbol_attribute gfc_variable_attr (gfc_expr *, gfc_typespec *); symbol_attribute gfc_expr_attr (gfc_expr *); symbol_attribute gfc_caf_attr (gfc_expr *, bool i = false, bool *r = NULL); +bool is_inquiry_ref (const char *, gfc_ref **); match gfc_match_rvalue (gfc_expr **); match gfc_match_varspec (gfc_expr*, int, bool, bool); bool gfc_check_digit (char, int); @@ -3988,6 +4005,8 @@ unsigned int gfc_hash_value (gfc_symbol *); gfc_expr *gfc_get_len_component (gfc_expr *e, int); bool gfc_build_class_symbol (gfc_typespec *, symbol_attribute *, gfc_array_spec **); +void gfc_change_class (gfc_typespec *, symbol_attribute *, + gfc_array_spec *, int, int); gfc_symbol *gfc_find_derived_vtab (gfc_symbol *); gfc_symbol *gfc_find_vtab (gfc_typespec *); gfc_symtree* gfc_find_typebound_proc (gfc_symbol*, bool*, @@ -4018,6 +4037,10 @@ bool gfc_may_be_finalized (gfc_typespec); #define IS_PROC_POINTER(sym) \ (sym->ts.type == BT_CLASS && sym->attr.class_ok && CLASS_DATA (sym) \ ? CLASS_DATA (sym)->attr.proc_pointer : sym->attr.proc_pointer) +#define IS_INFERRED_TYPE(expr) \ + (expr && expr->expr_type == EXPR_VARIABLE \ + && expr->symtree->n.sym->assoc \ + && expr->symtree->n.sym->assoc->inferred_type) /* frontend-passes.cc */ diff --git a/gcc/fortran/interface.cc b/gcc/fortran/interface.cc index 64b90550be2a..bf151dae7439 100644 --- a/gcc/fortran/interface.cc +++ b/gcc/fortran/interface.cc @@ -1789,6 +1789,14 @@ gfc_compare_interfaces (gfc_symbol *s1, gfc_symbol *s2, const char *name2, return false; } + if (s2->attr.subroutine && s1->attr.flavor == FL_VARIABLE) + { + if (errmsg != NULL) + snprintf (errmsg, err_len, "subroutine proc pointer '%s' passed " + "to dummy variable '%s'", name2, s1->name); + return false; + } + /* Do strict checks on all characteristics (for dummy procedures and procedure pointer assignments). */ if (!generic_flag && strict_flag) @@ -2425,12 +2433,22 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual, { gfc_symbol *act_sym = actual->symtree->n.sym; - if (formal->attr.flavor != FL_PROCEDURE) + if (formal->attr.flavor != FL_PROCEDURE && !act_sym->ts.interface) { if (where) gfc_error ("Invalid procedure argument at %L", &actual->where); return false; } + else if (act_sym->ts.interface + && !gfc_compare_interfaces (formal, act_sym->ts.interface, + act_sym->name, 0, 1, err, + sizeof(err),NULL, NULL)) + { + if (where) + gfc_error_opt (0, "Interface mismatch in dummy procedure %qs at %L:" + " %s", formal->name, &actual->where, err); + return false; + } if (!gfc_compare_interfaces (formal, act_sym, act_sym->name, 0, 1, err, sizeof(err), NULL, NULL)) @@ -3439,6 +3457,10 @@ gfc_compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, if (f->sym->ts.type == BT_CLASS) goto skip_size_check; + /* Skip size check for NULL() actual without MOLD argument. */ + if (a->expr->expr_type == EXPR_NULL && a->expr->ts.type == BT_UNKNOWN) + goto skip_size_check; + actual_size = get_expr_storage_size (a->expr); formal_size = get_sym_storage_size (f->sym); if (actual_size != 0 && actual_size < formal_size diff --git a/gcc/fortran/match.cc b/gcc/fortran/match.cc index eee569dac910..4539c9bb1344 100644 --- a/gcc/fortran/match.cc +++ b/gcc/fortran/match.cc @@ -6322,7 +6322,8 @@ gfc_match_select (void) /* Transfer the selector typespec to the associate name. */ static void -copy_ts_from_selector_to_associate (gfc_expr *associate, gfc_expr *selector) +copy_ts_from_selector_to_associate (gfc_expr *associate, gfc_expr *selector, + bool select_type = false) { gfc_ref *ref; gfc_symbol *assoc_sym; @@ -6405,12 +6406,30 @@ copy_ts_from_selector_to_associate (gfc_expr *associate, gfc_expr *selector) assoc_sym->as = NULL; build_class_sym: - if (selector->ts.type == BT_CLASS) + /* Deal with the very specific case of a SELECT_TYPE selector being an + associate_name whose type has been identified by component references. + It must be assumed that it will be identified as a CLASS expression, + so convert it now. */ + if (select_type + && IS_INFERRED_TYPE (selector) + && selector->ts.type == BT_DERIVED) + { + gfc_find_derived_vtab (selector->ts.u.derived); + /* The correct class container has to be available. */ + assoc_sym->ts.u.derived = selector->ts.u.derived; + assoc_sym->ts.type = BT_CLASS; + assoc_sym->attr.pointer = 1; + if (!selector->ts.u.derived->attr.is_class) + gfc_build_class_symbol (&assoc_sym->ts, &assoc_sym->attr, &assoc_sym->as); + associate->ts = assoc_sym->ts; + } + else if (selector->ts.type == BT_CLASS) { /* The correct class container has to be available. */ assoc_sym->ts.type = BT_CLASS; assoc_sym->ts.u.derived = CLASS_DATA (selector) - ? CLASS_DATA (selector)->ts.u.derived : selector->ts.u.derived; + ? CLASS_DATA (selector)->ts.u.derived + : selector->ts.u.derived; assoc_sym->attr.pointer = 1; gfc_build_class_symbol (&assoc_sym->ts, &assoc_sym->attr, &assoc_sym->as); } @@ -6438,7 +6457,7 @@ build_associate_name (const char *name, gfc_expr **e1, gfc_expr **e2) if (expr2->ts.type == BT_UNKNOWN) sym->attr.untyped = 1; else - copy_ts_from_selector_to_associate (expr1, expr2); + copy_ts_from_selector_to_associate (expr1, expr2, true); sym->attr.flavor = FL_VARIABLE; sym->attr.referenced = 1; diff --git a/gcc/fortran/module.cc b/gcc/fortran/module.cc index d1de53cbdb44..c565b84d61b7 100644 --- a/gcc/fortran/module.cc +++ b/gcc/fortran/module.cc @@ -195,7 +195,12 @@ static const char *module_name; /* The name of the .smod file that the submodule will write to. */ static const char *submodule_name; +/* The list of use statements to apply to the current namespace + before parsing the non-use statements. */ static gfc_use_list *module_list; +/* The end of the MODULE_LIST list above at the time the recognition + of the current statement started. */ +static gfc_use_list **old_module_list_tail; /* If we're reading an intrinsic module, this is its ID. */ static intmod_id current_intmod; @@ -7561,6 +7566,8 @@ gfc_use_modules (void) gfc_use_module (module_list); free (module_list); } + module_list = NULL; + old_module_list_tail = &module_list; gfc_rename_list = NULL; } @@ -7584,6 +7591,30 @@ gfc_free_use_stmts (gfc_use_list *use_stmts) } +/* Remember the end of the MODULE_LIST list, so that the list can be restored + to its previous state if the current statement is erroneous. */ + +void +gfc_save_module_list () +{ + gfc_use_list **tail = &module_list; + while (*tail != NULL) + tail = &(*tail)->next; + old_module_list_tail = tail; +} + + +/* Restore the MODULE_LIST list to its previous value and free the use + statements that are no longer part of the list. */ + +void +gfc_restore_old_module_list () +{ + gfc_free_use_stmts (*old_module_list_tail); + *old_module_list_tail = NULL; +} + + void gfc_module_init_2 (void) { diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc index 38de60238c0e..315ec68f259d 100644 --- a/gcc/fortran/openmp.cc +++ b/gcc/fortran/openmp.cc @@ -164,6 +164,7 @@ gfc_free_omp_clauses (gfc_omp_clauses *c) gfc_free_expr (c->if_expr); for (i = 0; i < OMP_IF_LAST; i++) gfc_free_expr (c->if_exprs[i]); + gfc_free_expr (c->self_expr); gfc_free_expr (c->final_expr); gfc_free_expr (c->num_threads); gfc_free_expr (c->chunk_size); @@ -1210,7 +1211,7 @@ gfc_match_omp_map_clause (gfc_omp_namelist **list, gfc_omp_map_op map_op, { gfc_omp_namelist *n; for (n = *head; n; n = n->next) - n->u.map_op = map_op; + n->u.map.op = map_op; return true; } @@ -1524,7 +1525,7 @@ gfc_match_omp_clause_reduction (char pc, gfc_omp_clauses *c, bool openacc, gfc_omp_namelist *p = gfc_get_omp_namelist (), **tl; p->sym = n->sym; p->where = p->where; - p->u.map_op = OMP_MAP_ALWAYS_TOFROM; + p->u.map.op = OMP_MAP_ALWAYS_TOFROM; tl = &c->lists[OMP_LIST_MAP]; while (*tl) @@ -2181,11 +2182,25 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, { if (openacc) { - if (gfc_match ("copyin ( ") == MATCH_YES - && gfc_match_omp_map_clause (&c->lists[OMP_LIST_MAP], - OMP_MAP_TO, true, - allow_derived)) - continue; + if (gfc_match ("copyin ( ") == MATCH_YES) + { + bool readonly = gfc_match ("readonly : ") == MATCH_YES; + head = NULL; + if (gfc_match_omp_variable_list ("", + &c->lists[OMP_LIST_MAP], + true, NULL, &head, true, + allow_derived) + == MATCH_YES) + { + gfc_omp_namelist *n; + for (n = *head; n; n = n->next) + { + n->u.map.op = OMP_MAP_TO; + n->u.map.readonly = readonly; + } + continue; + } + } } else if (gfc_match_omp_variable_list ("copyin (", &c->lists[OMP_LIST_COPYIN], @@ -3134,7 +3149,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, { gfc_omp_namelist *n; for (n = *head; n; n = n->next) - n->u.map_op = map_op; + n->u.map.op = map_op; continue; } gfc_current_locus = old_loc; @@ -4002,7 +4017,7 @@ gfc_match_oacc_declare (void) if (gfc_current_ns->proc_name && gfc_current_ns->proc_name->attr.flavor == FL_MODULE) { - if (n->u.map_op != OMP_MAP_ALLOC && n->u.map_op != OMP_MAP_TO) + if (n->u.map.op != OMP_MAP_ALLOC && n->u.map.op != OMP_MAP_TO) { gfc_error ("Invalid clause in module with !$ACC DECLARE at %L", &where); @@ -4036,7 +4051,7 @@ gfc_match_oacc_declare (void) return MATCH_ERROR; } - switch (n->u.map_op) + switch (n->u.map.op) { case OMP_MAP_FORCE_ALLOC: case OMP_MAP_ALLOC: @@ -4151,21 +4166,36 @@ gfc_match_oacc_wait (void) match gfc_match_oacc_cache (void) { + bool readonly = false; gfc_omp_clauses *c = gfc_get_omp_clauses (); /* The OpenACC cache directive explicitly only allows "array elements or subarrays", which we're currently not checking here. Either check this after the call of gfc_match_omp_variable_list, or add something like a only_sections variant next to its allow_sections parameter. */ - match m = gfc_match_omp_variable_list (" (", - &c->lists[OMP_LIST_CACHE], true, - NULL, NULL, true); + match m = gfc_match (" ( "); if (m != MATCH_YES) { gfc_free_omp_clauses(c); return m; } - if (gfc_current_state() != COMP_DO + if (gfc_match ("readonly : ") == MATCH_YES) + readonly = true; + + gfc_omp_namelist **head = NULL; + m = gfc_match_omp_variable_list ("", &c->lists[OMP_LIST_CACHE], true, + NULL, &head, true); + if (m != MATCH_YES) + { + gfc_free_omp_clauses(c); + return m; + } + + if (readonly) + for (gfc_omp_namelist *n = *head; n; n = n->next) + n->u.map.readonly = true; + + if (gfc_current_state() != COMP_DO && gfc_current_state() != COMP_DO_CONCURRENT) { gfc_error ("ACC CACHE directive must be inside of loop %C"); @@ -8436,8 +8466,8 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, } if (openacc && list == OMP_LIST_MAP - && (n->u.map_op == OMP_MAP_ATTACH - || n->u.map_op == OMP_MAP_DETACH)) + && (n->u.map.op == OMP_MAP_ATTACH + || n->u.map.op == OMP_MAP_DETACH)) { symbol_attribute attr; if (n->expr) @@ -8447,7 +8477,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, if (!attr.pointer && !attr.allocatable) gfc_error ("%qs clause argument must be ALLOCATABLE or " "a POINTER at %L", - (n->u.map_op == OMP_MAP_ATTACH) ? "attach" + (n->u.map.op == OMP_MAP_ATTACH) ? "attach" : "detach", &n->where); } if (lastref @@ -8518,7 +8548,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, else if (openacc) { if (list == OMP_LIST_MAP - && n->u.map_op == OMP_MAP_FORCE_DEVICEPTR) + && n->u.map.op == OMP_MAP_FORCE_DEVICEPTR) resolve_oacc_deviceptr_clause (n->sym, n->where, name); else resolve_oacc_data_clauses (n->sym, n->where, name); @@ -8540,7 +8570,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, { case EXEC_OMP_TARGET: case EXEC_OMP_TARGET_DATA: - switch (n->u.map_op) + switch (n->u.map.op) { case OMP_MAP_TO: case OMP_MAP_ALWAYS_TO: @@ -8567,7 +8597,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, } break; case EXEC_OMP_TARGET_ENTER_DATA: - switch (n->u.map_op) + switch (n->u.map.op) { case OMP_MAP_TO: case OMP_MAP_ALWAYS_TO: @@ -8577,16 +8607,16 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, case OMP_MAP_PRESENT_ALLOC: break; case OMP_MAP_TOFROM: - n->u.map_op = OMP_MAP_TO; + n->u.map.op = OMP_MAP_TO; break; case OMP_MAP_ALWAYS_TOFROM: - n->u.map_op = OMP_MAP_ALWAYS_TO; + n->u.map.op = OMP_MAP_ALWAYS_TO; break; case OMP_MAP_PRESENT_TOFROM: - n->u.map_op = OMP_MAP_PRESENT_TO; + n->u.map.op = OMP_MAP_PRESENT_TO; break; case OMP_MAP_ALWAYS_PRESENT_TOFROM: - n->u.map_op = OMP_MAP_ALWAYS_PRESENT_TO; + n->u.map.op = OMP_MAP_ALWAYS_PRESENT_TO; break; default: gfc_error ("TARGET ENTER DATA with map-type other " @@ -8596,7 +8626,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, } break; case EXEC_OMP_TARGET_EXIT_DATA: - switch (n->u.map_op) + switch (n->u.map.op) { case OMP_MAP_FROM: case OMP_MAP_ALWAYS_FROM: @@ -8606,16 +8636,16 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, case OMP_MAP_DELETE: break; case OMP_MAP_TOFROM: - n->u.map_op = OMP_MAP_FROM; + n->u.map.op = OMP_MAP_FROM; break; case OMP_MAP_ALWAYS_TOFROM: - n->u.map_op = OMP_MAP_ALWAYS_FROM; + n->u.map.op = OMP_MAP_ALWAYS_FROM; break; case OMP_MAP_PRESENT_TOFROM: - n->u.map_op = OMP_MAP_PRESENT_FROM; + n->u.map.op = OMP_MAP_PRESENT_FROM; break; case OMP_MAP_ALWAYS_PRESENT_TOFROM: - n->u.map_op = OMP_MAP_ALWAYS_PRESENT_FROM; + n->u.map.op = OMP_MAP_ALWAYS_PRESENT_FROM; break; default: gfc_error ("TARGET EXIT DATA with map-type other " diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc index a4fda6e5eb6b..79c810c86ba1 100644 --- a/gcc/fortran/parse.cc +++ b/gcc/fortran/parse.cc @@ -1800,6 +1800,7 @@ next_statement (void) locus old_locus; gfc_enforce_clean_symbol_state (); + gfc_save_module_list (); gfc_new_block = NULL; @@ -3104,6 +3105,9 @@ reject_statement (void) gfc_reject_data (gfc_current_ns); + /* Don't queue use-association of a module if we reject the use statement. */ + gfc_restore_old_module_list (); + gfc_new_block = NULL; gfc_undo_symbols (); gfc_clear_warning (); @@ -5150,6 +5154,17 @@ parse_associate (void) sym->declared_at = a->where; gfc_set_sym_referenced (sym); + /* If the selector is a inferred type then the associate_name had better + be as well. Use array references, if present, to identify it as an + array. */ + if (IS_INFERRED_TYPE (a->target)) + { + sym->assoc->inferred_type = 1; + for (gfc_ref *r = a->target->ref; r; r = r->next) + if (r->type == REF_ARRAY) + sym->attr.dimension = 1; + } + /* Initialize the typespec. It is not available in all cases, however, as it may only be set on the target during resolution. Still, sometimes it helps to have it right now -- especially @@ -5176,21 +5191,41 @@ parse_associate (void) && sym->ts.u.cl->length->expr_type == EXPR_CONSTANT)) sym->ts.u.cl = gfc_new_charlen (gfc_current_ns, NULL); + /* If the function has been parsed, go straight to the result to + obtain the expression rank. */ + if (target->expr_type == EXPR_FUNCTION + && target->symtree + && target->symtree->n.sym) + { + tsym = target->symtree->n.sym; + if (!tsym->result) + tsym->result = tsym; + sym->ts = tsym->result->ts; + if (sym->ts.type == BT_CLASS) + { + if (CLASS_DATA (sym)->as) + target->rank = CLASS_DATA (sym)->as->rank; + sym->attr.class_ok = 1; + } + else + target->rank = tsym->result->as ? tsym->result->as->rank : 0; + } + /* Check if the target expression is array valued. This cannot be done by calling gfc_resolve_expr because the context is unavailable. However, the references can be resolved and the rank of the target expression set. */ - if (target->ref && gfc_resolve_ref (target) + if (!sym->assoc->inferred_type + && target->ref && gfc_resolve_ref (target) && target->expr_type != EXPR_ARRAY && target->expr_type != EXPR_COMPCALL) gfc_expression_rank (target); /* Determine whether or not function expressions with unknown type are structure constructors. If so, the function result can be converted - to be a derived type. - TODO: Deal with references to sibling functions that have not yet been - parsed (PRs 89645 and 99065). */ - if (target->expr_type == EXPR_FUNCTION && target->ts.type == BT_UNKNOWN) + to be a derived type. */ + if (target->expr_type == EXPR_FUNCTION + && target->ts.type == BT_UNKNOWN) { gfc_symbol *derived; /* The derived type has a leading uppercase character. */ @@ -5200,16 +5235,7 @@ parse_associate (void) { sym->ts.type = BT_DERIVED; sym->ts.u.derived = derived; - } - else if (target->symtree && (tsym = target->symtree->n.sym)) - { - sym->ts = tsym->result ? tsym->result->ts : tsym->ts; - if (sym->ts.type == BT_CLASS) - { - if (CLASS_DATA (sym)->as) - target->rank = CLASS_DATA (sym)->as->rank; - sym->attr.class_ok = 1; - } + sym->assoc->inferred_type = 0; } } diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc index 12e7bf3c873a..5dd6875a4a68 100644 --- a/gcc/fortran/primary.cc +++ b/gcc/fortran/primary.cc @@ -2003,7 +2003,7 @@ extend_ref (gfc_expr *primary, gfc_ref *tail) /* Used by gfc_match_varspec() to match an inquiry reference. */ -static bool +bool is_inquiry_ref (const char *name, gfc_ref **ref) { inquiry_type type; @@ -2035,6 +2035,29 @@ is_inquiry_ref (const char *name, gfc_ref **ref) } +/* Check to see if functions in operator expressions can be resolved now. */ + +static bool +resolvable_fcns (gfc_expr *e, + gfc_symbol *sym ATTRIBUTE_UNUSED, + int *f ATTRIBUTE_UNUSED) +{ + bool p; + gfc_symbol *s; + + if (e->expr_type != EXPR_FUNCTION) + return false; + + s = e && e->symtree && e->symtree->n.sym ? e->symtree->n.sym : NULL; + p = s && (s->attr.use_assoc + || s->attr.host_assoc + || s->attr.if_source == IFSRC_DECL + || s->attr.proc == PROC_INTRINSIC + || gfc_is_intrinsic (s, 0, e->where)); + return !p; +} + + /* Match any additional specifications associated with the current variable like member references or substrings. If equiv_flag is set we only match stuff that is allowed inside an EQUIVALENCE @@ -2057,6 +2080,7 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, bool unknown; bool inquiry; bool intrinsic; + bool inferred_type; locus old_loc; char sep; @@ -2087,6 +2111,18 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, if (sym->assoc && sym->assoc->target) tgt_expr = sym->assoc->target; + inferred_type = IS_INFERRED_TYPE (primary); + + /* SELECT TYPE and SELECT RANK temporaries within an ASSOCIATE block, whose + selector has not been parsed, can generate errors with array and component + refs.. Use 'inferred_type' as a flag to suppress these errors. */ + if (!inferred_type + && (gfc_peek_ascii_char () == '(' && !sym->attr.dimension) + && !sym->attr.codimension + && sym->attr.select_type_temporary + && !sym->attr.select_rank_temporary) + inferred_type = true; + /* For associate names, we may not yet know whether they are arrays or not. If the selector expression is unambiguously an array; eg. a full array or an array section, then the associate name must be an array and we can @@ -2136,7 +2172,8 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, sym->ts.u.derived = tgt_expr->ts.u.derived; } - if ((equiv_flag && gfc_peek_ascii_char () == '(') + if ((inferred_type && !sym->as && gfc_peek_ascii_char () == '(') + || (equiv_flag && gfc_peek_ascii_char () == '(') || gfc_peek_ascii_char () == '[' || sym->attr.codimension || (sym->attr.dimension && sym->ts.type != BT_CLASS && !sym->attr.proc_pointer && !gfc_is_proc_ptr_comp (primary) @@ -2194,41 +2231,100 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, inquiry = false; if (m == MATCH_YES && sep == '%' && primary->ts.type != BT_CLASS - && primary->ts.type != BT_DERIVED) + && (primary->ts.type != BT_DERIVED || inferred_type)) { match mm; old_loc = gfc_current_locus; mm = gfc_match_name (name); - if (mm == MATCH_YES && is_inquiry_ref (name, &tmp)) + /* This is a usable inquiry reference, if the symbol is already known + to have a type or no derived types with a component of this name + can be found. If this was an inquiry reference with the same name + as a derived component and the associate-name type is not derived + or class, this is fixed up in 'gfc_fixup_inferred_type_refs'. */ + if (mm == MATCH_YES && is_inquiry_ref (name, &tmp) + && !(sym->ts.type == BT_UNKNOWN + && gfc_find_derived_types (sym, gfc_current_ns, name))) inquiry = true; gfc_current_locus = old_loc; } + /* Use the default type if there is one. */ if (sym->ts.type == BT_UNKNOWN && m == MATCH_YES && gfc_get_default_type (sym->name, sym->ns)->type == BT_DERIVED) gfc_set_default_type (sym, 0, sym->ns); - /* See if there is a usable typespec in the "no IMPLICIT type" error. */ - if (sym->ts.type == BT_UNKNOWN && m == MATCH_YES) + /* See if the type can be determined by resolution of the selector expression, + if allowable now, or inferred from references. */ + if ((sym->ts.type == BT_UNKNOWN || inferred_type) + && m == MATCH_YES) { - bool permissible; - - /* These target expressions can be resolved at any time. */ - permissible = tgt_expr && tgt_expr->symtree && tgt_expr->symtree->n.sym - && (tgt_expr->symtree->n.sym->attr.use_assoc - || tgt_expr->symtree->n.sym->attr.host_assoc - || tgt_expr->symtree->n.sym->attr.if_source - == IFSRC_DECL); - permissible = permissible - || (tgt_expr && tgt_expr->expr_type == EXPR_OP); - - if (permissible) + bool sym_present, resolved = false; + gfc_symbol *tgt_sym; + + sym_present = tgt_expr && tgt_expr->symtree && tgt_expr->symtree->n.sym; + tgt_sym = sym_present ? tgt_expr->symtree->n.sym : NULL; + + /* These target expressions can be resolved at any time: + (i) With a declared symbol or intrinsic function; or + (ii) An operator expression, + just as long as (iii) all the functions in the expression have been + declared or are intrinsic. */ + if (((sym_present // (i) + && (tgt_sym->attr.use_assoc + || tgt_sym->attr.host_assoc + || tgt_sym->attr.if_source == IFSRC_DECL + || tgt_sym->attr.proc == PROC_INTRINSIC + || gfc_is_intrinsic (tgt_sym, 0, tgt_expr->where))) + || (tgt_expr && tgt_expr->expr_type == EXPR_OP)) // (ii) + && !gfc_traverse_expr (tgt_expr, NULL, resolvable_fcns, 0) // (iii) + && gfc_resolve_expr (tgt_expr)) { - gfc_resolve_expr (tgt_expr); sym->ts = tgt_expr->ts; + primary->ts = sym->ts; + resolved = true; } - if (sym->ts.type == BT_UNKNOWN) + /* If this hasn't done the trick and the target expression is a function, + or an unresolved operator expression, then this must be a derived type + if 'name' matches an accessible type both in this namespace and in the + as yet unparsed contained function. In principle, the type could have + already been inferred to be complex and yet a derived type with a + component name 're' or 'im' could be found. */ + if (tgt_expr + && (tgt_expr->expr_type == EXPR_FUNCTION + || (!resolved && tgt_expr->expr_type == EXPR_OP)) + && (sym->ts.type == BT_UNKNOWN + || (inferred_type && sym->ts.type != BT_COMPLEX)) + && gfc_find_derived_types (sym, gfc_current_ns, name, true)) + { + sym->assoc->inferred_type = 1; + /* The first returned type is as good as any at this stage. The final + determination is made in 'gfc_fixup_inferred_type_refs'*/ + gfc_symbol **dts = &sym->assoc->derived_types; + tgt_expr->ts.type = BT_DERIVED; + tgt_expr->ts.kind = 0; + tgt_expr->ts.u.derived = *dts; + sym->ts = tgt_expr->ts; + primary->ts = sym->ts; + /* Delete the dt list even if this process has to be done again for + another primary expression. */ + while (*dts && (*dts)->dt_next) + { + gfc_symbol **tmp = &(*dts)->dt_next; + *dts = NULL; + dts = tmp; + } + } + /* If there is a usable inquiry reference not there are no matching + derived types, force the inquiry reference by setting unknown the + type of the primary expression. */ + else if (inquiry && (sym->ts.type == BT_DERIVED && inferred_type) + && !gfc_find_derived_types (sym, gfc_current_ns, name)) + primary->ts.type = BT_UNKNOWN; + + /* An inquiry reference might determine the type, otherwise we have an + error. */ + if (sym->ts.type == BT_UNKNOWN && !inquiry) { gfc_error ("Symbol %qs at %C has no IMPLICIT type", sym->name); return MATCH_ERROR; @@ -2273,6 +2369,7 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, { if (tmp) { + gfc_symbol *s; switch (tmp->u.i) { case INQUIRY_RE: @@ -2294,6 +2391,39 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, break; } + /* If necessary, infer the type of the primary expression + and the associate-name using the the inquiry ref.. */ + s = primary->symtree ? primary->symtree->n.sym : NULL; + if (s && s->assoc && s->assoc->target + && (s->ts.type == BT_UNKNOWN + || (primary->ts.type == BT_UNKNOWN + && s->assoc->inferred_type + && s->ts.type == BT_DERIVED))) + { + if (tmp->u.i == INQUIRY_RE || tmp->u.i == INQUIRY_IM) + { + s->ts.type = BT_COMPLEX; + s->ts.kind = gfc_default_real_kind;; + s->assoc->inferred_type = 1; + primary->ts = s->ts; + } + else if (tmp->u.i == INQUIRY_LEN) + { + s->ts.type = BT_CHARACTER; + s->ts.kind = gfc_default_character_kind;; + s->assoc->inferred_type = 1; + primary->ts = s->ts; + } + else if (s->ts.type == BT_UNKNOWN) + { + /* KIND inquiry gives no clue as to symbol type. */ + primary->ref = tmp; + primary->ts.type = BT_INTEGER; + primary->ts.kind = gfc_default_integer_kind; + return MATCH_YES; + } + } + if ((tmp->u.i == INQUIRY_RE || tmp->u.i == INQUIRY_IM) && primary->ts.type != BT_COMPLEX) { @@ -2674,6 +2804,18 @@ gfc_variable_attr (gfc_expr *expr, gfc_typespec *ts) if (ts != NULL && expr->ts.type == BT_UNKNOWN) *ts = sym->ts; + /* Catch left-overs from match_actual_arg, where an actual argument of a + procedure is given a temporary ts.type == BT_PROCEDURE. The fixup is + needed for structure constructors in DATA statements, where a pointer + is associated with a data target, and the argument has not been fully + resolved yet. Components references are dealt with further below. */ + if (ts != NULL + && expr->ts.type == BT_PROCEDURE + && expr->ref == NULL + && attr.flavor != FL_PROCEDURE + && attr.target) + *ts = sym->ts; + has_inquiry_part = false; for (ref = expr->ref; ref; ref = ref->next) if (ref->type == REF_INQUIRY) diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 02acc4aef31b..4cbf71861195 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -72,9 +72,6 @@ static bool first_actual_arg = false; static int omp_workshare_flag; -/* True if we are processing a formal arglist. The corresponding function - resets the flag each time that it is read. */ -static bool formal_arg_flag = false; /* True if we are resolving a specification expression. */ static bool specification_expr = false; @@ -89,12 +86,6 @@ static bitmap_obstack labels_obstack; static bool inquiry_argument = false; -bool -gfc_is_formal_arg (void) -{ - return formal_arg_flag; -} - /* Is the symbol host associated? */ static bool is_sym_host_assoc (gfc_symbol *sym, gfc_namespace *ns) @@ -285,7 +276,8 @@ gfc_resolve_formal_arglist (gfc_symbol *proc) sym->attr.always_explicit = 1; } - formal_arg_flag = true; + gfc_namespace *orig_current_ns = gfc_current_ns; + gfc_current_ns = gfc_get_procedure_ns (proc); for (f = proc->formal; f; f = f->next) { @@ -306,17 +298,18 @@ gfc_resolve_formal_arglist (gfc_symbol *proc) &proc->declared_at); continue; } - else if (sym->attr.procedure && sym->attr.if_source != IFSRC_DECL + + if (sym->attr.procedure && sym->attr.if_source != IFSRC_DECL && !resolve_procedure_interface (sym)) - return; + break; if (strcmp (proc->name, sym->name) == 0) - { - gfc_error ("Self-referential argument " - "%qs at %L is not allowed", sym->name, - &proc->declared_at); - return; - } + { + gfc_error ("Self-referential argument " + "%qs at %L is not allowed", sym->name, + &proc->declared_at); + break; + } if (sym->attr.if_source != IFSRC_UNKNOWN) gfc_resolve_formal_arglist (sym); @@ -533,7 +526,8 @@ gfc_resolve_formal_arglist (gfc_symbol *proc) } } } - formal_arg_flag = false; + + gfc_current_ns = orig_current_ns; } @@ -1969,12 +1963,20 @@ resolve_procedure_expression (gfc_expr* expr) || (sym->attr.function && sym->result == sym)) return true; - /* A non-RECURSIVE procedure that is used as procedure expression within its + /* A non-RECURSIVE procedure that is used as procedure expression within its own body is in danger of being called recursively. */ if (is_illegal_recursion (sym, gfc_current_ns)) - gfc_warning (0, "Non-RECURSIVE procedure %qs at %L is possibly calling" - " itself recursively. Declare it RECURSIVE or use" - " %<-frecursive%>", sym->name, &expr->where); + { + if (sym->attr.use_assoc && expr->symtree->name[0] == '@') + gfc_warning (0, "Non-RECURSIVE procedure %qs from module %qs is " + " possibly calling itself recursively in procedure %qs. " + " Declare it RECURSIVE or use %<-frecursive%>", + sym->name, sym->module, gfc_current_ns->proc_name->name); + else + gfc_warning (0, "Non-RECURSIVE procedure %qs at %L is possibly calling" + " itself recursively. Declare it RECURSIVE or use" + " %<-frecursive%>", sym->name, &expr->where); + } return true; } @@ -5866,6 +5868,18 @@ resolve_variable (gfc_expr *e) return false; } + /* Guessed type variables are associate_names whose selector had not been + parsed at the time that the construct was parsed. Now the namespace is + being resolved, the TKR of the selector will be available for fixup of + the associate_name. */ + if (IS_INFERRED_TYPE (e) && e->ref) + { + gfc_fixup_inferred_type_refs (e); + /* KIND inquiry ref returns the kind of the target. */ + if (e->expr_type == EXPR_CONSTANT) + return true; + } + /* For variables that are used in an associate (target => object) where the object's basetype is array valued while the target is scalar, the ts' type of the component refs is still array valued, which @@ -6171,6 +6185,159 @@ resolve_variable (gfc_expr *e) } +/* 'sym' was initially guessed to be derived type but has been corrected + in resolve_assoc_var to be a class entity or the derived type correcting. + If a class entity it will certainly need the _data reference or the + reference derived type symbol correcting in the first component ref if + a derived type. */ + +void +gfc_fixup_inferred_type_refs (gfc_expr *e) +{ + gfc_ref *ref, *new_ref; + gfc_symbol *sym, *derived; + gfc_expr *target; + sym = e->symtree->n.sym; + + /* An associate_name whose selector is (i) a component ref of a selector + that is a inferred type associate_name; or (ii) an intrinsic type that + has been inferred from an inquiry ref. */ + if (sym->ts.type != BT_DERIVED && sym->ts.type != BT_CLASS) + { + sym->attr.dimension = sym->assoc->target->rank ? 1 : 0; + if (!sym->attr.dimension && e->ref->type == REF_ARRAY) + { + ref = e->ref; + /* A substring misidentified as an array section. */ + if (sym->ts.type == BT_CHARACTER + && ref->u.ar.start[0] && ref->u.ar.end[0] + && !ref->u.ar.stride[0]) + { + new_ref = gfc_get_ref (); + new_ref->type = REF_SUBSTRING; + new_ref->u.ss.start = ref->u.ar.start[0]; + new_ref->u.ss.end = ref->u.ar.end[0]; + new_ref->u.ss.length = sym->ts.u.cl; + *ref = *new_ref; + free (new_ref); + } + else + { + e->ref = ref->next; + free (ref); + } + } + + /* It is possible for an inquiry reference to be mistaken for a + component reference. Correct this now. */ + ref = e->ref; + if (ref && ref->type == REF_ARRAY) + ref = ref->next; + if (ref && ref->type == REF_COMPONENT + && is_inquiry_ref (ref->u.c.component->name, &new_ref)) + { + e->symtree->n.sym = sym; + *ref = *new_ref; + gfc_free_ref_list (new_ref); + } + + /* The kind of the associate name is best evaluated directly from the + selector because of the guesses made in primary.cc, when the type + is still unknown. */ + if (ref && ref->type == REF_INQUIRY && ref->u.i == INQUIRY_KIND) + { + gfc_expr *ne = gfc_get_int_expr (gfc_default_integer_kind, &e->where, + sym->assoc->target->ts.kind); + gfc_replace_expr (e, ne); + } + + /* Now that the references are all sorted out, set the expression rank + and return. */ + gfc_expression_rank (e); + return; + } + + derived = sym->ts.type == BT_CLASS ? CLASS_DATA (sym)->ts.u.derived + : sym->ts.u.derived; + + /* Ensure that class symbols have an array spec and ensure that there + is a _data field reference following class type references. */ + if (sym->ts.type == BT_CLASS + && sym->assoc->target->ts.type == BT_CLASS) + { + e->rank = CLASS_DATA (sym)->as ? CLASS_DATA (sym)->as->rank : 0; + sym->attr.dimension = 0; + CLASS_DATA (sym)->attr.dimension = e->rank ? 1 : 0; + if (e->ref && (e->ref->type != REF_COMPONENT + || e->ref->u.c.component->name[0] != '_')) + { + ref = gfc_get_ref (); + ref->type = REF_COMPONENT; + ref->next = e->ref; + e->ref = ref; + ref->u.c.component = gfc_find_component (sym->ts.u.derived, "_data", + true, true, NULL); + ref->u.c.sym = sym->ts.u.derived; + } + } + + /* Proceed as far as the first component reference and ensure that the + correct derived type is being used. */ + for (ref = e->ref; ref; ref = ref->next) + if (ref->type == REF_COMPONENT) + { + if (ref->u.c.component->name[0] != '_') + ref->u.c.sym = derived; + else + ref->u.c.sym = sym->ts.u.derived; + break; + } + + /* Verify that the type inferrence mechanism has not introduced a spurious + array reference. This can happen with an associate name, whose selector + is an element of another inferred type. */ + target = e->symtree->n.sym->assoc->target; + if (!(sym->ts.type == BT_CLASS ? CLASS_DATA (sym)->as : sym->as) + && e != target && !target->rank) + { + /* First case: array ref after the scalar class or derived + associate_name. */ + if (e->ref && e->ref->type == REF_ARRAY + && e->ref->u.ar.type != AR_ELEMENT) + { + ref = e->ref; + e->ref = ref->next; + free (ref); + + /* If it hasn't a ref to the '_data' field supply one. */ + if (sym->ts.type == BT_CLASS + && !(e->ref->type == REF_COMPONENT + && strcmp (e->ref->u.c.component->name, "_data"))) + { + gfc_ref *new_ref; + gfc_find_component (e->symtree->n.sym->ts.u.derived, + "_data", true, true, &new_ref); + new_ref->next = e->ref; + e->ref = new_ref; + } + } + /* 2nd case: a ref to the '_data' field followed by an array ref. */ + else if (e->ref && e->ref->type == REF_COMPONENT + && strcmp (e->ref->u.c.component->name, "_data") == 0 + && e->ref->next && e->ref->next->type == REF_ARRAY + && e->ref->next->u.ar.type != AR_ELEMENT) + { + ref = e->ref->next; + e->ref->next = e->ref->next->next; + free (ref); + } + } + + /* Now that all the references are OK, get the expression rank. */ + gfc_expression_rank (e); +} + + /* Checks to see that the correct symbol has been host associated. The only situations where this arises are: (i) That in which a twice contained function is parsed after @@ -6661,6 +6828,13 @@ resolve_typebound_static (gfc_expr* e, gfc_symtree** target, if (st) *target = st; } + + if (is_illegal_recursion ((*target)->n.sym, gfc_current_ns) + && !e->value.compcall.tbp->deferred) + gfc_warning (0, "Non-RECURSIVE procedure %qs at %L is possibly calling" + " itself recursively. Declare it RECURSIVE or use" + " %<-frecursive%>", (*target)->n.sym->name, &e->where); + return true; } @@ -9263,6 +9437,53 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) return; } + if (sym->assoc->inferred_type || IS_INFERRED_TYPE (target)) + { + /* By now, the type of the target has been fixed up. */ + symbol_attribute attr; + + if (sym->ts.type == BT_DERIVED + && target->ts.type == BT_CLASS + && !UNLIMITED_POLY (target)) + { + /* Inferred to be derived type but the target has type class. */ + sym->ts = CLASS_DATA (target)->ts; + if (!sym->as) + sym->as = gfc_copy_array_spec (CLASS_DATA (target)->as); + attr = CLASS_DATA (sym) ? CLASS_DATA (sym)->attr : sym->attr; + sym->attr.dimension = target->rank ? 1 : 0; + gfc_change_class (&sym->ts, &attr, sym->as, + target->rank, gfc_get_corank (target)); + sym->as = NULL; + } + else if (target->ts.type == BT_DERIVED + && target->symtree && target->symtree->n.sym + && target->symtree->n.sym->ts.type == BT_CLASS + && IS_INFERRED_TYPE (target) + && target->ref && target->ref->next + && target->ref->next->type == REF_ARRAY + && !target->ref->next->next) + { + /* A inferred type selector whose symbol has been determined to be + a class array but which only has an array reference. Change the + associate name and the selector to class type. */ + sym->ts = target->ts; + attr = CLASS_DATA (sym) ? CLASS_DATA (sym)->attr : sym->attr; + sym->attr.dimension = target->rank ? 1 : 0; + gfc_change_class (&sym->ts, &attr, sym->as, + target->rank, gfc_get_corank (target)); + sym->as = NULL; + target->ts = sym->ts; + } + else if ((target->ts.type == BT_DERIVED) + || (sym->ts.type == BT_CLASS && target->ts.type == BT_CLASS + && CLASS_DATA (target)->as && !CLASS_DATA (sym)->as)) + /* Confirmed to be either a derived type or misidentified to be a + scalar class object, when the selector is a class array. */ + sym->ts = target->ts; + } + + if (target->expr_type == EXPR_NULL) { gfc_error ("Selector at %L cannot be NULL()", &target->where); @@ -9289,15 +9510,50 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) || gfc_is_ptr_fcn (target)); /* Finally resolve if this is an array or not. */ + if (target->expr_type == EXPR_FUNCTION + && (sym->ts.type == BT_CLASS || sym->ts.type == BT_DERIVED)) + { + gfc_expression_rank (target); + if (target->ts.type == BT_DERIVED + && !sym->as + && target->symtree->n.sym->as) + { + sym->as = gfc_copy_array_spec (target->symtree->n.sym->as); + sym->attr.dimension = 1; + } + else if (target->ts.type == BT_CLASS + && CLASS_DATA (target)->as) + { + target->rank = CLASS_DATA (target)->as->rank; + if (!(sym->ts.type == BT_CLASS && CLASS_DATA (sym)->as)) + { + sym->ts = target->ts; + sym->attr.dimension = 0; + } + } + } + + if (sym->attr.dimension && target->rank == 0) { /* primary.cc makes the assumption that a reference to an associate name followed by a left parenthesis is an array reference. */ - if (sym->ts.type != BT_CHARACTER) - gfc_error ("Associate-name %qs at %L is used as array", - sym->name, &sym->declared_at); - sym->attr.dimension = 0; - return; + if (sym->assoc->inferred_type && sym->ts.type != BT_CLASS) + { + gfc_expression_rank (sym->assoc->target); + sym->attr.dimension = sym->assoc->target->rank ? 1 : 0; + if (!sym->attr.dimension && sym->as) + sym->as = NULL; + } + + if (sym->attr.dimension && target->rank == 0) + { + if (sym->ts.type != BT_CHARACTER) + gfc_error ("Associate-name %qs at %L is used as array", + sym->name, &sym->declared_at); + sym->attr.dimension = 0; + return; + } } /* We cannot deal with class selectors that need temporaries. */ @@ -9356,7 +9612,7 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) correct this now. */ gfc_typespec *ts = &target->ts; gfc_ref *ref; - gfc_component *c; + for (ref = target->ref; ref != NULL; ref = ref->next) { switch (ref->type) @@ -9374,32 +9630,15 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) } /* Create a scalar instance of the current class type. Because the rank of a class array goes into its name, the type has to be - rebuild. The alternative of (re-)setting just the attributes + rebuilt. The alternative of (re-)setting just the attributes and as in the current type, destroys the type also in other places. */ as = NULL; sym->ts = *ts; sym->ts.type = BT_CLASS; attr = CLASS_DATA (sym) ? CLASS_DATA (sym)->attr : sym->attr; - attr.class_ok = 0; - attr.associate_var = 1; - attr.dimension = attr.codimension = 0; - attr.class_pointer = 1; - if (!gfc_build_class_symbol (&sym->ts, &attr, &as)) - gcc_unreachable (); - /* Make sure the _vptr is set. */ - c = gfc_find_component (sym->ts.u.derived, "_vptr", true, true, NULL); - if (c->ts.u.derived == NULL) - c->ts.u.derived = gfc_find_derived_vtab (sym->ts.u.derived); - CLASS_DATA (sym)->attr.pointer = 1; - CLASS_DATA (sym)->attr.class_pointer = 1; - gfc_set_sym_referenced (sym->ts.u.derived); - gfc_commit_symbol (sym->ts.u.derived); - /* _vptr now has the _vtab in it, change it to the _vtype. */ - if (c->ts.u.derived->attr.vtab) - c->ts.u.derived = c->ts.u.derived->ts.u.derived; - c->ts.u.derived->ns->types_resolved = 0; - resolve_types (c->ts.u.derived->ns); + gfc_change_class (&sym->ts, &attr, as, 0, 0); + sym->as = NULL; } } @@ -9443,6 +9682,14 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) } } + if (sym->ts.type == BT_CLASS + && IS_INFERRED_TYPE (target) + && target->ts.type == BT_DERIVED + && CLASS_DATA (sym)->ts.u.derived == target->ts.u.derived + && target->ref && target->ref->next && !target->ref->next->next + && target->ref->next->type == REF_ARRAY) + target->ts = target->symtree->n.sym->ts; + /* If the target is a good class object, so is the associate variable. */ if (sym->ts.type == BT_CLASS && gfc_expr_attr (target).class_ok) sym->attr.class_ok = 1; @@ -15968,6 +16215,26 @@ resolve_pdt (gfc_symbol* sym) } +/* Resolve the symbol's array spec. */ + +static bool +resolve_symbol_array_spec (gfc_symbol *sym, int check_constant) +{ + gfc_namespace *orig_current_ns = gfc_current_ns; + gfc_current_ns = gfc_get_spec_ns (sym); + + bool saved_specification_expr = specification_expr; + specification_expr = true; + + bool result = gfc_resolve_array_spec (sym->as, check_constant); + + specification_expr = saved_specification_expr; + gfc_current_ns = orig_current_ns; + + return result; +} + + /* Do anything necessary to resolve a symbol. Right now, we just assume that an otherwise unknown symbol is a variable. This sort of thing commonly happens for symbols in module. */ @@ -15982,7 +16249,6 @@ resolve_symbol (gfc_symbol *sym) gfc_component *c; symbol_attribute class_attr; gfc_array_spec *as; - bool saved_specification_expr; if (sym->resolve_symbol_called >= 1) return; @@ -16147,16 +16413,7 @@ resolve_symbol (gfc_symbol *sym) } } else if (mp_flag && sym->attr.flavor == FL_PROCEDURE && sym->attr.function) - { - bool saved_specification_expr = specification_expr; - bool saved_formal_arg_flag = formal_arg_flag; - - specification_expr = true; - formal_arg_flag = true; - gfc_resolve_array_spec (sym->result->as, false); - formal_arg_flag = saved_formal_arg_flag; - specification_expr = saved_specification_expr; - } + resolve_symbol_array_spec (sym->result, false); /* For a CLASS-valued function with a result variable, affirm that it has been resolved also when looking at the symbol 'sym'. */ @@ -16723,18 +16980,7 @@ resolve_symbol (gfc_symbol *sym) check_constant = sym->attr.in_common && !sym->attr.pointer && !sym->error; - /* Set the formal_arg_flag so that check_conflict will not throw - an error for host associated variables in the specification - expression for an array_valued function. */ - if ((sym->attr.function || sym->attr.result) && sym->as) - formal_arg_flag = true; - - saved_specification_expr = specification_expr; - specification_expr = true; - gfc_resolve_array_spec (sym->as, check_constant); - specification_expr = saved_specification_expr; - - formal_arg_flag = false; + resolve_symbol_array_spec (sym, check_constant); /* Resolve formal namespaces. */ if (sym->formal_ns && sym->formal_ns != gfc_current_ns @@ -16823,15 +17069,6 @@ resolve_symbol (gfc_symbol *sym) if (sym->param_list) resolve_pdt (sym); - - if (!sym->attr.referenced - && (sym->ts.type == BT_CLASS || sym->ts.type == BT_DERIVED)) - { - gfc_expr *final_expr = gfc_lval_expr_from_sym (sym); - if (gfc_is_finalizable (final_expr->ts.u.derived, NULL)) - gfc_set_sym_referenced (sym); - gfc_free_expr (final_expr); - } } diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc index 5d9852c79e00..3a3b6de5cece 100644 --- a/gcc/fortran/symbol.cc +++ b/gcc/fortran/symbol.cc @@ -291,6 +291,19 @@ bool gfc_set_default_type (gfc_symbol *sym, int error_flag, gfc_namespace *ns) { gfc_typespec *ts; + gfc_expr *e; + + /* Check to see if a function selector of unknown type can be resolved. */ + if (sym->assoc + && (e = sym->assoc->target) + && e->expr_type == EXPR_FUNCTION) + { + if (e->ts.type == BT_UNKNOWN) + gfc_resolve_expr (e); + sym->ts = e->ts; + if (sym->ts.type != BT_UNKNOWN) + return true; + } if (sym->ts.type != BT_UNKNOWN) gfc_internal_error ("gfc_set_default_type(): symbol already has a type"); @@ -307,7 +320,7 @@ gfc_set_default_type (gfc_symbol *sym, int error_flag, gfc_namespace *ns) "; did you mean %qs?", sym->name, &sym->declared_at, guessed); else - gfc_error ("Symbol %qs at %L has no IMPLICIT type", + gfc_error ("Symbol %qs at %L has no IMPLICIT type(symbol)", sym->name, &sym->declared_at); sym->attr.untyped = 1; /* Ensure we only give an error once. */ } @@ -2402,6 +2415,67 @@ gfc_use_derived (gfc_symbol *sym) } +/* Find all derived types in the uppermost namespace that have a component + a component called name and stash them in the assoc field of an + associate name variable. + This is used to infer the derived type of an associate name, whose selector + is a sibling derived type function that has not yet been parsed. Either + the derived type is use associated in both contained and sibling procedures + or it appears in the uppermost namespace. */ + +static int cts = 0; +static void +find_derived_types (gfc_symbol *sym, gfc_symtree *st, const char *name, + bool contained, bool stash) +{ + if (st->n.sym && st->n.sym->attr.flavor == FL_DERIVED + && !st->n.sym->attr.is_class + && ((contained && st->n.sym->attr.use_assoc) || !contained) + && gfc_find_component (st->n.sym, name, true, true, NULL)) + { + /* Do the stashing, if required. */ + cts++; + if (stash) + { + if (sym->assoc->derived_types) + st->n.sym->dt_next = sym->assoc->derived_types; + sym->assoc->derived_types = st->n.sym; + } + } + + if (st->left) + find_derived_types (sym, st->left, name, contained, stash); + + if (st->right) + find_derived_types (sym, st->right, name, contained, stash); +} + +int +gfc_find_derived_types (gfc_symbol *sym, gfc_namespace *ns, + const char *name, bool stash) +{ + gfc_namespace *encompassing = NULL; + gcc_assert (sym->assoc); + + cts = 0; + while (ns->parent) + { + if (!ns->parent->parent && ns->proc_name + && (ns->proc_name->attr.function || ns->proc_name->attr.subroutine)) + encompassing = ns; + ns = ns->parent; + } + + /* Search the top level namespace first. */ + find_derived_types (sym, ns->sym_root, name, false, stash); + + /* Then the encompassing namespace. */ + if (encompassing && encompassing != ns) + find_derived_types (sym, encompassing->sym_root, name, true, stash); + + return cts; +} + /* Find the component with the given name in the union type symbol. If ref is not NULL it will be set to the chain of components through which the component can actually be accessed. This is necessary for unions because @@ -5334,3 +5408,61 @@ gfc_sym_get_dummy_args (gfc_symbol *sym) return dummies; } + + +/* Given a procedure, returns the associated namespace. + The resulting NS should match the condition NS->PROC_NAME == SYM. */ + +gfc_namespace * +gfc_get_procedure_ns (gfc_symbol *sym) +{ + if (sym->formal_ns + && sym->formal_ns->proc_name == sym) + return sym->formal_ns; + + /* The above should have worked in most cases. If it hasn't, try some other + heuristics, eventually returning SYM->NS. */ + if (gfc_current_ns->proc_name == sym) + return gfc_current_ns; + + /* For contained procedures, the symbol's NS field is the + hosting namespace, not the procedure namespace. */ + if (sym->attr.flavor == FL_PROCEDURE && sym->attr.contained) + for (gfc_namespace *ns = sym->ns->contained; ns; ns = ns->sibling) + if (ns->proc_name == sym) + return ns; + + if (sym->formal) + for (gfc_formal_arglist *f = sym->formal; f != nullptr; f = f->next) + if (f->sym) + { + gfc_namespace *ns = f->sym->ns; + if (ns && ns->proc_name == sym) + return ns; + } + + return sym->ns; +} + + +/* Given a symbol, returns the namespace in which the symbol is specified. + In most cases, it is the namespace hosting the symbol. This is the case + for variables. For functions, however, it is the function namespace + itself. This specification namespace is used to check conformance of + array spec bound expressions. */ + +gfc_namespace * +gfc_get_spec_ns (gfc_symbol *sym) +{ + if (sym->attr.flavor == FL_PROCEDURE + && sym->attr.function) + { + if (sym->result == sym) + return gfc_get_procedure_ns (sym); + /* Generic and intrinsic functions can have a null result. */ + else if (sym->result != nullptr) + return sym->result->ns; + } + + return sym->ns; +} diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 3673fa407208..30b84762346d 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -3485,6 +3485,78 @@ gfc_conv_array_ubound (tree descriptor, int dim) } +/* Generate abridged name of a part-ref for use in bounds-check message. + Cases: + (1) for an ordinary array variable x return "x" + (2) for z a DT scalar and array component x (at level 1) return "z%%x" + (3) for z a DT scalar and array component x (at level > 1) or + for z a DT array and array x (at any number of levels): "z...%%x" + */ + +static char * +abridged_ref_name (gfc_expr * expr, gfc_array_ref * ar) +{ + gfc_ref *ref; + gfc_symbol *sym; + char *ref_name = NULL; + const char *comp_name = NULL; + int len_sym, last_len = 0, level = 0; + bool sym_is_array; + + gcc_assert (expr->expr_type == EXPR_VARIABLE && expr->ref != NULL); + + sym = expr->symtree->n.sym; + sym_is_array = (sym->ts.type != BT_CLASS + ? sym->as != NULL + : IS_CLASS_ARRAY (sym)); + len_sym = strlen (sym->name); + + /* Scan ref chain to get name of the array component (when ar != NULL) or + array section, determine depth and remember its component name. */ + for (ref = expr->ref; ref; ref = ref->next) + { + if (ref->type == REF_COMPONENT + && strcmp (ref->u.c.component->name, "_data") != 0) + { + level++; + comp_name = ref->u.c.component->name; + continue; + } + + if (ref->type != REF_ARRAY) + continue; + + if (ar) + { + if (&ref->u.ar == ar) + break; + } + else if (ref->u.ar.type == AR_SECTION) + break; + } + + if (level > 0) + last_len = strlen (comp_name); + + /* Provide a buffer sufficiently large to hold "x...%%z". */ + ref_name = XNEWVEC (char, len_sym + last_len + 6); + strcpy (ref_name, sym->name); + + if (level == 1 && !sym_is_array) + { + strcat (ref_name, "%%"); + strcat (ref_name, comp_name); + } + else if (level > 0) + { + strcat (ref_name, "...%%"); + strcat (ref_name, comp_name); + } + + return ref_name; +} + + /* Generate code to perform an array index bound check. */ static tree @@ -3496,7 +3568,9 @@ trans_array_bound_check (gfc_se * se, gfc_ss *ss, tree index, int n, tree tmp_lo, tmp_up; tree descriptor; char *msg; + char *ref_name = NULL; const char * name = NULL; + gfc_expr *expr; if (!(gfc_option.rtcheck & GFC_RTCHECK_BOUNDS)) return index; @@ -3509,6 +3583,12 @@ trans_array_bound_check (gfc_se * se, gfc_ss *ss, tree index, int n, name = ss->info->expr->symtree->n.sym->name; gcc_assert (name != NULL); + /* When we have a component ref, get name of the array section. + Note that there can only be one part ref. */ + expr = ss->info->expr; + if (expr->ref && !compname) + name = ref_name = abridged_ref_name (expr, NULL); + if (VAR_P (descriptor)) name = IDENTIFIER_POINTER (DECL_NAME (descriptor)); @@ -3562,6 +3642,7 @@ trans_array_bound_check (gfc_se * se, gfc_ss *ss, tree index, int n, free (msg); } + free (ref_name); return index; } @@ -3573,36 +3654,17 @@ array_bound_check_elemental (gfc_se * se, gfc_ss * ss, gfc_expr * expr) { gfc_array_ref *ar; gfc_ref *ref; - gfc_symbol *sym; char *var_name = NULL; - size_t len; int dim; if (expr->expr_type == EXPR_VARIABLE) { - sym = expr->symtree->n.sym; - len = strlen (sym->name) + 1; - - for (ref = expr->ref; ref; ref = ref->next) - if (ref->type == REF_COMPONENT) - len += 2 + strlen (ref->u.c.component->name); - - var_name = XALLOCAVEC (char, len); - strcpy (var_name, sym->name); - for (ref = expr->ref; ref; ref = ref->next) { - /* Append component name. */ - if (ref->type == REF_COMPONENT) - { - strcat (var_name, "%%"); - strcat (var_name, ref->u.c.component->name); - continue; - } - if (ref->type == REF_ARRAY && ref->u.ar.type == AR_SECTION) { ar = &ref->u.ar; + var_name = abridged_ref_name (expr, ar); for (dim = 0; dim < ar->dimen; dim++) { if (ar->dimen_type[dim] == DIMEN_ELEMENT) @@ -3618,6 +3680,7 @@ array_bound_check_elemental (gfc_se * se, gfc_ss * ss, gfc_expr * expr) var_name); } } + free (var_name); } } } @@ -4034,33 +4097,7 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_expr *expr, } if (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS) - { - size_t len; - gfc_ref *ref; - - len = strlen (sym->name) + 1; - for (ref = expr->ref; ref; ref = ref->next) - { - if (ref->type == REF_ARRAY && &ref->u.ar == ar) - break; - if (ref->type == REF_COMPONENT) - len += 2 + strlen (ref->u.c.component->name); - } - - var_name = XALLOCAVEC (char, len); - strcpy (var_name, sym->name); - - for (ref = expr->ref; ref; ref = ref->next) - { - if (ref->type == REF_ARRAY && &ref->u.ar == ar) - break; - if (ref->type == REF_COMPONENT) - { - strcat (var_name, "%%"); - strcat (var_name, ref->u.c.component->name); - } - } - } + var_name = abridged_ref_name (expr, ar); decl = se->expr; if (UNLIMITED_POLY(sym) @@ -4195,6 +4232,7 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_expr *expr, decl = NULL_TREE; } + free (var_name); se->expr = build_array_ref (se->expr, offset, decl, se->class_vptr); } @@ -7526,6 +7564,17 @@ gfc_get_dataptr_offset (stmtblock_t *block, tree parm, tree desc, tree offset, /* Set the target data pointer. */ offset = gfc_build_addr_expr (gfc_array_dataptr_type (desc), tmp); + + /* Check for optional dummy argument being present. Arguments of BIND(C) + procedures are excepted here since they are handled differently. */ + if (expr->expr_type == EXPR_VARIABLE + && expr->symtree->n.sym->attr.dummy + && expr->symtree->n.sym->attr.optional + && !is_CFI_desc (NULL, expr)) + offset = build3_loc (input_location, COND_EXPR, TREE_TYPE (offset), + gfc_conv_expr_present (expr->symtree->n.sym), offset, + fold_convert (TREE_TYPE (offset), gfc_index_zero_node)); + gfc_conv_descriptor_data_set (block, parm, offset); } @@ -10386,7 +10435,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, tree dest, gfc_add_expr_to_block (&tblock, t); if (c->attr.pdt_array) gfc_add_modify (&tblock, gfc_conv_descriptor_version (comp), - build_zero_cst (integer_type_node)); + integer_zero_node); tmp = build3_loc (input_location, COND_EXPR, void_type_node, cd, gfc_finish_block (&tblock), gfc_call_free (tmp)); diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc index 6d4630369660..e160c5c98c1b 100644 --- a/gcc/fortran/trans-decl.cc +++ b/gcc/fortran/trans-decl.cc @@ -6636,7 +6636,7 @@ create_main_function (tree fndecl) /* "return 0". */ tmp = fold_build2_loc (input_location, MODIFY_EXPR, integer_type_node, DECL_RESULT (ftn_main), - build_int_cst (integer_type_node, 0)); + integer_zero_node); tmp = build1_v (RETURN_EXPR, tmp); gfc_add_expr_to_block (&body, tmp); @@ -6744,7 +6744,7 @@ add_clause (gfc_symbol *sym, gfc_omp_map_op map_op) n = gfc_get_omp_namelist (); n->sym = sym; - n->u.map_op = map_op; + n->u.map.op = map_op; if (!module_oacc_clauses) module_oacc_clauses = gfc_get_omp_clauses (); @@ -6846,10 +6846,10 @@ finish_oacc_declare (gfc_namespace *ns, gfc_symbol *sym, bool block) for (n = omp_clauses->lists[OMP_LIST_MAP]; n; n = n->next) { - switch (n->u.map_op) + switch (n->u.map.op) { case OMP_MAP_DEVICE_RESIDENT: - n->u.map_op = OMP_MAP_FORCE_ALLOC; + n->u.map.op = OMP_MAP_FORCE_ALLOC; break; default: diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index d63c304661a4..605434f4ddb7 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -1719,6 +1719,7 @@ gfc_trans_class_init_assign (gfc_code *code) tree tmp; gfc_se dst,src,memsz; gfc_expr *lhs, *rhs, *sz; + gfc_component *cmp; gfc_start_block (&block); @@ -1735,6 +1736,21 @@ gfc_trans_class_init_assign (gfc_code *code) /* The _def_init is always scalar. */ rhs->rank = 0; + /* Check def_init for initializers. If this is a dummy with all default + initializer components NULL, return NULL_TREE and use the passed value as + required by F2018(8.5.10). */ + if (!lhs->ref && lhs->symtree->n.sym->attr.dummy) + { + cmp = rhs->ref->next->u.c.component->ts.u.derived->components; + for (; cmp; cmp = cmp->next) + { + if (cmp->initializer) + break; + else if (!cmp->next) + return build_empty_stmt (input_location); + } + } + if (code->expr1->ts.type == BT_CLASS && CLASS_DATA (code->expr1)->attr.dimension) { @@ -3142,6 +3158,10 @@ gfc_conv_variable (gfc_se * se, gfc_expr * expr) gcc_assert (se->string_length); } + /* Some expressions leak through that haven't been fixed up. */ + if (IS_INFERRED_TYPE (expr) && expr->ref) + gfc_fixup_inferred_type_refs (expr); + gfc_typespec *ts = &sym->ts; while (ref) { @@ -4078,7 +4098,7 @@ conv_scalar_char_value (gfc_symbol *sym, gfc_se *se, gfc_expr **expr) if ((*expr)->ref == NULL) { se->expr = gfc_string_to_single_character - (build_int_cst (integer_type_node, 1), + (integer_one_node, gfc_build_addr_expr (gfc_get_pchar_type ((*expr)->ts.kind), gfc_get_symbol_decl ((*expr)->symtree->n.sym)), @@ -4088,7 +4108,7 @@ conv_scalar_char_value (gfc_symbol *sym, gfc_se *se, gfc_expr **expr) { gfc_conv_variable (se, *expr); se->expr = gfc_string_to_single_character - (build_int_cst (integer_type_node, 1), + (integer_one_node, gfc_build_addr_expr (gfc_get_pchar_type ((*expr)->ts.kind), se->expr), (*expr)->ts.kind); @@ -9646,7 +9666,7 @@ gfc_conv_structure (gfc_se * se, gfc_expr * expr, int init) cm = expr->ts.u.derived->components; for (c = gfc_constructor_first (expr->value.constructor); - c; c = gfc_constructor_next (c), cm = cm->next) + c && cm; c = gfc_constructor_next (c), cm = cm->next) { /* Skip absent members in default initializers and allocatable components. Although the latter have a default initializer @@ -10530,12 +10550,9 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2) { gfc_symbol *psym = expr1->symtree->n.sym; tmp = NULL_TREE; - if (psym->ts.type == BT_CHARACTER) - { - gcc_assert (psym->ts.u.cl->backend_decl - && VAR_P (psym->ts.u.cl->backend_decl)); - tmp = psym->ts.u.cl->backend_decl; - } + if (psym->ts.type == BT_CHARACTER + && psym->ts.u.cl->backend_decl) + tmp = psym->ts.u.cl->backend_decl; else if (expr1->ts.u.cl->backend_decl && VAR_P (expr1->ts.u.cl->backend_decl)) tmp = expr1->ts.u.cl->backend_decl; @@ -12507,11 +12524,14 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, gfc_add_block_to_block (&body, &lse.pre); gfc_add_expr_to_block (&body, tmp); - /* Add the post blocks to the body. */ - if (!l_is_temp) + /* Add the post blocks to the body. Scalar finalization must appear before + the post block in case any dellocations are done. */ + if (rse.finalblock.head + && (!l_is_temp || (expr2->expr_type == EXPR_FUNCTION + && gfc_expr_attr (expr2).elemental))) { - gfc_add_block_to_block (&rse.finalblock, &rse.post); gfc_add_block_to_block (&body, &rse.finalblock); + gfc_add_block_to_block (&body, &rse.post); } else gfc_add_block_to_block (&body, &rse.post); diff --git a/gcc/fortran/trans-intrinsic.cc b/gcc/fortran/trans-intrinsic.cc index 0468dfae2b17..4e26af21b462 100644 --- a/gcc/fortran/trans-intrinsic.cc +++ b/gcc/fortran/trans-intrinsic.cc @@ -2562,7 +2562,7 @@ trans_this_image (gfc_se * se, gfc_expr *expr) gfc_add_modify (&loop, loop_var, fold_build2_loc (input_location, PLUS_EXPR, integer_type_node, loop_var, - build_int_cst (integer_type_node, 1))); + integer_one_node)); /* Making the loop... actually loop! */ tmp = gfc_finish_block (&loop); @@ -12815,7 +12815,7 @@ conv_intrinsic_move_alloc (gfc_code *code) null_pointer_node)); tmp = build_call_expr_loc (input_location, gfor_fndecl_caf_sync_all, 3, null_pointer_node, null_pointer_node, - build_int_cst (integer_type_node, 0)); + integer_zero_node); tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, cond, tmp, build_empty_stmt (input_location)); diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc index a2bf15665b34..f867e2240bf8 100644 --- a/gcc/fortran/trans-openmp.cc +++ b/gcc/fortran/trans-openmp.cc @@ -343,6 +343,15 @@ gfc_omp_predetermined_mapping (tree decl) && GFC_DECL_SAVED_DESCRIPTOR (decl))) return OMP_CLAUSE_DEFAULTMAP_TO; + /* Dummy procedures aren't considered variables by OpenMP, thus are + disallowed in OpenMP clauses. They are represented as PARM_DECLs + in the middle-end, so return OMP_CLAUSE_DEFAULTMAP_FIRSTPRIVATE here + to avoid complaining about their uses with defaultmap(none). */ + if (TREE_CODE (decl) == PARM_DECL + && TREE_CODE (TREE_TYPE (decl)) == POINTER_TYPE + && TREE_CODE (TREE_TYPE (TREE_TYPE (decl))) == FUNCTION_TYPE) + return OMP_CLAUSE_DEFAULTMAP_FIRSTPRIVATE; + /* These are either array or derived parameters, or vtables. */ if (VAR_P (decl) && TREE_READONLY (decl) && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))) @@ -3139,7 +3148,10 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, || (n->expr && gfc_expr_attr (n->expr).pointer))) always_modifier = true; - switch (n->u.map_op) + if (n->u.map.readonly) + OMP_CLAUSE_MAP_READONLY (node) = 1; + + switch (n->u.map.op) { case OMP_MAP_ALLOC: OMP_CLAUSE_SET_MAP_KIND (node, GOMP_MAP_ALLOC); @@ -3266,8 +3278,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, && n->sym->attr.omp_declare_target && (always_modifier || n->sym->attr.pointer) && op != EXEC_OMP_TARGET_EXIT_DATA - && n->u.map_op != OMP_MAP_DELETE - && n->u.map_op != OMP_MAP_RELEASE) + && n->u.map.op != OMP_MAP_DELETE + && n->u.map.op != OMP_MAP_RELEASE) { gcc_assert (n->sym->ts.u.cl->backend_decl); node5 = build_omp_clause (input_location, OMP_CLAUSE_MAP); @@ -3333,7 +3345,7 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, { enum gomp_map_kind gmk = GOMP_MAP_POINTER; if (op == EXEC_OMP_TARGET_EXIT_DATA - && n->u.map_op == OMP_MAP_DELETE) + && n->u.map.op == OMP_MAP_DELETE) gmk = GOMP_MAP_DELETE; else if (op == EXEC_OMP_TARGET_EXIT_DATA) gmk = GOMP_MAP_RELEASE; @@ -3356,7 +3368,7 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, { enum gomp_map_kind gmk; if (op == EXEC_OMP_TARGET_EXIT_DATA - && n->u.map_op == OMP_MAP_DELETE) + && n->u.map.op == OMP_MAP_DELETE) gmk = GOMP_MAP_DELETE; else if (op == EXEC_OMP_TARGET_EXIT_DATA) gmk = GOMP_MAP_RELEASE; @@ -3388,18 +3400,18 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, node2 = build_omp_clause (input_location, OMP_CLAUSE_MAP); OMP_CLAUSE_DECL (node2) = decl; OMP_CLAUSE_SIZE (node2) = TYPE_SIZE_UNIT (type); - if (n->u.map_op == OMP_MAP_DELETE) + if (n->u.map.op == OMP_MAP_DELETE) map_kind = GOMP_MAP_DELETE; else if (op == EXEC_OMP_TARGET_EXIT_DATA - || n->u.map_op == OMP_MAP_RELEASE) + || n->u.map.op == OMP_MAP_RELEASE) map_kind = GOMP_MAP_RELEASE; else map_kind = GOMP_MAP_TO_PSET; OMP_CLAUSE_SET_MAP_KIND (node2, map_kind); if (op != EXEC_OMP_TARGET_EXIT_DATA - && n->u.map_op != OMP_MAP_DELETE - && n->u.map_op != OMP_MAP_RELEASE) + && n->u.map.op != OMP_MAP_DELETE + && n->u.map.op != OMP_MAP_RELEASE) { node3 = build_omp_clause (input_location, OMP_CLAUSE_MAP); @@ -3417,7 +3429,7 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, = gfc_conv_descriptor_data_get (decl); OMP_CLAUSE_SIZE (node3) = size_int (0); - if (n->u.map_op == OMP_MAP_ATTACH) + if (n->u.map.op == OMP_MAP_ATTACH) { /* Standalone attach clauses used with arrays with descriptors must copy the descriptor to the @@ -3433,7 +3445,7 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, node3 = NULL; goto finalize_map_clause; } - else if (n->u.map_op == OMP_MAP_DETACH) + else if (n->u.map.op == OMP_MAP_DETACH) { OMP_CLAUSE_SET_MAP_KIND (node3, GOMP_MAP_DETACH); /* Similarly to above, we don't want to unmap PTR @@ -3626,8 +3638,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, to perform a single attach/detach operation, of the pointer itself, not of the pointed-to object. */ if (openacc - && (n->u.map_op == OMP_MAP_ATTACH - || n->u.map_op == OMP_MAP_DETACH)) + && (n->u.map.op == OMP_MAP_ATTACH + || n->u.map.op == OMP_MAP_DETACH)) { OMP_CLAUSE_DECL (node) = build_fold_addr_expr (OMP_CLAUSE_DECL (node)); @@ -3656,7 +3668,7 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, se.string_length), TYPE_SIZE_UNIT (tmp)); gomp_map_kind kind; - if (n->u.map_op == OMP_MAP_DELETE) + if (n->u.map.op == OMP_MAP_DELETE) kind = GOMP_MAP_DELETE; else if (op == EXEC_OMP_TARGET_EXIT_DATA) kind = GOMP_MAP_RELEASE; @@ -3713,8 +3725,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, to perform a single attach/detach operation, of the pointer itself, not of the pointed-to object. */ if (openacc - && (n->u.map_op == OMP_MAP_ATTACH - || n->u.map_op == OMP_MAP_DETACH)) + && (n->u.map.op == OMP_MAP_ATTACH + || n->u.map.op == OMP_MAP_DETACH)) { OMP_CLAUSE_DECL (node) = build_fold_addr_expr (inner); @@ -3806,8 +3818,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, { /* Bare attach and detach clauses don't want any additional nodes. */ - if ((n->u.map_op == OMP_MAP_ATTACH - || n->u.map_op == OMP_MAP_DETACH) + if ((n->u.map.op == OMP_MAP_ATTACH + || n->u.map.op == OMP_MAP_DETACH) && (POINTER_TYPE_P (TREE_TYPE (inner)) || GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (inner)))) { @@ -3840,8 +3852,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, map_kind = ((GOMP_MAP_ALWAYS_P (map_kind) || gfc_expr_attr (n->expr).pointer) ? GOMP_MAP_ALWAYS_TO : GOMP_MAP_TO); - else if (n->u.map_op == OMP_MAP_RELEASE - || n->u.map_op == OMP_MAP_DELETE) + else if (n->u.map.op == OMP_MAP_RELEASE + || n->u.map.op == OMP_MAP_DELETE) ; else if (op == EXEC_OMP_TARGET_EXIT_DATA || op == EXEC_OACC_EXIT_DATA) @@ -4088,6 +4100,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, } if (n->u.present_modifier) OMP_CLAUSE_MOTION_PRESENT (node) = 1; + if (list == OMP_LIST_CACHE && n->u.map.readonly) + OMP_CLAUSE__CACHE__READONLY (node) = 1; omp_clauses = gfc_trans_add_clause (node, omp_clauses); } break; @@ -6561,7 +6575,7 @@ gfc_add_clause_implicitly (gfc_omp_clauses *clauses_out, n2->where = n->where; n2->sym = n->sym; if (is_target) - n2->u.map_op = OMP_MAP_TOFROM; + n2->u.map.op = OMP_MAP_TOFROM; if (tail) { tail->next = n2; @@ -6826,8 +6840,6 @@ gfc_split_omp_clauses (gfc_code *code, /* And this is copied to all. */ clausesa[GFC_OMP_SPLIT_TARGET].if_expr = code->ext.omp_clauses->if_expr; - clausesa[GFC_OMP_SPLIT_TARGET].self_expr - = code->ext.omp_clauses->self_expr; clausesa[GFC_OMP_SPLIT_TARGET].nowait = code->ext.omp_clauses->nowait; } diff --git a/gcc/fortran/trans-stmt.cc b/gcc/fortran/trans-stmt.cc index e09828e218b1..7997c167bae9 100644 --- a/gcc/fortran/trans-stmt.cc +++ b/gcc/fortran/trans-stmt.cc @@ -764,7 +764,7 @@ gfc_trans_form_team (gfc_code *code) tmp = build_call_expr_loc (input_location, gfor_fndecl_caf_form_team, 3, team_id, team_type, - build_int_cst (integer_type_node, 0)); + integer_zero_node); gfc_add_expr_to_block (&se.pre, tmp); gfc_add_block_to_block (&se.pre, &argse1.post); gfc_add_block_to_block (&se.pre, &argse2.post); @@ -795,7 +795,7 @@ gfc_trans_change_team (gfc_code *code) tmp = build_call_expr_loc (input_location, gfor_fndecl_caf_change_team, 2, team_type, - build_int_cst (integer_type_node, 0)); + integer_zero_node); gfc_add_expr_to_block (&argse.pre, tmp); gfc_add_block_to_block (&argse.pre, &argse.post); return gfc_finish_block (&argse.pre); @@ -846,7 +846,7 @@ gfc_trans_sync_team (gfc_code *code) tmp = build_call_expr_loc (input_location, gfor_fndecl_caf_sync_team, 2, team_type, - build_int_cst (integer_type_node, 0)); + integer_zero_node); gfc_add_expr_to_block (&argse.pre, tmp); gfc_add_block_to_block (&argse.pre, &argse.post); return gfc_finish_block (&argse.pre); @@ -1357,7 +1357,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type) } else if (code->expr1->rank == 0) { - len = build_int_cst (integer_type_node, 1); + len = integer_one_node; images = gfc_build_addr_expr (NULL_TREE, images); } else @@ -1747,9 +1747,9 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block) e = sym->assoc->target; class_target = (e->expr_type == EXPR_VARIABLE) - && e->ts.type == BT_CLASS - && (gfc_is_class_scalar_expr (e) - || gfc_is_class_array_ref (e, NULL)); + && e->ts.type == BT_CLASS + && (gfc_is_class_scalar_expr (e) + || gfc_is_class_array_ref (e, NULL)); unlimited = UNLIMITED_POLY (e); @@ -2043,6 +2043,10 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block) { gfc_conv_expr (&se, e); se.expr = gfc_evaluate_now (se.expr, &se.pre); + /* Finalize the expression and free if it is allocatable. */ + gfc_finalize_tree_expr (&se, NULL, gfc_expr_attr (e), e->rank); + gfc_add_block_to_block (&se.post, &se.finalblock); + need_len_assign = false; } else if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->attr.dimension) { @@ -2157,26 +2161,36 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block) { tree stmp; tree dtmp; + tree ctmp; - se.expr = ctree; + ctmp = ctree; dtmp = TREE_TYPE (TREE_TYPE (sym->backend_decl)); ctree = gfc_create_var (dtmp, "class"); - stmp = gfc_class_data_get (se.expr); + if (IS_INFERRED_TYPE (e) + && !GFC_CLASS_TYPE_P (TREE_TYPE (se.expr))) + stmp = se.expr; + else + stmp = gfc_class_data_get (ctmp); + /* Coarray scalar component expressions can emerge from the front end as array elements of the _data field. */ if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (stmp))) stmp = gfc_conv_descriptor_data_get (stmp); + + if (!POINTER_TYPE_P (TREE_TYPE (stmp))) + stmp = gfc_build_addr_expr (NULL, stmp); + dtmp = gfc_class_data_get (ctree); stmp = fold_convert (TREE_TYPE (dtmp), stmp); gfc_add_modify (&se.pre, dtmp, stmp); - stmp = gfc_class_vptr_get (se.expr); + stmp = gfc_class_vptr_get (ctmp); dtmp = gfc_class_vptr_get (ctree); stmp = fold_convert (TREE_TYPE (dtmp), stmp); gfc_add_modify (&se.pre, dtmp, stmp); if (UNLIMITED_POLY (sym)) { - stmp = gfc_class_len_get (se.expr); + stmp = gfc_class_len_get (ctmp); dtmp = gfc_class_len_get (ctree); stmp = fold_convert (TREE_TYPE (dtmp), stmp); gfc_add_modify (&se.pre, dtmp, stmp); diff --git a/gcc/fortran/trans.cc b/gcc/fortran/trans.cc index 1a03a4a91d46..badad6ae8927 100644 --- a/gcc/fortran/trans.cc +++ b/gcc/fortran/trans.cc @@ -900,7 +900,7 @@ gfc_allocate_using_caf_lib (stmtblock_t * block, tree pointer, tree size, { gcc_assert(errlen == NULL_TREE); errmsg = null_pointer_node; - errlen = build_int_cst (integer_type_node, 0); + errlen = integer_zero_node; } size = fold_convert (size_type_node, size); @@ -1624,7 +1624,7 @@ gfc_finalize_tree_expr (gfc_se *se, gfc_symbol *derived, } else if (derived && gfc_is_finalizable (derived, NULL)) { - if (derived->attr.zero_comp && !rank) + if (!derived->components && (!rank || attr.elemental)) { /* Any attempt to assign zero length entities, causes the gimplifier all manner of problems. Instead, a variable is created to act as @@ -1675,7 +1675,7 @@ gfc_finalize_tree_expr (gfc_se *se, gfc_symbol *derived, final_fndecl); if (!GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc))) { - if (is_class) + if (is_class || attr.elemental) desc = gfc_conv_scalar_to_descriptor (se, desc, attr); else { @@ -1685,7 +1685,7 @@ gfc_finalize_tree_expr (gfc_se *se, gfc_symbol *derived, } } - if (derived && derived->attr.zero_comp) + if (derived && !derived->components) { /* All the conditions below break down for zero length derived types. */ tmp = build_call_expr_loc (input_location, final_fndecl, 3, @@ -1903,7 +1903,7 @@ gfc_deallocate_with_status (tree pointer, tree status, tree errmsg, if (descr) cond = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node, gfc_conv_descriptor_version (descr), - build_int_cst (integer_type_node, 1)); + integer_one_node); else cond = gfc_omp_call_is_alloc (pointer); omp_tmp = builtin_decl_explicit (BUILT_IN_GOMP_FREE); @@ -1917,7 +1917,7 @@ gfc_deallocate_with_status (tree pointer, tree status, tree errmsg, 0)); if (flag_openmp_allocators && descr) gfc_add_modify (&non_null, gfc_conv_descriptor_version (descr), - build_zero_cst (integer_type_node)); + integer_zero_node); if (status != NULL_TREE && !integer_zerop (status)) { @@ -1946,7 +1946,7 @@ gfc_deallocate_with_status (tree pointer, tree status, tree errmsg, { gcc_assert (errlen == NULL_TREE); errmsg = null_pointer_node; - errlen = build_zero_cst (integer_type_node); + errlen = integer_zero_node; } else { diff --git a/gcc/function.cc b/gcc/function.cc index 3cef6c17bce0..4edd4da12474 100644 --- a/gcc/function.cc +++ b/gcc/function.cc @@ -216,6 +216,7 @@ free_after_compilation (struct function *f) f->machine = NULL; f->cfg = NULL; f->curr_properties &= ~PROP_cfg; + delete f->cond_uids; regno_reg_rtx = NULL; } diff --git a/gcc/function.h b/gcc/function.h index 19e15bd63b0a..c0ba6cc1531a 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -270,6 +270,10 @@ struct GTY(()) function { /* Value histograms attached to particular statements. */ htab_t GTY((skip)) value_histograms; + /* Annotated gconds so that basic conditions in the same expression map to + the same uid. This is used for condition coverage. */ + hash_map *GTY((skip)) cond_uids; + /* For function.cc. */ /* Points to the FUNCTION_DECL of this function. */ diff --git a/gcc/gcc.cc b/gcc/gcc.cc index 382417f7308a..728332b81538 100644 --- a/gcc/gcc.cc +++ b/gcc/gcc.cc @@ -1165,7 +1165,7 @@ proper position among the other output files. */ %:include(libgomp.spec)%(link_gomp)}\ %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ " STACK_SPLIT_SPEC "\ - %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \ + %{fprofile-arcs|fcondition-coverage|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \ %{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\ %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} \n%(post_link) }}}}}}" #endif @@ -1288,7 +1288,7 @@ static const char *cc1_options = %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %w%b.s}}}\ %{fsyntax-only:-o %j} %{-param*}\ %{coverage:-fprofile-arcs -ftest-coverage}\ - %{fprofile-arcs|fprofile-generate*|coverage:\ + %{fprofile-arcs|fcondition-coverage|fprofile-generate*|coverage:\ %{!fprofile-update=single:\ %{pthread:-fprofile-update=prefer-atomic}}}"; diff --git a/gcc/gcov-counter.def b/gcc/gcov-counter.def index 0606184b7e7a..45d4b3eb0c84 100644 --- a/gcc/gcov-counter.def +++ b/gcc/gcov-counter.def @@ -49,3 +49,6 @@ DEF_GCOV_COUNTER(GCOV_COUNTER_IOR, "ior", _ior) /* Time profile collecting first run of a function */ DEF_GCOV_COUNTER(GCOV_TIME_PROFILER, "time_profiler", _time_profile) + +/* Conditions. The counter is interpreted as a bit-set. */ +DEF_GCOV_COUNTER(GCOV_COUNTER_CONDS, "conditions", _ior) diff --git a/gcc/gcov-dump.cc b/gcc/gcov-dump.cc index 2ff352bc766a..375058c3c7b7 100644 --- a/gcc/gcov-dump.cc +++ b/gcc/gcov-dump.cc @@ -38,6 +38,7 @@ static void print_version (void); static void tag_function (const char *, unsigned, int, unsigned); static void tag_blocks (const char *, unsigned, int, unsigned); static void tag_arcs (const char *, unsigned, int, unsigned); +static void tag_conditions (const char *, unsigned, int, unsigned); static void tag_lines (const char *, unsigned, int, unsigned); static void tag_counters (const char *, unsigned, int, unsigned); static void tag_summary (const char *, unsigned, int, unsigned); @@ -77,6 +78,7 @@ static const tag_format_t tag_table[] = {GCOV_TAG_FUNCTION, "FUNCTION", tag_function}, {GCOV_TAG_BLOCKS, "BLOCKS", tag_blocks}, {GCOV_TAG_ARCS, "ARCS", tag_arcs}, + {GCOV_TAG_CONDS, "CONDITIONS", tag_conditions}, {GCOV_TAG_LINES, "LINES", tag_lines}, {GCOV_TAG_OBJECT_SUMMARY, "OBJECT_SUMMARY", tag_summary}, {0, NULL, NULL} @@ -392,6 +394,28 @@ tag_arcs (const char *filename ATTRIBUTE_UNUSED, } } +/* Print number of conditions (not outcomes, i.e. if (x && y) is 2, not 4). */ +static void +tag_conditions (const char *filename, unsigned /* tag */, int length, + unsigned depth) +{ + unsigned n_conditions = GCOV_TAG_CONDS_NUM (length); + + printf (" %u conditions", n_conditions); + if (flag_dump_contents) + { + for (unsigned ix = 0; ix != n_conditions; ix++) + { + const unsigned blockno = gcov_read_unsigned (); + const unsigned nterms = gcov_read_unsigned (); + + printf ("\n"); + print_prefix (filename, depth, gcov_position ()); + printf (VALUE_PADDING_PREFIX "block %u:", blockno); + printf (" %u", nterms); + } + } +} static void tag_lines (const char *filename ATTRIBUTE_UNUSED, unsigned tag ATTRIBUTE_UNUSED, int length ATTRIBUTE_UNUSED, diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h index 0a026933f7ff..20f805598f08 100644 --- a/gcc/gcov-io.h +++ b/gcc/gcov-io.h @@ -261,6 +261,9 @@ typedef uint64_t gcov_type_unsigned; #define GCOV_TAG_ARCS ((gcov_unsigned_t)0x01430000) #define GCOV_TAG_ARCS_LENGTH(NUM) (1 + (NUM) * 2 * GCOV_WORD_SIZE) #define GCOV_TAG_ARCS_NUM(LENGTH) (((LENGTH / GCOV_WORD_SIZE) - 1) / 2) +#define GCOV_TAG_CONDS ((gcov_unsigned_t)0x01470000) +#define GCOV_TAG_CONDS_LENGTH(NUM) ((NUM) * 2 * GCOV_WORD_SIZE) +#define GCOV_TAG_CONDS_NUM(LENGTH) (((LENGTH) / GCOV_WORD_SIZE) / 2) #define GCOV_TAG_LINES ((gcov_unsigned_t)0x01450000) #define GCOV_TAG_COUNTER_BASE ((gcov_unsigned_t)0x01a10000) #define GCOV_TAG_COUNTER_LENGTH(NUM) ((NUM) * 2 * GCOV_WORD_SIZE) diff --git a/gcc/gcov.cc b/gcc/gcov.cc index fad704eb7c94..0d4ef14e6c94 100644 --- a/gcc/gcov.cc +++ b/gcc/gcov.cc @@ -46,6 +46,7 @@ along with Gcov; see the file COPYING3. If not see #include "color-macros.h" #include "pretty-print.h" #include "json.h" +#include "hwint.h" #include #include @@ -81,6 +82,7 @@ using namespace std; class function_info; class block_info; class source_info; +class condition_info; /* Describes an arc between two basic blocks. */ @@ -134,6 +136,33 @@ class block_location_info vector lines; }; +/* Describes a single conditional expression and the (recorded) conditions + shown to independently affect the outcome. */ +class condition_info +{ +public: + condition_info (); + + int popcount () const; + + /* Bitsets storing the independently significant outcomes for true and false, + respectively. */ + gcov_type_unsigned truev; + gcov_type_unsigned falsev; + + /* Number of terms in the expression; if (x) -> 1, if (x && y) -> 2 etc. */ + unsigned n_terms; +}; + +condition_info::condition_info (): truev (0), falsev (0), n_terms (0) +{ +} + +int condition_info::popcount () const +{ + return popcount_hwi (truev) + popcount_hwi (falsev); +} + /* Describes a basic block. Contains lists of arcs to successor and predecessor blocks. */ @@ -167,6 +196,8 @@ class block_info /* Block is a landing pad for longjmp or throw. */ unsigned is_nonlocal_return : 1; + condition_info conditions; + vector locations; struct @@ -277,6 +308,8 @@ class function_info vector blocks; unsigned blocks_executed; + vector conditions; + /* Raw arc coverage counts. */ vector counts; @@ -353,6 +386,9 @@ struct coverage_info int branches_executed; int branches_taken; + int conditions; + int conditions_covered; + int calls; int calls_executed; @@ -552,6 +588,10 @@ static int multiple_files = 0; static int flag_branches = 0; +/* Output conditions (modified condition/decision coverage). */ + +static bool flag_conditions = 0; + /* Show unconditional branches too. */ static int flag_unconditional = 0; @@ -658,6 +698,7 @@ static int read_count_file (void); static void solve_flow_graph (function_info *); static void find_exception_blocks (function_info *); static void add_branch_counts (coverage_info *, const arc_info *); +static void add_condition_counts (coverage_info *, const block_info *); static void add_line_counts (coverage_info *, function_info *); static void executed_summary (unsigned, unsigned); static void function_summary (const coverage_info *); @@ -666,6 +707,7 @@ static const char *format_gcov (gcov_type, gcov_type, int); static void accumulate_line_counts (source_info *); static void output_gcov_file (const char *, source_info *); static int output_branch_count (FILE *, int, const arc_info *); +static void output_conditions (FILE *, const block_info *); static void output_lines (FILE *, const source_info *); static string make_gcov_file_name (const char *, const char *); static char *mangle_name (const char *); @@ -930,6 +972,8 @@ print_usage (int error_p) fnotice (file, " -b, --branch-probabilities Include branch probabilities in output\n"); fnotice (file, " -c, --branch-counts Output counts of branches taken\n\ rather than percentages\n"); + fnotice (file, " -g, --conditions Include modified condition/decision\n\ + coverage in output\n"); fnotice (file, " -d, --display-progress Display progress information\n"); fnotice (file, " -D, --debug Display debugging dumps\n"); fnotice (file, " -f, --function-summaries Output summaries for each function\n"); @@ -983,6 +1027,7 @@ static const struct option options[] = { "all-blocks", no_argument, NULL, 'a' }, { "branch-probabilities", no_argument, NULL, 'b' }, { "branch-counts", no_argument, NULL, 'c' }, + { "conditions", no_argument, NULL, 'g' }, { "json-format", no_argument, NULL, 'j' }, { "human-readable", no_argument, NULL, 'H' }, { "no-output", no_argument, NULL, 'n' }, @@ -1011,7 +1056,7 @@ process_args (int argc, char **argv) { int opt; - const char *opts = "abcdDfhHijklmno:pqrs:tuvwx"; + const char *opts = "abcdDfghHijklmno:pqrs:tuvwx"; while ((opt = getopt_long (argc, argv, opts, options, NULL)) != -1) { switch (opt) @@ -1028,6 +1073,9 @@ process_args (int argc, char **argv) case 'f': flag_function_summary = 1; break; + case 'g': + flag_conditions = 1; + break; case 'h': print_usage (false); /* print_usage will exit. */ @@ -1152,6 +1200,45 @@ output_intermediate_json_line (json::array *object, } } + json::array *conditions = new json::array (); + lineo->set ("conditions", conditions); + if (flag_conditions) + { + vector::const_iterator it; + for (it = line->blocks.begin (); it != line->blocks.end (); it++) + { + const condition_info& info = (*it)->conditions; + if (info.n_terms == 0) + continue; + + const int count = 2 * info.n_terms; + const int covered = info.popcount (); + + json::object *cond = new json::object (); + cond->set ("count", new json::integer_number (count)); + cond->set ("covered", new json::integer_number (covered)); + + json::array *mtrue = new json::array (); + json::array *mfalse = new json::array (); + cond->set ("not_covered_true", mtrue); + cond->set ("not_covered_false", mfalse); + + if (count != covered) + { + for (unsigned i = 0; i < info.n_terms; i++) + { + gcov_type_unsigned index = 1; + index <<= i; + if (!(index & info.truev)) + mtrue->append (new json::integer_number (i)); + if (!(index & info.falsev)) + mfalse->append (new json::integer_number (i)); + } + } + conditions->append (cond); + } + } + object->append (lineo); } @@ -1969,6 +2056,28 @@ read_graph_file (void) } } } + else if (fn && tag == GCOV_TAG_CONDS) + { + unsigned num_dests = GCOV_TAG_CONDS_NUM (length); + + if (!fn->conditions.empty ()) + fnotice (stderr, "%s:already seen conditions for '%s'\n", + bbg_file_name, fn->get_name ()); + else + fn->conditions.resize (num_dests); + + for (unsigned i = 0; i < num_dests; ++i) + { + unsigned idx = gcov_read_unsigned (); + + if (idx >= fn->blocks.size ()) + goto corrupt; + + condition_info *info = &fn->blocks[idx].conditions; + info->n_terms = gcov_read_unsigned (); + fn->conditions[i] = info; + } + } else if (fn && tag == GCOV_TAG_LINES) { unsigned blockno = gcov_read_unsigned (); @@ -2099,6 +2208,21 @@ read_count_file (void) goto cleanup; } } + else if (tag == GCOV_TAG_FOR_COUNTER (GCOV_COUNTER_CONDS) && fn) + { + length = abs (read_length); + if (length != GCOV_TAG_COUNTER_LENGTH (2 * fn->conditions.size ())) + goto mismatch; + + if (read_length > 0) + { + for (ix = 0; ix != fn->conditions.size (); ix++) + { + fn->conditions[ix]->truev |= gcov_read_counter (); + fn->conditions[ix]->falsev |= gcov_read_counter (); + } + } + } else if (tag == GCOV_TAG_FOR_COUNTER (GCOV_COUNTER_ARCS) && fn) { length = abs (read_length); @@ -2443,6 +2567,15 @@ add_branch_counts (coverage_info *coverage, const arc_info *arc) } } +/* Increment totals in COVERAGE according to block BLOCK. */ + +static void +add_condition_counts (coverage_info *coverage, const block_info *block) +{ + coverage->conditions += 2 * block->conditions.n_terms; + coverage->conditions_covered += block->conditions.popcount (); +} + /* Format COUNT, if flag_human_readable_numbers is set, return it human readable format. */ @@ -2546,6 +2679,18 @@ file_summary (const coverage_info *coverage) coverage->calls); else fnotice (stdout, "No calls\n"); + + } + + if (flag_conditions) + { + if (coverage->conditions) + fnotice (stdout, "Condition outcomes covered:%s of %d\n", + format_gcov (coverage->conditions_covered, + coverage->conditions, 2), + coverage->conditions); + else + fnotice (stdout, "No conditions\n"); } } @@ -2780,6 +2925,12 @@ static void accumulate_line_info (line_info *line, source_info *src, it != line->branches.end (); it++) add_branch_counts (&src->coverage, *it); + if (add_coverage) + for (vector::iterator it = line->blocks.begin (); + it != line->blocks.end (); it++) + add_condition_counts (&src->coverage, *it); + + if (!line->blocks.empty ()) { /* The user expects the line count to be the number of times @@ -2881,6 +3032,37 @@ accumulate_line_counts (source_info *src) } } +/* Output information about the conditions in block BINFO. The output includes + * a summary (n/m outcomes covered) and a list of the missing (uncovered) + * outcomes. */ + +static void +output_conditions (FILE *gcov_file, const block_info *binfo) +{ + const condition_info& info = binfo->conditions; + if (info.n_terms == 0) + return; + + const int expected = 2 * info.n_terms; + const int got = info.popcount (); + + fnotice (gcov_file, "condition outcomes covered %d/%d\n", got, expected); + if (expected == got) + return; + + for (unsigned i = 0; i < info.n_terms; i++) + { + gcov_type_unsigned index = 1; + index <<= i; + if ((index & info.truev & info.falsev)) + continue; + + const char *t = (index & info.truev) ? "" : "true"; + const char *f = (index & info.falsev) ? "" : " false"; + fnotice (gcov_file, "condition %2u not covered (%s%s)\n", i, t, f + !t[0]); + } +} + /* Output information about ARC number IX. Returns nonzero if anything is output. */ @@ -3091,16 +3273,29 @@ output_line_details (FILE *f, const line_info *line, unsigned line_num) if (flag_branches) for (arc = (*it)->succ; arc; arc = arc->succ_next) jx += output_branch_count (f, jx, arc); + + if (flag_conditions) + output_conditions (f, *it); } } - else if (flag_branches) + else { - int ix; + if (flag_branches) + { + int ix; + + ix = 0; + for (vector::const_iterator it = line->branches.begin (); + it != line->branches.end (); it++) + ix += output_branch_count (f, ix, (*it)); + } - ix = 0; - for (vector::const_iterator it = line->branches.begin (); - it != line->branches.end (); it++) - ix += output_branch_count (f, ix, (*it)); + if (flag_conditions) + { + for (vector::const_iterator it = line->blocks.begin (); + it != line->blocks.end (); it++) + output_conditions (f, *it); + } } } diff --git a/gcc/gimple-iterator.cc b/gcc/gimple-iterator.cc index 55ef3198c52b..93646262eac5 100644 --- a/gcc/gimple-iterator.cc +++ b/gcc/gimple-iterator.cc @@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see #include "tree-cfg.h" #include "tree-ssa.h" #include "value-prof.h" +#include "gimplify.h" /* Mark the statement STMT as modified, and update it. */ @@ -944,3 +945,152 @@ gsi_start_phis (basic_block bb) return i; } + +/* Helper function for gsi_safe_insert_before and gsi_safe_insert_seq_before. + Find edge to insert statements before returns_twice call at the start of BB, + if there isn't just one, split the bb and adjust PHIs to ensure that. */ + +static edge +edge_before_returns_twice_call (basic_block bb) +{ + gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb); + gcc_checking_assert (is_gimple_call (gsi_stmt (gsi)) + && (gimple_call_flags (gsi_stmt (gsi)) + & ECF_RETURNS_TWICE) != 0); + edge_iterator ei; + edge e, ad_edge = NULL, other_edge = NULL; + bool split = false; + FOR_EACH_EDGE (e, ei, bb->preds) + { + if ((e->flags & (EDGE_ABNORMAL | EDGE_EH)) == EDGE_ABNORMAL) + { + gimple_stmt_iterator gsi + = gsi_start_nondebug_after_labels_bb (e->src); + gimple *ad = gsi_stmt (gsi); + if (ad && gimple_call_internal_p (ad, IFN_ABNORMAL_DISPATCHER)) + { + gcc_checking_assert (ad_edge == NULL); + ad_edge = e; + continue; + } + } + if (other_edge || e->flags & (EDGE_ABNORMAL | EDGE_EH)) + split = true; + other_edge = e; + } + gcc_checking_assert (ad_edge); + if (other_edge == NULL) + split = true; + if (split) + { + other_edge = split_block_after_labels (bb); + e = make_edge (ad_edge->src, other_edge->dest, EDGE_ABNORMAL); + for (gphi_iterator gsi = gsi_start_phis (other_edge->src); + !gsi_end_p (gsi); gsi_next (&gsi)) + { + gphi *phi = gsi.phi (); + tree lhs = gimple_phi_result (phi); + tree new_lhs = copy_ssa_name (lhs); + gimple_phi_set_result (phi, new_lhs); + gphi *new_phi = create_phi_node (lhs, other_edge->dest); + add_phi_arg (new_phi, new_lhs, other_edge, UNKNOWN_LOCATION); + add_phi_arg (new_phi, gimple_phi_arg_def_from_edge (phi, ad_edge), + e, gimple_phi_arg_location_from_edge (phi, ad_edge)); + } + e->flags = ad_edge->flags; + e->probability = ad_edge->probability; + remove_edge (ad_edge); + if (dom_info_available_p (CDI_DOMINATORS)) + { + set_immediate_dominator (CDI_DOMINATORS, other_edge->src, + recompute_dominator (CDI_DOMINATORS, + other_edge->src)); + set_immediate_dominator (CDI_DOMINATORS, other_edge->dest, + recompute_dominator (CDI_DOMINATORS, + other_edge->dest)); + } + } + return other_edge; +} + +/* Helper function for gsi_safe_insert_before and gsi_safe_insert_seq_before. + Replace SSA_NAME uses in G if they are PHI results of PHIs on E->dest + bb with the corresponding PHI argument from E edge. */ + +static void +adjust_before_returns_twice_call (edge e, gimple *g) +{ + use_operand_p use_p; + ssa_op_iter iter; + bool m = false; + FOR_EACH_SSA_USE_OPERAND (use_p, g, iter, SSA_OP_USE) + { + tree s = USE_FROM_PTR (use_p); + if (SSA_NAME_DEF_STMT (s) + && gimple_code (SSA_NAME_DEF_STMT (s)) == GIMPLE_PHI + && gimple_bb (SSA_NAME_DEF_STMT (s)) == e->dest) + { + tree r = gimple_phi_arg_def_from_edge (SSA_NAME_DEF_STMT (s), e); + SET_USE (use_p, unshare_expr (r)); + m = true; + } + } + if (m) + update_stmt (g); +} + +/* Insert G stmt before ITER and keep ITER pointing to the same statement + as before. If ITER is a returns_twice call, insert it on an appropriate + edge instead. */ + +void +gsi_safe_insert_before (gimple_stmt_iterator *iter, gimple *g) +{ + gimple *stmt = gsi_stmt (*iter); + if (stmt + && is_gimple_call (stmt) + && (gimple_call_flags (stmt) & ECF_RETURNS_TWICE) != 0 + && bb_has_abnormal_pred (gsi_bb (*iter))) + { + edge e = edge_before_returns_twice_call (gsi_bb (*iter)); + basic_block new_bb = gsi_insert_on_edge_immediate (e, g); + if (new_bb) + e = single_succ_edge (new_bb); + adjust_before_returns_twice_call (e, g); + *iter = gsi_for_stmt (stmt); + } + else + gsi_insert_before (iter, g, GSI_SAME_STMT); +} + +/* Similarly for sequence SEQ. */ + +void +gsi_safe_insert_seq_before (gimple_stmt_iterator *iter, gimple_seq seq) +{ + if (gimple_seq_empty_p (seq)) + return; + gimple *stmt = gsi_stmt (*iter); + if (stmt + && is_gimple_call (stmt) + && (gimple_call_flags (stmt) & ECF_RETURNS_TWICE) != 0 + && bb_has_abnormal_pred (gsi_bb (*iter))) + { + edge e = edge_before_returns_twice_call (gsi_bb (*iter)); + gimple *f = gimple_seq_first_stmt (seq); + gimple *l = gimple_seq_last_stmt (seq); + basic_block new_bb = gsi_insert_seq_on_edge_immediate (e, seq); + if (new_bb) + e = single_succ_edge (new_bb); + for (gimple_stmt_iterator gsi = gsi_for_stmt (f); ; gsi_next (&gsi)) + { + gimple *g = gsi_stmt (gsi); + adjust_before_returns_twice_call (e, g); + if (g == l) + break; + } + *iter = gsi_for_stmt (stmt); + } + else + gsi_insert_seq_before (iter, seq, GSI_SAME_STMT); +} diff --git a/gcc/gimple-iterator.h b/gcc/gimple-iterator.h index 78014a43cb93..501f0549d925 100644 --- a/gcc/gimple-iterator.h +++ b/gcc/gimple-iterator.h @@ -93,6 +93,8 @@ extern void gsi_insert_on_edge (edge, gimple *); extern void gsi_insert_seq_on_edge (edge, gimple_seq); extern basic_block gsi_insert_on_edge_immediate (edge, gimple *); extern basic_block gsi_insert_seq_on_edge_immediate (edge, gimple_seq); +extern void gsi_safe_insert_before (gimple_stmt_iterator *, gimple *); +extern void gsi_safe_insert_seq_before (gimple_stmt_iterator *, gimple_seq); extern void gsi_commit_edge_inserts (void); extern void gsi_commit_one_edge_insert (edge, basic_block *); extern gphi_iterator gsi_start_phis (basic_block); diff --git a/gcc/gimple-lower-bitint.cc b/gcc/gimple-lower-bitint.cc index 65e4ab3f105e..7e8b6e3c51a0 100644 --- a/gcc/gimple-lower-bitint.cc +++ b/gcc/gimple-lower-bitint.cc @@ -419,13 +419,16 @@ struct bitint_large_huge bitint_large_huge () : m_names (NULL), m_loads (NULL), m_preserved (NULL), m_single_use_names (NULL), m_map (NULL), m_vars (NULL), - m_limb_type (NULL_TREE), m_data (vNULL) {} + m_limb_type (NULL_TREE), m_data (vNULL), + m_returns_twice_calls (vNULL) {} ~bitint_large_huge (); void insert_before (gimple *); tree limb_access_type (tree, tree); tree limb_access (tree, tree, tree, bool); + tree build_bit_field_ref (tree, tree, unsigned HOST_WIDE_INT, + unsigned HOST_WIDE_INT); void if_then (gimple *, profile_probability, edge &, edge &); void if_then_else (gimple *, profile_probability, edge &, edge &); void if_then_if_then_else (gimple *g, gimple *, @@ -553,6 +556,7 @@ struct bitint_large_huge unsigned m_bitfld_load; vec m_data; unsigned int m_data_cnt; + vec m_returns_twice_calls; }; bitint_large_huge::~bitint_large_huge () @@ -565,6 +569,7 @@ bitint_large_huge::~bitint_large_huge () delete_var_map (m_map); XDELETEVEC (m_vars); m_data.release (); + m_returns_twice_calls.release (); } /* Insert gimple statement G before current location @@ -640,7 +645,7 @@ bitint_large_huge::limb_access (tree type, tree var, tree idx, bool write_p) TREE_TYPE (TREE_TYPE (var)))) { unsigned HOST_WIDE_INT nelts - = CEIL (tree_to_uhwi (TYPE_SIZE (type)), limb_prec); + = CEIL (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (var))), limb_prec); tree atype = build_array_type_nelts (ltype, nelts); var = build1 (VIEW_CONVERT_EXPR, atype, var); } @@ -656,6 +661,31 @@ bitint_large_huge::limb_access (tree type, tree var, tree idx, bool write_p) return ret; } +/* Build a BIT_FIELD_REF to access BITSIZE bits with FTYPE type at + offset BITPOS inside of OBJ. */ + +tree +bitint_large_huge::build_bit_field_ref (tree ftype, tree obj, + unsigned HOST_WIDE_INT bitsize, + unsigned HOST_WIDE_INT bitpos) +{ + if (INTEGRAL_TYPE_P (TREE_TYPE (obj)) + && !type_has_mode_precision_p (TREE_TYPE (obj))) + { + unsigned HOST_WIDE_INT nelts + = CEIL (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (obj))), limb_prec); + tree ltype = m_limb_type; + addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (obj)); + if (as != TYPE_ADDR_SPACE (ltype)) + ltype = build_qualified_type (ltype, TYPE_QUALS (ltype) + | ENCODE_QUAL_ADDR_SPACE (as)); + tree atype = build_array_type_nelts (ltype, nelts); + obj = build1 (VIEW_CONVERT_EXPR, atype, obj); + } + return build3 (BIT_FIELD_REF, ftype, obj, bitsize_int (bitsize), + bitsize_int (bitpos)); +} + /* Emit a half diamond, if (COND) |\ @@ -1476,7 +1506,7 @@ bitint_large_huge::handle_cast (tree lhs_type, tree rhs1, tree idx) if (m_bitfld_load) { tree t4; - if (!m_first) + if (!save_first && !save_cast_conditional) t4 = m_data[m_bitfld_load + 1]; else t4 = make_ssa_name (m_limb_type); @@ -1489,6 +1519,24 @@ bitint_large_huge::handle_cast (tree lhs_type, tree rhs1, tree idx) if (edge_true_true) add_phi_arg (phi, m_data[m_bitfld_load], edge_true_true, UNKNOWN_LOCATION); + if (save_cast_conditional) + for (basic_block bb = gsi_bb (m_gsi);;) + { + edge e1 = single_succ_edge (bb); + edge e2 = find_edge (e1->dest, m_bb), e3; + tree t5 = ((e2 && !save_first) ? m_data[m_bitfld_load + 1] + : make_ssa_name (m_limb_type)); + phi = create_phi_node (t5, e1->dest); + edge_iterator ei; + FOR_EACH_EDGE (e3, ei, e1->dest->preds) + add_phi_arg (phi, (e3 == e1 ? t4 + : build_zero_cst (m_limb_type)), + e3, UNKNOWN_LOCATION); + t4 = t5; + if (e2) + break; + bb = e1->dest; + } m_data[m_bitfld_load] = t4; m_data[m_bitfld_load + 2] = t4; m_bitfld_load = 0; @@ -1854,7 +1902,7 @@ bitint_large_huge::handle_load (gimple *stmt, tree idx) m_gsi = gsi_after_labels (gsi_bb (m_gsi)); else gsi_next (&m_gsi); - tree t = limb_access (rhs_type, nrhs1, size_int (bo_idx), true); + tree t = limb_access (NULL_TREE, nrhs1, size_int (bo_idx), true); tree iv = make_ssa_name (m_limb_type); g = gimple_build_assign (iv, t); insert_before (g); @@ -1941,7 +1989,7 @@ bitint_large_huge::handle_load (gimple *stmt, tree idx) tree iv2 = NULL_TREE; if (nidx0) { - tree t = limb_access (rhs_type, nrhs1, nidx0, true); + tree t = limb_access (NULL_TREE, nrhs1, nidx0, true); iv = make_ssa_name (m_limb_type); g = gimple_build_assign (iv, t); insert_before (g); @@ -1966,7 +2014,7 @@ bitint_large_huge::handle_load (gimple *stmt, tree idx) if_then (g, profile_probability::likely (), edge_true, edge_false); } - tree t = limb_access (rhs_type, nrhs1, nidx1, true); + tree t = limb_access (NULL_TREE, nrhs1, nidx1, true); if (m_upwards_2limb && !m_first && !m_bitfld_load @@ -1996,6 +2044,7 @@ bitint_large_huge::handle_load (gimple *stmt, tree idx) add_phi_arg (phi, build_zero_cst (m_limb_type), edge_false, UNKNOWN_LOCATION); m_gsi = gsi_after_labels (edge_true->dest); + iv2 = iv3; } } g = gimple_build_assign (make_ssa_name (m_limb_type), RSHIFT_EXPR, @@ -2648,9 +2697,9 @@ bitint_large_huge::lower_mergeable_stmt (gimple *stmt, tree_code &cmp_code, } tree ftype = build_nonstandard_integer_type (limb_prec - bo_bit, 1); - tree bfr = build3 (BIT_FIELD_REF, ftype, unshare_expr (nlhs), - bitsize_int (limb_prec - bo_bit), - bitsize_int (bo_idx * limb_prec + bo_bit)); + tree bfr = build_bit_field_ref (ftype, unshare_expr (nlhs), + limb_prec - bo_bit, + bo_idx * limb_prec + bo_bit); tree t = add_cast (ftype, rhs1); g = gimple_build_assign (bfr, t); insert_before (g); @@ -2706,17 +2755,16 @@ bitint_large_huge::lower_mergeable_stmt (gimple *stmt, tree_code &cmp_code, && tree_fits_uhwi_p (idx)) { unsigned int tprec = TYPE_PRECISION (type); - unsigned int rprec = tprec % limb_prec; + unsigned int rprec = (tprec - 1) % limb_prec + 1; if (rprec + bo_bit < (unsigned) limb_prec) { tree ftype = build_nonstandard_integer_type (rprec + bo_bit, 1); - tree bfr = build3 (BIT_FIELD_REF, ftype, - unshare_expr (nlhs), - bitsize_int (rprec + bo_bit), - bitsize_int ((bo_idx - + tprec / limb_prec) - * limb_prec)); + tree bfr + = build_bit_field_ref (ftype, unshare_expr (nlhs), + rprec + bo_bit, + (bo_idx + tprec / limb_prec) + * limb_prec); tree t = add_cast (ftype, rhs1); g = gimple_build_assign (bfr, t); done = true; @@ -2728,8 +2776,8 @@ bitint_large_huge::lower_mergeable_stmt (gimple *stmt, tree_code &cmp_code, /* Otherwise, stores to any other lhs. */ if (!done) { - tree l = limb_access (lhs_type, nlhs ? nlhs : lhs, - nidx, true); + tree l = limb_access (nlhs ? NULL_TREE : lhs_type, + nlhs ? nlhs : lhs, nidx, true); g = gimple_build_assign (l, rhs1); } insert_before (g); @@ -2852,16 +2900,16 @@ bitint_large_huge::lower_mergeable_stmt (gimple *stmt, tree_code &cmp_code, if (nlhs && i == cnt - 1) { unsigned int tprec = TYPE_PRECISION (type); - unsigned int rprec = tprec % limb_prec; + unsigned int rprec = (tprec - 1) % limb_prec + 1; if (rprec + bo_bit < (unsigned) limb_prec) { tree ftype = build_nonstandard_integer_type (rprec + bo_bit, 1); - tree bfr = build3 (BIT_FIELD_REF, ftype, - unshare_expr (nlhs), - bitsize_int (rprec + bo_bit), - bitsize_int ((bo_idx + tprec / limb_prec) - * limb_prec)); + tree bfr + = build_bit_field_ref (ftype, unshare_expr (nlhs), + rprec + bo_bit, + (bo_idx + tprec / limb_prec) + * limb_prec); tree t = add_cast (ftype, rhs1); g = gimple_build_assign (bfr, t); done = true; @@ -2873,7 +2921,8 @@ bitint_large_huge::lower_mergeable_stmt (gimple *stmt, tree_code &cmp_code, /* Otherwise, stores to any other lhs. */ if (!done) { - tree l = limb_access (lhs_type, nlhs ? nlhs : lhs, nidx, true); + tree l = limb_access (nlhs ? NULL_TREE : lhs_type, + nlhs ? nlhs : lhs, nidx, true); g = gimple_build_assign (l, rhs1); } insert_before (g); @@ -2903,12 +2952,12 @@ bitint_large_huge::lower_mergeable_stmt (gimple *stmt, tree_code &cmp_code, if (bf_cur != NULL_TREE) { unsigned int tprec = TYPE_PRECISION (type); - unsigned int rprec = tprec % limb_prec; - tree ftype = build_nonstandard_integer_type (rprec + bo_bit, 1); - tree bfr = build3 (BIT_FIELD_REF, ftype, unshare_expr (nlhs), - bitsize_int (rprec + bo_bit), - bitsize_int ((bo_idx + tprec / limb_prec) - * limb_prec)); + unsigned int rprec = (tprec + bo_bit) % limb_prec; + tree ftype = build_nonstandard_integer_type (rprec, 1); + tree bfr = build_bit_field_ref (ftype, unshare_expr (nlhs), + rprec, + (bo_idx + (tprec + bo_bit) / limb_prec) + * limb_prec); rhs1 = bf_cur; if (bf_cur != ext) { @@ -5247,6 +5296,7 @@ bitint_large_huge::lower_call (tree obj, gimple *stmt) default: break; } + bool returns_twice = (gimple_call_flags (stmt) & ECF_RETURNS_TWICE) != 0; for (unsigned int i = 0; i < nargs; ++i) { tree arg = gimple_call_arg (stmt, i); @@ -5270,6 +5320,11 @@ bitint_large_huge::lower_call (tree obj, gimple *stmt) arg = make_ssa_name (TREE_TYPE (arg)); gimple *g = gimple_build_assign (arg, v); gsi_insert_before (&gsi, g, GSI_SAME_STMT); + if (returns_twice && bb_has_abnormal_pred (gimple_bb (stmt))) + { + m_returns_twice_calls.safe_push (stmt); + returns_twice = false; + } } gimple_call_set_arg (stmt, i, arg); if (m_preserved == NULL) @@ -5865,20 +5920,25 @@ build_bitint_stmt_ssa_conflicts (gimple *stmt, live_track *live, if (is_gimple_assign (stmt)) { lhs = gimple_assign_lhs (stmt); - if (TREE_CODE (lhs) == SSA_NAME - && TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE - && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large) + if (TREE_CODE (lhs) == SSA_NAME) { - if (!bitmap_bit_p (names, SSA_NAME_VERSION (lhs))) - return; - switch (gimple_assign_rhs_code (stmt)) + tree type = TREE_TYPE (lhs); + if (TREE_CODE (type) == COMPLEX_TYPE) + type = TREE_TYPE (type); + if (TREE_CODE (type) == BITINT_TYPE + && bitint_precision_kind (type) >= bitint_prec_large) { - case MULT_EXPR: - case TRUNC_DIV_EXPR: - case TRUNC_MOD_EXPR: - muldiv_p = true; - default: - break; + if (!bitmap_bit_p (names, SSA_NAME_VERSION (lhs))) + return; + switch (gimple_assign_rhs_code (stmt)) + { + case MULT_EXPR: + case TRUNC_DIV_EXPR: + case TRUNC_MOD_EXPR: + muldiv_p = true; + default: + break; + } } } } @@ -5910,27 +5970,37 @@ build_bitint_stmt_ssa_conflicts (gimple *stmt, live_track *live, auto_vec worklist; FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_USE) - if (TREE_CODE (TREE_TYPE (var)) == BITINT_TYPE - && bitint_precision_kind (TREE_TYPE (var)) >= bitint_prec_large) - { - if (bitmap_bit_p (names, SSA_NAME_VERSION (var))) - use (live, var); - else - worklist.safe_push (var); - } + { + tree type = TREE_TYPE (var); + if (TREE_CODE (type) == COMPLEX_TYPE) + type = TREE_TYPE (type); + if (TREE_CODE (type) == BITINT_TYPE + && bitint_precision_kind (type) >= bitint_prec_large) + { + if (bitmap_bit_p (names, SSA_NAME_VERSION (var))) + use (live, var); + else + worklist.safe_push (var); + } + } while (worklist.length () > 0) { tree s = worklist.pop (); FOR_EACH_SSA_TREE_OPERAND (var, SSA_NAME_DEF_STMT (s), iter, SSA_OP_USE) - if (TREE_CODE (TREE_TYPE (var)) == BITINT_TYPE - && bitint_precision_kind (TREE_TYPE (var)) >= bitint_prec_large) - { - if (bitmap_bit_p (names, SSA_NAME_VERSION (var))) - use (live, var); - else - worklist.safe_push (var); - } + { + tree type = TREE_TYPE (var); + if (TREE_CODE (type) == COMPLEX_TYPE) + type = TREE_TYPE (type); + if (TREE_CODE (type) == BITINT_TYPE + && bitint_precision_kind (type) >= bitint_prec_large) + { + if (bitmap_bit_p (names, SSA_NAME_VERSION (var))) + use (live, var); + else + worklist.safe_push (var); + } + } } if (muldiv_p) @@ -7090,6 +7160,71 @@ gimple_lower_bitint (void) if (edge_insertions) gsi_commit_edge_inserts (); + /* Fix up arguments of ECF_RETURNS_TWICE calls. Those were temporarily + inserted before the call, but that is invalid IL, so move them to the + right place and add corresponding PHIs. */ + if (!large_huge.m_returns_twice_calls.is_empty ()) + { + auto_vec arg_stmts; + while (!large_huge.m_returns_twice_calls.is_empty ()) + { + gimple *stmt = large_huge.m_returns_twice_calls.pop (); + gimple_stmt_iterator gsi = gsi_after_labels (gimple_bb (stmt)); + while (gsi_stmt (gsi) != stmt) + { + if (is_gimple_debug (gsi_stmt (gsi))) + gsi_next (&gsi); + else + { + arg_stmts.safe_push (gsi_stmt (gsi)); + gsi_remove (&gsi, false); + } + } + gimple *g; + basic_block bb = NULL; + edge e = NULL, ead = NULL; + FOR_EACH_VEC_ELT (arg_stmts, i, g) + { + gsi_safe_insert_before (&gsi, g); + if (i == 0) + { + bb = gimple_bb (stmt); + gcc_checking_assert (EDGE_COUNT (bb->preds) == 2); + e = EDGE_PRED (bb, 0); + ead = EDGE_PRED (bb, 1); + if ((ead->flags & EDGE_ABNORMAL) == 0) + std::swap (e, ead); + gcc_checking_assert ((e->flags & EDGE_ABNORMAL) == 0 + && (ead->flags & EDGE_ABNORMAL)); + } + tree lhs = gimple_assign_lhs (g); + tree arg = lhs; + gphi *phi = create_phi_node (copy_ssa_name (arg), bb); + add_phi_arg (phi, arg, e, UNKNOWN_LOCATION); + tree var = create_tmp_reg (TREE_TYPE (arg)); + suppress_warning (var, OPT_Wuninitialized); + arg = get_or_create_ssa_default_def (cfun, var); + SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg) = 1; + add_phi_arg (phi, arg, ead, UNKNOWN_LOCATION); + arg = gimple_phi_result (phi); + SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg) = 1; + imm_use_iterator iter; + gimple *use_stmt; + FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs) + { + if (use_stmt == phi) + continue; + gcc_checking_assert (use_stmt == stmt); + use_operand_p use_p; + FOR_EACH_IMM_USE_ON_STMT (use_p, iter) + SET_USE (use_p, arg); + } + } + update_stmt (stmt); + arg_stmts.truncate (0); + } + } + return ret; } diff --git a/gcc/gimple-range-phi.cc b/gcc/gimple-range-phi.cc index 01900a35b32e..c679e4ed7f29 100644 --- a/gcc/gimple-range-phi.cc +++ b/gcc/gimple-range-phi.cc @@ -325,7 +325,7 @@ phi_analyzer::operator[] (tree name) return m_tab[v]; } -// Process phi node PHI to see if it it part of a group. +// Process phi node PHI to see if it is part of a group. void phi_analyzer::process_phi (gphi *phi) diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc index c16b776c1e3a..4d3b1ce85884 100644 --- a/gcc/gimple-range.cc +++ b/gcc/gimple-range.cc @@ -689,6 +689,8 @@ enable_ranger (struct function *fun, bool use_imm_uses) { gimple_ranger *r; + bitmap_obstack_initialize (NULL); + gcc_checking_assert (!fun->x_range_query); r = new gimple_ranger (use_imm_uses); fun->x_range_query = r; @@ -705,6 +707,8 @@ disable_ranger (struct function *fun) gcc_checking_assert (fun->x_range_query); delete fun->x_range_query; fun->x_range_query = NULL; + + bitmap_obstack_release (NULL); } // ------------------------------------------------------------------------ diff --git a/gcc/gimple-ssa-store-merging.cc b/gcc/gimple-ssa-store-merging.cc index 42b68abf61b2..cb0cb5f42f65 100644 --- a/gcc/gimple-ssa-store-merging.cc +++ b/gcc/gimple-ssa-store-merging.cc @@ -3051,7 +3051,10 @@ imm_store_chain_info::try_coalesce_bswap (merged_store_group *merged_store, return false; case 64: if (builtin_decl_explicit_p (BUILT_IN_BSWAP64) - && optab_handler (bswap_optab, DImode) != CODE_FOR_nothing) + && (optab_handler (bswap_optab, DImode) != CODE_FOR_nothing + || (word_mode == SImode + && builtin_decl_explicit_p (BUILT_IN_BSWAP32) + && optab_handler (bswap_optab, SImode) != CODE_FOR_nothing))) break; return false; default: diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc index 6ebca964cb21..3b731525f15c 100644 --- a/gcc/gimplify.cc +++ b/gcc/gimplify.cc @@ -71,6 +71,28 @@ along with GCC; see the file COPYING3. If not see #include "context.h" #include "tree-nested.h" +/* Identifier for a basic condition, mapping it to other basic conditions of + its Boolean expression. Basic conditions given the same uid (in the same + function) are parts of the same ANDIF/ORIF expression. Used for condition + coverage. */ +static unsigned nextuid = 1; +/* Get a fresh identifier for a new condition expression. This is used for + condition coverage. */ +static unsigned +next_cond_uid () +{ + return nextuid++; +} +/* Reset the condition uid to the value it should have when compiling a new + function. 0 is already the default/untouched value, so start at non-zero. + A valid and set id should always be > 0. This is used for condition + coverage. */ +static void +reset_cond_uid () +{ + nextuid = 1; +} + /* Hash set of poisoned variables in a bind expr. */ static hash_set *asan_poisoned_variables = NULL; @@ -652,6 +674,11 @@ internal_get_tmp_var (tree val, gimple_seq *pre_p, gimple_seq *post_p, gimplify_and_add (mod, pre_p); ggc_free (mod); + /* If we failed to gimplify VAL then we can end up with the temporary + SSA name not having a definition. In this case return a decl. */ + if (TREE_CODE (t) == SSA_NAME && ! SSA_NAME_DEF_STMT (t)) + return lookup_tmp_var (val, is_formal, not_gimple_reg); + return t; } @@ -4134,13 +4161,16 @@ gimplify_call_expr (tree *expr_p, gimple_seq *pre_p, bool want_value) LOCUS is the source location of the COND_EXPR. + The condition_uid is a discriminator tag for condition coverage used to map + conditions to its corresponding full Boolean function. + This function is the tree equivalent of do_jump. shortcut_cond_r should only be called by shortcut_cond_expr. */ static tree shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p, - location_t locus) + location_t locus, unsigned condition_uid) { tree local_label = NULL_TREE; tree t, expr = NULL; @@ -4162,13 +4192,14 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p, false_label_p = &local_label; /* Keep the original source location on the first 'if'. */ - t = shortcut_cond_r (TREE_OPERAND (pred, 0), NULL, false_label_p, locus); + t = shortcut_cond_r (TREE_OPERAND (pred, 0), NULL, false_label_p, locus, + condition_uid); append_to_statement_list (t, &expr); /* Set the source location of the && on the second 'if'. */ new_locus = rexpr_location (pred, locus); t = shortcut_cond_r (TREE_OPERAND (pred, 1), true_label_p, false_label_p, - new_locus); + new_locus, condition_uid); append_to_statement_list (t, &expr); } else if (TREE_CODE (pred) == TRUTH_ORIF_EXPR) @@ -4185,13 +4216,14 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p, true_label_p = &local_label; /* Keep the original source location on the first 'if'. */ - t = shortcut_cond_r (TREE_OPERAND (pred, 0), true_label_p, NULL, locus); + t = shortcut_cond_r (TREE_OPERAND (pred, 0), true_label_p, NULL, locus, + condition_uid); append_to_statement_list (t, &expr); /* Set the source location of the || on the second 'if'. */ new_locus = rexpr_location (pred, locus); t = shortcut_cond_r (TREE_OPERAND (pred, 1), true_label_p, false_label_p, - new_locus); + new_locus, condition_uid); append_to_statement_list (t, &expr); } else if (TREE_CODE (pred) == COND_EXPR @@ -4214,9 +4246,11 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p, new_locus = rexpr_location (pred, locus); expr = build3 (COND_EXPR, void_type_node, TREE_OPERAND (pred, 0), shortcut_cond_r (TREE_OPERAND (pred, 1), true_label_p, - false_label_p, locus), + false_label_p, locus, condition_uid), shortcut_cond_r (TREE_OPERAND (pred, 2), true_label_p, - false_label_p, new_locus)); + false_label_p, new_locus, + condition_uid)); + SET_EXPR_UID (expr, condition_uid); } else { @@ -4224,6 +4258,7 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p, build_and_jump (true_label_p), build_and_jump (false_label_p)); SET_EXPR_LOCATION (expr, locus); + SET_EXPR_UID (expr, condition_uid); } if (local_label) @@ -4274,12 +4309,44 @@ find_goto_label (tree expr) return NULL_TREE; } + +/* Given a multi-term condition (ANDIF, ORIF), walk the predicate PRED and tag + every basic condition with CONDITION_UID. Two basic conditions share the + CONDITION_UID discriminator when they belong to the same predicate, which is + used by the condition coverage. Doing this as an explicit step makes for a + simpler implementation than weaving it into the splitting code as the + splitting code eventually calls the entry point gimplfiy_expr which makes + bookkeeping complicated. */ +static void +tag_shortcut_cond (tree pred, unsigned condition_uid) +{ + if (TREE_CODE (pred) == TRUTH_ANDIF_EXPR + || TREE_CODE (pred) == TRUTH_ORIF_EXPR) + { + tree fst = TREE_OPERAND (pred, 0); + tree lst = TREE_OPERAND (pred, 1); + + if (TREE_CODE (fst) == TRUTH_ANDIF_EXPR + || TREE_CODE (fst) == TRUTH_ORIF_EXPR) + tag_shortcut_cond (fst, condition_uid); + else if (TREE_CODE (fst) == COND_EXPR) + SET_EXPR_UID (fst, condition_uid); + + if (TREE_CODE (lst) == TRUTH_ANDIF_EXPR + || TREE_CODE (lst) == TRUTH_ORIF_EXPR) + tag_shortcut_cond (lst, condition_uid); + else if (TREE_CODE (lst) == COND_EXPR) + SET_EXPR_UID (lst, condition_uid); + } +} + /* Given a conditional expression EXPR with short-circuit boolean predicates using TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR, break the - predicate apart into the equivalent sequence of conditionals. */ - + predicate apart into the equivalent sequence of conditionals. CONDITION_UID + is a the tag/discriminator for this EXPR - all basic conditions in the + expression will be given the same CONDITION_UID. */ static tree -shortcut_cond_expr (tree expr) +shortcut_cond_expr (tree expr, unsigned condition_uid) { tree pred = TREE_OPERAND (expr, 0); tree then_ = TREE_OPERAND (expr, 1); @@ -4291,6 +4358,8 @@ shortcut_cond_expr (tree expr) bool then_se = then_ && TREE_SIDE_EFFECTS (then_); bool else_se = else_ && TREE_SIDE_EFFECTS (else_); + tag_shortcut_cond (pred, condition_uid); + /* First do simple transformations. */ if (!else_se) { @@ -4306,7 +4375,7 @@ shortcut_cond_expr (tree expr) /* Set the source location of the && on the second 'if'. */ if (rexpr_has_location (pred)) SET_EXPR_LOCATION (expr, rexpr_location (pred)); - then_ = shortcut_cond_expr (expr); + then_ = shortcut_cond_expr (expr, condition_uid); then_se = then_ && TREE_SIDE_EFFECTS (then_); pred = TREE_OPERAND (pred, 0); expr = build3 (COND_EXPR, void_type_node, pred, then_, NULL_TREE); @@ -4328,7 +4397,7 @@ shortcut_cond_expr (tree expr) /* Set the source location of the || on the second 'if'. */ if (rexpr_has_location (pred)) SET_EXPR_LOCATION (expr, rexpr_location (pred)); - else_ = shortcut_cond_expr (expr); + else_ = shortcut_cond_expr (expr, condition_uid); else_se = else_ && TREE_SIDE_EFFECTS (else_); pred = TREE_OPERAND (pred, 0); expr = build3 (COND_EXPR, void_type_node, pred, NULL_TREE, else_); @@ -4336,6 +4405,9 @@ shortcut_cond_expr (tree expr) } } + /* The expr tree should also have the expression id set. */ + SET_EXPR_UID (expr, condition_uid); + /* If we're done, great. */ if (TREE_CODE (pred) != TRUTH_ANDIF_EXPR && TREE_CODE (pred) != TRUTH_ORIF_EXPR) @@ -4383,7 +4455,7 @@ shortcut_cond_expr (tree expr) /* If there was nothing else in our arms, just forward the label(s). */ if (!then_se && !else_se) return shortcut_cond_r (pred, true_label_p, false_label_p, - EXPR_LOC_OR_LOC (expr, input_location)); + EXPR_LOC_OR_LOC (expr, input_location), condition_uid); /* If our last subexpression already has a terminal label, reuse it. */ if (else_se) @@ -4415,7 +4487,8 @@ shortcut_cond_expr (tree expr) jump_over_else = block_may_fallthru (then_); pred = shortcut_cond_r (pred, true_label_p, false_label_p, - EXPR_LOC_OR_LOC (expr, input_location)); + EXPR_LOC_OR_LOC (expr, input_location), + condition_uid); expr = NULL; append_to_statement_list (pred, &expr); @@ -4511,6 +4584,7 @@ gimple_boolify (tree expr) case annot_expr_no_vector_kind: case annot_expr_vector_kind: case annot_expr_parallel_kind: + case annot_expr_maybe_infinite_kind: TREE_OPERAND (expr, 0) = gimple_boolify (TREE_OPERAND (expr, 0)); if (TREE_CODE (type) != BOOLEAN_TYPE) TREE_TYPE (expr) = boolean_type_node; @@ -4589,6 +4663,24 @@ generic_expr_could_trap_p (tree expr) return false; } +/* Associate the condition STMT with the discriminator UID. STMTs that are + broken down with ANDIF/ORIF from the same Boolean expression should be given + the same UID; 'if (a && b && c) { if (d || e) ... } ...' should yield the + { a: 1, b: 1, c: 1, d: 2, e: 2 } when gimplification is done. This is used + for condition coverage. */ +static void +gimple_associate_condition_with_expr (struct function *fn, gcond *stmt, + unsigned uid) +{ + if (!condition_coverage_flag) + return; + + if (!fn->cond_uids) + fn->cond_uids = new hash_map (); + + fn->cond_uids->put (stmt, uid); +} + /* Convert the conditional expression pointed to by EXPR_P '(p) ? a : b;' into @@ -4691,7 +4783,7 @@ gimplify_cond_expr (tree *expr_p, gimple_seq *pre_p, fallback_t fallback) if (TREE_CODE (TREE_OPERAND (expr, 0)) == TRUTH_ANDIF_EXPR || TREE_CODE (TREE_OPERAND (expr, 0)) == TRUTH_ORIF_EXPR) { - expr = shortcut_cond_expr (expr); + expr = shortcut_cond_expr (expr, next_cond_uid ()); if (expr != *expr_p) { @@ -4755,11 +4847,16 @@ gimplify_cond_expr (tree *expr_p, gimple_seq *pre_p, fallback_t fallback) else label_false = create_artificial_label (UNKNOWN_LOCATION); + unsigned cond_uid = EXPR_COND_UID (expr); + if (cond_uid == 0) + cond_uid = next_cond_uid (); + gimple_cond_get_ops_from_tree (COND_EXPR_COND (expr), &pred_code, &arm1, &arm2); cond_stmt = gimple_build_cond (pred_code, arm1, arm2, label_true, label_false); gimple_set_location (cond_stmt, EXPR_LOCATION (expr)); + gimple_associate_condition_with_expr (cfun, cond_stmt, cond_uid); copy_warning (cond_stmt, COND_EXPR_COND (expr)); gimplify_seq_add_stmt (&seq, cond_stmt); gimple_stmt_iterator gsi = gsi_last (seq); @@ -19243,6 +19340,8 @@ gimplify_function_tree (tree fndecl) else push_struct_function (fndecl); + reset_cond_uid (); + /* Tentatively set PROP_gimple_lva here, and reset it in gimplify_va_arg_expr if necessary. */ cfun->curr_properties |= PROP_gimple_lva; diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 4ad6d4b7ba31..802f91f68f9a 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2024-04-05 Christophe Lyon + + * Make-lang.in (go.install-dvi): New rule. + 2024-01-04 David Malcolm * lang.opt.urls: New file, autogenerated by diff --git a/gcc/go/Make-lang.in b/gcc/go/Make-lang.in index 9a31eafa2195..5c569a403892 100644 --- a/gcc/go/Make-lang.in +++ b/gcc/go/Make-lang.in @@ -175,6 +175,16 @@ go.install-pdf: doc/gccgo.pdf $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/gcc/$$f"; \ done +go.install-dvi: doc/gccgo.dvi + @$(NORMAL_INSTALL) + test -z "$(dvidir)" || $(mkinstalldirs) "$(DESTDIR)$(dvidir)/gcc" + @for p in doc/gccgo.dvi; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(dvi__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/gcc/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/gcc/$$f"; \ + done + go.install-html: $(build_htmldir)/go @$(NORMAL_INSTALL) test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 73cb095322ce..50d430d50343 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -e15a14e410b8fc5d28012d5b313cb6c8476c7df9 +98e92493db2ab7857a5934a950a830fc1f95a4e5 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 51ff02061295..238d5a56ca2a 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -9059,7 +9059,7 @@ Selector_expression::lower_method_expression(Gogo* gogo) Named_type* nt = type->named_type(); Struct_type* st = type->struct_type(); - bool is_ambiguous; + bool is_ambiguous = false; Method* method = NULL; if (nt != NULL) method = nt->method_function(name, &is_ambiguous); @@ -18790,7 +18790,7 @@ Composite_literal_expression::lower_array(Type* type) Named_type* ntype = Type::lookup_integer_type("int"); Integer_type* inttype = ntype->integer_type(); - if (sizeof(index) <= static_cast(inttype->bits() * 8) + if (sizeof(index) >= static_cast(inttype->bits() / 8) && index >> (inttype->bits() - 1) != 0) { go_error_at(index_expr->location(), "index value overflow"); diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc index fcf47c7fa128..5269f0ac528e 100644 --- a/gcc/internal-fn.cc +++ b/gcc/internal-fn.cc @@ -245,6 +245,18 @@ expand_fn_using_insn (gcall *stmt, insn_code icode, unsigned int noutputs, && SSA_NAME_IS_DEFAULT_DEF (rhs) && VAR_P (SSA_NAME_VAR (rhs))) create_undefined_input_operand (&ops[opno], TYPE_MODE (rhs_type)); + else if (VECTOR_BOOLEAN_TYPE_P (rhs_type) + && SCALAR_INT_MODE_P (TYPE_MODE (rhs_type)) + && maybe_ne (GET_MODE_PRECISION (TYPE_MODE (rhs_type)), + TYPE_VECTOR_SUBPARTS (rhs_type).to_constant ())) + { + /* Ensure that the vector bitmasks do not have excess bits. */ + int nunits = TYPE_VECTOR_SUBPARTS (rhs_type).to_constant (); + rtx tmp = expand_binop (TYPE_MODE (rhs_type), and_optab, rhs_rtx, + GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1), + NULL_RTX, true, OPTAB_WIDEN); + create_input_operand (&ops[opno], tmp, TYPE_MODE (rhs_type)); + } else create_input_operand (&ops[opno], rhs_rtx, TYPE_MODE (rhs_type)); opno += 1; @@ -312,6 +324,20 @@ add_mask_and_len_args (expand_operand *ops, unsigned int opno, gcall *stmt) { tree mask = gimple_call_arg (stmt, mask_index); rtx mask_rtx = expand_normal (mask); + + tree mask_type = TREE_TYPE (mask); + if (VECTOR_BOOLEAN_TYPE_P (mask_type) + && SCALAR_INT_MODE_P (TYPE_MODE (mask_type)) + && maybe_ne (GET_MODE_PRECISION (TYPE_MODE (mask_type)), + TYPE_VECTOR_SUBPARTS (mask_type).to_constant ())) + { + /* Ensure that the vector bitmasks do not have excess bits. */ + int nunits = TYPE_VECTOR_SUBPARTS (mask_type).to_constant (); + mask_rtx = expand_binop (TYPE_MODE (mask_type), and_optab, mask_rtx, + GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1), + NULL_RTX, true, OPTAB_WIDEN); + } + create_input_operand (&ops[opno++], mask_rtx, TYPE_MODE (TREE_TYPE (mask))); } diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc index 2a1da631e9ca..b7add455bd5d 100644 --- a/gcc/ipa-cp.cc +++ b/gcc/ipa-cp.cc @@ -201,7 +201,7 @@ ipcp_lattice::is_single_const () /* Return true iff X and Y should be considered equal values by IPA-CP. */ -static bool +bool values_equal_for_ipcp_p (tree x, tree y) { gcc_checking_assert (x != NULL_TREE && y != NULL_TREE); diff --git a/gcc/ipa-cp.h b/gcc/ipa-cp.h index 0b3cfe4b526a..7ff74fb5c981 100644 --- a/gcc/ipa-cp.h +++ b/gcc/ipa-cp.h @@ -289,4 +289,6 @@ class ipcp_param_lattices bool virt_call = false; }; +bool values_equal_for_ipcp_p (tree x, tree y); + #endif /* IPA_CP_H */ diff --git a/gcc/ipa-icf-gimple.cc b/gcc/ipa-icf-gimple.cc index 8c2df7a354e6..c25eb24710f6 100644 --- a/gcc/ipa-icf-gimple.cc +++ b/gcc/ipa-icf-gimple.cc @@ -39,9 +39,15 @@ along with GCC; see the file COPYING3. If not see #include "cfgloop.h" #include "attribs.h" #include "gimple-walk.h" +#include "tree-sra.h" #include "tree-ssa-alias-compare.h" +#include "alloc-pool.h" +#include "symbol-summary.h" #include "ipa-icf-gimple.h" +#include "sreal.h" +#include "ipa-cp.h" +#include "ipa-prop.h" namespace ipa_icf_gimple { @@ -59,7 +65,8 @@ func_checker::func_checker (tree source_func_decl, tree target_func_decl, : m_source_func_decl (source_func_decl), m_target_func_decl (target_func_decl), m_ignored_source_nodes (ignored_source_nodes), m_ignored_target_nodes (ignored_target_nodes), - m_ignore_labels (ignore_labels), m_tbaa (tbaa) + m_ignore_labels (ignore_labels), m_tbaa (tbaa), + m_total_scalarization_limit_known_p (false) { function *source_func = DECL_STRUCT_FUNCTION (source_func_decl); function *target_func = DECL_STRUCT_FUNCTION (target_func_decl); @@ -356,6 +363,36 @@ func_checker::operand_equal_p (const_tree t1, const_tree t2, return operand_compare::operand_equal_p (t1, t2, flags); } +/* Return true if either T1 and T2 cannot be totally scalarized or if doing + so would result in copying the same memory. Otherwise return false. */ + +bool +func_checker::safe_for_total_scalarization_p (tree t1, tree t2) +{ + tree type1 = TREE_TYPE (t1); + tree type2 = TREE_TYPE (t2); + + if (!AGGREGATE_TYPE_P (type1) + || !AGGREGATE_TYPE_P (type2) + || !tree_fits_uhwi_p (TYPE_SIZE (type1)) + || !tree_fits_uhwi_p (TYPE_SIZE (type2))) + return true; + + if (!m_total_scalarization_limit_known_p) + { + push_cfun (DECL_STRUCT_FUNCTION (m_target_func_decl)); + m_total_scalarization_limit = sra_get_max_scalarization_size (); + pop_cfun (); + m_total_scalarization_limit_known_p = true; + } + + unsigned HOST_WIDE_INT sz = tree_to_uhwi (TYPE_SIZE (type1)); + gcc_assert (sz == tree_to_uhwi (TYPE_SIZE (type2))); + if (sz > m_total_scalarization_limit) + return true; + return sra_total_scalarization_would_copy_same_data_p (type1, type2); +} + /* Function responsible for comparison of various operands T1 and T2 which are accessed as ACCESS. If these components, from functions FUNC1 and FUNC2, are equal, true @@ -377,7 +414,12 @@ func_checker::compare_operand (tree t1, tree t2, operand_access_type access) lto_streaming_expected_p (), m_tbaa); if (!flags) - return true; + { + if (!safe_for_total_scalarization_p (t1, t2)) + return return_false_with_msg + ("total scalarization may not be equivalent"); + return true; + } if (flags & SEMANTICS) return return_false_with_msg ("compare_ao_refs failed (semantic difference)"); @@ -714,6 +756,31 @@ func_checker::compare_gimple_call (gcall *s1, gcall *s2) && !compatible_types_p (TREE_TYPE (t1), TREE_TYPE (t2))) return return_false_with_msg ("GIMPLE internal call LHS type mismatch"); + if (!gimple_call_internal_p (s1)) + { + cgraph_edge *e1 = cgraph_node::get (m_source_func_decl)->get_edge (s1); + cgraph_edge *e2 = cgraph_node::get (m_target_func_decl)->get_edge (s2); + class ipa_edge_args *args1 = ipa_edge_args_sum->get (e1); + class ipa_edge_args *args2 = ipa_edge_args_sum->get (e2); + if ((args1 != nullptr) != (args2 != nullptr)) + return return_false_with_msg ("ipa_edge_args mismatch"); + if (args1) + { + int n1 = ipa_get_cs_argument_count (args1); + int n2 = ipa_get_cs_argument_count (args2); + if (n1 != n2) + return return_false_with_msg ("ipa_edge_args nargs mismatch"); + for (int i = 0; i < n1; i++) + { + struct ipa_jump_func *jf1 = ipa_get_ith_jump_func (args1, i); + struct ipa_jump_func *jf2 = ipa_get_ith_jump_func (args2, i); + if (((jf1 != nullptr) != (jf2 != nullptr)) + || (jf1 && !ipa_jump_functions_equivalent_p (jf1, jf2))) + return return_false_with_msg ("jump function mismatch"); + } + } + } + return compare_operand (t1, t2, get_operand_access_type (&map, t1)); } diff --git a/gcc/ipa-icf-gimple.h b/gcc/ipa-icf-gimple.h index 7f41961c63db..38e2ec076215 100644 --- a/gcc/ipa-icf-gimple.h +++ b/gcc/ipa-icf-gimple.h @@ -125,7 +125,8 @@ class func_checker : ao_compare func_checker (): m_source_func_decl (NULL_TREE), m_target_func_decl (NULL_TREE), m_ignored_source_nodes (NULL), m_ignored_target_nodes (NULL), - m_ignore_labels (false), m_tbaa (true) + m_ignore_labels (false), m_tbaa (true), + m_total_scalarization_limit_known_p (false) { m_source_ssa_names.create (0); m_target_ssa_names.create (0); @@ -205,6 +206,10 @@ class func_checker : ao_compare enum operand_access_type {OP_MEMORY, OP_NORMAL}; typedef hash_set operand_access_type_map; + /* Return true if either T1 and T2 cannot be totally scalarized or if doing + so would result in copying the same memory. Otherwise return false. */ + bool safe_for_total_scalarization_p (tree t1, tree t2); + /* Function responsible for comparison of various operands T1 and T2. If these components, from functions FUNC1 and FUNC2, are equal, true is returned. */ @@ -279,6 +284,14 @@ class func_checker : ao_compare /* Flag if we should compare type based alias analysis info. */ bool m_tbaa; + /* Set to true when total scalarization size has already been determined for + the functions. */ + bool m_total_scalarization_limit_known_p; + + /* When the above it set to true the determiend total scalarization + limit. */ + unsigned HOST_WIDE_INT m_total_scalarization_limit; + public: /* Return true if two operands are equal. The flags fields can be used to specify OEP flags described above. */ diff --git a/gcc/ipa-icf.cc b/gcc/ipa-icf.cc index 5d5a42f9c6c9..e84922c3ef87 100644 --- a/gcc/ipa-icf.cc +++ b/gcc/ipa-icf.cc @@ -1387,6 +1387,23 @@ sem_function::init (ipa_icf_gimple::func_checker *checker) cfg_checksum = iterative_hash_host_wide_int (e->flags, cfg_checksum); + /* TODO: We should be able to match PHIs with different order of + parameters. This needs to be also updated in + sem_function::compare_phi_node. */ + gphi_iterator si; + for (si = gsi_start_nonvirtual_phis (bb); !gsi_end_p (si); + gsi_next_nonvirtual_phi (&si)) + { + hstate.add_int (GIMPLE_PHI); + gphi *phi = si.phi (); + m_checker->hash_operand (gimple_phi_result (phi), hstate, 0, + func_checker::OP_NORMAL); + hstate.add_int (gimple_phi_num_args (phi)); + for (unsigned int i = 0; i < gimple_phi_num_args (phi); i++) + m_checker->hash_operand (gimple_phi_arg_def (phi, i), + hstate, 0, func_checker::OP_NORMAL); + } + for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) { @@ -1579,6 +1596,8 @@ sem_function::compare_phi_node (basic_block bb1, basic_block bb2) if (size1 != size2) return return_false (); + /* TODO: We should be able to match PHIs with different order of + parameters. This needs to be also updated in sem_function::init. */ for (i = 0; i < size1; ++i) { t1 = gimple_phi_arg (phi1, i)->def; @@ -3398,6 +3417,7 @@ sem_item_optimizer::merge_classes (unsigned int prev_class_count, continue; sem_item *source = c->members[0]; + bool this_merged_p = false; if (DECL_NAME (source->decl) && MAIN_NAME_P (DECL_NAME (source->decl))) @@ -3445,7 +3465,7 @@ sem_item_optimizer::merge_classes (unsigned int prev_class_count, if (dbg_cnt (merged_ipa_icf)) { bool merged = source->merge (alias); - merged_p |= merged; + this_merged_p |= merged; if (merged && alias->type == VAR) { @@ -3454,6 +3474,35 @@ sem_item_optimizer::merge_classes (unsigned int prev_class_count, } } } + + merged_p |= this_merged_p; + if (this_merged_p + && source->type == FUNC + && (!flag_wpa || flag_checking)) + { + unsigned i; + tree name; + FOR_EACH_SSA_NAME (i, name, DECL_STRUCT_FUNCTION (source->decl)) + { + /* We need to either merge or reset SSA_NAME_*_INFO. + For merging we don't preserve the mapping between + original and alias SSA_NAMEs from successful equals + calls. */ + if (POINTER_TYPE_P (TREE_TYPE (name))) + { + if (SSA_NAME_PTR_INFO (name)) + { + gcc_checking_assert (!flag_wpa); + SSA_NAME_PTR_INFO (name) = NULL; + } + } + else if (SSA_NAME_RANGE_INFO (name)) + { + gcc_checking_assert (!flag_wpa); + SSA_NAME_RANGE_INFO (name) = NULL; + } + } + } } if (!m_merged_variables.is_empty ()) diff --git a/gcc/ipa-inline.cc b/gcc/ipa-inline.cc index cc509b0c4a4e..e52757510ce9 100644 --- a/gcc/ipa-inline.cc +++ b/gcc/ipa-inline.cc @@ -689,7 +689,7 @@ can_early_inline_edge_p (struct cgraph_edge *e) } gcc_assert (gimple_in_ssa_p (DECL_STRUCT_FUNCTION (e->caller->decl)) && gimple_in_ssa_p (DECL_STRUCT_FUNCTION (callee->decl))); - if (profile_arc_flag + if ((profile_arc_flag || condition_coverage_flag) && ((lookup_attribute ("no_profile_instrument_function", DECL_ATTRIBUTES (caller->decl)) == NULL_TREE) != (lookup_attribute ("no_profile_instrument_function", diff --git a/gcc/ipa-param-manipulation.cc b/gcc/ipa-param-manipulation.cc index 3e0df6a6f77a..ad36b8389c00 100644 --- a/gcc/ipa-param-manipulation.cc +++ b/gcc/ipa-param-manipulation.cc @@ -740,6 +740,12 @@ ipa_param_adjustments::modify_call (cgraph_edge *cs, } if (repl) { + if (!useless_type_conversion_p(apm->type, repl->typed.type)) + { + repl = force_value_to_type (apm->type, repl); + repl = force_gimple_operand_gsi (&gsi, repl, + true, NULL, true, GSI_SAME_STMT); + } vargs.quick_push (repl); continue; } @@ -1525,6 +1531,22 @@ ipa_param_body_adjustments::common_initialization (tree old_fndecl, replacement with a constant (for split aggregates passed by value). */ + if (split[parm_num]) + { + /* We must be careful not to add a duplicate + replacement. */ + sort_replacements (); + ipa_param_body_replacement *pbr + = lookup_replacement_1 (m_oparms[parm_num], + av.unit_offset); + if (pbr) + { + /* Otherwise IPA-SRA should have bailed out. */ + gcc_assert (AGGREGATE_TYPE_P (TREE_TYPE (pbr->repl))); + continue; + } + } + tree repl; if (av.by_ref) repl = av.value; diff --git a/gcc/ipa-prop.cc b/gcc/ipa-prop.cc index e22c4f78405d..374e998aa64b 100644 --- a/gcc/ipa-prop.cc +++ b/gcc/ipa-prop.cc @@ -156,6 +156,20 @@ ipa_vr::equal_p (const vrange &r) const return (types_compatible_p (m_type, r.type ()) && m_storage->equal_p (r)); } +bool +ipa_vr::equal_p (const ipa_vr &o) const +{ + if (!known_p ()) + return !o.known_p (); + + if (!types_compatible_p (m_type, o.m_type)) + return false; + + Value_Range r; + o.get_vrange (r); + return m_storage->equal_p (r); +} + void ipa_vr::get_vrange (Value_Range &r) const { @@ -2500,7 +2514,9 @@ static tree ipa_get_stmt_member_ptr_load_param (gimple *stmt, bool use_delta, HOST_WIDE_INT *offset_p) { - tree rhs, rec, ref_field, ref_offset, fld, ptr_field, delta_field; + tree rhs, fld, ptr_field, delta_field; + tree ref_field = NULL_TREE; + tree ref_offset = NULL_TREE; if (!gimple_assign_single_p (stmt)) return NULL_TREE; @@ -2511,35 +2527,53 @@ ipa_get_stmt_member_ptr_load_param (gimple *stmt, bool use_delta, ref_field = TREE_OPERAND (rhs, 1); rhs = TREE_OPERAND (rhs, 0); } - else - ref_field = NULL_TREE; - if (TREE_CODE (rhs) != MEM_REF) - return NULL_TREE; - rec = TREE_OPERAND (rhs, 0); - if (TREE_CODE (rec) != ADDR_EXPR) - return NULL_TREE; - rec = TREE_OPERAND (rec, 0); - if (TREE_CODE (rec) != PARM_DECL - || !type_like_member_ptr_p (TREE_TYPE (rec), &ptr_field, &delta_field)) + + if (TREE_CODE (rhs) == MEM_REF) + { + ref_offset = TREE_OPERAND (rhs, 1); + if (ref_field && integer_nonzerop (ref_offset)) + return NULL_TREE; + } + else if (!ref_field) return NULL_TREE; - ref_offset = TREE_OPERAND (rhs, 1); + + if (TREE_CODE (rhs) == MEM_REF + && TREE_CODE (TREE_OPERAND (rhs, 0)) == SSA_NAME + && SSA_NAME_IS_DEFAULT_DEF (TREE_OPERAND (rhs, 0))) + { + rhs = TREE_OPERAND (rhs, 0); + if (TREE_CODE (SSA_NAME_VAR (rhs)) != PARM_DECL + || !type_like_member_ptr_p (TREE_TYPE (TREE_TYPE (rhs)), &ptr_field, + &delta_field)) + return NULL_TREE; + } + else + { + if (TREE_CODE (rhs) == MEM_REF + && TREE_CODE (TREE_OPERAND (rhs, 0)) == ADDR_EXPR) + rhs = TREE_OPERAND (TREE_OPERAND (rhs, 0), 0); + if (TREE_CODE (rhs) != PARM_DECL + || !type_like_member_ptr_p (TREE_TYPE (rhs), &ptr_field, + &delta_field)) + return NULL_TREE; + } if (use_delta) fld = delta_field; else fld = ptr_field; - if (offset_p) - *offset_p = int_bit_position (fld); if (ref_field) { - if (integer_nonzerop (ref_offset)) + if (ref_field != fld) return NULL_TREE; - return ref_field == fld ? rec : NULL_TREE; } - else - return tree_int_cst_equal (byte_position (fld), ref_offset) ? rec - : NULL_TREE; + else if (!tree_int_cst_equal (byte_position (fld), ref_offset)) + return NULL_TREE; + + if (offset_p) + *offset_p = int_bit_position (fld); + return rhs; } /* Returns true iff T is an SSA_NAME defined by a statement. */ @@ -2585,8 +2619,9 @@ ipa_note_param_call (struct cgraph_node *node, int param_index, describing the call is created. This is very simple for ordinary pointers represented in SSA but not-so-nice when it comes to member pointers. The ugly part of this function does nothing more than trying to match the - pattern of such a call. An example of such a pattern is the gimple dump - below, the call is on the last line: + pattern of such a call. Look up the documentation of macro + TARGET_PTRMEMFUNC_VBIT_LOCATION for details. An example of such a pattern + is the gimple dump below, the call is on the last line: : f$__delta_5 = f.__delta; @@ -2710,10 +2745,23 @@ ipa_analyze_indirect_call_uses (struct ipa_func_body_info *fbi, gcall *call, corresponding to the pattern. */ if (!single_pred_p (virt_bb) || !single_succ_p (virt_bb) - || single_pred (virt_bb) != bb || single_succ (virt_bb) != join) return; + + if (single_pred (virt_bb) != bb) + { + /* In cases when the distinction between a normal and a virtual + function is encoded in the delta field, the load of the + actual non-virtual function pointer can be in its own BB. */ + + if (!single_pred_p (bb) || !single_succ_p (bb)) + return; + bb = single_pred (bb); + if (bb != single_pred (virt_bb)) + return; + } + /* Third, let's see that the branching is done depending on the least significant bit of the pfn. */ @@ -2759,18 +2807,32 @@ ipa_analyze_indirect_call_uses (struct ipa_func_body_info *fbi, gcall *call, if (rec != rec2) return; - index = ipa_get_param_decl_index (info, rec); - if (index >= 0 - && parm_preserved_before_stmt_p (fbi, index, call, rec)) + if (TREE_CODE (rec) == SSA_NAME) { - struct cgraph_edge *cs = ipa_note_param_call (fbi->node, index, - call, false); - cs->indirect_info->offset = offset; - cs->indirect_info->agg_contents = 1; - cs->indirect_info->member_ptr = 1; - cs->indirect_info->guaranteed_unmodified = 1; + index = ipa_get_param_decl_index (info, SSA_NAME_VAR (rec)); + if (index < 0 + || !parm_ref_data_preserved_p (fbi, index, call, + gimple_assign_rhs1 (def))) + return; + by_ref = true; + } + else + { + index = ipa_get_param_decl_index (info, rec); + if (index < 0 + || !parm_preserved_before_stmt_p (fbi, index, call, rec)) + return; + by_ref = false; } + struct cgraph_edge *cs = ipa_note_param_call (fbi->node, index, + call, false); + cs->indirect_info->offset = offset; + cs->indirect_info->agg_contents = 1; + cs->indirect_info->member_ptr = 1; + cs->indirect_info->by_ref = by_ref; + cs->indirect_info->guaranteed_unmodified = 1; + return; } @@ -6009,4 +6071,157 @@ ipa_prop_cc_finalize (void) ipa_node_params_sum = NULL; } +/* Return true if the two pass_through components of two jump functions are + known to be equivalent. AGG_JF denotes whether they are part of aggregate + functions or not. The function can be used before the IPA phase of IPA-CP + or inlining because it cannot cope with refdesc changes these passes can + carry out. */ + +static bool +ipa_agg_pass_through_jf_equivalent_p (ipa_pass_through_data *ipt1, + ipa_pass_through_data *ipt2, + bool agg_jf) + +{ + gcc_assert (agg_jf || + (!ipt1->refdesc_decremented && !ipt2->refdesc_decremented)); + if (ipt1->operation != ipt2->operation + || ipt1->formal_id != ipt2->formal_id + || (!agg_jf && (ipt1->agg_preserved != ipt2->agg_preserved))) + return false; + if (((ipt1->operand != NULL_TREE) != (ipt2->operand != NULL_TREE)) + || (ipt1->operand + && !values_equal_for_ipcp_p (ipt1->operand, ipt2->operand))) + return false; + return true; +} + +/* Return true if the two aggregate jump functions are known to be equivalent. + The function can be used before the IPA phase of IPA-CP or inlining because + it cannot cope with refdesc changes these passes can carry out. */ + +static bool +ipa_agg_jump_functions_equivalent_p (ipa_agg_jf_item *ajf1, + ipa_agg_jf_item *ajf2) +{ + if (ajf1->offset != ajf2->offset + || ajf1->jftype != ajf2->jftype + || !types_compatible_p (ajf1->type, ajf2->type)) + return false; + + switch (ajf1->jftype) + { + case IPA_JF_CONST: + if (!values_equal_for_ipcp_p (ajf1->value.constant, + ajf2->value.constant)) + return false; + break; + case IPA_JF_PASS_THROUGH: + { + ipa_pass_through_data *ipt1 = &ajf1->value.pass_through; + ipa_pass_through_data *ipt2 = &ajf2->value.pass_through; + if (!ipa_agg_pass_through_jf_equivalent_p (ipt1, ipt2, true)) + return false; + } + break; + case IPA_JF_LOAD_AGG: + { + ipa_load_agg_data *ila1 = &ajf1->value.load_agg; + ipa_load_agg_data *ila2 = &ajf2->value.load_agg; + if (!ipa_agg_pass_through_jf_equivalent_p (&ila1->pass_through, + &ila2->pass_through, true)) + return false; + if (ila1->offset != ila2->offset + || ila1->by_ref != ila2->by_ref + || !types_compatible_p (ila1->type, ila2->type)) + return false; + } + break; + default: + gcc_unreachable (); + } + return true; +} + +/* Return true if the two jump functions are known to be equivalent. The + function can be used before the IPA phase of IPA-CP or inlining because it + cannot cope with refdesc changes these passes can carry out. */ + +bool +ipa_jump_functions_equivalent_p (ipa_jump_func *jf1, ipa_jump_func *jf2) +{ + if (jf1->type != jf2->type) + return false; + + switch (jf1->type) + { + case IPA_JF_UNKNOWN: + break; + case IPA_JF_CONST: + { + tree cst1 = ipa_get_jf_constant (jf1); + tree cst2 = ipa_get_jf_constant (jf2); + if (!values_equal_for_ipcp_p (cst1, cst2)) + return false; + + ipa_cst_ref_desc *rd1 = jfunc_rdesc_usable (jf1); + ipa_cst_ref_desc *rd2 = jfunc_rdesc_usable (jf2); + if (rd1 && rd2) + { + gcc_assert (rd1->refcount == 1 + && rd2->refcount == 1); + gcc_assert (!rd1->next_duplicate && !rd2->next_duplicate); + } + else if (rd1) + return false; + else if (rd2) + return false; + } + break; + case IPA_JF_PASS_THROUGH: + { + ipa_pass_through_data *ipt1 = &jf1->value.pass_through; + ipa_pass_through_data *ipt2 = &jf2->value.pass_through; + if (!ipa_agg_pass_through_jf_equivalent_p (ipt1, ipt2, false)) + return false; + } + break; + case IPA_JF_ANCESTOR: + { + ipa_ancestor_jf_data *ia1 = &jf1->value.ancestor; + ipa_ancestor_jf_data *ia2 = &jf2->value.ancestor; + + if (ia1->formal_id != ia2->formal_id + || ia1->agg_preserved != ia2->agg_preserved + || ia1->keep_null != ia2->keep_null + || ia1->offset != ia2->offset) + return false; + } + break; + default: + gcc_unreachable (); + } + + if (((jf1->m_vr != nullptr) != (jf2->m_vr != nullptr)) + || (jf1->m_vr && !jf1->m_vr->equal_p (*jf2->m_vr))) + return false; + + unsigned alen = vec_safe_length (jf1->agg.items); + if (vec_safe_length (jf2->agg.items) != alen) + return false; + + if (!alen) + return true; + + if (jf1->agg.by_ref != jf2->agg.by_ref) + return false; + + for (unsigned i = 0 ; i < alen; i++) + if (!ipa_agg_jump_functions_equivalent_p (&(*jf1->agg.items)[i], + &(*jf2->agg.items)[i])) + return false; + + return true; +} + #include "gt-ipa-prop.h" diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index ee3c0006add9..93d1b87b1f7f 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -308,6 +308,7 @@ class GTY(()) ipa_vr tree type () const { return m_type; } void get_vrange (Value_Range &) const; bool equal_p (const vrange &) const; + bool equal_p (const ipa_vr &) const; const vrange_storage *storage () const { return m_storage; } void streamer_read (lto_input_block *, class data_in *); void streamer_write (output_block *) const; @@ -1278,5 +1279,7 @@ ipa_range_set_and_normalize (vrange &r, tree val) bool ipa_return_value_range (Value_Range &range, tree decl); void ipa_record_return_value_range (Value_Range val); +bool ipa_jump_functions_equivalent_p (ipa_jump_func *jf1, ipa_jump_func *jf2); + #endif /* IPA_PROP_H */ diff --git a/gcc/ipa-split.cc b/gcc/ipa-split.cc index 39ad822608b2..caf6279ab218 100644 --- a/gcc/ipa-split.cc +++ b/gcc/ipa-split.cc @@ -1939,7 +1939,7 @@ pass_split_functions::gate (function *) /* When doing profile feedback, we want to execute the pass after profiling is read. So disable one in early optimization. */ return (flag_partial_inlining - && !profile_arc_flag && !flag_branch_probabilities); + && !profile_arc_flag && !flag_branch_probabilities); } } // anon namespace diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index 111acf8a29f3..d9cfc6ab4c67 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog @@ -1,3 +1,18 @@ +2024-04-09 Jakub Jelinek + + * docs/topics/expressions.rst (Constructor expressions): Fix + duplicated words; have have -> have. + +2024-04-02 Iain Sandoe + + * Make-lang.in: Implement exports list, and use a shared + libgcc. + * libgccjit.exports: New file. + +2024-03-29 Guillaume Gomez + + * libgccjit.cc (gcc_jit_type_get_size): Add pointer support + 2024-02-10 Jakub Jelinek * jit-playback.cc (new_bitcast): Use HOST_WIDE_INT_PRINT_DEC instead diff --git a/gcc/jit/Make-lang.in b/gcc/jit/Make-lang.in index b1f0ce73e124..99b3d549d5d4 100644 --- a/gcc/jit/Make-lang.in +++ b/gcc/jit/Make-lang.in @@ -55,7 +55,17 @@ else ifneq (,$(findstring darwin,$(host))) -LIBGCCJIT_AGE = 1 +# NOTE that we are building here for the host, and so tests for target- +# specific functionality will only work when host == target. This causes +# fails when building cross-compilers with different object formats (at +# least when the respective linkers do not accept the same command line +# options). Fortunately, for Darwin we can safely hard-code the relevant +# host options, since all usable linkers support them). + +LIBGCCJIT_CURRENT = 26 +LIBGCCJIT_REVISION = 0 +LIBGCCJIT_AGE = 26 +LIBGCCJIT_COMPAT = 0 LIBGCCJIT_BASENAME = libgccjit LIBGCCJIT_SONAME = \ @@ -63,18 +73,18 @@ LIBGCCJIT_SONAME = \ LIBGCCJIT_FILENAME = $(LIBGCCJIT_BASENAME).$(LIBGCCJIT_VERSION_NUM).dylib LIBGCCJIT_LINKER_NAME = $(LIBGCCJIT_BASENAME).dylib -# Conditionalize the use of the LD_VERSION_SCRIPT_OPTION and -# LD_SONAME_OPTION depending if configure found them, using $(if) -# We have to define a COMMA here, otherwise the commas in the "true" -# result are treated as separators by the $(if). +# Darwin does not have a version script option. Exported symbols are controlled +# by the following, and library versioning is done using libtool. +# We have to define a COMMA here, otherwise the commas are treated as +# separators. COMMA := , LIBGCCJIT_VERSION_SCRIPT_OPTION = \ - $(if $(LD_VERSION_SCRIPT_OPTION),\ - -Wl$(COMMA)$(LD_VERSION_SCRIPT_OPTION)$(COMMA)$(srcdir)/jit/libgccjit.map) + -Wl$(COMMA)-exported_symbols_list$(COMMA)$(srcdir)/jit/libgccjit.exports +# For Darwin host, we need a l64 or ld64-compatible linker, that uses +# -install_name to introduce this. LIBGCCJIT_SONAME_OPTION = \ - $(if $(LD_SONAME_OPTION), \ - -Wl$(COMMA)$(LD_SONAME_OPTION)$(COMMA)$(LIBGCCJIT_SONAME)) + -Wl$(COMMA)-install_name$(COMMA)$(LIBGCCJIT_SONAME) LIBGCCJIT_SONAME_SYMLINK = $(LIBGCCJIT_FILENAME) LIBGCCJIT_LINKER_NAME_SYMLINK = $(LIBGCCJIT_LINKER_NAME) @@ -143,15 +153,18 @@ ifneq (,$(findstring mingw,$(target))) # Create import library LIBGCCJIT_EXTRA_OPTS = -Wl,--out-implib,$(LIBGCCJIT_IMPORT_LIB) else - ifneq (,$(findstring darwin,$(host))) -# TODO : Construct a Darwin-style symbol export file. -LIBGCCJIT_EXTRA_OPTS = -Wl,-compatibility_version,$(LIBGCCJIT_VERSION_NUM) \ - -Wl,-current_version,$(LIBGCCJIT_VERSION_NUM).$(LIBGCCJIT_MINOR_NUM).$(LIBGCCJIT_AGE) \ - $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \ - $(LIBGCCJIT_SONAME_OPTION) +LIBGCCJIT_VERS = $(LIBGCCJIT_CURRENT).$(LIBGCCJIT_REVISION).$(LIBGCCJIT_AGE) +LIBGCCJIT_EXTRA_OPTS = -Wl,-current_version,$(LIBGCCJIT_VERS) \ + -Wl,-compatibility_version,$(LIBGCCJIT_COMPAT) \ + $(LIBGCCJIT_VERSION_SCRIPT_OPTION) $(LIBGCCJIT_SONAME_OPTION) +# Use the default (shared) libgcc. +JIT_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS)) +ifeq (,$(findstring darwin8,$(host))) +JIT_LDFLAGS += -Wl,-rpath,@loader_path +endif else - +JIT_LDFLAGS = $(LDFLAGS) LIBGCCJIT_EXTRA_OPTS = $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \ $(LIBGCCJIT_SONAME_OPTION) endif @@ -170,7 +183,7 @@ $(LIBGCCJIT_FILENAME): $(jit_OBJS) \ $(LIBDEPS) $(srcdir)/jit/libgccjit.map \ $(EXTRA_GCC_OBJS_EXCLUSIVE) $(jit.prev) @$(call LINK_PROGRESS,$(INDEX.jit),start) - +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ -shared \ + +$(LLINKER) $(ALL_LINKERFLAGS) $(JIT_LDFLAGS) -o $@ -shared \ $(jit_OBJS) libbackend.a libcommon-target.a libcommon.a \ $(CPPLIB) $(LIBDECNUMBER) $(EXTRA_GCC_LIBS) $(LIBS) $(BACKENDLIBS) \ $(EXTRA_GCC_OBJS_EXCLUSIVE) \ diff --git a/gcc/jit/docs/topics/expressions.rst b/gcc/jit/docs/topics/expressions.rst index c3f4f61eb061..d83d95fe9e0b 100644 --- a/gcc/jit/docs/topics/expressions.rst +++ b/gcc/jit/docs/topics/expressions.rst @@ -238,7 +238,7 @@ Constructor expressions The fields in ``fields`` need to be the same objects that were used to create the struct. - Each value has to have have the same unqualified type as the field + Each value has to have the same unqualified type as the field it is applied to. A NULL value element in ``values`` is a shorthand for zero initialization diff --git a/gcc/jit/libgccjit.cc b/gcc/jit/libgccjit.cc index f40a97814051..445c0d0e0e39 100644 --- a/gcc/jit/libgccjit.cc +++ b/gcc/jit/libgccjit.cc @@ -560,8 +560,8 @@ gcc_jit_type_get_size (gcc_jit_type *type) { RETURN_VAL_IF_FAIL (type, -1, NULL, NULL, "NULL type"); RETURN_VAL_IF_FAIL - (type->is_int () || type->is_float (), -1, NULL, NULL, - "only getting the size of integer or floating-point types is supported for now"); + (type->is_int () || type->is_float () || type->is_pointer (), -1, NULL, NULL, + "only getting the size of integer or floating-point or pointer types is supported for now"); return type->get_size (); } diff --git a/gcc/jit/libgccjit.exports b/gcc/jit/libgccjit.exports new file mode 100644 index 000000000000..e32bbe2fd408 --- /dev/null +++ b/gcc/jit/libgccjit.exports @@ -0,0 +1,233 @@ +# Linker export list for Darwin libgccjit.dylib + +# Contributed by Iain Sandoe . +# +# This file is part of GCC. +# +# GCC is free software you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC see the file COPYING3. If not see +# . */ + +# The initial release of the library. +# Keep this list sorted alphabetically: +_gcc_jit_block_add_assignment +_gcc_jit_block_add_assignment_op +_gcc_jit_block_add_comment +_gcc_jit_block_add_eval +_gcc_jit_block_as_object +_gcc_jit_block_end_with_conditional +_gcc_jit_block_end_with_jump +_gcc_jit_block_end_with_return +_gcc_jit_block_end_with_void_return +_gcc_jit_block_get_function +_gcc_jit_context_acquire +_gcc_jit_context_compile +_gcc_jit_context_compile_to_file +_gcc_jit_context_dump_to_file +_gcc_jit_context_dump_reproducer_to_file +_gcc_jit_context_enable_dump +_gcc_jit_context_get_builtin_function +_gcc_jit_context_get_first_error +_gcc_jit_context_get_last_error +_gcc_jit_context_get_type +_gcc_jit_context_get_int_type +_gcc_jit_context_new_array_access +_gcc_jit_context_new_array_type +_gcc_jit_context_new_binary_op +_gcc_jit_context_new_call +_gcc_jit_context_new_call_through_ptr +_gcc_jit_context_new_cast +_gcc_jit_context_new_child_context +_gcc_jit_context_new_comparison +_gcc_jit_context_new_field +_gcc_jit_context_new_function +_gcc_jit_context_new_function_ptr_type +_gcc_jit_context_new_global +_gcc_jit_context_new_location +_gcc_jit_context_new_opaque_struct +_gcc_jit_context_new_param +_gcc_jit_context_new_rvalue_from_double +_gcc_jit_context_new_rvalue_from_int +_gcc_jit_context_new_rvalue_from_long +_gcc_jit_context_new_rvalue_from_ptr +_gcc_jit_context_new_string_literal +_gcc_jit_context_new_struct_type +_gcc_jit_context_new_unary_op +_gcc_jit_context_new_union_type +_gcc_jit_context_null +_gcc_jit_context_one +_gcc_jit_context_release +_gcc_jit_context_set_bool_option +_gcc_jit_context_set_int_option +_gcc_jit_context_set_logfile +_gcc_jit_context_set_str_option +_gcc_jit_context_zero +_gcc_jit_field_as_object +_gcc_jit_function_as_object +_gcc_jit_function_dump_to_dot +_gcc_jit_function_get_param +_gcc_jit_function_new_block +_gcc_jit_function_new_local +_gcc_jit_location_as_object +_gcc_jit_lvalue_as_object +_gcc_jit_lvalue_as_rvalue +_gcc_jit_lvalue_access_field +_gcc_jit_lvalue_get_address +_gcc_jit_object_get_context +_gcc_jit_object_get_debug_string +_gcc_jit_param_as_lvalue +_gcc_jit_param_as_object +_gcc_jit_param_as_rvalue +_gcc_jit_result_get_code +_gcc_jit_result_get_global +_gcc_jit_result_release +_gcc_jit_rvalue_access_field +_gcc_jit_rvalue_as_object +_gcc_jit_rvalue_dereference +_gcc_jit_rvalue_dereference_field +_gcc_jit_rvalue_get_type +_gcc_jit_struct_as_type +_gcc_jit_struct_set_fields +_gcc_jit_type_as_object +_gcc_jit_type_get_const +_gcc_jit_type_get_pointer +_gcc_jit_type_get_volatile + +# Add support for adding arbitrary command-line options (PR jit/66628). +# LIBGCCJIT_ABI_1 +_gcc_jit_context_add_command_line_option + +# Add support for disabling the check for unreachable blocks (PR jit/66546). +# LIBGCCJIT_ABI_2 +_gcc_jit_context_set_bool_allow_unreachable_blocks + +# Add support for switch statements. +# LIBGCCJIT_ABI_3 +_gcc_jit_block_end_with_switch +_gcc_jit_case_as_object +_gcc_jit_context_new_case + +# Add timing API. +#LIBGCCJIT_ABI_4 +_gcc_jit_context_get_timer +_gcc_jit_context_set_timer +_gcc_jit_timer_new +_gcc_jit_timer_release +_gcc_jit_timer_push +_gcc_jit_timer_pop +_gcc_jit_timer_print + +# LIBGCCJIT_ABI_5 +_gcc_jit_context_set_bool_use_external_driver + +# LIBGCCJIT_ABI_6 +_gcc_jit_rvalue_set_bool_require_tail_call + +# LIBGCCJIT_ABI_7 +_gcc_jit_type_get_aligned + +# LIBGCCJIT_ABI_8 +_gcc_jit_type_get_vector + +# LIBGCCJIT_ABI_9 +_gcc_jit_function_get_address + +# LIBGCCJIT_ABI_10 +_gcc_jit_context_new_rvalue_from_vector + +# LIBGCCJIT_ABI_11 +_gcc_jit_context_add_driver_option + +# LIBGCCJIT_ABI_12 +_gcc_jit_context_new_bitfield + +# LIBGCCJIT_ABI_13 +_gcc_jit_version_major +_gcc_jit_version_minor +_gcc_jit_version_patchlevel + +# LIBGCCJIT_ABI_14 +_gcc_jit_global_set_initializer + +# LIBGCCJIT_ABI_15 +_gcc_jit_block_add_extended_asm +_gcc_jit_block_end_with_extended_asm_goto +_gcc_jit_extended_asm_as_object +_gcc_jit_extended_asm_set_volatile_flag +_gcc_jit_extended_asm_set_inline_flag +_gcc_jit_extended_asm_add_output_operand +_gcc_jit_extended_asm_add_input_operand +_gcc_jit_extended_asm_add_clobber +_gcc_jit_context_add_top_level_asm + +# LIBGCCJIT_ABI_16 +_gcc_jit_function_get_return_type +_gcc_jit_function_get_param_count +_gcc_jit_function_type_get_return_type +_gcc_jit_function_type_get_param_count +_gcc_jit_function_type_get_param_type +_gcc_jit_type_unqualified +_gcc_jit_type_dyncast_array +_gcc_jit_type_is_bool +_gcc_jit_type_dyncast_function_ptr_type +_gcc_jit_type_is_integral +_gcc_jit_type_is_pointer +_gcc_jit_type_dyncast_vector +_gcc_jit_vector_type_get_element_type +_gcc_jit_vector_type_get_num_units +_gcc_jit_struct_get_field +_gcc_jit_type_is_struct +_gcc_jit_struct_get_field_count + +# LIBGCCJIT_ABI_17 +_gcc_jit_lvalue_set_tls_model + +# LIBGCCJIT_ABI_18 +_gcc_jit_lvalue_set_link_section + +#LIBGCCJIT_ABI_19 +_gcc_jit_context_new_array_constructor +_gcc_jit_context_new_struct_constructor +_gcc_jit_context_new_union_constructor +_gcc_jit_global_set_initializer_rvalue + +# LIBGCCJIT_ABI_20 +_gcc_jit_compatible_types +_gcc_jit_type_get_size + +# LIBGCCJIT_ABI_21 +_gcc_jit_context_new_bitcast + +# LIBGCCJIT_ABI_22 +_gcc_jit_lvalue_set_register_name + +# LIBGCCJIT_ABI_23 +_gcc_jit_context_set_bool_print_errors_to_stderr + +# LIBGCCJIT_ABI_24 +_gcc_jit_lvalue_set_alignment +_gcc_jit_lvalue_get_alignment + +# LIBGCCJIT_ABI_25 +_gcc_jit_type_get_restrict + +# LIBGCCJIT_ABI_26 +_gcc_jit_function_add_attribute +_gcc_jit_function_add_string_attribute +_gcc_jit_lvalue_add_string_attribute +_gcc_jit_function_add_integer_array_attribute + +# LIBGCCJIT_ABI_27 +_gcc_jit_context_new_sizeof + + diff --git a/gcc/lower-subreg.cc b/gcc/lower-subreg.cc index 2f7f0a83e237..d1da94336e75 100644 --- a/gcc/lower-subreg.cc +++ b/gcc/lower-subreg.cc @@ -933,7 +933,7 @@ resolve_simple_move (rtx set, rtx_insn *insn) if (reg_overlap_mentioned_p (XVECEXP (dest, 0, 0), XVECEXP (src, 0, 1))) { - /* If there is overlap betwee the first half of the + /* If there is overlap between the first half of the destination and what will be stored to the second one, use a temporary pseudo. See PR114211. */ rtx tem = gen_reg_rtx (GET_MODE (XVECEXP (src, 0, 1))); diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc index 0ae81c1ff9cb..10e3d4e40977 100644 --- a/gcc/lra-constraints.cc +++ b/gcc/lra-constraints.cc @@ -5213,7 +5213,7 @@ lra_constraints (bool first_p) bool changed_p; int i, hard_regno, new_insns_num; unsigned int min_len, new_min_len, uid; - rtx set, x, reg, dest_reg; + rtx set, x, reg, nosubreg_dest; rtx_insn *original_insn; basic_block last_bb; bitmap_iterator bi; @@ -5377,14 +5377,14 @@ lra_constraints (bool first_p) { if ((set = single_set (curr_insn)) != NULL_RTX) { - dest_reg = SET_DEST (set); + nosubreg_dest = SET_DEST (set); /* The equivalence pseudo could be set up as SUBREG in a case when it is a call restore insn in a mode different from the pseudo mode. */ - if (GET_CODE (dest_reg) == SUBREG) - dest_reg = SUBREG_REG (dest_reg); - if ((REG_P (dest_reg) - && (x = get_equiv (dest_reg)) != dest_reg + if (GET_CODE (nosubreg_dest) == SUBREG) + nosubreg_dest = SUBREG_REG (nosubreg_dest); + if ((REG_P (nosubreg_dest) + && (x = get_equiv (nosubreg_dest)) != nosubreg_dest /* Remove insns which set up a pseudo whose value cannot be changed. Such insns might be not in init_insns because we don't update equiv data @@ -5403,11 +5403,21 @@ lra_constraints (bool first_p) up the equivalence. */ || in_list_p (curr_insn, ira_reg_equiv - [REGNO (dest_reg)].init_insns))) + [REGNO (nosubreg_dest)].init_insns))) || (((x = get_equiv (SET_SRC (set))) != SET_SRC (set)) && in_list_p (curr_insn, ira_reg_equiv - [REGNO (SET_SRC (set))].init_insns))) + [REGNO (SET_SRC (set))].init_insns) + /* This is a reverse equivalence to memory (see ira.cc) + in store insn. We can reload all the destination and + have an output reload which is a store to memory. If + we just remove the insn, we will have the output + reload storing an undefined value to the memory. + Check that we did not reload the memory to prevent a + wrong code generation. We could implement using the + equivalence still in such case but doing this is not + worth the efforts as such case is very rare. */ + && MEM_P (nosubreg_dest))) { /* This is equiv init insn of pseudo which did not get a hard register -- remove the insn. */ diff --git a/gcc/lto-compress.cc b/gcc/lto-compress.cc index c167ac967aa2..bebf0277ef67 100644 --- a/gcc/lto-compress.cc +++ b/gcc/lto-compress.cc @@ -408,7 +408,7 @@ lto_end_uncompression (struct lto_compression_stream *stream, } #endif if (compression == ZSTD) - internal_error ("compiler does not support ZSTD LTO compression"); + fatal_error (UNKNOWN_LOCATION, "compiler does not support ZSTD LTO compression"); lto_uncompression_zlib (stream); } diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc index ca53e4b462eb..02579951569d 100644 --- a/gcc/lto-wrapper.cc +++ b/gcc/lto-wrapper.cc @@ -218,15 +218,18 @@ find_option (vec &options, cl_decoded_option *option) return find_option (options, option->opt_index); } -/* Merge -flto FOPTION into vector of DECODED_OPTIONS. */ +/* Merge -flto FOPTION into vector of DECODED_OPTIONS. If FORCE is true + then FOPTION overrides previous settings. */ static void merge_flto_options (vec &decoded_options, - cl_decoded_option *foption) + cl_decoded_option *foption, bool force) { int existing_opt = find_option (decoded_options, foption); if (existing_opt == -1) decoded_options.safe_push (*foption); + else if (force) + decoded_options[existing_opt].arg = foption->arg; else { if (strcmp (foption->arg, decoded_options[existing_opt].arg) != 0) @@ -493,7 +496,7 @@ merge_and_complain (vec &decoded_options, break; case OPT_flto_: - merge_flto_options (decoded_options, foption); + merge_flto_options (decoded_options, foption, false); break; } } @@ -993,7 +996,8 @@ compile_offload_image (const char *target, const char *compiler_path, obstack_ptr_grow (&argv_obstack, NULL); argv = XOBFINISH (&argv_obstack, char **); - fork_execute (argv[0], argv, true, "offload_args"); + suffix = concat (target, ".offload_args", NULL); + fork_execute (argv[0], argv, true, suffix); obstack_free (&argv_obstack, NULL); free_array_of_ptrs ((void **) paths, n_paths); @@ -1549,8 +1553,8 @@ run_gcc (unsigned argc, char *argv[]) break; case OPT_flto_: - /* Merge linker -flto= option with what we have in IL files. */ - merge_flto_options (fdecoded_options, option); + /* Override IL file settings with a linker -flto= option. */ + merge_flto_options (fdecoded_options, option, true); if (strcmp (option->arg, "jobserver") == 0) jobserver_requested = true; break; diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog index ed51728aa31e..3d185fe2e590 100644 --- a/gcc/m2/ChangeLog +++ b/gcc/m2/ChangeLog @@ -1,3 +1,611 @@ +2024-04-09 Gaius Mulley + + * tools-src/makeSystem: Invoke ${COMPILER} once and adjust + the echo string to expand the shell variables with -wrapper + gdb, --args. + +2024-04-09 Gaius Mulley + + PR modula2/114648 + * gm2-compiler/M2Options.mod (LineDirectives): Initially + set to true. + +2024-04-06 Gaius Mulley + + PR modula2/114617 + * gm2-compiler/M2GenGCC.mod (CodeStatememt): Add quad trace. + (ResolveConstantExpressions): Add parameter p to FoldIfLess, + FoldIfGre, FoldIfLessEqu, FoldIfGreEqu, FoldIfEqu, FoldIfNotEqu, + FoldIfIn and FoldIfNotIn. + (CodeInline): Add constExpr variable and pass it to GetQuadOtok. + (CodeReturnValue): Ditto. + (CodeParam): Ditto. + (FoldStringLength): Ditto. + (FoldStringConvertM2nul): Ditto. + (FoldStringConvertCnul): Ditto. + (DeclaredOperandsBecomes): Ditto. + (TypeCheckBecomes): Ditto. + (PerformFoldBecomes): Ditto. + (CodeBecomes): Ditto. + (CheckElementSetTypes): Ditto. + (CodeBinarySet): Ditto. + (PerformCodeIfLess): Ditto. + (PerformCodeIfGre): Ditto. + (PerformCodeIfLessEqu): Ditto. + (PerformCodeIfGreEqu): Ditto. + (PerformCodeIfEqu): Ditto. + (PerformCodeIfNotEqu): Ditto. + (IsValidExpressionRelOp): Ditto. + (PerformCodeIfIn): Ditto. + (PerformCodeIfNotIn): Ditto. + (CodeXIndr): Ditto. + (QuadCondition): New procedure function. + (IsBooleanRelOpPattern): Ditto. + (FoldBooleanRelopPattern): Ditto. + (FoldIfGre): Check for boolean relop constant expression and + add parameter p. + (FoldIfLessEqu): Ditto. + (FoldIfIn): Ditto. + (FoldIfEqu): Ditto. + (FoldIfNotIn): Ditto. + (FoldIfGreEqu): New procedure. + (FoldIfNotEqu): Ditto. + * gm2-compiler/M2Optimize.mod (ReduceBranch): Add constExpr + variable and pass it to GetQuadOtok. + * gm2-compiler/M2Quads.def (IsBecomes): New procedure function. + (IsDummy): Ditto. + (IsQuadConstExpr): Ditto. + (SetQuadConstExpr): Ditto. + (GetQuadDest): New procedure. + (GetQuadOp1): New procedure. + (GetQuadOp2): New procedure. + (GetQuadOp3): New procedure. + (GetQuadOtok): New procedure. + (GetQuadOTypetok): New procedure. + (PutQuadOtok): New procedure. + (IsInConstParameters): New procedure function. + * gm2-compiler/M2Quads.mod (IsBecomes): New procedure function. + (IsDummy): Ditto. + (IsQuadConstExpr): Ditto. + (SetQuadConstExpr): Ditto. + (GetQuadDest): New procedure. + (GetQuadOp1): New procedure. + (GetQuadOp2): New procedure. + (GetQuadOp3): New procedure. + (GetQuadOtok): New procedure. + (GetQuadOTypetok): New procedure. + (PutQuadOtok): New procedure. + (IsInConstParameters): New procedure function. + (ConstStack): Remove to ... + (ConstExprStack): ... this. + (ConstParamStack): New variable and initialize. + (QuadFrame): New field ConstExpr. + (GetQuadOtok): Add parameter constExpr and assign. + (PutQuadOtok): Add constExpr parameter and assign. + (PutQuadOType): Ditto. + (GetQuadOTypetok): Ditto. + (EraseQuad): Assign ConstExpr to FALSE. + (FoldSubrange): Set ConstExpr to FALSE in BecomesOp. + (PushInConstParameters): New procedure. + (PopInConstParameters): New procedure. + (IsInConstParameters): New procedure function. + * gm2-compiler/M2SymInit.mod (IssueConditional): Add + constExpr boolean variable. + (CheckReadBeforeInitQuad): Ditto. + (trashParam): Ditto. + * gm2-compiler/P3Build.bnf (ConstExpression): Call + PushInConstExpression and PopInConstExpression. + (ConstSetOrQualidentOrFunction): Call + PushInConstParameters and PopInConstParameters. + * gm2-compiler/PCBuild.bnf (ConstExpression): Call + PushInConstExpression and PopInConstExpression. + * gm2-compiler/PHBuild.bnf: Ditto + * gm2-gcc/m2expr.cc (m2expr_BuildCondIfExpression): New + function. + * gm2-gcc/m2expr.def (BuildCondIfExpression): New prototype. + * gm2-gcc/m2expr.h (m2expr_BuildCondIfExpression): New function. + +2024-04-05 Christophe Lyon + + * Make-lang.in (m2.install-dvi): New rule. + +2024-04-02 Gaius Mulley + + PR modula2/114565 + * gm2-compiler/M2GenGCC.mod (CodeStatement): Test + GetDebugTraceQuad before calling DisplayQuad. + * gm2-compiler/M2LexBuf.mod (NumberIO): Import CardToStr. + (GetToken): Test GetDebugTraceToken before writing the + token number or token line. + * gm2-compiler/M2Options.def (SetDebugTraceQuad): Rename to + (SetM2DebugTraceFilter): ...this. + (SetDebugTraceAPI): Remove. + (GetDebugTraceQuad): New procedure function. + (GetDebugTraceTree): Ditto. + (GetDebugTraceToken): Ditto. + (GetDebugTraceLine): Ditto. + (GetDebugFunctionLineNumbers): Ditto. + * gm2-compiler/M2Options.mod (DebugFunctionLineNumbers): New + boolean variable. + (DebugTraceQuad): Ditto. + (DebugTraceTree): Ditto. + (DebugTraceLine): Ditto. + (DebugTraceToken): Ditto. + (errors1): New procedure. + (SetDebugTraceQuad): Remove. + (SetM2DebugTraceFilter): New procedure implemented. + (SetM2DebugTrace): Ditto. + (GetDebugTraceQuad): Ditto. + (GetDebugTraceToken ): Ditto. + (GetDebugTraceLine): Ditto. + (SetDebugTraceLine): Remove. + * gm2-compiler/M2Quads.mod (GenQuadOTrash): Test + GetDebugTraceQuad and call DisplayQuad. + (GenQuadOTypetok): Ditto. + * gm2-compiler/SymbolTable.mod: Replace + DebugFunctionLineNumbers with GetDebugFunctionLineNumbers. + * gm2-gcc/init.cc (_M2_M2LangDump_init): Add prototype. + (init_PerCompilationInit): Add call. + * gm2-gcc/m2misc.cc (m2misc_cerror): New function. + (m2misc_error): Ditto. + * gm2-gcc/m2misc.def (error): New procedure. + (cerror): Ditto. + * gm2-gcc/m2misc.h (m2misc_cerror): New prototype. + (m2misc_error): Ditto. + * gm2-gcc/m2options.h (M2Options_SetDebugTraceQuad): New + prototype. + (M2Options_SetDebugTraceAPI): Remove. + (M2Options_GetDebugTraceToken): New prototype. + (M2Options_GetDebugTraceLine): Ditto. + (M2Options_SetDebugFunctionLineNumbers): Ditto. + (M2Options_GetDebugFunctionLineNumbers): Ditto. + (M2Options_SetM2DebugTraceFilter): Ditto. + * gm2-lang.cc (gm2_langhook_init_options): Remove + OPT_fdebug_trace_quad case. + Remove OPT_fdebug_trace_api case. + Add OPT_fm2_debug_trace_ case. + * lang.opt (fm2-debug-trace): New option. + (fdebug-trace-api): Remove. + (fdebug-trace-quad): Remove. + * m2.flex (m2flex_M2Error): Check s for NULL. + (skipnewline): New function. + (consumeLine): Call traceline. + +2024-04-01 Gaius Mulley + + PR modula2/114548 + * gm2-compiler/M2Quads.mod (ConvertToAddress): Pass + procedure, false parameters to BuildConvertFunction. + (PushOne): Pass procedure, true parameters to + BuildConvertFunction. + Remove usused parameter internal. + (BuildPseudoBy): Remove parameter to PushOne. + (BuildIncProcedure): Ditto. + (BuildDecProcedure): Ditto. + (BuildFunctionCall): Add ConstExpr parameter to + BuildPseudoFunctionCall. + (BuildConstFunctionCall): Add procedure and true to + BuildConvertFunction. + (BuildPseudoFunctionCall): Add ConstExpr parameter. + Pass ProcSym and ConstExpr to BuildLengthFunction, + BuildConvertFunction, BuildOddFunction, BuildAbsFunction, + BuildCapFunction, BuildValFunction, BuildChrFunction, + BuildOrdFunction, BuildIntFunction, BuildTruncFunction, + BuildFloatFunction, BuildAddAdrFunction, BuildSubAdrFunction, + BuildDifAdrFunction, BuildCastFunction, BuildReFunction, + BuildImFunction and BuildCmplxFunction. + (BuildAddAdrFunction): Add ProcSym, ConstExpr parameters and + check for constant parameters. + (BuildSubAdrFunction): Ditto. + (BuildDifAdrFunction): Ditto. + (ConstExprError): Ditto. + (BuildLengthFunction): Ditto. + (BuildOddFunction): Ditto. + (BuildAbsFunction): Ditto. + (BuildCapFunction): Ditto. + (BuildChrFunction): Ditto. + (BuildOrdFunction): Ditto. + (BuildIntFunction): Ditto. + (BuildValFunction): Ditto. + (BuildCastFunction): Ditto. + (BuildConvertFunction): Ditto. + (BuildTruncFunction): Ditto. + (BuildFloatFunction): Ditto. + (BuildReFunction): Ditto. + (BuildImFunction): Ditto. + (BuildCmplxFunction): Ditto. + +2024-03-31 Christophe Lyon + + * Make-lang.in (m2.install-info): Fix rule. + +2024-03-31 Christophe Lyon + + * Make-lang.in (install-html): New rule. + +2024-03-28 Gaius Mulley + + PR modula2/114520 + * gm2-compiler/P0SyntaxCheck.bnf (DetectImport): New + procedure. + (EnableImportCheck): New boolean. + (Expect): Call DetectImport. + (Export): Set EnableImportCheck TRUE before ';' and FALSE + afterwards. + +2024-03-28 Gaius Mulley <(no_default)> + + PR modula2/114517 + * gm2-compiler/M2Options.def (SetCpp): Add comment. + (GetCpp): Move after SetCpp. + (GetLineDirectives): New procedure function. + * gm2-compiler/M2Options.mod (GetLineDirectives): New + procedure function. + * gm2-gcc/m2options.h (M2Options_GetLineDirectives): New + prototype. + * gm2-lang.cc (gm2_langhook_init_options): OPT_fcpp only + assert if !value. + * m2.flex: Test GetLineDirectives before changing to LINE0 + state. + +2024-03-28 Gaius Mulley + + * target-independent/m2/Builtins.texi: Rebuilt. + * target-independent/m2/gm2-libs.texi: Rebuilt. + +2024-03-26 Gaius Mulley + + PR modula2/114478 + * gm2-gcc/m2builtins.cc (struct builtin_macro_definition): New struct. + (lookup_builtin_macro): New function. + (m2builtins_BuildBuiltinTree): Rewrite to lookup builtin function + and builtin macro. + (lookup_builtin_function): New function. + (define_builtin): Rename parameter type to prototype push macro + definition to builtin_macros vector. + (define_builtin_ext): New function. + (define_builtin_math): New function. + (m2builtins_init): Add isgreater, isless, isgreaterequal, + islessequal, islessgreater, isunordered, isnormal to macro definitions. + * gm2-libs/Builtins.def (isgreater): New procedure function. + (isgreaterf): Ditto. + (isgreaterl): Ditto. + (isgreaterequal): Ditto. + (isgreaterequalf): Ditto. + (isgreaterequall): Ditto. + (isless): Ditto. + (islessf): Ditto. + (islessl): Ditto. + (islessequal): Ditto. + (islessequalf): Ditto. + (islessequall): Ditto. + (islessgreater): Ditto. + (islessgreaterf): Ditto. + (islessgreaterl): Ditto. + (isunordered): Ditto. + (isunorderedf): Ditto. + (isunorderedl): Ditto. + (iseqsig): Ditto. + (iseqsigf): Ditto. + (iseqsigl): Ditto. + (isnormal): Ditto. + (isnormalf): Ditto. + (isnormall): Ditto. + (isinf_sign): Ditto. + (isinf_signf): Ditto. + (isinf_signl): Ditto. + * gm2-libs/Builtins.mod (isgreater): New procedure function. + (isgreaterf): Ditto. + (isgreaterl): Ditto. + (isgreaterequal): Ditto. + (isgreaterequalf): Ditto. + (isgreaterequall): Ditto. + (isless): Ditto. + (islessf): Ditto. + (islessl): Ditto. + (islessequal): Ditto. + (islessequalf): Ditto. + (islessequall): Ditto. + (islessgreater): Ditto. + (islessgreaterf): Ditto. + (islessgreaterl): Ditto. + (isunordered): Ditto. + (isunorderedf): Ditto. + (isunorderedl): Ditto. + (iseqsig): Ditto. + (iseqsigf): Ditto. + (iseqsigl): Ditto. + (isnormal): Ditto. + (isnormalf): Ditto. + (isnormall): Ditto. + (isinf_sign): Ditto. + (isinf_signf): Ditto. + (isinf_signl): Ditto. + +2024-03-25 Gaius Mulley + + * Make-lang.in (doc/m2.pdf): Add line break. + * target-independent/m2/Builtins.texi: Rebuilt. + * target-independent/m2/gm2-libs.texi: Rebuilt. + +2024-03-23 Gaius Mulley + + PR modula2/114444 + * gm2-compiler/M2Quads.mod (BuildTruncFunction): Correct + error format specifier. + (BuildFloatFunction): Correct error format specifier. + +2024-03-23 Gaius Mulley + + PR modula2/114443 + * m2.flex: Call AddTokCharStar with a stringtok if + end of line is reached without a closing quote. + +2024-03-22 Gaius Mulley + + PR modula2/114422 + * gm2-compiler/M2Quads.mod (BuildConstructor): Add escape + character. + +2024-03-21 Gaius Mulley + + PR modula2/113836 + * Make-lang.in (GM2_C_OBJS): Add m2/gm2-gcc/m2pp.o. + (m2/m2pp.o): Remove rule. + (GM2-COMP-BOOT-DEFS): Add M2LangDump.def. + (GM2-COMP-BOOT-MODS): Add M2LangDump.mod. + (GM2-GCC-DEFS): Add M2LangDump.def. + (GM2-GCC-MODS): Add M2LangDump.mod. + * gm2-compiler/M2CaseList.mod (WriteCase): Rewrite. + * gm2-compiler/M2Code.mod (DoModuleDeclare): Call + DumpFilteredResolver depending upon DumpLangDecl. + (DoCodeBlock): Call CreateDumpGimple depending upon + DumpLangGimple. + (Code): Replace DisplayQuadList blocks with DumpQuadruples. + (DisplayQuadsInScope): Remove. + (DisplayQuadNumbers): Remove. + (CodeBlock): Rewrite. + * gm2-compiler/M2GCCDeclare.def (IncludeDumpSymbol): New procedure. + (DumpFilteredResolver): New procedure. + (DumpFilteredDefinitive): New procedure. + * gm2-compiler/M2GCCDeclare.mod (IncludeDumpSymbol): New procedure. + (DumpFilteredResolver): New procedure. + (DumpFilteredDefinitive): New procedure. + (doInclude): Rewrite to use GetDumpFile. + (WatchIncludeList): Remove fixed debugging value. + (doExclude): Rewrite to use GetDumpFile. + (DeclareTypesConstantsProceduresInRange): Remove fixed debugging + values. + (PreAddModGcc): Rename parameter t as tree. + (IncludeGetNth): Rewrite to use GetDumpFile. + (IncludeType): Ditto. + (IncludeSubscript): Ditto. + (PrintLocalSymbol): Ditto. + (PrintLocalSymbols): Ditto. + (IncludeGetVarient): Ditto. + (PrintDeclared): Ditto. + (PrintAlignment): Ditto. + (PrintDecl): Ditto. + (PrintScope): Ditto. + (PrintProcedure): Ditto. + (PrintSym): Ditto. + (PrintSymbol): Ditto. + (PrintTerse): Ditto. + * gm2-compiler/M2Options.def (GetDumpLangDeclFilename): New + procedure function. + (SetDumpLangDeclFilename): New procedure. + (GetDumpLangQuadFilename): New procedure function. + (SetDumpLangQuadFilename): New procedure. + (GetDumpLangGimpleFilename): New procedure function. + (SetDumpLangGimpleFilename): New procedure. + (SetM2DumpFilter): New procedure. + (GetM2DumpFilter): New procedure function. + (GetDumpLangGimple): New procedure function. + * gm2-compiler/M2Options.mod (GetDumpLangDeclFilename): New + procedure function. + (SetDumpLangDeclFilename): New procedure. + (GetDumpLangQuadFilename): New procedure function. + (SetDumpLangQuadFilename): New procedure. + (GetDumpLangGimpleFilename): New procedure function. + (SetDumpLangGimpleFilename): New procedure. + (SetM2DumpFilter): New procedure. + (GetM2DumpFilter): New procedure function. + (GetDumpLangGimple): New procedure function. + * gm2-compiler/M2Quads.def (DumpQuadruples): New procedure. + * gm2-compiler/M2Quads.mod (DumpUntil): New procedure. + (GetCtorInit): New procedure function. + (GetCtorFini): New procedure function. + (DumpQuadrupleFilter): New procedure function. + (DumpQuadrupleAll): New procedure. + (DisplayQuadList): Remove procedure. + (DumpQuadruples): New procedure. + (DisplayQuadRange): Rewrite. + (DisplayQuad): Ditto. + (DisplayProcedureAttributes): Ditto. + (WriteOperator): Ditto. + (WriteMode): Ditto. + * gm2-compiler/M2Scope.mod (ForeachScopeBlockDo2): Replace + DisplayQuadruples with TraceQuadruples. + (ForeachScopeBlockDo3): Replace DisplayQuadruples with + TraceQuadruples. + * gm2-compiler/SymbolConversion.def (Gcc2Mod): New procedure function. + * gm2-compiler/SymbolConversion.mod: New procedure function. + * gm2-gcc/m2misc.cc (m2misc_DebugTree): New function. + (m2misc_DebugTreeChain): New function. + * gm2-gcc/m2options.h (M2Options_GetDumpLangDeclFilename): New + prototype. + (M2Options_SetDumpLangDeclFilename): New prototype. + (M2Options_GetDumpLangQuadFilename): New prototype. + (M2Options_SetDumpLangQuadFilename): New prototype. + (M2Options_GetDumpLangGimpleFilename): New prototype. + (M2Options_SetDumpLangGimpleFilename): New prototype. + (M2Options_GetDumpLangGimple): New prototype. + (M2Options_SetM2DumpFilter): New prototype. + (M2Options_GetM2DumpFilter): New prototype. + * m2pp.cc: Move to... + * gm2-gcc/m2pp.cc: ...here. + * m2pp.h: Move to... + * gm2-gcc/m2pp.h: ...here. + * gm2-gcc/m2statement.cc (m2statement_BuildEndFunctionCode): Call + m2pp_dump_gimple. + * gm2-lang.cc (ENABLE_QUAD_DUMP_ALL): New define. + (gm2_langhook_init_options): Add switch cases for proposed new + command line options. + * gm2-libs/DynamicStrings.def (ReverseIndex): New procedure + function. + * gm2-libs/DynamicStrings.mod: New procedure function. + * gm2-compiler/M2LangDump.def: New file. + * gm2-compiler/M2LangDump.mod: New file. + * gm2-gcc/m2langdump.h: New file. + * gm2-gcc/m2pp.def: New file. + +2024-03-21 Gaius Mulley + + PR modula2/114418 + * gm2-compiler/PCSymBuild.mod (PushConstFunctionType): Check + func against NulSym and issue an error. + +2024-03-18 Gaius Mulley + + PR modula2/114380 + * gm2-compiler/SymbolTable.mod (GetLowestType): Do not + skip over a set type, but return sym. + +2024-03-17 Gaius Mulley + + PR modula2/114296 + * gm2-compiler/M2ALU.mod (ElementsSolved): Add tokenno parameter. + Add constant checks and generate error messages. + (EvalSetValues): Pass tokenno parameter to ElementsSolved. + * gm2-compiler/M2LexBuf.mod (stop): New procedure. + (MakeVirtualTok): Call stop if caret = BadTokenNo. + * gm2-compiler/M2Quads.def (BuildNulExpression): Add tokpos + parameter. + (BuildSetStart): Ditto. + (BuildEmptySet): Ditto. + (BuildConstructorEnd): Add startpos parameter. + (BuildTypeForConstructor): Add tokpos parameter. + * gm2-compiler/M2Quads.mod (BuildNulExpression): Add tokpos + parameter and push tokpos to the quad stack. + (BuildSetStart): Add tokpos parameter and push tokpos. + (BuildSetEnd): Rewrite. + (BuildEmptySet): Add tokpos parameter and push tokpos with + the set type. + (BuildConstructorStart): Pop typepos. + (BuildConstructorEnd): Add startpos parameter. + Create valtok from startpos and cbratokpos. + (BuildTypeForConstructor): Add tokpos parameter. + * gm2-compiler/M2Range.def (InitAssignmentRangeCheck): Rename + d to des and e to expr. + Add destok and exprtok parameters. + * gm2-compiler/M2Range.mod (InitAssignmentRangeCheck): Rename + d to des and e to expr. + Add destok and exprtok parameters. + Save destok and exprtok into range record. + (FoldAssignment): Pass exprtok to TryDeclareConstant. + * gm2-compiler/P3Build.bnf (ComponentValue): Rewrite. + (Constructor): Rewrite. + (ConstSetOrQualidentOrFunction): Rewrite. + (SetOrQualidentOrFunction): Rewrite. + * gm2-compiler/PCBuild.bnf (ConstSetOrQualidentOrFunction): Rewrite. + (SetOrQualidentOrFunction): Rewrite. + * gm2-compiler/PHBuild.bnf (Constructor): Rewrite. + (ConstSetOrQualidentOrFunction): Rewrite. + +2024-03-14 Gaius Mulley + + PR modula2/114294 + * gm2-compiler/M2Quads.mod (BuildConstHighFromSym): + Call PutConst to assign the type Cardinal in the result + constant. + +2024-03-14 Gaius Mulley + + PR modula2/114333 + * gm2-compiler/M2GenGCC.mod (CodeStatement): Remove op1, op2 and + op3 parameters to CodeIfLess, CodeIfLessEqu, CodeIfGreEqu, CodeIfGre, + CodeIfIn, CodeIfNotIn. + (CodeIfLess): Rewrite. + (PerformCodeIfLess): New procedure. + (CodeIfLess): Rewrite. + (PerformCodeIfLess): New procedure. + (CodeIfLessEqu): Rewrite. + (PerformCodeIfLessEqu): New procedure. + (CodeIfGreEqu): Rewrite. + (PerformCodeIfGreEqu): New procedure. + (CodeIfGre): Rewrite. + (PerformCodeIfGre): New procedure. + (CodeIfIn): Rewrite. + (PerformCodeIfIn): New procedure. + (CodeIfNotIn): Rewrite. + (PerformCodeIfNotIn): New procedure. + +2024-03-14 Gaius Mulley + + PR modula2/114333 + * gm2-compiler/M2Check.mod (checkUnbounded): New procedure + function. + (checkArrayTypeEquivalence): Extend checking to cover unbounded + arrays, arrays and constants. + (IsTyped): Simplified the expression and corrected a test for + IsConstructor. + (checkTypeKindViolation): New procedure function. + (doCheckPair): Call checkTypeKindViolation. + * gm2-compiler/M2GenGCC.mod (CodeStatement): Remove parameters + to CodeEqu and CodeNotEqu. + (PerformCodeIfEqu): New procedure. + (CodeIfEqu): Rewrite. + (PerformCodeIfNotEqu): New procedure. + (CodeIfNotEqu): Rewrite. + * gm2-compiler/M2Quads.mod (BuildRelOpFromBoolean): Correct + comment. + +2024-03-11 Gaius Mulley + + PR modula2/114295 + * gm2-compiler/M2Batch.mod (MakeProgramSource): Call PutDeclared + if the module is known. + (MakeDefinitionSource): Ditto. + (MakeImplementationSource): Ditto. + * gm2-compiler/M2Comp.mod (ExamineHeader): New procedure. + (ExamineCompilationUnit): Rewrite. + (PeepInto): Rewrite. + * gm2-compiler/M2Error.mod (NewError): Remove default call to + GetTokenNo. + * gm2-compiler/M2Quads.mod (callRequestDependant): Push tokno with + Adr. + (BuildStringAdrParam): Ditto. + (doBuildBinaryOp): Push OperatorPos on the bool stack. + (BuildRelOp): Ditto. + * gm2-compiler/P2Build.bnf (SetType): Pass set token pos to + BuildSetType. + (PointerType): Pass pointer token pos to BuildPointerType. + * gm2-compiler/P2SymBuild.def (BuildPointerType): Add parameter + pointerpos. + (BuildSetType): Add parameter setpos. + * gm2-compiler/P2SymBuild.mod (BuildPointerType): Add parameter + pointerpos. Build combined token and use it when creating a + pointer type. + (BuildSetType): Add parameter setpos. Build combined token and + use it when creating a set type. + * gm2-compiler/SymbolTable.mod (DebugUnknownToken): New constant. + (CheckTok): New procedure function. + (MakeProcedure): Call CheckTok. + (MakeRecord): Ditto. + (MakeVarient): Ditto. + (MakeEnumeration): Ditto. + (MakeHiddenType): Ditto. + (MakeConstant): Ditto. + (MakeConstStringCnul): Ditto. + (MakeSubrange): Ditto. + (MakeTemporary): Ditto. + (MakeVariableForParam): Ditto. + (MakeParameterHeapVar): Ditto. + (MakePointer): Ditto. + (MakeSet): Ditto. + (MakeUnbounded): Ditto. + (MakeProcType): Ditto. + 2024-03-08 Gaius Mulley * gm2-compiler/M2Quads.mod (Init): Use InitIndexTuned with diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in index 33b9ce8d8e88..0abd8ce14555 100644 --- a/gcc/m2/Make-lang.in +++ b/gcc/m2/Make-lang.in @@ -162,13 +162,26 @@ m2.dvi: doc/m2.dvi doc/m2.dvi: $(TEXISRC) $(objdir)/m2/images/gnu.eps $(TEXI2DVI) -c -I $(objdir)/m2 -I $(srcdir)/doc/include -o $@ $(srcdir)/doc/gm2.texi +M2_DVIFILES = doc/m2.dvi + +m2.install-dvi: $(M2_DVIFILES) + @$(NORMAL_INSTALL) + test -z "$(dvidir)/gcc" || $(mkinstalldirs) "$(DESTDIR)$(dvidir)/gcc" + @list='$(M2_DVIFILES)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(dvi__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/gcc/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/gcc/$$f"; \ + done + doc/m2.ps: doc/m2.dvi dvips -o $@ $< m2.pdf: doc/m2.pdf doc/m2.pdf: $(TEXISRC) $(objdir)/m2/images/gnu.eps - $(TEXI2PDF) -I $(objdir)/m2 -I $(srcdir)/doc/include $(srcdir)/doc/gm2.texi -o $@ + $(TEXI2PDF) -I $(objdir)/m2 -I $(srcdir)/doc/include \ + $(srcdir)/doc/gm2.texi -o $@ M2_PDFFILES = doc/m2.pdf @@ -205,6 +218,25 @@ $(build_htmldir)/m2/index.html: $(TEXISRC) $(objdir)/m2/images/gnu.eps rm -f $(@D)/* $(TEXI2HTML) -I $(objdir)/m2 -I $(srcdir)/m2 -I $(gcc_docdir)/include -o $(@D) $< +M2_HTMLFILES = $(build_htmldir)/m2 + +m2.install-html: $(M2_HTMLFILES) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" + @list='$(M2_HTMLFILES)'; for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \ + f=$(html__strip_dir) \ + if test -d "$$d$$p"; then \ + echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ + else \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ + fi; \ + done + # gm2-libs.texi m2/gm2-libs.texi: gm2-libs.texi-check; @true @@ -380,20 +412,20 @@ m2.install-common: installdirs done m2.install-info: installdirs - if [ -d gm2$(exeext) ] ; then \ - if [ -f $(objdir)/doc/gm2.info ]; then \ - rm -f $(DESTDIR)$(infodir)/gm2.info*; \ - for f in $(objdir)/doc/gm2.info*; do \ + if [ -f gm2$(exeext) ] ; then \ + if [ -f $(objdir)/doc/m2.info ]; then \ + rm -f $(DESTDIR)$(infodir)/m2.info*; \ + for f in $(objdir)/doc/m2.info*; do \ realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ rm -f $(DESTDIR)$(infodir)/`basename $$realfile`; \ $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/`basename $$realfile`; \ done; \ - chmod a-x $(DESTDIR)$(infodir)/gm2.info*; \ + chmod a-x $(DESTDIR)$(infodir)/m2.info*; \ else true; fi; \ else true; fi - -if [ -f gm2$(exeext) ] && [ -f $(DESTDIR)$(infodir)/gm2.info ]; then \ + -if [ -f gm2$(exeext) ] && [ -f $(DESTDIR)$(infodir)/m2.info ]; then \ if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ - install-info --dir-file=$(infodir)/dir $(DESTDIR)$(infodir)/gm2.info; \ + install-info --dir-file=$(infodir)/dir $(DESTDIR)$(infodir)/m2.info; \ else true; fi; \ else true; fi @@ -519,7 +551,7 @@ SO=-O0 -g -fPIC # Language-specific object files for the gm2 compiler. GM2_C_OBJS = m2/gm2-lang.o \ - m2/m2pp.o \ + m2/gm2-gcc/m2pp.o \ m2/gm2-gcc/m2assert.o \ m2/gm2-gcc/m2block.o \ m2/gm2-gcc/m2builtins.o \ @@ -608,11 +640,6 @@ m2/gm2-lang.o: $(srcdir)/m2/gm2-lang.cc gt-m2-gm2-lang.h $(GCC_HEADER_DEPENDENCI $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) $(POSTCOMPILE) -m2/m2pp.o : $(srcdir)/m2/m2pp.cc $(GCC_HEADER_DEPENDENCIES_FOR_M2) - $(COMPILER) $(CM2DEP) -c -g -DGM2 $(ALL_COMPILERFLAGS) \ - $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) - $(POSTCOMPILE) - m2/gm2-gcc/rtegraph.o: $(srcdir)/m2/gm2-gcc/rtegraph.cc $(GCC_HEADER_DEPENDENCIES_FOR_M2) \ gt-m2-rtegraph.h -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) @@ -761,6 +788,7 @@ GM2-COMP-BOOT-DEFS = \ M2GCCDeclare.def \ M2GenGCC.def \ M2Graph.def \ + M2LangDump.def \ M2LexBuf.def \ M2MetaError.def \ M2Optimize.def \ @@ -834,6 +862,7 @@ GM2-COMP-BOOT-MODS = \ M2GCCDeclare.mod \ M2GenGCC.mod \ M2Graph.mod \ + M2LangDump.mod \ M2LexBuf.mod \ M2MetaError.mod \ M2Optimize.mod \ @@ -886,6 +915,7 @@ GM2-GCC-DEFS = \ m2expr.def \ m2linemap.def \ m2misc.def \ + m2pp.def \ m2statement.def \ m2top.def \ m2tree.def \ @@ -1040,6 +1070,7 @@ GM2-COMP-DEFS = \ M2GCCDeclare.def \ M2GenGCC.def \ M2Graph.def \ + M2LangDump.def \ M2LexBuf.def \ M2MetaError.def \ M2Optimize.def \ @@ -1110,6 +1141,7 @@ GM2-COMP-MODS = \ M2GCCDeclare.mod \ M2GenGCC.mod \ M2Graph.mod \ + M2LangDump.mod \ M2LexBuf.mod \ M2MetaError.mod \ M2Optimize.mod \ diff --git a/gcc/m2/gm2-compiler/M2ALU.mod b/gcc/m2/gm2-compiler/M2ALU.mod index 58d4b5c24ed7..cfa372671cdf 100644 --- a/gcc/m2/gm2-compiler/M2ALU.mod +++ b/gcc/m2/gm2-compiler/M2ALU.mod @@ -2922,10 +2922,20 @@ END AddField ; ElementsSolved - returns TRUE if all ranges in the set have been solved. *) -PROCEDURE ElementsSolved (r: listOfRange) : BOOLEAN ; +PROCEDURE ElementsSolved (tokenno: CARDINAL; r: listOfRange) : BOOLEAN ; BEGIN WHILE r#NIL DO WITH r^ DO + IF NOT IsConst (low) + THEN + MetaErrorT1 (tokenno, 'a constant set can only contain constant set elements, {%1Ead} is not a constant', + low) + END ; + IF (high # low) AND (NOT IsConst (high)) + THEN + MetaErrorT1 (tokenno, 'a constant set can only contain constant set elements, {%1Ead} is not a constant', + high) + END ; IF NOT (IsSolvedGCC(low) AND IsSolvedGCC(high)) THEN RETURN( FALSE ) @@ -3088,7 +3098,7 @@ END CombineElements ; PROCEDURE EvalSetValues (tokenno: CARDINAL; r: listOfRange) : BOOLEAN ; BEGIN - IF ElementsSolved(r) + IF ElementsSolved (tokenno, r) THEN SortElements(tokenno, r) ; CombineElements(tokenno, r) ; diff --git a/gcc/m2/gm2-compiler/M2Batch.mod b/gcc/m2/gm2-compiler/M2Batch.mod index d6eb53ff90db..8cfc906513cc 100644 --- a/gcc/m2/gm2-compiler/M2Batch.mod +++ b/gcc/m2/gm2-compiler/M2Batch.mod @@ -23,7 +23,11 @@ IMPLEMENTATION MODULE M2Batch ; FROM M2Debug IMPORT Assert ; -FROM SymbolTable IMPORT MakeModule, MakeDefImp, IsModule, IsDefImp, GetScope, GetLocalSym, GetCurrentScope, GetSym, NulSym ; + +FROM SymbolTable IMPORT MakeModule, MakeDefImp, IsModule, IsDefImp, + GetScope, GetLocalSym, GetCurrentScope, + PutDeclared, GetSym, NulSym ; + FROM NameKey IMPORT GetKey, WriteKey ; FROM M2Printf IMPORT printf2 ; FROM M2Error IMPORT InternalError ; @@ -69,6 +73,8 @@ BEGIN Sym := MakeModule (tok, n) ; Put (Sym, n) ; Push (Sym) + ELSE + PutDeclared (tok, Sym) END ; RETURN Sym END MakeProgramSource ; @@ -96,6 +102,8 @@ BEGIN Sym := MakeDefImp (tok, n) ; Put (Sym, n) ; Push (Sym) + ELSE + PutDeclared (tok, Sym) END ; RETURN Sym END MakeDefinitionSource ; @@ -123,6 +131,8 @@ BEGIN Sym := MakeDefImp (tok, n) ; Put (Sym, n) ; Push (Sym) + ELSE + PutDeclared (tok, Sym) END ; RETURN Sym END MakeImplementationSource ; diff --git a/gcc/m2/gm2-compiler/M2CaseList.mod b/gcc/m2/gm2-compiler/M2CaseList.mod index 08a6052e7960..b98f55375bd3 100644 --- a/gcc/m2/gm2-compiler/M2CaseList.mod +++ b/gcc/m2/gm2-compiler/M2CaseList.mod @@ -39,8 +39,8 @@ FROM m2type IMPORT GetMinFrom ; FROM m2expr IMPORT GetIntegerOne, CSTIntToString, CSTIntToChar ; FROM Storage IMPORT ALLOCATE ; FROM M2Base IMPORT IsExpressionCompatible, Char ; -FROM M2Printf IMPORT printf1 ; FROM M2LexBuf IMPORT TokenToLocation ; +FROM NumberIO IMPORT WriteCard ; FROM SymbolTable IMPORT NulSym, IsConst, IsFieldVarient, IsRecord, IsRecordField, GetVarientTag, GetType, ForeachLocalSymDo, GetSymName, IsEnumeration, SkipType, NoOfElements, GetNth, @@ -1191,7 +1191,7 @@ end InRangeList ; PROCEDURE WriteCase (c: CARDINAL) ; BEGIN (* this debugging PROCEDURE should be finished. *) - printf1 ("%d", c) + WriteCard (c, 0) END WriteCase ; diff --git a/gcc/m2/gm2-compiler/M2Check.mod b/gcc/m2/gm2-compiler/M2Check.mod index 5b45ad39c118..20d463d207b8 100644 --- a/gcc/m2/gm2-compiler/M2Check.mod +++ b/gcc/m2/gm2-compiler/M2Check.mod @@ -46,7 +46,8 @@ FROM SymbolTable IMPORT NulSym, IsRecord, IsSet, GetDType, GetSType, IsType, GetDeclaredMod, IsSubrange, GetArraySubscript, IsConst, IsReallyPointer, IsPointer, IsParameter, ModeOfAddr, GetMode, GetType, IsUnbounded, IsComposite, IsConstructor, - IsParameter, IsConstString, IsConstLitInternal, IsConstLit ; + IsParameter, IsConstString, IsConstLitInternal, IsConstLit, + GetStringLength ; FROM M2GCCDeclare IMPORT GetTypeMin, GetTypeMax ; FROM M2System IMPORT Address ; @@ -258,7 +259,35 @@ END checkSubrange ; (* - checkArrayTypeEquivalence - + checkUnbounded - check to see if the unbounded is type compatible with right. + This is only allowed during parameter passing. +*) + +PROCEDURE checkUnbounded (result: status; tinfo: tInfo; unbounded, right: CARDINAL) : status ; +VAR + lLow, rLow, + lHigh, rHigh: CARDINAL ; +BEGIN + (* Firstly check to see if we have resolved this as false. *) + IF isFalse (result) + THEN + RETURN result + ELSE + Assert (IsUnbounded (unbounded)) ; + IF tinfo^.kind = parameter + THEN + (* --fixme-- we should check the unbounded data type against the type of right. *) + RETURN true + ELSE + (* Not allowed to use an unbounded symbol (type) in an expression or assignment. *) + RETURN false + END + END +END checkUnbounded ; + + +(* + checkArrayTypeEquivalence - check array and unbounded array type equivalence. *) PROCEDURE checkArrayTypeEquivalence (result: status; tinfo: tInfo; @@ -273,7 +302,7 @@ BEGIN THEN lSub := GetArraySubscript (left) ; rSub := GetArraySubscript (right) ; - result := checkPair (result, tinfo, GetType (left), GetType (right)) ; + result := checkPair (result, tinfo, GetSType (left), GetSType (right)) ; IF (lSub # NulSym) AND (rSub # NulSym) THEN result := checkSubrange (result, tinfo, getSType (lSub), getSType (rSub)) @@ -284,8 +313,22 @@ BEGIN THEN RETURN true ELSE - result := checkPair (result, tinfo, GetType (left), GetType (right)) + result := checkUnbounded (result, tinfo, left, right) END + ELSIF IsUnbounded (right) AND (IsArray (left) OR IsUnbounded (left)) + THEN + IF IsGenericSystemType (getSType (right)) OR IsGenericSystemType (getSType (left)) + THEN + RETURN true + ELSE + result := checkUnbounded (result, tinfo, right, left) + END + ELSIF IsArray (left) AND IsConst (right) + THEN + result := checkPair (result, tinfo, GetType (left), GetType (right)) + ELSIF IsArray (right) AND IsConst (left) + THEN + result := checkPair (result, tinfo, GetType (left), GetType (right)) END ; RETURN result END checkArrayTypeEquivalence ; @@ -547,12 +590,12 @@ END checkBaseTypeEquivalence ; (* - IsTyped - + IsTyped - returns TRUE if sym will have a type. *) PROCEDURE IsTyped (sym: CARDINAL) : BOOLEAN ; BEGIN - RETURN IsVar (sym) OR IsVar (sym) OR IsParameter (sym) OR + RETURN IsVar (sym) OR IsParameter (sym) OR IsConstructor (sym) OR (IsConst (sym) AND IsConstructor (sym)) OR IsParameter (sym) OR (IsConst (sym) AND (GetType (sym) # NulSym)) END IsTyped ; @@ -630,16 +673,26 @@ BEGIN RETURN result ELSIF IsConstString (left) THEN - typeRight := GetDType (right) ; - IF typeRight = NulSym + IF IsConstString (right) THEN - RETURN result - ELSIF IsSet (typeRight) OR IsEnumeration (typeRight) OR IsProcedure (typeRight) OR - IsRecord (typeRight) + RETURN true + ELSIF IsTyped (right) THEN - RETURN false - ELSE - RETURN doCheckPair (result, tinfo, Char, typeRight) + typeRight := GetDType (right) ; + IF typeRight = NulSym + THEN + RETURN result + ELSIF IsSet (typeRight) OR IsEnumeration (typeRight) OR + IsProcedure (typeRight) OR IsRecord (typeRight) + THEN + RETURN false + ELSIF IsArray (typeRight) + THEN + RETURN doCheckPair (result, tinfo, Char, GetType (typeRight)) + ELSIF GetStringLength (tinfo^.token, left) = 1 + THEN + RETURN doCheckPair (result, tinfo, Char, typeRight) + END END END ; RETURN result @@ -772,6 +825,30 @@ BEGIN END checkSystemEquivalence ; +(* + checkTypeKindViolation - returns false if one operand left or right is + a set, record or array. +*) + +PROCEDURE checkTypeKindViolation (result: status; tinfo: tInfo; + left, right: CARDINAL) : status ; +BEGIN + IF isFalse (result) OR (result = visited) + THEN + RETURN result + ELSE + (* We have checked IsSet (left) and IsSet (right) etc in doCheckPair. *) + IF (IsSet (left) OR IsSet (right)) OR + (IsRecord (left) OR IsRecord (right)) OR + (IsArray (left) OR IsArray (right)) + THEN + RETURN false + END + END ; + RETURN result +END checkTypeKindViolation ; + + (* doCheckPair - *) @@ -810,7 +887,11 @@ BEGIN result := checkGenericTypeEquivalence (result, left, right) ; IF NOT isKnown (result) THEN - result := checkTypeKindEquivalence (result, tinfo, left, right) + result := checkTypeKindEquivalence (result, tinfo, left, right) ; + IF NOT isKnown (result) + THEN + result := checkTypeKindViolation (result, tinfo, left, right) + END END END END diff --git a/gcc/m2/gm2-compiler/M2Code.mod b/gcc/m2/gm2-compiler/M2Code.mod index 010e1d02fca8..ea1126d756e0 100644 --- a/gcc/m2/gm2-compiler/M2Code.mod +++ b/gcc/m2/gm2-compiler/M2Code.mod @@ -23,10 +23,12 @@ IMPLEMENTATION MODULE M2Code ; FROM SYSTEM IMPORT WORD ; -FROM M2Options IMPORT Statistics, DisplayQuadruples, OptimizeUncalledProcedures, - (* OptimizeDynamic, *) OptimizeCommonSubExpressions, - StyleChecking, Optimizing, WholeProgram ; +FROM M2Options IMPORT Statistics, OptimizeUncalledProcedures, + OptimizeCommonSubExpressions, + StyleChecking, Optimizing, WholeProgram, + DumpLangDecl, DumpLangGimple ; +FROM M2LangDump IMPORT CreateDumpDecl, CloseDumpDecl, MakeGimpleTemplate ; FROM M2Error IMPORT InternalError ; FROM M2Students IMPORT StudentVariableCheck ; @@ -41,7 +43,8 @@ FROM M2Printf IMPORT printf2, printf1, printf0 ; FROM NameKey IMPORT Name ; FROM M2Batch IMPORT ForeachSourceModuleDo ; -FROM M2Quads IMPORT CountQuads, GetFirstQuad, DisplayQuadList, DisplayQuadRange, +FROM M2Quads IMPORT CountQuads, GetFirstQuad, + DumpQuadruples, DisplayQuadRange, BackPatchSubrangesAndOptParam, LoopAnalysis, ForLoopAnalysis, GetQuad, QuadOperator ; @@ -59,7 +62,8 @@ FROM M2GenGCC IMPORT ConvertQuadsToTree ; FROM M2GCCDeclare IMPORT FoldConstants, StartDeclareScope, DeclareProcedure, InitDeclarations, - DeclareModuleVariables, MarkExported ; + DeclareModuleVariables, MarkExported, + DumpFilteredResolver, DumpFilteredDefinitive ; FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock, ForeachScopeBlockDo2, ForeachScopeBlockDo3 ; @@ -71,12 +75,14 @@ FROM m2flex IMPORT GetTotalLines ; FROM FIO IMPORT FlushBuffer, StdOut ; FROM M2Quiet IMPORT qprintf0 ; FROM M2SSA IMPORT DiscoverSSA ; +FROM m2pp IMPORT CreateDumpGimple, CloseDumpGimple ; +FROM DynamicStrings IMPORT String, KillString ; CONST - MaxOptimTimes = 10 ; (* upper limit of no of times we run through all optimization *) - Debugging = TRUE ; - + MaxOptimTimes = 10 ; (* upper limit of no of times we run through all optimization *) + Debugging = TRUE ; + TraceQuadruples = FALSE ; VAR Total, @@ -139,11 +145,7 @@ BEGIN printf1 ('Total source lines compiled : %6d\n', Count) ; FlushBuffer (StdOut) END ; - IF DisplayQuadruples - THEN - printf0 ('after all front end optimization\n') ; - DisplayQuadList - END + DumpQuadruples ('after all front end optimization\n') END OptimizationAnalysis ; @@ -169,11 +171,23 @@ END RemoveUnreachableCode ; PROCEDURE DoModuleDeclare ; BEGIN + IF DumpLangDecl + THEN + CreateDumpDecl ("symbol resolver of filtered symbols\n") ; + DumpFilteredResolver + END ; IF WholeProgram THEN ForeachSourceModuleDo (StartDeclareScope) ELSE StartDeclareScope (GetMainModule ()) + END ; + IF DumpLangDecl + THEN + CloseDumpDecl ; + CreateDumpDecl ("definitive declaration of filtered symbols\n") ; + DumpFilteredDefinitive ; + CloseDumpDecl END END DoModuleDeclare ; @@ -198,11 +212,17 @@ END PrintModule ; *) PROCEDURE DoCodeBlock ; +VAR + filename: String ; + len : CARDINAL ; BEGIN - IF WholeProgram + IF DumpLangGimple THEN - (* ForeachSourceModuleDo(PrintModule) ; *) - CodeBlock (GetMainModule ()) + filename := MakeGimpleTemplate (len) ; + CreateDumpGimple (filename, len) ; + filename := KillString (filename) ; + CodeBlock (GetMainModule ()) ; + CloseDumpGimple ELSE CodeBlock (GetMainModule ()) END @@ -231,6 +251,7 @@ END DetermineSubExpTemporaries ; PROCEDURE Code ; BEGIN + DumpQuadruples ('before any optimization\n') ; CheckHiddenTypeAreAddress ; SetPassToNoPass ; BackPatchSubrangesAndOptParam ; @@ -238,11 +259,7 @@ BEGIN ForLoopAnalysis ; (* must be done before any optimization as the index variable increment quad might change *) - IF DisplayQuadruples - THEN - printf0 ('before any optimization\n') ; - DisplayQuadList - END ; + DumpQuadruples ('before declaring symbols to gcc\n') ; (* now is a suitable time to check for student errors as *) (* we know all the front end symbols must be resolved. *) @@ -258,20 +275,9 @@ BEGIN InitDeclarations ; (* default and fixed sized types are all declared from now on. *) RemoveUnreachableCode ; - - IF DisplayQuadruples - THEN - printf0 ('after dead procedure elimination\n') ; - DisplayQuadList - END ; - + DumpQuadruples ('after dead procedure elimination\n') ; DetermineSubExpTemporaries ; - - IF DisplayQuadruples - THEN - printf0 ('after identifying simple subexpression temporaries\n') ; - DisplayQuadList - END ; + DumpQuadruples ('after identifying simple subexpression temporaries\n') ; qprintf0 (' symbols to gcc trees\n') ; DoModuleDeclare ; @@ -377,20 +383,6 @@ BEGIN END Init ; -(* - DisplayQuadsInScope - -*) - -(* -PROCEDURE DisplayQuadsInScope (sb: ScopeBlock) ; -BEGIN - printf0 ('Quads in scope\n') ; - ForeachScopeBlockDo (sb, DisplayQuadRange) ; - printf0 ('===============\n') -END DisplayQuadsInScope ; -*) - - (* OptimizeScopeBlock - *) @@ -416,21 +408,6 @@ BEGIN END OptimizeScopeBlock ; -(* - DisplayQuadNumbers - the range, start..end. -*) - -(* -PROCEDURE DisplayQuadNumbers (start, end: CARDINAL) ; -BEGIN - IF DisplayQuadruples - THEN - printf2 ('Coding [%d..%d]\n', start, end) - END -END DisplayQuadNumbers ; -*) - - (* CodeProceduresWithinBlock - codes the procedures within the module scope. *) @@ -465,7 +442,7 @@ VAR sb: ScopeBlock ; n : Name ; BEGIN - IF DisplayQuadruples + IF TraceQuadruples THEN n := GetSymName (scope) ; printf1 ('before coding block %a\n', n) @@ -474,7 +451,7 @@ BEGIN OptimizeScopeBlock (sb) ; IF IsProcedure (scope) THEN - IF DisplayQuadruples + IF TraceQuadruples THEN n := GetSymName(scope) ; printf1('before coding procedure %a\n', n) ; @@ -484,7 +461,7 @@ BEGIN ForeachScopeBlockDo2 (sb, ConvertQuadsToTree) ELSIF IsModuleWithinProcedure(scope) THEN - IF DisplayQuadruples + IF TraceQuadruples THEN n := GetSymName(scope) ; printf1('before coding module %a within procedure\n', n) ; @@ -494,7 +471,7 @@ BEGIN ForeachScopeBlockDo2 (sb, ConvertQuadsToTree) ; ForeachProcedureDo(scope, CodeBlock) ELSE - IF DisplayQuadruples + IF TraceQuadruples THEN n := GetSymName(scope) ; printf1('before coding module %a\n', n) ; diff --git a/gcc/m2/gm2-compiler/M2Comp.mod b/gcc/m2/gm2-compiler/M2Comp.mod index c10c301cbde3..719ae6641dc6 100644 --- a/gcc/m2/gm2-compiler/M2Comp.mod +++ b/gcc/m2/gm2-compiler/M2Comp.mod @@ -30,7 +30,8 @@ FROM M2Search IMPORT FindSourceDefFile, FindSourceModFile ; FROM M2Code IMPORT Code ; FROM M2LexBuf IMPORT OpenSource, CloseSource, ResetForNewPass, currenttoken, GetToken, - ReInitialize, currentstring, GetTokenNo ; + ReInitialize, currentstring, GetTokenNo, BuiltinTokenNo, + UnknownTokenNo ; FROM M2FileName IMPORT CalculateFileName ; FROM M2Preprocess IMPORT PreprocessModule, MakeSaveTempsFileNameExt, OnExitDelete ; @@ -288,32 +289,74 @@ BEGIN END compile ; +(* + ExamineHeader - examines up until the ';', '[' or eof and determines if the source file + is a program, implementation/definition module. +*) + +PROCEDURE ExamineHeader (VAR name: ADDRESS; VAR isdefimp, module: BOOLEAN) ; +BEGIN + (* Stop if we see one of eof ';' '['. *) + WHILE (currenttoken#eoftok) AND + (currenttoken#semicolontok) AND (currenttoken#lsbratok) DO + IF name = NIL + THEN + IF (currenttoken=implementationtok) OR (currenttoken=definitiontok) + THEN + isdefimp := TRUE ; + GetToken + END ; + IF currenttoken=moduletok + THEN + module := TRUE ; + GetToken ; + IF currenttoken=identtok + THEN + name := currentstring + END + END ; + END ; + GetToken + END ; +END ExamineHeader ; + + (* ExamineCompilationUnit - opens the source file to obtain the module name and kind of module. *) -PROCEDURE ExamineCompilationUnit (VAR name: ADDRESS; VAR isdefimp: BOOLEAN) ; +PROCEDURE ExamineCompilationUnit () : CARDINAL ; VAR - Message: String ; + Message : String ; + name : ADDRESS ; + module, + isdefimp: BOOLEAN ; BEGIN + name := NIL ; isdefimp := FALSE ; (* default to program module *) - (* stop if we see eof, ';' or '[' *) - WHILE (currenttoken#eoftok) AND (currenttoken#semicolontok) AND (currenttoken#lsbratok) DO - IF (currenttoken=implementationtok) OR (currenttoken=definitiontok) + module := FALSE ; (* Seen module keyword? *) + ExamineHeader (name, isdefimp, module) ; + IF name = NIL + THEN + IF module THEN - isdefimp := TRUE ; - GetToken + Message := MetaString0 (InitString ('no {%kMODULE} keyword seen')) + ELSE + Message := MetaString0 (InitString ('no module ident seen')) END ; - IF currenttoken=identtok + m2flex.M2Error (string (Message)) ; + exit (1) + ELSE + (* The token used is will be overwritten when P0 is underway. + At this point we are determining the module kind and the tokens + read will be discarded (see ReInitialize below). *) + IF isdefimp THEN - name := currentstring ; - RETURN - END ; - GetToken - END ; - Message := MetaString0 (InitString ('no {%kMODULE} name found')) ; - m2flex.M2Error (string (Message)) ; - exit (1) + RETURN MakeImplementationSource (BuiltinTokenNo, makekey (name)) + ELSE + RETURN MakeProgramSource (BuiltinTokenNo, makekey (name)) + END + END END ExamineCompilationUnit ; @@ -324,17 +367,14 @@ END ExamineCompilationUnit ; PROCEDURE PeepInto (s: String) ; VAR - name : ADDRESS ; - isdefimp: BOOLEAN ; + mainModule: CARDINAL ; BEGIN IF OpenSource (s) THEN - ExamineCompilationUnit (name, isdefimp) ; - IF isdefimp + mainModule := ExamineCompilationUnit () ; + IF mainModule # NulSym THEN - SetMainModule (MakeImplementationSource (GetTokenNo (), makekey (name))) - ELSE - SetMainModule (MakeProgramSource (GetTokenNo (), makekey (name))) + SetMainModule (mainModule) END ; CloseSource ; ReInitialize diff --git a/gcc/m2/gm2-compiler/M2Error.mod b/gcc/m2/gm2-compiler/M2Error.mod index 37e08248eea8..1d79c804a597 100644 --- a/gcc/m2/gm2-compiler/M2Error.mod +++ b/gcc/m2/gm2-compiler/M2Error.mod @@ -398,10 +398,8 @@ VAR BEGIN IF AtTokenNo = UnknownTokenNo THEN - (* this could be used as a useful debugging hook as the front end - has forgotten the token no. This can occur if a complex record - structure or array is used for example. *) - AtTokenNo := GetTokenNo () + (* This could be used as a useful debugging hook as the front end + has forgotten the token no. *) END ; NEW(e) ; WITH e^ DO diff --git a/gcc/m2/gm2-compiler/M2GCCDeclare.def b/gcc/m2/gm2-compiler/M2GCCDeclare.def index 2e77695678ca..28bbb1a41b58 100644 --- a/gcc/m2/gm2-compiler/M2GCCDeclare.def +++ b/gcc/m2/gm2-compiler/M2GCCDeclare.def @@ -223,6 +223,27 @@ PROCEDURE GetTypeMax (type: CARDINAL) : CARDINAL ; PROCEDURE PrintSym (sym: CARDINAL) ; +(* + IncludeDumpSymbol - include sym into the watch list and all syms dependants. +*) + +PROCEDURE IncludeDumpSymbol (sym: CARDINAL) ; + + +(* + DumpFilteredResolver - dumps the gimple or tree representation of all watched symbols. +*) + +PROCEDURE DumpFilteredResolver ; + + +(* + DumpFilteredDefinitive - dumps the gimple or tree representation of all watched symbols. +*) + +PROCEDURE DumpFilteredDefinitive ; + + (* InitDeclarations - initializes default types and the source filename. *) diff --git a/gcc/m2/gm2-compiler/M2GCCDeclare.mod b/gcc/m2/gm2-compiler/M2GCCDeclare.mod index 6f0a749c5263..9607085b9674 100644 --- a/gcc/m2/gm2-compiler/M2GCCDeclare.mod +++ b/gcc/m2/gm2-compiler/M2GCCDeclare.mod @@ -35,11 +35,11 @@ FROM ASCII IMPORT nul ; FROM Storage IMPORT ALLOCATE ; FROM M2Debug IMPORT Assert ; FROM M2Quads IMPORT DisplayQuadRange ; +FROM m2pp IMPORT DumpGimpleFd ; IMPORT FIO ; -FROM M2Options IMPORT DisplayQuadruples, - GenerateDebugging, GenerateLineDebug, Iso, Optimizing, WholeProgram, +FROM M2Options IMPORT GenerateDebugging, GenerateLineDebug, Iso, Optimizing, WholeProgram, ScaffoldStatic, GetRuntimeModuleOverride ; FROM M2AsmUtil IMPORT GetFullSymName, GetFullScopeAsmName ; @@ -52,7 +52,10 @@ FROM FormatStrings IMPORT Sprintf1 ; FROM M2LexBuf IMPORT TokenToLineNo, FindFileNameFromToken, TokenToLocation, UnknownTokenNo, BuiltinTokenNo ; FROM M2MetaError IMPORT MetaError1, MetaError2, MetaError3 ; FROM M2Error IMPORT FlushErrors, InternalError ; -FROM M2Printf IMPORT printf0, printf1, printf2, printf3 ; +FROM M2LangDump IMPORT GetDumpFile ; + +FROM M2Printf IMPORT printf0, printf1, printf2, printf3, + fprintf0, fprintf1, fprintf2, fprintf3 ; FROM Indexing IMPORT Index, InitIndex, PutIndice, GetIndice, InBounds, IncludeIndiceIntoIndex, HighIndice, @@ -206,14 +209,12 @@ TYPE tobesolvedbyquads, finishedsetarray) ; doDeclareProcedure = PROCEDURE (CARDINAL, CARDINAL) ; - - CONST - Debugging = FALSE ; - Progress = FALSE ; - EnableSSA = FALSE ; - EnableWatch = FALSE ; - + Debugging = FALSE ; + Progress = FALSE ; + EnableSSA = FALSE ; + EnableWatch = TRUE ; + TraceQuadruples = FALSE ; TYPE Group = POINTER TO RECORD @@ -256,6 +257,7 @@ VAR PROCEDURE mystop ; BEGIN END mystop ; + (* *************************************************** *) (* PrintNum - @@ -340,8 +342,7 @@ BEGIN THEN IncludeElementIntoSet (WatchList, sym) ; WalkDependants (sym, AddSymToWatch) ; - printf1 ("watching symbol %d\n", sym) ; - FIO.FlushBuffer (FIO.StdOut) + fprintf1 (GetDumpFile (), "%d, ", sym) END END AddSymToWatch ; @@ -377,12 +378,11 @@ PROCEDURE doInclude (l: Set; a: ARRAY OF CHAR; sym: CARDINAL) ; BEGIN IF NOT IsElementInSet(l, sym) THEN - printf0('rule: ') ; + fprintf0 (GetDumpFile (), 'rule: ') ; WriteRule ; - printf0(' ') ; - printf1(a, sym) ; - FIO.FlushBuffer(FIO.StdOut) ; - IncludeElementIntoSet(l, sym) + fprintf0 (GetDumpFile (), ' ') ; + fprintf1 (GetDumpFile (), a, sym) ; + IncludeElementIntoSet (l, sym) END END doInclude ; @@ -420,11 +420,7 @@ BEGIN partiallydeclared : IncludeElementIntoSet (GlobalGroup^.PartiallyDeclared, sym) | heldbyalignment : IncludeElementIntoSet (GlobalGroup^.HeldByAlignment, sym) | finishedalignment : IncludeElementIntoSet (GlobalGroup^.FinishedAlignment, sym) | - todolist : IncludeElementIntoSet (GlobalGroup^.ToDoList, sym) ; - IF EnableWatch AND (sym = 919) - THEN - IncludeElementIntoSet (WatchList, 919) - END | + todolist : IncludeElementIntoSet (GlobalGroup^.ToDoList, sym) | niltypedarrays : IncludeElementIntoSet (GlobalGroup^.NilTypedArrays, sym) | finishedsetarray : IncludeElementIntoSet (GlobalGroup^.FinishedSetArray, sym) @@ -443,11 +439,10 @@ PROCEDURE doExclude (l: Set; a: ARRAY OF CHAR; sym: CARDINAL) ; BEGIN IF IsElementInSet (l, sym) THEN - printf0 ('rule: ') ; + fprintf0 (GetDumpFile (), 'rule: ') ; WriteRule ; - printf0 (' ') ; - printf1 (a, sym) ; - FIO.FlushBuffer (FIO.StdOut) ; + fprintf0 (GetDumpFile (), ' ') ; + fprintf1 (GetDumpFile (), a, sym) ; ExcludeElementFromSet (l, sym) END END doExclude ; @@ -2784,7 +2779,7 @@ VAR copy: Group ; loop: CARDINAL ; BEGIN - IF DisplayQuadruples + IF TraceQuadruples THEN DisplayQuadRange (scope, start, end) END ; @@ -2800,7 +2795,7 @@ BEGIN END ; IF loop = DebugLoop THEN - IF DisplayQuadruples + IF TraceQuadruples THEN DisplayQuadRange (scope, start, end) END ; @@ -3052,41 +3047,6 @@ PROCEDURE StartDeclareScope (scope: CARDINAL) ; VAR n: Name ; BEGIN - (* AddSymToWatch (8821) ; *) - (* AddSymToWatch (1157) ; *) (* watch goes here *) - (* AddSymToWatch(TryFindSymbol('IOLink', 'DeviceId')) ; *) - (* AddSymToWatch(819) ; *) - (* - AddSymToWatch(2125) ; (* watch goes here *) - DebugSets ; - *) - (* - AddSymToWatch(2125) ; (* watch goes here *) - *) - (* - IncludeElementIntoSet(WatchList, 369) ; - IncludeElementIntoSet(WatchList, 709) ; - *) - (* - IncludeElementIntoSet(WatchList, 1006) ; - *) - (* AddSymToWatch(8) ; *) - (* IncludeElementIntoSet(WatchList, 4188) ; *) - (* AddSymToWatch(1420) ; *) - (* AddSymToWatch(5889) ; *) - (* IncludeElementIntoSet(WatchList, 717) ; *) - (* IncludeElementIntoSet(WatchList, 829) ; *) - (* IncludeElementIntoSet(WatchList, 2714) ; *) - (* IncludeElementIntoSet(WatchList, 23222) ; *) - (* IncludeElementIntoSet(WatchList, 1104) ; *) - (* IncludeElementIntoSet(WatchList, 859) ; *) - (* IncludeElementIntoSet(WatchList, 858) ; *) - - (* IncludeElementIntoSet(WatchList, 720) ; *) - (* IncludeElementIntoSet(WatchList, 706) ; *) - (* IncludeElementIntoSet(WatchList, 1948) ; *) - (* IncludeElementIntoSet(WatchList, 865) ; *) - IF Debugging THEN n := GetSymName (scope) ; @@ -3117,15 +3077,83 @@ END EndDeclareScope ; (* - PreAddModGcc - adds a relationship between sym and t. - It also determines whether an unbounded - for sym is required and if so this is also - created. + IncludeDumpSymbol - include sym into the watch list and all syms dependants. +*) + +PROCEDURE IncludeDumpSymbol (sym: CARDINAL) ; +BEGIN + IF sym # NulSym + THEN + AddSymToWatch (sym) + (* + fprintf0 (GetDumpFile (), "\n") ; + PrintVerbose (sym) ; + fprintf0 (GetDumpFile (), "\n") + *) + END +END IncludeDumpSymbol ; + + +(* + DumpResolver - dumps the m2 representation of sym. +*) + +PROCEDURE DumpResolver (sym: CARDINAL) ; +BEGIN + fprintf1 (GetDumpFile (), "dump filtered symbol %d and dependants\n", sym) ; + PrintVerbose (sym) ; +END DumpResolver ; + + +(* + DumpFilteredResolver - dumps the gimple or tree representation of all watched symbols. +*) + +PROCEDURE DumpFilteredResolver ; +BEGIN + ForeachElementInSetDo (WatchList, DumpResolver) +END DumpFilteredResolver ; + + +(* + DumpDefinitive - dumps the m2 and m2 gimple representation of sym. +*) + +PROCEDURE DumpDefinitive (sym: CARDINAL) ; +VAR + fd: INTEGER ; +BEGIN + fprintf1 (GetDumpFile (), "\nm2 symbol synopsis: %d\n", sym) ; + PrintVerbose (sym) ; + IF GccKnowsAbout (sym) + THEN + fprintf1 (GetDumpFile (), "\nm2 gimple: %d", sym) ; + FIO.FlushBuffer (GetDumpFile ()) ; + fd := FIO.GetUnixFileDescriptor (GetDumpFile ()) ; + DumpGimpleFd (fd, Mod2Gcc (sym)) + ELSE + fprintf1 (GetDumpFile (), "\nno m2 gimple for %d\n", sym) + END +END DumpDefinitive ; + + +(* + DumpFilteredDefinitive - dumps the gimple or tree representation of all watched symbols. +*) + +PROCEDURE DumpFilteredDefinitive ; +BEGIN + ForeachElementInSetDo (WatchList, DumpDefinitive) +END DumpFilteredDefinitive ; + + +(* + PreAddModGcc - adds a relationship between sym and tree. *) -PROCEDURE PreAddModGcc (sym: CARDINAL; t: Tree) ; +PROCEDURE PreAddModGcc (sym: CARDINAL; tree: Tree) ; BEGIN - AddModGcc(sym, t) + AddModGcc (sym, tree) END PreAddModGcc ; @@ -3829,18 +3857,18 @@ PROCEDURE IncludeGetNth (l: List; sym: CARDINAL) ; VAR i: CARDINAL ; BEGIN - printf0 (' ListOfSons [') ; + fprintf0 (GetDumpFile (), ' ListOfSons [') ; i := 1 ; WHILE GetNth (sym, i) # NulSym DO IF i>1 THEN - printf0 (', ') + fprintf0 (GetDumpFile (), ', ') END ; IncludeItemIntoList (l, GetNth(sym, i)) ; PrintTerse (GetNth (sym, i)) ; INC (i) END ; - printf0 (']') + fprintf0 (GetDumpFile (), ']') END IncludeGetNth ; @@ -3855,17 +3883,17 @@ BEGIN t := GetSType(sym) ; IF t#NulSym THEN - printf0(' type [') ; + fprintf0 (GetDumpFile(), ' type [') ; PrintTerse(t) ; IncludeItemIntoList(l, t) ; - printf0(']') ; + fprintf0 (GetDumpFile(), ']') ; t := GetVarBackEndType(sym) ; IF t#NulSym THEN - printf0(' gcc type [') ; + fprintf0 (GetDumpFile(), ' gcc type [') ; PrintTerse(t) ; IncludeItemIntoList(l, t) ; - printf0(']') + fprintf0 (GetDumpFile(), ']') END END END IncludeType ; @@ -3882,10 +3910,10 @@ BEGIN t := GetArraySubscript(sym) ; IF t#NulSym THEN - printf0(' subrange [') ; + fprintf0 (GetDumpFile(), ' subrange [') ; PrintTerse(t) ; IncludeItemIntoList(l, t) ; - printf0(']') ; + fprintf0 (GetDumpFile(), ']') ; END END IncludeSubscript ; @@ -3896,7 +3924,7 @@ END IncludeSubscript ; PROCEDURE PrintLocalSymbol (sym: CARDINAL) ; BEGIN - PrintTerse(sym) ; printf0(', ') + PrintTerse(sym) ; fprintf0 (GetDumpFile(), ', ') END PrintLocalSymbol ; @@ -3906,9 +3934,9 @@ END PrintLocalSymbol ; PROCEDURE PrintLocalSymbols (sym: CARDINAL) ; BEGIN - printf0('Local Symbols {') ; + fprintf0 (GetDumpFile(), 'Local Symbols {') ; ForeachLocalSymDo(sym, PrintLocalSymbol) ; - printf0('}') + fprintf0 (GetDumpFile(), '}') END PrintLocalSymbols ; @@ -3920,9 +3948,9 @@ PROCEDURE IncludeGetVarient (l: List; sym: CARDINAL) ; BEGIN IF GetVarient(sym)#NulSym THEN - printf0(' Varient [') ; + fprintf0 (GetDumpFile(), ' Varient [') ; PrintTerse(GetVarient(sym)) ; - printf0(']') ; + fprintf0 (GetDumpFile(), ']') ; IncludeItemIntoList(l, GetVarient(sym)) END END IncludeGetVarient ; @@ -3967,7 +3995,7 @@ BEGIN tokenno := GetDeclaredMod(sym) ; filename := FindFileNameFromToken(tokenno, 0) ; lineno := TokenToLineNo(tokenno, 0) ; - printf2(" declared in %s:%d", filename, lineno) + fprintf2 (GetDumpFile (), " declared in %s:%d", filename, lineno) END PrintDeclared ; @@ -3984,7 +4012,7 @@ BEGIN align := GetAlignment(sym) ; IF align#NulSym THEN - printf1(" aligned [%d]", align) + fprintf1 (GetDumpFile(), " aligned [%d]", align) END END END PrintAlignment ; @@ -3996,10 +4024,10 @@ END PrintAlignment ; PROCEDURE IncludeGetParent (l: List; sym: CARDINAL) ; BEGIN - printf0(' Parent [') ; + fprintf0 (GetDumpFile(), ' Parent [') ; IncludeItemIntoList(l, GetParent(sym)) ; PrintTerse(GetParent(sym)) ; - printf0(']') + fprintf0 (GetDumpFile(), ']') END IncludeGetParent ; @@ -4013,12 +4041,12 @@ BEGIN THEN IF IsDeclaredPacked(sym) THEN - printf0(' packed') + fprintf0 (GetDumpFile(), ' packed') ELSE - printf0(' unpacked') + fprintf0 (GetDumpFile(), ' unpacked') END ELSE - printf0(' unknown if packed') + fprintf0 (GetDumpFile(), ' unknown if packed') END END PrintDecl ; @@ -4036,7 +4064,7 @@ BEGIN line := TokenToLineNo (GetDeclaredMod (sym), 0) ; scope := GetScope (sym) ; name := GetSymName (scope) ; - printf3 (' scope %a:%d %d', name, line, scope) + fprintf3 (GetDumpFile (), ' scope %a:%d %d', name, line, scope) END PrintScope ; @@ -4049,23 +4077,23 @@ VAR n: Name ; BEGIN n := GetSymName (sym) ; - printf2('sym %d IsProcedure (%a)', sym, n); + fprintf2 (GetDumpFile (), 'sym %d IsProcedure (%a)', sym, n); IF IsProcedureReachable(sym) THEN - printf0(' IsProcedureReachable') + fprintf0 (GetDumpFile(), ' IsProcedureReachable') END ; PrintScope (sym) ; IF IsExtern (sym) THEN - printf0 (' extern') + fprintf0 (GetDumpFile (), ' extern') END ; IF IsPublic (sym) THEN - printf0 (' public') + fprintf0 (GetDumpFile (), ' public') END ; IF IsCtor (sym) THEN - printf0 (' ctor') + fprintf0 (GetDumpFile (), ' ctor') END ; PrintDeclared(sym) END PrintProcedure ; @@ -4084,22 +4112,22 @@ BEGIN THEN IF IsConstStringM2 (sym) THEN - printf0 ('a Modula-2 string') + fprintf0 (GetDumpFile (), 'a Modula-2 string') ELSIF IsConstStringC (sym) THEN - printf0 (' a C string') + fprintf0 (GetDumpFile (), ' a C string') ELSIF IsConstStringM2nul (sym) THEN - printf0 (' a nul terminated Modula-2 string') + fprintf0 (GetDumpFile (), ' a nul terminated Modula-2 string') ELSIF IsConstStringCnul (sym) THEN - printf0 (' a nul terminated C string') + fprintf0 (GetDumpFile (), ' a nul terminated C string') END ; tokenno := GetDeclaredMod (sym) ; len := GetStringLength (tokenno, sym) ; - printf1 (' length %d', len) + fprintf1 (GetDumpFile (), ' length %d', len) ELSE - printf0 ('is not currently known') + fprintf0 (GetDumpFile (), 'is not currently known') END END PrintString ; @@ -4120,35 +4148,35 @@ BEGIN n := GetSymName(sym) ; IF IsError(sym) THEN - printf2('sym %d IsError (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsError (%a)', sym, n) ELSIF IsDefImp(sym) THEN - printf2('sym %d IsDefImp (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsDefImp (%a)', sym, n) ; IF IsDefinitionForC(sym) THEN - printf0('and IsDefinitionForC') + fprintf0 (GetDumpFile(), 'and IsDefinitionForC') END ; IF IsHiddenTypeDeclared(sym) THEN - printf0(' IsHiddenTypeDeclared') + fprintf0 (GetDumpFile(), ' IsHiddenTypeDeclared') END ; ForeachProcedureDo (sym, PrintProcedure) ELSIF IsModule(sym) THEN - printf2('sym %d IsModule (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsModule (%a)', sym, n) ; IF IsModuleWithinProcedure(sym) THEN - printf0(' and IsModuleWithinProcedure') + fprintf0 (GetDumpFile(), ' and IsModuleWithinProcedure') END ELSIF IsInnerModule(sym) THEN - printf2('sym %d IsInnerModule (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsInnerModule (%a)', sym, n) ELSIF IsUnknown(sym) THEN - printf2('sym %d IsUnknown (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsUnknown (%a)', sym, n) ELSIF IsType(sym) THEN - printf2('sym %d IsType (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsType (%a)', sym, n) ; IncludeType(l, sym) ; PrintAlignment(sym) ELSIF IsProcedure(sym) @@ -4156,72 +4184,72 @@ BEGIN PrintProcedure (sym) ELSIF IsParameter(sym) THEN - printf2('sym %d IsParameter (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsParameter (%a)', sym, n) ; IF GetParameterShadowVar(sym)=NulSym THEN - printf0(' no shadow local variable') + fprintf0 (GetDumpFile(), ' no shadow local variable') ELSE - printf0(' shadow ') ; + fprintf0 (GetDumpFile(), ' shadow ') ; IncludeType(l, GetParameterShadowVar(sym)) (* PrintVerboseFromList(l, GetParameterShadowVar(sym)) *) END ; IncludeType(l, sym) ELSIF IsPointer(sym) THEN - printf2('sym %d IsPointer (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsPointer (%a)', sym, n) ; IncludeType(l, sym) ; PrintAlignment(sym) ELSIF IsRecord(sym) THEN - printf2('sym %d IsRecord (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsRecord (%a)', sym, n) ; PrintLocalSymbols(sym) ; IncludeGetNth(l, sym) ; PrintAlignment(sym) ; PrintDecl(sym) ELSIF IsVarient(sym) THEN - printf2('sym %d IsVarient (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsVarient (%a)', sym, n) ; PrintDecl(sym) ; IncludeGetNth(l, sym) ; IncludeGetVarient(l, sym) ; IncludeGetParent(l, sym) ELSIF IsFieldVarient(sym) THEN - printf2('sym %d IsFieldVarient (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsFieldVarient (%a)', sym, n) ; PrintDecl(sym) ; IncludeGetNth(l, sym) ; IncludeGetVarient(l, sym) ; IncludeGetParent(l, sym) ELSIF IsFieldEnumeration(sym) THEN - printf2('sym %d IsFieldEnumeration (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsFieldEnumeration (%a)', sym, n) ELSIF IsArray(sym) THEN - printf2('sym %d IsArray (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsArray (%a)', sym, n) ; IncludeSubscript(l, sym) ; IncludeType(l, sym) ; PrintAlignment(sym) ELSIF IsEnumeration(sym) THEN - printf2('sym %d IsEnumeration (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsEnumeration (%a)', sym, n) ELSIF IsSet(sym) THEN - printf2('sym %d IsSet (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsSet (%a)', sym, n) ; IncludeType(l, sym) ELSIF IsUnbounded(sym) THEN - printf2('sym %d IsUnbounded (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsUnbounded (%a)', sym, n) ; IncludeUnbounded(l, sym) ELSIF IsPartialUnbounded(sym) THEN - printf2('sym %d IsPartialUnbounded (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsPartialUnbounded (%a)', sym, n) ; IncludePartialUnbounded(l, sym) ELSIF IsRecordField(sym) THEN - printf2('sym %d IsRecordField (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsRecordField (%a)', sym, n) ; IF IsRecordFieldAVarientTag(sym) THEN - printf0(' variant tag') + fprintf0 (GetDumpFile(), ' variant tag') END ; IncludeType(l, sym) ; IncludeGetVarient(l, sym) ; @@ -4230,76 +4258,76 @@ BEGIN PrintDecl(sym) ELSIF IsProcType(sym) THEN - printf2('sym %d IsProcType (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsProcType (%a)', sym, n) ELSIF IsVar(sym) THEN - printf2('sym %d IsVar (%a) declared in ', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsVar (%a) declared in ', sym, n) ; PrintScope (sym) ; - printf0 ('mode ') ; + fprintf0 (GetDumpFile (), 'mode ') ; CASE GetMode(sym) OF - LeftValue : printf0('l ') | - RightValue : printf0('r ') | - ImmediateValue: printf0('i ') | - NoValue : printf0('n ') + LeftValue : fprintf0 (GetDumpFile(), 'l ') | + RightValue : fprintf0 (GetDumpFile(), 'r ') | + ImmediateValue: fprintf0 (GetDumpFile(), 'i ') | + NoValue : fprintf0 (GetDumpFile(), 'n ') END ; IF IsTemporary(sym) THEN - printf0('temporary ') + fprintf0 (GetDumpFile(), 'temporary ') END ; IF IsComponent(sym) THEN - printf0('component ') + fprintf0 (GetDumpFile(), 'component ') END ; IF IsVarHeap (sym) THEN - printf0('heap ') + fprintf0 (GetDumpFile(), 'heap ') END ; - printf0 ('\n') ; + fprintf0 (GetDumpFile (), '\n') ; PrintInitialized (sym) ; IncludeType(l, sym) ELSIF IsConst(sym) THEN - printf2('sym %d IsConst (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsConst (%a)', sym, n) ; IF IsConstString(sym) THEN - printf1 (' also IsConstString (%a) ', n) ; + fprintf1 (GetDumpFile(), ' also IsConstString (%a)', n) ; PrintString (sym) ELSIF IsConstructor(sym) THEN - printf0(' constant constructor ') ; + fprintf0 (GetDumpFile(), ' constant constructor ') ; IncludeType(l, sym) ELSIF IsConstSet(sym) THEN - printf0(' constant constructor set ') ; + fprintf0 (GetDumpFile(), ' constant constructor set ') ; IncludeType(l, sym) ELSE IncludeType(l, sym) END ELSIF IsConstructor(sym) THEN - printf2('sym %d IsConstructor (non constant) (%a)', sym, n) ; + fprintf2 (GetDumpFile(), 'sym %d IsConstructor (non constant) (%a)', sym, n) ; IncludeType(l, sym) ELSIF IsConstLit(sym) THEN - printf2('sym %d IsConstLit (%a)', sym, n) + fprintf2 (GetDumpFile(), 'sym %d IsConstLit (%a)', sym, n) ELSIF IsDummy(sym) THEN - printf2('sym %d IsDummy (%a)', sym, n) + fprintf2 (GetDumpFile(), 'sym %d IsDummy (%a)', sym, n) ELSIF IsTemporary(sym) THEN - printf2('sym %d IsTemporary (%a)', sym, n) + fprintf2 (GetDumpFile(), 'sym %d IsTemporary (%a)', sym, n) ELSIF IsVarAParam(sym) THEN - printf2('sym %d IsVarAParam (%a)', sym, n) + fprintf2 (GetDumpFile(), 'sym %d IsVarAParam (%a)', sym, n) ELSIF IsSubscript(sym) THEN - printf2('sym %d IsSubscript (%a)', sym, n) + fprintf2 (GetDumpFile(), 'sym %d IsSubscript (%a)', sym, n) ELSIF IsSubrange(sym) THEN GetSubrange(sym, high, low) ; - printf2('sym %d IsSubrange (%a)', sym, n) ; + fprintf2 (GetDumpFile(), 'sym %d IsSubrange (%a)', sym, n) ; IF (low#NulSym) AND (high#NulSym) THEN type := GetSType(sym) ; @@ -4307,41 +4335,41 @@ BEGIN THEN IncludeType(l, sym) ; n := GetSymName(type) ; - printf1(' %a', n) + fprintf1 (GetDumpFile(), ' %a', n) END ; n := GetSymName(low) ; n2 := GetSymName(high) ; - printf2('[%a..%a]', n, n2) + fprintf2 (GetDumpFile (), '[%a..%a]', n, n2) END ELSIF IsProcedureVariable(sym) THEN - printf2('sym %d IsProcedureVariable (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsProcedureVariable (%a)', sym, n) ELSIF IsProcedureNested(sym) THEN - printf2('sym %d IsProcedureNested (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsProcedureNested (%a)', sym, n) ELSIF IsAModula2Type(sym) THEN - printf2('sym %d IsAModula2Type (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsAModula2Type (%a)', sym, n) ELSIF IsObject(sym) THEN - printf2('sym %d IsObject (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsObject (%a)', sym, n) ELSIF IsTuple(sym) THEN - printf2('sym %d IsTuple (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsTuple (%a)', sym, n) ; low := GetNth(sym, 1) ; high := GetNth(sym, 2) ; - printf2('%d, %d\n', low, high) + fprintf2 (GetDumpFile (), '%d, %d\n', low, high) ELSIF IsGnuAsm(sym) THEN IF IsGnuAsmVolatile(sym) THEN - printf2('sym %d IsGnuAsmVolatile (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsGnuAsmVolatile (%a)', sym, n) ELSE - printf2('sym %d IsGnuAsm (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsGnuAsm (%a)', sym, n) END ELSIF IsComponent(sym) THEN - printf2('sym %d IsComponent (%a) ', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsComponent (%a) ', sym, n) ; i := 1 ; REPEAT type := GetNth(sym, i) ; @@ -4349,7 +4377,7 @@ BEGIN THEN IncludeItemIntoList(l, type) ; n := GetSymName(type) ; - printf2("[%a %d] ", n, type) ; + fprintf2 (GetDumpFile (), "[%a %d] ", n, type) ; INC(i) END ; UNTIL type=NulSym @@ -4357,9 +4385,9 @@ BEGIN IF IsHiddenType(sym) THEN - printf0(' IsHiddenType') + fprintf0 (GetDumpFile(), ' IsHiddenType') END ; - printf0('\n') + fprintf0 (GetDumpFile(), '\n') END PrintVerboseFromList ; @@ -4391,7 +4419,7 @@ END PrintVerbose ; PROCEDURE PrintSym (sym: CARDINAL) ; BEGIN printf1 ('information about symbol: %d\n', sym) ; - printf0 ('==============================\n') ; + fprintf0 (GetDumpFile (), '==============================\n') ; PrintVerbose (sym) END PrintSym ; @@ -4404,7 +4432,7 @@ END PrintSym ; PROCEDURE PrintSymbol (sym: CARDINAL) ; BEGIN PrintTerse(sym) ; - printf0('\n') + fprintf0 (GetDumpFile(), '\n') END PrintSymbol ; ******************************************* *) @@ -4419,127 +4447,127 @@ BEGIN n := GetSymName(sym) ; IF IsError(sym) THEN - printf2('sym %d IsError (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsError (%a)', sym, n) ELSIF IsDefImp(sym) THEN - printf2('sym %d IsDefImp (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsDefImp (%a)', sym, n) ; IF IsDefinitionForC(sym) THEN - printf0('and IsDefinitionForC') + fprintf0 (GetDumpFile(), 'and IsDefinitionForC') END ; IF IsHiddenTypeDeclared(sym) THEN - printf0(' IsHiddenTypeDeclared') + fprintf0 (GetDumpFile(), ' IsHiddenTypeDeclared') END ELSIF IsModule(sym) THEN - printf2('sym %d IsModule (%a)', sym, n) ; + fprintf2 (GetDumpFile (), 'sym %d IsModule (%a)', sym, n) ; IF IsModuleWithinProcedure(sym) THEN - printf0(' and IsModuleWithinProcedure') + fprintf0 (GetDumpFile(), ' and IsModuleWithinProcedure') END ELSIF IsInnerModule(sym) THEN - printf2('sym %d IsInnerModule (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsInnerModule (%a)', sym, n) ELSIF IsUnknown(sym) THEN - printf2('sym %d IsUnknown (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsUnknown (%a)', sym, n) ELSIF IsType(sym) THEN - printf2('sym %d IsType (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsType (%a)', sym, n) ELSIF IsProcedure(sym) THEN - printf2('sym %d IsProcedure (%a)', sym, n); + fprintf2 (GetDumpFile (), 'sym %d IsProcedure (%a)', sym, n); IF IsProcedureReachable(sym) THEN - printf0(' and IsProcedureReachable') + fprintf0 (GetDumpFile(), ' and IsProcedureReachable') END ELSIF IsParameter(sym) THEN - printf2('sym %d IsParameter (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsParameter (%a)', sym, n) ELSIF IsPointer(sym) THEN - printf2('sym %d IsPointer (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsPointer (%a)', sym, n) ELSIF IsRecord(sym) THEN - printf2('sym %d IsRecord (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsRecord (%a)', sym, n) ELSIF IsVarient(sym) THEN - printf2('sym %d IsVarient (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsVarient (%a)', sym, n) ELSIF IsFieldVarient(sym) THEN - printf2('sym %d IsFieldVarient (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsFieldVarient (%a)', sym, n) ELSIF IsFieldEnumeration(sym) THEN - printf2('sym %d IsFieldEnumeration (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsFieldEnumeration (%a)', sym, n) ELSIF IsArray(sym) THEN - printf2('sym %d IsArray (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsArray (%a)', sym, n) ELSIF IsEnumeration(sym) THEN - printf2('sym %d IsEnumeration (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsEnumeration (%a)', sym, n) ELSIF IsSet(sym) THEN - printf2('sym %d IsSet (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsSet (%a)', sym, n) ELSIF IsUnbounded(sym) THEN - printf2('sym %d IsUnbounded (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsUnbounded (%a)', sym, n) ELSIF IsRecordField(sym) THEN - printf2('sym %d IsRecordField (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsRecordField (%a)', sym, n) ELSIF IsProcType(sym) THEN - printf2('sym %d IsProcType (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsProcType (%a)', sym, n) ELSIF IsVar(sym) THEN - printf2('sym %d IsVar (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsVar (%a)', sym, n) ELSIF IsConstString(sym) THEN - printf2('sym %d IsConstString (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsConstString (%a)', sym, n) ELSIF IsConst(sym) THEN - printf2('sym %d IsConst (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsConst (%a)', sym, n) ELSIF IsConstLit(sym) THEN - printf2('sym %d IsConstLit (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsConstLit (%a)', sym, n) ELSIF IsDummy(sym) THEN - printf2('sym %d IsDummy (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsDummy (%a)', sym, n) ELSIF IsTemporary(sym) THEN - printf2('sym %d IsTemporary (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsTemporary (%a)', sym, n) ELSIF IsVarAParam(sym) THEN - printf2('sym %d IsVarAParam (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsVarAParam (%a)', sym, n) ELSIF IsSubscript(sym) THEN - printf2('sym %d IsSubscript (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsSubscript (%a)', sym, n) ELSIF IsSubrange(sym) THEN - printf2('sym %d IsSubrange (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsSubrange (%a)', sym, n) ELSIF IsProcedureVariable(sym) THEN - printf2('sym %d IsProcedureVariable (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsProcedureVariable (%a)', sym, n) ELSIF IsProcedureNested(sym) THEN - printf2('sym %d IsProcedureNested (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsProcedureNested (%a)', sym, n) ELSIF IsAModula2Type(sym) THEN - printf2('sym %d IsAModula2Type (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsAModula2Type (%a)', sym, n) ELSIF IsGnuAsm(sym) THEN - printf2('sym %d IsGnuAsm (%a)', sym, n) + fprintf2 (GetDumpFile (), 'sym %d IsGnuAsm (%a)', sym, n) ELSIF IsImport (sym) THEN - printf1('sym %d IsImport', sym) + fprintf1 (GetDumpFile(), 'sym %d IsImport', sym) ELSIF IsImportStatement (sym) THEN - printf1('sym %d IsImportStatement', sym) + fprintf1 (GetDumpFile(), 'sym %d IsImportStatement', sym) END ; IF IsHiddenType(sym) THEN - printf0(' IsHiddenType') + fprintf0 (GetDumpFile(), ' IsHiddenType') END END PrintTerse ; diff --git a/gcc/m2/gm2-compiler/M2GenGCC.mod b/gcc/m2/gm2-compiler/M2GenGCC.mod index aeba48d356e6..a45d33ef89e2 100644 --- a/gcc/m2/gm2-compiler/M2GenGCC.mod +++ b/gcc/m2/gm2-compiler/M2GenGCC.mod @@ -96,8 +96,7 @@ FROM M2MetaError IMPORT MetaErrorT0, MetaErrorT1, MetaErrorT2, MetaErrorT3, FROM M2Options IMPORT UnboundedByReference, PedanticCast, VerboseUnbounded, Iso, Pim, DebugBuiltins, WholeProgram, StrictTypeChecking, AutoInit, cflag, ScaffoldMain, - ScaffoldDynamic, ScaffoldStatic, - DebugTraceQuad, DebugTraceAPI ; + ScaffoldDynamic, ScaffoldStatic, GetDebugTraceQuad ; FROM M2Printf IMPORT printf0, printf1, printf2, printf4 ; FROM M2Quiet IMPORT qprintf0 ; @@ -258,10 +257,14 @@ FROM M2Quads IMPORT QuadOperator, GetQuad, IsReferenced, GetNextQuad, SubQuad, PutQuad, MustCheckOverflow, GetQuadOtok, GetQuadOTypetok, QuadToTokenNo, DisplayQuad, GetQuadtok, - GetM2OperatorDesc, GetQuadOp ; + GetM2OperatorDesc, GetQuadOp, + IsQuadConstExpr, IsBecomes, IsGoto, IsConditional, + IsDummy, + GetQuadOp1, GetQuadOp3, GetQuadDest, SetQuadConstExpr ; FROM M2Check IMPORT ParameterTypeCompatible, AssignmentTypeCompatible, ExpressionTypeCompatible ; FROM M2SSA IMPORT EnableSSA ; +FROM M2Optimize IMPORT FoldBranches ; CONST @@ -459,10 +462,10 @@ BEGIN END ; location := TokenToLocation (CurrentQuadToken) ; CheckReferenced(q, op) ; - IF DebugTraceQuad + IF GetDebugTraceQuad () THEN - printf0('building: ') ; - DisplayQuad(q) + printf0 ('building: ') ; + DisplayQuad (q) END ; CASE op OF @@ -510,14 +513,14 @@ BEGIN LogicalAndOp : CodeSetAnd (q) | LogicalXorOp : CodeSetSymmetricDifference (q) | LogicalDiffOp : CodeSetLogicalDifference (q) | - IfLessOp : CodeIfLess (q, op1, op2, op3) | - IfEquOp : CodeIfEqu (q, op1, op2, op3) | - IfNotEquOp : CodeIfNotEqu (q, op1, op2, op3) | - IfGreEquOp : CodeIfGreEqu (q, op1, op2, op3) | - IfLessEquOp : CodeIfLessEqu (q, op1, op2, op3) | - IfGreOp : CodeIfGre (q, op1, op2, op3) | - IfInOp : CodeIfIn (q, op1, op2, op3) | - IfNotInOp : CodeIfNotIn (q, op1, op2, op3) | + IfLessOp : CodeIfLess (q) | + IfEquOp : CodeIfEqu (q) | + IfNotEquOp : CodeIfNotEqu (q) | + IfGreEquOp : CodeIfGreEqu (q) | + IfLessEquOp : CodeIfLessEqu (q) | + IfGreOp : CodeIfGre (q) | + IfInOp : CodeIfIn (q) | + IfNotInOp : CodeIfNotIn (q) | IndrXOp : CodeIndrX (q, op1, op2, op3) | XIndrOp : CodeXIndr (q) | CallOp : CodeCall (CurrentQuadToken, op3) | @@ -589,6 +592,11 @@ BEGIN THEN tokenno := QuadToTokenNo (quad) END ; + IF GetDebugTraceQuad () + THEN + printf0('examining fold: ') ; + DisplayQuad (quad) + END ; GetQuadtok (quad, op, op1, op2, op3, op1pos, op2pos, op3pos) ; CASE op OF @@ -622,9 +630,14 @@ BEGIN CastOp : FoldCast (tokenno, p, quad, op1, op2, op3) | InclOp : FoldIncl (tokenno, p, quad, op1, op3) | ExclOp : FoldExcl (tokenno, p, quad, op1, op3) | - IfLessOp : FoldIfLess (tokenno, quad, op1, op2, op3) | - IfInOp : FoldIfIn (tokenno, quad, op1, op2, op3) | - IfNotInOp : FoldIfNotIn (tokenno, quad, op1, op2, op3) | + IfEquOp : FoldIfEqu (tokenno, p, quad, op1, op2, op3) | + IfNotEquOp : FoldIfNotEqu (tokenno, p, quad, op1, op2, op3) | + IfLessOp : FoldIfLess (tokenno, p, quad, op1, op2, op3) | + IfLessEquOp : FoldIfLessEqu (tokenno, p, quad, op1, op2, op3) | + IfGreOp : FoldIfGre (tokenno, p, quad, op1, op2, op3) | + IfGreEquOp : FoldIfGreEqu (tokenno, p, quad, op1, op2, op3) | + IfInOp : FoldIfIn (tokenno, p, quad, op1, op2, op3) | + IfNotInOp : FoldIfNotIn (tokenno, p, quad, op1, op2, op3) | LogicalShiftOp : FoldSetShift(tokenno, p, quad, op1, op2, op3) | LogicalRotateOp : FoldSetRotate (tokenno, p, quad, op1, op2, op3) | ParamOp : FoldBuiltinFunction (tokenno, p, quad, op1, op2, op3) | @@ -813,6 +826,7 @@ END BuildTrashTreeFromInterface ; PROCEDURE CodeInline (quad: CARDINAL) ; VAR + constExpr, overflowChecking: BOOLEAN ; op : QuadOperator ; op1, op2, GnuAsm: CARDINAL ; @@ -825,7 +839,8 @@ VAR labels : Tree ; location : location_t ; BEGIN - GetQuadOtok (quad, asmpos, op, op1, op2, GnuAsm, overflowChecking, + GetQuadOtok (quad, asmpos, op, op1, op2, GnuAsm, + overflowChecking, constExpr, op1pos, op2pos, op3pos) ; location := TokenToLocation (asmpos) ; inputs := BuildTreeFromInterface (GetGnuAsmInput (GnuAsm)) ; @@ -1880,6 +1895,7 @@ END CodeProcedureScope ; PROCEDURE CodeReturnValue (quad: CARDINAL) ; VAR op : QuadOperator ; + constExpr, overflowChecking : BOOLEAN ; expr, none, procedure : CARDINAL ; combinedpos, @@ -1887,7 +1903,8 @@ VAR value, length : Tree ; location : location_t ; BEGIN - GetQuadOtok (quad, returnpos, op, expr, none, procedure, overflowChecking, + GetQuadOtok (quad, returnpos, op, expr, none, procedure, + overflowChecking, constExpr, exprpos, nonepos, procpos) ; combinedpos := MakeVirtualTok (returnpos, returnpos, exprpos) ; location := TokenToLocation (combinedpos) ; @@ -2489,17 +2506,8 @@ END FoldBuiltinFunction ; (* CodeParam - builds a parameter list. - - NOTE that we almost can treat VAR and NON VAR parameters the same, expect for - some types: - - procedure parameters - unbounded parameters - - these require special attention and thus it is easier to test individually - for VAR and NON VAR parameters. - - NOTE that we CAN ignore ModeOfAddr though + Note that we can ignore ModeOfAddr as any lvalue will + have been created in a preceeding quadruple. *) PROCEDURE CodeParam (quad: CARDINAL) ; @@ -2510,11 +2518,13 @@ VAR parampos : CARDINAL ; nth : CARDINAL ; compatible, + constExpr, overflow : BOOLEAN ; op : QuadOperator ; BEGIN GetQuadOtok (quad, parampos, op, - nth, procedure, parameter, overflow, + nth, procedure, parameter, + overflow, constExpr, nopos, nopos, nopos) ; compatible := TRUE ; IF nth=0 @@ -2603,10 +2613,12 @@ VAR stroppos, despos, nonepos, exprpos : CARDINAL ; + constExpr, overflowChecking: BOOLEAN ; location : location_t ; BEGIN - GetQuadOtok (quad, stroppos, op, des, none, expr, overflowChecking, + GetQuadOtok (quad, stroppos, op, des, none, expr, + overflowChecking, constExpr, despos, nonepos, exprpos) ; IF IsConstStr (expr) AND IsConstStrKnown (expr) THEN @@ -2634,9 +2646,11 @@ VAR despos, nonepos, exprpos : CARDINAL ; s : String ; + constExpr, overflowChecking: BOOLEAN ; BEGIN - GetQuadOtok (quad, stroppos, op, des, none, expr, overflowChecking, + GetQuadOtok (quad, stroppos, op, des, none, expr, + overflowChecking, constExpr, despos, nonepos, exprpos) ; IF IsConstStr (expr) AND IsConstStrKnown (expr) THEN @@ -2664,9 +2678,11 @@ VAR despos, nonepos, exprpos : CARDINAL ; s : String ; + constExpr, overflowChecking: BOOLEAN ; BEGIN - GetQuadOtok (quad, stroppos, op, des, none, expr, overflowChecking, + GetQuadOtok (quad, stroppos, op, des, none, expr, + overflowChecking, constExpr, despos, nonepos, exprpos) ; IF IsConstStr (expr) AND IsConstStrKnown (expr) THEN @@ -2739,7 +2755,7 @@ VAR op : QuadOperator ; des, op2, expr: CARDINAL ; BEGIN - IF DeclaredOperandsBecomes (p, quad) + IF DeclaredOperandsBecomes (p, quad) AND (NOT IsQuadConstExpr (quad)) THEN IF TypeCheckBecomes (p, quad) THEN @@ -2784,13 +2800,15 @@ END RemoveQuad ; PROCEDURE DeclaredOperandsBecomes (p: WalkAction; quad: CARDINAL) : BOOLEAN ; VAR des, op2, expr : CARDINAL ; + constExpr, overflowChecking : BOOLEAN ; despos, op2pos, exprpos, becomespos: CARDINAL ; op : QuadOperator ; BEGIN GetQuadOtok (quad, becomespos, op, - des, op2, expr, overflowChecking, + des, op2, expr, + overflowChecking, constExpr, despos, op2pos, exprpos) ; Assert (op2pos = UnknownTokenNo) ; TryDeclareConst (exprpos, expr) ; @@ -2822,13 +2840,15 @@ END DeclaredOperandsBecomes ; PROCEDURE TypeCheckBecomes (p: WalkAction; quad: CARDINAL) : BOOLEAN ; VAR des, op2, expr : CARDINAL ; + constExpr, overflowChecking : BOOLEAN ; despos, op2pos, exprpos, becomespos: CARDINAL ; op : QuadOperator ; BEGIN GetQuadOtok (quad, becomespos, op, - des, op2, expr, overflowChecking, + des, op2, expr, + overflowChecking, constExpr, despos, op2pos, exprpos) ; Assert (op2pos = UnknownTokenNo) ; IF StrictTypeChecking AND @@ -2853,6 +2873,7 @@ END TypeCheckBecomes ; PROCEDURE PerformFoldBecomes (p: WalkAction; quad: CARDINAL) ; VAR des, op2, expr : CARDINAL ; + constExpr, overflowChecking : BOOLEAN ; despos, op2pos, exprpos, becomespos, @@ -2860,7 +2881,8 @@ VAR op : QuadOperator ; BEGIN GetQuadOtok (quad, becomespos, op, - des, op2, expr, overflowChecking, + des, op2, expr, + overflowChecking, constExpr, despos, op2pos, exprpos) ; Assert (op2pos = UnknownTokenNo) ; IF IsConst (des) AND IsConstString (expr) @@ -3339,6 +3361,7 @@ END checkDeclare ; PROCEDURE CodeBecomes (quad: CARDINAL) ; VAR + constExpr, overflowChecking: BOOLEAN ; op : QuadOperator ; des, op2, expr : CARDINAL ; @@ -3351,7 +3374,8 @@ VAR exprt : Tree ; location : location_t ; BEGIN - GetQuadOtok (quad, becomespos, op, des, op2, expr, overflowChecking, + GetQuadOtok (quad, becomespos, op, des, op2, expr, + overflowChecking, constExpr, despos, op2pos, exprpos) ; Assert (op2pos = UnknownTokenNo) ; DeclareConstant (exprpos, expr) ; (* Check to see whether expr is a constant and declare it. *) @@ -3739,6 +3763,7 @@ VAR righttype, des, left, right: CARDINAL ; typeChecking, + constExpr, overflowChecking: BOOLEAN ; despos, leftpos, rightpos, @@ -3747,7 +3772,8 @@ VAR op : QuadOperator ; BEGIN GetQuadOTypetok (quad, operatorpos, op, - des, left, right, overflowChecking, typeChecking, + des, left, right, + overflowChecking, typeChecking, constExpr, despos, leftpos, rightpos) ; IF typeChecking AND (op # LogicalRotateOp) AND (op # LogicalShiftOp) THEN @@ -3796,6 +3822,7 @@ VAR lefttype, righttype, ignore, left, right: CARDINAL ; + constExpr, overflowChecking: BOOLEAN ; ignorepos, leftpos, @@ -3805,7 +3832,8 @@ VAR op : QuadOperator ; BEGIN GetQuadOtok (quad, operatorpos, op, - left, right, ignore, overflowChecking, + left, right, ignore, + overflowChecking, constExpr, leftpos, rightpos, ignorepos) ; subexprpos := MakeVirtualTok (operatorpos, leftpos, rightpos) ; lefttype := GetType (left) ; @@ -3857,6 +3885,7 @@ PROCEDURE CodeBinarySet (binop: BuildBinProcedure; doOp: DoProcedure; quad: CARDINAL) ; VAR location : location_t ; + constExpr, overflowChecking: BOOLEAN ; op : QuadOperator ; virttoken, @@ -3869,7 +3898,8 @@ VAR rightpos, operatorpos : CARDINAL ; BEGIN - GetQuadOtok (quad, operatorpos, op, des, left, right, overflowChecking, + GetQuadOtok (quad, operatorpos, op, des, left, right, + overflowChecking, constExpr, despos, leftpos, rightpos) ; (* Firstly ensure that constant literals are declared. *) @@ -5287,17 +5317,17 @@ END FoldIncl ; if op1 < op2 then goto op3. *) -PROCEDURE FoldIfLess (tokenno: CARDINAL; +PROCEDURE FoldIfLess (tokenno: CARDINAL; p: WalkAction; quad: CARDINAL; left, right, destQuad: CARDINAL) ; BEGIN - (* firstly ensure that constant literals are declared *) + (* Firstly ensure that constant literals are declared. *) TryDeclareConstant(tokenno, left) ; TryDeclareConstant(tokenno, right) ; IF IsConst (left) AND IsConst (right) THEN IF IsValueSolved (left) AND IsValueSolved (right) THEN - (* fine, we can take advantage of this and evaluate the condition *) + (* We can take advantage of the known values and evaluate the condition. *) PushValue (left) ; PushValue (right) ; IF Less (tokenno) @@ -5305,21 +5335,229 @@ BEGIN PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) ELSE SubQuad (quad) - END + END ; + NoChange := FALSE END END END FoldIfLess ; +(* + IsBooleanRelOpPattern - return TRUE if the pattern: + q If left right q+2 + q+1 Goto q+4 + q+2 Becomes des[i] TRUE[i] + q+3 Goto q+5 + q+4 Becomes des[i] FALSE[i] +*) + +PROCEDURE IsBooleanRelOpPattern (quad: CARDINAL) : BOOLEAN ; +BEGIN + IF IsQuadConstExpr (quad) + THEN + IF IsConditional (quad) AND + (IsGoto (quad+1) OR IsDummy (quad+1)) AND + IsBecomes (quad+2) AND IsGoto (quad+3) AND + IsBecomes (quad+4) AND + (GetQuadDest (quad) = quad+2) AND + (GetQuadDest (quad+1) = quad+4) AND + (GetQuadDest (quad+3) = quad+5) AND + (GetQuadOp1 (quad+2) = GetQuadOp1 (quad+4)) + THEN + RETURN TRUE + END + END ; + RETURN FALSE +END IsBooleanRelOpPattern ; + + +(* + FoldBooleanRelopPattern - fold the boolean relop pattern of quadruples + above to: + q+2 Becomes des[i] TRUE[i] + or + q+4 Becomes des[i] FALSE[i] + depending upon the condition in quad. +*) + +PROCEDURE FoldBooleanRelopPattern (p: WalkAction; quad: CARDINAL) ; +VAR + des: CARDINAL ; +BEGIN + des := GetQuadOp1 (quad+2) ; + IF QuadCondition (quad) + THEN + SetQuadConstExpr (quad+2, FALSE) ; + SubQuad (quad+4) (* Remove des := FALSE. *) + ELSE + SetQuadConstExpr (quad+4, FALSE) ; + SubQuad (quad+2) (* Remove des := TRUE. *) + END ; + RemoveQuad (p, des, quad) ; + SubQuad (quad+1) ; + SubQuad (quad+3) +END FoldBooleanRelopPattern ; + + +(* + QuadCondition - Pre-condition: left, right operands are constants + which have been resolved. + Post-condition: return TRUE if the condition at + quad is TRUE. +*) + +PROCEDURE QuadCondition (quad: CARDINAL) : BOOLEAN ; +VAR + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + GetQuadOtok (quad, combined, op, + left, right, dest, overflow, + constExpr, + leftpos, rightpos, destpos) ; + CASE op OF + + IfInOp : PushValue (right) ; + RETURN SetIn (left, combined) | + IfNotInOp : PushValue (right) ; + RETURN NOT SetIn (left, combined) + + ELSE + END ; + PushValue (left) ; + PushValue (right) ; + CASE op OF + + IfGreOp : RETURN Gre (combined) | + IfLessOp : RETURN Less (combined) | + IfLessEquOp: RETURN LessEqu (combined) | + IfGreEquOp : RETURN GreEqu (combined) | + IfEquOp : RETURN GreEqu (combined) | + IfNotEquOp : RETURN NotEqu (combined) + + ELSE + InternalError ('unrecognized comparison operator') + END ; + RETURN FALSE +END QuadCondition ; + + +(* + FoldIfGre - check to see if it is possible to evaluate + if op1 > op2 then goto op3. +*) + +PROCEDURE FoldIfGre (tokenno: CARDINAL; p: WalkAction; + quad: CARDINAL; left, right, destQuad: CARDINAL) ; +BEGIN + (* Firstly ensure that constant literals are declared. *) + TryDeclareConstant(tokenno, left) ; + TryDeclareConstant(tokenno, right) ; + IF IsConst (left) AND IsConst (right) + THEN + IF IsValueSolved (left) AND IsValueSolved (right) + THEN + (* We can take advantage of the known values and evaluate the condition. *) + IF IsBooleanRelOpPattern (quad) + THEN + FoldBooleanRelopPattern (p, quad) + ELSE + PushValue (left) ; + PushValue (right) ; + IF Gre (tokenno) + THEN + PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) + ELSE + SubQuad (quad) + END + END ; + NoChange := FALSE + END + END +END FoldIfGre ; + + +(* + FoldIfLessEqu - check to see if it is possible to evaluate + if op1 <= op2 then goto op3. +*) + +PROCEDURE FoldIfLessEqu (tokenno: CARDINAL; p: WalkAction; + quad: CARDINAL; left, right, destQuad: CARDINAL) ; +BEGIN + (* Firstly ensure that constant literals are declared. *) + TryDeclareConstant(tokenno, left) ; + TryDeclareConstant(tokenno, right) ; + IF IsConst (left) AND IsConst (right) + THEN + IF IsValueSolved (left) AND IsValueSolved (right) + THEN + (* We can take advantage of the known values and evaluate the condition. *) + IF IsBooleanRelOpPattern (quad) + THEN + FoldBooleanRelopPattern (p, quad) + ELSE + PushValue (left) ; + PushValue (right) ; + IF LessEqu (tokenno) + THEN + PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) + ELSE + SubQuad (quad) + END + END ; + NoChange := FALSE + END + END +END FoldIfLessEqu ; + + +(* + FoldIfGreEqu - check to see if it is possible to evaluate + if op1 >= op2 then goto op3. +*) + +PROCEDURE FoldIfGreEqu (tokenno: CARDINAL; p: WalkAction; + quad: CARDINAL; left, right, destQuad: CARDINAL) ; +BEGIN + (* Firstly ensure that constant literals are declared. *) + TryDeclareConstant(tokenno, left) ; + TryDeclareConstant(tokenno, right) ; + IF IsConst (left) AND IsConst (right) + THEN + IF IsValueSolved (left) AND IsValueSolved (right) + THEN + (* We can take advantage of the known values and evaluate the condition. *) + IF IsBooleanRelOpPattern (quad) + THEN + FoldBooleanRelopPattern (p, quad) + ELSE + PushValue (left) ; + PushValue (right) ; + IF GreEqu (tokenno) + THEN + PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) + ELSE + SubQuad (quad) + END + END ; + NoChange := FALSE + END + END +END FoldIfGreEqu ; + + (* FoldIfIn - check whether we can fold the IfInOp if op1 in op2 then goto op3 *) -PROCEDURE FoldIfIn (tokenno: CARDINAL; +PROCEDURE FoldIfIn (tokenno: CARDINAL; p: WalkAction; quad: CARDINAL; left, right, destQuad: CARDINAL) ; BEGIN - (* firstly ensure that constant literals are declared *) + (* Firstly ensure that constant literals are declared. *) TryDeclareConstant (tokenno, left) ; TryDeclareConstant (tokenno, right) ; IF IsConst (left) AND IsConst (right) @@ -5328,17 +5566,23 @@ BEGIN THEN IF CheckBinaryExpressionTypes (quad, NoWalkProcedure) THEN - (* fine, we can take advantage of this and evaluate the condition *) - PushValue (right) ; - IF SetIn (tokenno, left) + (* We can take advantage of the known values and evaluate the condition. *) + IF IsBooleanRelOpPattern (quad) THEN - PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) + FoldBooleanRelopPattern (p, quad) ELSE - SubQuad (quad) + PushValue (right) ; + IF SetIn (tokenno, left) + THEN + PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) + ELSE + SubQuad (quad) + END END ELSE SubQuad (quad) - END + END ; + NoChange := FALSE END END END FoldIfIn ; @@ -5349,10 +5593,10 @@ END FoldIfIn ; if not (op1 in op2) then goto op3 *) -PROCEDURE FoldIfNotIn (tokenno: CARDINAL; +PROCEDURE FoldIfNotIn (tokenno: CARDINAL; p: WalkAction; quad: CARDINAL; left, right, destQuad: CARDINAL) ; BEGIN - (* firstly ensure that constant literals are declared *) + (* Firstly ensure that constant literals are declared. *) TryDeclareConstant (tokenno, left) ; TryDeclareConstant (tokenno, right) ; IF IsConst (left) AND IsConst (right) @@ -5361,20 +5605,96 @@ BEGIN THEN IF CheckBinaryExpressionTypes (quad, NoWalkProcedure) THEN - (* fine, we can take advantage of this and evaluate the condition *) + (* We can take advantage of the known values and evaluate the condition. *) + IF IsBooleanRelOpPattern (quad) + THEN + FoldBooleanRelopPattern (p, quad) + ELSE + PushValue (right) ; + IF NOT SetIn (tokenno, left) + THEN + PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) + ELSE + SubQuad (quad) + END + END + ELSE + SubQuad (quad) + END ; + NoChange := FALSE + END + END +END FoldIfNotIn ; + + +(* + FoldIfEqu - check to see if it is possible to evaluate + if op1 = op2 then goto op3. +*) + +PROCEDURE FoldIfEqu (tokenno: CARDINAL; p: WalkAction; + quad: CARDINAL; left, right, destQuad: CARDINAL) ; +BEGIN + (* Firstly ensure that constant literals are declared. *) + TryDeclareConstant(tokenno, left) ; + TryDeclareConstant(tokenno, right) ; + IF IsConst (left) AND IsConst (right) + THEN + IF IsValueSolved (left) AND IsValueSolved (right) + THEN + IF IsBooleanRelOpPattern (quad) + THEN + FoldBooleanRelopPattern (p, quad) + ELSE + (* We can take advantage of the known values and evaluate the condition. *) + PushValue (left) ; PushValue (right) ; - IF NOT SetIn (tokenno, left) + IF Equ (tokenno) THEN PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) ELSE SubQuad (quad) END + END ; + NoChange := FALSE + END + END +END FoldIfEqu ; + + +(* + FoldIfNotEqu - check to see if it is possible to evaluate + if op1 # op2 then goto op3. +*) + +PROCEDURE FoldIfNotEqu (tokenno: CARDINAL; p: WalkAction; + quad: CARDINAL; left, right, destQuad: CARDINAL) ; +BEGIN + (* Firstly ensure that constant literals are declared. *) + TryDeclareConstant(tokenno, left) ; + TryDeclareConstant(tokenno, right) ; + IF IsConst (left) AND IsConst (right) + THEN + IF IsValueSolved (left) AND IsValueSolved (right) + THEN + IF IsBooleanRelOpPattern (quad) + THEN + FoldBooleanRelopPattern (p, quad) ELSE - SubQuad (quad) - END + (* We can take advantage of the known values and evaluate the condition. *) + PushValue (left) ; + PushValue (right) ; + IF NotEqu (tokenno) + THEN + PutQuad (quad, GotoOp, NulSym, NulSym, destQuad) + ELSE + SubQuad (quad) + END + END ; + NoChange := FALSE END END -END FoldIfNotIn ; +END FoldIfNotEqu ; (* @@ -6840,50 +7160,68 @@ END CodeIfSetLess ; (* - CodeIfLess - codes the quadruple if op1 < op2 then goto op3 + PerformCodeIfLess - codes the quadruple if op1 < op2 then goto op3 *) -PROCEDURE CodeIfLess (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfLess (quad: CARDINAL) ; VAR tl, tr : Tree ; - location: location_t ; -BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - IF IsConst(op1) AND IsConst(op2) - THEN - PushValue(op1) ; - PushValue(op2) ; + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + GetQuadOtok (quad, combined, op, + left, right, dest, overflow, + constExpr, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + + IF IsConst(left) AND IsConst(right) + THEN + PushValue(left) ; + PushValue(right) ; IF Less(CurrentQuadToken) THEN - BuildGoto(location, string(CreateLabelName(op3))) + BuildGoto(location, string(CreateLabelName(dest))) ELSE - (* fall through *) + (* Fall through. *) END - ELSIF IsConstSet(op1) OR (IsVar(op1) AND IsSet(SkipType(GetType(op1)))) OR - IsConstSet(op2) OR (IsVar(op2) AND IsSet(SkipType(GetType(op2)))) + ELSIF IsConstSet(left) OR (IsVar(left) AND IsSet(SkipType(GetType(left)))) OR + IsConstSet(right) OR (IsVar(right) AND IsSet(SkipType(GetType(right)))) THEN - CodeIfSetLess(quad, op1, op2, op3) + CodeIfSetLess(quad, left, right, dest) ELSE - IF IsComposite(GetType(op1)) OR IsComposite(GetType(op2)) + IF IsComposite(GetType(left)) OR IsComposite(GetType(right)) THEN - MetaErrorT2 (CurrentQuadToken, + MetaErrorT2 (combined, 'comparison tests between composite types not allowed {%1Eatd} and {%2atd}', - op1, op2) + left, right) ELSE - ConvertBinaryOperands(location, - tl, tr, - ComparisonMixTypes (SkipType (GetType (op1)), - SkipType (GetType (op2)), - CurrentQuadToken), - op1, op2) ; - DoJump(location, - BuildLessThan(location, tl, tr), NIL, string(CreateLabelName(op3))) + ConvertBinaryOperands (location, + tl, tr, + ComparisonMixTypes (SkipType (GetType (left)), + SkipType (GetType (right)), + combined), + left, right) ; + DoJump (location, + BuildLessThan (location, tl, tr), NIL, string (CreateLabelName (dest))) END END +END PerformCodeIfLess ; + + +(* + CodeIfLess - codes the quadruple if op1 < op2 then goto op3 +*) + +PROCEDURE CodeIfLess (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, FALSE) + THEN + PerformCodeIfLess (quad) + END END CodeIfLess ; @@ -6935,51 +7273,65 @@ END CodeIfSetGre ; (* - CodeIfGre - codes the quadruple if op1 > op2 then goto op3 + PerformCodeIfGre - codes the quadruple if op1 > op2 then goto op3 *) -PROCEDURE CodeIfGre (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfGre (quad: CARDINAL) ; VAR tl, tr : Tree ; - location: location_t ; -BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - DeclareConstructor(CurrentQuadToken, quad, op1) ; - DeclareConstructor(CurrentQuadToken, quad, op2) ; - IF IsConst(op1) AND IsConst(op2) - THEN - PushValue(op1) ; - PushValue(op2) ; - IF Gre(CurrentQuadToken) - THEN - BuildGoto(location, string(CreateLabelName(op3))) + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + GetQuadOtok (quad, combined, op, + left, right, dest, overflow, constExpr, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + IF IsConst(left) AND IsConst(right) + THEN + PushValue(left) ; + PushValue(right) ; + IF Gre(combined) + THEN + BuildGoto(location, string(CreateLabelName(dest))) ELSE (* fall through *) END - ELSIF IsConstSet(op1) OR (IsVar(op1) AND IsSet(SkipType(GetType(op1)))) OR - IsConstSet(op2) OR (IsVar(op2) AND IsSet(SkipType(GetType(op2)))) + ELSIF IsConstSet(left) OR (IsVar(left) AND IsSet(SkipType(GetType(left)))) OR + IsConstSet(right) OR (IsVar(right) AND IsSet(SkipType(GetType(right)))) THEN - CodeIfSetGre(quad, op1, op2, op3) + CodeIfSetGre(quad, left, right, dest) ELSE - IF IsComposite(GetType(op1)) OR IsComposite(GetType(op2)) + IF IsComposite(GetType(left)) OR IsComposite(GetType(right)) THEN - MetaErrorT2 (CurrentQuadToken, + MetaErrorT2 (combined, 'comparison tests between composite types not allowed {%1Eatd} and {%2atd}', - op1, op2) + left, right) ELSE ConvertBinaryOperands(location, tl, tr, - ComparisonMixTypes (SkipType (GetType (op1)), - SkipType (GetType (op2)), - CurrentQuadToken), - op1, op2) ; - DoJump(location, BuildGreaterThan(location, tl, tr), NIL, string(CreateLabelName(op3))) + ComparisonMixTypes (SkipType (GetType (left)), + SkipType (GetType (right)), + combined), + left, right) ; + DoJump(location, BuildGreaterThan(location, tl, tr), NIL, string(CreateLabelName(dest))) END END +END PerformCodeIfGre ; + + +(* + CodeIfGre - codes the quadruple if op1 > op2 then goto op3 +*) + +PROCEDURE CodeIfGre (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, FALSE) + THEN + PerformCodeIfGre (quad) + END END CodeIfGre ; @@ -7031,51 +7383,67 @@ END CodeIfSetLessEqu ; (* - CodeIfLessEqu - codes the quadruple if op1 <= op2 then goto op3 + PerformCodeIfLessEqu - codes the quadruple if op1 <= op2 then goto op3 *) -PROCEDURE CodeIfLessEqu (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfLessEqu (quad: CARDINAL) ; VAR tl, tr : Tree ; - location: location_t ; -BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - DeclareConstructor(CurrentQuadToken, quad, op1) ; - DeclareConstructor(CurrentQuadToken, quad, op2) ; - IF IsConst(op1) AND IsConst(op2) - THEN - PushValue(op1) ; - PushValue(op2) ; - IF LessEqu(CurrentQuadToken) - THEN - BuildGoto(location, string(CreateLabelName(op3))) + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + GetQuadOtok (quad, combined, op, + left, right, dest, + overflow, constExpr, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + IF IsConst(left) AND IsConst(right) + THEN + PushValue(left) ; + PushValue(right) ; + IF LessEqu(combined) + THEN + BuildGoto(location, string(CreateLabelName(dest))) ELSE (* fall through *) END - ELSIF IsConstSet(op1) OR (IsVar(op1) AND IsSet(SkipType(GetType(op1)))) OR - IsConstSet(op2) OR (IsVar(op2) AND IsSet(SkipType(GetType(op2)))) + ELSIF IsConstSet (left) OR (IsVar (left) AND IsSet (SkipType (GetType (left)))) OR + IsConstSet (right) OR (IsVar (right) AND IsSet (SkipType (GetType (right)))) THEN - CodeIfSetLessEqu(quad, op1, op2, op3) + CodeIfSetLessEqu (quad, left, right, dest) ELSE - IF IsComposite(GetType(op1)) OR IsComposite(GetType(op2)) + IF IsComposite (GetType (left)) OR IsComposite (GetType (right)) THEN - MetaErrorT2 (CurrentQuadToken, + MetaErrorT2 (combined, 'comparison tests between composite types not allowed {%1Eatd} and {%2atd}', - op1, op2) + left, right) ELSE - ConvertBinaryOperands(location, - tl, tr, - ComparisonMixTypes (SkipType (GetType (op1)), - SkipType (GetType (op2)), - CurrentQuadToken), - op1, op2) ; - DoJump(location, BuildLessThanOrEqual(location, tl, tr), NIL, string(CreateLabelName(op3))) + ConvertBinaryOperands (location, + tl, tr, + ComparisonMixTypes (SkipType (GetType (left)), + SkipType (GetType (right)), + combined), + left, right) ; + DoJump (location, BuildLessThanOrEqual (location, tl, tr), + NIL, string (CreateLabelName (dest))) END END +END PerformCodeIfLessEqu ; + + +(* + CodeIfLessEqu - codes the quadruple if op1 <= op2 then goto op3 +*) + +PROCEDURE CodeIfLessEqu (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, FALSE) + THEN + PerformCodeIfLessEqu (quad) + END END CodeIfLessEqu ; @@ -7127,51 +7495,66 @@ END CodeIfSetGreEqu ; (* - CodeIfGreEqu - codes the quadruple if op1 >= op2 then goto op3 + PerformCodeIfGreEqu - codes the quadruple if op1 >= op2 then goto op3 *) -PROCEDURE CodeIfGreEqu (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfGreEqu (quad: CARDINAL) ; VAR tl, tr: Tree ; - location: location_t ; -BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - DeclareConstructor(CurrentQuadToken, quad, op1) ; - DeclareConstructor(CurrentQuadToken, quad, op2) ; - IF IsConst(op1) AND IsConst(op2) - THEN - PushValue(op1) ; - PushValue(op2) ; - IF GreEqu(CurrentQuadToken) - THEN - BuildGoto(location, string(CreateLabelName(op3))) + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + GetQuadOtok (quad, combined, op, + left, right, dest, + overflow, constExpr, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + IF IsConst(left) AND IsConst(right) + THEN + PushValue(left) ; + PushValue(right) ; + IF GreEqu(combined) + THEN + BuildGoto(location, string(CreateLabelName(dest))) ELSE (* fall through *) END - ELSIF IsConstSet(op1) OR (IsVar(op1) AND IsSet(SkipType(GetType(op1)))) OR - IsConstSet(op2) OR (IsVar(op2) AND IsSet(SkipType(GetType(op2)))) + ELSIF IsConstSet(left) OR (IsVar(left) AND IsSet(SkipType(GetType(left)))) OR + IsConstSet(right) OR (IsVar(right) AND IsSet(SkipType(GetType(right)))) THEN - CodeIfSetGreEqu(quad, op1, op2, op3) + CodeIfSetGreEqu(quad, left, right, dest) ELSE - IF IsComposite(GetType(op1)) OR IsComposite(GetType(op2)) + IF IsComposite(GetType(left)) OR IsComposite(GetType(right)) THEN - MetaErrorT2 (CurrentQuadToken, + MetaErrorT2 (combined, 'comparison tests between composite types not allowed {%1Eatd} and {%2atd}', - op1, op2) + left, right) ELSE ConvertBinaryOperands(location, tl, tr, - ComparisonMixTypes (SkipType (GetType (op1)), - SkipType (GetType (op2)), - CurrentQuadToken), - op1, op2) ; - DoJump(location, BuildGreaterThanOrEqual(location, tl, tr), NIL, string(CreateLabelName(op3))) + ComparisonMixTypes (SkipType (GetType (left)), + SkipType (GetType (right)), + combined), + left, right) ; + DoJump(location, BuildGreaterThanOrEqual(location, tl, tr), NIL, string(CreateLabelName(dest))) END END +END PerformCodeIfGreEqu ; + + +(* + CodeIfGreEqu - codes the quadruple if op1 >= op2 then goto op3 +*) + +PROCEDURE CodeIfGreEqu (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, FALSE) + THEN + PerformCodeIfGreEqu (quad) + END END CodeIfGreEqu ; @@ -7299,101 +7682,175 @@ END ComparisonMixTypes ; (* - CodeIfEqu - codes the quadruple if op1 = op2 then goto op3 + PerformCodeIfEqu - *) -PROCEDURE CodeIfEqu (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfEqu (quad: CARDINAL) ; VAR - tl, tr: Tree ; - location : location_t ; + tl, tr : Tree ; + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - DeclareConstructor(CurrentQuadToken, quad, op1) ; - DeclareConstructor(CurrentQuadToken, quad, op2) ; - IF IsConst(op1) AND IsConst(op2) + GetQuadOtok (quad, combined, op, + left, right, dest, + overflow, constExpr, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + IF IsConst (left) AND IsConst (right) THEN - PushValue(op1) ; - PushValue(op2) ; - IF Equ(CurrentQuadToken) + PushValue (left) ; + PushValue (right) ; + IF Equ (combined) THEN - BuildGoto(location, string(CreateLabelName(op3))) + BuildGoto (location, string (CreateLabelName (dest))) ELSE - (* fall through *) + (* Fall through. *) END - ELSIF IsConstSet(op1) OR (IsVar(op1) AND IsSet(SkipType(GetType(op1)))) OR - IsConstSet(op2) OR (IsVar(op2) AND IsSet(SkipType(GetType(op2)))) + ELSIF IsConstSet (left) OR (IsVar (left) AND IsSet (SkipType (GetType (left)))) OR + IsConstSet (right) OR (IsVar (right) AND IsSet (SkipType (GetType (right)))) THEN - CodeIfSetEqu(quad, op1, op2, op3) + CodeIfSetEqu (quad, left, right, dest) ELSE - IF IsComposite(GetType(op1)) OR IsComposite(GetType(op2)) + IF IsComposite (GetType (left)) OR IsComposite (GetType (right)) THEN - MetaErrorT2 (CurrentQuadToken, + MetaErrorT2 (combined, 'equality tests between composite types not allowed {%1Eatd} and {%2atd}', - op1, op2) + left, right) ELSE - ConvertBinaryOperands(location, - tl, tr, - ComparisonMixTypes (SkipType (GetType (op1)), - SkipType (GetType (op2)), - CurrentQuadToken), - op1, op2) ; - DoJump(location, BuildEqualTo(location, tl, tr), NIL, string(CreateLabelName(op3))) + ConvertBinaryOperands (location, + tl, tr, + ComparisonMixTypes (SkipType (GetType (left)), + SkipType (GetType (right)), + combined), + left, right) ; + DoJump (location, BuildEqualTo (location, tl, tr), NIL, + string (CreateLabelName (dest))) END END -END CodeIfEqu ; +END PerformCodeIfEqu ; (* - CodeIfNotEqu - codes the quadruple if op1 # op2 then goto op3 + PerformCodeIfNotEqu - *) -PROCEDURE CodeIfNotEqu (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfNotEqu (quad: CARDINAL) ; VAR - tl, tr : Tree ; - location: location_t ; + tl, tr : Tree ; + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - DeclareConstructor(CurrentQuadToken, quad, op1) ; - DeclareConstructor(CurrentQuadToken, quad, op2) ; - IF IsConst(op1) AND IsConst(op2) + (* Ensure that any remaining undeclared constant literal is declared. *) + GetQuadOtok (quad, combined, op, + left, right, dest, + constExpr, overflow, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + IF IsConst (left) AND IsConst (right) THEN - PushValue(op1) ; - PushValue(op2) ; - IF NotEqu(CurrentQuadToken) + PushValue (left) ; + PushValue (right) ; + IF NotEqu (combined) THEN - BuildGoto(location, string(CreateLabelName(op3))) + BuildGoto (location, string (CreateLabelName (dest))) ELSE - (* fall through *) + (* Fall through. *) END - ELSIF IsConstSet(op1) OR (IsVar(op1) AND IsSet(SkipType(GetType(op1)))) OR - IsConstSet(op2) OR (IsVar(op2) AND IsSet(SkipType(GetType(op2)))) + ELSIF IsConstSet (left) OR (IsVar (left) AND IsSet (SkipType (GetType (left)))) OR + IsConstSet (right) OR (IsVar (right) AND IsSet (SkipType (GetType (right)))) THEN - CodeIfSetNotEqu (op1, op2, op3) + CodeIfSetNotEqu (left, right, dest) ELSE - IF IsComposite(op1) OR IsComposite(op2) + IF IsComposite (GetType (left)) OR IsComposite (GetType (right)) THEN - MetaErrorT2 (CurrentQuadToken, + MetaErrorT2 (combined, 'inequality tests between composite types not allowed {%1Eatd} and {%2atd}', - op1, op2) + left, right) ELSE - ConvertBinaryOperands(location, - tl, tr, - ComparisonMixTypes (SkipType (GetType (op1)), - SkipType (GetType (op2)), - CurrentQuadToken), - op1, op2) ; - DoJump(location, - BuildNotEqualTo(location, tl, tr), NIL, string(CreateLabelName(op3))) + ConvertBinaryOperands (location, + tl, tr, + ComparisonMixTypes (SkipType (GetType (left)), + SkipType (GetType (right)), + combined), + left, right) ; + DoJump (location, BuildNotEqualTo (location, tl, tr), NIL, + string (CreateLabelName (dest))) END END +END PerformCodeIfNotEqu ; + + +(* + IsValidExpressionRelOp - declare left and right constants (if they are not already declared). + Check whether left and right are expression compatible. +*) + +PROCEDURE IsValidExpressionRelOp (quad: CARDINAL; isin: BOOLEAN) : BOOLEAN ; +CONST + Verbose = FALSE ; +VAR + lefttype, righttype, + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + (* Ensure that any remaining undeclared constant literal is declared. *) + GetQuadOtok (quad, combined, op, + left, right, dest, + constExpr, overflow, + leftpos, rightpos, destpos) ; + DeclareConstant (leftpos, left) ; + DeclareConstant (rightpos, right) ; + DeclareConstructor (leftpos, quad, left) ; + DeclareConstructor (rightpos, quad, right) ; + lefttype := GetType (left) ; + righttype := GetType (right) ; + IF ExpressionTypeCompatible (combined, "", left, right, + StrictTypeChecking, isin) + THEN + RETURN TRUE + ELSE + IF Verbose + THEN + MetaErrorT2 (combined, + 'expression mismatch between {%1Etad} and {%2tad} seen during comparison', + left, right) + END ; + RETURN FALSE + END +END IsValidExpressionRelOp ; + + +(* + CodeIfEqu - codes the quadruple if op1 = op2 then goto op3 +*) + +PROCEDURE CodeIfEqu (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, FALSE) + THEN + PerformCodeIfEqu (quad) + END +END CodeIfEqu ; + + +(* + CodeIfNotEqu - codes the quadruple if op1 # op2 then goto op3 +*) + +PROCEDURE CodeIfNotEqu (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, FALSE) + THEN + PerformCodeIfNotEqu (quad) + END END CodeIfNotEqu ; @@ -7479,10 +7936,10 @@ END BuildIfNotVarInConstValue ; (* - CodeIfIn - code the quadruple: if op1 in op2 then goto op3 + PerformCodeIfIn - code the quadruple: if op1 in op2 then goto op3 *) -PROCEDURE CodeIfIn (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfIn (quad: CARDINAL) ; VAR low, high : CARDINAL ; @@ -7490,44 +7947,47 @@ VAR hightree, offset : Tree ; fieldno : INTEGER ; - location: location_t ; -BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - DeclareConstructor(CurrentQuadToken, quad, op1) ; - DeclareConstructor(CurrentQuadToken, quad, op2) ; - IF IsConst(op1) AND IsConst(op2) + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + (* Ensure that any remaining undeclared constant literal is declared. *) + GetQuadOtok (quad, combined, op, + left, right, dest, + constExpr, overflow, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + IF IsConst(left) AND IsConst(right) THEN InternalError ('should not get to here (if we do we should consider calling FoldIfIn)') ELSIF CheckElementSetTypes (quad) THEN - IF IsConst(op1) + IF IsConst(left) THEN - fieldno := GetFieldNo(CurrentQuadToken, op1, GetType(op2), offset) ; + fieldno := GetFieldNo(combined, left, GetType(right), offset) ; IF fieldno>=0 THEN - PushValue(op1) ; + PushValue(left) ; PushIntegerTree(offset) ; - ConvertToType(GetType(op1)) ; + ConvertToType(GetType(left)) ; Sub ; BuildIfConstInVar(location, - Mod2Gcc(SkipType(GetType(op2))), - Mod2Gcc(op2), PopIntegerTree(), - GetMode(op2)=LeftValue, fieldno, - string(CreateLabelName(op3))) + Mod2Gcc(SkipType(GetType(right))), + Mod2Gcc(right), PopIntegerTree(), + GetMode(right)=LeftValue, fieldno, + string(CreateLabelName(dest))) ELSE - MetaErrorT1 (CurrentQuadToken, 'bit exceeded the range of set {%1Eatd}', op1) + MetaErrorT1 (combined, 'bit exceeded the range of set {%1Eatd}', left) END - ELSIF IsConst(op2) + ELSIF IsConst(right) THEN (* builds a cascaded list of if statements *) - PushValue(op2) ; - BuildIfVarInConstValue(location, CurrentQuadToken, GetValue(CurrentQuadToken), op1, op3) + PushValue(right) ; + BuildIfVarInConstValue(location, combined, GetValue(combined), left, dest) ELSE - GetSetLimits(SkipType(GetType(op2)), low, high) ; + GetSetLimits(SkipType(GetType(right)), low, high) ; PushValue(low) ; lowtree := PopIntegerTree() ; @@ -7535,21 +7995,21 @@ BEGIN hightree := PopIntegerTree() ; BuildIfVarInVar(location, - Mod2Gcc(SkipType(GetType(op2))), - Mod2Gcc(op2), Mod2Gcc(op1), - GetMode(op2)=LeftValue, + Mod2Gcc(SkipType(GetType(right))), + Mod2Gcc(right), Mod2Gcc(left), + GetMode(right)=LeftValue, lowtree, hightree, - string(CreateLabelName(op3))) + string(CreateLabelName(dest))) END END -END CodeIfIn ; +END PerformCodeIfIn ; (* - CodeIfNotIn - code the quadruple: if not (op1 in op2) then goto op3 + PerformCodeIfNotIn - code the quadruple: if not (op1 in op2) then goto op3 *) -PROCEDURE CodeIfNotIn (quad: CARDINAL; op1, op2, op3: CARDINAL) ; +PROCEDURE PerformCodeIfNotIn (quad: CARDINAL) ; VAR low, high : CARDINAL ; @@ -7557,44 +8017,47 @@ VAR hightree, offset : Tree ; fieldno : INTEGER ; - location: location_t ; -BEGIN - location := TokenToLocation(CurrentQuadToken) ; - - (* firstly ensure that any constant literal is declared *) - DeclareConstant(CurrentQuadToken, op1) ; - DeclareConstant(CurrentQuadToken, op2) ; - DeclareConstructor(CurrentQuadToken, quad, op1) ; - DeclareConstructor(CurrentQuadToken, quad, op2) ; - IF IsConst(op1) AND IsConst(op2) + location : location_t ; + left, right, dest, combined, + leftpos, rightpos, destpos : CARDINAL ; + constExpr, overflow : BOOLEAN ; + op : QuadOperator ; +BEGIN + (* Ensure that any remaining undeclared constant literal is declared. *) + GetQuadOtok (quad, combined, op, + left, right, dest, + overflow, constExpr, + leftpos, rightpos, destpos) ; + location := TokenToLocation (combined) ; + IF IsConst(left) AND IsConst(right) THEN InternalError ('should not get to here (if we do we should consider calling FoldIfIn)') ELSIF CheckElementSetTypes (quad) THEN - IF IsConst(op1) + IF IsConst(left) THEN - fieldno := GetFieldNo(CurrentQuadToken, op1, SkipType(GetType(op2)), offset) ; + fieldno := GetFieldNo(combined, left, SkipType(GetType(right)), offset) ; IF fieldno>=0 THEN - PushValue(op1) ; + PushValue(left) ; PushIntegerTree(offset) ; - ConvertToType(GetType(op1)) ; + ConvertToType(GetType(left)) ; Sub ; BuildIfNotConstInVar(location, - Mod2Gcc(SkipType(GetType(op2))), - Mod2Gcc(op2), PopIntegerTree(), - GetMode(op2)=LeftValue, fieldno, - string(CreateLabelName(op3))) + Mod2Gcc(SkipType(GetType(right))), + Mod2Gcc(right), PopIntegerTree(), + GetMode(right)=LeftValue, fieldno, + string(CreateLabelName(dest))) ELSE - MetaErrorT1 (CurrentQuadToken, 'bit exceeded the range of set {%1Eatd}', op2) + MetaErrorT1 (combined, 'bit exceeded the range of set {%1Eatd}', right) END - ELSIF IsConst(op2) + ELSIF IsConst(right) THEN (* builds a cascaded list of if statements *) - PushValue(op2) ; - BuildIfNotVarInConstValue(quad, GetValue(CurrentQuadToken), op1, op3) + PushValue(right) ; + BuildIfNotVarInConstValue(quad, GetValue(combined), left, dest) ELSE - GetSetLimits(SkipType(GetType(op2)), low, high) ; + GetSetLimits(SkipType(GetType(right)), low, high) ; PushValue(low) ; lowtree := PopIntegerTree() ; @@ -7602,13 +8065,39 @@ BEGIN hightree := PopIntegerTree() ; BuildIfNotVarInVar(location, - Mod2Gcc(SkipType(GetType(op2))), - Mod2Gcc(op2), Mod2Gcc(op1), - GetMode(op2)=LeftValue, + Mod2Gcc(SkipType(GetType(right))), + Mod2Gcc(right), Mod2Gcc(left), + GetMode(right)=LeftValue, lowtree, hightree, - string(CreateLabelName(op3))) + string(CreateLabelName(dest))) END END +END PerformCodeIfNotIn ; + + +(* + CodeIfIn - code the quadruple: if op1 in op2 then goto op3 +*) + +PROCEDURE CodeIfIn (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, TRUE) + THEN + PerformCodeIfIn (quad) + END +END CodeIfIn ; + + +(* + CodeIfNotIn - code the quadruple: if not (op1 in op2) then goto op3 +*) + +PROCEDURE CodeIfNotIn (quad: CARDINAL) ; +BEGIN + IF IsValidExpressionRelOp (quad, TRUE) + THEN + PerformCodeIfNotIn (quad) + END END CodeIfNotIn ; @@ -7653,6 +8142,7 @@ END CodeIndrX ; PROCEDURE CodeXIndr (quad: CARDINAL) ; VAR + constExpr, overflowChecking: BOOLEAN ; op : QuadOperator ; tokenno, @@ -7667,7 +8157,8 @@ VAR newstr : Tree ; location : location_t ; BEGIN - GetQuadOtok (quad, xindrpos, op, left, type, right, overflowChecking, + GetQuadOtok (quad, xindrpos, op, left, type, right, + overflowChecking, constExpr, leftpos, typepos, rightpos) ; tokenno := MakeVirtualTok (xindrpos, leftpos, rightpos) ; location := TokenToLocation (tokenno) ; diff --git a/gcc/m2/gm2-compiler/M2LangDump.def b/gcc/m2/gm2-compiler/M2LangDump.def new file mode 100644 index 000000000000..5d4c9b600a10 --- /dev/null +++ b/gcc/m2/gm2-compiler/M2LangDump.def @@ -0,0 +1,102 @@ +(* M2LangDump.def provides support routines for the -flang-dump. + +Copyright (C) 2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 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. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Modula-2; see the file COPYING3. If not see +. *) + +DEFINITION MODULE M2LangDump ; + +FROM m2tree IMPORT Tree ; +FROM DynamicStrings IMPORT String ; +FROM FIO IMPORT File ; + + +(* + IsDumpRequiredTree - return TRUE if the gcc tree should be dumped. + If no filter is specified it will always return default. +*) + +PROCEDURE IsDumpRequiredTree (tree: Tree; default: BOOLEAN) : BOOLEAN ; + + +(* + IsDumpRequired - return TRUE if symbol sym should be dumped + according to the rules of the filter. + If no filter is specified it will always return default. + The filter is a comma separated list. Each element + of the list can specify a symbol three ways. + Firstly by DECL name for example: m2pim_NumberIO_HexToStr + Secondly by qualified scope: [pathname.]NumberIO.HexToStr + Thirdly by filename and scope: NumberIO.mod:HexToStr +*) + +PROCEDURE IsDumpRequired (sym: CARDINAL; default: BOOLEAN) : BOOLEAN ; + + +(* + MakeQuadTemplate - return a template for the quad dump file. +*) + +PROCEDURE MakeQuadTemplate () : String ; + + +(* + MakeGimpleTemplate - return a template for the gimple dump file and assign + len to the max number of characters required to complete + a template. +*) + +PROCEDURE MakeGimpleTemplate (VAR len: CARDINAL) : String ; + + +(* + GetDumpFile - return the dump output file. +*) + +PROCEDURE GetDumpFile () : File ; + + +(* + CreateDumpQuad - create the dump file for a quad dump. +*) + +PROCEDURE CreateDumpQuad (title: ARRAY OF CHAR) ; + + +(* + CloseDumpQuad - close the dump output file. +*) + +PROCEDURE CloseDumpQuad ; + + +(* + CreateDumpDecl - create the dump file for a decl dump. +*) + +PROCEDURE CreateDumpDecl (title: ARRAY OF CHAR) ; + + +(* + CloseDumpDecl - close the dump output file. +*) + +PROCEDURE CloseDumpDecl ; + + +END M2LangDump. diff --git a/gcc/m2/gm2-compiler/M2LangDump.mod b/gcc/m2/gm2-compiler/M2LangDump.mod new file mode 100644 index 000000000000..17fab86bc0b1 --- /dev/null +++ b/gcc/m2/gm2-compiler/M2LangDump.mod @@ -0,0 +1,802 @@ +(* M2LangDump.mod provides support routines for the -flang-dump. + +Copyright (C) 2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 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. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Modula-2; see the file COPYING3. If not see +. *) + +IMPLEMENTATION MODULE M2LangDump ; + +FROM SYSTEM IMPORT ADDRESS ; + +FROM DynamicStrings IMPORT String, Length, InitString, Mark, Slice, EqualArray, + InitStringCharStar, ConCatChar, ConCat, KillString, + Dup, string, char, Index, ReverseIndex, RIndex, Equal, + PushAllocation, PopAllocationExemption ; + +FROM SymbolTable IMPORT NulSym, + GetSymName, GetLibName, + GetScope, GetModuleScope, GetMainModule, GetDeclaredMod, + GetLocalSym, + IsInnerModule, + IsVar, + IsProcedure, + IsModule, IsDefImp, + IsExportQualified, IsExportUnQualified, + IsExported, IsPublic, IsExtern, IsMonoName, + IsDefinitionForC ; + +FROM M2Options IMPORT GetM2DumpFilter, GetDumpDir, GetDumpLangQuadFilename, + GetDumpLangDeclFilename, GetDumpLangGimpleFilename ; + +FROM M2GCCDeclare IMPORT IncludeDumpSymbol ; +FROM FormatStrings IMPORT Sprintf0, Sprintf1 ; +FROM NameKey IMPORT Name, GetKey, MakeKey, makekey, KeyToCharStar, NulName ; +FROM SymbolConversion IMPORT Gcc2Mod, Mod2Gcc ; +FROM M2AsmUtil IMPORT GetFullScopeAsmName ; +FROM M2LexBuf IMPORT FindFileNameFromToken ; +FROM M2Printf IMPORT fprintf0, fprintf1, printf0, printf1, printf2 ; +FROM M2Error IMPORT InternalError ; +FROM M2Batch IMPORT Get ; +FROM StrLib IMPORT StrLen ; +FROM libc IMPORT printf ; + +IMPORT FIO, SFIO, DynamicStrings, StdIO ; + + +CONST + Debugging = FALSE ; + +VAR + outputFile : FIO.File ; + declActive, + quadActive, + mustClose : BOOLEAN ; + NoOfQuadDumps, + NoOfDeclDumps: CARDINAL ; + + +(* + Assert - call InternalError is NOT value. +*) + +PROCEDURE Assert (value: BOOLEAN) ; +BEGIN + IF NOT value + THEN + InternalError ('assert failed in M2LangDump') + END +END Assert ; + + +(* + DumpWrite - writes a single ch to the dump output. +*) + +PROCEDURE DumpWrite (ch: CHAR) ; +BEGIN + FIO.WriteChar (outputFile, ch) +END DumpWrite ; + + +(* + CloseDump - close the dump file and pop the default write procedure. +*) + +PROCEDURE CloseDump ; +BEGIN + IF mustClose + THEN + FIO.Close (outputFile) ; + mustClose := FALSE + ELSE + FIO.FlushBuffer (outputFile) + END ; + StdIO.PopOutput ; + outputFile := FIO.StdOut ; +END CloseDump ; + + +(* + OpenDump - open filename as a dump file. The filename '-' is treated as stdout. + It pushes a write procedure to StdIO. +*) + +PROCEDURE OpenDump (filename: String; no: CARDINAL) ; +BEGIN + IF DynamicStrings.EqualArray (filename, '-') + THEN + mustClose := FALSE ; + outputFile := FIO.StdOut + ELSE + filename := Sprintf1 (filename, no) ; + outputFile := SFIO.OpenToWrite (filename) ; + mustClose := FIO.IsNoError (outputFile) + END ; + filename := KillString (filename) ; + StdIO.PushOutput (DumpWrite) +END OpenDump ; + + +(* + CloseDumpDecl - close the dump output file. +*) + +PROCEDURE CloseDumpDecl ; +BEGIN + IF declActive + THEN + CloseDump ; + declActive := FALSE + END +END CloseDumpDecl ; + + +(* + AddRuleTextDump - +*) + +PROCEDURE AddRuleTextDump (rule: String) ; +BEGIN + +END AddRuleTextDump ; + + +(* + AddRuleScopeQualidentDump - +*) + +PROCEDURE AddRuleScopeQualidentDump (rule: String; dot: INTEGER; modsym: CARDINAL) ; +VAR + modstr, + idstr : String ; + start : INTEGER ; + sym : CARDINAL ; +BEGIN + start := dot + 1 ; + dot := Index (rule, '.', start) ; + WHILE dot > 0 DO + modstr := Slice (rule, start, dot) ; + modsym := GetLocalSym (modsym, makekey (string (modstr))) ; + IF (modsym # NulSym) AND IsModule (modsym) + THEN + start := dot + 1 ; + dot := Index (rule, '.', start) + ELSE + modstr := KillString (modstr) ; + RETURN + END + END ; + idstr := Slice (rule, start, 0) ; + sym := GetLocalSym (modsym, makekey (string (idstr))) ; + IF sym # NulSym + THEN + IncludeDumpSymbol (sym) + END +END AddRuleScopeQualidentDump ; + + +(* + AddRuleScopeDump - +*) + +PROCEDURE AddRuleScopeDump (rule: String) ; +VAR + modsym: CARDINAL ; + libstr, + modstr: String ; + start, + dot : INTEGER ; +BEGIN + dot := Index (rule, '.', 0) ; + Assert (dot # -1) ; + libstr := NIL ; + modstr := Slice (rule, 0, dot) ; + modsym := Get (makekey (string (modstr))) ; + IF modsym = NulSym + THEN + libstr := modstr ; + start := dot + 1 ; + dot := Index (rule, '.', start) ; + IF dot > 0 + THEN + modstr := Slice (rule, start, dot) ; + modsym := Get (makekey (string (modstr))) ; + IF (modsym # NulSym) AND (makekey (string (libstr)) = GetLibName (modsym)) + THEN + AddRuleScopeQualidentDump (rule, dot, modsym) + END + END + ELSE + AddRuleScopeQualidentDump (rule, dot, modsym) + END +END AddRuleScopeDump ; + + +(* + AddRuleFilenameDump - +*) + +PROCEDURE AddRuleFilenameDump (rule: String) ; +BEGIN + +END AddRuleFilenameDump ; + + +(* + AddRuleSymToDump - +*) + +PROCEDURE AddRuleSymToDump (rule: String) ; +BEGIN + IF Index (rule, ':', 0) # -1 + THEN + (* Filename and scope rule. *) + AddRuleFilenameDump (rule) + ELSIF Index (rule, '.', 0) # -1 + THEN + (* Modula-2 scoping tests. *) + AddRuleScopeDump (rule) + ELSE + (* Text decl tests. *) + AddRuleTextDump (rule) + END +END AddRuleSymToDump ; + + +(* + AddFilterListToDumpWatch - +*) + +PROCEDURE AddFilterListToDumpWatch (filter: ADDRESS) ; +VAR + rule, + full : String ; + start, + i : INTEGER ; +BEGIN + full := InitStringCharStar (filter) ; + start := 0 ; + REPEAT + i := Index (full, ',', start) ; + IF i = -1 + THEN + rule := Slice (full, start, 0) + ELSE + rule := Slice (full, start, i) + END ; + AddRuleSymToDump (rule) ; + rule := KillString (rule) ; + start := i+1 ; + UNTIL i = -1 ; + full := KillString (full) ; +END AddFilterListToDumpWatch ; + + +(* + CreateDumpTitle - creates the underlined title. +*) + +PROCEDURE CreateDumpTitle (title: ARRAY OF CHAR) ; +VAR + len, + text, + i : CARDINAL ; + s : String ; +BEGIN + s := Sprintf0 (Mark (InitString (title))) ; + s := KillString (SFIO.WriteS (GetDumpFile (), s)) ; + len := StrLen (title) ; + i := 0 ; + text := 0 ; + WHILE i < len DO + IF title[i] = '\' + THEN + INC (i, 2) + ELSE + INC (i) ; + INC (text) + END + END ; + s := DynamicStrings.Mult (Mark (InitString ('=')), text) ; + s := KillString (SFIO.WriteS (GetDumpFile (), s)) ; + fprintf0 (GetDumpFile (), '\n'); +END CreateDumpTitle ; + + +(* + CreateDumpDecl - create the dump file for a decl dump. +*) + +PROCEDURE CreateDumpDecl (title: ARRAY OF CHAR) ; +BEGIN + IF GetM2DumpFilter () # NIL + THEN + Assert (NOT declActive) ; + Assert (NOT quadActive) ; + declActive := TRUE ; + INC (NoOfDeclDumps) ; + OpenDump (MakeDeclTemplate (), NoOfDeclDumps) ; + CreateDumpTitle (title) ; + AddFilterListToDumpWatch (GetM2DumpFilter ()) + END +END CreateDumpDecl ; + + +(* + CloseDumpQuad - close the dump output file. +*) + +PROCEDURE CloseDumpQuad ; +BEGIN + CloseDump ; + quadActive := FALSE +END CloseDumpQuad ; + + +(* + CreateDumpQuad - create the dump file for a quad dump. +*) + +PROCEDURE CreateDumpQuad (title: ARRAY OF CHAR) ; +BEGIN + Assert (NOT declActive) ; + Assert (NOT quadActive) ; + quadActive := TRUE ; + INC (NoOfQuadDumps) ; + OpenDump (MakeQuadTemplate (), NoOfQuadDumps) ; + CreateDumpTitle (title) +END CreateDumpQuad ; + + +(* + GetDumpFile - return the dump output file. +*) + +PROCEDURE GetDumpFile () : File ; +BEGIN + RETURN outputFile +END GetDumpFile ; + + +(* + IsDumpRequiredTree - return TRUE if the gcc tree should be dumped. +*) + +PROCEDURE IsDumpRequiredTree (tree: Tree; default: BOOLEAN) : BOOLEAN ; +VAR + sym: CARDINAL ; +BEGIN + sym := Gcc2Mod (tree) ; + IF sym = NulSym + THEN + RETURN default + ELSE + RETURN IsDumpRequired (sym, default) + END +END IsDumpRequiredTree ; + + +(* + IsDumpRequired - return TRUE if symbol sym should be dumped + according to the rules of the filter. + No filter specified will always return default. + The filter is a comma separated list. Each element + of the list can specify a symbol three ways. + Firstly by DECL name for example: m2pim_NumberIO_HexToStr + Secondly by qualified scope: [pathname.]NumberIO.HexToStr + Thirdly by filename and scope: NumberIO.mod:HexToStr +*) + +PROCEDURE IsDumpRequired (sym: CARDINAL; default: BOOLEAN) : BOOLEAN ; +VAR + filter: String ; +BEGIN + filter := GetM2DumpFilter () ; + IF filter = NIL + THEN + RETURN default + ELSE + RETURN Match (filter, sym) + END +END IsDumpRequired ; + + +(* + Match - return TRUE if sym matches any of the filter rules. +*) + +PROCEDURE Match (filter: ADDRESS; sym: CARDINAL) : BOOLEAN ; +VAR + result: BOOLEAN ; + rule, + full : String ; + start, + i : INTEGER ; +BEGIN + full := InitStringCharStar (filter) ; + start := 0 ; + REPEAT + i := Index (full, ',', start) ; + IF i = -1 + THEN + rule := Slice (full, start, 0) + ELSE + rule := Slice (full, start, i) + END ; + result := MatchRule (rule, sym) ; + rule := KillString (rule) ; + IF result + THEN + full := KillString (full) ; + RETURN TRUE + END ; + start := i+1 ; + UNTIL i = -1 ; + full := KillString (full) ; + RETURN FALSE +END Match ; + + +(* + MatchRule - return TRUE if rule matches sym. +*) + +PROCEDURE MatchRule (rule: String; sym: CARDINAL) : BOOLEAN ; +BEGIN + IF Index (rule, ':', 0) # -1 + THEN + (* Filename and scope qualification tests. *) + RETURN MatchRuleFilenameScope (rule, sym) + ELSIF Index (rule, '.', 0) # -1 + THEN + (* Modula-2 scoping tests. *) + RETURN MatchRuleScope (rule, sym) + ELSE + (* Text decl tests. *) + RETURN MatchRuleText (rule, sym) + END +END MatchRule ; + + +(* + MatchRuleFilenameScope - returns TRUE if rule contains filename.ext:qualident + and it matches sym. +*) + +PROCEDURE MatchRuleFilenameScope (rule: String; sym: CARDINAL) : BOOLEAN ; +VAR + rulefile, + symfile, + subrule : String ; +BEGIN + rulefile := Slice (rule, 0, Index (rule, ':', 0)) ; + (* Do not deallocate symfile. *) + symfile := FindFileNameFromToken (GetDeclaredMod (sym), 0) ; + IF TextMatch (rulefile, symfile) + THEN + subrule := Slice (rule, Index (rule, ':', 0) + 1, 0) ; + IF MatchRuleScope (subrule, sym) + THEN + subrule := KillString (subrule) ; + RETURN TRUE + END + END ; + rulefile := KillString (rulefile) ; + RETURN FALSE +END MatchRuleFilenameScope ; + + +(* + MatchRuleScope - returns TRUE if rule contains a [libname.]qualified.ident + and it matches sym. +*) + +PROCEDURE MatchRuleScope (rule: String; sym: CARDINAL) : BOOLEAN ; +VAR + i : INTEGER ; + name: Name ; +BEGIN + IF Debugging + THEN + name := GetSymName (sym) ; + printf2 ("MatchRuleScope (%s, %a)\n", rule, name) + END ; + (* Compare qualident right to left. *) + i := RIndex (rule, '.', 0) ; + IF i = -1 + THEN + (* No qualification, just the ident. *) + RETURN MatchRuleIdent (rule, sym) + ELSE + RETURN MatchRuleQualident (rule, Slice (rule, i+1, 0), i, sym) + END +END MatchRuleScope ; + + +(* + MatchRuleQualident - returns TRUE if rule matches qualified sym. + PostCondition: subrule will be deallocated upon exit. + TRUE is returned if rule matches qualified sym. +*) + +PROCEDURE MatchRuleQualident (rule, subrule: String; i: INTEGER; sym: CARDINAL) : BOOLEAN ; +VAR + scope: CARDINAL ; +BEGIN + IF TextCompareName (subrule, GetSymName (sym)) + THEN + IF NOT QualifiedScope (rule, sym, i, scope) + THEN + RETURN FALSE + END ; + IF OptionalLibname (rule, sym, i, scope) + THEN + RETURN TRUE + END + END ; + subrule := KillString (subrule) ; + IF Debugging + THEN + printf0 ("MatchRuleQualident FALSE\n") + END ; + RETURN FALSE +END MatchRuleQualident ; + + +(* + QualifiedScope - PostCondition: true is returned is rule matches a qualified sym. + i is -1 if no more qualifications or libname is found. + scope will be the set to the last outer scope seen. +*) + +PROCEDURE QualifiedScope (rule: String; sym: CARDINAL; VAR i: INTEGER; VAR scope: CARDINAL) : BOOLEAN ; +VAR + subrule: String ; + j : INTEGER ; + name : Name ; +BEGIN + IF Debugging + THEN + name := GetSymName (sym) ; + printf2 ("seen ident name, QualifiedScope (rule = %s, %a)\n", rule, name) + END ; + scope := sym ; + subrule := NIL ; + REPEAT + j := i ; + scope := GetScope (scope) ; + i := ReverseIndex (rule, '.', j - 1) ; + IF Debugging + THEN + printf2 (" reverseindex (rule = %s, '.', j = %d)\n", rule, j); + printf1 (" returns i = %d\n", i) + END ; + IF scope # NulSym + THEN + subrule := KillString (subrule) ; + subrule := Slice (rule, i + 1, j) ; + IF Debugging + THEN + name := GetSymName (scope) ; + printf2 ("QualifiedScope (subrule = %s, %a)\n", subrule, name) + END ; + IF NOT TextCompareName (subrule, GetSymName (scope)) + THEN + subrule := KillString (subrule) ; + IF Debugging + THEN + printf0 ("QualifiedScope FALSE\n") + END ; + RETURN FALSE + END + END + UNTIL (i <= 0) OR IsDefImp (scope) OR IsModule (scope) ; + subrule := KillString (subrule) ; + RETURN TRUE +END QualifiedScope ; + + +(* + OptionalLibname - returns TRUE if rule[0..dot] matches syms libname or + if there is no libname the scope is a module or defimp + symbol. +*) + +PROCEDURE OptionalLibname (rule: String; sym: CARDINAL; + dot: INTEGER; scope: CARDINAL) : BOOLEAN ; +VAR + subrule: String ; +BEGIN + IF dot > 0 + THEN + (* Check for optional libname. *) + subrule := Slice (rule, 0, dot) ; + IF Debugging + THEN + printf2 ("checking for optional libname (subrule = %s, '.', dot = %d)\n", + rule, dot) + END ; + IF TextCompareName (subrule, GetLibName (GetModuleScope (sym))) + THEN + subrule := KillString (subrule) ; + IF Debugging + THEN + printf0 ("OptionalLibname TRUE\n") + END ; + RETURN TRUE + END ; + subrule := KillString (subrule) + ELSIF (scope # NulSym) AND (IsModule (scope) OR IsDefImp (scope)) + THEN + IF Debugging + THEN + printf0 ("OptionalLibname TRUE\n") + END ; + RETURN TRUE + END ; + RETURN FALSE +END OptionalLibname ; + + +(* + MatchRuleIdent - return TRUE if ident sym matches rule. + The ident must be in a module or defimp scope. +*) + +PROCEDURE MatchRuleIdent (rule: String; sym: CARDINAL) : BOOLEAN ; +VAR + scope: CARDINAL ; +BEGIN + IF TextCompareName (rule, GetSymName (sym)) + THEN + scope := GetScope (sym) ; + RETURN IsModule (scope) OR IsDefImp (scope) + END ; + RETURN FALSE +END MatchRuleIdent ; + + +(* + MatchRuleText - returns TRUE if rule matches sym. +*) + +PROCEDURE MatchRuleText (rule: String; sym: CARDINAL) : BOOLEAN ; +BEGIN + RETURN TextCompareName (rule, GetFullScopeAsmName (sym)) +END MatchRuleText ; + + +(* + TextCompareName - return TRUE if rule matches name. +*) + +PROCEDURE TextCompareName (rule: String; name: Name) : BOOLEAN ; +VAR + result: BOOLEAN ; + text : String ; +BEGIN + text := InitStringCharStar (KeyToCharStar (name)) ; + result := TextMatch (rule, text) ; + text := KillString (text) ; + RETURN result +END TextCompareName ; + + +(* + TextMatch - returns TRUE if rule matches text. Currently this + is a simple string compare, but could be extended + to implement regexp (seen in the rule). +*) + +PROCEDURE TextMatch (rule, text: String) : BOOLEAN ; +BEGIN + IF Debugging + THEN + printf2 ("TextMatch (%s, %s)\n", rule, text) + END ; + RETURN Equal (rule, text) +END TextMatch ; + + +(* + CreateTemplate - create and return a template filename with extension. + If the user has specified "-" then "-" is returned otherwise + a template is formed from "dumpdir + filename + .%03dl.extension". +*) + +PROCEDURE CreateTemplate (filename, extension: String) : String ; +BEGIN + IF filename = NIL + THEN + (* User has not specified a file. *) + IF GetDumpDir () = NIL + THEN + filename := InitStringCharStar (KeyToCharStar (GetSymName (GetMainModule ()))) + ELSE + filename := Dup (GetDumpDir ()) ; + filename := ConCat (filename, Mark (InitStringCharStar (KeyToCharStar (GetSymName (GetMainModule ()))))) + END ; + filename := ConCat (filename, Mark (InitString ('.mod'))) + ELSE + (* We need to duplicate the filename to create a new string before ConCat + is used later on. *) + filename := Dup (filename) + END ; + IF NOT EqualArray (filename, '-') + THEN + filename := ConCat (ConCat (filename, InitString ('.%03dl.')), extension) + END ; + RETURN filename +END CreateTemplate ; + + +(* + MakeQuadTemplate - return a template for the quad dump file. +*) + +PROCEDURE MakeQuadTemplate () : String ; +BEGIN + RETURN CreateTemplate (GetDumpLangQuadFilename (), InitString ('quad')) +END MakeQuadTemplate ; + + +(* + MakeDeclTemplate - return a template for the decl dump file. +*) + +PROCEDURE MakeDeclTemplate () : String ; +BEGIN + RETURN CreateTemplate (GetDumpLangDeclFilename (), InitString ('decl')) +END MakeDeclTemplate ; + + +(* + MakeGimpleTemplate - return a template for the gimple dump file and assign + len to the max number of characters required to complete + a template (including a nul terminator). +*) + +PROCEDURE MakeGimpleTemplate (VAR len: CARDINAL) : String ; +VAR + filename: String ; +BEGIN + filename := CreateTemplate (GetDumpLangGimpleFilename (), InitString ('gimple')) ; + len := Length (filename) ; (* This is a short cut based on '%03d' format + specifier used above. *) + RETURN filename +END MakeGimpleTemplate ; + + +(* + Init - initialize the module global variables. +*) + +PROCEDURE Init ; +BEGIN + NoOfQuadDumps := 0 ; + NoOfDeclDumps := 0 ; + declActive := FALSE ; + quadActive := FALSE ; + mustClose := FALSE ; + outputFile := FIO.StdOut +END Init ; + + +BEGIN + Init +END M2LangDump. diff --git a/gcc/m2/gm2-compiler/M2LexBuf.mod b/gcc/m2/gm2-compiler/M2LexBuf.mod index 8d9b5a5a6e3b..fd2373fa5019 100644 --- a/gcc/m2/gm2-compiler/M2LexBuf.mod +++ b/gcc/m2/gm2-compiler/M2LexBuf.mod @@ -22,9 +22,10 @@ along with GNU Modula-2; see the file COPYING3. If not see IMPLEMENTATION MODULE M2LexBuf ; IMPORT m2flex ; +IMPORT FIO ; FROM libc IMPORT strlen ; -FROM SYSTEM IMPORT ADDRESS ; +FROM SYSTEM IMPORT ADDRESS, ADR ; FROM Storage IMPORT ALLOCATE, DEALLOCATE ; FROM DynamicStrings IMPORT string, InitString, InitStringCharStar, Equal, Mark, KillString ; FROM FormatStrings IMPORT Sprintf1 ; @@ -33,10 +34,13 @@ FROM M2Reserved IMPORT toktype, tokToTok ; FROM M2Printf IMPORT printf0, printf1, printf2, printf3 ; FROM M2Debug IMPORT Assert ; FROM NameKey IMPORT makekey ; +FROM NumberIO IMPORT CardToStr ; FROM m2linemap IMPORT location_t, GetLocationBinary ; FROM M2Emit IMPORT UnknownLocation, BuiltinsLocation ; FROM M2Error IMPORT WarnStringAt ; FROM M2MetaError IMPORT MetaErrorT0 ; +FROM M2Options IMPORT GetDebugTraceToken ; +FROM M2LangDump IMPORT GetDumpFile ; FROM Indexing IMPORT Index, InitIndex, GetIndice, PutIndice, KillIndex, ForeachIndiceInIndexDo, @@ -48,6 +52,7 @@ CONST Tracing = FALSE ; Debugging = FALSE ; DebugRecover = FALSE ; + BadTokenNo = 32579 ; InitialSourceToken = 2 ; (* 0 is unknown, 1 is builtin. *) TYPE @@ -81,6 +86,10 @@ VAR to OpenSource. *) +PROCEDURE stop ; +END stop ; + + (* InitTokenDesc - returns a TokenDesc filled in with the parameters and the insert field set to NIL. @@ -654,16 +663,30 @@ END GetTokenFiltered ; *) PROCEDURE GetToken ; +VAR + buf: ARRAY [0..20] OF CHAR ; BEGIN IF UseBufferedTokens THEN - UpdateToken (ListOfTokens, CurrentTokNo) + UpdateToken (ListOfTokens, CurrentTokNo) ; + IF GetDebugTraceToken () + THEN + CardToStr (CurrentTokNo, 0, buf) ; + FIO.WriteString (GetDumpFile (), 'token: ') ; + FIO.WriteString (GetDumpFile (), buf) ; + FIO.WriteLine (GetDumpFile ()) + END ELSE IF NOT InBounds (ListOfTokens, CurrentTokNo) THEN GetTokenFiltered (FALSE) END ; - UpdateToken (ListOfTokens, CurrentTokNo) + UpdateToken (ListOfTokens, CurrentTokNo) ; + IF GetDebugTraceToken () + THEN + CardToStr (CurrentTokNo, 0, buf) ; + m2flex.M2Error (ADR (buf)) + END END END GetToken ; @@ -1060,10 +1083,14 @@ BEGIN AddTokToList (virtualrangetok, NulName, 0, descLeft^.line, descLeft^.col, descLeft^.file, GetLocationBinary (lc, ll, lr)) ; - RETURN HighIndice (ListOfTokens) + caret := HighIndice (ListOfTokens) END END END ; + IF caret = BadTokenNo + THEN + stop + END ; RETURN caret END MakeVirtualTok ; @@ -1075,7 +1102,7 @@ END MakeVirtualTok ; PROCEDURE MakeVirtual2Tok (left, right: CARDINAL) : CARDINAL ; BEGIN - RETURN MakeVirtualTok (left, left, right) + RETURN MakeVirtualTok (left, left, right) ; END MakeVirtual2Tok ; diff --git a/gcc/m2/gm2-compiler/M2Optimize.mod b/gcc/m2/gm2-compiler/M2Optimize.mod index 29fda9a6dd70..71b0094fdff9 100644 --- a/gcc/m2/gm2-compiler/M2Optimize.mod +++ b/gcc/m2/gm2-compiler/M2Optimize.mod @@ -154,6 +154,7 @@ PROCEDURE ReduceBranch (Operator: QuadOperator; VAR NextQuad: CARDINAL; Folded: BOOLEAN) : BOOLEAN ; VAR + constExpr, overflowChecking: BOOLEAN ; OpNext : QuadOperator ; tok, @@ -188,11 +189,11 @@ BEGIN THEN GetQuadOtok (CurrentQuad, tok, Operator, CurrentOperand1, CurrentOperand2, CurrentOperand3, - overflowChecking, op1tok, op2tok, op3tok) ; + overflowChecking, constExpr, op1tok, op2tok, op3tok) ; SubQuad (NextQuad) ; PutQuadOtok (CurrentQuad, tok, Opposite (Operator), CurrentOperand1, CurrentOperand2, Op3Next, - overflowChecking, + overflowChecking, constExpr, op1tok, op2tok, op3tok) ; NextQuad := NextPlusOne ; Folded := TRUE diff --git a/gcc/m2/gm2-compiler/M2Options.def b/gcc/m2/gm2-compiler/M2Options.def index 4e5f4993f82d..50504d088b69 100644 --- a/gcc/m2/gm2-compiler/M2Options.def +++ b/gcc/m2/gm2-compiler/M2Options.def @@ -45,8 +45,6 @@ VAR Pim4, (* -fpim4 use strict rules. *) PositiveModFloorDiv, (* Force PIM4 behaviour for DIV and MOD *) CompilerDebugging, (* -fd internal debugging messages *) - DebugTraceQuad, (* -fdebug-trace-quad *) - DebugTraceAPI, (* -fdebug-trace-api *) GenerateDebugging, (* -g option to generate info for gdb/dbx *) GenerateLineDebug, (* -gline to generate line debugging. *) Verbose, (* -verbose produce verbose error messages. *) @@ -55,7 +53,9 @@ VAR PedanticCast, (* -Wpedantic-cast warns if sizes differ. *) Statistics, (* -fstatistics information about code *) StyleChecking, (* -Wstudents checks for common student errs*) - DisplayQuadruples, (* -Wq option will display quadruples. *) + DumpLangDecl, (* -fdump-lang-decl. *) + DumpLangGimple, (* -fdump-lang-gimple. *) + DumpLangQuad, (* -fq, -fdump-lang-quad dump quadruples. *) UnboundedByReference, (* -funbounded-by-reference *) VerboseUnbounded, (* -Wverbose-unbounded *) OptimizeUncalledProcedures, (* -Ouncalled removes uncalled procedures *) @@ -117,7 +117,6 @@ VAR (* the shared library version of the *) (* scaffold. *) ForcedLocation, - DebugFunctionLineNumbers, GenerateStatementNote, Optimizing, Coding, @@ -326,6 +325,28 @@ PROCEDURE SetObj (arg: ADDRESS) ; PROCEDURE GetObj () : ADDRESS ; +(* + SetCpp - enables the source to be preprocessed and enables the + recognition of C preprocessor line directives. +*) + +PROCEDURE SetCpp (value: BOOLEAN) : BOOLEAN ; + + +(* + GetCpp - returns TRUE if the C preprocessor was used. +*) + +PROCEDURE GetCpp () : BOOLEAN ; + + +(* + GetLineDirectives - returns TRUE if line directives are allowed. +*) + +PROCEDURE GetLineDirectives () : BOOLEAN ; + + (* SetScaffoldDynamic - set the -fscaffold-dynamic flag. *) @@ -465,20 +486,6 @@ PROCEDURE SetQuiet (value: BOOLEAN) : BOOLEAN ; PROCEDURE SetCC1Quiet (value: BOOLEAN) ; -(* - SetCpp - -*) - -PROCEDURE SetCpp (value: BOOLEAN) : BOOLEAN ; - - -(* - GetCpp - returns TRUE if the C preprocessor was used. -*) - -PROCEDURE GetCpp () : BOOLEAN ; - - (* SetM2g - set the -fm2-g flag. *) @@ -662,22 +669,16 @@ PROCEDURE SetQuadDebugging (value: BOOLEAN) ; (* - SetDebugTraceQuad - + SetM2DebugTraceFilter - set internal debug flags. The flags should be + specified as a comma separated list. The full + list allowed is quad,line,token,tree. *) -PROCEDURE SetDebugTraceQuad (value: BOOLEAN) ; +PROCEDURE SetM2DebugTraceFilter (value: BOOLEAN; filter: ADDRESS) ; (* - SetDebugTraceAPI - -*) - -PROCEDURE SetDebugTraceAPI (value: BOOLEAN) ; - - -(* - SetDebugFunctionLineNumbers - turn DebugFunctionLineNumbers on/off - (used internally for debugging). + SetDebugFunctionLineNumbers - set DebugFunctionLineNumbers. *) PROCEDURE SetDebugFunctionLineNumbers (value: BOOLEAN) ; @@ -1002,6 +1003,105 @@ PROCEDURE SetIEEELongDouble (value: BOOLEAN) ; PROCEDURE GetIEEELongDouble () : BOOLEAN ; +(* + GetDumpLangDeclFilename - returns the DumpLangDeclFilename. +*) + +PROCEDURE GetDumpLangDeclFilename () : String ; + + +(* + SetDumpLangDeclFilename - set DumpLangDeclFilename to filename. +*) + +PROCEDURE SetDumpLangDeclFilename (value: BOOLEAN; filename: ADDRESS) ; + + +(* + GetDumpLangQuadFilename - returns the DumpLangQuadFilename. +*) + +PROCEDURE GetDumpLangQuadFilename () : String ; + + +(* + SetDumpLangQuadFilename - set DumpLangQuadFilename to filename. +*) + +PROCEDURE SetDumpLangQuadFilename (value: BOOLEAN; filename: ADDRESS) ; + + +(* + GetDumpLangGimpleFilename - returns the DumpLangGimpleFilename. +*) + +PROCEDURE GetDumpLangGimpleFilename () : String ; + + +(* + SetDumpLangGimpleFilename - set DumpLangGimpleFilename to filename. +*) + +PROCEDURE SetDumpLangGimpleFilename (value: BOOLEAN; filename: ADDRESS) ; + + +(* + SetM2DumpFilter - sets the filter to a comma separated list of procedures + and modules. +*) + +PROCEDURE SetM2DumpFilter (value: BOOLEAN; filter: ADDRESS) ; + + +(* + GetM2DumpFilter - returns the dump filter. +*) + +PROCEDURE GetM2DumpFilter () : ADDRESS ; + + +(* + GetDumpLangGimple - return TRUE if -fdump-lang-gimple is set. +*) + +PROCEDURE GetDumpLangGimple () : BOOLEAN ; + + +(* + GetDebugTraceQuad - return DebugTraceQuad. +*) + +PROCEDURE GetDebugTraceQuad () : BOOLEAN ; + + +(* + GetDebugTraceTree - return DebugTraceTree. +*) + +PROCEDURE GetDebugTraceTree () : BOOLEAN ; + + +(* + GetDebugTraceToken - return DebugTraceToken. +*) + +PROCEDURE GetDebugTraceToken () : BOOLEAN ; + + +(* + GetDebugTraceLine - return DebugTraceLine. +*) + +PROCEDURE GetDebugTraceLine () : BOOLEAN ; + + +(* + GetDebugFunctionLineNumbers - return DebugFunctionLineNumbers. +*) + +PROCEDURE GetDebugFunctionLineNumbers () : BOOLEAN ; + + (* FinaliseOptions - once all options have been parsed we set any inferred values. diff --git a/gcc/m2/gm2-compiler/M2Options.mod b/gcc/m2/gm2-compiler/M2Options.mod index ae4980860b01..d04cded17f05 100644 --- a/gcc/m2/gm2-compiler/M2Options.mod +++ b/gcc/m2/gm2-compiler/M2Options.mod @@ -33,11 +33,12 @@ FROM Debug IMPORT Halt ; FROM m2linemap IMPORT location_t ; FROM m2configure IMPORT FullPathCPP, TargetIEEEQuadDefault ; FROM M2Error IMPORT InternalError ; - +FROM FormatStrings IMPORT Sprintf1 ; +FROM m2misc IMPORT cerror ; FROM DynamicStrings IMPORT String, Length, InitString, Mark, Slice, EqualArray, InitStringCharStar, ConCatChar, ConCat, KillString, - Dup, string, char, + Dup, string, char, Index, PushAllocation, PopAllocationExemption, InitStringDB, InitStringCharStarDB, InitStringCharDB, MultDB, DupDB, SliceDB ; @@ -56,6 +57,10 @@ CONST DefaultRuntimeModuleOverride = "m2iso:RTentity,m2iso:Storage,m2iso:SYSTEM,m2iso:M2RTS,m2iso:RTExceptions,m2iso:IOLink" ; VAR + DumpLangDeclFilename, + DumpLangQuadFilename, + DumpLangGimpleFilename, + M2DumpFilter, M2Prefix, M2PathName, Barg, @@ -70,6 +75,11 @@ VAR UselistFilename, RuntimeModuleOverride, CppArgs : String ; + DebugFunctionLineNumbers, + DebugTraceQuad, (* -fdebug-trace-quad. *) + DebugTraceTree, (* -fdebug-trace-tree. *) + DebugTraceLine, (* -fdebug-trace-line. *) + DebugTraceToken, (* -fdebug-trace-token. *) MFlag, MMFlag, MPFlag, @@ -314,6 +324,22 @@ BEGIN END GetMP ; +(* + errors1 - +*) + +PROCEDURE errors1 (format: ARRAY OF CHAR; arg: String) ; +VAR + message: String ; + cstr : ADDRESS ; +BEGIN + message := Sprintf1 (InitString (format), arg) ; + cstr := string (message) ; + cerror (cstr) ; + exit (1) +END errors1 ; + + (* AddWord - concats a word to sentence inserting a space if necessary. sentence is returned. sentence will be created if it is NIL. @@ -669,6 +695,16 @@ BEGIN END GetCpp ; +(* + GetLineDirectives - returns TRUE if line directives are allowed. +*) + +PROCEDURE GetLineDirectives () : BOOLEAN ; +BEGIN + RETURN LineDirectives +END GetLineDirectives ; + + (* SetPPOnly - set the PPonly (preprocess only) to value. *) @@ -1049,7 +1085,9 @@ END SetSwig ; PROCEDURE SetQuadDebugging (value: BOOLEAN) ; BEGIN - DisplayQuadruples := value + DumpLangQuad := value ; + DumpLangQuadFilename := KillString (DumpLangQuadFilename) ; + DumpLangQuadFilename := InitString ('-') END SetQuadDebugging ; @@ -1064,23 +1102,121 @@ END SetCompilerDebugging ; (* - SetDebugTraceQuad - + SetM2DebugTraceFilter - set internal debug flags. The flags should be + specified as a comma separated list. The full + list allowed is quad,line,token,all. +*) + +PROCEDURE SetM2DebugTraceFilter (value: BOOLEAN; filter: ADDRESS) ; +VAR + word, + full : String ; + start, + i : INTEGER ; +BEGIN + full := InitStringCharStar (filter) ; + start := 0 ; + REPEAT + i := Index (full, ',', start) ; + IF i = -1 + THEN + word := Slice (full, start, 0) + ELSE + word := Slice (full, start, i) + END ; + SetM2DebugTrace (word, value) ; + word := KillString (word) ; + start := i+1 ; + UNTIL i = -1 ; + full := KillString (full) ; +END SetM2DebugTraceFilter ; + + +(* + SetM2DebugTrace - +*) + +PROCEDURE SetM2DebugTrace (word: String; value: BOOLEAN) ; +BEGIN + IF EqualArray (word, 'all') + THEN + (* DebugTraceTree := value *) + DebugTraceQuad := value ; + DebugTraceToken := value ; + DebugTraceLine := value + ELSIF EqualArray (word, 'quad') + THEN + DebugTraceQuad := value + ELSIF EqualArray (word, 'token') + THEN + DebugTraceToken := value + ELSIF EqualArray (word, 'line') + THEN + DebugTraceLine := value + ELSE + errors1 ("unrecognized filter %s seen in -fm2-debug-trace= option\n", word) + END +END SetM2DebugTrace ; + + +(* + SetDebugFunctionLineNumbers - set DebugFunctionLineNumbers. *) -PROCEDURE SetDebugTraceQuad (value: BOOLEAN) ; +PROCEDURE SetDebugFunctionLineNumbers (value: BOOLEAN) ; +BEGIN + DebugFunctionLineNumbers := value +END SetDebugFunctionLineNumbers ; + + +(* + GetDebugTraceQuad - return DebugTraceQuad. +*) + +PROCEDURE GetDebugTraceQuad () : BOOLEAN ; BEGIN - DebugTraceQuad := value -END SetDebugTraceQuad ; + RETURN DebugTraceQuad +END GetDebugTraceQuad ; (* - SetDebugTraceAPI - + GetDebugTraceTree - return DebugTraceTree. *) -PROCEDURE SetDebugTraceAPI (value: BOOLEAN) ; +PROCEDURE GetDebugTraceTree () : BOOLEAN ; BEGIN - DebugTraceAPI := value -END SetDebugTraceAPI ; + RETURN DebugTraceTree +END GetDebugTraceTree ; + + +(* + GetDebugTraceToken - return DebugTraceToken. +*) + +PROCEDURE GetDebugTraceToken () : BOOLEAN ; +BEGIN + RETURN DebugTraceToken +END GetDebugTraceToken ; + + +(* + GetDebugTraceLine - return DebugTraceLine. +*) + +PROCEDURE GetDebugTraceLine () : BOOLEAN ; +BEGIN + RETURN DebugTraceLine +END GetDebugTraceLine ; + + +(* + GetDebugFunctionLineNumbers - return DebugFunctionLineNumbers. +*) + +PROCEDURE GetDebugFunctionLineNumbers () : BOOLEAN ; +BEGIN + RETURN DebugFunctionLineNumbers +END GetDebugFunctionLineNumbers ; (* @@ -1221,17 +1357,6 @@ BEGIN END OverrideLocation ; -(* - SetDebugFunctionLineNumbers - turn DebugFunctionLineNumbers on/off - (used internally for debugging). -*) - -PROCEDURE SetDebugFunctionLineNumbers (value: BOOLEAN) ; -BEGIN - DebugFunctionLineNumbers := value -END SetDebugFunctionLineNumbers ; - - (* SetGenerateStatementNote - turn on generation of nops if necessary to generate pedalogical single stepping. @@ -1670,6 +1795,121 @@ BEGIN END InitializeLongDoubleFlags ; +(* + GetDumpLangDeclFilename - returns the DumpLangDeclFilename. +*) + +PROCEDURE GetDumpLangDeclFilename () : String ; +BEGIN + RETURN DumpLangDeclFilename +END GetDumpLangDeclFilename ; + + +(* + SetDumpLangDeclFilename - +*) + +PROCEDURE SetDumpLangDeclFilename (value: BOOLEAN; filename: ADDRESS) ; +BEGIN + DumpLangDecl := value ; + DumpLangDeclFilename := KillString (DumpLangDeclFilename) ; + IF filename # NIL + THEN + DumpLangDeclFilename := InitStringCharStar (filename) + END +END SetDumpLangDeclFilename ; + + +(* + GetDumpLangQuadFilename - returns the DumpLangQuadFilename. +*) + +PROCEDURE GetDumpLangQuadFilename () : String ; +BEGIN + RETURN DumpLangQuadFilename +END GetDumpLangQuadFilename ; + + +(* + SetDumpLangQuadFilename - +*) + +PROCEDURE SetDumpLangQuadFilename (value: BOOLEAN; filename: ADDRESS) ; +BEGIN + DumpLangQuad := value ; + DumpLangQuadFilename := KillString (DumpLangQuadFilename) ; + IF filename # NIL + THEN + DumpLangQuadFilename := InitStringCharStar (filename) + END +END SetDumpLangQuadFilename ; + + +(* + GetDumpLangGimpleFilename - returns the DumpLangGimpleFilename. +*) + +PROCEDURE GetDumpLangGimpleFilename () : String ; +BEGIN + RETURN DumpLangGimpleFilename +END GetDumpLangGimpleFilename ; + + +(* + SetDumpLangGimpleFilename - set DumpLangGimpleFilename to filename. +*) + +PROCEDURE SetDumpLangGimpleFilename (value: BOOLEAN; filename: ADDRESS) ; +BEGIN + DumpLangGimple := value ; + DumpLangGimpleFilename := KillString (DumpLangGimpleFilename) ; + IF value AND (filename # NIL) + THEN + DumpLangGimpleFilename := InitStringCharStar (filename) + END +END SetDumpLangGimpleFilename ; + + +(* + SetM2DumpFilter - sets the filter to a comma separated list of procedures + and modules. +*) + +PROCEDURE SetM2DumpFilter (value: BOOLEAN; filter: ADDRESS) ; +BEGIN + M2DumpFilter := KillString (M2DumpFilter) ; + IF value AND (filter # NIL) + THEN + M2DumpFilter := InitStringCharStar (filter) + END +END SetM2DumpFilter ; + + +(* + GetM2DumpFilter - returns the dump filter. +*) + +PROCEDURE GetM2DumpFilter () : ADDRESS ; +BEGIN + IF M2DumpFilter = NIL + THEN + RETURN NIL + ELSE + RETURN string (M2DumpFilter) + END +END GetM2DumpFilter ; + + +(* + GetDumpLangGimple - return TRUE if -fdump-lang-gimple is set. +*) + +PROCEDURE GetDumpLangGimple () : BOOLEAN ; +BEGIN + RETURN DumpLangGimple +END GetDumpLangGimple ; + + BEGIN cflag := FALSE ; (* -c. *) RuntimeModuleOverride := InitString (DefaultRuntimeModuleOverride) ; @@ -1691,7 +1931,7 @@ BEGIN Quiet := TRUE ; CC1Quiet := TRUE ; Profiling := FALSE ; - DisplayQuadruples := FALSE ; + DumpLangQuad := FALSE ; OptimizeBasicBlock := FALSE ; OptimizeUncalledProcedures := FALSE ; OptimizeCommonSubExpressions := FALSE ; @@ -1704,7 +1944,7 @@ BEGIN ReturnChecking := FALSE ; CaseElseChecking := FALSE ; CPreProcessor := FALSE ; - LineDirectives := FALSE ; + LineDirectives := TRUE ; ExtendedOpaque := FALSE ; UnboundedByReference := FALSE ; VerboseUnbounded := FALSE ; @@ -1718,7 +1958,9 @@ BEGIN ForcedLocation := FALSE ; WholeProgram := FALSE ; DebugTraceQuad := FALSE ; - DebugTraceAPI := FALSE ; + DebugTraceTree := FALSE ; + DebugTraceLine := FALSE ; + DebugTraceToken := FALSE ; DebugFunctionLineNumbers := FALSE ; GenerateStatementNote := FALSE ; LowerCaseKeywords := FALSE ; @@ -1751,5 +1993,12 @@ BEGIN MQFlag := NIL ; InitializeLongDoubleFlags ; M2Prefix := InitString ('') ; - M2PathName := InitString ('') + M2PathName := InitString ('') ; + DumpLangQuadFilename := NIL ; + DumpLangGimpleFilename := NIL ; + DumpLangDeclFilename := NIL ; + DumpLangDecl := FALSE ; + DumpLangQuad := FALSE ; + DumpLangGimple := FALSE ; + M2DumpFilter := NIL END M2Options. diff --git a/gcc/m2/gm2-compiler/M2Quads.def b/gcc/m2/gm2-compiler/M2Quads.def index 3e92e3181dc1..6175d8d1cb27 100644 --- a/gcc/m2/gm2-compiler/M2Quads.def +++ b/gcc/m2/gm2-compiler/M2Quads.def @@ -124,8 +124,13 @@ EXPORT QUALIFIED StartBuildDefFile, StartBuildModFile, EndBuildFile, IsPseudoQuad, IsDefOrModFile, IsInitialisingConst, + IsQuadConstExpr, + IsBecomes, + IsDummy, + GetQuadOp1, GetQuadOp2, GetQuadOp3, GetQuadDest, + SetQuadConstExpr, - DisplayQuadList, DisplayQuadRange, DisplayQuad, + DumpQuadruples, DisplayQuadRange, DisplayQuad, WriteOperator, BackPatchSubrangesAndOptParam, GetQuad, GetFirstQuad, GetNextQuad, PutQuad, @@ -146,6 +151,8 @@ EXPORT QUALIFIED StartBuildDefFile, StartBuildModFile, EndBuildFile, IsAutoPushOn, PushAutoOn, PushAutoOff, PopAuto, PushInConstExpression, PopInConstExpression, IsInConstExpression, + PushInConstParameters, PopInConstParameters, + IsInConstParameters, MustCheckOverflow, BuildAsmElement, BuildAsmTrash, GetQuadTrash ; @@ -394,6 +401,62 @@ PROCEDURE IsFinallyStart (QuadNo: CARDINAL) : BOOLEAN ; PROCEDURE IsFinallyEnd (QuadNo: CARDINAL) : BOOLEAN ; +(* + IsBecomes - return TRUE if QuadNo is a BecomesOp. +*) + +PROCEDURE IsBecomes (QuadNo: CARDINAL) : BOOLEAN ; + + +(* + IsDummy - return TRUE if QuadNo is a DummyOp. +*) + +PROCEDURE IsDummy (QuadNo: CARDINAL) : BOOLEAN ; + + +(* + IsQuadConstExpr - returns TRUE if QuadNo is part of a constant expression. +*) + +PROCEDURE IsQuadConstExpr (QuadNo: CARDINAL) : BOOLEAN ; + + +(* + SetQuadConstExpr - sets the constexpr field to value. +*) + +PROCEDURE SetQuadConstExpr (QuadNo: CARDINAL; value: BOOLEAN) ; + + +(* + GetQuadDest - returns the jump destination associated with quad. +*) + +PROCEDURE GetQuadDest (QuadNo: CARDINAL) : CARDINAL ; + + +(* + GetQuadOp1 - returns the 1st operand associated with quad. +*) + +PROCEDURE GetQuadOp1 (QuadNo: CARDINAL) : CARDINAL ; + + +(* + GetQuadOp2 - returns the 2nd operand associated with quad. +*) + +PROCEDURE GetQuadOp2 (QuadNo: CARDINAL) : CARDINAL ; + + +(* + GetQuadOp3 - returns the 3rd operand associated with quad. +*) + +PROCEDURE GetQuadOp3 (QuadNo: CARDINAL) : CARDINAL ; + + (* IsInitialisingConst - returns TRUE if the quadruple is setting a const (op1) with a value. @@ -440,10 +503,12 @@ PROCEDURE IsDefOrModFile (QuadNo: CARDINAL) : BOOLEAN ; (* - DisplayQuadList - displays all quads. + DumpQuadruples - dump all quadruples providing the -fq, -fdump-lang-quad, + -fdump-lang-quad= or -fdump-lang-all were issued to the + command line. *) -PROCEDURE DisplayQuadList ; +PROCEDURE DumpQuadruples (title: ARRAY OF CHAR) ; (* @@ -545,7 +610,7 @@ PROCEDURE GetQuadOtok (QuadNo: CARDINAL; VAR tok: CARDINAL; VAR Op: QuadOperator; VAR Oper1, Oper2, Oper3: CARDINAL; - VAR overflowChecking: BOOLEAN ; + VAR overflowChecking, constExpr: BOOLEAN ; VAR Op1Pos, Op2Pos, Op3Pos: CARDINAL) ; @@ -557,9 +622,10 @@ PROCEDURE GetQuadOTypetok (QuadNo: CARDINAL; VAR tok: CARDINAL; VAR Op: QuadOperator; VAR Oper1, Oper2, Oper3: CARDINAL; - VAR overflowChecking, typeChecking: BOOLEAN ; + VAR overflowChecking, typeChecking, constExpr: BOOLEAN ; VAR Op1Pos, Op2Pos, Op3Pos: CARDINAL) ; + (* PutQuadOtok - alters a quadruple QuadNo with Op, Oper1, Oper2, Oper3, and sets a boolean to determinine whether overflow should be checked. @@ -569,7 +635,7 @@ PROCEDURE PutQuadOtok (QuadNo: CARDINAL; tok: CARDINAL; Op: QuadOperator; Oper1, Oper2, Oper3: CARDINAL; - overflowChecking: BOOLEAN ; + overflowChecking, constExpr: BOOLEAN ; Op1Pos, Op2Pos, Op3Pos: CARDINAL) ; @@ -1934,9 +2000,10 @@ PROCEDURE BuildDesignatorPointer (ptrtok: CARDINAL) ; Empty +------------+ | NulSym | |------------| + tokpos is the position of the RETURN token. *) -PROCEDURE BuildNulExpression ; +PROCEDURE BuildNulExpression (tokpos: CARDINAL) ; (* @@ -1953,7 +2020,7 @@ PROCEDURE BuildNulExpression ; |--------------| *) -PROCEDURE BuildSetStart ; +PROCEDURE BuildSetStart (tokpos: CARDINAL) ; (* @@ -1986,9 +2053,10 @@ PROCEDURE BuildSetEnd ; | SetType | | SetType | |-----------| |-------------| + tokpos points to the opening '{'. *) -PROCEDURE BuildEmptySet ; +PROCEDURE BuildEmptySet (tokpos: CARDINAL) ; (* @@ -2097,9 +2165,12 @@ PROCEDURE BuildConstructorStart (cbratokpos: CARDINAL) ; +------------+ +------------+ | const | | const | |------------+ |------------| + + startpos is the start of the constructor, either the typename or '{' + cbratokpos is the '}'. *) -PROCEDURE BuildConstructorEnd (cbratokpos: CARDINAL) ; +PROCEDURE BuildConstructorEnd (startpos, cbratokpos: CARDINAL) ; (* @@ -2116,7 +2187,7 @@ PROCEDURE NextConstructorField ; it Pushes a Bitset type. *) -PROCEDURE BuildTypeForConstructor ; +PROCEDURE BuildTypeForConstructor (tokpos: CARDINAL) ; (* @@ -2794,6 +2865,27 @@ PROCEDURE PopInConstExpression ; PROCEDURE IsInConstExpression () : BOOLEAN ; +(* + PushInConstParameters - push the InConstParameters flag and then set it to TRUE. +*) + +PROCEDURE PushInConstParameters ; + + +(* + PopInConstParameters - restores the previous value of the InConstParameters. +*) + +PROCEDURE PopInConstParameters ; + + +(* + IsInConstParameters - returns the value of the InConstParameters. +*) + +PROCEDURE IsInConstParameters () : BOOLEAN ; + + (* BuildAsmElement - the stack is expected to contain: diff --git a/gcc/m2/gm2-compiler/M2Quads.mod b/gcc/m2/gm2-compiler/M2Quads.mod index 2be229d0bf82..17d7aabc10a5 100644 --- a/gcc/m2/gm2-compiler/M2Quads.mod +++ b/gcc/m2/gm2-compiler/M2Quads.mod @@ -27,6 +27,7 @@ FROM M2Debug IMPORT Assert, WriteDebug ; FROM NameKey IMPORT Name, NulName, MakeKey, GetKey, makekey, KeyToCharStar, WriteKey ; FROM FormatStrings IMPORT Sprintf0, Sprintf1, Sprintf2, Sprintf3 ; FROM M2DebugStack IMPORT DebugStack ; +FROM StrLib IMPORT StrLen ; FROM M2Scaffold IMPORT DeclareScaffold, mainFunction, initFunction, finiFunction, linkFunction, PopulateCtorArray, ForeachModuleCallInit, ForeachModuleCallFinish ; @@ -147,7 +148,7 @@ FROM M2Comp IMPORT CompilingImplementationModule, CompilingProgramModule ; FROM M2LexBuf IMPORT currenttoken, UnknownTokenNo, BuiltinTokenNo, - GetToken, MakeVirtualTok, + GetToken, MakeVirtualTok, MakeVirtual2Tok, GetFileName, TokenToLineNo, GetTokenName, GetTokenNo, GetLineNo, GetPreviousTokenLineNo, PrintTokenNo ; @@ -160,7 +161,8 @@ FROM M2Error IMPORT Error, ErrorStringAt, ErrorStringAt2, ErrorStringsAt2, WarnStringAt, WarnStringAt2, WarnStringsAt2 ; -FROM M2Printf IMPORT printf0, printf1, printf2, printf3, printf4 ; +FROM M2Printf IMPORT fprintf0, fprintf1, fprintf2, fprintf3, fprintf4, + printf0, printf1, printf2, printf3, printf4 ; FROM M2Reserved IMPORT PlusTok, MinusTok, TimesTok, DivTok, ModTok, DivideTok, RemTok, @@ -218,8 +220,11 @@ FROM M2Options IMPORT NilChecking, UninitVariableChecking, ScaffoldDynamic, ScaffoldStatic, cflag, ScaffoldMain, SharedFlag, WholeProgram, - GetRuntimeModuleOverride ; + GetDumpDir, GetM2DumpFilter, + GetRuntimeModuleOverride, GetDebugTraceQuad, + DumpLangQuad ; +FROM M2LangDump IMPORT CreateDumpQuad, CloseDumpQuad, GetDumpFile ; FROM M2Pass IMPORT IsPassCodeGeneration, IsNoPass ; FROM M2StackAddress IMPORT StackOfAddress, InitStackAddress, KillStackAddress, @@ -263,8 +268,9 @@ FROM M2Range IMPORT InitAssignmentRangeCheck, FROM M2CaseList IMPORT PushCase, PopCase, AddRange, BeginCaseList, EndCaseList, ElseCase ; FROM PCSymBuild IMPORT SkipConst ; FROM m2builtins IMPORT GetBuiltinTypeInfoType ; +FROM M2LangDump IMPORT IsDumpRequired ; -IMPORT M2Error ; +IMPORT M2Error, FIO, SFIO, DynamicStrings, StdIO ; CONST @@ -301,6 +307,8 @@ TYPE LineNo : CARDINAL ; (* Line No of source text. *) TokenNo : CARDINAL ; (* Token No of source text. *) NoOfTimesReferenced: CARDINAL ; (* No of times quad is referenced. *) + ConstExpr, (* Must backend resolve this at *) + (* compile time? *) CheckType, CheckOverflow : BOOLEAN ; (* should backend check overflow *) op1pos, @@ -338,7 +346,8 @@ VAR TryStack, CatchStack, ExceptStack, - ConstStack, + ConstExprStack, + ConstParamStack, AutoStack, RepeatStack, WhileStack, @@ -363,6 +372,7 @@ VAR LogicalXorTok, (* Internal _LXOR token. *) LogicalDifferenceTok : Name ; (* Internal _LDIFF token. *) InConstExpression, + InConstParameters, IsAutoOn, (* Should parser automatically push *) (* idents? *) MustNotCheckBounds : BOOLEAN ; @@ -843,6 +853,101 @@ BEGIN END IsFinallyEnd ; +(* + IsBecomes - return TRUE if QuadNo is a BecomesOp. +*) + +PROCEDURE IsBecomes (QuadNo: CARDINAL) : BOOLEAN ; +BEGIN + RETURN IsQuadA (QuadNo, BecomesOp) +END IsBecomes ; + + +(* + IsDummy - return TRUE if QuadNo is a DummyOp. +*) + +PROCEDURE IsDummy (QuadNo: CARDINAL) : BOOLEAN ; +BEGIN + RETURN IsQuadA (QuadNo, DummyOp) +END IsDummy ; + + +(* + IsQuadConstExpr - returns TRUE if QuadNo is part of a constant expression. +*) + +PROCEDURE IsQuadConstExpr (QuadNo: CARDINAL) : BOOLEAN ; +VAR + f: QuadFrame ; +BEGIN + f := GetQF (QuadNo) ; + RETURN f^.ConstExpr +END IsQuadConstExpr ; + + +(* + SetQuadConstExpr - sets the constexpr field to value. +*) + +PROCEDURE SetQuadConstExpr (QuadNo: CARDINAL; value: BOOLEAN) ; +VAR + f: QuadFrame ; +BEGIN + f := GetQF (QuadNo) ; + f^.ConstExpr := value +END SetQuadConstExpr ; + + +(* + GetQuadDest - returns the jump destination associated with quad. +*) + +PROCEDURE GetQuadDest (QuadNo: CARDINAL) : CARDINAL ; +BEGIN + RETURN GetQuadOp3 (QuadNo) +END GetQuadDest ; + + +(* + GetQuadOp1 - returns the 1st operand associated with quad. +*) + +PROCEDURE GetQuadOp1 (QuadNo: CARDINAL) : CARDINAL ; +VAR + f: QuadFrame ; +BEGIN + f := GetQF (QuadNo) ; + RETURN f^.Operand1 +END GetQuadOp1 ; + + +(* + GetQuadOp2 - returns the 2nd operand associated with quad. +*) + +PROCEDURE GetQuadOp2 (QuadNo: CARDINAL) : CARDINAL ; +VAR + f: QuadFrame ; +BEGIN + f := GetQF (QuadNo) ; + RETURN f^.Operand2 +END GetQuadOp2 ; + + +(* + GetQuadOp3 - returns the 3rd operand associated with quad. +*) + +PROCEDURE GetQuadOp3 (QuadNo: CARDINAL) : CARDINAL ; +VAR + f: QuadFrame ; +BEGIN + f := GetQF (QuadNo) ; + RETURN f^.Operand3 +END GetQuadOp3 ; + + (* IsInitialisingConst - returns TRUE if the quadruple is setting a const (op1) with a value. @@ -1174,7 +1279,7 @@ PROCEDURE GetQuadOtok (QuadNo: CARDINAL; VAR tok: CARDINAL; VAR Op: QuadOperator; VAR Oper1, Oper2, Oper3: CARDINAL; - VAR overflowChecking: BOOLEAN ; + VAR overflowChecking, constExpr: BOOLEAN ; VAR Op1Pos, Op2Pos, Op3Pos: CARDINAL) ; VAR f: QuadFrame ; @@ -1190,7 +1295,8 @@ BEGIN Op2Pos := op2pos ; Op3Pos := op3pos ; tok := TokenNo ; - overflowChecking := CheckOverflow + overflowChecking := CheckOverflow ; + constExpr := ConstExpr END END GetQuadOtok ; @@ -1204,7 +1310,7 @@ PROCEDURE PutQuadOtok (QuadNo: CARDINAL; tok: CARDINAL; Op: QuadOperator; Oper1, Oper2, Oper3: CARDINAL; - overflowChecking: BOOLEAN ; + overflowChecking, constExpr: BOOLEAN ; Op1Pos, Op2Pos, Op3Pos: CARDINAL) ; VAR f: QuadFrame ; @@ -1227,7 +1333,8 @@ BEGIN op1pos := Op1Pos ; op2pos := Op2Pos ; op3pos := Op3Pos ; - TokenNo := tok + TokenNo := tok ; + ConstExpr := constExpr END END END PutQuadOtok ; @@ -1378,7 +1485,8 @@ BEGIN Operand2 := Oper2 ; Operand3 := Oper3 ; CheckOverflow := overflow ; - CheckType := checktype + CheckType := checktype ; + ConstExpr := IsInConstExpression () END END END PutQuadOType ; @@ -1397,14 +1505,14 @@ END PutQuad ; (* - GetQuadOtok - returns the fields associated with quadruple QuadNo. + GetQuadOTypetok - returns the fields associated with quadruple QuadNo. *) PROCEDURE GetQuadOTypetok (QuadNo: CARDINAL; VAR tok: CARDINAL; VAR Op: QuadOperator; VAR Oper1, Oper2, Oper3: CARDINAL; - VAR overflowChecking, typeChecking: BOOLEAN ; + VAR overflowChecking, typeChecking, constExpr: BOOLEAN ; VAR Op1Pos, Op2Pos, Op3Pos: CARDINAL) ; VAR f: QuadFrame ; @@ -1421,7 +1529,8 @@ BEGIN Op3Pos := op3pos ; tok := TokenNo ; overflowChecking := CheckOverflow ; - typeChecking := CheckType + typeChecking := CheckType ; + constExpr := ConstExpr END END GetQuadOTypetok ; @@ -1541,7 +1650,8 @@ BEGIN Trash := 0 ; op1pos := UnknownTokenNo ; op2pos := UnknownTokenNo ; - op3pos := UnknownTokenNo + op3pos := UnknownTokenNo ; + ConstExpr := FALSE END END EraseQuad ; @@ -2384,12 +2494,12 @@ PROCEDURE callRequestDependant (tokno: CARDINAL; BEGIN Assert (requestDep # NulSym) ; PushTtok (requestDep, tokno) ; - PushTF (Adr, Address) ; + PushTFtok (Adr, Address, tokno) ; PushTtok (MakeConstString (tokno, GetSymName (moduleSym)), tokno) ; PushT (1) ; BuildAdrFunction ; - PushTF (Adr, Address) ; + PushTFtok (Adr, Address, tokno) ; PushTtok (MakeConstString (tokno, GetLibName (moduleSym)), tokno) ; PushT (1) ; BuildAdrFunction ; @@ -2399,12 +2509,12 @@ BEGIN PushTF (Nil, Address) ; PushTF (Nil, Address) ELSE - PushTF (Adr, Address) ; + PushTFtok (Adr, Address, tokno) ; PushTtok (MakeConstString (tokno, GetSymName (depModuleSym)), tokno) ; PushT (1) ; BuildAdrFunction ; - PushTF (Adr, Address) ; + PushTFtok (Adr, Address, tokno) ; PushTtok (MakeConstString (tokno, GetLibName (depModuleSym)), tokno) ; PushT (1) ; BuildAdrFunction @@ -2668,7 +2778,7 @@ PROCEDURE BuildStringAdrParam (tok: CARDINAL; name: Name); VAR str, m2strnul: CARDINAL ; BEGIN - PushTF (Adr, Address) ; + PushTFtok (Adr, Address, tok) ; str := MakeConstString (tok, name) ; PutConstStringKnown (tok, str, name, FALSE, TRUE) ; m2strnul := DeferMakeConstStringM2nul (tok, str) ; @@ -2772,12 +2882,12 @@ BEGIN (* DeconstructModules (module_name, argc, argv, envp); *) PushTtok (deconstructModules, tok) ; - PushTF(Adr, Address) ; + PushTFtok (Adr, Address, tok) ; PushTtok (MakeConstString (tok, GetSymName (moduleSym)), tok) ; PushT(1) ; BuildAdrFunction ; - PushTF(Adr, Address) ; + PushTFtok (Adr, Address, tok) ; PushTtok (MakeConstString (tok, GetLibName (moduleSym)), tok) ; PushT(1) ; BuildAdrFunction ; @@ -2836,12 +2946,12 @@ BEGIN (* RegisterModule (module_name, init, fini, dependencies); *) PushTtok (RegisterModule, tok) ; - PushTF (Adr, Address) ; + PushTFtok (Adr, Address, tok) ; PushTtok (MakeConstString (tok, GetSymName (moduleSym)), tok) ; PushT (1) ; BuildAdrFunction ; - PushTF (Adr, Address) ; + PushTFtok (Adr, Address, tok) ; PushTtok (MakeConstString (tok, GetLibName (moduleSym)), tok) ; PushT (1) ; BuildAdrFunction ; @@ -3193,9 +3303,11 @@ BEGIN CASE Operator OF SubrangeLowOp : Operand3 := CollectLow (Operand3) ; - Operator := BecomesOp | + Operator := BecomesOp ; + ConstExpr := FALSE | SubrangeHighOp: Operand3 := CollectHigh (Operand3) ; - Operator := BecomesOp | + Operator := BecomesOp ; + ConstExpr := FALSE | OptParamOp : Operand3 := GetOptArgInit (Operand3) ; Operator := ParamOp @@ -3320,7 +3432,7 @@ BEGIN PushT (SkipType(type)) ; PushT (expr) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction ; + BuildConvertFunction (Convert, FALSE) ; PopT (expr) END ; RETURN( expr ) @@ -3659,21 +3771,21 @@ BEGIN PopTtok (Des, destok) ; (* Conditional Boolean Assignment. *) BackPatch (t, NextQuad) ; - IF GetMode (Des) = RightValue + IF GetMode (Des) = LeftValue THEN - GenQuadO (becomesTokNo, BecomesOp, Des, NulSym, True, checkOverflow) - ELSE CheckPointerThroughNil (destok, Des) ; GenQuadO (destok, XIndrOp, Des, Boolean, True, checkOverflow) + ELSE + GenQuadO (becomesTokNo, BecomesOp, Des, NulSym, True, checkOverflow) END ; GenQuadO (destok, GotoOp, NulSym, NulSym, NextQuad+2, checkOverflow) ; BackPatch (f, NextQuad) ; - IF GetMode (Des) = RightValue + IF GetMode (Des) = LeftValue THEN - GenQuadO (becomesTokNo, BecomesOp, Des, NulSym, False, checkOverflow) - ELSE CheckPointerThroughNil (destok, Des) ; GenQuadO (destok, XIndrOp, Des, Boolean, False, checkOverflow) + ELSE + GenQuadO (becomesTokNo, BecomesOp, Des, NulSym, False, checkOverflow) END ELSE PopTrwtok (Exp, r, exptok) ; @@ -3702,7 +3814,7 @@ BEGIN THEN (* Tell code generator to test runtime values of assignment so ensure we catch overflow and underflow. *) - BuildRange (InitAssignmentRangeCheck (combinedtok, Des, Exp)) + BuildRange (InitAssignmentRangeCheck (combinedtok, Des, Exp, destok, exptok)) END ; IF checkTypes THEN @@ -4350,7 +4462,7 @@ END BuildElsif2 ; *) PROCEDURE PushOne (tok: CARDINAL; type: CARDINAL; - message: ARRAY OF CHAR; internal: BOOLEAN) ; + message: ARRAY OF CHAR) ; VAR const: CARDINAL ; BEGIN @@ -4372,7 +4484,7 @@ BEGIN PushT (type) ; PushTFtok (MakeConstLit (tok, MakeKey ('1'), ZType), ZType, tok) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, TRUE) END ELSE const := MakeConstLit (tok, MakeKey ('1'), type) ; @@ -4407,7 +4519,7 @@ BEGIN PushTtok (type, tok) ; PushTtok (MakeConstLit (tok, MakeKey ('0'), ZType), tok) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, TRUE) ELSE PushTFtok (MakeConstLit (tok, MakeKey ('0'), type), type, tok) END @@ -4450,7 +4562,7 @@ BEGIN type := ZType END ; PushOne (dotok, type, - 'the implied {%kFOR} loop increment will cause an overflow {%1ad}', TRUE) + 'the implied {%kFOR} loop increment will cause an overflow {%1ad}') END BuildPseudoBy ; @@ -5567,9 +5679,9 @@ BEGIN THEN IF i<=ParamTotal THEN - printf0('; ') + printf0 ('; ') ELSE - printf0(' ) ; \n') + printf0 (' ) ; \n') END END END @@ -6422,7 +6534,7 @@ BEGIN THEN MarkAsReadWrite(rw) ; (* pass the address field of an unbounded variable *) - PushTF(Adr, Address) ; + PushTFtok (Adr, Address, OperandTok (pi)) ; PushTFAD (f^.TrueExit, f^.FalseExit, f^.Unbounded, f^.Dimension) ; PushT(1) ; BuildAdrFunction ; @@ -6452,7 +6564,7 @@ BEGIN THEN MarkAsReadWrite(rw) ; (* pass the address field of an unbounded variable *) - PushTF(Adr, Address) ; + PushTFtok (Adr, Address, OperandTok (pi)) ; PushTFAD (f^.TrueExit, f^.FalseExit, f^.Unbounded, f^.Dimension) ; PushT(1) ; BuildAdrFunction ; @@ -7240,7 +7352,7 @@ BEGIN PushT (dtype) ; PushT (expr) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction ; + BuildConvertFunction (Convert, FALSE) ; doBuildBinaryOp (FALSE, TRUE) ELSE IF tok=PlusTok @@ -7307,7 +7419,7 @@ BEGIN OperandSym := DereferenceLValue (OperandTok (1), OperandT (1)) ELSE PushOne (proctok, dtype, - 'the {%EkINC} will cause an overflow {%1ad}', FALSE) ; + 'the {%EkINC} will cause an overflow {%1ad}') ; PopT (OperandSym) END ; @@ -7380,7 +7492,7 @@ BEGIN OperandSym := DereferenceLValue (OperandTok (1), OperandT (1)) ELSE PushOne (proctok, dtype, - 'the {%EkDEC} will cause an overflow {%1ad}', FALSE) ; + 'the {%EkDEC} will cause an overflow {%1ad}') ; PopT (OperandSym) END ; @@ -7674,7 +7786,7 @@ BEGIN IF IsUnknown (ProcSym) THEN paramtok := OperandTtok (1) ; - combinedtok := MakeVirtualTok (functok, functok, paramtok) ; + combinedtok := MakeVirtual2Tok (functok, paramtok) ; MetaErrorT1 (functok, 'procedure function {%1Ea} is undefined', ProcSym) ; PopN (NoOfParam + 2) ; (* Fake return value to continue compiling. *) @@ -7687,7 +7799,7 @@ BEGIN IsPseudoBaseFunction (ProcSym) THEN ManipulatePseudoCallParameters ; - BuildPseudoFunctionCall + BuildPseudoFunctionCall (ConstExpr) ELSE BuildRealFunctionCall (functok, ConstExpr) END @@ -7761,7 +7873,7 @@ BEGIN PushTtok (ProcSym, functok) ; PushTtok (ConstExpression, paramtok) ; PushT (2) ; (* Two parameters. *) - BuildConvertFunction + BuildConvertFunction (Convert, TRUE) ELSE MetaErrorT0 (functok, '{%E}a constant type conversion can only have one argument') END @@ -7946,7 +8058,7 @@ END BuildRealFunctionCall ; *) -PROCEDURE BuildPseudoFunctionCall ; +PROCEDURE BuildPseudoFunctionCall (ConstExpr: BOOLEAN) ; VAR NoOfParam, ProcSym : CARDINAL ; @@ -7955,13 +8067,13 @@ BEGIN ProcSym := OperandT (NoOfParam+1) ; ProcSym := SkipConst (ProcSym) ; PushT (NoOfParam) ; - (* Compile time stack restored to entry state *) + (* Compile time stack restored to entry state. *) IF ProcSym = High THEN BuildHighFunction ELSIF ProcSym = LengthS THEN - BuildLengthFunction + BuildLengthFunction (ProcSym, ConstExpr) ELSIF ProcSym = Adr THEN BuildAdrFunction @@ -7976,34 +8088,34 @@ BEGIN BuildTBitSizeFunction ELSIF ProcSym = Convert THEN - BuildConvertFunction + BuildConvertFunction (ProcSym, ConstExpr) ELSIF ProcSym = Odd THEN - BuildOddFunction + BuildOddFunction (ProcSym, ConstExpr) ELSIF ProcSym = Abs THEN - BuildAbsFunction + BuildAbsFunction (ProcSym, ConstExpr) ELSIF ProcSym = Cap THEN - BuildCapFunction + BuildCapFunction (ProcSym, ConstExpr) ELSIF ProcSym = Val THEN - BuildValFunction + BuildValFunction (ProcSym, ConstExpr) ELSIF ProcSym = Chr THEN - BuildChrFunction + BuildChrFunction (ProcSym, ConstExpr) ELSIF IsOrd (ProcSym) THEN - BuildOrdFunction (ProcSym) + BuildOrdFunction (ProcSym, ConstExpr) ELSIF IsInt (ProcSym) THEN - BuildIntFunction (ProcSym) + BuildIntFunction (ProcSym, ConstExpr) ELSIF IsTrunc (ProcSym) THEN - BuildTruncFunction (ProcSym) + BuildTruncFunction (ProcSym, ConstExpr) ELSIF IsFloat (ProcSym) THEN - BuildFloatFunction (ProcSym) + BuildFloatFunction (ProcSym, ConstExpr) ELSIF ProcSym = Min THEN BuildMinFunction @@ -8012,16 +8124,16 @@ BEGIN BuildMaxFunction ELSIF ProcSym = AddAdr THEN - BuildAddAdrFunction + BuildAddAdrFunction (ProcSym, ConstExpr) ELSIF ProcSym = SubAdr THEN - BuildSubAdrFunction + BuildSubAdrFunction (ProcSym, ConstExpr) ELSIF ProcSym = DifAdr THEN - BuildDifAdrFunction + BuildDifAdrFunction (ProcSym, ConstExpr) ELSIF ProcSym = Cast THEN - BuildCastFunction + BuildCastFunction (ProcSym, ConstExpr) ELSIF ProcSym = Shift THEN BuildShiftFunction @@ -8033,13 +8145,13 @@ BEGIN BuildMakeAdrFunction ELSIF ProcSym = Re THEN - BuildReFunction + BuildReFunction (ProcSym, ConstExpr) ELSIF ProcSym = Im THEN - BuildImFunction + BuildImFunction (ProcSym, ConstExpr) ELSIF ProcSym = Cmplx THEN - BuildCmplxFunction + BuildCmplxFunction (ProcSym, ConstExpr) ELSE InternalError ('pseudo function not implemented yet') END @@ -8072,10 +8184,11 @@ END BuildPseudoFunctionCall ; |----------------| |------------| *) -PROCEDURE BuildAddAdrFunction ; +PROCEDURE BuildAddAdrFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR combinedtok, functok, + vartok, optok : CARDINAL ; opa, ReturnVar, @@ -8088,11 +8201,18 @@ BEGIN IF NoOfParam=2 THEN VarSym := OperandT (2) ; + vartok := OperandTok (2) ; OperandSym := OperandT (1) ; optok := OperandTok (1) ; - combinedtok := MakeVirtualTok (functok, functok, optok) ; + combinedtok := MakeVirtual2Tok (functok, optok) ; PopN (NoOfParam + 1) ; - IF IsVar (VarSym) + IF ConstExprError (ProcSym, VarSym, vartok, ConstExpr) OR + ConstExprError (ProcSym, OperandSym, optok, ConstExpr) + THEN + (* Fake return result. *) + PushTFtok (MakeConstLit (combinedtok, MakeKey('0'), Address), + Address, combinedtok) + ELSIF IsVar (VarSym) THEN IF IsReallyPointer (VarSym) OR (GetSType (VarSym) = Address) THEN @@ -8113,9 +8233,10 @@ BEGIN PushTFtok (MakeConstLit (combinedtok, MakeKey('0'), Address), Address, combinedtok) END ELSE - MetaErrorT0 (functok, '{%E}SYSTEM procedure ADDADR expects 2 parameters') ; - PopN (NoOfParam + 1) ; - PushTFtok (MakeConstLit (functok, MakeKey ('0'), Address), Address, functok) + MetaErrorT0 (functok, + '{%E}SYSTEM procedure {%EkADDADR} expects 2 parameters') ; + PopN (NoOfParam+1) ; + PushTFtok (MakeConstLit (functok, MakeKey('0'), Address), Address, functok) END END BuildAddAdrFunction ; @@ -8146,7 +8267,7 @@ END BuildAddAdrFunction ; |----------------| |------------| *) -PROCEDURE BuildSubAdrFunction ; +PROCEDURE BuildSubAdrFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR functok, combinedtok, @@ -8160,15 +8281,21 @@ VAR BEGIN PopT (NoOfParam) ; functok := OperandTtok (NoOfParam + 1) ; - OperandSym := OperandT (1) ; - optok := OperandTok (1) ; IF NoOfParam = 2 THEN + optok := OperandTok (1) ; + OperandSym := OperandT (1) ; VarSym := OperandT (2) ; vartok := OperandTok (2) ; combinedtok := MakeVirtualTok (functok, functok, optok) ; PopN (NoOfParam + 1) ; - IF IsVar (VarSym) + IF ConstExprError (ProcSym, VarSym, vartok, ConstExpr) OR + ConstExprError (ProcSym, OperandSym, optok, ConstExpr) + THEN + (* Fake return result. *) + PushTFtok (MakeConstLit (combinedtok, MakeKey('0'), Address), + Address, combinedtok) + ELSIF IsVar (VarSym) THEN IF IsReallyPointer (VarSym) OR (GetSType (VarSym) = Address) THEN @@ -8191,11 +8318,10 @@ BEGIN PushTFtok (MakeConstLit (combinedtok, MakeKey ('0'), Address), Address, combinedtok) END ELSE - combinedtok := MakeVirtualTok (functok, functok, optok) ; MetaErrorT0 (functok, '{%E}SYSTEM procedure {%EkSUBADR} expects 2 parameters') ; PopN (NoOfParam+1) ; - PushTFtok (MakeConstLit (combinedtok, MakeKey('0'), Address), Address, combinedtok) + PushTFtok (MakeConstLit (functok, MakeKey('0'), Address), Address, functok) END END BuildSubAdrFunction ; @@ -8227,7 +8353,7 @@ END BuildSubAdrFunction ; |----------------| |------------| *) -PROCEDURE BuildDifAdrFunction ; +PROCEDURE BuildDifAdrFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR functok, optok, @@ -8241,15 +8367,26 @@ VAR BEGIN PopT (NoOfParam) ; functok := OperandTtok (NoOfParam + 1) ; - OperandSym := OperandT (1) ; - optok := OperandTok (1) ; + IF NoOfParam >= 1 + THEN + OperandSym := OperandT (1) ; + optok := OperandTok (1) + ELSE + optok := functok + END ; IF NoOfParam = 2 THEN VarSym := OperandT (2) ; vartok := OperandTok (2) ; combinedtok := MakeVirtualTok (functok, functok, optok) ; PopN (NoOfParam + 1) ; - IF IsVar (VarSym) + IF ConstExprError (ProcSym, VarSym, vartok, ConstExpr) OR + ConstExprError (ProcSym, OperandSym, optok, ConstExpr) + THEN + (* Fake return result. *) + PushTFtok (MakeConstLit (combinedtok, MakeKey('0'), Integer), + Integer, combinedtok) + ELSIF IsVar (VarSym) THEN IF IsReallyPointer (VarSym) OR (GetSType (VarSym) = Address) THEN @@ -8267,7 +8404,7 @@ BEGIN PushTtok (Integer, functok) ; PushTtok (TempVar, vartok) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, ConstExpr) ELSE MetaError1 ('the second parameter to {%EkDIFADR} {%1Ea} must be a variable of type ADDRESS or a {%EkPOINTER}, rather than a {%1Etsd}', OperandSym) ; @@ -8284,8 +8421,8 @@ BEGIN PushTFtok (MakeConstLit (combinedtok, MakeKey('0'), Integer), Integer, combinedtok) END ELSE - combinedtok := MakeVirtualTok (functok, functok, optok) ; - MetaErrorT0 (functok, '{%E}SYSTEM procedure {%EkDIFADR} expects 2 parameters') ; + combinedtok := MakeVirtual2Tok (functok, optok) ; + MetaErrorT0 (combinedtok, '{%E}SYSTEM procedure {%EkDIFADR} expects 2 parameters') ; PopN (NoOfParam+1) ; PushTFtok (MakeConstLit (combinedtok, MakeKey('0'), Integer), Integer, combinedtok) END @@ -8400,6 +8537,7 @@ VAR BEGIN PopT (NoOfParam) ; ReturnVar := MakeTemporary (tok, ImmediateValue) ; + PutConst (ReturnVar, Cardinal) ; GenHigh (tok, ReturnVar, 1, OperandT (1)) ; PopN (NoOfParam+1) ; PushTtok (ReturnVar, tok) @@ -8480,6 +8618,24 @@ BEGIN END GetQualidentImport ; +(* + ConstExprError - return TRUE if a constant expression is being built and Var is a variable. +*) + +PROCEDURE ConstExprError (Func, Var: CARDINAL; optok: CARDINAL; ConstExpr: BOOLEAN) : BOOLEAN ; +BEGIN + IF ConstExpr AND IsVar (Var) + THEN + MetaErrorT2 (optok, + 'the procedure function {%1Ea} is being called from within a constant expression and therefore the parameter {%2a} must be a constant, seen a {%2da}', + Func, Var) ; + RETURN TRUE + ELSE + RETURN FALSE + END +END ConstExprError ; + + (* DeferMakeLengthConst - creates a constant which contains the length of string, sym. *) @@ -8514,7 +8670,7 @@ END DeferMakeLengthConst ; *) -PROCEDURE BuildLengthFunction ; +PROCEDURE BuildLengthFunction (Function: CARDINAL; ConstExpr: BOOLEAN) ; VAR combinedtok, paramtok, @@ -8538,7 +8694,7 @@ BEGIN END ; IF NoOfParam >= 1 THEN - combinedtok := MakeVirtualTok (paramtok, functok, paramtok) ; + combinedtok := MakeVirtual2Tok (functok, paramtok) ; IF IsConst (Param) AND (GetSType (Param) = Char) THEN PopT (NoOfParam) ; @@ -8556,16 +8712,22 @@ BEGIN IF (ProcSym # NulSym) AND IsProcedure (ProcSym) THEN PopT (NoOfParam) ; - IF IsConst (OperandT (1)) + IF IsConst (Param) THEN - (* we can fold this in M2GenGCC. *) + (* This can be folded in M2GenGCC. *) ReturnVar := MakeTemporary (combinedtok, ImmediateValue) ; PutVar (ReturnVar, Cardinal) ; - GenQuad (StandardFunctionOp, ReturnVar, ProcSym, OperandT (1)) ; + GenQuad (StandardFunctionOp, ReturnVar, ProcSym, Param) ; + PopN (NoOfParam + 1) ; + PushTtok (ReturnVar, combinedtok) + ELSIF ConstExprError (Function, Param, paramtok, ConstExpr) + THEN + (* Fake a result as we have detected and reported an error. *) PopN (NoOfParam + 1) ; + ReturnVar := MakeConstLit (combinedtok, MakeKey ('1'), Cardinal) ; PushTtok (ReturnVar, combinedtok) ELSE - (* no we must resolve this at runtime or in the GCC optimizer. *) + (* We must resolve this at runtime or in the GCC optimizer. *) PopTF (Param, Type); PopN (NoOfParam) ; PushTtok (ProcSym, functok) ; @@ -8620,7 +8782,7 @@ END BuildLengthFunction ; |----------------| *) -PROCEDURE BuildOddFunction ; +PROCEDURE BuildOddFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR combinedtok, optok, @@ -8635,7 +8797,11 @@ BEGIN Var := OperandT (1) ; optok := OperandTok (1) ; combinedtok := MakeVirtualTok (functok, functok, optok) ; - IF IsVar(Var) OR IsConst(Var) + IF ConstExprError (ProcSym, Var, optok, ConstExpr) + THEN + (* Nothing to do. *) + PushTtok (False, combinedtok) + ELSIF IsVar(Var) OR IsConst(Var) THEN PopN (NoOfParam + 1) ; (* @@ -8719,13 +8885,12 @@ END BuildOddFunction ; |----------------| *) -PROCEDURE BuildAbsFunction ; +PROCEDURE BuildAbsFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR vartok, functok, combinedtok: CARDINAL ; NoOfParam, - ProcSym, Res, Var : CARDINAL ; BEGIN PopT (NoOfParam) ; @@ -8734,12 +8899,16 @@ BEGIN THEN Var := OperandT (1) ; vartok := OperandTok (1) ; + PopN (NoOfParam + 1) ; combinedtok := MakeVirtualTok (functok, functok, vartok) ; - IF IsVar(Var) OR IsConst(Var) + IF ConstExprError (ProcSym, Var, vartok, ConstExpr) + THEN + (* Create fake result. *) + Res := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (Res, GetSType (Var)) ; + PushTFtok (Res, GetSType (Var), combinedtok) + ELSIF IsVar(Var) OR IsConst(Var) THEN - ProcSym := OperandT (NoOfParam + 1) ; - PopN (NoOfParam + 1) ; - Res := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; PutVar (Res, GetSType (Var)) ; @@ -8780,13 +8949,12 @@ END BuildAbsFunction ; |----------------| |-------------| *) -PROCEDURE BuildCapFunction ; +PROCEDURE BuildCapFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR optok, functok, combinedtok: CARDINAL ; NoOfParam, - ProcSym, Res, Var : CARDINAL ; BEGIN PopT (NoOfParam) ; @@ -8795,12 +8963,17 @@ BEGIN THEN Var := OperandT (1) ; optok := OperandTok (1) ; - IF IsVar (Var) OR IsConst (Var) + PopN (NoOfParam + 1) ; + IF ConstExprError (ProcSym, Var, optok, ConstExpr) THEN - ProcSym := OperandT (NoOfParam + 1) ; - PopN (NoOfParam + 1) ; - - combinedtok := MakeVirtualTok (functok, functok, optok) ; + (* Create fake result. *) + combinedtok := MakeVirtual2Tok (functok, optok) ; + Res := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (Res, Char) ; + PushTFtok (Res, Char, combinedtok) + ELSIF IsVar (Var) OR IsConst (Var) + THEN + combinedtok := MakeVirtual2Tok (functok, optok) ; Res := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; PutVar (Res, Char) ; GenQuadO (combinedtok, StandardFunctionOp, Res, ProcSym, Var, FALSE) ; @@ -8851,10 +9024,12 @@ END BuildCapFunction ; |----------------| *) -PROCEDURE BuildChrFunction ; +PROCEDURE BuildChrFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR functok, + combinedtok, optok : CARDINAL ; + ReturnVar, NoOfParam, Var : CARDINAL ; BEGIN @@ -8864,9 +9039,16 @@ BEGIN THEN Var := OperandT (1) ; optok := OperandTok (1) ; - IF IsVar (Var) OR IsConst (Var) + PopN (NoOfParam + 1) ; + IF ConstExprError (ProcSym, Var, optok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtual2Tok (functok, optok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (ReturnVar, Char) ; + PushTFtok (ReturnVar, Char, combinedtok) + ELSIF IsVar (Var) OR IsConst (Var) THEN - PopN (NoOfParam + 1) ; (* Build macro: CONVERT( CHAR, Var ) *) @@ -8874,7 +9056,7 @@ BEGIN PushTtok (Char, functok) ; PushTtok (Var, optok) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, ConstExpr) ELSE MetaErrorT1 (optok, 'the parameter to {%AkCHR} must be a variable or constant, seen {%1ad}', @@ -8921,12 +9103,14 @@ END BuildChrFunction ; |----------------| *) -PROCEDURE BuildOrdFunction (Sym: CARDINAL) ; +PROCEDURE BuildOrdFunction (Sym: CARDINAL; ConstExpr: BOOLEAN) ; VAR + combinedtok, functok, - optok : CARDINAL ; + optok : CARDINAL ; + ReturnVar, NoOfParam, - Type, Var: CARDINAL ; + Type, Var : CARDINAL ; BEGIN PopT (NoOfParam) ; functok := OperandTok (NoOfParam + 1) ; @@ -8934,10 +9118,17 @@ BEGIN THEN Var := OperandT (1) ; optok := OperandTok (1) ; - IF IsVar (Var) OR IsConst (Var) + PopN (NoOfParam + 1) ; + IF ConstExprError (Sym, Var, optok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtual2Tok (functok, optok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (ReturnVar, Cardinal) ; + PushTFtok (ReturnVar, Cardinal, combinedtok) + ELSIF IsVar (Var) OR IsConst (Var) THEN Type := GetSType (Sym) ; - PopN (NoOfParam + 1) ; (* Build macro: CONVERT( CARDINAL, Var ) *) @@ -8945,7 +9136,7 @@ BEGIN PushTtok (Type, optok) ; PushTtok (Var, optok) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, ConstExpr) ELSE MetaErrorT2 (optok, 'the parameter to {%1Aa} must be a variable or constant, seen {%2ad}', @@ -8992,11 +9183,12 @@ END BuildOrdFunction ; |----------------| *) -PROCEDURE BuildIntFunction (Sym: CARDINAL) ; +PROCEDURE BuildIntFunction (Sym: CARDINAL; ConstExpr: BOOLEAN) ; VAR combinedtok, functok, optok : CARDINAL ; + ReturnVar, NoOfParam, Type, Var : CARDINAL ; BEGIN @@ -9006,16 +9198,23 @@ BEGIN THEN Var := OperandT (1) ; optok := OperandTok (1) ; - IF IsVar (Var) OR IsConst (Var) + PopN (NoOfParam + 1) ; + IF ConstExprError (Sym, Var, optok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtual2Tok (functok, optok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (ReturnVar, Integer) ; + PushTFtok (ReturnVar, Integer, combinedtok) + ELSIF IsVar (Var) OR IsConst (Var) THEN Type := GetSType (Sym) ; (* return type of function *) - PopN (NoOfParam + 1) ; (* Build macro: CONVERT( CARDINAL, Var ). *) PushTFtok (Convert, NulSym, functok) ; PushTtok (Type, functok) ; PushTtok (Var, optok) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, ConstExpr) ELSE combinedtok := MakeVirtualTok (functok, optok, optok) ; MetaErrorT2 (optok, @@ -9298,15 +9497,16 @@ END BuildRotateFunction ; |----------------| *) -PROCEDURE BuildValFunction ; +PROCEDURE BuildValFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR - functok : CARDINAL ; + combinedtok, + functok : CARDINAL ; + ReturnVar, NoOfParam, - ProcSym, - Exp, Type: CARDINAL ; + Exp, Type : CARDINAL ; tok, r, typetok, - exptok : CARDINAL ; + exptok : CARDINAL ; BEGIN PopT (NoOfParam) ; functok := OperandTok (NoOfParam + 1) ; @@ -9323,6 +9523,13 @@ BEGIN 'undeclared type found in builtin procedure function {%AkVAL} {%1ad}', Type) (* non recoverable error. *) + ELSIF ConstExprError (ProcSym, Exp, exptok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtualTok (functok, functok, exptok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Exp))) ; + PutVar (ReturnVar, Type) ; + PushTFtok (ReturnVar, Type, combinedtok) ELSIF (IsSet (Type) OR IsEnumeration (Type) OR IsSubrange (Type) OR IsType (Type) OR IsPointer (Type) OR IsProcType (Type)) AND (IsVar (Exp) OR IsConst (Exp) OR IsProcedure (Exp)) @@ -9334,7 +9541,7 @@ BEGIN PushTtok (Type, typetok) ; PushTtok (Exp, exptok) ; PushT (2) ; (* Two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, ConstExpr) ELSE (* not sensible to try and recover when we dont know the return type. *) MetaErrorT0 (functok, @@ -9383,16 +9590,15 @@ END BuildValFunction ; |----------------| *) -PROCEDURE BuildCastFunction ; +PROCEDURE BuildCastFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR combinedtok, + exptok, typetok, - functok, - vartok : CARDINAL ; - n : Name ; + functok : CARDINAL ; ReturnVar, NoOfParam, - Var, Type : CARDINAL ; + Exp, Type : CARDINAL ; BEGIN PopT (NoOfParam) ; functok := OperandTok (NoOfParam + 1) ; @@ -9400,32 +9606,40 @@ BEGIN THEN Type := OperandT (2) ; typetok := OperandTok (2) ; - Var := OperandT (1) ; - vartok := OperandTok (1) ; + Exp := OperandT (1) ; + exptok := OperandTok (1) ; IF IsUnknown (Type) THEN - n := GetSymName (Type) ; - WriteFormat1 ('undeclared type found in CAST (%a)', n) + (* we cannot recover if we dont have a type. *) + MetaErrorT1 (typetok, 'undeclared type {%1Aad} found in {%kCAST}', Type) + (* non recoverable error. *) + ELSIF ConstExprError (ProcSym, Exp, exptok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtualTok (functok, functok, exptok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Exp))) ; + PutVar (ReturnVar, Type) ; + PushTFtok (ReturnVar, Type, combinedtok) ELSIF IsSet (Type) OR IsEnumeration (Type) OR IsSubrange (Type) OR IsType (Type) OR IsPointer (Type) OR IsArray (Type) OR IsProcType (Type) THEN - IF IsConst (Var) + IF IsConst (Exp) THEN PopN (NoOfParam+1) ; (* Build macro: Type( Var ) *) PushTFtok (Type, NulSym, typetok) ; - PushTtok (Var, vartok) ; + PushTtok (Exp, exptok) ; PushT (1) ; (* one parameter *) BuildTypeCoercion - ELSIF IsVar (Var) OR IsProcedure (Var) + ELSIF IsVar (Exp) OR IsProcedure (Exp) THEN PopN (NoOfParam + 1) ; - combinedtok := MakeVirtualTok (functok, functok, vartok) ; + combinedtok := MakeVirtual2Tok (functok, exptok) ; ReturnVar := MakeTemporary (combinedtok, RightValue) ; PutVar (ReturnVar, Type) ; - GenQuadO (combinedtok, CastOp, ReturnVar, Type, Var, FALSE) ; + GenQuadO (combinedtok, CastOp, ReturnVar, Type, Exp, FALSE) ; PushTFtok (ReturnVar, Type, combinedtok) ELSE (* not sensible to try and recover when we dont know the return type. *) @@ -9482,7 +9696,7 @@ END BuildCastFunction ; with a type Param1. *) -PROCEDURE BuildConvertFunction ; +PROCEDURE BuildConvertFunction (ProcSym: CARDINAL; ConstExpr: BOOLEAN) ; VAR combinedtok, functok, @@ -9490,7 +9704,6 @@ VAR exptok : CARDINAL ; t, r, Exp, Type, - ProcSym, NoOfParam, ReturnVar : CARDINAL ; BEGIN @@ -9512,6 +9725,13 @@ BEGIN (* we cannot recover if we dont have a type. *) MetaErrorT1 (typetok, 'unknown {%1Ad} {%1ad} found in {%kCONVERT}', Exp) (* non recoverable error. *) + ELSIF ConstExprError (ProcSym, Exp, exptok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtualTok (functok, functok, exptok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Exp))) ; + PutVar (ReturnVar, Type) ; + PushTFtok (ReturnVar, Type, combinedtok) ELSIF (IsSet (Type) OR IsEnumeration (Type) OR IsSubrange (Type) OR IsType (Type) OR IsPointer (Type) OR IsProcType (Type) OR IsRecord (Type)) AND (IsVar (Exp) OR IsConst (Exp) OR IsProcedure (Exp)) @@ -9800,14 +10020,16 @@ END BuildMaxFunction ; |----------------| *) -PROCEDURE BuildTruncFunction (Sym: CARDINAL) ; +PROCEDURE BuildTruncFunction (Sym: CARDINAL; ConstExpr: BOOLEAN) ; VAR + combinedtok, vartok, - functok : CARDINAL ; - NoOfParam: CARDINAL ; + functok : CARDINAL ; + NoOfParam : CARDINAL ; + ReturnVar, ProcSym, Type, - Var : CARDINAL ; + Var : CARDINAL ; BEGIN PopT (NoOfParam) ; Assert (IsTrunc (OperandT (NoOfParam+1))) ; @@ -9821,7 +10043,14 @@ BEGIN vartok := OperandTtok (1) ; Type := GetSType (Sym) ; PopN (NoOfParam + 1) ; (* destroy arguments to this function *) - IF IsVar (Var) OR IsConst (Var) + IF ConstExprError (Sym, Var, vartok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtual2Tok (functok, vartok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (ReturnVar, Type) ; + PushTFtok (ReturnVar, Type, combinedtok) + ELSIF IsVar (Var) OR IsConst (Var) THEN IF IsRealType (GetSType (Var)) THEN @@ -9830,15 +10059,15 @@ BEGIN PushTtok (Type, functok) ; PushTtok (Var, vartok) ; PushT (2) ; (* two parameters *) - BuildConvertFunction + BuildConvertFunction (Convert, ConstExpr) ELSE MetaErrorT1 (functok, - 'argument to {%1E%ad} must be a float point type', Sym) ; + 'argument to {%1Ead} must be a float point type', Sym) ; PushTFtok (MakeConstLit (functok, MakeKey('0'), Type), Type, functok) END ELSE MetaErrorT2 (vartok, - 'argument to {%1E%ad} must be a variable or constant, seen {%2ad}', + 'argument to {%1Ead} must be a variable or constant, seen {%2ad}', Sym, Var) ; PushTFtok (MakeConstLit (functok, MakeKey('0'), Type), Type, functok) END @@ -9887,14 +10116,16 @@ END BuildTruncFunction ; |----------------| *) -PROCEDURE BuildFloatFunction (Sym: CARDINAL) ; +PROCEDURE BuildFloatFunction (Sym: CARDINAL; ConstExpr: BOOLEAN) ; VAR + combinedtok, vartok, - functok : CARDINAL ; - NoOfParam: CARDINAL ; + functok : CARDINAL ; + NoOfParam : CARDINAL ; + ReturnVar, Type, Var, - ProcSym : CARDINAL ; + ProcSym : CARDINAL ; BEGIN PopT (NoOfParam) ; functok := OperandTtok (NoOfParam + 1) ; @@ -9906,24 +10137,32 @@ BEGIN THEN Var := OperandT (1) ; vartok := OperandTtok (1) ; - IF IsVar (Var) OR IsConst (Var) + PopN (NoOfParam + 1) ; (* destroy arguments to this function. *) + IF ConstExprError (Sym, Var, vartok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtual2Tok (functok, vartok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (ReturnVar, Type) ; + PushTFtok (ReturnVar, Type, combinedtok) + ELSIF IsVar (Var) OR IsConst (Var) THEN - PopN (NoOfParam + 1) ; (* destroy arguments to this function. *) (* build macro: CONVERT (REAL, Var). *) PushTFtok (ProcSym, NulSym, functok) ; PushTtok (Type, functok) ; PushTtok (Var, vartok) ; PushT(2) ; (* two parameters. *) - BuildConvertFunction + BuildConvertFunction (ProcSym, ConstExpr) ELSE MetaErrorT1 (vartok, - 'argument to {%1E%ad} must be a variable or constant', ProcSym) ; + 'argument to {%1Ead} must be a variable or constant', ProcSym) ; PushTFtok (MakeConstLit (functok, MakeKey('0.0'), Type), Type, functok) END ELSE InternalError ('CONVERT procedure not found for FLOAT substitution') END ELSE + PopN (NoOfParam + 1) ; (* destroy arguments to this function. *) MetaErrorT1 (functok, 'the builtin procedure function {%1Ead} only has one parameter', Sym) ; @@ -9958,7 +10197,7 @@ END BuildFloatFunction ; |----------------| *) -PROCEDURE BuildReFunction ; +PROCEDURE BuildReFunction (Sym: CARDINAL; ConstExpr: BOOLEAN) ; VAR func, combinedtok, @@ -9966,6 +10205,7 @@ VAR functok : CARDINAL ; NoOfParam : CARDINAL ; ReturnVar, + Type, Var : CARDINAL ; BEGIN PopT (NoOfParam) ; @@ -9976,15 +10216,22 @@ BEGIN Var := OperandT (1) ; vartok := OperandTok (1) ; combinedtok := MakeVirtualTok (functok, functok, vartok) ; - IF IsVar(Var) OR IsConst(Var) + Type := ComplexToScalar (GetDType (Var)) ; + PopN (NoOfParam+1) ; (* destroy arguments to this function *) + IF ConstExprError (Sym, Var, vartok, ConstExpr) THEN + (* Generate fake result. *) + combinedtok := MakeVirtual2Tok (functok, vartok) ; ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; - PutVar (ReturnVar, ComplexToScalar (GetDType (Var))) ; + PutVar (ReturnVar, Type) ; + PushTFtok (ReturnVar, Type, combinedtok) + ELSIF IsVar(Var) OR IsConst(Var) + THEN + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (ReturnVar, Type) ; GenQuadO (combinedtok, StandardFunctionOp, ReturnVar, Re, Var, FALSE) ; - PopN (NoOfParam+1) ; (* destroy arguments to this function *) - PushTFtok (ReturnVar, GetSType (ReturnVar), combinedtok) + PushTFtok (ReturnVar, Type, combinedtok) ELSE - PopN (NoOfParam+1) ; (* destroy arguments to this function *) PushTFtok (MakeConstLit (combinedtok, MakeKey ('1.0'), RType), RType, combinedtok) ; MetaErrorT2 (vartok, 'the parameter to the builtin procedure function {%1Ead} must be a constant or a variable, seen {%2ad}', @@ -10026,7 +10273,7 @@ END BuildReFunction ; |----------------| *) -PROCEDURE BuildImFunction ; +PROCEDURE BuildImFunction (Sym: CARDINAL; ConstExpr: BOOLEAN) ; VAR func, combinedtok, @@ -10034,6 +10281,7 @@ VAR functok : CARDINAL ; NoOfParam : CARDINAL ; ReturnVar, + Type, Var : CARDINAL ; BEGIN PopT (NoOfParam) ; @@ -10043,16 +10291,23 @@ BEGIN THEN Var := OperandT (1) ; vartok := OperandTok (1) ; + Type := ComplexToScalar (GetDType (Var)) ; combinedtok := MakeVirtualTok (functok, functok, vartok) ; - IF IsVar(Var) OR IsConst(Var) + PopN (NoOfParam+1) ; (* destroy arguments to this function *) + IF ConstExprError (Sym, Var, vartok, ConstExpr) + THEN + (* Generate fake result. *) + combinedtok := MakeVirtual2Tok (functok, vartok) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; + PutVar (ReturnVar, Type) ; + PushTFtok (ReturnVar, Type, combinedtok) + ELSIF IsVar(Var) OR IsConst(Var) THEN ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (Var))) ; PutVar (ReturnVar, ComplexToScalar (GetDType (Var))) ; GenQuadO (combinedtok, StandardFunctionOp, ReturnVar, Im, Var, FALSE) ; - PopN (NoOfParam+1) ; (* destroy arguments to this function *) PushTFtok (ReturnVar, GetSType (ReturnVar), combinedtok) ELSE - PopN (NoOfParam+1) ; (* destroy arguments to this function *) PushTFtok (MakeConstLit (combinedtok, MakeKey ('1.0'), RType), RType, combinedtok) ; MetaErrorT2 (vartok, 'the parameter to the builtin procedure function {%1Ead} must be a constant or a variable, seen {%2ad}', @@ -10094,34 +10349,53 @@ END BuildImFunction ; |----------------| *) -PROCEDURE BuildCmplxFunction ; +PROCEDURE BuildCmplxFunction (func: CARDINAL; ConstExpr: BOOLEAN) ; VAR + failure : BOOLEAN ; functok, - endtok, + rtok, ltok, combinedtok: CARDINAL ; NoOfParam : CARDINAL ; - func, + type, ReturnVar, l, r : CARDINAL ; BEGIN PopT (NoOfParam) ; functok := OperandTtok (NoOfParam + 1) ; - func := OperandT (NoOfParam + 1) ; IF NoOfParam = 2 THEN l := OperandT (2) ; + ltok := OperandTtok (2) ; r := OperandT (1) ; - endtok := OperandTok (1) ; - combinedtok := MakeVirtualTok (functok, functok, endtok) ; - IF (IsVar(l) OR IsConst(l)) AND - (IsVar(r) OR IsConst(r)) + rtok := OperandTtok (1) ; + combinedtok := MakeVirtual2Tok (functok, rtok) ; + PopN (NoOfParam+1) ; (* Destroy arguments to this function. *) + type := GetCmplxReturnType (GetDType (l), GetDType (r)) ; + ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (l) AND IsConst (r))) ; + PutVar (ReturnVar, type) ; + failure := FALSE ; + IF ConstExprError (func, l, ltok, ConstExpr) + THEN + (* ConstExprError has generated an error message we will fall through + and check the right operand. *) + failure := TRUE + END ; + IF ConstExprError (func, r, rtok, ConstExpr) + THEN + (* Right operand is in error as a variable. *) + failure := TRUE + END ; + IF failure + THEN + (* Generate a fake result if either operand was a variable (and we + are in a const expression). *) + PushTFtok (ReturnVar, type, combinedtok) + ELSIF (IsVar (l) OR IsConst (l)) AND + (IsVar (r) OR IsConst (r)) THEN CheckExpressionCompatible (combinedtok, GetSType(l), GetSType(r)) ; - ReturnVar := MakeTemporary (combinedtok, AreConstant (IsConst (l) AND IsConst (r))) ; - PutVar (ReturnVar, GetCmplxReturnType (GetDType (l), GetDType (r))) ; GenQuadO (combinedtok, StandardFunctionOp, ReturnVar, Cmplx, Make2Tuple (l, r), TRUE) ; - PopN (NoOfParam+1) ; (* destroy arguments to this function *) - PushTFtok (ReturnVar, GetSType (ReturnVar), combinedtok) + PushTFtok (ReturnVar, type, combinedtok) ELSE IF IsVar (l) OR IsConst (l) THEN @@ -10133,7 +10407,6 @@ BEGIN 'the builtin procedure {%1Ead} requires two parameters, both must be variables or constants but the first parameter is {%2d}', func, l) END ; - PopN (NoOfParam+1) ; (* destroy arguments to this function *) PushTFtok (MakeConstLit (combinedtok, MakeKey ('1.0'), CType), CType, combinedtok) END ELSE @@ -11367,7 +11640,7 @@ BEGIN PushT (Address) ; PushTtok (sym, tokpos) ; PushT(2) ; (* Two parameters *) - BuildConvertFunction ; + BuildConvertFunction (Convert, FALSE) ; PopT (adr) ; RETURN adr END @@ -11480,7 +11753,7 @@ BEGIN PushT (Cardinal) ; PushTtok (idx, indexTok) ; PushT(2) ; (* Two parameters *) - BuildConvertFunction ; + BuildConvertFunction (Convert, FALSE) ; PopT (idx) END ; PutVar (tj, Cardinal) ; @@ -11824,11 +12097,12 @@ END BuildAccessWithField ; Empty +------------+ | NulSym | |------------| + tokpos is the position of the RETURN token. *) -PROCEDURE BuildNulExpression ; +PROCEDURE BuildNulExpression (tokpos: CARDINAL) ; BEGIN - PushT(NulSym) + PushTtok (NulSym, tokpos) END BuildNulExpression ; @@ -11838,25 +12112,25 @@ END BuildNulExpression ; it Pushes a Bitset type. *) -PROCEDURE BuildTypeForConstructor ; +PROCEDURE BuildTypeForConstructor (tokpos: CARDINAL) ; VAR c: ConstructorFrame ; BEGIN IF NoOfItemsInStackAddress(ConstructorStack)=0 THEN - PushT(Bitset) + PushTtok (Bitset, tokpos) ELSE c := PeepAddress(ConstructorStack, 1) ; WITH c^ DO - IF IsArray(type) OR IsSet(type) + IF IsArray (type) OR IsSet (type) THEN - PushT(GetSType(type)) - ELSIF IsRecord(type) + PushTtok (GetSType (type), tokpos) + ELSIF IsRecord (type) THEN - PushT(GetSType(GetNth(type, index))) + PushTtok (GetSType (GetNth (type, index)), tokpos) ELSE - MetaError1('{%1ad} is not a set, record or array type which is expected when constructing an aggregate entity', - type) + MetaError1 ('{%1ad} is not a set, record or array type which is expected when constructing an aggregate entity', + type) END END END @@ -11877,9 +12151,9 @@ END BuildTypeForConstructor ; |--------------| *) -PROCEDURE BuildSetStart ; +PROCEDURE BuildSetStart (tokpos: CARDINAL) ; BEGIN - PushT(Bitset) + PushTtok (Bitset, tokpos) END BuildSetStart ; @@ -11899,12 +12173,15 @@ END BuildSetStart ; PROCEDURE BuildSetEnd ; VAR - v, t: CARDINAL ; + valuepos, typepos, + combined, + value, type : CARDINAL ; BEGIN - PopT(v) ; - PopT(t) ; - PushTF(v, t) ; - Assert(IsSet(t)) + PopTtok (value, valuepos) ; + PopTtok (type, typepos) ; + combined := MakeVirtual2Tok (typepos, valuepos) ; + PushTFtok (value, type, combined) ; + Assert (IsSet (type)) END BuildSetEnd ; @@ -11921,52 +12198,53 @@ END BuildSetEnd ; | SetType | | SetType | |-----------| |-------------| + tokpos points to the opening '{'. *) -PROCEDURE BuildEmptySet ; +PROCEDURE BuildEmptySet (tokpos: CARDINAL) ; VAR - n : Name ; - Type : CARDINAL ; - NulSet: CARDINAL ; - tok : CARDINAL ; + n : Name ; + typepos, + Type : CARDINAL ; + NulSet : CARDINAL ; BEGIN - PopT(Type) ; (* type of set we are building *) - tok := GetTokenNo () ; - IF (Type=NulSym) AND Pim + PopTtok (Type, typepos) ; (* type of set we are building *) + IF (Type = NulSym) AND Pim THEN (* allowed generic {} in PIM Modula-2 *) - ELSIF IsUnknown(Type) + typepos := tokpos + ELSIF IsUnknown (Type) THEN - n := GetSymName(Type) ; - WriteFormat1('set type %a is undefined', n) ; + n := GetSymName (Type) ; + WriteFormat1 ('set type %a is undefined', n) ; Type := Bitset - ELSIF NOT IsSet(SkipType(Type)) + ELSIF NOT IsSet (SkipType (Type)) THEN - n := GetSymName(Type) ; + n := GetSymName (Type) ; WriteFormat1('expecting a set type %a', n) ; Type := Bitset ELSE - Type := SkipType(Type) ; - Assert((Type#NulSym)) + Type := SkipType (Type) ; + Assert (Type # NulSym) END ; - NulSet := MakeTemporary(tok, ImmediateValue) ; - PutVar(NulSet, Type) ; - PutConstSet(NulSet) ; + NulSet := MakeTemporary (typepos, ImmediateValue) ; + PutVar (NulSet, Type) ; + PutConstSet (NulSet) ; IF CompilerDebugging THEN - n := GetSymName(Type) ; - printf1('set type = %a\n', n) + n := GetSymName (Type) ; + printf1 ('set type = %a\n', n) END ; - PushNulSet(Type) ; (* onto the ALU stack *) - PopValue(NulSet) ; (* ALU -> symbol table *) + PushNulSet (Type) ; (* onto the ALU stack *) + PopValue (NulSet) ; (* ALU -> symbol table *) (* and now construct the M2Quads stack as defined by the comments above *) - PushT(Type) ; - PushT(NulSet) ; + PushTtok (Type, typepos) ; + PushTtok (NulSet, typepos) ; IF CompilerDebugging THEN - n := GetSymName(Type) ; - printf2('Type = %a (%d) built empty set\n', n, Type) ; + n := GetSymName (Type) ; + printf2 ('Type = %a (%d) built empty set\n', n, Type) ; DisplayStack (* Debugging info *) END END BuildEmptySet ; @@ -12159,7 +12437,7 @@ BEGIN IF type = NulSym THEN MetaErrorT0 (tokcbrpos, - '{%E}constructor requires a type before the opening {') + '{%E}constructor requires a type before the opening %{') ELSE ChangeToConstructor (tok, type) ; PutConstructorFrom (constValue, type) ; @@ -12196,10 +12474,11 @@ END SilentBuildConstructorStart ; PROCEDURE BuildConstructorStart (cbratokpos: CARDINAL) ; VAR + typepos, constValue, type : CARDINAL ; BEGIN - PopT (type) ; (* we ignore the type as we already have the constructor symbol from pass C *) + PopTtok (type, typepos) ; (* we ignore the type as we already have the constructor symbol from pass C *) GetConstructorFromFifoQueue (constValue) ; IF type # GetSType (constValue) THEN @@ -12223,25 +12502,33 @@ END BuildConstructorStart ; +------------+ +------------+ | const | | const | |------------| |------------| + + startpos is the start of the constructor, either the typename or '{' + cbratokpos is the '}'. *) -PROCEDURE BuildConstructorEnd (cbratokpos: CARDINAL) ; +PROCEDURE BuildConstructorEnd (startpos, cbratokpos: CARDINAL) ; VAR - typetok, value, valtok: CARDINAL ; BEGIN + IF DebugTokPos + THEN + WarnStringAt (InitString ('startpos'), startpos) ; + WarnStringAt (InitString ('cbratokpos'), cbratokpos) + END ; PopTtok (value, valtok) ; - IF IsBoolean (1) + IF DebugTokPos THEN - typetok := valtok - ELSE - typetok := OperandTtok (1) + WarnStringAt (InitString ('value valtok'), valtok) END ; - valtok := MakeVirtualTok (typetok, typetok, cbratokpos) ; + valtok := MakeVirtual2Tok (startpos, cbratokpos) ; PutDeclared (valtok, value) ; PushTtok (value, valtok) ; (* Use valtok as we now know it was a constructor. *) - PopConstructor - (* ; ErrorStringAt (Mark (InitString ('aggregate constant')), valtok) *) + PopConstructor ; + IF DebugTokPos + THEN + WarnStringAt (InitString ('aggregate constant'), valtok) + END END BuildConstructorEnd ; @@ -12487,7 +12774,7 @@ BEGIN PushT(type) ; PushT(sym) ; PushT(2) ; (* Two parameters *) - BuildConvertFunction ; + BuildConvertFunction (Convert, FALSE) ; PopT(sym) END ; RETURN( sym ) @@ -12574,19 +12861,21 @@ BEGIN IF Operator = OrTok THEN CheckBooleanId ; - PopBool (t1, f1) ; + PopBooltok (t1, f1, rightpos) ; PopTtok (Operator, OperatorPos) ; - PopBool (t2, f2) ; + PopBooltok (t2, f2, leftpos) ; Assert (f2=0) ; - PushBool (Merge (t1, t2), f1) + OperatorPos := MakeVirtualTok (OperatorPos, leftpos, rightpos) ; + PushBooltok (Merge (t1, t2), f1, OperatorPos) ELSIF (Operator = AndTok) OR (Operator = AmbersandTok) THEN CheckBooleanId ; - PopBool (t1, f1) ; + PopBooltok (t1, f1, rightpos) ; PopTtok (Operator, OperatorPos) ; - PopBool (t2, f2) ; + PopBooltok (t2, f2, leftpos) ; Assert (t2=0) ; - PushBool (t1, Merge (f1, f2)) + OperatorPos := MakeVirtualTok (OperatorPos, leftpos, rightpos) ; + PushBooltok (t1, Merge (f1, f2), OperatorPos) ELSE PopTFrwtok (right, righttype, rightrw, rightpos) ; PopTtok (Operator, OperatorPos) ; @@ -12773,11 +13062,9 @@ VAR f : BoolFrame ; BEGIN Assert (IsBoolean (i)) ; - (* - need to convert it to a variable containing the result. - Des will be a boolean type - *) - Des := MakeTemporary (tok, RightValue) ; + (* We need to convert the boolean top of stack into a variable or + constant boolean. *) + Des := MakeTemporary (tok, AreConstant (IsInConstExpression ())) ; PutVar (Des, Boolean) ; PushTtok (Des, tok) ; (* we have just increased the stack so we must use i+1 *) f := PeepAddress (BoolStack, i+1) ; @@ -12785,9 +13072,9 @@ BEGIN BuildAssignmentWithoutBounds (tok, FALSE, TRUE) ; (* restored stack *) f := PeepAddress (BoolStack, i) ; WITH f^ DO - TrueExit := Des ; (* alter Stack(i) to contain the variable *) + TrueExit := Des ; (* Alter Stack(i) to contain the variable. *) FalseExit := Boolean ; - BooleanOp := FALSE ; (* no longer a Boolean True|False pair *) + BooleanOp := FALSE ; (* No longer a Boolean True|False pair. *) Unbounded := NulSym ; Dimension := 0 ; ReadWrite := NulSym ; @@ -12893,10 +13180,10 @@ BEGIN GenQuadO (tokpos, Operator, Operand1, Operand2, 0, FALSE) END ; GenQuadO (tokpos, GotoOp, NulSym, NulSym, 0, FALSE) ; - PushBool (Merge (NextQuad-1, t1), Merge (NextQuad-2, f1)) + PushBooltok (Merge (NextQuad-1, t1), Merge (NextQuad-2, f1), tokpos) ELSIF (OperandT (2) = HashTok) OR (OperandT (2) = LessGreaterTok) THEN - (* are the two boolean expressions the different? *) + (* are the two boolean expressions different? *) PopBool (t1, f1) ; PopT (Tok) ; PopBool (t2, f2) ; @@ -12909,7 +13196,7 @@ BEGIN GenQuadO (tokpos, Operator, Operand1, Operand2, 0, FALSE) END ; GenQuadO (tokpos, GotoOp, NulSym, NulSym, 0, FALSE) ; - PushBool (Merge (NextQuad-2, f1), Merge (NextQuad-1, t1)) + PushBooltok (Merge (NextQuad-2, f1), Merge (NextQuad-1, t1), tokpos) ELSE MetaError0 ('only allowed to use the relation operators {%Ek=} {%Ek#} rather than {%Ek<} or {%Ek>} on {%EkBOOLEAN} expressions as these do not imply an ordinal value for {%kTRUE} or {%kFALSE}') END @@ -13061,7 +13348,7 @@ BEGIN GenQuadOtok (combinedTok, MakeOp (Op), left, right, 0, FALSE, leftpos, rightpos, UnknownTokenNo) ; (* True Exit *) GenQuadO (combinedTok, GotoOp, NulSym, NulSym, 0, FALSE) ; (* False Exit *) - PushBool (NextQuad-2, NextQuad-1) + PushBooltok (NextQuad-2, NextQuad-1, combinedTok) END END BuildRelOp ; @@ -13207,13 +13494,18 @@ BEGIN TokenNo := GetTokenNo () ELSE TokenNo := TokPos + END ; + IF GetDebugTraceQuad () + THEN + printf0('generating: ') ; + DisplayQuad (NextQuad) ; + (* MetaErrorT1 (TokenNo, '{%1On}', NextQuad) *) END END ; IF NextQuad=BreakAtQuad THEN stop END ; - (* DisplayQuad(NextQuad) ; *) NewQuad (NextQuad) END END GenQuadOTrash ; @@ -13292,35 +13584,142 @@ BEGIN END ; op1pos := Op1Pos ; op2pos := Op2Pos ; - op3pos := Op3Pos + op3pos := Op3Pos ; + IF GetDebugTraceQuad () + THEN + printf0('generating: ') ; + DisplayQuad (NextQuad) ; + (* MetaErrorT1 (TokenNo, '{%1On}', NextQuad) *) + END END ; IF NextQuad=BreakAtQuad THEN stop END ; - (* DisplayQuad(NextQuad) ; *) NewQuad (NextQuad) END END GenQuadOTypetok ; (* - DisplayQuadList - displays all quads. + DumpUntil - dump all quadruples until we seen the ending quadruple + with procsym in the third operand. + Return the quad number containing the match. *) -PROCEDURE DisplayQuadList ; +PROCEDURE DumpUntil (ending: QuadOperator; + procsym: CARDINAL; quad: CARDINAL) : CARDINAL ; +VAR + op : QuadOperator ; + op1, op2, op3: CARDINAL ; + f : QuadFrame ; +BEGIN + fprintf0 (GetDumpFile (), '\n...\n\n'); + REPEAT + GetQuad (quad, op, op1, op2, op3) ; + DisplayQuad (quad) ; + f := GetQF (quad) ; + quad := f^.Next + UNTIL (op = ending) AND (op3 = procsym) ; + RETURN quad +END DumpUntil ; + + +(* + GetCtorInit - return the init procedure for the module. +*) + +PROCEDURE GetCtorInit (sym: CARDINAL) : CARDINAL ; +VAR + ctor, init, fini, dep: CARDINAL ; +BEGIN + GetModuleCtors (sym, ctor, init, fini, dep) ; + RETURN init +END GetCtorInit ; + + +(* + GetCtorFini - return the fini procedure for the module. +*) + +PROCEDURE GetCtorFini (sym: CARDINAL) : CARDINAL ; +VAR + ctor, init, fini, dep: CARDINAL ; +BEGIN + GetModuleCtors (sym, ctor, init, fini, dep) ; + RETURN fini +END GetCtorFini ; + + +(* + DumpQuadrupleFilter - +*) + +PROCEDURE DumpQuadrupleFilter ; +VAR + f : QuadFrame ; + i : CARDINAL ; + op : QuadOperator ; + op1, op2, op3: CARDINAL ; +BEGIN + i := Head ; + WHILE i # 0 DO + GetQuad (i, op, op1, op2, op3) ; + IF (op = ProcedureScopeOp) AND IsDumpRequired (op3, TRUE) + THEN + i := DumpUntil (KillLocalVarOp, op3, i) + ELSIF (op = InitStartOp) AND IsDumpRequired (GetCtorInit (op3), TRUE) + THEN + i := DumpUntil (InitEndOp, op3, i) + ELSIF (op = FinallyStartOp) AND IsDumpRequired (GetCtorFini (op3), TRUE) + THEN + i := DumpUntil (FinallyEndOp, op3, i) + ELSE + f := GetQF (i) ; + i := f^.Next + END + END +END DumpQuadrupleFilter ; + + +(* + DumpQuadrupleAll - dump all quadruples. +*) + +PROCEDURE DumpQuadrupleAll ; VAR - i: CARDINAL ; f: QuadFrame ; + i: CARDINAL ; BEGIN - printf0('Quadruples:\n') ; i := Head ; - WHILE i#0 DO - DisplayQuad(i) ; - f := GetQF(i) ; + WHILE i # 0 DO + DisplayQuad (i) ; + f := GetQF (i) ; i := f^.Next END -END DisplayQuadList ; +END DumpQuadrupleAll ; + + +(* + DumpQuadruples - dump all quadruples providing the -fq, -fdump-lang-quad, + -fdump-lang-quad= or -fdump-lang-all were issued to the + command line. +*) + +PROCEDURE DumpQuadruples (title: ARRAY OF CHAR) ; +BEGIN + IF DumpLangQuad + THEN + CreateDumpQuad (title) ; + IF GetM2DumpFilter () = NIL + THEN + DumpQuadrupleAll + ELSE + DumpQuadrupleFilter + END ; + CloseDumpQuad + END +END DumpQuadruples ; (* @@ -13331,7 +13730,7 @@ PROCEDURE DisplayQuadRange (scope: CARDINAL; start, end: CARDINAL) ; VAR f: QuadFrame ; BEGIN - printf1 ('Quadruples for scope: %d\n', scope) ; + fprintf1 (GetDumpFile (), 'Quadruples for scope: %d\n', scope) ; WHILE (start <= end) AND (start # 0) DO DisplayQuad (start) ; f := GetQF (start) ; @@ -13463,7 +13862,7 @@ END ds ; PROCEDURE DisplayQuad (QuadNo: CARDINAL) ; BEGIN DSdbEnter ; - printf1('%4d ', QuadNo) ; WriteQuad(QuadNo) ; printf0('\n') ; + fprintf1 (GetDumpFile (), '%4d ', QuadNo) ; WriteQuad(QuadNo) ; fprintf0 (GetDumpFile (), '\n') ; DSdbExit END DisplayQuad ; @@ -13476,19 +13875,19 @@ PROCEDURE DisplayProcedureAttributes (proc: CARDINAL) ; BEGIN IF IsCtor (proc) THEN - printf0 (" (ctor)") + fprintf0 (GetDumpFile (), " (ctor)") END ; IF IsPublic (proc) THEN - printf0 (" (public)") + fprintf0 (GetDumpFile (), " (public)") END ; IF IsExtern (proc) THEN - printf0 (" (extern)") + fprintf0 (GetDumpFile (), " (extern)") END ; IF IsMonoName (proc) THEN - printf0 (" (mononame)") + fprintf0 (GetDumpFile (), " (mononame)") END END DisplayProcedureAttributes ; @@ -13507,11 +13906,17 @@ BEGIN f := GetQF(BufferQuad) ; WITH f^ DO WriteOperator(Operator) ; - printf1(' [%d] ', NoOfTimesReferenced) ; + fprintf1 (GetDumpFile (), ' [%d]', NoOfTimesReferenced) ; + IF ConstExpr + THEN + fprintf0 (GetDumpFile (), ' const ') + ELSE + fprintf0 (GetDumpFile (), ' ') + END ; CASE Operator OF HighOp : WriteOperand(Operand1) ; - printf1(' %4d ', Operand2) ; + fprintf1 (GetDumpFile (), ' %4d ', Operand2) ; WriteOperand(Operand3) | InitAddressOp, SavePriorityOp, @@ -13529,7 +13934,7 @@ BEGIN StringConvertCnulOp, StringConvertM2nulOp, StringLengthOp : WriteOperand(Operand1) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand3) | ElementSizeOp, IfInOp, @@ -13540,22 +13945,22 @@ BEGIN IfGreOp, IfLessEquOp, IfGreEquOp : WriteOperand(Operand1) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand2) ; - printf1(' %4d', Operand3) | + fprintf1 (GetDumpFile (), ' %4d', Operand3) | InlineOp, RetryOp, TryOp, - GotoOp : printf1('%4d', Operand3) | + GotoOp : fprintf1 (GetDumpFile (), '%4d', Operand3) | StatementNoteOp : l := TokenToLineNo(Operand3, 0) ; n := GetTokenName (Operand3) ; - printf4('%a:%d:%a (tokenno %d)', Operand1, l, n, Operand3) | - LineNumberOp : printf2('%a:%d', Operand1, Operand3) | + fprintf4 (GetDumpFile (), '%a:%d:%a (tokenno %d)', Operand1, l, n, Operand3) | + LineNumberOp : fprintf2 (GetDumpFile (), '%a:%d', Operand1, Operand3) | EndFileOp : n1 := GetSymName(Operand3) ; - printf1('%a', n1) | + fprintf1 (GetDumpFile (), '%a', n1) | ThrowOp, ReturnOp, @@ -13564,7 +13969,7 @@ BEGIN ProcedureScopeOp : n1 := GetSymName(Operand2) ; n2 := GetSymName(Operand3) ; - printf3(' %4d %a %a', Operand1, n1, n2) ; + fprintf3 (GetDumpFile (), ' %4d %a %a', Operand1, n1, n2) ; DisplayProcedureAttributes (Operand3) | NewLocalVarOp, FinallyStartOp, @@ -13572,19 +13977,19 @@ BEGIN InitEndOp, InitStartOp : n1 := GetSymName(Operand2) ; n2 := GetSymName(Operand3) ; - printf3(' %4d %a %a', Operand1, n1, n2) | + fprintf3 (GetDumpFile (), ' %4d %a %a', Operand1, n1, n2) | ModuleScopeOp, StartModFileOp : n1 := GetSymName(Operand3) ; - printf4('%a:%d %a(%d)', Operand2, Operand1, n1, Operand3) | + fprintf4 (GetDumpFile (), '%a:%d %a(%d)', Operand2, Operand1, n1, Operand3) | StartDefFileOp : n1 := GetSymName(Operand3) ; - printf2(' %4d %a', Operand1, n1) | + fprintf2 (GetDumpFile (), ' %4d %a', Operand1, n1) | OptParamOp, - ParamOp : printf1('%4d ', Operand1) ; + ParamOp : fprintf1 (GetDumpFile (), '%4d ', Operand1) ; WriteOperand(Operand2) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand3) | SizeOp, RecordFieldOp, @@ -13612,9 +14017,9 @@ BEGIN DivFloorOp, ModTruncOp, DivTruncOp : WriteOperand(Operand1) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand2) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand3) | DummyOp, CodeOnOp, @@ -13624,23 +14029,23 @@ BEGIN OptimizeOnOp, OptimizeOffOp : | BuiltinConstOp : WriteOperand(Operand1) ; - printf1(' %a', Operand3) | + fprintf1 (GetDumpFile (), ' %a', Operand3) | BuiltinTypeInfoOp : WriteOperand(Operand1) ; - printf1(' %a', Operand2) ; - printf1(' %a', Operand3) | + fprintf1 (GetDumpFile (), ' %a', Operand2) ; + fprintf1 (GetDumpFile (), ' %a', Operand3) | StandardFunctionOp: WriteOperand(Operand1) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand2) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand3) | CatchBeginOp, CatchEndOp : | RangeCheckOp, - ErrorOp : WriteRangeCheck(Operand3) | + ErrorOp : WriteRangeCheck (Operand3) | SaveExceptionOp, RestoreExceptionOp: WriteOperand(Operand1) ; - printf0(' ') ; + fprintf0 (GetDumpFile (), ' ') ; WriteOperand(Operand3) ELSE @@ -13658,96 +14063,96 @@ PROCEDURE WriteOperator (Operator: QuadOperator) ; BEGIN CASE Operator OF - ArithAddOp : printf0('Arith + ') | - InitAddressOp : printf0('InitAddress ') | - LogicalOrOp : printf0('Or ') | - LogicalAndOp : printf0('And ') | - LogicalXorOp : printf0('Xor ') | - LogicalDiffOp : printf0('Ldiff ') | - LogicalShiftOp : printf0('Shift ') | - LogicalRotateOp : printf0('Rotate ') | - BecomesOp : printf0('Becomes ') | - IndrXOp : printf0('IndrX ') | - XIndrOp : printf0('XIndr ') | - ArrayOp : printf0('Array ') | - ElementSizeOp : printf0('ElementSize ') | - RecordFieldOp : printf0('RecordField ') | - AddrOp : printf0('Addr ') | - SizeOp : printf0('Size ') | - IfInOp : printf0('If IN ') | - IfNotInOp : printf0('If NOT IN ') | - IfNotEquOp : printf0('If <> ') | - IfEquOp : printf0('If = ') | - IfLessEquOp : printf0('If <= ') | - IfGreEquOp : printf0('If >= ') | - IfGreOp : printf0('If > ') | - IfLessOp : printf0('If < ') | - GotoOp : printf0('Goto ') | - DummyOp : printf0('Dummy ') | - ModuleScopeOp : printf0('ModuleScopeOp ') | - StartDefFileOp : printf0('StartDefFile ') | - StartModFileOp : printf0('StartModFile ') | - EndFileOp : printf0('EndFileOp ') | - InitStartOp : printf0('InitStart ') | - InitEndOp : printf0('InitEnd ') | - FinallyStartOp : printf0('FinallyStart ') | - FinallyEndOp : printf0('FinallyEnd ') | - RetryOp : printf0('Retry ') | - TryOp : printf0('Try ') | - ThrowOp : printf0('Throw ') | - CatchBeginOp : printf0('CatchBegin ') | - CatchEndOp : printf0('CatchEnd ') | - AddOp : printf0('+ ') | - SubOp : printf0('- ') | - DivM2Op : printf0('DIV M2 ') | - ModM2Op : printf0('MOD M2 ') | - DivCeilOp : printf0('DIV ceil ') | - ModCeilOp : printf0('MOD ceil ') | - DivFloorOp : printf0('DIV floor ') | - ModFloorOp : printf0('MOD floor ') | - DivTruncOp : printf0('DIV trunc ') | - ModTruncOp : printf0('MOD trunc ') | - MultOp : printf0('* ') | - NegateOp : printf0('Negate ') | - InclOp : printf0('Incl ') | - ExclOp : printf0('Excl ') | - ReturnOp : printf0('Return ') | - ReturnValueOp : printf0('ReturnValue ') | - FunctValueOp : printf0('FunctValue ') | - CallOp : printf0('Call ') | - ParamOp : printf0('Param ') | - OptParamOp : printf0('OptParam ') | - NewLocalVarOp : printf0('NewLocalVar ') | - KillLocalVarOp : printf0('KillLocalVar ') | - ProcedureScopeOp : printf0('ProcedureScope ') | - UnboundedOp : printf0('Unbounded ') | - CoerceOp : printf0('Coerce ') | - ConvertOp : printf0('Convert ') | - CastOp : printf0('Cast ') | - HighOp : printf0('High ') | - CodeOnOp : printf0('CodeOn ') | - CodeOffOp : printf0('CodeOff ') | - ProfileOnOp : printf0('ProfileOn ') | - ProfileOffOp : printf0('ProfileOff ') | - OptimizeOnOp : printf0('OptimizeOn ') | - OptimizeOffOp : printf0('OptimizeOff ') | - InlineOp : printf0('Inline ') | - StatementNoteOp : printf0('StatementNote ') | - LineNumberOp : printf0('LineNumber ') | - BuiltinConstOp : printf0('BuiltinConst ') | - BuiltinTypeInfoOp : printf0('BuiltinTypeInfo ') | - StandardFunctionOp : printf0('StandardFunction ') | - SavePriorityOp : printf0('SavePriority ') | - RestorePriorityOp : printf0('RestorePriority ') | - RangeCheckOp : printf0('RangeCheck ') | - ErrorOp : printf0('Error ') | - SaveExceptionOp : printf0('SaveException ') | - RestoreExceptionOp : printf0('RestoreException ') | - StringConvertCnulOp : printf0('StringConvertCnul ') | - StringConvertM2nulOp : printf0('StringConvertM2nul') | - StringLengthOp : printf0('StringLength ') | - SubrangeHighOp : printf0('SubrangeHigh ') | - SubrangeLowOp : printf0('SubrangeLow ') + ArithAddOp : fprintf0 (GetDumpFile (), 'Arith + ') | + InitAddressOp : fprintf0 (GetDumpFile (), 'InitAddress ') | + LogicalOrOp : fprintf0 (GetDumpFile (), 'Or ') | + LogicalAndOp : fprintf0 (GetDumpFile (), 'And ') | + LogicalXorOp : fprintf0 (GetDumpFile (), 'Xor ') | + LogicalDiffOp : fprintf0 (GetDumpFile (), 'Ldiff ') | + LogicalShiftOp : fprintf0 (GetDumpFile (), 'Shift ') | + LogicalRotateOp : fprintf0 (GetDumpFile (), 'Rotate ') | + BecomesOp : fprintf0 (GetDumpFile (), 'Becomes ') | + IndrXOp : fprintf0 (GetDumpFile (), 'IndrX ') | + XIndrOp : fprintf0 (GetDumpFile (), 'XIndr ') | + ArrayOp : fprintf0 (GetDumpFile (), 'Array ') | + ElementSizeOp : fprintf0 (GetDumpFile (), 'ElementSize ') | + RecordFieldOp : fprintf0 (GetDumpFile (), 'RecordField ') | + AddrOp : fprintf0 (GetDumpFile (), 'Addr ') | + SizeOp : fprintf0 (GetDumpFile (), 'Size ') | + IfInOp : fprintf0 (GetDumpFile (), 'If IN ') | + IfNotInOp : fprintf0 (GetDumpFile (), 'If NOT IN ') | + IfNotEquOp : fprintf0 (GetDumpFile (), 'If <> ') | + IfEquOp : fprintf0 (GetDumpFile (), 'If = ') | + IfLessEquOp : fprintf0 (GetDumpFile (), 'If <= ') | + IfGreEquOp : fprintf0 (GetDumpFile (), 'If >= ') | + IfGreOp : fprintf0 (GetDumpFile (), 'If > ') | + IfLessOp : fprintf0 (GetDumpFile (), 'If < ') | + GotoOp : fprintf0 (GetDumpFile (), 'Goto ') | + DummyOp : fprintf0 (GetDumpFile (), 'Dummy ') | + ModuleScopeOp : fprintf0 (GetDumpFile (), 'ModuleScopeOp ') | + StartDefFileOp : fprintf0 (GetDumpFile (), 'StartDefFile ') | + StartModFileOp : fprintf0 (GetDumpFile (), 'StartModFile ') | + EndFileOp : fprintf0 (GetDumpFile (), 'EndFileOp ') | + InitStartOp : fprintf0 (GetDumpFile (), 'InitStart ') | + InitEndOp : fprintf0 (GetDumpFile (), 'InitEnd ') | + FinallyStartOp : fprintf0 (GetDumpFile (), 'FinallyStart ') | + FinallyEndOp : fprintf0 (GetDumpFile (), 'FinallyEnd ') | + RetryOp : fprintf0 (GetDumpFile (), 'Retry ') | + TryOp : fprintf0 (GetDumpFile (), 'Try ') | + ThrowOp : fprintf0 (GetDumpFile (), 'Throw ') | + CatchBeginOp : fprintf0 (GetDumpFile (), 'CatchBegin ') | + CatchEndOp : fprintf0 (GetDumpFile (), 'CatchEnd ') | + AddOp : fprintf0 (GetDumpFile (), '+ ') | + SubOp : fprintf0 (GetDumpFile (), '- ') | + DivM2Op : fprintf0 (GetDumpFile (), 'DIV M2 ') | + ModM2Op : fprintf0 (GetDumpFile (), 'MOD M2 ') | + DivCeilOp : fprintf0 (GetDumpFile (), 'DIV ceil ') | + ModCeilOp : fprintf0 (GetDumpFile (), 'MOD ceil ') | + DivFloorOp : fprintf0 (GetDumpFile (), 'DIV floor ') | + ModFloorOp : fprintf0 (GetDumpFile (), 'MOD floor ') | + DivTruncOp : fprintf0 (GetDumpFile (), 'DIV trunc ') | + ModTruncOp : fprintf0 (GetDumpFile (), 'MOD trunc ') | + MultOp : fprintf0 (GetDumpFile (), '* ') | + NegateOp : fprintf0 (GetDumpFile (), 'Negate ') | + InclOp : fprintf0 (GetDumpFile (), 'Incl ') | + ExclOp : fprintf0 (GetDumpFile (), 'Excl ') | + ReturnOp : fprintf0 (GetDumpFile (), 'Return ') | + ReturnValueOp : fprintf0 (GetDumpFile (), 'ReturnValue ') | + FunctValueOp : fprintf0 (GetDumpFile (), 'FunctValue ') | + CallOp : fprintf0 (GetDumpFile (), 'Call ') | + ParamOp : fprintf0 (GetDumpFile (), 'Param ') | + OptParamOp : fprintf0 (GetDumpFile (), 'OptParam ') | + NewLocalVarOp : fprintf0 (GetDumpFile (), 'NewLocalVar ') | + KillLocalVarOp : fprintf0 (GetDumpFile (), 'KillLocalVar ') | + ProcedureScopeOp : fprintf0 (GetDumpFile (), 'ProcedureScope ') | + UnboundedOp : fprintf0 (GetDumpFile (), 'Unbounded ') | + CoerceOp : fprintf0 (GetDumpFile (), 'Coerce ') | + ConvertOp : fprintf0 (GetDumpFile (), 'Convert ') | + CastOp : fprintf0 (GetDumpFile (), 'Cast ') | + HighOp : fprintf0 (GetDumpFile (), 'High ') | + CodeOnOp : fprintf0 (GetDumpFile (), 'CodeOn ') | + CodeOffOp : fprintf0 (GetDumpFile (), 'CodeOff ') | + ProfileOnOp : fprintf0 (GetDumpFile (), 'ProfileOn ') | + ProfileOffOp : fprintf0 (GetDumpFile (), 'ProfileOff ') | + OptimizeOnOp : fprintf0 (GetDumpFile (), 'OptimizeOn ') | + OptimizeOffOp : fprintf0 (GetDumpFile (), 'OptimizeOff ') | + InlineOp : fprintf0 (GetDumpFile (), 'Inline ') | + StatementNoteOp : fprintf0 (GetDumpFile (), 'StatementNote ') | + LineNumberOp : fprintf0 (GetDumpFile (), 'LineNumber ') | + BuiltinConstOp : fprintf0 (GetDumpFile (), 'BuiltinConst ') | + BuiltinTypeInfoOp : fprintf0 (GetDumpFile (), 'BuiltinTypeInfo ') | + StandardFunctionOp : fprintf0 (GetDumpFile (), 'StandardFunction ') | + SavePriorityOp : fprintf0 (GetDumpFile (), 'SavePriority ') | + RestorePriorityOp : fprintf0 (GetDumpFile (), 'RestorePriority ') | + RangeCheckOp : fprintf0 (GetDumpFile (), 'RangeCheck ') | + ErrorOp : fprintf0 (GetDumpFile (), 'Error ') | + SaveExceptionOp : fprintf0 (GetDumpFile (), 'SaveException ') | + RestoreExceptionOp : fprintf0 (GetDumpFile (), 'RestoreException ') | + StringConvertCnulOp : fprintf0 (GetDumpFile (), 'StringConvertCnul ') | + StringConvertM2nulOp : fprintf0 (GetDumpFile (), 'StringConvertM2nul') | + StringLengthOp : fprintf0 (GetDumpFile (), 'StringLength ') | + SubrangeHighOp : fprintf0 (GetDumpFile (), 'SubrangeHigh ') | + SubrangeLowOp : fprintf0 (GetDumpFile (), 'SubrangeLow ') ELSE InternalError ('operator not expected') @@ -13765,15 +14170,15 @@ VAR BEGIN IF Sym = NulSym THEN - printf0 ('') + fprintf0 (GetDumpFile (), '') ELSE n := GetSymName (Sym) ; - printf1 ('%a', n) ; + fprintf1 (GetDumpFile (), '%a', n) ; IF IsVar (Sym) OR IsConst (Sym) THEN - printf0 ('[') ; WriteMode (GetMode (Sym)) ; printf0(']') + fprintf0 (GetDumpFile (), '[') ; WriteMode (GetMode (Sym)) ; fprintf0 (GetDumpFile (), ']') END ; - printf1 ('(%d)', Sym) + fprintf1 (GetDumpFile (), '(%d)', Sym) END END WriteOperand ; @@ -13782,10 +14187,10 @@ PROCEDURE WriteMode (Mode: ModeOfAddr) ; BEGIN CASE Mode OF - ImmediateValue: printf0('i') | - NoValue : printf0('n') | - RightValue : printf0('r') | - LeftValue : printf0('l') + ImmediateValue: fprintf0 (GetDumpFile (), 'i') | + NoValue : fprintf0 (GetDumpFile (), 'n') | + RightValue : fprintf0 (GetDumpFile (), 'r') | + LeftValue : fprintf0 (GetDumpFile (), 'l') ELSE InternalError ('unrecognised mode') @@ -15356,7 +15761,7 @@ END PopAuto ; PROCEDURE PushInConstExpression ; BEGIN - PushWord(ConstStack, InConstExpression) ; + PushWord(ConstExprStack, InConstExpression) ; InConstExpression := TRUE END PushInConstExpression ; @@ -15367,7 +15772,7 @@ END PushInConstExpression ; PROCEDURE PopInConstExpression ; BEGIN - InConstExpression := PopWord(ConstStack) + InConstExpression := PopWord(ConstExprStack) END PopInConstExpression ; @@ -15381,6 +15786,37 @@ BEGIN END IsInConstExpression ; +(* + PushInConstParameters - push the InConstParameters flag and then set it to TRUE. +*) + +PROCEDURE PushInConstParameters ; +BEGIN + PushWord (ConstParamStack, InConstParameters) ; + InConstParameters := TRUE +END PushInConstParameters ; + + +(* + PopInConstParameters - restores the previous value of the InConstParameters. +*) + +PROCEDURE PopInConstParameters ; +BEGIN + InConstParameters := PopWord(ConstParamStack) +END PopInConstParameters ; + + +(* + IsInConstParameters - returns the value of the InConstParameters. +*) + +PROCEDURE IsInConstParameters () : BOOLEAN ; +BEGIN + RETURN( InConstParameters ) +END IsInConstParameters ; + + (* MustCheckOverflow - returns TRUE if the quadruple should test for overflow. *) @@ -15469,7 +15905,8 @@ BEGIN CatchStack := InitStackWord() ; ExceptStack := InitStackWord() ; ConstructorStack := InitStackAddress() ; - ConstStack := InitStackWord() ; + ConstParamStack := InitStackWord () ; + ConstExprStack := InitStackWord () ; (* StressStack ; *) SuppressWith := FALSE ; Head := 1 ; @@ -15484,10 +15921,11 @@ BEGIN AutoStack := InitStackWord() ; IsAutoOn := TRUE ; InConstExpression := FALSE ; + InConstParameters := FALSE ; FreeLineList := NIL ; InitList(VarientFields) ; VarientFieldNo := 0 ; - NoOfQuads := 0 + NoOfQuads := 0 ; END Init ; diff --git a/gcc/m2/gm2-compiler/M2Range.def b/gcc/m2/gm2-compiler/M2Range.def index 2ffd74f2c378..f8c211566748 100644 --- a/gcc/m2/gm2-compiler/M2Range.def +++ b/gcc/m2/gm2-compiler/M2Range.def @@ -51,7 +51,9 @@ FROM DynamicStrings IMPORT String ; can be generated later on. *) -PROCEDURE InitAssignmentRangeCheck (tokno: CARDINAL; d, e: CARDINAL) : CARDINAL ; +PROCEDURE InitAssignmentRangeCheck (tokno: CARDINAL; + des, expr: CARDINAL; + destok, exprtok: CARDINAL) : CARDINAL ; (* diff --git a/gcc/m2/gm2-compiler/M2Range.mod b/gcc/m2/gm2-compiler/M2Range.mod index 654ac046c6fb..50c2a48fe7ff 100644 --- a/gcc/m2/gm2-compiler/M2Range.mod +++ b/gcc/m2/gm2-compiler/M2Range.mod @@ -601,16 +601,22 @@ END PutRangeArraySubscript ; (* InitAssignmentRangeCheck - returns a range check node which remembers the information necessary - so that a range check for d := e + so that a range check for des := expr can be generated later on. *) -PROCEDURE InitAssignmentRangeCheck (tokno: CARDINAL; d, e: CARDINAL) : CARDINAL ; +PROCEDURE InitAssignmentRangeCheck (tokno: CARDINAL; + des, expr: CARDINAL; + destok, exprtok: CARDINAL) : CARDINAL ; VAR r: CARDINAL ; + p: Range ; BEGIN r := InitRange () ; - Assert (PutRange (tokno, GetIndice (RangeIndex, r), assignment, d, e) # NIL) ; + p := GetIndice (RangeIndex, r) ; + Assert (PutRange (tokno, p, assignment, des, expr) # NIL) ; + p^.destok := destok ; + p^.exprtok := exprtok ; RETURN r END InitAssignmentRangeCheck ; @@ -1207,7 +1213,7 @@ VAR BEGIN p := GetIndice (RangeIndex, r) ; WITH p^ DO - TryDeclareConstant (tokenNo, expr) ; + TryDeclareConstant (exprtok, expr) ; IF desLowestType # NulSym THEN IF AssignmentTypeCompatible (tokenno, "", des, expr) diff --git a/gcc/m2/gm2-compiler/M2Scope.mod b/gcc/m2/gm2-compiler/M2Scope.mod index f157ad42ba6f..2c2ff459d81e 100644 --- a/gcc/m2/gm2-compiler/M2Scope.mod +++ b/gcc/m2/gm2-compiler/M2Scope.mod @@ -29,7 +29,6 @@ FROM SymbolTable IMPORT IsProcedure, IsDefImp, GetProcedureQuads, GetScope, GetProcedureScope, IsModule, IsModuleWithinProcedure, GetSymName, GetErrorScope, NulSym ; -FROM M2Options IMPORT DisplayQuadruples ; FROM M2Printf IMPORT printf0, printf1 ; FROM M2Quads IMPORT QuadOperator, GetFirstQuad, GetNextQuad, GetQuad, DisplayQuadRange ; FROM M2StackWord IMPORT StackOfWord, InitStackWord, KillStackWord, @@ -38,7 +37,8 @@ IMPORT M2Error ; CONST - Debugging = FALSE ; + Debugging = FALSE ; + TraceQuadruples = FALSE ; TYPE scopeKind = (unsetscope, ignorescope, procedurescope, modulescope, definitionscope, implementationscope, programscope) ; @@ -381,7 +381,7 @@ BEGIN ELSE sb := GetGlobalQuads (sb, scope) ; END ; - IF DisplayQuadruples + IF TraceQuadruples THEN DisplayScope (sb) END @@ -416,13 +416,13 @@ END KillScopeBlock ; PROCEDURE ForeachScopeBlockDo2 (sb: ScopeBlock; p: ScopeProcedure2) ; BEGIN - IF DisplayQuadruples + IF TraceQuadruples THEN printf0 ("ForeachScopeBlockDo\n") END ; WHILE sb#NIL DO WITH sb^ DO - IF DisplayQuadruples + IF TraceQuadruples THEN DisplayScope (sb) END ; @@ -435,7 +435,7 @@ BEGIN END ; sb := sb^.next END ; - IF DisplayQuadruples + IF TraceQuadruples THEN printf0 ("end ForeachScopeBlockDo\n\n") END ; @@ -449,13 +449,13 @@ END ForeachScopeBlockDo2 ; PROCEDURE ForeachScopeBlockDo3 (sb: ScopeBlock; p: ScopeProcedure3) ; BEGIN - IF DisplayQuadruples + IF TraceQuadruples THEN printf0 ("ForeachScopeBlockDo\n") END ; WHILE sb#NIL DO WITH sb^ DO - IF DisplayQuadruples + IF TraceQuadruples THEN DisplayScope (sb) END ; @@ -468,7 +468,7 @@ BEGIN END ; sb := sb^.next END ; - IF DisplayQuadruples + IF TraceQuadruples THEN printf0 ("end ForeachScopeBlockDo\n\n") END ; diff --git a/gcc/m2/gm2-compiler/M2SymInit.mod b/gcc/m2/gm2-compiler/M2SymInit.mod index 0b23e53a4a91..4c6035ae9292 100644 --- a/gcc/m2/gm2-compiler/M2SymInit.mod +++ b/gcc/m2/gm2-compiler/M2SymInit.mod @@ -571,10 +571,11 @@ VAR op : QuadOperator ; op1, op2, op3 : CARDINAL ; op1tok, op2tok, op3tok, qtok: CARDINAL ; - overflowChecking : BOOLEAN ; + constExpr, overflowChecking : BOOLEAN ; s : String ; BEGIN - GetQuadOtok (quad, qtok, op, op1, op2, op3, overflowChecking, + GetQuadOtok (quad, qtok, op, op1, op2, op3, + overflowChecking, constExpr, op1tok, op2tok, op3tok) ; IF IsUniqueWarning (qtok) THEN @@ -1249,7 +1250,7 @@ VAR op : QuadOperator ; op1, op2, op3 : CARDINAL ; op1tok, op2tok, op3tok, qtok: CARDINAL ; - overflowChecking : BOOLEAN ; + constExpr, overflowChecking : BOOLEAN ; BEGIN IF quad = 3140 THEN @@ -1262,7 +1263,8 @@ BEGIN ForeachLocalSymDo (procSym, PrintSym) ; printf0 ("***********************************\n") END ; - GetQuadOtok (quad, qtok, op, op1, op2, op3, overflowChecking, + GetQuadOtok (quad, qtok, op, op1, op2, op3, + overflowChecking, constExpr, op1tok, op2tok, op3tok) ; op1tok := DefaultTokPos (op1tok, qtok) ; op2tok := DefaultTokPos (op2tok, qtok) ; @@ -1541,12 +1543,13 @@ VAR op : QuadOperator ; op1, proc, param, paramValue : CARDINAL ; op1tok, op2tok, paramtok, qtok: CARDINAL ; - overflowChecking : BOOLEAN ; + constExpr, overflowChecking : BOOLEAN ; heapValue, ptrToHeap : CARDINAL ; BEGIN IF trashQuad # 0 THEN - GetQuadOtok (trashQuad, qtok, op, op1, proc, param, overflowChecking, + GetQuadOtok (trashQuad, qtok, op, op1, proc, param, + overflowChecking, constExpr, op1tok, op2tok, paramtok) ; heapValue := GetQuadTrash (trashQuad) ; IF Debugging diff --git a/gcc/m2/gm2-compiler/P0SyntaxCheck.bnf b/gcc/m2/gm2-compiler/P0SyntaxCheck.bnf index c1c86c1827dc..07f861adac9c 100644 --- a/gcc/m2/gm2-compiler/P0SyntaxCheck.bnf +++ b/gcc/m2/gm2-compiler/P0SyntaxCheck.bnf @@ -82,9 +82,10 @@ CONST (* giving up. *) VAR - seenError : BOOLEAN ; - LastIdent : Name ; - InsertCount: CARDINAL ; + EnableImportCheck, + seenError : BOOLEAN ; + LastIdent : Name ; + InsertCount : CARDINAL ; PROCEDURE ErrorString (s: String) ; @@ -319,6 +320,21 @@ BEGIN END PeepToken ; +(* + DetectImport - checks whether the next token is an import or from and if so + generates an error message. This is called after an export + statement to notify the user that the ordering is incorrect. +*) + +PROCEDURE DetectImport ; +BEGIN + IF (currenttoken = importtok) OR (currenttoken = fromtok) + THEN + ErrorArray ('an {%AkIMPORT} statement must preceed an {%kEXPORT} statement') + END +END DetectImport ; + + (* Expect - *) @@ -328,6 +344,10 @@ BEGIN IF currenttoken=t THEN GetToken ; + IF EnableImportCheck + THEN + DetectImport + END ; IF Pass0 THEN PeepToken (stopset0, stopset1, stopset2) @@ -347,6 +367,7 @@ END Expect ; PROCEDURE CompilationUnit () : BOOLEAN ; BEGIN seenError := FALSE ; + EnableImportCheck := FALSE ; InsertCount := 0 ; FileUnit (SetOfStop0{eoftok}, SetOfStop1{}, SetOfStop2{}) ; RETURN NOT seenError @@ -883,7 +904,9 @@ Priority := "[" ConstExpression "]" =: Export := "EXPORT" ( "QUALIFIED" IdentList | "UNQUALIFIED" IdentList | IdentList - ) ";" =: + ) % EnableImportCheck := TRUE % + ";" % EnableImportCheck := FALSE % + =: Import := "FROM" Ident "IMPORT" IdentList ";" | "IMPORT" % PushTtok (ImportTok, GetTokenNo () -1) diff --git a/gcc/m2/gm2-compiler/P2Build.bnf b/gcc/m2/gm2-compiler/P2Build.bnf index b22f052c92bc..d69ce2cf17e5 100644 --- a/gcc/m2/gm2-compiler/P2Build.bnf +++ b/gcc/m2/gm2-compiler/P2Build.bnf @@ -104,7 +104,6 @@ FROM P2SymBuild IMPORT P2StartBuildProgramModule, BuildVarientSelector, StartBuildVarientFieldRecord, EndBuildVarientFieldRecord, - BuildNulName, StartBuildArray, EndBuildArray, BuildFieldArray, BuildArrayComma, @@ -861,17 +860,21 @@ CaseLabelList := CaseLabels { "," CaseLabels } =: CaseLabels := ConstExpression [ ".." ConstExpression ] =: -SetType := % VAR ispacked: BOOLEAN ; % +SetType := % VAR ispacked: BOOLEAN ; + setpos : CARDINAL ; % + % setpos := GetTokenNo () % % ispacked := FALSE % ( "SET" % ispacked := FALSE % | "PACKEDSET" % ispacked := TRUE % ) "OF" % BuildNulName % - SimpleType % BuildSetType (ispacked) % + SimpleType % BuildSetType (setpos, ispacked) % =: -PointerType := "POINTER" "TO" % BuildNulName % - Type % BuildPointerType % +PointerType := % VAR pointerpos: CARDINAL ; % + % pointerpos := GetTokenNo () % + "POINTER" "TO" % BuildNulName % + Type % BuildPointerType (pointerpos) % =: ProcedureType := "PROCEDURE" % BuildProcedureType ; % diff --git a/gcc/m2/gm2-compiler/P2SymBuild.def b/gcc/m2/gm2-compiler/P2SymBuild.def index 4f6ad96d8441..89a83144011b 100644 --- a/gcc/m2/gm2-compiler/P2SymBuild.def +++ b/gcc/m2/gm2-compiler/P2SymBuild.def @@ -887,7 +887,7 @@ PROCEDURE BuildNoReturnAttribute (procedureSym: CARDINAL) ; |------------| |-------------| *) -PROCEDURE BuildPointerType ; +PROCEDURE BuildPointerType (pointerpos: CARDINAL) ; (* @@ -906,7 +906,7 @@ PROCEDURE BuildPointerType ; |------------| |-------------| *) -PROCEDURE BuildSetType (ispacked: BOOLEAN) ; +PROCEDURE BuildSetType (setpos: CARDINAL; ispacked: BOOLEAN) ; (* diff --git a/gcc/m2/gm2-compiler/P2SymBuild.mod b/gcc/m2/gm2-compiler/P2SymBuild.mod index 17a6e1b71ca3..0b90b762e2ea 100644 --- a/gcc/m2/gm2-compiler/P2SymBuild.mod +++ b/gcc/m2/gm2-compiler/P2SymBuild.mod @@ -26,7 +26,7 @@ FROM libc IMPORT strlen ; FROM NameKey IMPORT Name, MakeKey, makekey, KeyToCharStar, NulName, LengthKey, WriteKey ; FROM StrLib IMPORT StrEqual ; FROM M2Debug IMPORT Assert, WriteDebug ; -FROM M2LexBuf IMPORT UnknownTokenNo, GetTokenNo ; +FROM M2LexBuf IMPORT UnknownTokenNo, GetTokenNo, MakeVirtual2Tok ; FROM M2Error IMPORT InternalError, WriteFormat1, WriteFormat2, WriteFormat0, ErrorStringAt, ErrorStringAt2 ; FROM M2MetaError IMPORT MetaError1, MetaError2, MetaErrorsT2, MetaErrors1, MetaErrors2, MetaErrorString1 ; FROM DynamicStrings IMPORT String, InitString, InitStringCharStar, Mark, Slice, ConCat, KillString, string ; @@ -2130,25 +2130,27 @@ END BuildNoReturnAttribute ; |------------| |-------------| *) -PROCEDURE BuildPointerType ; +PROCEDURE BuildPointerType (pointerpos: CARDINAL) ; VAR - tok : CARDINAL ; + combined, + namepos, + typepos : CARDINAL ; name : Name ; Type, PtrToType: CARDINAL ; BEGIN - PopTtok(Type, tok) ; - PopT(name) ; - name := CheckAnonymous(name) ; + PopTtok (Type, typepos) ; + PopTtok (name, namepos) ; + name := CheckAnonymous (name) ; - PtrToType := MakePointer(tok, name) ; - PutPointer(PtrToType, Type) ; + combined := MakeVirtual2Tok (pointerpos, typepos) ; + PtrToType := MakePointer (combined, name) ; + PutPointer (PtrToType, Type) ; CheckForExportedImplementation(PtrToType) ; (* May be an exported hidden type *) - PushTtok(name, tok) ; + PushTtok (name, namepos) ; Annotate("%1n|%3d||pointer type name") ; - PushTtok(PtrToType, tok) ; + PushTtok(PtrToType, combined) ; Annotate("%1s(%1d)|%3d||pointer type") - END BuildPointerType ; @@ -2168,21 +2170,24 @@ END BuildPointerType ; |------------| |-------------| *) -PROCEDURE BuildSetType (ispacked: BOOLEAN) ; +PROCEDURE BuildSetType (setpos: CARDINAL; ispacked: BOOLEAN) ; VAR - tok : CARDINAL ; - name : Name ; + combined, + namepos, + typepos : CARDINAL ; + name : Name ; Type, - SetType: CARDINAL ; + SetType : CARDINAL ; BEGIN - PopTtok(Type, tok) ; - PopT(name) ; - SetType := MakeSet (tok, name) ; + PopTtok (Type, typepos) ; + PopTtok (name, namepos) ; + combined := MakeVirtual2Tok (setpos, typepos) ; + SetType := MakeSet (combined, name) ; CheckForExportedImplementation(SetType) ; (* May be an exported hidden type *) PutSet(SetType, Type, ispacked) ; - PushT(name) ; + PushTtok (name, namepos) ; Annotate("%1n||set type name") ; - PushTtok (SetType, tok) ; + PushTtok (SetType, combined) ; Annotate ("%1s(%1d)|%3d||set type|token no") END BuildSetType ; diff --git a/gcc/m2/gm2-compiler/P3Build.bnf b/gcc/m2/gm2-compiler/P3Build.bnf index 3c9b9534647e..d5eddc7e98e6 100644 --- a/gcc/m2/gm2-compiler/P3Build.bnf +++ b/gcc/m2/gm2-compiler/P3Build.bnf @@ -129,7 +129,8 @@ FROM M2Quads IMPORT PushT, PopT, PushTF, PopTF, PopNothing, Annotate, AddVarientRange, AddVarientEquality, BuildAsmElement, BuildAsmTrash, BeginVarient, EndVarient, BeginVarientList, EndVarientList, - PushInConstExpression, PopInConstExpression, IsInConstExpression, + PushInConstExpression, PopInConstExpression, + PushInConstParameters, PopInConstParameters, IsInConstParameters, BuildDefaultFieldAlignment, BuildPragmaField, IsAutoPushOn, PushAutoOff, PushAutoOn, PopAuto ; @@ -670,10 +671,12 @@ ConstantDeclaration := % VAR =: ConstExpression := % VAR tokpos: CARDINAL ; % + % PushInConstExpression % % PushAutoOn % SimpleConstExpr [ Relation % tokpos := GetTokenNo ()-1 % SimpleConstExpr % BuildRelOp (tokpos) % ] % PopAuto % + % PopInConstExpression % =: Relation := "=" % PushTtok(EqualTok, GetTokenNo() -1) % @@ -739,10 +742,15 @@ ComponentElement := ConstExpression ( ".." ConstExpression % Pus ) =: -ComponentValue := ComponentElement ( 'BY' ConstExpression % PushTtok(ByTok, GetTokenNo() -1) % +ComponentValue := % VAR tokpos: CARDINAL ; % + ( + % tokpos := GetTokenNo () % + ComponentElement ( % tokpos := GetTokenNo () % + 'BY' ConstExpression % PushTtok (ByTok, tokpos) % - | % PushT(NulTok) % - ) + | % PushTtok (NulTok, tokpos) % + ) + ) =: ArraySetRecordValue := ComponentValue % BuildComponentValue % @@ -751,19 +759,25 @@ ArraySetRecordValue := ComponentValue % Bui } =: -Constructor := % DisplayStack % - '{' % BuildConstructorStart (GetTokenNo() -1) % - [ ArraySetRecordValue ] % BuildConstructorEnd (GetTokenNo()) % +Constructor := % VAR tokpos: CARDINAL ; % + % DisplayStack % + '{' % tokpos := GetTokenNo () -1 % + % BuildConstructorStart (tokpos) % + [ ArraySetRecordValue ] % BuildConstructorEnd (tokpos, GetTokenNo()) % '}' =: -ConstSetOrQualidentOrFunction := Qualident - [ Constructor | ConstActualParameters % BuildConstFunctionCall % - ] - | % BuildTypeForConstructor % - Constructor =: - -ConstActualParameters := % PushInConstExpression % - ActualParameters % PopInConstExpression % +ConstSetOrQualidentOrFunction := % VAR tokpos: CARDINAL ; % + % tokpos := GetTokenNo () % + ( + Qualident + [ Constructor | ConstActualParameters % BuildConstFunctionCall % + ] + | % BuildTypeForConstructor (tokpos) % + Constructor + ) =: + +ConstActualParameters := % PushInConstParameters % + ActualParameters % PopInConstParameters % =: ConstAttribute := "__ATTRIBUTE__" "__BUILTIN__" "(" "(" % PushAutoOn % @@ -1101,13 +1115,16 @@ Factor := % VAR | ConstAttribute ) =: -SetOrDesignatorOrFunction := Qualident - % Assert (OperandTok(1) # UnknownTokenNo) % +SetOrDesignatorOrFunction := % VAR tokpos: CARDINAL ; % + % tokpos := GetTokenNo () % + ( + Qualident + % Assert (OperandTok (1) # UnknownTokenNo) % % CheckWithReference % - % Assert (OperandTok(1) # UnknownTokenNo) % + % Assert (OperandTok (1) # UnknownTokenNo) % [ Constructor | SimpleDes % (* Assert (OperandTok(1) # UnknownTokenNo) *) % - [ ActualParameters % IF IsInConstExpression() + [ ActualParameters % IF IsInConstParameters () THEN BuildConstFunctionCall ELSE @@ -1115,8 +1132,8 @@ SetOrDesignatorOrFunction := Qualident END % ] ] | - % BuildTypeForConstructor % - Constructor =: + % BuildTypeForConstructor (tokpos) % + Constructor ) =: -- SimpleDes := { "." Ident | "[" ExpList "]" | "^" } =: SimpleDes := { SubDesignator } =: @@ -1130,7 +1147,7 @@ ExitStatement := "EXIT" % Bui ReturnStatement := "RETURN" % VAR tokno: CARDINAL ; % % tokno := GetTokenNo () -1 % - ( Expression | % BuildNulExpression (* in epsilon *) % + ( Expression | % BuildNulExpression (tokno) % ) % BuildReturn (tokno) % =: diff --git a/gcc/m2/gm2-compiler/PCBuild.bnf b/gcc/m2/gm2-compiler/PCBuild.bnf index 2297663ef27f..b983cc8b8520 100644 --- a/gcc/m2/gm2-compiler/PCBuild.bnf +++ b/gcc/m2/gm2-compiler/PCBuild.bnf @@ -66,7 +66,8 @@ FROM M2Quads IMPORT Top, PushT, PopT, PushTF, PopTF, PopNothing, OperandT, PushT PushT, PushTF, IsAutoPushOn, PushAutoOff, PushAutoOn, PopAuto, BuildTypeForConstructor, BuildConstructor, BuildConstructorEnd, PopConstructor, - NextConstructorField, SilentBuildConstructor ; + NextConstructorField, SilentBuildConstructor, + PushInConstExpression, PopInConstExpression ; FROM P3SymBuild IMPORT CheckCanBeImported ; @@ -603,9 +604,11 @@ ConstantDeclaration := % VAR ConstExpression := % VAR top: CARDINAL ; % % top := Top() % + % PushInConstExpression % % PushAutoOff % SimpleConstExpr [ Relation SimpleConstExpr % BuildRelationConst % ] % PopAuto % + % PopInConstExpression % % Assert(top=Top()) % =: @@ -700,12 +703,13 @@ ConstructorOrConstActualParameters := Constructor | ConstActualParameters % Pus -- the entry to Constructor ConstSetOrQualidentOrFunction := % PushAutoOff % - ( + % VAR tokpos: CARDINAL ; % + ( % tokpos := GetTokenNo () % PushQualident ( ConstructorOrConstActualParameters | % PushConstType % % PopNothing % ) - | % BuildTypeForConstructor % + | % BuildTypeForConstructor (tokpos) % Constructor ) % PopAuto % =: @@ -1003,12 +1007,14 @@ ConstructorOrSimpleDes := Constructor | % Pop =: SetOrDesignatorOrFunction := % PushAutoOff % - ( + % VAR tokpos: CARDINAL ; % + + ( % tokpos := GetTokenNo () % PushQualident ( ConstructorOrSimpleDes | % PopNothing % ) | - % BuildTypeForConstructor % + % BuildTypeForConstructor (tokpos) % Constructor ) % PopAuto % =: diff --git a/gcc/m2/gm2-compiler/PCSymBuild.mod b/gcc/m2/gm2-compiler/PCSymBuild.mod index e21654087812..9a6e8c06e70c 100644 --- a/gcc/m2/gm2-compiler/PCSymBuild.mod +++ b/gcc/m2/gm2-compiler/PCSymBuild.mod @@ -1412,6 +1412,38 @@ BEGIN END buildConstFunction ; +(* + ErrorConstFunction - generate an error message at functok using func in the + error message providing it is not NulSym. +*) + +PROCEDURE ErrorConstFunction (func: CARDINAL; functok: CARDINAL) ; +BEGIN + IF func = NulSym + THEN + IF Iso + THEN + ErrorFormat0 (NewError (functok), + 'the only functions permissible in a constant expression are: CAP, CHR, CMPLX, FLOAT, HIGH, IM, LENGTH, MAX, MIN, ODD, ORD, RE, SIZE, TSIZE, TRUNC, VAL and gcc builtins') + ELSE + ErrorFormat0 (NewError (functok), + 'the only functions permissible in a constant expression are: CAP, CHR, FLOAT, HIGH, MAX, MIN, ODD, ORD, SIZE, TSIZE, TRUNC, VAL and gcc builtins') + END + ELSE + IF Iso + THEN + MetaErrorT1 (functok, + 'the only functions permissible in a constant expression are: CAP, CHR, CMPLX, FLOAT, HIGH, IM, LENGTH, MAX, MIN, ODD, ORD, RE, SIZE, TSIZE, TRUNC, VAL and gcc builtins, but not {%1Ead}', + func) + ELSE + MetaErrorT1 (functok, + 'the only functions permissible in a constant expression are: CAP, CHR, FLOAT, HIGH, MAX, MIN, ODD, ORD, SIZE, TSIZE, TRUNC, VAL and gcc builtins, but not {%1Ead}', + func) + END + END +END ErrorConstFunction ; + + (* PushConstFunctionType - *) @@ -1426,7 +1458,10 @@ BEGIN PopTtok (func, functok) ; IF inDesignator THEN - IF (func#Convert) AND + IF func = NulSym + THEN + ErrorConstFunction (func, functok) + ELSIF (func#Convert) AND (IsPseudoBaseFunction(func) OR IsPseudoSystemFunctionConstExpression(func) OR (IsProcedure(func) AND IsProcedureBuiltin(func))) @@ -1442,16 +1477,7 @@ BEGIN WriteFormat0('a constant type conversion can only have one argument') END ELSE - IF Iso - THEN - MetaErrorT1 (functok, - 'the only functions permissible in a constant expression are: CAP, CHR, CMPLX, FLOAT, HIGH, IM, LENGTH, MAX, MIN, ODD, ORD, RE, SIZE, TSIZE, TRUNC, VAL and gcc builtins, but not {%1Ead}', - func) - ELSE - MetaErrorT1 (functok, - 'the only functions permissible in a constant expression are: CAP, CHR, FLOAT, HIGH, MAX, MIN, ODD, ORD, SIZE, TSIZE, TRUNC, VAL and gcc builtins, but not {%1Ead}', - func) - END + ErrorConstFunction (func, functok) END END ; PushTtok (func, functok) diff --git a/gcc/m2/gm2-compiler/PHBuild.bnf b/gcc/m2/gm2-compiler/PHBuild.bnf index 89e756d4f871..52214894d0ac 100644 --- a/gcc/m2/gm2-compiler/PHBuild.bnf +++ b/gcc/m2/gm2-compiler/PHBuild.bnf @@ -102,7 +102,8 @@ FROM M2Quads IMPORT PushT, PopT, PushTF, PopTF, PopNothing, Annotate, AddVarientRange, AddVarientEquality, BuildDefaultFieldAlignment, BuildPragmaField, CheckWithReference, DisplayStack, Annotate, - IsAutoPushOn, PushAutoOff, PushAutoOn, PopAuto ; + IsAutoPushOn, PushAutoOff, PushAutoOn, PopAuto, + PushInConstExpression, PopInConstExpression ; FROM P3SymBuild IMPORT P3StartBuildProgModule, P3EndBuildProgModule, @@ -572,10 +573,12 @@ ConstantDeclaration := % Pus =: ConstExpression := % VAR tokpos: CARDINAL ; % + % PushInConstExpression % % PushAutoOn % SimpleConstExpr [ Relation % tokpos := GetTokenNo ()-1 % SimpleConstExpr % BuildRelOp (tokpos) % ] % PopAuto % + % PopInConstExpression % =: Relation := "=" % PushTtok(EqualTok, GetTokenNo() -1) % @@ -652,19 +655,23 @@ ArraySetRecordValue := ComponentValue % Bui } =: -Constructor := '{' % BuildConstructorStart (GetTokenNo() -1) % - [ ArraySetRecordValue ] % BuildConstructorEnd (GetTokenNo()) % +Constructor := % VAR tokpos: CARDINAL ; % + % DisplayStack % + '{' % tokpos := GetTokenNo () -1 % + % BuildConstructorStart (tokpos) % + [ ArraySetRecordValue ] % BuildConstructorEnd (tokpos, GetTokenNo()) % '}' =: -ConstSetOrQualidentOrFunction := % PushAutoOn % - ( +ConstSetOrQualidentOrFunction := % PushAutoOn % + % VAR tokpos: CARDINAL ; % + ( % tokpos := GetTokenNo () % Qualident [ Constructor | ConstActualParameters % BuildConstFunctionCall % ] - | % BuildTypeForConstructor % + | % BuildTypeForConstructor (tokpos) % Constructor - ) % PopAuto % + ) % PopAuto % =: ConstAttribute := "__ATTRIBUTE__" "__BUILTIN__" "(" "(" ConstAttributeExpression ")" ")" =: diff --git a/gcc/m2/gm2-compiler/SymbolConversion.def b/gcc/m2/gm2-compiler/SymbolConversion.def index 8f8d4650ce2f..81a52e4aa1ec 100644 --- a/gcc/m2/gm2-compiler/SymbolConversion.def +++ b/gcc/m2/gm2-compiler/SymbolConversion.def @@ -31,8 +31,6 @@ DEFINITION MODULE SymbolConversion ; FROM m2tree IMPORT Tree ; FROM SYSTEM IMPORT WORD ; -EXPORT QUALIFIED Mod2Gcc, AddModGcc, GccKnowsAbout, AddTemporaryKnown, - RemoveTemporaryKnown, Poison, RemoveMod2Gcc ; (* @@ -42,6 +40,13 @@ EXPORT QUALIFIED Mod2Gcc, AddModGcc, GccKnowsAbout, AddTemporaryKnown, PROCEDURE Mod2Gcc (sym: CARDINAL) : Tree ; +(* + Gcc2Mod - given a gcc tree return the modula-2 symbol. +*) + +PROCEDURE Gcc2Mod (tree: Tree) : CARDINAL ; + + (* AddModGcc - adds the tuple [ sym, gcc ] into the database. *) diff --git a/gcc/m2/gm2-compiler/SymbolConversion.mod b/gcc/m2/gm2-compiler/SymbolConversion.mod index b8f0f70b4355..738b40d5be52 100644 --- a/gcc/m2/gm2-compiler/SymbolConversion.mod +++ b/gcc/m2/gm2-compiler/SymbolConversion.mod @@ -24,10 +24,10 @@ IMPLEMENTATION MODULE SymbolConversion ; FROM NameKey IMPORT Name ; FROM Indexing IMPORT Index, InitIndex, PutIndice, GetIndice, InBounds, - DebugIndex, InitIndexTuned ; + DebugIndex, InitIndexTuned, HighIndice ; FROM SymbolTable IMPORT IsConst, PopValue, IsValueSolved, GetSymName, - GetType, SkipType ; + GetType, SkipType, NulSym ; FROM M2Error IMPORT InternalError ; FROM M2ALU IMPORT PushTypeOfTree ; @@ -87,6 +87,27 @@ BEGIN END Mod2Gcc ; +(* + Gcc2Mod - given a gcc tree return the modula-2 symbol. +*) + +PROCEDURE Gcc2Mod (tree: Tree) : CARDINAL ; +VAR + high, i: CARDINAL ; +BEGIN + i := 1 ; + high := HighIndice (mod2gcc) ; + WHILE i <= high DO + IF GetIndice (mod2gcc, i) = tree + THEN + RETURN i + END ; + INC (i) + END ; + RETURN NulSym +END Gcc2Mod ; + + (* AddModGcc - adds the tuple [ sym, gcc ] into the database. *) diff --git a/gcc/m2/gm2-compiler/SymbolTable.mod b/gcc/m2/gm2-compiler/SymbolTable.mod index b49cc889dcae..fc1cb74c8665 100644 --- a/gcc/m2/gm2-compiler/SymbolTable.mod +++ b/gcc/m2/gm2-compiler/SymbolTable.mod @@ -35,7 +35,9 @@ FROM Indexing IMPORT InitIndex, InBounds, LowIndice, HighIndice, FROM Sets IMPORT Set, InitSet, IncludeElementIntoSet, IsElementInSet ; FROM m2linemap IMPORT location_t ; -FROM M2Options IMPORT Pedantic, ExtendedOpaque, DebugFunctionLineNumbers, ScaffoldDynamic, DebugBuiltins ; +FROM M2Options IMPORT Pedantic, ExtendedOpaque, + GetDebugFunctionLineNumbers, ScaffoldDynamic, + DebugBuiltins ; FROM M2LexBuf IMPORT UnknownTokenNo, TokenToLineNo, FindFileNameFromToken, TokenToLocation ; @@ -99,7 +101,10 @@ IMPORT Indexing ; CONST - DebugUnknowns = FALSE ; + DebugUnknowns = FALSE ; (* Debug unknown symbols. *) + DebugUnknownToken = FALSE ; (* If enabled it will generate a warning every + time a symbol is created with an unknown + location. *) (* The Unbounded is a pseudo type used within the compiler @@ -1372,7 +1377,7 @@ END DebugProcedureLineNumber ; PROCEDURE DebugLineNumbers (sym: CARDINAL) ; BEGIN - IF DebugFunctionLineNumbers + IF GetDebugFunctionLineNumbers () THEN printf0 ('\n') ; ForeachProcedureDo(sym, DebugProcedureLineNumber) ; @@ -3265,6 +3270,29 @@ BEGIN END GetModuleCtors ; +(* + CheckTok - checks to see that tok is at a known location. If not + it uses GetTokenNo as a fall back. +*) + +PROCEDURE CheckTok (tok: CARDINAL; name: ARRAY OF CHAR) : CARDINAL ; +VAR + s: String ; +BEGIN + IF tok = UnknownTokenNo + THEN + tok := GetTokenNo () ; + IF DebugUnknownToken + THEN + s := InitString (name) ; + s := ConCat (s, InitString (' symbol {%W} has been created with an unknown token location')) ; + MetaErrorStringT0 (GetTokenNo (), s) + END + END ; + RETURN tok +END CheckTok ; + + (* MakeModule - creates a module sym with ModuleName. It returns the symbol index. @@ -3276,6 +3304,7 @@ VAR pCall: PtrToCallFrame ; Sym : CARDINAL ; BEGIN + (* tok := CheckTok (tok, 'module') ; *) (* Make a new symbol since we are at the outer scope level. DeclareSym examines the current scope level for any symbols @@ -3645,7 +3674,7 @@ BEGIN (* We cannot use DeclareSym as it examines the current scope *) (* for any symbols which have the correct name, but are yet *) (* undefined. *) - + (* tok := CheckTok (tok, 'defimp') ; *) NewSym(Sym) ; pSym := GetPsym(Sym) ; WITH pSym^ DO @@ -3893,6 +3922,7 @@ VAR pSym: PtrToSymbol ; Sym : CARDINAL ; BEGIN + tok := CheckTok (tok, 'procedure') ; Sym := DeclareSym(tok, ProcedureName) ; IF NOT IsError(Sym) THEN @@ -4466,6 +4496,7 @@ PROCEDURE MakeRecord (tok: CARDINAL; RecordName: Name) : CARDINAL ; VAR oaf, sym: CARDINAL ; BEGIN + tok := CheckTok (tok, 'record') ; sym := HandleHiddenOrDeclare (tok, RecordName, oaf) ; FillInRecordFields (tok, sym, RecordName, GetCurrentScope (), oaf) ; ForeachOAFamily (oaf, doFillInOAFamily) ; @@ -4483,6 +4514,7 @@ VAR pSym: PtrToSymbol ; Sym : CARDINAL ; BEGIN + tok := CheckTok (tok, 'varient') ; NewSym (Sym) ; pSym := GetPsym(Sym) ; WITH pSym^ DO @@ -4632,6 +4664,7 @@ VAR pSym : PtrToSymbol ; sym, oaf: CARDINAL ; BEGIN + tok := CheckTok (tok, 'enumeration') ; sym := CheckForHiddenType (EnumerationName) ; IF sym=NulSym THEN @@ -4723,6 +4756,7 @@ VAR pSym: PtrToSymbol ; Sym : CARDINAL ; BEGIN + tok := CheckTok (tok, 'hidden') ; Sym := DeclareSym (tok, TypeName) ; IF NOT IsError(Sym) THEN @@ -4835,6 +4869,7 @@ VAR str: String ; sym: CARDINAL ; BEGIN + tok := CheckTok (tok, 'constant') ; str := Sprintf1 (Mark (InitString ("%d")), value) ; sym := MakeConstLit (tok, makekey (string (str)), Cardinal) ; str := KillString (str) ; @@ -4970,6 +5005,7 @@ PROCEDURE MakeConstLit (tok: CARDINAL; constName: Name; constType: CARDINAL) : C VAR sym: CARDINAL ; BEGIN + tok := CheckTok (tok, 'constlit') ; sym := LookupConstLitPoolEntry (tok, constName, constType) ; IF sym = NulSym THEN @@ -5100,6 +5136,7 @@ PROCEDURE MakeConstStringCnul (tok: CARDINAL; name: Name; known: BOOLEAN) : CARD VAR newstr: CARDINAL ; BEGIN + tok := CheckTok (tok, 'conststringcnul') ; NewSym (newstr) ; InitConstString (tok, newstr, name, name, cnulstr, TRUE, known) ; RETURN newstr @@ -5970,6 +6007,7 @@ VAR pSym : PtrToSymbol ; sym, oaf: CARDINAL ; BEGIN + tok := CheckTok (tok, 'subrange') ; sym := HandleHiddenOrDeclare (tok, SubrangeName, oaf) ; IF NOT IsError(sym) THEN @@ -6118,7 +6156,7 @@ BEGIN SubrangeSym : type := Subrange.Type | ArraySym : type := Array.Type | SubscriptSym : type := Subscript.Type | - SetSym : type := Set.Type | + SetSym : type := Sym | (* Stop at the set type. *) UnboundedSym : type := Unbounded.Type | UndefinedSym : type := NulSym | DummySym : type := NulSym @@ -7739,6 +7777,7 @@ END IsComponent ; PROCEDURE MakeTemporary (tok: CARDINAL; Mode: ModeOfAddr) : CARDINAL ; BEGIN + tok := CheckTok (tok, 'temporary') ; RETURN buildTemporary (tok, Mode, FALSE, NulSym) END MakeTemporary ; @@ -10122,6 +10161,7 @@ VAR pSym : PtrToSymbol ; VariableSym: CARDINAL ; BEGIN + tok := CheckTok (tok, 'parameter') ; VariableSym := MakeVar (tok, ParamName) ; pSym := GetPsym (VariableSym) ; WITH pSym^ DO @@ -10604,6 +10644,7 @@ PROCEDURE MakeParameterHeapVar (tok: CARDINAL; type: CARDINAL; mode: ModeOfAddr) VAR heapvar: CARDINAL ; BEGIN + tok := CheckTok (tok, 'parameter heap var') ; heapvar := NulSym ; type := SkipType (type) ; IF IsPointer (type) @@ -11079,6 +11120,7 @@ PROCEDURE MakePointer (tok: CARDINAL; PointerName: Name) : CARDINAL ; VAR oaf, sym: CARDINAL ; BEGIN + tok := CheckTok (tok, 'pointer') ; sym := HandleHiddenOrDeclare(tok, PointerName, oaf) ; FillInPointerFields(sym, PointerName, GetCurrentScope(), oaf) ; ForeachOAFamily(oaf, doFillInOAFamily) ; @@ -11341,6 +11383,7 @@ VAR pSym : PtrToSymbol ; oaf, sym: CARDINAL ; BEGIN + tok := CheckTok (tok, 'set') ; sym := HandleHiddenOrDeclare(tok, SetName, oaf) ; IF NOT IsError(sym) THEN @@ -11680,6 +11723,7 @@ PROCEDURE MakeUnbounded (tok: CARDINAL; VAR sym, oaf: CARDINAL ; BEGIN + tok := CheckTok (tok, 'unbounded') ; oaf := MakeOAFamily(SimpleType) ; sym := GetUnbounded(oaf, ndim) ; IF sym=NulSym @@ -12513,6 +12557,7 @@ VAR pSym : PtrToSymbol ; oaf, sym: CARDINAL ; BEGIN + tok := CheckTok (tok, 'proctype') ; sym := HandleHiddenOrDeclare (tok, ProcTypeName, oaf) ; IF NOT IsError(sym) THEN diff --git a/gcc/m2/gm2-gcc/init.cc b/gcc/m2/gm2-gcc/init.cc index 479e06f90978..17ca9189f10c 100644 --- a/gcc/m2/gm2-gcc/init.cc +++ b/gcc/m2/gm2-gcc/init.cc @@ -78,6 +78,7 @@ EXTERN void _M2_SymbolKey_init (int argc, char *argv[], char *envp[]); EXTERN void _M2_FifoQueue_init (int argc, char *argv[], char *envp[]); EXTERN void _M2_M2Reserved_init (int argc, char *argv[], char *envp[]); EXTERN void _M2_M2Const_init (int argc, char *argv[], char *envp[]); +EXTERN void _M2_M2LangDump_init (int argc, char *argv[], char *envp[]); EXTERN void _M2_P1SymBuild_init (int argc, char *argv[], char *envp[]); EXTERN void _M2_P2SymBuild_init (int argc, char *argv[], char *envp[]); EXTERN void _M2_P3SymBuild_init (int argc, char *argv[], char *envp[]); @@ -198,5 +199,6 @@ init_PerCompilationInit (const char *filename) _M2_M2SSA_init (0, NULL, NULL); _M2_M2SymInit_init (0, NULL, NULL); _M2_M2Check_init (0, NULL, NULL); + _M2_M2LangDump_init (0, NULL, NULL); M2Comp_compile (filename); } diff --git a/gcc/m2/gm2-gcc/m2builtins.cc b/gcc/m2/gm2-gcc/m2builtins.cc index e4fc6a50c1cc..cfb4751e15ae 100644 --- a/gcc/m2/gm2-gcc/m2builtins.cc +++ b/gcc/m2/gm2-gcc/m2builtins.cc @@ -393,6 +393,13 @@ struct builtin_type_info tree (*functionHandler) (location_t, tree); }; +struct GTY(()) builtin_macro_definition +{ + const char *name; + tree function_node; + tree return_node; +}; + static GTY (()) tree sizetype_endlink; static GTY (()) tree unsigned_endlink; static GTY (()) tree endlink; @@ -418,6 +425,7 @@ static GTY (()) tree long_doubleptr_type_node; static GTY (()) tree doubleptr_type_node; static GTY (()) tree floatptr_type_node; static GTY (()) tree builtin_ftype_int_var; +static GTY (()) vec *builtin_macros; /* Prototypes for locally defined functions. */ static tree DoBuiltinAlloca (location_t location, tree n); @@ -916,21 +924,45 @@ m2builtins_BuiltinExists (char *name) if (strcmp (name, fe->name) == 0) return true; // return target_support_exists (fe); - + int length = vec_safe_length (builtin_macros); + for (int idx = 0; idx < length; idx++) + if (strcmp ((*builtin_macros)[idx].name, name) == 0) + return true; return false; } +/* lookup_builtin_function returns a builtin macro. */ -/* BuildBuiltinTree - returns a Tree containing the builtin function, - name. */ +static +tree +lookup_builtin_macro (location_t location, char *name) +{ + int length = vec_safe_length (builtin_macros); + for (int idx = 0; idx < length; idx++) + if (strcmp ((*builtin_macros)[idx].name, name) == 0) + { + tree functype = TREE_TYPE ((*builtin_macros)[idx].function_node); + tree funcptr = build1 (ADDR_EXPR, build_pointer_type (functype), + (*builtin_macros)[idx].function_node); + tree call = m2treelib_DoCall ( + location, (*builtin_macros)[idx].return_node, + funcptr, m2statement_GetParamList ()); + m2statement_SetLastFunction (call); + m2statement_SetParamList (NULL_TREE); + if ((*builtin_macros)[idx].return_node == void_type_node) + m2statement_SetLastFunction (NULL_TREE); + return call; + } + return NULL_TREE; +} + +/* lookup_builtin_function returns a builtin function. */ +static tree -m2builtins_BuildBuiltinTree (location_t location, char *name) +lookup_builtin_function (location_t location, char *name) { struct builtin_function_entry *fe; - tree call; - - m2statement_SetLastFunction (NULL_TREE); for (fe = &list_of_builtins[0]; fe->name != NULL; fe++) if ((strcmp (name, fe->name) == 0) && target_support_exists (fe)) @@ -938,7 +970,7 @@ m2builtins_BuildBuiltinTree (location_t location, char *name) tree functype = TREE_TYPE (fe->function_node); tree funcptr = build1 (ADDR_EXPR, build_pointer_type (functype), fe->function_node); - call = m2treelib_DoCall ( + tree call = m2treelib_DoCall ( location, fe->return_node, funcptr, m2statement_GetParamList ()); m2statement_SetLastFunction (call); m2statement_SetParamList (NULL_TREE); @@ -946,9 +978,29 @@ m2builtins_BuildBuiltinTree (location_t location, char *name) m2statement_SetLastFunction (NULL_TREE); return call; } + return NULL_TREE; +} + +/* BuildBuiltinTree - returns a Tree containing the builtin function, + name. */ + +tree +m2builtins_BuildBuiltinTree (location_t location, char *name) +{ + tree call; + m2statement_SetLastFunction (NULL_TREE); - m2statement_SetParamList (NULL_TREE); - return m2statement_GetLastFunction (); + call = lookup_builtin_function (location, name); + if (call == NULL_TREE) + { + call = lookup_builtin_macro (location, name); + if (call == NULL_TREE) + { + m2statement_SetParamList (NULL_TREE); + return m2statement_GetLastFunction (); + } + } + return call; } static tree @@ -1347,14 +1399,16 @@ set_decl_function_code (tree decl, built_in_function f) } /* Define a single builtin. */ + static void -define_builtin (enum built_in_function val, const char *name, tree type, +define_builtin (enum built_in_function val, const char *name, tree prototype, const char *libname, int flags) { tree decl; + builtin_macro_definition bmd; decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL, get_identifier (name), - type); + prototype); DECL_EXTERNAL (decl) = 1; TREE_PUBLIC (decl) = 1; SET_DECL_ASSEMBLER_NAME (decl, get_identifier (libname)); @@ -1362,8 +1416,43 @@ define_builtin (enum built_in_function val, const char *name, tree type, set_decl_built_in_class (decl, BUILT_IN_NORMAL); set_decl_function_code (decl, val); set_call_expr_flags (decl, flags); - set_builtin_decl (val, decl, true); + bmd.name = name; + bmd.function_node = decl; + bmd.return_node = TREE_TYPE (prototype); + vec_safe_push (builtin_macros, bmd); +} + +/* Define a math type variant of the builtin function. */ + +static +void +define_builtin_ext (enum built_in_function val, const char *name, tree type, + const char *libname, int flags, const char *ext) +{ + char *newname = (char *) xmalloc (strlen (name) + strlen (ext) + 1); + char *newlibname = (char *) xmalloc (strlen (libname) + strlen (ext) + 1); + strcpy (newname, name); + strcat (newname, ext); + strcpy (newlibname, libname); + strcat (newlibname, ext); + define_builtin (val, newname, type, newlibname, flags); +} + +/* Define all support math type versions of this builtin. */ + +static void +define_builtin_math (enum built_in_function val, const char *name, tree type, + const char *libname, int flags) +{ + /* SHORTREAL version. */ + define_builtin_ext (val, name, type, libname, flags, "f"); + /* LONGREAL version. */ + define_builtin_ext (val, name, type, libname, flags, "l"); + /* REAL version. */ + define_builtin (val, name, type, libname, flags); + /* Perhaps it should declare SYSTEM.def types size floating point + versions as well? */ } void @@ -1408,20 +1497,24 @@ m2builtins_init (location_t location) define_builtin (BUILT_IN_TRAP, "__builtin_trap", build_function_type_list (void_type_node, NULL_TREE), "__builtin_trap", ECF_NOTHROW | ECF_LEAF | ECF_NORETURN); - define_builtin (BUILT_IN_ISGREATER, "isgreater", builtin_ftype_int_var, - "__builtin_isgreater", ECF_CONST | ECF_NOTHROW | ECF_LEAF); - define_builtin (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", - builtin_ftype_int_var, "__builtin_isgreaterequal", - ECF_CONST | ECF_NOTHROW | ECF_LEAF); - define_builtin (BUILT_IN_ISLESS, "isless", builtin_ftype_int_var, - "__builtin_isless", ECF_CONST | ECF_NOTHROW | ECF_LEAF); - define_builtin (BUILT_IN_ISLESSEQUAL, "islessequal", builtin_ftype_int_var, - "__builtin_islessequal", ECF_CONST | ECF_NOTHROW | ECF_LEAF); - define_builtin (BUILT_IN_ISLESSGREATER, "islessgreater", - builtin_ftype_int_var, "__builtin_islessgreater", - ECF_CONST | ECF_NOTHROW | ECF_LEAF); - define_builtin (BUILT_IN_ISUNORDERED, "isunordered", builtin_ftype_int_var, - "__builtin_isunordered", ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISGREATER, "isgreater", builtin_ftype_int_var, + "__builtin_isgreater", ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", + builtin_ftype_int_var, "__builtin_isgreaterequal", + ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISLESS, "isless", builtin_ftype_int_var, + "__builtin_isless", ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISLESSEQUAL, "islessequal", builtin_ftype_int_var, + "__builtin_islessequal", ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISLESSGREATER, "islessgreater", + builtin_ftype_int_var, "__builtin_islessgreater", + ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISUNORDERED, "isunordered", builtin_ftype_int_var, + "__builtin_isunordered", ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISNORMAL, "isnormal", builtin_ftype_int_var, + "__builtin_isnormal", ECF_CONST | ECF_NOTHROW | ECF_LEAF); + define_builtin_math (BUILT_IN_ISINF_SIGN, "isinf_sign", builtin_ftype_int_var, + "__builtin_isinf_sign", ECF_CONST | ECF_NOTHROW | ECF_LEAF); gm2_alloca_node = find_builtin_tree ("__builtin_alloca"); gm2_memcpy_node = find_builtin_tree ("__builtin_memcpy"); diff --git a/gcc/m2/gm2-gcc/m2expr.cc b/gcc/m2/gm2-gcc/m2expr.cc index ba5c652209e3..746e211ab514 100644 --- a/gcc/m2/gm2-gcc/m2expr.cc +++ b/gcc/m2/gm2-gcc/m2expr.cc @@ -111,6 +111,14 @@ m2expr_StringLength (tree string) return TREE_STRING_LENGTH (string); } +/* BuildCondIfExpression returns a tree containing (condition) ? (left) : right. */ + +tree +m2expr_BuildCondIfExpression (tree condition, tree type, tree left, tree right) +{ + return fold_build3 (COND_EXPR, type, condition, left, right); +} + /* CheckAddressToCardinal if op is a pointer convert it to the ADDRESS type. */ static tree diff --git a/gcc/m2/gm2-gcc/m2expr.def b/gcc/m2/gm2-gcc/m2expr.def index d4b040c8ac33..c195f1987a89 100644 --- a/gcc/m2/gm2-gcc/m2expr.def +++ b/gcc/m2/gm2-gcc/m2expr.def @@ -737,5 +737,12 @@ PROCEDURE OverflowZType (location: location_t; str: ADDRESS; base: CARDINAL; issueError: BOOLEAN) : BOOLEAN ; +(* + BuildCondIfExpression - returns a tree containing + (condition) ? (left) : right. +*) + +PROCEDURE BuildCondIfExpression (condition, type, left, right: Tree) : Tree ; + END m2expr. diff --git a/gcc/m2/gm2-gcc/m2expr.h b/gcc/m2/gm2-gcc/m2expr.h index f045d2949ffe..d5fb475645c8 100644 --- a/gcc/m2/gm2-gcc/m2expr.h +++ b/gcc/m2/gm2-gcc/m2expr.h @@ -239,6 +239,8 @@ EXTERN void m2expr_ConstantExpressionWarning (tree value); EXTERN tree m2expr_BuildAddAddress (location_t location, tree op1, tree op2); EXTERN tree m2expr_BuildRDiv (location_t location, tree op1, tree op2, bool needconvert); +EXTERN tree m2expr_BuildCondIfExpression (tree condition, tree type, + tree left, tree right); EXTERN int m2expr_GetCstInteger (tree cst); EXTERN tree m2expr_calcNbits (location_t location, tree min, tree max); EXTERN bool m2expr_OverflowZType (location_t location, const char *str, diff --git a/gcc/m2/gm2-gcc/m2langdump.h b/gcc/m2/gm2-gcc/m2langdump.h new file mode 100644 index 000000000000..4170d8538d95 --- /dev/null +++ b/gcc/m2/gm2-gcc/m2langdump.h @@ -0,0 +1,41 @@ +/* m2langdump.h header file for m2langdump.cc. + +Copyright (C) 2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 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. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Modula-2; see the file COPYING3. If not see +. */ + +#if !defined(m2langdump_h) +#define m2langdump_h +#if defined(m2langdump_c) +#if defined(__GNUG__) +#define EXTERN extern "C" +#else /* !__GNUG__. */ +#define EXTERN +#endif /* !__GNUG__. */ +#else /* !m2langdump_c. */ +#if defined(__GNUG__) +#define EXTERN extern "C" +#else /* !__GNUG__. */ +#define EXTERN extern +#endif /* !__GNUG__. */ +#endif /* !m2langdump_c. */ + +EXTERN bool M2LangDump_IsDumpRequiredTree (tree fndecl, bool defaultvalue); + +#undef EXTERN +#endif /* m2langdump_h. */ diff --git a/gcc/m2/gm2-gcc/m2misc.cc b/gcc/m2/gm2-gcc/m2misc.cc index d69f33c003da..df77f32b58dc 100644 --- a/gcc/m2/gm2-gcc/m2misc.cc +++ b/gcc/m2/gm2-gcc/m2misc.cc @@ -29,7 +29,23 @@ along with GNU Modula-2; see the file COPYING3. If not see #include "m2misc.h" #include "m2tree.h" -/* DebugTree - display the tree, t. */ +/* C error entry to error. */ + +void +m2misc_cerror (const char *message) +{ + error (message); +} + +/* modula2 entry for cerror. */ + +void +m2misc_error (const char *message) +{ + m2misc_cerror (message); +} + +/* DebugTree - display the tree t. */ void m2misc_DebugTree (tree t) @@ -37,7 +53,7 @@ m2misc_DebugTree (tree t) debug_tree (t); } -/* DebugTree - display the tree, t. */ +/* DebugTree - display the trees chained in t. */ void m2misc_DebugTreeChain (tree t) @@ -46,7 +62,7 @@ m2misc_DebugTreeChain (tree t) debug_tree (t); } -/* DebugTree - display the tree, t. */ +/* DebugTree - display the current statement list. */ void m2misc_printStmt (void) diff --git a/gcc/m2/gm2-gcc/m2misc.def b/gcc/m2/gm2-gcc/m2misc.def index 41b8751e6350..26b0e4448f39 100644 --- a/gcc/m2/gm2-gcc/m2misc.def +++ b/gcc/m2/gm2-gcc/m2misc.def @@ -22,8 +22,12 @@ along with GNU Modula-2; see the file COPYING3. If not see DEFINITION MODULE FOR "C" m2misc ; FROM m2tree IMPORT Tree ; +FROM SYSTEM IMPORT ADDRESS ; + PROCEDURE DebugTree (t: Tree) ; +PROCEDURE error (message: ARRAY OF CHAR) ; +PROCEDURE cerror (message: ADDRESS) ; END m2misc. diff --git a/gcc/m2/gm2-gcc/m2misc.h b/gcc/m2/gm2-gcc/m2misc.h index 8fe08c7b8a42..f0aa82e2eeda 100644 --- a/gcc/m2/gm2-gcc/m2misc.h +++ b/gcc/m2/gm2-gcc/m2misc.h @@ -39,6 +39,8 @@ along with GNU Modula-2; see the file COPYING3. If not see EXTERN void m2misc_DebugTree (tree t); EXTERN void m2misc_printStmt (void); EXTERN void m2misc_DebugTreeChain (tree t); +EXTERN void m2misc_cerror (const char *message); +EXTERN void m2misc_error (const char *message); #undef EXTERN #endif /* m2misc_h. */ diff --git a/gcc/m2/gm2-gcc/m2options.h b/gcc/m2/gm2-gcc/m2options.h index 01256a9fc80d..363b2605e9e4 100644 --- a/gcc/m2/gm2-gcc/m2options.h +++ b/gcc/m2/gm2-gcc/m2options.h @@ -84,8 +84,10 @@ EXTERN bool M2Options_SetVerboseUnbounded (bool value); EXTERN void M2Options_SetXCode (bool value); EXTERN void M2Options_SetCompilerDebugging (bool value); EXTERN void M2Options_SetQuadDebugging (bool value); -EXTERN void M2Options_SetDebugTraceQuad (bool value); -EXTERN void M2Options_SetDebugTraceAPI (bool value); +EXTERN bool M2Options_GetDebugTraceToken (void); +EXTERN bool M2Options_GetDebugTraceLine (void); +EXTERN void M2Options_SetDebugFunctionLineNumbers (bool value); +EXTERN bool M2Options_GetDebugFunctionLineNumbers (void); EXTERN void M2Options_SetSources (bool value); EXTERN bool M2Options_SetUnboundedByReference (bool value); EXTERN void M2Options_SetDumpSystemExports (bool value); @@ -104,6 +106,7 @@ EXTERN void M2Options_FinaliseOptions (void); EXTERN void M2Options_SetDebugFunctionLineNumbers (bool value); EXTERN void M2Options_SetGenerateStatementNote (bool value); EXTERN bool M2Options_GetCpp (void); +EXTERN bool M2Options_GetLineDirectives (void); EXTERN bool M2Options_GetM2g (void); EXTERN bool M2Options_SetM2g (bool value); EXTERN bool M2Options_SetLowerCaseKeywords (bool value); @@ -152,6 +155,16 @@ EXTERN void M2Options_SetIBMLongDouble (bool value); EXTERN bool M2Options_GetIBMLongDouble (void); EXTERN void M2Options_SetIEEELongDouble (bool value); EXTERN bool M2Options_GetIEEELongDouble (void); +EXTERN bool M2Options_GetDumpLangDeclFilename (void); +EXTERN void M2Options_SetDumpLangDeclFilename (bool value, const char *arg); +EXTERN bool M2Options_GetDumpLangQuadFilename (void); +EXTERN void M2Options_SetDumpLangQuadFilename (bool value, const char *arg); +EXTERN bool M2Options_GetDumpLangGimpleFilename (void); +EXTERN void M2Options_SetDumpLangGimpleFilename (bool value, const char *arg); +EXTERN bool M2Options_GetDumpLangGimple (void); +EXTERN void M2Options_SetM2DumpFilter (bool value, const char *args); +EXTERN char *M2Options_GetM2DumpFilter (void); +EXTERN void M2Options_SetM2DebugTraceFilter (bool value, const char *arg); #undef EXTERN #endif /* m2options_h. */ diff --git a/gcc/m2/m2pp.cc b/gcc/m2/gm2-gcc/m2pp.cc similarity index 90% rename from gcc/m2/m2pp.cc rename to gcc/m2/gm2-gcc/m2pp.cc index 2f4c45ced141..de8015864e36 100644 --- a/gcc/m2/m2pp.cc +++ b/gcc/m2/gm2-gcc/m2pp.cc @@ -19,28 +19,27 @@ You should have received a copy of the GNU General Public License along with GNU Modula-2; see the file COPYING3. If not see . */ -#if defined(GM2) -#include "gm2-gcc/gcc-consolidation.h" +#include "gcc-consolidation.h" -#include "m2-tree.h" -#include "gm2-lang.h" +#include "../m2-tree.h" +#include "../gm2-lang.h" -#include "gm2-gcc/m2tree.h" -#include "gm2-gcc/m2expr.h" -#include "gm2-gcc/m2type.h" -#include "gm2-gcc/m2decl.h" -#else -#include "config.h" -#include "system.h" -#include "coretypes.h" -#include "cp/cp-tree.h" -#include "stringpool.h" -#include "gm2-gcc/gcc-consolidation.h" -#include "../cp/cp-tree.h" -#endif +#include "m2tree.h" +#include "m2expr.h" +#include "m2type.h" +#include "m2decl.h" +#include "m2options.h" +#include "m2langdump.h" #define M2PP_C -#include "m2/m2pp.h" +#include "m2pp.h" + +const char *m2pp_dump_description[M2PP_DUMP_END] = +{ + "interactive user invoked output", + "modula-2 gimple trees pre genercize", + "modula-2 gimple trees post genercize", +}; namespace modula2 { @@ -48,13 +47,14 @@ namespace modula2 { typedef struct pretty_t { - int needs_space; - int needs_indent; + m2pp_dump_kind output; + bool needs_space; + bool needs_indent; int curpos; int indent; - int issued_begin; - int in_vars; - int in_types; + bool issued_begin; + bool in_vars; + bool in_types; tree block; int bits; } pretty; @@ -67,7 +67,7 @@ typedef struct m2stack_t /* Prototypes. */ -static pretty *initPretty (int bits); +static pretty *initPretty (m2pp_dump_kind kind, int bits); static pretty *dupPretty (pretty *s); static int getindent (pretty *s); static void setindent (pretty *s, int n); @@ -153,9 +153,11 @@ static void m2pp_translation (pretty *s, tree t); static void m2pp_module_block (pretty *s, tree t); static void push (tree t); static void pop (void); -static int begin_printed (tree t); +static bool begin_printed (tree t); static void m2pp_decl_list (pretty *s, tree t); static void m2pp_loc (pretty *s, tree t); +static FILE *getoutput (pretty *s); + void pet (tree t); void m2pp_integer (pretty *s, tree t); @@ -163,13 +165,14 @@ void m2pp_integer (pretty *s, tree t); extern void stop (void); static stack *stackPtr = NULL; +static FILE *m2pp_output_file[M2PP_DUMP_END]; /* do_pf helper function for pf. */ void do_pf (tree t, int bits) { - pretty *state = initPretty (bits); + pretty *state = initPretty (M2PP_DUMP_STDOUT, bits); if (TREE_CODE (t) == TRANSLATION_UNIT_DECL) m2pp_translation (state, t); @@ -188,7 +191,7 @@ do_pf (tree t, int bits) void pf (tree t) { - do_pf (t, FALSE); + do_pf (t, false); } /* pe print expression. Expected to be printed interactively from @@ -197,7 +200,7 @@ pf (tree t) void pe (tree t) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); m2pp_expression (state, t); m2pp_needspace (state); @@ -212,7 +215,7 @@ pe (tree t) void pet (tree t) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); m2pp_expression (state, t); m2pp_needspace (state); @@ -228,7 +231,7 @@ pet (tree t) void pt (tree t) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); m2pp_type (state, t); m2pp_needspace (state); m2pp_print (state, ";\n"); @@ -241,7 +244,7 @@ pt (tree t) void ptl (tree t) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); m2pp_type_lowlevel (state, t); m2pp_needspace (state); m2pp_print (state, ";\n"); @@ -253,7 +256,7 @@ ptl (tree t) void ptcl (tree t) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); m2pp_decl_list (state, t); m2pp_print (state, "\n"); @@ -278,7 +281,7 @@ m2pp_loc (pretty *s, tree t) m2pp_print (s, "(* "); m2pp_print (s, l.file); m2pp_print (s, ":"); - printf ("%d", l.line); + fprintf (getoutput (s), "%d", l.line); m2pp_print (s, " *)"); m2pp_print (s, "\n"); } @@ -332,7 +335,7 @@ pv (tree t) if (code == PARM_DECL) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); m2pp_identifier (state, t); m2pp_needspace (state); m2pp_print (state, "in_vars) { - s->in_vars = TRUE; + s->in_vars = true; m2pp_print (s, "VAR\n"); setindent (s, getindent (s) + 3); } @@ -541,7 +552,7 @@ m2pp_types (pretty *s) { if (!s->in_types) { - s->in_types = TRUE; + s->in_types = true; m2pp_print (s, "TYPE\n"); setindent (s, getindent (s) + 3); } @@ -581,7 +592,7 @@ hextree (tree t) } if (VAR_P (t)) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); printf ("(* VAR_DECL %p <", (void *)t); if (DECL_SEEN_IN_BIND_EXPR_P (t)) @@ -598,7 +609,7 @@ hextree (tree t) } if (TREE_CODE (t) == PARM_DECL) { - pretty *state = initPretty (FALSE); + pretty *state = initPretty (M2PP_DUMP_STDOUT, 0); printf ("(* PARM_DECL %p <", (void *)t); printf ("> context = %p*)\n", (void *)decl_function_context (t)); @@ -647,14 +658,14 @@ m2pp_module_block (pretty *s, tree t) if (!DECL_EXTERNAL (t)) { pretty *p = dupPretty (s); - printf ("\n"); - p->in_vars = FALSE; - p->in_types = FALSE; + fprintf (getoutput (s), "\n"); + p->in_vars = false; + p->in_types = false; m2pp_function (p, t); killPretty (p); - printf ("\n"); - s->in_vars = FALSE; - s->in_types = FALSE; + fprintf (getoutput (s), "\n"); + s->in_vars = false; + s->in_types = false; } break; @@ -674,7 +685,7 @@ m2pp_module_block (pretty *s, tree t) setindent (s, o); m2pp_needspace (s); m2pp_print (s, ";\n"); - s->in_vars = FALSE; + s->in_vars = false; } break; @@ -687,11 +698,11 @@ m2pp_module_block (pretty *s, tree t) m2pp_type (s, TREE_TYPE (t)); m2pp_needspace (s); m2pp_print (s, ";\n"); - s->in_types = FALSE; + s->in_types = false; break; case DECL_EXPR: - printf ("is this node legal here? \n"); + fprintf (getoutput (s), "is this node legal here? \n"); m2pp_decl_expr (s, t); break; @@ -719,9 +730,9 @@ m2pp_begin (pretty *s) m2pp_print (s, "BEGIN\n"); setindent (s, getindent (s) + 3); } - s->issued_begin = TRUE; - s->in_vars = FALSE; - s->in_types = FALSE; + s->issued_begin = true; + s->in_vars = false; + s->in_types = false; } } @@ -817,18 +828,18 @@ m2pp_var_list (pretty *s, tree t) if (TREE_CODE (t) == FUNCTION_DECL) { pretty *p = dupPretty (s); - printf ("\n"); - p->in_vars = FALSE; - p->in_types = FALSE; + fprintf (getoutput (s), "\n"); + p->in_vars = false; + p->in_types = false; m2pp_function (p, t); killPretty (p); - printf ("\n"); + fprintf (getoutput (s), "\n"); } else if (TREE_CODE (t) == TYPE_DECL) m2pp_identifier (s, t); else if (TREE_CODE (t) == DECL_EXPR) { - printf ("is this node legal here? \n"); + fprintf (getoutput (s), "is this node legal here? \n"); // is it legal to have a DECL_EXPR here ? m2pp_var_type_decl (s, DECL_EXPR_DECL (t)); } @@ -857,12 +868,12 @@ m2pp_type_list (pretty *s, tree t) } #endif -/* m2pp_needspace sets appropriate flag to TRUE. */ +/* m2pp_needspace sets appropriate flag to true. */ static void m2pp_needspace (pretty *s) { - s->needs_space = TRUE; + s->needs_space = true; } /* m2pp_identifer prints an identifier. */ @@ -957,7 +968,7 @@ m2pp_procedure_type (pretty *s, tree t) { int o = getindent (s); int p; - int first = TRUE; + bool first = true; m2pp_print (s, "("); p = getcurpos (s); @@ -986,7 +997,7 @@ m2pp_procedure_type (pretty *s, tree t) m2pp_param_type (s, TREE_VALUE (i)); } i = TREE_CHAIN (i); - first = FALSE; + first = false; } m2pp_print (s, ")"); setindent (s, o); @@ -1158,8 +1169,8 @@ m2pp_print (pretty *s, const char *p) if (s->needs_space) { - printf (" "); - s->needs_space = FALSE; + fprintf (getoutput (s), " "); + s->needs_space = false; s->curpos++; } @@ -1167,21 +1178,21 @@ m2pp_print (pretty *s, const char *p) { if (p[i] == '\n') { - s->needs_indent = TRUE; + s->needs_indent = true; s->curpos = 0; - printf ("\n"); + fprintf (getoutput (s), "\n"); } else { if (s->needs_indent) { if (s->indent > 0) - printf ("%*c", s->indent, ' '); - s->needs_indent = FALSE; + fprintf (getoutput (s), "%*c", s->indent, ' '); + s->needs_indent = false; s->curpos += s->indent; } s->curpos++; - putchar (p[i]); + fputc (p[i], getoutput (s)); } i++; } @@ -1196,25 +1207,25 @@ m2pp_print_char (pretty *s, char ch) { if (s->needs_space) { - printf (" "); - s->needs_space = FALSE; + fprintf (getoutput (s), " "); + s->needs_space = false; s->curpos++; } if (s->needs_indent) { if (s->indent > 0) - printf ("%*c", s->indent, ' '); - s->needs_indent = FALSE; + fprintf (getoutput (s), "%*c", s->indent, ' '); + s->needs_indent = false; s->curpos += s->indent; } if (ch == '\n') { s->curpos++; - putchar ('\\'); - putchar ('n'); + fputc ('\\', getoutput (s)); + fputc ('n', getoutput (s)); } else - putchar (ch); + fputc (ch, getoutput (s)); s->curpos++; } @@ -1531,7 +1542,7 @@ m2pp_recordfield_alignment (pretty *s, tree t) m2pp_print (s, "<* bytealignment ("); setindent (s, p + 18); - printf ("%d", aligned / BITS_PER_UNIT); + fprintf (getoutput (s), "%d", aligned / BITS_PER_UNIT); m2pp_print (s, ")"); m2pp_needspace (s); @@ -2247,13 +2258,13 @@ m2pp_try_finally_expr (pretty *s, tree t) m2pp_print (s, "(* end try_finally_expr *)\n"); } -#if !defined(GM2) -/* m2pp_if_stmt pretty print a C++ if_stmt. */ +/* m2pp_if_stmt pretty print a if_stmt tree. Modula-2 does not use this to + generate IF THEN ELSE END statements, instead it uses labels and gotos. */ static void m2pp_if_stmt (pretty *s, tree t) { - m2pp_print (s, "(* only C++ uses if_stmt nodes *)\n"); + m2pp_print (s, "(* An if_stmt node. *)\n"); m2pp_print (s, "IF "); m2pp_expression (s, TREE_OPERAND (t, 0)); m2pp_print (s, "\n"); @@ -2267,7 +2278,6 @@ m2pp_if_stmt (pretty *s, tree t) setindent (s, getindent (s) - 3); m2pp_print (s, "END\n"); } -#endif static void m2pp_asm_expr (pretty *state, tree node) @@ -2362,11 +2372,9 @@ m2pp_statement (pretty *s, tree t) case ASM_EXPR: m2pp_asm_expr (s, t); break; -#if defined(CPP) case IF_STMT: m2pp_if_stmt (s, t); break; -#endif case ERROR_MARK: m2pp_print (s, "\n"); break; @@ -2396,9 +2404,9 @@ static void m2pp_cleanup_point_expr (pretty *s, tree t) { m2pp_begin (s); - m2pp_print (s, "(* cleanup point begins *)\n"); + m2pp_print (s, "(* Cleanup point begins. *)\n"); m2pp_expression (s, TREE_OPERAND (t, 0)); - m2pp_print (s, "(* cleanup point ends *)\n"); + m2pp_print (s, "(* Cleanup point ends. *)\n"); } /* m2pp_decl_expr displays a local declaration. */ @@ -2407,7 +2415,7 @@ static void m2pp_decl_expr (pretty *s, tree t) { m2pp_var (s); - m2pp_print (s, "(* variable in decl_expr *)\n"); + m2pp_print (s, "(* Variable in decl_expr. *)\n"); m2pp_var_type_decl (s, DECL_EXPR_DECL (t)); } @@ -2452,11 +2460,11 @@ m2pp_call_expr (pretty *s, tree t) tree call = CALL_EXPR_FN (t); tree args = TREE_OPERAND (t, 1); tree type = TREE_TYPE (t); - int has_return_type = TRUE; + bool has_return_type = true; tree proc; if (type && VOID_TYPE_P (type)) - has_return_type = FALSE; + has_return_type = false; if (TREE_CODE (call) == ADDR_EXPR || TREE_CODE (call) == NON_LVALUE_EXPR) proc = TREE_OPERAND (call, 0); @@ -2738,3 +2746,102 @@ m2pp_component_ref (pretty *s, tree t) } } + +/* Code interface to this module. */ + +/* CreateDumpGimple creates the dump files using the template name. */ + +void +m2pp_CreateDumpGimple (char *template_name, int template_len) +{ + int kind = M2PP_DUMP_STDOUT; + modula2::m2pp_output_file[kind] = stdout; + kind++; + for (; kind < M2PP_DUMP_END; kind++) + { + if (kind == M2PP_DUMP_FD) + modula2::m2pp_output_file[kind] = NULL; + else + { + char *name = (char *)alloca (template_len); + + snprintf (name, template_len, template_name, kind); + modula2::m2pp_output_file[kind] = fopen (name, "w"); + if (modula2::m2pp_output_file[kind] == NULL) + { + fprintf (stderr, "unable to create dump file %s: %s\n", + name, xstrerror (errno)); + exit (1); + } + fprintf (modula2::m2pp_output_file[kind], "%s\n\n", + m2pp_dump_description[kind]); + } + } +} + +/* Close all dump files and fflush stdout. */ + +void +m2pp_CloseDumpGimple (void) +{ + int kind = M2PP_DUMP_STDOUT; + fflush (modula2::m2pp_output_file[kind]); + kind++; + for (; kind < M2PP_DUMP_END; kind++) + if (kind != M2PP_DUMP_FD) + fclose (modula2::m2pp_output_file[kind]); +} + +/* m2pp_dump_gimple_pretty create an initPretty object and print + fndecl to kind output. */ + +void +m2pp_dump_gimple_pretty (m2pp_dump_kind kind, tree fndecl) +{ + modula2::pretty *state = modula2::initPretty (kind, 0); + + modula2::m2pp_print (state, "\n"); + if (TREE_CODE (fndecl) == TRANSLATION_UNIT_DECL) + modula2::m2pp_translation (state, fndecl); + else if (TREE_CODE (fndecl) == BLOCK) + modula2::m2pp_module_block (state, fndecl); + else if (TREE_CODE (fndecl) == FUNCTION_DECL) + modula2::m2pp_function (state, fndecl); + else + modula2::m2pp_statement_sequence (state, fndecl); + modula2::killPretty (state); +} + + +/* Generate modula-2 style gimple for fndecl. */ + +void +m2pp_dump_gimple (m2pp_dump_kind kind, tree fndecl) +{ + if (M2Options_GetDumpLangGimple () + && M2LangDump_IsDumpRequiredTree (fndecl, true)) + m2pp_dump_gimple_pretty (kind, fndecl); +} + + +/* Dump fndecl to a file descriptor. */ + +void +m2pp_DumpGimpleFd (int fd, tree fndecl) +{ + FILE *f = fdopen (fd, "a"); + if (f != NULL) + { +#if 0 + modula2::m2pp_output_file[M2PP_DUMP_FD] = f; + m2pp_dump_gimple_pretty (M2PP_DUMP_FD, fndecl); + fprintf (f, "\n"); +#endif + print_node (f, "m2 tree", fndecl, 1); + fprintf (f, "\n\n"); + fflush (f); +#if 0 + modula2::m2pp_output_file[M2PP_DUMP_FD] = NULL; +#endif + } +} diff --git a/gcc/m2/gm2-gcc/m2pp.def b/gcc/m2/gm2-gcc/m2pp.def new file mode 100644 index 000000000000..20077176da2e --- /dev/null +++ b/gcc/m2/gm2-gcc/m2pp.def @@ -0,0 +1,45 @@ +(* m2pp.def definition module for m2pp.cc. + +Copyright (C) 2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 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. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Modula-2; see the file COPYING3. If not see +. *) + +DEFINITION MODULE FOR "C" m2pp ; + +FROM SYSTEM IMPORT ADDRESS ; +FROM m2tree IMPORT Tree ; + + +(* + CreateDumpGimple - create the gimple dump files. +*) + +PROCEDURE CreateDumpGimple (templatename: ADDRESS; templatelen: CARDINAL) ; + + +(* + CloseDumpGimple - close the gimple dump files. +*) + +PROCEDURE CloseDumpGimple ; + + +PROCEDURE DumpGimpleFd (fd: INTEGER; fndecl: Tree) ; + + +END m2pp. diff --git a/gcc/m2/m2pp.h b/gcc/m2/gm2-gcc/m2pp.h similarity index 54% rename from gcc/m2/m2pp.h rename to gcc/m2/gm2-gcc/m2pp.h index e901102fab7c..6391bda59569 100644 --- a/gcc/m2/m2pp.h +++ b/gcc/m2/gm2-gcc/m2pp.h @@ -19,17 +19,39 @@ You should have received a copy of the GNU General Public License along with GNU Modula-2; see the file COPYING3. If not see . */ -#if !defined(M2PP_H) -# define M2PP_H +#if !defined(m2pp_h) +#define m2pp_h +#if defined(m2pp_c) +#if defined(__GNUG__) +#define EXTERN extern "C" +#else /* !__GNUG__. */ +#define EXTERN +#endif /* !__GNUG__. */ +#else /* !m2pp_c. */ +#if defined(__GNUG__) +#define EXTERN extern "C" +#else /* !__GNUG__. */ +#define EXTERN extern +#endif /* !__GNUG__. */ +#endif /* !m2pp_c. */ -# if defined(M2PP_C) -# define EXTERN -# else -# define EXTERN extern -# endif +typedef enum +{ + M2PP_DUMP_STDOUT, /* This must remain the first field. */ + M2PP_DUMP_PRE_GENERICIZE, + M2PP_DUMP_POST_GENERICIZE, + M2PP_DUMP_FD, + M2PP_DUMP_END, +} m2pp_dump_kind; + +EXTERN void m2pp_CreateDumpGimple (char *template_name, int template_len); +EXTERN void m2pp_dump_gimple (m2pp_dump_kind kind, tree fndecl); +EXTERN void m2pp_CloseDumpGimple (void); +EXTERN void m2pp_DumpGimpleFd (int fd, tree fndecl); namespace modula2 { -/* These functions allow a maintainer to dump the trees in Modula-2. */ +/* GDB Interactive interface to m2pp. Allow a maintainer to dump + the trees in Modula-2. */ EXTERN void pf (tree t); EXTERN void pe (tree t); diff --git a/gcc/m2/gm2-gcc/m2statement.cc b/gcc/m2/gm2-gcc/m2statement.cc index 3c048d40a99a..dd7f2529f5d3 100644 --- a/gcc/m2/gm2-gcc/m2statement.cc +++ b/gcc/m2/gm2-gcc/m2statement.cc @@ -36,6 +36,7 @@ along with GNU Modula-2; see the file COPYING3. If not see #include "m2treelib.h" #include "m2type.h" #include "m2convert.h" +#include "m2pp.h" static GTY (()) tree param_list = NULL_TREE; /* Ready for the next time we call/define a function. */ @@ -102,11 +103,15 @@ m2statement_BuildEndFunctionCode (location_t location, tree fndecl, bool nested) m2block_finishFunctionCode (fndecl); m2statement_SetEndLocation (location); + m2pp_dump_gimple (M2PP_DUMP_PRE_GENERICIZE, fndecl); gm2_genericize (fndecl); if (nested) (void)cgraph_node::get_create (fndecl); else - cgraph_node::finalize_function (fndecl, false); + { + m2pp_dump_gimple (M2PP_DUMP_POST_GENERICIZE, fndecl); + cgraph_node::finalize_function (fndecl, false); + } m2block_popFunctionScope (); diff --git a/gcc/m2/gm2-lang.cc b/gcc/m2/gm2-lang.cc index 86124df603a4..f7ab8b807d39 100644 --- a/gcc/m2/gm2-lang.cc +++ b/gcc/m2/gm2-lang.cc @@ -42,6 +42,8 @@ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "convert.h" #include "rtegraph.h" +#undef ENABLE_QUAD_DUMP_ALL + static void write_globals (void); static int insideCppArgs = FALSE; @@ -191,7 +193,8 @@ gm2_langhook_init_options (unsigned int decoded_options_count, switch (code) { case OPT_fcpp: - gcc_checking_assert (building_cpp_command); + if (value) + gcc_checking_assert (building_cpp_command); break; case OPT_fcpp_begin: in_cpp_args = true; @@ -214,8 +217,7 @@ gm2_langhook_init_options (unsigned int decoded_options_count, M2Options_Setc (value); break; case OPT_dumpdir: - if (building_cpp_command) - M2Options_SetDumpDir (arg); + M2Options_SetDumpDir (arg); break; case OPT_save_temps: if (building_cpp_command) @@ -407,6 +409,9 @@ gm2_langhook_handle_option ( switch (code) { + case OPT_dumpdir: + M2Options_SetDumpDir (arg); + return 1; case OPT_I: push_back_Ipath (arg); return 1; @@ -470,15 +475,34 @@ gm2_langhook_handle_option ( case OPT_fdebug_builtins: M2Options_SetDebugBuiltins (value); return 1; - case OPT_fdebug_trace_quad: - M2Options_SetDebugTraceQuad (value); - return 1; - case OPT_fdebug_trace_api: - M2Options_SetDebugTraceAPI (value); - return 1; case OPT_fdebug_function_line_numbers: M2Options_SetDebugFunctionLineNumbers (value); return 1; +#ifdef ENABLE_QUAD_DUMP_ALL + case OPT_fdump_lang_all: + M2Options_SetDumpLangDeclFilename (value, NULL); + M2Options_SetDumpLangGimpleFilename (value, NULL); + M2Options_SetDumpLangQuadFilename (value, NULL); + return 1; + case OPT_fdump_lang_decl: + M2Options_SetDumpLangDeclFilename (value, NULL); + return 1; + case OPT_fdump_lang_decl_: + M2Options_SetDumpLangDeclFilename (value, arg); + return 1; + case OPT_fdump_lang_gimple: + M2Options_SetDumpLangGimpleFilename (value, NULL); + return 1; + case OPT_fdump_lang_gimple_: + M2Options_SetDumpLangGimpleFilename (value, arg); + return 1; + case OPT_fdump_lang_quad: + M2Options_SetDumpLangQuadFilename (value, NULL); + return 1; + case OPT_fdump_lang_quad_: + M2Options_SetDumpLangQuadFilename (value, arg); + return 1; +#endif case OPT_fauto_init: M2Options_SetAutoInit (value); return 1; @@ -519,6 +543,14 @@ gm2_langhook_handle_option ( case OPT_fm2_strict_type: M2Options_SetStrictTypeChecking (value); return 1; + case OPT_fm2_debug_trace_: + M2Options_SetM2DebugTraceFilter (value, arg); + return 1; +#ifdef ENABLE_QUAD_DUMP_ALL + case OPT_fm2_dump_filter_: + M2Options_SetM2DumpFilter (value, arg); + return 1; +#endif case OPT_Wall: M2Options_SetWall (value); return 1; diff --git a/gcc/m2/gm2-libs/Builtins.def b/gcc/m2/gm2-libs/Builtins.def index 3e1cb29d1578..2ad66030e392 100644 --- a/gcc/m2/gm2-libs/Builtins.def +++ b/gcc/m2/gm2-libs/Builtins.def @@ -28,7 +28,7 @@ DEFINITION MODULE Builtins ; FROM SYSTEM IMPORT ADDRESS ; -(* floating point intrinsic procedure functions *) +(* Floating point intrinsic procedure functions. *) PROCEDURE __BUILTIN__ isnanf (x: SHORTREAL) : INTEGER ; PROCEDURE __BUILTIN__ isnan (x: REAL) : INTEGER ; @@ -107,7 +107,43 @@ PROCEDURE __BUILTIN__ scalbn (x: REAL; n: INTEGER) : REAL ; PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ; PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ; -(* complex arithmetic intrincic procedure functions *) +PROCEDURE __BUILTIN__ isgreater (x, y: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ isgreaterf (x, y: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ isgreaterl (x, y: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ isgreaterequal (x, y: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ isgreaterequalf (x, y: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ isgreaterequall (x, y: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ isless (x, y: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ islessf (x, y: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ islessl (x, y: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ islessequal (x, y: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ islessequalf (x, y: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ islessequall (x, y: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ islessgreater (x, y: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ islessgreaterf (x, y: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ islessgreaterl (x, y: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ isunordered (x, y: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ isunorderedf (x, y: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ isunorderedl (x, y: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ iseqsig (x, y: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ iseqsigf (x, y: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ iseqsigl (x, y: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ isnormal (r: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ isnormalf (s: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ isnormall (l: LONGREAL) : INTEGER ; + +PROCEDURE __BUILTIN__ isinf_sign (r: REAL) : INTEGER ; +PROCEDURE __BUILTIN__ isinf_signf (s: SHORTREAL) : INTEGER ; +PROCEDURE __BUILTIN__ isinf_signl (l: LONGREAL) : INTEGER ; + +(* Complex arithmetic intrincic procedure functions. *) PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ; PROCEDURE __BUILTIN__ cabs (z: COMPLEX) : REAL ; diff --git a/gcc/m2/gm2-libs/Builtins.mod b/gcc/m2/gm2-libs/Builtins.mod index 457ee92c2826..8079dc135651 100644 --- a/gcc/m2/gm2-libs/Builtins.mod +++ b/gcc/m2/gm2-libs/Builtins.mod @@ -33,7 +33,7 @@ PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_alloca)) alloca (i: CARDINAL) : BEGIN (* This routine will never be called as it allocates memory on top of the current stack frame, which is automatically - deallocated upon its return. *) + deallocated upon its return. *) HALT ; RETURN NIL END alloca ; @@ -43,18 +43,17 @@ BEGIN (* this routine is only called if -fdebug-builtins is supplied on the command line. The purpose of this routine is to allow a developer to single step into this routine and inspect the - value of, nBytes, and, returned. - *) + value of nBytes and returned. *) RETURN returned END alloca_trace ; -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_memcpy)) memcpy (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ; +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_memcpy)) + memcpy (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ; BEGIN - (* hopefully the compiler will choose to use the __builtin_memcpy function within GCC. - This call is here just in case it cannot. Ie if the user sets a procedure variable to - memcpy, then clearly the compiler cannot inline such a call and thus it will - be forced into calling this function. - *) + (* Hopefully the compiler will choose to use the __builtin_memcpy + function within GCC. This call is here just in case it cannot. + If the user sets a procedure variable to memcpy then the + code below could be run instead. *) RETURN cbuiltin.memcpy (dest, src, nbytes) END memcpy ; @@ -629,18 +628,154 @@ BEGIN RETURN -1.0 END huge_valf ; +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreater)) isgreater (x, y: REAL) : INTEGER ; +BEGIN + RETURN 1 +END isgreater ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterf)) isgreaterf (x, y: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END isgreaterf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterl)) isgreaterl (x, y: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END isgreaterl ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequal)) isgreaterequal (x, y: REAL) : INTEGER ; +BEGIN + RETURN 1 +END isgreaterequal ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequalf)) isgreaterequalf (x, y: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END isgreaterequalf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequall)) isgreaterequall (x, y: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END isgreaterequall ; + + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isless)) isless (x, y: REAL) : INTEGER ; +BEGIN + RETURN 1 +END isless ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessf)) islessf (x, y: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END islessf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessl)) islessl (x, y: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END islessl ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequal)) islessequal (x, y: REAL) : INTEGER ; +BEGIN + RETURN 1 +END islessequal ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequalf)) islessequalf (x, y: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END islessequalf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequall)) islessequall (x, y: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END islessequall ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreater)) islessgreater (x, y: REAL) : INTEGER ; +BEGIN + RETURN 1 +END islessgreater ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreaterf)) islessgreaterf (x, y: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END islessgreaterf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreaterl)) islessgreaterl (x, y: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END islessgreaterl ; + + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunordered)) isunordered (x, y: REAL) : INTEGER ; +BEGIN + RETURN 1 +END isunordered ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunorderedf)) isunorderedf (x, y: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END isunorderedf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunorderedl)) isunorderedl (x, y: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END isunorderedl ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsig)) iseqsig (x, y: REAL) : INTEGER ; +BEGIN + RETURN 1 +END iseqsig ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsigf)) iseqsigf (x, y: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END iseqsigf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsigl)) iseqsigl (x, y: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END iseqsigl ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormal)) isnormal (r: REAL) : INTEGER ; +BEGIN + RETURN 1 +END isnormal ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormalf)) isnormalf (s: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END isnormalf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormall)) isnormall (l: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END isnormall ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf)) isinf_sign (r: REAL) : INTEGER ; +BEGIN + RETURN 1 +END isinf_sign ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf_signf)) isinf_signf (s: SHORTREAL) : INTEGER ; +BEGIN + RETURN 1 +END isinf_signf ; + +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf)) isinf_signl (l: LONGREAL) : INTEGER ; +BEGIN + RETURN 1 +END isinf_signl ; + PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_longjmp)) longjmp (env: ADDRESS; val: INTEGER) ; BEGIN - (* empty, replaced internally by gcc *) + (* Empty, replaced internally by gcc. *) END longjmp ; PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_setjmp)) setjmp (env: ADDRESS) : INTEGER ; BEGIN - (* empty, replaced internally by gcc *) - RETURN 0 (* keeps gm2 happy *) + (* Empty, replaced internally by gcc. *) + RETURN 0 (* Keep -Wreturn-type happy. *) END setjmp ; - (* frame_address - returns the address of the frame. The current frame is obtained if level is 0, diff --git a/gcc/m2/gm2-libs/DynamicStrings.def b/gcc/m2/gm2-libs/DynamicStrings.def index 29f4989b7943..25c27e8a9394 100644 --- a/gcc/m2/gm2-libs/DynamicStrings.def +++ b/gcc/m2/gm2-libs/DynamicStrings.def @@ -29,7 +29,7 @@ DEFINITION MODULE DynamicStrings ; FROM SYSTEM IMPORT ADDRESS ; EXPORT QUALIFIED String, InitString, KillString, Fin, InitStringCharStar, - InitStringChar, Index, RIndex, + InitStringChar, Index, RIndex, ReverseIndex, Mark, Length, ConCat, ConCatChar, Assign, Dup, Add, Equal, EqualCharStar, EqualArray, ToUpper, ToLower, CopyOut, Mult, Slice, ReplaceChar, @@ -201,13 +201,27 @@ PROCEDURE Index (s: String; ch: CHAR; o: CARDINAL) : INTEGER ; (* RIndex - returns the indice of the last occurance of, ch, - in String, s. The search starts at position, o. - -1 is returned if, ch, is not found. + in String, s. The search starts at position, o. + -1 is returned if ch is not found. The search + is performed left to right. *) PROCEDURE RIndex (s: String; ch: CHAR; o: CARDINAL) : INTEGER ; +(* + ReverseIndex - returns the indice of the last occurance of ch + in String s. The search starts at position o + and searches from right to left. The start position + may be indexed negatively from the right (-1 is the + last index). + The return value if ch is found will always be positive. + -1 is returned if ch is not found. +*) + +PROCEDURE ReverseIndex (s: String; ch: CHAR; o: INTEGER) : INTEGER ; + + (* RemoveComment - assuming that, comment, is a comment delimiter which indicates anything to its right is a comment diff --git a/gcc/m2/gm2-libs/DynamicStrings.mod b/gcc/m2/gm2-libs/DynamicStrings.mod index c79e21c12be7..b53f0f285b56 100644 --- a/gcc/m2/gm2-libs/DynamicStrings.mod +++ b/gcc/m2/gm2-libs/DynamicStrings.mod @@ -1466,8 +1466,9 @@ END Index ; (* RIndex - returns the indice of the last occurance of, ch, - in String, s. The search starts at position, o. - -1 is returned if, ch, is not found. + in String, s. The search starts at position, o. + -1 is returned if, ch, is not found. The search + is performed left to right. *) PROCEDURE RIndex (s: String; ch: CHAR; o: CARDINAL) : INTEGER ; @@ -1509,6 +1510,47 @@ BEGIN END RIndex ; +(* + ReverseIndex - returns the indice of the last occurance of ch + in String s. The search starts at position o + and searches from right to left. The start position + may be indexed negatively from the right (-1 is the + last index). + The return value if ch is found will always be positive. + -1 is returned if ch is not found. +*) + +PROCEDURE ReverseIndex (s: String; ch: CHAR; o: INTEGER) : INTEGER ; +VAR + c: CARDINAL ; +BEGIN + IF PoisonOn + THEN + s := CheckPoisoned (s) + END ; + IF o < 0 + THEN + o := VAL (INTEGER, Length (s)) + o ; + IF o < 0 + THEN + RETURN -1 + END + END ; + IF VAL (CARDINAL, o) < Length (s) + THEN + WHILE o >= 0 DO + IF char (s, o) = ch + THEN + RETURN o + ELSE + DEC (o) + END + END + END ; + RETURN -1 +END ReverseIndex ; + + (* RemoveComment - assuming that, comment, is a comment delimiter which indicates anything to its right is a comment diff --git a/gcc/m2/lang.opt b/gcc/m2/lang.opt index 505f4b56e8a9..206bd03d09f6 100644 --- a/gcc/m2/lang.opt +++ b/gcc/m2/lang.opt @@ -90,17 +90,9 @@ fd Modula-2 turn on internal debugging of the compiler (internal switch) -fdebug-trace-quad -Modula-2 -turn on quadruple tracing (internal switch) - -fdebug-trace-api -Modula-2 -turn on the Modula-2 api tracing (internal switch) - fdebug-function-line-numbers Modula-2 -turn on the Modula-2 function line number generation (internal switch) +turn on tracing of procedure line numbers (internal switch) fdef= Modula-2 Joined @@ -138,6 +130,10 @@ flocation= Modula-2 Joined set all location values to a specific value (internal switch) +fm2-debug-trace= +Modula-2 Joined +turn on internal debug tracing for quad,token,line,all (internal switch) + fm2-g Modula-2 generate extra nops to improve debugging, producing an instruction for every code related keyword diff --git a/gcc/m2/m2.flex b/gcc/m2/m2.flex index f8f5ce64ad36..2483b282d486 100644 --- a/gcc/m2/m2.flex +++ b/gcc/m2/m2.flex @@ -160,8 +160,14 @@ extern void yylex (void); . { updatepos(); skippos(); } \n.* { consumeLine(); } "*/" { endOfCComment(); } -^\#.* { consumeLine(); /* printf("found: %s\n", currentLine->linebuf); */ BEGIN LINE0; } -\n\#.* { consumeLine(); /* printf("found: %s\n", currentLine->linebuf); */ BEGIN LINE0; } +^\#.* { consumeLine(); /* printf("found: %s\n", currentLine->linebuf); */ + if (M2Options_GetLineDirectives ()) + BEGIN LINE0; + } +\n\#.* { consumeLine(); /* printf("found: %s\n", currentLine->linebuf); */ + if (M2Options_GetLineDirectives ()) + BEGIN LINE0; + } \#[ \t]* { updatepos(); } [0-9]+[ \t]*\" { updatepos(); lineno=atoi(yytext); BEGIN LINE1; } \n { m2flex_M2Error("missing initial quote after #line directive"); resetpos(); BEGIN INITIAL; } @@ -188,12 +194,14 @@ extern void yylex (void); \"[^\"\n]*\" { updatepos(); M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); return; } \"[^\"\n]*$ { updatepos(); m2flex_M2Error("missing terminating quote, \""); + M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); resetpos(); return; } '[^'\n]*' { updatepos(); M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); return; } '[^'\n]*$ { updatepos(); m2flex_M2Error("missing terminating quote, '"); + M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); resetpos(); return; } @@ -483,7 +491,10 @@ EXTERN void m2flex_M2Error (const char *s) } putchar('\n'); } - printf("%s:%d:%s\n", filename, currentLine->lineno, s); + if (s == NULL) + printf("%s:%d\n", filename, currentLine->lineno); + else + printf("%s:%d:%s\n", filename, currentLine->lineno, s); } static void poperrorskip (const char *s) @@ -499,6 +510,35 @@ static void poperrorskip (const char *s) } } +/* skipnewline skips all '\n' at the start of the line and returns + the new position. */ + +static +char * +skipnewline (char *line) +{ + while (((*line) != (char)0) && ((*line) == '\n')) + line++; + return line; +} + +/* traceLine display the source line providing -fdebug-trace-line was + enabled. */ + +static +void +traceLine (void) +{ + if (M2Options_GetDebugTraceLine ()) + { + char *line = skipnewline (currentLine->linebuf); + if (filename == NULL) + printf(":%d:%s\n", currentLine->lineno, line); + else + printf("%s:%d:%s\n", filename, currentLine->lineno, line); + } +} + /* * consumeLine - reads a line into a buffer, it then pushes back the whole * line except the initial \n. @@ -519,6 +559,7 @@ static void consumeLine (void) currentLine->column=0; START_LINE (lineno, yyleng); yyless(1); /* push back all but the \n */ + traceLine (); } static void assert_location (location_t location ATTRIBUTE_UNUSED) diff --git a/gcc/m2/target-independent/m2/Builtins.texi b/gcc/m2/target-independent/m2/Builtins.texi index 6f50bfa338e4..4ebad46b96a3 100644 --- a/gcc/m2/target-independent/m2/Builtins.texi +++ b/gcc/m2/target-independent/m2/Builtins.texi @@ -4,7 +4,14 @@ DEFINITION MODULE Builtins ; FROM SYSTEM IMPORT ADDRESS ; -(* floating point intrinsic procedure functions *) +(* Floating point intrinsic procedure functions. *) + +@findex isnanf +PROCEDURE __BUILTIN__ isnanf (x: SHORTREAL) : INTEGER ; +@findex isnan +PROCEDURE __BUILTIN__ isnan (x: REAL) : INTEGER ; +@findex isnanl +PROCEDURE __BUILTIN__ isnanl (x: LONGREAL) : INTEGER ; @findex isfinitef PROCEDURE __BUILTIN__ isfinitef (x: SHORTREAL) : INTEGER ; @@ -113,9 +120,9 @@ PROCEDURE __BUILTIN__ nextafterf (x, y: SHORTREAL) : SHORTREAL ; PROCEDURE __BUILTIN__ nextafterl (x, y: LONGREAL) : LONGREAL ; @findex nexttoward -PROCEDURE __BUILTIN__ nexttoward (x, y: REAL) : LONGREAL ; +PROCEDURE __BUILTIN__ nexttoward (x: REAL; y: LONGREAL) : REAL ; @findex nexttowardf -PROCEDURE __BUILTIN__ nexttowardf (x, y: SHORTREAL) : LONGREAL ; +PROCEDURE __BUILTIN__ nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ; @findex nexttowardl PROCEDURE __BUILTIN__ nexttowardl (x, y: LONGREAL) : LONGREAL ; @@ -133,7 +140,70 @@ PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ; @findex scalbnl PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ; -(* complex arithmetic intrincic procedure functions *) +@findex isgreater +PROCEDURE __BUILTIN__ isgreater (x, y: REAL) : INTEGER ; +@findex isgreaterf +PROCEDURE __BUILTIN__ isgreaterf (x, y: SHORTREAL) : INTEGER ; +@findex isgreaterl +PROCEDURE __BUILTIN__ isgreaterl (x, y: LONGREAL) : INTEGER ; + +@findex isgreaterequal +PROCEDURE __BUILTIN__ isgreaterequal (x, y: REAL) : INTEGER ; +@findex isgreaterequalf +PROCEDURE __BUILTIN__ isgreaterequalf (x, y: SHORTREAL) : INTEGER ; +@findex isgreaterequall +PROCEDURE __BUILTIN__ isgreaterequall (x, y: LONGREAL) : INTEGER ; + +@findex isless +PROCEDURE __BUILTIN__ isless (x, y: REAL) : INTEGER ; +@findex islessf +PROCEDURE __BUILTIN__ islessf (x, y: SHORTREAL) : INTEGER ; +@findex islessl +PROCEDURE __BUILTIN__ islessl (x, y: LONGREAL) : INTEGER ; + +@findex islessequal +PROCEDURE __BUILTIN__ islessequal (x, y: REAL) : INTEGER ; +@findex islessequalf +PROCEDURE __BUILTIN__ islessequalf (x, y: SHORTREAL) : INTEGER ; +@findex islessequall +PROCEDURE __BUILTIN__ islessequall (x, y: LONGREAL) : INTEGER ; + +@findex islessgreater +PROCEDURE __BUILTIN__ islessgreater (x, y: REAL) : INTEGER ; +@findex islessgreaterf +PROCEDURE __BUILTIN__ islessgreaterf (x, y: SHORTREAL) : INTEGER ; +@findex islessgreaterl +PROCEDURE __BUILTIN__ islessgreaterl (x, y: LONGREAL) : INTEGER ; + +@findex isunordered +PROCEDURE __BUILTIN__ isunordered (x, y: REAL) : INTEGER ; +@findex isunorderedf +PROCEDURE __BUILTIN__ isunorderedf (x, y: SHORTREAL) : INTEGER ; +@findex isunorderedl +PROCEDURE __BUILTIN__ isunorderedl (x, y: LONGREAL) : INTEGER ; + +@findex iseqsig +PROCEDURE __BUILTIN__ iseqsig (x, y: REAL) : INTEGER ; +@findex iseqsigf +PROCEDURE __BUILTIN__ iseqsigf (x, y: SHORTREAL) : INTEGER ; +@findex iseqsigl +PROCEDURE __BUILTIN__ iseqsigl (x, y: LONGREAL) : INTEGER ; + +@findex isnormal +PROCEDURE __BUILTIN__ isnormal (r: REAL) : INTEGER ; +@findex isnormalf +PROCEDURE __BUILTIN__ isnormalf (s: SHORTREAL) : INTEGER ; +@findex isnormall +PROCEDURE __BUILTIN__ isnormall (l: LONGREAL) : INTEGER ; + +@findex isinf_sign +PROCEDURE __BUILTIN__ isinf_sign (r: REAL) : INTEGER ; +@findex isinf_signf +PROCEDURE __BUILTIN__ isinf_signf (s: SHORTREAL) : INTEGER ; +@findex isinf_signl +PROCEDURE __BUILTIN__ isinf_signl (l: LONGREAL) : INTEGER ; + +(* Complex arithmetic intrincic procedure functions. *) @findex cabsf PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ; diff --git a/gcc/m2/target-independent/m2/gm2-libs.texi b/gcc/m2/target-independent/m2/gm2-libs.texi index 0531a4a1753a..10b466811c13 100644 --- a/gcc/m2/target-independent/m2/gm2-libs.texi +++ b/gcc/m2/target-independent/m2/gm2-libs.texi @@ -240,7 +240,14 @@ DEFINITION MODULE Builtins ; FROM SYSTEM IMPORT ADDRESS ; -(* floating point intrinsic procedure functions *) +(* Floating point intrinsic procedure functions. *) + +@findex isnanf +PROCEDURE __BUILTIN__ isnanf (x: SHORTREAL) : INTEGER ; +@findex isnan +PROCEDURE __BUILTIN__ isnan (x: REAL) : INTEGER ; +@findex isnanl +PROCEDURE __BUILTIN__ isnanl (x: LONGREAL) : INTEGER ; @findex isfinitef PROCEDURE __BUILTIN__ isfinitef (x: SHORTREAL) : INTEGER ; @@ -349,9 +356,9 @@ PROCEDURE __BUILTIN__ nextafterf (x, y: SHORTREAL) : SHORTREAL ; PROCEDURE __BUILTIN__ nextafterl (x, y: LONGREAL) : LONGREAL ; @findex nexttoward -PROCEDURE __BUILTIN__ nexttoward (x, y: REAL) : LONGREAL ; +PROCEDURE __BUILTIN__ nexttoward (x: REAL; y: LONGREAL) : REAL ; @findex nexttowardf -PROCEDURE __BUILTIN__ nexttowardf (x, y: SHORTREAL) : LONGREAL ; +PROCEDURE __BUILTIN__ nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ; @findex nexttowardl PROCEDURE __BUILTIN__ nexttowardl (x, y: LONGREAL) : LONGREAL ; @@ -369,7 +376,70 @@ PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ; @findex scalbnl PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ; -(* complex arithmetic intrincic procedure functions *) +@findex isgreater +PROCEDURE __BUILTIN__ isgreater (x, y: REAL) : INTEGER ; +@findex isgreaterf +PROCEDURE __BUILTIN__ isgreaterf (x, y: SHORTREAL) : INTEGER ; +@findex isgreaterl +PROCEDURE __BUILTIN__ isgreaterl (x, y: LONGREAL) : INTEGER ; + +@findex isgreaterequal +PROCEDURE __BUILTIN__ isgreaterequal (x, y: REAL) : INTEGER ; +@findex isgreaterequalf +PROCEDURE __BUILTIN__ isgreaterequalf (x, y: SHORTREAL) : INTEGER ; +@findex isgreaterequall +PROCEDURE __BUILTIN__ isgreaterequall (x, y: LONGREAL) : INTEGER ; + +@findex isless +PROCEDURE __BUILTIN__ isless (x, y: REAL) : INTEGER ; +@findex islessf +PROCEDURE __BUILTIN__ islessf (x, y: SHORTREAL) : INTEGER ; +@findex islessl +PROCEDURE __BUILTIN__ islessl (x, y: LONGREAL) : INTEGER ; + +@findex islessequal +PROCEDURE __BUILTIN__ islessequal (x, y: REAL) : INTEGER ; +@findex islessequalf +PROCEDURE __BUILTIN__ islessequalf (x, y: SHORTREAL) : INTEGER ; +@findex islessequall +PROCEDURE __BUILTIN__ islessequall (x, y: LONGREAL) : INTEGER ; + +@findex islessgreater +PROCEDURE __BUILTIN__ islessgreater (x, y: REAL) : INTEGER ; +@findex islessgreaterf +PROCEDURE __BUILTIN__ islessgreaterf (x, y: SHORTREAL) : INTEGER ; +@findex islessgreaterl +PROCEDURE __BUILTIN__ islessgreaterl (x, y: LONGREAL) : INTEGER ; + +@findex isunordered +PROCEDURE __BUILTIN__ isunordered (x, y: REAL) : INTEGER ; +@findex isunorderedf +PROCEDURE __BUILTIN__ isunorderedf (x, y: SHORTREAL) : INTEGER ; +@findex isunorderedl +PROCEDURE __BUILTIN__ isunorderedl (x, y: LONGREAL) : INTEGER ; + +@findex iseqsig +PROCEDURE __BUILTIN__ iseqsig (x, y: REAL) : INTEGER ; +@findex iseqsigf +PROCEDURE __BUILTIN__ iseqsigf (x, y: SHORTREAL) : INTEGER ; +@findex iseqsigl +PROCEDURE __BUILTIN__ iseqsigl (x, y: LONGREAL) : INTEGER ; + +@findex isnormal +PROCEDURE __BUILTIN__ isnormal (r: REAL) : INTEGER ; +@findex isnormalf +PROCEDURE __BUILTIN__ isnormalf (s: SHORTREAL) : INTEGER ; +@findex isnormall +PROCEDURE __BUILTIN__ isnormall (l: LONGREAL) : INTEGER ; + +@findex isinf_sign +PROCEDURE __BUILTIN__ isinf_sign (r: REAL) : INTEGER ; +@findex isinf_signf +PROCEDURE __BUILTIN__ isinf_signf (s: SHORTREAL) : INTEGER ; +@findex isinf_signl +PROCEDURE __BUILTIN__ isinf_signl (l: LONGREAL) : INTEGER ; + +(* Complex arithmetic intrincic procedure functions. *) @findex cabsf PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ; @@ -662,10 +732,10 @@ DEFINITION MODULE DynamicStrings ; FROM SYSTEM IMPORT ADDRESS ; EXPORT QUALIFIED String, InitString, KillString, Fin, InitStringCharStar, - InitStringChar, Index, RIndex, + InitStringChar, Index, RIndex, ReverseIndex, Mark, Length, ConCat, ConCatChar, Assign, Dup, Add, Equal, EqualCharStar, EqualArray, ToUpper, ToLower, - CopyOut, Mult, Slice, + CopyOut, Mult, Slice, ReplaceChar, RemoveWhitePrefix, RemoveWhitePostfix, RemoveComment, char, string, InitStringDB, InitStringCharStarDB, InitStringCharDB, @@ -766,6 +836,15 @@ PROCEDURE ConCatChar (a: String; ch: CHAR) : String ; PROCEDURE Assign (a, b: String) : String ; +(* + ReplaceChar - returns string s after it has changed all + occurances of from to to. +*) + +@findex ReplaceChar +PROCEDURE ReplaceChar (s: String; from, to: CHAR) : String ; + + (* Dup - duplicate a String, s, returning the copy of s. *) @@ -845,14 +924,29 @@ PROCEDURE Index (s: String; ch: CHAR; o: CARDINAL) : INTEGER ; (* RIndex - returns the indice of the last occurance of, ch, - in String, s. The search starts at position, o. - -1 is returned if, ch, is not found. + in String, s. The search starts at position, o. + -1 is returned if ch is not found. The search + is performed left to right. *) @findex RIndex PROCEDURE RIndex (s: String; ch: CHAR; o: CARDINAL) : INTEGER ; +(* + ReverseIndex - returns the indice of the last occurance of ch + in String s. The search starts at position o + and searches from right to left. The start position + may be indexed negatively from the right (-1 is the + last index). + The return value if ch is found will always be positive. + -1 is returned if ch is not found. +*) + +@findex ReverseIndex +PROCEDURE ReverseIndex (s: String; ch: CHAR; o: INTEGER) : INTEGER ; + + (* RemoveComment - assuming that, comment, is a comment delimiter which indicates anything to its right is a comment @@ -1241,7 +1335,7 @@ PROCEDURE ReadNBytes (f: File; nBytes: CARDINAL; (* - ReadAny - reads HIGH(a) bytes into, a. All input + ReadAny - reads HIGH (a) + 1 bytes into, a. All input is fully buffered, unlike ReadNBytes and thus is more suited to small reads. *) @@ -1264,7 +1358,7 @@ PROCEDURE WriteNBytes (f: File; nBytes: CARDINAL; (* - WriteAny - writes HIGH(a) bytes onto, file, f. All output + WriteAny - writes HIGH (a) + 1 bytes onto, file, f. All output is fully buffered, unlike WriteNBytes and thus is more suited to small writes. *) @@ -1593,7 +1687,7 @@ TYPE (* GetOpt - call C getopt and fill in the parameters: - optarg, optind, opterr and optop. + optarg, optind, opterr and optopt. *) @findex GetOpt @@ -1638,14 +1732,13 @@ PROCEDURE InitLongOptions () : LongOptions ; val is the value to return, or to load into the variable pointed to by flag. - The last element of the array has to be filled with zeros. + The last element of the array must be filled with zeros. *) @findex AddLongOption -PROCEDURE AddLongOption (lo: LongOptions; +PROCEDURE AddLongOption (lo: LongOptions; index: CARDINAL; name: String; has_arg: INTEGER; - flag: PtrToInteger; - val: INTEGER) : LongOptions ; + VAR flag: INTEGER; val: INTEGER) : LongOptions ; (* @@ -1664,8 +1757,8 @@ PROCEDURE KillLongOptions (lo: LongOptions) : LongOptions ; *) @findex GetOptLong -PROCEDURE GetOptLong (argc: INTEGER; argv: ADDRESS; optstring: String; - longopts: LongOptions; +PROCEDURE GetOptLong (argc: INTEGER; argv: ADDRESS; + optstring: String; longopts: LongOptions; VAR longindex: INTEGER) : INTEGER ; @@ -1759,10 +1852,7 @@ END IO. DEFINITION MODULE Indexing ; FROM SYSTEM IMPORT ADDRESS ; -EXPORT QUALIFIED Index, InitIndex, KillIndex, GetIndice, PutIndice, - HighIndice, LowIndice, InBounds, IsIndiceInIndex, - RemoveIndiceFromIndex, IncludeIndiceIntoIndex, - ForeachIndiceInIndexDo, DeleteIndice, DebugIndex ; + TYPE @findex Index (type) @@ -1771,6 +1861,17 @@ TYPE IndexProcedure = PROCEDURE (ADDRESS) ; +(* + InitIndexTuned - creates a dynamic array with low indice. + minsize is the initial number of elements the + array is allocated and growfactor determines how + it will be resized once it becomes full. +*) + +@findex InitIndexTuned +PROCEDURE InitIndexTuned (low, minsize, growfactor: CARDINAL) : Index ; + + (* InitIndex - creates and returns an Index. *) @@ -1877,6 +1978,14 @@ PROCEDURE IncludeIndiceIntoIndex (i: Index; a: ADDRESS) ; PROCEDURE ForeachIndiceInIndexDo (i: Index; p: IndexProcedure) ; +(* + IsEmpty - return TRUE if the array has no entries it. +*) + +@findex IsEmpty +PROCEDURE IsEmpty (i: Index) : BOOLEAN ; + + END Indexing. @end example @page @@ -1975,6 +2084,46 @@ PROCEDURE RequestDependant (modulename, libname, dependantmodule, dependantlibname: ADDRESS) ; +(* + InstallTerminationProcedure - installs a procedure, p, which will + be called when the procedure + ExecuteTerminationProcedures + is invoked. It returns TRUE is the + procedure is installed. +*) + +@findex InstallTerminationProcedure +PROCEDURE InstallTerminationProcedure (p: PROC) : BOOLEAN ; + + +(* + ExecuteInitialProcedures - executes the initial procedures installed + by InstallInitialProcedure. +*) + +@findex ExecuteInitialProcedures +PROCEDURE ExecuteInitialProcedures ; + + +(* + InstallInitialProcedure - installs a procedure to be executed just + before the BEGIN code section of the main + program module. +*) + +@findex InstallInitialProcedure +PROCEDURE InstallInitialProcedure (p: PROC) : BOOLEAN ; + + +(* + ExecuteTerminationProcedures - calls each installed termination procedure + in reverse order. +*) + +@findex ExecuteTerminationProcedures +PROCEDURE ExecuteTerminationProcedures ; + + END M2Dependent. @end example @page @@ -4428,9 +4577,9 @@ PROCEDURE nextafterf (x, y: SHORTREAL) : SHORTREAL ; PROCEDURE nextafterl (x, y: LONGREAL) : LONGREAL ; @findex nexttoward -PROCEDURE nexttoward (x, y: REAL) : REAL ; +PROCEDURE nexttoward (x: REAL; y: LONGREAL) : REAL ; @findex nexttowardf -PROCEDURE nexttowardf (x, y: SHORTREAL) : SHORTREAL ; +PROCEDURE nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ; @findex nexttowardl PROCEDURE nexttowardl (x, y: LONGREAL) : LONGREAL ; @@ -4595,7 +4744,6 @@ DEFINITION MODULE cgetopt ; FROM SYSTEM IMPORT ADDRESS ; - TYPE @findex Options (type) Options = ADDRESS ; @@ -4670,7 +4818,7 @@ PROCEDURE KillOptions (o: Options) : Options ; @findex SetOption PROCEDURE SetOption (o: Options; index: CARDINAL; - name: ADDRESS; has_arg: BOOLEAN; + name: ADDRESS; has_arg: INTEGER; VAR flag: INTEGER; val: INTEGER) ; @@ -5092,7 +5240,7 @@ PROCEDURE creat (filename: ADDRESS; mode: CARDINAL) : INTEGER; *) @findex lseek -PROCEDURE lseek (fd: INTEGER; offset: LONGINT; whence: INTEGER) : LONGINT ; +PROCEDURE lseek (fd: INTEGER; offset: CSSIZE_T; whence: INTEGER) : [ CSSIZE_T ] ; (* @@ -5902,11 +6050,6 @@ DEFINITION MODULE wrapc ; FROM SYSTEM IMPORT ADDRESS ; -EXPORT QUALIFIED strtime, filesize, fileinode, - getrand, getusername, filemtime, - getnameuidgid, signbit, signbitf, signbitl, - isfinite, isfinitel, isfinitef ; - (* strtime - returns the C string for the equivalent C asctime @@ -6008,6 +6151,65 @@ PROCEDURE isfinitef (x: SHORTREAL) : INTEGER ; PROCEDURE isfinitel (x: LONGREAL) : INTEGER ; +(* + isnan - provide non builtin alternative to the gcc builtin isnan. + Returns 1 if x is a NaN otherwise return 0. +*) + +@findex isnan +PROCEDURE isnan (x: REAL) : INTEGER ; + + +(* + isnanf - provide non builtin alternative to the gcc builtin isnanf. + Returns 1 if x is a NaN otherwise return 0. +*) + +@findex isnanf +PROCEDURE isnanf (x: SHORTREAL) : INTEGER ; + + +(* + isnanl - provide non builtin alternative to the gcc builtin isnanl. + Returns 1 if x is a NaN otherwise return 0. +*) + +@findex isnanl +PROCEDURE isnanl (x: LONGREAL) : INTEGER ; + + +(* + SeekSet - return the system libc SEEK_SET value. +*) + +@findex SeekSet +PROCEDURE SeekSet () : INTEGER ; + + +(* + SeekEnd - return the system libc SEEK_END value. +*) + +@findex SeekEnd +PROCEDURE SeekEnd () : INTEGER ; + + +(* + ReadOnly - return the system value of O_RDONLY. +*) + +@findex ReadOnly +PROCEDURE ReadOnly () : BITSET ; + + +(* + WriteOnly - return the system value of O_WRONLY. +*) + +@findex WriteOnly +PROCEDURE WriteOnly () : BITSET ; + + END wrapc. @end example @page @@ -8869,6 +9071,7 @@ coexist with their PIM counterparts. * gm2-libs-iso/ComplexMath::ComplexMath.def * gm2-libs-iso/ConvStringLong::ConvStringLong.def * gm2-libs-iso/ConvStringReal::ConvStringReal.def +* gm2-libs-iso/ConvStringShort::ConvStringShort.def * gm2-libs-iso/ConvTypes::ConvTypes.def * gm2-libs-iso/EXCEPTIONS::EXCEPTIONS.def * gm2-libs-iso/ErrnoCategory::ErrnoCategory.def @@ -8919,7 +9122,10 @@ coexist with their PIM counterparts. * gm2-libs-iso/Semaphores::Semaphores.def * gm2-libs-iso/SeqFile::SeqFile.def * gm2-libs-iso/ShortComplexMath::ShortComplexMath.def +* gm2-libs-iso/ShortConv::ShortConv.def * gm2-libs-iso/ShortIO::ShortIO.def +* gm2-libs-iso/ShortMath::ShortMath.def +* gm2-libs-iso/ShortStr::ShortStr.def * gm2-libs-iso/ShortWholeIO::ShortWholeIO.def * gm2-libs-iso/SimpleCipher::SimpleCipher.def * gm2-libs-iso/StdChans::StdChans.def @@ -8935,6 +9141,7 @@ coexist with their PIM counterparts. * gm2-libs-iso/WholeConv::WholeConv.def * gm2-libs-iso/WholeIO::WholeIO.def * gm2-libs-iso/WholeStr::WholeStr.def +* gm2-libs-iso/wrapclock::wrapclock.def * gm2-libs-iso/wrapsock::wrapsock.def * gm2-libs-iso/wraptime::wraptime.def @end menu @@ -9345,7 +9552,7 @@ END ConvStringLong. @end example @page -@node gm2-libs-iso/ConvStringReal, gm2-libs-iso/ConvTypes, gm2-libs-iso/ConvStringLong, M2 ISO Libraries +@node gm2-libs-iso/ConvStringReal, gm2-libs-iso/ConvStringShort, gm2-libs-iso/ConvStringLong, M2 ISO Libraries @subsection gm2-libs-iso/ConvStringReal @example @@ -9389,7 +9596,51 @@ END ConvStringReal. @end example @page -@node gm2-libs-iso/ConvTypes, gm2-libs-iso/EXCEPTIONS, gm2-libs-iso/ConvStringReal, M2 ISO Libraries +@node gm2-libs-iso/ConvStringShort, gm2-libs-iso/ConvTypes, gm2-libs-iso/ConvStringReal, M2 ISO Libraries +@subsection gm2-libs-iso/ConvStringShort + +@example +DEFINITION MODULE ConvStringShort ; + +FROM DynamicStrings IMPORT String ; + + +(* + RealToFloatString - converts a real with, sigFigs, into a string + and returns the result as a string. +*) + +@findex RealToFloatString +PROCEDURE RealToFloatString (real: SHORTREAL; sigFigs: CARDINAL) : String ; + + +(* + RealToEngString - converts the value of real to floating-point + string form, with sigFigs significant figures. + The number is scaled with one to three digits + in the whole number part and with an exponent + that is a multiple of three. +*) + +@findex RealToEngString +PROCEDURE RealToEngString (real: SHORTREAL; sigFigs: CARDINAL) : String ; + + +(* + RealToFixedString - returns the number of characters in the fixed-point + string representation of real rounded to the given + place relative to the decimal point. +*) + +@findex RealToFixedString +PROCEDURE RealToFixedString (real: SHORTREAL; place: INTEGER) : String ; + + +END ConvStringShort. +@end example +@page + +@node gm2-libs-iso/ConvTypes, gm2-libs-iso/EXCEPTIONS, gm2-libs-iso/ConvStringShort, M2 ISO Libraries @subsection gm2-libs-iso/ConvTypes @example @@ -13492,7 +13743,7 @@ END SeqFile. @end example @page -@node gm2-libs-iso/ShortComplexMath, gm2-libs-iso/ShortIO, gm2-libs-iso/SeqFile, M2 ISO Libraries +@node gm2-libs-iso/ShortComplexMath, gm2-libs-iso/ShortConv, gm2-libs-iso/SeqFile, M2 ISO Libraries @subsection gm2-libs-iso/ShortComplexMath @example @@ -13580,7 +13831,69 @@ END ShortComplexMath. @end example @page -@node gm2-libs-iso/ShortIO, gm2-libs-iso/ShortWholeIO, gm2-libs-iso/ShortComplexMath, M2 ISO Libraries +@node gm2-libs-iso/ShortConv, gm2-libs-iso/ShortIO, gm2-libs-iso/ShortComplexMath, M2 ISO Libraries +@subsection gm2-libs-iso/ShortConv + +@example +DEFINITION MODULE ShortConv; + +IMPORT + ConvTypes; + +TYPE +@findex ConvResults (type) + ConvResults = ConvTypes.ConvResults; (* strAllRight, strOutOfRange, + strWrongFormat, strEmpty *) + +@findex ScanReal +PROCEDURE ScanReal (inputCh: CHAR; VAR chClass: ConvTypes.ScanClass; + VAR nextState: ConvTypes.ScanState); + (* Represents the start state of a finite state scanner for real + numbers - assigns class of inputCh to chClass and a procedure + representing the next state to nextState. + *) + +@findex FormatReal +PROCEDURE FormatReal (str: ARRAY OF CHAR): ConvResults; + (* Returns the format of the string value for conversion to LONGREAL. *) + +@findex ValueReal +PROCEDURE ValueReal (str: ARRAY OF CHAR): SHORTREAL; + (* Returns the value corresponding to the real number string value + str if str is well-formed; otherwise raises the ShortConv exception. + *) + +@findex LengthFloatReal +PROCEDURE LengthFloatReal (real: SHORTREAL; sigFigs: CARDINAL): CARDINAL; + (* Returns the number of characters in the floating-point string + representation of real with sigFigs significant figures. + *) + +@findex LengthEngReal +PROCEDURE LengthEngReal (real: SHORTREAL; sigFigs: CARDINAL): CARDINAL; + (* Returns the number of characters in the floating-point engineering + string representation of real with sigFigs significant figures. + *) + +@findex LengthFixedReal +PROCEDURE LengthFixedReal (real: SHORTREAL; place: INTEGER): CARDINAL; + (* Returns the number of characters in the fixed-point string + representation of real rounded to the given place relative to the + decimal point. + *) + +@findex IsRConvException +PROCEDURE IsRConvException (): BOOLEAN; + (* Returns TRUE if the current coroutine is in the exceptional + execution state because of the raising of an exception in a + routine from this module; otherwise returns FALSE. + *) + +END ShortConv. +@end example +@page + +@node gm2-libs-iso/ShortIO, gm2-libs-iso/ShortMath, gm2-libs-iso/ShortConv, M2 ISO Libraries @subsection gm2-libs-iso/ShortIO @example @@ -13648,7 +13961,152 @@ END ShortIO. @end example @page -@node gm2-libs-iso/ShortWholeIO, gm2-libs-iso/SimpleCipher, gm2-libs-iso/ShortIO, M2 ISO Libraries +@node gm2-libs-iso/ShortMath, gm2-libs-iso/ShortStr, gm2-libs-iso/ShortIO, M2 ISO Libraries +@subsection gm2-libs-iso/ShortMath + +@example +DEFINITION MODULE ShortMath; + + (* Mathematical functions for the type LONGREAL *) + +CONST +@findex pi (const) + pi = 3.1415926535897932384626433832795028841972; +@findex exp1 (const) + exp1 = 2.7182818284590452353602874713526624977572; + +@findex sqrt +PROCEDURE __BUILTIN__ sqrt (x: SHORTREAL): SHORTREAL; + (* Returns the positive square root of x *) + +@findex exp +PROCEDURE __BUILTIN__ exp (x: SHORTREAL): SHORTREAL; + (* Returns the exponential of x *) + +@findex ln +PROCEDURE __BUILTIN__ ln (x: SHORTREAL): SHORTREAL; + (* Returns the natural logarithm of x *) + + (* The angle in all trigonometric functions is measured in radians *) + +@findex sin +PROCEDURE __BUILTIN__ sin (x: SHORTREAL): SHORTREAL; + (* Returns the sine of x *) + +@findex cos +PROCEDURE __BUILTIN__ cos (x: SHORTREAL): SHORTREAL; + (* Returns the cosine of x *) + +@findex tan +PROCEDURE tan (x: SHORTREAL): SHORTREAL; + (* Returns the tangent of x *) + +@findex arcsin +PROCEDURE arcsin (x: SHORTREAL): SHORTREAL; + (* Returns the arcsine of x *) + +@findex arccos +PROCEDURE arccos (x: SHORTREAL): SHORTREAL; + (* Returns the arccosine of x *) + +@findex arctan +PROCEDURE arctan (x: SHORTREAL): SHORTREAL; + (* Returns the arctangent of x *) + +@findex power +PROCEDURE power (base, exponent: SHORTREAL): SHORTREAL; + (* Returns the value of the number base raised to the power exponent *) + +@findex round +PROCEDURE round (x: SHORTREAL): INTEGER; + (* Returns the value of x rounded to the nearest integer *) + +@findex IsRMathException +PROCEDURE IsRMathException (): BOOLEAN; + (* Returns TRUE if the current coroutine is in the exceptional + execution state because of the raising of an exception in a + routine from this module; otherwise returns FALSE. + *) + +END ShortMath. +@end example +@page + +@node gm2-libs-iso/ShortStr, gm2-libs-iso/ShortWholeIO, gm2-libs-iso/ShortMath, M2 ISO Libraries +@subsection gm2-libs-iso/ShortStr + +@example +DEFINITION MODULE ShortStr; + + (* SHORTREAL/string conversions *) + +IMPORT + ConvTypes; + +TYPE + (* strAllRight, strOutOfRange, strWrongFormat, strEmpty *) +@findex ConvResults (type) + ConvResults = ConvTypes.ConvResults; + +(* the string form of a signed fixed-point real number is + ["+" | "-"], decimal digit, @{decimal digit@}, [".", + @{decimal digit@}] +*) + +(* the string form of a signed floating-point real number is + signed fixed-point real number, "E", ["+" | "-"], + decimal digit, @{decimal digit@} +*) + +@findex StrToReal +PROCEDURE StrToReal (str: ARRAY OF CHAR; VAR real: SHORTREAL; + VAR res: ConvResults); + (* Ignores any leading spaces in str. If the subsequent characters + in str are in the format of a signed real number, assigns a + corresponding value to real. Assigns a value indicating the + format of str to res. + *) + +@findex RealToFloat +PROCEDURE RealToFloat (real: SHORTREAL; sigFigs: CARDINAL; + VAR str: ARRAY OF CHAR); + (* Converts the value of real to floating-point string form, with + sigFigs significant figures, and copies the possibly truncated + result to str. + *) + +@findex RealToEng +PROCEDURE RealToEng (real: SHORTREAL; sigFigs: CARDINAL; + VAR str: ARRAY OF CHAR); + (* Converts the value of real to floating-point string form, with + sigFigs significant figures, and copies the possibly truncated + result to str. The number is scaled with one to three digits + in the whole number part and with an exponent that is a + multiple of three. + *) + +@findex RealToFixed +PROCEDURE RealToFixed (real: SHORTREAL; place: INTEGER; + VAR str: ARRAY OF CHAR); + (* Converts the value of real to fixed-point string form, rounded + to the given place relative to the decimal point, and copies + the possibly truncated result to str. + *) + +@findex RealToStr +PROCEDURE RealToStr (real: SHORTREAL; VAR str: ARRAY OF CHAR); + (* Converts the value of real as RealToFixed if the sign and + magnitude can be shown within the capacity of str, or + otherwise as RealToFloat, and copies the possibly truncated + result to str. The number of places or significant digits + depend on the capacity of str. + *) + +END ShortStr. +@end example +@page + +@node gm2-libs-iso/ShortWholeIO, gm2-libs-iso/SimpleCipher, gm2-libs-iso/ShortStr, M2 ISO Libraries @subsection gm2-libs-iso/ShortWholeIO @example @@ -14567,7 +15025,7 @@ END WholeIO. @end example @page -@node gm2-libs-iso/WholeStr, gm2-libs-iso/wrapsock, gm2-libs-iso/WholeIO, M2 ISO Libraries +@node gm2-libs-iso/WholeStr, gm2-libs-iso/wrapclock, gm2-libs-iso/WholeIO, M2 ISO Libraries @subsection gm2-libs-iso/WholeStr @example @@ -14624,7 +15082,139 @@ END WholeStr. @end example @page -@node gm2-libs-iso/wrapsock, gm2-libs-iso/wraptime, gm2-libs-iso/WholeStr, M2 ISO Libraries +@node gm2-libs-iso/wrapclock, gm2-libs-iso/wrapsock, gm2-libs-iso/WholeStr, M2 ISO Libraries +@subsection gm2-libs-iso/wrapclock + +@example +DEFINITION MODULE wrapclock ; + +FROM SYSTEM IMPORT ADDRESS ; + +TYPE +@findex timespec (type) + timespec = ADDRESS ; + + +(* + timezone - return the glibc timezone value. + This contains the difference between UTC and the latest + local standard time, in seconds west of UTC. + If the underlying timezone is unavailable and + clock_gettime, localtime_r, tm_gmtoff + is unavailable then 0 is returned. +*) + +@findex timezone +PROCEDURE timezone () : LONGINT ; + + +(* + istimezone returns 1 if timezone in wrapclock.cc can resolve the + timezone value using the timezone C library call or by using + clock_gettime, localtime_r and tm_gmtoff. +*) + +@findex istimezone +PROCEDURE istimezone () : INTEGER ; + + +(* + daylight - return the glibc daylight value. + This variable has a nonzero value if Daylight Saving + Time rules apply. + A nonzero value does not necessarily mean that Daylight + Saving Time is now in effect; it means only that Daylight + Saving Time is sometimes in effect. +*) + +@findex daylight +PROCEDURE daylight () : INTEGER ; + + +(* + isdst - returns 1 if daylight saving time is currently in effect and + returns 0 if it is not. +*) + +@findex isdst +PROCEDURE isdst () : INTEGER ; + + +(* + tzname - returns the string associated with the local timezone. + The daylight value is 0 or 1. The value 0 returns the non + daylight saving timezone string and the value of 1 returns + the daylight saving timezone string. +*) + +@findex tzname +PROCEDURE tzname (daylight: INTEGER) : ADDRESS ; + + +(* + InitTimespec - returns a newly created opaque type. +*) + +@findex InitTimespec +PROCEDURE InitTimespec () : timespec ; + + +(* + KillTimespec - deallocates the memory associated with an + opaque type. +*) + +@findex KillTimespec +PROCEDURE KillTimespec (tv: timespec) : timespec ; + + +(* + GetTimespec - retrieves the number of seconds and nanoseconds + from the timespec. A return value of 0 means timespec + is unavailable and a return value of 1 indicates success. +*) + +@findex GetTimespec +PROCEDURE GetTimespec (ts: timespec; VAR sec, nano: LONGCARD) : INTEGER ; + + +(* + SetTimespec - sets the number of seconds and nanoseconds + into timespec. A return value of 0 means timespec + is unavailable and a return value of 1 indicates success. +*) + +@findex SetTimespec +PROCEDURE SetTimespec (ts: timespec; sec, nano: LONGCARD) : INTEGER ; + + +(* + GetTimeRealtime - performs return gettime (CLOCK_REALTIME, ts). + gettime returns 0 on success and -1 on failure. + If the underlying system does not have gettime + then GetTimeRealtime returns 1. +*) + +@findex GetTimeRealtime +PROCEDURE GetTimeRealtime (ts: timespec) : INTEGER ; + + +(* + SetTimeRealtime - performs return settime (CLOCK_REALTIME, ts). + gettime returns 0 on success and -1 on failure. + If the underlying system does not have gettime + then SetTimeRealtime returns 1. +*) + +@findex SetTimeRealtime +PROCEDURE SetTimeRealtime (ts: timespec) : INTEGER ; + + +END wrapclock. +@end example +@page + +@node gm2-libs-iso/wrapsock, gm2-libs-iso/wraptime, gm2-libs-iso/wrapclock, M2 ISO Libraries @subsection gm2-libs-iso/wrapsock @example diff --git a/gcc/m2/tools-src/makeSystem b/gcc/m2/tools-src/makeSystem index 824aeb766761..393713eb873d 100644 --- a/gcc/m2/tools-src/makeSystem +++ b/gcc/m2/tools-src/makeSystem @@ -101,8 +101,10 @@ displayEnd () { MINIMAL="-fno-scaffold-main -fno-scaffold-dynamic -fno-scaffold-static -fno-m2-plugin" rm -f ${OUTPUTFILE} -if ${COMPILER} ${DIALECT} ${LIBRARY} ${MINIMAL} \ - -S -fdump-system-exports ${SYSTEMMOD} -o /dev/null 2>&1 > /dev/null ; then +${COMPILER} ${DIALECT} ${LIBRARY} ${MINIMAL} \ + -S -fdump-system-exports ${SYSTEMMOD} -o /dev/null 2>&1 > /dev/null +res=$? +if [ ${res} -eq 0 ] ; then types=`${COMPILER} ${DIALECT} ${LIBRARY} ${MINIMAL} -fno-m2-plugin -S -fdump-system-exports ${SYSTEMMOD} -o /dev/null | cut -f5 -d' '` touch ${OUTPUTFILE} displayStart @@ -111,7 +113,9 @@ if ${COMPILER} ${DIALECT} ${LIBRARY} ${MINIMAL} \ displayBuiltinTypes displayEnd else - ${COMPILER} ${DIALECT} ${LIBRARY} ${MINIMAL} \ - -S -fdump-system-exports ${SYSTEMMOD} -o /dev/null - exit $? + echo "the command below failed:" + echo "${COMPILER} ${DIALECT} ${LIBRARY} ${MINIMAL} -S -fdump-system-exports ${SYSTEMMOD}" + echo "to debug the command use" + echo "${COMPILER} ${DIALECT} ${LIBRARY} ${MINIMAL} -S -fdump-system-exports ${SYSTEMMOD} -wrapper gdb,--args" + exit $res fi diff --git a/gcc/match.pd b/gcc/match.pd index 9ce313323a30..d401e7503e62 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -4858,6 +4858,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (float (fix_trunc @0)) (if (!flag_trapping_math + && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (@0)) && direct_internal_fn_supported_p (IFN_TRUNC, type, OPTIMIZE_FOR_BOTH)) @@ -5894,7 +5895,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) /* !A ? B : C -> A ? C : B. */ (simplify (cnd (logical_inverted_value truth_valued_p@0) @1 @2) - (cnd @0 @2 @1))) + /* For CONDs, don't handle signed values here. */ + (if (cnd == VEC_COND_EXPR + || TYPE_UNSIGNED (TREE_TYPE (@0))) + (cnd @0 @2 @1)))) /* abs/negative simplifications moved from fold_cond_expr_with_comparison. @@ -7094,6 +7098,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (cond @0 @1 @2) (with { bool wascmp; } (if (INTEGRAL_TYPE_P (type) + && TYPE_UNSIGNED (TREE_TYPE (@0)) && bitwise_inverted_equal_p (@1, @2, wascmp) && (!wascmp || TYPE_PRECISION (type) == 1)) (if ((!TYPE_UNSIGNED (type) && TREE_CODE (type) == BOOLEAN_TYPE) diff --git a/gcc/mode-switching.cc b/gcc/mode-switching.cc index 583929184ce7..9041838a791f 100644 --- a/gcc/mode-switching.cc +++ b/gcc/mode-switching.cc @@ -585,7 +585,7 @@ forward_transfer (int bb_index) return true; } -/* A backwards confluence function. Update the the bb_info single_succ +/* A backwards confluence function. Update the bb_info single_succ field for E's source block, based on changes to E's destination block. At the end of the dataflow problem, single_succ is the single mode that all successors require (directly or indirectly), or no_mode @@ -959,7 +959,7 @@ optimize_mode_switching (void) FOR_BB_INSNS (bb, insn) { - if (INSN_P (insn)) + if (NONDEBUG_INSN_P (insn)) { int mode = targetm.mode_switching.needed (e, insn, live_now); rtx link; diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 3cc5d6081236..1d0bfc68ce8f 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,8 @@ +2024-03-20 Jakub Jelinek + + * objc-next-runtime-abi-02.cc (build_v2_class_ro_t_initializer): Use + integer_zero_node instead of build_int_cst (integer_type_node, 0). + 2024-02-24 Jakub Jelinek * objc-encoding.cc (encode_array): Use HOST_WIDE_INT_0 macros. diff --git a/gcc/objc/objc-next-runtime-abi-02.cc b/gcc/objc/objc-next-runtime-abi-02.cc index b3de6d789a5b..cdf559b9bea8 100644 --- a/gcc/objc/objc-next-runtime-abi-02.cc +++ b/gcc/objc/objc-next-runtime-abi-02.cc @@ -3244,7 +3244,7 @@ build_v2_class_ro_t_initializer (tree type, tree name, explicitly declare the alignment padding. */ /* reserved, pads alignment. */ CONSTRUCTOR_APPEND_ELT (initlist, NULL_TREE, - build_int_cst (integer_type_node, 0)); + integer_zero_node); /* ivarLayout */ unsigned_char_star = build_pointer_type (unsigned_char_type_node); diff --git a/gcc/passes.cc b/gcc/passes.cc index 41e0add06c91..d73f8ba97b64 100644 --- a/gcc/passes.cc +++ b/gcc/passes.cc @@ -352,7 +352,8 @@ finish_optimization_passes (void) gcc::dump_manager *dumps = m_ctxt->get_dumps (); timevar_push (TV_DUMP); - if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities) + if (profile_arc_flag || condition_coverage_flag || flag_test_coverage + || flag_branch_probabilities) { dumps->dump_start (pass_profile_1->static_pass_number, NULL); end_branch_prob (); diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index 4d2e8b9a62b2..94470aa8ff86 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,35 @@ +2024-04-10 Joseph Myers + + * gcc.pot: Regenerate. + +2024-04-08 Joseph Myers + + * fr.po: Update. + +2024-04-03 Joseph Myers + + * sv.po: Update. + +2024-03-25 Joseph Myers + + * de.po: Update. + +2024-03-25 Joseph Myers + + * sv.po: Update. + +2024-03-19 Joseph Myers + + * de.po: Update. + +2024-03-18 Joseph Myers + + * fr.po, sv.po: Update. + +2024-03-11 Joseph Myers + + * sv.po: Update. + 2024-03-04 Joseph Myers * sv.po: Update. diff --git a/gcc/po/de.po b/gcc/po/de.po index 5e52c01689c1..db42d7191ff8 100644 --- a/gcc/po/de.po +++ b/gcc/po/de.po @@ -8,10 +8,10 @@ # Roland Illig , 2015, 2017-2023. msgid "" msgstr "" -"Project-Id-Version: gcc 13.2.0\n" +"Project-Id-Version: gcc 14.1-b20240218\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2024-02-16 21:35+0000\n" -"PO-Revision-Date: 2023-07-28 19:58+0200\n" +"PO-Revision-Date: 2024-03-25 21:26+0100\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" @@ -20,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.4.2\n" "X-Poedit-Bookmarks: -1,-1,-1,6017,-1,-1,-1,-1,-1,-1\n" #: cif-code.def:39 @@ -321,10 +321,8 @@ msgid "-install_name only allowed with -dynamiclib" msgstr "»-install_name« ist nur mit »-dynamiclib« erlaubt" #: config/darwin.h:191 -#, fuzzy -#| msgid "-bundle not allowed with -dynamiclib" msgid "-bundle not allowed with -shared" -msgstr "»-bundle« ist nicht mit »-dynamiclib« erlaubt" +msgstr "»-bundle« ist nicht mit »-shared« erlaubt" #: config/darwin.h:192 msgid "-bundle not allowed with -dynamiclib" @@ -1028,7 +1026,7 @@ msgstr "Standardzugriff von Modulentitäten auf PRIVATE setzen." #: fortran/lang.opt:721 #, no-c-format msgid "Handle OpenMP allocators for allocatables and pointers." -msgstr "" +msgstr "OpenMP-Allokatoren für Allozierbare und Zeiger handhaben." #: fortran/lang.opt:725 #, no-c-format @@ -1183,10 +1181,9 @@ msgid "Conform to the ISO Fortran 2018 standard." msgstr "Mit dem Standard ISO Fortran 2018 übereinstimmen." #: fortran/lang.opt:896 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO Fortran 2003 standard." +#, no-c-format msgid "Conform to the ISO Fortran 2023 standard." -msgstr "Mit dem Standard ISO Fortran 2003 übereinstimmen." +msgstr "Mit dem Standard ISO Fortran 2023 übereinstimmen." #: fortran/lang.opt:900 #, no-c-format @@ -1226,7 +1223,7 @@ msgstr "-frust-crate= Crate-Namen für die Übersetzung festle #: rust/lang.opt:67 #, no-c-format msgid "-frust-extern= Specify where an external library is located" -msgstr "" +msgstr "-frust-extern= Gibt an, wo sich eine externe Bibliothek befindet" #: rust/lang.opt:71 #, no-c-format @@ -1234,10 +1231,9 @@ msgid "Dump various Rust front end internals." msgstr "Diverse Interna des Rust-Frontends wegschreiben." #: rust/lang.opt:75 -#, fuzzy, no-c-format -#| msgid "-frust-dump-\tDump Rust frontend internal information." +#, no-c-format msgid "-frust-dump- Dump Rust frontend internal information." -msgstr "-frust-dump-\tInterna des Rust-Frontends wegschreiben." +msgstr "-frust-dump- Interne Informationen des Rust-Frontends ausgeben." #: rust/lang.opt:79 #, no-c-format @@ -1245,19 +1241,17 @@ msgid "Enable experimental compilation of Rust files at your own risk" msgstr "Experimentelle Übersetzung von Rust-Dateien einschalten, auf eigene Gefahr" #: rust/lang.opt:83 -#, fuzzy, no-c-format -#| msgid "-frust-max-recursion-depth=integer" +#, no-c-format msgid "-frust-max-recursion-depth=" msgstr "-frust-max-recursion-depth=" #: rust/lang.opt:87 #, no-c-format msgid "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro] Crate type to emit" -msgstr "" +msgstr "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro] Auszugebender Crate-Typ" #: rust/lang.opt:115 -#, fuzzy, no-c-format -#| msgid "-frust-mangling=[legacy|v0] Choose which version to use for name mangling" +#, no-c-format msgid "-frust-mangling=[legacy|v0] Version to use for name mangling" msgstr "-frust-mangling=[legacy|v0] Version der Namensmangelung auswählen" @@ -1267,14 +1261,12 @@ msgid "-frust-cfg= Set a config expansion option" msgstr "-frust-cfg= Option für Konfigurationsexpansion festlegen" #: rust/lang.opt:132 -#, fuzzy, no-c-format -#| msgid "-frust-edition=[2015|2018|2021] Choose which edition to use when compiling rust code" +#, no-c-format msgid "-frust-edition=[2015|2018|2021] Edition to use when compiling rust code" msgstr "-frust-edition=[2015|2018|2021] Sprachversion zum Übersetzen auswählen" #: rust/lang.opt:148 -#, fuzzy, no-c-format -#| msgid "Flag to enable embeding metadata directly into object files" +#, no-c-format msgid "Enable embedding metadata directly into object files" msgstr "Metadaten direkt in Objektdateien einbetten" @@ -1284,20 +1276,19 @@ msgid "-frust-metadata-output= Path to output crate metadata" msgstr "-frust-metadata-output= Pfad, in den die Create-Metadaten geschrieben werden" #: rust/lang.opt:160 -#, fuzzy, no-c-format -#| msgid "-frust-compile-until=[ast|attributecheck|expansion|nameresolution|lowering|typecheck|privacy|unsafety|const|copimlation|end] When to stop in the pipeline when compiling Rust code" +#, no-c-format msgid "-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end] The pipeline will run up until this stage when compiling Rust code" -msgstr "-frust-compile-until=[ast|attributecheck|expansion|nameresolution|lowering|typecheck|privacy|unsafety|const|copimlation|end] Bis zu welchem Schritt der Verarbeitungskette Rust-Code übersetzt wird" +msgstr "-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end] Die Pipeline beim Kompilieren von Rust-Code bis zu dieser Stufe durchlaufen" #: rust/lang.opt:209 #, no-c-format msgid "Use the temporary and experimental name resolution pipeline instead of the stable one" -msgstr "" +msgstr "Die temporäre und experimentelle Namensauflösungs-Pipeline statt der stabilen nutzen" #: rust/lang.opt:213 #, no-c-format msgid "Use the WIP borrow checker." -msgstr "" +msgstr "Den WIP-Borrow-Prüfer verwenden." #: c-family/c.opt:182 #, no-c-format @@ -1392,18 +1383,17 @@ msgstr "-MT \tZiel hinzufügen, das keine Anführungszeichen benötigt." #: c-family/c.opt:261 #, no-c-format msgid "Structured format for output dependency information. Supported (\"p1689r5\")." -msgstr "" +msgstr "Strukturiertes Format, um Abhängigkeitsinformationen auszugeben. Unterstützt ist »p1689r5«." #: c-family/c.opt:265 -#, fuzzy, no-c-format -#| msgid "Generate C++ Module dependency information." +#, no-c-format msgid "File for output dependency information." -msgstr "Informationen zu Abhängigkeiten von C++-Modulen erzeugen." +msgstr "Datei, um Abhängigkeitsinformationen auszugeben." #: c-family/c.opt:269 #, no-c-format msgid "-fdeps-target=obj.o Output file for the compile step." -msgstr "" +msgstr "-fdeps-target=obj.o Ausgabedatei für den Kompilierschritt." #: c-family/c.opt:273 #, no-c-format @@ -1473,7 +1463,7 @@ msgstr "Bei jeglicher Verwendung von alloca warnen." #: c-family/c.opt:340 #, no-c-format msgid "Warn when allocating insufficient storage for the target type of the assigned pointer." -msgstr "" +msgstr "Warnen, wenn bei einer Zuweisung der allozierte Speicherplatz nicht für den Zieltyp des Zeigers ausreicht." #: c-family/c.opt:344 #, no-c-format @@ -1551,16 +1541,14 @@ msgid "Warn when a built-in preprocessor macro is undefined or redefined." msgstr "Bei undefiniertem oder redefiniertem eingebauten Präprozessormakro warnen." #: c-family/c.opt:438 -#, fuzzy, no-c-format -#| msgid "Warn about features not present in ISO C11, but present in ISO C2X." +#, no-c-format msgid "Warn about features not present in ISO C11, but present in ISO C23." -msgstr "Bei Merkmalen, die in ISO C2X, aber noch nicht in ISO C11 verfügbar sind, warnen." +msgstr "Bei Merkmalen, die in ISO C23, aber noch nicht in ISO C11 verfügbar sind, warnen." #: c-family/c.opt:442 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -std=c11." +#, no-c-format msgid "Deprecated in favor of -Wc11-c23-compat." -msgstr "Veraltet zugunsten von -std=c11." +msgstr "Veraltet zugunsten von -Wc11-c23-compat." #: c-family/c.opt:446 #, no-c-format @@ -1623,16 +1611,14 @@ msgid "Warn about C++23 constructs in code compiled with an older standard." msgstr "Vor C++23-Konstrukten in Code warnen, der mit einem älteren Standard kompiliert wurde." #: c-family/c.opt:503 -#, fuzzy, no-c-format -#| msgid "Warn about C++20 constructs in code compiled with an older standard." +#, no-c-format msgid "Warn about C++26 constructs in code compiled with an older standard." -msgstr "Vor C++20-Konstrukten in Code warnen, der mit einem älteren Standard kompiliert wurde." +msgstr "Vor C++26-Konstrukten in Code warnen, der mit einem älteren Standard kompiliert wurde." #: c-family/c.opt:507 -#, fuzzy, no-c-format -#| msgid "Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers." +#, no-c-format msgid "Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter." -msgstr "Warnen, wenn zwei sizeof-Ausdrücke durcheinander geteilt werden, die nicht korrekt mit Zeigern funktionieren." +msgstr "Vor verdächtigen Aufrufen von calloc-ähnlichen Funktionen warnen, bei denen ein sizeof-Ausdruck die Anzahl angibt statt der Elementgröße." #: c-family/c.opt:511 #, no-c-format @@ -1752,10 +1738,9 @@ msgid "Warn when a declaration is found after a statement." msgstr "Warnen, wenn eine Deklaration hinter einer Anweisung gefunden wird." #: c-family/c.opt:612 -#, fuzzy, no-c-format -#| msgid "Warn about unprototyped function declarations." +#, no-c-format msgid "Warn for missing parameter types in function declarations." -msgstr "Bei Funktionsdeklarationen ohne Prototyp warnen." +msgstr "Bei fehlenden Parametertypen in Funktionsdeklarationen warnen." #: c-family/c.opt:616 #, no-c-format @@ -1835,7 +1820,7 @@ msgstr "Bei Verstößen gegen die Stil-Richtlinien von »Effective C++« warnen. #: c-family/c.opt:683 #, no-c-format msgid "Warn if an additional enum-base is used in an elaborated-type-specifier." -msgstr "" +msgstr "Warnen, wenn eine zusätzliche enum-base in einem elaborated-type-specifier verwendet wird." #: c-family/c.opt:687 #, no-c-format @@ -1885,7 +1870,7 @@ msgstr "Bei Semikolon nach Funktionsdefinition innerhalb einer Klasse warnen." #: c-family/c.opt:731 #, no-c-format msgid "Warn when a structure containing a C99 flexible array member as the last field is not at the end of another structure." -msgstr "" +msgstr "Warnen, wenn eine Struktur, die ein flexibles C99-Array-Mitglied als letztes Feld enthält, nicht am Ende einer anderen Struktur steht." #: c-family/c.opt:736 #, no-c-format @@ -2168,10 +2153,9 @@ msgid "Warn when the template keyword is missing after a member access token in msgstr "Warnen, wenn das Schlüsselwort »template« nach einem Token für Memberzugriff in einem abhängigen Memberzugriff-Ausdruck fehlt, wenn dieser Member ein Template ist." #: c-family/c.opt:994 -#, fuzzy, no-c-format -#| msgid "Warn about global functions without previous declarations." +#, no-c-format msgid "Warn about global variables without previous declarations." -msgstr "Vor globalen Funktionen ohne vorherige Deklaration warnen." +msgstr "Vor globalen Variablen ohne vorherige Deklaration warnen." #: c-family/c.opt:1001 #, no-c-format @@ -2259,10 +2243,9 @@ msgid "Warn about potentially suboptimal choices related to OpenACC parallelism. msgstr "Vor potenziell suboptimalen Entscheidungen im Zusammenhang mit OpenACC-Parallelität warnen." #: c-family/c.opt:1101 -#, fuzzy, no-c-format -#| msgid "Warn about \"suspicious\" constructs." +#, no-c-format msgid "Warn about suspicious OpenMP code." -msgstr "Bei »verdächtigen« Konstrukten warnen." +msgstr "Vor verdächtigem OpenMP-Code warnen." #: c-family/c.opt:1105 #, no-c-format @@ -2292,7 +2275,7 @@ msgstr "Beim Überschreiben von Initialisierungen mit Seiteneffekten warnen." #: c-family/c.opt:1129 #, no-c-format msgid "Warn if the named return value optimization is not performed although it is allowed." -msgstr "" +msgstr "Warnung, wenn die angegebene Rückgabewertoptimierung nicht durchgeführt wird, obwohl sie erlaubt ist." #: c-family/c.opt:1133 #, no-c-format @@ -2402,7 +2385,7 @@ msgstr "Warnen, wenn ein Argument für einen »restrict«-Parameter auch in eine #: c-family/c.opt:1226 #, no-c-format msgid "Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void." -msgstr "" +msgstr "Warnen, wenn Funktionen, die void zurückgeben, einen nicht-void-Ausdruck zurückgeben, oder ein Rückgabeausdruck in einer Funktion fehlt, die nicht void zurückgibt." #: c-family/c.opt:1230 #, no-c-format @@ -2601,10 +2584,9 @@ msgid "Warn if a comparison always evaluates to true or false." msgstr "Warnen, wenn ein Vergleich immer zu »wahr« oder »falsch« auswertet." #: c-family/c.opt:1413 -#, fuzzy, no-c-format -#| msgid "GCN does not support static constructors or destructors" +#, no-c-format msgid "Warn about simple-template-id in a constructor or destructor." -msgstr "GCN unterstützt keine statischen Konstruktoren oder Destruktoren" +msgstr "Bei simple-template-id in einem Konstruktor oder Destruktor warnen." #: c-family/c.opt:1417 #, no-c-format @@ -2913,10 +2895,9 @@ msgid "Print hierarchical comparisons when template types are mismatched." msgstr "Hierarchische Vergleiche ausgeben, wenn die Templatetypen nicht zusammenpassen." #: c-family/c.opt:1818 -#, fuzzy, no-c-format -#| msgid "default argument mismatch in overload resolution" +#, no-c-format msgid "Note all candidates during overload resolution failure." -msgstr "Zuordnungsfehler der Standardargumente in Überladungsauflösung" +msgstr "Wenn das Auflösen von Überladungen nicht eindeutig ist, alle Kandidaten auflisten." #: c-family/c.opt:1822 #, no-c-format @@ -3006,7 +2987,7 @@ msgstr "Normale C-Ausführungsumgebung vermuten." #: c-family/c.opt:1915 #, no-c-format msgid "Implement P2564 for consteval propagation." -msgstr "" +msgstr "P2564 für consteval-Propagierung implementieren." #: c-family/c.opt:1919 #, no-c-format @@ -3079,10 +3060,9 @@ msgid "Warn about macros that have conflicting header units definitions." msgstr "Bei Makros warnen, deren Header-Einheits-Definitionen nicht übereinstimmen." #: c-family/c.opt:1992 -#, fuzzy, no-c-format -#| msgid "return makes pointer from integer without a cast" +#, no-c-format msgid "Warn if pointers of distinct types are compared without a cast." -msgstr "return erzeugt Zeiger von Ganzzahl ohne Typkonvertierung" +msgstr "Bei Vergleichen von Zeigern unterschiedlicher Typen ohne Cast warnen." #: c-family/c.opt:1996 #, no-c-format @@ -3125,10 +3105,9 @@ msgid "Implement resolution of DR 150 for matching of template template argument msgstr "Auflösung von DR 150 für Mustervergleich von Template-Template-Argumenten umsetzen." #: c-family/c.opt:2043 -#, fuzzy, no-c-format -#| msgid "Generate code for NeXT (Apple Mac OS X) runtime environment." +#, no-c-format msgid "Generate code for NeXT (Apple macOS) runtime environment." -msgstr "Code für die NeXT-(Apple macOS X)-Laufzeitumgebung erzeugen." +msgstr "Code für die NeXT-(Apple macOS)-Laufzeitumgebung erzeugen." #: c-family/c.opt:2047 #, no-c-format @@ -3521,10 +3500,9 @@ msgid "Conform to the ISO 2023 C++ draft standard (experimental and incomplete s msgstr "Mit dem ISO-C++-Standardentwurf 2023 übereinstimmen (experimentelle und unvollständige Unterstützung)." #: c-family/c.opt:2480 c-family/c.opt:2484 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2023 C++ draft standard (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2026 C++ draft standard (experimental and incomplete support)." -msgstr "Mit dem ISO-C++-Standardentwurf 2023 übereinstimmen (experimentelle und unvollständige Unterstützung)." +msgstr "Mit dem ISO-C++-Standardentwurf 2026 übereinstimmen (experimentelle und unvollständige Unterstützung)." #: c-family/c.opt:2488 c-family/c.opt:2642 #, no-c-format @@ -3543,16 +3521,14 @@ msgid "Conform to the ISO 2017 C standard (published in 2018)." msgstr "Mit dem ISO-C-Standard von 2017 (2018 veröffentlicht) übereinstimmen." #: c-family/c.opt:2504 c-family/c.opt:2654 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 202X C standard draft (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) (experimental and incomplete support)." -msgstr "Mit dem ISO-C-Standardentwurf 202X übereinstimmen (experimentelle und unvollständige Unterstützung)." +msgstr "Mit dem ISO-C-Standardentwurf 2023 übereinstimmen (Veröffentlichung für 2024 geplant) (experimentelle und unvollständige Unterstützung)." #: c-family/c.opt:2508 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -std=c11." +#, no-c-format msgid "Deprecated in favor of -std=c23." -msgstr "Veraltet zugunsten von -std=c11." +msgstr "Veraltet zugunsten von -std=c23." #: c-family/c.opt:2512 c-family/c.opt:2516 c-family/c.opt:2626 #, no-c-format @@ -3615,10 +3591,9 @@ msgid "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimen msgstr "Mit dem ISO-C++-Standardentwurf für 2023 mit GNU-Erweiterungen (experimentelle und unvollständige Unterstützung) übereinstimmen." #: c-family/c.opt:2578 c-family/c.opt:2582 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support)." -msgstr "Mit dem ISO-C++-Standardentwurf für 2023 mit GNU-Erweiterungen (experimentelle und unvollständige Unterstützung) übereinstimmen." +msgstr "Mit dem ISO-C++-Standardentwurf für 2026 mit GNU-Erweiterungen (experimentelle und unvollständige Unterstützung) übereinstimmen." #: c-family/c.opt:2586 #, no-c-format @@ -3636,16 +3611,14 @@ msgid "Conform to the ISO 2017 C standard (published in 2018) with GNU extension msgstr "Mit dem ISO-C-Standard von 2017 (veröffentlicht 2018) mit GNU-Erweiterungen übereinstimmen." #: c-family/c.opt:2602 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) with GNU extensions (experimental and incomplete support)." -msgstr "Mit dem ISO-C-Standardentwurf für 202X mit GNU-Erweiterungen (experimentelle und unvollständige Unterstützung) übereinstimmen." +msgstr "Mit dem ISO-C-Standardentwurf für 2023 (Veröffentlichung für 2024 geplant) mit GNU-Erweiterungen (experimentelle und unvollständige Unterstützung) übereinstimmen." #: c-family/c.opt:2606 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -std=gnu11." +#, no-c-format msgid "Deprecated in favor of -std=gnu23." -msgstr "Veraltet zugunsten von -std=gnu11." +msgstr "Veraltet zugunsten von -std=gnu23." #: c-family/c.opt:2610 c-family/c.opt:2614 #, no-c-format @@ -4065,7 +4038,7 @@ msgstr "Die D-Standardbibliothek dynamisch in das Compilat binden." #: m2/lang.opt:35 #, no-c-format msgid "turns on case statement label compile time checking when using an expression of an enum type." -msgstr "" +msgstr "schaltet die Kompilierzeitprüfung der Case-Anweisung ein, wenn ein Ausdruck eines Enumtyps verwendet wird." #: m2/lang.opt:39 #, no-c-format @@ -4090,12 +4063,12 @@ msgstr "zusätzliche semantische Überprüfung zur Compilezeit, fängt üblicher #: m2/lang.opt:55 #, no-c-format msgid "turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data." -msgstr "" +msgstr "schaltet die Kompilierzeitanalyse im ersten Basisblock einer Prozedur ein, die den Zugriff auf nicht initialisierte Daten erkennt." #: m2/lang.opt:59 #, no-c-format msgid "turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all." -msgstr "" +msgstr "schaltet die Kompilierzeitanalyse ein, um den Zugriff auf nicht initialisierte Variablen zu erkennen, die Überprüfung kann durch known,cond,all angegeben werden." #: m2/lang.opt:63 #, no-c-format @@ -4395,7 +4368,7 @@ msgstr "-fgo-embedcfg=\tEingebettete Dateien über go:embed auflisten." #: go/lang.opt:66 #, no-c-format msgid "-fgo-importcfg=\tProvide file that tells where to find imports." -msgstr "" +msgstr "-fgo-importcfg=\tGibt die Datei an, die verrät, wo die Importe zu finden sind." #: go/lang.opt:70 #, no-c-format @@ -4480,22 +4453,22 @@ msgstr "Die maximale Tiefe der explodierten Knoten, die in einem Dot-Dump ersche #: analyzer/analyzer.opt:59 #, no-c-format msgid "The number of bytes at which to ellipsize string literals in analyzer text art diagrams." -msgstr "" +msgstr "Die Anzahl der Bytes, bei der Stringliterale in Analysator-Textdiagrammen verkürzt dargestellt werden sollen." #: analyzer/analyzer.opt:63 #, no-c-format msgid "The number of literal bytes to show at the head of a string literal in text art when ellipsizing it." -msgstr "" +msgstr "Die Anzahl der Bytes, die bei der Verkürzung am Anfang eines Zeichenkettenliterals angezeigt werden." #: analyzer/analyzer.opt:67 #, no-c-format msgid "The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it." -msgstr "" +msgstr "Die Anzahl der Bytes, die bei der Verkürzung am Ende eines Zeichenkettenliterals angezeigt werden." #: analyzer/analyzer.opt:71 #, no-c-format msgid "The ideal width in characters of text art diagrams generated by the analyzer." -msgstr "" +msgstr "Die ideale Breite der vom Analysierer erzeugten Textdiagramme in Zeichen." #: analyzer/analyzer.opt:75 #, no-c-format @@ -4578,10 +4551,9 @@ msgid "Warn about code paths in which floating-point arithmetic is used in locat msgstr "Bei Codepfaden warnen, in denen Gleitkommaarithmetik verwendet wird, obwohl exakte Berechnungen erforderlich sind." #: analyzer/analyzer.opt:139 -#, fuzzy, no-c-format -#| msgid "Warn about code paths which appear to lead to infinite recursion." +#, no-c-format msgid "Warn about code paths which appear to lead to an infinite loop." -msgstr "Bei Codepfaden warnen, die anscheinend zu endloser Rekursion führen." +msgstr "Bei Codepfaden warnen, die anscheinend zu einer Endlosschleife führen." #: analyzer/analyzer.opt:143 #, no-c-format @@ -4609,10 +4581,9 @@ msgid "Warn about code paths in which a write or read to a buffer is out-of-boun msgstr "Bei Codepfaden warnen, in denen eine Lese- oder Schreiboperation auf einem Puffer außerhalb der Puffergrenzen stattfindet." #: analyzer/analyzer.opt:163 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which a write or read to a buffer is out-of-bounds." +#, no-c-format msgid "Warn about code paths in which undefined behavior would occur due to overlapping buffers." -msgstr "Bei Codepfaden warnen, in denen eine Lese- oder Schreiboperation auf einem Puffer außerhalb der Puffergrenzen stattfindet." +msgstr "Bei Codepfaden warnen, in denen überlappende Puffer zu undefiniertem Verhalten führen würden." #: analyzer/analyzer.opt:167 #, no-c-format @@ -4690,10 +4661,9 @@ msgid "Warn about code paths in which an unsanitized value is used as a size." msgstr "Bei Codepfaden warnen, in denen ein nicht überprüfter Wert als Größe verwendet wird." #: analyzer/analyzer.opt:227 -#, fuzzy, no-c-format -#| msgid "Warn about code paths which appear to lead to infinite recursion." +#, no-c-format msgid "Warn about code paths in in which a call is made to strtok with undefined behavior." -msgstr "Bei Codepfaden warnen, die anscheinend zu endloser Rekursion führen." +msgstr "Bei Codepfaden warnen, in denen ein Aufruf von strtok zu undefiniertem Verhalten führt." #: analyzer/analyzer.opt:231 #, no-c-format @@ -4741,10 +4711,9 @@ msgid "Warn about code paths in which an uninitialized value is used." msgstr "Bei Codepfaden warnen, in denen ein uninitialisierter Wert verwendet wird." #: analyzer/analyzer.opt:267 -#, fuzzy, no-c-format -#| msgid "Warn if the code is too complicated for the analyzer to fully explore." +#, no-c-format msgid "Warn if expressions are too complicated for the analyzer to fully track." -msgstr "Warnen, wenn der Code so kompliziert ist, dass er nicht vollständig analysiert werden kann." +msgstr "Warnen, wenn Ausdrücke so kompliziert sind, dass sie nicht vollständig verfolgt werden können." #: analyzer/analyzer.opt:271 #, no-c-format @@ -4759,7 +4728,7 @@ msgstr "Die Analyse auf die Prüfung mit dem angegebenen Namen einschränken." #: analyzer/analyzer.opt:279 #, no-c-format msgid "Add extra annotations to diagrams." -msgstr "" +msgstr "Zusätzliche Anmerkungen zu Diagrammen hinzufügen." #: analyzer/analyzer.opt:283 #, no-c-format @@ -4799,7 +4768,7 @@ msgstr "Transitivität von Beschränkungen während der Analyse berücksichtigen #: analyzer/analyzer.opt:311 #, no-c-format msgid "Show events within system headers in analyzer execution paths." -msgstr "" +msgstr "Ereignisse in Systemheadern in den Ausführungspfaden des Analysierers anzeigen." #: analyzer/analyzer.opt:315 #, no-c-format @@ -4872,10 +4841,9 @@ msgid "Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot. msgstr "Diverse Interna des Analysierers nach SRCFILE.*.fg.dot und SRCFILE.*.tg.dot wegschreiben." #: analyzer/analyzer.opt:371 -#, fuzzy, no-c-format -#| msgid "Dump various analyzer internals to SRCFILE.analyzer.txt." +#, no-c-format msgid "Dump various analyzer internals to SRCFILE.*.infinite-loop.dot." -msgstr "Diverse Interna des Analysierers nach SRCFILE.analyzer.txt wegschreiben." +msgstr "Diverse Interna des Analysierers nach SRCFILE.*.infinite-loop.dot wegschreiben." #: analyzer/analyzer.opt:375 #, no-c-format @@ -5313,10 +5281,9 @@ msgid "Do not add a default symbol exports to modules or dynamic libraries." msgstr "Keine Standardsymbolexporte zu Modulen oder dynamischen Bibliotheken hinzufügen." #: config/darwin.opt:246 -#, fuzzy, no-c-format -#| msgid "Do not add a default symbol exports to modules or dynamic libraries." +#, no-c-format msgid "Do not add default run paths (for the compiler library directories) to executables, modules or dynamic libraries." -msgstr "Keine Standardsymbolexporte zu Modulen oder dynamischen Bibliotheken hinzufügen." +msgstr "Keinen Standardausführungspfad (für die Bibliotheksverzeichnisse des Compilers) zu Programmen, Modulen oder dynamischen Bibliotheken hinzufügen." #: config/darwin.opt:250 #, no-c-format @@ -5864,7 +5831,7 @@ msgstr "-march=\tCode für die angegebene RISC-V-ISA (z.B. RV64IM) erzeugen. ISA #: config/riscv/riscv.opt:91 #, no-c-format msgid "-march=help\tPrint supported -march extensions." -msgstr "" +msgstr "-march=help\tUnterstützte -march-Erweiterungen ausgeben." #: config/riscv/riscv.opt:103 config/mips/mips.opt:430 #, no-c-format @@ -5981,8 +5948,7 @@ msgid "Set the version of RISC-V ISA spec." msgstr "Die Version der RISC-V-ISA-Spezifikation festlegen." #: config/riscv/riscv.opt:509 -#, fuzzy, no-c-format -#| msgid "Enable conditional move instruction usage." +#, no-c-format msgid "Enable conditional moves unconditionally." msgstr "Verwendung bedingter Kopierbefehle einschalten." @@ -5992,59 +5958,54 @@ msgid "Always inline subword atomic operations." msgstr "Atomare Operationen, die sich auf Teilwörter beziehen, stets inlinen." #: config/riscv/riscv.opt:517 -#, fuzzy, no-c-format -#| msgid "Use caller save register across calls if possible." +#, no-c-format msgid "Inline strcmp calls if possible." -msgstr "Vom Aufrufer zu sichernde Register über Aufrufe hinweg verwenden, wenn möglich." +msgstr "Aufrufe von strcmp inlinen, wenn möglich." #: config/riscv/riscv.opt:521 -#, fuzzy, no-c-format -#| msgid "Use caller save register across calls if possible." +#, no-c-format msgid "Inline strncmp calls if possible." -msgstr "Vom Aufrufer zu sichernde Register über Aufrufe hinweg verwenden, wenn möglich." +msgstr "Aufrufe von strncmp inlinen, wenn möglich." #: config/riscv/riscv.opt:525 -#, fuzzy, no-c-format -#| msgid "Reduce stack alignment on call sites if possible." +#, no-c-format msgid "Inline strlen calls if possible." -msgstr "Stapelausrichtung im Aufrufer reduzieren, wenn möglich." +msgstr "Aufrufe von strlen inlinen, wenn möglich." #: config/riscv/riscv.opt:529 #, no-c-format msgid "Max number of bytes to compare as part of inlined strcmp/strncmp routines (default: 64)." -msgstr "" +msgstr "Maximale Anzahl der zu vergleichenden Bytes als Teil der geinlineten strcmp/strncmp-Routinen (Vorgabe: 64)." #: config/riscv/riscv.opt:533 -#, fuzzy, no-c-format -#| msgid "Valid arguments to -mcode-readable=:" +#, no-c-format msgid "Valid arguments to -param=riscv-autovec-preference=:" -msgstr "Gültige Argumente für -mcode-readable=:" +msgstr "Gültige Argumente für -param=riscv-autovec-preference=:" #: config/riscv/riscv.opt:546 #, no-c-format msgid "-param=riscv-autovec-preference=\tSet the preference of auto-vectorization in the RISC-V port." -msgstr "" +msgstr "-param=riscv-autovec-preference=\tPräferenz der Auto-Vektorisierung im RISC-V-Port festlegen." #: config/riscv/riscv.opt:550 #, no-c-format msgid "The RVV possible LMUL (-param=riscv-autovec-lmul=):" -msgstr "" +msgstr "Die möglichen RVV-LMUL (-param=riscv-autovec-lmul=):" #: config/riscv/riscv.opt:569 #, no-c-format msgid "-param=riscv-autovec-lmul=\tSet the RVV LMUL of auto-vectorization in the RISC-V port." -msgstr "" +msgstr "-param=riscv-autovec-lmul=\tDie RVV-LMUL der Auto-Vektorisierung im RISC-V-Port festlegen." #: config/riscv/riscv.opt:576 -#, fuzzy, no-c-format -#| msgid "Valid arguments to -mstringop-strategy=:" +#, no-c-format msgid "Valid arguments to -param=vsetvl-strategy=:" -msgstr "Gültige Arguments für -mstringop-strategy=:" +msgstr "Gültige Argumente für -param=vsetvl-strategy=:" #: config/riscv/riscv.opt:589 #, no-c-format msgid "-param=vsetvl-strategy=\tSet the optimization level of VSETVL insert pass." -msgstr "" +msgstr "-param=vsetvl-strategy=\tOptimierungsstufe des VSETVL-Einfügedurchgangs festlegen." #: config/riscv/riscv.opt:593 config/i386/i386.opt:496 #, no-c-format @@ -6052,10 +6013,9 @@ msgid "Valid arguments to -mstringop-strategy=:" msgstr "Gültige Arguments für -mstringop-strategy=:" #: config/riscv/riscv.opt:609 -#, fuzzy, no-c-format -#| msgid "Specify memset expansion strategy when expected size is known." +#, no-c-format msgid "Specify stringop expansion strategy." -msgstr "Expansionsstrategie für memset bei bekannter erwarteter Größe angeben." +msgstr "Expansionsstrategie für stringop angeben." #: config/m32c/m32c.opt:23 #, no-c-format @@ -6208,16 +6168,14 @@ msgid "Workaround for ARM Cortex-A53 Erratum number 843419." msgstr "Umgehung von Erratum 843419 für ARM-Cortex-A53." #: config/aarch64/aarch64.opt:102 -#, fuzzy, no-c-format -#| msgid "Specify how to access the thread pointer." +#, no-c-format msgid "The register used to access the thread pointer:" -msgstr "Angeben, wie auf den Threadzeiger zugegriffen wird." +msgstr "Das Register, das für den Zugriff auf den Threadzeiger verwendet wird:" #: config/aarch64/aarch64.opt:133 -#, fuzzy, no-c-format -#| msgid "Specify thread pointer register number." +#, no-c-format msgid "Specify the thread pointer register." -msgstr "Registernummer für Threadzeiger angeben." +msgstr "Das Register für den Threadzeiger angeben." #: config/aarch64/aarch64.opt:137 #, no-c-format @@ -6302,7 +6260,7 @@ msgstr "Annäherung der Division einschalten. Dies reduziert die Genauigkeit der #: config/aarch64/aarch64.opt:254 #, no-c-format msgid "Specify when to enable an early register allocation pass. The possibilities are: all functions, functions that have access to strided multi-register instructions, and no functions." -msgstr "" +msgstr "Angeben, wann ein früher Registerzuweisungsdurchlauf aktiviert werden soll. Möglichkeiten: alle Funktionen, Funktionen, die Zugriff auf großschrittige Multi-Register-Anweisungen haben, und keine Funktionen." #: config/aarch64/aarch64.opt:260 #, no-c-format @@ -6327,12 +6285,12 @@ msgstr "Code generieren, um mitzuverfolgen, wann die CPU falsch spekulieren kön #: config/aarch64/aarch64.opt:294 #, no-c-format msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs before register allocation." -msgstr "" +msgstr "Kopie des AArch64-Lade/Speicher-Paar-Fusionspasses, der vor der Registerzuweisung ausgeführt wird, aktivieren." #: config/aarch64/aarch64.opt:299 #, no-c-format msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs after register allocation." -msgstr "" +msgstr "Kopie des AArch64-Lade/Speicher-Paar-Fusionspasses, der nach der Registerzuweisung ausgeführt wird, aktivieren." #: config/aarch64/aarch64.opt:318 #, no-c-format @@ -6352,7 +6310,7 @@ msgstr "Atomare Operationen durch Hilfsfunktionen implementieren." #: config/aarch64/aarch64.opt:337 #, no-c-format msgid "When vectorizing, consider using multiple different approaches and use the cost model to choose the cheapest one." -msgstr "" +msgstr "Bei der Vektorisierung mehrere verschiedene Ansätze in Betracht ziehen und das Kostenmodell verwenden, um den günstigsten auszuwählen." #: config/aarch64/aarch64.opt:342 #, no-c-format @@ -6387,22 +6345,22 @@ msgstr "Begrenzen, wie weit der Autovektorisierer eine Schleife abrollen darf." #: config/aarch64/aarch64.opt:372 #, no-c-format msgid "--param=aarch64-ldp-policy=[default|always|never|aligned] Fine-grained policy for load pairs." -msgstr "" +msgstr "--param=aarch64-ldp-policy=[default|always|never|aligned] Feinkörnige Richtlinie für Ladepaare." #: config/aarch64/aarch64.opt:376 #, no-c-format msgid "--param=aarch64-stp-policy=[default|always|never|aligned] Fine-grained policy for store pairs." -msgstr "" +msgstr "--param=aarch64-stp-policy=[default|always|never|aligned] Feinkörnige Richtlinie für Speicherpaare." #: config/aarch64/aarch64.opt:395 #, no-c-format msgid "Limit on number of alias checks performed when attempting to form an ldp/stp." -msgstr "" +msgstr "Begrenzung der Anzahl der Alias-Prüfungen, die beim Versuch, ein ldp/stp-Paar zu bilden, durchgeführt werden." #: config/aarch64/aarch64.opt:399 #, no-c-format msgid "Param to control which writeback opportunities we try to handle in the load/store pair fusion pass. A value of zero disables writeback handling. One means we try to form pairs involving one or more existing individual writeback accesses where possible. A value of two means we also try to opportunistically form writeback opportunities by folding in trailing destructive updates of the base register used by a pair." -msgstr "" +msgstr "Parameter, mit dem gesteuert wird, welche Rückschreibegelegenheiten im Load/Store-Paar-Fusionsdurchlauf behandelt werden sollen. Der Wert 0 deaktiviert die Rückschreibebehandlung. Der Wert 1 versucht Paare zu bilden, die nach Möglichkeit einen oder mehrere bestehende individuelle Rückschreibzugriffe beinhalten. Der Wert 2 versucht opportunistisch Rückschreibgelegenheiten zu bilden, indem nachlaufende destruktive Aktualisierungen des von einem Paar verwendeten Basisregisters einklappen." #: config/linux.opt:24 #, no-c-format @@ -7005,7 +6963,7 @@ msgstr "Umgelagerte Nur-Lese-Daten in .data-Abschnitt legen." #: config/i386/mingw.opt:23 #, no-c-format msgid "Preprocess, compile or link with specified C RunTime DLL library." -msgstr "" +msgstr "Vorverarbeiten, Kompilieren oder Binden mit der angegebenen C-Laufzeit-DLL-Bibliothek." #: config/i386/mingw.opt:33 #, no-c-format @@ -7100,10 +7058,9 @@ msgid "Branches are this expensive (arbitrary units)." msgstr "Verzweigungen sind so teuer wie hier angegeben (beliebige Einheit)." #: config/i386/i386.opt:300 -#, fuzzy, no-c-format -#| msgid "-mlarge-data-threshold=\tData greater than given threshold will go into .ldata section in x86-64 medium model." +#, no-c-format msgid "-mlarge-data-threshold=\tData greater than given threshold will go into a large data section in x86-64 medium and large code models." -msgstr "-mlarge-data-threshold=\tDaten größer als angegebener Schwellwert werden in .ldata-Abschnitt im x86-64 Medium-Modell gehen." +msgstr "-mlarge-data-threshold=\tDaten größer als der angegebene Schwellwert landen in einem Abschnitt für große Daten, in den x86-64-Modellen Mittel und Groß." #: config/i386/i386.opt:304 #, no-c-format @@ -7358,7 +7315,7 @@ msgstr "Bekannte bevorzugte Länge von Registervektoren (für Verwendung mit der #: config/i386/i386.opt:652 #, no-c-format msgid "Enable floating-point status flags setting SSE vector operations on partial vectors." -msgstr "" +msgstr "Aktivieren Sie Gleitkomma-Statusflags, die SSE-Vektoroperationen auf Teilvektoren setzen." #: config/i386/i386.opt:656 #, no-c-format @@ -8036,74 +7993,64 @@ msgid "Support AMX-COMPLEX built-in functions and code generation." msgstr "Eingebaute Funktionen und Codeerzeugung für AMX-COMPLEX unterstützen." #: config/i386/i386.opt:1303 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT8 built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT16 built-in functions and code generation." -msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNIINT8 unterstützen." +msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNIINT16 unterstützen." #: config/i386/i386.opt:1308 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM3 built-in functions and code generation." -msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und FMA unterstützen." +msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SM3 unterstützen." #: config/i386/i386.opt:1313 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SHA512 built-in functions and code generation." -msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und AVX2 unterstützen." +msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SHA512 unterstützen." #: config/i386/i386.opt:1318 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM4 built-in functions and code generation." -msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und FMA unterstützen." +msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SM4 unterstützen." #: config/i386/i386.opt:1323 -#, fuzzy, no-c-format -#| msgid "Enable vectorization on trees." +#, no-c-format msgid "Enable vectorization for gather instruction." -msgstr "Vektorisierung auf Bäumen einschalten." +msgstr "Vektorisierung für Gathering-Befehl einschalten." #: config/i386/i386.opt:1327 -#, fuzzy, no-c-format -#| msgid "Enable vectorization on trees." +#, no-c-format msgid "Enable vectorization for scatter instruction." -msgstr "Vektorisierung auf Bäumen einschalten." +msgstr "Vektorisierung für Scatter-Befehl einschalten." #: config/i386/i386.opt:1331 #, no-c-format msgid "Support code generation for APX features, including EGPR, PUSH2POP2, NDD and PPX." -msgstr "" +msgstr "Codegenerierung für APX-Funktionen unterstützen, einschließlich EGPR, PUSH2POP2, NDD und PPX." #: config/i386/i386.opt:1360 #, no-c-format msgid "Enable GPR32 in inline asm when APX_F enabled." -msgstr "" +msgstr "GPR32 in Inline-Asm einschalten, wenn APX_F eingeschaltet ist." #: config/i386/i386.opt:1364 -#, fuzzy, no-c-format -#| msgid "Support BMI2 built-in functions and code generation." +#, no-c-format msgid "Support 512 bit vector built-in functions and code generation." -msgstr "Eingebaute Funktionen und Codeerzeugung für BMI2 unterstützen." +msgstr "Eingebaute Funktionen und Codeerzeugung für 512-Bit-Vektoren unterstützen." #: config/i386/i386.opt:1368 -#, fuzzy, no-c-format -#| msgid "Support AES built-in functions and code generation." +#, no-c-format msgid "Support USER_MSR built-in functions and code generation." -msgstr "Eingebaute AES-Funktionen und Codeerzeugung unterstützen." +msgstr "Eingebaute USER_MSR-Funktionen und Codeerzeugung unterstützen." #: config/i386/i386.opt:1372 config/i386/i386.opt:1382 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1 built-in functions and code generation." -msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX512F unterstützen." +msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX10.1 unterstützen." #: config/i386/i386.opt:1377 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-512 built-in functions and code generation." -msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX512F unterstützen." +msgstr "Eingebaute Funktionen und Codeerzeugung für MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX10.1-512 unterstützen." #: config/pa/pa64-hpux.opt:23 #, no-c-format @@ -8554,12 +8501,12 @@ msgstr "Bei RAM-Zugriff X wie durch Hardware vorgegeben verwenden, d.h. Pre-Dekr #: config/avr/avr.opt:99 #, no-c-format msgid "The device has the bitfield NVMCTRL_CTRLB.FLMAP. This option is used internally." -msgstr "" +msgstr "Das Gerät hat das Bitfeld NVMCTRL_CTRLB.FLMAP. Diese Option wird intern verwendet." #: config/avr/avr.opt:103 #, no-c-format msgid "The device has the .rodata section located in the RAM area." -msgstr "" +msgstr "Auf dem Gerät befindet sich der Abschnitt .rodata im RAM-Bereich." #: config/avr/avr.opt:108 #, no-c-format @@ -8899,7 +8846,7 @@ msgstr "Alle Argumentregister auf dem Stapelspeicher sichern." #: config/s390/s390.opt:335 #, no-c-format msgid "Assume external symbols to be potentially unaligned. By default all symbols without explicit alignment are assumed to reside on a 2 byte boundary as mandated by the IBM Z ABI." -msgstr "" +msgstr "Annehmen, dass externe Symbole potenziell nicht ausgerichtet sind. Standardmäßig wird bei allen Symbolen ohne explizite Ausrichtung davon ausgegangen, dass sie sich auf einer 2-Byte-Grenze befinden, wie von der IBM Z ABI vorgeschrieben." #: config/rl78/rl78.opt:27 config/rx/elf.opt:26 config/csky/csky.opt:198 #, no-c-format @@ -10205,26 +10152,24 @@ msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bi msgstr "Hardware-Gleitkommabefehle erlauben, um 32-Bit- und 64-Bit-Befehle abzudecken." #: config/loongarch/loongarch.opt:81 -#, fuzzy, no-c-format -#| msgid "FPU types of LoongArch:" +#, no-c-format msgid "SIMD extension levels of LoongArch:" -msgstr "FPU-Typen von LoongArch:" +msgstr "SIMD-Erweiterungsstufen von LoongArch:" #: config/loongarch/loongarch.opt:94 -#, fuzzy, no-c-format -#| msgid "-march=ISA\tGenerate code for the given ISA." +#, no-c-format msgid "-msimd=SIMD\tGenerate code for the given SIMD extension." -msgstr "-march=ISA\tCode für das gegebene ISA erzeugen." +msgstr "-msimd=SIMD\tCode für die angegebene SIMD-Erweiterung erzeugen." #: config/loongarch/loongarch.opt:98 #, no-c-format msgid "Enable LoongArch SIMD Extension (LSX, 128-bit)." -msgstr "" +msgstr "LoongArch SIMD-Erweiterung (LSX, 128-bit) einschalten." #: config/loongarch/loongarch.opt:102 #, no-c-format msgid "Enable LoongArch Advanced SIMD Extension (LASX, 256-bit)." -msgstr "" +msgstr "Erweiterung für LoongArch Advanced SIMD (LASX, 256-bit) einschalten." #: config/loongarch/loongarch.opt:107 #, no-c-format @@ -10282,10 +10227,9 @@ msgid "-mmax-inline-memcpy-size=SIZE\tSet the max size of memcpy to inline, defa msgstr "-mmax-inline-memcpy-size=SIZE\tDie maximale Größe von inline-memcpy festlegen, Standard ist 1024." #: config/loongarch/loongarch.opt:189 config/mips/mips.opt:150 -#, fuzzy, no-c-format -#| msgid "The code model option names for -mcmodel:" +#, no-c-format msgid "The code model option names for -mexplicit-relocs:" -msgstr "Codemodell-Optionsnamen für -mcmodel:" +msgstr "Die Optionsnamen für Codemodelle für -mexplicit-relocs:" #: config/loongarch/loongarch.opt:202 config/mips/mips.opt:163 #, no-c-format @@ -10293,16 +10237,14 @@ msgid "Use %reloc() assembly operators." msgstr "%reloc()-Assembleroperatoren verwenden." #: config/loongarch/loongarch.opt:206 config/mips/mips.opt:167 -#, fuzzy, no-c-format -#| msgid "Use %reloc() assembly operators." +#, no-c-format msgid "Use %reloc() assembly operators (for backward compatibility)." -msgstr "%reloc()-Assembleroperatoren verwenden." +msgstr "%reloc()-Assembleroperatoren verwenden (für Abwärtskompatibilität)." #: config/loongarch/loongarch.opt:210 -#, fuzzy, no-c-format -#| msgid "Generate software reciprocal divide and square root for better throughput." +#, no-c-format msgid "Generate approximate reciprocal divide and square root for better throughput." -msgstr "Reziproke Division und Quadratwurzel in Software für besseren Durchsatz erzeugen." +msgstr "Näherungsweise reziproke Division und Quadratwurzel für besseren Durchsatz erzeugen." #: config/loongarch/loongarch.opt:245 #, no-c-format @@ -10310,44 +10252,39 @@ msgid "Avoid using the GOT to access external symbols." msgstr "Die GOT möglichst nicht verwenden, um auf externe Symbole zuzugreifen." #: config/loongarch/loongarch.opt:254 -#, fuzzy, no-c-format -#| msgid "Enable relaxing in the assembler." +#, no-c-format msgid "Pass -mrelax or -mno-relax option to the assembler." -msgstr "Lockerung im Assembler einschalten." +msgstr "Die Option -mrelax oder -mno-relax an den Assembler übergeben." #: config/loongarch/loongarch.opt:258 -#, fuzzy, no-c-format -#| msgid "Used to limit unroll factor which indicates how much the autovectorizer may unroll a loop. The default value is 4." +#, no-c-format msgid "Used to limit unroll factor which indicates how much the autovectorizer may unroll a loop. The default value is 6." -msgstr "Den Abrollfaktor begrenzen, der angibt, wie weit der Autovektorisierer eine Schleife abrollen darf. Voreinstellung ist 4." +msgstr "Den Abrollfaktor begrenzen, der angibt, wie weit der Autovektorisierer eine Schleife abrollen darf. Voreinstellung ist 6." #: config/loongarch/loongarch.opt:276 -#, fuzzy, no-c-format -#| msgid "Support flag-preserving add-carry instructions." +#, no-c-format msgid "Support frecipe.{s/d} and frsqrte.{s/d} instructions." -msgstr "Flag-erhaltende Add-Carry-Befehle unterstützen." +msgstr "Die Befehle frecipe.{s/d} und frsqrte.{s/d} unterstützen." #: config/loongarch/loongarch.opt:280 #, no-c-format msgid "Support div.w[u] and mod.w[u] instructions with inputs not sign-extended." -msgstr "" +msgstr "Die Befehle div.w[u] und mod.w[u] für Eingaben ohne Vorzeichenerweiterung unterstützen." #: config/loongarch/loongarch.opt:284 -#, fuzzy, no-c-format -#| msgid "Support XSAVEC instructions." +#, no-c-format msgid "Support am{swap/add}[_db].{b/h} instructions." -msgstr "XSAVEC-Befehle unterstützen." +msgstr "Die Befehle am{swap/add}[_db].{b/h} unterstützen." #: config/loongarch/loongarch.opt:288 -#, fuzzy, no-c-format -#| msgid "Support XSAVEC instructions." +#, no-c-format msgid "Support amcas[_db].{b/h/w/d} instructions." -msgstr "XSAVEC-Befehle unterstützen." +msgstr "Die Befehle amcas[_db].{b/h/w/d} unterstützen." #: config/loongarch/loongarch.opt:292 #, no-c-format msgid "Do not need load-load barriers (dbar 0x700)." -msgstr "" +msgstr "Es werden keine load-load-Barrieren benötigt (dbar 0x700)." #: config/or1k/elf.opt:28 #, no-c-format @@ -12525,16 +12462,14 @@ msgid "Warn about invalid OpenACC dimensions." msgstr "Bei ungültigen OpenACC-Dimensionen warnen." #: config/gcn/gcn.opt:92 -#, fuzzy, no-c-format -#| msgid "SRAM-ECC modes:" +#, no-c-format msgid "SRAM-ECC and XNACK modes:" -msgstr "SRAM-ECC-Modi:" +msgstr "Modi für SRAM-ECC und XNACK:" #: config/gcn/gcn.opt:108 -#, fuzzy, no-c-format -#| msgid "Compile for devices requiring XNACK enabled. Default off." +#, no-c-format msgid "Compile for devices requiring XNACK enabled. Default \"any\" if USM is supported." -msgstr "Für Geräte kompilieren, die aktiviertes XNACK erfordern. Standardmäßig ausgeschaltet." +msgstr "Für Geräte kompilieren, die aktiviertes XNACK erfordern. Standardmäßig »any«, wenn USM unterstützt wird." #: config/gcn/gcn.opt:112 #, no-c-format @@ -12587,34 +12522,29 @@ msgid "Enable 32-bit jump instructions." msgstr "32-Bit-Sprungbefehle einschalten." #: config/bpf/bpf.opt:64 -#, fuzzy, no-c-format -#| msgid "Enable asan store operations protection." +#, no-c-format msgid "Enable general atomic operations introduced in v3 ISA." -msgstr "ASan-Schutz für Speicheroperationen einschalten." +msgstr "Allgemeine atomare Operationen einschalten, die in v3 ISA eingeführt wurden." #: config/bpf/bpf.opt:68 -#, fuzzy, no-c-format -#| msgid "Enable 32-bit jump instructions." +#, no-c-format msgid "Enable byte swap instructions." -msgstr "32-Bit-Sprungbefehle einschalten." +msgstr "Bytetauschbefehle einschalten." #: config/bpf/bpf.opt:72 -#, fuzzy, no-c-format -#| msgid "Enable divide and modulus instructions." +#, no-c-format msgid "Enable signed division and modulus instructions." -msgstr "Divisions- und Modulobefehle einschalten." +msgstr "Vorzeichenbehaftete Divisions- und Modulobefehle einschalten." #: config/bpf/bpf.opt:76 -#, fuzzy, no-c-format -#| msgid "Enable divide and modulus instructions." +#, no-c-format msgid "Enable signed move and memory load instructions." -msgstr "Divisions- und Modulobefehle einschalten." +msgstr "Vorzeichenbehaftete Kopier- und Ladebefehle einschalten." #: config/bpf/bpf.opt:102 -#, fuzzy, no-c-format -#| msgid "Known assembler dialects (for use with the -masm= option):" +#, no-c-format msgid "Known assembler dialects (for use with the -masm= option)" -msgstr "Bekannte Assemblerdialekte (für Verwendung mit Option »-masm=«):" +msgstr "Bekannte Assemblerdialekte (für Verwendung mit Option »-masm=«)" #: config/mips/mips.opt:32 #, no-c-format @@ -12697,10 +12627,9 @@ msgid "Use Enhanced Virtual Addressing instructions." msgstr "Befehle zur Erweiterten Virtuellen Adressierung verwenden." #: config/mips/mips.opt:171 -#, fuzzy, no-c-format -#| msgid "Does nothing. Preserved for backward compatibility." +#, no-c-format msgid "Don't use %reloc() assembly operators (for backward compatibility)." -msgstr "Tut nichts. Für Rückwärtskompatibilität erhalten." +msgstr "Assembleroperatoren %reloc() nicht verwenden (für Rückwärtskompatibilität)." #: config/mips/mips.opt:175 #, no-c-format @@ -12963,10 +12892,9 @@ msgid "Optimize lui/addiu address loads." msgstr "lui/addiu-Adressladebefehle optimieren." #: config/mips/mips.opt:406 -#, fuzzy, no-c-format -#| msgid "Enable MUL instructions." +#, no-c-format msgid "Enable the MIPS16e V2 instructions." -msgstr "MUL-Befehle einschalten." +msgstr "Die MIPS16e-V2-Befehle einschalten." #: config/mips/mips.opt:410 #, no-c-format @@ -13441,7 +13369,7 @@ msgstr "Die Opcodes ENTER_S und LEAVE_S für ARCv2 einschalten." #: config/vxworks-smp.opt:25 #, no-c-format msgid "Select VxWorks SMP C runtimes for linking." -msgstr "" +msgstr "SMP-C-Laufzeiten von VxWorks zum Linken auswählen." #: lto/lang.opt:50 #, no-c-format @@ -13701,7 +13629,7 @@ msgstr "Beim Versuch der Freigabe eines Nicht-Heap-Objektes warnen." #: common.opt:639 #, no-c-format msgid "Warn when -fhardened did not enable an option from its set." -msgstr "" +msgstr "Warnen, wenn »-fhardened« eine Option nicht aktiviert hat." #: common.opt:650 #, no-c-format @@ -13844,10 +13772,9 @@ msgid "Warn about functions which might be candidates for __attribute__((malloc) msgstr "Bei Funktionen, die Kandidaten für __attribute__((malloc)) sein könnten, warnen." #: common.opt:790 -#, fuzzy, no-c-format -#| msgid "Warn about functions which might be candidates for __attribute__((noreturn))." +#, no-c-format msgid "Warn about functions which might be candidates for __attribute__((returns_nonnull))." -msgstr "Bei Funktionen, die Kandidaten für __attribute__((noreturn)) sein könnten, warnen." +msgstr "Bei Funktionen, die Kandidaten für __attribute__((returns_nonnull)) sein könnten, warnen." #: common.opt:794 #, no-c-format @@ -14187,7 +14114,7 @@ msgstr "Optimierungsdurchlauf zur Kopierübertragung von Registern durchführen. #: common.opt:1263 #, no-c-format msgid "Fold instructions calculating memory offsets to the memory access instruction if possible." -msgstr "" +msgstr "Befehle, die Speicher-Offsets berechnen, wenn möglich in die Speicherzugriffsbefehl einbetten." #: common.opt:1267 #, no-c-format @@ -14300,10 +14227,9 @@ msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics." msgstr "-fdiagnostics-color=[never|always|auto]\tDiagnosemeldungen einfärben." #: common.opt:1394 -#, fuzzy, no-c-format -#| msgid "Enable verbose output." +#, no-c-format msgid "Enable formatting of JSON output." -msgstr "Wortreiche Ausgabe einschalten." +msgstr "Formatierung der JSON-Ausgabe einschalten." #: common.opt:1398 #, no-c-format @@ -14378,7 +14304,7 @@ msgstr "Stapeltiefe der Ereignisse in Pfaden anzeigen." #: common.opt:1525 #, no-c-format msgid "-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]\tDetermine which characters to use in text arg diagrams." -msgstr "" +msgstr "-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]\tLegt fest, welche Zeichen in Text-Arg-Diagrammen verwendet werden." #: common.opt:1544 #, no-c-format @@ -14643,7 +14569,7 @@ msgstr "Erraten der Sprungwahrscheinlichkeiten einschalten." #: common.opt:1834 #, no-c-format msgid "Enable various security-relevant flags." -msgstr "" +msgstr "Verschiedene sicherheitsrelevante Optionen einschalten." #: common.opt:1838 #, no-c-format @@ -14656,31 +14582,29 @@ msgid "Harden conditional branches by checking reversed conditions." msgstr "Bedingte Zweigen härten, indem die entgegengesetzten Bedingungen geprüft werden." #: common.opt:1846 -#, fuzzy, no-c-format -#| msgid "Harden conditionals not used in branches, checking reversed conditions." +#, no-c-format msgid "Harden control flow by recording and checking execution paths." -msgstr "Bedingungen, die nicht in den Zweigen verwendet werden, härten, indem die entgegengesetzten Bedingungen geprüft werden." +msgstr "Kontrollfluss härten, indem Ausführungspfade aufgezeichnet und geprüft werden." #: common.opt:1850 -#, fuzzy, no-c-format -#| msgid "disable pass %s for function %s" +#, no-c-format msgid "Disable CFR in leaf functions." -msgstr "Durchlauf %s für Funktion %s ausschalten" +msgstr "CFR in Blattfunktionen ausschalten." #: common.opt:1854 #, no-c-format msgid "Check CFR execution paths also before calls followed by returns of their results." -msgstr "" +msgstr "CFR-Ausführungspfade auch vor Aufrufen prüfen, die ihre Ergebnisse zurückgeben." #: common.opt:1858 #, no-c-format msgid "Check CFR execution paths also when exiting a function through an exception." -msgstr "" +msgstr "CFR-Ausführungspfade auch prüfen, wenn eine Funktion aufgrund einer Exception verlassen wird." #: common.opt:1862 #, no-c-format msgid "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]\tCheck CFR execution paths also before calling noreturn functions." -msgstr "" +msgstr "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]\tCFR-Ausführungspfade auch prüfen, bevor noreturn-Funktionen aufgerufen werden." #: common.opt:1885 #, no-c-format @@ -14750,7 +14674,7 @@ msgstr "__atomic-Operationen »inline« erzeugen, wenn Lock-freie Befehlssequenz #: common.opt:1968 #, no-c-format msgid "-finline-stringops[=memcmp|memcpy|memmove|memset] Expand supported mem/str operations inline, even if against optimization." -msgstr "" +msgstr "-finline-stringops[=memcmp|memcpy|memmove|memset] Unterstützte mem/str-Operationen inline expandieren, auch wenn dies der Optimierung widerspricht." #: common.opt:1999 #, no-c-format @@ -14998,10 +14922,9 @@ msgid "-fmessage-length=\tLimit diagnostics to characters per l msgstr "-fmessage-length=\tDiagnosemeldungen auf Zeichen pro Zeile beschränken. 0 unterdrückt Zeilenumbruch." #: common.opt:2279 -#, fuzzy, no-c-format -#| msgid "Align the start of functions." +#, no-c-format msgid "Align the start of every function." -msgstr "Funktionsanfänge ausrichten." +msgstr "Die Anfänge jeder Funktion ausrichten." #: common.opt:2283 #, no-c-format @@ -15636,34 +15559,32 @@ msgstr "Vorzeichenbehafteten Überlauf als undefiniertes Verhalten behandeln. Wi #: common.opt:2931 #, no-c-format msgid "Disable stack scrub entirely, disregarding strub attributes." -msgstr "" +msgstr "Stapelschrubben komplett ausschalten, unabhängig von Strub-Attributen." #: common.opt:2935 #, no-c-format msgid "Enable stack scrub as per attributes, with strict call checking." -msgstr "" +msgstr "Stapelschrubben gemäß der Attribute einschalten, mit strenger Aufrufprüfung." #: common.opt:2944 #, no-c-format msgid "Restore default strub mode: as per attributes, with relaxed checking." -msgstr "" +msgstr "Standard-Strub-Modus wiederherstellen: gemäß Attributen, mit lockerer Prüfung." #: common.opt:2948 -#, fuzzy, no-c-format -#| msgid "Enable hwasan instrumentation of builtin functions." +#, no-c-format msgid "Enable stack scrubbing for all viable functions." -msgstr "hwasan-Instrumentierung für eingebaute Funktionen einschalten." +msgstr "Stapelschrubben für alle geeigneten Funktionen einschalten." #: common.opt:2952 #, no-c-format msgid "Enable at-calls stack scrubbing for all viable functions." -msgstr "" +msgstr "Stapelschrubben für At-Aufrufe für alle geeigneten Funktionen einschalten." #: common.opt:2956 -#, fuzzy, no-c-format -#| msgid "Enable interrupt stack instructions." +#, no-c-format msgid "Enable internal stack scrubbing for all viable functions." -msgstr "Interrupt-Stapelbefehle einschalten." +msgstr "Internes Stapelschrubben für alle geeigneten Funktionen einschalten." #: common.opt:2960 #, no-c-format @@ -15718,7 +15639,7 @@ msgstr "Für Ziele, die normalerweise Trampoline für geschachtelte Funktionen b #: common.opt:3016 #, no-c-format msgid "Whether trampolines are generated in executable memory rather than executable stack." -msgstr "" +msgstr "Ob Trampoline in ausführbarem Speicher statt in ausführbarem Stapelspeicher erzeugt werden." #: common.opt:3034 #, no-c-format @@ -16121,10 +16042,9 @@ msgid "Assume assembler support for view in (DWARF2+) .loc directives." msgstr "Assembler-Unterstützung für Ansicht in (DWARF2+-).loc-Direktiven annehmen." #: common.opt:3483 -#, fuzzy, no-c-format -#| msgid "Generate debug information in VMS format." +#, no-c-format msgid "Generate debug information in CodeView format." -msgstr "Fehlersuchinformationen im VMS-Format erzeugen." +msgstr "Fehlersuchinformationen im CodeView-Format erzeugen." #: common.opt:3503 #, no-c-format @@ -16454,7 +16374,7 @@ msgstr "Der Skalierungsfaktor, der auf die Anzahl der Anweisungen in einem Threa #: params.opt:139 #, no-c-format msgid "Whether the target fully pipelines FMA instructions. If non-zero, reassociation considers the benefit of parallelizing FMA's multiplication part and addition part, assuming FMUL and FMA use the same units that can also do FADD." -msgstr "" +msgstr "Ob das Zielsystem FMA-Befehle vollständig in der Pipeline verarbeitet. Bei einem Wert ungleich Null wird bei der Neuzuordnung der Vorteil der Parallelisierung des Multiplikationsteils und des Additionsteils von FMA berücksichtigt, wobei davon ausgegangen wird, dass FMUL und FMA die gleichen Einheiten verwenden, die auch FADD ausführen können." #: params.opt:146 #, no-c-format @@ -16509,12 +16429,12 @@ msgstr "Höchstzahl der Parameter in einem SCoP." #: params.opt:186 #, no-c-format msgid "Maximum number of blocks for -fharden-control-flow-redundancy." -msgstr "" +msgstr "Maximale Blockanzahl für -fharden-control-flow-redundancy." #: params.opt:190 #, no-c-format msgid "Maximum number of blocks for in-line -fharden-control-flow-redundancy." -msgstr "" +msgstr "Maximale Blockanzahl für in-line -fharden-control-flow-redundancy." #: params.opt:194 #, no-c-format @@ -17575,13 +17495,12 @@ msgstr "Höchstzahl der geschachtelten Aufrufe, die bei der Analyse für uniniti #: params.opt:1126 #, no-c-format msgid "Maximum number of predicates anded for each predicate ored in the normalized predicate chain." -msgstr "" +msgstr "Maximale Anzahl von und-verknüpften Prädikaten, die für jedes oder-verknüpfte Prädikat in der normalisierten Prädikatskette vorkommen." #: params.opt:1131 -#, fuzzy, no-c-format -#| msgid "Maximum number of bases stored in each modref tree." +#, no-c-format msgid "Maximum number of predicates ored in the normalized predicate chain." -msgstr "Höchstzahl der Basen, die pro modref-Baum gespeichert werden." +msgstr "Maximale Anzahl der Prädikate, die oder-verknüpft in der normalisierten Prädikatskette vorkommen." #: params.opt:1135 #, no-c-format @@ -17669,22 +17588,19 @@ msgid "Enable loop vectorization of floating point inductions." msgstr "Schleifenvektorisierung von Gleitkommabefehlen einschalten." #: params.opt:1203 -#, fuzzy, no-c-format -#| msgid "Maximum number of basic blocks before EVRP uses a sparse cache." +#, no-c-format msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache." -msgstr "Höchstzahl der Basis-Blöcke, bevor EVRP einen spärlich gefüllten Cache verwendet." +msgstr "Höchstzahl der Basis-Blöcke, bevor VRP einen spärlich gefüllten Bitmap-Cache verwendet." #: params.opt:1207 -#, fuzzy, no-c-format -#| msgid "Maximum number of outgoing edges in a switch before EVRP will not process it." +#, no-c-format msgid "Maximum number of outgoing edges in a switch before VRP will not process it." -msgstr "Höchstzahl der ausgehenden Kanten in einem Switch, bevor EVRP sie nicht mehr verarbeitet." +msgstr "Höchstzahl der ausgehenden Kanten in einem Switch, bevor VRP sie nicht mehr verarbeitet." #: params.opt:1211 -#, fuzzy, no-c-format -#| msgid "Maximum number of basic blocks before EVRP uses a sparse cache." +#, no-c-format msgid "Maximum number of basic blocks for VRP to use a basic cache vector." -msgstr "Höchstzahl der Basis-Blöcke, bevor EVRP einen spärlich gefüllten Cache verwendet." +msgstr "Höchstzahl der Basis-Blöcke, bevor VRP einen grundlegenden Cachevektor verwendet." #: cfgrtl.cc:2822 msgid "flow control insn inside a basic block" @@ -18517,10 +18433,9 @@ msgstr "" "Fehler in der deutschen Übersetzung sind an translation-team-de@lists.sourceforge.net zu melden.\n" #: gcov-tool.cc:595 -#, fuzzy, c-format -#| msgid "Copyright %s 2023 Free Software Foundation, Inc.\n" +#, c-format msgid "Copyright %s 2024 Free Software Foundation, Inc.\n" -msgstr "Copyright %s 2023 Free Software Foundation, Inc.\n" +msgstr "Copyright %s 2024 Free Software Foundation, Inc.\n" #: gcov.cc:927 #, c-format @@ -18694,10 +18609,9 @@ msgid "gcov %s%s\n" msgstr "gcov %s%s\n" #: gcov.cc:969 -#, fuzzy, c-format -#| msgid "collect2 version %s\n" +#, c-format msgid "JSON format version: %s\n" -msgstr "collect2-Version %s\n" +msgstr "JSON-Format-Version: %s\n" #: gcov.cc:1367 #, c-format @@ -19529,10 +19443,9 @@ msgid "incompatible floating point / vector register operand for '%%%c'" msgstr "unverträglicher Gleitkomma- / Vektorregisteroperand für »%%%c«" #: config/aarch64/aarch64.cc:12061 -#, fuzzy, c-format -#| msgid "incompatible register operand for '%%%c'" +#, c-format msgid "incompatible operand for '%%%c'" -msgstr "unverträglicher Registeroperand für »%%%c«" +msgstr "unverträglicher Operand für »%%%c«" #: config/aarch64/aarch64.cc:12081 #, c-format @@ -19685,22 +19598,19 @@ msgid "invalid operand to %%p code" msgstr "ungültiger Operand für Code %%p" #: config/arc/arc.cc:4940 -#, fuzzy, c-format -#| msgid "invalid operand to %%s code" +#, c-format msgid "invalid operand for %%s code" msgstr "ungültiger Operand für Code %%s" #: config/arc/arc.cc:4958 -#, fuzzy, c-format -#| msgid "invalid operand to %%N code" +#, c-format msgid "invalid operand for %%N code" msgstr "ungültiger Operand für Code %%N" #: config/arc/arc.cc:4971 -#, fuzzy, c-format -#| msgid "invalid operand to %%N code" +#, c-format msgid "invalid operand for %%N or %%S code" -msgstr "ungültiger Operand für Code %%N" +msgstr "ungültiger Operand für Code %%N oder %%S" #: config/arc/arc.cc:4993 config/m32r/m32r.cc:2080 #, c-format @@ -20267,40 +20177,28 @@ msgid "unknown insn mode" msgstr "unbekannter Befehlsmodus" #: config/i386/i386.cc:23578 -#, fuzzy -#| msgid "invalid conversion from type %" msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>" -msgstr "ungültige Umwandlung von Typ %" +msgstr "ungültige Umwandlung von Typ %<__bf16%> ohne Option %<-msse2%>" #: config/i386/i386.cc:23581 -#, fuzzy -#| msgid "invalid conversion from type %" msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>" -msgstr "ungültige Umwandlung von Typ %" +msgstr "ungültige Umwandlung von Typ %<_Float16%> ohne Option %<-msse2%>" #: config/i386/i386.cc:23584 -#, fuzzy -#| msgid "invalid conversion to type %" msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>" -msgstr "ungültige Umwandlung in Typ %" +msgstr "ungültige Umwandlung in Typ %<__bf16%> ohne Option %<-msse2%>" #: config/i386/i386.cc:23587 -#, fuzzy -#| msgid "invalid conversion to type %" msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>" -msgstr "ungültige Umwandlung in Typ %" +msgstr "ungültige Umwandlung in Typ %<_Float16%> ohne Option %<-msse2%>" #: config/i386/i386.cc:23625 config/i386/i386.cc:23650 -#, fuzzy -#| msgid "operation not permitted on type %" msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>" -msgstr "Operation nicht erlaubt auf Typ %" +msgstr "Operation nicht erlaubt auf Typ %<__bf16%> ohne Option %<-msse2%>" #: config/i386/i386.cc:23628 config/i386/i386.cc:23654 -#, fuzzy -#| msgid "operation not permitted on type %" msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>" -msgstr "Operation nicht erlaubt auf Typ %" +msgstr "Operation nicht erlaubt auf Typ %<_Float16%> ohne Option %<-msse2%>" #: config/ia64/ia64.cc:5470 #, c-format @@ -20933,10 +20831,9 @@ msgid "'o' operand is not constant" msgstr "»o«-Operand ist nicht konstant" #: config/stormy16/stormy16.cc:1980 -#, fuzzy, c-format -#| msgid "'B' operand is not constant" +#, c-format msgid "'h' operand is not SImode register" -msgstr "»B«-Operand ist nicht konstant" +msgstr "»h«-Operand ist kein SImode-Register" #: config/stormy16/stormy16.cc:1988 #, c-format @@ -21393,10 +21290,8 @@ msgid "In lambda function" msgstr "In Lambda-Funktion" #: cp/error.cc:3712 -#, fuzzy -#| msgid "In static member function %qD" msgid "In explicit object member function %qD" -msgstr "In statischer Elementfunktion %qD" +msgstr "In expliziter Objektelementfunktion %qD" #: cp/error.cc:3714 msgid "In member function %qD" @@ -21596,16 +21491,12 @@ msgstr "" "\n" #: fortran/error.cc:1043 -#, fuzzy -#| msgid "new in Fortran 2003" msgid "Prohibited in Fortran 2023:" -msgstr "neu in Fortran 2003" +msgstr "Verboten in Fortran 2023:" #: fortran/error.cc:1045 -#, fuzzy -#| msgid "Fortran 2018:" msgid "Fortran 2023:" -msgstr "Fortran 2018:" +msgstr "Fortran 2023:" #: fortran/error.cc:1047 msgid "Fortran 2018 deleted feature:" @@ -21703,10 +21594,8 @@ msgid "new in Fortran 2018" msgstr "neu in Fortran 2018" #: fortran/intrinsic.cc:4896 -#, fuzzy -#| msgid "new in Fortran 2003" msgid "new in Fortran 2023" -msgstr "neu in Fortran 2003" +msgstr "neu in Fortran 2023" #: fortran/intrinsic.cc:4900 msgid "a GNU Fortran extension" @@ -22239,10 +22128,8 @@ msgid "value computed is not used" msgstr "berechneter Wert ist unbenutzt" #: go/gofrontend/expressions.cc:1986 -#, fuzzy -#| msgid "expected function name" msgid "unexpected reference to package" -msgstr "Funktionsname erwartet" +msgstr "unerwarteter Verweis auf Paket" #: go/gofrontend/expressions.cc:3840 go/gofrontend/expressions.cc:3856 msgid "constant refers to itself" @@ -22424,33 +22311,27 @@ msgstr "Anzahl der Ergebnisse passt nicht zur Anzahl der Werte" #: go/gofrontend/expressions.cc:14671 msgid "invalid 3-index slice of object that is not a slice" -msgstr "" +msgstr "ungültiges 3-Index-Slice eines Objekts, das kein Slice ist" #: go/gofrontend/expressions.cc:14674 msgid "attempt to slice object that is not array, slice, or string" -msgstr "" +msgstr "Versuch, ein Objekt zu schneiden, das weder Array, Slice noch String ist" #: go/gofrontend/expressions.cc:14677 msgid "attempt to index object that is not array, slice, string, or map" -msgstr "" +msgstr "Versuch, ein Objekt zu indizieren, das weder Array, Slice, String noch Map ist" #: go/gofrontend/expressions.cc:14730 -#, fuzzy -#| msgid "expected integer expression" msgid "attempt to index type expression" -msgstr "Ganzzahlausdruck erwartet" +msgstr "Versuch, einen Typausdruck zu indizieren" #: go/gofrontend/expressions.cc:14757 -#, fuzzy -#| msgid "invalid left hand side of assignment" msgid "invalid 3-index slice of string" -msgstr "ungültige linke Seite einer Zuweisung" +msgstr "ungültige 3-Index-Scheibe einer Zeichenkette" #: go/gofrontend/expressions.cc:14770 -#, fuzzy -#| msgid "invalid use of type" msgid "invalid slice of map" -msgstr "ungültige Typ-Verwendung" +msgstr "ungültige Scheibe einer Map" #: go/gofrontend/expressions.cc:14779 go/gofrontend/expressions.cc:15970 msgid "incompatible type for map index" @@ -22462,15 +22343,15 @@ msgstr "Schnittstelle oder Zeiger auf Schnittstelle erwartet" #: go/gofrontend/expressions.cc:18212 msgid "may only omit types within composite literals of slice, array, or map type" -msgstr "" +msgstr "der Typ darf nur innerhalb zusammengesetzter Literale vom Typ Slice, Array oder Map weggelassen werden" #: go/gofrontend/expressions.cc:18306 go/gofrontend/expressions.cc:18618 msgid "map composite literal must have keys" -msgstr "" +msgstr "zusammengesetztes Map-Literal muss Schlüssel haben" #: go/gofrontend/expressions.cc:18651 msgid "expected struct, slice, array, or map type for composite literal" -msgstr "" +msgstr "zusammengesetztes Literal kann nur Struct, Slice, Array oder Map sein" #: go/gofrontend/expressions.cc:19266 go/gofrontend/statements.cc:2121 msgid "type assertion only valid for interface types" @@ -22499,20 +22380,16 @@ msgid "cannot fallthrough final case in switch" msgstr "fallthrough ist bei letztem Fall einer switch-Anweisung unmöglich" #: go/gofrontend/statements.cc:1288 -#, fuzzy -#| msgid "cannot use %qs as a call-used register" msgid "cannot use %<_%> as value" -msgstr "%qs kann nicht als ein rufverwendetes Register verwendet werden" +msgstr "%<_%> kann nicht als Wert verwendet werden" #: go/gofrontend/statements.cc:1300 go/gofrontend/statements.cc:2528 msgid "invalid left hand side of assignment" msgstr "ungültige linke Seite einer Zuweisung" #: go/gofrontend/statements.cc:1309 -#, fuzzy -#| msgid "incompatible types in binary expression" msgid "incompatible type in binary expression" -msgstr "inkompatible Typen in binärem Ausdruck" +msgstr "inkompatibler Typ in binärem Ausdruck" #: go/gofrontend/statements.cc:1555 msgid "use of untyped nil" @@ -22523,10 +22400,8 @@ msgid "expected map index on right hand side" msgstr "Abbildungsindex auf rechter Seite erwartet" #: go/gofrontend/statements.cc:2534 -#, fuzzy -#| msgid "no pre-increment operator for type" msgid "increment or decrement of non-numeric type" -msgstr "kein Präinkrementoperator für Typ" +msgstr "Inkrement oder Dekrement eines nichtnumerischen Typs" #: go/gofrontend/statements.cc:3449 go/gofrontend/statements.cc:3464 msgid "not enough arguments to return" @@ -22694,7 +22569,7 @@ msgstr "Methode %s%s%s ist als go:nointerface gekennzeichnet" #: rust/resolve/rust-ast-resolve-expr.cc:140 #, c-format msgid "You have broken GCC Rust. This is a feature.\n" -msgstr "" +msgstr "Sie haben GCC-Rust kaputtgemacht. Dies ist ein Feature.\n" #: lto-streamer.h:1033 #, gcc-internal-format, gfc-internal-format @@ -23007,10 +22882,9 @@ msgid "Unrecognized option: %qs" msgstr "Unbekannte Option %qs" #: rust/lang.opt:90 -#, fuzzy, gcc-internal-format -#| msgid "unknown lam type %qs" +#, gcc-internal-format msgid "unknown crate type: '%qs'" -msgstr "unbekannter lam-Typ %qs" +msgstr "unbekannter Crate-Typ: %qs" #: rust/lang.opt:118 #, gcc-internal-format @@ -23059,16 +22933,14 @@ msgid "missing makefile target after %qs" msgstr "fehlendes Makefile-Ziel hinter %qs" #: c-family/c.opt:260 -#, fuzzy, gcc-internal-format -#| msgid "missing path after %qs" +#, gcc-internal-format msgid "missing format after %qs" -msgstr "fehlender Pfad hinter %qs" +msgstr "fehlendes Format hinter %qs" #: c-family/c.opt:264 -#, fuzzy, gcc-internal-format -#| msgid "missing path after %qs" +#, gcc-internal-format msgid "missing output path after %qs" -msgstr "fehlender Pfad hinter %qs" +msgstr "fehlender Ausgabepfad hinter %qs" #: c-family/c.opt:311 #, gcc-internal-format @@ -23146,10 +23018,9 @@ msgid "unknown pointer size model %qs" msgstr "unbekanntes Zeigergrößenmodell %qs" #: config/aarch64/aarch64.opt:379 -#, fuzzy, gcc-internal-format -#| msgid "unknown TLS model %qs" +#, gcc-internal-format msgid "unknown LDP/STP policy %qs" -msgstr "unbekanntes TLS-Modell %qs" +msgstr "unbekannte LDP/STP-Richtlinie %qs" #: config/i386/i386.opt:340 #, gcc-internal-format @@ -23169,27 +23040,27 @@ msgstr "%<-msse5%> wurde entfernt" #: config/i386/i386.opt:741 #, gcc-internal-format msgid "AVX512PF support will be removed in GCC 15" -msgstr "" +msgstr "AVX512PF-Unterstützung wird in GCC 15 entfernt" #: config/i386/i386.opt:745 #, gcc-internal-format msgid "AVX512ER support will be removed in GCC 15" -msgstr "" +msgstr "AVX512ER-Unterstützung wird in GCC 15 entfernt" #: config/i386/i386.opt:773 #, gcc-internal-format msgid "AVX5124FMAPS support will be removed in GCC 15" -msgstr "" +msgstr "AVX5124FMAPS-Unterstützung wird in GCC 15 entfernt" #: config/i386/i386.opt:777 #, gcc-internal-format msgid "AVX5124VNNIW support will be removed in GCC 15" -msgstr "" +msgstr "AVX5124VNNIW-Unterstützung wird in GCC 15 entfernt" #: config/i386/i386.opt:972 #, gcc-internal-format msgid "PREFETCHWT1 support will be removed in GCC 15" -msgstr "" +msgstr "PREFETCHWT1-Unterstützung wird in GCC 15 entfernt" #: config/i386/i386.opt:1286 #, gcc-internal-format @@ -23265,10 +23136,9 @@ msgid "unknown floating point contraction style %qs" msgstr "unbekannte Art der Gleitkomma-Kürzung %qs" #: common.opt:1865 -#, fuzzy, gcc-internal-format -#| msgid "unknown Live-Patching Level %qs" +#, gcc-internal-format msgid "unknown hardcfr noreturn checking level %qs" -msgstr "unbekannte Stufe %qs für Live-Patching" +msgstr "unbekannte Prüfstufe %qs für hardcfr noreturn" #: common.opt:1900 #, gcc-internal-format @@ -23278,7 +23148,7 @@ msgstr "Unbekannte Stufe %qs für Stapel-Wiederverwendung" #: common.opt:1972 #, gcc-internal-format msgid "unavailable stringop for inlining %qs" -msgstr "" +msgstr "nicht verfügbare Zeichenkettenoperation zum Inlinen von %qs" #: common.opt:2003 #, gcc-internal-format @@ -23341,10 +23211,9 @@ msgid "unknown TLS model %qs" msgstr "unbekanntes TLS-Modell %qs" #: common.opt:3020 -#, fuzzy, gcc-internal-format -#| msgid "unknown rust mangling option %qs" +#, gcc-internal-format msgid "unknown trampoline implementation %qs" -msgstr "unbekannte Rust-Mangling-Option %qs" +msgstr "unbekannte Trampolinimplementierung %qs" #: common.opt:3342 #, gcc-internal-format @@ -24836,10 +24705,9 @@ msgid "% attribute ignored because function is defined" msgstr "Attribut % ignoriert, da Funktion bereits definiert ist" #: cgraphunit.cc:921 -#, fuzzy, gcc-internal-format -#| msgid "% function might not be inlinable" +#, gcc-internal-format msgid "% function might not be inlinable unless also declared %" -msgstr "% Funktion ist möglicherweise nicht inlinefähig" +msgstr "die Funktion % ist möglicherweise nicht inlinefähig, es sei denn, sie ist ebenfalls als % deklariert" #: cgraphunit.cc:947 #, gcc-internal-format @@ -25093,10 +24961,9 @@ msgid "pointer value used where a floating-point was expected" msgstr "Zeigerwert verwendet, wo Gleitkommawert erwartet wurde" #: convert.cc:338 -#, fuzzy, gcc-internal-format -#| msgid "pointer value used where a floating-point was expected" +#, gcc-internal-format msgid "vector value used where a floating-point was expected" -msgstr "Zeigerwert verwendet, wo Gleitkommawert erwartet wurde" +msgstr "Vektorwert verwendet, wo Gleitkommawert erwartet wurde" #: convert.cc:342 #, gcc-internal-format @@ -25576,21 +25443,17 @@ msgid "cannot read spec file %qs: %m" msgstr "Spec-Datei %qs kann nicht gelesen werden: %m" #: gcc.cc:2412 gcc.cc:2432 -#, fuzzy -#| msgid "specs %%include syntax malformed after %ld characters" msgid "specs %%include syntax malformed after %td characters" -msgstr "falsche %%include-Syntax für Spezifikationen nach %ld Zeichen" +msgstr "specs %%include-Syntax nach %td Zeichen fehlerhaft" #: gcc.cc:2458 gcc.cc:2467 gcc.cc:2477 gcc.cc:2487 -#, fuzzy -#| msgid "specs %%rename syntax malformed after %ld characters" msgid "specs %%rename syntax malformed after %td characters" -msgstr "falsche %%rename-Syntax für Spezifikationen nach %ld Zeichen" +msgstr "specs %%rename-Syntax nach %td Zeichen fehlerhaft" #: gcc.cc:2497 #, gcc-internal-format, gfc-internal-format msgid "specs %s spec was not found to be renamed" -msgstr "keine %s-Spezifikation zum Umbenennen gefunden" +msgstr "specs: keine %s-Spezifikation zum Umbenennen gefunden" #: gcc.cc:2505 #, gcc-internal-format @@ -25598,16 +25461,12 @@ msgid "%s: attempt to rename spec %qs to already defined spec %qs" msgstr "%s: Versuch, Spezifikation %qs in bereits definierte Spezifikation %qs umzubenennen" #: gcc.cc:2527 -#, fuzzy -#| msgid "specs unknown %% command after %ld characters" msgid "specs unknown %% command after %td characters" -msgstr "Spezifikation: unbekannter %%-Befehl nach %ld Zeichen" +msgstr "specs: unbekannter %%-Befehl nach %td Zeichen" #: gcc.cc:2539 gcc.cc:2553 -#, fuzzy -#| msgid "specs file malformed after %ld characters" msgid "specs file malformed after %td characters" -msgstr "Fehler in Spezifikationsdatei nach %ld Zeichen" +msgstr "specs: Datei fehlerhaft nach %td Zeichen" #: gcc.cc:2608 #, gcc-internal-format @@ -25683,7 +25542,7 @@ msgstr "%qs ist eine unbekannte Option für %<-save-temps%>" #: gcc.cc:5024 #, gcc-internal-format msgid "linker hardening options not enabled by %<-fhardened%> because other link options were specified on the command line" -msgstr "" +msgstr "linker-Härtungsoptionen nicht durch %<-fhardened%> aktiviert, da andere Link-Optionen auf der Kommandozeile angegeben wurden" #: gcc.cc:5048 toplev.cc:712 #, gcc-internal-format @@ -26235,17 +26094,17 @@ msgstr "%s wird auf diesem Ziel nicht unterstützt" #: gimple-harden-control-flow.cc:97 #, gcc-internal-format msgid "%qD calls % or similar, %<-fharden-control-flow-redundancy%> is not supported" -msgstr "" +msgstr "%qD ruft % oder ähnliches auf, %<-fharden-control-flow-redundancy%> wird nicht unterstützt" #: gimple-harden-control-flow.cc:110 #, gcc-internal-format msgid "%qD receives nonlocal gotos, %<-fharden-control-flow-redundancy%> is not supported" -msgstr "" +msgstr "%qD empfängt nicht-lokale Gotos, %<-fharden-control-flow-redundancy%> wird nicht unterstützt" #: gimple-harden-control-flow.cc:121 #, gcc-internal-format msgid "%qD has more than %u blocks, the requested maximum for %<-fharden-control-flow-redundancy%>" -msgstr "" +msgstr "%qD hat mehr als %u Blöcke, das geforderte Maximum für %<-fharden-control-flow-redundancy%>" #: gimple-ssa-isolate-paths.cc:290 #, gcc-internal-format @@ -27718,10 +27577,9 @@ msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" msgstr "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" #: gimplify.cc:1399 -#, fuzzy, gcc-internal-format -#| msgid "% clause must specify an allocator here" +#, gcc-internal-format msgid "% directive for %qD inside a target region must specify an % clause" -msgstr "%-Klausel muss hier einen Allozierer angeben" +msgstr "%-Direktive für %qD in einer Zielregion muss eine %-Klausel angeben" #: gimplify.cc:2271 #, gcc-internal-format @@ -27821,16 +27679,14 @@ msgid "%qE not specified in enclosing OpenACC %qs construct" msgstr "%qE in umgebendem OpenACC-%qs-Konstrukt nicht angegeben" #: gimplify.cc:8056 -#, fuzzy, gcc-internal-format -#| msgid "enclosing OpenACC %qs construct" +#, gcc-internal-format msgid "enclosing OpenACC %qs construct and" -msgstr "umgebendes OpenACC-%qs-Konstrukt" +msgstr "umgebendes OpenACC-%qs-Konstrukt und" #: gimplify.cc:8059 -#, fuzzy, gcc-internal-format -#| msgid "enclosing OpenACC %qs construct" +#, gcc-internal-format msgid "enclosing OpenACC %qs construct with %qs clause" -msgstr "umgebendes OpenACC-%qs-Konstrukt" +msgstr "umgebendes OpenACC-%qs-Konstrukt mit %qs-Klausel" #: gimplify.cc:8129 #, gcc-internal-format @@ -28571,109 +28427,104 @@ msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA msgstr "Funktion %qs, Parameter %u, wird verwendet, hat aber keinen bestimmten IPA-SRA-Zugriff" #: ipa-strub.cc:620 -#, fuzzy, gcc-internal-format -#| msgid "pass %s does not support cloning" +#, gcc-internal-format msgid "at-calls % does not support call to %qD" -msgstr "pass %s does not support cloning" +msgstr "at-calls % does not support call to %qD" #: ipa-strub.cc:654 #, gcc-internal-format msgid "%qD is not eligible for % on the target system" -msgstr "" +msgstr "%qD ist für % auf dem Zielsystem nicht geeignet" #: ipa-strub.cc:658 -#, fuzzy, gcc-internal-format -#| msgid "unsupported constant address:" +#, gcc-internal-format msgid "unsupported % call on the target system" -msgstr "nicht unterstützte konstante Adresse:" +msgstr "nicht unterstützter %-Aufruf auf dem Zielsystem" #: ipa-strub.cc:684 #, gcc-internal-format msgid "%qD is not eligible for % because %<-fsplit-stack%> is enabled" -msgstr "" +msgstr "%qD ist nicht für % geeignet, da %<-fsplit-stack%> eingeschaltet ist" #: ipa-strub.cc:697 #, gcc-internal-format msgid "%qD is not eligible for % because of attribute %" -msgstr "" +msgstr "%qD ist für % nicht geeignet wegen des Attributs %" #: ipa-strub.cc:712 #, gcc-internal-format msgid "%qD is not eligible for % because of attribute %" -msgstr "" +msgstr "%qD ist für % nicht geeignet wegen des Attributs %" #: ipa-strub.cc:846 #, gcc-internal-format msgid "%qD is not eligible for internal % because of attribute %" -msgstr "" +msgstr "%qD ist nicht für das interne % geeignet wegen des Attributs %" #: ipa-strub.cc:870 #, gcc-internal-format msgid "%qD is not eligible for internal % because it calls %qD" -msgstr "" +msgstr "%qD ist nicht für das interne % geeignet, da sie %qD aufruft" #: ipa-strub.cc:884 #, gcc-internal-format msgid "%qD is not eligible for internal % because it contains a non-local goto target" -msgstr "" +msgstr "%qD ist nicht für das interne % geeignet, da sie ein nicht-lokales Sprungziel enthält" #: ipa-strub.cc:897 #, gcc-internal-format msgid "%qD is not eligible for internal % because the address of a local label escapes" -msgstr "" +msgstr "%qD ist nicht für das interne % geeignet, da die Adresse eines lokalen Labels entwischt" #: ipa-strub.cc:936 -#, fuzzy, gcc-internal-format -#| msgid "%s does not support force_nonfallthru" +#, gcc-internal-format msgid "internal % does not support forced labels" -msgstr "Interner Fehler: %s does not support force_nonfallthru" +msgstr "internes % unterstützt keine erzwungenen Labels" #: ipa-strub.cc:950 -#, fuzzy, gcc-internal-format -#| msgid "too many arguments for format" +#, gcc-internal-format msgid "%qD has too many arguments for internal %" -msgstr "zu viele Argumente für Format" +msgstr "%qD hat zu viele Argumente für internes %" #: ipa-strub.cc:1227 #, gcc-internal-format msgid "%qD requires %, but no viable % mode was found" -msgstr "" +msgstr "%qD erfordert %, aber es wurde kein geeigneter %-Modus gefunden" #: ipa-strub.cc:1323 #, gcc-internal-format msgid "% mode %qE selected for %qD, when %qE was requested" -msgstr "" +msgstr "%-Modus %qE ausgewählt für %qD, es wurde jedoch %qE angefordert" #: ipa-strub.cc:1332 #, gcc-internal-format msgid "the incompatible selection was determined by ultimate alias target %qD" -msgstr "" +msgstr "die unvereinbare Auswahl wurde durch das ultimative Alias-Ziel %qD bestimmt" #: ipa-strub.cc:1679 #, gcc-internal-format msgid "indirect non-% call in % context %qD" -msgstr "" +msgstr "indirekter Nicht-%-Aufruf im %-Kontext %qD" #: ipa-strub.cc:1698 #, gcc-internal-format msgid "calling % % %qD in non-% context %qD" -msgstr "" +msgstr "Aufruf von % % %qD in Nicht-%-Kontext %qD" #: ipa-strub.cc:1708 #, gcc-internal-format msgid "calling non-% %qD in % context %qD" -msgstr "" +msgstr "Aufruf des Nicht-%-Ausdrucks %qD im %-Kontext %qD" #: ipa-strub.cc:1712 #, gcc-internal-format msgid "calling %qD using non-% type %qT in % context %qD" -msgstr "" +msgstr "Aufruf von %qD mit Nicht-%-Typ %qT in %-Kontext %qD" #: ipa-strub.cc:2834 -#, fuzzy, gcc-internal-format -#| msgid "failed to load pendings for %<%E%s%E%>" +#, gcc-internal-format msgid "failed to split %qD for %" -msgstr "Fehler beim Laden der ausstehenden Einheiten für %<%E%s%E%>" +msgstr "%qD für % konnte nicht aufgeteilt werden" #: ira.cc:2441 ira.cc:2463 #, gcc-internal-format @@ -28716,10 +28567,9 @@ msgid "maximum number of generated reload insns per insn achieved (%d)" msgstr "Höchstzahl der erzeugten Neuladebefehle pro Befehl ist erreicht (%d)" #: lra.cc:546 -#, fuzzy, gcc-internal-format -#| msgid "% operand has impossible constraints" +#, gcc-internal-format msgid "% operand has impossible constraints or there are not enough registers" -msgstr "%-Operand hat unmögliche Nebenbedingungen" +msgstr "%-Operand hat unmögliche Einschränkungen, oder es gibt nicht genug Register" #: lto-cgraph.cc:1171 #, gcc-internal-format @@ -29070,10 +28920,9 @@ msgid "invalid OpenMP non-rectangular loop step; %<(%E - %E) * %E%> is not a mul msgstr "ungültiger nicht-rechteckiger OpenMP-Schleifenschritt; %<(%E - %E) * %E%> ist kein Vielfaches von Schleife %d Schritt %qE" #: omp-general.cc:1283 -#, fuzzy, gcc-internal-format -#| msgid "array size expression is not supported yet" +#, gcc-internal-format msgid "% selector set is not supported yet" -msgstr "Ausdruck für Arraygröße wird noch nicht unterstützt" +msgstr "%-Selektormenge wird noch nicht unterstützt" #: omp-general.cc:1288 #, gcc-internal-format @@ -29396,10 +29245,9 @@ msgid "OpenMP runtime API call %qD in a region with % clause" msgstr "Aufruf der OpenMP-Laufzeit-API %qD in einer Region mit %-Klausel" #: omp-low.cc:9791 -#, fuzzy, gcc-internal-format -#| msgid "ignoring sink clause with offset that is not a multiple of the loop step" +#, gcc-internal-format msgid "ignoring % clause with offset that is not a multiple of the loop step" -msgstr "»sink«-Klausel wird ignoriert, da der Offset kein Vielfaches der Schrittweite ist" +msgstr "%-Klausel wird ignoriert, da der Offset kein Vielfaches der Schrittweite ist" #: omp-low.cc:9814 #, gcc-internal-format @@ -29760,12 +29608,12 @@ msgstr "Abschnittsanker müssen ausgeschaltet sein, wenn Toplevel-Neuordnung aus #: opts.cc:1105 #, gcc-internal-format msgid "%<-ftrivial-auto-var-init=zero%> is not enabled by %<-fhardened%> because it was specified on the command line" -msgstr "" +msgstr "%<-ftrivial-auto-var-init=zero%> wird von %<-fhardened%> nicht eingeschaltet, da es in der Befehlszeile angegeben wurde" #: opts.cc:1155 #, gcc-internal-format msgid "%<-fstack-protector-strong%> is not enabled by %<-fhardened%> because it was specified on the command line" -msgstr "" +msgstr "%<-fstack-protector-strong%> wird von %<-fhardened%> nicht eingeschaltet, da es in der Befehlszeile angegeben wurde" #: opts.cc:1200 #, gcc-internal-format @@ -30949,16 +30797,14 @@ msgid "global destructors not supported on this target" msgstr "globale Destruktoren werden für dieses Ziel nicht unterstützt" #: targhooks.cc:1802 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute is not supported on this machine" -msgstr "Ziel-Attribut wird auf dieser Maschine nicht unterstützt" +msgstr "%-Attribut wird auf dieser Maschine nicht unterstützt" #: targhooks.cc:1814 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute is not supported on this machine" -msgstr "Ziel-Attribut wird auf dieser Maschine nicht unterstützt" +msgstr "%-Attribut wird auf dieser Maschine nicht unterstützt" #: targhooks.cc:1828 #, gcc-internal-format @@ -31106,10 +30952,9 @@ msgid "%<-fassociative-math%> disabled; other options take precedence" msgstr "%<-fassociative-math%> abgeschaltet; andere Optionen haben Vorrang" #: toplev.cc:1576 -#, fuzzy, gcc-internal-format -#| msgid "%<-fdata-sections%> not supported for this target" +#, gcc-internal-format msgid "%<-fhardened%> not supported for this target" -msgstr "%<-fdata-sections%> wird für dieses Ziel nicht unterstützt" +msgstr "%<-fhardened%> wird für dieses Ziel nicht unterstützt" #: toplev.cc:1585 #, gcc-internal-format @@ -31119,7 +30964,7 @@ msgstr "%<-fstack-clash-protection%> wird auf Architekturen, deren Stapel von kl #: toplev.cc:1598 #, gcc-internal-format msgid "%<-fstack-clash-protection%> is not enabled by %<-fhardened%> because %<-fstack-check%> was specified on the command line" -msgstr "" +msgstr "%<-fstack-clash-protection%> wird von %<-fhardened%> nicht eingeschaltet, weil %<-fstack-check%> in der Befehlszeile angegeben wurde" #: toplev.cc:1608 #, gcc-internal-format @@ -31377,10 +31222,9 @@ msgid "%qs in gimple IL" msgstr "%qs in GIMPLE-IL" #: tree-cfg.cc:3357 -#, fuzzy, gcc-internal-format -#| msgid "used struct type value where scalar is required" +#, gcc-internal-format msgid "%qs as base where non-register is required" -msgstr "Wert eines struct-Typs anstelle des geforderten Skalars verwendet" +msgstr "%qs als Basis, es ist jedoch ein Nicht-Register erforderlich" #: tree-cfg.cc:3372 #, gcc-internal-format @@ -31656,10 +31500,9 @@ msgid "invalid operand in %qs" msgstr "ungültiger Operand in %qs" #: tree-cfg.cc:4676 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument in option %qs" +#, gcc-internal-format msgid "invalid %qs size argument in load" -msgstr "ungültiges Argument in Option %qs" +msgstr "ungültiges %qs-Größenargument beim Laden" #: tree-cfg.cc:4695 tree-cfg.cc:4721 #, gcc-internal-format @@ -31891,40 +31734,35 @@ msgstr "ENTRY_BLOCK has IL associated with it" msgid "EXIT_BLOCK has IL associated with it" msgstr "EXIT_BLOCK has IL associated with it" -# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79878 #: tree-cfg.cc:5701 #, gcc-internal-format, gfc-internal-format msgid "fallthru to exit from bb %d" -msgstr "fallthru to exit from bb %d" +msgstr "Interner Fehler: fallthru to exit from bb %d" #: tree-cfg.cc:5707 -#, fuzzy, gcc-internal-format -#| msgid "extra brace group at end of initializer" +#, gcc-internal-format msgid "entry block count not initialized" -msgstr "zusätzliche geschweifte Klammern am Ende der Initialisierung" +msgstr "Interner Fehler: entry block count not initialized" #: tree-cfg.cc:5713 -#, fuzzy, gcc-internal-format -#| msgid "extra brace group at end of initializer" +#, gcc-internal-format msgid "exit block count not initialized" -msgstr "zusätzliche geschweifte Klammern am Ende der Initialisierung" +msgstr "Interner Fehler: exit block count not initialized" #: tree-cfg.cc:5720 #, gcc-internal-format msgid "probability of edge from entry block not initialized" -msgstr "" +msgstr "Interner Fehler: probability of edge from entry block not initialized" #: tree-cfg.cc:5735 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qE is not initialized" +#, gcc-internal-format, gfc-internal-format msgid "count of bb %d not initialized" -msgstr "%qE ist nicht initialisiert" +msgstr "Interner Fehler: count of bb %d not initialized" #: tree-cfg.cc:5741 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Uninitialized probability of edge %i->%i" +#, gcc-internal-format, gfc-internal-format msgid "probability of edge %d->%d not initialized" -msgstr "Interner Fehler: Uninitialized probability of edge %i->%i" +msgstr "Interner Fehler: probability of edge %d->%d not initialized" #: tree-cfg.cc:5761 #, gcc-internal-format @@ -33252,10 +33090,9 @@ msgid "initializer for floating value is not a floating constant" msgstr "Initialisierung für Gleitkommawert ist keine Gleitkommakonstante" #: varasm.cc:5342 -#, fuzzy, gcc-internal-format -#| msgid "initializer for floating value is not a floating constant" +#, gcc-internal-format msgid "initializer for %<_BitInt(%d)%> value is not an integer constant" -msgstr "Initialisierung für Gleitkommawert ist keine Gleitkommakonstante" +msgstr "Initialisierer für %<_BitInt(%d)%>-Wert ist keine Ganzzahlkonstante" #: varasm.cc:5725 #, gcc-internal-format @@ -33449,28 +33286,24 @@ msgid "%qE attribute with unsupported boolean precision" msgstr "Attribut %qE mit nicht unterstützter Boolean-Genauigkeit" #: c-family/c-attribs.cc:1059 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only supported on boolean types" +#, gcc-internal-format msgid "%qE attribute only supported in C" -msgstr "Attribut %qE wird nur für Boolean-Typen unterstützt" +msgstr "Attribut %qE wird nur in C unterstützt" #: c-family/c-attribs.cc:1066 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only supported on boolean types" +#, gcc-internal-format msgid "%qE attribute only supported on integral types" -msgstr "Attribut %qE wird nur für Boolean-Typen unterstützt" +msgstr "Attribut %qE wird nur für Ganzzahltypen unterstützt" #: c-family/c-attribs.cc:1087 c-family/c-attribs.cc:1103 -#, fuzzy, gcc-internal-format -#| msgid "overflow in conversion from %qT to %qT changes value from %qE to %qE" +#, gcc-internal-format msgid "overflows in conversion from %qT to %qT changes value from %qE to %qE" msgstr "Überlauf in Umwandlung von %qT nach %qT ändert den Wert von %qE in %qE" #: c-family/c-attribs.cc:1112 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute argument value %qE refers to parameter type %qT" +#, gcc-internal-format msgid "%qE attribute requires different values for % and % for type %qT" -msgstr "Attributargument %qE hat den Wert %qE, der auf den Parametertyp %qT verweist" +msgstr "Attribut %qE erfordert unterschiedliche Werte für % und % für den Typ %qT" #: c-family/c-attribs.cc:1152 #, gcc-internal-format @@ -33489,28 +33322,24 @@ msgid "%qE argument not a string" msgstr "Argument %qE ist keine Zeichenkette" #: c-family/c-attribs.cc:1555 ada/gcc-interface/utils.cc:6793 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored on objects of type %qT" +#, gcc-internal-format msgid "%qE attribute ignored because of argument %qE" -msgstr "Attribut %qE wird für Objekte vom Typ %qT ignoriert" +msgstr "Attribut %qE wird wegen des Arguments %qE ignoriert" #: c-family/c-attribs.cc:1576 ada/gcc-interface/utils.cc:6814 -#, fuzzy, gcc-internal-format -#| msgid "ignoring attribute %qE because it conflicts with attribute %qs" +#, gcc-internal-format msgid "ignoring attribute %qE because of excess arguments starting at %qE" -msgstr "Attribut %qE steht mit Attribut %qs in Konflikt; wird ignoriert" +msgstr "Attribut %qE wird wegen überzähliger Argumente, die mit %qE beginnen, ignoriert" #: c-family/c-attribs.cc:1590 ada/gcc-interface/utils.cc:6828 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute does not apply to types" +#, gcc-internal-format msgid "attribute %qE does not apply to elements of non-scalar type %qT" -msgstr "Attribut %qE kann nicht auf Typen angewandt werden" +msgstr "das Attribut %qE gilt nicht für Elemente des nicht skalaren Typs %qT" #: c-family/c-attribs.cc:1595 ada/gcc-interface/utils.cc:6833 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute does not apply to types" +#, gcc-internal-format msgid "attribute %qE does not apply to fields of aggregate type %qT" -msgstr "Attribut %qE kann nicht auf Typen angewandt werden" +msgstr "Attribut %qE gilt nicht für Felder des Aggregattyps %qT" #: c-family/c-attribs.cc:1661 #, gcc-internal-format @@ -34743,16 +34572,14 @@ msgid "argument %u in call to function %qE has pointer to %qs type (%qT)" msgstr "Argument %u in Aufruf von %qE darf kein Zeiger auf %qs sein (%qT)" #: c-family/c-common.cc:6535 c-family/c-common.cc:6620 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument %u in call to function %qE has enumerated type" -msgstr "Argument 3 in Aufruf von %qE darf kein enum-Typ sein" +msgstr "Argument %u in Aufruf von %qE hat Aufzählungstyp" #: c-family/c-common.cc:6541 c-family/c-common.cc:6626 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has boolean type" +#, gcc-internal-format msgid "argument %u in call to function %qE has boolean type" -msgstr "Argument 3 in Aufruf von %qE darf kein boolescher Typ sein" +msgstr "Argument %u in Aufruf von %qE ist ein boolescher Typ sein" #: c-family/c-common.cc:6554 #, gcc-internal-format @@ -34765,22 +34592,19 @@ msgid "argument %u in call to function %qE points to incomplete type" msgstr "Argument %u in Aufruf von %qE muss auf einen vollständigen Typ zeigen" #: c-family/c-common.cc:6604 -#, fuzzy, gcc-internal-format -#| msgid "argument %u in call to function %qE does not have pointer type" +#, gcc-internal-format msgid "argument %u in call to function %qE does not have % type" -msgstr "Argument %u in Aufruf von %qE muss ein Zeigertyp sein" +msgstr "Argument %u in Aufruf von %qE hat nicht den Typ %" #: c-family/c-common.cc:6635 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument 1 in call to function %qE has unsigned type" -msgstr "Argument 3 in Aufruf von %qE darf kein enum-Typ sein" +msgstr "Argument 1 in Aufruf von %qE hat einen vorzeichenlosen Typen" #: c-family/c-common.cc:6642 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument 1 in call to function %qE has signed type" -msgstr "Argument 3 in Aufruf von %qE darf kein enum-Typ sein" +msgstr "Argument 1 in Aufruf von %qE hat einen vorzeichenbehafteten Typen" #: c-family/c-common.cc:6905 rust/backend/rust-tree.cc:3601 #, gcc-internal-format @@ -35581,22 +35405,19 @@ msgid "stray %<\\%o%> in program" msgstr "verirrtes %<\\%o%> im Programm" #: c-family/c-lex.cc:1014 -#, fuzzy, gcc-internal-format -#| msgid "integer constant is too large for % type" +#, gcc-internal-format msgid "integer constant is too large for % type" -msgstr "Ganzzahlkonstante ist zu groß für %-Typ" +msgstr "Ganzzahlkonstante ist zu groß für %-Typ" #: c-family/c-lex.cc:1017 -#, fuzzy, gcc-internal-format -#| msgid "integer constant is too large for % type" +#, gcc-internal-format msgid "integer constant is too large for %<_BitInt(%d)%> type" -msgstr "Ganzzahlkonstante ist zu groß für %-Typ" +msgstr "Ganzzahlkonstante ist zu groß für %<_BitInt(%d)%>-Typ" #: c-family/c-lex.cc:1025 c/c-decl.cc:12651 -#, fuzzy, gcc-internal-format -#| msgid "%<__int%d%> is not supported on this target" +#, gcc-internal-format msgid "%<_BitInt(%d)%> is not supported on this target" -msgstr "%<__int%d%> wird für dieses Ziel nicht unterstützt" +msgstr "%<_BitInt(%d)%> wird für dieses Ziel nicht unterstützt" #: c-family/c-lex.cc:1077 #, gcc-internal-format @@ -35634,10 +35455,9 @@ msgid "non-standard suffix on floating constant" msgstr "Nicht-Standard-Suffix an Gleitkommakonstante" #: c-family/c-lex.cc:1223 c-family/c-lex.cc:1227 c-family/c-lex.cc:1232 -#, fuzzy, gcc-internal-format -#| msgid "non-standard suffix on floating constant" +#, gcc-internal-format msgid "non-standard suffix on floating constant before C23" -msgstr "Nicht-Standard-Suffix an Gleitkommakonstante" +msgstr "Nicht-Standard-Suffix an Gleitkommakonstante vor C23" #: c-family/c-lex.cc:1239 #, gcc-internal-format @@ -35815,10 +35635,11 @@ msgstr "die selben Schleifen-Iterationsvariablen %qD werden in mehreren verknüp msgid "two different outer iteration variables %qD and %qD used in a single loop" msgstr "zwei unterschiedliche äußere Iterationsvariablen %qD und %qD werden in einer einzigen Schleife verwendet" +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114364 #: c-family/c-omp.cc:1810 #, gcc-internal-format msgid "variable %qD used %s is bound in intervening code" -msgstr "" +msgstr "Variable %qD wird %s verwendet, ist aber im dazwischenliegenden Code gebunden" #: c-family/c-omp.cc:2409 #, gcc-internal-format @@ -35879,7 +35700,7 @@ msgstr "veraltete Option %<-I-%> verwendet, bitte stattdessen %<-iquote%> verwen #: c-family/c-opts.cc:373 #, gcc-internal-format msgid "%<-fdeps-format=%> unknown format %<%s%>" -msgstr "" +msgstr "%<-fdeps-format=%> unbekanntes Format %<%s%>" #: c-family/c-opts.cc:455 #, gcc-internal-format @@ -35954,7 +35775,7 @@ msgstr "externe Funktionen zur TLS-Initialisierung werden auf diesem Ziel nicht #: c-family/c-opts.cc:1149 #, gcc-internal-format msgid "%<-fconcepts-ts%> is deprecated and will be removed in GCC 15; please convert your code to C++20 concepts" -msgstr "" +msgstr "%<-fconcepts-ts%> ist veraltet und wird in GCC 15 entfernt; bitte konvertieren Sie Ihren Code zu C++20-Konzepten" #: c-family/c-opts.cc:1158 #, gcc-internal-format @@ -35979,7 +35800,7 @@ msgstr "Abhängigkeitsdatei »%s« kann nicht geöffnet werden: %m" #: c-family/c-opts.cc:1381 #, gcc-internal-format msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m" -msgstr "" +msgstr "%<-MF%> und %<-fdeps-file=%> können sich die Ausgabedatei %<%s%> nicht teilen: %m" #: c-family/c-opts.cc:1391 #, gcc-internal-format @@ -36014,17 +35835,17 @@ msgstr "%<-fdirectives-only%> ist mit %<-traditional%> unverträglich" #: c-family/c-opts.cc:1634 #, gcc-internal-format msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off" -msgstr "" +msgstr "%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da die Optimierungen ausgeschaltet sind" #: c-family/c-opts.cc:1638 #, gcc-internal-format msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>" -msgstr "" +msgstr "%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde" #: c-family/c-opts.cc:1644 #, gcc-internal-format msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>" -msgstr "" +msgstr "%<_GLIBCXX_ASSERTIONS%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde" #: c-family/c-opts.cc:1768 #, gcc-internal-format @@ -36317,16 +36138,14 @@ msgid "%<#pragma GCC optimize%> string is badly formed" msgstr "%<#pragma GCC optimize%> Zeichenkette hat falsches Format" #: c-family/c-pragma.cc:1211 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of %<#pragma push_options%>" +#, gcc-internal-format msgid "junk at end of %<#pragma GCC push_options%>" -msgstr "Ausschuss am Ende von %<#pragma push_options%>" +msgstr "Ausschuss am Ende von %<#pragma GCC push_options%>" #: c-family/c-pragma.cc:1248 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of %<#pragma pop_options%>" +#, gcc-internal-format msgid "junk at end of %<#pragma GCC pop_options%>" -msgstr "Ausschuss am Ende von %<#pragma pop_options%>" +msgstr "Ausschuss am Ende von %<#pragma GCC pop_options%>" #: c-family/c-pragma.cc:1255 #, gcc-internal-format @@ -37120,21 +36939,19 @@ msgid "% used with length equal to number of elements without multiplic msgstr "im Aufruf von % ist die Länge gleich der Anzahl der Elemente angegeben, ohne sie mit der Elementgröße zu multiplizieren" #: c-family/c-warn.cc:2291 -#, fuzzy, gcc-internal-format -#| msgid "interrupt service routine can only have a pointer argument and an optional integer argument" +#, gcc-internal-format msgid "%qD sizes specified with % in the earlier argument and not in the later argument" -msgstr "Interrupt-Service-Routine darf nur ein Zeiger- und ein optionales Ganzzahl-Argument haben" +msgstr "die Größe von %qD ist mit % im früheren Argument angegeben, sollte aber im späteren stehen" #: c-family/c-warn.cc:2293 #, gcc-internal-format msgid "earlier argument should specify number of elements, later size of each element" -msgstr "" +msgstr "das frühere Argument sollte die Anzahl der Elemente angeben, das spätere Argument die Größe des einzelnen Elements" #: c-family/c-warn.cc:2332 -#, fuzzy, gcc-internal-format -#| msgid "floating point overflow in expression %qE of type %qT results in %qE" +#, gcc-internal-format msgid "allocation of insufficient size %qE for type %qT with size %qE" -msgstr "Gleitkommaüberlauf in Ausdruck %qE des Typs %qT ergibt %qE" +msgstr "Speicherallokation von ungenügender Größe %qE für Typ %qT mit Größe %qE" #: c-family/c-warn.cc:2409 #, gcc-internal-format @@ -37409,10 +37226,9 @@ msgid "too many input files" msgstr "zu viele Eingabedateien" #: c-family/known-headers.cc:322 -#, fuzzy, gcc-internal-format -#| msgid "%qs is defined in header %qs; did you forget to %<#include %s%>?" +#, gcc-internal-format msgid "%qs is defined in header %qs; this is probably fixable by adding %<#include %s%>" -msgstr "%qs ist im Header %qs definiert; haben Sie vergessen, %<#include %s%> zu schreiben?" +msgstr "%qs ist im Header %qs definiert; das ist wahrscheinlich behebbar, indem Sie %<#include %s%> hinzufügen" #: common/config/aarch64/aarch64-common.cc:415 config/aarch64/aarch64.cc:18466 #, gcc-internal-format @@ -37612,29 +37428,26 @@ msgstr "%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99291 #: common/config/riscv/riscv-common.cc:676 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs is unsupported standard single letter extension" -msgstr "%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor" +msgstr "%<-march=%s%>: Erweiterung %qs ist eine nicht unterstützte Einbuchstaben-Erweiterung" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99291 #: common/config/riscv/riscv-common.cc:684 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 'z' but is unsupported standard extension" -msgstr "%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor" +msgstr "%<-march=%s%>: die Erweiterung %qs beginnt mit %, ist aber eine nicht unterstützte Standarderweiterung" #: common/config/riscv/riscv-common.cc:692 #, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 's' but is unsupported standard supervisor extension" -msgstr "" +msgstr "%<-march=%s%>: Erweiterung %qs beginnt mit %, ist aber eine nicht unterstützte Standard-Supervisor-Erweiterung" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99291 #: common/config/riscv/riscv-common.cc:700 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 'x' but is unsupported non-standard extension" -msgstr "%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor" +msgstr "%<-march=%s%>: Erweiterung %qs beginnt mit %, ist jedoch eine nicht unterstützte Nicht-Standard-Erweiterung" #: common/config/riscv/riscv-common.cc:947 #, gcc-internal-format @@ -37667,17 +37480,15 @@ msgid "%<-march=%s%>: first ISA subset must be %, % or %" msgstr "%<-march=%s%>: erste ISA-Teilmenge muss %, % oder % sein" #: common/config/riscv/riscv-common.cc:1089 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: expect number after %<%dp%>" +#, gcc-internal-format msgid "%<-march=%s%>: Not single-letter extension. %<%c%>" -msgstr "%<-march=%s%>: nach %<%dp%> muss eine Zahl stehen" +msgstr "%<-march=%s%>: Die Erweiterung %<%c%> ist keine einbuchstabige Erweiterung." # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99291 #: common/config/riscv/riscv-common.cc:1220 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: zcf extension supports in rv32 only" -msgstr "%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor" +msgstr "%<-march=%s%>: Erweiterung zcf wird nur in rv32 unterstützt" #: common/config/riscv/riscv-common.cc:1225 #, gcc-internal-format @@ -37686,28 +37497,24 @@ msgstr "%<-march=%s%>: z*inx ist mit Gleitkommaerweiterungen unverträglich" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99291 #: common/config/riscv/riscv-common.cc:1231 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: h extension requires i extension" -msgstr "%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor" +msgstr "%<-march=%s%>: Erweiterung h erfordert Erweiterung i" #: common/config/riscv/riscv-common.cc:1236 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcpu=%s%> conflicts with %<-march=%s%>" +#, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmt" -msgstr "%<-mcpu=%s%> steht in Konflikt mit %<-march=%s%>" +msgstr "%<-march=%s%>: zcd steht im Konflikt mit zcmt" #: common/config/riscv/riscv-common.cc:1238 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcpu=%s%> conflicts with %<-march=%s%>" +#, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmp" -msgstr "%<-mcpu=%s%> steht in Konflikt mit %<-march=%s%>" +msgstr "%<-march=%s%>: zcd steht im Konflikt mit zcmp" #: common/config/riscv/riscv-common.cc:1247 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: z*inx conflicts with floating-point extensions" +#, gcc-internal-format msgid "%<-march=%s%>: xtheadvector conflicts with vector extension or its sub-extensions" -msgstr "%<-march=%s%>: z*inx ist mit Gleitkommaerweiterungen unverträglich" +msgstr "%<-march=%s%>: xtheadvector steht im Konflikt mit der Vektorerweiterung oder ihren Untererweiterungen" #: common/config/riscv/riscv-common.cc:1344 #, gcc-internal-format @@ -37720,10 +37527,9 @@ msgid "%<-march=%s%>: %s must separate with %<_%>" msgstr "%<-march=%s%>: %s müssen durch %<_%> getrennt sein" #: common/config/riscv/riscv-common.cc:1419 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: name of %s must be more than 1 letter" +#, gcc-internal-format msgid "%<-march=%s%>: i, e or g must be the first extension" -msgstr "%<-march=%s%>: Name von %s muss mehr als 1 Buchstabe sein" +msgstr "%<-march=%s%>: i, e oder g muss die erste Erweiterung sein" #: common/config/riscv/riscv-common.cc:1758 #, gcc-internal-format @@ -38054,10 +37860,9 @@ msgid "PIC is only supported for RTPs" msgstr "PIC wird nur für RTPs unterstützt" #: config/aarch64/aarch64-builtins.cc:2122 -#, fuzzy, gcc-internal-format -#| msgid "argument to %qs must be a 2-bit unsigned literal" +#, gcc-internal-format msgid "first argument to %qD must be a string literal" -msgstr "Argument für %qs muss ein vorzeichenloses 2-Bit-Symbol sein" +msgstr "erstes Argument für %qD muss ein Zeichenkettenliteral sein" #: config/aarch64/aarch64-builtins.cc:2253 #: config/aarch64/aarch64-builtins.cc:2487 config/arm/arm-builtins.cc:3146 @@ -38083,31 +37888,27 @@ msgstr "Argument muss eine direkt angegebene 16-Bit-Konstante sein" #: config/aarch64/aarch64-builtins.cc:2700 #, gcc-internal-format msgid "128-bit system register support requires the % extension" -msgstr "" +msgstr "die Unterstützung für 128-Bit-Systemregister erfordert die Erweiterung %" #: config/aarch64/aarch64-builtins.cc:2715 -#, fuzzy, gcc-internal-format -#| msgid "invalid register name for %q+D" +#, gcc-internal-format msgid "invalid system register name provided" -msgstr "ungültiger Registername für %q+D" +msgstr "ungültiger Systemregistername angegeben" #: config/aarch64/aarch64-builtins.cc:2729 -#, fuzzy, gcc-internal-format -#| msgid "invalid register name for %q+D" +#, gcc-internal-format msgid "invalid system register name %qs" -msgstr "ungültiger Registername für %q+D" +msgstr "ungültiger Systemregistername %qs" #: config/aarch64/aarch64-builtins.cc:2809 -#, fuzzy, gcc-internal-format -#| msgid "for statement expected" +#, gcc-internal-format msgid "Constant-type argument expected" -msgstr "für Anweisung erwartet" +msgstr "Argument muss eine Ganzzahlkonstante sein" #: config/aarch64/aarch64-builtins.cc:2815 -#, fuzzy, gcc-internal-format -#| msgid "argument %d must be a constant immediate in range [0,15]" +#, gcc-internal-format msgid "argument %d must be a constant immediate in range [%wd,%wd]" -msgstr "Argument %d muss eine direkt angegebene Konstante im Bereich [0, 15] sein" +msgstr "Argument %d muss eine direkt angegebene Konstante im Bereich [%wd, %wd] sein" #: config/aarch64/aarch64-builtins.cc:2894 #, gcc-internal-format @@ -38160,17 +37961,17 @@ msgstr "ACLE-Funktion %qD ist nicht kompatibel mit der Verwendung von %qs" #: config/aarch64/aarch64-sve-builtins.cc:1112 #, gcc-internal-format msgid "ACLE function %qD cannot be called when SME streaming mode is enabled" -msgstr "" +msgstr "Die ACLE-Funktion %qD kann nicht aufgerufen werden, wenn der SME-Streaming-Modus aktiviert ist" #: config/aarch64/aarch64-sve-builtins.cc:1119 #, gcc-internal-format msgid "ACLE function %qD can only be called when SME streaming mode is enabled" -msgstr "" +msgstr "Die ACLE-Funktion %qD kann nur aufgerufen werden, wenn der SME-Streaming-Modus aktiviert ist" #: config/aarch64/aarch64-sve-builtins.cc:1126 #, gcc-internal-format msgid "ACLE function %qD can only be called from a function that has %qs state" -msgstr "" +msgstr "Die ACLE-Funktion %qD kann nur von einer Funktion mit dem Status %qs aufgerufen werden" #: config/aarch64/aarch64-sve-builtins.cc:1154 #: config/arm/arm-mve-builtins.cc:571 @@ -38180,10 +37981,9 @@ msgid "argument %d of %qE must be an integer constant expression" msgstr "Argument %d von %qE muss ein konstanter ganzzahliger Ausdruck sein" #: config/aarch64/aarch64-sve-builtins.cc:1167 -#, fuzzy, gcc-internal-format -#| msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd" +#, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects the value %wd" -msgstr "Übergabe von %wd an Argument %d von %qE, das jedoch entweder %wd oder %wd erwartet" +msgstr "Übergabe von %wd an Argument %d von %qE, das jedoch den Wert %wd erwartet" #: config/aarch64/aarch64-sve-builtins.cc:1170 #: config/arm/arm-mve-builtins.cc:583 @@ -38224,21 +38024,19 @@ msgstr[0] "%qT%d%qE%d" msgstr[1] "der einzelne Vektor %qT wird an Argument %d von %qE übergeben, das erwartet jedoch ein Tupel von %d Vektoren" #: config/aarch64/aarch64-sve-builtins.cc:1767 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %d" +#, gcc-internal-format msgid "passing tuple %qT to argument %d of %qE after passing single vector %qT to argument %d" -msgstr "Übergabe von %qT anstelle des erwarteten %qT an Argument %d von %qE, nachdem %qT an Argument %d übergeben wurde" +msgstr "Übergabe des Tupels %qT an Argument %d von %qE, nachdem der einzelne Vektor %qT an Argument %d übergeben wurde" #: config/aarch64/aarch64-sve-builtins.cc:1772 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %d" +#, gcc-internal-format msgid "passing single vector %qT to argument %d of %qE after passing tuple %qT to argument %d" -msgstr "Übergabe von %qT anstelle des erwarteten %qT an Argument %d von %qE, nachdem %qT an Argument %d übergeben wurde" +msgstr "Übergabe des einzelnen Vektors %qT an Argument %d von %qE, nachdem das Tupel %qT an Argument %d übergeben wurde" #: config/aarch64/aarch64-sve-builtins.cc:1777 #, gcc-internal-format msgid "passing mismatched tuple types %qT and %qT to arguments %d and %d of %qE" -msgstr "" +msgstr "Übergabe nicht übereinstimmender Tupeltypen %qT und %qT an die Argumente %d und %d von %qE" #: config/aarch64/aarch64-sve-builtins.cc:1788 #: config/arm/arm-mve-builtins.cc:1104 @@ -38247,14 +38045,12 @@ msgid "%qE has no form that takes %qT arguments" msgstr "%qE hat keine Form, die %qT Argumente annimmt" #: config/aarch64/aarch64-sve-builtins.cc:1849 -#, fuzzy, gcc-internal-format -#| msgid "%qE has no form that takes %qT arguments" +#, gcc-internal-format msgid "%qE has no form that takes %qT and %qT arguments" -msgstr "%qE hat keine Form, die %qT Argumente annimmt" +msgstr "%qE hat keine Form, die Argumente %qT und %qT annimmt" #: config/aarch64/aarch64-sve-builtins.cc:1911 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects %qs or %qs" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an %qs or %qs" msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch %qs oder %qs erwartet" @@ -38264,16 +38060,14 @@ msgid "passing %qT to argument %d of %qE, which expects a 32-bit or 64-bit integ msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Ganzzahltyp von 32 oder 64 Bits erwartet" #: config/aarch64/aarch64-sve-builtins.cc:1961 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit integers" +#, gcc-internal-format msgid "passing %qT and %qT to arguments %d and %d of %qE, which expects a pair of 64-bit integers" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen mit %d Bits erwartet" +msgstr "Übergabe von %qT und %qT an Argumente %d und %d von %qE, das jedoch ein Paar von 64-Bit-Ganzzahlen erwartet" #: config/aarch64/aarch64-sve-builtins.cc:1985 -#, fuzzy, gcc-internal-format -#| msgid "size mismatch in argument %d of %qE" +#, gcc-internal-format msgid "passing mismatched integer types %qT and %qT to arguments %d and %d of %qE" -msgstr "Unpassende Größe in Argument %d von %qE" +msgstr "Übergabe von nicht übereinstimmenden Ganzzahltypen %qT und %qT an die Argumente %d und %d von %qE" #: config/aarch64/aarch64-sve-builtins.cc:2006 #: config/arm/arm-mve-builtins.cc:1157 @@ -38297,16 +38091,14 @@ msgid "passing %qT to argument %d of %qE, which expects a pointer to 32-bit or 6 msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf Elemente erwartet, die 32 oder 64 Bit groß sind" #: config/aarch64/aarch64-sve-builtins.cc:2068 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuple" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an SVE type rather than a scalar type" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen einzelnen SVE-Vektor statt eines Tupels erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Typen statt eines skalaren Typen erwartet" #: config/aarch64/aarch64-sve-builtins.cc:2072 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE tuple type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an SVE type" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Tupeltyp erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Typen erwartet" #: config/aarch64/aarch64-sve-builtins.cc:2117 #, gcc-internal-format @@ -38314,10 +38106,9 @@ msgid "passing %qT to argument %d of %qE, which expects a vector of integers" msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen erwartet" #: config/aarch64/aarch64-sve-builtins.cc:2147 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE vector type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a 128 bit NEON vector type" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Vektortyp erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen 128-Bit-NEON-Vektortypen erwartet" #: config/aarch64/aarch64-sve-builtins.cc:2164 #: config/aarch64/aarch64-sve-builtins.cc:2462 @@ -38334,12 +38125,12 @@ msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von El #: config/aarch64/aarch64-sve-builtins.cc:2227 #, gcc-internal-format msgid "operations on multiple vectors must be predicated by %qs rather than %qs" -msgstr "" +msgstr "Operationen auf mehreren Vektoren müssen mit %qs und nicht mit %qs angegeben werden" #: config/aarch64/aarch64-sve-builtins.cc:2230 #, gcc-internal-format msgid "operations on single vectors must be predicated by %qs rather than %qs" -msgstr "" +msgstr "Operationen auf einzelnen Vektoren müssen mit %qs und nicht mit %qs angegeben werden" #: config/aarch64/aarch64-sve-builtins.cc:2246 #: config/arm/arm-mve-builtins.cc:1248 @@ -38362,10 +38153,9 @@ msgid "passing %qT to argument %d of %qE, but argument %d had type %qT" msgstr "Übergabe von %qT an Argument %d von %qE, aber Argument %d hatte den Typ %qT" #: config/aarch64/aarch64-sve-builtins.cc:2406 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but argument %d had type %qT" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but argument %d was a tuple of %qT" -msgstr "Übergabe von %qT an Argument %d von %qE, aber Argument %d hatte den Typ %qT" +msgstr "Übergabe von %qT an Argument %d von %qE, aber Argument %d war ein Tupel von %qT" #: config/aarch64/aarch64-sve-builtins.cc:2430 #: config/arm/arm-mve-builtins.cc:1384 @@ -38374,32 +38164,29 @@ msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit eleme msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Elementen erwartet, die %d Bit groß sind" #: config/aarch64/aarch64-sve-builtins.cc:2435 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit elements" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of %d-bit elements" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Elementen erwartet, die %d Bit groß sind" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von %d-Bit-Elementen erwartet" #: config/aarch64/aarch64-sve-builtins.cc:2448 #: config/arm/arm-mve-builtins.cc:1396 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a vector of signed integers" -msgstr "Übergabe vom %qT an Argument %d von %qE, das jedoch einen Vektor von vorzeichenbehafteten Ganzzahlen erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von vorzeichenbehafteten Ganzzahlen erwartet" #. Translation note: could also be written "expects a tuple of #. signed integer vectors". #: config/aarch64/aarch64-sve-builtins.cc:2454 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of signed integers" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of signed integers" -msgstr "Übergabe vom %qT an Argument %d von %qE, das jedoch einen Vektor von vorzeichenbehafteten Ganzzahlen erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch Vektoren von vorzeichenbehafteten Ganzzahlen erwartet" #. Translation note: could also be written "expects a tuple of #. unsigned integer vectors". #: config/aarch64/aarch64-sve-builtins.cc:2468 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of unsigned integers" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of unsigned integers" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Vektor vorzeichenloser Ganzzahlen erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch Vektoren von vorzeichenlosen Ganzzahlen erwartet" #: config/aarch64/aarch64-sve-builtins.cc:2488 #: config/arm/arm-mve-builtins.cc:1423 @@ -38426,10 +38213,9 @@ msgid "passing %qT to argument %d of %qE, which expects %qs" msgstr "Übergabe von %qT an das Argument %d von %qE, das jedoch %qs erwartet" #: config/aarch64/aarch64-sve-builtins.cc:2577 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a scalar pointer" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which does not accept scalars for this combination of arguments" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf einen skalaren Typen erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch keine Skalare dieser Kombination von Argumenten akzeptiert" #: config/aarch64/aarch64-sve-builtins.cc:2593 #: config/arm/arm-mve-builtins.cc:1556 @@ -38531,10 +38317,9 @@ msgid "passing %qT to argument %d of %qE, but its %qT form does not accept scala msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch in der %qT-Form keine Skalare akzeptiert" #: config/aarch64/aarch64-sve-builtins.cc:3127 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but its %qT form does not accept scalars" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but its %qT form does not accept single vectors" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch in der %qT-Form keine Skalare akzeptiert" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch in der %qT-Form keine einzelnen Vektoren akzeptiert" #: config/aarch64/aarch64-sve-builtins.cc:4621 #: config/aarch64/aarch64-sve-builtins.cc:4683 @@ -38545,10 +38330,9 @@ msgid "duplicate definition of %qs" msgstr "doppelte Definition von %qs" #: config/aarch64/aarch64-sve-builtins.cc:4675 -#, fuzzy, gcc-internal-format -#| msgid "%qD is defined with tls model %s" +#, gcc-internal-format msgid "%qs defined without first defining %qs" -msgstr "%qD ist mit TLS-Modell %s definiert" +msgstr "%qs ist definiert, ohne vorher %qs zu definieren" #: config/aarch64/aarch64-sve-builtins.cc:4834 #, gcc-internal-format @@ -38632,16 +38416,14 @@ msgid "capture by copy of SVE type %qT" msgstr "der SVE-Typ %qT kann nicht durch Kopieren gefangen werden" #: config/aarch64/aarch64.cc:635 -#, fuzzy, gcc-internal-format -#| msgid "third argument to function %qE must be a constant integer" +#, gcc-internal-format msgid "the arguments to %qE must be constant strings" -msgstr "Drittes Argument für Funktion %qE muss eine konstante Ganzzahl sein" +msgstr "die Argumente für %qE müssen konstante Zeichenfolgen sein" #: config/aarch64/aarch64.cc:643 -#, fuzzy, gcc-internal-format -#| msgid "unrecognized string escape" +#, gcc-internal-format msgid "unrecognized state string %qs" -msgstr "unbekanntes Escapezeichen in Zeichenkette" +msgstr "nicht erkannte Statuszeichenkette %qs" #: config/aarch64/aarch64.cc:727 #, gcc-internal-format @@ -38651,19 +38433,17 @@ msgstr "das Attribut %qE kann nicht auf einen SVE-Funktionstyp angewendet werden #: config/aarch64/aarch64.cc:754 #, gcc-internal-format msgid "cannot create a new %qs scope since %qs is shared with callers" -msgstr "" +msgstr "kann keinen neuen Gültigkeitsbereich %qs erstellen, da %qs mit Aufrufern geteilt wird" #: config/aarch64/aarch64.cc:770 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute applies only to functions" +#, gcc-internal-format msgid "%qE attribute applies only to function definitions" -msgstr "Attribut %qE kann nur auf Funktionen angewandt werden" +msgstr "Attribut %qE kann nur auf Funktionsdefinitionen angewandt werden" #: config/aarch64/aarch64.cc:816 -#, fuzzy, gcc-internal-format -#| msgid "inconsistent because %qs" +#, gcc-internal-format msgid "inconsistent attributes for state %qs" -msgstr "inkonsistent wegen %qs" +msgstr "inkonsistente Attribute für den Zustand %qs" #: config/aarch64/aarch64.cc:1305 #, gcc-internal-format @@ -38715,10 +38495,9 @@ msgstr "die Parameterübergabe für das Argument vom Typ %qT hat sich in GCC 13. #: config/aarch64/aarch64.cc:6966 config/aarch64/aarch64.cc:7044 #: config/aarch64/aarch64.cc:21189 -#, fuzzy, gcc-internal-format -#| msgid "parameter passing for argument of type %qT changed in GCC 13.1" +#, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 14.1" -msgstr "die Parameterübergabe für das Argument vom Typ %qT hat sich in GCC 13.1 geändert" +msgstr "die Parameterübergabe für das Argument vom Typ %qT hat sich in GCC 14.1 geändert" #: config/aarch64/aarch64.cc:6976 config/aarch64/aarch64.cc:7053 #: config/aarch64/aarch64.cc:21195 config/arm/arm.cc:7301 @@ -38743,30 +38522,29 @@ msgid "stack probes for SVE frames" msgstr "Stapelsonde für SVE-Rahmen" #: config/aarch64/aarch64.cc:11080 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "calling a streaming function requires the ISA extension %qs" -msgstr "ACLE-Funktion %qD erfordert ISA-Erweiterung %qs" +msgstr "der Aufruf einer Streaming-Funktion erfordert die ISA-Erweiterung %qs" #: config/aarch64/aarch64.cc:11089 config/aarch64/aarch64.cc:11093 #, gcc-internal-format msgid "call to a function that shares %qs state from a function that has no %qs state" -msgstr "" +msgstr "Aufruf einer Funktion, die den %qs-Zustand teilt, aus einer Funktion, die keinen %qs-Zustand hat" #: config/aarch64/aarch64.cc:11096 #, gcc-internal-format msgid "call to a function that shares SME state from a function that has no SME state" -msgstr "" +msgstr "Aufruf einer Funktion, die den SME-Status teilt, aus einer Funktion, die keinen SME-Status hat" #: config/aarch64/aarch64.cc:11154 #, gcc-internal-format msgid "call to a function that shares state other than %qs from a function that has %qs state" -msgstr "" +msgstr "Aufruf einer Funktion, die einen anderen Status als %qs hat, aus einer Funktion, die den Status %qs hat" #: config/aarch64/aarch64.cc:11156 #, gcc-internal-format msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA" -msgstr "" +msgstr "verwenden Sie %<__arm_preserves(\"za\")%>, wenn die aufgerufene Funktion ZA beibehält" #: config/aarch64/aarch64.cc:17859 #, gcc-internal-format @@ -38828,16 +38606,14 @@ msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>" msgstr "%<-fsanitize=shadow-call-stack%> erfordert %<-ffixed-x18%>" #: config/aarch64/aarch64.cc:18237 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "streaming functions require the ISA extension %qs" -msgstr "ACLE-Funktion %qD erfordert ISA-Erweiterung %qs" +msgstr "Streaming-Funktionen erfordern die ISA-Erweiterung %qs" #: config/aarch64/aarch64.cc:18239 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "functions with SME state require the ISA extension %qs" -msgstr "ACLE-Funktion %qD erfordert ISA-Erweiterung %qs" +msgstr "Funktionen mit SME-Zustand erfordern die ISA-Erweiterung %qs" #: config/aarch64/aarch64.cc:18333 #, gcc-internal-format @@ -38856,10 +38632,9 @@ msgid "missing cpu name in %<-mcpu=%s%>" msgstr "fehlender CPU-Name in %<-mcpu=%s%>" #: config/aarch64/aarch64.cc:18473 -#, fuzzy, gcc-internal-format -#| msgid "did you mean %<-mcpu=%s%>?" +#, gcc-internal-format msgid "did you mean %<-march=%s%>?" -msgstr "meinten Sie %<-mcpu=%s%>?" +msgstr "meinten Sie %<-march=%s%>?" #: config/aarch64/aarch64.cc:18476 #, gcc-internal-format @@ -38913,10 +38688,9 @@ msgid "unknown value %qs for %<-mtune%>" msgstr "unbekannter Wert %qs für %<-mtune%>" #: config/aarch64/aarch64.cc:18717 -#, fuzzy, gcc-internal-format -#| msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch" +#, gcc-internal-format msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %<%s%> being added" -msgstr "Schalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in Konflikt" +msgstr "Schalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in Konflikt und hat dazu geführt, dass die Optionen %<%s%> hinzugefügt wurden" #: config/aarch64/aarch64.cc:18773 #, gcc-internal-format @@ -38939,10 +38713,9 @@ msgid "code model %qs not supported in ilp32 mode" msgstr "Codemodell %qs wird im ilp32-Modus nicht unterstützt" #: config/aarch64/aarch64.cc:18954 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "functions with %qs state require the ISA extension %qs" -msgstr "ACLE-Funktion %qD erfordert ISA-Erweiterung %qs" +msgstr "Funktionen mit dem Status %qs erfordern die ISA-Erweiterung %qs" #: config/aarch64/aarch64.cc:19057 #, gcc-internal-format @@ -39030,34 +38803,29 @@ msgid "malformed % pragma or attribute" msgstr "falsch geformtes Pragma oder Attribut %" #: config/aarch64/aarch64.cc:19668 -#, fuzzy, gcc-internal-format -#| msgid "attribute % specified multiple times" +#, gcc-internal-format msgid "attribute % has multiple values" -msgstr "Attribut % ist mehrfach angegeben" +msgstr "das Attribut % hat mehrere Werte" #: config/aarch64/aarch64.cc:19676 -#, fuzzy, gcc-internal-format -#| msgid "attribute % argument not a string" +#, gcc-internal-format msgid "attribute % argument not a string" -msgstr "Argument für Attribut % ist keine Zeichenkette" +msgstr "das Argument des Attributs % ist keine Zeichenkette" #: config/aarch64/aarch64.cc:19698 -#, fuzzy, gcc-internal-format -#| msgid "missing value in % pragma or attribute" +#, gcc-internal-format msgid "missing value in % attribute" -msgstr "fehlender Wert für Pragma oder Attribut %" +msgstr "im Attribut % fehlt der Wert" #: config/aarch64/aarch64.cc:19702 -#, fuzzy, gcc-internal-format -#| msgid "invalid feature modifier %qs of value %qs in % pragma or attribute" +#, gcc-internal-format msgid "invalid feature modifier %qs of value %qs in % attribute" -msgstr "ungültiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %" +msgstr "ungültiger Featuremodifizierer %qs mit Wert %qs in Attribut %" #: config/aarch64/aarch64.cc:19708 -#, fuzzy, gcc-internal-format -#| msgid "invalid feature modifier %qs of value %qs in % pragma or attribute" +#, gcc-internal-format msgid "duplicate feature modifier %qs of value %qs in % attribute" -msgstr "ungültiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %" +msgstr "doppelter Featuremodifizierer %qs mit Wert %qs in Attribut %" #: config/aarch64/aarch64.cc:20285 config/i386/i386-features.cc:3531 #: config/i386/i386-features.cc:3800 @@ -39097,10 +38865,9 @@ msgid "unsupported simdlen %wd" msgstr "nicht unterstützte simdlen %wd" #: config/aarch64/aarch64.cc:28605 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support return type %qT for % functions" +#, gcc-internal-format msgid "GCC does not currently support return type %qT for simd" -msgstr "GCC bietet derzeit keine Unterstützung für Rückgabetyp %qT für %-Funktionen" +msgstr "GCC bietet derzeit keine Unterstützung für Rückgabetyp %qT für SIMD-Funktionen" #: config/aarch64/aarch64.cc:28609 config/i386/i386.cc:25115 #, gcc-internal-format @@ -39108,10 +38875,9 @@ msgid "unsupported return type %qT for simd" msgstr "nicht unterstützter Rückgabetyp %qT für SIMD" #: config/aarch64/aarch64.cc:28639 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support argument type %qT for % functions" +#, gcc-internal-format msgid "GCC does not currently support argument type %qT for simd" -msgstr "GCC bietet derzeit keine Unterstützung für Parametertyp %qT für %-Funktionen" +msgstr "GCC bietet derzeit keine Unterstützung für Parametertyp %qT für SIMD-Funktionen" #: config/aarch64/aarch64.cc:28643 config/i386/i386.cc:25146 #, gcc-internal-format @@ -39124,32 +38890,29 @@ msgid "GCC does not currently support simdlen %wd for type %qT" msgstr "GCC unterstützt derzeit % für Typ %qT nicht" #: config/aarch64/aarch64.cc:28713 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support simdlen %wd for type %qT" +#, gcc-internal-format msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types." -msgstr "GCC unterstützt derzeit % für Typ %qT nicht" +msgstr "GCC unterstützt derzeit kein simdclone mit simdlens %wd und %wd für diese Typen." #: config/aarch64/aarch64.cc:28803 -#, fuzzy, gcc-internal-format -#| msgid "type attributes ignored after type is already defined" +#, gcc-internal-format msgid "cannot apply attribute %qs to %q+D after the function has been defined" -msgstr "Typattribute ignoriert, nachdem Typ bereits definiert ist" +msgstr "das Attribut %qs kann nicht auf %q+D angewendet werden, nachdem die Funktion definiert worden ist" #: config/aarch64/aarch64.cc:28805 -#, fuzzy, gcc-internal-format -#| msgid "%qD defined here" +#, gcc-internal-format msgid "%q+D defined here" -msgstr "%qD hier definiert" +msgstr "%q+D hier definiert" #: config/aarch64/aarch64.cc:29263 #, gcc-internal-format msgid "non-local gotos in functions with SME state" -msgstr "" +msgstr "nichtlokale Gotos in Funktionen mit SME-Zustand" #: config/aarch64/aarch64.cc:29558 #, gcc-internal-format msgid "catching non-call exceptions in functions with SME state" -msgstr "" +msgstr "Abfangen von Nicht-Aufruf-Ausnahmen in Funktionen mit SME-Zustand" #: config/alpha/alpha.cc:420 #, gcc-internal-format @@ -39493,23 +39256,20 @@ msgstr "unbekannte Ausgabe %qs des %-Schalters" msgid "invalid type for % flag output" msgstr "ungültiger Typ für %-Schalter-Ausgabe" -# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868 #: config/arm/aarch-common.cc:765 -#, fuzzy, gcc-internal-format -#| msgid "missing feature modifier in target %s %qs" +#, gcc-internal-format msgid "missing feature or flag for %<%s%>" -msgstr "fehlender Eigenschaftsmodifizierer in Ziel%qs %qs" +msgstr "fehlendes Merkmal oder Kennzeichen für %<%s%>" #: config/arm/aarch-common.cc:767 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument %<%s%> for %<-mharden-sls=%>" +#, gcc-internal-format msgid "invalid argument %<%s%> for %<%s%>" -msgstr "ungültiges Argument %qs für %<-mharden-sls=%>" +msgstr "ungültiges Argument %<%s%> für %<%s%>" #: config/arm/aarch-common.cc:778 #, gcc-internal-format msgid "argument %<%s%> can only appear alone in %<%s%>" -msgstr "" +msgstr "das Argument %<%s%> kann nur allein in %<%s%> erscheinen" #: config/arm/arm-builtins.cc:3125 #, gcc-internal-format, gfc-internal-format @@ -39625,10 +39385,9 @@ msgid "%<#pragma GCC arm%> requires a string parameter" msgstr "%<#pragma GCC arm%> erfordert eine Zeichenkette als Parameter" #: config/arm/arm-c.cc:156 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma GCC arm%> requires a string parameter" +#, gcc-internal-format msgid "%<#pragma GCC arm \"arm_mve.h\"%> requires a boolean parameter" -msgstr "%<#pragma GCC arm%> erfordert eine Zeichenkette als Parameter" +msgstr "%<#pragma GCC arm \"arm_mve.h\"%> erfordert einen booleschen Parameter" #: config/arm/arm-c.cc:160 #, gcc-internal-format @@ -39641,34 +39400,29 @@ msgid "this definition requires the MVE ISA extension" msgstr "diese Definition erfordert die MVE-ISA-Erweiterung" #: config/arm/arm-mve-builtins.cc:560 -#, fuzzy, gcc-internal-format -#| msgid "you can enable %qs using the command-line option %<-march%>, or by using the % attribute or pragma" +#, gcc-internal-format msgid "you can enable mve.fp by using the command-line option %<-march%>, or by using the % attribute or pragma" -msgstr "Sie können %qs mit der Befehlszeilenoption %<-march%> einschalten, oder mit dem Attribut % oder Pragma" +msgstr "Sie können mve.fp mit der Befehlszeilenoption %<-march%> oder mit dem Attribut oder Pragma % einschalten" #: config/arm/arm-mve-builtins.cc:1166 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but %qT is not a valid SVE element type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but %qT is not a valid MVE element type" -msgstr "Übergabe von %qT an Argument %d von %qE, aber %qT ist kein gültiger SVE-Elementtyp" +msgstr "Übergabe von %qT an Argument %d von %qE, aber %qT ist kein gültiger MVE-Elementtyp" #: config/arm/arm-mve-builtins.cc:1200 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuple" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a single MVE vector rather than a tuple" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen einzelnen SVE-Vektor statt eines Tupels erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen einzelnen MVE-Vektor statt eines Tupels erwartet" #: config/arm/arm-mve-builtins.cc:1220 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE vector type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an MVE vector type" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Vektortyp erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen MVE-Vektortyp erwartet" #: config/arm/arm-mve-builtins.cc:1223 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE tuple type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an MVE tuple type" -msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Tupeltyp erwartet" +msgstr "Übergabe von %qT an Argument %d von %qE, das jedoch einen MVE-Tupeltyp erwartet" #: config/arm/arm-mve-builtins.cc:1290 #, gcc-internal-format @@ -40142,10 +39896,9 @@ msgid "%qE attribute only supported for reduced Tiny cores" msgstr "Attribut %qE wird nur für reduzierte Tiny-Kerne unterstützt" #: config/avr/avr.cc:10405 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute address out of range" +#, gcc-internal-format msgid "%qE attribute address out of range 0x%x%s0x%x" -msgstr "Adresse von Attribut %qE außerhalb des gültigen Bereichs" +msgstr "Adresse von Attribut %qE außerhalb des gültigen Bereichs 0x%x%s0x%x" #: config/avr/avr.cc:10419 #, gcc-internal-format @@ -40178,10 +39931,9 @@ msgid "pointer targeting address space %qs must be const in %s %q+D" msgstr "Zeiger auf Adressraum %qs muss in %s %q+D konstant sein" #: config/avr/avr.cc:10717 -#, fuzzy, gcc-internal-format -#| msgid "variables marked with %qE attribute must be initialized" +#, gcc-internal-format msgid "variable %q+D with attribute %qs must be located in static storage" -msgstr "variablen, die mit dem %qE-Attribut markiert sind, müssen initialisiert werden" +msgstr "variablen %q+D, die mit dem %qs-Attribut markiert ist, muss im statischen Speicher verortet sein" #: config/avr/avr.cc:10769 #, gcc-internal-format @@ -40189,10 +39941,9 @@ msgid "variable %q+D must be const in order to be put into read-only section by msgstr "Variable %q+D muss konstant sein, um mit %qs in Nur-Lese-Abschnitt gelegt zu werden" #: config/avr/avr.cc:10930 -#, fuzzy, gcc-internal-format -#| msgid "static IO declaration for %q+D needs an address" +#, gcc-internal-format msgid "static attribute %qs declaration for %q+D needs an address" -msgstr "»static IO«-Deklaration von %q+D erfordert eine Adresse" +msgstr "statische Attributdeklaration %qs für %q+D erfordert eine Adresse" #: config/avr/avr.cc:11019 #, gcc-internal-format @@ -40215,10 +39966,9 @@ msgstr "nicht initialisierte Variable %q+D in Programmspeicherbereich platziert" #. address attribute are determined by the attribute, not by #. some initializer. #: config/avr/avr.cc:11172 -#, fuzzy, gcc-internal-format -#| msgid "variables marked with %qE attribute must be initialized" +#, gcc-internal-format msgid "variable %q+D with attribute %qs must not have an initializer" -msgstr "variablen, die mit dem %qE-Attribut markiert sind, müssen initialisiert werden" +msgstr "die Variable %q+D mit dem Attribut %qs darf keinen Initialisierer haben" #: config/avr/avr.cc:11225 #, gcc-internal-format @@ -40394,10 +40144,9 @@ msgid "invalid argument to built-in function" msgstr "ungültiges Argument für eingebaute Funktion" #: config/bpf/bpf.cc:1019 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument to built-in function %s" +#, gcc-internal-format msgid "invalid built-in function at expansion" -msgstr "ungültiges Argument für eingebaute Funktion »%s«" +msgstr "ungültige eingebaute Funktion bei der Expansion" #: config/c6x/c6x.cc:245 #, gcc-internal-format @@ -40611,10 +40360,9 @@ msgid "stack frame must be smaller than 64K" msgstr "Stapelrahmen muss kleiner als 64k sein" #: config/gcn/gcn.cc:170 -#, fuzzy, gcc-internal-format -#| msgid "%<-msmart%> is incompatible with %<-mhigh-registers%>" +#, gcc-internal-format msgid "%<-mxnack=on%> is incompatible with %<-march=%s%>" -msgstr "%<-msmart%> ist mit %<-mhigh-registers%> unverträglich" +msgstr "%<-mxnack=on%> ist nicht kompatibel mit %<-march=%s%>" #: config/gcn/gcn.cc:284 #, gcc-internal-format @@ -40692,28 +40440,24 @@ msgid "%d bytes of gang-private data-share memory exhausted (increase with %<-mg msgstr "%d Bytes des gang-privaten Speichers für Datenaustausch erschöpft (kann zum Beispiel mit %<-mgang-private-size=%d%> erhöht werden)" #: config/gcn/mkoffload.cc:160 -#, fuzzy, gcc-internal-format -#| msgid "deleting file %s: %m" +#, gcc-internal-format msgid "deleting file %qs: %m" -msgstr "Datei %s kann nicht gelöscht werden: %m" +msgstr "Löschen der Datei %qs: %m" #: config/gcn/mkoffload.cc:862 -#, fuzzy, gcc-internal-format -#| msgid "COLLECT_GCC must be set" +#, gcc-internal-format msgid "% must be set" -msgstr "COLLECT_GCC muss gesetzt sein" +msgstr "% muss gesetzt sein" #: config/gcn/mkoffload.cc:908 -#, fuzzy, gcc-internal-format -#| msgid "offload compiler %s not found" +#, gcc-internal-format msgid "offload compiler %qs not found" -msgstr "Offload-Compiler %s nicht gefunden" +msgstr "Offload-Compiler %qs nicht gefunden" #: config/gcn/mkoffload.cc:930 -#, fuzzy, gcc-internal-format -#| msgid "unrecognizable argument of option " +#, gcc-internal-format msgid "unrecognizable argument of option %<" -msgstr "nicht erkanntes Kommandozeilenargument von Option " +msgstr "nicht erkanntes Kommandozeilenargument von Option %<" #: config/gcn/mkoffload.cc:994 config/nvptx/mkoffload.cc:751 #, gcc-internal-format @@ -40721,16 +40465,14 @@ msgid "either %<-fopenacc%> or %<-fopenmp%> must be set" msgstr "entweder %<-fopenacc%> oder %<-fopenmp%> muss angegeben sein" #: config/gcn/mkoffload.cc:1039 -#, fuzzy, gcc-internal-format -#| msgid "unhandled expression" +#, gcc-internal-format msgid "unhandled architecture" -msgstr "unbehandelter Ausdruck" +msgstr "unbehandelte Architektur" #: config/gcn/mkoffload.cc:1079 config/gcn/mkoffload.cc:1231 -#, fuzzy, gcc-internal-format -#| msgid "cannot open %s" +#, gcc-internal-format msgid "cannot open %qs" -msgstr "»%s« kann nicht geöffnet werden" +msgstr "%qs kann nicht geöffnet werden" #: config/gcn/mkoffload.cc:1217 config/nvptx/mkoffload.cc:841 #, gcc-internal-format @@ -41063,22 +40805,22 @@ msgstr "% ist veraltet; stattdessen entsprechend % support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung von %<-mtune=knl%> wird in GCC 15 entfernt" #: config/i386/i386-options.cc:2105 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung für % wird in GCC 15 entfernt" #: config/i386/i386-options.cc:2110 #, gcc-internal-format msgid "%<-mtune=knm%> support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung von %<-mtune=knm%> wird in GCC 15 entfernt" #: config/i386/i386-options.cc:2111 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung für % wird in GCC 15 entfernt" #. rep; movq isn't available in 32-bit code. #: config/i386/i386-options.cc:2138 @@ -41087,16 +40829,14 @@ msgid "%<-mstringop-strategy=rep_8byte%> not supported for 32-bit code" msgstr "%<-mstringop-strategy=rep_8byte%> wird für 32-Bit-Code nicht unterstützt" #: config/i386/i386-options.cc:2143 -#, fuzzy, gcc-internal-format -#| msgid "%<-muintr%> not supported for 32-bit code" +#, gcc-internal-format msgid "%<-mapxf%> is not supported for 32-bit code" -msgstr "%<-muintr%> wird für 32-Bit-Code nicht unterstützt" +msgstr "%<-mapxf%> wird für 32-Bit-Code nicht unterstützt" #: config/i386/i386-options.cc:2145 -#, fuzzy, gcc-internal-format -#| msgid "%<-mlam=%> option: [u48|u57] not supported for 32-bit code" +#, gcc-internal-format msgid "%<-mapx-features=%> option is not supported for 32-bit code" -msgstr "%<-mlam=%>-Option: [u48|u57] wird für 32-Bit-Code nicht unterstützt" +msgstr "%<-mapx-features=%> wird für 32-Bit-Code nicht unterstützt" #: config/i386/i386-options.cc:2148 #, gcc-internal-format @@ -41136,7 +40876,7 @@ msgstr "%<-mabi=%s%> wird nicht zusammen mit %<-fsanitize=thread%> unterstützt" #: config/i386/i386-options.cc:2196 #, gcc-internal-format msgid "%<-mlam=u48%> is not compatible with Hardware-assisted AddressSanitizer, override to %<-mlam=u57%>" -msgstr "" +msgstr "%<-mlam=u48%> ist nicht kompatibel mit hardwareunterstütztem AddressSanitizer, stattdessen wird %<-mlam=u57%> verwendet" #: config/i386/i386-options.cc:2216 config/i386/i386-options.cc:2225 #: config/i386/i386-options.cc:2237 config/i386/i386-options.cc:2248 @@ -41188,22 +40928,22 @@ msgstr "Die ausgewählte CPU unterstützt nicht den x86-64-Befehlssatz" #: config/i386/i386-options.cc:2327 #, gcc-internal-format msgid "%<-march=knl%> support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung für %<-march=knl%> wird in GCC 15 entfernt" #: config/i386/i386-options.cc:2328 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung für % wird in GCC 15 entfernt" #: config/i386/i386-options.cc:2333 #, gcc-internal-format msgid "%<-march=knm%> support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung für %<-march=knm%> wird in GCC 15 entfernt" #: config/i386/i386-options.cc:2334 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "Unterstützung für % wird in GCC 15 entfernt werden" #: config/i386/i386-options.cc:2411 #, gcc-internal-format @@ -41298,7 +41038,7 @@ msgstr "% wird im 64-Bit-Modus ignoriert" #: config/i386/i386-options.cc:2676 #, gcc-internal-format msgid "%<-mno-evex512%> or %<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10.1-512 is available" -msgstr "" +msgstr "%<-mno-evex512%> oder %<-mno-avx512XXX%> kann AVX10-Befehle nicht deaktivieren, wenn AVX10.1-512 verfügbar ist" #. We should not emit 512 bit instructions under AVX10.1-256 #. when EVEX512 is enabled w/o any AVX512 features enabled. @@ -41306,22 +41046,22 @@ msgstr "" #: config/i386/i386-options.cc:2690 #, gcc-internal-format msgid "Using %<-mevex512%> without any AVX512 features enabled together with AVX10.1 only will not enable any AVX512 or AVX10.1-512 features, using 256 as max vector size" -msgstr "" +msgstr "Die Verwendung von %<-mevex512%> ohne aktivierte AVX512-Funktionen zusammen mit AVX10.1 aktiviert keine AVX512- oder AVX10.1-512-Funktionen und verwendet 256 als maximale Vektorgröße" #: config/i386/i386-options.cc:2697 config/i386/i386-options.cc:2703 #, gcc-internal-format msgid "Vector size conflicts between AVX10.1 and AVX512, using 512 as max vector size" -msgstr "" +msgstr "Vektorgrößenkonflikte zwischen AVX10.1 und AVX512, als maximale Vektorgröße wird 512 verwendet" #: config/i386/i386-options.cc:2711 #, gcc-internal-format msgid "%<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10 is available" -msgstr "" +msgstr "%<-mno-avx512XXX%> kann AVX10-Anweisungen nicht deaktivieren, wenn AVX10 verfügbar ist" #: config/i386/i386-options.cc:2721 #, gcc-internal-format msgid "%<-mno-avx10.1, -mno-avx10.1-256, -mno-avx10.1-512%> cannot disable AVX512 instructions when %<-mavx512XXX%>" -msgstr "" +msgstr "%<-mno-avx10.1, -mno-avx10.1-256, -mno-avx10.1-512%> können AVX512-Anweisungen nicht deaktivieren, wenn %<-mavx512XXX%> gewählt ist" #: config/i386/i386-options.cc:2776 #, gcc-internal-format @@ -41426,7 +41166,7 @@ msgstr "%qs ist kein gültiges Basisregister in %<-mstack-protector-guard-reg=%> #: config/i386/i386-options.cc:3245 #, gcc-internal-format msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line" -msgstr "" +msgstr "%<-fcf-protection=full%> wird von %<-fhardened%> nicht aktiviert, da es in der Befehlszeile angegeben wurde" #: config/i386/i386-options.cc:3254 #, gcc-internal-format @@ -41671,10 +41411,9 @@ msgid "the ABI of passing C structures with zero-width bit-fields has changed in msgstr "das ABI der C-Strukturübergabe mit Bitfeldern der Breite 0 hat sich in GCC %{12.1%} geändert" #: config/i386/i386.cc:2722 config/i386/i386.cc:4091 config/i386/i386.cc:4101 -#, fuzzy, gcc-internal-format -#| msgid "SSE register return with SSE disabled" +#, gcc-internal-format msgid "SSE register return with SSE2 disabled" -msgstr "SSE-Registerrückgabe mit SSE ausgeschaltet" +msgstr "SSE-Registerrückgabe mit SSE2 ausgeschaltet" #: config/i386/i386.cc:2724 #, gcc-internal-format @@ -41682,10 +41421,9 @@ msgid "SSE register return with SSE disabled" msgstr "SSE-Registerrückgabe mit SSE ausgeschaltet" #: config/i386/i386.cc:2731 -#, fuzzy, gcc-internal-format -#| msgid "SSE register argument with SSE disabled" +#, gcc-internal-format msgid "SSE register argument with SSE2 disabled" -msgstr "SSE-Registerargument mit SSE ausgeschaltet" +msgstr "SSE-Registerargument mit SSE2 ausgeschaltet" #: config/i386/i386.cc:2733 #, gcc-internal-format @@ -41791,10 +41529,9 @@ msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}" msgstr "die Ausrichtung von %<_Atomic %T%>-Feldern wurde mit %{GCC 11.1%} geändert" #: config/i386/i386.cc:22794 -#, fuzzy, gcc-internal-format -#| msgid "no low registers available for popping high registers" +#, gcc-internal-format msgid "no register available for profiling %<-mcmodel=large%s%>" -msgstr "keine unteren Register für das Hervorholen der hohen Register verfügbar" +msgstr "kein Register für die Profilerstellung von %<-mcmodel=large%s%> verfügbar" #: config/i386/i386.cc:22890 #, gcc-internal-format @@ -41802,10 +41539,9 @@ msgid "profiling %<-mcmodel=large%> with PIC is not supported" msgstr "Profiling von %<-mcmodel=large%> wird mit PIC nicht unterstützt" #: config/i386/i386.cc:23603 -#, fuzzy, gcc-internal-format -#| msgid "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since GCC V13, be careful of implicit conversion between %<__bf16%> and %; a explicit bitcast may be needed here" +#, gcc-internal-format msgid "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %; an explicit bitcast may be needed here" -msgstr "%<__bfloat16%> ist seit GCC V13 von typedef % zum echten %<__bf16%> umdefiniert, achten Sie daher auf implizite Umwandlungen zwischen %<__bf16%> und %; ein expliziter Bitcast könnte hier nötig sein" +msgstr "%<__bfloat16%> ist seit GCC 13.1 von typedef % zum echten %<__bf16%> umdefiniert, Vorsicht bei impliziter Konvertierung zwischen %<__bf16%> und %; hier kann ein explizites Bitcast nötig sein" #: config/i386/i386.cc:25052 #, gcc-internal-format @@ -41914,31 +41650,29 @@ msgid "unknown processor ID %<0x%x%>, some tuning parameters will fall back to d msgstr "unbekannte Prozessor-ID %<0x%x%>, einige Tuning-Parameter werden auf die Standardwerte zurückgesetzt" #: config/loongarch/loongarch-cpu.cc:141 -#, fuzzy, gcc-internal-format -#| msgid "unknown base architecture %<0x%x%>, %qs failed" +#, gcc-internal-format msgid "unknown native base architecture %<0x%x%>, %qs failed" -msgstr "unbekannte Basisarchitektur %<0x%x%>, %qs fehlgeschlagen" +msgstr "unbekannte native Basisarchitektur %<0x%x%>, %qs fehlgeschlagen" #: config/loongarch/loongarch-cpu.cc:170 -#, fuzzy, gcc-internal-format -#| msgid "unknown FPU type %<0x%x%>, %qs failed" +#, gcc-internal-format msgid "unknown native FPU type %<0x%x%>, %qs failed" -msgstr "unbekannter FPU-Typ %<0x%x%>, %qs fehlgeschlagen" +msgstr "unbekannter nativer FPU-Typ %<0x%x%>, %qs fehlgeschlagen" #: config/loongarch/loongarch-cpu.cc:177 #, gcc-internal-format msgid "floating-point unit %qs differs from PRID preset %qs" -msgstr "" +msgstr "Gleitkommaeinheit %qs weicht von PRID-Voreinstellung %qs ab" #: config/loongarch/loongarch-cpu.cc:201 #, gcc-internal-format msgid "unknown SIMD extension (%qs disabled while %qs is enabled), disabling SIMD" -msgstr "" +msgstr "unbekannte SIMD-Erweiterung (%qs ist ausgeschaltet, während %qs eingeschaltet ist), SIMD wird ausgeschaltet" #: config/loongarch/loongarch-cpu.cc:239 #, gcc-internal-format msgid "detected base architecture %qs, but some of its features are not detected; the detected base architecture may be unreliable, only detected features will be enabled" -msgstr "" +msgstr "Basisarchitektur %qs erkannt, aber einige ihrer Merkmale werden nicht erkannt; die erkannte Basisarchitektur kann unzuverlässig sein, nur erkannte Merkmale werden eingeschaltet" #: config/loongarch/loongarch-opts.cc:225 #, gcc-internal-format @@ -41959,18 +41693,17 @@ msgstr "%qs funktioniert nicht auf einem Cross-Compiler" #: config/loongarch/loongarch-opts.cc:365 #, gcc-internal-format msgid "enabing %qs promotes %<%s%s%> to %<%s%s%>" -msgstr "" +msgstr "Einschalten von %qs befördert %<%s%s%> zu %<%s%s%>" #: config/loongarch/loongarch-opts.cc:377 #, gcc-internal-format msgid "%qs is disabled by %<-m%s%>, because it requires %<%s%s%>" -msgstr "" +msgstr "%qs wird durch %<-m%s%> ausgeschaltet, da es %<%s%s%> erfordert" #: config/loongarch/loongarch-opts.cc:389 -#, fuzzy, gcc-internal-format -#| msgid "switch %<-mcpu=%s%> conflicts with switch %<-march=%s%>" +#, gcc-internal-format msgid "%<-m%s=%s%> conflicts with %qs, which requires %<%s%s%>" -msgstr "Schalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in Konflikt" +msgstr "%<-m%s=%s%> steht im Konflikt mit %qs, das %<%s%s%> erfordert" #: config/loongarch/loongarch-opts.cc:433 #, gcc-internal-format @@ -42190,10 +41923,9 @@ msgid "%qE attribute requires a string argument" msgstr "Attribut %qE erfordert eine Zeichenkettenkonstante als Argument" #: config/mips/mips.cc:1340 -#, fuzzy, gcc-internal-format -#| msgid "argument to %qE attribute is neither zero, nor one" +#, gcc-internal-format msgid "argument to %qE attribute is neither no, pcrel nor yes" -msgstr "Argument des Attributes %qE ist weder Null noch Eins" +msgstr "Argument des Attributes %qE ist keins von »no«, »pcrel« oder »yes«" #: config/mips/mips.cc:1506 config/mips/mips.cc:1510 #, gcc-internal-format @@ -42288,10 +42020,9 @@ msgid "MSA MIPS16 code" msgstr "MSA-MIPS16-Code" #: config/mips/mips.cc:20067 -#, fuzzy, gcc-internal-format -#| msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" +#, gcc-internal-format msgid "MIPS16 requires %<-mexplicit-relocs%>" -msgstr "%<-mno-gpopt%> erfordert %<-mexplicit-relocs%>" +msgstr "MIPS16 erfordert %<-mexplicit-relocs%>" #: config/mips/mips.cc:20258 config/mips/mips.cc:20263 #: config/mips/mips.cc:20353 config/mips/mips.cc:20355 @@ -43161,10 +42892,9 @@ msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-mi msgstr "PTX-Version %<-mptx%> muss mindestens %s sein, um die ausgewählte %<-misa%> (sm_%s) zu unterstützen" #: config/nvptx/nvptx.cc:340 -#, fuzzy, gcc-internal-format -#| msgid "multiple %<-mcpu=%> options specified" +#, gcc-internal-format msgid "%<-march=%> must be specified" -msgstr "mehrere %<-mcpu=%>-Optionen angegeben" +msgstr "%<-march=%> muss angegeben werden" #: config/nvptx/nvptx.cc:363 #, gcc-internal-format @@ -43343,10 +43073,9 @@ msgid "%<#pragma riscv intrinsic%> requires a string parameter" msgstr "%<#pragma riscv intrinsic%> erfordert eine Zeichenkette als Parameter" #: config/riscv/riscv-c.cc:203 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma riscv intrinsic%> option %qs needs 'V' extension enabled" +#, gcc-internal-format msgid "%<#pragma riscv intrinsic%> option %qs needs 'V' or 'XTHEADVECTOR' extension enabled" -msgstr "%<#pragma riscv intrinsic%>-Option %qs erfordert, dass die Erweiterung 'V' eingeschaltet ist" +msgstr "%<#pragma riscv intrinsic%>-Option %qs erfordert, dass eine der Erweiterungen »V« oder »XTHEADVECTOR« eingeschaltet ist" #: config/riscv/riscv-c.cc:211 #, gcc-internal-format @@ -43356,70 +43085,64 @@ msgstr "unbekannte Option %qs für %<#pragma riscv intrinsic%>" #: config/riscv/riscv-target-attr.cc:120 #, gcc-internal-format msgid "unexpected arch for % attribute: must start with + or rv" -msgstr "" +msgstr "unerwartete Architektur für %-Attribut: muss mit + oder rv beginnen" #: config/riscv/riscv-target-attr.cc:132 #, gcc-internal-format msgid "unexpected arch for % attribute: bad string found %<%s%>" -msgstr "" +msgstr "unerwartete Architektur für %-Attribut: Fehlerhafte Zeichenfolge %<%s%> gefunden" #: config/riscv/riscv-target-attr.cc:156 #, gcc-internal-format msgid "% attribute: arch appears more than once" -msgstr "" +msgstr "%-Attribut: Architektur erscheint mehr als einmal" #: config/riscv/riscv-target-attr.cc:167 #, gcc-internal-format msgid "% attribute: cpu appears more than once" -msgstr "" +msgstr "%-Attribut: CPU erscheint mehr als einmal" #: config/riscv/riscv-target-attr.cc:174 #, gcc-internal-format msgid "% attribute: unknown CPU %qs" -msgstr "" +msgstr "%-Attribut: unbekannte CPU %qs" #: config/riscv/riscv-target-attr.cc:195 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute: tune appears more than once" -msgstr "Ziel-Attribut wird auf dieser Maschine nicht unterstützt" +msgstr "%-Attribut: tune erscheint mehr als einmal" #: config/riscv/riscv-target-attr.cc:201 #, gcc-internal-format msgid "% attribute: unknown TUNE %qs" -msgstr "" +msgstr "%-Attribut: unbekanntes TUNE %qs" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868 #: config/riscv/riscv-target-attr.cc:240 -#, fuzzy, gcc-internal-format -#| msgid "malformed % pragma or attribute" +#, gcc-internal-format msgid "malformed % attribute" -msgstr "falsch geformtes Pragma oder Attribut %" +msgstr "falsch geformtes %-Attribut" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868 #: config/riscv/riscv-target-attr.cc:254 -#, fuzzy, gcc-internal-format -#| msgid "pragma or attribute % does not accept an argument" +#, gcc-internal-format msgid "attribute % does not accept an argument" -msgstr "Pragma oder Attribut % akzeptiert keine Argumente" +msgstr "Attribut % akzeptiert keine Argumente" #: config/riscv/riscv-target-attr.cc:271 -#, fuzzy, gcc-internal-format -#| msgid "unknown attribute %qs" +#, gcc-internal-format msgid "Got unknown attribute %" -msgstr "unbekanntes Attribut %qs" +msgstr "Unbekanntes Attribut %" #: config/riscv/riscv-target-attr.cc:352 -#, fuzzy, gcc-internal-format -#| msgid "malformed % pragma or attribute" +#, gcc-internal-format msgid "malformed % attribute" -msgstr "falsch geformtes Pragma oder Attribut %" +msgstr "falsch geformtes Attribut %" #: config/riscv/riscv-vector-builtins.cc:4239 -#, fuzzy, gcc-internal-format -#| msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]" +#, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd] or %wd" -msgstr "Übergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] erwartet" +msgstr "Übergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] oder %wd erwartet" #: config/riscv/riscv-vector-builtins.cc:4435 #, gcc-internal-format @@ -43472,10 +43195,9 @@ msgid "capture by copy of RVV type %qT" msgstr "der RVV-Typ %qT kann nicht durch Kopieren gefangen werden" #: config/riscv/riscv-vector-builtins.cc:4633 -#, fuzzy, gcc-internal-format -#| msgid "no matching function for call to %<%s(%A)%>" +#, gcc-internal-format msgid "no matching function call to %qE with empty arguments" -msgstr "keine passende Funktion für Aufruf von %<%s(%A)%>" +msgstr "kein passender Funktionsaufruf für %qE mit leeren Argumenten" #: config/riscv/riscv.cc:647 #, gcc-internal-format @@ -43498,10 +43220,9 @@ msgid "ABI for flattened struct with zero-length bit-fields changed in GCC 10" msgstr "ABI für abgeflachte Struktur mit Bit-Feldern der Länge 0 hat wurde mit GCC 10 geändert" #: config/riscv/riscv.cc:5237 -#, fuzzy, gcc-internal-format -#| msgid "SVE type %qT cannot be passed to an unprototyped function" +#, gcc-internal-format msgid "RVV type %qT cannot be passed to an unprototyped function" -msgstr "der SVE-Typ %qT kann nur an prototypisierte Funktionen übergeben werden" +msgstr "der RVV-Typ %qT kann nur an prototypisierte Funktionen übergeben werden" #: config/riscv/riscv.cc:5515 #, gcc-internal-format @@ -43516,19 +43237,17 @@ msgstr "%<-mdiv%> erfordert %<-march%>, um die %-Erweiterung zu ermitteln" #: config/riscv/riscv.cc:8917 #, gcc-internal-format msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension" -msgstr "" +msgstr "Der aktuelle RISC-V-GCC unterstützt keine VLEN größer als 4096bit für die Erweiterung »V«" #: config/riscv/riscv.cc:8923 -#, fuzzy, gcc-internal-format -#| msgid "target CPU does not support ARM mode" +#, gcc-internal-format msgid "Current RISC-V GCC does not support RVV in big-endian mode" -msgstr "Ziel-CPU unterstützt nicht ARM-Modus" +msgstr "Der aktuelle RISC-V-GCC unterstützt RVV im Big-Endian-Modus nicht" #: config/riscv/riscv.cc:8949 config/riscv/riscv.cc:8952 -#, fuzzy, gcc-internal-format -#| msgid "code model %qs with %<-f%s%>" +#, gcc-internal-format msgid "code model %qs with %qs" -msgstr "Codemodell %qs mit %<-f%s%>" +msgstr "Codemodell %qs mit %qs" #: config/riscv/riscv.cc:8981 #, gcc-internal-format @@ -43541,16 +43260,14 @@ msgid "rv32e requires ilp32e ABI" msgstr "rv32e erfordert die ilp32e-ABI" #: config/riscv/riscv.cc:8990 -#, fuzzy, gcc-internal-format -#| msgid "rv32e requires ilp32e ABI" +#, gcc-internal-format msgid "rv64e requires lp64e ABI" -msgstr "rv32e erfordert die ilp32e-ABI" +msgstr "rv64e erfordert lp64e-ABI" #: config/riscv/riscv.cc:8997 -#, fuzzy, gcc-internal-format -#| msgid "z*inx requires ABI ilp32, ilp32e or lp64" +#, gcc-internal-format msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e" -msgstr "z*inx erfordert ABI ilp32, ilp32e oder lp64" +msgstr "z*inx erfordert ABI ilp32, ilp32e, lp64 oder lp64e" #: config/riscv/riscv.cc:9001 #, gcc-internal-format @@ -44469,28 +44186,24 @@ msgid "value %qs is not supported by attribute %" msgstr "Wert %qs wird von Attribut % nicht unterstützt" #: config/s390/s390.cc:17531 -#, fuzzy, gcc-internal-format -#| msgid "invalid constraints" +#, gcc-internal-format msgid "invalid cc output constraint: %qs" -msgstr "ungültige Einschränkungen" +msgstr "ungültige cc-Ausgabebeschränkung: %qs" #: config/s390/s390.cc:17536 -#, fuzzy, gcc-internal-format -#| msgid "double constants not supported" +#, gcc-internal-format msgid "multiple cc output constraints not supported" -msgstr "double-Konstanten werden nicht unterstützt" +msgstr "mehrere cc-Ausgabebeschränkungen nicht unterstützt" #: config/s390/s390.cc:17541 -#, fuzzy, gcc-internal-format -#| msgid "% specifier for variable %qE conflicts with % clobber list" +#, gcc-internal-format msgid "% specifier for cc output conflicts with % clobber list" -msgstr "%-Spezifizierer für Variable %qE steht in Konflikt mit %-Bestrafungs-Liste" +msgstr "%-Spezifizierer für cc-Ausgabe steht in Konflikt mit %-Clobber-Liste" #: config/s390/s390.cc:17547 -#, fuzzy, gcc-internal-format -#| msgid "invalid type for pointer diff" +#, gcc-internal-format msgid "invalid type for cc output constraint" -msgstr "ungültiger Typ für Zeiger-Differenz" +msgstr "ungültiger Typ für cc-Ausgabebeschränkung" #: config/sh/sh.cc:936 #, gcc-internal-format @@ -45053,10 +44766,9 @@ msgid "declaration of %q+D shadows a built-in function" msgstr "Deklaration von %q+D überdeckt eine eingebaute Funktion" #: c/c-decl.cc:2153 -#, fuzzy, gcc-internal-format -#| msgid "redeclaration of enumerator %q+D" +#, gcc-internal-format msgid "conflicting redeclaration of enumerator %q+D" -msgstr "Redeklaration von Aufzählung %q+D" +msgstr "widersprüchliche Neudeklaration des Aufzählungswerts %q+D" #: c/c-decl.cc:2160 #, gcc-internal-format @@ -45306,7 +45018,7 @@ msgstr "in Gültigkeitsbereich des Bezeichners mit variabel modifiziertem Typen #: c/c-decl.cc:4093 #, gcc-internal-format msgid "jump skips OpenMP % allocation" -msgstr "" +msgstr "Sprung überspringt OpenMP-%" #: c/c-decl.cc:4096 #, gcc-internal-format @@ -45339,10 +45051,9 @@ msgid "traditional C lacks a separate namespace for labels, identifier %qE confl msgstr "traditionelles C bietet keinen separaten Namensraum für Marken an, Bezeichner %qE steht in Konflikt" #: c/c-decl.cc:4379 -#, fuzzy, gcc-internal-format -#| msgid "switch jumps over variable initialization" +#, gcc-internal-format msgid "switch jumps over OpenMP % allocation" -msgstr "switch springt über Variableninitialisierung" +msgstr "switch springt über OpenMP-%" #: c/c-decl.cc:4385 #, gcc-internal-format @@ -45512,10 +45223,9 @@ msgid "%<[*]%> not allowed in other than function prototype scope" msgstr "%<[*]%> außerhalb des Bereichs des Funktionsprototypen nicht erlaubt" #: c/c-decl.cc:5475 cp/decl2.cc:1852 cp/name-lookup.cc:8767 -#, fuzzy, gcc-internal-format -#| msgid "% not allowed to be specified in this context" +#, gcc-internal-format msgid "% not allowed to be specified in this context" -msgstr "% darf in diesem Kontext nicht angegeben werden" +msgstr "% darf in diesem Kontext nicht angegeben werden" #: c/c-decl.cc:5555 #, gcc-internal-format @@ -46140,10 +45850,9 @@ msgid "ISO C90 does not support %<_Noreturn%>" msgstr "ISO-C90 unterstützt nicht %<_Noreturn%>" #: c/c-decl.cc:8204 -#, fuzzy, gcc-internal-format -#| msgid "variable previously declared % redeclared %" +#, gcc-internal-format msgid "function previously declared % redeclared %" -msgstr "als % redeklarierte Variable war bereits als % deklariert" +msgstr "Funktion, die bereits als % deklariert war, wird als % neudeklariert" #: c/c-decl.cc:8222 #, gcc-internal-format @@ -46351,10 +46060,9 @@ msgid "flexible array member in a struct with no named members" msgstr "flexibles Arrayelement in einer Struktur ohne benannte Elemente" #: c/c-decl.cc:9519 -#, fuzzy, gcc-internal-format -#| msgid "flexible array member not at end of struct" +#, gcc-internal-format msgid "structure containing a flexible array member is not at the end of another structure" -msgstr "flexibles Arrayelement nicht am Ende von struct" +msgstr "Struktur, die ein flexibles Arrayelement enthält, ist nicht am Ende einer anderen Struktur" #: c/c-decl.cc:9542 #, gcc-internal-format @@ -46372,16 +46080,14 @@ msgid "union cannot be made transparent" msgstr "union kann nicht transparent gemacht werden" #: c/c-decl.cc:9686 -#, fuzzy, gcc-internal-format -#| msgid "redefinition of typedef %q+D with variably modified type" +#, gcc-internal-format msgid "redefinition of struct or union %qT with variably modified type" -msgstr "Redefinition des typedef %q+D mit variabel modifiziertem Typ" +msgstr "Redefinition des Struktur- oder Vereinigungstyps %qT mit variabel modifiziertem Typ" #: c/c-decl.cc:9689 -#, fuzzy, gcc-internal-format -#| msgid "redefinition of %" +#, gcc-internal-format msgid "redefinition of struct or union %qT" -msgstr "Redefinition von %" +msgstr "Redefinition von Struktur- oder Vereinigungstyp %qT" #: c/c-decl.cc:9852 #, gcc-internal-format @@ -46414,10 +46120,9 @@ msgid "enumeration values exceed range of %qs" msgstr "Aufzählungswerte überschreiten Wertebereich von %qs" #: c/c-decl.cc:10133 -#, fuzzy, gcc-internal-format -#| msgid "nested redefinition of %" +#, gcc-internal-format msgid "conflicting redefinition of enum %qT" -msgstr "Verschachtelte Redefinition von %" +msgstr "widersprüchliche Redefinition des Aufzählungstyps %qT" #: c/c-decl.cc:10165 c/c-decl.cc:10181 #, gcc-internal-format @@ -46445,10 +46150,9 @@ msgid "enumerator value outside the range of %qs" msgstr "Aufzählungswert ist außerhalb des Gültigkeitsbereichs von %qs" #: c/c-decl.cc:10241 -#, fuzzy, gcc-internal-format -#| msgid "ISO C restricts enumerator values to range of % before C2X" +#, gcc-internal-format msgid "ISO C restricts enumerator values to range of % before C23" -msgstr "ISO C vor C2X beschränkt Aufzählungswerte auf den Bereich von %" +msgstr "ISO C vor C23 beschränkt Aufzählungswerte auf den Bereich von %" #: c/c-decl.cc:10442 cp/decl.cc:5981 cp/decl.cc:17785 #, gcc-internal-format @@ -46511,10 +46215,9 @@ msgid "traditional C rejects ISO C style function definitions" msgstr "traditionelles C weist Funktionsdefinitionen im ISO-C-Stil zurück" #: c/c-decl.cc:10696 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support omitting parameter names in function definitions before C2X" +#, gcc-internal-format msgid "ISO C does not support omitting parameter names in function definitions before C23" -msgstr "ISO-C unterstützt das Weglassen von Parameternamen in Funktionsdefinitionen erst ab C2X" +msgstr "ISO-C unterstützt das Weglassen von Parameternamen in Funktionsdefinitionen erst ab C23" #: c/c-decl.cc:10736 c/c-decl.cc:10740 #, gcc-internal-format @@ -46719,10 +46422,9 @@ msgid "ISO C90 does not support boolean types" msgstr "ISO-C90 unterstützt keine booleschen Typen" #: c/c-decl.cc:12451 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support the %<_Float%d%s%> type" +#, gcc-internal-format msgid "ISO C does not support the %<_Float%d%s%> type before C23" -msgstr "ISO-C unterstützt den Typen %<_Float%d%s%> nicht" +msgstr "ISO-C unterstützt den Typen %<_Float%d%s%> erst ab C23" #: c/c-decl.cc:12502 cp/parser.cc:20288 #, gcc-internal-format @@ -46730,10 +46432,9 @@ msgid "%<_Float%d%s%> is not supported on this target" msgstr "%<_Float%d%s%> wird für dieses Ziel nicht unterstützt" #: c/c-decl.cc:12573 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support decimal floating-point before C2X" +#, gcc-internal-format msgid "ISO C does not support decimal floating-point before C23" -msgstr "ISO-C unterstützt dezimale Gleitkommazahlen erst ab C2X" +msgstr "ISO-C unterstützt dezimale Gleitkommazahlen erst ab C23" #: c/c-decl.cc:12597 c/c-decl.cc:12974 c/c-parser.cc:10628 #, gcc-internal-format @@ -46746,21 +46447,19 @@ msgid "ISO C does not support fixed-point types" msgstr "ISO-C unterstützt keine Ganzzahltypen" #: c/c-decl.cc:12628 -#, fuzzy, gcc-internal-format -#| msgid "case label is not an integer constant expression" +#, gcc-internal-format msgid "%<_BitInt%> argument is not an integer constant expression" -msgstr "»case«-Marke ist kein konstanter Ganzzahlausdruck" +msgstr "%<_BitInt%>-Argument ist kein konstanter Ganzzahlausdruck" #: c/c-decl.cc:12634 -#, fuzzy, gcc-internal-format -#| msgid "enumerator value for %qE is not an integer constant expression" +#, gcc-internal-format msgid "%<_BitInt%> argument %qE is not a positive integer constant expression" -msgstr "Aufzählungswert für %qE ist kein Ganzzahlkonstantenausdruck" +msgstr "%<_BitInt%>-Argument %qE ist kein positiver konstanter Ganzzahlausdruck" #: c/c-decl.cc:12641 #, gcc-internal-format msgid "%<_BitInt%> argument %qE is larger than % %qd" -msgstr "" +msgstr "%<_BitInt%>-Argument %qE ist größer als % %qd" #: c/c-decl.cc:12689 #, gcc-internal-format @@ -46860,10 +46559,9 @@ msgid "ISO C does not support plain % meaning %" msgstr "ISO-C unterstützt nicht % bedeutendes einfaches %" #: c/c-decl.cc:12997 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support % type deduction before C2X" +#, gcc-internal-format msgid "ISO C does not support % type deduction before C23" -msgstr "ISO C unterstützt %-Typinferenz erst ab C2X" +msgstr "ISO C unterstützt %-Typinferenz erst ab C23" #: c/c-decl.cc:13026 #, gcc-internal-format @@ -46876,16 +46574,14 @@ msgid "ISO C does not support complex integer types" msgstr "ISO-C unterstützt keine komplexen Ganzzahltypen" #: c/c-decl.cc:13237 -#, fuzzy, gcc-internal-format -#| msgid "Fixed line length must be at least seven" +#, gcc-internal-format msgid "% argument must be at least 2" -msgstr "Feste Zeilenlänge muss mindestens sieben sein" +msgstr "Argument für % muss mindestens 2 sein" #: c/c-decl.cc:13246 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ does not support %<__int%d%> for %qs" +#, gcc-internal-format msgid "ISO C does not support %<%s_BitInt(%d)%> before C23" -msgstr "ISO-C++ unterstützt %<__int%d%> für %qs nicht" +msgstr "ISO-C unterstützt %<%s_BitInt(%d)%> erst ab C23" #: c/c-decl.cc:13545 cp/semantics.cc:6316 #, gcc-internal-format @@ -47172,10 +46868,9 @@ msgid "%<__GIMPLE%> only valid with %<-fgimple%>" msgstr "%<__GIMPLE%> ist nur mit %<-fgimple%> gültig" #: c/c-parser.cc:3699 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support specifying % underlying types before C2X" +#, gcc-internal-format msgid "ISO C does not support specifying % underlying types before C23" -msgstr "ISO C unterstützt auf % basierende Typen erst ab C2X" +msgstr "ISO C unterstützt die Angabe eines Basistyps für % erst ab C23" #: c/c-parser.cc:3708 #, gcc-internal-format @@ -47282,10 +46977,9 @@ msgid "expected identifier or %<(%>" msgstr "Bezeichner oder %<(%> erwartet" #: c/c-parser.cc:4920 -#, fuzzy, gcc-internal-format -#| msgid "ISO C requires a named argument before %<...%> before C2X" +#, gcc-internal-format msgid "ISO C requires a named argument before %<...%> before C23" -msgstr "ISO-C erfordert ein benanntes Argument vor %<...%>, vor C2X" +msgstr "ISO-C erfordert ein benanntes Argument vor %<...%>, vor C23" #: c/c-parser.cc:5045 #, gcc-internal-format @@ -47318,10 +47012,9 @@ msgid "%qE attribute does not take any arguments" msgstr "Attribut %qE akzeptiert keine Argumente" #: c/c-parser.cc:5893 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support %<[[]]%> attributes before C2X" +#, gcc-internal-format msgid "ISO C does not support %<[[]]%> attributes before C23" -msgstr "ISO-C unterstützt %<[[]]%>-Attribute erst ab C2X" +msgstr "ISO-C unterstützt %<[[]]%>-Attribute erst ab C23" #: c/c-parser.cc:6106 c/c-parser.cc:6169 c/c-typeck.cc:8822 #, gcc-internal-format @@ -47329,10 +47022,9 @@ msgid "variable-sized object may not be initialized except with an empty initial msgstr "Objekt variabler Größe darf nicht initialisiert werden, außer mit einem leeren Initialisierer" #: c/c-parser.cc:6163 -#, fuzzy, gcc-internal-format -#| msgid "ISO C forbids empty initializer braces before C2X" +#, gcc-internal-format msgid "ISO C forbids empty initializer braces before C23" -msgstr "ISO-C unterstützt leere Initialisierungsklammern erst ab C2X" +msgstr "ISO-C unterstützt leere Initialisierungsklammern erst ab C23" #: c/c-parser.cc:6227 #, gcc-internal-format @@ -47355,22 +47047,19 @@ msgid "obsolete use of designated initializer without %<=%>" msgstr "veraltete Verwendung einer bestimmten Initialisierung ohne %<=%>" #: c/c-parser.cc:6567 cp/parser.cc:13308 -#, fuzzy, gcc-internal-format -#| msgid "no valid clauses specified in %<#pragma acc declare%>" +#, gcc-internal-format msgid "inner loops must be perfectly nested in %<#pragma acc loop%>" -msgstr "keine gültigen Klauseln in %<#pragma acc declare%> angegeben" +msgstr "innere Schleifen müssen in %<#pragma acc loop%> perfekt geschachtelt sein" #: c/c-parser.cc:6574 cp/parser.cc:13315 -#, fuzzy, gcc-internal-format -#| msgid "% region must be closely nested inside a loop region with an % clause" +#, gcc-internal-format msgid "inner loops must be perfectly nested with % clause" -msgstr "%-Region muss eng geschachtelt sein, wenn sie innerhalb einer Schleifenregion mit %-Klausel auftritt" +msgstr "innere Schleifen müssen mit der %-Klausel perfekt geschachtelt sein" #: c/c-parser.cc:6581 cp/parser.cc:13322 -#, fuzzy, gcc-internal-format -#| msgid "% clause must not be used together with % clause" +#, gcc-internal-format msgid "inner loops must be perfectly nested with % % clause" -msgstr "%-Klausel darf nicht zusammen mit %-Klausel verwendet werden" +msgstr "innere Schleifen müssen mit der %-%-Klausel perfekt verschachtelt sein" #: c/c-parser.cc:6638 c/c-parser.cc:6793 cp/parser.cc:12240 cp/parser.cc:12390 #: cp/parser.cc:48555 @@ -47379,17 +47068,15 @@ msgid "mixing OpenMP directives with attribute and pragma syntax on the same sta msgstr "Vermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in ein und derselben Anweisung" #: c/c-parser.cc:6646 cp/parser.cc:12248 -#, fuzzy, gcc-internal-format -#| msgid "% attribute requires argument" +#, gcc-internal-format msgid "OpenMP % attribute on a statement" -msgstr "Attribut % erfordert Argument" +msgstr "OpenMP-Attribut % an einer Anweisung" #: c/c-parser.cc:6670 c/c-parser.cc:6889 c/c-parser.cc:25015 cp/parser.cc:12272 #: cp/parser.cc:48535 cp/parser.cc:48675 -#, fuzzy, gcc-internal-format -#| msgid "unknown OpenMP directive name in %qs clause argument" +#, gcc-internal-format msgid "unknown OpenMP directive name in %qs attribute argument" -msgstr "unbekannter OpenMP-Direktiven-Name im Argument der %qs-Klausel" +msgstr "unbekannter OpenMP-Direktiven-Name im Argument des Attributs %qs" #: c/c-parser.cc:6762 cp/parser.cc:12359 #, gcc-internal-format @@ -47495,7 +47182,7 @@ msgstr "es wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeut #: c/c-parser.cc:8122 c/c-parser.cc:8187 c/c-parser.cc:8306 cp/parser.cc:14614 #, gcc-internal-format msgid "loop not permitted in intervening code in OpenMP loop body" -msgstr "" +msgstr "Schleife in dazwischenliegendem Code im OpenMP-Schleifenkörper nicht erlaubt" #: c/c-parser.cc:8195 #, gcc-internal-format @@ -47858,16 +47545,14 @@ msgid "wrong number of arguments to %<__builtin_shuffle%>" msgstr "falsche Anzahl der Argumente für %<__builtin_shuffle%>" #: c/c-parser.cc:11851 -#, fuzzy, gcc-internal-format -#| msgid "wrong number of arguments" +#, gcc-internal-format msgid "wrong number of arguments to %qs" -msgstr "falsche Anzahl an Argumenten" +msgstr "falsche Anzahl an Argumenten für %qs" #: c/c-parser.cc:11860 -#, fuzzy, gcc-internal-format -#| msgid "%qD does not have integral type" +#, gcc-internal-format msgid "%qs operand not an integral type" -msgstr "%qD hat keinen Ganzzahltyp" +msgstr "Operand für %qs hat keinen Ganzzahltyp" #: c/c-parser.cc:12123 cp/parser.cc:6134 #, gcc-internal-format @@ -47875,10 +47560,9 @@ msgid "% may only be used in OpenMP % clause" msgstr "% darf nur in OpenMP-%-Klausel verwendet werden" #: c/c-parser.cc:12133 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support %qs before C2X" +#, gcc-internal-format msgid "ISO C does not support %qs before C23" -msgstr "ISO-C unterstützt %qs erst ab C2X" +msgstr "ISO-C unterstützt %qs erst ab C23" #: c/c-parser.cc:12221 #, gcc-internal-format @@ -47911,10 +47595,9 @@ msgid "ISO C90 forbids compound literals" msgstr "ISO-C90 verbietet zusammengesetzte Literale" #: c/c-parser.cc:12284 -#, fuzzy, gcc-internal-format -#| msgid "ISO C forbids storage class specifiers in compound literals before C2X" +#, gcc-internal-format msgid "ISO C forbids storage class specifiers in compound literals before C23" -msgstr "ISO-C erlaubt Speicherklassenangaben in zusammengesetzten Literalen erst ab C2X" +msgstr "ISO-C erlaubt Speicherklassenangaben in zusammengesetzten Literalen erst ab C23" #: c/c-parser.cc:12298 #, gcc-internal-format @@ -47984,7 +47667,7 @@ msgstr "die Betragsfunktion %qD bekommt hier ein Argument vom Typ %qT, erwartet #: c/c-parser.cc:12606 cp/parser.cc:8164 #, gcc-internal-format msgid "calls to the OpenMP runtime API are not permitted in intervening code" -msgstr "" +msgstr "Aufrufe an die OpenMP-Laufzeit-API sind in dazwischenliegendem Code nicht zulässig" #: c/c-parser.cc:12980 #, gcc-internal-format @@ -48064,7 +47747,7 @@ msgstr "%<#pragma GCC unroll%> erfordert einen Zuweisungsausdruck, der zu einer #: c/c-parser.cc:14470 cp/parser.cc:50733 #, gcc-internal-format msgid "intervening code must not contain OpenMP directives" -msgstr "" +msgstr "dazwischenliegender Code darf keine OpenMP-Direktiven enthalten" #: c/c-parser.cc:14490 c/c-parser.cc:23558 c/c-parser.cc:23867 #: c/c-parser.cc:23930 c/c-parser.cc:24040 cp/parser.cc:46383 @@ -48155,10 +47838,9 @@ msgid "expected %, %, % or %" msgstr "%, %, % oder % erwartet" #: c/c-parser.cc:15925 cp/parser.cc:39100 -#, fuzzy, gcc-internal-format -#| msgid "expected goto expression" +#, gcc-internal-format msgid "expected constant logical expression" -msgstr "Interner Fehler: expected goto expression" +msgstr "Interner Fehler: expected constant logical expression" #: c/c-parser.cc:16002 cp/parser.cc:39182 #, gcc-internal-format @@ -48230,10 +47912,9 @@ msgid "expected %, %, %, %, %, %, %, %, %, %, % oder % erwartet" #: c/c-parser.cc:16552 -#, fuzzy, gcc-internal-format -#| msgid "expected %, % or %" +#, gcc-internal-format msgid "expected %, %, % or %" -msgstr "%, % oder % erwartet" +msgstr "%, %, % oder % erwartet" #: c/c-parser.cc:16629 cp/parser.cc:39718 #, gcc-internal-format @@ -48272,10 +47953,9 @@ msgid "% argument needs positive integral constant" msgstr "%-Argument muss eine positive, ganzzahlige Konstante sein" #: c/c-parser.cc:17059 cp/parser.cc:41829 -#, fuzzy, gcc-internal-format -#| msgid "too many % clauses" +#, gcc-internal-format msgid "too many % clauses" -msgstr "zu viele %-Klauseln" +msgstr "zu viele %-Klauseln" #: c/c-parser.cc:17101 cp/parser.cc:39771 #, gcc-internal-format @@ -48420,16 +48100,14 @@ msgid "too many % modifiers" msgstr "zu viele %-Modifizierer" #: c/c-parser.cc:18792 cp/parser.cc:41456 -#, fuzzy, gcc-internal-format -#| msgid "too many % modifiers" +#, gcc-internal-format msgid "too many % modifiers" -msgstr "zu viele %-Modifizierer" +msgstr "zu viele %-Modifizierer" #: c/c-parser.cc:18800 cp/parser.cc:41467 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp target%> with modifier other than % or % on % clause" +#, gcc-internal-format msgid "% clause with map-type modifier other than %, % or %" -msgstr "%<#pragma omp target%> mit Modifizierer außer % oder % an %-Klausel" +msgstr "%-Klausel mit einem anderen map-type-Modifikator als %, % oder %" #: c/c-parser.cc:18838 cp/parser.cc:41507 #, gcc-internal-format @@ -48472,10 +48150,9 @@ msgid "% clause event handle has type %qT rather than %-Klausel ist vom Typ %qT statt des erwarteten %" #: c/c-parser.cc:19391 cp/parser.cc:42045 -#, fuzzy, gcc-internal-format -#| msgid "expected assumption clause" +#, gcc-internal-format msgid "expected an OpenACC clause" -msgstr "Annahme-Klausel erwartet" +msgstr "OpenACC-Klausel erwartet" #: c/c-parser.cc:19402 c/c-parser.cc:19767 cp/parser.cc:42056 #: cp/parser.cc:42464 @@ -48494,10 +48171,9 @@ msgid "%qs must be the first clause of %qs" msgstr "%qs muss die erste Klausel von %qs sein" #: c/c-parser.cc:19756 cp/parser.cc:42453 -#, fuzzy, gcc-internal-format -#| msgid "expected assumption clause" +#, gcc-internal-format msgid "expected an OpenMP clause" -msgstr "Annahme-Klausel erwartet" +msgstr "OpenMP-Klausel erwartet" #: c/c-parser.cc:19891 cp/parser.cc:47284 #, gcc-internal-format @@ -48552,7 +48228,7 @@ msgstr "%<#pragma acc %s data%> hat keine Datenverschiebeklausel" #: c/c-parser.cc:20109 cp/parser.cc:47244 #, gcc-internal-format msgid "% construct requires % clause" -msgstr "" +msgstr "das %-Konstrukt erfordert eine %-Klausel" #: c/c-parser.cc:20338 cp/parser.cc:3367 #, gcc-internal-format @@ -48595,27 +48271,24 @@ msgid "%<#pragma acc update%> must contain at least one % or % o msgstr "%<#pragma acc update%> muss mindestens eine %- oder %- or %-Klausel enthalten" #: c/c-parser.cc:20558 -#, fuzzy, gcc-internal-format -#| msgid "variables in %<__regio_symbol%> address space must be declared %" +#, gcc-internal-format msgid "variable %qD used in the % clause must be declared before %qD" -msgstr "Variablen im Adressraum %<__regio_symbol%> müssen als % deklariert werden" +msgstr "die in der %-Klausel verwendete Variable %qD muss vor %qD deklariert werden" #: c/c-parser.cc:20562 c/c-parser.cc:20585 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "to be allocated variable declared here" -msgstr "Templateparameter %qD hier deklariert" +msgstr "die zu allozierende Variable ist hier deklariert" #: c/c-parser.cc:20580 #, gcc-internal-format msgid "variable %qD used in the % clause must not be modified between declaration of %qD and its % directive" -msgstr "" +msgstr "die in der %-Klausel verwendete Variable %qD darf zwischen der Deklaration von %qD und der %-Direktive nicht verändert werden" #: c/c-parser.cc:20583 -#, fuzzy, gcc-internal-format -#| msgid "defined here" +#, gcc-internal-format msgid "modified here" -msgstr "hier definiert" +msgstr "hier verändert" #: c/c-parser.cc:20651 cp/parser.cc:42578 cp/parser.cc:42593 #, gcc-internal-format @@ -48628,39 +48301,34 @@ msgid "% clause allocator expression has type %qT rather than %-Klausel ist vom Typ %qT statt des erwarteten %" #: c/c-parser.cc:20692 -#, fuzzy, gcc-internal-format -#| msgid "parameter %qD may not appear in this context" +#, gcc-internal-format msgid "function parameter %qD may not appear as list item in an % directive" -msgstr "Parameter %qD darf in diesem Kontext nicht auftauchen" +msgstr "Funktionsparameter %qD darf nicht als Listenelement in einer %-Direktive erscheinen" #: c/c-parser.cc:20699 -#, fuzzy, gcc-internal-format -#| msgid "deduction guide %qD must be declared in the same scope as %qT" +#, gcc-internal-format msgid "% directive must be in the same scope as %qD" -msgstr "Herleitungshinweis %qD muss im selben Gültigkeitsbereich wie %qT deklariert sein" +msgstr "die %-Direktive muss sich im selben Bereich wie %qD befinden" #: c/c-parser.cc:20707 -#, fuzzy, gcc-internal-format -#| msgid "%qD appears more than once in % clauses" +#, gcc-internal-format msgid "%qD already appeared as list item in an % directive" -msgstr "%qD kommt in %-Klausel mehrfach vor" +msgstr "%qD erschien bereits als Listenelement in einer %-Direktive" #: c/c-parser.cc:20714 #, gcc-internal-format msgid "% clause required for static variable %qD" -msgstr "" +msgstr "%-Klausel für statische Variable %qD erforderlich" #: c/c-parser.cc:20721 -#, fuzzy, gcc-internal-format -#| msgid "% clause must specify an allocator here" +#, gcc-internal-format msgid "% clause requires a predefined allocator as %qD is static" -msgstr "%-Klausel muss hier einen Allozierer angeben" +msgstr "die %-Klausel erfordert einen vordefinierten Allokator, da %qD statisch ist" #: c/c-parser.cc:20725 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp allocate%> not yet supported" +#, gcc-internal-format msgid "%<#pragma omp allocate%> for static variables like %qD not yet supported" -msgstr "%<#pragma omp allocate%> wird nicht mehr unterstützt" +msgstr "%<#pragma omp allocate%> wird für statische Variablen wie %qD noch nicht unterstützt" #: c/c-parser.cc:20876 cp/parser.cc:42758 #, gcc-internal-format @@ -48700,16 +48368,14 @@ msgid "%qs clause requires %qs clause" msgstr "%qs-Klausel erfordert %qs-Klausel" #: c/c-parser.cc:21040 cp/parser.cc:42927 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic write%> incompatible with % clause" +#, gcc-internal-format msgid "%<#pragma omp atomic write%> incompatible with % clause implicitly provided by a % directive" -msgstr "%<#pragma omp atomic write%> ist unverträglich mit der Klausel %" +msgstr "%<#pragma omp atomic write%> inkompatibel mit %-Klausel, die implizit von einer %-Direktive bereitgestellt wird" #: c/c-parser.cc:21051 cp/parser.cc:42938 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic read%> incompatible with % clause" +#, gcc-internal-format msgid "%<#pragma omp atomic read%> incompatible with % clause implicitly provided by a % directive" -msgstr "%<#pragma omp atomic read%> ist unverträglich mit der Klausel %" +msgstr "%<#pragma omp atomic read%> inkompatibel mit %-Klausel, die implizit von einer %-Direktive bereitgestellt wird" #: c/c-parser.cc:21083 cp/parser.cc:42970 #, gcc-internal-format @@ -48773,15 +48439,14 @@ msgid "% expression is not lvalue expression" msgstr "Ausdruck % ist kein lvalue-Ausdruck" #: c/c-parser.cc:21845 -#, fuzzy, gcc-internal-format -#| msgid "% expression is not lvalue expression" +#, gcc-internal-format msgid "% expression is not lvalue expression" -msgstr "Ausdruck % ist kein lvalue-Ausdruck" +msgstr "%-Ausdruck ist kein Lvalue-Ausdruck" #: c/c-parser.cc:21851 cp/parser.cc:43744 #, gcc-internal-format msgid "the % expression %qE should be the same as the % argument %qE" -msgstr "" +msgstr "der %-Ausdruck %qE sollte mit dem %-Argument %qE identisch sein" #: c/c-parser.cc:21882 cp/parser.cc:43780 #, gcc-internal-format @@ -48814,10 +48479,9 @@ msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a stat msgstr "%<[[omp::directive(%s)]]%> muss das einzige angegebene Attribut in einer Anweisung sein" #: c/c-parser.cc:22086 cp/parser.cc:44617 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp taskwait%> may only be used in compound statements" +#, gcc-internal-format msgid "%<#pragma omp scan%> with zero preceding executable statements" -msgstr "%<#pragma omp taskwait%> darf nur in Verbundanweisungen verwendet werden" +msgstr "%<#pragma omp scan%> mit 0 vorhergehenden ausführbaren Anweisungen" #: c/c-parser.cc:22120 cp/parser.cc:44650 #, gcc-internal-format @@ -48830,10 +48494,9 @@ msgid "expected %<#pragma omp scan%>" msgstr "%<#pragma omp scan%> erwartet" #: c/c-parser.cc:22134 cp/parser.cc:44665 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp taskwait%> may only be used in compound statements" +#, gcc-internal-format msgid "%<#pragma omp scan%> with zero succeeding executable statements" -msgstr "%<#pragma omp taskwait%> darf nur in Verbundanweisungen verwendet werden" +msgstr "%<#pragma omp scan%> mit 0 nachfolgenden ausführbaren Anweisungen" #: c/c-parser.cc:22252 cp/semantics.cc:10734 cp/semantics.cc:10819 #, gcc-internal-format @@ -48842,10 +48505,9 @@ msgstr "Schleifendeklaration oder Initialisierung erwartet" #: c/c-parser.cc:22340 c/c-parser.cc:22355 cp/parser.cc:45012 #: cp/parser.cc:45027 -#, fuzzy, gcc-internal-format -#| msgid "not enough perfectly nested loops" +#, gcc-internal-format msgid "not enough nested loops" -msgstr "nicht genügend perfekt geschachtelte Schleifen" +msgstr "nicht genügend geschachtelte Schleifen" #: c/c-parser.cc:22455 cp/parser.cc:45299 #, gcc-internal-format @@ -48933,10 +48595,9 @@ msgid "expected trait selector name" msgstr "Name des Merkmalsselektors erwartet" #: c/c-parser.cc:24542 cp/parser.cc:47860 -#, fuzzy, gcc-internal-format -#| msgid "selector %qs not allowed for context selector set %qs" +#, gcc-internal-format msgid "unknown selector %qs for context selector set %qs" -msgstr "Selektor %qs nicht erlaubt für Kontext-Selektorsatz %qs" +msgstr "unbekannter Selektor %qs für Kontextselektormenge %qs" #: c/c-parser.cc:24570 cp/parser.cc:47889 #, gcc-internal-format @@ -48944,22 +48605,19 @@ msgid "selector %qs does not accept any properties" msgstr "Selektor %qs akzeptiert keine Eigenschaften" #: c/c-parser.cc:24592 cp/parser.cc:47921 -#, fuzzy, gcc-internal-format -#| msgid "% can only be specified inside a class" +#, gcc-internal-format msgid "% cannot be specified in traits in the %qs trait-selector-set" -msgstr "% kann nur innerhalb einer Klasse angegeben werden" +msgstr "% kann nicht in Traits in der Trait-Selektor-Menge %qs angegeben werden" #: c/c-parser.cc:24601 cp/parser.cc:47931 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be constant integer expression" +#, gcc-internal-format msgid "% argument must be constant integer expression" -msgstr "das Score-Argument muss ein konstanter ganzzahliger Ausdruck sein" +msgstr "das %-Argument muss ein konstanter ganzzahliger Ausdruck sein" #: c/c-parser.cc:24604 cp/parser.cc:47934 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be non-negative" +#, gcc-internal-format msgid "% argument must be non-negative" -msgstr "das Score-Argument darf nicht negativ sein" +msgstr "das %-Argument darf nicht negativ sein" #: c/c-parser.cc:24645 cp/parser.cc:47980 #, gcc-internal-format @@ -48980,16 +48638,14 @@ msgstr "Eigenschaften für %-Selektor dürfen nicht in % #. Currently only the now-deprecated syntax #. from OpenMP 5.0 is supported. #: c/c-parser.cc:24705 cp/parser.cc:48035 fortran/openmp.cc:5891 -#, fuzzy, gcc-internal-format -#| msgid "%qs clause on % directive not supported yet" +#, gcc-internal-format msgid "% selector is not supported yet" -msgstr "die %qs-Klausel wird in der %-Direktive noch nicht unterstützt" +msgstr "der %-Selektor wird noch nicht unterstützt" #: c/c-parser.cc:24764 cp/parser.cc:48098 -#, fuzzy, gcc-internal-format -#| msgid "expected trait selector name" +#, gcc-internal-format msgid "expected context selector set name" -msgstr "Name des Merkmalsselektors erwartet" +msgstr "Name der Kontextselektormenge erwartet" #: c/c-parser.cc:24841 cp/parser.cc:48413 #, gcc-internal-format @@ -49032,16 +48688,14 @@ msgid "%qD specified both in declare target % and % or % cla msgstr "%qD ist sowohl im Deklarationsziel % als auch in %- oder %-Klauseln angegeben" #: c/c-parser.cc:25199 cp/parser.cc:48882 -#, fuzzy, gcc-internal-format -#| msgid "directive with only % clause" +#, gcc-internal-format msgid "directive with only % or % clauses" -msgstr "Direktive mit nur %-Klausel" +msgstr "Direktive mit nur %- oder %-Klauseln" #: c/c-parser.cc:25202 cp/parser.cc:48885 -#, fuzzy, gcc-internal-format -#| msgid "% clause must not be used together with % clause" +#, gcc-internal-format msgid "% clause must specify 'any' when used with an % clause" -msgstr "%-Klausel darf nicht zusammen mit %-Klausel verwendet werden" +msgstr "die %-Klausel muss 'any' angeben, wenn sie mit einer %-Klausel verwendet wird" #: c/c-parser.cc:25251 c/c-parser.cc:25293 cp/parser.cc:48940 #: cp/parser.cc:48987 @@ -49132,10 +48786,9 @@ msgid "expected %, %, % or %" msgstr "%, %, % oder % erwartet" #: c/c-parser.cc:25837 cp/parser.cc:49589 -#, fuzzy, gcc-internal-format -#| msgid "expected %, %, % or %" +#, gcc-internal-format msgid "expected %, %, %, % or %" -msgstr "%, %, % oder % erwartet" +msgstr "%, %, %, % oder % erwartet" #: c/c-parser.cc:25866 cp/parser.cc:49624 #, gcc-internal-format @@ -49337,13 +48990,12 @@ msgstr "Operanden von dezimalen und anderen Gleitkommatypen können nicht gemisc #: c/c-typeck.cc:926 #, gcc-internal-format msgid "%<_Complex _BitInt(%d)%> unsupported" -msgstr "" +msgstr "%<_Complex _BitInt(%d)%> wird nicht unterstützt" #: c/c-typeck.cc:1472 -#, fuzzy, gcc-internal-format -#| msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C2X" +#, gcc-internal-format msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C23" -msgstr "ungültige Verwendung von Zeigern auf Arrays mit unterschiedlichen Qualifizierern in ISO C vor C2X" +msgstr "ungültige Verwendung von Zeigern auf Arrays mit unterschiedlichen Qualifizierern in ISO C vor C23" #: c/c-typeck.cc:1476 #, gcc-internal-format @@ -49361,10 +49013,9 @@ msgid "function return types not compatible due to %" msgstr "Funktionsrückgabetypen nicht kompatibel wegen %" #: c/c-typeck.cc:1905 -#, fuzzy, gcc-internal-format -#| msgid "converting an array compound literal to a pointer is ill-formed in C++" +#, gcc-internal-format msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++" -msgstr "Umwandlung eines zusammengesetzten Arrayliterals ist in C++ ungültig" +msgstr "Umwandlung eines zusammengesetzten Arrayliterals in einen Zeiger führt in C++ zu einem baumelnden Zeiger" #: c/c-typeck.cc:2599 c/c-typeck.cc:9852 #, gcc-internal-format @@ -49740,10 +49391,9 @@ msgid "pointer to array loses qualifier in conditional expression" msgstr "Zeiger auf Array verliert durch den Bedingungsausdruck Qualifizierer" #: c/c-typeck.cc:5665 -#, fuzzy, gcc-internal-format -#| msgid "pointer to array loses qualifier in conditional expression in ISO C before C2X" +#, gcc-internal-format msgid "pointer to array loses qualifier in conditional expression in ISO C before C23" -msgstr "Zeiger auf Array verliert durch den Bedingungsausdruck Qualifizierer, in ISO C vor C2X" +msgstr "Zeiger auf Array verliert durch den Bedingungsausdruck Qualifizierer, in ISO C vor C23" #: c/c-typeck.cc:5670 #, gcc-internal-format @@ -49756,16 +49406,14 @@ msgid "pointer type mismatch in conditional expression" msgstr "Zeigertyp passt nicht in bedingtem Ausdruck" #: c/c-typeck.cc:5695 -#, fuzzy, gcc-internal-format -#| msgid "Expected expression type" +#, gcc-internal-format msgid "first expression has type %qT" -msgstr "Ausdruckstyp erwartet" +msgstr "der erste Ausdruck hat den Typ %qT" #: c/c-typeck.cc:5696 -#, fuzzy, gcc-internal-format -#| msgid "Expected expression type" +#, gcc-internal-format msgid "second expression has type %qT" -msgstr "Ausdruckstyp erwartet" +msgstr "der zweite Ausdruck hat den Typ %qT" #: c/c-typeck.cc:5707 c/c-typeck.cc:5720 #, gcc-internal-format @@ -49841,10 +49489,9 @@ msgid "ISO C forbids casting nonscalar to the same type" msgstr "ISO-C verbietet Typkonvertierung von Nicht-Skalar auf selben Typen" #: c/c-typeck.cc:6199 -#, fuzzy, gcc-internal-format -#| msgid "useless cast to type %q#T" +#, gcc-internal-format msgid "useless cast to type %qT" -msgstr "nutzlose Umwandlung in Typ %q#T" +msgstr "nutzlose Umwandlung in Typ %qT" #: c/c-typeck.cc:6219 #, gcc-internal-format @@ -50104,10 +49751,9 @@ msgid "ISO C forbids return between function pointer and %" msgstr "ISO-C verbietet return zwischen Funktionszeiger und %" #: c/c-typeck.cc:7769 -#, fuzzy, gcc-internal-format -#| msgid "array with qualifier on the element is not qualified before C2X" +#, gcc-internal-format msgid "array with qualifier on the element is not qualified before C23" -msgstr "Array mit Qualifizierer auf dem Element wird vor C2X nicht qualifiziert" +msgstr "Array mit Qualifizierer auf dem Element wird vor C23 nicht qualifiziert" #: c/c-typeck.cc:7786 #, gcc-internal-format @@ -50396,10 +50042,9 @@ msgid "enum conversion in initialization is invalid in C++" msgstr "enum-Umwandlung in Initialisierung ist in C++ ungültig" #: c/c-typeck.cc:10834 -#, fuzzy, gcc-internal-format -#| msgid "excess elements in union initializer" +#, gcc-internal-format msgid "excess elements in %qT initializer" -msgstr "Elementüberschreitung in union-Initialisierung" +msgstr "überzählige Elemente in %qT-Initialisierer" #: c/c-typeck.cc:10846 c/c-typeck.cc:10923 #, gcc-internal-format @@ -51000,10 +50645,9 @@ msgstr "Arrayabschnitt in %qs-Klausel hat keinen zuordenbaren Typ" #: c/c-typeck.cc:15565 c/c-typeck.cc:15641 c/c-typeck.cc:15677 #: cp/semantics.cc:8326 cp/semantics.cc:8405 cp/semantics.cc:8441 -#, fuzzy, gcc-internal-format -#| msgid "unsupported memory expression:" +#, gcc-internal-format msgid "unsupported map expression %qE" -msgstr "nicht unterstützter Speicherausdruck:" +msgstr "nicht unterstützter Map-Ausdruck %qE" #: c/c-typeck.cc:15605 c/c-typeck.cc:15782 cp/semantics.cc:8367 #: cp/semantics.cc:8585 @@ -51266,16 +50910,14 @@ msgid "invalid type of %<__MEM%> operand" msgstr "Interner Fehler: invalid type of %<__MEM%> operand" #: c/gimple-parser.cc:1563 -#, fuzzy, gcc-internal-format -#| msgid "expected constant offset" +#, gcc-internal-format msgid "expected constant offset for %<__MEM%> operand" -msgstr "konstanter Offset erwartet" +msgstr "Interner Fehler: expected constant offset for %<__MEM%> operand" #: c/gimple-parser.cc:1574 -#, fuzzy, gcc-internal-format -#| msgid "invalid type of %<__MEM%> operand" +#, gcc-internal-format msgid "expected constant step for %<__MEM%> operand" -msgstr "Interner Fehler: invalid type of %<__MEM%> operand" +msgstr "Interner Fehler: expected constant step for %<__MEM%> operand" #: c/gimple-parser.cc:1627 #, gcc-internal-format @@ -51413,10 +51055,9 @@ msgstr "%s%#qD (in der Nähe der Übereinstimmung)" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93880 #: cp/call.cc:3954 -#, fuzzy, gcc-internal-format -#| msgid "%s%#qD (reversed)" +#, gcc-internal-format msgid "%s%#qD (ignored)" -msgstr "%s%#qD (umgekehrt)" +msgstr "%s%#qD (ignoriert)" #: cp/call.cc:3956 #, gcc-internal-format @@ -51478,7 +51119,7 @@ msgstr " ein geerbter Konstruktor ist kein Kandidat für Initialisierung aus ei #: cp/call.cc:4109 #, gcc-internal-format msgid "some candidates omitted; use %<-fdiagnostics-all-candidates%> to display them" -msgstr "" +msgstr "einige Kandidaten wurden ausgelassen; verwenden Sie %<-fdiagnostics-all-candidates%>, um sie anzuzeigen" #: cp/call.cc:4190 cp/call.cc:4735 #, gcc-internal-format @@ -51667,16 +51308,14 @@ msgid "enumerated mismatch in conditional expression: %qT vs %qT" msgstr "bedingter Ausdruck enthält unverträgliche Aufzählungswerte der Typen %qT und %qT" #: cp/call.cc:6263 -#, fuzzy, gcc-internal-format -#| msgid "conditional expression between enumeration type %qT and floating-point type %qT is deprecated" +#, gcc-internal-format msgid "conditional expression between enumeration type %qT and floating-point type %qT" -msgstr "Bedingungsausdruck zwischen Aufzählungstyp %qT und Gleitkommatyp %qT ist veraltet" +msgstr "Bedingungsausdruck zwischen Aufzählungstyp %qT und Gleitkommatyp %qT" #: cp/call.cc:6267 -#, fuzzy, gcc-internal-format -#| msgid "conditional expression between floating-point type %qT and enumeration type %qT is deprecated" +#, gcc-internal-format msgid "conditional expression between floating-point type %qT and enumeration type %qT" -msgstr "Bedingungsausdruck zwischen Gleitkommatyp %qT und Aufzählungstyp %qT ist veraltet" +msgstr "Bedingungsausdruck zwischen Gleitkommatyp %qT und Aufzählungstyp %qT" #: cp/call.cc:6271 #, gcc-internal-format @@ -51834,16 +51473,12 @@ msgid "converting to %qH from %qI requires direct-initialization" msgstr "Umwandlung von %qH nach %qI erfordert direkte Initialisierung" #: cp/call.cc:8447 -#, fuzzy -#| msgid "converting to %qH from %qI with greater conversion rank" msgid "ISO C++ does not allow converting to %qH from %qI with greater conversion rank" -msgstr "Umwandlung nach %qH von %qI mit größerem Konvertierungsrang" +msgstr "ISO C++ erlaubt keine Konvertierung in %qH von %qI mit größerem Konvertierungsrang" #: cp/call.cc:8455 -#, fuzzy -#| msgid "converting to %qH from %qI with unordered conversion ranks" msgid "ISO C++ does not allow converting to %qH from %qI with unordered conversion rank" -msgstr "Umwandlung nach %qH von %qI mit ungeordneten Konvertierungsrängen" +msgstr "ISO C++ erlaubt keine Konvertierung in %qH aus %qI mit ungeordnetem Konvertierungsrang" #: cp/call.cc:8471 msgid "invalid user-defined conversion from %qH to %qI" @@ -51950,7 +51585,7 @@ msgstr "Verwendung einer multiversionierten Funktion ohne Standardargument" #: cp/call.cc:10002 #, gcc-internal-format msgid "use %<-fdiagnostics-all-candidates%> to display considered candidates" -msgstr "" +msgstr "verwenden Sie %<-fdiagnostics-all-candidates%>, um die in Frage kommenden Kandidaten anzuzeigen" #: cp/call.cc:10125 #, gcc-internal-format @@ -52246,7 +51881,7 @@ msgstr "das temporäre Objekt wurde am Ende des vollständigen Ausdrucks %qE zer #: cp/call.cc:14550 #, gcc-internal-format msgid "explicit conversion function was not considered" -msgstr "" +msgstr "explizite Umwandlungsfunktion wurde nicht berücksichtigt" #: cp/class.cc:322 #, gcc-internal-format @@ -52538,7 +52173,7 @@ msgstr "das Zeigerelement %q+D wurde hier deklariert" #: cp/class.cc:4316 #, gcc-internal-format msgid "layout of %qs member of type %qT changes in %qs" -msgstr "" +msgstr "das Layout des Members %qs vom Typ %qT ändert sich in %qs" #: cp/class.cc:4709 #, gcc-internal-format @@ -52771,16 +52406,14 @@ msgid "converting overloaded function %qD to type %q#T is ambiguous" msgstr "Umwandung der überladenen Funktion %qD in den Typ %q#T ist mehrdeutig" #: cp/class.cc:8979 -#, fuzzy, 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%>" +#, gcc-internal-format msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function." -msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwenden" +msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen." #: cp/class.cc:8984 -#, fuzzy, gcc-internal-format -#| msgid "(a pointer to member can only be formed with %<&%E%>)" +#, gcc-internal-format msgid "a pointer to explicit object member function can only be formed with %<&%E%>" -msgstr "(ein Zeiger auf ein Element kann nur mit %<»&%E%> erzeugt werden)" +msgstr "ein Zeiger auf eine explizite Objekt-Member-Funktion kann nur mit %<&%E%> gebildet werden" #: cp/class.cc:8994 #, gcc-internal-format @@ -52887,7 +52520,7 @@ msgstr "%qD ist nicht als %-Funktion verwendbar, denn:" #: cp/constexpr.cc:1320 cp/constexpr.cc:6349 #, gcc-internal-format msgid "destroying %qE outside its lifetime" -msgstr "" +msgstr "%qE wird außerhalb seiner Lebensdauer zerstört" #: cp/constexpr.cc:1611 cp/constexpr.cc:3308 #: rust/backend/rust-constexpr.cc:3326 rust/backend/rust-constexpr.cc:3589 @@ -53039,21 +52672,19 @@ msgid "% evaluation depth exceeds maximum of %d (use %<-fconstexpr-d msgstr "Auswertungstiefe von % überschreitet Höchstwert %d (%<-fconstexpr-depth=%> verwenden, um dies zu erhöhen)" #: cp/constexpr.cc:3538 -#, fuzzy, gcc-internal-format -#| msgid "expression %qE is not a constant expression" +#, gcc-internal-format msgid "reference to %qD is not a constant expression" -msgstr "Ausdruck %qE ist kein Konstantenausdruck" +msgstr "Referenz auf %qD ist kein Konstantenausdruck" #: cp/constexpr.cc:3541 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not a constant expression" +#, gcc-internal-format msgid "pointer to %qD is not a constant expression" -msgstr "%qE ist kein Konstantenausdruck" +msgstr "Zeiger auf %qD ist kein Konstantenausdruck" #: cp/constexpr.cc:3547 #, gcc-internal-format msgid "address of non-static constexpr variable %qD may differ on each invocation of the enclosing function; add % to give it a constant address" -msgstr "" +msgstr "die Adresse der nicht-statischen constexpr-Variablen %qD kann sich bei jedem Aufruf der umschließenden Funktion ändern; fügen Sie % hinzu, um ihr eine konstante Adresse zu geben" #: cp/constexpr.cc:3623 #, gcc-internal-format @@ -53229,10 +52860,9 @@ msgid "allocated here" msgstr "wurde hier deklariert" #: cp/constexpr.cc:5981 -#, fuzzy, gcc-internal-format -#| msgid "Access terminates outside of its parent" +#, gcc-internal-format msgid "accessing %qE outside its lifetime" -msgstr "Zugriff endet außerhalb des Elternteils" +msgstr "Zugriff auf %qE außerhalb seiner Lebensdauer" #: cp/constexpr.cc:6001 #, gcc-internal-format @@ -53275,44 +52905,39 @@ msgid "%qD does not have integral or enumeration type" msgstr "%qD hat keinen Ganzzahl- oder Aufzählungstyp" #: cp/constexpr.cc:6342 -#, fuzzy, gcc-internal-format -#| msgid "use of allocated storage after deallocation in a constant expression" +#, gcc-internal-format msgid "modification of allocated storage after deallocation is not a constant expression" -msgstr "angeforderter Speicher wird in konstantem Ausdruck verwendet, nachdem er wieder freigegeben wurde" +msgstr "die Änderung des zugewiesenen Speichers nach der Freigabe ist kein konstanter Ausdruck" #: cp/constexpr.cc:6351 -#, fuzzy, gcc-internal-format -#| msgid "modification of %qE is not a constant expression" +#, gcc-internal-format msgid "modification of %qE outside its lifetime is not a constant expression" -msgstr "Modifikation von %qE ist kein konstanter Ausdruck" +msgstr "Modifikation von %qE außerhalb seiner Lebenszeit ist kein konstanter Ausdruck" #: cp/constexpr.cc:6358 -#, fuzzy, gcc-internal-format -#| msgid "% is not a constant expression" +#, gcc-internal-format msgid "destroying %qE from outside current evaluation is not a constant expression" -msgstr "Ein % ist kein konstanter Ausdruck" +msgstr "das Zerstören von %qE außerhalb der aktuellen Auswertung ist kein konstanter Ausdruck" #: cp/constexpr.cc:6361 -#, fuzzy, gcc-internal-format -#| msgid "modification of %qE is not a constant expression" +#, gcc-internal-format msgid "modification of %qE from outside current evaluation is not a constant expression" -msgstr "Modifikation von %qE ist kein konstanter Ausdruck" +msgstr "Modifikation von %qE von außerhalb der aktuellen Auswertung ist kein konstanter Ausdruck" #: cp/constexpr.cc:6488 -#, fuzzy, gcc-internal-format -#| msgid "change of the active member of a union from %qD to %qD during initialization" +#, gcc-internal-format msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20" -msgstr "Änderung des aktiven Elements einer union von %qD zu %qD während der Initialisierung" +msgstr "Änderung des aktiven Elements einer union von %qD zu %qD ist vor C++20 kein konstanter Ausdruck" #: cp/constexpr.cc:6517 #, gcc-internal-format msgid "%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use % instead" -msgstr "" +msgstr "%qD beginnt seine Lebensdauer nicht implizit, da %qT keinen nicht gelöschten trivialen Standardkonstruktor hat; verwenden Sie stattdessen %" #: cp/constexpr.cc:6524 #, gcc-internal-format msgid "initializing %qD requires a member access expression as the left operand of the assignment" -msgstr "" +msgstr "die Initialisierung von %qD erfordert einen Ausdruck für den Memberzugriff als linken Operanden der Zuweisung" #: cp/constexpr.cc:6536 rust/backend/rust-constexpr.cc:2822 #, gcc-internal-format @@ -53402,28 +53027,24 @@ msgid "conversion from pointer type %qT to arithmetic type %qT in a constant exp msgstr "Umwandlung von Zeigertyp %qT in arithmetischen Typ %qT in Konstantenausdruck" #: cp/constexpr.cc:8153 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT" -msgstr "%qE ist kein Konstantenausdruck, da er auf veränderliche Teilobjekte von %qT verweist" +msgstr "der Cast von %qT ist in einem konstanten Ausdruck nicht zulässig, da der Typ %qT, auf den gezeigt wird, %qT nicht ähnlich ist" #: cp/constexpr.cc:8160 -#, fuzzy, gcc-internal-format -#| msgid "pointer member %q+D declared here" +#, gcc-internal-format msgid "pointed-to object declared here" -msgstr "das Zeigerelement %q+D wurde hier deklariert" +msgstr "der Typ, auf den gezeigt wird, ist hier deklariert" #: cp/constexpr.cc:8165 -#, fuzzy, gcc-internal-format -#| msgid "%qs is not a constant expression because %qT is a pointer to member type" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression because %qE does not point to an object" -msgstr "%qs ist kein konstanter Ausdruck, da %qT ein Zeiger-auf-Element-Typ ist" +msgstr "der Cast von %qT ist in einem konstanten Ausdruck nicht zulässig, da %qE nicht auf ein Objekt zeigt" #: cp/constexpr.cc:8177 -#, fuzzy, gcc-internal-format -#| msgid "modifying a const object %qE is not allowed in a constant expression" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression before C++26" -msgstr "in einem konstanten Ausdruck ist es nicht erlaubt, das %-Objekt %qE zu verändern" +msgstr "der Cast von %qT ist in einem konstanten Ausdruck vor C++26 nicht erlaubt" #: cp/constexpr.cc:8191 #, gcc-internal-format @@ -53497,10 +53118,9 @@ msgid "immediate evaluation returns address of immediate function %qD" msgstr "unmittelbare Auswertung liefert die Adresse der unmittelbaren Funktion %qD" #: cp/constexpr.cc:8913 -#, fuzzy, gcc-internal-format -#| msgid "immediate evaluation returns address of immediate function %qD" +#, gcc-internal-format msgid "constant evaluation returns address of immediate function %qD" -msgstr "unmittelbare Auswertung liefert die Adresse der unmittelbaren Funktion %qD" +msgstr "Konstantenauswertung liefert Adresse der unmittelbaren Funktion %qD" #: cp/constexpr.cc:9551 rust/backend/rust-constexpr.cc:5667 #, gcc-internal-format @@ -53812,10 +53432,9 @@ msgid " %qT is not an aggregate" msgstr " %qT kein Aggregat ist" #: cp/constraint.cc:3755 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an aggregate" +#, gcc-internal-format msgid " %qT is not an array" -msgstr " %qT kein Aggregat ist" +msgstr " %qT kein Array ist" #: cp/constraint.cc:3758 #, gcc-internal-format @@ -53828,10 +53447,9 @@ msgid " %qT is not a base of %qT" msgstr " %qT keine Basis von %qT ist" #: cp/constraint.cc:3764 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an aggregate" +#, gcc-internal-format msgid " %qT is not a bounded array" -msgstr " %qT kein Aggregat ist" +msgstr " %qT kein begrenztes Array ist" #: cp/constraint.cc:3767 #, gcc-internal-format @@ -53869,10 +53487,9 @@ msgid " %qT is not a final class" msgstr " %qT keine finale Klasse ist" #: cp/constraint.cc:3788 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not a union" +#, gcc-internal-format msgid " %qT is not a function" -msgstr " %qT kein Vereinigungstyp ist" +msgstr " %qT keine Funktion ist" #: cp/constraint.cc:3791 #, gcc-internal-format @@ -53885,22 +53502,19 @@ msgid " %qT is not a literal type" msgstr " %qT kein literaler Typ ist" #: cp/constraint.cc:3797 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a member template function" +#, gcc-internal-format msgid " %qT is not a member function pointer" -msgstr "%qD ist keine Elementtemplatefunktion" +msgstr " %qT kein Member-Funktionszeiger ist" #: cp/constraint.cc:3800 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a member of %qT" +#, gcc-internal-format msgid " %qT is not a member object pointer" -msgstr "%qT ist kein Element von %qT" +msgstr " %qT kein Member-Objektzeiger ist" #: cp/constraint.cc:3803 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a member of %qT" +#, gcc-internal-format msgid " %qT is not a member pointer" -msgstr "%qT ist kein Element von %qT" +msgstr " %qT kein Member-Zeiger ist" #: cp/constraint.cc:3806 #, gcc-internal-format @@ -53918,10 +53532,9 @@ msgid " %qT is not nothrow convertible from %qE" msgstr " %qT kann nicht per % von %qE umgewandelt werden" #: cp/constraint.cc:3818 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not a POD type" +#, gcc-internal-format msgid " %qT is not an object type" -msgstr " %qT kein POD-Typ ist" +msgstr " %qT kein Objekttyp ist" #: cp/constraint.cc:3821 #, gcc-internal-format @@ -53939,10 +53552,9 @@ msgid " %qT is not a polymorphic type" msgstr " %qT kein polymorpher Typ ist" #: cp/constraint.cc:3831 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an enum" +#, gcc-internal-format msgid " %qT is not a reference" -msgstr " %qT keine Aufzählung ist" +msgstr " %qT keine Referenz ist" #: cp/constraint.cc:3834 #, gcc-internal-format @@ -53950,10 +53562,9 @@ msgid " %qT is not the same as %qT" msgstr " %qT nicht derselbe Typ wie %qT ist" #: cp/constraint.cc:3837 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an enum" +#, gcc-internal-format msgid " %qT is not a scoped enum" -msgstr " %qT keine Aufzählung ist" +msgstr " %qT keine Aufzählung mit Gültigkeitsbereich ist" #: cp/constraint.cc:3840 #, gcc-internal-format @@ -54362,13 +53973,12 @@ msgstr "beide Zweige der %-Anweisung als %qs markiert" #: cp/cp-gimplify.cc:536 #, gcc-internal-format msgid "%qD was promoted to an immediate function because its body contains an immediate-escalating expression %qE" -msgstr "" +msgstr "%qD wurde in eine unmittelbare Funktion umgewandelt, da ihr Rumpf einen unmittelbar-eskalierenden Ausdruck %qE enthält" #: cp/cp-gimplify.cc:539 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a template function" +#, gcc-internal-format msgid "%qD was promoted to an immediate function" -msgstr "%qD ist keine Templatefunktion" +msgstr "%qD wurde zu einer unmittelbaren Funktion befördert" #: cp/cp-gimplify.cc:1164 #, gcc-internal-format @@ -54376,10 +53986,9 @@ msgid "taking address of an immediate function %qD" msgstr "Adresse der direkten Funktion %qD wird genommen" #: cp/cp-gimplify.cc:1263 -#, fuzzy, gcc-internal-format -#| msgid "address of a call to %qs is not a constant expression" +#, gcc-internal-format msgid "call to consteval function %qE is not a constant expression" -msgstr "Adresse des Aufrufs von %qs ist kein konstanter Ausdruck" +msgstr "Aufruf der consteval-Funktion %qE ist kein konstanter Ausdruck" #: cp/cp-gimplify.cc:2002 #, gcc-internal-format @@ -55004,51 +54613,44 @@ msgid "%q#D previously declared here" msgstr "%q#D wurde bereits hier deklariert" #: cp/decl.cc:2097 -#, fuzzy, gcc-internal-format -#| msgid "method declaration not in @interface context" +#, gcc-internal-format msgid "parameter declaration is not name-independent" -msgstr "Methodendeklaration nicht im @interface-Kontext" +msgstr "Parameterdeklaration ist nicht namensunabhängig" #: cp/decl.cc:2102 -#, fuzzy, gcc-internal-format -#| msgid "structured binding declaration set but not used" +#, gcc-internal-format msgid "structured binding at namespace scope is not name-independent" -msgstr "Deklaration für strukturierte Bindung festgelegt, aber nicht verwendet" +msgstr "die strukturierte Bindung im Namespace-Bereich ist nicht namenunabhängig" #: cp/decl.cc:2106 -#, fuzzy, gcc-internal-format -#| msgid "structured binding has incomplete type %qT" +#, gcc-internal-format msgid "static structured binding is not name-independent" -msgstr "Strukturierte Bindung hat unvollständigen Typen %qT" +msgstr "statische strukturierte Bindung ist nicht namenunabhängig" #: cp/decl.cc:2110 -#, fuzzy, gcc-internal-format -#| msgid "structured binding has incomplete type %qT" +#, gcc-internal-format msgid "extern structured binding is not name-independent" -msgstr "Strukturierte Bindung hat unvollständigen Typen %qT" +msgstr "extern strukturierte Bindung ist nicht namenunabhängig" #: cp/decl.cc:2117 -#, fuzzy, gcc-internal-format -#| msgid "static data member %qD in unnamed class" +#, gcc-internal-format msgid "static data member is not name-independent" -msgstr "statisches Datenelement %qD in unbenannter Klasse" +msgstr "statisches Datenelement ist nicht namenunabhängig" #: cp/decl.cc:2120 #, gcc-internal-format msgid "variable at namespace scope is not name-independent" -msgstr "" +msgstr "variable im Namensraumbereich ist nicht namenunabhängig" #: cp/decl.cc:2123 -#, fuzzy, gcc-internal-format -#| msgid "%qs variable is not a pointer" +#, gcc-internal-format msgid "static variable is not name-independent" -msgstr "Variable %qs muss ein Zeiger sein" +msgstr "statische Variable ist nicht namensunabhängig" #: cp/decl.cc:2126 -#, fuzzy, gcc-internal-format -#| msgid "environment variable %qs not defined" +#, gcc-internal-format msgid "extern variable is not name-independent" -msgstr "Umgebungsvariable %qs nicht definiert" +msgstr "externe Variable ist nicht namenunabhängig" #: cp/decl.cc:2138 #, gcc-internal-format @@ -55096,16 +54698,14 @@ msgid "import declared %q#D here" msgstr "der Import hat %q#D hier deklariert" #: cp/decl.cc:2306 cp/decl.cc:16628 -#, fuzzy, gcc-internal-format -#| msgid "conflicting exporting declaration %qD" +#, gcc-internal-format msgid "conflicting exporting for declaration %qD" -msgstr "in Konflikt stehende Export-Deklaration %qD" +msgstr "in Konflikt stehender Export für Deklaration %qD" #: cp/decl.cc:2308 cp/decl.cc:16630 -#, fuzzy, gcc-internal-format -#| msgid "previously declared here" +#, gcc-internal-format msgid "previously declared here without exporting" -msgstr "vorher hier deklariert" +msgstr "vorher hier ohne Export deklariert" #: cp/decl.cc:2335 #, gcc-internal-format @@ -55235,7 +54835,7 @@ msgstr "Sprung zur case-Marke" #: cp/decl.cc:3694 #, gcc-internal-format msgid " as a possible target of computed goto" -msgstr "" +msgstr " als ein mögliches Ziel des berechneten goto" #: cp/decl.cc:3696 #, gcc-internal-format @@ -55288,16 +54888,14 @@ msgid " enters % statement" msgstr " betritt %-Anweisung" #: cp/decl.cc:3829 cp/decl.cc:4003 -#, fuzzy, gcc-internal-format -#| msgid "ISO C99 does not support %qE" +#, gcc-internal-format msgid " does not destroy %qD" -msgstr "ISO-C99 unterstützt nicht %qE" +msgstr " zerstört %qD nicht" #: cp/decl.cc:3831 cp/decl.cc:3986 -#, fuzzy, gcc-internal-format -#| msgid "%s does not take any feature options" +#, gcc-internal-format msgid " does not clean up handled exception" -msgstr "%s akzeptiert keine Featureoptionen" +msgstr " bereinigt die behandelte Ausnahme nicht" #: cp/decl.cc:3922 #, gcc-internal-format @@ -56139,15 +55737,14 @@ msgid "constraints on a non-templated function" msgstr "Einschränkungen auf einer Funktion, die kein Template hat" #: cp/decl.cc:10590 -#, fuzzy, gcc-internal-format -#| msgid "friend declaration not in class definition" +#, gcc-internal-format msgid "constrained non-template friend declaration must be a definition" -msgstr "friend-Deklaration nicht in Klassendefinition" +msgstr "eingeschränkte Nicht-Template-friend-Deklaration muss eine Definition sein" #: cp/decl.cc:10597 #, gcc-internal-format msgid "friend function template with constraints that depend on outer template parameters must be a definition" -msgstr "" +msgstr "friend-Funktionstemplate mit Einschränkungen, die von äußeren Templateparametern abhängen, muss eine Definition sein" #: cp/decl.cc:10646 #, gcc-internal-format @@ -56205,10 +55802,9 @@ msgid "static member function %qD cannot have cv-qualifier" msgstr "statische Elementfunktion %qD kann nicht CV-Qualifizierer haben" #: cp/decl.cc:10818 -#, fuzzy, gcc-internal-format -#| msgid "static member function %qD cannot have cv-qualifier" +#, gcc-internal-format msgid "explicit object member function %qD cannot have cv-qualifier" -msgstr "statische Elementfunktion %qD kann nicht CV-Qualifizierer haben" +msgstr "explizite Objekt-Member-Funktion %qD kann keine CV-Qualifizierer haben" #: cp/decl.cc:10823 #, gcc-internal-format @@ -56221,16 +55817,14 @@ msgid "static member function %qD cannot have ref-qualifier" msgstr "statische Elementfunktion %qD kann keinen ref-Qualifizierer haben" #: cp/decl.cc:10826 -#, fuzzy, gcc-internal-format -#| msgid "static member function %qD cannot have ref-qualifier" +#, gcc-internal-format msgid "explicit object member function %qD cannot have ref-qualifier" -msgstr "statische Elementfunktion %qD kann keinen ref-Qualifizierer haben" +msgstr "explizite Objekt-Member-Funktion %qD kann keinen ref-qualifier haben" #: cp/decl.cc:10832 cp/decl.cc:13715 cp/decl.cc:13725 cp/parser.cc:11972 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "explicit object parameter declared here" -msgstr "Templateparameter %qD hier deklariert" +msgstr "expliziter Objektparameter wird hier deklariert" #: cp/decl.cc:10844 #, gcc-internal-format @@ -56815,50 +56409,44 @@ msgid "remove parentheses" msgstr "entfernen Sie die Klammern" #: cp/decl.cc:13345 -#, fuzzy, gcc-internal-format -#| msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "explicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>" -msgstr "Alias-Template-Herleitung ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfügbar" +msgstr "explizite Objekt-Member-Funktion ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfügbar" #: cp/decl.cc:13359 -#, fuzzy, gcc-internal-format -#| msgid "Function %qs at %L cannot have an initializer" +#, gcc-internal-format msgid "a function type cannot have an explicit object parameter" -msgstr "Funktion %qs bei %L darf keinen Initialisierer haben" +msgstr "ein Funktionstyp kann keinen expliziten Objektparameter haben" #: cp/decl.cc:13365 -#, fuzzy, gcc-internal-format -#| msgid "a conversion function cannot have a trailing return type" +#, gcc-internal-format msgid "a pointer to function type cannot have an explicit object parameter" -msgstr "eine Umwandlungsfunktion darf keinen angehängten Rückgabetyp haben" +msgstr "ein Zeiger auf einen Funktionstyp kann keinen expliziten Objektparameter haben" #: cp/decl.cc:13369 -#, fuzzy, gcc-internal-format -#| msgid " member function type %qT is not a valid template argument" +#, gcc-internal-format msgid "a pointer to member function type cannot have an explicit object parameter" -msgstr " Typ %qT von Elementfunktion ist kein gültiges Templateargument" +msgstr "ein Zeiger auf einen Memberfunktionstyp kann keinen expliziten Objektparameter haben" #: cp/decl.cc:13377 #, gcc-internal-format msgid "the type of a pointer to explicit object member function is a regular pointer to function type" -msgstr "" +msgstr "der Typ eines Zeigers auf eine explizite Objekt-Member-Funktion ist ein normaler Funktionszeiger-Typ" #: cp/decl.cc:13381 -#, fuzzy, gcc-internal-format -#| msgid "typedef may not be a member function definition" +#, gcc-internal-format msgid "the type of an explicit object member function is a regular function type" -msgstr "mit % definierte Elementfunktion darf keinen Rumpf %<{ … }%> haben" +msgstr "der Typ einer expliziten Objekt-Member-Funktion ist ein normaler Funktionstyp" #: cp/decl.cc:13402 #, gcc-internal-format msgid "only the first parameter of a member function can be declared as an explicit object parameter" -msgstr "" +msgstr "nur der erste Parameter einer Memberfunktion kann als expliziter Objektparameter deklariert werden" #: cp/decl.cc:13407 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "valid explicit object parameter declared here" -msgstr "Templateparameter %qD hier deklariert" +msgstr "gültiger expliziter Objektparameter wird hier deklariert" #: cp/decl.cc:13411 #, gcc-internal-format @@ -57006,22 +56594,19 @@ msgid "friend function definition %qs cannot have a name qualified with %<%D::%> msgstr "Definition der Freundfunktion %qs kann keinen Namen haben, der mit %<%D::%> qualifiziert ist" #: cp/decl.cc:13704 -#, fuzzy, gcc-internal-format -#| msgid "non-member function %qD cannot have cv-qualifier" +#, gcc-internal-format msgid "a non-member function cannot have an explicit object parameter" -msgstr "Nicht-Elementfunktion %qD kann nicht CV-Qualifizierer haben" +msgstr "eine Funktion, die kein Member ist, kann keinen expliziten Objektparameter haben" #: cp/decl.cc:13712 -#, fuzzy, gcc-internal-format -#| msgid "implicit templates may not be %" +#, gcc-internal-format msgid "an explicit object member function cannot be %" -msgstr "Implizite Templates dürfen nicht % sein" +msgstr "eine explizite Objekt-Member-Funktion kann nicht % sein" #: cp/decl.cc:13722 -#, fuzzy, gcc-internal-format -#| msgid "structured binding declaration cannot be %" +#, gcc-internal-format msgid "an explicit object member function cannot be %" -msgstr "Deklaration für strukturierte Bindung darf nicht als % deklariert werden" +msgstr "eine explizite Objekt-Member-Funktion kann nicht % sein" #: cp/decl.cc:13748 #, gcc-internal-format @@ -57405,10 +56990,9 @@ msgid "storage class % invalid for function %qs" msgstr "Speicherklasse % ungültig für Funktion %qs" #: cp/decl.cc:15015 -#, fuzzy, gcc-internal-format -#| msgid "alignment specified for function %qE" +#, gcc-internal-format msgid "% specifier invalid for function %qs" -msgstr "Ausrichtung für Funktion %qE angegeben" +msgstr "%-Angabe ungültig für Funktion %qs" #: cp/decl.cc:15018 #, gcc-internal-format @@ -57786,8 +57370,7 @@ msgid "duplicate base type %qT invalid" msgstr "doppelter Basistyp %qT ungültig" #: cp/decl.cc:16969 -#, fuzzy, gcc-internal-format -#| msgid "cannot declare %qD in a different module" +#, gcc-internal-format msgid "cannot declare %qD in different module" msgstr "%qD kann nicht in einem anderen Modul deklariert sein" @@ -59715,10 +59298,9 @@ msgid "unknown header kind %qs" msgstr "unbekannte Header-Art %qs" #: cp/name-lookup.cc:2856 cp/name-lookup.cc:3932 cp/name-lookup.cc:4029 -#, fuzzy, gcc-internal-format -#| msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "name-independent declarations only available with %<-std=c++2c%> or %<-std=gnu++2c%>" -msgstr "Alias-Template-Herleitung ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfügbar" +msgstr "namensunabhängige Deklarationen sind erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfügbar" #: cp/name-lookup.cc:2887 #, gcc-internal-format @@ -59776,28 +59358,24 @@ msgid "%s %s %p %d" msgstr "%s %s %p %d" #: cp/name-lookup.cc:5101 -#, fuzzy, gcc-internal-format -#| msgid "%q#D does not have external linkage" +#, gcc-internal-format msgid "exporting %q#D that does not have external linkage" -msgstr "%q#D hat keine externe Bindung" +msgstr "%q#D wird exportiert, hat jedoch keine externe Bindung" #: cp/name-lookup.cc:5106 -#, fuzzy, gcc-internal-format -#| msgid "%q#D declared here" +#, gcc-internal-format msgid "%q#D declared here with no linkage" -msgstr "%q#D hier deklariert" +msgstr "%q#D wird hier ohne Bindung deklariert" #: cp/name-lookup.cc:5109 -#, fuzzy, gcc-internal-format -#| msgid "%q#D does not have external linkage" +#, gcc-internal-format msgid "%q#D declared here with internal linkage" -msgstr "%q#D hat keine externe Bindung" +msgstr "%q#D wird hier mit interner Bindung deklariert" #: cp/name-lookup.cc:5112 -#, fuzzy, gcc-internal-format -#| msgid "%q#D declared here" +#, gcc-internal-format msgid "%q#D declared here with module linkage" -msgstr "%q#D hier deklariert" +msgstr "%q#D wird hier mit Modulbindung deklariert" #: cp/name-lookup.cc:5877 #, gcc-internal-format @@ -59922,10 +59500,9 @@ msgid " %qE" msgstr " %qE" #: cp/name-lookup.cc:7085 -#, fuzzy, gcc-internal-format -#| msgid "% is defined in header %qs; did you forget to %<#include %s%>?" +#, gcc-internal-format msgid "% is defined in header %qs; this is probably fixable by adding %<#include %s%>" -msgstr "% ist im Header %qs definiert; haben Sie vergessen, %<#include %s%> zu schreiben?" +msgstr "% ist im Header %qs definiert; um das zu beheben, könnten Sie %<#include %s%> hinzufügen" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79869 #: cp/name-lookup.cc:7091 @@ -60507,16 +60084,14 @@ msgid "%<~auto%> only available with %<-std=c++14%> or %<-std=gnu++14%>" msgstr "%<~auto%> ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfügbar" #: cp/parser.cc:6729 cp/parser.cc:6733 -#, fuzzy, gcc-internal-format -#| msgid "template-id not allowed for destructor" +#, gcc-internal-format msgid "template-id not allowed for destructor in C++20" -msgstr "Template-ID ist für Destruktor nicht erlaubt" +msgstr "template-id für Destruktor ist in C++20 nicht erlaubt" #: cp/parser.cc:6735 cp/parser.cc:32577 -#, fuzzy, gcc-internal-format -#| msgid "remove parentheses" +#, gcc-internal-format msgid "remove the %qs" -msgstr "entfernen Sie die Klammern" +msgstr "entfernen Sie %qs" #: cp/parser.cc:6843 #, gcc-internal-format @@ -60609,15 +60184,14 @@ msgid "two consecutive %<[%> shall only introduce an attribute" msgstr "zwei aufeinander folgende %<[%> dürfen nur ein Attribut einführen" #: cp/parser.cc:8017 -#, fuzzy, gcc-internal-format -#| msgid "types may not be defined within %<__builtin_offsetof%>" +#, gcc-internal-format msgid "types may not be defined in %<__builtin_classify_type%> calls" -msgstr "Typen dürfen nicht innerhalb von %<__builtin_offsetof%> definiert werden" +msgstr "Typen dürfen nicht innerhalb von %<__builtin_classify_type%>-Aufrufen definiert werden" #: cp/parser.cc:8400 cp/parser.cc:8429 #, gcc-internal-format msgid "cannot use multidimensional subscript in OpenMP array section" -msgstr "" +msgstr "in einem OpenMP-Arrayabschnitt können keine mehrdimensionalen Arrayindizes verwendet werden" #: cp/parser.cc:8687 cp/typeck.cc:3052 #, gcc-internal-format @@ -60722,7 +60296,7 @@ msgstr "Typen dürfen nicht innerhalb von %<__builtin_offsetof%> definiert werde #: cp/parser.cc:11229 #, gcc-internal-format msgid "trailing argument to %<__type_pack_element%> is not a type" -msgstr "" +msgstr "das letzte Argument von %<__type_pack_element%> ist kein Typ" #: cp/parser.cc:11329 #, gcc-internal-format @@ -60838,34 +60412,32 @@ msgstr "Parameterdeklaration vor Lambdadeklarationsangaben ist erst ab %<-std=c+ #: cp/parser.cc:11932 cp/pt.cc:14718 #, gcc-internal-format msgid "a lambda with captures may not have an explicit object parameter of an unrelated type" -msgstr "" +msgstr "ein Lambda mit Captures darf keinen expliziten Objektparameter eines nicht verwandten Typs haben" #: cp/parser.cc:11945 -#, fuzzy, gcc-internal-format -#| msgid "% lambda specifier with lambda capture" +#, gcc-internal-format msgid "% lambda specifier with explicit object parameter" -msgstr "Lambda-Spezifizierer % mit Lambda-Fang" +msgstr "%-Lambdaangabe mit explizitem Objektparameter" #: cp/parser.cc:11954 #, gcc-internal-format msgid "the passed in closure object will not be mutated because it is taken by value" -msgstr "" +msgstr "das hereingereichte Closureobjekt wird nicht verändert, da es als Wert übernommen wird" #: cp/parser.cc:11958 #, gcc-internal-format msgid "declare the explicit object parameter as non-const reference instead" -msgstr "" +msgstr "deklarieren Sie den expliziten Objektparameter stattdessen als Nicht-const-Referenz" #: cp/parser.cc:11962 #, gcc-internal-format msgid "explicit object parameter is already a mutable reference" -msgstr "" +msgstr "der explizite Objektparameter ist bereits eine veränderbare Referenz" #: cp/parser.cc:11969 -#, fuzzy, gcc-internal-format -#| msgid "% lambda specifier with lambda capture" +#, gcc-internal-format msgid "% lambda specifier with explicit object parameter" -msgstr "Lambda-Spezifizierer % mit Lambda-Fang" +msgstr "Lambda-Spezifizierer % mit explizitem Objektparameter" #: cp/parser.cc:11987 #, gcc-internal-format @@ -61057,10 +60629,9 @@ msgid "expected jump-statement" msgstr "Sprunganweisung erwartet" #: cp/parser.cc:15090 -#, fuzzy, gcc-internal-format -#| msgid "expected module-name" +#, gcc-internal-format msgid "expected module-partition" -msgstr "Modulname erwartet" +msgstr "module-partition erwartet" #: cp/parser.cc:15092 #, gcc-internal-format @@ -61106,7 +60677,7 @@ msgstr "Import-Deklaration muss im globalen Gültigkeitsbereich sein" #: cp/parser.cc:15241 #, gcc-internal-format msgid "import specifying a module-partition must appear after a named module-declaration" -msgstr "" +msgstr "ein Import, der eine Modulpartition angibt, muss nach einer benannten Moduldeklaration erscheinen" #: cp/parser.cc:15253 #, gcc-internal-format @@ -61204,10 +60775,9 @@ msgid "invalid initializer for structured binding declaration" msgstr "ungültige Initialisierung für strukturierte Bindungsdeklaration" #: cp/parser.cc:16371 -#, fuzzy, gcc-internal-format -#| msgid "storage class specifiers invalid in parameter declarations" +#, gcc-internal-format msgid "% must be the first specifier in a parameter declaration" -msgstr "Speicherklassenangaben sind in Parameterdeklarationen ungültig" +msgstr "% muss der erste Spezifizierer in einer Parameterdeklaration sein" #: cp/parser.cc:16394 #, gcc-internal-format @@ -61295,10 +60865,9 @@ msgid "% without a message only available with %<-std=c++17%> or msgstr "% ohne Text ist erst ab %<-std=c++17%> oder %<-std=gnu++17%> verfügbar" #: cp/parser.cc:16974 -#, fuzzy, gcc-internal-format -#| msgid "% without a message only available with %<-std=c++17%> or %<-std=gnu++17%>" +#, gcc-internal-format msgid "% with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>" -msgstr "% ohne Text ist erst ab %<-std=c++17%> oder %<-std=gnu++17%> verfügbar" +msgstr "% ohne Meldung, die keine Zeichenkette ist, ist erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfügbar" #: cp/parser.cc:17172 #, gcc-internal-format @@ -61523,10 +61092,9 @@ msgid "use of % in lambda parameter declaration only available with %<-st msgstr "Verwendung von % in Lambda-Parameterdeklaration ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfügbar" #: cp/parser.cc:20356 -#, fuzzy, gcc-internal-format -#| msgid "use of % in parameter declaration only available with %<-fconcepts-ts%>" +#, gcc-internal-format msgid "use of % in template argument only available with %<-fconcepts-ts%>" -msgstr "Verwendung von % in Parameterdeklaration ist nur mit %<-fconcepts-ts%> verfügbar" +msgstr "Verwendung von % in Templateargument ist nur mit %<-fconcepts-ts%> verfügbar" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104877 #: cp/parser.cc:20360 @@ -61622,7 +61190,7 @@ msgstr "Typen dürfen nicht in enum-base definiert werden" #: cp/parser.cc:21618 #, gcc-internal-format msgid "declaration of enumeration with fixed underlying type and no enumerator list is only permitted as a standalone declaration" -msgstr "" +msgstr "die Deklaration einer Aufzählung mit festem zugrundeliegenden Typ und ohne Aufzählungsliste ist nur als eigenständige Deklaration zulässig" #: cp/parser.cc:21622 #, gcc-internal-format @@ -61817,10 +61385,9 @@ msgid "% qualifier outside of function body" msgstr "%-Qualifizierer außerhalb des Funktionsrumpfes" #: cp/parser.cc:22948 -#, fuzzy, gcc-internal-format -#| msgid "attribute ignored in declaration of %q#T" +#, gcc-internal-format msgid "attributes ignored on % declaration" -msgstr "Attribut in Deklaration von %q#T ignoriert" +msgstr "Attribute in %-Deklaration werden ignoriert" #: cp/parser.cc:23035 #, gcc-internal-format @@ -62015,16 +61582,14 @@ msgid "types may not be defined in parameter types" msgstr "Typen dürfen nicht in Parametertypen definiert werden" #: cp/parser.cc:25732 -#, fuzzy, gcc-internal-format -#| msgid "storage class specifiers invalid in parameter declarations" +#, gcc-internal-format msgid "% specifier in template parameter declaration" -msgstr "Speicherklassenangaben sind in Parameterdeklarationen ungültig" +msgstr "%-Angabe in Template-Parameterdeklaration" #: cp/parser.cc:25746 -#, fuzzy, gcc-internal-format -#| msgid "non-parameter %qs cannot be a parameter pack" +#, gcc-internal-format msgid "an explicit object parameter cannot be a function parameter pack" -msgstr "Nicht-Parameter %qs kann kein Parameterpack sein" +msgstr "ein expliziter Objektparameter kann kein Funktionsparameterpaket sein" #: cp/parser.cc:25838 #, gcc-internal-format @@ -62047,10 +61612,9 @@ msgid "parameter pack cannot have a default argument" msgstr "Parameterpack kann kein Standardargument haben" #: cp/parser.cc:25887 -#, fuzzy, gcc-internal-format -#| msgid "template parameter pack cannot have a default argument" +#, gcc-internal-format msgid "an explicit object parameter may not have a default argument" -msgstr "Templateparameterpack kann kein Standardargument haben" +msgstr "ein expliziter Objektparameter darf kein Standardargument haben" #: cp/parser.cc:26011 #, gcc-internal-format @@ -62332,10 +61896,9 @@ msgid "expected attribute before %<...%>" msgstr "Attribut vor %<...%> erwartet" #: cp/parser.cc:30214 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute without arguments on a non-prototype" +#, gcc-internal-format msgid "attribute with no arguments contains no parameter packs" -msgstr "Attribut %qE ohne Argumente für einen Nicht-Prototyp" +msgstr "Attribut ohne Argumente enthält keine Parameterpakete" #: cp/parser.cc:30260 #, gcc-internal-format @@ -62419,10 +61982,9 @@ msgid "too many template-parameter-lists" msgstr "zu viele Templateparameterlisten" #: cp/parser.cc:32576 -#, fuzzy, gcc-internal-format -#| msgid "template-id not allowed for destructor" +#, gcc-internal-format msgid "template-id not allowed for constructor in C++20" -msgstr "Template-ID ist für Destruktor nicht erlaubt" +msgstr "template-id ist für Konstruktor in C++20 nicht erlaubt" #: cp/parser.cc:32687 #, gcc-internal-format @@ -62836,10 +62398,9 @@ msgid "% expression must be integral" msgstr "%-Ausdruck muss ganzzahlig sein" #: cp/parser.cc:39638 -#, fuzzy, gcc-internal-format -#| msgid "expected %, % or %" +#, gcc-internal-format msgid "expected %, %, %" -msgstr "%, % oder % erwartet" +msgstr "%, % oder % erwartet" #: cp/parser.cc:40029 #, gcc-internal-format @@ -62977,10 +62538,9 @@ msgid "%<#pragma omp assumes%> may only be used at file or namespace scope" msgstr "%<#pragma omp assumes%> darf nur im Gültigkeitsbereich einer Datei oder eines Namensraums verwendet werden" #: cp/parser.cc:51053 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma GCC ivdep%> must be inside a function" +#, gcc-internal-format msgid "%<#pragma GCC %s%> must be inside a function" -msgstr "%<#pragma GCC ivdep%> muss innerhalb einer Funktion sein" +msgstr "%<#pragma GCC %s%> muss innerhalb einer Funktion sein" #: cp/parser.cc:51195 #, gcc-internal-format @@ -64545,16 +64105,14 @@ msgid " since %q+#D declared in base class" msgstr " denn %q+#D ist in Basisklasse deklariert" #: cp/search.cc:2281 -#, fuzzy, gcc-internal-format -#| msgid "virtual function %q+D overriding final function" +#, gcc-internal-format msgid "explicit object member function overrides virtual function" -msgstr "virtuelle Funktion %q+D übersteuert final-Funktion" +msgstr "die explizite Objektmemberfunktion übersteuert die virtuelle Funktion" #: cp/search.cc:2284 -#, fuzzy, gcc-internal-format -#| msgid "resolver indirect function declared here" +#, gcc-internal-format msgid "virtual function declared here" -msgstr "Auflöser-indirekte Funktion ist hier deklariert" +msgstr "die virtuelle Funktion ist hier deklariert" #: cp/semantics.cc:1109 #, gcc-internal-format @@ -64637,22 +64195,19 @@ msgid "arguments to destructor are not allowed" msgstr "Argumente für Destruktor sind nicht erlaubt" #: cp/semantics.cc:3175 -#, fuzzy, gcc-internal-format -#| msgid "% is unavailable for static member functions" +#, gcc-internal-format msgid "% is unavailable for explicit object member functions" -msgstr "% ist für statische Elementfunktionen nicht verfügbar" +msgstr "% ist für explizite Objektmemberfunktionen nicht verfügbar" #: cp/semantics.cc:3187 -#, fuzzy, gcc-internal-format -#| msgid "use the apostrophe directive %qs instead" +#, gcc-internal-format msgid "use explicit object parameter %qs instead" -msgstr "verwenden Sie stattdessen die Apostroph-Direktive %qs" +msgstr "verwenden Sie stattdessen den expliziten Objektparameter %qs" #: cp/semantics.cc:3191 -#, fuzzy, gcc-internal-format -#| msgid "invalid template non-type parameter" +#, gcc-internal-format msgid "name the explicit object parameter" -msgstr "ungültiger Nicht-Typ-Parameter für Template" +msgstr "geben Sie dem expliziten Objektparameter einen Namen" #: cp/semantics.cc:3196 #, gcc-internal-format @@ -64811,21 +64366,19 @@ msgid "%qT is not an enumeration type" msgstr "%qT ist kein Aufzählungstyp" #: cp/semantics.cc:4650 -#, fuzzy, gcc-internal-format -#| msgid "requested alignment is not an integer constant" +#, gcc-internal-format msgid "%<__type_pack_element%> index is not an integral constant" -msgstr "Verlangte Ausrichtung ist keine Ganzzahlkonstante" +msgstr "%<__type_pack_element%>-Index ist keine Ganzzahlkonstante" #: cp/semantics.cc:4656 #, gcc-internal-format msgid "%<__type_pack_element%> index is negative" -msgstr "" +msgstr "%<__type_pack_element%>-Index ist negativ" #: cp/semantics.cc:4662 -#, fuzzy, gcc-internal-format -#| msgid "Reference statement index out of range" +#, gcc-internal-format msgid "%<__type_pack_element%> index is out of range" -msgstr "Index der Referenzanweisung außerhalb des gültigen Bereichs" +msgstr "%<__type_pack_element%>-Index liegt außerhalb des Bereichs" #. Parameter packs can only be used in templates #: cp/semantics.cc:4785 @@ -64859,10 +64412,9 @@ msgid "% within non-standard-layout type %qT is conditionally-support msgstr "% innerhalb von Typ %qT (der kein Standardlayout hat) ist bedingt unterstützt" #: cp/semantics.cc:6046 -#, fuzzy, gcc-internal-format -#| msgid "constructor priorities are not supported" +#, gcc-internal-format msgid "pointer-to-member mapping %qE not supported" -msgstr "Konstruktorprioritäten werden nicht unterstützt" +msgstr "Pointer-to-Member-Mapping %qE wird nicht unterstützt" #: cp/semantics.cc:6240 #, gcc-internal-format @@ -65133,46 +64685,42 @@ msgstr "%<#pragma omp atomic update%> verwendet zwei unterschiedliche Ausdrücke #: cp/semantics.cc:11509 #, gcc-internal-format msgid "% message must be a string literal or object with % and % members" -msgstr "" +msgstr "%-Meldung muss ein Stringliteral oder ein Objekt mit den Membern % und % sein" #: cp/semantics.cc:11525 #, gcc-internal-format msgid "% message % must be implicitly convertible to %" -msgstr "" +msgstr "% der %-Nachricht muss implizit in % umwandelbar sein" #: cp/semantics.cc:11534 #, gcc-internal-format msgid "% message % must be implicitly convertible to %" -msgstr "" +msgstr "% der %-Nachricht muss implizit in % umwandelbar sein" #: cp/semantics.cc:11592 -#, fuzzy, gcc-internal-format -#| msgid "% expression must be constant integer expression" +#, gcc-internal-format msgid "% message % must be a constant expression" -msgstr "%-Ausdruck muss ganzzahlig und konstant sein" +msgstr "% der %-Meldung muss ein konstanter Ausdruck sein" #: cp/semantics.cc:11600 #, gcc-internal-format msgid "% message % %qE too large" -msgstr "" +msgstr "% der %-Meldung ist %qE und damit zu groß" #: cp/semantics.cc:11627 -#, fuzzy, gcc-internal-format -#| msgid "%(%E)%> is not a constant expression" +#, gcc-internal-format msgid "% message % must be a constant expression" -msgstr "%(%E)%> ist kein Konstantenausdruck" +msgstr "% der %-Meldung muss ein konstanter Ausdruck sein" #: cp/semantics.cc:11654 -#, fuzzy, gcc-internal-format -#| msgid "argument %d of %qE must be an integer constant expression" +#, gcc-internal-format msgid "% message % must be a core constant expression" -msgstr "Argument %d von %qE muss ein konstanter ganzzahliger Ausdruck sein" +msgstr "% der %-Meldung muss ein Kernkonstantenausdruck sein" #: cp/semantics.cc:11680 -#, fuzzy, gcc-internal-format -#| msgid "static assertion failed: %s" +#, gcc-internal-format msgid "static assertion failed: %.*s" -msgstr "statische Erklärung gescheitert: %s" +msgstr "statische Assertion fehlgeschlagen: %.*s" #: cp/semantics.cc:11688 #, gcc-internal-format @@ -65769,10 +65317,9 @@ msgid "the compiler can assume that the address of %qD will never be NULL" msgstr "der Compiler kann annehmen, dass die Adresse von %qD niemals NULL ist" #: cp/typeck.cc:5055 -#, fuzzy, gcc-internal-format -#| msgid "bitwise operation between different enumeration types %qT and %qT is deprecated" +#, gcc-internal-format msgid "bitwise operation between different enumeration types %qT and %qT" -msgstr "bitweise Operation zwischen den unterschiedlichen Aufzählungstypen %qT und %qT ist veraltet" +msgstr "bitweise Operation zwischen den unterschiedlichen Aufzählungstypen %qT und %qT" #: cp/typeck.cc:5058 #, gcc-internal-format @@ -65780,10 +65327,9 @@ msgid "bitwise operation between different enumeration types %qT and %qT is depr msgstr "bitweise Operation zwischen den unterschiedlichen Aufzählungstypen %qT und %qT ist veraltet" #: cp/typeck.cc:5064 -#, fuzzy, gcc-internal-format -#| msgid "arithmetic between different enumeration types %qT and %qT is deprecated" +#, gcc-internal-format msgid "arithmetic between different enumeration types %qT and %qT" -msgstr "Arithmetik zwischen den unterschiedlichen Aufzählungstypen %qT und %qT ist veraltet" +msgstr "Arithmetik zwischen den unterschiedlichen Aufzählungstypen %qT und %qT" #: cp/typeck.cc:5067 #, gcc-internal-format @@ -65791,16 +65337,14 @@ msgid "arithmetic between different enumeration types %qT and %qT is deprecated" msgstr "Arithmetik zwischen den unterschiedlichen Aufzählungstypen %qT und %qT ist veraltet" #: cp/typeck.cc:5104 -#, fuzzy, gcc-internal-format -#| msgid "comparison of enumeration type %qT with floating-point type %qT is deprecated" +#, gcc-internal-format msgid "comparison of enumeration type %qT with floating-point type %qT" -msgstr "Vergleich zwischen Aufzählungstyp %qT und Gleitkommatyp %qT ist veraltet" +msgstr "Vergleich zwischen Aufzählungstyp %qT und Gleitkommatyp %qT" #: cp/typeck.cc:5107 -#, fuzzy, gcc-internal-format -#| msgid "comparison of floating-point type %qT with enumeration type %qT is deprecated" +#, gcc-internal-format msgid "comparison of floating-point type %qT with enumeration type %qT" -msgstr "Vergleich zwischen Gleitkommatyp %qT und Aufzählungstyp %qT ist veraltet" +msgstr "Vergleich zwischen Gleitkommatyp %qT und Aufzählungstyp %qT" #: cp/typeck.cc:5110 #, gcc-internal-format @@ -65813,16 +65357,14 @@ msgid "comparison of floating-point type %qT with enumeration type %qT is deprec msgstr "Vergleich zwischen Gleitkommatyp %qT und Aufzählungstyp %qT ist veraltet" #: cp/typeck.cc:5123 -#, fuzzy, gcc-internal-format -#| msgid "arithmetic between enumeration type %qT and floating-point type %qT is deprecated" +#, gcc-internal-format msgid "arithmetic between enumeration type %qT and floating-point type %qT" -msgstr "Arithmetik zwischen Aufzählungstyp %qT und Gleitkommatyp %qT ist veraltet" +msgstr "Arithmetik zwischen Aufzählungstyp %qT und Gleitkommatyp %qT" #: cp/typeck.cc:5126 -#, fuzzy, gcc-internal-format -#| msgid "arithmetic between floating-point type %qT and enumeration type %qT is deprecated" +#, gcc-internal-format msgid "arithmetic between floating-point type %qT and enumeration type %qT" -msgstr "Arithmetik zwischen Gleitkommatyp %qT und Aufzählungstyp %qT ist veraltet" +msgstr "Arithmetik zwischen Gleitkommatyp %qT und Aufzählungstyp %qT" #: cp/typeck.cc:5129 #, gcc-internal-format @@ -65929,10 +65471,9 @@ msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwenden" #: cp/typeck.cc:7154 -#, fuzzy, 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%>" +#, gcc-internal-format msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function" -msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwenden" +msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Memberfunktion, um einen Zeiger auf eine explizite Memberfunktion zu erzeugen" #: cp/typeck.cc:7160 #, gcc-internal-format @@ -65940,22 +65481,20 @@ msgid "ISO C++ forbids taking the address of a bound member function to form a p msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer gebundenen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwenden" #: cp/typeck.cc:7166 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>" +#, gcc-internal-format msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member function" -msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer gebundenen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwenden" +msgstr "ISO-C++ verbietet es, die Adresse einer gebundenen Memberfunktion zu nehmen, um einen Zeiger auf eine explizite Objekt-Memberfunktion zu bilden" #: cp/typeck.cc:7171 -#, fuzzy, gcc-internal-format -#| msgid "(a pointer to member can only be formed with %<&%E%>)" +#, gcc-internal-format msgid "a pointer to explicit object member function can only be formed with %<&%T::%D%>" -msgstr "(ein Zeiger auf ein Element kann nur mit %<»&%E%> erzeugt werden)" +msgstr "ein Zeiger auf eine explizite Objektelementfunktion kann nur mit %<&%T::%D%> erzeugt werden" #. Make this a permerror because we used to accept it. #: cp/typeck.cc:7204 #, gcc-internal-format msgid "taking address of rvalue" -msgstr "Adresse eines rvalues wird ermittelt" +msgstr "Adresse eines Rvalues wird ermittelt" #: cp/typeck.cc:7221 #, gcc-internal-format @@ -66290,10 +65829,9 @@ msgid "returning reference to temporary" msgstr "Referenz auf temporären Wert wird zurückgegeben" #: cp/typeck.cc:10633 -#, fuzzy, gcc-internal-format -#| msgid "returning reference to temporary" +#, gcc-internal-format msgid "returning pointer to temporary" -msgstr "Referenz auf temporären Wert wird zurückgegeben" +msgstr "Zeiger auf temporäre Variable wird zurückgegeben" #: cp/typeck.cc:10636 #, gcc-internal-format @@ -66390,20 +65928,19 @@ msgid "% must not return NULL unless it is declared % ( msgstr "% darf nicht NULL zurückgeben, außer er ist mit % deklariert (oder %<-fcheck-new%> ist eingeschaltet)" #: cp/typeck.cc:11299 -#, fuzzy, gcc-internal-format -#| msgid "invalid covariant return type for %q#D" +#, gcc-internal-format msgid "not eliding copy on return from %qD" -msgstr "ungültiger kovarianter Rückgabetyp für %q#D" +msgstr "bei der Rückkehr von %qD wird das Kopieren nicht eingespart" #: cp/typeck.cc:11311 #, gcc-internal-format msgid "not eliding copy on return in %qD" -msgstr "" +msgstr "bei der Rückkehr in %qD wird das Kopieren nicht eingespart" #: cp/typeck.cc:11898 #, gcc-internal-format msgid "using rvalue as lvalue" -msgstr "rvalue wird als lvalue verwendet" +msgstr "Rvalue wird als Lvalue verwendet" #: cp/typeck2.cc:51 #, gcc-internal-format @@ -66904,21 +66441,19 @@ msgid "cast from %qs to %qs will produce zero result" msgstr "Umwandlung von %qs nach %qs führt zum Ergebnis 0" #: d/d-convert.cc:748 -#, fuzzy, gcc-internal-format -#| msgid "cannot convert %qE from type %qT to type %qT" +#, gcc-internal-format msgid "cannot convert parameter %qs from type %qs to type %qs in assignment" -msgstr "%qE kann nicht vom Typ %qT in den Typ %qT umgewandelt werden" +msgstr "Parameter %qs kann innerhalb der Anweisung nicht vom Typ %qs in den Typ %qs umgewandelt werden" #: d/d-convert.cc:754 -#, fuzzy, gcc-internal-format -#| msgid "cannot convert %qH to %qI in argument passing" +#, gcc-internal-format msgid "cannot convert parameter %qs from type %qs to type %qs in argument passing" -msgstr "%qH kann nicht nach %qI bei Argumentübergabe umgewandelt werden" +msgstr "Parameter %qs kann bei der Argumentübergabe nicht vom Typ %qs in den Typ %qs umgewandelt werden" #: d/d-convert.cc:759 #, gcc-internal-format msgid "parameters of type % {aka %qs} are decayed to pointer types, and require % to be converted back into a static array type" -msgstr "" +msgstr "Parameter vom Typ % {auch %qs} werden zu Zeigertypen degradiert und benötigen %, um sie zurück in einen statischen Arraytyp umzuwandeln" #: d/d-lang.cc:463 #, gcc-internal-format @@ -66941,28 +66476,24 @@ msgid "bad argument for %<-fversion%>: %qs" msgstr "falsches Argument für %<-fversion%>: %qs" #: d/d-lang.cc:968 -#, fuzzy, gcc-internal-format -#| msgid "error: unable to open '%s' for writing: %s\n" +#, gcc-internal-format msgid "unable to open %s for writing: %m" -msgstr "Fehler: »%s« kann nicht zum Schreiben geöffnet werden: %s\n" +msgstr "»%s« kann nicht zum Schreiben geöffnet werden: %m" #: d/d-lang.cc:975 -#, fuzzy, gcc-internal-format -#| msgid "opening output file %s: %m" +#, gcc-internal-format msgid "writing output file %s: %m" -msgstr "Ausgabedatei »%s« kann nicht geöffnet werden: %m" +msgstr "beim Schreiben in »%s«: %m" #: d/d-lang.cc:995 -#, fuzzy, gcc-internal-format -#| msgid "error: unable to open '%s' for writing: %s\n" +#, gcc-internal-format msgid "unable to open %s for reading: %m" -msgstr "Fehler: »%s« kann nicht zum Schreiben geöffnet werden: %s\n" +msgstr "»%s« kann nicht zum Lesen geöffnet werden: %m" #: d/d-lang.cc:1020 -#, fuzzy, gcc-internal-format -#| msgid "opening json file %s: %m" +#, gcc-internal-format msgid "reading ddoc file %s: %m" -msgstr "Fehler beim Öffnen der JSON-Datei %s: %m" +msgstr "beim Lesen der ddoc-Datei »%s«: %m" #: d/d-lang.cc:1079 #, gcc-internal-format @@ -67041,16 +66572,14 @@ msgid "cannot handle comparison of type %<%s == %s%>" msgstr "Vergleich vom Typ %<%s == %s%> kann nicht verarbeitet werden" #: d/expr.cc:717 -#, fuzzy, gcc-internal-format -#| msgid "expression %qs requires % and cannot be used with %<-fno-rtti%>" +#, gcc-internal-format msgid "array concatenation of expression %qs requires the GC and cannot be used with %<-fno-druntime%>" -msgstr "Ausdruck %qs erfordert % und kann nicht mit %<-fno-rtti%> verwendet werden" +msgstr "die Array-Verkettung des Ausdrucks %qs erfordert den GC und kann nicht mit %<-fno-druntime%> verwendet werden" #: d/expr.cc:811 -#, fuzzy, gcc-internal-format -#| msgid "expression %qs requires % and cannot be used with %<-fno-rtti%>" +#, gcc-internal-format msgid "appending to array in %qs requires the GC and cannot be used with %<-fno-druntime%>" -msgstr "Ausdruck %qs erfordert % und kann nicht mit %<-fno-rtti%> verwendet werden" +msgstr "das Anhängen an ein Array in %qs erfordert den GC und kann nicht mit %<-fno-druntime%> verwendet werden" #. Static arrays have already been handled by the front-end. #: d/expr.cc:1285 @@ -67135,10 +66664,9 @@ msgstr "Unstimmigkeit in Aufruf der eingebauten Funktion %qD" #. It's a D language intrinsic with no library implementation. #: d/intrinsics.cc:1479 -#, fuzzy, gcc-internal-format -#| msgid "built-in function %qE must be directly called" +#, gcc-internal-format msgid "intrinsic function %qE must be directly called" -msgstr "eingebaute Funktion %qE muss direkt aufgerufen werden" +msgstr "intrinsische Funktion %qE muss direkt aufgerufen werden" #: d/modules.cc:417 #, gcc-internal-format @@ -67148,7 +66676,7 @@ msgstr "%<-fmoduleinfo%> wird von diesem Ziel nicht unterstützt" #: d/toir.cc:245 #, gcc-internal-format msgid "calling %qE without side effects discards return value of type %qT; prepend a % if intentional" -msgstr "" +msgstr "Aufruf von %qE ohne Nebenwirkungen verwirft Rückgabewert vom Typ %qT; falls der Aufruf beabsichtigt ist, stellen Sie ein % voran" #: d/toir.cc:419 d/toir.cc:444 #, gcc-internal-format @@ -67714,10 +67242,9 @@ msgid "Array constructor value at %L shall not be unlimited polymorphic [F2008: msgstr "Wert für Feldkonstruktor bei %L darf nicht unbegrenzt polymorph sein [F2008: C4106]" #: fortran/array.cc:2215 -#, fuzzy, gcc-internal-format -#| msgid "Different CHARACTER lengths (%ld/%ld) in array constructor at %L" +#, gcc-internal-format msgid "Different CHARACTER lengths (%wd/%wd) in array constructor at %L" -msgstr "Unterschiedliche CHARACTER-Längen (%ld, %ld) in Feldkonstruktor bei %L" +msgstr "Unterschiedliche CHARACTER-Längen (%wd/%wd) in Feldkonstruktor bei %L" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79596 #: fortran/array.cc:2333 @@ -67948,10 +67475,9 @@ msgid "Unequal character lengths (%ld/%ld) in %s at %L" msgstr "Ungleiche Zeichenlängen (%ld, %ld) in %s bei %L" #: fortran/check.cc:1269 -#, fuzzy, gcc-internal-format -#| msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)" +#, gcc-internal-format msgid "Size of %qs argument of %qs intrinsic at %L too small (%wd/%ld)" -msgstr "Größe des Arguments %qs des intrinsischen %qs bei %L ist zu klein (%i/%i)" +msgstr "Größe des Arguments %qs des intrinsischen %qs bei %L ist zu klein (%wd/%ld)" #: fortran/check.cc:1332 #, gcc-internal-format, gfc-internal-format @@ -68761,10 +68287,8 @@ msgid "% argument of % intrinsic at %L must not be %s" msgstr "Argument % des intrinsischen % bei %L darf nicht %s sein" #: fortran/check.cc:6300 -#, fuzzy -#| msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %ld < result size %ld" msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zd" -msgstr "Intrinsisches TRANSFER bei %L hat teilweise undefiniertes Ergebnis: Quellgröße %ld < Ergebnisgröße %ld" +msgstr "Intrinsisches TRANSFER bei %L hat teilweise undefiniertes Ergebnis: Quellgröße %zd < Ergebnisgröße %zd" #: fortran/check.cc:6424 #, gcc-internal-format @@ -68777,16 +68301,14 @@ msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape." msgstr "Argumente %qs und %qs des intrinsischen %qs bei %L müssen gleiche Form haben." #: fortran/check.cc:6573 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind" -msgstr "Das COUNT-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" +msgstr "Das VALUES-Argument für DATE_AND_TIME bei %L hat nicht-Standard-Art" #: fortran/check.cc:6585 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Argument of ATANH at %L must be inside the range -1 to 1" +#, gcc-internal-format, gfc-internal-format msgid "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least four" -msgstr "Argument von ATANH bei %L muss im Bereich -1 bis 1 liegen" +msgstr "Das VALUES-Argument von DATE_AND_TIME bei %L muss einen dezimalen Exponentenbereich von mindestens 4 haben" #: fortran/check.cc:6724 fortran/check.cc:6756 #, gcc-internal-format @@ -68815,10 +68337,9 @@ msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "Das COUNT-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" #: fortran/check.cc:6843 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer" -msgstr "Das COUNT-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" +msgstr "Das COUNT-Argument für SYSTEM_CLOCK bei %L hat eine Ganzzahl, die kleiner als der Standard ist" #: fortran/check.cc:6864 #, gcc-internal-format, gfc-internal-format @@ -68831,10 +68352,9 @@ msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "Das COUNT_RATE-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" #: fortran/check.cc:6881 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integer" -msgstr "Das COUNT_RATE-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" +msgstr "Das COUNT_RATE-Argument für SYSTEM_CLOCK bei %L hat eine Art, die kleiner als die Standard-Ganzzahl ist" #: fortran/check.cc:6901 #, gcc-internal-format, gfc-internal-format @@ -68842,16 +68362,14 @@ msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "Das COUNT_MAX-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" #: fortran/check.cc:6911 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integer" -msgstr "Das COUNT_MAX-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" +msgstr "Das COUNT_MAX-Argument für SYSTEM_CLOCK bei %L hat eine Art, die kleiner als die Standard-Ganzzahl ist" #: fortran/check.cc:6926 fortran/check.cc:6933 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters" -msgstr "Das COUNT-Argument für SYSTEM_CLOCK bei %L hat nicht-Standard-Art" +msgstr "Ganzzahlige Argumente für SYSTEM_CLOCK bei %L mit Parametern unterschiedlicher Art" #: fortran/check.cc:7147 #, gcc-internal-format @@ -68901,21 +68419,19 @@ msgid "non-constant array in DATA statement %L" msgstr "Nichtkonstantes Feld in DATA-Anweisung %L" #: fortran/data.cc:78 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d" +#, gcc-internal-format, gfc-internal-format msgid "Subscript at %L below array lower bound (%ld < %ld) in dimension %d" -msgstr "Feldreferenz bei %L ist außerhalb der Schranken (%ld < %ld) in Dimension %d" +msgstr "Feldindex bei %L ist unterhalb der Schranke (%ld < %ld) in Dimension %d" #: fortran/data.cc:89 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d" +#, gcc-internal-format, gfc-internal-format msgid "Subscript at %L above array upper bound (%ld > %ld) in dimension %d" -msgstr "Untere Feldreferenz bei %L ist außerhalb der Schranken (%ld > %ld) in Dimension %d" +msgstr "Feldindex bei %L ist oberhalb der Schranke (%ld > %ld) in Dimension %d" #: fortran/data.cc:172 #, gcc-internal-format, gfc-internal-format msgid "failure to simplify substring reference in DATA statement at %L" -msgstr "Fehlschlag bei Vereinfachung der Teil-Zeichenketten-Referenz in DATA-Anweisung bei %L" +msgstr "Fehler bei Vereinfachung der Teil-Zeichenketten-Referenz in DATA-Anweisung bei %L" #: fortran/data.cc:205 #, gcc-internal-format, gfc-internal-format @@ -68923,10 +68439,9 @@ msgid "Unused initialization string at %L because variable has zero length" msgstr "Unbenutzte Initialisierungszeichenkette bei %L, da die Variable die Länge 0 hat" #: fortran/data.cc:211 -#, fuzzy, gcc-internal-format -#| msgid "Initialization string at %L was truncated to fit the variable (%ld/%ld)" +#, gcc-internal-format msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)" -msgstr "Initialisierungszeichenkette bei %L wurde abgeschnitten, um zur Variable zu passen (%ld/%ld)" +msgstr "Initialisierungszeichenkette bei %L wurde abgeschnitten, um zur Variable zu passen (%wd/%wd)" #: fortran/data.cc:220 fortran/resolve.cc:5287 #, gcc-internal-format, gfc-internal-format @@ -70027,15 +69542,14 @@ msgid "Duplicate symbol %qs in formal argument list at %C" msgstr "Doppeltes Symbol %qs in formaler Argumentliste bei %C" #: fortran/decl.cc:6805 -#, fuzzy, gcc-internal-format -#| msgid "Mismatch in MODULE PROCEDURE formal argument names (%s/%s) at %C" +#, gcc-internal-format msgid "MODULE PROCEDURE formal argument %qs conflicts with alternate return at %C" -msgstr "Konflikt in formalen Argumentnamen (%s/%s) von MODULE PROCEDURE bei %C" +msgstr "Formales Argument %qs für MODULE PROCEDURE widerspricht alternativer Rückgabe bei %C" #: fortran/decl.cc:6809 #, gcc-internal-format msgid "MODULE PROCEDURE formal argument is alternate return and conflicts with %qs in the separate declaration at %C" -msgstr "" +msgstr "Formales Argument für MODULE PROCEDURE ist alternative Rückgabe und widerspricht %qs in der separaten Deklaration bei %C" #: fortran/decl.cc:6814 #, gcc-internal-format, gfc-internal-format @@ -71657,10 +71171,9 @@ msgid "%qs at %L associated to expression cannot be used in a variable definitio msgstr "%qs ist bei %L mit Ausdruck verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden" #: fortran/expr.cc:6507 -#, fuzzy, gcc-internal-format -#| msgid "%qs at %L associated to expression cannot be used in a variable definition context (%s)" +#, gcc-internal-format msgid "%qs at %L associated to pointer function target being used in a variable definition context (%s)" -msgstr "%qs ist bei %L mit Ausdruck verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden" +msgstr "%qs bei %L ist mit einer Zeigerfunktion verbunden, die in einem Variablendefinitionskontext verwendet wird (%s)" #: fortran/expr.cc:6526 #, gcc-internal-format @@ -72186,10 +71699,9 @@ msgid "Actual argument at %L to assumed-type dummy has type parameters or is of msgstr "Argument bei %L für den angenommenen Typ des Dummys hat Typparameter oder hat einen abgeleiteten Typ mit typgebundenen oder FINAL-Prozeduren" #: fortran/interface.cc:3355 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qs" +#, gcc-internal-format, gfc-internal-format msgid "Unlimited polymorphic actual argument at %L is not matched with either an unlimited polymorphic or assumed type dummy argument" -msgstr "Koindiziertem polymorphen effektiven Argument bei %L wird polymorphes Scheinargument %qs übergeben" +msgstr "Unbegrenztes polymorphes Argument bei %L passt weder zu einem unbegrenzt polymorphen oder einem Dummyargument mit angenommenem Typ" #: fortran/interface.cc:3379 #, gcc-internal-format @@ -72284,7 +71796,7 @@ msgstr "Effektives Argument für %qs muss ALLOCATABLE bei %L sein" #: fortran/interface.cc:3693 #, gcc-internal-format msgid "Actual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLE" -msgstr "" +msgstr "Das tatsächliche Argument für %qs bei %L ist ein Funktionsergebnis und das Dummy-Argument ist ALLOCATABLE" #: fortran/interface.cc:3731 #, gcc-internal-format @@ -74326,10 +73838,9 @@ msgid "Symbol %qs in namelist %qs at %C must be declared before the namelist is msgstr "Symbol %qs in Namensliste %qs bei %C muss deklariert sein, bevor die Namensliste deklariert wird." #: fortran/match.cc:5652 -#, fuzzy, gcc-internal-format -#| msgid "Symbol %qs at %L conflicts with the symbol at %L" +#, gcc-internal-format msgid "Derived type %qs at %L conflicts with namelist object %qs at %C" -msgstr "Symbol %qs bei %L steht mit Symbol bei %L in Konflikt" +msgstr "Abgeleiteter Typ %qs bei %L widerspricht namelist-Objekt %qs bei %C" #: fortran/match.cc:5672 #, gcc-internal-format @@ -74879,7 +74390,7 @@ msgstr "Listenelement bei %C darf nicht koindiziert sein" #: fortran/openmp.cc:492 #, gcc-internal-format msgid "%qs at %L is part of the common block % and may only be specificed implicitly via the named common block" -msgstr "" +msgstr "%qs bei %L ist Teil des gemeinsamen Blocks % und kann nur implizit über den genannten gemeinsamen Block spezifiziert werden" #: fortran/openmp.cc:517 fortran/openmp.cc:618 fortran/openmp.cc:948 #: fortran/openmp.cc:6135 @@ -74995,13 +74506,12 @@ msgstr "%qs-Direktive wird sowohl in ABSENT- als auch CONTAINS-Klauseln in %s-Di #: fortran/openmp.cc:1745 #, gcc-internal-format, gfc-internal-format msgid "Duplicate %s modifier at %L in USES_ALLOCATORS clause" -msgstr "" +msgstr "Doppelter %s-Modifikator bei %L in der USES_ALLOCATORS-Klausel" #: fortran/openmp.cc:1779 -#, fuzzy, gcc-internal-format -#| msgid "expected %<(%> at %C" +#, gcc-internal-format msgid "Unexpected %<(%> at %C" -msgstr "%<(%> bei %C erwartet" +msgstr "Unerwartetes %<(%> bei %C" #: fortran/openmp.cc:1826 #, gcc-internal-format @@ -75050,16 +74560,14 @@ msgid "COLLAPSE clause argument not constant positive integer at %C" msgstr "Argument der COLLAPSE-Klausel ist keine konstante positive Ganzzahl bei %C" #: fortran/openmp.cc:2236 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, NONE or DEFAULT at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE or DEFAULT at %C" -msgstr "Eins von ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, NONE oder DEFAULT bei %C erwartet" +msgstr "Eins von ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE oder DEFAULT bei %C erwartet" #: fortran/openmp.cc:2258 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected SCALAR, AGGREGATE, ALLOCATABLE or POINTER at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected SCALAR, AGGREGATE, ALLOCATABLE, POINTER or ALL at %C" -msgstr "Eins von SCALAR, AGGREGATE, ALLOCATABLE oder POINTER bei %C erwartet" +msgstr "Eins von SCALAR, AGGREGATE, ALLOCATABLE, POINTER oder ALL bei %C erwartet" #: fortran/openmp.cc:2291 #, gcc-internal-format, gfc-internal-format @@ -75152,10 +74660,9 @@ msgid "Expected SEQ_CST, ACQUIRE or RELAXED at %C" msgstr "Eins von SEQ_CST, ACQUIRE oder RELAXED erwartet, bei %C" #: fortran/openmp.cc:2816 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "WAIT clause at %L requires a scalar INTEGER expression" +#, gcc-internal-format, gfc-internal-format msgid "INDIRECT clause at %C requires a constant logical expression" -msgstr "WAIT-Klausel bei %L erfordert einen skalaren INTEGER-Ausdruck" +msgstr "INDIRECT-Klausel bei %C erfordert einen konstanten logischen Ausdruck" #: fortran/openmp.cc:3003 #, gcc-internal-format @@ -75173,10 +74680,9 @@ msgid "too many % modifiers at %L" msgstr "zu viele %-Modifizierer bei %L" #: fortran/openmp.cc:3125 -#, fuzzy, gcc-internal-format -#| msgid "too many % modifiers at %L" +#, gcc-internal-format msgid "too many % modifiers at %L" -msgstr "zu viele %-Modifizierer bei %L" +msgstr "zu viele %-Modifizierer bei %L" #: fortran/openmp.cc:3316 #, gcc-internal-format @@ -75284,22 +74790,19 @@ msgid "!$ACC ROUTINE with GANG, WORKER, or VECTOR clause is not permitted in PUR msgstr "!$ACC ROUTINE mit GANG, WORKER oder VECTOR-Klausel ist in PURE-Prozedur bei %C nicht erlaubt" #: fortran/openmp.cc:4568 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected COMPILATION or EXECUTION in AT clause at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected ALIGN or ALLOCATOR clause at %C" -msgstr "Entweder COMPILATION oder EXECUTION erwartet in AT-Klausel bei %C" +msgstr "ALIGN- oder ALLOCATOR-Klausel bei %C erwartet" #: fortran/openmp.cc:4576 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Sorry, %qs clause at %L on REQUIRES directive is not yet supported" +#, gcc-internal-format, gfc-internal-format msgid "Sorry, structure-element list item at %L in ALLOCATE directive is not yet supported" -msgstr "Sorry, die %qs-Klausel bei %L an einer REQUIRES-Direktive wird noch nicht unterstützt" +msgstr "Sorry, das structure-element-Listenelement bei %L in der ALLOCATE-Direktive wird noch nicht unterstützt" #: fortran/openmp.cc:4579 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected expression in %s statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "Unexpected expression as list item at %L in ALLOCATE directive" -msgstr "Ausdruck in %s-Anweisung bei %C erwartet" +msgstr "Unerwarteter Ausdruck als Listenelement bei %L in der ALLOCATE-Direktive" #: fortran/openmp.cc:4650 #, gcc-internal-format, gfc-internal-format @@ -75324,7 +74827,7 @@ msgstr "Eins von IN, OUT, INOUT, INOUTSET oder MUTEXINOUTSET bei %C erwartet, ge #: fortran/openmp.cc:4771 #, gcc-internal-format, gfc-internal-format msgid "The same depend object should be used as DEPOBJ argument at %L and as DESTROY argument at %L" -msgstr "" +msgstr "Dasselbe abhängige Objekt sollte als DEPOBJ-Argument bei %L und als DESTROY-Argument bei %L verwendet werden" #: fortran/openmp.cc:4785 #, gcc-internal-format, gfc-internal-format @@ -75439,7 +74942,7 @@ msgstr "Listenelement %qs bei %L wurde von einer vorhergehenden Direktive OMP DE #: fortran/openmp.cc:5547 fortran/openmp.cc:5601 #, gcc-internal-format, gfc-internal-format msgid "DEVICE_TYPE must be ANY when used with INDIRECT at %L" -msgstr "" +msgstr "DEVICE_TYPE muss ANY sein, wenn es mit INDIRECT bei %L verwendet wird" #: fortran/openmp.cc:5557 #, gcc-internal-format, gfc-internal-format @@ -75462,10 +74965,9 @@ msgid "COMMON at %L set in previous OMP DECLARE TARGET directive to a different msgstr "COMMON bei %L wurde in einer vorangehenden Direktive OMP DECLARE TARGET auf einen abweichenden DEVICE_TYPE festgelegt" #: fortran/openmp.cc:5611 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "OMP DECLARE TARGET directive at %L with only DEVICE_TYPE clause is ignored" +#, gcc-internal-format, gfc-internal-format msgid "OMP DECLARE TARGET directive at %L with only DEVICE_TYPE or INDIRECT clauses is ignored" -msgstr "Direktive OMP DECLARE TARGET bei %L mit nur DEVICE_TYPE-Klausel wird ignoriert" +msgstr "Direktive OMP DECLARE TARGET bei %L mit nur DEVICE_TYPE- oder INDIRECT-Klausel wird ignoriert" #: fortran/openmp.cc:5622 #, gcc-internal-format, gfc-internal-format @@ -75474,10 +74976,9 @@ msgstr "Syntaxfehler in »!$OMP DECLARE TARGET«-Liste bei %C" #. FIXME: constant integer expressions. #: fortran/openmp.cc:5661 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected integer expression at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected trait-property-extension at %C" -msgstr "Ganzzahlausdruck bei %C erwartet" +msgstr "Trait-property-extension bei %C erwartet" #: fortran/openmp.cc:5676 fortran/openmp.cc:5773 fortran/openmp.cc:5904 #: fortran/openmp.cc:6054 fortran/openmp.cc:6082 @@ -75491,10 +74992,9 @@ msgid "expected trait selector name at %C" msgstr "Name des Merkmalsselektors bei %C erwartet" #: fortran/openmp.cc:5717 -#, fuzzy, gcc-internal-format -#| msgid "selector %qs not allowed for context selector set %qs at %C" +#, gcc-internal-format msgid "unknown selector %qs for context selector set %qs at %C" -msgstr "Selektor %qs ist für den Kontext-Selektorsatz %qs nicht erlaubt, bei %C" +msgstr "unbekannter Selektor %qs für Kontext-Selektormenge %qs bei %C" #: fortran/openmp.cc:5735 #, gcc-internal-format @@ -75502,10 +75002,9 @@ msgid "selector %qs does not accept any properties at %C" msgstr "Selektor %qs bei %C akzeptiert keine Eigenschaften" #: fortran/openmp.cc:5744 -#, fuzzy, gcc-internal-format -#| msgid "The %s directive cannot be specified within a %s region at %L" +#, gcc-internal-format msgid "% cannot be specified in traits in the %qs trait-selector-set at %C" -msgstr "Die %1$s-Direktive bei %3$L darf nicht innerhalb einer %2$s-Region angegeben werden" +msgstr "% kann nicht in Traits im trait-selector-set %qs bei %C angegeben werden" #: fortran/openmp.cc:5751 fortran/openmp.cc:5914 fortran/openmp.cc:6006 #: fortran/openmp.cc:6073 @@ -75514,16 +75013,14 @@ msgid "expected %<(%> at %C" msgstr "%<(%> bei %C erwartet" #: fortran/openmp.cc:5759 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be constant integer expression at %C" +#, gcc-internal-format msgid "% argument must be constant integer expression at %C" -msgstr "das Score-Argument bei %C muss ein konstanter ganzzahliger Ausdruck sein" +msgstr "das %-Argument bei %C muss ein konstanter ganzzahliger Ausdruck sein" #: fortran/openmp.cc:5767 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be non-negative at %C" +#, gcc-internal-format msgid "% argument must be non-negative at %C" -msgstr "das Score-Argument bei %C darf nicht negativ sein" +msgstr "das %-Argument bei %C darf nicht negativ sein" #: fortran/openmp.cc:5779 #, gcc-internal-format, gfc-internal-format @@ -75546,22 +75043,19 @@ msgid "expected expression at %C" msgstr "Ausdruck bei %C erwartet" #: fortran/openmp.cc:5853 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "property must be constant integer or logical expression at %C" +#, gcc-internal-format, gfc-internal-format msgid "property must be a constant logical expression at %C" -msgstr "Eigenschaft bei %C muss ein konstanter ganzzahliger oder logischer Ausdruck sein" +msgstr "Eigenschaft bei %C muss ein konstanter logischer Ausdruck sein" #: fortran/openmp.cc:5856 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "property must be constant integer expression" +#, gcc-internal-format, gfc-internal-format msgid "property must be a constant integer expression at %C" -msgstr "Eigenschaft muss ein konstanter ganzzahliger Ausdruck sein" +msgstr "Eigenschaft bei %C muss ein konstanter ganzzahliger Ausdruck sein" #: fortran/openmp.cc:5868 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "property must be constant integer or logical expression at %C" +#, gcc-internal-format, gfc-internal-format msgid "property must be a conforming device number at %C" -msgstr "Eigenschaft bei %C muss ein konstanter ganzzahliger oder logischer Ausdruck sein" +msgstr "Eigenschaft bei %C muss die Nummer eines konformen Geräts sein" #: fortran/openmp.cc:5882 #, gcc-internal-format, gfc-internal-format @@ -75569,10 +75063,9 @@ msgid "expected simd clause at %C" msgstr "SIMD-Klausel bei %C erwartet" #: fortran/openmp.cc:5955 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "expected trait selector name at %C" +#, gcc-internal-format, gfc-internal-format msgid "expected context selector set name at %C" -msgstr "Name des Merkmalsselektors bei %C erwartet" +msgstr "Name der Kontextselektormenge bei %C erwartet" #: fortran/openmp.cc:5962 #, gcc-internal-format @@ -75670,10 +75163,9 @@ msgid "!$OMP REQUIRES at %C must appear in the specification part of a program u msgstr "!$OMP REQUIRES bei %C muss im Spezifikationsteil einer Programmeinheit vorkommen" #: fortran/openmp.cc:6456 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected SEQ_CST, ACQ_REL or RELAXED for ATOMIC_DEFAULT_MEM_ORDER clause at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected ACQ_REL, ACQUIRE, RELAXED, RELEASE or SEQ_CST for ATOMIC_DEFAULT_MEM_ORDER clause at %C" -msgstr "Eins von SEQ_CST, ACQ_REL oder RELAXED erwartet, für ATOMIC_DEFAULT_MEM_ORDER-Klausel bei %C" +msgstr "ACQ_REL, ACQUIRE, RELAXED, RELEASE oder SEQ_CST für ATOMIC_DEFAULT_MEM_ORDER-Klausel bei %C erwartet" #: fortran/openmp.cc:6472 #, gcc-internal-format, gfc-internal-format @@ -75726,16 +75218,14 @@ msgid "!$OMP ATOMIC at %L with %s clause requires %s clause" msgstr "!$OMP ATOMIC bei %L mit %s-Klausel erfordert %s-Klausel" #: fortran/openmp.cc:6907 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "!$OMP ATOMIC WRITE at %L incompatible with ACQUIRE clause" +#, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC WRITE at %L incompatible with ACQUIRES clause implicitly provided by a REQUIRES directive" -msgstr "!$OMP ATOMIC WRITE bei %L ist inkompatibel zur ACQUIRE-Klausel" +msgstr "!$OMP ATOMIC WRITE bei %L inkompatibel mit ACQUIRES-Klausel, die implizit durch eine REQUIRES-Direktive bereitgestellt wird" #: fortran/openmp.cc:6918 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "!$OMP ATOMIC READ at %L incompatible with RELEASE clause" +#, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC READ at %L incompatible with RELEASE clause implicitly provided by a REQUIRES directive" -msgstr "!$OMP ATOMIC READ bei %L ist inkompatibel zur RELEASE-Klausel" +msgstr "!$OMP ATOMIC READ bei %L inkompatibel mit RELEASE-Klausel, die implizit durch eine REQUIRES-Direktive bereitgestellt wird" #: fortran/openmp.cc:6936 #, gcc-internal-format, gfc-internal-format @@ -75860,80 +75350,77 @@ msgstr "Implizit deklariertes Unterprogramm %s wird in !$OMP DECLARE REDUCTION b #: fortran/openmp.cc:7349 #, gcc-internal-format msgid "Unexpected function-result variable %qs at %L in declarative !$OMP ALLOCATE" -msgstr "" +msgstr "Unerwartete function-result-Variable %qs bei %L in deklarativem !$OMP ALLOCATE" #: fortran/openmp.cc:7355 -#, fuzzy, gcc-internal-format -#| msgid "Procedure pointer %qs in %s clause at %L" +#, gcc-internal-format msgid "Procedure pointer %qs not supported with !$OMP ALLOCATE at %L" -msgstr "Prozedurzeiger %qs in %s-Klausel bei %L" +msgstr "Prozedurzeiger %qs nicht unterstützt mit !$OMP ALLOCATE bei %L" #: fortran/openmp.cc:7361 #, gcc-internal-format msgid "Argument %qs at %L to declarative !$OMP ALLOCATE directive must be a variable" -msgstr "" +msgstr "Das Argument %qs bei %L zu der deklarativen Direktive !$OMP ALLOCATE muss eine Variable sein" #: fortran/openmp.cc:7368 #, gcc-internal-format msgid "Argument %qs at %L to declarative !$OMP ALLOCATE shall be in the same scope as the variable declaration" -msgstr "" +msgstr "Das Argument %qs bei %L zu deklarativem !$OMP ALLOCATE muss sich im selben Bereich befinden wie die Variablendeklaration" #: fortran/openmp.cc:7375 -#, fuzzy, gcc-internal-format -#| msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE" +#, gcc-internal-format msgid "Unexpected dummy argument %qs as argument at %L to declarative !$OMP ALLOCATE" -msgstr "Scheinargument von %qs für weitergegebenes Objekt bei %L darf nicht ALLOCATABLE sein" +msgstr "Unerwartetes Dummy-Argument %qs als Argument bei %L zu deklarativem !$OMP ALLOCATE" #: fortran/openmp.cc:7381 #, gcc-internal-format msgid "Unexpected coarray argument %qs as argument at %L to declarative !$OMP ALLOCATE" -msgstr "" +msgstr "Unerwartetes Coarray-Argument %qs als Argument bei %L zu deklarativem !$OMP ALLOCATE" #: fortran/openmp.cc:7389 #, gcc-internal-format msgid "Duplicated common block % in !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Doppelter gemeinsamer Block % in !$OMP ALLOCATE bei %L" #: fortran/openmp.cc:7396 #, gcc-internal-format msgid "Duplicated variable %qs in !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Doppelte Variable %qs in !$OMP ALLOCATE bei %L" #: fortran/openmp.cc:7407 #, gcc-internal-format msgid "Sorry, EQUIVALENCE object %qs not supported with !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Sorry, EQUIVALENCE-Objekt %qs ist nicht unterstützt mit !$OMP ALLOCATE bei %L" #: fortran/openmp.cc:7416 #, gcc-internal-format msgid "Sorry, Cray pointers and pointees such as %qs are not supported with !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Sorry, Cray-Zeiger und Zeigerziele wie %qs werden nicht unterstützt mit !$OMP ALLOCATE bei %L" #: fortran/openmp.cc:7425 #, gcc-internal-format msgid "Unexpected allocatable variable %qs at %L in declarative !$OMP ALLOCATE directive" -msgstr "" +msgstr "Unerwartete allozierte Variable %qs bei %L in der deklarativen Direktive !$OMP ALLOCATE" #: fortran/openmp.cc:7430 #, gcc-internal-format msgid "Unexpected pointer variable %qs at %L in declarative !$OMP ALLOCATE directive" -msgstr "" +msgstr "Unerwartete Zeigervariable %qs bei %L in der deklarativen Direktive !$OMP ALLOCATE" #: fortran/openmp.cc:7441 fortran/openmp.cc:7996 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "ALIGN modifier requires at %L a scalar positive constant integer alignment expression that is a power of two" +#, gcc-internal-format, gfc-internal-format msgid "ALIGN requires a scalar positive constant integer alignment expression at %L that is a power of two" -msgstr "ALIGN-Modifizierer bei %L erfordert einen skalaren, positiven, konstanten Ganzzahlausdruck für die Ausrichtung, der eine Zweierpotenz ist" +msgstr "ALIGN bei %L erfordert einen skalaren, positiven, konstanten Ganzzahlausdruck für die Ausrichtung, der eine Zweierpotenz ist" #: fortran/openmp.cc:7456 #, gcc-internal-format msgid "An ALLOCATOR clause is required as the list item %<%s%s%s%> at %L has the SAVE attribute" -msgstr "" +msgstr "Eine ALLOCATOR-Klausel ist erforderlich, da das Listenelement %<%s%s%s%> bei %L das Attribut SAVE hat" #: fortran/openmp.cc:7461 #, gcc-internal-format msgid "Predefined allocator required in ALLOCATOR clause at %L as the list item %<%s%s%s%> at %L has the SAVE attribute" -msgstr "" +msgstr "Vordefinierter Allokator in ALLOCATOR-Klausel bei %L erforderlich, da das Listenelement %<%s%s%s%> bei %L das Attribut SAVE hat" #: fortran/openmp.cc:7475 fortran/openmp.cc:7980 #, gcc-internal-format @@ -75972,10 +75459,9 @@ msgid "IF clause modifier %s at %L not appropriate for the current OpenMP constr msgstr "IF-Klausel-Modifizierer »%s« bei %L ist dem aktuellen OpenMP-Konstrukt nicht angemessen" #: fortran/openmp.cc:7687 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "IF clause at %L requires a scalar LOGICAL expression" +#, gcc-internal-format, gfc-internal-format msgid "SELF clause at %L requires a scalar LOGICAL expression" -msgstr "IF-Klausel bei %L erfordert einen skalaren LOGICAL-Ausdruck" +msgstr "SELF-Klausel bei %L erfordert einen skalaren LOGICAL-Ausdruck" #: fortran/openmp.cc:7696 #, gcc-internal-format, gfc-internal-format @@ -76061,10 +75547,9 @@ msgid "Symbol %qs present on both data and map clauses at %L" msgstr "Symbol %qs tritt bei %L sowohl in der DATA- als auch in der MAP-Klausel auf" #: fortran/openmp.cc:8021 -#, fuzzy, gcc-internal-format -#| msgid "%qs appears more than once in % clauses at %L" +#, gcc-internal-format msgid "%qs appears more than once in % at %L" -msgstr "%qs kommt mehr als einmal in %-Klauseln bei %L vor" +msgstr "%qs kommt mehr als einmal in % bei %L vor" #: fortran/openmp.cc:8063 #, gcc-internal-format @@ -76072,41 +75557,39 @@ msgid "%qs specified in % clause at %L but not in an explicit privati msgstr "%qs ist in %-Klausel bei %L angegeben, aber nicht in einer expliziten Privatisierungs-Klausel" #: fortran/openmp.cc:8091 -#, fuzzy, gcc-internal-format -#| msgid "Unexpected coarray designator at %C" +#, gcc-internal-format msgid "Unexpected coarray %qs in % at %L" -msgstr "Unerwarteter Coarray-Bezeichner bei %C" +msgstr "Unerwartetes Coarray %qs in % bei %L" #: fortran/openmp.cc:8105 -#, fuzzy, gcc-internal-format -#| msgid "%qs specified in % clause at %L but not in an explicit privatization clause" +#, gcc-internal-format msgid "%qs specified in % at %L but not in the associated ALLOCATE statement" -msgstr "%qs ist in %-Klausel bei %L angegeben, aber nicht in einer expliziten Privatisierungs-Klausel" +msgstr "%qs ist in % bei %L angegeben, aber nicht in der verknüpften ALLOCATE-Anweisung" #: fortran/openmp.cc:8139 #, gcc-internal-format msgid "%qs listed in % statement at %L but it is neither explicitly in listed in the % directive nor exists a directive without argument list" -msgstr "" +msgstr "%qs wird in der Anweisung % bei %L aufgeführt, ist aber weder explizit in der Direktive % aufgeführt noch existiert eine Richtlinie ohne Argumentenliste" #: fortran/openmp.cc:8150 #, gcc-internal-format msgid "Unexpected coarray %qs in % at %L, implicitly listed in % at %L" -msgstr "" +msgstr "Unerwartetes Coarray %qs in % bei %L, implizit aufgeführt in % bei %L" #: fortran/openmp.cc:8175 #, gcc-internal-format msgid "ALLOCATORS directive at %L inside a target region must specify an ALLOCATOR modifier for %qs" -msgstr "" +msgstr "Die ALLOCATORS-Direktive bei %L innerhalb einer Zielregion muss einen ALLOCATOR-Modifikator für %qs angeben" #: fortran/openmp.cc:8179 #, gcc-internal-format msgid "ALLOCATE directive at %L inside a target region must specify an ALLOCATOR clause for %qs" -msgstr "" +msgstr "Die ALLOCATE-Direktive bei %L innerhalb einer Zielregion muss eine ALLOCATOR-Klausel für %qs angeben" #: fortran/openmp.cc:8183 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATE directive at %L inside a target region must specify an ALLOCATOR clause" -msgstr "" +msgstr "Die ALLOCATE-Direktive bei %L innerhalb einer Zielregion muss eine ALLOCATOR-Klausel angeben" #: fortran/openmp.cc:8206 #, gcc-internal-format @@ -76287,28 +75770,27 @@ msgstr "Listenelement %qs in %s-Klausel bei %L muss TYPE(C_PTR) sein" #: fortran/openmp.cc:8709 #, gcc-internal-format msgid "Memspace %qs at %L in USES_ALLOCATORS must be a predefined memory space" -msgstr "" +msgstr "Der Speicherbereich %qs bei %L in USES_ALLOCATORS muss ein vordefinierter Speicherbereich sein" #: fortran/openmp.cc:8717 -#, fuzzy, gcc-internal-format -#| msgid "%qs at %L should be a scalar of type integer(kind=omp_event_handle_kind)" +#, gcc-internal-format msgid "Allocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind %" -msgstr "%qs bei %L sollte ein Skalar vom Typ integer(kind=omp_event_handle_kind) sein" +msgstr "Allokator %qs bei %L in USES_ALLOCATORS muss eine skalare Ganzzahl der Art % sein" #: fortran/openmp.cc:8725 #, gcc-internal-format msgid "Allocator %qs at %L in USES_ALLOCATORS must either a variable or a predefined allocator" -msgstr "" +msgstr "Allokator %qs bei %L in USES_ALLOCATORS muss entweder eine Variable oder ein vordefinierter Allokator sein" #: fortran/openmp.cc:8730 #, gcc-internal-format msgid "A memory space or traits array may not be specified for predefined allocator %qs at %L" -msgstr "" +msgstr "Für den vordefinierten Allokator %qs bei %L darf kein Speicherbereich oder Traits-Array angegeben werden" #: fortran/openmp.cc:8741 #, gcc-internal-format msgid "Traits array %qs in USES_ALLOCATORS %L must be a one-dimensional named constant array of type %" -msgstr "" +msgstr "Traits-Array %qs in USES_ALLOCATORS bei %L muss ein eindimensionales benanntes konstantes Array vom Typ % sein" #: fortran/openmp.cc:8771 #, gcc-internal-format @@ -76444,7 +75926,7 @@ msgstr "%-Klausel bei %L darf nicht zusammen mit %-Klausel #: fortran/openmp.cc:9226 #, gcc-internal-format msgid "% construct at %L requires % clause" -msgstr "" +msgstr "%-Konstrukt bei %L erfordert %-Klausel" #: fortran/openmp.cc:9380 #, gcc-internal-format, gfc-internal-format @@ -76582,35 +76064,34 @@ msgid "unexpected !$OMP ATOMIC expression at %L" msgstr "Unerwarteter »!$OMP ATOMIC«Ausdruck bei %L" #: fortran/openmp.cc:9948 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "With INSCAN at %L, expected loop body with !$OMP SCAN between two structured-block-sequences" +#, gcc-internal-format, gfc-internal-format msgid "With INSCAN at %L, expected loop body with !$OMP SCAN between two structured block sequences" -msgstr "Aufgrund des INSCAN bei %L wird ein Schleifenrumpf mit !$OMP SCAN zwischen zwei structured-block-sequences erwartet" +msgstr "Aufgrund des INSCAN bei %L wird ein Schleifenrumpf mit !$OMP SCAN zwischen zwei strukturierten Blockfolgen erwartet" #: fortran/openmp.cc:9955 #, gcc-internal-format, gfc-internal-format msgid "!$OMP SCAN at %L with zero executable statements in preceding structured block sequence" -msgstr "" +msgstr "!$OMP SCAN bei %L mit null ausführbaren Anweisungen in der vorangehenden strukturierten Blockfolge" #: fortran/openmp.cc:9962 #, gcc-internal-format, gfc-internal-format msgid "!$OMP SCAN at %L with zero executable statements in succeeding structured block sequence" -msgstr "" +msgstr "!$OMP SCAN bei %L mit null ausführbaren Anweisungen in der darauffolgenden strukturierten Blockfolge" #: fortran/openmp.cc:10176 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain loop in intervening code at %L" -msgstr "" +msgstr "%s kann keine Schleife im dazwischenliegenden Code bei %L enthalten" #: fortran/openmp.cc:10256 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP directive in intervening code at %L" -msgstr "" +msgstr "%s kann keine OpenMP-Direktive im dazwischenliegenden Code bei %L enthalten" #: fortran/openmp.cc:10268 fortran/openmp.cc:10294 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP API call in intervening code at %L" -msgstr "" +msgstr "%s kann keinen OpenMP-API-Aufruf im dazwischenliegenden Code bei %L enthalten" #: fortran/openmp.cc:10822 #, gcc-internal-format, gfc-internal-format @@ -76648,10 +76129,9 @@ msgid "%s iteration variable used in more than one loop at %L" msgstr "%s-Iterationsvariable bei %L wird in mehr als einer Schleife verwendet" #: fortran/openmp.cc:10874 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "iteration variable %qE should not be reduction" +#, gcc-internal-format, gfc-internal-format msgid "%s iteration variable at %L is bound in intervening code" -msgstr "Schleifenvariable %qE sollte nicht Reduktion sein" +msgstr "%s-Iterationsvariable bei %L ist im dazwischenliegenden Code gebunden" #: fortran/openmp.cc:10883 #, gcc-internal-format, gfc-internal-format @@ -76659,10 +76139,9 @@ msgid "%s loop start expression not in canonical form at %L" msgstr "Schleifenstartausdruck %s bei %L hat nicht die kanonische Form" #: fortran/openmp.cc:10890 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%s loop start expression not in canonical form at %L" +#, gcc-internal-format, gfc-internal-format msgid "%s loop start expression at %L uses variable bound in intervening code" -msgstr "Schleifenstartausdruck %s bei %L hat nicht die kanonische Form" +msgstr "%s-Schleifenstartausdruck bei %L verwendet im dazwischenliegenden Code gebundene Variable" #: fortran/openmp.cc:10899 #, gcc-internal-format, gfc-internal-format @@ -76672,7 +76151,7 @@ msgstr "Endausdruck der »%s«-Schleife bei %L ist nicht in kanonischer Form" #: fortran/openmp.cc:10906 #, gcc-internal-format, gfc-internal-format msgid "%s loop end expression at %L uses variable bound in intervening code" -msgstr "" +msgstr "Ausdruck %s bei %L für das Ende der Schleife verwendet eine im dazwischenliegenden Code gebundene Variable" #: fortran/openmp.cc:10913 #, gcc-internal-format, gfc-internal-format @@ -76687,26 +76166,24 @@ msgstr "Schleifeninkrement %s bei %L hat nicht die kanonische Form" #: fortran/openmp.cc:10926 #, gcc-internal-format, gfc-internal-format msgid "%s loop increment expression at %L uses variable bound in intervening code" -msgstr "" +msgstr "%s-Schleifeninkrementausdruck bei %L verwendet eine im dazwischenliegenden Code gebundene Variable" #. Parse error, can't recover from this. #: fortran/openmp.cc:10944 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "not enough DO loops for collapsed %s at %L" +#, gcc-internal-format, gfc-internal-format msgid "not enough DO loops for collapsed %s (level %d) at %L" -msgstr "zu wenige DO-Schleifen für zusammengefallenes %s bei %L" +msgstr "zu wenige DO-Schleifen für zusammengefallenes %s (Stufe %d) bei %L" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79861 #: fortran/openmp.cc:10956 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%s !$ACC LOOP loops not perfectly nested at %L" +#, gcc-internal-format, gfc-internal-format msgid "%s inner loops must be perfectly nested with ORDERED clause at %L" -msgstr "»%s !$ACC LOOP«-Schleifen bei %L nicht perfekt geschachtelt" +msgstr "%s innere Schleifen müssen perfekt verschachtelt sein mit ORDERED-Klausel bei %L" #: fortran/openmp.cc:10963 #, gcc-internal-format, gfc-internal-format msgid "%s inner loops must be perfectly nested with REDUCTION INSCAN clause at %L" -msgstr "" +msgstr "%s innere Schleifen müssen perfekt verschachtelt sein mit REDUCTION-INSCAN-Klausel bei %L" #: fortran/openmp.cc:11190 fortran/openmp.cc:11203 #, gcc-internal-format, gfc-internal-format @@ -76773,12 +76250,12 @@ msgstr "NAME %qs ist in »!$ACC ROUTINE ( NAME )« bei %L ungültig" #: fortran/openmp.cc:11539 #, gcc-internal-format, gfc-internal-format msgid "!$OMP TARGET region at %L with a nested TEAMS at %L may not contain any other statement, declaration or directive outside of the single TEAMS construct" -msgstr "" +msgstr "!$OMP-TARGET-Region bei %L mit einem verschachtelten TEAMS bei %L darf keine andere Anweisung, Deklaration oder Direktive außerhalb des einzelnen TEAMS-Konstrukts enthalten" #: fortran/openmp.cc:11543 #, gcc-internal-format, gfc-internal-format msgid "!$OMP TARGET region at %L with a nested TEAMS may not contain any other statement, declaration or directive outside of the single TEAMS construct" -msgstr "" +msgstr "!$OMP-TARGET-Region bei %L mit einem verschachtelten TEAMS darf keine andere Anweisung, Deklaration oder Direktive außerhalb des einzelnen TEAMS-Konstrukts enthalten" #: fortran/openmp.cc:11637 #, gcc-internal-format, gfc-internal-format @@ -76958,23 +76435,22 @@ msgstr "Nicht klassifizierbare OpenACC-Anweisung bei %C" #: fortran/parse.cc:817 #, gcc-internal-format msgid "%qs directive at %L must either have a variable argument or, if associated with an ALLOCATE stmt, must be preceded by an executable statement or OpenMP construct" -msgstr "" +msgstr "Die %qs-Direktive bei %L muss entweder ein Variablenargument haben oder, wenn sie mit einer ALLOCATE-Anweisung verknüpft ist, muss ihr eine ausführbare Anweisung oder ein OpenMP-Konstrukt vorausgehen" #: fortran/parse.cc:829 #, gcc-internal-format msgid "Structure-component expression at %L in %qs directive not permitted in declarative directive; as directive associated with an ALLOCATE stmt it must be preceded by an executable statement or OpenMP construct" -msgstr "" +msgstr "Strukturkomponenten-Ausdruck bei %L in %qs-Direktive in deklarativer Direktive nicht zulässig; als Richtlinie, die mit einer ALLOCATE-Anweisung verbunden ist, muss ihr eine ausführbare Anweisung oder ein OpenMP-Konstrukt vorausgehen" #: fortran/parse.cc:855 #, gcc-internal-format msgid "%qs directive at %L associated with an ALLOCATE stmt must be preceded by an executable statement or OpenMP construct; note the variables in the list all have the allocatable or pointer attribute" -msgstr "" +msgstr "Die %qs-Direktive bei %L, die mit einer ALLOCATE-Anweisung verbunden ist, muss eine ausführbare Anweisung oder ein OpenMP-Konstrukt vorausgehen; beachten Sie, dass die Variablen in der Liste alle das Attribut allocatable oder pointer haben" #: fortran/parse.cc:1023 fortran/parse.cc:1325 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "OpenACC directives other than ROUTINE may not appear in PURE procedures at %C" +#, gcc-internal-format, gfc-internal-format msgid "OpenMP directive at %C is not pure and thus may not appear in a PURE procedure" -msgstr "OpenACC-Direktiven außer ROUTINE dürfen in PURE-Prozeduren nicht vorkommen, bei %C" +msgstr "OpenMP-Direktive bei %C ist nicht rein und darf daher nicht in einer PURE-Prozedur erscheinen" #: fortran/parse.cc:1296 #, gcc-internal-format, gfc-internal-format @@ -76984,7 +76460,7 @@ msgstr "Nicht klassifizierbare OpenMP-Anweisung bei %C" #: fortran/parse.cc:1312 #, gcc-internal-format msgid "OpenMP ERROR directive at %L with % clause in a PURE procedure" -msgstr "" +msgstr "OpenMP ERROR-Direktive bei %L mit %-Klausel in einer PURE-Prozedur" #: fortran/parse.cc:1440 #, gcc-internal-format, gfc-internal-format @@ -77395,19 +76871,17 @@ msgstr "Redundantes !$ACC END LOOP bei %C" #: fortran/parse.cc:5809 #, gcc-internal-format, gfc-internal-format msgid "%s statements at %L and %L have both no list item but only one may" -msgstr "" +msgstr "%s-Anweisungen bei %L und %L haben beide kein Listenelement, aber nur eine darf" #: fortran/parse.cc:5829 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected expression at %C in PARAMETER statement" +#, gcc-internal-format, gfc-internal-format msgid "Unexpected %s at %C; expected ALLOCATE or %s statement" -msgstr "Ausdruck bei %C in PARAMETER-Anweisung erwartet" +msgstr "Unerwartetes %s bei %C; ALLOCATE- oder %s-Anweisung erwartet" #: fortran/parse.cc:5832 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Unexpected junk after ELSE statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "Unexpected %s at %C; expected ALLOCATE statement after %s" -msgstr "Unerwartete Zeichen hinter ELSE-Anweisung bei %C" +msgstr "Unerwartetes %s bei %C; ALLOCATE-Anweisung nach %s erwartet" #: fortran/parse.cc:6120 #, gcc-internal-format, gfc-internal-format @@ -77656,14 +77130,10 @@ msgid "match_string_constant(): Delimiter not found" msgstr "match_string_constant(): Delimiter not found" #: fortran/primary.cc:1193 -#, fuzzy -#| msgid "Substring start index (%ld) at %L below 1" msgid "Substring start index (%td) at %L below 1" -msgstr "Anfangs-Index der Teilzeichenkette %ld bei %L muss kleiner als 1 sein" +msgstr "Anfangs-Index %td der Teilzeichenkette bei %L muss mindestens 1 sein" #: fortran/primary.cc:1199 -#, fuzzy -#| msgid "Substring end index (%ld) at %L exceeds string length" msgid "Substring end index (%td) at %L exceeds string length" msgstr "End-Index %ld der Teilzeichenkette bei %L überschreitet Zeichenkettenlänge" @@ -77873,10 +77343,8 @@ msgid "Too many components in structure constructor at %L" msgstr "Zu viele Komponenten in Strukturkonstruktor bei %L" #: fortran/primary.cc:3242 -#, fuzzy -#| msgid "CHARACTER expression will be truncated in constructor (%ld/%ld) at %L" msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L" -msgstr "CHARACTER-Ausdruck wird in Konstruktor (%ld/%ld) bei %L abgeschnitten" +msgstr "CHARACTER-Ausdruck wird in Konstruktor (%td/%td) bei %L abgeschnitten" #: fortran/primary.cc:3260 #, gcc-internal-format @@ -78196,10 +77664,9 @@ msgid "%qs at %L cannot appear in COMMON [F2008:C5100]" msgstr "%qs bei %L kann nicht in COMMON auftreten [F2008:C5100]" #: fortran/resolve.cc:1016 -#, fuzzy, gcc-internal-format -#| msgid "Global entity %qs at %L cannot appear in a COMMON block at %L" +#, gcc-internal-format msgid "Automatic object %qs at %L cannot appear in COMMON at %L" -msgstr "Globale Entität %qs bei %L kann nicht in einem COMMON-Block bei %L vorkommen" +msgstr "Automatisches Objekt %qs bei %L kann nicht in COMMON bei %L vorkommen" #: fortran/resolve.cc:1028 #, gcc-internal-format @@ -78881,10 +78348,9 @@ msgstr "Variable »%s« vermuteten Ranges bei %L darf keine Referenz auf Subobje # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79596 #: fortran/resolve.cc:5909 -#, fuzzy, gcc-internal-format -#| msgid "gfc_variable_attr(): Bad array reference" +#, gcc-internal-format msgid "Scalar variable %qs has an array reference at %L" -msgstr "gfc_variable_attr(): Bad array reference" +msgstr "Skalare Variable %qs hat eine Array-Referenz bei %L" #: fortran/resolve.cc:6054 #, gcc-internal-format @@ -79509,16 +78975,14 @@ msgid "gfc_resolve_blocks(): Bad block type" msgstr "gfc_resolve_blocks(): Bad block type" #: fortran/resolve.cc:11232 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Data transfer element at %L cannot have procedure pointer components" +#, gcc-internal-format, gfc-internal-format msgid "Variable in the ordinary assignment at %L is a procedure pointer component" -msgstr "Datenübertragungselement bei %L kann keine Prozedurzeiger-Komponenten haben" +msgstr "Die Variable in der gewöhnlichen Zuweisung bei %L ist eine Prozedurzeigerkomponente" #: fortran/resolve.cc:11293 -#, fuzzy, gcc-internal-format -#| msgid "CHARACTER expression will be truncated in assignment (%ld/%ld) at %L" +#, gcc-internal-format msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L" -msgstr "CHARACTER-Ausdruck wird in Zuweisung (%ld/%ld) bei %L abgeschnitten" +msgstr "CHARACTER-Ausdruck wird in Zuweisung (%wd/%wd) bei %L abgeschnitten" #: fortran/resolve.cc:11325 #, gcc-internal-format, gfc-internal-format @@ -80509,10 +79973,9 @@ msgid "DATA statement at %L has more variables than values" msgstr "DATA-Anweisung bei %L hat mehr Variablen als Werte" #: fortran/resolve.cc:17044 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Nonconstant array section at %L in DATA statement" +#, gcc-internal-format, gfc-internal-format msgid "Non-constant character length at %L in DATA statement" -msgstr "Abschnitt eines nicht konstanten Feldes bei %L in DATA-Anweisung" +msgstr "Nichtkonstante Zeichenlänge bei %L in DATA-Anweisung" #: fortran/resolve.cc:17072 #, gcc-internal-format, gfc-internal-format @@ -81087,10 +80550,9 @@ msgid "Result of SCALE overflows its kind at %L" msgstr "Ergebnis von SCALE überschreitet seine Art bei %L" #: fortran/simplify.cc:7634 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L must be of rank %d" +#, gcc-internal-format, gfc-internal-format msgid "DIM argument (%d) to intrinsic SIZE at %L out of range (1:%d)" -msgstr "Argument %qs des intrinsischen %qs bei %L muss vom Rang %d sein" +msgstr "DIM-Argument (%d) für intrinsisches SIZE bei %L außerhalb des Bereichs (1:%d)" #: fortran/simplify.cc:7759 #, gcc-internal-format @@ -81594,10 +81056,9 @@ msgid "bad expression type during walk (%d)" msgstr "Falscher Ausdruckstyp beim Durchlaufen (%d)" #: fortran/trans-common.cc:411 -#, fuzzy, gcc-internal-format -#| msgid "Named COMMON block %qs at %L shall be of the same size as elsewhere (%lu vs %lu bytes)" +#, gcc-internal-format msgid "Named COMMON block %qs at %L shall be of the same size as elsewhere (%wu vs %wu bytes)" -msgstr "Benannter COMMON-Block %qs bei %L muss die gleiche Größe wie anderswo haben (%lu Bytes gegenüber %lu Bytes)" +msgstr "Benannter COMMON-Block %qs bei %L muss die gleiche Größe wie anderswo haben (%wu Bytes gegenüber %wu Bytes)" # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79596 #: fortran/trans-common.cc:819 @@ -81705,13 +81166,12 @@ msgstr "Parameter aufgeschobenen Typs wird noch nicht unterstützt" #: fortran/trans-decl.cc:5224 #, gcc-internal-format msgid "Sorry, !$OMP allocate for COMMON block variable %qs at %L not supported" -msgstr "" +msgstr "Sorry, !$OMP allocate for COMMON block variable %qs at %L not supported" #: fortran/trans-decl.cc:5231 -#, fuzzy, gcc-internal-format -#| msgid "Character dummy variable %qs at %L with VALUE attribute must have constant length" +#, gcc-internal-format msgid "Sorry, !$OMP allocate for variable %qs at %L with SAVE attribute not yet implemented" -msgstr "Zeichenwertige Scheinvariable %qs bei %L mit VALUE-Attribut muss konstante Länge haben" +msgstr "Sorry, !$OMP allocate for variable %qs at %L with SAVE attribute not yet implemented" #: fortran/trans-decl.cc:5437 #, gcc-internal-format @@ -81872,28 +81332,27 @@ msgstr "unbehandelter Ausdruck" #: fortran/trans-openmp.cc:4100 #, gcc-internal-format msgid "% clause with traits and memory spaces" -msgstr "" +msgstr "%-Klausel mit Traits und Speicherbereichen" #: fortran/trans-openmp.cc:5024 #, gcc-internal-format msgid "% at %L requires %<-fopenmp-allocators%>" -msgstr "" +msgstr "% bei %L erfordert %<-fopenmp-allocators%>" #: fortran/trans-openmp.cc:5027 #, gcc-internal-format msgid "All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>" -msgstr "" +msgstr "Alle Dateien, die eine solche Variable freigeben könnten, müssen mit %<-fopenmp-allocators%> kompiliert werden" #: fortran/trans-openmp.cc:5030 #, gcc-internal-format msgid "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator" -msgstr "" +msgstr "Dazu gehören explizites DEALLOCATE, Neuzuweisung bei intrinsischer Zuweisung, INTENT(OUT) für allozierbare Dummy-Argumente und Neuzuweisung von allozierbaren Komponenten, die mit einem OpenMP-Allokator alloziert wurden" #: fortran/trans-openmp.cc:5607 fortran/trans-openmp.cc:5627 -#, fuzzy, gcc-internal-format -#| msgid "non-rectangular loop nest with step other than constant 1 or -1 for %qs" +#, gcc-internal-format msgid "non-rectangular loop nest with non-constant step for %qs" -msgstr "Nichtrechteckige Schleifenschachtelung mit Schrittweite ungleich 1 oder -1 für %qs" +msgstr "Nichtrechteckige Schleifenschachtelung mit nichtkonstanter Schrittweite für %qs" #: fortran/trans-openmp.cc:5629 #, gcc-internal-format @@ -82477,24 +81936,22 @@ msgstr "Argument für CAP muss eine Konstante oder eine Variable vom Typ CHAR se #: m2/gm2-gcc/m2expr.cc:4029 #, gcc-internal-format msgid "constant literal %qs exceeds internal ZTYPE range" -msgstr "" +msgstr "Konstantenliteral %qs überschreitet internen ZTYPE-Bereich" #: m2/gm2-gcc/m2expr.cc:3949 #, gcc-internal-format msgid "constant literal %qs contains %qc, expected 0 or 1" -msgstr "" +msgstr "Konstantenliteral %qs enthält %qc, 0 oder 1 erwartet" #: m2/gm2-gcc/m2expr.cc:3964 m2/gm2-gcc/m2expr.cc:3976 -#, fuzzy, gcc-internal-format -#| msgid "language dialect differs %qs, expected %qs" +#, gcc-internal-format msgid "constant literal %qs contains %qc, expected %qs" -msgstr "Sprachdialekt ist %qs, erwartet wird jedoch %qs" +msgstr "Konstantenliteral %qs enthält %qc, %qs erwartet" #: m2/gm2-gcc/m2expr.cc:3995 -#, fuzzy, gcc-internal-format -#| msgid "target & host is %qs:%qs, expected %qs:%qs" +#, gcc-internal-format msgid "constant literal %qs contains %qc, expected %qs or %qs" -msgstr "Ziel und Gastgeber sind %qs:%qs, erwartet werden jedoch %qs:%qs" +msgstr "Konstantenliteral %qs enthält %qc, erwartet wird %qs oder %qs" #: m2/gm2-gcc/m2expr.cc:4061 #, gcc-internal-format @@ -83656,10 +83113,11 @@ msgstr "der Rückgabewert vom Typ %qT wird ignoriert, muss aber verwendet werden msgid "unused name %qE" msgstr "unverwendeter Name %qE" +# Ich teile diesen Humor nicht. -- Roland Illig #: rust/resolve/rust-ast-resolve-expr.cc:167 #, gcc-internal-format, gfc-internal-format msgid "are you trying to break %s? how dare you?" -msgstr "" +msgstr "Wert »%s« kann in diesem Bereich nicht gefunden werden" #~ msgid "to generate dependencies you must specify '-fcpp' " #~ msgstr "um Abhängigkeiten zu erzeugen, müssen Sie %<-fcpp%> angeben" diff --git a/gcc/po/fr.po b/gcc/po/fr.po index ca66271f4aa6..77246f5241b1 100644 --- a/gcc/po/fr.po +++ b/gcc/po/fr.po @@ -1,12 +1,12 @@ # This file is distributed under the same license as the gcc package. # # Messages français pour GNU concernant gcc. -# Copyright © 2023 Free Software Foundation, Inc. +# Copyright © 2024 Free Software Foundation, Inc. # # Michel Robitaille , traducteur depuis/since 1996. # François-Xavier Coudert , 2008. # Stéphane Aulery , 2015, 2016. -# Frédéric Marchal , 2023. +# Frédéric Marchal , 2024. # # Vocabulaire utilisé # lvalue = l-valeur @@ -97,10 +97,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gcc 13.2.0\n" +"Project-Id-Version: gcc 14.1-b20240218\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2024-02-16 21:35+0000\n" -"PO-Revision-Date: 2023-07-28 14:17+0200\n" +"PO-Revision-Date: 2024-04-06 17:05+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -408,10 +408,8 @@ msgid "-install_name only allowed with -dynamiclib" msgstr "-install_name permis seulement avec -dynamiclib" #: config/darwin.h:191 -#, fuzzy -#| msgid "-bundle not allowed with -dynamiclib" msgid "-bundle not allowed with -shared" -msgstr "-bundle n'est pas permis avec -dynamiclib" +msgstr "-bundle n'est pas permis avec -shared" #: config/darwin.h:192 msgid "-bundle not allowed with -dynamiclib" @@ -1115,7 +1113,7 @@ msgstr "Fixer l'accessibilité par défaut des entités du module à PRIVATE." #: fortran/lang.opt:721 #, no-c-format msgid "Handle OpenMP allocators for allocatables and pointers." -msgstr "" +msgstr "Gérer les allocateurs OpenMP pour les allouables et les pointeurs." #: fortran/lang.opt:725 #, no-c-format @@ -1270,10 +1268,9 @@ msgid "Conform to the ISO Fortran 2018 standard." msgstr "Être conforme au standard Fortran ISO 2018." #: fortran/lang.opt:896 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO Fortran 2003 standard." +#, no-c-format msgid "Conform to the ISO Fortran 2023 standard." -msgstr "Être conforme au standard Fortran ISO 2003." +msgstr "Être conforme au standard Fortran ISO 2023." #: fortran/lang.opt:900 #, no-c-format @@ -1313,7 +1310,7 @@ msgstr "-frust-crate= Défini le nom de cageot (crate) pour la #: rust/lang.opt:67 #, no-c-format msgid "-frust-extern= Specify where an external library is located" -msgstr "" +msgstr "-ftruxt-extern= Spécifier où une bibliothèque externe est placée" #: rust/lang.opt:71 #, no-c-format @@ -1321,10 +1318,9 @@ msgid "Dump various Rust front end internals." msgstr "Vidanger divers détails internes de l'interface Rust." #: rust/lang.opt:75 -#, fuzzy, no-c-format -#| msgid "-frust-dump-\tDump Rust frontend internal information." +#, no-c-format msgid "-frust-dump- Dump Rust frontend internal information." -msgstr "-frust-dump-\tDécharger les informations internes de l'interface Rust." +msgstr "-frust-dump- Décharger les informations internes de l'interface Rust." #: rust/lang.opt:79 #, no-c-format @@ -1332,21 +1328,19 @@ msgid "Enable experimental compilation of Rust files at your own risk" msgstr "Activez la compilation expérimentale de fichiers Rust à vos propres risques" #: rust/lang.opt:83 -#, fuzzy, no-c-format -#| msgid "-frust-max-recursion-depth=integer" +#, no-c-format msgid "-frust-max-recursion-depth=" -msgstr "-frust-max-recursion-depth=entier" +msgstr "-frust-max-recursion-depth=" #: rust/lang.opt:87 #, no-c-format msgid "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro] Crate type to emit" -msgstr "" +msgstr "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro] Type de cageot (crate) a émettre" #: rust/lang.opt:115 -#, fuzzy, no-c-format -#| msgid "-frust-mangling=[legacy|v0] Choose which version to use for name mangling" +#, no-c-format msgid "-frust-mangling=[legacy|v0] Version to use for name mangling" -msgstr "-frust-mangling=[legacy|v0] Choisir la version pour la décoration de noms" +msgstr "-frust-mangling=[legacy|v0] Version à utiliser pour la décoration de noms" #: rust/lang.opt:128 #, no-c-format @@ -1354,16 +1348,14 @@ msgid "-frust-cfg= Set a config expansion option" msgstr "-frust-cfg= Définir une option d'expansion de configuration" #: rust/lang.opt:132 -#, fuzzy, no-c-format -#| msgid "-frust-edition=[2015|2018|2021] Choose which edition to use when compiling rust code" +#, no-c-format msgid "-frust-edition=[2015|2018|2021] Edition to use when compiling rust code" -msgstr "-frust-edition=[2015|2018|2021] Choisir l'édition pour la compilation de code rust" +msgstr "-frust-edition=[2015|2018|2021] Édition à utiliser pour la compilation de code rust" #: rust/lang.opt:148 -#, fuzzy, no-c-format -#| msgid "Flag to enable embeding metadata directly into object files" +#, no-c-format msgid "Enable embedding metadata directly into object files" -msgstr "Fanion pour activer l'intégration de méta-données directement des les fichiers objets" +msgstr "Activer l'intégration de méta-données directement des les fichiers objets" #: rust/lang.opt:152 #, no-c-format @@ -1371,20 +1363,19 @@ msgid "-frust-metadata-output= Path to output crate metadata" msgstr "-frust-metadata-output= Chemin pour sortir les méta-données des cageots (crate)" #: rust/lang.opt:160 -#, fuzzy, no-c-format -#| msgid "-frust-compile-until=[ast|attributecheck|expansion|nameresolution|lowering|typecheck|privacy|unsafety|const|copimlation|end] When to stop in the pipeline when compiling Rust code" +#, no-c-format msgid "-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end] The pipeline will run up until this stage when compiling Rust code" -msgstr "-frust-compile-until=[ast|attributecheck|expansion|nameresolution|lowering|typecheck|privacy|unsafety|const|copimlation|end] Quand arrêter dans le pipeline lors de la compilation de code Rust" +msgstr "-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|copimlation|end] Le pipeline va s'exécuter jusqu'à cette étape lors de la compilation de code Rust" #: rust/lang.opt:209 #, no-c-format msgid "Use the temporary and experimental name resolution pipeline instead of the stable one" -msgstr "" +msgstr "Utiliser un pipeline temporaire et expérimental pour la résolution de noms au lieu de celui qui est stable" #: rust/lang.opt:213 #, no-c-format msgid "Use the WIP borrow checker." -msgstr "" +msgstr "Utiliser le vérificateur d'emprunts WIP" #: c-family/c.opt:182 #, no-c-format @@ -1479,18 +1470,17 @@ msgstr "-MT \tAjouter une cible qui ne nécessite pas d'échappement des #: c-family/c.opt:261 #, no-c-format msgid "Structured format for output dependency information. Supported (\"p1689r5\")." -msgstr "" +msgstr "Format structuré pour la sortie des informations de dépendances. Supporté (« p1689r5 »)." #: c-family/c.opt:265 -#, fuzzy, no-c-format -#| msgid "Generate C++ Module dependency information." +#, no-c-format msgid "File for output dependency information." -msgstr "Générer l'information des dépendances de modules C++i." +msgstr "Fichier pour sortir les informations de dépendances." #: c-family/c.opt:269 #, no-c-format msgid "-fdeps-target=obj.o Output file for the compile step." -msgstr "" +msgstr "-fdeps-target=obj.o Écrit le fichier pour l'étape du compilateur." #: c-family/c.opt:273 #, no-c-format @@ -1560,7 +1550,7 @@ msgstr "Avertir lors de toute utilisation de alloca." #: c-family/c.opt:340 #, no-c-format msgid "Warn when allocating insufficient storage for the target type of the assigned pointer." -msgstr "" +msgstr "Avertir lors de l'allocation d'un stockage insuffisant pour le type cible du pointeur assigné." #: c-family/c.opt:344 #, no-c-format @@ -1638,16 +1628,14 @@ msgid "Warn when a built-in preprocessor macro is undefined or redefined." msgstr "Avertir quand une macro interne du pré-processeur est annulée ou redéfinie." #: c-family/c.opt:438 -#, fuzzy, no-c-format -#| msgid "Warn about features not present in ISO C11, but present in ISO C2X." +#, no-c-format msgid "Warn about features not present in ISO C11, but present in ISO C23." -msgstr "Avertir à propos de fonctionnalités absentes dans le C11 ISO mais présentes dans le C2X ISO." +msgstr "Avertir à propos de fonctionnalités absentes dans le C11 ISO mais présentes dans le C23 ISO." #: c-family/c.opt:442 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -Wc++11-compat" +#, no-c-format msgid "Deprecated in favor of -Wc11-c23-compat." -msgstr "Obsolète à la faveur de -Wc++11-compat" +msgstr "Obsolète à la faveur de -Wc11-c23-compat" #: c-family/c.opt:446 #, no-c-format @@ -1710,16 +1698,14 @@ msgid "Warn about C++23 constructs in code compiled with an older standard." msgstr "Avertir à propos des constructions C++23 dans du code compilé avec un standard plus ancien." #: c-family/c.opt:503 -#, fuzzy, no-c-format -#| msgid "Warn about C++20 constructs in code compiled with an older standard." +#, no-c-format msgid "Warn about C++26 constructs in code compiled with an older standard." -msgstr "Avertir à propos des constructions C++20 dans du code compilé avec un standard plus ancien." +msgstr "Avertir à propos des constructions C++26 dans du code compilé avec un standard plus ancien." #: c-family/c.opt:507 -#, fuzzy, no-c-format -#| msgid "Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers." +#, no-c-format msgid "Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter." -msgstr "Avertir à propos de divisions douteuses de deux expressions sizeof qui ne fonctionnent pas correctement avec des pointeurs." +msgstr "Avertir à propos d'appels douteux aux fonctions de type calloc où l'expression sizeof est le premier argument de taille et non le second." #: c-family/c.opt:511 #, no-c-format @@ -1839,10 +1825,9 @@ msgid "Warn when a declaration is found after a statement." msgstr "Avertir lorsqu'une déclaration est trouvée après une expression." #: c-family/c.opt:612 -#, fuzzy, no-c-format -#| msgid "Warn about unprototyped function declarations." +#, no-c-format msgid "Warn for missing parameter types in function declarations." -msgstr "Avertir à propos des déclarations de fonctions sans prototype." +msgstr "Avertir à propos des types de paramètres manquants dans les déclarations de fonctions." #: c-family/c.opt:616 #, no-c-format @@ -1922,7 +1907,7 @@ msgstr "Avertir à propos des violations des règles de style de Effective C++." #: c-family/c.opt:683 #, no-c-format msgid "Warn if an additional enum-base is used in an elaborated-type-specifier." -msgstr "" +msgstr "Avertir si une base enum additionnelle est utilisée dans un spécificateur de type élaboré." #: c-family/c.opt:687 #, no-c-format @@ -1972,7 +1957,7 @@ msgstr "Avertir à propos d'un point-virgule après la définition d'une fonctio #: c-family/c.opt:731 #, no-c-format msgid "Warn when a structure containing a C99 flexible array member as the last field is not at the end of another structure." -msgstr "" +msgstr "Avertir quand une structure contenant un membre tableau flexible du C99 comme dernier champ n'est pas à la fin d'une autre structure." #: c-family/c.opt:736 #, no-c-format @@ -2255,10 +2240,9 @@ msgid "Warn when the template keyword is missing after a member access token in msgstr "Avertir quand un mot clé de patron est manquant après un jeton d'accès à un membre dans une expression d'accès à un membre dépendant si ce membre est un patron." #: c-family/c.opt:994 -#, fuzzy, no-c-format -#| msgid "Warn about global functions without previous declarations." +#, no-c-format msgid "Warn about global variables without previous declarations." -msgstr "Avertir à propos des fonctions globales sans déclaration précédente." +msgstr "Avertir à propos des variables globales sans déclaration précédente." #: c-family/c.opt:1001 #, no-c-format @@ -2346,10 +2330,9 @@ msgid "Warn about potentially suboptimal choices related to OpenACC parallelism. msgstr "Avertir à propos d'un choix potentiellement suboptimal relatif au parallélisme de OpenACC." #: c-family/c.opt:1101 -#, fuzzy, no-c-format -#| msgid "Warn about \"suspicious\" constructs." +#, no-c-format msgid "Warn about suspicious OpenMP code." -msgstr "Avertir à propos des constructions « douteuses »." +msgstr "Avertir à propos de code OpenMP douteux." #: c-family/c.opt:1105 #, no-c-format @@ -2379,7 +2362,7 @@ msgstr "Avertir lorsque des initialiseurs sont outrepassés avec effets de bords #: c-family/c.opt:1129 #, no-c-format msgid "Warn if the named return value optimization is not performed although it is allowed." -msgstr "" +msgstr "Avertir si l'optimisation de la valeur de retour nommée n'est pas réalisée malgré que ce soit autorisé." #: c-family/c.opt:1133 #, no-c-format @@ -2490,7 +2473,7 @@ msgstr "Avertir quand un argument passé à un paramètre avec le spécificateur #: c-family/c.opt:1226 #, no-c-format msgid "Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void." -msgstr "" +msgstr "Avertir quand une fonction ne retournant rien retourne une expression non vide ou qu'une expression de retour est manquante dans une fonction retournant quelque chose." #: c-family/c.opt:1230 #, no-c-format @@ -2688,10 +2671,9 @@ msgid "Warn if a comparison always evaluates to true or false." msgstr "Avertir si une comparaison est toujours évaluée à vrai ou à faux." #: c-family/c.opt:1413 -#, fuzzy, no-c-format -#| msgid "GCN does not support static constructors or destructors" +#, no-c-format msgid "Warn about simple-template-id in a constructor or destructor." -msgstr "GCN ne supporte pas les constructeurs ou les destructeurs statiques" +msgstr "Avertir à propos de simple-template-id dans un constructeur ou un destructeur" #: c-family/c.opt:1417 #, no-c-format @@ -3001,10 +2983,9 @@ msgid "Print hierarchical comparisons when template types are mismatched." msgstr "Afficher des comparaisons hiérarchiques quand des types de patrons ne concordent pas." #: c-family/c.opt:1818 -#, fuzzy, no-c-format -#| msgid "default argument mismatch in overload resolution" +#, no-c-format msgid "Note all candidates during overload resolution failure." -msgstr "désaccord dans l'argument par défaut lors de la résolution de la surcharge" +msgstr "Noter tous les candidats pendant l'échec de résolution de surcharge." #: c-family/c.opt:1822 #, no-c-format @@ -3094,7 +3075,7 @@ msgstr "Présumer que l'environnement d'exécution C est normal." #: c-family/c.opt:1915 #, no-c-format msgid "Implement P2564 for consteval propagation." -msgstr "" +msgstr "Implémenter P2564 pour la propagation de consteval." #: c-family/c.opt:1919 #, no-c-format @@ -3167,10 +3148,9 @@ msgid "Warn about macros that have conflicting header units definitions." msgstr "Avertir à propos de macros ayant des définitions d'unités d'en-tête conflictuelles." #: c-family/c.opt:1992 -#, fuzzy, no-c-format -#| msgid "return makes pointer from integer without a cast" +#, no-c-format msgid "Warn if pointers of distinct types are compared without a cast." -msgstr "le retour transforme un entier en pointeur sans transtypage" +msgstr "Avertir si des pointeurs de types distincts sont comparés sans transtypage." #: c-family/c.opt:1996 #, no-c-format @@ -3213,10 +3193,9 @@ msgid "Implement resolution of DR 150 for matching of template template argument msgstr "Implémenter la résolution du DR 150 pour faire correspondre les arguments de patron des patrons." #: c-family/c.opt:2043 -#, fuzzy, no-c-format -#| msgid "Generate code for NeXT (Apple Mac OS X) runtime environment." +#, no-c-format msgid "Generate code for NeXT (Apple macOS) runtime environment." -msgstr "Générer le code pour l'environnement d'exécution NeXT (Apple Mac OS X)." +msgstr "Générer le code pour l'environnement d'exécution NeXT (Apple macOS)." #: c-family/c.opt:2047 #, no-c-format @@ -3609,10 +3588,9 @@ msgid "Conform to the ISO 2023 C++ draft standard (experimental and incomplete s msgstr "Être conforme au brouillon du standard C++ ISO 2023 (support expérimental et incomplet)." #: c-family/c.opt:2480 c-family/c.opt:2484 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2023 C++ draft standard (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2026 C++ draft standard (experimental and incomplete support)." -msgstr "Être conforme au brouillon du standard C++ ISO 2023 (support expérimental et incomplet)." +msgstr "Être conforme au brouillon du standard C++ ISO 2026 (support expérimental et incomplet)." #: c-family/c.opt:2488 c-family/c.opt:2642 #, no-c-format @@ -3631,16 +3609,14 @@ msgid "Conform to the ISO 2017 C standard (published in 2018)." msgstr "Être conforme au standard C ISO 2017 (publié en 2018)." #: c-family/c.opt:2504 c-family/c.opt:2654 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 202X C standard draft (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) (experimental and incomplete support)." -msgstr "Conforme au brouillon du standard C ISO 202X (support expérimental et incomplet)." +msgstr "Conforme au brouillon du standard C ISO 2023 (publication attendue en 2024) (support expérimental et incomplet)." #: c-family/c.opt:2508 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -std=c11." +#, no-c-format msgid "Deprecated in favor of -std=c23." -msgstr "Rendu obsolète en faveur de -std=c11." +msgstr "Rendu obsolète en faveur de -std=c23." #: c-family/c.opt:2512 c-family/c.opt:2516 c-family/c.opt:2626 #, no-c-format @@ -3703,10 +3679,9 @@ msgid "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimen msgstr "Être conforme au brouillon du standard C++ ISO 2023 avec les extensions GNU (support expérimental et incomplet)." #: c-family/c.opt:2578 c-family/c.opt:2582 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support)." -msgstr "Être conforme au brouillon du standard C++ ISO 2023 avec les extensions GNU (support expérimental et incomplet)." +msgstr "Être conforme au brouillon du standard C++ ISO 2026 avec les extensions GNU (support expérimental et incomplet)." #: c-family/c.opt:2586 #, no-c-format @@ -3724,16 +3699,14 @@ msgid "Conform to the ISO 2017 C standard (published in 2018) with GNU extension msgstr "Être conforme au standard C ISO 2017 (publié en 2018) avec les extensions GNU." #: c-family/c.opt:2602 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) with GNU extensions (experimental and incomplete support)." -msgstr "Conforme au brouillon du standard C ISO 202X avec les extensions de GNU (support expérimental et incomplet)." +msgstr "Conforme au brouillon du standard C ISO 2023 (publication attendue en 2024) avec les extensions de GNU (support expérimental et incomplet)." #: c-family/c.opt:2606 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -std=gnu11." +#, no-c-format msgid "Deprecated in favor of -std=gnu23." -msgstr "Rendu obsolète en faveur de -std=gnu11." +msgstr "Rendu obsolète en faveur de -std=gnu23." #: c-family/c.opt:2610 c-family/c.opt:2614 #, no-c-format @@ -4153,7 +4126,7 @@ msgstr "Lier la bibliothèque D standard dynamiquement pendant la compilation." #: m2/lang.opt:35 #, no-c-format msgid "turns on case statement label compile time checking when using an expression of an enum type." -msgstr "" +msgstr "activer la vérification à la compilation des étiquettes de l'instruction case lors de l'utilisation d'une expression d'un type énuméré." #: m2/lang.opt:39 #, no-c-format @@ -4178,12 +4151,12 @@ msgstr "vérification supplémentaire de la sémantique lors de la compilation, #: m2/lang.opt:55 #, no-c-format msgid "turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data." -msgstr "" +msgstr "activer l'analyse à la compilation dans le premier bloc de base d'une procédure détectant l'accès à une donnée non initialisée." #: m2/lang.opt:59 #, no-c-format msgid "turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all." -msgstr "" +msgstr "activer l'analyse à la compilation pour détecter l'accès à des variables non initialisées, la vérification peut être spécifiée par : known,cond,all." #: m2/lang.opt:63 #, no-c-format @@ -4198,7 +4171,7 @@ msgstr "activer la vérification à l'exécution des sous-plages, indexation de #: m2/lang.opt:71 #, no-c-format msgid "turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified" -msgstr "activer la vérification à l'exécution pour assurer qu'une instruction CASE requière une clause ELSE alors qu'aucune n'a été spécifiée" +msgstr "activer la vérification à l'exécution pour assurer qu'une instruction CASE requiert une clause ELSE alors qu'aucune n'a été spécifiée" #: m2/lang.opt:75 #, no-c-format @@ -4483,7 +4456,7 @@ msgstr "-fgo-embedcfg=\tLister les fichiers embarqués via go:embed." #: go/lang.opt:66 #, no-c-format msgid "-fgo-importcfg=\tProvide file that tells where to find imports." -msgstr "" +msgstr "-fgo-importcfg=\tFournir le fichier indiquant où trouver les imports." #: go/lang.opt:70 #, no-c-format @@ -4568,22 +4541,22 @@ msgstr "La profondeur maximale des nœuds éclatés qui doivent apparaître dans #: analyzer/analyzer.opt:59 #, no-c-format msgid "The number of bytes at which to ellipsize string literals in analyzer text art diagrams." -msgstr "" +msgstr "Le nombre d'octets auquel raccourcir les littéraux de chaîne dans les diagrammes artistiques de texte de l'analyseur." #: analyzer/analyzer.opt:63 #, no-c-format msgid "The number of literal bytes to show at the head of a string literal in text art when ellipsizing it." -msgstr "" +msgstr "Le nombre d'octets littéraux à montrer au début d'un littéral chaîne dans le texte artistique avant qu'il soit raccourci." #: analyzer/analyzer.opt:67 #, no-c-format msgid "The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it." -msgstr "" +msgstr "Le nombre d'octets littéraux à montrer à la fin d'un littéral chaîne dans le texte artistique avant qu'il soit raccourci." #: analyzer/analyzer.opt:71 #, no-c-format msgid "The ideal width in characters of text art diagrams generated by the analyzer." -msgstr "" +msgstr "La largeur idéale en caractères des diagrammes artistiques de texte générés par l'analyseur." #: analyzer/analyzer.opt:75 #, no-c-format @@ -4666,10 +4639,9 @@ msgid "Warn about code paths in which floating-point arithmetic is used in locat msgstr "Avertir à propos de chemins dans le code dans lesquels une arithmétique en virgule flottante est utilisée à des endroits où un calcul précis est requis." #: analyzer/analyzer.opt:139 -#, fuzzy, no-c-format -#| msgid "Warn about code paths which appear to lead to infinite recursion." +#, no-c-format msgid "Warn about code paths which appear to lead to an infinite loop." -msgstr "Avertir à propos de chemins dans le code qui semblent mener à une récursion infinie." +msgstr "Avertir à propos de chemins dans le code qui semblent mener à une boucle infinie." #: analyzer/analyzer.opt:143 #, no-c-format @@ -4697,10 +4669,9 @@ msgid "Warn about code paths in which a write or read to a buffer is out-of-boun msgstr "Avertir à propos de chemins dans le code où une écriture ou une lecture est en dehors des limites d'un tampon." #: analyzer/analyzer.opt:163 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which a write or read to a buffer is out-of-bounds." +#, no-c-format msgid "Warn about code paths in which undefined behavior would occur due to overlapping buffers." -msgstr "Avertir à propos de chemins dans le code où une écriture ou une lecture est en dehors des limites d'un tampon." +msgstr "Avertir à propos de chemins dans le code dans lesquels un comportement non défini se produira à cause de tampons se chevauchant." #: analyzer/analyzer.opt:167 #, no-c-format @@ -4778,10 +4749,9 @@ msgid "Warn about code paths in which an unsanitized value is used as a size." msgstr "Avertir à propos de chemins dans le code où une valeur brute est utilisée comme taille." #: analyzer/analyzer.opt:227 -#, fuzzy, no-c-format -#| msgid "Warn about code paths which appear to lead to infinite recursion." +#, no-c-format msgid "Warn about code paths in in which a call is made to strtok with undefined behavior." -msgstr "Avertir à propos de chemins dans le code qui semblent mener à une récursion infinie." +msgstr "Avertir à propos de chemins dans le code qui appellent strtok avec un comportement indéfini." #: analyzer/analyzer.opt:231 #, no-c-format @@ -4829,10 +4799,9 @@ msgid "Warn about code paths in which an uninitialized value is used." msgstr "Avertir à propos de chemins dans le code où une valeur non initialisée est utilisée." #: analyzer/analyzer.opt:267 -#, fuzzy, no-c-format -#| msgid "Warn if the code is too complicated for the analyzer to fully explore." +#, no-c-format msgid "Warn if expressions are too complicated for the analyzer to fully track." -msgstr "Avertir si le code est trop compliqué pour que l'analyseur réussisse à l'explorer entièrement." +msgstr "Avertir si des expressions sont trop compliquées pour que l'analyseur réussisse à les explorer entièrement." #: analyzer/analyzer.opt:271 #, no-c-format @@ -4847,7 +4816,7 @@ msgstr "Restreindre l'analyseur à l'exécution du seul vérificateur nommé." #: analyzer/analyzer.opt:279 #, no-c-format msgid "Add extra annotations to diagrams." -msgstr "" +msgstr "Ajouter des annotations supplémentaires aux diagrammes." #: analyzer/analyzer.opt:283 #, no-c-format @@ -4887,7 +4856,7 @@ msgstr "Activer la transitivité des contraintes durant l'analyse." #: analyzer/analyzer.opt:311 #, no-c-format msgid "Show events within system headers in analyzer execution paths." -msgstr "" +msgstr "Montrer les événements dans les en-têtes systèmes des chemins d'exécution de l'analyseur." #: analyzer/analyzer.opt:315 #, no-c-format @@ -4960,10 +4929,9 @@ msgid "Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot. msgstr "Vidanger divers détails internes de l'analyseur dans FICHIERSRC.*.fg.dot et FICHIERSRC.*.tg.dot." #: analyzer/analyzer.opt:371 -#, fuzzy, no-c-format -#| msgid "Dump various analyzer internals to SRCFILE.analyzer.txt." +#, no-c-format msgid "Dump various analyzer internals to SRCFILE.*.infinite-loop.dot." -msgstr "Vidanger divers détails internes de l'analyseur dans FICHIERSRC.analyzer.txt." +msgstr "Vidanger divers détails internes de l'analyseur dans FICHIERSRC.*.infinite-loop.dot." #: analyzer/analyzer.opt:375 #, no-c-format @@ -5401,10 +5369,9 @@ msgid "Do not add a default symbol exports to modules or dynamic libraries." msgstr "Ne pas ajouter un export de symboles par défaut aux modules ou aux bibliothèques dynamiques." #: config/darwin.opt:246 -#, fuzzy, no-c-format -#| msgid "Do not add a default symbol exports to modules or dynamic libraries." +#, no-c-format msgid "Do not add default run paths (for the compiler library directories) to executables, modules or dynamic libraries." -msgstr "Ne pas ajouter un export de symboles par défaut aux modules ou aux bibliothèques dynamiques." +msgstr "Ne pas ajouter les chemins d'exécution par défaut (pour les répertoires des bibliothèques du compilateur) aux exécutables, aux modules ou aux bibliothèques dynamiques." #: config/darwin.opt:250 #, no-c-format @@ -5952,7 +5919,7 @@ msgstr "-march=\tGénérer du code pour l'ISA RISC-V demandée (par ex. RV64IM). #: config/riscv/riscv.opt:91 #, no-c-format msgid "-march=help\tPrint supported -march extensions." -msgstr "" +msgstr "-march=help\tAfficher les extensions -march supportées." #: config/riscv/riscv.opt:103 config/mips/mips.opt:430 #, no-c-format @@ -6068,10 +6035,9 @@ msgid "Set the version of RISC-V ISA spec." msgstr "Définir la version des spécifications ISA RISC-V." #: config/riscv/riscv.opt:509 -#, fuzzy, no-c-format -#| msgid "Enable conditional move instruction usage." +#, no-c-format msgid "Enable conditional moves unconditionally." -msgstr "Activer l'utilisation de l'instruction de déplacement conditionnel." +msgstr "Activer les déplacements conditionnels inconditionnellement." #: config/riscv/riscv.opt:513 #, no-c-format @@ -6079,59 +6045,54 @@ msgid "Always inline subword atomic operations." msgstr "Toujours mettre en ligne les opérations atomiques inférieures à une taille de mot." #: config/riscv/riscv.opt:517 -#, fuzzy, no-c-format -#| msgid "Use caller save register across calls if possible." +#, no-c-format msgid "Inline strcmp calls if possible." -msgstr "Faire sauvegarder les registres par l'appelant au travers des appels si possible." +msgstr "Mettre en ligne les appels à strcmp si possible." #: config/riscv/riscv.opt:521 -#, fuzzy, no-c-format -#| msgid "Use caller save register across calls if possible." +#, no-c-format msgid "Inline strncmp calls if possible." -msgstr "Faire sauvegarder les registres par l'appelant au travers des appels si possible." +msgstr "Mettre en ligne les appels à strncmp si possible." #: config/riscv/riscv.opt:525 -#, fuzzy, no-c-format -#| msgid "Reduce stack alignment on call sites if possible." +#, no-c-format msgid "Inline strlen calls if possible." -msgstr "Réduire l'alignement de la pile à l'endroit de l'appel, si possible." +msgstr "Mettre en ligne les appels à strlen si possible." #: config/riscv/riscv.opt:529 #, no-c-format msgid "Max number of bytes to compare as part of inlined strcmp/strncmp routines (default: 64)." -msgstr "" +msgstr "Nombre maximal d'octets à comparer dans les routines strcmp/strncmp mises en ligne (défaut: 64)." #: config/riscv/riscv.opt:533 -#, fuzzy, no-c-format -#| msgid "Valid arguments to -mcode-readable=:" +#, no-c-format msgid "Valid arguments to -param=riscv-autovec-preference=:" -msgstr "Les arguments valides pour -mcode-readable=:" +msgstr "Les arguments valides pour -param=riscv-autovec-preference= :" #: config/riscv/riscv.opt:546 #, no-c-format msgid "-param=riscv-autovec-preference=\tSet the preference of auto-vectorization in the RISC-V port." -msgstr "" +msgstr "-param=riscv-autovec-preference=\tDéfinir la préférence de l'auto-vectorisation dans le portage de RISC-V" #: config/riscv/riscv.opt:550 #, no-c-format msgid "The RVV possible LMUL (-param=riscv-autovec-lmul=):" -msgstr "" +msgstr "Le LMUM possible pour RVV (-param=riscv-autovec-lmul=) :" #: config/riscv/riscv.opt:569 #, no-c-format msgid "-param=riscv-autovec-lmul=\tSet the RVV LMUL of auto-vectorization in the RISC-V port." -msgstr "" +msgstr "-param=riscv-autovec-lmul=\tDéfini le LMUL de RVV de l'auto-vectorisation dans le portage de RISC-V" #: config/riscv/riscv.opt:576 -#, fuzzy, no-c-format -#| msgid "Valid arguments to -mstringop-strategy=:" +#, no-c-format msgid "Valid arguments to -param=vsetvl-strategy=:" -msgstr "Les arguments valables pour -mstringop-strategy=:" +msgstr "Les arguments valables pour -param=vsetvl-strategy= :" #: config/riscv/riscv.opt:589 #, no-c-format msgid "-param=vsetvl-strategy=\tSet the optimization level of VSETVL insert pass." -msgstr "" +msgstr "-param=vsetvl-strategy=\tDéfini le niveau d'optimisation de la passe d'insertion de VSETVL." #: config/riscv/riscv.opt:593 config/i386/i386.opt:496 #, no-c-format @@ -6139,10 +6100,9 @@ msgid "Valid arguments to -mstringop-strategy=:" msgstr "Les arguments valables pour -mstringop-strategy=:" #: config/riscv/riscv.opt:609 -#, fuzzy, no-c-format -#| msgid "Specify memset expansion strategy when expected size is known." +#, no-c-format msgid "Specify stringop expansion strategy." -msgstr "Spécifier la stratégie d'expansion de memset quand la taille attendue est connue." +msgstr "Spécifier la stratégie d'expansion de stringop." #: config/m32c/m32c.opt:23 #, no-c-format @@ -6295,16 +6255,14 @@ msgid "Workaround for ARM Cortex-A53 Erratum number 843419." msgstr "Correctif pour l'erratum numéro 843419 de l'ARM Cortex-A53." #: config/aarch64/aarch64.opt:102 -#, fuzzy, no-c-format -#| msgid "Specify how to access the thread pointer." +#, no-c-format msgid "The register used to access the thread pointer:" -msgstr "Spécifier comment accéder au pointeur du thread." +msgstr "Le registre utilisé pour accéder au pointeur du thread :" #: config/aarch64/aarch64.opt:133 -#, fuzzy, no-c-format -#| msgid "Specify thread pointer register number." +#, no-c-format msgid "Specify the thread pointer register." -msgstr "Spécifier le numéro de registre du pointeur du thread." +msgstr "Spécifier le registre du pointeur du thread." #: config/aarch64/aarch64.opt:137 #, no-c-format @@ -6389,7 +6347,7 @@ msgstr "Activer l'approximation de la division. Activer cette option réduit la #: config/aarch64/aarch64.opt:254 #, no-c-format msgid "Specify when to enable an early register allocation pass. The possibilities are: all functions, functions that have access to strided multi-register instructions, and no functions." -msgstr "" +msgstr "Spécifier quand activer une étape d'allocation de registres précoce. Les possibilités sont : toutes les fonctions, les fonctions qui ont accès aux instructions multi-registres avec pas et aucune fonction." #: config/aarch64/aarch64.opt:260 #, no-c-format @@ -6414,12 +6372,12 @@ msgstr "Générer du code pour détecter quand le processeur pourrait spéculer #: config/aarch64/aarch64.opt:294 #, no-c-format msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs before register allocation." -msgstr "" +msgstr "Activer la copie de la passe de fusion de paires load/store de AArch64 qui s'exécute avant l'allocation de registres." #: config/aarch64/aarch64.opt:299 #, no-c-format msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs after register allocation." -msgstr "" +msgstr "Activer la copie de la passe de fusion de paires load/store de AArch64 qui s'exécute après l'allocation de registres." #: config/aarch64/aarch64.opt:318 #, no-c-format @@ -6439,7 +6397,7 @@ msgstr "Générer des appels locaux vers des opérations atomiques hors ligne." #: config/aarch64/aarch64.opt:337 #, no-c-format msgid "When vectorizing, consider using multiple different approaches and use the cost model to choose the cheapest one." -msgstr "" +msgstr "Lors de la vectorisation, prend en compte plusieurs approches différentes et utilise le modèle de coût pour choisir la moins onéreuse." #: config/aarch64/aarch64.opt:342 #, no-c-format @@ -6474,22 +6432,22 @@ msgstr "Limiter le nombre de fois qu'une boucle peut être dépliée par l'auto #: config/aarch64/aarch64.opt:372 #, no-c-format msgid "--param=aarch64-ldp-policy=[default|always|never|aligned] Fine-grained policy for load pairs." -msgstr "" +msgstr "--param=aarch64-ldp-policy=[default|always|never|aligned] Politique fine pour charger les paires." #: config/aarch64/aarch64.opt:376 #, no-c-format msgid "--param=aarch64-stp-policy=[default|always|never|aligned] Fine-grained policy for store pairs." -msgstr "" +msgstr "--param=aarch64-stp-policy=[default|always|never|aligned] Politique fine pour stocker les paires." #: config/aarch64/aarch64.opt:395 #, no-c-format msgid "Limit on number of alias checks performed when attempting to form an ldp/stp." -msgstr "" +msgstr "Limite sur le nombre de vérifications de synonymes réalisées en tentant de former un ldp/stp" #: config/aarch64/aarch64.opt:399 #, no-c-format msgid "Param to control which writeback opportunities we try to handle in the load/store pair fusion pass. A value of zero disables writeback handling. One means we try to form pairs involving one or more existing individual writeback accesses where possible. A value of two means we also try to opportunistically form writeback opportunities by folding in trailing destructive updates of the base register used by a pair." -msgstr "" +msgstr "Paramètre pour contrôler quelles opportunités d'écriture nous essayons de gérer dans l'étape de fusion des paires load/store. Une valeur de zéro désactive la gestion des écritures. Un signifie qu'on essaie de former des paires impliquant un ou plusieurs accès d'écriture individuels existants, si possible. Une valeur de deux signifie qu'on essaie aussi de former des écritures opportunistes en comprimant les mises à jours destructrices à la fin du registre de base utilisé par une paire." #: config/linux.opt:24 #, no-c-format @@ -7092,7 +7050,7 @@ msgstr "Placer les données relocalisées en lecture seule dans la section .data #: config/i386/mingw.opt:23 #, no-c-format msgid "Preprocess, compile or link with specified C RunTime DLL library." -msgstr "" +msgstr "Prétraite, compile ou édite les liens avec la bibliothèque DLL d'exécution du C spécifiée." #: config/i386/mingw.opt:33 #, no-c-format @@ -7187,10 +7145,9 @@ msgid "Branches are this expensive (arbitrary units)." msgstr "Les branchements sont coûteux à ce point (unités arbitraires)." #: config/i386/i386.opt:300 -#, fuzzy, no-c-format -#| msgid "-mlarge-data-threshold=\tData greater than given threshold will go into .ldata section in x86-64 medium model." +#, no-c-format msgid "-mlarge-data-threshold=\tData greater than given threshold will go into a large data section in x86-64 medium and large code models." -msgstr "-mlarge-data-threshold=\tLes données plus grandes que la limite spécifiée iront dans la section .ldata dans le modèle moyen du x86-64." +msgstr "-mlarge-data-threshold=\tLes données plus grandes que la limite spécifiée iront dans une section de grandes données dans les modèles de code moyen et large du x86-64." #: config/i386/i386.opt:304 #, no-c-format @@ -7445,7 +7402,7 @@ msgstr "Longueur de registre vectoriel préférée connue (à utiliser avec l'op #: config/i386/i386.opt:652 #, no-c-format msgid "Enable floating-point status flags setting SSE vector operations on partial vectors." -msgstr "" +msgstr "Activer les fanions de statut en virgule flottante définissant les opérations des vecteurs SSE sur des vecteurs partiels." #: config/i386/i386.opt:656 #, no-c-format @@ -8124,74 +8081,64 @@ msgid "Support AMX-COMPLEX built-in functions and code generation." msgstr "Supporter les fonctions internes AMX-COMPLEX et la génération de code." #: config/i386/i386.opt:1303 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT8 built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT16 built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVXVNNIINT8 et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVXVNNIINT16 et la génération de code." #: config/i386/i386.opt:1308 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM3 built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et FMA et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et SM3 et la génération de code." #: config/i386/i386.opt:1313 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SHA512 built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et AVX2 et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et SHA512 et la génération de code." #: config/i386/i386.opt:1318 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM4 built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et FMA et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et SM4 et la génération de code." #: config/i386/i386.opt:1323 -#, fuzzy, no-c-format -#| msgid "Enable vectorization on trees." +#, no-c-format msgid "Enable vectorization for gather instruction." -msgstr "Activer la vectorisation sur les arbres." +msgstr "Activer la vectorisation pour l'instruction de rassemblement." #: config/i386/i386.opt:1327 -#, fuzzy, no-c-format -#| msgid "Enable vectorization on trees." +#, no-c-format msgid "Enable vectorization for scatter instruction." -msgstr "Activer la vectorisation sur les arbres." +msgstr "Activer la vectorisation sur l'instruction de dispersion." #: config/i386/i386.opt:1331 #, no-c-format msgid "Support code generation for APX features, including EGPR, PUSH2POP2, NDD and PPX." -msgstr "" +msgstr "Supporter la génération de code pour les fonctionnalité APX, y compris EGPR, PUSH2POP2, NDD et PPX." #: config/i386/i386.opt:1360 #, no-c-format msgid "Enable GPR32 in inline asm when APX_F enabled." -msgstr "" +msgstr "Activer GPR32 dans l'assembleur en ligne quand APX_F est activé." #: config/i386/i386.opt:1364 -#, fuzzy, no-c-format -#| msgid "Support BMI2 built-in functions and code generation." +#, no-c-format msgid "Support 512 bit vector built-in functions and code generation." -msgstr "Supporter les fonctions internes BMI2 et la génération de code." +msgstr "Supporter le vecteur 512 bits dans les fonctions internes et la génération de code." #: config/i386/i386.opt:1368 -#, fuzzy, no-c-format -#| msgid "Support AES built-in functions and code generation." +#, no-c-format msgid "Support USER_MSR built-in functions and code generation." -msgstr "Supporter les fonctions internes AES et la génération de code." +msgstr "Supporter les fonctions internes USER_MSR et la génération de code." #: config/i386/i386.opt:1372 config/i386/i386.opt:1382 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1 built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX512F et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX10.1 et la génération de code." #: config/i386/i386.opt:1377 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-512 built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX512F et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX10.1-512 et la génération de code." #: config/pa/pa64-hpux.opt:23 #, no-c-format @@ -8642,12 +8589,12 @@ msgstr "Lors d'un accès à la RAM, utiliser X comme imposé par le matériel, c #: config/avr/avr.opt:99 #, no-c-format msgid "The device has the bitfield NVMCTRL_CTRLB.FLMAP. This option is used internally." -msgstr "" +msgstr "Le périphérique a le champ de bit NVMCTRL_CTRLB.FLMAP. Cette est option est utilisée en interne." #: config/avr/avr.opt:103 #, no-c-format msgid "The device has the .rodata section located in the RAM area." -msgstr "" +msgstr "Le périphérique a la section .rodata située dans la zone de la RAM." #: config/avr/avr.opt:108 #, no-c-format @@ -8987,7 +8934,7 @@ msgstr "Stocker tous les registres d'arguments sur la pile." #: config/s390/s390.opt:335 #, no-c-format msgid "Assume external symbols to be potentially unaligned. By default all symbols without explicit alignment are assumed to reside on a 2 byte boundary as mandated by the IBM Z ABI." -msgstr "" +msgstr "Suppose que les symboles externes sont potentiellement non alignés. Par défaut, tous les symboles sans alignement explicite sont supposer résider sur une frontière de 2 octets comme demandé par l'ABI IBM Z." #: config/rl78/rl78.opt:27 config/rx/elf.opt:26 config/csky/csky.opt:198 #, no-c-format @@ -10297,26 +10244,24 @@ msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bi msgstr "Autoriser les instructions en virgule flottante matérielles à couvrir des opérations 32 et 64 bits." #: config/loongarch/loongarch.opt:81 -#, fuzzy, no-c-format -#| msgid "FPU types of LoongArch:" +#, no-c-format msgid "SIMD extension levels of LoongArch:" -msgstr "Types FPU de LoongArch :" +msgstr "Niveaux d'extension SIMD de LoongArch :" #: config/loongarch/loongarch.opt:94 -#, fuzzy, no-c-format -#| msgid "-march=ISA\tGenerate code for the given ISA." +#, no-c-format msgid "-msimd=SIMD\tGenerate code for the given SIMD extension." -msgstr "-march=ISA\tGénérer le code pour l'ISA donnée." +msgstr "-msimd=SIMD\tGénérer le code pour l'extension SIMD donnée." #: config/loongarch/loongarch.opt:98 #, no-c-format msgid "Enable LoongArch SIMD Extension (LSX, 128-bit)." -msgstr "" +msgstr "Activer l'extension SIMD LoongArch (LSX, 128 bits)." #: config/loongarch/loongarch.opt:102 #, no-c-format msgid "Enable LoongArch Advanced SIMD Extension (LASX, 256-bit)." -msgstr "" +msgstr "Activer l'extension SIMD avancée LoongArch (LASX, 256 bits)." #: config/loongarch/loongarch.opt:107 #, no-c-format @@ -10374,10 +10319,9 @@ msgid "-mmax-inline-memcpy-size=SIZE\tSet the max size of memcpy to inline, defa msgstr "-mmax-inline-memcpy-size=TAILLE\tDéfinir la taille maximale de memcpy à mettre en-ligne, la valeur par défaut est 1024." #: config/loongarch/loongarch.opt:189 config/mips/mips.opt:150 -#, fuzzy, no-c-format -#| msgid "The code model option names for -mcmodel:" +#, no-c-format msgid "The code model option names for -mexplicit-relocs:" -msgstr "Les noms d'options du modèle de code pour -mcmodel:" +msgstr "Les noms d'options du modèle de code pour -mexplicit-relocs :" #: config/loongarch/loongarch.opt:202 config/mips/mips.opt:163 #, no-c-format @@ -10385,16 +10329,14 @@ msgid "Use %reloc() assembly operators." msgstr "Utiliser les opérateurs assembleur %reloc()." #: config/loongarch/loongarch.opt:206 config/mips/mips.opt:167 -#, fuzzy, no-c-format -#| msgid "Use %reloc() assembly operators." +#, no-c-format msgid "Use %reloc() assembly operators (for backward compatibility)." -msgstr "Utiliser les opérateurs assembleur %reloc()." +msgstr "Utiliser les opérateurs assembleur %reloc() (pour rétro-compatibilité)." #: config/loongarch/loongarch.opt:210 -#, fuzzy, no-c-format -#| msgid "Generate software reciprocal divide and square root for better throughput." +#, no-c-format msgid "Generate approximate reciprocal divide and square root for better throughput." -msgstr "Générer les inverses de la racine carrée et de la division par logiciel pour un meilleur débit." +msgstr "Générer des approximations des inverses de la racine carrée et de la division pour un meilleur débit." #: config/loongarch/loongarch.opt:245 #, no-c-format @@ -10402,44 +10344,39 @@ msgid "Avoid using the GOT to access external symbols." msgstr "Éviter d'utiliser la table GOT pour accéder aux symboles externes." #: config/loongarch/loongarch.opt:254 -#, fuzzy, no-c-format -#| msgid "Enable relaxing in the assembler." +#, no-c-format msgid "Pass -mrelax or -mno-relax option to the assembler." -msgstr "Activer la relaxe dans l'assembleur." +msgstr "Passer l'option -mrelax ou -mno-relax à l'assembleur." #: config/loongarch/loongarch.opt:258 -#, fuzzy, no-c-format -#| msgid "Used to limit unroll factor which indicates how much the autovectorizer may unroll a loop. The default value is 4." +#, no-c-format msgid "Used to limit unroll factor which indicates how much the autovectorizer may unroll a loop. The default value is 6." -msgstr "Utilisé pour limiter le facteur de dépliage qui indique combien de fois l'auto vectoriseur peut déplier une boucle. La valeur par défaut est 4." +msgstr "Utilisé pour limiter le facteur de dépliage qui indique combien de fois l'auto vectoriseur peut déplier une boucle. La valeur par défaut est 6." #: config/loongarch/loongarch.opt:276 -#, fuzzy, no-c-format -#| msgid "Support flag-preserving add-carry instructions." +#, no-c-format msgid "Support frecipe.{s/d} and frsqrte.{s/d} instructions." -msgstr "Supporter les instructions de préservation du fanion de report de l'addition." +msgstr "Supporter les instructions frecipe.{s/d} et frsqrte.{s/d}." #: config/loongarch/loongarch.opt:280 #, no-c-format msgid "Support div.w[u] and mod.w[u] instructions with inputs not sign-extended." -msgstr "" +msgstr "Supporter les instructions div.w[u] et mod.w[u] avec les entrées sans extension de signe." #: config/loongarch/loongarch.opt:284 -#, fuzzy, no-c-format -#| msgid "Support XSAVEC instructions." +#, no-c-format msgid "Support am{swap/add}[_db].{b/h} instructions." -msgstr "Supporter les instructions XSAVEC." +msgstr "Supporter les instructions am{swap/add}[_db].{b/h}." #: config/loongarch/loongarch.opt:288 -#, fuzzy, no-c-format -#| msgid "Support XSAVEC instructions." +#, no-c-format msgid "Support amcas[_db].{b/h/w/d} instructions." -msgstr "Supporter les instructions XSAVEC." +msgstr "Supporter les instructions amcas[_db].{b/h/w/d}." #: config/loongarch/loongarch.opt:292 #, no-c-format msgid "Do not need load-load barriers (dbar 0x700)." -msgstr "" +msgstr "Pas besoin des barrières load-load (dbar 0x700)." #: config/or1k/elf.opt:28 #, no-c-format @@ -12619,16 +12556,14 @@ msgid "Warn about invalid OpenACC dimensions." msgstr "Avertir à propos des dimensions OpenACC invalides." #: config/gcn/gcn.opt:92 -#, fuzzy, no-c-format -#| msgid "SRAM-ECC modes:" +#, no-c-format msgid "SRAM-ECC and XNACK modes:" -msgstr "modes SRAM-ECC :" +msgstr "modes SRAM-ECC et XNACK :" #: config/gcn/gcn.opt:108 -#, fuzzy, no-c-format -#| msgid "Compile for devices requiring XNACK enabled. Default off." +#, no-c-format msgid "Compile for devices requiring XNACK enabled. Default \"any\" if USM is supported." -msgstr "Compiler pour les périphériques requérant l'activation de XNACK. Désactivé par défaut." +msgstr "Compiler pour les périphériques requérant l'activation de XNACK. « any » est utilisé par défaut si USM es supporté." #: config/gcn/gcn.opt:112 #, no-c-format @@ -12681,34 +12616,29 @@ msgid "Enable 32-bit jump instructions." msgstr "Activer les instructions de saut 32 bits." #: config/bpf/bpf.opt:64 -#, fuzzy, no-c-format -#| msgid "Enable asan store operations protection." +#, no-c-format msgid "Enable general atomic operations introduced in v3 ISA." -msgstr "Autoriser ASan à protéger les opérations d'écriture." +msgstr "Autoriser les opérations atomiques générales introduite dans l'ISA v3." #: config/bpf/bpf.opt:68 -#, fuzzy, no-c-format -#| msgid "Enable 32-bit jump instructions." +#, no-c-format msgid "Enable byte swap instructions." -msgstr "Activer les instructions de saut 32 bits." +msgstr "Activer les instructions d'échange d'octets." #: config/bpf/bpf.opt:72 -#, fuzzy, no-c-format -#| msgid "Enable divide and modulus instructions." +#, no-c-format msgid "Enable signed division and modulus instructions." -msgstr "Activer les instructions de division et de modulo." +msgstr "Activer les instructions de division et de modulo signées." #: config/bpf/bpf.opt:76 -#, fuzzy, no-c-format -#| msgid "Enable divide and modulus instructions." +#, no-c-format msgid "Enable signed move and memory load instructions." -msgstr "Activer les instructions de division et de modulo." +msgstr "Activer les instructions de déplacement et les chargements mémoire signées." #: config/bpf/bpf.opt:102 -#, fuzzy, no-c-format -#| msgid "Known assembler dialects (for use with the -masm= option):" +#, no-c-format msgid "Known assembler dialects (for use with the -masm= option)" -msgstr "Dialectes d'assembleurs connus (à utiliser avec l'option -masm=):" +msgstr "Dialectes d'assembleurs connus (à utiliser avec l'option -masm=)" #: config/mips/mips.opt:32 #, no-c-format @@ -12791,10 +12721,9 @@ msgid "Use Enhanced Virtual Addressing instructions." msgstr "Utiliser les instructions d'adressage virtuel amélioré (Enhanced Virtual Addressing)." #: config/mips/mips.opt:171 -#, fuzzy, no-c-format -#| msgid "Does nothing. Preserved for backward compatibility." +#, no-c-format msgid "Don't use %reloc() assembly operators (for backward compatibility)." -msgstr "Ne fait rien. Préservé pour rétro-compatibilité." +msgstr "Ne pas utiliser les opérateurs assembleur %reloc() (pour rétro-compatibilité)." #: config/mips/mips.opt:175 #, no-c-format @@ -13057,10 +12986,9 @@ msgid "Optimize lui/addiu address loads." msgstr "Optimiser les chargements d'adresses lui/addiu." #: config/mips/mips.opt:406 -#, fuzzy, no-c-format -#| msgid "Enable MUL instructions." +#, no-c-format msgid "Enable the MIPS16e V2 instructions." -msgstr "Activer les instructions MUL." +msgstr "Activer les instructions MIPS16e V2." #: config/mips/mips.opt:410 #, no-c-format @@ -13535,7 +13463,7 @@ msgstr "Activer les opcodes ENTER_S et LEAVE_S pour ARCv2." #: config/vxworks-smp.opt:25 #, no-c-format msgid "Select VxWorks SMP C runtimes for linking." -msgstr "" +msgstr "Sélectionner les exécutables WxWorks SMP C pour l'édition de liens." #: lto/lang.opt:50 #, no-c-format @@ -13795,7 +13723,7 @@ msgstr "Avertir lors d'une tentative de libérer un objet qui n'est pas sur le t #: common.opt:639 #, no-c-format msgid "Warn when -fhardened did not enable an option from its set." -msgstr "" +msgstr "Avertir quand -fhardened n'a pas activé une option de son ensemble." #: common.opt:650 #, no-c-format @@ -13938,10 +13866,9 @@ msgid "Warn about functions which might be candidates for __attribute__((malloc) msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((malloc))." #: common.opt:790 -#, fuzzy, no-c-format -#| msgid "Warn about functions which might be candidates for __attribute__((noreturn))." +#, no-c-format msgid "Warn about functions which might be candidates for __attribute__((returns_nonnull))." -msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((noreturn))." +msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((returns_nonnull))." #: common.opt:794 #, no-c-format @@ -14281,7 +14208,7 @@ msgstr "Effectuer une étape d'optimisation par propagation des copies des regis #: common.opt:1263 #, no-c-format msgid "Fold instructions calculating memory offsets to the memory access instruction if possible." -msgstr "" +msgstr "Replier les instructions calculant les décalages mémoire à l'instruction de l'accès mémoire quand c'est possible." #: common.opt:1267 #, no-c-format @@ -14394,10 +14321,9 @@ msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics." msgstr "-fdiagnostics-color=[never|always|auto]\tAfficher les diagnostiques en couleur." #: common.opt:1394 -#, fuzzy, no-c-format -#| msgid "Enable verbose output." +#, no-c-format msgid "Enable formatting of JSON output." -msgstr "Activer la sortie en mode bavard." +msgstr "Activer le formatage de la sortie en JSON." #: common.opt:1398 #, no-c-format @@ -14472,7 +14398,7 @@ msgstr "Montrer les profondeurs des piles d'événements dans les chemins." #: common.opt:1525 #, no-c-format msgid "-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]\tDetermine which characters to use in text arg diagrams." -msgstr "" +msgstr "-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]\tDéterminer quels caractères utiliser dans les diagrammes artistiques texte." #: common.opt:1544 #, no-c-format @@ -14738,7 +14664,7 @@ msgstr "Activer l'estimation des probabilités de branchement." #: common.opt:1834 #, no-c-format msgid "Enable various security-relevant flags." -msgstr "" +msgstr "Activer divers fanions pertinent pour la sécurité." #: common.opt:1838 #, no-c-format @@ -14751,31 +14677,29 @@ msgid "Harden conditional branches by checking reversed conditions." msgstr "Renforcer les branchements conditionnels en vérifiant les conditions inversées." #: common.opt:1846 -#, fuzzy, no-c-format -#| msgid "Harden conditionals not used in branches, checking reversed conditions." +#, no-c-format msgid "Harden control flow by recording and checking execution paths." -msgstr "Renforcer les conditions pas utilisées dans les branches, en vérifiant les conditions inversées." +msgstr "Renforcer le flux de contrôle en enregistrant et en vérifiant les chemins d'exécution." #: common.opt:1850 -#, fuzzy, no-c-format -#| msgid "Disable all optional instructions." +#, no-c-format msgid "Disable CFR in leaf functions." -msgstr "Désactiver toutes les instructions optionnelles." +msgstr "Désactiver les fonctions feuille CFR." #: common.opt:1854 #, no-c-format msgid "Check CFR execution paths also before calls followed by returns of their results." -msgstr "" +msgstr "Vérifier les chemins d'exécution CFR aussi avant les appels suivis du retour de leurs valeurs." #: common.opt:1858 #, no-c-format msgid "Check CFR execution paths also when exiting a function through an exception." -msgstr "" +msgstr "Vérifier les chemins d'exécution CFR aussi en sortant d'une fonction au travers d'une exception." #: common.opt:1862 #, no-c-format msgid "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]\tCheck CFR execution paths also before calling noreturn functions." -msgstr "" +msgstr "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]\tVérifier les chemins d'exécution CFR aussi avant les fonctions qui ne retournent pas." #: common.opt:1885 #, no-c-format @@ -14845,7 +14769,7 @@ msgstr "Mettre en ligne les opérations __atomic quand une séquence d'instructi #: common.opt:1968 #, no-c-format msgid "-finline-stringops[=memcmp|memcpy|memmove|memset] Expand supported mem/str operations inline, even if against optimization." -msgstr "" +msgstr "-finline-stringops[=memcmp|memcpy|memmove|memset] Étendre les opérations en ligne mem/str supportées même si cela va à l'encontre de l'optimisation." #: common.opt:1999 #, no-c-format @@ -15093,10 +15017,9 @@ msgid "-fmessage-length=\tLimit diagnostics to characters per l msgstr "-fmessage-length=\tLimiter la longueur des diagnostiques à caractères par ligne. 0 supprime le retour automatique à la ligne." #: common.opt:2279 -#, fuzzy, no-c-format -#| msgid "Align the start of functions." +#, no-c-format msgid "Align the start of every function." -msgstr "Aligner le début des fonctions." +msgstr "Aligner le début de chaque fonction." # SMS= Swing Module Scheduler: est-il besoin de le préciser ? #: common.opt:2283 @@ -15733,34 +15656,32 @@ msgstr "Traiter les débordements signés comme étant indéfinis. Inversé par #: common.opt:2931 #, no-c-format msgid "Disable stack scrub entirely, disregarding strub attributes." -msgstr "" +msgstr "Désactiver entièrement la mise à zéro de la pile (stack scrub), ignore les attributs strub." #: common.opt:2935 #, no-c-format msgid "Enable stack scrub as per attributes, with strict call checking." -msgstr "" +msgstr "Activer la mise à zéro de la pile (stack scrub) selon les attributs, avec vérification stricte de l'appel." #: common.opt:2944 #, no-c-format msgid "Restore default strub mode: as per attributes, with relaxed checking." -msgstr "" +msgstr "Rétablir le mode de mise à zéro de la pile (stack scrub) : selon les attributs, avec une vérification relâchée." #: common.opt:2948 -#, fuzzy, no-c-format -#| msgid "Enable hwasan instrumentation of builtin functions." +#, no-c-format msgid "Enable stack scrubbing for all viable functions." -msgstr "Autoriser l'instrumentalisation hwasan des fonctions internes." +msgstr "Autoriser la mise à zéro de la pile (stack scrubbing) pour toutes les fonctions viables." #: common.opt:2952 #, no-c-format msgid "Enable at-calls stack scrubbing for all viable functions." -msgstr "" +msgstr "Activer la mise à zéro de la pile lors des appels pour toutes les fonctions viables." #: common.opt:2956 -#, fuzzy, no-c-format -#| msgid "Enable interrupt stack instructions." +#, no-c-format msgid "Enable internal stack scrubbing for all viable functions." -msgstr "Activer les instructions de la pile d'interruption." +msgstr "Activer la mise à zéro de la pile interne pour toutes les fonctions viables." #: common.opt:2960 #, no-c-format @@ -15816,7 +15737,7 @@ msgstr "Pour les cibles qui requièrent normalement des trampolines pour les fon #: common.opt:3016 #, no-c-format msgid "Whether trampolines are generated in executable memory rather than executable stack." -msgstr "" +msgstr "Est-ce que les trampolines sont générés dans la mémoire exécutable plutôt que dans la pile exécutable." #: common.opt:3034 #, no-c-format @@ -16219,10 +16140,9 @@ msgid "Assume assembler support for view in (DWARF2+) .loc directives." msgstr "Supposer que l'assembleur supporte les vues dans les directives .loc (DWARF2+)." #: common.opt:3483 -#, fuzzy, no-c-format -#| msgid "Generate debug information in VMS format." +#, no-c-format msgid "Generate debug information in CodeView format." -msgstr "Générer les informations de débogage dans le format VMS." +msgstr "Générer les informations de débogage dans le format Codeview." #: common.opt:3503 #, no-c-format @@ -16552,7 +16472,7 @@ msgstr "Facteur d'échelle à appliquer au nombre d'expressions dans un chemin d #: params.opt:139 #, no-c-format msgid "Whether the target fully pipelines FMA instructions. If non-zero, reassociation considers the benefit of parallelizing FMA's multiplication part and addition part, assuming FMUL and FMA use the same units that can also do FADD." -msgstr "" +msgstr "Est-ce que la cible met complètement les instructions FMA dans un pipeline. Si non nul, la ré-association considère le bénéfice de paralléliser les parties de multiplication et les parties d'addition de FMA en supposant que FMUL et FMA utilisent la même unité qui peut aussi faire FADD." #: params.opt:146 #, no-c-format @@ -16607,12 +16527,12 @@ msgstr "Le nombre maximum de paramètres dans un SCoP." #: params.opt:186 #, no-c-format msgid "Maximum number of blocks for -fharden-control-flow-redundancy." -msgstr "" +msgstr "Nombre maximum de blocs pour -fharden-control-flow-redundancy." #: params.opt:190 #, no-c-format msgid "Maximum number of blocks for in-line -fharden-control-flow-redundancy." -msgstr "" +msgstr "Nombre maximum de blocs pour -fharden-control-flow-redundancy en ligne." #: params.opt:194 #, no-c-format @@ -17673,13 +17593,12 @@ msgstr "Nombre maximum d'appels imbriqués pour rechercher une dépendance de co #: params.opt:1126 #, no-c-format msgid "Maximum number of predicates anded for each predicate ored in the normalized predicate chain." -msgstr "" +msgstr "Nombre maximal de prédicats combinés par « et » pour chaque prédicat combiné par « ou » dans la chaîne de prédicats normalisée." #: params.opt:1131 -#, fuzzy, no-c-format -#| msgid "Maximum number of bases stored in each modref tree." +#, no-c-format msgid "Maximum number of predicates ored in the normalized predicate chain." -msgstr "Le nombre maximum de bases stockées dans chaque arbre modref." +msgstr "Le nombre maximal de prédicats combinés par « ou » dans la chaîne de prédicats normalisée." #: params.opt:1135 #, no-c-format @@ -17767,22 +17686,19 @@ msgid "Enable loop vectorization of floating point inductions." msgstr "Activer la vectorisation sur les instructions en virgule flottante." #: params.opt:1203 -#, fuzzy, no-c-format -#| msgid "Maximum number of basic blocks before EVRP uses a sparse cache." +#, no-c-format msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache." -msgstr "Le nombre maximum de blocs de base avant que EVRP utilise une cache peu dense." +msgstr "Le nombre maximum de blocs de base avant que VRP utilise une cache peu dense." #: params.opt:1207 -#, fuzzy, no-c-format -#| msgid "Maximum number of outgoing edges in a switch before EVRP will not process it." +#, no-c-format msgid "Maximum number of outgoing edges in a switch before VRP will not process it." -msgstr "Le nombre maximum d'arêtes sortantes dans un switch avant que EVRP ne le traite." +msgstr "Le nombre maximum d'arêtes sortantes dans un switch avant que VRP ne le traite pas." #: params.opt:1211 -#, fuzzy, no-c-format -#| msgid "Maximum number of basic blocks before EVRP uses a sparse cache." +#, no-c-format msgid "Maximum number of basic blocks for VRP to use a basic cache vector." -msgstr "Le nombre maximum de blocs de base avant que EVRP utilise une cache peu dense." +msgstr "Le nombre maximum de blocs de base pour que VRP utilise un vecteur de cache de base." #: cfgrtl.cc:2822 msgid "flow control insn inside a basic block" @@ -18601,10 +18517,9 @@ msgstr "" "%s.\n" #: gcov-tool.cc:595 -#, fuzzy, c-format -#| msgid "Copyright %s 2023 Free Software Foundation, Inc.\n" +#, c-format msgid "Copyright %s 2024 Free Software Foundation, Inc.\n" -msgstr "Copyright %s 2023 Free Software Foundation, Inc.\n" +msgstr "Copyright %s 2024 Free Software Foundation, Inc.\n" #: gcov.cc:927 #, c-format @@ -18776,10 +18691,9 @@ msgid "gcov %s%s\n" msgstr "gcov %s%s\n" #: gcov.cc:969 -#, fuzzy, c-format -#| msgid "collect2 version %s\n" +#, c-format msgid "JSON format version: %s\n" -msgstr "collect2 version %s\n" +msgstr "version de format JSON : %s\n" #: gcov.cc:1367 #, c-format @@ -19612,10 +19526,9 @@ msgid "incompatible floating point / vector register operand for '%%%c'" msgstr "opérande en virgule flottante ou registre vecteur incompatible pour « %%%c »" #: config/aarch64/aarch64.cc:12061 -#, fuzzy, c-format -#| msgid "incompatible register operand for '%%%c'" +#, c-format msgid "incompatible operand for '%%%c'" -msgstr "opérande de registre incompatible pour « %%%c »" +msgstr "opérande incompatible pour « %%%c »" #: config/aarch64/aarch64.cc:12081 #, c-format @@ -19768,22 +19681,19 @@ msgid "invalid operand to %%p code" msgstr "opérande invalide pour le code %%p" #: config/arc/arc.cc:4940 -#, fuzzy, c-format -#| msgid "invalid operand to %%s code" +#, c-format msgid "invalid operand for %%s code" msgstr "opérande invalide pour le code %%s" #: config/arc/arc.cc:4958 -#, fuzzy, c-format -#| msgid "invalid operand to %%N code" +#, c-format msgid "invalid operand for %%N code" msgstr "opérande invalide pour le code %%N" #: config/arc/arc.cc:4971 -#, fuzzy, c-format -#| msgid "invalid operand to %%N code" +#, c-format msgid "invalid operand for %%N or %%S code" -msgstr "opérande invalide pour le code %%N" +msgstr "opérande invalide pour le code %%N ou %%S" #: config/arc/arc.cc:4993 config/m32r/m32r.cc:2080 #, c-format @@ -20350,40 +20260,28 @@ msgid "unknown insn mode" msgstr "mode insn inconnu" #: config/i386/i386.cc:23578 -#, fuzzy -#| msgid "invalid conversion from type %" msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>" -msgstr "conversion invalide depuis le type %" +msgstr "conversion invalide depuis le type %<__bf16%> sans option %<-msse2%>" #: config/i386/i386.cc:23581 -#, fuzzy -#| msgid "invalid conversion from type %" msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>" -msgstr "conversion invalide depuis le type %" +msgstr "conversion invalide depuis le type %<_Float16%> sans option %<-msse2%>" #: config/i386/i386.cc:23584 -#, fuzzy -#| msgid "invalid conversion to type %" msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>" -msgstr "conversion invalide vers le type %" +msgstr "conversion invalide vers le type %<__bf16%> sans option %<-msse2%>" #: config/i386/i386.cc:23587 -#, fuzzy -#| msgid "invalid conversion to type %" msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>" -msgstr "conversion invalide vers le type %" +msgstr "conversion invalide vers le type %<_Float16%> sans option %<-msse2%>" #: config/i386/i386.cc:23625 config/i386/i386.cc:23650 -#, fuzzy -#| msgid "operation not permitted on type %" msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>" -msgstr "opération non permise sur le type %" +msgstr "opération non permise sur le type %<__bf16%> sans option %<-msse2%>" #: config/i386/i386.cc:23628 config/i386/i386.cc:23654 -#, fuzzy -#| msgid "operation not permitted on type %" msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>" -msgstr "opération non permise sur le type %" +msgstr "opération non permise sur le type %<_Float16%> sans option %<-msse2%>" #: config/ia64/ia64.cc:5470 #, c-format @@ -21016,10 +20914,9 @@ msgid "'o' operand is not constant" msgstr "l'opérande « o » n'est pas une constante" #: config/stormy16/stormy16.cc:1980 -#, fuzzy, c-format -#| msgid "'B' operand is not constant" +#, c-format msgid "'h' operand is not SImode register" -msgstr "l'opérande « B » n'est pas une constante" +msgstr "l'opérande « h » n'est pas un registre SImode" #: config/stormy16/stormy16.cc:1988 #, c-format @@ -21477,10 +21374,8 @@ msgid "In lambda function" msgstr "Dans la fonction lambda" #: cp/error.cc:3712 -#, fuzzy -#| msgid "In static member function %qD" msgid "In explicit object member function %qD" -msgstr "Dans la fonction membre statique %qD" +msgstr "Dans la fonction membre objet explicite %qD" #: cp/error.cc:3714 msgid "In member function %qD" @@ -21679,16 +21574,12 @@ msgstr "" "\n" #: fortran/error.cc:1043 -#, fuzzy -#| msgid "new in Fortran 2003" msgid "Prohibited in Fortran 2023:" -msgstr "nouveau en Fortran 2003" +msgstr "Interdit en Fortran 2023 :" #: fortran/error.cc:1045 -#, fuzzy -#| msgid "Fortran 2018:" msgid "Fortran 2023:" -msgstr "Fortran 2018 :" +msgstr "Fortran 2023 :" #: fortran/error.cc:1047 msgid "Fortran 2018 deleted feature:" @@ -21784,10 +21675,8 @@ msgid "new in Fortran 2018" msgstr "nouveau en Fortran 2018" #: fortran/intrinsic.cc:4896 -#, fuzzy -#| msgid "new in Fortran 2003" msgid "new in Fortran 2023" -msgstr "nouveau en Fortran 2003" +msgstr "nouveau en Fortran 2023" #: fortran/intrinsic.cc:4900 msgid "a GNU Fortran extension" @@ -22320,10 +22209,8 @@ msgid "value computed is not used" msgstr "la valeur calculée n'est pas utilisée" #: go/gofrontend/expressions.cc:1986 -#, fuzzy -#| msgid "expected function name" msgid "unexpected reference to package" -msgstr "nom de fonction attendu" +msgstr "référence inattendue vers le paquet" #: go/gofrontend/expressions.cc:3840 go/gofrontend/expressions.cc:3856 msgid "constant refers to itself" @@ -22505,33 +22392,27 @@ msgstr "le nombre de résultats ne correspond pas au nombre de valeurs" #: go/gofrontend/expressions.cc:14671 msgid "invalid 3-index slice of object that is not a slice" -msgstr "" +msgstr "tranche d'objet à 3 index invalide qui n'est pas une tranche" #: go/gofrontend/expressions.cc:14674 msgid "attempt to slice object that is not array, slice, or string" -msgstr "" +msgstr "tentative de découper un objet qui n'est pas un tableau, une tranche ou une chaîne" #: go/gofrontend/expressions.cc:14677 msgid "attempt to index object that is not array, slice, string, or map" -msgstr "" +msgstr "tentative d'indexer un objet qui n'est pas un tableau, une tranche, une chaîne ou une carte" #: go/gofrontend/expressions.cc:14730 -#, fuzzy -#| msgid "expected integer expression" msgid "attempt to index type expression" -msgstr "expression entière attendue" +msgstr "tentative d'indexer une expression de type" #: go/gofrontend/expressions.cc:14757 -#, fuzzy -#| msgid "invalid left hand side of assignment" msgid "invalid 3-index slice of string" -msgstr "membre gauche invalide dans l'affectation" +msgstr "une tranche à 3 index d'une chaîne est invalide" #: go/gofrontend/expressions.cc:14770 -#, fuzzy -#| msgid "invalid use of type" msgid "invalid slice of map" -msgstr "utilisation invalide du type" +msgstr "tranche de carte invalide" #: go/gofrontend/expressions.cc:14779 go/gofrontend/expressions.cc:15970 msgid "incompatible type for map index" @@ -22543,15 +22424,15 @@ msgstr "interface ou pointeur vers une interface attendu" #: go/gofrontend/expressions.cc:18212 msgid "may only omit types within composite literals of slice, array, or map type" -msgstr "" +msgstr "ne peut omettre les types que dans des littéraux composites de type tranche, tableau ou carte" #: go/gofrontend/expressions.cc:18306 go/gofrontend/expressions.cc:18618 msgid "map composite literal must have keys" -msgstr "" +msgstr "un littéral composite de type carte doit avoir des clés" #: go/gofrontend/expressions.cc:18651 msgid "expected struct, slice, array, or map type for composite literal" -msgstr "" +msgstr "type struct, tranche, tableau ou carte attendu pour un littéral composite" #: go/gofrontend/expressions.cc:19266 go/gofrontend/statements.cc:2121 msgid "type assertion only valid for interface types" @@ -22580,20 +22461,16 @@ msgid "cannot fallthrough final case in switch" msgstr "le « case » final du « switch » ne peut pas être ouvert" #: go/gofrontend/statements.cc:1288 -#, fuzzy -#| msgid "cannot use %qs as a call-used register" msgid "cannot use %<_%> as value" -msgstr "ne peut utiliser %qs comme registre utilisé durant l'appel" +msgstr "ne peut utiliser %<_%> comme valeur" #: go/gofrontend/statements.cc:1300 go/gofrontend/statements.cc:2528 msgid "invalid left hand side of assignment" msgstr "membre gauche invalide dans l'affectation" #: go/gofrontend/statements.cc:1309 -#, fuzzy -#| msgid "incompatible types in binary expression" msgid "incompatible type in binary expression" -msgstr "types incompatibles dans l'expression binaire" +msgstr "type incompatible dans l'expression binaire" #: go/gofrontend/statements.cc:1555 msgid "use of untyped nil" @@ -22604,10 +22481,8 @@ msgid "expected map index on right hand side" msgstr "un index sur un tableau associatif est attendu dans le membre de droite" #: go/gofrontend/statements.cc:2534 -#, fuzzy -#| msgid "no pre-increment operator for type" msgid "increment or decrement of non-numeric type" -msgstr "pas d'opérateur de pré-incrémentation pour le type" +msgstr "incrémentation ou décrémentation d'un type non numérique" #: go/gofrontend/statements.cc:3449 go/gofrontend/statements.cc:3464 msgid "not enough arguments to return" @@ -22775,7 +22650,7 @@ msgstr "la méthode %s%s%s est marquée comme go:nointerface" #: rust/resolve/rust-ast-resolve-expr.cc:140 #, c-format msgid "You have broken GCC Rust. This is a feature.\n" -msgstr "" +msgstr "Vous avez cassé GCC Rust. C'est une fonctionnalité.\n" #: lto-streamer.h:1033 #, gcc-internal-format, gfc-internal-format @@ -23088,10 +22963,9 @@ msgid "Unrecognized option: %qs" msgstr "Option non reconnue : %qs" #: rust/lang.opt:90 -#, fuzzy, gcc-internal-format -#| msgid "unknown lam type %qs" +#, gcc-internal-format msgid "unknown crate type: '%qs'" -msgstr "type lam %qs inconnu" +msgstr "type de cageot inconnu : « %qs »" #: rust/lang.opt:118 #, gcc-internal-format @@ -23140,16 +23014,14 @@ msgid "missing makefile target after %qs" msgstr "cible manquante dans le makefile après %qs" #: c-family/c.opt:260 -#, fuzzy, gcc-internal-format -#| msgid "missing path after %qs" +#, gcc-internal-format msgid "missing format after %qs" -msgstr "cible manquante après %qs" +msgstr "format manquant après %qs" #: c-family/c.opt:264 -#, fuzzy, gcc-internal-format -#| msgid "missing path after %qs" +#, gcc-internal-format msgid "missing output path after %qs" -msgstr "cible manquante après %qs" +msgstr "chemin de sortie manquant après %qs" #: c-family/c.opt:311 #, gcc-internal-format @@ -23227,10 +23099,9 @@ msgid "unknown pointer size model %qs" msgstr "modèle de taille de pointeur %qs inconnu" #: config/aarch64/aarch64.opt:379 -#, fuzzy, gcc-internal-format -#| msgid "unknown TLS model %qs" +#, gcc-internal-format msgid "unknown LDP/STP policy %qs" -msgstr "modèle TLS %qs inconnu" +msgstr "politique LDP/STP %qs inconnue" #: config/i386/i386.opt:340 #, gcc-internal-format @@ -23250,27 +23121,27 @@ msgstr "%<-msse5%> a été supprimé" #: config/i386/i386.opt:741 #, gcc-internal-format msgid "AVX512PF support will be removed in GCC 15" -msgstr "" +msgstr "Le support pour AVX512PF sera supprimé dans GCC 15" #: config/i386/i386.opt:745 #, gcc-internal-format msgid "AVX512ER support will be removed in GCC 15" -msgstr "" +msgstr "Le support pour AVX512ER sera supprimé dans GCC 15" #: config/i386/i386.opt:773 #, gcc-internal-format msgid "AVX5124FMAPS support will be removed in GCC 15" -msgstr "" +msgstr "Le support pour AVX5124FMAPS sera supprimé dans GCC 15" #: config/i386/i386.opt:777 #, gcc-internal-format msgid "AVX5124VNNIW support will be removed in GCC 15" -msgstr "" +msgstr "Le support pour AVX5124VNNIW sera supprimé dans GCC 15" #: config/i386/i386.opt:972 #, gcc-internal-format msgid "PREFETCHWT1 support will be removed in GCC 15" -msgstr "" +msgstr "Le support pour PREFETCHWT1 sera supprimé dans GCC 15" #: config/i386/i386.opt:1286 #, gcc-internal-format @@ -23346,10 +23217,9 @@ msgid "unknown floating point contraction style %qs" msgstr "style de contraction en virgule flottante %qs inconnu" #: common.opt:1865 -#, fuzzy, gcc-internal-format -#| msgid "unknown Live-Patching Level %qs" +#, gcc-internal-format msgid "unknown hardcfr noreturn checking level %qs" -msgstr "Niveau de correction à chaud %qs inconnu" +msgstr "niveau de vérification hardcfr noreturn %qs inconnu" #: common.opt:1900 #, gcc-internal-format @@ -23359,7 +23229,7 @@ msgstr "Niveau de réutilisation de la pile %qs inconnu" #: common.opt:1972 #, gcc-internal-format msgid "unavailable stringop for inlining %qs" -msgstr "" +msgstr "stringop non disponible pour mettre en ligne %qs" #: common.opt:2003 #, gcc-internal-format @@ -23422,10 +23292,9 @@ msgid "unknown TLS model %qs" msgstr "modèle TLS %qs inconnu" #: common.opt:3020 -#, fuzzy, gcc-internal-format -#| msgid "unknown rust mangling option %qs" +#, gcc-internal-format msgid "unknown trampoline implementation %qs" -msgstr "option de décoration rust %qs inconnue" +msgstr "implémentation de trampoline %qs inconnue" #: common.opt:3342 #, gcc-internal-format @@ -24917,10 +24786,9 @@ msgid "% attribute ignored because function is defined" msgstr "l'attribut % est ignoré car la fonction est définie" #: cgraphunit.cc:921 -#, fuzzy, gcc-internal-format -#| msgid "% function might not be inlinable" +#, gcc-internal-format msgid "% function might not be inlinable unless also declared %" -msgstr "il pourrait ne pas être possible de mettre en ligne la fonction %" +msgstr "la fonction % pourrait ne pas être mise en ligne à moins d'être aussi déclarée %" #: cgraphunit.cc:947 #, gcc-internal-format @@ -25177,10 +25045,9 @@ msgid "pointer value used where a floating-point was expected" msgstr "valeur pointeur utilisée là où un nombre en virgule flottante était attendu" #: convert.cc:338 -#, fuzzy, gcc-internal-format -#| msgid "pointer value used where a floating-point was expected" +#, gcc-internal-format msgid "vector value used where a floating-point was expected" -msgstr "valeur pointeur utilisée là où un nombre en virgule flottante était attendu" +msgstr "valeur vectorielle utilisée là où un nombre en virgule flottante était attendu" #: convert.cc:342 #, gcc-internal-format @@ -25659,16 +25526,12 @@ msgid "cannot read spec file %qs: %m" msgstr "ne peut lire le fichier de spec %qs: %m" #: gcc.cc:2412 gcc.cc:2432 -#, fuzzy -#| msgid "specs %%include syntax malformed after %ld characters" msgid "specs %%include syntax malformed after %td characters" -msgstr "la syntaxe des specs %%include est mal formée après %ld caractères" +msgstr "la syntaxe des specs %%include est mal formée après %td caractères" #: gcc.cc:2458 gcc.cc:2467 gcc.cc:2477 gcc.cc:2487 -#, fuzzy -#| msgid "specs %%rename syntax malformed after %ld characters" msgid "specs %%rename syntax malformed after %td characters" -msgstr "la syntaxe des specs %%rename est mal formée après %ld caractères" +msgstr "la syntaxe des specs %%rename est mal formée après %td caractères" # le message signifie bien que la spec à renommer n'a pas été trouvée et non qu'on n'a pas trouvé qu'elle avait été renommée #: gcc.cc:2497 @@ -25682,16 +25545,12 @@ msgid "%s: attempt to rename spec %qs to already defined spec %qs" msgstr "%s: tentative de renommer la spécification %qs en une spécification %qs déjà définie" #: gcc.cc:2527 -#, fuzzy -#| msgid "specs unknown %% command after %ld characters" msgid "specs unknown %% command after %td characters" -msgstr "commande specs %% inconnue après %ld caractères" +msgstr "commande specs %% inconnue après %td caractères" #: gcc.cc:2539 gcc.cc:2553 -#, fuzzy -#| msgid "specs file malformed after %ld characters" msgid "specs file malformed after %td characters" -msgstr "fichier de specs mal composé après %ld caractères" +msgstr "fichier de specs mal composé après %td caractères" #: gcc.cc:2608 #, gcc-internal-format @@ -25767,7 +25626,7 @@ msgstr "%qs est une option inconnue de %<-save-temps%>" #: gcc.cc:5024 #, gcc-internal-format msgid "linker hardening options not enabled by %<-fhardened%> because other link options were specified on the command line" -msgstr "" +msgstr "les options de renforcement de l'éditeur de liens ne sont pas activées par %<-fhardened%> car d'autres options de l'éditeur de liens ont été spécifiées sur la ligne de commande" #: gcc.cc:5048 toplev.cc:712 #, gcc-internal-format @@ -26319,17 +26178,17 @@ msgstr "%s n'est pas supporté sur cette cible" #: gimple-harden-control-flow.cc:97 #, gcc-internal-format msgid "%qD calls % or similar, %<-fharden-control-flow-redundancy%> is not supported" -msgstr "" +msgstr "%qD appelle % ou similaire, %<-fharden-control-flow-redundancy%> n'est pas supporté" #: gimple-harden-control-flow.cc:110 #, gcc-internal-format msgid "%qD receives nonlocal gotos, %<-fharden-control-flow-redundancy%> is not supported" -msgstr "" +msgstr "%qD reçoit des gotos non locaux, %<-fharden-control-flow-redundancy%> n'est pas supporté" #: gimple-harden-control-flow.cc:121 #, gcc-internal-format msgid "%qD has more than %u blocks, the requested maximum for %<-fharden-control-flow-redundancy%>" -msgstr "" +msgstr "%qD a plus de %u blocs, le maximum demandé pour %<-fharden-control-flow-redundancy%>" #: gimple-ssa-isolate-paths.cc:290 #, gcc-internal-format @@ -27802,10 +27661,9 @@ msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" msgstr "vérification gimple: attendait %s(%s), a trouvé %s(%s) dans %s, à %s:%d" #: gimplify.cc:1399 -#, fuzzy, gcc-internal-format -#| msgid "% clause must specify an allocator here" +#, gcc-internal-format msgid "% directive for %qD inside a target region must specify an % clause" -msgstr "la clause % doit spécifier un allocateur ici" +msgstr "la directive % pour %qD à l'intérieur d'une région cible doit spécifier une clause %" #: gimplify.cc:2271 #, gcc-internal-format @@ -27908,16 +27766,14 @@ msgid "%qE not specified in enclosing OpenACC %qs construct" msgstr "%qE non spécifié dans la construction OpenACC %qs englobante" #: gimplify.cc:8056 -#, fuzzy, gcc-internal-format -#| msgid "enclosing OpenACC %qs construct" +#, gcc-internal-format msgid "enclosing OpenACC %qs construct and" -msgstr "construction OpenACC %qs englobante" +msgstr "construction OpenACC %qs englobante et" #: gimplify.cc:8059 -#, fuzzy, gcc-internal-format -#| msgid "enclosing OpenACC %qs construct" +#, gcc-internal-format msgid "enclosing OpenACC %qs construct with %qs clause" -msgstr "construction OpenACC %qs englobante" +msgstr "construction OpenACC %qs englobante avec la clause %qs" #: gimplify.cc:8129 #, gcc-internal-format @@ -28658,109 +28514,104 @@ msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA msgstr "fonction %qs, paramètre %u, est utilisée mais n'a pas certains accès IPA-SRA" #: ipa-strub.cc:620 -#, fuzzy, gcc-internal-format -#| msgid "pass %s does not support cloning" +#, gcc-internal-format msgid "at-calls % does not support call to %qD" -msgstr "l'étape %s ne supporte pas le clonage" +msgstr "le % at-calls ne supporte pas l'appel à %qD" #: ipa-strub.cc:654 #, gcc-internal-format msgid "%qD is not eligible for % on the target system" -msgstr "" +msgstr "%qD n'est pas éligible pour % sur le système cible" #: ipa-strub.cc:658 -#, fuzzy, gcc-internal-format -#| msgid "unsupported constant address:" +#, gcc-internal-format msgid "unsupported % call on the target system" -msgstr "adresse constante non supportée :" +msgstr "appel % non supporté sur le système cible" #: ipa-strub.cc:684 #, gcc-internal-format msgid "%qD is not eligible for % because %<-fsplit-stack%> is enabled" -msgstr "" +msgstr "%qD n'est pas éligible pour % car %<-fsplit-stack%> est activé" #: ipa-strub.cc:697 #, gcc-internal-format msgid "%qD is not eligible for % because of attribute %" -msgstr "" +msgstr "%qD n'est pas éligible pour % à cause de l'attribut %" #: ipa-strub.cc:712 #, gcc-internal-format msgid "%qD is not eligible for % because of attribute %" -msgstr "" +msgstr "%qD n'est pas éligible pour % à cause de l'attribut %" #: ipa-strub.cc:846 #, gcc-internal-format msgid "%qD is not eligible for internal % because of attribute %" -msgstr "" +msgstr "%qD n'est pas éligible pour % interne à cause de l'attribut %" #: ipa-strub.cc:870 #, gcc-internal-format msgid "%qD is not eligible for internal % because it calls %qD" -msgstr "" +msgstr "%qD n'est pas éligible pour % interne car il appelle %qD" #: ipa-strub.cc:884 #, gcc-internal-format msgid "%qD is not eligible for internal % because it contains a non-local goto target" -msgstr "" +msgstr "%qD n'est pas éligible pour % interne car il contient un goto vers une cible non locale" #: ipa-strub.cc:897 #, gcc-internal-format msgid "%qD is not eligible for internal % because the address of a local label escapes" -msgstr "" +msgstr "%qD n'est pas éligible pour % interne car l'adresse d'une étiquette locale échape" #: ipa-strub.cc:936 -#, fuzzy, gcc-internal-format -#| msgid "%s does not support force_nonfallthru" +#, gcc-internal-format msgid "internal % does not support forced labels" -msgstr "%s ne supporte pas force_nonfallthru" +msgstr "% interne ne supporte pas les étiquettes forcées" #: ipa-strub.cc:950 -#, fuzzy, gcc-internal-format -#| msgid "too many arguments for format" +#, gcc-internal-format msgid "%qD has too many arguments for internal %" -msgstr "trop d'arguments pour le format" +msgstr "%qD a trop d'arguments pour % interne" #: ipa-strub.cc:1227 #, gcc-internal-format msgid "%qD requires %, but no viable % mode was found" -msgstr "" +msgstr "%qD requiert % mais aucun mode % viable a été trouvé" #: ipa-strub.cc:1323 #, gcc-internal-format msgid "% mode %qE selected for %qD, when %qE was requested" -msgstr "" +msgstr "le mode % %qE est sélectionné pour %qD alors que %qE a été demandé" #: ipa-strub.cc:1332 #, gcc-internal-format msgid "the incompatible selection was determined by ultimate alias target %qD" -msgstr "" +msgstr "la sélection incompatible a été déterminée par la cible d'alias ultime %qD" #: ipa-strub.cc:1679 #, gcc-internal-format msgid "indirect non-% call in % context %qD" -msgstr "" +msgstr "appel non % indirect dans % de contexte %qD" #: ipa-strub.cc:1698 #, gcc-internal-format msgid "calling % % %qD in non-% context %qD" -msgstr "" +msgstr "appel de % % %qD dans le contexte non % %qD" #: ipa-strub.cc:1708 #, gcc-internal-format msgid "calling non-% %qD in % context %qD" -msgstr "" +msgstr "appel non % %qD dans le contexte % %qD" #: ipa-strub.cc:1712 #, gcc-internal-format msgid "calling %qD using non-% type %qT in % context %qD" -msgstr "" +msgstr "appel de %qD en utilisant le non % de type %qT sans le contexte % %qD" #: ipa-strub.cc:2834 -#, fuzzy, gcc-internal-format -#| msgid "failed to load pendings for %<%E%s%E%>" +#, gcc-internal-format msgid "failed to split %qD for %" -msgstr "échec lors du chargement des pendings pour %<%E%s%E%>" +msgstr "échec en scindant %qD pour %" #: ira.cc:2441 ira.cc:2463 #, gcc-internal-format @@ -28803,10 +28654,9 @@ msgid "maximum number of generated reload insns per insn achieved (%d)" msgstr "le nombre maximum d'insns de rechargement générées par insn est atteint (%d)" #: lra.cc:546 -#, fuzzy, gcc-internal-format -#| msgid "% operand has impossible constraints" +#, gcc-internal-format msgid "% operand has impossible constraints or there are not enough registers" -msgstr "l'opérande % a des contraintes impossibles" +msgstr "l'opérande % a des contraintes impossibles ou il n'y a pas assez de registres" #: lto-cgraph.cc:1171 #, gcc-internal-format @@ -29157,10 +29007,9 @@ msgid "invalid OpenMP non-rectangular loop step; %<(%E - %E) * %E%> is not a mul msgstr "pas de boucle OpenMP non rectangulaire invalide ; %<(%E - %E) * %E%> n'est pas un multiple de la boucle %d avec le pas %qE" #: omp-general.cc:1283 -#, fuzzy, gcc-internal-format -#| msgid "array size expression is not supported yet" +#, gcc-internal-format msgid "% selector set is not supported yet" -msgstr "l'expression de la taille du tableau n'est pas encore supportée" +msgstr "l'ensemble du sélecteur % n'est pas encore supportée" #: omp-general.cc:1288 #, gcc-internal-format @@ -29484,10 +29333,9 @@ msgid "OpenMP runtime API call %qD in a region with % clause" msgstr "appel d'API de la routine OpenMP %qD dans une région avec la clause %" #: omp-low.cc:9791 -#, fuzzy, gcc-internal-format -#| msgid "ignoring sink clause with offset that is not a multiple of the loop step" +#, gcc-internal-format msgid "ignoring % clause with offset that is not a multiple of the loop step" -msgstr "la clause « sink » est ignorée car elle a un offset qui n'est pas un multiple du pas de la boucle" +msgstr "la clause % est ignorée car elle a un offset qui n'est pas un multiple du pas de la boucle" #: omp-low.cc:9814 #, gcc-internal-format @@ -29847,12 +29695,12 @@ msgstr "les ancres de sections doivent être désactivées quand la réorganisat #: opts.cc:1105 #, gcc-internal-format msgid "%<-ftrivial-auto-var-init=zero%> is not enabled by %<-fhardened%> because it was specified on the command line" -msgstr "" +msgstr "%<-ftrivial-auto-var-init=zero%> n'est pas activé par %<-fhardened%> car il a été spécifié sur la ligne de commande" #: opts.cc:1155 #, gcc-internal-format msgid "%<-fstack-protector-strong%> is not enabled by %<-fhardened%> because it was specified on the command line" -msgstr "" +msgstr "%<-fstack-protector-strong%> n'est pas activé par %<-fhardened%> car il a été spécifié sur la ligne de commande" #: opts.cc:1200 #, gcc-internal-format @@ -31001,16 +30849,14 @@ msgid "global destructors not supported on this target" msgstr "les destructeurs globaux ne sont pas supportés sur cette cible" #: targhooks.cc:1802 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute is not supported on this machine" -msgstr "l'attribut cible n'est pas supporté sur cette machine" +msgstr "l'attribut % n'est pas supporté sur cette machine" #: targhooks.cc:1814 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute is not supported on this machine" -msgstr "l'attribut cible n'est pas supporté sur cette machine" +msgstr "l'attribut % n'est pas supporté sur cette machine" #: targhooks.cc:1828 #, gcc-internal-format @@ -31158,10 +31004,9 @@ msgid "%<-fassociative-math%> disabled; other options take precedence" msgstr "%<-fassociative-math%> désactivé; d'autres options prennent le pas" #: toplev.cc:1576 -#, fuzzy, gcc-internal-format -#| msgid "%<-fdata-sections%> not supported for this target" +#, gcc-internal-format msgid "%<-fhardened%> not supported for this target" -msgstr "%<-fdata-sections%> n'est pas supporté pour cette cible" +msgstr "%<-fhardened%> n'est pas supporté pour cette cible" #: toplev.cc:1585 #, gcc-internal-format @@ -31171,7 +31016,7 @@ msgstr "%<-fstack-clash-protection%> n'est pas supporté sur des cibles où la p #: toplev.cc:1598 #, gcc-internal-format msgid "%<-fstack-clash-protection%> is not enabled by %<-fhardened%> because %<-fstack-check%> was specified on the command line" -msgstr "" +msgstr "%<-fstack-clash-protection%> n'est pas activé par %<-fhardened%> car %<-fstack-check%> a été spécifié sur la ligne de commande" #: toplev.cc:1608 #, gcc-internal-format @@ -31429,10 +31274,9 @@ msgid "%qs in gimple IL" msgstr "%qs dans IL gimple" #: tree-cfg.cc:3357 -#, fuzzy, gcc-internal-format -#| msgid "used struct type value where scalar is required" +#, gcc-internal-format msgid "%qs as base where non-register is required" -msgstr "valeur de type « struct » utilisée là où un scalaire est requis" +msgstr "%qs en tant que base où un non-registre est requis" #: tree-cfg.cc:3372 #, gcc-internal-format @@ -31706,10 +31550,9 @@ msgid "invalid operand in %qs" msgstr "opérande invalide dans %qs" #: tree-cfg.cc:4676 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument in option %qs" +#, gcc-internal-format msgid "invalid %qs size argument in load" -msgstr "argument invalide pour l'option %qs" +msgstr "argument de taille %qs invalide dans le chargement" #: tree-cfg.cc:4695 tree-cfg.cc:4721 #, gcc-internal-format @@ -31927,33 +31770,29 @@ msgid "fallthru to exit from bb %d" msgstr "fallthru pour sortir du bloc de base %d" #: tree-cfg.cc:5707 -#, fuzzy, gcc-internal-format -#| msgid "extra brace group at end of initializer" +#, gcc-internal-format msgid "entry block count not initialized" -msgstr "groupe d'accolades superflu à la fin de l'initialisation" +msgstr "décompte du bloc d'entrée pas initialisé" #: tree-cfg.cc:5713 -#, fuzzy, gcc-internal-format -#| msgid "extra brace group at end of initializer" +#, gcc-internal-format msgid "exit block count not initialized" -msgstr "groupe d'accolades superflu à la fin de l'initialisation" +msgstr "décompte du bloc de sortie par initialisé" #: tree-cfg.cc:5720 #, gcc-internal-format msgid "probability of edge from entry block not initialized" -msgstr "" +msgstr "la probabilité de l'arête depuis le bloc d'entrée n'est pas initialisée" #: tree-cfg.cc:5735 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qE is not initialized" +#, gcc-internal-format, gfc-internal-format msgid "count of bb %d not initialized" -msgstr "%qE n'est pas initialisé" +msgstr "le compte de bb %d n'est pas initialisé" #: tree-cfg.cc:5741 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Uninitialized probability of edge %i->%i" +#, gcc-internal-format, gfc-internal-format msgid "probability of edge %d->%d not initialized" -msgstr "Probabilité non initialisée de l'arête %i->%i" +msgstr "la probabilité de l'arête %d->%d n'est pas initialisée" #: tree-cfg.cc:5761 #, gcc-internal-format @@ -33264,10 +33103,9 @@ msgid "initializer for floating value is not a floating constant" msgstr "l'initialiseur pour une valeur en virgule flottante n'est pas une constante en virgule flottante" #: varasm.cc:5342 -#, fuzzy, gcc-internal-format -#| msgid "initializer for floating value is not a floating constant" +#, gcc-internal-format msgid "initializer for %<_BitInt(%d)%> value is not an integer constant" -msgstr "l'initialiseur pour une valeur en virgule flottante n'est pas une constante en virgule flottante" +msgstr "l'initialiseur pour la valeur %<_BitInt(%d)%> n'est pas une constante entière" #: varasm.cc:5725 #, gcc-internal-format @@ -33463,28 +33301,24 @@ msgid "%qE attribute with unsupported boolean precision" msgstr "attribut %qE avec une précision booléenne non supportée" #: c-family/c-attribs.cc:1059 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only supported on boolean types" +#, gcc-internal-format msgid "%qE attribute only supported in C" -msgstr "l'attribut %qE est uniquement supporté sur des types booléens" +msgstr "l'attribut %qE est uniquement supporté en C" #: c-family/c-attribs.cc:1066 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only supported on boolean types" +#, gcc-internal-format msgid "%qE attribute only supported on integral types" -msgstr "l'attribut %qE est uniquement supporté sur des types booléens" +msgstr "l'attribut %qE est uniquement supporté sur des types entiers" #: c-family/c-attribs.cc:1087 c-family/c-attribs.cc:1103 -#, fuzzy, gcc-internal-format -#| msgid "overflow in conversion from %qT to %qT changes value from %qE to %qE" +#, gcc-internal-format msgid "overflows in conversion from %qT to %qT changes value from %qE to %qE" -msgstr "le débordement dans la conversion de %qT vers %qT change la valeur de %qE en %qE" +msgstr "les débordements dans la conversion de %qT vers %qT changent la valeur de %qE en %qE" #: c-family/c-attribs.cc:1112 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute argument value %qE refers to parameter type %qT" +#, gcc-internal-format msgid "%qE attribute requires different values for % and % for type %qT" -msgstr "l'argument de l'attribut %qE avec la valeur %qE fait référence au type de paramètre %qT" +msgstr "l'attribut %qE requiert des valeurs différentes pour % et % pour le type %qT" #: c-family/c-attribs.cc:1152 #, gcc-internal-format @@ -33503,29 +33337,24 @@ msgid "%qE argument not a string" msgstr "l'argument %qE n'est pas une chaîne de caractères" #: c-family/c-attribs.cc:1555 ada/gcc-interface/utils.cc:6793 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored on objects of type %qT" +#, gcc-internal-format msgid "%qE attribute ignored because of argument %qE" -msgstr "l'attribut %qE est ignoré pour l'objet de type %qT" +msgstr "l'attribut %qE est ignoré pour l'argument %qE" -# %qs est remplacé par un texte non traduit: « hot », « cold », « always_inline ». #: c-family/c-attribs.cc:1576 ada/gcc-interface/utils.cc:6814 -#, fuzzy, gcc-internal-format -#| msgid "ignoring attribute %qE because it conflicts with attribute %qs" +#, gcc-internal-format msgid "ignoring attribute %qE because of excess arguments starting at %qE" -msgstr "l'attribut %qE est ignoré car il est en conflit avec l'attribut %qs" +msgstr "l'attribut %qE est ignoré à cause des arguments surnuméraires en commençant par %qE" #: c-family/c-attribs.cc:1590 ada/gcc-interface/utils.cc:6828 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute does not apply to types" +#, gcc-internal-format msgid "attribute %qE does not apply to elements of non-scalar type %qT" -msgstr "l'attribut %qE ne s'applique pas aux types" +msgstr "l'attribut %qE ne s'applique pas aux éléments de type non scalaire %qT" #: c-family/c-attribs.cc:1595 ada/gcc-interface/utils.cc:6833 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute does not apply to types" +#, gcc-internal-format msgid "attribute %qE does not apply to fields of aggregate type %qT" -msgstr "l'attribut %qE ne s'applique pas aux types" +msgstr "l'attribut %qE ne s'applique pas aux champs de type agrégé %qT" #: c-family/c-attribs.cc:1661 #, gcc-internal-format @@ -34757,16 +34586,14 @@ msgid "argument %u in call to function %qE has pointer to %qs type (%qT)" msgstr "l'argument %u dans l'appel à la fonction %qE est un pointeur vers le type %qs (%qT)" #: c-family/c-common.cc:6535 c-family/c-common.cc:6620 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument %u in call to function %qE has enumerated type" -msgstr "l'argument 3 dans l'appel à la fonction %qE est un type énuméré" +msgstr "l'argument %u dans l'appel à la fonction %qE est un type énuméré" #: c-family/c-common.cc:6541 c-family/c-common.cc:6626 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has boolean type" +#, gcc-internal-format msgid "argument %u in call to function %qE has boolean type" -msgstr "l'argument 3 dans l'appel à la fonction %qE est un type booléen" +msgstr "l'argument %u dans l'appel à la fonction %qE est un type booléen" #: c-family/c-common.cc:6554 #, gcc-internal-format @@ -34779,22 +34606,19 @@ msgid "argument %u in call to function %qE points to incomplete type" msgstr "l'argument %u dans l'appel à la fonction %qE pointe vers un type incomplet" #: c-family/c-common.cc:6604 -#, fuzzy, gcc-internal-format -#| msgid "argument %u in call to function %qE does not have pointer type" +#, gcc-internal-format msgid "argument %u in call to function %qE does not have % type" -msgstr "l'argument %u dans l'appel à la fonction %qE n'a pas un type pointeur" +msgstr "l'argument %u dans l'appel à la fonction %qE n'a pas un type %" #: c-family/c-common.cc:6635 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument 1 in call to function %qE has unsigned type" -msgstr "l'argument 3 dans l'appel à la fonction %qE est un type énuméré" +msgstr "l'argument 1 dans l'appel à la fonction %qE est un type non signé" #: c-family/c-common.cc:6642 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument 1 in call to function %qE has signed type" -msgstr "l'argument 3 dans l'appel à la fonction %qE est un type énuméré" +msgstr "l'argument 1 dans l'appel à la fonction %qE est un type signé" #: c-family/c-common.cc:6905 rust/backend/rust-tree.cc:3601 #, gcc-internal-format @@ -35595,22 +35419,19 @@ msgid "stray %<\\%o%> in program" msgstr "%<\\%o%> égaré dans le programme" #: c-family/c-lex.cc:1014 -#, fuzzy, gcc-internal-format -#| msgid "integer constant is too large for % type" +#, gcc-internal-format msgid "integer constant is too large for % type" -msgstr "la constante entière est trop grande pour le type %" +msgstr "la constante entière est trop grande pour le type %" #: c-family/c-lex.cc:1017 -#, fuzzy, gcc-internal-format -#| msgid "integer constant is too large for % type" +#, gcc-internal-format msgid "integer constant is too large for %<_BitInt(%d)%> type" -msgstr "la constante entière est trop grande pour le type %" +msgstr "la constante entière est trop grande pour le type %<_BitInt(%d)%>" #: c-family/c-lex.cc:1025 c/c-decl.cc:12651 -#, fuzzy, gcc-internal-format -#| msgid "%<__int%d%> is not supported on this target" +#, gcc-internal-format msgid "%<_BitInt(%d)%> is not supported on this target" -msgstr "%<__int%d%> n'est pas supporté sur cette cible" +msgstr "%<_BitInt(%d)%> n'est pas supporté sur cette cible" #: c-family/c-lex.cc:1077 #, gcc-internal-format @@ -35648,10 +35469,9 @@ msgid "non-standard suffix on floating constant" msgstr "suffixe non standard sur une constante en virgule flottante" #: c-family/c-lex.cc:1223 c-family/c-lex.cc:1227 c-family/c-lex.cc:1232 -#, fuzzy, gcc-internal-format -#| msgid "non-standard suffix on floating constant" +#, gcc-internal-format msgid "non-standard suffix on floating constant before C23" -msgstr "suffixe non standard sur une constante en virgule flottante" +msgstr "suffixe non standard sur une constante en virgule flottante avant C23" #: c-family/c-lex.cc:1239 #, gcc-internal-format @@ -35831,7 +35651,7 @@ msgstr "deux variables d'itération extérieurs %qD et %qD sont utilisées dans #: c-family/c-omp.cc:1810 #, gcc-internal-format msgid "variable %qD used %s is bound in intervening code" -msgstr "" +msgstr "la variable %qD utilisée %s est liée dans du code intervenant" #: c-family/c-omp.cc:2409 #, gcc-internal-format @@ -35892,7 +35712,7 @@ msgstr "utilisation de l'option %<-I-%> obsolète, veuillez utiliser %<-iquote%> #: c-family/c-opts.cc:373 #, gcc-internal-format msgid "%<-fdeps-format=%> unknown format %<%s%>" -msgstr "" +msgstr "%<-fdeps-format=%> format %<%s%> inconnu" #: c-family/c-opts.cc:455 #, gcc-internal-format @@ -35967,7 +35787,7 @@ msgstr "les fonctions d'initialisation TLS externes ne sont pas supportées sur #: c-family/c-opts.cc:1149 #, gcc-internal-format msgid "%<-fconcepts-ts%> is deprecated and will be removed in GCC 15; please convert your code to C++20 concepts" -msgstr "" +msgstr "%<-fconcepts-ts%> est déprécié et sera retiré dans GCC 15 ; veuillez convertir votre code vers les concepts C++20" #: c-family/c-opts.cc:1158 #, gcc-internal-format @@ -35992,7 +35812,7 @@ msgstr "ouverture du fichier de dépendances %s: %m" #: c-family/c-opts.cc:1381 #, gcc-internal-format msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m" -msgstr "" +msgstr "%<-MF%> et %<-fdeps-file=%> ne peuvent pas partager un fichier de sortie %s : %m" #: c-family/c-opts.cc:1391 #, gcc-internal-format @@ -36027,17 +35847,17 @@ msgstr "%<-fdirectives-only%> est incompatible avec %<-traditional%>" #: c-family/c-opts.cc:1634 #, gcc-internal-format msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off" -msgstr "" +msgstr "%<_FORTIFY_SOURCE%> n'est pas activé par %<-fhardened%> car les optimisations sont désactivées" #: c-family/c-opts.cc:1638 #, gcc-internal-format msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>" -msgstr "" +msgstr "%<_FORTIFY_SOURCE%> n'est pas activé par %<-fhardened%> car il a été spécifié dans %<-D%> ou %<-U%>" #: c-family/c-opts.cc:1644 #, gcc-internal-format msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>" -msgstr "" +msgstr "%<_GLIBCXX_ASSERTIONS%> n'est pas activé par %<-fhardened%> car il a été spécifié dans %<-D%> ou %<-U%>" #: c-family/c-opts.cc:1768 #, gcc-internal-format @@ -36330,16 +36150,14 @@ msgid "%<#pragma GCC optimize%> string is badly formed" msgstr "la chaine de %<#pragma GCC optimize%> est mal formée" #: c-family/c-pragma.cc:1211 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of %<#pragma push_options%>" +#, gcc-internal-format msgid "junk at end of %<#pragma GCC push_options%>" -msgstr "rebut à la fin de %<#pragma push_options%>" +msgstr "rebut à la fin de %<#pragma GCC push_options%>" #: c-family/c-pragma.cc:1248 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of %<#pragma pop_options%>" +#, gcc-internal-format msgid "junk at end of %<#pragma GCC pop_options%>" -msgstr "rebut à la fin de %<#pragma pop_options%>" +msgstr "rebut à la fin de %<#pragma GCC pop_options%>" #: c-family/c-pragma.cc:1255 #, gcc-internal-format @@ -37132,21 +36950,19 @@ msgid "% used with length equal to number of elements without multiplic msgstr "% utilisé avec une longueur égale au nombre d'éléments sans être multiplié par la taille des éléments" #: c-family/c-warn.cc:2291 -#, fuzzy, gcc-internal-format -#| msgid "interrupt service routine can only have a pointer argument and an optional integer argument" +#, gcc-internal-format msgid "%qD sizes specified with % in the earlier argument and not in the later argument" -msgstr "la routine de service d'interruption ne peut avoir qu'un argument de type pointeur et un argument entier optionnel" +msgstr "les tailles %qD sont spécifiées avec % dans le premier argument et non dans le second" #: c-family/c-warn.cc:2293 #, gcc-internal-format msgid "earlier argument should specify number of elements, later size of each element" -msgstr "" +msgstr "le premier argument spécifie le nombre d'éléments tandis que le second donne la taille de chaque élément" #: c-family/c-warn.cc:2332 -#, fuzzy, gcc-internal-format -#| msgid "floating point overflow in expression %qE of type %qT results in %qE" +#, gcc-internal-format msgid "allocation of insufficient size %qE for type %qT with size %qE" -msgstr "débordement d'un nombre en virgule flottante dans l'expression %qE de type %qT résulte en %qE" +msgstr "allocation d'une taille insuffisante %qE pour le type %qT avec la taille %qE" #: c-family/c-warn.cc:2409 #, gcc-internal-format @@ -37426,10 +37242,9 @@ msgid "too many input files" msgstr "trop de fichiers d'entrée" #: c-family/known-headers.cc:322 -#, fuzzy, gcc-internal-format -#| msgid "%qs is defined in header %qs; did you forget to %<#include %s%>?" +#, gcc-internal-format msgid "%qs is defined in header %qs; this is probably fixable by adding %<#include %s%>" -msgstr "%qs est défini dans l'en-tête %qs ; avez-vous oublié %<#include %s%> ?" +msgstr "%qs est défini dans l'en-tête %qs ; ceci peut probablement être corrigé en ajoutant %<#include %s%>" #: common/config/aarch64/aarch64-common.cc:415 config/aarch64/aarch64.cc:18466 #, gcc-internal-format @@ -37626,27 +37441,24 @@ msgid "%<-march=%s%>: extension %qs appear more than one time" msgstr "%<-march=%s%>: l'extension %qs apparaît plus d'une fois" #: common/config/riscv/riscv-common.cc:676 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs is unsupported standard single letter extension" -msgstr "%<-march=%s%>: l'extension %qs apparaît plus d'une fois" +msgstr "%<-march=%s%>: l'extension %qs est une extension standard a une seule lettre non supportée" #: common/config/riscv/riscv-common.cc:684 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 'z' but is unsupported standard extension" -msgstr "%<-march=%s%>: l'extension %qs apparaît plus d'une fois" +msgstr "%<-march=%s%>: l'extension %qs commence par « z » mais c'est une extension standard non supportée" #: common/config/riscv/riscv-common.cc:692 #, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 's' but is unsupported standard supervisor extension" -msgstr "" +msgstr "%<-march=%s%>: l'extension %qs commence par « s » mais c'est une extension superviseur standard non supportée" #: common/config/riscv/riscv-common.cc:700 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 'x' but is unsupported non-standard extension" -msgstr "%<-march=%s%>: l'extension %qs apparaît plus d'une fois" +msgstr "%<-march=%s%>: l'extension %qs commence par « x » mais c'est une extension non standard non supportée" #: common/config/riscv/riscv-common.cc:947 #, gcc-internal-format @@ -37679,16 +37491,14 @@ msgid "%<-march=%s%>: first ISA subset must be %, % or %" msgstr "%<-march=%s%>: le premier sous-ensemble ISA doit être %, % ou %" #: common/config/riscv/riscv-common.cc:1089 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: expect number after %<%dp%>" +#, gcc-internal-format msgid "%<-march=%s%>: Not single-letter extension. %<%c%>" -msgstr "%<-march=%s%>: nombre attendu après %<%dp%>" +msgstr "%<-march=%s%>: pas une extension a une seule lettre. %<%c%>" #: common/config/riscv/riscv-common.cc:1220 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: zcf extension supports in rv32 only" -msgstr "%<-march=%s%>: l'extension %qs apparaît plus d'une fois" +msgstr "%<-march=%s%>: l'extension zcf est uniquement supportée dans rv32" #: common/config/riscv/riscv-common.cc:1225 #, gcc-internal-format @@ -37696,28 +37506,24 @@ msgid "%<-march=%s%>: z*inx conflicts with floating-point extensions" msgstr "%<-march=%s%>: conflits z*inx avec les extensions en virgule flottante" #: common/config/riscv/riscv-common.cc:1231 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: h extension requires i extension" -msgstr "%<-march=%s%>: l'extension %qs apparaît plus d'une fois" +msgstr "%<-march=%s%>: l'extension l'extension requiert l'extension i" #: common/config/riscv/riscv-common.cc:1236 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcpu=%s%> conflicts with %<-march=%s%>" +#, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmt" -msgstr "%<-mcpu=%s%> est en conflit avec %<-march=%s%>" +msgstr "%<-march=%s%> zcd est en conflit avec zcmt" #: common/config/riscv/riscv-common.cc:1238 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcpu=%s%> conflicts with %<-march=%s%>" +#, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmp" -msgstr "%<-mcpu=%s%> est en conflit avec %<-march=%s%>" +msgstr "%<-march=%s%> zcd est en conflit avec zcmp" #: common/config/riscv/riscv-common.cc:1247 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: z*inx conflicts with floating-point extensions" +#, gcc-internal-format msgid "%<-march=%s%>: xtheadvector conflicts with vector extension or its sub-extensions" -msgstr "%<-march=%s%>: conflits z*inx avec les extensions en virgule flottante" +msgstr "%<-march=%s%>: xtheadvector est en conflit avec l'extension vectorielle ou sa sous-extension" #: common/config/riscv/riscv-common.cc:1344 #, gcc-internal-format @@ -37730,10 +37536,9 @@ msgid "%<-march=%s%>: %s must separate with %<_%>" msgstr "%<-march=%s%> %s doit être séparé par %<_%>" #: common/config/riscv/riscv-common.cc:1419 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: name of %s must be more than 1 letter" +#, gcc-internal-format msgid "%<-march=%s%>: i, e or g must be the first extension" -msgstr "%<-march=%s%>: le nom de %s doit avoir plus d'une lettre" +msgstr "%<-march=%s%>: i, e ou g doit être la première extension" #: common/config/riscv/riscv-common.cc:1758 #, gcc-internal-format @@ -38062,10 +37867,9 @@ msgid "PIC is only supported for RTPs" msgstr "PIC est uniquement supporté pour RTP" #: config/aarch64/aarch64-builtins.cc:2122 -#, fuzzy, gcc-internal-format -#| msgid "argument to %qs must be a 2-bit unsigned literal" +#, gcc-internal-format msgid "first argument to %qD must be a string literal" -msgstr "l'argument de %qs doit être un littéral non signé de 2 bits" +msgstr "le premier argument de %qD doit être une chaîne littérale" #: config/aarch64/aarch64-builtins.cc:2253 #: config/aarch64/aarch64-builtins.cc:2487 config/arm/arm-builtins.cc:3146 @@ -38091,31 +37895,27 @@ msgstr "l'argument doit être une constante immédiate de 16 bits" #: config/aarch64/aarch64-builtins.cc:2700 #, gcc-internal-format msgid "128-bit system register support requires the % extension" -msgstr "" +msgstr "le support d'un registre système 128 bits requiert l'extension %" #: config/aarch64/aarch64-builtins.cc:2715 -#, fuzzy, gcc-internal-format -#| msgid "invalid register name for %q+D" +#, gcc-internal-format msgid "invalid system register name provided" -msgstr "nom de registre invalide pour %q+D" +msgstr "nom de registre système invalide" #: config/aarch64/aarch64-builtins.cc:2729 -#, fuzzy, gcc-internal-format -#| msgid "invalid register name for %q+D" +#, gcc-internal-format msgid "invalid system register name %qs" -msgstr "nom de registre invalide pour %q+D" +msgstr "nom de registre système invalide pour %qs" #: config/aarch64/aarch64-builtins.cc:2809 -#, fuzzy, gcc-internal-format -#| msgid "for statement expected" +#, gcc-internal-format msgid "Constant-type argument expected" -msgstr "instruction « for » attendue" +msgstr "Argument de type constante attendu" #: config/aarch64/aarch64-builtins.cc:2815 -#, fuzzy, gcc-internal-format -#| msgid "argument %d must be a constant immediate in range [0,15]" +#, gcc-internal-format msgid "argument %d must be a constant immediate in range [%wd,%wd]" -msgstr "l'argument %d doit être une constante immédiate dans l'intervalle [0,15]" +msgstr "l'argument %d doit être une constante immédiate dans l'intervalle [%wd,%wd]" #: config/aarch64/aarch64-builtins.cc:2894 #, gcc-internal-format @@ -38168,17 +37968,17 @@ msgstr "la fonction ACLE %qD est incompatible avec l'utilisation de %qs" #: config/aarch64/aarch64-sve-builtins.cc:1112 #, gcc-internal-format msgid "ACLE function %qD cannot be called when SME streaming mode is enabled" -msgstr "" +msgstr "la fonction ACLE %qD ne peut pas être appelée quand le mode de streaming SME est activé" #: config/aarch64/aarch64-sve-builtins.cc:1119 #, gcc-internal-format msgid "ACLE function %qD can only be called when SME streaming mode is enabled" -msgstr "" +msgstr "La fonction ACLE %qD peut uniquement être appelée quand le mode de streamding SME est activé" #: config/aarch64/aarch64-sve-builtins.cc:1126 #, gcc-internal-format msgid "ACLE function %qD can only be called from a function that has %qs state" -msgstr "" +msgstr "La fonction %qD peut uniquement être appelée depuis une fonction dans l'état %qs" #: config/aarch64/aarch64-sve-builtins.cc:1154 #: config/arm/arm-mve-builtins.cc:571 @@ -38188,10 +37988,9 @@ msgid "argument %d of %qE must be an integer constant expression" msgstr "l'argument %d de %qE doit être une expression constante entière" #: config/aarch64/aarch64-sve-builtins.cc:1167 -#, fuzzy, gcc-internal-format -#| msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd" +#, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects the value %wd" -msgstr "passage de %wd à l'argument %d de %qE qui attend soit %wd ou %wd" +msgstr "passage de %wd à l'argument %d de %qE qui attend la valeur %wd" #: config/aarch64/aarch64-sve-builtins.cc:1170 #: config/arm/arm-mve-builtins.cc:583 @@ -38232,21 +38031,19 @@ msgstr[0] "passage du vecteur unique %qT à l'argument %d de %qE qui attend un t msgstr[1] "passage du vecteur unique %qT à l'argument %d de %qE qui attend un tuple de %d vecteurs" #: config/aarch64/aarch64-sve-builtins.cc:1767 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %d" +#, gcc-internal-format msgid "passing tuple %qT to argument %d of %qE after passing single vector %qT to argument %d" -msgstr "passage de %qT au lieu de %qT attendu à l'argument %d de %qE après passage de %qT à l'argument %d" +msgstr "passage du tuple %qT à l'argument %d de %qE après avoir passé un seul vecteur %qT à l'argument %d" #: config/aarch64/aarch64-sve-builtins.cc:1772 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %d" +#, gcc-internal-format msgid "passing single vector %qT to argument %d of %qE after passing tuple %qT to argument %d" -msgstr "passage de %qT au lieu de %qT attendu à l'argument %d de %qE après passage de %qT à l'argument %d" +msgstr "passage du seul vecteur %qT à l'argument %d de %qE après avoir passé le tuple %qT à l'argument %d" #: config/aarch64/aarch64-sve-builtins.cc:1777 #, gcc-internal-format msgid "passing mismatched tuple types %qT and %qT to arguments %d and %d of %qE" -msgstr "" +msgstr "passage des types de tuples non concordants %qT et %qT aux arguments %d et %d de %qE " #: config/aarch64/aarch64-sve-builtins.cc:1788 #: config/arm/arm-mve-builtins.cc:1104 @@ -38255,16 +38052,14 @@ msgid "%qE has no form that takes %qT arguments" msgstr "%qE n'a pas de forme qui prend des arguments %qT" #: config/aarch64/aarch64-sve-builtins.cc:1849 -#, fuzzy, gcc-internal-format -#| msgid "%qE has no form that takes %qT arguments" +#, gcc-internal-format msgid "%qE has no form that takes %qT and %qT arguments" -msgstr "%qE n'a pas de forme qui prend des arguments %qT" +msgstr "%qE n'a pas de forme qui prend des arguments %qT et %qT" #: config/aarch64/aarch64-sve-builtins.cc:1911 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects %qs or %qs" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an %qs or %qs" -msgstr "passage de %qT à l'argument %d de %qE qui attend %qs ou %qs" +msgstr "passage de %qT à l'argument %d de %qE qui attend un %qs ou %qs" #: config/aarch64/aarch64-sve-builtins.cc:1942 #, gcc-internal-format @@ -38272,16 +38067,14 @@ msgid "passing %qT to argument %d of %qE, which expects a 32-bit or 64-bit integ msgstr "passage de %qT à l'argument %d de %qE qui attend un type entier de 32 ou 64 bits" #: config/aarch64/aarch64-sve-builtins.cc:1961 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit integers" +#, gcc-internal-format msgid "passing %qT and %qT to arguments %d and %d of %qE, which expects a pair of 64-bit integers" -msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'entiers de %d bits" +msgstr "passage de %qT et %qT aux arguments %d et %d de %qE qui attend une paire de vecteurs d'entiers de 64 bits" #: config/aarch64/aarch64-sve-builtins.cc:1985 -#, fuzzy, gcc-internal-format -#| msgid "size mismatch in argument %d of %qE" +#, gcc-internal-format msgid "passing mismatched integer types %qT and %qT to arguments %d and %d of %qE" -msgstr "désaccord de taille dans l'argument %d de %qE" +msgstr "passage des types entiers non concordants %qT et %qT aux arguments %d et %d de %qE" #: config/aarch64/aarch64-sve-builtins.cc:2006 #: config/arm/arm-mve-builtins.cc:1157 @@ -38305,16 +38098,14 @@ msgid "passing %qT to argument %d of %qE, which expects a pointer to 32-bit or 6 msgstr "le passage de %qT à l'argument %d de %qE qui attend un pointeur vers des éléments de 32 ou 64 bits" #: config/aarch64/aarch64-sve-builtins.cc:2068 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuple" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an SVE type rather than a scalar type" -msgstr "passage de %qT à l'argument %d de %qE qui attend un seul vecteur SVE au lieu d'un tuple" +msgstr "passage de %qT à l'argument %d de %qE qui attend un type SVE au lieu d'un type scalaire" #: config/aarch64/aarch64-sve-builtins.cc:2072 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE tuple type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an SVE type" -msgstr "passage de %qT à l'argument %d de %qE qui attend un type tuple SVE" +msgstr "passage de %qT à l'argument %d de %qE qui attend un type SVE" #: config/aarch64/aarch64-sve-builtins.cc:2117 #, gcc-internal-format @@ -38322,10 +38113,9 @@ msgid "passing %qT to argument %d of %qE, which expects a vector of integers" msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'entiers" #: config/aarch64/aarch64-sve-builtins.cc:2147 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE vector type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a 128 bit NEON vector type" -msgstr "passage de %qT à l'argument %d de %qE qui attend un type vectoriel SVE" +msgstr "passage de %qT à l'argument %d de %qE qui attend un type vectoriel NEON 128 bits" #: config/aarch64/aarch64-sve-builtins.cc:2164 #: config/aarch64/aarch64-sve-builtins.cc:2462 @@ -38342,12 +38132,12 @@ msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'élément #: config/aarch64/aarch64-sve-builtins.cc:2227 #, gcc-internal-format msgid "operations on multiple vectors must be predicated by %qs rather than %qs" -msgstr "" +msgstr "les opérations sur des vecteurs multiples doivent être prédiquées par %qs au lieu de %qs" #: config/aarch64/aarch64-sve-builtins.cc:2230 #, gcc-internal-format msgid "operations on single vectors must be predicated by %qs rather than %qs" -msgstr "" +msgstr "les opérations sur des vecteurs simples doivent être prédiquées par %qs au lieu de %qs" #: config/aarch64/aarch64-sve-builtins.cc:2246 #: config/arm/arm-mve-builtins.cc:1248 @@ -38370,10 +38160,9 @@ msgid "passing %qT to argument %d of %qE, but argument %d had type %qT" msgstr "passage de %qT à l'argument %d de %qE mais l'argument %d a le type %qT" #: config/aarch64/aarch64-sve-builtins.cc:2406 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but argument %d had type %qT" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but argument %d was a tuple of %qT" -msgstr "passage de %qT à l'argument %d de %qE mais l'argument %d a le type %qT" +msgstr "passage de %qT à l'argument %d de %qE mais l'argument %d était un tuple de %qT" #: config/aarch64/aarch64-sve-builtins.cc:2430 #: config/arm/arm-mve-builtins.cc:1384 @@ -38382,10 +38171,9 @@ msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit eleme msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'éléments de %d bits" #: config/aarch64/aarch64-sve-builtins.cc:2435 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit elements" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of %d-bit elements" -msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'éléments de %d bits" +msgstr "passage de %qT à l'argument %d de %qE qui attend des vecteurs d'éléments de %d bits" #: config/aarch64/aarch64-sve-builtins.cc:2448 #: config/arm/arm-mve-builtins.cc:1396 @@ -38396,18 +38184,16 @@ msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'entiers s #. Translation note: could also be written "expects a tuple of #. signed integer vectors". #: config/aarch64/aarch64-sve-builtins.cc:2454 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of signed integers" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of signed integers" -msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'entiers signés" +msgstr "passage de %qT à l'argument %d de %qE qui attend des vecteurs d'entiers signés" #. Translation note: could also be written "expects a tuple of #. unsigned integer vectors". #: config/aarch64/aarch64-sve-builtins.cc:2468 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of unsigned integers" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of unsigned integers" -msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'entiers non signés" +msgstr "passage de %qT à l'argument %d de %qE qui attend de vecteurs d'entiers non signés" #: config/aarch64/aarch64-sve-builtins.cc:2488 #: config/arm/arm-mve-builtins.cc:1423 @@ -38434,10 +38220,9 @@ msgid "passing %qT to argument %d of %qE, which expects %qs" msgstr "passage de %qT à l'argument %d de %qE qui attend %qs" #: config/aarch64/aarch64-sve-builtins.cc:2577 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a scalar pointer" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which does not accept scalars for this combination of arguments" -msgstr "passage de %qT à l'argument %d de %qE qui attend un pointeur scalaire" +msgstr "passage de %qT à l'argument %d de %qE qui n'accepte pas de scalaires pour cette combinaison d'arguments" #: config/aarch64/aarch64-sve-builtins.cc:2593 #: config/arm/arm-mve-builtins.cc:1556 @@ -38539,10 +38324,9 @@ msgid "passing %qT to argument %d of %qE, but its %qT form does not accept scala msgstr "passage de %qT à l'argument %d de %qE mais sa forme %qT n'accepte pas de scalaires" #: config/aarch64/aarch64-sve-builtins.cc:3127 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but its %qT form does not accept scalars" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but its %qT form does not accept single vectors" -msgstr "passage de %qT à l'argument %d de %qE mais sa forme %qT n'accepte pas de scalaires" +msgstr "passage de %qT à l'argument %d de %qE mais sa forme %qT n'accepte pas de simples vecteurs" #: config/aarch64/aarch64-sve-builtins.cc:4621 #: config/aarch64/aarch64-sve-builtins.cc:4683 @@ -38553,10 +38337,9 @@ msgid "duplicate definition of %qs" msgstr "définition dupliquée de %qs" #: config/aarch64/aarch64-sve-builtins.cc:4675 -#, fuzzy, gcc-internal-format -#| msgid "%qD is defined with tls model %s" +#, gcc-internal-format msgid "%qs defined without first defining %qs" -msgstr "%qD est défini avec le modèle tls %s" +msgstr "%qs est défini sans définir %qs en premier" #: config/aarch64/aarch64-sve-builtins.cc:4834 #, gcc-internal-format @@ -38640,16 +38423,14 @@ msgid "capture by copy of SVE type %qT" msgstr "capture par copie du type SVE %qT" #: config/aarch64/aarch64.cc:635 -#, fuzzy, gcc-internal-format -#| msgid "third argument to function %qE must be a constant integer" +#, gcc-internal-format msgid "the arguments to %qE must be constant strings" -msgstr "le troisième argument de la fonction %qE doit être une constante entière" +msgstr "les arguments de %qE doivent être des chaînes constantes" #: config/aarch64/aarch64.cc:643 -#, fuzzy, gcc-internal-format -#| msgid "unrecognized string escape" +#, gcc-internal-format msgid "unrecognized state string %qs" -msgstr "échappement de chaîne non reconnu" +msgstr "chaîne d'état %qs non reconnue" #: config/aarch64/aarch64.cc:727 #, gcc-internal-format @@ -38659,19 +38440,17 @@ msgstr "l'attribut %qE ne peut pas être appliqué à un type de fonction SVE" #: config/aarch64/aarch64.cc:754 #, gcc-internal-format msgid "cannot create a new %qs scope since %qs is shared with callers" -msgstr "" +msgstr "impossible de créer la nouvelle portée %qs car %qs est partagée avec des appelants" #: config/aarch64/aarch64.cc:770 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute applies only to functions" +#, gcc-internal-format msgid "%qE attribute applies only to function definitions" -msgstr "l'attribut %qE ne s'applique qu'à des fonctions" +msgstr "l'attribut %qE ne s'applique qu'à des définitions de fonctions" #: config/aarch64/aarch64.cc:816 -#, fuzzy, gcc-internal-format -#| msgid "inconsistent because %qs" +#, gcc-internal-format msgid "inconsistent attributes for state %qs" -msgstr "inconsistant à cause de %qs" +msgstr "attributs inconsistants pour l'état %qs" #: config/aarch64/aarch64.cc:1305 #, gcc-internal-format @@ -38723,10 +38502,9 @@ msgstr "le passage de paramètre pour l'argument de type %qT a changé dans GCC #: config/aarch64/aarch64.cc:6966 config/aarch64/aarch64.cc:7044 #: config/aarch64/aarch64.cc:21189 -#, fuzzy, gcc-internal-format -#| msgid "parameter passing for argument of type %qT changed in GCC 13.1" +#, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 14.1" -msgstr "le passage de paramètre pour l'argument de type %qT a changé dans GCC 13.1" +msgstr "le passage de paramètre pour l'argument de type %qT a changé dans GCC 14.1" #: config/aarch64/aarch64.cc:6976 config/aarch64/aarch64.cc:7053 #: config/aarch64/aarch64.cc:21195 config/arm/arm.cc:7301 @@ -38751,30 +38529,29 @@ msgid "stack probes for SVE frames" msgstr "sondes de pile pour les trames SVE" #: config/aarch64/aarch64.cc:11080 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "calling a streaming function requires the ISA extension %qs" -msgstr "la fonction ACLE %qD requiert l'extension ISA %qs" +msgstr "appeler la fonction de streaming requiert l'extension ISA %qs" #: config/aarch64/aarch64.cc:11089 config/aarch64/aarch64.cc:11093 #, gcc-internal-format msgid "call to a function that shares %qs state from a function that has no %qs state" -msgstr "" +msgstr "appel a une fonction qui partage l'état %qs depuis une fonction qui n'a pas d'état %qs" #: config/aarch64/aarch64.cc:11096 #, gcc-internal-format msgid "call to a function that shares SME state from a function that has no SME state" -msgstr "" +msgstr "appel à une fonction qui partage l'état SME depuis une fonction qui n'a pas d'état SME" #: config/aarch64/aarch64.cc:11154 #, gcc-internal-format msgid "call to a function that shares state other than %qs from a function that has %qs state" -msgstr "" +msgstr "appel à une fonction qui partage un état autre que %qs depuis une fonction qui a l'état %qs" #: config/aarch64/aarch64.cc:11156 #, gcc-internal-format msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA" -msgstr "" +msgstr "utilisez %<__arm_preserves(\"za\")%> si l'appelé préserve ZA" #: config/aarch64/aarch64.cc:17859 #, gcc-internal-format @@ -38834,16 +38611,14 @@ msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>" msgstr "%<-fsanitize=shadow-call-stack%> requiert %<-ffixed-x18%>" #: config/aarch64/aarch64.cc:18237 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "streaming functions require the ISA extension %qs" -msgstr "la fonction ACLE %qD requiert l'extension ISA %qs" +msgstr "les fonctions de streaming requièrent l'extension ISA %qs" #: config/aarch64/aarch64.cc:18239 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "functions with SME state require the ISA extension %qs" -msgstr "la fonction ACLE %qD requiert l'extension ISA %qs" +msgstr "les fonctions avec un état SME requièrent l'extension ISA %qs" #: config/aarch64/aarch64.cc:18333 #, gcc-internal-format @@ -38861,10 +38636,9 @@ msgid "missing cpu name in %<-mcpu=%s%>" msgstr "nom de processeur manquant dans %<-mcpu=%s%>" #: config/aarch64/aarch64.cc:18473 -#, fuzzy, gcc-internal-format -#| msgid "did you mean %<-mcpu=%s%>?" +#, gcc-internal-format msgid "did you mean %<-march=%s%>?" -msgstr "vouliez-vous utiliser %<-mcpu=%s%> ?" +msgstr "vouliez-vous utiliser %<-march=%s%> ?" #: config/aarch64/aarch64.cc:18476 #, gcc-internal-format @@ -38917,10 +38691,9 @@ msgid "unknown value %qs for %<-mtune%>" msgstr "valeur %qs inconnue pour %<-mtune%>" #: config/aarch64/aarch64.cc:18717 -#, fuzzy, gcc-internal-format -#| msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch" +#, gcc-internal-format msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %<%s%> being added" -msgstr "l'option %<-mcpu=%s%> est en conflit avec l'option %<-march=%s%>" +msgstr "l'option %<-mcpu=%s%> est en conflit avec l'option %<-march=%s%> et résulte dans l'ajout des options %<%s%>" #: config/aarch64/aarch64.cc:18773 #, gcc-internal-format @@ -38943,10 +38716,9 @@ msgid "code model %qs not supported in ilp32 mode" msgstr "le modèle de code %qs n'est pas supporté en mode ilp32" #: config/aarch64/aarch64.cc:18954 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "functions with %qs state require the ISA extension %qs" -msgstr "la fonction ACLE %qD requiert l'extension ISA %qs" +msgstr "les fonctions avec l'état %qs requièrent l'extension ISA %qs" #: config/aarch64/aarch64.cc:19057 #, gcc-internal-format @@ -39031,34 +38803,29 @@ msgid "malformed % pragma or attribute" msgstr "le pragma ou l'attribut % est mal composé" #: config/aarch64/aarch64.cc:19668 -#, fuzzy, gcc-internal-format -#| msgid "attribute % specified multiple times" +#, gcc-internal-format msgid "attribute % has multiple values" -msgstr "l'attribut % est spécifié plusieurs fois" +msgstr "l'attribut % a plusieurs valeurs" #: config/aarch64/aarch64.cc:19676 -#, fuzzy, gcc-internal-format -#| msgid "attribute % argument not a string" +#, gcc-internal-format msgid "attribute % argument not a string" -msgstr "l'argument % de l'attribut n'est pas une chaîne" +msgstr "l'argument % de l'attribut n'est pas une chaîne" #: config/aarch64/aarch64.cc:19698 -#, fuzzy, gcc-internal-format -#| msgid "missing value in % pragma or attribute" +#, gcc-internal-format msgid "missing value in % attribute" -msgstr "valeur manquante dans le pragma ou l'attribut %" +msgstr "valeur manquante dans l'attribut %" #: config/aarch64/aarch64.cc:19702 -#, fuzzy, gcc-internal-format -#| msgid "invalid feature modifier %qs of value %qs in % pragma or attribute" +#, gcc-internal-format msgid "invalid feature modifier %qs of value %qs in % attribute" -msgstr "modificateur de fonctionnalité %qs invalide avec la valeur %qs dans le pragma ou l'attribut %" +msgstr "modificateur de fonctionnalité %qs invalide de la valeur %qs dans l'attribut %" #: config/aarch64/aarch64.cc:19708 -#, fuzzy, gcc-internal-format -#| msgid "invalid feature modifier %qs of value %qs in % pragma or attribute" +#, gcc-internal-format msgid "duplicate feature modifier %qs of value %qs in % attribute" -msgstr "modificateur de fonctionnalité %qs invalide avec la valeur %qs dans le pragma ou l'attribut %" +msgstr "modificateur de fonctionnalité %qs dupliqué avec la valeur %qs dans l'attribut %" #: config/aarch64/aarch64.cc:20285 config/i386/i386-features.cc:3531 #: config/i386/i386-features.cc:3800 @@ -39098,10 +38865,9 @@ msgid "unsupported simdlen %wd" msgstr "simdlen %wd non supportée" #: config/aarch64/aarch64.cc:28605 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support return type %qT for % functions" +#, gcc-internal-format msgid "GCC does not currently support return type %qT for simd" -msgstr "GCC ne supporte actuellement pas le type de retour %qT pour les fonctions %" +msgstr "GCC ne supporte actuellement pas le type de retour %qT pour simd" #: config/aarch64/aarch64.cc:28609 config/i386/i386.cc:25115 #, gcc-internal-format @@ -39109,10 +38875,9 @@ msgid "unsupported return type %qT for simd" msgstr "type de retour %qT non supporté pour simd" #: config/aarch64/aarch64.cc:28639 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support argument type %qT for % functions" +#, gcc-internal-format msgid "GCC does not currently support argument type %qT for simd" -msgstr "GCC ne supporte actuellement pas un argument de type %qT pour des fonctions %" +msgstr "GCC ne supporte actuellement pas un argument de type %qT pour simd" #: config/aarch64/aarch64.cc:28643 config/i386/i386.cc:25146 #, gcc-internal-format @@ -39125,32 +38890,29 @@ msgid "GCC does not currently support simdlen %wd for type %qT" msgstr "GCC ne supporte actuellement pas simdlen %wd pour le type %qT" #: config/aarch64/aarch64.cc:28713 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support simdlen %wd for type %qT" +#, gcc-internal-format msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types." -msgstr "GCC ne supporte actuellement pas simdlen %wd pour le type %qT" +msgstr "GCC ne supporte actuellement pas un simdclone avec simdlens %wd et %wd pour ces types." #: config/aarch64/aarch64.cc:28803 -#, fuzzy, gcc-internal-format -#| msgid "type attributes ignored after type is already defined" +#, gcc-internal-format msgid "cannot apply attribute %qs to %q+D after the function has been defined" -msgstr "les attributs de type sont ignorés après que le type ait déjà été défini" +msgstr "impossible d'appliquer l'attribut %qs à %q+D après que la fonction ait été définie" #: config/aarch64/aarch64.cc:28805 -#, fuzzy, gcc-internal-format -#| msgid "%qD defined here" +#, gcc-internal-format msgid "%q+D defined here" -msgstr "%qD défini ici" +msgstr "%q+D défini ici" #: config/aarch64/aarch64.cc:29263 #, gcc-internal-format msgid "non-local gotos in functions with SME state" -msgstr "" +msgstr "goto non locaux dans les fonctions avec l'état SME" #: config/aarch64/aarch64.cc:29558 #, gcc-internal-format msgid "catching non-call exceptions in functions with SME state" -msgstr "" +msgstr "interception des exceptions sans appel dans des fonctions avec l'état SME" #: config/alpha/alpha.cc:420 #, gcc-internal-format @@ -39495,21 +39257,19 @@ msgid "invalid type for % flag output" msgstr "type invalide pour la sortie du fanion %" #: config/arm/aarch-common.cc:765 -#, fuzzy, gcc-internal-format -#| msgid "missing feature modifier in target %s %qs" +#, gcc-internal-format msgid "missing feature or flag for %<%s%>" -msgstr "modificateur de fonctionnalité manquant dans la cible %s %qs" +msgstr "fonctionnalité ou fanion manquant pour %<%s%>" #: config/arm/aarch-common.cc:767 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument %<%s%> for %<-mharden-sls=%>" +#, gcc-internal-format msgid "invalid argument %<%s%> for %<%s%>" -msgstr "argument %<%s%> invalide pour %<-mharden-sls=%>" +msgstr "argument %<%s%> invalide pour %<%s%>" #: config/arm/aarch-common.cc:778 #, gcc-internal-format msgid "argument %<%s%> can only appear alone in %<%s%>" -msgstr "" +msgstr "l'argument %<%s%> peut uniquement apparaître seul dans %<%s%>" #: config/arm/arm-builtins.cc:3125 #, gcc-internal-format, gfc-internal-format @@ -39624,10 +39384,9 @@ msgid "%<#pragma GCC arm%> requires a string parameter" msgstr "%<#pragma GCC arm%> existe une chaîne en paramètre" #: config/arm/arm-c.cc:156 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma GCC arm%> requires a string parameter" +#, gcc-internal-format msgid "%<#pragma GCC arm \"arm_mve.h\"%> requires a boolean parameter" -msgstr "%<#pragma GCC arm%> existe une chaîne en paramètre" +msgstr "%<#pragma GCC arm \"arm_mve.h\"%> exige un paramètre booléen" #: config/arm/arm-c.cc:160 #, gcc-internal-format @@ -39640,34 +39399,29 @@ msgid "this definition requires the MVE ISA extension" msgstr "cette définition requiert l'extension de l'ISA MVE" #: config/arm/arm-mve-builtins.cc:560 -#, fuzzy, gcc-internal-format -#| msgid "you can enable %qs using the command-line option %<-march%>, or by using the % attribute or pragma" +#, gcc-internal-format msgid "you can enable mve.fp by using the command-line option %<-march%>, or by using the % attribute or pragma" -msgstr "vous pouvez activer %qs en utilisant l'option %<-march%> sur la ligne de commande ou en utilisant l'attribut ou le pragma %" +msgstr "vous pouvez activer mve.fp en utilisant l'option %<-march%> sur la ligne de commande ou en utilisant l'attribut ou le pragma %" #: config/arm/arm-mve-builtins.cc:1166 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but %qT is not a valid SVE element type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but %qT is not a valid MVE element type" -msgstr "passage de %qT à l'argument %d de %qE mais %qT n'est pas un type d'élément SVE valable" +msgstr "passage de %qT à l'argument %d de %qE mais %qT n'est pas un type d'élément MVE valable" #: config/arm/arm-mve-builtins.cc:1200 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuple" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a single MVE vector rather than a tuple" -msgstr "passage de %qT à l'argument %d de %qE qui attend un seul vecteur SVE au lieu d'un tuple" +msgstr "passage de %qT à l'argument %d de %qE qui attend un seul vecteur MVE au lieu d'un tuple" #: config/arm/arm-mve-builtins.cc:1220 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE vector type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an MVE vector type" -msgstr "passage de %qT à l'argument %d de %qE qui attend un type vectoriel SVE" +msgstr "passage de %qT à l'argument %d de %qE qui attend un type vectoriel MVE" #: config/arm/arm-mve-builtins.cc:1223 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE tuple type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an MVE tuple type" -msgstr "passage de %qT à l'argument %d de %qE qui attend un type tuple SVE" +msgstr "passage de %qT à l'argument %d de %qE qui attend un type tuple MVE" #: config/arm/arm-mve-builtins.cc:1290 #, gcc-internal-format @@ -40139,10 +39893,9 @@ msgid "%qE attribute only supported for reduced Tiny cores" msgstr "l'attribut %qE n'est supporté que par les cœurs Tiny réduits" #: config/avr/avr.cc:10405 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute address out of range" +#, gcc-internal-format msgid "%qE attribute address out of range 0x%x%s0x%x" -msgstr "l'adresse de l'attribut %qE est hors limites" +msgstr "l'adresse de l'attribut %qE est hors limites 0x%x%s0x%x" #: config/avr/avr.cc:10419 #, gcc-internal-format @@ -40177,10 +39930,9 @@ msgid "pointer targeting address space %qs must be const in %s %q+D" msgstr "un pointeur visant l'espace d'adresses %qs doit être const dans le/la %s %q+D" #: config/avr/avr.cc:10717 -#, fuzzy, gcc-internal-format -#| msgid "variables marked with %qE attribute must be initialized" +#, gcc-internal-format msgid "variable %q+D with attribute %qs must be located in static storage" -msgstr "les variables marquées avec l'attribut %qE doivent être initialisées" +msgstr "la variable %q+D avec l'attribut %qs doit être placée dans le stockage statique" #: config/avr/avr.cc:10769 #, gcc-internal-format @@ -40188,10 +39940,9 @@ msgid "variable %q+D must be const in order to be put into read-only section by msgstr "la variable %q+D doit être « const » pour être placée dans une section en lecture seule à l'aide de %qs" #: config/avr/avr.cc:10930 -#, fuzzy, gcc-internal-format -#| msgid "static IO declaration for %q+D needs an address" +#, gcc-internal-format msgid "static attribute %qs declaration for %q+D needs an address" -msgstr "la déclaration IO statique pour %q+D a besoin d'une adresse" +msgstr "la déclaration de l'attribut statique %qs pour %q+D a besoin d'une adresse" #: config/avr/avr.cc:11019 #, gcc-internal-format @@ -40214,10 +39965,9 @@ msgstr "variable non initialisée %q+D placée dans la zone mémoire du programm #. address attribute are determined by the attribute, not by #. some initializer. #: config/avr/avr.cc:11172 -#, fuzzy, gcc-internal-format -#| msgid "variables marked with %qE attribute must be initialized" +#, gcc-internal-format msgid "variable %q+D with attribute %qs must not have an initializer" -msgstr "les variables marquées avec l'attribut %qE doivent être initialisées" +msgstr "la variable %q+D avec l'attribut %qs ne doit pas avoir d'initialiseur" #: config/avr/avr.cc:11225 #, gcc-internal-format @@ -40393,10 +40143,9 @@ msgid "invalid argument to built-in function" msgstr "argument invalide pour la fonction interne" #: config/bpf/bpf.cc:1019 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument to built-in function %s" +#, gcc-internal-format msgid "invalid built-in function at expansion" -msgstr "argument invalide pour la fonction interne %s" +msgstr "fonction interne invalide durant l'expansion" #: config/c6x/c6x.cc:245 #, gcc-internal-format @@ -40610,10 +40359,9 @@ msgid "stack frame must be smaller than 64K" msgstr "la trame de pile doit être plus petite que 64K" #: config/gcn/gcn.cc:170 -#, fuzzy, gcc-internal-format -#| msgid "%<-msmart%> is incompatible with %<-mhigh-registers%>" +#, gcc-internal-format msgid "%<-mxnack=on%> is incompatible with %<-march=%s%>" -msgstr "%<-msmart%> est incompatible avec %<-mhigh-registers%>" +msgstr "%<-mxnack=on%> est incompatible avec %<-march=%s%>" #: config/gcn/gcn.cc:284 #, gcc-internal-format @@ -40691,28 +40439,24 @@ msgid "%d bytes of gang-private data-share memory exhausted (increase with %<-mg msgstr "%d octets de mémoire de partage de données privées au gang épuisée (augmentez, par exemple, avec %<-mgang-private-size=%d%>)" #: config/gcn/mkoffload.cc:160 -#, fuzzy, gcc-internal-format -#| msgid "deleting file %s: %m" +#, gcc-internal-format msgid "deleting file %qs: %m" -msgstr "suppression du fichier %s: %m" +msgstr "suppression du fichier %qs : %m" #: config/gcn/mkoffload.cc:862 -#, fuzzy, gcc-internal-format -#| msgid "COLLECT_GCC must be set" +#, gcc-internal-format msgid "% must be set" -msgstr "COLLECT_GCC doit être défini" +msgstr "% doit être défini" #: config/gcn/mkoffload.cc:908 -#, fuzzy, gcc-internal-format -#| msgid "offload compiler %s not found" +#, gcc-internal-format msgid "offload compiler %qs not found" -msgstr "le compilateur de déchargement %s n'a pas été trouvé" +msgstr "le compilateur de déchargement %qs n'a pas été trouvé" #: config/gcn/mkoffload.cc:930 -#, fuzzy, gcc-internal-format -#| msgid "unrecognizable argument of option " +#, gcc-internal-format msgid "unrecognizable argument of option %<" -msgstr "argument méconnaissable pour l'option " +msgstr "argument méconnaissable pour l'option %<" #: config/gcn/mkoffload.cc:994 config/nvptx/mkoffload.cc:751 #, gcc-internal-format @@ -40720,16 +40464,14 @@ msgid "either %<-fopenacc%> or %<-fopenmp%> must be set" msgstr "soit %<-fopenacc%> ou soit %<-fopenmp%> doit être défini" #: config/gcn/mkoffload.cc:1039 -#, fuzzy, gcc-internal-format -#| msgid "unhandled expression" +#, gcc-internal-format msgid "unhandled architecture" -msgstr "expression non gérée" +msgstr "architecture non gérée" #: config/gcn/mkoffload.cc:1079 config/gcn/mkoffload.cc:1231 -#, fuzzy, gcc-internal-format -#| msgid "cannot open %s" +#, gcc-internal-format msgid "cannot open %qs" -msgstr "ne peut ouvrir %s" +msgstr "ne peut ouvrir %qs" #: config/gcn/mkoffload.cc:1217 config/nvptx/mkoffload.cc:841 #, gcc-internal-format @@ -41062,22 +40804,22 @@ msgstr "% est déprécié; utilisez plutôt % support will be removed in GCC 15" -msgstr "" +msgstr "le support de %<-mtune=knl%> sera retiré dans GCC 15" #: config/i386/i386-options.cc:2105 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "le support de % sera retiré dans GCC 15" #: config/i386/i386-options.cc:2110 #, gcc-internal-format msgid "%<-mtune=knm%> support will be removed in GCC 15" -msgstr "" +msgstr "le support de %<-mtune=knm%> sera retiré dans GCC 15" #: config/i386/i386-options.cc:2111 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "le support de % sera retiré dans GCC 15" #. rep; movq isn't available in 32-bit code. #: config/i386/i386-options.cc:2138 @@ -41086,16 +40828,14 @@ msgid "%<-mstringop-strategy=rep_8byte%> not supported for 32-bit code" msgstr "%<-mstringop-strategy=rep_8byte%> pas supporté pour du code 32 bits" #: config/i386/i386-options.cc:2143 -#, fuzzy, gcc-internal-format -#| msgid "%<-muintr%> not supported for 32-bit code" +#, gcc-internal-format msgid "%<-mapxf%> is not supported for 32-bit code" -msgstr "%<-muintr%> pas supporté pour du code 32 bits" +msgstr "%<-mapxf%> pas supporté pour du code 32 bits" #: config/i386/i386-options.cc:2145 -#, fuzzy, gcc-internal-format -#| msgid "%<-mlam=%> option: [u48|u57] not supported for 32-bit code" +#, gcc-internal-format msgid "%<-mapx-features=%> option is not supported for 32-bit code" -msgstr "option %<-mlam=%> : [u48|u57] pas supportée pour du code 32 bits" +msgstr "l'option %<-mapx-features=%> n'est pas supportée pour du code 32 bits" #: config/i386/i386-options.cc:2148 #, gcc-internal-format @@ -41135,7 +40875,7 @@ msgstr "%<-mabi=%s%> n'est pas supportée avec %<-fsanitize=thread%>" #: config/i386/i386-options.cc:2196 #, gcc-internal-format msgid "%<-mlam=u48%> is not compatible with Hardware-assisted AddressSanitizer, override to %<-mlam=u57%>" -msgstr "" +msgstr "%<-mlam=u48%> n'est pas compatible avec le Hardware-assisted AddressSanitizer, outrepasser pour %<-mlam=u57%>" #: config/i386/i386-options.cc:2216 config/i386/i386-options.cc:2225 #: config/i386/i386-options.cc:2237 config/i386/i386-options.cc:2248 @@ -41187,22 +40927,22 @@ msgstr "le processeur sélectionné ne supporte pas le jeu d'instructions x86-64 #: config/i386/i386-options.cc:2327 #, gcc-internal-format msgid "%<-march=knl%> support will be removed in GCC 15" -msgstr "" +msgstr "le support de %<-march=knl%> sera retiré dans GCC 15" #: config/i386/i386-options.cc:2328 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "le support de % sera retiré dans GCC 15" #: config/i386/i386-options.cc:2333 #, gcc-internal-format msgid "%<-march=knm%> support will be removed in GCC 15" -msgstr "" +msgstr "le support de %<-march=knm%> sera retiré dans GCC 15" #: config/i386/i386-options.cc:2334 #, gcc-internal-format msgid "% support will be removed in GCC 15" -msgstr "" +msgstr "le support de % sera retiré dans GCC 15" #: config/i386/i386-options.cc:2411 #, gcc-internal-format @@ -41297,7 +41037,7 @@ msgstr "% est ignoré en mode 64 bits" #: config/i386/i386-options.cc:2676 #, gcc-internal-format msgid "%<-mno-evex512%> or %<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10.1-512 is available" -msgstr "" +msgstr "%<-mno-evex512%> ou %<-mno-avx512XXX%> ne peuvent pas désactiver les instructions AVX10 quand AVX10.1-512 est disponible" #. We should not emit 512 bit instructions under AVX10.1-256 #. when EVEX512 is enabled w/o any AVX512 features enabled. @@ -41305,22 +41045,22 @@ msgstr "" #: config/i386/i386-options.cc:2690 #, gcc-internal-format msgid "Using %<-mevex512%> without any AVX512 features enabled together with AVX10.1 only will not enable any AVX512 or AVX10.1-512 features, using 256 as max vector size" -msgstr "" +msgstr "Utiliser %<-mevex512%> sans fonctionnalités AVX512 activée mais avec AVX10.1 va simplement ne pas activer les fonctionnalités AVX512 ou AVX10.1-512, utilise 256 comme taille vectorielle max" #: config/i386/i386-options.cc:2697 config/i386/i386-options.cc:2703 #, gcc-internal-format msgid "Vector size conflicts between AVX10.1 and AVX512, using 512 as max vector size" -msgstr "" +msgstr "Conflit de taille vectorielle entre AVX10.1 et AVX512, utilise 512 comme taille vectorielle max" #: config/i386/i386-options.cc:2711 #, gcc-internal-format msgid "%<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10 is available" -msgstr "" +msgstr "%<-mno-avx512XXX%> ne sait pas désactiver les instructions AVX10 quand AVX10 est disponible" #: config/i386/i386-options.cc:2721 #, gcc-internal-format msgid "%<-mno-avx10.1, -mno-avx10.1-256, -mno-avx10.1-512%> cannot disable AVX512 instructions when %<-mavx512XXX%>" -msgstr "" +msgstr "%<-mno-avx10.1, -mno-avx10.1-256, -mno-avx10.1-512%> ne sait pas désactiver les instructions AVX512 quand %<-mavx512XXX%>" #: config/i386/i386-options.cc:2776 #, gcc-internal-format @@ -41425,7 +41165,7 @@ msgstr "%qs n'est pas un registre de base valable dans %<-mstack-protector-guard #: config/i386/i386-options.cc:3245 #, gcc-internal-format msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line" -msgstr "" +msgstr "%<-fcf-protection=full%> n'est pas activé par %<-fhardened%> car il a été spécifié sur la ligne de commande" #: config/i386/i386-options.cc:3254 #, gcc-internal-format @@ -41670,10 +41410,9 @@ msgid "the ABI of passing C structures with zero-width bit-fields has changed in msgstr "l'ABI pour passer des structures C avec des champs de bits de largeur zéro a changé dans GCC %{12.1%}" #: config/i386/i386.cc:2722 config/i386/i386.cc:4091 config/i386/i386.cc:4101 -#, fuzzy, gcc-internal-format -#| msgid "SSE register return with SSE disabled" +#, gcc-internal-format msgid "SSE register return with SSE2 disabled" -msgstr "retour d'un registre SSE alors que SSE est désactivé" +msgstr "retour d'un registre SSE alors que SSE2 est désactivé" #: config/i386/i386.cc:2724 #, gcc-internal-format @@ -41681,10 +41420,9 @@ msgid "SSE register return with SSE disabled" msgstr "retour d'un registre SSE alors que SSE est désactivé" #: config/i386/i386.cc:2731 -#, fuzzy, gcc-internal-format -#| msgid "SSE register argument with SSE disabled" +#, gcc-internal-format msgid "SSE register argument with SSE2 disabled" -msgstr "argument dans un registre SSE alors que SSE est désactivé" +msgstr "argument dans un registre SSE alors que SSE2 est désactivé" #: config/i386/i386.cc:2733 #, gcc-internal-format @@ -41788,10 +41526,9 @@ msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}" msgstr "l'alignement des champs de %<_Atomic %T%> ont changé dans %{GCC 11.1%}" #: config/i386/i386.cc:22794 -#, fuzzy, gcc-internal-format -#| msgid "no low registers available for popping high registers" +#, gcc-internal-format msgid "no register available for profiling %<-mcmodel=large%s%>" -msgstr "pas de registre bas disponible pour dépiler les registres hauts" +msgstr "pas de registre disponible pour profiler %<-mcmodel=large%s%>" #: config/i386/i386.cc:22890 #, gcc-internal-format @@ -41799,10 +41536,9 @@ msgid "profiling %<-mcmodel=large%> with PIC is not supported" msgstr "le profilage %<-mcmodel=large%> avec PIC n'est pas supporté" #: config/i386/i386.cc:23603 -#, fuzzy, gcc-internal-format -#| msgid "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since GCC V13, be careful of implicit conversion between %<__bf16%> and %; a explicit bitcast may be needed here" +#, gcc-internal-format msgid "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %; an explicit bitcast may be needed here" -msgstr "%<__bfloat16%> est redéfini du typedef % en un réel %<__bf16%> depuis GCC V13, soyez attentif aux conversions implicites entre %<__bf16%> et %; un transtypage binaire explicite pourrait être nécessaire ici" +msgstr "%<__bfloat16%> est redéfini du typedef % en un réel %<__bf16%> depuis GCC 13.1, soyez attentif aux conversions implicites entre %<__bf16%> et %; un transtypage binaire explicite pourrait être nécessaire ici" #: config/i386/i386.cc:25052 #, gcc-internal-format @@ -41911,31 +41647,29 @@ msgid "unknown processor ID %<0x%x%>, some tuning parameters will fall back to d msgstr "ID de processeur %<0x%x%> inconnu, certains réglages vont utiliser la valeur par défaut" #: config/loongarch/loongarch-cpu.cc:141 -#, fuzzy, gcc-internal-format -#| msgid "unknown base architecture %<0x%x%>, %qs failed" +#, gcc-internal-format msgid "unknown native base architecture %<0x%x%>, %qs failed" -msgstr "architecture de base %<0x%x%> inconnue, %qs a échoué" +msgstr "architecture native de base %<0x%x%> inconnue, %qs a échoué" #: config/loongarch/loongarch-cpu.cc:170 -#, fuzzy, gcc-internal-format -#| msgid "unknown FPU type %<0x%x%>, %qs failed" +#, gcc-internal-format msgid "unknown native FPU type %<0x%x%>, %qs failed" -msgstr "type de FPU %<0x%x%> inconnu, %qs a échoué" +msgstr "type de FPU natif %<0x%x%> inconnu, %qs a échoué" #: config/loongarch/loongarch-cpu.cc:177 #, gcc-internal-format msgid "floating-point unit %qs differs from PRID preset %qs" -msgstr "" +msgstr "l'unité en virgule flottante %qs diffère de la prédéfinition PRID %qs" #: config/loongarch/loongarch-cpu.cc:201 #, gcc-internal-format msgid "unknown SIMD extension (%qs disabled while %qs is enabled), disabling SIMD" -msgstr "" +msgstr "extension SIMD inconnue (%qs désactivé tandis que %qs est activé), désactivation de SIMD" #: config/loongarch/loongarch-cpu.cc:239 #, gcc-internal-format msgid "detected base architecture %qs, but some of its features are not detected; the detected base architecture may be unreliable, only detected features will be enabled" -msgstr "" +msgstr "l'architecture de base %qs est détectée mais certaines de ses fonctionnalités ne sont pas détectées ; l'architecture de base détectée pourrait ne pas être fiable, seules les fonctionnalités détectées seront activées" #: config/loongarch/loongarch-opts.cc:225 #, gcc-internal-format @@ -41956,18 +41690,17 @@ msgstr "%qs ne fonctionne pas sur un compilateur croisé" #: config/loongarch/loongarch-opts.cc:365 #, gcc-internal-format msgid "enabing %qs promotes %<%s%s%> to %<%s%s%>" -msgstr "" +msgstr "l'activation de %qs promeut %<%s%s%> vers %<%s%s%>" #: config/loongarch/loongarch-opts.cc:377 #, gcc-internal-format msgid "%qs is disabled by %<-m%s%>, because it requires %<%s%s%>" -msgstr "" +msgstr "%qs est désactivé par %<-m%s%> car il requiert %<%s%s%>" #: config/loongarch/loongarch-opts.cc:389 -#, fuzzy, gcc-internal-format -#| msgid "switch %<-mcpu=%s%> conflicts with switch %<-march=%s%>" +#, gcc-internal-format msgid "%<-m%s=%s%> conflicts with %qs, which requires %<%s%s%>" -msgstr "l'option %<-mcpu=%s%> est en conflit avec l'option %<-march=%s%>" +msgstr "%<-m%s=%s%> est en conflit avec %qs qui requiert %<%s%s%>" #: config/loongarch/loongarch-opts.cc:433 #, gcc-internal-format @@ -42187,10 +41920,9 @@ msgid "%qE attribute requires a string argument" msgstr "l'attribut %qE requiert une chaîne comme argument" #: config/mips/mips.cc:1340 -#, fuzzy, gcc-internal-format -#| msgid "argument to %qE attribute is neither zero, nor one" +#, gcc-internal-format msgid "argument to %qE attribute is neither no, pcrel nor yes" -msgstr "l'argument de l'attribut %qE n'est ni zéro ni un" +msgstr "l'argument de l'attribut %qE n'est ni no, pcrel ou yes" #: config/mips/mips.cc:1506 config/mips/mips.cc:1510 #, gcc-internal-format @@ -42285,10 +42017,9 @@ msgid "MSA MIPS16 code" msgstr "code MIPS16 MSA" #: config/mips/mips.cc:20067 -#, fuzzy, gcc-internal-format -#| msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" +#, gcc-internal-format msgid "MIPS16 requires %<-mexplicit-relocs%>" -msgstr "%<-mno-gpopt%> à besoin de %<-mexplicit-relocs%>" +msgstr "MIPS16 requiert %<-mexplicit-relocs%>" #: config/mips/mips.cc:20258 config/mips/mips.cc:20263 #: config/mips/mips.cc:20353 config/mips/mips.cc:20355 @@ -43154,10 +42885,9 @@ msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-mi msgstr "la version PTX (%<-mptx%>) doit être au moins %s pour supporter le %<-misa%> demandé (sm_%s)" #: config/nvptx/nvptx.cc:340 -#, fuzzy, gcc-internal-format -#| msgid "multiple %<-mcpu=%> options specified" +#, gcc-internal-format msgid "%<-march=%> must be specified" -msgstr "l'option %<-mcpu=%> a été spécifiée plusieurs fois" +msgstr "%<-march=%> doit être spécifié" #: config/nvptx/nvptx.cc:363 #, gcc-internal-format @@ -43334,10 +43064,9 @@ msgid "%<#pragma riscv intrinsic%> requires a string parameter" msgstr "%<#pragma riscv intrinsic%> existe une chaîne en paramètre" #: config/riscv/riscv-c.cc:203 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma riscv intrinsic%> option %qs needs 'V' extension enabled" +#, gcc-internal-format msgid "%<#pragma riscv intrinsic%> option %qs needs 'V' or 'XTHEADVECTOR' extension enabled" -msgstr "l'option %<#pragma riscv intrinsic%> %qs a besoin que l'extension « V » soit activée" +msgstr "l'option %<#pragma riscv intrinsic%> %qs a besoin que l'extension « V » ou « XTHEADVECTOR » soit activée" #: config/riscv/riscv-c.cc:211 #, gcc-internal-format @@ -43347,68 +43076,62 @@ msgstr "option %qs inconnue pour %<#pragma riscv intrinsic%>" #: config/riscv/riscv-target-attr.cc:120 #, gcc-internal-format msgid "unexpected arch for % attribute: must start with + or rv" -msgstr "" +msgstr "architecture inattendue pour l'attribut % : doit commencer par + ou rv" #: config/riscv/riscv-target-attr.cc:132 #, gcc-internal-format msgid "unexpected arch for % attribute: bad string found %<%s%>" -msgstr "" +msgstr "architecture inattendue pour l'attribut % : mauvaise chaîne %<%s%> rencontrée" #: config/riscv/riscv-target-attr.cc:156 #, gcc-internal-format msgid "% attribute: arch appears more than once" -msgstr "" +msgstr "pour l'attribut % : l'architecture apparaît plusieurs fois" #: config/riscv/riscv-target-attr.cc:167 #, gcc-internal-format msgid "% attribute: cpu appears more than once" -msgstr "" +msgstr "pour l'attribut % : le cpu apparaît plusieurs fois" #: config/riscv/riscv-target-attr.cc:174 #, gcc-internal-format msgid "% attribute: unknown CPU %qs" -msgstr "" +msgstr "pour l'attribut % : CPU %qs inconnu" #: config/riscv/riscv-target-attr.cc:195 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute: tune appears more than once" -msgstr "l'attribut cible n'est pas supporté sur cette machine" +msgstr "pour l'attribut % : TUNE apparaît plusieurs fois" #: config/riscv/riscv-target-attr.cc:201 #, gcc-internal-format msgid "% attribute: unknown TUNE %qs" -msgstr "" +msgstr "pour l'attribut % : TUNE %qs inconnu" #: config/riscv/riscv-target-attr.cc:240 -#, fuzzy, gcc-internal-format -#| msgid "malformed % pragma or attribute" +#, gcc-internal-format msgid "malformed % attribute" -msgstr "le pragma ou l'attribut % est mal composé" +msgstr "l'attribut % est mal composé" #: config/riscv/riscv-target-attr.cc:254 -#, fuzzy, gcc-internal-format -#| msgid "pragma or attribute % does not accept an argument" +#, gcc-internal-format msgid "attribute % does not accept an argument" -msgstr "le pragma ou l'attribut % n'accepte pas d'argument" +msgstr "l'attribut % n'accepte pas d'argument" #: config/riscv/riscv-target-attr.cc:271 -#, fuzzy, gcc-internal-format -#| msgid "unknown attribute %qs" +#, gcc-internal-format msgid "Got unknown attribute %" -msgstr "attribut %qs inconnu" +msgstr "attribut % inconnu" #: config/riscv/riscv-target-attr.cc:352 -#, fuzzy, gcc-internal-format -#| msgid "malformed % pragma or attribute" +#, gcc-internal-format msgid "malformed % attribute" -msgstr "le pragma ou l'attribut % est mal composé" +msgstr "l'attribut % est mal composé" #: config/riscv/riscv-vector-builtins.cc:4239 -#, fuzzy, gcc-internal-format -#| msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]" +#, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd] or %wd" -msgstr "passage de %wd à l'argument %d de %qE qui attend une valeur dans la plage [%wd, %wd]" +msgstr "passage de %wd à l'argument %d de %qE qui attend une valeur dans la plage [%wd, %wd] ou %wd" #: config/riscv/riscv-vector-builtins.cc:4435 #, gcc-internal-format @@ -43461,10 +43184,9 @@ msgid "capture by copy of RVV type %qT" msgstr "capture par copie du type RVV %qT" #: config/riscv/riscv-vector-builtins.cc:4633 -#, fuzzy, gcc-internal-format -#| msgid "no matching function for call to %<%s(%A)%>" +#, gcc-internal-format msgid "no matching function call to %qE with empty arguments" -msgstr "pas de fonction concordante pour l'appel de %<%s(%A)%>" +msgstr "pas d'appel de fonction concordant pour %qE avec des arguments vides" #: config/riscv/riscv.cc:647 #, gcc-internal-format @@ -43487,10 +43209,9 @@ msgid "ABI for flattened struct with zero-length bit-fields changed in GCC 10" msgstr "l'ABI pour des structures aplaties avec un champ de bits d'une taille non nulle a changé dans GCC 10" #: config/riscv/riscv.cc:5237 -#, fuzzy, gcc-internal-format -#| msgid "SVE type %qT cannot be passed to an unprototyped function" +#, gcc-internal-format msgid "RVV type %qT cannot be passed to an unprototyped function" -msgstr "le type SVE %qT ne peut pas être passé en argument à une fonction sans prototype" +msgstr "le type RVV %qT ne peut pas être passé en argument à une fonction sans prototype" #: config/riscv/riscv.cc:5515 #, gcc-internal-format @@ -43505,19 +43226,17 @@ msgstr "%<-mdiv%> requiert %<-march%> pour incorporer l'extension %" #: config/riscv/riscv.cc:8917 #, gcc-internal-format msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension" -msgstr "" +msgstr "Le GCC RISC-V actuel ne supporte pas un VLEN plus grand que 4096 bits pour l'extension « V »" #: config/riscv/riscv.cc:8923 -#, fuzzy, gcc-internal-format -#| msgid "target CPU does not support ARM mode" +#, gcc-internal-format msgid "Current RISC-V GCC does not support RVV in big-endian mode" -msgstr "le processeur cible ne supporte pas ARM" +msgstr "Le GCC RISC-V actuel ne supporte pas RVV en mode gros boutiste" #: config/riscv/riscv.cc:8949 config/riscv/riscv.cc:8952 -#, fuzzy, gcc-internal-format -#| msgid "code model %qs with %<-f%s%>" +#, gcc-internal-format msgid "code model %qs with %qs" -msgstr "modèle de code %qs avec %<-f%s%>" +msgstr "modèle de code %qs avec %qs" #: config/riscv/riscv.cc:8981 #, gcc-internal-format @@ -43530,16 +43249,14 @@ msgid "rv32e requires ilp32e ABI" msgstr "rv32e requiert l'ABI ilp32e" #: config/riscv/riscv.cc:8990 -#, fuzzy, gcc-internal-format -#| msgid "rv32e requires ilp32e ABI" +#, gcc-internal-format msgid "rv64e requires lp64e ABI" -msgstr "rv32e requiert l'ABI ilp32e" +msgstr "rv64e requiert l'ABI lp64e" #: config/riscv/riscv.cc:8997 -#, fuzzy, gcc-internal-format -#| msgid "z*inx requires ABI ilp32, ilp32e or lp64" +#, gcc-internal-format msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e" -msgstr "z*inx requiert l'ABI ilp32, ilp32e ou lp64" +msgstr "z*inx requiert l'ABI ilp32, ilp32e, lp64 ou lp64e" #: config/riscv/riscv.cc:9001 #, gcc-internal-format @@ -44455,28 +44172,24 @@ msgid "value %qs is not supported by attribute %" msgstr "la valeur %qs n'est pas supportée par l'attribut %" #: config/s390/s390.cc:17531 -#, fuzzy, gcc-internal-format -#| msgid "invalid constraints" +#, gcc-internal-format msgid "invalid cc output constraint: %qs" -msgstr "contraintes invalides" +msgstr "contrainte de sortie cc invalide : %qs" #: config/s390/s390.cc:17536 -#, fuzzy, gcc-internal-format -#| msgid "double constants not supported" +#, gcc-internal-format msgid "multiple cc output constraints not supported" -msgstr "constantes doubles non supportées" +msgstr "contraintes de sortie cc multiples non supportées" #: config/s390/s390.cc:17541 -#, fuzzy, gcc-internal-format -#| msgid "% specifier for variable %qE conflicts with % clobber list" +#, gcc-internal-format msgid "% specifier for cc output conflicts with % clobber list" -msgstr "le spécificateur % pour la variable %qE est en conflit avec la liste d'écrasement de %" +msgstr "le spécificateur % pour la sortie de cc est en conflit avec la liste d'écrasement de %" #: config/s390/s390.cc:17547 -#, fuzzy, gcc-internal-format -#| msgid "invalid type for pointer diff" +#, gcc-internal-format msgid "invalid type for cc output constraint" -msgstr "type invalide pour le diff pointeur" +msgstr "type invalide pour la contrainte de sortie de cc" #: config/sh/sh.cc:936 #, gcc-internal-format @@ -45039,10 +44752,9 @@ msgid "declaration of %q+D shadows a built-in function" msgstr "la déclaration de %q+D masque une fonction interne" #: c/c-decl.cc:2153 -#, fuzzy, gcc-internal-format -#| msgid "redeclaration of enumerator %q+D" +#, gcc-internal-format msgid "conflicting redeclaration of enumerator %q+D" -msgstr "redéclaration de l'énumération %q+D" +msgstr "redéclaration de l'énumération %q+D conflictuelle" #: c/c-decl.cc:2160 #, gcc-internal-format @@ -45292,7 +45004,7 @@ msgstr "saut dans la portée de l'identificateur avec un type modifié par une v #: c/c-decl.cc:4093 #, gcc-internal-format msgid "jump skips OpenMP % allocation" -msgstr "" +msgstr "le saut passe outre l'allocation OpenMP %" #: c/c-decl.cc:4096 #, gcc-internal-format @@ -45325,10 +45037,9 @@ msgid "traditional C lacks a separate namespace for labels, identifier %qE confl msgstr "le C traditionnel n'a pas d'espace de noms séparé pour les étiquettes, l'identificateur %qE est en conflit" #: c/c-decl.cc:4379 -#, fuzzy, gcc-internal-format -#| msgid "switch jumps over variable initialization" +#, gcc-internal-format msgid "switch jumps over OpenMP % allocation" -msgstr "le « switch » passe outre l'initialisation d'une variable" +msgstr "le « switch » passe outre l'allocation OpenMP %" #: c/c-decl.cc:4385 #, gcc-internal-format @@ -45498,10 +45209,9 @@ msgid "%<[*]%> not allowed in other than function prototype scope" msgstr "%<[*]%> n'est pas permis ailleurs que dans la portée du prototype d'une fonction" #: c/c-decl.cc:5475 cp/decl2.cc:1852 cp/name-lookup.cc:8767 -#, fuzzy, gcc-internal-format -#| msgid "% not allowed to be specified in this context" +#, gcc-internal-format msgid "% not allowed to be specified in this context" -msgstr "% ne peut pas être spécifié dans ce contexte" +msgstr "% ne peut pas être spécifié dans ce contexte" #: c/c-decl.cc:5555 #, gcc-internal-format @@ -46126,10 +45836,9 @@ msgid "ISO C90 does not support %<_Noreturn%>" msgstr "le C90 ISO ne supporte pas %<_Noreturn%>" #: c/c-decl.cc:8204 -#, fuzzy, gcc-internal-format -#| msgid "variable previously declared % redeclared %" +#, gcc-internal-format msgid "function previously declared % redeclared %" -msgstr "une variable précédemment déclarée % est redéclarée %" +msgstr "une fonction précédemment déclarée % est redéclarée %" #: c/c-decl.cc:8222 #, gcc-internal-format @@ -46338,10 +46047,9 @@ msgid "flexible array member in a struct with no named members" msgstr "tableau flexible comme membre d'une structure sans aucun membre nommé" #: c/c-decl.cc:9519 -#, fuzzy, gcc-internal-format -#| msgid "flexible array member not at end of struct" +#, gcc-internal-format msgid "structure containing a flexible array member is not at the end of another structure" -msgstr "le tableau flexible n'est pas le dernier membre à la fin de la structure" +msgstr "la structure contenant un membre tableau flexible n'est pas le dernier membre à la fin d'une autre structure" #: c/c-decl.cc:9542 #, gcc-internal-format @@ -46359,16 +46067,14 @@ msgid "union cannot be made transparent" msgstr "une union ne peut pas être rendue transparente" #: c/c-decl.cc:9686 -#, fuzzy, gcc-internal-format -#| msgid "redefinition of typedef %q+D with variably modified type" +#, gcc-internal-format msgid "redefinition of struct or union %qT with variably modified type" -msgstr "redéfinition du typedef %q+D avec un type modifié par une variable" +msgstr "redéfinition d'une struct ou union %qT avec un type modifié par une variable" #: c/c-decl.cc:9689 -#, fuzzy, gcc-internal-format -#| msgid "redefinition of %" +#, gcc-internal-format msgid "redefinition of struct or union %qT" -msgstr "redéfinition de %" +msgstr "redéfinition d'une struct ou union %qT" #: c/c-decl.cc:9852 #, gcc-internal-format @@ -46401,10 +46107,9 @@ msgid "enumeration values exceed range of %qs" msgstr "les valeurs de l'énumération excèdent la plage de %qs" #: c/c-decl.cc:10133 -#, fuzzy, gcc-internal-format -#| msgid "nested redefinition of %" +#, gcc-internal-format msgid "conflicting redefinition of enum %qT" -msgstr "redéfinition imbriquée de %" +msgstr "redéfinition de enum %qT conflictuelle" #: c/c-decl.cc:10165 c/c-decl.cc:10181 #, gcc-internal-format @@ -46432,10 +46137,9 @@ msgid "enumerator value outside the range of %qs" msgstr "la valeur de l'énumération est en dehors de la plage de %qs" #: c/c-decl.cc:10241 -#, fuzzy, gcc-internal-format -#| msgid "ISO C restricts enumerator values to range of % before C2X" +#, gcc-internal-format msgid "ISO C restricts enumerator values to range of % before C23" -msgstr "le C ISO restreint les valeurs de l'énumérateur à la plage d'un % avant C2X" +msgstr "le C ISO restreint les valeurs de l'énumérateur à la plage d'un % avant C23" #: c/c-decl.cc:10442 cp/decl.cc:5981 cp/decl.cc:17785 #, gcc-internal-format @@ -46498,10 +46202,9 @@ msgid "traditional C rejects ISO C style function definitions" msgstr "le C traditionnel rejette les définitions de fonctions de style C ISO" #: c/c-decl.cc:10696 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support omitting parameter names in function definitions before C2X" +#, gcc-internal-format msgid "ISO C does not support omitting parameter names in function definitions before C23" -msgstr "le C ISO ne supporte pas l'omission des noms des paramètres dans les définitions de fonctions avant C2X" +msgstr "le C ISO ne supporte pas l'omission des noms des paramètres dans les définitions de fonctions avant C23" #: c/c-decl.cc:10736 c/c-decl.cc:10740 #, gcc-internal-format @@ -46706,10 +46409,9 @@ msgid "ISO C90 does not support boolean types" msgstr "le C90 ISO ne supporte pas les types booléens" #: c/c-decl.cc:12451 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support the %<_Float%d%s%> type" +#, gcc-internal-format msgid "ISO C does not support the %<_Float%d%s%> type before C23" -msgstr "le C ISO ne supporte pas le type %<_Float%d%s%>" +msgstr "le C ISO ne supporte pas le type %<_Float%d%s%> avant C23" #: c/c-decl.cc:12502 cp/parser.cc:20288 #, gcc-internal-format @@ -46717,10 +46419,9 @@ msgid "%<_Float%d%s%> is not supported on this target" msgstr "%<_Float%d%s%> n'est pas supporté sur cette cible" #: c/c-decl.cc:12573 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support decimal floating-point before C2X" +#, gcc-internal-format msgid "ISO C does not support decimal floating-point before C23" -msgstr "le C ISO ne supporte pas les virgules flottantes décimales avant C2X" +msgstr "le C ISO ne supporte pas les virgules flottantes décimales avant C23" #: c/c-decl.cc:12597 c/c-decl.cc:12974 c/c-parser.cc:10628 #, gcc-internal-format @@ -46733,21 +46434,19 @@ msgid "ISO C does not support fixed-point types" msgstr "le C ISO ne supporte pas les types en virgule fixe" #: c/c-decl.cc:12628 -#, fuzzy, gcc-internal-format -#| msgid "case label is not an integer constant expression" +#, gcc-internal-format msgid "%<_BitInt%> argument is not an integer constant expression" -msgstr "l'étiquette du « case » doit être une expression constante entière" +msgstr "l'argument %<_BitInt%> n'est pas une expression constante entière" #: c/c-decl.cc:12634 -#, fuzzy, gcc-internal-format -#| msgid "enumerator value for %qE is not an integer constant expression" +#, gcc-internal-format msgid "%<_BitInt%> argument %qE is not a positive integer constant expression" -msgstr "la valeur de l'énumérateur pour %qE n'est pas une expression constante entière" +msgstr "l'argument %<_BitInt%> %qE n'est pas une expression constante entière positive" #: c/c-decl.cc:12641 #, gcc-internal-format msgid "%<_BitInt%> argument %qE is larger than % %qd" -msgstr "" +msgstr "l'argument %<_BitInt%> %qE est plus grand que % %qd" #: c/c-decl.cc:12689 #, gcc-internal-format @@ -46847,10 +46546,9 @@ msgid "ISO C does not support plain % meaning %" msgstr "le C ISO ne supporte pas un simple % signifiant %" #: c/c-decl.cc:12997 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support % type deduction before C2X" +#, gcc-internal-format msgid "ISO C does not support % type deduction before C23" -msgstr "le C ISO ne supporte pas la déduction de type avec % avant C2X" +msgstr "le C ISO ne supporte pas la déduction de type avec % avant C23" #: c/c-decl.cc:13026 #, gcc-internal-format @@ -46863,16 +46561,14 @@ msgid "ISO C does not support complex integer types" msgstr "le C ISO interdit les types entiers complexes" #: c/c-decl.cc:13237 -#, fuzzy, gcc-internal-format -#| msgid "Fixed line length must be at least seven" +#, gcc-internal-format msgid "% argument must be at least 2" -msgstr "La longueur de ligne fixe doit être au moins sept" +msgstr "l'argument de % doit être au moins 2" #: c/c-decl.cc:13246 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ does not support %<__int%d%> for %qs" +#, gcc-internal-format msgid "ISO C does not support %<%s_BitInt(%d)%> before C23" -msgstr "le C++ ISO ne supporte pas %<__int%d%> pour %qs" +msgstr "le C ISO ne supporte pas %<%s_BitInt(%d)%> avant C23" #: c/c-decl.cc:13545 cp/semantics.cc:6316 #, gcc-internal-format @@ -47159,10 +46855,9 @@ msgid "%<__GIMPLE%> only valid with %<-fgimple%>" msgstr "%<__GIMPLE%> uniquement valable avec %<-fgimple%>" #: c/c-parser.cc:3699 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support specifying % underlying types before C2X" +#, gcc-internal-format msgid "ISO C does not support specifying % underlying types before C23" -msgstr "le C ISO ne supporte pas de spécifier les types sous-jacents de % avant C2X" +msgstr "le C ISO ne supporte pas de spécifier les types sous-jacents de % avant C23" #: c/c-parser.cc:3708 #, gcc-internal-format @@ -47269,10 +46964,9 @@ msgid "expected identifier or %<(%>" msgstr "identificateur ou %<(%> attendu" #: c/c-parser.cc:4920 -#, fuzzy, gcc-internal-format -#| msgid "ISO C requires a named argument before %<...%> before C2X" +#, gcc-internal-format msgid "ISO C requires a named argument before %<...%> before C23" -msgstr "le C ISO requiert un argument nommé devant %<...%> avant C2X" +msgstr "le C ISO requiert un argument nommé devant %<...%> avant C23" #: c/c-parser.cc:5045 #, gcc-internal-format @@ -47305,10 +46999,9 @@ msgid "%qE attribute does not take any arguments" msgstr "l'attribut %qE ne prend pas d'argument" #: c/c-parser.cc:5893 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support %<[[]]%> attributes before C2X" +#, gcc-internal-format msgid "ISO C does not support %<[[]]%> attributes before C23" -msgstr "le C ISO ne supporte pas les attributs %<[[]]%> avant C2X" +msgstr "le C ISO ne supporte pas les attributs %<[[]]%> avant C23" #: c/c-parser.cc:6106 c/c-parser.cc:6169 c/c-typeck.cc:8822 #, gcc-internal-format @@ -47316,10 +47009,9 @@ msgid "variable-sized object may not be initialized except with an empty initial msgstr "un objet de taille variable ne peut pas être initialisé excepté avec un initialiseur vide" #: c/c-parser.cc:6163 -#, fuzzy, gcc-internal-format -#| msgid "ISO C forbids empty initializer braces before C2X" +#, gcc-internal-format msgid "ISO C forbids empty initializer braces before C23" -msgstr "le C ISO interdit d'initialiser avec des accolades vides avant C2X" +msgstr "le C ISO interdit d'initialiser avec des accolades vides avant C23" #: c/c-parser.cc:6227 #, gcc-internal-format @@ -47342,22 +47034,19 @@ msgid "obsolete use of designated initializer without %<=%>" msgstr "utilisation obsolète d'une initialisation désignée sans %<=%>" #: c/c-parser.cc:6567 cp/parser.cc:13308 -#, fuzzy, gcc-internal-format -#| msgid "no valid clauses specified in %<#pragma acc declare%>" +#, gcc-internal-format msgid "inner loops must be perfectly nested in %<#pragma acc loop%>" -msgstr "pas de clause valide spécifiée dans %<#pragma acc declare%>" +msgstr "les boucles internes doivent être parfaitement imbriquées dans %<#pragma acc loop%>" #: c/c-parser.cc:6574 cp/parser.cc:13315 -#, fuzzy, gcc-internal-format -#| msgid "% region must be closely nested inside a loop region with an % clause" +#, gcc-internal-format msgid "inner loops must be perfectly nested with % clause" -msgstr "une région % doit être étroitement imbriquée à l'intérieur d'une région de boucle avec la clause %" +msgstr "les boucles internes doivent être parfaitement imbriquées avec la clause %" #: c/c-parser.cc:6581 cp/parser.cc:13322 -#, fuzzy, gcc-internal-format -#| msgid "% clause must not be used together with % clause" +#, gcc-internal-format msgid "inner loops must be perfectly nested with % % clause" -msgstr "la clause % ne doit pas être utilisée avec la clause %" +msgstr "les boucles internes doivent être parfaitement imbriquées avec la clause % %" #: c/c-parser.cc:6638 c/c-parser.cc:6793 cp/parser.cc:12240 cp/parser.cc:12390 #: cp/parser.cc:48555 @@ -47366,17 +47055,15 @@ msgid "mixing OpenMP directives with attribute and pragma syntax on the same sta msgstr "mélange de directives OpenMP avec des attributs et la syntaxe pragma sur la même instruction" #: c/c-parser.cc:6646 cp/parser.cc:12248 -#, fuzzy, gcc-internal-format -#| msgid "% attribute requires argument" +#, gcc-internal-format msgid "OpenMP % attribute on a statement" -msgstr "l'attribut % requiert un argument" +msgstr "attribut OpenMP % sur une instruction" #: c/c-parser.cc:6670 c/c-parser.cc:6889 c/c-parser.cc:25015 cp/parser.cc:12272 #: cp/parser.cc:48535 cp/parser.cc:48675 -#, fuzzy, gcc-internal-format -#| msgid "unknown OpenMP directive name in %qs clause argument" +#, gcc-internal-format msgid "unknown OpenMP directive name in %qs attribute argument" -msgstr "nom de directive OpenMP inconnue dans l'argument de la clause %qs" +msgstr "nom de directive OpenMP inconnue dans l'argument de l'attribut %qs" #: c/c-parser.cc:6762 cp/parser.cc:12359 #, gcc-internal-format @@ -47482,7 +47169,7 @@ msgstr "des accolades explicites sont suggérées pour éviter toute ambiguïté #: c/c-parser.cc:8122 c/c-parser.cc:8187 c/c-parser.cc:8306 cp/parser.cc:14614 #, gcc-internal-format msgid "loop not permitted in intervening code in OpenMP loop body" -msgstr "" +msgstr "boucle par permise dans le code intervenant dans le corps d'une boucle OpenMP" #: c/c-parser.cc:8195 #, gcc-internal-format @@ -47845,16 +47532,14 @@ msgid "wrong number of arguments to %<__builtin_shuffle%>" msgstr "mauvais nombre d'arguments pour %<__builtin_shuffle%>" #: c/c-parser.cc:11851 -#, fuzzy, gcc-internal-format -#| msgid "wrong number of arguments" +#, gcc-internal-format msgid "wrong number of arguments to %qs" -msgstr "nombre d'arguments erroné" +msgstr "nombre d'arguments erroné pour %qs" #: c/c-parser.cc:11860 -#, fuzzy, gcc-internal-format -#| msgid "%qD does not have integral type" +#, gcc-internal-format msgid "%qs operand not an integral type" -msgstr "%qD n'a pas un type entier" +msgstr "l'opérande %qs n'est pas un type intégral" #: c/c-parser.cc:12123 cp/parser.cc:6134 #, gcc-internal-format @@ -47862,10 +47547,9 @@ msgid "% may only be used in OpenMP % clause" msgstr "% peut uniquement être utilisé dans la clause OpenMP %" #: c/c-parser.cc:12133 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support %qs before C2X" +#, gcc-internal-format msgid "ISO C does not support %qs before C23" -msgstr "le C ISO ne supporte pas %qs avant C2X" +msgstr "le C ISO ne supporte pas %qs avant C23" #: c/c-parser.cc:12221 #, gcc-internal-format @@ -47898,10 +47582,9 @@ msgid "ISO C90 forbids compound literals" msgstr "le C90 ISO interdit les littéraux composés" #: c/c-parser.cc:12284 -#, fuzzy, gcc-internal-format -#| msgid "ISO C forbids storage class specifiers in compound literals before C2X" +#, gcc-internal-format msgid "ISO C forbids storage class specifiers in compound literals before C23" -msgstr "le C ISO interdit les spécificateurs de classe de stockage dans les littéraux composés avant C2X" +msgstr "le C ISO interdit les spécificateurs de classe de stockage dans les littéraux composés avant C23" #: c/c-parser.cc:12298 #, gcc-internal-format @@ -47971,7 +47654,7 @@ msgstr "la fonction de valeur absolue %qD reçoit un argument de type %qT mais e #: c/c-parser.cc:12606 cp/parser.cc:8164 #, gcc-internal-format msgid "calls to the OpenMP runtime API are not permitted in intervening code" -msgstr "" +msgstr "les appels à l'API d'exécution de OpenMP ne sont pas permises dans du code intervenant" #: c/c-parser.cc:12980 #, gcc-internal-format @@ -48051,7 +47734,7 @@ msgstr "%<#pragma GCC unroll%> requiert une expression d'affectation qui est év #: c/c-parser.cc:14470 cp/parser.cc:50733 #, gcc-internal-format msgid "intervening code must not contain OpenMP directives" -msgstr "" +msgstr "du code intervenant ne peut pas contenir des directives OpenMP" #: c/c-parser.cc:14490 c/c-parser.cc:23558 c/c-parser.cc:23867 #: c/c-parser.cc:23930 c/c-parser.cc:24040 cp/parser.cc:46383 @@ -48142,10 +47825,9 @@ msgid "expected %, %, % or %" msgstr "%, %, % ou % attendu" #: c/c-parser.cc:15925 cp/parser.cc:39100 -#, fuzzy, gcc-internal-format -#| msgid "expected goto expression" +#, gcc-internal-format msgid "expected constant logical expression" -msgstr "expression « goto » attendue" +msgstr "expression logique constante attendue" #: c/c-parser.cc:16002 cp/parser.cc:39182 #, gcc-internal-format @@ -48217,10 +47899,9 @@ msgid "expected %, %, %, %, %, %, %, %, %, %, % ou % attendu" #: c/c-parser.cc:16552 -#, fuzzy, gcc-internal-format -#| msgid "expected %, % or %" +#, gcc-internal-format msgid "expected %, %, % or %" -msgstr "%, % ou % attendu" +msgstr "%, %, % ou % attendu" #: c/c-parser.cc:16629 cp/parser.cc:39718 #, gcc-internal-format @@ -48259,10 +47940,9 @@ msgid "% argument needs positive integral constant" msgstr "l'argument % a besoin d'une constante entière positive" #: c/c-parser.cc:17059 cp/parser.cc:41829 -#, fuzzy, gcc-internal-format -#| msgid "too many % clauses" +#, gcc-internal-format msgid "too many % clauses" -msgstr "trop de clauses %" +msgstr "trop de clauses %" #: c/c-parser.cc:17101 cp/parser.cc:39771 #, gcc-internal-format @@ -48406,16 +48086,14 @@ msgid "too many % modifiers" msgstr "trop de modificateurs %" #: c/c-parser.cc:18792 cp/parser.cc:41456 -#, fuzzy, gcc-internal-format -#| msgid "too many % modifiers" +#, gcc-internal-format msgid "too many % modifiers" -msgstr "trop de modificateurs %" +msgstr "trop de modificateurs %" #: c/c-parser.cc:18800 cp/parser.cc:41467 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp target%> with modifier other than % or % on % clause" +#, gcc-internal-format msgid "% clause with map-type modifier other than %, % or %" -msgstr "%<#pragma omp target%> avec un modificateur autre que % ou % sur une clause %" +msgstr "clause % avec un modificateur de type map autre que %, % ou %" #: c/c-parser.cc:18838 cp/parser.cc:41507 #, gcc-internal-format @@ -48458,10 +48136,9 @@ msgid "% clause event handle has type %qT rather than % a le type %qT plutôt que %" #: c/c-parser.cc:19391 cp/parser.cc:42045 -#, fuzzy, gcc-internal-format -#| msgid "expected assumption clause" +#, gcc-internal-format msgid "expected an OpenACC clause" -msgstr "clause de présomption attendue" +msgstr "clause OpenACC attendue" #: c/c-parser.cc:19402 c/c-parser.cc:19767 cp/parser.cc:42056 #: cp/parser.cc:42464 @@ -48480,10 +48157,9 @@ msgid "%qs must be the first clause of %qs" msgstr "%qs doit être la première clause de %qs" #: c/c-parser.cc:19756 cp/parser.cc:42453 -#, fuzzy, gcc-internal-format -#| msgid "expected assumption clause" +#, gcc-internal-format msgid "expected an OpenMP clause" -msgstr "clause de présomption attendue" +msgstr "clause OpenMP attendue" #: c/c-parser.cc:19891 cp/parser.cc:47284 #, gcc-internal-format @@ -48538,7 +48214,7 @@ msgstr "%<#pragma acc %s data%> n'a pas clause de mouvement de données" #: c/c-parser.cc:20109 cp/parser.cc:47244 #, gcc-internal-format msgid "% construct requires % clause" -msgstr "" +msgstr "la construction % requiert la clause %" #: c/c-parser.cc:20338 cp/parser.cc:3367 #, gcc-internal-format @@ -48581,27 +48257,24 @@ msgid "%<#pragma acc update%> must contain at least one % or % o msgstr "%<#pragma acc update%> doit contenir au moins une clause % ou % ou %" #: c/c-parser.cc:20558 -#, fuzzy, gcc-internal-format -#| msgid "variables in %<__regio_symbol%> address space must be declared %" +#, gcc-internal-format msgid "variable %qD used in the % clause must be declared before %qD" -msgstr "les variables dans l'espace d'adresses de %<__regio_symbol%> doivent être déclarées %" +msgstr "la variable %qD utilisée dans la clause % doit être déclarée avant %qD" #: c/c-parser.cc:20562 c/c-parser.cc:20585 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "to be allocated variable declared here" -msgstr "le paramètre de patron %qD est déclaré ici" +msgstr "la variable à allouer est déclarée ici" #: c/c-parser.cc:20580 #, gcc-internal-format msgid "variable %qD used in the % clause must not be modified between declaration of %qD and its % directive" -msgstr "" +msgstr "la variable %qD utilisée dans la clause % ne peut pas être modifiée entre la déclaration de %qD et sa directive %" #: c/c-parser.cc:20583 -#, fuzzy, gcc-internal-format -#| msgid "defined here" +#, gcc-internal-format msgid "modified here" -msgstr "défini ici" +msgstr "modifié ici" #: c/c-parser.cc:20651 cp/parser.cc:42578 cp/parser.cc:42593 #, gcc-internal-format @@ -48614,39 +48287,34 @@ msgid "% clause allocator expression has type %qT rather than % a le type %qT plutôt que %" #: c/c-parser.cc:20692 -#, fuzzy, gcc-internal-format -#| msgid "parameter %qD may not appear in this context" +#, gcc-internal-format msgid "function parameter %qD may not appear as list item in an % directive" -msgstr "le paramètre %qD ne peut pas apparaître dans ce contexte" +msgstr "le paramètre %qD de la fonction ne peut pas apparaître comme élément de liste dans une directive %" #: c/c-parser.cc:20699 -#, fuzzy, gcc-internal-format -#| msgid "deduction guide %qD must be declared in the same scope as %qT" +#, gcc-internal-format msgid "% directive must be in the same scope as %qD" -msgstr "le guide de déduction %qD doit être déclaré dans la même portée que %qT" +msgstr "la directive % doit être dans la même portée que %qD" #: c/c-parser.cc:20707 -#, fuzzy, gcc-internal-format -#| msgid "%qD appears more than once in % clauses" +#, gcc-internal-format msgid "%qD already appeared as list item in an % directive" -msgstr "%qD apparaît plus d'une fois dans les clauses %" +msgstr "%qD est déjà apparu comme élément liste dans une directive %" #: c/c-parser.cc:20714 #, gcc-internal-format msgid "% clause required for static variable %qD" -msgstr "" +msgstr "clause % requise pour la variable statique %qD" #: c/c-parser.cc:20721 -#, fuzzy, gcc-internal-format -#| msgid "% clause must specify an allocator here" +#, gcc-internal-format msgid "% clause requires a predefined allocator as %qD is static" -msgstr "la clause % doit spécifier un allocateur ici" +msgstr "la clause % requiert un allocateur prédéfini car %qD est statique" #: c/c-parser.cc:20725 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp allocate%> not yet supported" +#, gcc-internal-format msgid "%<#pragma omp allocate%> for static variables like %qD not yet supported" -msgstr "%<#pragma omp allocated%> n'est pas encore supporté" +msgstr "%<#pragma omp allocate%> pour des variables statiques comme %qD n'est pas encore supporté" #: c/c-parser.cc:20876 cp/parser.cc:42758 #, gcc-internal-format @@ -48686,16 +48354,14 @@ msgid "%qs clause requires %qs clause" msgstr "la clause %qs requiert la clause %qs" #: c/c-parser.cc:21040 cp/parser.cc:42927 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic write%> incompatible with % clause" +#, gcc-internal-format msgid "%<#pragma omp atomic write%> incompatible with % clause implicitly provided by a % directive" -msgstr "%<#pragma omp atomic write%> est incompatible avec la clause %" +msgstr "%<#pragma omp atomic write%> est incompatible avec la clause % fournie implicitement par une directive %" #: c/c-parser.cc:21051 cp/parser.cc:42938 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic read%> incompatible with % clause" +#, gcc-internal-format msgid "%<#pragma omp atomic read%> incompatible with % clause implicitly provided by a % directive" -msgstr "%<#pragma omp atomic read%> est incompatible avec la clause %" +msgstr "%<#pragma omp atomic read%> est incompatible avec la clause % fournie implicitement par une directive %" #: c/c-parser.cc:21083 cp/parser.cc:42970 #, gcc-internal-format @@ -48759,15 +48425,14 @@ msgid "% expression is not lvalue expression" msgstr "l'expression % n'est pas une expression l-valeur" #: c/c-parser.cc:21845 -#, fuzzy, gcc-internal-format -#| msgid "% expression is not lvalue expression" +#, gcc-internal-format msgid "% expression is not lvalue expression" -msgstr "l'expression % n'est pas une expression l-valeur" +msgstr "l'expression % n'est pas une expression l-valeur" #: c/c-parser.cc:21851 cp/parser.cc:43744 #, gcc-internal-format msgid "the % expression %qE should be the same as the % argument %qE" -msgstr "" +msgstr "l'expression % %qE devrait être la même que l'argument % %qE" #: c/c-parser.cc:21882 cp/parser.cc:43780 #, gcc-internal-format @@ -48800,10 +48465,9 @@ msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a stat msgstr "%<[[omp::directive(%s)]]%> doit être le seul attribut spécifié dans une instruction" #: c/c-parser.cc:22086 cp/parser.cc:44617 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp taskwait%> may only be used in compound statements" +#, gcc-internal-format msgid "%<#pragma omp scan%> with zero preceding executable statements" -msgstr "%<#pragma omp taskwait%> ne peut être utilisé que dans des instructions composées" +msgstr "%<#pragma omp scan%> avec zéro instruction exécutable précédente" #: c/c-parser.cc:22120 cp/parser.cc:44650 #, gcc-internal-format @@ -48816,10 +48480,9 @@ msgid "expected %<#pragma omp scan%>" msgstr "%<#pragma omp scan%> attendu" #: c/c-parser.cc:22134 cp/parser.cc:44665 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp taskwait%> may only be used in compound statements" +#, gcc-internal-format msgid "%<#pragma omp scan%> with zero succeeding executable statements" -msgstr "%<#pragma omp taskwait%> ne peut être utilisé que dans des instructions composées" +msgstr "%<#pragma omp scan%> avec zéro instruction exécutable suivante" #: c/c-parser.cc:22252 cp/semantics.cc:10734 cp/semantics.cc:10819 #, gcc-internal-format @@ -48828,10 +48491,9 @@ msgstr "déclaration ou initialisation d'itération attendue" #: c/c-parser.cc:22340 c/c-parser.cc:22355 cp/parser.cc:45012 #: cp/parser.cc:45027 -#, fuzzy, gcc-internal-format -#| msgid "not enough perfectly nested loops" +#, gcc-internal-format msgid "not enough nested loops" -msgstr "pas assez de boucles parfaitement imbriquées" +msgstr "pas assez de boucles imbriquées" #: c/c-parser.cc:22455 cp/parser.cc:45299 #, gcc-internal-format @@ -48919,10 +48581,9 @@ msgid "expected trait selector name" msgstr "nom de sélecteur de trait attendu" #: c/c-parser.cc:24542 cp/parser.cc:47860 -#, fuzzy, gcc-internal-format -#| msgid "selector %qs not allowed for context selector set %qs" +#, gcc-internal-format msgid "unknown selector %qs for context selector set %qs" -msgstr "sélecteur %qs pas permis pour l'ensemble %qs du sélecteur de contexte" +msgstr "sélecteur %qs inconnu pour l'ensemble %qs du sélecteur de contexte" #: c/c-parser.cc:24570 cp/parser.cc:47889 #, gcc-internal-format @@ -48930,22 +48591,19 @@ msgid "selector %qs does not accept any properties" msgstr "le sélecteur %qs n'accepte aucune propriété" #: c/c-parser.cc:24592 cp/parser.cc:47921 -#, fuzzy, gcc-internal-format -#| msgid "% can only be specified inside a class" +#, gcc-internal-format msgid "% cannot be specified in traits in the %qs trait-selector-set" -msgstr "% peut seulement être spécifié à l'intérieur d'une classe" +msgstr "% ne peut pas être spécifié dans les traits dans le trait-selector-set %qs" #: c/c-parser.cc:24601 cp/parser.cc:47931 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be constant integer expression" +#, gcc-internal-format msgid "% argument must be constant integer expression" -msgstr "l'argument du score doit être une expression entière constante" +msgstr "l'argument % doit être une expression entière constante" #: c/c-parser.cc:24604 cp/parser.cc:47934 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be non-negative" +#, gcc-internal-format msgid "% argument must be non-negative" -msgstr "l'argument du score doit être non négatif" +msgstr "l'argument % doit être non négatif" #: c/c-parser.cc:24645 cp/parser.cc:47980 #, gcc-internal-format @@ -48966,16 +48624,14 @@ msgstr "les propriétés pour le sélecteur % ne peuvent pas être spéci #. Currently only the now-deprecated syntax #. from OpenMP 5.0 is supported. #: c/c-parser.cc:24705 cp/parser.cc:48035 fortran/openmp.cc:5891 -#, fuzzy, gcc-internal-format -#| msgid "%qs clause on % directive not supported yet" +#, gcc-internal-format msgid "% selector is not supported yet" -msgstr "la clause %qs sur la directive % n'est pas encore supportée" +msgstr "le sélecteur % n'est pas encore supportée" #: c/c-parser.cc:24764 cp/parser.cc:48098 -#, fuzzy, gcc-internal-format -#| msgid "expected trait selector name" +#, gcc-internal-format msgid "expected context selector set name" -msgstr "nom de sélecteur de trait attendu" +msgstr "nom de l'ensemble du sélecteur de contexte attendu" #: c/c-parser.cc:24841 cp/parser.cc:48413 #, gcc-internal-format @@ -49018,16 +48674,14 @@ msgid "%qD specified both in declare target % and % or % cla msgstr "%qD est spécifié à la fois dans les clauses declare target % et % ou des clauses %" #: c/c-parser.cc:25199 cp/parser.cc:48882 -#, fuzzy, gcc-internal-format -#| msgid "directive with only % clause" +#, gcc-internal-format msgid "directive with only % or % clauses" -msgstr "la directive avec uniquement des clauses %" +msgstr "la directive avec uniquement des clauses % ou %" #: c/c-parser.cc:25202 cp/parser.cc:48885 -#, fuzzy, gcc-internal-format -#| msgid "% clause must not be used together with % clause" +#, gcc-internal-format msgid "% clause must specify 'any' when used with an % clause" -msgstr "la clause % ne doit pas être utilisée avec la clause %" +msgstr "la clause % doit spécifier « any » lorsqu'elle est utilisée avec une clause %" #: c/c-parser.cc:25251 c/c-parser.cc:25293 cp/parser.cc:48940 #: cp/parser.cc:48987 @@ -49118,10 +48772,9 @@ msgid "expected %, %, % or %" msgstr "%, %, % ou % attendu" #: c/c-parser.cc:25837 cp/parser.cc:49589 -#, fuzzy, gcc-internal-format -#| msgid "expected %, %, % or %" +#, gcc-internal-format msgid "expected %, %, %, % or %" -msgstr "%, %, % ou % attendu" +msgstr "%, %, %, % ou % attendu" #: c/c-parser.cc:25866 cp/parser.cc:49624 #, gcc-internal-format @@ -49322,13 +48975,12 @@ msgstr "les opérandes de types décimaux flottants ne peuvent pas être mélang #: c/c-typeck.cc:926 #, gcc-internal-format msgid "%<_Complex _BitInt(%d)%> unsupported" -msgstr "" +msgstr "%<_Complex _BitInt(%d)%> non supporté" #: c/c-typeck.cc:1472 -#, fuzzy, gcc-internal-format -#| msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C2X" +#, gcc-internal-format msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C23" -msgstr "l'utilisation de pointeurs vers des tableaux ayant des qualificatifs différent est interdite en ISO C avant C2X" +msgstr "l'utilisation de pointeurs vers des tableaux ayant des qualificatifs différent est interdite en ISO C avant C23" #: c/c-typeck.cc:1476 #, gcc-internal-format @@ -49346,10 +48998,9 @@ msgid "function return types not compatible due to %" msgstr "les types retournés par les fonctions ne sont pas compatibles en raison de %" #: c/c-typeck.cc:1905 -#, fuzzy, gcc-internal-format -#| msgid "converting an array compound literal to a pointer is ill-formed in C++" +#, gcc-internal-format msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++" -msgstr "convertir un tableau de littéraux composés en un pointeur est mal formé en C++" +msgstr "convertir un tableau de littéraux composés en un pointeur conduit à un pointeur ballant en C++" #: c/c-typeck.cc:2599 c/c-typeck.cc:9852 #, gcc-internal-format @@ -49725,10 +49376,9 @@ msgid "pointer to array loses qualifier in conditional expression" msgstr "le pointeur vers le tableau perd le qualificatif dans l'expression conditionnelle" #: c/c-typeck.cc:5665 -#, fuzzy, gcc-internal-format -#| msgid "pointer to array loses qualifier in conditional expression in ISO C before C2X" +#, gcc-internal-format msgid "pointer to array loses qualifier in conditional expression in ISO C before C23" -msgstr "le pointeur vers le tableau perd le qualificatif dans l'expression conditionnelle dans le C ISO avant C2X" +msgstr "le pointeur vers le tableau perd le qualificatif dans l'expression conditionnelle dans le C ISO avant C23" #: c/c-typeck.cc:5670 #, gcc-internal-format @@ -49741,16 +49391,14 @@ msgid "pointer type mismatch in conditional expression" msgstr "non concordance de type de pointeurs dans une expression conditionnelle" #: c/c-typeck.cc:5695 -#, fuzzy, gcc-internal-format -#| msgid "Expected expression type" +#, gcc-internal-format msgid "first expression has type %qT" -msgstr "Type d'expression attendue" +msgstr "la première expression a le type %qT" #: c/c-typeck.cc:5696 -#, fuzzy, gcc-internal-format -#| msgid "Expected expression type" +#, gcc-internal-format msgid "second expression has type %qT" -msgstr "Type d'expression attendue" +msgstr "la seconde expression a le type %qT" #: c/c-typeck.cc:5707 c/c-typeck.cc:5720 #, gcc-internal-format @@ -49826,10 +49474,9 @@ msgid "ISO C forbids casting nonscalar to the same type" msgstr "le C ISO interdit le transtypage d'un type non scalaire vers lui-même" #: c/c-typeck.cc:6199 -#, fuzzy, gcc-internal-format -#| msgid "useless cast to type %q#T" +#, gcc-internal-format msgid "useless cast to type %qT" -msgstr "transtypage inutile vers le type %q#T" +msgstr "transtypage inutile vers le type %qT" #: c/c-typeck.cc:6219 #, gcc-internal-format @@ -50089,10 +49736,9 @@ msgid "ISO C forbids return between function pointer and %" msgstr "le C ISO interdit le retour entre un pointeur de fonction et %" #: c/c-typeck.cc:7769 -#, fuzzy, gcc-internal-format -#| msgid "array with qualifier on the element is not qualified before C2X" +#, gcc-internal-format msgid "array with qualifier on the element is not qualified before C23" -msgstr "un tableau avec un qualificatif sur l'élément n'est pas qualifié avant C2X" +msgstr "un tableau avec un qualificatif sur l'élément n'est pas qualifié avant C23" #: c/c-typeck.cc:7786 #, gcc-internal-format @@ -50381,10 +50027,9 @@ msgid "enum conversion in initialization is invalid in C++" msgstr "la conversion en enum durant l'initialisation est invalide en C++" #: c/c-typeck.cc:10834 -#, fuzzy, gcc-internal-format -#| msgid "excess elements in union initializer" +#, gcc-internal-format msgid "excess elements in %qT initializer" -msgstr "trop d'éléments dans l'initialisation de l'union" +msgstr "trop d'éléments dans l'initialisation %qT" #: c/c-typeck.cc:10846 c/c-typeck.cc:10923 #, gcc-internal-format @@ -50986,10 +50631,9 @@ msgstr "la section du tableau n'a pas un type pour lequel une correspondance peu #: c/c-typeck.cc:15565 c/c-typeck.cc:15641 c/c-typeck.cc:15677 #: cp/semantics.cc:8326 cp/semantics.cc:8405 cp/semantics.cc:8441 -#, fuzzy, gcc-internal-format -#| msgid "unsupported memory expression:" +#, gcc-internal-format msgid "unsupported map expression %qE" -msgstr "expression mémoire non supportée :" +msgstr "expression map %qE non supportée" #: c/c-typeck.cc:15605 c/c-typeck.cc:15782 cp/semantics.cc:8367 #: cp/semantics.cc:8585 @@ -51252,16 +50896,14 @@ msgid "invalid type of %<__MEM%> operand" msgstr "type invalide pour l'opérande de %<__MEM%>" #: c/gimple-parser.cc:1563 -#, fuzzy, gcc-internal-format -#| msgid "expected constant offset" +#, gcc-internal-format msgid "expected constant offset for %<__MEM%> operand" -msgstr "décalage constant attendu" +msgstr "décalage constant attendu pour l'opérande %<__MEM%>" #: c/gimple-parser.cc:1574 -#, fuzzy, gcc-internal-format -#| msgid "invalid type of %<__MEM%> operand" +#, gcc-internal-format msgid "expected constant step for %<__MEM%> operand" -msgstr "type invalide pour l'opérande de %<__MEM%>" +msgstr "pas constant attendu pour l'opérande de %<__MEM%>" #: c/gimple-parser.cc:1627 #, gcc-internal-format @@ -51398,10 +51040,9 @@ msgid "%s%#qD (near match)" msgstr "%s%#qD (concordance proche)" #: cp/call.cc:3954 -#, fuzzy, gcc-internal-format -#| msgid "%s%#qD (reversed)" +#, gcc-internal-format msgid "%s%#qD (ignored)" -msgstr "%s%#qD (inversé)" +msgstr "%s%#qD (ignoré)" #: cp/call.cc:3956 #, gcc-internal-format @@ -51462,7 +51103,7 @@ msgstr " un constructeur hérité n'est pas un candidat pour une initialisation #: cp/call.cc:4109 #, gcc-internal-format msgid "some candidates omitted; use %<-fdiagnostics-all-candidates%> to display them" -msgstr "" +msgstr "certains candidats ont été omis ; utilisez %<-fdiagnostics-all-candidates%> pour les afficher" #: cp/call.cc:4190 cp/call.cc:4735 #, gcc-internal-format @@ -51651,16 +51292,14 @@ msgid "enumerated mismatch in conditional expression: %qT vs %qT" msgstr "non concordance dans les énumérés de l'expression conditionnelle: %qT vs %qT" #: cp/call.cc:6263 -#, fuzzy, gcc-internal-format -#| msgid "conditional expression between enumeration type %qT and floating-point type %qT is deprecated" +#, gcc-internal-format msgid "conditional expression between enumeration type %qT and floating-point type %qT" -msgstr "l'expression conditionnelle entre le type énuméré %qT et le type en virgule flottante %qT est dépréciée" +msgstr "expression conditionnelle entre le type énuméré %qT et le type en virgule flottante %qT" #: cp/call.cc:6267 -#, fuzzy, gcc-internal-format -#| msgid "conditional expression between floating-point type %qT and enumeration type %qT is deprecated" +#, gcc-internal-format msgid "conditional expression between floating-point type %qT and enumeration type %qT" -msgstr "l'expression conditionnelle entre le type en virgule flottante %qT et le type énuméré %qT est dépréciée" +msgstr "expression conditionnelle entre le type en virgule flottante %qT et le type énuméré %qT" #: cp/call.cc:6271 #, gcc-internal-format @@ -51818,16 +51457,12 @@ msgid "converting to %qH from %qI requires direct-initialization" msgstr "la conversion vers %qH depuis %qI requiert une initialisation directe" #: cp/call.cc:8447 -#, fuzzy -#| msgid "converting to %qH from %qI with greater conversion rank" msgid "ISO C++ does not allow converting to %qH from %qI with greater conversion rank" -msgstr "conversion de %qH vers %qI avec un plus grand rang de conversion" +msgstr "le C++ ISO n'autorise pas la conversion vers %qH à partir de %qI avec un plus grand rang de conversion" #: cp/call.cc:8455 -#, fuzzy -#| msgid "converting to %qH from %qI with unordered conversion ranks" msgid "ISO C++ does not allow converting to %qH from %qI with unordered conversion rank" -msgstr "la conversion vers %qH depuis %qI avec des rangs de conversion pas ordonnés" +msgstr "le C++ ISO n'autorise pas la conversion vers %qH à partir de %qI avec des rangs de conversion pas ordonnés" #: cp/call.cc:8471 msgid "invalid user-defined conversion from %qH to %qI" @@ -51934,7 +51569,7 @@ msgstr "utilisation d'une fonction ayant plusieurs versions sans version par dé #: cp/call.cc:10002 #, gcc-internal-format msgid "use %<-fdiagnostics-all-candidates%> to display considered candidates" -msgstr "" +msgstr "utilisez %<-fdiagnostics-all-candidates%> pour afficher tous les candidats considérés" #: cp/call.cc:10125 #, gcc-internal-format @@ -52230,7 +51865,7 @@ msgstr "le temporaire a été détruit à la fin de l'expression complète %qE" #: cp/call.cc:14550 #, gcc-internal-format msgid "explicit conversion function was not considered" -msgstr "" +msgstr "la fonction de conversion explicite n'a pas été considérée" #: cp/class.cc:322 #, gcc-internal-format @@ -52523,7 +52158,7 @@ msgstr "membre pointeur %q+D déclaré ici" #: cp/class.cc:4316 #, gcc-internal-format msgid "layout of %qs member of type %qT changes in %qs" -msgstr "" +msgstr "la disposition du membre %qs du type %qT change dans %qs" #: cp/class.cc:4709 #, gcc-internal-format @@ -52757,16 +52392,14 @@ msgid "converting overloaded function %qD to type %q#T is ambiguous" msgstr "la conversion de la fonction surchargée %qD vers le type %q#T est ambiguë" #: cp/class.cc:8979 -#, fuzzy, 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%>" +#, gcc-internal-format msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function." -msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre non statique non qualifié ou entre parenthèses pour former un pointeur vers une fonction membre. Utilisez %<&%T::%D%>" +msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre non statique non qualifié ou entre parenthèses pour former un pointeur vers une fonction membre d'un objet explicite." #: cp/class.cc:8984 -#, fuzzy, gcc-internal-format -#| msgid "(a pointer to member can only be formed with %<&%E%>)" +#, gcc-internal-format msgid "a pointer to explicit object member function can only be formed with %<&%E%>" -msgstr "(un pointeur vers un membre peut seulement être formé avec %<&%E%>)" +msgstr "un pointeur vers une fonction membre explicite peut seulement être formé avec %<&%E%>" #: cp/class.cc:8994 #, gcc-internal-format @@ -52873,7 +52506,7 @@ msgstr "%qD n'est pas utilisable comme une fonction % car:" #: cp/constexpr.cc:1320 cp/constexpr.cc:6349 #, gcc-internal-format msgid "destroying %qE outside its lifetime" -msgstr "" +msgstr "destruction de %qE en dehors de sa durée de vie" #: cp/constexpr.cc:1611 cp/constexpr.cc:3308 #: rust/backend/rust-constexpr.cc:3326 rust/backend/rust-constexpr.cc:3589 @@ -53025,21 +52658,19 @@ msgid "% evaluation depth exceeds maximum of %d (use %<-fconstexpr-d msgstr "la profondeur d'évaluation de la % dépasse le maximum permis %d (utilisez %<-fconstexpr-depth=%> pour augmenter le maximum)" #: cp/constexpr.cc:3538 -#, fuzzy, gcc-internal-format -#| msgid "expression %qE is not a constant expression" +#, gcc-internal-format msgid "reference to %qD is not a constant expression" -msgstr "l'expression %qE n'est pas une expression constante" +msgstr "la référence vers %qD n'est pas une expression constante" #: cp/constexpr.cc:3541 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not a constant expression" +#, gcc-internal-format msgid "pointer to %qD is not a constant expression" -msgstr "%qE n'est pas une expression constante" +msgstr "le pointeur vers %qD n'est pas une expression constante" #: cp/constexpr.cc:3547 #, gcc-internal-format msgid "address of non-static constexpr variable %qD may differ on each invocation of the enclosing function; add % to give it a constant address" -msgstr "" +msgstr "l'adresse de la variable constexpr non statique %qD peut différer entre chaque invocation de la fonction englobante ; ajoutez % pour lui donner une adresse constante" #: cp/constexpr.cc:3623 #, gcc-internal-format @@ -53215,10 +52846,9 @@ msgid "allocated here" msgstr "alloué ici" #: cp/constexpr.cc:5981 -#, fuzzy, gcc-internal-format -#| msgid "Access terminates outside of its parent" +#, gcc-internal-format msgid "accessing %qE outside its lifetime" -msgstr "L'accès se termine en dehors de son parent" +msgstr "accès à %qE en dehors de sa durée de vie" #: cp/constexpr.cc:6001 #, gcc-internal-format @@ -53261,44 +52891,39 @@ msgid "%qD does not have integral or enumeration type" msgstr "%qD n'a pas un type entier ou énuméré" #: cp/constexpr.cc:6342 -#, fuzzy, gcc-internal-format -#| msgid "use of allocated storage after deallocation in a constant expression" +#, gcc-internal-format msgid "modification of allocated storage after deallocation is not a constant expression" -msgstr "utilisation d'un stockage alloué après sa désallocation dans une expression constante" +msgstr "modifier un stockage alloué après désallocation n'est pas une expression constante" #: cp/constexpr.cc:6351 -#, fuzzy, gcc-internal-format -#| msgid "modification of %qE is not a constant expression" +#, gcc-internal-format msgid "modification of %qE outside its lifetime is not a constant expression" -msgstr "la modification de %qE n'est pas une expression constante" +msgstr "modifie %qE en dehors de sa durée de vie n'est pas une expression constante" #: cp/constexpr.cc:6358 -#, fuzzy, gcc-internal-format -#| msgid "size of array is not an integral constant-expression" +#, gcc-internal-format msgid "destroying %qE from outside current evaluation is not a constant expression" -msgstr "taille du tableau n'est pas une expression de constante de type entier" +msgstr "détruire %qE en dehors de l'évaluation courante n'est pas une expression constante" #: cp/constexpr.cc:6361 -#, fuzzy, gcc-internal-format -#| msgid "modification of %qE is not a constant expression" +#, gcc-internal-format msgid "modification of %qE from outside current evaluation is not a constant expression" -msgstr "la modification de %qE n'est pas une expression constante" +msgstr "la modification de %qE en dehors de l'évaluation courante n'est pas une expression constante" #: cp/constexpr.cc:6488 -#, fuzzy, gcc-internal-format -#| msgid "change of the active member of a union from %qD to %qD during initialization" +#, gcc-internal-format msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20" -msgstr "changement du membre actif d'une union de %qD à %qD durant l'initialisation" +msgstr "changement du membre actif d'une union de %qD à %qD n'est pas une expression constante avant C++20" #: cp/constexpr.cc:6517 #, gcc-internal-format msgid "%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use % instead" -msgstr "" +msgstr "%qD ne commence pas implicitement sa durée de vie car %qT n'a pas un constructeur par défaut trivial non supprimé, utilisez plutôt %" #: cp/constexpr.cc:6524 #, gcc-internal-format msgid "initializing %qD requires a member access expression as the left operand of the assignment" -msgstr "" +msgstr "l'initialisation de %qD requiert une expression d'accès à un membre comme opérande de gauche dans l'assignement" #: cp/constexpr.cc:6536 rust/backend/rust-constexpr.cc:2822 #, gcc-internal-format @@ -53388,28 +53013,24 @@ msgid "conversion from pointer type %qT to arithmetic type %qT in a constant exp msgstr "conversion depuis le type pointeur %qT vers le type arithmétique %qT dans une expression constante" #: cp/constexpr.cc:8153 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT" -msgstr "%qE n'est pas une expression constante car il fait référence aux sous-objets mutables de %qT" +msgstr "le transtypage de %qT n'est pas permis dans une expression constante car le type pointé %qT n'est pas similaire à %qT" #: cp/constexpr.cc:8160 -#, fuzzy, gcc-internal-format -#| msgid "pointer member %q+D declared here" +#, gcc-internal-format msgid "pointed-to object declared here" -msgstr "membre pointeur %q+D déclaré ici" +msgstr "l'objet pointé est déclaré ici" #: cp/constexpr.cc:8165 -#, fuzzy, gcc-internal-format -#| msgid "%qs is not a constant expression because %qT is a pointer to member type" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression because %qE does not point to an object" -msgstr "%qs n'est pas une expression constante car %qT est un type pointeur vers un membre" +msgstr "le transtypage depuis %qT n'est pas permis dans une expression constante car %qE ne pointe pas vers un objet" #: cp/constexpr.cc:8177 -#, fuzzy, gcc-internal-format -#| msgid "modifying a const object %qE is not allowed in a constant expression" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression before C++26" -msgstr "la modification d'un objet constant %qE n'est pas permise dans une expression constante" +msgstr "le transtypage depuis %qT n'est pas autorisé dans une expression constante avant C++26" #: cp/constexpr.cc:8191 #, gcc-internal-format @@ -53483,10 +53104,9 @@ msgid "immediate evaluation returns address of immediate function %qD" msgstr "l'évaluation immédiate retourne l'adresse de la fonction immédiate %qD" #: cp/constexpr.cc:8913 -#, fuzzy, gcc-internal-format -#| msgid "immediate evaluation returns address of immediate function %qD" +#, gcc-internal-format msgid "constant evaluation returns address of immediate function %qD" -msgstr "l'évaluation immédiate retourne l'adresse de la fonction immédiate %qD" +msgstr "l'évaluation constante retourne l'adresse de la fonction immédiate %qD" #: cp/constexpr.cc:9551 rust/backend/rust-constexpr.cc:5667 #, gcc-internal-format @@ -53797,10 +53417,9 @@ msgid " %qT is not an aggregate" msgstr " %qT n'est pas un agrégat" #: cp/constraint.cc:3755 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an aggregate" +#, gcc-internal-format msgid " %qT is not an array" -msgstr " %qT n'est pas un agrégat" +msgstr " %qT n'est pas un tableau" #: cp/constraint.cc:3758 #, gcc-internal-format @@ -53813,10 +53432,9 @@ msgid " %qT is not a base of %qT" msgstr " %qT n'est pas une base de %qT" #: cp/constraint.cc:3764 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an aggregate" +#, gcc-internal-format msgid " %qT is not a bounded array" -msgstr " %qT n'est pas un agrégat" +msgstr " %qT n'est pas un tableau borné" #: cp/constraint.cc:3767 #, gcc-internal-format @@ -53854,10 +53472,9 @@ msgid " %qT is not a final class" msgstr " %qT n'est pas une classe finale" #: cp/constraint.cc:3788 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not a union" +#, gcc-internal-format msgid " %qT is not a function" -msgstr " %qT est une union" +msgstr " %qT n'est pas une fonction" #: cp/constraint.cc:3791 #, gcc-internal-format @@ -53870,22 +53487,19 @@ msgid " %qT is not a literal type" msgstr " %qT n'est pas un type littéral" #: cp/constraint.cc:3797 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a member template function" +#, gcc-internal-format msgid " %qT is not a member function pointer" -msgstr "%qD n'est pas une fonction patron membre" +msgstr " %qT n'est pas un pointeur vers une fonction membre" #: cp/constraint.cc:3800 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a member of %qT" +#, gcc-internal-format msgid " %qT is not a member object pointer" -msgstr "%qT n'est pas un membre de %qT" +msgstr " %qT n'est pas un pointeur vers un objet membre" #: cp/constraint.cc:3803 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a member of %qT" +#, gcc-internal-format msgid " %qT is not a member pointer" -msgstr "%qT n'est pas un membre de %qT" +msgstr " %qT n'est pas un pointeur membre" #: cp/constraint.cc:3806 #, gcc-internal-format @@ -53903,10 +53517,9 @@ msgid " %qT is not nothrow convertible from %qE" msgstr " %qT ne peut pas être converti avec % à partir de %qE" #: cp/constraint.cc:3818 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not a POD type" +#, gcc-internal-format msgid " %qT is not an object type" -msgstr " %qT n'est pas un type simple (aussi appelé POD : Plain Old Data)" +msgstr " %qT n'est pas un type objet" #: cp/constraint.cc:3821 #, gcc-internal-format @@ -53924,10 +53537,9 @@ msgid " %qT is not a polymorphic type" msgstr " %qT n'est pas un type polymorphique" #: cp/constraint.cc:3831 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an enum" +#, gcc-internal-format msgid " %qT is not a reference" -msgstr " %qT n'est pas une énumération" +msgstr " %qT n'est pas une référence" #: cp/constraint.cc:3834 #, gcc-internal-format @@ -53935,10 +53547,9 @@ msgid " %qT is not the same as %qT" msgstr " %qT n'est pas le même que %qT" #: cp/constraint.cc:3837 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an enum" +#, gcc-internal-format msgid " %qT is not a scoped enum" -msgstr " %qT n'est pas une énumération" +msgstr " %qT n'est pas une énumération fortement typée" #: cp/constraint.cc:3840 #, gcc-internal-format @@ -54347,13 +53958,12 @@ msgstr "les deux branches de l'instruction % sont marquées comme %qs" #: cp/cp-gimplify.cc:536 #, gcc-internal-format msgid "%qD was promoted to an immediate function because its body contains an immediate-escalating expression %qE" -msgstr "" +msgstr "%qD a été promu en une fonction immédiate car son corps contient une expression %qE qui provoque la conversion en immédiat" #: cp/cp-gimplify.cc:539 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a template function" +#, gcc-internal-format msgid "%qD was promoted to an immediate function" -msgstr "%qD n'est pas un patron de fonction" +msgstr "%qD a été promu en une fonction immédiate" #: cp/cp-gimplify.cc:1164 #, gcc-internal-format @@ -54361,10 +53971,9 @@ msgid "taking address of an immediate function %qD" msgstr "prise de l'adresse d'une fonction immédiate %qD" #: cp/cp-gimplify.cc:1263 -#, fuzzy, gcc-internal-format -#| msgid "address of a call to %qs is not a constant expression" +#, gcc-internal-format msgid "call to consteval function %qE is not a constant expression" -msgstr "l'adresse d'un appel à %qs n'est pas une expression constante" +msgstr "l'appel à la fonction consteval %qE n'est pas une expression constante" #: cp/cp-gimplify.cc:2002 #, gcc-internal-format @@ -54988,51 +54597,44 @@ msgid "%q#D previously declared here" msgstr "%q#D précédemment déclaré ici" #: cp/decl.cc:2097 -#, fuzzy, gcc-internal-format -#| msgid "method declaration not in @interface context" +#, gcc-internal-format msgid "parameter declaration is not name-independent" -msgstr "la déclaration de la méthode n'est pas dans le contexte @interface" +msgstr "la déclaration du paramètre n'est pas indépendante du nom" #: cp/decl.cc:2102 -#, fuzzy, gcc-internal-format -#| msgid "structured binding declaration set but not used" +#, gcc-internal-format msgid "structured binding at namespace scope is not name-independent" -msgstr "déclaration de liaison structurée définie mais pas utilisée" +msgstr "la liaison structurée dans la portée de l'espace de nom n'est pas indépendante du nom" #: cp/decl.cc:2106 -#, fuzzy, gcc-internal-format -#| msgid "structured binding has incomplete type %qT" +#, gcc-internal-format msgid "static structured binding is not name-independent" -msgstr "la liaison structurée à le type incomplet %qT" +msgstr "la liaison structurée statique n'est pas indépendante du nom" #: cp/decl.cc:2110 -#, fuzzy, gcc-internal-format -#| msgid "structured binding has incomplete type %qT" +#, gcc-internal-format msgid "extern structured binding is not name-independent" -msgstr "la liaison structurée à le type incomplet %qT" +msgstr "la liaison structurée externe n'est pas indépendante du nom" #: cp/decl.cc:2117 -#, fuzzy, gcc-internal-format -#| msgid "static data member %qD in unnamed class" +#, gcc-internal-format msgid "static data member is not name-independent" -msgstr "membre de donnée statique %qD dans une classe sans nom" +msgstr "le membre de donnée statique n'est pas indépendant du nom" #: cp/decl.cc:2120 #, gcc-internal-format msgid "variable at namespace scope is not name-independent" -msgstr "" +msgstr "la variable dans la portée de l'espace de nom n'est pas indépendante du nom" #: cp/decl.cc:2123 -#, fuzzy, gcc-internal-format -#| msgid "%qs variable is not a pointer" +#, gcc-internal-format msgid "static variable is not name-independent" -msgstr "la variable %qs n'est pas un pointeur" +msgstr "la variable statique n'est pas indépendante du nom" #: cp/decl.cc:2126 -#, fuzzy, gcc-internal-format -#| msgid "environment variable %qs not defined" +#, gcc-internal-format msgid "extern variable is not name-independent" -msgstr "variable d'environnement %qs non définie" +msgstr "la variable externe n'est pas indépendante du nom" #: cp/decl.cc:2138 #, gcc-internal-format @@ -55080,17 +54682,15 @@ msgid "import declared %q#D here" msgstr "l'import a déclaré %q#D ici" #: cp/decl.cc:2306 cp/decl.cc:16628 -#, fuzzy, gcc-internal-format -#| msgid "conflicting exporting declaration %qD" +#, gcc-internal-format msgid "conflicting exporting for declaration %qD" -msgstr "export conflictuel de la déclaration %qD" +msgstr "export conflictuel pour la déclaration %qD" # la phrase fait référence à une variable ou une fonction (cf les deux messages ci-dessus) d'où le féminin #: cp/decl.cc:2308 cp/decl.cc:16630 -#, fuzzy, gcc-internal-format -#| msgid "previously declared here" +#, gcc-internal-format msgid "previously declared here without exporting" -msgstr "précédemment déclarée ici" +msgstr "précédemment déclarée ici sans export" #: cp/decl.cc:2335 #, gcc-internal-format @@ -55220,7 +54820,7 @@ msgstr "saut à l'étiquette du « case »" #: cp/decl.cc:3694 #, gcc-internal-format msgid " as a possible target of computed goto" -msgstr "" +msgstr " comme cible possible d'un goto calculé" #: cp/decl.cc:3696 #, gcc-internal-format @@ -55273,16 +54873,14 @@ msgid " enters % statement" msgstr " entre dans l'instruction %" #: cp/decl.cc:3829 cp/decl.cc:4003 -#, fuzzy, gcc-internal-format -#| msgid "ISO C99 does not support %qE" +#, gcc-internal-format msgid " does not destroy %qD" -msgstr "le C99 ISO ne supporte pas %qE" +msgstr " ne détruit pas %qD" #: cp/decl.cc:3831 cp/decl.cc:3986 -#, fuzzy, gcc-internal-format -#| msgid "%s does not take any feature options" +#, gcc-internal-format msgid " does not clean up handled exception" -msgstr "%s ne prend aucune option de fonctionnalité" +msgstr " ne nettoie pas l'exception traitée" #: cp/decl.cc:3922 #, gcc-internal-format @@ -56124,15 +55722,14 @@ msgid "constraints on a non-templated function" msgstr "contraintes sur une fonction sans patron" #: cp/decl.cc:10590 -#, fuzzy, gcc-internal-format -#| msgid "friend declaration not in class definition" +#, gcc-internal-format msgid "constrained non-template friend declaration must be a definition" -msgstr "la déclaration amie n'est pas dans la définition de la classe" +msgstr "la déclaration amie hors patron et contrainte doit être une définition" #: cp/decl.cc:10597 #, gcc-internal-format msgid "friend function template with constraints that depend on outer template parameters must be a definition" -msgstr "" +msgstr "le patron de la fonction amie avec des contraintes qui dépendent de paramètres extérieures au patron doit être une définition" #: cp/decl.cc:10646 #, gcc-internal-format @@ -56190,10 +55787,9 @@ msgid "static member function %qD cannot have cv-qualifier" msgstr "la fonction membre statique %qD ne peut pas avoir de qualificatif CV" #: cp/decl.cc:10818 -#, fuzzy, gcc-internal-format -#| msgid "static member function %qD cannot have cv-qualifier" +#, gcc-internal-format msgid "explicit object member function %qD cannot have cv-qualifier" -msgstr "la fonction membre statique %qD ne peut pas avoir de qualificatif CV" +msgstr "la fonction membre objet explicite %qD ne peut pas avoir de qualificatif CV" #: cp/decl.cc:10823 #, gcc-internal-format @@ -56206,16 +55802,14 @@ msgid "static member function %qD cannot have ref-qualifier" msgstr "la fonction membre statique %qD ne peut pas avoir de qualificatif de référence" #: cp/decl.cc:10826 -#, fuzzy, gcc-internal-format -#| msgid "static member function %qD cannot have ref-qualifier" +#, gcc-internal-format msgid "explicit object member function %qD cannot have ref-qualifier" -msgstr "la fonction membre statique %qD ne peut pas avoir de qualificatif de référence" +msgstr "la fonction membre objet explicite %qD ne peut pas avoir de qualificatif de référence" #: cp/decl.cc:10832 cp/decl.cc:13715 cp/decl.cc:13725 cp/parser.cc:11972 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "explicit object parameter declared here" -msgstr "le paramètre de patron %qD est déclaré ici" +msgstr "le paramètre objet explicite est déclaré ici" #: cp/decl.cc:10844 #, gcc-internal-format @@ -56800,50 +56394,44 @@ msgid "remove parentheses" msgstr "retirez les parenthèses" #: cp/decl.cc:13345 -#, fuzzy, gcc-internal-format -#| msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "explicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>" -msgstr "la déduction du patron synonyme est uniquement disponible avec %<-std=c++20%> ou %<-std=gnu++20%>" +msgstr "la fonction membre objet explicite est uniquement disponible avec %<-std=c++23%> ou %<-std=gnu++23%>" #: cp/decl.cc:13359 -#, fuzzy, gcc-internal-format -#| msgid "Function %qs at %L cannot have an initializer" +#, gcc-internal-format msgid "a function type cannot have an explicit object parameter" -msgstr "La fonction %qs à %L ne peut pas avoir une initialisation" +msgstr "un type de fonction ne peut pas avoir de paramètre objet explicite" #: cp/decl.cc:13365 -#, fuzzy, gcc-internal-format -#| msgid "a conversion function cannot have a trailing return type" +#, gcc-internal-format msgid "a pointer to function type cannot have an explicit object parameter" -msgstr "une fonction de conversion ne peut pas avoir de type de retour à la fin" +msgstr "un pointeur vers un type de fonction ne peut pas avoir de paramètre d'objet explicite" #: cp/decl.cc:13369 -#, fuzzy, gcc-internal-format -#| msgid " member function type %qT is not a valid template argument" +#, gcc-internal-format msgid "a pointer to member function type cannot have an explicit object parameter" -msgstr " le type fonction membre %qT n'est pas un argument de patron valable" +msgstr "un pointer vers un type de fonction membre ne peut pas avoir de paramètre objet explicite" #: cp/decl.cc:13377 #, gcc-internal-format msgid "the type of a pointer to explicit object member function is a regular pointer to function type" -msgstr "" +msgstr "le type d'un pointeur vers une fonction membre d'objet explicite est un pointeur régulier vers un type de fonction" #: cp/decl.cc:13381 -#, fuzzy, gcc-internal-format -#| msgid "typedef may not be a member function definition" +#, gcc-internal-format msgid "the type of an explicit object member function is a regular function type" -msgstr "typedef ne peut pas être une définition de fonction membre" +msgstr "le type d'une fonction membre d'un objet explicite est un type de fonction régulier" #: cp/decl.cc:13402 #, gcc-internal-format msgid "only the first parameter of a member function can be declared as an explicit object parameter" -msgstr "" +msgstr "seul le premier paramètre d'une fonction membre peut être déclaré comme un paramètre objet explicite" #: cp/decl.cc:13407 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "valid explicit object parameter declared here" -msgstr "le paramètre de patron %qD est déclaré ici" +msgstr "le paramètre objet explicite valide est déclaré ici" #: cp/decl.cc:13411 #, gcc-internal-format @@ -56991,22 +56579,19 @@ msgid "friend function definition %qs cannot have a name qualified with %<%D::%> msgstr "la définition de la fonction amie %qs ne pas avoir son nom qualifié avec %<%D::%>" #: cp/decl.cc:13704 -#, fuzzy, gcc-internal-format -#| msgid "non-member function %qD cannot have cv-qualifier" +#, gcc-internal-format msgid "a non-member function cannot have an explicit object parameter" -msgstr "la fonction non membre %qD ne peut pas avoir de qualificatif CV" +msgstr "la fonction non membre ne peut pas avoir de paramètre objet explicite" #: cp/decl.cc:13712 -#, fuzzy, gcc-internal-format -#| msgid "implicit templates may not be %" +#, gcc-internal-format msgid "an explicit object member function cannot be %" -msgstr "les patrons implicites ne peuvent pas être %" +msgstr "une fonction membre d'objet explicite ne peut pas être %" #: cp/decl.cc:13722 -#, fuzzy, gcc-internal-format -#| msgid "structured binding declaration cannot be %" +#, gcc-internal-format msgid "an explicit object member function cannot be %" -msgstr "une déclaration de liaison structurée ne peut pas être %" +msgstr "une fonction membre d'objet explicite ne peut pas être %" #: cp/decl.cc:13748 #, gcc-internal-format @@ -57390,10 +56975,9 @@ msgid "storage class % invalid for function %qs" msgstr "la classe de stockage % est invalide pour la fonction %qs" #: cp/decl.cc:15015 -#, fuzzy, gcc-internal-format -#| msgid "alignment specified for function %qE" +#, gcc-internal-format msgid "% specifier invalid for function %qs" -msgstr "un alignement est spécifié pour la fonction %qE" +msgstr "le spécificateur % est invalide pour la fonction %qs" #: cp/decl.cc:15018 #, gcc-internal-format @@ -57772,8 +57356,7 @@ msgid "duplicate base type %qT invalid" msgstr "le type de base dupliqué %qT est invalide" #: cp/decl.cc:16969 -#, fuzzy, gcc-internal-format -#| msgid "cannot declare %qD in a different module" +#, gcc-internal-format msgid "cannot declare %qD in different module" msgstr "ne peut déclarer %qD dans un module différent" @@ -59701,10 +59284,9 @@ msgid "unknown header kind %qs" msgstr "type d'en-tête %qs inconnu" #: cp/name-lookup.cc:2856 cp/name-lookup.cc:3932 cp/name-lookup.cc:4029 -#, fuzzy, gcc-internal-format -#| msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "name-independent declarations only available with %<-std=c++2c%> or %<-std=gnu++2c%>" -msgstr "la déduction du patron synonyme est uniquement disponible avec %<-std=c++20%> ou %<-std=gnu++20%>" +msgstr "la déclaration indépendante du nom est uniquement disponible avec %<-std=c++2c%> ou %<-std=gnu++2c%>" #: cp/name-lookup.cc:2887 #, gcc-internal-format @@ -59762,28 +59344,24 @@ msgid "%s %s %p %d" msgstr "%s %s %p %d" #: cp/name-lookup.cc:5101 -#, fuzzy, gcc-internal-format -#| msgid "%q#D does not have external linkage" +#, gcc-internal-format msgid "exporting %q#D that does not have external linkage" -msgstr "%q#D n'a pas un lien externe" +msgstr "export de %q#D qui n'a pas un lien externe" #: cp/name-lookup.cc:5106 -#, fuzzy, gcc-internal-format -#| msgid "%q#D declared here" +#, gcc-internal-format msgid "%q#D declared here with no linkage" -msgstr "%q#D déclaré ici" +msgstr "%q#D déclaré ici sans liaison" #: cp/name-lookup.cc:5109 -#, fuzzy, gcc-internal-format -#| msgid "%q#D does not have external linkage" +#, gcc-internal-format msgid "%q#D declared here with internal linkage" -msgstr "%q#D n'a pas un lien externe" +msgstr "%q#D déclaré ici avec un lien externe" #: cp/name-lookup.cc:5112 -#, fuzzy, gcc-internal-format -#| msgid "%q#D declared here" +#, gcc-internal-format msgid "%q#D declared here with module linkage" -msgstr "%q#D déclaré ici" +msgstr "%q#D déclaré ici avec une liaison de module" #: cp/name-lookup.cc:5877 #, gcc-internal-format @@ -59908,10 +59486,9 @@ msgid " %qE" msgstr " %qE" #: cp/name-lookup.cc:7085 -#, fuzzy, gcc-internal-format -#| msgid "% is defined in header %qs; did you forget to %<#include %s%>?" +#, gcc-internal-format msgid "% is defined in header %qs; this is probably fixable by adding %<#include %s%>" -msgstr "% est défini dans l'en-tête %qs ; avez-vous oublié %<#include %s%> ?" +msgstr "% est défini dans l'en-tête %qs ; cela peut probablement être corrigé en ajoutant %<#include %s%>" #: cp/name-lookup.cc:7091 #, gcc-internal-format @@ -60493,16 +60070,14 @@ msgid "%<~auto%> only available with %<-std=c++14%> or %<-std=gnu++14%>" msgstr "%<~auto%> est uniquement disponible avec %<-std=c++14%> ou %<-std=gnu++14%>" #: cp/parser.cc:6729 cp/parser.cc:6733 -#, fuzzy, gcc-internal-format -#| msgid "template-id not allowed for destructor" +#, gcc-internal-format msgid "template-id not allowed for destructor in C++20" -msgstr "template-id n'est pas permis pour un destructeur" +msgstr "template-id n'est pas permis pour un destructeur en C++20" #: cp/parser.cc:6735 cp/parser.cc:32577 -#, fuzzy, gcc-internal-format -#| msgid "remove parentheses" +#, gcc-internal-format msgid "remove the %qs" -msgstr "retirez les parenthèses" +msgstr "retirez le %qs" #: cp/parser.cc:6843 #, gcc-internal-format @@ -60595,15 +60170,14 @@ msgid "two consecutive %<[%> shall only introduce an attribute" msgstr "deux %<[%> consécutifs n'introduiront qu'un attribut" #: cp/parser.cc:8017 -#, fuzzy, gcc-internal-format -#| msgid "types may not be defined within %<__builtin_offsetof%>" +#, gcc-internal-format msgid "types may not be defined in %<__builtin_classify_type%> calls" -msgstr "des types ne peuvent pas être définis dans %<__builtin_offsetof%>" +msgstr "des types ne peuvent pas être définis dans des appels %<__builtin_classify_type%>" #: cp/parser.cc:8400 cp/parser.cc:8429 #, gcc-internal-format msgid "cannot use multidimensional subscript in OpenMP array section" -msgstr "" +msgstr "un indice multidimensionnel ne peut pas être utilisé dans une section de tableau OpenMP" #: cp/parser.cc:8687 cp/typeck.cc:3052 #, gcc-internal-format @@ -60708,7 +60282,7 @@ msgstr "des types ne peuvent pas être définis dans %<__builtin_offsetof%>" #: cp/parser.cc:11229 #, gcc-internal-format msgid "trailing argument to %<__type_pack_element%> is not a type" -msgstr "" +msgstr "le dernier argument de %<__type_pack_element%> n'est pas un type" #: cp/parser.cc:11329 #, gcc-internal-format @@ -60824,34 +60398,32 @@ msgstr "la déclaration d'un paramètre avant des spécificateurs de déclaratio #: cp/parser.cc:11932 cp/pt.cc:14718 #, gcc-internal-format msgid "a lambda with captures may not have an explicit object parameter of an unrelated type" -msgstr "" +msgstr "une lambda avec capture ne peut pas avoir un paramètre objet explicite d'un type sans rapport" #: cp/parser.cc:11945 -#, fuzzy, gcc-internal-format -#| msgid "% lambda specifier with lambda capture" +#, gcc-internal-format msgid "% lambda specifier with explicit object parameter" -msgstr "spécificateur de lambda % avec la capture lambda" +msgstr "spécificateur de lambda % avec un paramètre objet explicite" #: cp/parser.cc:11954 #, gcc-internal-format msgid "the passed in closure object will not be mutated because it is taken by value" -msgstr "" +msgstr "l'objet de fermeture passé ne sera pas muté car il est pris par valeur" #: cp/parser.cc:11958 #, gcc-internal-format msgid "declare the explicit object parameter as non-const reference instead" -msgstr "" +msgstr "déclarez plutôt le paramètre objet explicite comme une référence non constante" #: cp/parser.cc:11962 #, gcc-internal-format msgid "explicit object parameter is already a mutable reference" -msgstr "" +msgstr "le paramètre objet explicite est déjà une référence mutable" #: cp/parser.cc:11969 -#, fuzzy, gcc-internal-format -#| msgid "% lambda specifier with lambda capture" +#, gcc-internal-format msgid "% lambda specifier with explicit object parameter" -msgstr "spécificateur de lambda % avec la capture lambda" +msgstr "spécificateur de lambda % avec un paramètre objet explicite" #: cp/parser.cc:11987 #, gcc-internal-format @@ -61042,10 +60614,9 @@ msgid "expected jump-statement" msgstr "instruction de saut attendue" #: cp/parser.cc:15090 -#, fuzzy, gcc-internal-format -#| msgid "expected module-name" +#, gcc-internal-format msgid "expected module-partition" -msgstr "nom de module attendu" +msgstr "partition de module attendu" #: cp/parser.cc:15092 #, gcc-internal-format @@ -61091,7 +60662,7 @@ msgstr "la déclaration d'import doit être dans la portée globale" #: cp/parser.cc:15241 #, gcc-internal-format msgid "import specifying a module-partition must appear after a named module-declaration" -msgstr "" +msgstr "un import spécifiant une partition de module doit apparaître après une déclaration de module nommée" #: cp/parser.cc:15253 #, gcc-internal-format @@ -61189,10 +60760,9 @@ msgid "invalid initializer for structured binding declaration" msgstr "initialisation invalide pour la déclaration de liaison structurée" #: cp/parser.cc:16371 -#, fuzzy, gcc-internal-format -#| msgid "storage class specifiers invalid in parameter declarations" +#, gcc-internal-format msgid "% must be the first specifier in a parameter declaration" -msgstr "spécificateurs de classe de stockage invalides dans la déclaration des paramètres" +msgstr "% doit être le premier spécificateur dans la déclaration des paramètres" #: cp/parser.cc:16394 #, gcc-internal-format @@ -61280,10 +60850,9 @@ msgid "% without a message only available with %<-std=c++17%> or msgstr "un % sans message est uniquement disponible avec %<-std=c++17%> ou %<-std=gnu++17%>" #: cp/parser.cc:16974 -#, fuzzy, gcc-internal-format -#| msgid "% without a message only available with %<-std=c++17%> or %<-std=gnu++17%>" +#, gcc-internal-format msgid "% with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>" -msgstr "un % sans message est uniquement disponible avec %<-std=c++17%> ou %<-std=gnu++17%>" +msgstr "un % avec un message qui n'est pas une chaîne de caractères est uniquement disponible avec %<-std=c++2c%> ou %<-std=gnu++2c%>" #: cp/parser.cc:17172 #, gcc-internal-format @@ -61508,10 +61077,9 @@ msgid "use of % in lambda parameter declaration only available with %<-st msgstr "l'utilisation de % dans la déclaration d'un paramètre lambda est uniquement disponible avec %<-std=c++14%> ou %<-std=gnu++14%>" #: cp/parser.cc:20356 -#, fuzzy, gcc-internal-format -#| msgid "use of % in parameter declaration only available with %<-fconcepts-ts%>" +#, gcc-internal-format msgid "use of % in template argument only available with %<-fconcepts-ts%>" -msgstr "l'utilisation de % dans une déclaration de paramètre est uniquement disponible avec %<-fconcepts-ts%>" +msgstr "l'utilisation de % dans un argument de patron est uniquement disponible avec %<-fconcepts-ts%>" #: cp/parser.cc:20360 #, gcc-internal-format @@ -61606,7 +61174,7 @@ msgstr "les types ne peuvent pas être définis dans la base d'un enum" #: cp/parser.cc:21618 #, gcc-internal-format msgid "declaration of enumeration with fixed underlying type and no enumerator list is only permitted as a standalone declaration" -msgstr "" +msgstr "la déclaration d'une énumération sans type sous-jacent fixé et aucune liste d'énumération n'est permis que dans une déclaration autonome" #: cp/parser.cc:21622 #, gcc-internal-format @@ -61800,10 +61368,9 @@ msgid "% qualifier outside of function body" msgstr "qualificatif % en dehors du corps de la fonction" #: cp/parser.cc:22948 -#, fuzzy, gcc-internal-format -#| msgid "attribute ignored in declaration of %q#T" +#, gcc-internal-format msgid "attributes ignored on % declaration" -msgstr "attribut ignoré dans la déclaration de %q#T" +msgstr "attributs ignorés dans la déclaration %" #: cp/parser.cc:23035 #, gcc-internal-format @@ -61998,16 +61565,14 @@ msgid "types may not be defined in parameter types" msgstr "des types ne peuvent pas être définis dans des types de paramètres" #: cp/parser.cc:25732 -#, fuzzy, gcc-internal-format -#| msgid "storage class specifiers invalid in parameter declarations" +#, gcc-internal-format msgid "% specifier in template parameter declaration" -msgstr "spécificateurs de classe de stockage invalides dans la déclaration des paramètres" +msgstr "spécificateur % dans la déclaration des paramètres d'un patron" #: cp/parser.cc:25746 -#, fuzzy, gcc-internal-format -#| msgid "non-parameter %qs cannot be a parameter pack" +#, gcc-internal-format msgid "an explicit object parameter cannot be a function parameter pack" -msgstr "le non paramètre %qs ne peut pas être un paquet de paramètres" +msgstr "un paramètre objet explicite ne peut pas être un paquet de paramètres" #: cp/parser.cc:25838 #, gcc-internal-format @@ -62030,10 +61595,9 @@ msgid "parameter pack cannot have a default argument" msgstr "le paquet de paramètres ne peut pas avoir d'argument par défaut" #: cp/parser.cc:25887 -#, fuzzy, gcc-internal-format -#| msgid "template parameter pack cannot have a default argument" +#, gcc-internal-format msgid "an explicit object parameter may not have a default argument" -msgstr "le paquet de paramètres du patron ne peut pas avoir d'argument par défaut" +msgstr "un paramètre objet explicite ne peut pas avoir d'argument par défaut" #: cp/parser.cc:26011 #, gcc-internal-format @@ -62316,10 +61880,9 @@ msgid "expected attribute before %<...%>" msgstr "attribut attendu avant %<...%>" #: cp/parser.cc:30214 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute without arguments on a non-prototype" +#, gcc-internal-format msgid "attribute with no arguments contains no parameter packs" -msgstr "attribut %qE sans argument sur un non-prototype" +msgstr "un attribut sans argument ne contient aucun paquet de paramètres" #: cp/parser.cc:30260 #, gcc-internal-format @@ -62402,10 +61965,9 @@ msgid "too many template-parameter-lists" msgstr "trop de listes de paramètres pour le patron" #: cp/parser.cc:32576 -#, fuzzy, gcc-internal-format -#| msgid "template-id not allowed for destructor" +#, gcc-internal-format msgid "template-id not allowed for constructor in C++20" -msgstr "template-id n'est pas permis pour un destructeur" +msgstr "template-id n'est pas permis pour un constructeur en C++20" #: cp/parser.cc:32687 #, gcc-internal-format @@ -62818,10 +62380,9 @@ msgid "% expression must be integral" msgstr "l'expression % doit être un nombre entier" #: cp/parser.cc:39638 -#, fuzzy, gcc-internal-format -#| msgid "expected %, % or %" +#, gcc-internal-format msgid "expected %, %, %" -msgstr "%, % ou % attendu" +msgstr "%, % ou % attendu" #: cp/parser.cc:40029 #, gcc-internal-format @@ -62959,10 +62520,9 @@ msgid "%<#pragma omp assumes%> may only be used at file or namespace scope" msgstr "%<#pragma omp assume%> peut uniquement être utilisé dans la portée du fichier ou de l'espace de noms" #: cp/parser.cc:51053 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma GCC ivdep%> must be inside a function" +#, gcc-internal-format msgid "%<#pragma GCC %s%> must be inside a function" -msgstr "%<#pragma GCC ivdep%> doit être à l'intérieur d'une fonction" +msgstr "%<#pragma GCC %s%> doit être à l'intérieur d'une fonction" #: cp/parser.cc:51195 #, gcc-internal-format @@ -64527,16 +64087,14 @@ msgid " since %q+#D declared in base class" msgstr " puisque %q+#D est déclaré dans la classe de base" #: cp/search.cc:2281 -#, fuzzy, gcc-internal-format -#| msgid "virtual function %q+D overriding final function" +#, gcc-internal-format msgid "explicit object member function overrides virtual function" -msgstr "la fonction virtuelle %q+D redéfini une fonction finale" +msgstr "la fonction membre d'objet explicite redéfini une fonction virtuelle" #: cp/search.cc:2284 -#, fuzzy, gcc-internal-format -#| msgid "resolver indirect function declared here" +#, gcc-internal-format msgid "virtual function declared here" -msgstr "fonction indirect du résolveur déclarée ici" +msgstr "fonction virtuelle déclarée ici" #: cp/semantics.cc:1109 #, gcc-internal-format @@ -64619,22 +64177,19 @@ msgid "arguments to destructor are not allowed" msgstr "le destructeur n'accepte pas d'argument" #: cp/semantics.cc:3175 -#, fuzzy, gcc-internal-format -#| msgid "% is unavailable for static member functions" +#, gcc-internal-format msgid "% is unavailable for explicit object member functions" -msgstr "% n'est pas disponible pour les fonctions membres statiques" +msgstr "% n'est pas disponible pour les fonctions membres d'objet explicite" #: cp/semantics.cc:3187 -#, fuzzy, gcc-internal-format -#| msgid "use the apostrophe directive %qs instead" +#, gcc-internal-format msgid "use explicit object parameter %qs instead" -msgstr "utilisez plutôt la directive apostrophe %qs" +msgstr "utilisez plutôt le paramètre objet explicite %qs" #: cp/semantics.cc:3191 -#, fuzzy, gcc-internal-format -#| msgid "invalid template non-type parameter" +#, gcc-internal-format msgid "name the explicit object parameter" -msgstr "le paramètre non type du patron est invalide" +msgstr "nom du paramètre objet explicite" #: cp/semantics.cc:3196 #, gcc-internal-format @@ -64793,21 +64348,19 @@ msgid "%qT is not an enumeration type" msgstr "%qT n'est pas un type énuméré" #: cp/semantics.cc:4650 -#, fuzzy, gcc-internal-format -#| msgid "requested alignment is not an integer constant" +#, gcc-internal-format msgid "%<__type_pack_element%> index is not an integral constant" -msgstr "l'alignement demandé n'est pas une constante entière" +msgstr "l'index %<__type_pack_element%> n'est pas une constante entière" #: cp/semantics.cc:4656 #, gcc-internal-format msgid "%<__type_pack_element%> index is negative" -msgstr "" +msgstr "l'index %<__type_pack_element%> est négatif" #: cp/semantics.cc:4662 -#, fuzzy, gcc-internal-format -#| msgid "Reference statement index out of range" +#, gcc-internal-format msgid "%<__type_pack_element%> index is out of range" -msgstr "L'index de l'instruction de référence est hors limites" +msgstr "l'index %<__type_pack_element%> est hors limites" #. Parameter packs can only be used in templates #: cp/semantics.cc:4785 @@ -64841,10 +64394,9 @@ msgid "% within non-standard-layout type %qT is conditionally-support msgstr "l'utilisation de % à l'intérieur du type %qT (qui ne respecte pas l'agencement standard) est supporté conditionnellement" #: cp/semantics.cc:6046 -#, fuzzy, gcc-internal-format -#| msgid "constructor priorities are not supported" +#, gcc-internal-format msgid "pointer-to-member mapping %qE not supported" -msgstr "les priorités des constructeurs ne sont pas supportées" +msgstr "la correspondance d'un pointeur vers un membre %qE n'est pas supportée" #: cp/semantics.cc:6240 #, gcc-internal-format @@ -65116,46 +64668,42 @@ msgstr "%<#pragma omp atomic update%> utilise deux expressions différentes pour #: cp/semantics.cc:11509 #, gcc-internal-format msgid "% message must be a string literal or object with % and % members" -msgstr "" +msgstr "le message de % doit être une chaîne littérale ou un objet avec les membres % et %" #: cp/semantics.cc:11525 #, gcc-internal-format msgid "% message % must be implicitly convertible to %" -msgstr "" +msgstr "le message de % doit avoir une % qui peut être implicitement convertie en %" #: cp/semantics.cc:11534 #, gcc-internal-format msgid "% message % must be implicitly convertible to %" -msgstr "" +msgstr "le message de % doit avoir une % qui peut être implicitement convertie en %" #: cp/semantics.cc:11592 -#, fuzzy, gcc-internal-format -#| msgid "% expression must be constant integer expression" +#, gcc-internal-format msgid "% message % must be a constant expression" -msgstr "l'expression % doit être une expression entière constante" +msgstr "le message de % doit avoir une % qui est une expression constante" #: cp/semantics.cc:11600 #, gcc-internal-format msgid "% message % %qE too large" -msgstr "" +msgstr "le message de % a une % %qE trop grande" #: cp/semantics.cc:11627 -#, fuzzy, gcc-internal-format -#| msgid "%(%E)%> is not a constant expression" +#, gcc-internal-format msgid "% message % must be a constant expression" -msgstr "%(%E)%> n'est pas une expression constante" +msgstr "le message de % doit avoir une % qui est une expression constante" #: cp/semantics.cc:11654 -#, fuzzy, gcc-internal-format -#| msgid "argument %d of %qE must be an integer constant expression" +#, gcc-internal-format msgid "% message % must be a core constant expression" -msgstr "l'argument %d de %qE doit être une expression constante entière" +msgstr "le message de % doit avoir une % qui est une expression constante du noyau" #: cp/semantics.cc:11680 -#, fuzzy, gcc-internal-format -#| msgid "static assertion failed: %s" +#, gcc-internal-format msgid "static assertion failed: %.*s" -msgstr "l'assertion statique a échoué: %s" +msgstr "l'assertion statique a échoué : %.*s" #: cp/semantics.cc:11688 #, gcc-internal-format @@ -65752,10 +65300,9 @@ msgid "the compiler can assume that the address of %qD will never be NULL" msgstr "le compilateur peut supposer que l'adresse de %qD ne sera jamais NULL" #: cp/typeck.cc:5055 -#, fuzzy, gcc-internal-format -#| msgid "bitwise operation between different enumeration types %qT and %qT is deprecated" +#, gcc-internal-format msgid "bitwise operation between different enumeration types %qT and %qT" -msgstr "l'opération au niveau des bits entre les types énumérés différents %qT et %qT est dépréciée" +msgstr "opération au niveau des bits entre les types énumérés différents %qT et %qT" #: cp/typeck.cc:5058 #, gcc-internal-format @@ -65763,10 +65310,9 @@ msgid "bitwise operation between different enumeration types %qT and %qT is depr msgstr "l'opération au niveau des bits entre les types énumérés différents %qT et %qT est dépréciée" #: cp/typeck.cc:5064 -#, fuzzy, gcc-internal-format -#| msgid "arithmetic between different enumeration types %qT and %qT is deprecated" +#, gcc-internal-format msgid "arithmetic between different enumeration types %qT and %qT" -msgstr "l'arithmétique entre des types énumérés différents %qT et %qT est dépréciée" +msgstr "arithmétique entre des types énumérés différents %qT et %qT" #: cp/typeck.cc:5067 #, gcc-internal-format @@ -65774,16 +65320,14 @@ msgid "arithmetic between different enumeration types %qT and %qT is deprecated" msgstr "l'arithmétique entre des types énumérés différents %qT et %qT est dépréciée" #: cp/typeck.cc:5104 -#, fuzzy, gcc-internal-format -#| msgid "comparison of enumeration type %qT with floating-point type %qT is deprecated" +#, gcc-internal-format msgid "comparison of enumeration type %qT with floating-point type %qT" -msgstr "la comparaison du type énuméré %qT avec le type en virgule flottante %qT est dépréciée" +msgstr "comparaison du type énuméré %qT avec le type en virgule flottante %qT" #: cp/typeck.cc:5107 -#, fuzzy, gcc-internal-format -#| msgid "comparison of floating-point type %qT with enumeration type %qT is deprecated" +#, gcc-internal-format msgid "comparison of floating-point type %qT with enumeration type %qT" -msgstr "la comparaison du type en virgule flottante %qT avec le type énuméré %qT est dépréciée" +msgstr "comparaison du type en virgule flottante %qT avec le type énuméré %qT" #: cp/typeck.cc:5110 #, gcc-internal-format @@ -65796,16 +65340,14 @@ msgid "comparison of floating-point type %qT with enumeration type %qT is deprec msgstr "la comparaison du type en virgule flottante %qT avec le type énuméré %qT est dépréciée" #: cp/typeck.cc:5123 -#, fuzzy, gcc-internal-format -#| msgid "arithmetic between enumeration type %qT and floating-point type %qT is deprecated" +#, gcc-internal-format msgid "arithmetic between enumeration type %qT and floating-point type %qT" -msgstr "l'arithmétique entre le type énuméré %qT et le type en virgule flottante %qT est déprécié" +msgstr "arithmétique entre le type énuméré %qT et le type en virgule flottante %qT" #: cp/typeck.cc:5126 -#, fuzzy, gcc-internal-format -#| msgid "arithmetic between floating-point type %qT and enumeration type %qT is deprecated" +#, gcc-internal-format msgid "arithmetic between floating-point type %qT and enumeration type %qT" -msgstr "l'arithmétique entre le type en virgule flottante %qT et le type énuméré %qT est déprécié" +msgstr "arithmétique entre le type en virgule flottante %qT et le type énuméré %qT" #: cp/typeck.cc:5129 #, gcc-internal-format @@ -65912,10 +65454,9 @@ msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre non statique non qualifié ou entre parenthèses pour former un pointeur vers une fonction membre. Utilisez %<&%T::%D%>" #: cp/typeck.cc:7154 -#, fuzzy, 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%>" +#, gcc-internal-format msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function" -msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre non statique non qualifié ou entre parenthèses pour former un pointeur vers une fonction membre. Utilisez %<&%T::%D%>" +msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre non statique non qualifié ou entre parenthèses pour former un pointeur vers une fonction membre d'un objet explicite" #: cp/typeck.cc:7160 #, gcc-internal-format @@ -65923,16 +65464,14 @@ msgid "ISO C++ forbids taking the address of a bound member function to form a p msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre liée pour former un pointeur vers une fonction membre. Utilisez %<&%T::%D%>" #: cp/typeck.cc:7166 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>" +#, gcc-internal-format msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member function" -msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre liée pour former un pointeur vers une fonction membre. Utilisez %<&%T::%D%>" +msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction membre liée pour former un pointeur vers une fonction membre d'un objet explicite" #: cp/typeck.cc:7171 -#, fuzzy, gcc-internal-format -#| msgid "(a pointer to member can only be formed with %<&%E%>)" +#, gcc-internal-format msgid "a pointer to explicit object member function can only be formed with %<&%T::%D%>" -msgstr "(un pointeur vers un membre peut seulement être formé avec %<&%E%>)" +msgstr "un pointeur vers une fonction membre d'un objet explicite peut seulement être formé avec %<&%T::%D%>" #. Make this a permerror because we used to accept it. #: cp/typeck.cc:7204 @@ -66272,10 +65811,9 @@ msgid "returning reference to temporary" msgstr "retourne une référence vers un temporaire" #: cp/typeck.cc:10633 -#, fuzzy, gcc-internal-format -#| msgid "returning reference to temporary" +#, gcc-internal-format msgid "returning pointer to temporary" -msgstr "retourne une référence vers un temporaire" +msgstr "retourne un pointeur vers un temporaire" #: cp/typeck.cc:10636 #, gcc-internal-format @@ -66372,15 +65910,14 @@ msgid "% must not return NULL unless it is declared % ( msgstr "% ne doit pas retourner NULL à moins qu'il soit déclaré % (ou %<-fcheck-new%> est actif)" #: cp/typeck.cc:11299 -#, fuzzy, gcc-internal-format -#| msgid "invalid covariant return type for %q#D" +#, gcc-internal-format msgid "not eliding copy on return from %qD" -msgstr "type de retour covariant invalide pour %q#D" +msgstr "copie non élidée au retour de %qD" #: cp/typeck.cc:11311 #, gcc-internal-format msgid "not eliding copy on return in %qD" -msgstr "" +msgstr "copie non élidée au retour dans %qD" #: cp/typeck.cc:11898 #, gcc-internal-format @@ -66886,21 +66423,19 @@ msgid "cast from %qs to %qs will produce zero result" msgstr "le transtypage de %qs vers %qs produira le résultat zéro" #: d/d-convert.cc:748 -#, fuzzy, gcc-internal-format -#| msgid "cannot convert %qE from type %qT to type %qT" +#, gcc-internal-format msgid "cannot convert parameter %qs from type %qs to type %qs in assignment" -msgstr "impossible de convertir %qE du type %qT vers le type %qT" +msgstr "impossible de convertir le paramètre %qs du type %qs vers le type %qs dans l'assignation" #: d/d-convert.cc:754 -#, fuzzy, gcc-internal-format -#| msgid "cannot convert %qH to %qI in argument passing" +#, gcc-internal-format msgid "cannot convert parameter %qs from type %qs to type %qs in argument passing" -msgstr "ne peut convertir %qH en %qI dans le passage d'argument" +msgstr "ne peut convertir le paramètre %qs du type %qs vers le type %qs dans le passage d'argument" #: d/d-convert.cc:759 #, gcc-internal-format msgid "parameters of type % {aka %qs} are decayed to pointer types, and require % to be converted back into a static array type" -msgstr "" +msgstr "les paramètres de type % {aka %qs} sont dégradés en types pointeurs et requièrent % pour être convertis à nouveau en un type de tableau statique" #: d/d-lang.cc:463 #, gcc-internal-format @@ -66923,28 +66458,24 @@ msgid "bad argument for %<-fversion%>: %qs" msgstr "argument invalide pour %<-fversion%> : %qs" #: d/d-lang.cc:968 -#, fuzzy, gcc-internal-format -#| msgid "error: unable to open '%s' for writing: %s\n" +#, gcc-internal-format msgid "unable to open %s for writing: %m" -msgstr "erreur : ne peut ouvrir « %s » en écriture : %s\n" +msgstr "ne peut ouvrir %s en écriture : %m" #: d/d-lang.cc:975 -#, fuzzy, gcc-internal-format -#| msgid "opening output file %s: %m" +#, gcc-internal-format msgid "writing output file %s: %m" -msgstr "ouverture du fichier de sortie %s: %m" +msgstr "écriture du fichier de sortie %s : %m" #: d/d-lang.cc:995 -#, fuzzy, gcc-internal-format -#| msgid "error: unable to open '%s' for writing: %s\n" +#, gcc-internal-format msgid "unable to open %s for reading: %m" -msgstr "erreur : ne peut ouvrir « %s » en écriture : %s\n" +msgstr "ne peut ouvrir %s en lecture : %m" #: d/d-lang.cc:1020 -#, fuzzy, gcc-internal-format -#| msgid "opening json file %s: %m" +#, gcc-internal-format msgid "reading ddoc file %s: %m" -msgstr "ouverture du fichier json %s : %m" +msgstr "lecture du fichier ddoc %s : %m" #: d/d-lang.cc:1079 #, gcc-internal-format @@ -67023,16 +66554,14 @@ msgid "cannot handle comparison of type %<%s == %s%>" msgstr "ne peut traiter une comparaison de type %<%s == %s%>" #: d/expr.cc:717 -#, fuzzy, gcc-internal-format -#| msgid "expression %qs requires % and cannot be used with %<-fno-rtti%>" +#, gcc-internal-format msgid "array concatenation of expression %qs requires the GC and cannot be used with %<-fno-druntime%>" -msgstr "l'expression %qs requiert % et ne peut pas être utilisée avec %<-fno-rtti%>" +msgstr "la concaténation de tableaux d'expressions %qs requiert le GC et ne peut pas être utilisée avec %" #: d/expr.cc:811 -#, fuzzy, gcc-internal-format -#| msgid "expression %qs requires % and cannot be used with %<-fno-rtti%>" +#, gcc-internal-format msgid "appending to array in %qs requires the GC and cannot be used with %<-fno-druntime%>" -msgstr "l'expression %qs requiert % et ne peut pas être utilisée avec %<-fno-rtti%>" +msgstr "ajouter à la fin d'un tableau dans %qs requiert le GC et ne peut pas être utilisé avec %<-fno-druntime%>" #. Static arrays have already been handled by the front-end. #: d/expr.cc:1285 @@ -67117,10 +66646,9 @@ msgstr "désaccord dans l'appel à la fonction intrinsèque %qD" #. It's a D language intrinsic with no library implementation. #: d/intrinsics.cc:1479 -#, fuzzy, gcc-internal-format -#| msgid "built-in function %qE must be directly called" +#, gcc-internal-format msgid "intrinsic function %qE must be directly called" -msgstr "la fonction interne %qE doit être appelée directement" +msgstr "la fonction intrinsèque %qE doit être appelée directement" #: d/modules.cc:417 #, gcc-internal-format @@ -67130,7 +66658,7 @@ msgstr "%<-fmoduleinfo%> n'est pas supporté sur cette cible" #: d/toir.cc:245 #, gcc-internal-format msgid "calling %qE without side effects discards return value of type %qT; prepend a % if intentional" -msgstr "" +msgstr "appeler %qE sans effet de bord abandonne la valeur de retour de type %qT ; préfixez avec % si c'est intentionnel" #: d/toir.cc:419 d/toir.cc:444 #, gcc-internal-format @@ -67683,10 +67211,9 @@ msgid "Array constructor value at %L shall not be unlimited polymorphic [F2008: msgstr "La valeur du constructeur du tableau à %L ne sera point polymorphique sans limite [F2008: C4106]" #: fortran/array.cc:2215 -#, fuzzy, gcc-internal-format -#| msgid "Different CHARACTER lengths (%ld/%ld) in array constructor at %L" +#, gcc-internal-format msgid "Different CHARACTER lengths (%wd/%wd) in array constructor at %L" -msgstr "Longueurs de CHARACTER différentes (%ld/%ld) dans le constructeur du tableau à %L" +msgstr "Longueurs de CHARACTER différentes (%wd/%wd) dans le constructeur du tableau à %L" #: fortran/array.cc:2333 #, gcc-internal-format @@ -67910,10 +67437,9 @@ msgid "Unequal character lengths (%ld/%ld) in %s at %L" msgstr "Longueurs de caractères inégales (%ld/%ld) dans %s à %L" #: fortran/check.cc:1269 -#, fuzzy, gcc-internal-format -#| msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)" +#, gcc-internal-format msgid "Size of %qs argument of %qs intrinsic at %L too small (%wd/%ld)" -msgstr "La taille de l'argument %qs de l'intrinsèque %qs à %L est trop petite (%i/%i)" +msgstr "La taille de l'argument %qs de l'intrinsèque %qs à %L est trop petite (%wd/%ld)" #: fortran/check.cc:1332 #, gcc-internal-format, gfc-internal-format @@ -68722,10 +68248,8 @@ msgid "% argument of % intrinsic at %L must not be %s" msgstr "L'argument % de l'intrinsèque % à %L ne doit pas être %s" #: fortran/check.cc:6300 -#, fuzzy -#| msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %ld < result size %ld" msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zd" -msgstr "L'intrinsèque TRANSFER à %L a un résultat partiellement indéfini: taille de la source %ld < taille du résultat %ld" +msgstr "L'intrinsèque TRANSFER à %L a un résultat partiellement indéfini: taille de la source %zd < taille du résultat %zd" #: fortran/check.cc:6424 #, gcc-internal-format @@ -68738,16 +68262,14 @@ msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape." msgstr "Les arguments %qs et %qs de l'intrinsèque %qs à %L doivent avoir des formes identiques." #: fortran/check.cc:6573 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind" -msgstr "L'argument COUNT de SYSTEM_CLOCK à %L a un sous-type pas par défaut" +msgstr "L'argument VALUES de DATE_AND_TIME à %L a un sous-type pas par défaut" #: fortran/check.cc:6585 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Argument of ATANH at %L must be inside the range -1 to 1" +#, gcc-internal-format, gfc-internal-format msgid "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least four" -msgstr "L'argument de ATANH à %L doit être à l'intérieur de la plage -1 à 1" +msgstr "L'argument de VALUES de DATE_AND_TIME à %L doit avoir une plage exponentielle décimale d'au moins quatre" #: fortran/check.cc:6724 fortran/check.cc:6756 #, gcc-internal-format @@ -68775,10 +68297,9 @@ msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "L'argument COUNT de SYSTEM_CLOCK à %L a un sous-type pas par défaut" #: fortran/check.cc:6843 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer" -msgstr "L'argument COUNT de SYSTEM_CLOCK à %L a un sous-type pas par défaut" +msgstr "L'argument COUNT de SYSTEM_CLOCK à %L a un sous-type plus petit que l'entier par défaut" #: fortran/check.cc:6864 #, gcc-internal-format, gfc-internal-format @@ -68791,10 +68312,9 @@ msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "L'argument COUNT_RATE de SYSTEM_CLOCK à %L a un sous-type pas par défaut" #: fortran/check.cc:6881 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integer" -msgstr "L'argument COUNT_RATE de SYSTEM_CLOCK à %L a un sous-type pas par défaut" +msgstr "L'argument COUNT_RATE de SYSTEM_CLOCK à %L a un sous-type plus petit que l'entier par défaut" #: fortran/check.cc:6901 #, gcc-internal-format, gfc-internal-format @@ -68802,16 +68322,14 @@ msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "L'argument COUNT_MAX de SYSTEM_CLOCK à %L a un sous-type pas par défaut" #: fortran/check.cc:6911 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integer" -msgstr "L'argument COUNT_MAX de SYSTEM_CLOCK à %L a un sous-type pas par défaut" +msgstr "L'argument COUNT_MAX de SYSTEM_CLOCK à %L a un sous-type plus petit que l'entier par défaut" #: fortran/check.cc:6926 fortran/check.cc:6933 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" +#, gcc-internal-format, gfc-internal-format msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters" -msgstr "L'argument COUNT de SYSTEM_CLOCK à %L a un sous-type pas par défaut" +msgstr "Les arguments entiers de SYSTEM_CLOCK à %L ont des paramètres de sous-types différents" #: fortran/check.cc:7147 #, gcc-internal-format @@ -68861,16 +68379,14 @@ msgid "non-constant array in DATA statement %L" msgstr "tableau non constant dans l'instruction DATA à %L" #: fortran/data.cc:78 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d" +#, gcc-internal-format, gfc-internal-format msgid "Subscript at %L below array lower bound (%ld < %ld) in dimension %d" -msgstr "La référence au tableau à %L est en dehors des limites (%ld < %ld) dans la dimension %d" +msgstr "L'indice à %L est en dessous de la limite inférieure du tableau (%ld < %ld) dans la dimension %d" #: fortran/data.cc:89 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d" +#, gcc-internal-format, gfc-internal-format msgid "Subscript at %L above array upper bound (%ld > %ld) in dimension %d" -msgstr "La référence inférieure au tableau à %L est en dehors des limites (%ld > %ld) dans la dimension %d" +msgstr "L'indice à %L est au dessus de la limite supérieure du tableau (%ld > %ld) dans la dimension %d" #: fortran/data.cc:172 #, gcc-internal-format, gfc-internal-format @@ -68883,10 +68399,9 @@ msgid "Unused initialization string at %L because variable has zero length" msgstr "Chaîne d'initialisation inutilisée à %L car la variable a une longueur nulle" #: fortran/data.cc:211 -#, fuzzy, gcc-internal-format -#| msgid "Initialization string at %L was truncated to fit the variable (%ld/%ld)" +#, gcc-internal-format msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)" -msgstr "La chaine d'initialisation à %L a été tronquée pour tenir dans la variable (%ld/%ld)" +msgstr "La chaine d'initialisation à %L a été tronquée pour tenir dans la variable (%wd/%wd)" #: fortran/data.cc:220 fortran/resolve.cc:5287 #, gcc-internal-format, gfc-internal-format @@ -69985,15 +69500,14 @@ msgid "Duplicate symbol %qs in formal argument list at %C" msgstr "Symbole %qs dupliqué dans la liste d'arguments formels à %C" #: fortran/decl.cc:6805 -#, fuzzy, gcc-internal-format -#| msgid "Mismatch in MODULE PROCEDURE formal argument names (%s/%s) at %C" +#, gcc-internal-format msgid "MODULE PROCEDURE formal argument %qs conflicts with alternate return at %C" -msgstr "Désaccord dans les noms des arguments formels de MODULE PROCEDURE (%s/%s) à %C" +msgstr "L'argument formel %qs de MODULE PROCEDURE est en conflit avec le retour alterné à %C" #: fortran/decl.cc:6809 #, gcc-internal-format msgid "MODULE PROCEDURE formal argument is alternate return and conflicts with %qs in the separate declaration at %C" -msgstr "" +msgstr "L'argument formel de MODULE PROCEDURE est un retour alterné qui est en conflit avec %qs dans la déclaration séparée à %C" #: fortran/decl.cc:6814 #, gcc-internal-format, gfc-internal-format @@ -71596,10 +71110,9 @@ msgid "%qs at %L associated to expression cannot be used in a variable definitio msgstr "%qs à %L associé a une expression ne peut pas être utilisé dans un contexte de définition de variable (%s)" #: fortran/expr.cc:6507 -#, fuzzy, gcc-internal-format -#| msgid "%qs at %L associated to expression cannot be used in a variable definition context (%s)" +#, gcc-internal-format msgid "%qs at %L associated to pointer function target being used in a variable definition context (%s)" -msgstr "%qs à %L associé a une expression ne peut pas être utilisé dans un contexte de définition de variable (%s)" +msgstr "%qs à %L est associé a un pointeur qui cible une fonction qui est utilisé dans un contexte de définition de variable (%s)" #: fortran/expr.cc:6526 #, gcc-internal-format @@ -72124,10 +71637,9 @@ msgid "Actual argument at %L to assumed-type dummy has type parameters or is of msgstr "L'argument effectif à %L pour le muet de type tacite a des paramètres de type ou est de type dérivé avec une liaison à un type ou des procédures FINAL" #: fortran/interface.cc:3355 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qs" +#, gcc-internal-format, gfc-internal-format msgid "Unlimited polymorphic actual argument at %L is not matched with either an unlimited polymorphic or assumed type dummy argument" -msgstr "L'argument effectif polymorphique co-indexé à %L est passé à l'argument muet polymorphique %qs" +msgstr "L'argument effectif polymorphique illimité à %L n'a pas de correspondance avec un argument muet soit polymorphique illimité ou soit de type assumé" #: fortran/interface.cc:3379 #, gcc-internal-format @@ -72222,7 +71734,7 @@ msgstr "L'argument effectif pour %qs doit être ALLOCATABLE à %L" #: fortran/interface.cc:3693 #, gcc-internal-format msgid "Actual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLE" -msgstr "" +msgstr "L'argument effectif pour %qs à %L est le résultat d'une fonction et l'argument muet est ALLOCATABLE" #: fortran/interface.cc:3731 #, gcc-internal-format @@ -74250,10 +73762,9 @@ msgid "Symbol %qs in namelist %qs at %C must be declared before the namelist is msgstr "Le symbole %qs dans la liste de noms %qs à %C doit être déclaré avant que la liste de noms doit déclarée" #: fortran/match.cc:5652 -#, fuzzy, gcc-internal-format -#| msgid "Symbol %qs at %L conflicts with the symbol at %L" +#, gcc-internal-format msgid "Derived type %qs at %L conflicts with namelist object %qs at %C" -msgstr "Le symbole %qs à %L est en conflit avec le symbole à %L" +msgstr "Le type dérivé %qs à %L est en conflit avec l'objet de liste de noms %qs à %C" #: fortran/match.cc:5672 #, gcc-internal-format @@ -74792,7 +74303,7 @@ msgstr "L'élément de liste ne sera point co-indexé à %C" #: fortran/openmp.cc:492 #, gcc-internal-format msgid "%qs at %L is part of the common block % and may only be specificed implicitly via the named common block" -msgstr "" +msgstr "%qs à %L fait partie du bloc commun % et peut uniquement être spécifié implicitement via le bloc commun nommé" #: fortran/openmp.cc:517 fortran/openmp.cc:618 fortran/openmp.cc:948 #: fortran/openmp.cc:6135 @@ -74908,13 +74419,12 @@ msgstr "La directive %qs est mentionnée les deux fois dans les clauses ABSENT e #: fortran/openmp.cc:1745 #, gcc-internal-format, gfc-internal-format msgid "Duplicate %s modifier at %L in USES_ALLOCATORS clause" -msgstr "" +msgstr "Modificateur %s dupliqué à %L dans la clause USES_ALLOCATORS" #: fortran/openmp.cc:1779 -#, fuzzy, gcc-internal-format -#| msgid "expected %<(%> at %C" +#, gcc-internal-format msgid "Unexpected %<(%> at %C" -msgstr "%<(%> attendu à %C" +msgstr "%<(%> inattendu à %C" #: fortran/openmp.cc:1826 #, gcc-internal-format @@ -74963,16 +74473,14 @@ msgid "COLLAPSE clause argument not constant positive integer at %C" msgstr "L'argument de la clause COLLAPSE n'est pas une constante entière positive à %C" #: fortran/openmp.cc:2236 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, NONE or DEFAULT at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE or DEFAULT at %C" -msgstr "ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, NONE ou DEFAULT attendu à %C" +msgstr "ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE ou DEFAULT attendu à %C" #: fortran/openmp.cc:2258 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected SCALAR, AGGREGATE, ALLOCATABLE or POINTER at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected SCALAR, AGGREGATE, ALLOCATABLE, POINTER or ALL at %C" -msgstr "SCALAR, AGGREGATE, ALLOCATABLE ou POINTER attendu à %C" +msgstr "SCALAR, AGGREGATE, ALLOCATABLE, POINTER ou ALL attendu à %C" #: fortran/openmp.cc:2291 #, gcc-internal-format, gfc-internal-format @@ -75065,10 +74573,9 @@ msgid "Expected SEQ_CST, ACQUIRE or RELAXED at %C" msgstr "SEQ_CST, ACQUIRE ou RELAXED attendu à %C" #: fortran/openmp.cc:2816 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "WAIT clause at %L requires a scalar INTEGER expression" +#, gcc-internal-format, gfc-internal-format msgid "INDIRECT clause at %C requires a constant logical expression" -msgstr "La clause WAIT à %L requiert une expression INTEGER scalaire" +msgstr "La clause INDIRECT à %C requiert une expression logique constante" #: fortran/openmp.cc:3003 #, gcc-internal-format @@ -75086,10 +74593,9 @@ msgid "too many % modifiers at %L" msgstr "trop de modificateurs % à %L" #: fortran/openmp.cc:3125 -#, fuzzy, gcc-internal-format -#| msgid "too many % modifiers at %L" +#, gcc-internal-format msgid "too many % modifiers at %L" -msgstr "trop de modificateurs % à %L" +msgstr "trop de modificateurs % à %L" #: fortran/openmp.cc:3316 #, gcc-internal-format @@ -75197,22 +74703,19 @@ msgid "!$ACC ROUTINE with GANG, WORKER, or VECTOR clause is not permitted in PUR msgstr "!$ACC ROUTINE avec la clause GANG, WORKER ou VECTOR n'est pas permise dans la procédure PURE à %C" #: fortran/openmp.cc:4568 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected COMPILATION or EXECUTION in AT clause at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected ALIGN or ALLOCATOR clause at %C" -msgstr "COMPILATION ou EXECUTION attendu dans la clause AT à %C" +msgstr "clause ALIGN ou ALLOCATOR attendue à %C" #: fortran/openmp.cc:4576 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Sorry, %qs clause at %L on REQUIRES directive is not yet supported" +#, gcc-internal-format, gfc-internal-format msgid "Sorry, structure-element list item at %L in ALLOCATE directive is not yet supported" -msgstr "Désolé, la clause %qs à %L sur la directive REQUIRES n'est pas encore supportée" +msgstr "Désolé, l'élément de liste pour structure-element à %L dans la directive ALLOCATE n'est pas encore supportée" #: fortran/openmp.cc:4579 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected expression in %s statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "Unexpected expression as list item at %L in ALLOCATE directive" -msgstr "Expression attendue dans l'instruction %s à %C" +msgstr "Expression inattendue comme élément de liste à %L dans la directive ALLOCATE" #: fortran/openmp.cc:4650 #, gcc-internal-format, gfc-internal-format @@ -75237,7 +74740,7 @@ msgstr "IN, OUT, INOUT, INOUTSET, MUTEXINOUTSET suivi de %<)%> attendu à %C" #: fortran/openmp.cc:4771 #, gcc-internal-format, gfc-internal-format msgid "The same depend object should be used as DEPOBJ argument at %L and as DESTROY argument at %L" -msgstr "" +msgstr "Le même objet dépendant devrait être utilisé comme argument de DEPOBJ à %L et comme argument de DESTROY à %L" #: fortran/openmp.cc:4785 #, gcc-internal-format, gfc-internal-format @@ -75352,7 +74855,7 @@ msgstr "L'élément de liste %qs à %L est défini dans la directive OMP DECLARE #: fortran/openmp.cc:5547 fortran/openmp.cc:5601 #, gcc-internal-format, gfc-internal-format msgid "DEVICE_TYPE must be ANY when used with INDIRECT at %L" -msgstr "" +msgstr "DEVICE_TYPE doit être ANY lorsqu'il est utilisé avec INDIRECT à %L" #: fortran/openmp.cc:5557 #, gcc-internal-format, gfc-internal-format @@ -75375,10 +74878,9 @@ msgid "COMMON at %L set in previous OMP DECLARE TARGET directive to a different msgstr "COMMON à %L défini dans une directive OMP DECLARE TARGET précédente avec un DEVICE_TYPE différent" #: fortran/openmp.cc:5611 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "OMP DECLARE TARGET directive at %L with only DEVICE_TYPE clause is ignored" +#, gcc-internal-format, gfc-internal-format msgid "OMP DECLARE TARGET directive at %L with only DEVICE_TYPE or INDIRECT clauses is ignored" -msgstr "La directive OMP DECLARE TARGET à %L avec uniquement une clause DEVICE_TYPE est ignorée" +msgstr "La directive OMP DECLARE TARGET à %L avec uniquement une clause DEVICE_TYPE ou INDIRECT est ignorée" #: fortran/openmp.cc:5622 #, gcc-internal-format, gfc-internal-format @@ -75387,10 +74889,9 @@ msgstr "Erreur de syntaxe dans la liste !$OMP DECLARE TARGET à %C" #. FIXME: constant integer expressions. #: fortran/openmp.cc:5661 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected integer expression at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected trait-property-extension at %C" -msgstr "expression entière attendue à %C" +msgstr "trait-property-extension attendue à %C" #: fortran/openmp.cc:5676 fortran/openmp.cc:5773 fortran/openmp.cc:5904 #: fortran/openmp.cc:6054 fortran/openmp.cc:6082 @@ -75404,10 +74905,9 @@ msgid "expected trait selector name at %C" msgstr "nom de sélecteur de trait attendu à %C" #: fortran/openmp.cc:5717 -#, fuzzy, gcc-internal-format -#| msgid "selector %qs not allowed for context selector set %qs at %C" +#, gcc-internal-format msgid "unknown selector %qs for context selector set %qs at %C" -msgstr "sélecteur %qs pas permis pour l'ensemble %qs du sélecteur de contexte à %C" +msgstr "sélecteur %qs inconnu pour l'ensemble du sélecteur de contexte %qs à %C" #: fortran/openmp.cc:5735 #, gcc-internal-format @@ -75415,10 +74915,9 @@ msgid "selector %qs does not accept any properties at %C" msgstr "le sélecteur %qs n'accepte aucune propriété à %C" #: fortran/openmp.cc:5744 -#, fuzzy, gcc-internal-format -#| msgid "The %s directive cannot be specified within a %s region at %L" +#, gcc-internal-format msgid "% cannot be specified in traits in the %qs trait-selector-set at %C" -msgstr "La directive %s ne peut pas être spécifiée dans une région %s à %L" +msgstr "% ne peut pas être spécifié dans les traits dans le trait-selector-set %qs à %C" #: fortran/openmp.cc:5751 fortran/openmp.cc:5914 fortran/openmp.cc:6006 #: fortran/openmp.cc:6073 @@ -75427,16 +74926,14 @@ msgid "expected %<(%> at %C" msgstr "%<(%> attendu à %C" #: fortran/openmp.cc:5759 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be constant integer expression at %C" +#, gcc-internal-format msgid "% argument must be constant integer expression at %C" -msgstr "l'argument du score doit être une expression entière constante à %C" +msgstr "l'argument % doit être une expression entière constante à %C" #: fortran/openmp.cc:5767 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be non-negative at %C" +#, gcc-internal-format msgid "% argument must be non-negative at %C" -msgstr "l'argument du score doit être non négatif à %C" +msgstr "l'argument % doit être non négatif à %C" #: fortran/openmp.cc:5779 #, gcc-internal-format, gfc-internal-format @@ -75459,22 +74956,19 @@ msgid "expected expression at %C" msgstr "expression attendue à %C" #: fortran/openmp.cc:5853 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "property must be constant integer or logical expression at %C" +#, gcc-internal-format, gfc-internal-format msgid "property must be a constant logical expression at %C" -msgstr "la propriété doit être une expression entière constante à %C" +msgstr "la propriété doit être une expression logique constante à %C" #: fortran/openmp.cc:5856 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "property must be constant integer expression" +#, gcc-internal-format, gfc-internal-format msgid "property must be a constant integer expression at %C" -msgstr "la propriété doit être une expression entière constante" +msgstr "la propriété doit être une expression entière constante à %C" #: fortran/openmp.cc:5868 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "property must be constant integer or logical expression at %C" +#, gcc-internal-format, gfc-internal-format msgid "property must be a conforming device number at %C" -msgstr "la propriété doit être une expression entière constante à %C" +msgstr "la propriété doit être un numéro de périphérique conforme à %C" #: fortran/openmp.cc:5882 #, gcc-internal-format, gfc-internal-format @@ -75482,10 +74976,9 @@ msgid "expected simd clause at %C" msgstr "clause simd attendue à %C" #: fortran/openmp.cc:5955 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "expected trait selector name at %C" +#, gcc-internal-format, gfc-internal-format msgid "expected context selector set name at %C" -msgstr "nom de sélecteur de trait attendu à %C" +msgstr "nom d'ensemble de sélecteur de contexte attendu à %C" #: fortran/openmp.cc:5962 #, gcc-internal-format @@ -75583,10 +75076,9 @@ msgid "!$OMP REQUIRES at %C must appear in the specification part of a program u msgstr "!$OMP REQUIRES à %C doit apparaître dans la partie de spécification de l'unité de programme" #: fortran/openmp.cc:6456 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected SEQ_CST, ACQ_REL or RELAXED for ATOMIC_DEFAULT_MEM_ORDER clause at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected ACQ_REL, ACQUIRE, RELAXED, RELEASE or SEQ_CST for ATOMIC_DEFAULT_MEM_ORDER clause at %C" -msgstr "SEQ_CST, ACQ_REL ou RELAXED attendu pour la clause ATOMIC_DEFAULT_MEM_ORDER à %C" +msgstr "ACQ_REL, ACQUIRE, RELAXED, RELEASE ou SEQ_CST attendu pour la clause ATOMIC_DEFAULT_MEM_ORDER à %C" #: fortran/openmp.cc:6472 #, gcc-internal-format, gfc-internal-format @@ -75639,16 +75131,14 @@ msgid "!$OMP ATOMIC at %L with %s clause requires %s clause" msgstr "!$OMP ATOMIC à %L avec la clause %s requiert la clause %s" #: fortran/openmp.cc:6907 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "!$OMP ATOMIC WRITE at %L incompatible with ACQUIRE clause" +#, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC WRITE at %L incompatible with ACQUIRES clause implicitly provided by a REQUIRES directive" -msgstr "!$OMP ATOMIC WRITE à %L est incompatible avec la clause ACQUIRE" +msgstr "!$OMP ATOMIC WRITE à %L est incompatible avec la clause ACQUIRE implicitement fournie par une directive REQUIRES" #: fortran/openmp.cc:6918 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "!$OMP ATOMIC READ at %L incompatible with RELEASE clause" +#, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC READ at %L incompatible with RELEASE clause implicitly provided by a REQUIRES directive" -msgstr "!$OMP ATOMIC READ à %L est incompatible avec la clause RELEASE" +msgstr "!$OMP ATOMIC READ à %L est incompatible avec la clause RELEASE implicitement fournie par une directive REQUIRES" #: fortran/openmp.cc:6936 #, gcc-internal-format, gfc-internal-format @@ -75773,80 +75263,77 @@ msgstr "La sous-routine %s déclarée implicitement est utilisé dans !$OMP DECL #: fortran/openmp.cc:7349 #, gcc-internal-format msgid "Unexpected function-result variable %qs at %L in declarative !$OMP ALLOCATE" -msgstr "" +msgstr "Variable de résultat de fonction %qs inattendue à %L dans la déclarative !$OMP ALLOCATE" #: fortran/openmp.cc:7355 -#, fuzzy, gcc-internal-format -#| msgid "Procedure pointer %qs in %s clause at %L" +#, gcc-internal-format msgid "Procedure pointer %qs not supported with !$OMP ALLOCATE at %L" -msgstr "Pointeur de procédure %qs dans la clause %s à %L" +msgstr "Pointeur de procédure %qs pas supporté avec !$OMP ALLOCATE à %L" #: fortran/openmp.cc:7361 #, gcc-internal-format msgid "Argument %qs at %L to declarative !$OMP ALLOCATE directive must be a variable" -msgstr "" +msgstr "L'argument %qs à %L pour la directive déclarative !$OMP ALLOCATE doit être une variable" #: fortran/openmp.cc:7368 #, gcc-internal-format msgid "Argument %qs at %L to declarative !$OMP ALLOCATE shall be in the same scope as the variable declaration" -msgstr "" +msgstr "L'argument %qs à %L pour la déclarative !$OMP ALLOCATE doit être dans la même portée que la déclaration de la variable" #: fortran/openmp.cc:7375 -#, fuzzy, gcc-internal-format -#| msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE" +#, gcc-internal-format msgid "Unexpected dummy argument %qs as argument at %L to declarative !$OMP ALLOCATE" -msgstr "L'argument muet de type objet passé de %qs à %L ne peut pas être ALLOCATABLE" +msgstr "Argument muet %qs inattendu comme argument à %L pour la déclarative !$OMP ALLOCATE" #: fortran/openmp.cc:7381 #, gcc-internal-format msgid "Unexpected coarray argument %qs as argument at %L to declarative !$OMP ALLOCATE" -msgstr "" +msgstr "Argument co-tableau %qs inattendu comme argument à %L pour la déclarative !$OMP ALLOCATE" #: fortran/openmp.cc:7389 #, gcc-internal-format msgid "Duplicated common block % in !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Bloc commun % dupliqué dans !$OMP ALLOCATE à %L" #: fortran/openmp.cc:7396 #, gcc-internal-format msgid "Duplicated variable %qs in !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Variable %qs dupliquée dans !$OMP ALLOCATE à %L" #: fortran/openmp.cc:7407 #, gcc-internal-format msgid "Sorry, EQUIVALENCE object %qs not supported with !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Désolé, EQUIVALENCE de l'objet %qs n'est pas supportée avec !$OMP ALLOCATE à %L" #: fortran/openmp.cc:7416 #, gcc-internal-format msgid "Sorry, Cray pointers and pointees such as %qs are not supported with !$OMP ALLOCATE at %L" -msgstr "" +msgstr "Désolé, les pointeurs Cray et la cible du pointage telle que %qs ne sont pas supportées avec !$OMP ALLOCATE à %L" #: fortran/openmp.cc:7425 #, gcc-internal-format msgid "Unexpected allocatable variable %qs at %L in declarative !$OMP ALLOCATE directive" -msgstr "" +msgstr "Variable allouable %qs inattendue à %L dans la directive déclarative !$OMP ALLOCATE" #: fortran/openmp.cc:7430 #, gcc-internal-format msgid "Unexpected pointer variable %qs at %L in declarative !$OMP ALLOCATE directive" -msgstr "" +msgstr "Variable pointeur %qs inattendue à %L dans la directive déclarative !$OMP ALLOCATE" #: fortran/openmp.cc:7441 fortran/openmp.cc:7996 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "ALIGN modifier requires at %L a scalar positive constant integer alignment expression that is a power of two" +#, gcc-internal-format, gfc-internal-format msgid "ALIGN requires a scalar positive constant integer alignment expression at %L that is a power of two" -msgstr "modificateur ALIGN requiert à %L une expression d'alignement qui est un entier constant positif et scalaire et est une puissance de deux" +msgstr "ALIGN requiert une expression d'alignement qui est une constante entière positive scalaire à %L et qui est une puissance de deux" #: fortran/openmp.cc:7456 #, gcc-internal-format msgid "An ALLOCATOR clause is required as the list item %<%s%s%s%> at %L has the SAVE attribute" -msgstr "" +msgstr "Une clause ALLOCATOR est requise car l'élément de liste %<%s%s%s%> à %L a l'attribut SAVE" #: fortran/openmp.cc:7461 #, gcc-internal-format msgid "Predefined allocator required in ALLOCATOR clause at %L as the list item %<%s%s%s%> at %L has the SAVE attribute" -msgstr "" +msgstr "Allocateur prédéfini requis dans la clause ALLOCATOR à %L car l'élément de liste %<%s%s%s%> à %L a l'attribut SAVE" #: fortran/openmp.cc:7475 fortran/openmp.cc:7980 #, gcc-internal-format @@ -75886,10 +75373,9 @@ msgid "IF clause modifier %s at %L not appropriate for the current OpenMP constr msgstr "Le modificateur %s de la clause IF à %L n'est pas approprié pour la construction OpenMP actuelle" #: fortran/openmp.cc:7687 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "IF clause at %L requires a scalar LOGICAL expression" +#, gcc-internal-format, gfc-internal-format msgid "SELF clause at %L requires a scalar LOGICAL expression" -msgstr "La clause IF à %L requiert une expression LOGICAL scalaire" +msgstr "La clause SELF à %L requiert une expression LOGICAL scalaire" #: fortran/openmp.cc:7696 #, gcc-internal-format, gfc-internal-format @@ -75975,52 +75461,49 @@ msgid "Symbol %qs present on both data and map clauses at %L" msgstr "Le symbole %qs est présent à la fois dans les clauses data et map à %L" #: fortran/openmp.cc:8021 -#, fuzzy, gcc-internal-format -#| msgid "%qs appears more than once in % clauses at %L" +#, gcc-internal-format msgid "%qs appears more than once in % at %L" -msgstr "%qs apparaît plus d'une fois dans les clauses % à %L" +msgstr "%qs apparaît plus d'une fois dans % à %L" #: fortran/openmp.cc:8063 #, gcc-internal-format msgid "%qs specified in % clause at %L but not in an explicit privatization clause" -msgstr "%qs spécifié dans la clause % à %L mais pas dans dans une clause de privatisation explicite" +msgstr "%qs spécifié dans la clause % à %L mais pas dans une clause de privatisation explicite" #: fortran/openmp.cc:8091 -#, fuzzy, gcc-internal-format -#| msgid "Unexpected coarray designator at %C" +#, gcc-internal-format msgid "Unexpected coarray %qs in % at %L" -msgstr "Désignateur de co-tableau inattendu à %C" +msgstr "Co-tableau %qs inattendu dans % à %L" #: fortran/openmp.cc:8105 -#, fuzzy, gcc-internal-format -#| msgid "%qs specified in % clause at %L but not in an explicit privatization clause" +#, gcc-internal-format msgid "%qs specified in % at %L but not in the associated ALLOCATE statement" -msgstr "%qs spécifié dans la clause % à %L mais pas dans dans une clause de privatisation explicite" +msgstr "%qs spécifié dans % à %L mais pas dans l'instruction ALLOCATE associée" #: fortran/openmp.cc:8139 #, gcc-internal-format msgid "%qs listed in % statement at %L but it is neither explicitly in listed in the % directive nor exists a directive without argument list" -msgstr "" +msgstr "%qs est listé dans l'instruction % à %L mais il n'est pas listé explicitement dans la directive % et il n'existe pas de directive sans liste d'arguments" #: fortran/openmp.cc:8150 #, gcc-internal-format msgid "Unexpected coarray %qs in % at %L, implicitly listed in % at %L" -msgstr "" +msgstr "Co-tableau %qs inattendu dans % à %L, listé implicitement dans % à %L" #: fortran/openmp.cc:8175 #, gcc-internal-format msgid "ALLOCATORS directive at %L inside a target region must specify an ALLOCATOR modifier for %qs" -msgstr "" +msgstr "La directive ALLOCATORS à %L dans une région cible doit spécifier un modificateur ALLOCATOR pour %qs" #: fortran/openmp.cc:8179 #, gcc-internal-format msgid "ALLOCATE directive at %L inside a target region must specify an ALLOCATOR clause for %qs" -msgstr "" +msgstr "La directive ALLOCATE à %L dans une région cible doit spécifier une clause ALLOCATOR pour %qs" #: fortran/openmp.cc:8183 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATE directive at %L inside a target region must specify an ALLOCATOR clause" -msgstr "" +msgstr "La directive ALLOCATE à %L dans une région cible doit spécifier une clause ALLOCATOR" #: fortran/openmp.cc:8206 #, gcc-internal-format @@ -76202,28 +75685,27 @@ msgstr "La liste d'éléments %qs dans la clause %s à %L doit être TYPE(C_PTR) #: fortran/openmp.cc:8709 #, gcc-internal-format msgid "Memspace %qs at %L in USES_ALLOCATORS must be a predefined memory space" -msgstr "" +msgstr "L'espace mémoire %qs à %L dans USES_ALLOCATORS doit être un espace mémoire prédéfini" #: fortran/openmp.cc:8717 -#, fuzzy, gcc-internal-format -#| msgid "%qs at %L should be a scalar of type integer(kind=omp_event_handle_kind)" +#, gcc-internal-format msgid "Allocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind %" -msgstr "%qs à %L devrait être un type scalaire de type integer(kind=omp_event_handle_kind)" +msgstr "L'allocateur %qs à %L dans USES_ALLOCATORS doit être un entier scalaire de type %" #: fortran/openmp.cc:8725 #, gcc-internal-format msgid "Allocator %qs at %L in USES_ALLOCATORS must either a variable or a predefined allocator" -msgstr "" +msgstr "L'allocateur %qs à %L dans USES_ALLOCATORS doit soit être une variable ou soit un allocateur prédéfini" #: fortran/openmp.cc:8730 #, gcc-internal-format msgid "A memory space or traits array may not be specified for predefined allocator %qs at %L" -msgstr "" +msgstr "Un espace mémoire ou un tableau de traits ne peut pas spécifier l'allocateur prédéfini %qs à %L" #: fortran/openmp.cc:8741 #, gcc-internal-format msgid "Traits array %qs in USES_ALLOCATORS %L must be a one-dimensional named constant array of type %" -msgstr "" +msgstr "Le tableau de traits %qs dans USES_ALLOCATORS %L doit être un tableau de constantes nommées à une dimension de type %" #: fortran/openmp.cc:8771 #, gcc-internal-format @@ -76359,7 +75841,7 @@ msgstr "la clause % à %L ne doit pas être utilisée avec la clause %< #: fortran/openmp.cc:9226 #, gcc-internal-format msgid "% construct at %L requires % clause" -msgstr "" +msgstr "la construction % à %L requiert la clause %" #: fortran/openmp.cc:9380 #, gcc-internal-format, gfc-internal-format @@ -76497,35 +75979,34 @@ msgid "unexpected !$OMP ATOMIC expression at %L" msgstr "expression !$OMP ATOMIC inattendue à %L" #: fortran/openmp.cc:9948 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "With INSCAN at %L, expected loop body with !$OMP SCAN between two structured-block-sequences" +#, gcc-internal-format, gfc-internal-format msgid "With INSCAN at %L, expected loop body with !$OMP SCAN between two structured block sequences" msgstr "Avec INSCAN à %L, on attend un corps de boucle avec !$OMP SCAN entre deux séquences de blocs structurés" #: fortran/openmp.cc:9955 #, gcc-internal-format, gfc-internal-format msgid "!$OMP SCAN at %L with zero executable statements in preceding structured block sequence" -msgstr "" +msgstr "!$OMP SCAN à %L avec zéro instructions exécutables dans la séquence de blocs structurés précédente" #: fortran/openmp.cc:9962 #, gcc-internal-format, gfc-internal-format msgid "!$OMP SCAN at %L with zero executable statements in succeeding structured block sequence" -msgstr "" +msgstr "!$OMP SCAN à %L avec zéro instructions exécutables dans la séquence de blocs structurés suivante" #: fortran/openmp.cc:10176 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain loop in intervening code at %L" -msgstr "" +msgstr "%s ne peut pas contenir de boucle dans le code intervenant à %L" #: fortran/openmp.cc:10256 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP directive in intervening code at %L" -msgstr "" +msgstr "%s ne peut pas contenir de directive OpenMP dans le code intervenant à %L" #: fortran/openmp.cc:10268 fortran/openmp.cc:10294 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP API call in intervening code at %L" -msgstr "" +msgstr "%s ne peut pas contenir d'appel à l'api OpenMP dans le code intervenant à %L" #: fortran/openmp.cc:10822 #, gcc-internal-format, gfc-internal-format @@ -76563,10 +76044,9 @@ msgid "%s iteration variable used in more than one loop at %L" msgstr "La variable d'itération %s est utilisée dans plus d'une boucle à %L" #: fortran/openmp.cc:10874 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "iteration variable %qE should not be reduction" +#, gcc-internal-format, gfc-internal-format msgid "%s iteration variable at %L is bound in intervening code" -msgstr "la variable d'itération %qE ne devrait pas être une réduction" +msgstr "la variable d'itération %s à %L est liée dans du code intervenant" #: fortran/openmp.cc:10883 #, gcc-internal-format, gfc-internal-format @@ -76574,10 +76054,9 @@ msgid "%s loop start expression not in canonical form at %L" msgstr "l'expression de début de boucle %s n'est pas sous la forme canonique à %L" #: fortran/openmp.cc:10890 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%s loop start expression not in canonical form at %L" +#, gcc-internal-format, gfc-internal-format msgid "%s loop start expression at %L uses variable bound in intervening code" -msgstr "l'expression de début de boucle %s n'est pas sous la forme canonique à %L" +msgstr "l'expression de début de boucle %s à %L utilise une variable liée dans du code intervenant" #: fortran/openmp.cc:10899 #, gcc-internal-format, gfc-internal-format @@ -76587,7 +76066,7 @@ msgstr "l'expression de fin de la boucle %s n'est pas sous la forme canonique à #: fortran/openmp.cc:10906 #, gcc-internal-format, gfc-internal-format msgid "%s loop end expression at %L uses variable bound in intervening code" -msgstr "" +msgstr "l'expression de fin de boucle %s à %L utilise une variable liée dans du code intervenant" #: fortran/openmp.cc:10913 #, gcc-internal-format, gfc-internal-format @@ -76602,26 +76081,24 @@ msgstr "l'incrément de la boucle %s n'est pas sous la forme canonique à %L" #: fortran/openmp.cc:10926 #, gcc-internal-format, gfc-internal-format msgid "%s loop increment expression at %L uses variable bound in intervening code" -msgstr "" +msgstr "l'expression d'incrément de boucle %s à %L utilise une variable liée dans du code intervenant" #. Parse error, can't recover from this. #: fortran/openmp.cc:10944 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "not enough DO loops for collapsed %s at %L" +#, gcc-internal-format, gfc-internal-format msgid "not enough DO loops for collapsed %s (level %d) at %L" -msgstr "pas assez de boucle DO pour le %s coalescé à %L" +msgstr "pas assez de boucle DO pour le %s coalescé (niveau %d) à %L" # %s peut être « tiled » ou « collapsed », sans traduction… #: fortran/openmp.cc:10956 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%s !$ACC LOOP loops not perfectly nested at %L" +#, gcc-internal-format, gfc-internal-format msgid "%s inner loops must be perfectly nested with ORDERED clause at %L" -msgstr "Les boucles %s !$ACC LOOP sont imparfaitement imbriquées à %L" +msgstr "les boucles internes %s doivent être parfaitement imbriquées avec la clause ORDERED à %L" #: fortran/openmp.cc:10963 #, gcc-internal-format, gfc-internal-format msgid "%s inner loops must be perfectly nested with REDUCTION INSCAN clause at %L" -msgstr "" +msgstr "les boucles internes %s doivent être parfaitement imbriquées avec la clause REDUCTION INSCAN à %L" #: fortran/openmp.cc:11190 fortran/openmp.cc:11203 #, gcc-internal-format, gfc-internal-format @@ -76689,12 +76166,12 @@ msgstr "NOM %qs invalide dans !$ACC ROUTINE ( NOM ) à %L" #: fortran/openmp.cc:11539 #, gcc-internal-format, gfc-internal-format msgid "!$OMP TARGET region at %L with a nested TEAMS at %L may not contain any other statement, declaration or directive outside of the single TEAMS construct" -msgstr "" +msgstr "la région !$OMP TARGET à %L avec un TEAMS imbriqué à %L ne peut contenir aucune autre instruction, déclaration ou directive en dehors de la seule construction TEAMS" #: fortran/openmp.cc:11543 #, gcc-internal-format, gfc-internal-format msgid "!$OMP TARGET region at %L with a nested TEAMS may not contain any other statement, declaration or directive outside of the single TEAMS construct" -msgstr "" +msgstr "la région !$OMP TARGET à %L dans un TEAMS imbriqué ne peut contenir aucune autre instruction, déclaration ou directive en dehors de la seule construction TEAMS" #: fortran/openmp.cc:11637 #, gcc-internal-format, gfc-internal-format @@ -76874,23 +76351,22 @@ msgstr "Directive OpenACC inclassable à %C" #: fortran/parse.cc:817 #, gcc-internal-format msgid "%qs directive at %L must either have a variable argument or, if associated with an ALLOCATE stmt, must be preceded by an executable statement or OpenMP construct" -msgstr "" +msgstr "la directive %s à %L doit soit avoir un argument variable ou soit, si associée avec l'instruction ALLOCATE, doit être précédée par une instruction exécutable ou une construction OpenMP" #: fortran/parse.cc:829 #, gcc-internal-format msgid "Structure-component expression at %L in %qs directive not permitted in declarative directive; as directive associated with an ALLOCATE stmt it must be preceded by an executable statement or OpenMP construct" -msgstr "" +msgstr "L'expression composant structuré à %L dans la directive %qs n'est pas permise dans une directive déclarative car la directive associée avec une instruction ALLOCATE doit être précédée par une instruction exécutable ou une construction OpenMP" #: fortran/parse.cc:855 #, gcc-internal-format msgid "%qs directive at %L associated with an ALLOCATE stmt must be preceded by an executable statement or OpenMP construct; note the variables in the list all have the allocatable or pointer attribute" -msgstr "" +msgstr "La directive %qs à %L associée avec une instruction ALLOCATE doit être précédée par une instruction exécutable ou une construction OpenMP ; notez que les variables dans la liste ont toutes l'attribut allouable ou pointeur" #: fortran/parse.cc:1023 fortran/parse.cc:1325 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "OpenACC directives other than ROUTINE may not appear in PURE procedures at %C" +#, gcc-internal-format, gfc-internal-format msgid "OpenMP directive at %C is not pure and thus may not appear in a PURE procedure" -msgstr "Les directives OpenACC autres que ROUTINE ne peuvent pas apparaître dans des procédures PURE à %C" +msgstr "La directive OpenMP à %C n'est pas pure et ne peut donc pas apparaître dans une procédure PURE" #: fortran/parse.cc:1296 #, gcc-internal-format, gfc-internal-format @@ -76900,7 +76376,7 @@ msgstr "Directive OpenMP inclassable à %C" #: fortran/parse.cc:1312 #, gcc-internal-format msgid "OpenMP ERROR directive at %L with % clause in a PURE procedure" -msgstr "" +msgstr "Directive OpenMP ERROR à %L avec la clause % dans une procédure PURE" #: fortran/parse.cc:1440 #, gcc-internal-format, gfc-internal-format @@ -77311,19 +76787,17 @@ msgstr "!$ACC END LOOP redondant à %C" #: fortran/parse.cc:5809 #, gcc-internal-format, gfc-internal-format msgid "%s statements at %L and %L have both no list item but only one may" -msgstr "" +msgstr "Les instructions %s à %L et %L ont toutes les deux aucun élément de liste mais seulement l'une des deux le peux" #: fortran/parse.cc:5829 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected expression at %C in PARAMETER statement" +#, gcc-internal-format, gfc-internal-format msgid "Unexpected %s at %C; expected ALLOCATE or %s statement" -msgstr "Expression attendue à %C dans l'instruction PARAMETER" +msgstr "%s attendu à %C ; ALLOCATE ou instruction %s attendu" #: fortran/parse.cc:5832 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Unexpected junk after ELSE statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "Unexpected %s at %C; expected ALLOCATE statement after %s" -msgstr "Rebut inattendu après l'instruction ELSE à %C" +msgstr "%s inattendu à %C ; instruction ALLOCATE attendue après %s" #: fortran/parse.cc:6120 #, gcc-internal-format, gfc-internal-format @@ -77571,16 +77045,12 @@ msgid "match_string_constant(): Delimiter not found" msgstr "match_string_constant(): Délimiteur pas trouvé" #: fortran/primary.cc:1193 -#, fuzzy -#| msgid "Substring start index (%ld) at %L below 1" msgid "Substring start index (%td) at %L below 1" -msgstr "L'index de départ de la sous-chaîne (%ld) à %L est inférieure à 1" +msgstr "L'index de départ de la sous-chaîne (%td) à %L est inférieure à 1" #: fortran/primary.cc:1199 -#, fuzzy -#| msgid "Substring end index (%ld) at %L exceeds string length" msgid "Substring end index (%td) at %L exceeds string length" -msgstr "L'index de fin de la sous-chaîne (%ld) à %L excède la longueur de la chaîne" +msgstr "L'index de fin de la sous-chaîne (%td) à %L excède la longueur de la chaîne" #: fortran/primary.cc:1284 #, gcc-internal-format, gfc-internal-format @@ -77783,10 +77253,8 @@ msgid "Too many components in structure constructor at %L" msgstr "Trop de composants dans le constructeur de structure à %L" #: fortran/primary.cc:3242 -#, fuzzy -#| msgid "CHARACTER expression will be truncated in constructor (%ld/%ld) at %L" msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L" -msgstr "L'expression CHARACTER sera tronquée dans le constructeur (%ld/%ld) à %L" +msgstr "L'expression CHARACTER sera tronquée dans le constructeur (%td/%td) à %L" #: fortran/primary.cc:3260 #, gcc-internal-format @@ -78106,10 +77574,9 @@ msgid "%qs at %L cannot appear in COMMON [F2008:C5100]" msgstr "%qs à %L ne peut pas apparaître dans COMMON [F2008:C5100]" #: fortran/resolve.cc:1016 -#, fuzzy, gcc-internal-format -#| msgid "Global entity %qs at %L cannot appear in a COMMON block at %L" +#, gcc-internal-format msgid "Automatic object %qs at %L cannot appear in COMMON at %L" -msgstr "L'entité globale %qs à %L ne peut pas apparaître dans un bloc COMMON à %L" +msgstr "L'objet automatique %qs à %L ne peut pas apparaître dans COMMON à %L" #: fortran/resolve.cc:1028 #, gcc-internal-format @@ -78786,10 +78253,9 @@ msgid "Assumed-rank variable %s at %L shall not have a subobject reference" msgstr "La variable de rang tacite %s à %L n'aura point de référence à un sous-objet" #: fortran/resolve.cc:5909 -#, fuzzy, gcc-internal-format -#| msgid "gfc_variable_attr(): Bad array reference" +#, gcc-internal-format msgid "Scalar variable %qs has an array reference at %L" -msgstr "gfc_variable_attr(): Mauvaise référence à un tableau" +msgstr "La variable scalaire %qs a une référence à un tableau à %L" #: fortran/resolve.cc:6054 #, gcc-internal-format @@ -79415,16 +78881,14 @@ msgid "gfc_resolve_blocks(): Bad block type" msgstr "gfc_resolve_blocks(): Mauvais type de bloc" #: fortran/resolve.cc:11232 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Data transfer element at %L cannot have procedure pointer components" +#, gcc-internal-format, gfc-internal-format msgid "Variable in the ordinary assignment at %L is a procedure pointer component" -msgstr "L'élément de transfert de données à %L ne peut pas avoir de composants de pointeur de procédure" +msgstr "La variable dans l'assignation ordinaire à %L est un composant pointeur de procédure" #: fortran/resolve.cc:11293 -#, fuzzy, gcc-internal-format -#| msgid "CHARACTER expression will be truncated in assignment (%ld/%ld) at %L" +#, gcc-internal-format msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L" -msgstr "L'expression CHARACTER sera tronquée dans l'affectation (%ld/%ld) à %L" +msgstr "L'expression CHARACTER sera tronquée dans l'affectation (%wd/%wd) à %L" #: fortran/resolve.cc:11325 #, gcc-internal-format, gfc-internal-format @@ -80414,10 +79878,9 @@ msgid "DATA statement at %L has more variables than values" msgstr "L'instruction DATA à %L a plus de variables que de valeurs" #: fortran/resolve.cc:17044 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Nonconstant array section at %L in DATA statement" +#, gcc-internal-format, gfc-internal-format msgid "Non-constant character length at %L in DATA statement" -msgstr "Section de tableau non constante à %L dans l'instruction DATA" +msgstr "Longueur de caractère non constante à %L dans l'instruction DATA" #: fortran/resolve.cc:17072 #, gcc-internal-format, gfc-internal-format @@ -80976,10 +80439,9 @@ msgid "Result of SCALE overflows its kind at %L" msgstr "Le résultat de SCALE déborde de son sous-type à %L" #: fortran/simplify.cc:7634 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L must be of rank %d" +#, gcc-internal-format, gfc-internal-format msgid "DIM argument (%d) to intrinsic SIZE at %L out of range (1:%d)" -msgstr "L'argument %qs de l'intrinsèque %qs à %L doit être de rang %d" +msgstr "L'argument DIM (%d) pour la taille intrinsèque à %L est hors limites (1:%d)" #: fortran/simplify.cc:7759 #, gcc-internal-format @@ -81477,10 +80939,9 @@ msgid "bad expression type during walk (%d)" msgstr "mauvais type d'expression durant le parcours (%d)" #: fortran/trans-common.cc:411 -#, fuzzy, gcc-internal-format -#| msgid "Named COMMON block %qs at %L shall be of the same size as elsewhere (%lu vs %lu bytes)" +#, gcc-internal-format msgid "Named COMMON block %qs at %L shall be of the same size as elsewhere (%wu vs %wu bytes)" -msgstr "Le bloc COMMON nommé %qs à %L sera de la même taille que celui ailleurs (%lu vs %lu octets)" +msgstr "Le bloc COMMON nommé %qs à %L sera de la même taille que celui ailleurs (%wu vs %wu octets)" #: fortran/trans-common.cc:819 #, gcc-internal-format @@ -81586,13 +81047,12 @@ msgstr "Paramètre de type différé pas encore supporté" #: fortran/trans-decl.cc:5224 #, gcc-internal-format msgid "Sorry, !$OMP allocate for COMMON block variable %qs at %L not supported" -msgstr "" +msgstr "Désolé, l'allocation !$OMP pour la variable de bloc COMMON %qs à %L n'est pas supportée" #: fortran/trans-decl.cc:5231 -#, fuzzy, gcc-internal-format -#| msgid "Character dummy variable %qs at %L with VALUE attribute must have constant length" +#, gcc-internal-format msgid "Sorry, !$OMP allocate for variable %qs at %L with SAVE attribute not yet implemented" -msgstr "La variable muette caractère %qs à %L avec l'attribut VALUE doit avoir une longueur constante" +msgstr "Désolé, l'allocation !$OMP pour la variable %qs à %L avec l'attribut SAVE n'est pas encore implémentée" #: fortran/trans-decl.cc:5437 #, gcc-internal-format @@ -81753,28 +81213,27 @@ msgstr "expression non gérée" #: fortran/trans-openmp.cc:4100 #, gcc-internal-format msgid "% clause with traits and memory spaces" -msgstr "" +msgstr "clause % avec des trais et des espaces mémoire" #: fortran/trans-openmp.cc:5024 #, gcc-internal-format msgid "% at %L requires %<-fopenmp-allocators%>" -msgstr "" +msgstr "% à %L requiert %<-fopenmp-allocators%>" #: fortran/trans-openmp.cc:5027 #, gcc-internal-format msgid "All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>" -msgstr "" +msgstr "Tous les fichiers qui pourraient désallouer une telle variable doivent être compilés avec %<-fopenmp-allocators%>" #: fortran/trans-openmp.cc:5030 #, gcc-internal-format msgid "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator" -msgstr "" +msgstr "Ceci inclut explicitement DEALLOCATE, la réallocation d'affectations intrinsèques, INTENT(OUT) pour des arguments muets allouables et la réallocation de composant allouables alloués avec un allocateur OpenMP" #: fortran/trans-openmp.cc:5607 fortran/trans-openmp.cc:5627 -#, fuzzy, gcc-internal-format -#| msgid "non-rectangular loop nest with step other than constant 1 or -1 for %qs" +#, gcc-internal-format msgid "non-rectangular loop nest with non-constant step for %qs" -msgstr "boucle imbriquée non rectangulaire avec un pas autre que les constantes 1 ou -1 pour %qs" +msgstr "boucle imbriquée non rectangulaire avec un pas non constant pour %qs" #: fortran/trans-openmp.cc:5629 #, gcc-internal-format @@ -82353,24 +81812,22 @@ msgstr "l'argument de CAP n'est pas une constante ni une variable de type CHAR" #: m2/gm2-gcc/m2expr.cc:4029 #, gcc-internal-format msgid "constant literal %qs exceeds internal ZTYPE range" -msgstr "" +msgstr "le littéral constant %qs dépasse la plage du ZTYPE interne" #: m2/gm2-gcc/m2expr.cc:3949 #, gcc-internal-format msgid "constant literal %qs contains %qc, expected 0 or 1" -msgstr "" +msgstr "le littéral constant %qs contient %qc, 0 ou 1 attendu" #: m2/gm2-gcc/m2expr.cc:3964 m2/gm2-gcc/m2expr.cc:3976 -#, fuzzy, gcc-internal-format -#| msgid "language dialect differs %qs, expected %qs" +#, gcc-internal-format msgid "constant literal %qs contains %qc, expected %qs" -msgstr "le dialecte du langage %qs diffère, %qs attendu" +msgstr "le littéral constant %qs contient %qc, %qs attendu" #: m2/gm2-gcc/m2expr.cc:3995 -#, fuzzy, gcc-internal-format -#| msgid "target & host is %qs:%qs, expected %qs:%qs" +#, gcc-internal-format msgid "constant literal %qs contains %qc, expected %qs or %qs" -msgstr "la cible et l'hôte sont %qs:%qs, %qs:%qs attendu" +msgstr "le littéral constant %qs contient %qc, %qs ou %qs attendu" #: m2/gm2-gcc/m2expr.cc:4061 #, gcc-internal-format @@ -83534,7 +82991,7 @@ msgstr "paramètre %qE inutilisé" #: rust/resolve/rust-ast-resolve-expr.cc:167 #, gcc-internal-format, gfc-internal-format msgid "are you trying to break %s? how dare you?" -msgstr "" +msgstr "essayez-vous de casser %s ? Comment osez vous ?" #~ msgid "to generate dependencies you must specify '-fcpp' " #~ msgstr "pour générer les dépendances, vous devez spécifier « -fcpp »" diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot index 94f6fe77053b..70c952734a37 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: https://gcc.gnu.org/bugs/\n" -"POT-Creation-Date: 2024-02-16 21:35+0000\n" +"POT-Creation-Date: 2024-04-10 17:10+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -367,7 +367,7 @@ msgstr "" msgid "consider using `-pg' instead of `-p' with gprof (1)" msgstr "" -#: config/arc/arc.h:68 config/mips/mips.h:1502 +#: config/arc/arc.h:68 config/mips/mips.h:1505 msgid "may not use both -EB and -EL" msgstr "" @@ -446,7 +446,7 @@ msgstr "" msgid "consider using `-pg' instead of `-p' with gprof(1)" msgstr "" -#: config/rs6000/rs6000.h:170 +#: config/rs6000/rs6000.h:168 msgid "Missing -mcpu option in ASM_CPU_SPEC?" msgstr "" @@ -543,11 +543,11 @@ msgstr "" msgid "Warn about creation of array temporaries." msgstr "" -#: fortran/lang.opt:214 fortran/lang.opt:539 c-family/c.opt:1590 -#: config/alpha/alpha.opt:31 common.opt:685 common.opt:831 common.opt:1074 -#: common.opt:1078 common.opt:1082 common.opt:1086 common.opt:1814 -#: common.opt:1917 common.opt:2094 common.opt:2098 common.opt:2377 -#: common.opt:2595 common.opt:3362 +#: fortran/lang.opt:214 fortran/lang.opt:539 c-family/c.opt:1594 +#: config/alpha/alpha.opt:31 common.opt:685 common.opt:831 common.opt:1079 +#: common.opt:1083 common.opt:1087 common.opt:1091 common.opt:1819 +#: common.opt:1922 common.opt:2099 common.opt:2103 common.opt:2382 +#: common.opt:2604 common.opt:3371 #, no-c-format msgid "Does nothing. Preserved for backward compatibility." msgstr "" @@ -1163,19 +1163,19 @@ msgstr "" msgid "Append underscores to externally visible names." msgstr "" -#: fortran/lang.opt:832 c-family/c.opt:1725 c-family/c.opt:1802 -#: c-family/c.opt:1810 c-family/c.opt:2141 config/xtensa/xtensa.opt:42 +#: fortran/lang.opt:832 c-family/c.opt:1729 c-family/c.opt:1806 +#: c-family/c.opt:1814 c-family/c.opt:2145 config/xtensa/xtensa.opt:42 #: config/pa/pa.opt:46 config/pa/pa.opt:78 config/arc/arc.opt:140 #: config/arc/arc.opt:296 config/arc/arc.opt:304 config/arc/arc.opt:308 #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326 -#: common.opt:643 common.opt:1172 common.opt:1176 common.opt:1180 -#: common.opt:1275 common.opt:1604 common.opt:1686 common.opt:2046 -#: common.opt:2189 common.opt:2232 common.opt:2673 common.opt:2709 -#: common.opt:2802 common.opt:2806 common.opt:2915 common.opt:3050 -#: common.opt:3058 common.opt:3066 common.opt:3074 common.opt:3175 -#: common.opt:3235 common.opt:3323 common.opt:3487 common.opt:3491 -#: common.opt:3495 common.opt:3499 common.opt:3569 common.opt:3573 -#: common.opt:3604 common.opt:3608 +#: common.opt:643 common.opt:1177 common.opt:1181 common.opt:1185 +#: common.opt:1280 common.opt:1609 common.opt:1691 common.opt:2051 +#: common.opt:2194 common.opt:2237 common.opt:2682 common.opt:2718 +#: common.opt:2811 common.opt:2815 common.opt:2924 common.opt:3059 +#: common.opt:3067 common.opt:3075 common.opt:3083 common.opt:3184 +#: common.opt:3244 common.opt:3332 common.opt:3496 common.opt:3500 +#: common.opt:3504 common.opt:3508 common.opt:3578 common.opt:3582 +#: common.opt:3613 common.opt:3617 #, no-c-format msgid "Does nothing. Preserved for backward compatibility." msgstr "" @@ -1230,19 +1230,19 @@ msgstr "" msgid "Accept extensions to support legacy code." msgstr "" -#: rust/lang.opt:47 rust/lang.opt:51 c-family/c.opt:1461 c-family/c.opt:1465 +#: rust/lang.opt:47 rust/lang.opt:51 c-family/c.opt:1465 c-family/c.opt:1469 #, no-c-format msgid "Warn when a const variable is unused." msgstr "" -#: rust/lang.opt:55 c-family/c.opt:1477 +#: rust/lang.opt:55 c-family/c.opt:1481 #, no-c-format msgid "" "Warn if a caller of a function, marked with attribute warn_unused_result, " "does not use its return value." msgstr "" -#: rust/lang.opt:59 c-family/c.opt:846 common.opt:654 +#: rust/lang.opt:59 c-family/c.opt:850 common.opt:654 #, no-c-format msgid "Warn for infinitely recursive calls." msgstr "" @@ -1736,14 +1736,14 @@ msgstr "" msgid "Warn about subscripts whose type is \"char\"." msgstr "" -#: c-family/c.opt:535 c-family/c.opt:1622 c-family/c.opt:1626 -#: c-family/c.opt:1630 c-family/c.opt:1634 c-family/c.opt:1638 -#: c-family/c.opt:1642 c-family/c.opt:1646 c-family/c.opt:1653 -#: c-family/c.opt:1657 c-family/c.opt:1661 c-family/c.opt:1665 -#: c-family/c.opt:1669 c-family/c.opt:1673 c-family/c.opt:1677 -#: c-family/c.opt:1681 c-family/c.opt:1685 c-family/c.opt:1689 -#: c-family/c.opt:1693 c-family/c.opt:1697 c-family/c.opt:1701 -#: config/i386/i386.opt:1018 +#: c-family/c.opt:535 c-family/c.opt:1626 c-family/c.opt:1630 +#: c-family/c.opt:1634 c-family/c.opt:1638 c-family/c.opt:1642 +#: c-family/c.opt:1646 c-family/c.opt:1650 c-family/c.opt:1657 +#: c-family/c.opt:1661 c-family/c.opt:1665 c-family/c.opt:1669 +#: c-family/c.opt:1673 c-family/c.opt:1677 c-family/c.opt:1681 +#: c-family/c.opt:1685 c-family/c.opt:1689 c-family/c.opt:1693 +#: c-family/c.opt:1697 c-family/c.opt:1701 c-family/c.opt:1705 +#: config/i386/i386.opt:1022 #, no-c-format msgid "Removed in GCC 9. This switch has no effect." msgstr "" @@ -2078,621 +2078,628 @@ msgstr "" #: c-family/c.opt:807 #, no-c-format -msgid "Warn when the field in a struct is not aligned." +msgid "" +"Warn about the global module fragment not containing only preprocessing " +"directives." msgstr "" #: c-family/c.opt:811 #, no-c-format -msgid "Warn whenever type qualifiers are ignored." +msgid "Warn when the field in a struct is not aligned." msgstr "" #: c-family/c.opt:815 #, no-c-format -msgid "Warn whenever attributes are ignored." +msgid "Warn whenever type qualifiers are ignored." msgstr "" #: c-family/c.opt:819 #, no-c-format +msgid "Warn whenever attributes are ignored." +msgstr "" + +#: c-family/c.opt:823 +#, no-c-format msgid "Warn about implicit declarations." msgstr "" -#: c-family/c.opt:827 +#: c-family/c.opt:831 #, no-c-format msgid "Warn about implicit function declarations." msgstr "" -#: c-family/c.opt:831 +#: c-family/c.opt:835 #, no-c-format msgid "Warn when a declaration does not specify a type." msgstr "" -#: c-family/c.opt:838 +#: c-family/c.opt:842 #, no-c-format msgid "Warn when a base is inaccessible in derived due to ambiguity." msgstr "" -#: c-family/c.opt:842 +#: c-family/c.opt:846 #, no-c-format msgid "" "Warn when there is a conversion between pointers that have incompatible " "types." msgstr "" -#: c-family/c.opt:850 +#: c-family/c.opt:854 #, no-c-format msgid "Warn about variables which are initialized to themselves." msgstr "" -#: c-family/c.opt:854 +#: c-family/c.opt:858 #, no-c-format msgid "" "Warn about uses of std::initializer_list that can result in dangling " "pointers." msgstr "" -#: c-family/c.opt:858 +#: c-family/c.opt:862 #, no-c-format msgid "" "Warn about nonsensical values of --param destructive-interference-size or " "constructive-interference-size." msgstr "" -#: c-family/c.opt:863 +#: c-family/c.opt:867 #, no-c-format msgid "" "Warn about C++11 inheriting constructors when the base has a variadic " "constructor." msgstr "" -#: c-family/c.opt:867 +#: c-family/c.opt:871 #, no-c-format msgid "" "Warn about incompatible integer to pointer and pointer to integer " "conversions." msgstr "" -#: c-family/c.opt:871 +#: c-family/c.opt:875 #, no-c-format msgid "Warn for suspicious integer expressions in boolean context." msgstr "" -#: c-family/c.opt:875 +#: c-family/c.opt:879 #, no-c-format msgid "" "Warn when there is a cast to a pointer from an integer of a different size." msgstr "" -#: c-family/c.opt:879 +#: c-family/c.opt:883 #, no-c-format msgid "Warn when a function never produces a constant expression." msgstr "" -#: c-family/c.opt:883 +#: c-family/c.opt:887 #, no-c-format msgid "Warn about invalid uses of the \"offsetof\" macro." msgstr "" -#: c-family/c.opt:887 +#: c-family/c.opt:891 #, no-c-format msgid "Warn about PCH files that are found but not used." msgstr "" -#: c-family/c.opt:891 +#: c-family/c.opt:895 #, no-c-format msgid "Warn about invalid UTF-8 characters." msgstr "" -#: c-family/c.opt:895 +#: c-family/c.opt:899 #, no-c-format msgid "Warn when a jump misses a variable initialization." msgstr "" -#: c-family/c.opt:899 +#: c-family/c.opt:903 #, no-c-format 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:903 +#: c-family/c.opt:907 #, no-c-format msgid "" "Warn when logical not is used on the left hand side operand of a comparison." msgstr "" -#: c-family/c.opt:907 +#: c-family/c.opt:911 #, no-c-format msgid "" "Warn when a logical operator is suspiciously always evaluating to true or " "false." msgstr "" -#: c-family/c.opt:911 +#: c-family/c.opt:915 #, no-c-format msgid "Do not warn about using \"long long\" when -pedantic." msgstr "" -#: c-family/c.opt:915 +#: c-family/c.opt:919 #, no-c-format msgid "Warn about suspicious declarations of \"main\"." msgstr "" -#: c-family/c.opt:927 +#: c-family/c.opt:931 #, no-c-format msgid "" "Warn about suspicious calls to memset where the third argument contains the " "number of elements not multiplied by the element size." msgstr "" -#: c-family/c.opt:931 +#: c-family/c.opt:935 #, no-c-format 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:935 +#: c-family/c.opt:939 #, no-c-format msgid "" "Warn when the indentation of the code does not reflect the block structure." msgstr "" -#: c-family/c.opt:939 +#: c-family/c.opt:943 #, no-c-format msgid "" "Warn for deallocation calls with arguments returned from mismatched " "allocation functions." msgstr "" -#: c-family/c.opt:944 +#: c-family/c.opt:948 #, no-c-format msgid "" "Warn for mismatches between calls to operator new or delete and the " "corresponding call to the allocation or deallocation function." msgstr "" -#: c-family/c.opt:949 +#: c-family/c.opt:953 #, no-c-format msgid "" "Warn when a class is redeclared or referenced using a mismatched class-key." msgstr "" -#: c-family/c.opt:953 +#: c-family/c.opt:957 #, no-c-format msgid "" "Warn about declarations of entities that may be missing attributes that " "related entities have been declared with." msgstr "" -#: c-family/c.opt:958 +#: c-family/c.opt:962 #, no-c-format msgid "Warn about possibly missing braces around initializers." msgstr "" -#: c-family/c.opt:962 +#: c-family/c.opt:966 #, no-c-format msgid "Warn about global functions without previous declarations." msgstr "" -#: c-family/c.opt:966 +#: c-family/c.opt:970 #, no-c-format msgid "Warn about missing fields in struct initializers." msgstr "" -#: c-family/c.opt:974 +#: c-family/c.opt:978 #, no-c-format msgid "Warn about user-specified include directories that do not exist." msgstr "" -#: c-family/c.opt:978 +#: c-family/c.opt:982 #, no-c-format msgid "" "Warn about function parameters declared without a type specifier in K&R-" "style functions." msgstr "" -#: c-family/c.opt:982 +#: c-family/c.opt:986 #, no-c-format msgid "Warn about global functions without prototypes." msgstr "" -#: c-family/c.opt:986 +#: c-family/c.opt:990 #, no-c-format msgid "Warn about likely missing requires keyword." msgstr "" -#: c-family/c.opt:990 +#: c-family/c.opt:994 #, no-c-format msgid "" "Warn when the template keyword is missing after a member access token in a " "dependent member access expression if that member is a template." msgstr "" -#: c-family/c.opt:994 +#: c-family/c.opt:998 #, no-c-format msgid "Warn about global variables without previous declarations." msgstr "" -#: c-family/c.opt:1001 +#: c-family/c.opt:1005 #, no-c-format msgid "Warn about use of multi-character character constants." msgstr "" -#: c-family/c.opt:1005 +#: c-family/c.opt:1009 #, no-c-format msgid "Warn on direct multiple inheritance." msgstr "" -#: c-family/c.opt:1009 +#: c-family/c.opt:1013 #, no-c-format msgid "" "Warn about unsafe macros expanding to multiple statements used as a body of " "a clause such as if, else, while, switch, or for." msgstr "" -#: c-family/c.opt:1013 +#: c-family/c.opt:1017 #, no-c-format msgid "Warn on namespace definition." msgstr "" -#: c-family/c.opt:1017 +#: c-family/c.opt:1021 #, no-c-format msgid "" "Warn about narrowing conversions within { } that are ill-formed in C++11." msgstr "" -#: c-family/c.opt:1021 +#: c-family/c.opt:1025 #, no-c-format msgid "Warn about \"extern\" declarations not at file scope." msgstr "" -#: c-family/c.opt:1025 +#: c-family/c.opt:1029 #, no-c-format msgid "" "Warn when a noexcept expression evaluates to false even though the " "expression can't actually throw." msgstr "" -#: c-family/c.opt:1029 +#: c-family/c.opt:1033 #, no-c-format msgid "" "Warn if C++17 noexcept function type will change the mangled name of a " "symbol." msgstr "" -#: c-family/c.opt:1033 +#: c-family/c.opt:1037 #, no-c-format msgid "" "Warn when non-templatized friend functions are declared within a template." msgstr "" -#: c-family/c.opt:1037 +#: c-family/c.opt:1041 #, no-c-format msgid "Warn about non-virtual destructors." msgstr "" -#: c-family/c.opt:1041 +#: c-family/c.opt:1045 #, no-c-format msgid "" "Warn about NULL being passed to argument slots marked as requiring non-NULL." msgstr "" -#: c-family/c.opt:1057 +#: c-family/c.opt:1061 #, no-c-format msgid "" "-Wnormalized=[none|id|nfc|nfkc]\tWarn about non-normalized Unicode strings." msgstr "" -#: c-family/c.opt:1080 +#: c-family/c.opt:1084 #, no-c-format msgid "" "Warn if a class interface has no superclass. Root classes may use an " "attribute to suppress this warning." msgstr "" -#: c-family/c.opt:1085 +#: c-family/c.opt:1089 #, no-c-format msgid "Warn if a C-style cast is used in a program." msgstr "" -#: c-family/c.opt:1089 +#: c-family/c.opt:1093 #, no-c-format msgid "Warn for obsolescent usage in a declaration." msgstr "" -#: c-family/c.opt:1093 +#: c-family/c.opt:1097 #, no-c-format msgid "Warn if an old-style parameter definition is used." msgstr "" -#: c-family/c.opt:1097 +#: c-family/c.opt:1101 #, no-c-format msgid "" "Warn about potentially suboptimal choices related to OpenACC parallelism." msgstr "" -#: c-family/c.opt:1101 +#: c-family/c.opt:1105 #, no-c-format msgid "Warn about suspicious OpenMP code." msgstr "" -#: c-family/c.opt:1105 +#: c-family/c.opt:1109 #, no-c-format msgid "Warn if a simd directive is overridden by the vectorizer cost model." msgstr "" -#: c-family/c.opt:1109 +#: c-family/c.opt:1113 #, no-c-format msgid "" "Warn if a string is longer than the maximum portable length specified by the " "standard." msgstr "" -#: c-family/c.opt:1113 c-family/c.opt:1117 +#: c-family/c.opt:1117 c-family/c.opt:1121 #, no-c-format msgid "Warn about overloaded virtual function names." msgstr "" -#: c-family/c.opt:1121 +#: c-family/c.opt:1125 #, no-c-format msgid "Warn about overriding initializers without side effects." msgstr "" -#: c-family/c.opt:1125 +#: c-family/c.opt:1129 #, no-c-format msgid "Warn about overriding initializers with side effects." msgstr "" -#: c-family/c.opt:1129 +#: c-family/c.opt:1133 #, no-c-format msgid "" "Warn if the named return value optimization is not performed although it is " "allowed." msgstr "" -#: c-family/c.opt:1133 +#: c-family/c.opt:1137 #, no-c-format msgid "Warn about packed bit-fields whose offset changed in GCC 4.4." msgstr "" -#: c-family/c.opt:1137 +#: c-family/c.opt:1141 #, no-c-format msgid "Warn when fields in a struct with the packed attribute are misaligned." msgstr "" -#: c-family/c.opt:1141 +#: c-family/c.opt:1145 #, no-c-format msgid "Warn about possibly missing parentheses." msgstr "" -#: c-family/c.opt:1149 +#: c-family/c.opt:1153 #, no-c-format msgid "" "Warn about calling std::move on a local object in a return statement " "preventing copy elision." msgstr "" -#: c-family/c.opt:1153 c-family/c.opt:1157 +#: c-family/c.opt:1157 c-family/c.opt:1161 #, no-c-format msgid "Warn for placement new expressions with undefined behavior." msgstr "" -#: c-family/c.opt:1161 +#: c-family/c.opt:1165 #, no-c-format msgid "Warn when converting the type of pointers to member functions." msgstr "" -#: c-family/c.opt:1165 +#: c-family/c.opt:1169 #, no-c-format msgid "Warn about function pointer arithmetic." msgstr "" -#: c-family/c.opt:1169 +#: c-family/c.opt:1173 #, no-c-format msgid "Warn when a pointer differs in signedness in an assignment." msgstr "" -#: c-family/c.opt:1173 +#: c-family/c.opt:1177 #, no-c-format msgid "Warn when a pointer is compared with a zero character constant." msgstr "" -#: c-family/c.opt:1177 +#: c-family/c.opt:1181 #, no-c-format msgid "Warn when a pointer is cast to an integer of a different size." msgstr "" -#: c-family/c.opt:1181 +#: c-family/c.opt:1185 #, no-c-format msgid "Warn about misuses of pragmas." msgstr "" -#: c-family/c.opt:1185 +#: c-family/c.opt:1189 #, no-c-format msgid "" "Warn if constructor or destructors with priorities from 0 to 100 are used." msgstr "" -#: c-family/c.opt:1189 +#: c-family/c.opt:1193 #, no-c-format msgid "" "Warn if a property for an Objective-C object has no assign semantics " "specified." msgstr "" -#: c-family/c.opt:1193 +#: c-family/c.opt:1197 #, no-c-format msgid "Warn if inherited methods are unimplemented." msgstr "" -#: c-family/c.opt:1197 +#: c-family/c.opt:1201 #, no-c-format msgid "Warn when a range-based for-loop is creating unnecessary copies." msgstr "" -#: c-family/c.opt:1201 +#: c-family/c.opt:1205 #, no-c-format msgid "Warn about multiple declarations of the same object." msgstr "" -#: c-family/c.opt:1205 +#: c-family/c.opt:1209 #, no-c-format msgid "Warn about redundant calls to std::move." msgstr "" -#: c-family/c.opt:1209 +#: c-family/c.opt:1213 #, no-c-format msgid "" "Warn when a class or enumerated type is referenced using a redundant class-" "key." msgstr "" -#: c-family/c.opt:1213 +#: c-family/c.opt:1217 #, no-c-format msgid "Warn about uses of register storage specifier." msgstr "" -#: c-family/c.opt:1217 +#: c-family/c.opt:1221 #, no-c-format msgid "Warn when the compiler reorders code." msgstr "" -#: c-family/c.opt:1221 +#: c-family/c.opt:1225 #, no-c-format msgid "" "Warn when an argument passed to a restrict-qualified parameter aliases with " "another argument." msgstr "" -#: c-family/c.opt:1226 +#: c-family/c.opt:1230 #, no-c-format msgid "" "Warn whenever void-returning functions return a non-void expressions, or a " "return expression is missing in a function not returning void." msgstr "" -#: c-family/c.opt:1230 +#: c-family/c.opt:1234 #, no-c-format msgid "" "Warn whenever a function's return type defaults to \"int\" (C), or about " "inconsistent return types (C++)." msgstr "" -#: c-family/c.opt:1234 +#: c-family/c.opt:1238 #, no-c-format msgid "Warn on suspicious constructs involving reverse scalar storage order." msgstr "" -#: c-family/c.opt:1238 +#: c-family/c.opt:1242 #, no-c-format msgid "Warn if a selector has multiple methods." msgstr "" -#: c-family/c.opt:1242 +#: c-family/c.opt:1246 #, no-c-format msgid "Warn when a value is moved to itself with std::move." msgstr "" -#: c-family/c.opt:1246 +#: c-family/c.opt:1250 #, no-c-format msgid "Warn about possible violations of sequence point rules." msgstr "" -#: c-family/c.opt:1250 +#: c-family/c.opt:1254 #, no-c-format msgid "Warn if a local declaration hides an instance variable." msgstr "" -#: c-family/c.opt:1254 c-family/c.opt:1258 +#: c-family/c.opt:1258 c-family/c.opt:1262 #, no-c-format msgid "Warn if left shift of a signed value overflows." msgstr "" -#: c-family/c.opt:1262 +#: c-family/c.opt:1266 #, no-c-format msgid "Warn if shift count is negative." msgstr "" -#: c-family/c.opt:1266 +#: c-family/c.opt:1270 #, no-c-format msgid "Warn if shift count >= width of type." msgstr "" -#: c-family/c.opt:1270 +#: c-family/c.opt:1274 #, no-c-format msgid "Warn if left shifting a negative value." msgstr "" -#: c-family/c.opt:1274 +#: c-family/c.opt:1278 #, no-c-format msgid "Warn about signed-unsigned comparisons." msgstr "" -#: c-family/c.opt:1282 +#: c-family/c.opt:1286 #, no-c-format msgid "" "Warn for implicit type conversions between signed and unsigned integers." msgstr "" -#: c-family/c.opt:1286 +#: c-family/c.opt:1290 #, no-c-format msgid "Warn when overload promotes from unsigned to signed." msgstr "" -#: c-family/c.opt:1290 +#: c-family/c.opt:1294 #, no-c-format msgid "Warn about missing sized deallocation functions." msgstr "" -#: c-family/c.opt:1294 +#: c-family/c.opt:1298 #, no-c-format msgid "" "Warn about divisions of two sizeof operators when the first one is applied " "to an array and the divisor does not equal the size of the array element." msgstr "" -#: c-family/c.opt:1299 +#: c-family/c.opt:1303 #, no-c-format msgid "Warn when sizeof is applied on a parameter declared as an array." msgstr "" -#: c-family/c.opt:1303 +#: c-family/c.opt:1307 #, no-c-format msgid "" "Warn about suspicious divisions of two sizeof expressions that don't work " "correctly with pointers." msgstr "" -#: c-family/c.opt:1307 +#: c-family/c.opt:1311 #, no-c-format msgid "" "Warn about suspicious length parameters to certain string functions if the " "argument uses sizeof." msgstr "" -#: c-family/c.opt:1315 +#: c-family/c.opt:1319 #, no-c-format msgid "" "Warn about inproper usages of flexible array members according to the level " "of -fstrict-flex-arrays." msgstr "" -#: c-family/c.opt:1320 +#: c-family/c.opt:1324 #, no-c-format msgid "Warn about uncasted NULL used as sentinel." msgstr "" -#: c-family/c.opt:1328 +#: c-family/c.opt:1332 #, no-c-format msgid "Warn about unprototyped function declarations." msgstr "" -#: c-family/c.opt:1332 +#: c-family/c.opt:1336 #, no-c-format msgid "Warn if type signatures of candidate methods do not match exactly." msgstr "" -#: c-family/c.opt:1336 +#: c-family/c.opt:1340 #, no-c-format msgid "" "Warn about calls to strcmp and strncmp used in equality expressions that are " @@ -2700,197 +2707,197 @@ msgid "" "argument." msgstr "" -#: c-family/c.opt:1342 +#: c-family/c.opt:1346 #, no-c-format msgid "" "Warn about buffer overflow in string manipulation functions like memcpy and " "strcpy." msgstr "" -#: c-family/c.opt:1347 +#: c-family/c.opt:1351 #, no-c-format msgid "" "Under the control of Object Size type, warn about buffer overflow in string " "manipulation functions like memcpy and strcpy." msgstr "" -#: c-family/c.opt:1352 +#: c-family/c.opt:1356 #, no-c-format msgid "" "Warn about reading past the end of a source array in string manipulation " "functions like memchr and memcpy." msgstr "" -#: c-family/c.opt:1356 +#: c-family/c.opt:1360 #, no-c-format msgid "" "Warn about truncation in string manipulation functions like strncat and " "strncpy." msgstr "" -#: c-family/c.opt:1360 +#: c-family/c.opt:1364 #, no-c-format 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:1364 +#: c-family/c.opt:1368 #, no-c-format msgid "Warn about functions which might be candidates for format attributes." msgstr "" -#: c-family/c.opt:1368 +#: c-family/c.opt:1372 #, no-c-format msgid "" "Suggest that the override keyword be used when the declaration of a virtual " "function overrides another." msgstr "" -#: c-family/c.opt:1373 +#: c-family/c.opt:1377 #, no-c-format msgid "Warn about enumerated switches, with no default, missing a case." msgstr "" -#: c-family/c.opt:1377 +#: c-family/c.opt:1381 #, no-c-format msgid "Warn about enumerated switches missing a \"default:\" statement." msgstr "" -#: c-family/c.opt:1381 +#: c-family/c.opt:1385 #, no-c-format msgid "Warn about all enumerated switches missing a specific case." msgstr "" -#: c-family/c.opt:1385 +#: c-family/c.opt:1389 #, no-c-format msgid "Warn about switches with boolean controlling expression." msgstr "" -#: c-family/c.opt:1389 +#: c-family/c.opt:1393 #, no-c-format msgid "Warn about switch values that are outside of the switch's type range." msgstr "" -#: c-family/c.opt:1393 +#: c-family/c.opt:1397 #, no-c-format msgid "" "Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions " "are used." msgstr "" -#: c-family/c.opt:1397 +#: c-family/c.opt:1401 #, no-c-format msgid "Deprecated. This switch has no effect." msgstr "" -#: c-family/c.opt:1405 +#: c-family/c.opt:1409 #, no-c-format msgid "Warn on primary template declaration." msgstr "" -#: c-family/c.opt:1409 +#: c-family/c.opt:1413 #, no-c-format msgid "Warn if a comparison always evaluates to true or false." msgstr "" -#: c-family/c.opt:1413 +#: c-family/c.opt:1417 #, no-c-format msgid "Warn about simple-template-id in a constructor or destructor." msgstr "" -#: c-family/c.opt:1417 +#: c-family/c.opt:1421 #, no-c-format msgid "Warn if a throw expression will always result in a call to terminate()." msgstr "" -#: c-family/c.opt:1421 +#: c-family/c.opt:1425 #, no-c-format msgid "Warn about features not present in traditional C." msgstr "" -#: c-family/c.opt:1425 +#: c-family/c.opt:1429 #, no-c-format msgid "" "Warn of prototypes causing type conversions different from what would happen " "in the absence of prototype." msgstr "" -#: c-family/c.opt:1429 +#: c-family/c.opt:1433 #, no-c-format msgid "" "Warn if trigraphs are encountered that might affect the meaning of the " "program." msgstr "" -#: c-family/c.opt:1433 +#: c-family/c.opt:1437 #, no-c-format msgid "Warn about @selector()s without previously declared methods." msgstr "" -#: c-family/c.opt:1437 +#: c-family/c.opt:1441 #, no-c-format msgid "Warn if an undefined macro is used in an #if directive." msgstr "" -#: c-family/c.opt:1441 +#: c-family/c.opt:1445 #, no-c-format msgid "Warn about invalid forms of delimited or named escape sequences." msgstr "" -#: c-family/c.opt:1449 +#: c-family/c.opt:1453 #, no-c-format msgid "Warn about unrecognized pragmas." msgstr "" -#: c-family/c.opt:1453 +#: c-family/c.opt:1457 #, no-c-format msgid "Warn about unsuffixed float constants." msgstr "" -#: c-family/c.opt:1469 +#: c-family/c.opt:1473 #, no-c-format msgid "Warn when typedefs locally defined in a function are not used." msgstr "" -#: c-family/c.opt:1473 +#: c-family/c.opt:1477 #, no-c-format msgid "Warn about macros defined in the main file that are not used." msgstr "" -#: c-family/c.opt:1493 +#: c-family/c.opt:1497 #, no-c-format msgid "Warn about useless casts." msgstr "" -#: c-family/c.opt:1497 +#: c-family/c.opt:1501 #, no-c-format msgid "Warn about using variadic macros." msgstr "" -#: c-family/c.opt:1501 +#: c-family/c.opt:1505 #, no-c-format msgid "" "Warn about questionable usage of the macros used to retrieve variable " "arguments." msgstr "" -#: c-family/c.opt:1505 +#: c-family/c.opt:1509 #, no-c-format msgid "Warn about the most vexing parse syntactic ambiguity." msgstr "" -#: c-family/c.opt:1509 +#: c-family/c.opt:1513 #, no-c-format msgid "Warn if a virtual base has a non-trivial move assignment operator." msgstr "" -#: c-family/c.opt:1513 +#: c-family/c.opt:1517 #, no-c-format msgid "Warn if a variable length array is used." msgstr "" -#: c-family/c.opt:1517 +#: c-family/c.opt:1521 #, no-c-format msgid "" "-Wvla-larger-than=\tWarn on unbounded uses of variable-length " @@ -2898,34 +2905,34 @@ msgid "" "larger than bytes." msgstr "" -#: c-family/c.opt:1523 +#: c-family/c.opt:1527 #, no-c-format msgid "" "Disable Wvla-larger-than= warning. Equivalent to Wvla-larger-" "than= or larger." msgstr "" -#: c-family/c.opt:1527 +#: c-family/c.opt:1531 #, no-c-format msgid "Warn about mismatched declarations of VLA parameters." msgstr "" -#: c-family/c.opt:1531 +#: c-family/c.opt:1535 #, no-c-format msgid "Warn about deprecated uses of volatile qualifier." msgstr "" -#: c-family/c.opt:1535 +#: c-family/c.opt:1539 #, no-c-format msgid "Warn when a register variable is declared volatile." msgstr "" -#: c-family/c.opt:1539 +#: c-family/c.opt:1543 #, no-c-format msgid "Warn on direct virtual inheritance." msgstr "" -#: c-family/c.opt:1543 +#: c-family/c.opt:1547 #, no-c-format msgid "" "In C++, nonzero means warn about deprecated conversion from string literals " @@ -2933,188 +2940,188 @@ msgid "" "not deprecated by the ISO C standard." msgstr "" -#: c-family/c.opt:1547 +#: c-family/c.opt:1551 #, no-c-format msgid "" "Warn about xor operators where it appears the user meant exponentiation." msgstr "" -#: c-family/c.opt:1551 +#: c-family/c.opt:1555 #, no-c-format msgid "Warn when a literal '0' is used as null pointer." msgstr "" -#: c-family/c.opt:1555 +#: c-family/c.opt:1559 #, no-c-format msgid "Warn about accesses to interior zero-length array members." msgstr "" -#: c-family/c.opt:1559 +#: c-family/c.opt:1563 #, no-c-format msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)." msgstr "" -#: c-family/c.opt:1567 +#: c-family/c.opt:1571 #, no-c-format msgid "" "The version of the C++ ABI used for -Wabi warnings and link compatibility " "aliases." msgstr "" -#: c-family/c.opt:1571 +#: c-family/c.opt:1575 #, no-c-format msgid "Enforce class member access control semantics." msgstr "" -#: c-family/c.opt:1575 +#: c-family/c.opt:1579 #, no-c-format msgid "-fada-spec-parent=unit\tDump Ada specs as child units of given parent." msgstr "" -#: c-family/c.opt:1579 +#: c-family/c.opt:1583 #, no-c-format msgid "Support C++17 allocation of over-aligned types." msgstr "" -#: c-family/c.opt:1583 +#: c-family/c.opt:1587 #, no-c-format msgid "" "-faligned-new=\tUse C++17 over-aligned type allocation for alignments " "greater than N." msgstr "" -#: c-family/c.opt:1594 c-family/c.opt:1911 c-family/c.opt:2313 -#: c-family/c.opt:2317 c-family/c.opt:2333 +#: c-family/c.opt:1598 c-family/c.opt:1915 c-family/c.opt:2317 +#: c-family/c.opt:2321 c-family/c.opt:2337 #, no-c-format msgid "No longer supported." msgstr "" -#: c-family/c.opt:1598 +#: c-family/c.opt:1602 #, no-c-format msgid "Recognize the \"asm\" keyword." msgstr "" -#: c-family/c.opt:1606 +#: c-family/c.opt:1610 #, no-c-format msgid "Recognize built-in functions." msgstr "" -#: c-family/c.opt:1613 +#: c-family/c.opt:1617 #, no-c-format msgid "Where shorter, use canonicalized paths to systems headers." msgstr "" -#: c-family/c.opt:1617 +#: c-family/c.opt:1621 #, no-c-format msgid "" "Enable the char8_t fundamental type and use it as the type for UTF-8 string " "and character literals." msgstr "" -#: c-family/c.opt:1705 +#: c-family/c.opt:1709 #, no-c-format msgid "Removed in GCC 8. This switch has no effect." msgstr "" -#: c-family/c.opt:1709 +#: c-family/c.opt:1713 #, no-c-format msgid "Enable support for C++ concepts." msgstr "" -#: c-family/c.opt:1713 +#: c-family/c.opt:1717 #, no-c-format msgid "Enable certain features present in the Concepts TS." msgstr "" -#: c-family/c.opt:1717 +#: c-family/c.opt:1721 #, no-c-format msgid "" "Specify maximum error replay depth during recursive diagnosis of a " "constraint satisfaction failure." msgstr "" -#: c-family/c.opt:1721 +#: c-family/c.opt:1725 #, no-c-format msgid "Allow the arguments of the '?' operator to have different types." msgstr "" -#: c-family/c.opt:1729 +#: c-family/c.opt:1733 #, no-c-format msgid "-fconst-string-class=\tUse class for constant strings." msgstr "" -#: c-family/c.opt:1733 +#: c-family/c.opt:1737 #, no-c-format msgid "-fconstexpr-depth=\tSpecify maximum constexpr recursion depth." msgstr "" -#: c-family/c.opt:1737 +#: c-family/c.opt:1741 #, no-c-format msgid "" "-fconstexpr-cache-depth=\tSpecify maximum constexpr recursion cache " "depth." msgstr "" -#: c-family/c.opt:1741 +#: c-family/c.opt:1745 #, no-c-format msgid "Allow IEC559 floating point exceptions in constant expressions." msgstr "" -#: c-family/c.opt:1745 +#: c-family/c.opt:1749 #, no-c-format msgid "" "-fconstexpr-loop-limit=\tSpecify maximum constexpr loop iteration " "count." msgstr "" -#: c-family/c.opt:1749 +#: c-family/c.opt:1753 #, no-c-format msgid "" "-fconstexpr-ops-limit=\tSpecify maximum number of constexpr " "operations during a single constexpr evaluation." msgstr "" -#: c-family/c.opt:1753 +#: c-family/c.opt:1757 #, no-c-format msgid "Enable certain features present in drafts of C++ Contracts." msgstr "" -#: c-family/c.opt:1766 +#: c-family/c.opt:1770 #, no-c-format msgid "" "-fcontract-assumption-mode=[on|off]\tEnable or disable treating axiom level " "contracts as assumptions (default on)." msgstr "" -#: c-family/c.opt:1770 +#: c-family/c.opt:1774 #, no-c-format msgid "" "-fcontract-build-level=[off|default|audit]\tSpecify max contract level to " "generate runtime checks for." msgstr "" -#: c-family/c.opt:1774 +#: c-family/c.opt:1778 #, no-c-format msgid "" "-fcontract-strict-declarations=[on|off]\tEnable or disable warnings on " "generalized redeclaration of functions with contracts (default off)." msgstr "" -#: c-family/c.opt:1778 +#: c-family/c.opt:1782 #, no-c-format msgid "" "-fcontract-mode=[on|off]\tEnable or disable all contract facilities (default " "on)." msgstr "" -#: c-family/c.opt:1782 +#: c-family/c.opt:1786 #, no-c-format msgid "" "-fcontract-continuation-mode=[on|off]\tEnable or disable contract " "continuation mode (default off)." msgstr "" -#: c-family/c.opt:1786 +#: c-family/c.opt:1790 #, no-c-format msgid "" "-fcontract-role=:\tSpecify the semantics for all levels in " @@ -3122,441 +3129,441 @@ msgid "" "(ex: opt:assume,assume,assume)." msgstr "" -#: c-family/c.opt:1790 +#: c-family/c.opt:1794 #, no-c-format msgid "" "-fcontract-semantic=:\tSpecify the concrete semantics for " "level." msgstr "" -#: c-family/c.opt:1794 +#: c-family/c.opt:1798 #, no-c-format msgid "Enable C++ coroutines (experimental)." msgstr "" -#: c-family/c.opt:1798 +#: c-family/c.opt:1802 #, no-c-format msgid "Emit debug annotations during preprocessing." msgstr "" -#: c-family/c.opt:1806 +#: c-family/c.opt:1810 #, no-c-format msgid "Factor complex constructors and destructors to favor space over speed." msgstr "" -#: c-family/c.opt:1814 +#: c-family/c.opt:1818 #, no-c-format msgid "Print hierarchical comparisons when template types are mismatched." msgstr "" -#: c-family/c.opt:1818 +#: c-family/c.opt:1822 #, no-c-format msgid "Note all candidates during overload resolution failure." msgstr "" -#: c-family/c.opt:1822 +#: c-family/c.opt:1826 #, no-c-format msgid "Preprocess directives only." msgstr "" -#: c-family/c.opt:1826 +#: c-family/c.opt:1830 #, no-c-format msgid "Permit '$' as an identifier character." msgstr "" -#: c-family/c.opt:1830 +#: c-family/c.opt:1834 #, no-c-format msgid "" "-fmacro-prefix-map==\tMap one directory name to another in " "__FILE__, __BASE_FILE__, and __builtin_FILE()." msgstr "" -#: c-family/c.opt:1834 +#: c-family/c.opt:1838 #, no-c-format msgid "Write all declarations as Ada code transitively." msgstr "" -#: c-family/c.opt:1838 +#: c-family/c.opt:1842 #, no-c-format msgid "Write all declarations as Ada code for the given file only." msgstr "" -#: c-family/c.opt:1845 +#: c-family/c.opt:1849 #, no-c-format msgid "Do not elide common elements in template comparisons." msgstr "" -#: c-family/c.opt:1849 +#: c-family/c.opt:1853 #, no-c-format msgid "Generate code to check exception specifications." msgstr "" -#: c-family/c.opt:1856 +#: c-family/c.opt:1860 #, no-c-format msgid "" "-fexec-charset=\tConvert all strings and character constants to " "character set ." msgstr "" -#: c-family/c.opt:1860 +#: c-family/c.opt:1864 #, no-c-format msgid "Permit universal character names (\\u and \\U) in identifiers." msgstr "" -#: c-family/c.opt:1864 +#: c-family/c.opt:1868 #, no-c-format msgid "" "-finput-charset=\tSpecify the default character set for source files." msgstr "" -#: c-family/c.opt:1868 +#: c-family/c.opt:1872 #, no-c-format msgid "" "Support dynamic initialization of thread-local variables in a different " "translation unit." msgstr "" -#: c-family/c.opt:1875 +#: c-family/c.opt:1879 #, no-c-format msgid "Fold calls to simple inline functions." msgstr "" -#: c-family/c.opt:1882 +#: c-family/c.opt:1886 #, no-c-format msgid "Do not assume that standard C libraries and \"main\" exist." msgstr "" -#: c-family/c.opt:1886 +#: c-family/c.opt:1890 #, no-c-format msgid "Recognize GNU-defined keywords." msgstr "" -#: c-family/c.opt:1890 +#: c-family/c.opt:1894 #, no-c-format msgid "Generate code for GNU runtime environment." msgstr "" -#: c-family/c.opt:1894 +#: c-family/c.opt:1898 #, no-c-format msgid "Use traditional GNU semantics for inline functions." msgstr "" -#: c-family/c.opt:1907 +#: c-family/c.opt:1911 #, no-c-format msgid "Assume normal C execution environment." msgstr "" -#: c-family/c.opt:1915 +#: c-family/c.opt:1919 #, no-c-format msgid "Implement P2564 for consteval propagation." msgstr "" -#: c-family/c.opt:1919 +#: c-family/c.opt:1923 #, no-c-format msgid "Export functions even if they can be inlined." msgstr "" -#: c-family/c.opt:1923 +#: c-family/c.opt:1927 #, no-c-format msgid "Make inline functions constexpr by default." msgstr "" -#: c-family/c.opt:1927 +#: c-family/c.opt:1931 #, no-c-format msgid "Emit implicit instantiations of inline templates." msgstr "" -#: c-family/c.opt:1931 +#: c-family/c.opt:1935 #, no-c-format msgid "Emit implicit instantiations of templates." msgstr "" -#: c-family/c.opt:1935 +#: c-family/c.opt:1939 #, no-c-format msgid "Implement C++17 inheriting constructor semantics." msgstr "" -#: c-family/c.opt:1942 +#: c-family/c.opt:1946 #, no-c-format msgid "Don't emit dllexported inline functions unless needed." msgstr "" -#: c-family/c.opt:1949 +#: c-family/c.opt:1953 #, no-c-format msgid "" "Allow implicit conversions between vectors with differing numbers of " "subparts and/or differing element types." msgstr "" -#: c-family/c.opt:1953 +#: c-family/c.opt:1957 #, no-c-format msgid "Enable C++ modules-ts (experimental)." msgstr "" -#: c-family/c.opt:1961 +#: c-family/c.opt:1965 #, no-c-format msgid "Enable C++ header module (experimental)." msgstr "" -#: c-family/c.opt:1968 +#: c-family/c.opt:1972 #, no-c-format msgid "" "Member functions defined within their class are inline in module purview." msgstr "" -#: c-family/c.opt:1972 +#: c-family/c.opt:1976 #, no-c-format msgid "Only emit Compiled Module Interface." msgstr "" -#: c-family/c.opt:1976 +#: c-family/c.opt:1980 #, no-c-format msgid "Mapper for module to CMI files." msgstr "" -#: c-family/c.opt:1980 +#: c-family/c.opt:1984 #, no-c-format msgid "Enable lazy module importing." msgstr "" -#: c-family/c.opt:1988 +#: c-family/c.opt:1992 #, no-c-format msgid "Warn about macros that have conflicting header units definitions." msgstr "" -#: c-family/c.opt:1992 +#: c-family/c.opt:1996 #, no-c-format msgid "Warn if pointers of distinct types are compared without a cast." msgstr "" -#: c-family/c.opt:1996 +#: c-family/c.opt:2000 #, no-c-format msgid "Note #include directives translated to import declarations." msgstr "" -#: c-family/c.opt:2000 +#: c-family/c.opt:2004 #, no-c-format msgid "" "Note #include directives not translated to import declarations, and not " "known to be textual." msgstr "" -#: c-family/c.opt:2004 +#: c-family/c.opt:2008 #, no-c-format msgid "Note a #include translation of a specific header." msgstr "" -#: c-family/c.opt:2008 +#: c-family/c.opt:2012 #, no-c-format msgid "Note Compiled Module Interface pathnames." msgstr "" -#: c-family/c.opt:2012 +#: c-family/c.opt:2016 #, no-c-format msgid "" "Note Compiled Module Interface pathname of a specific module or header-unit." msgstr "" -#: c-family/c.opt:2016 +#: c-family/c.opt:2020 #, no-c-format msgid "" "fmax-include-depth= Set the maximum depth of the nested #include." msgstr "" -#: c-family/c.opt:2020 +#: c-family/c.opt:2024 #, no-c-format msgid "Don't warn about uses of Microsoft extensions." msgstr "" -#: c-family/c.opt:2039 +#: c-family/c.opt:2043 #, no-c-format msgid "" "Implement resolution of DR 150 for matching of template template arguments." msgstr "" -#: c-family/c.opt:2043 +#: c-family/c.opt:2047 #, no-c-format msgid "Generate code for NeXT (Apple macOS) runtime environment." msgstr "" -#: c-family/c.opt:2047 +#: c-family/c.opt:2051 #, no-c-format msgid "Assume that receivers of Objective-C messages may be nil." msgstr "" -#: c-family/c.opt:2051 +#: c-family/c.opt:2055 #, no-c-format msgid "" "Allow access to instance variables as if they were local declarations within " "instance method implementations." msgstr "" -#: c-family/c.opt:2055 +#: c-family/c.opt:2059 #, no-c-format msgid "" "-fvisibility=[private|protected|public|package]\tSet the default symbol " "visibility." msgstr "" -#: c-family/c.opt:2080 +#: c-family/c.opt:2084 #, no-c-format msgid "" "Treat a throw() exception specification as noexcept to improve code size." msgstr "" -#: c-family/c.opt:2084 +#: c-family/c.opt:2088 #, no-c-format msgid "" "Specify which ABI to use for Objective-C family code and meta-data " "generation." msgstr "" -#: c-family/c.opt:2090 +#: c-family/c.opt:2094 #, no-c-format msgid "" "Generate special Objective-C methods to initialize/destroy non-POD C++ " "ivars, if needed." msgstr "" -#: c-family/c.opt:2094 +#: c-family/c.opt:2098 #, no-c-format msgid "Allow fast jumps to the message dispatcher." msgstr "" -#: c-family/c.opt:2100 +#: c-family/c.opt:2104 #, no-c-format msgid "Enable Objective-C exception and synchronization syntax." msgstr "" -#: c-family/c.opt:2104 +#: c-family/c.opt:2108 #, no-c-format msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs." msgstr "" -#: c-family/c.opt:2108 +#: c-family/c.opt:2112 #, no-c-format msgid "" "Enable inline checks for nil receivers with the NeXT runtime and ABI version " "2." msgstr "" -#: c-family/c.opt:2113 +#: c-family/c.opt:2117 #, no-c-format msgid "Enable Objective-C setjmp exception handling runtime." msgstr "" -#: c-family/c.opt:2117 +#: c-family/c.opt:2121 #, no-c-format msgid "Conform to the Objective-C 1.0 language as implemented in GCC 4.0." msgstr "" -#: c-family/c.opt:2121 +#: c-family/c.opt:2125 #, no-c-format msgid "Enable OpenACC." msgstr "" -#: c-family/c.opt:2125 +#: c-family/c.opt:2129 #, no-c-format msgid "Specify default OpenACC compute dimensions." msgstr "" -#: c-family/c.opt:2129 +#: c-family/c.opt:2133 #, no-c-format msgid "Enable OpenMP (implies -frecursive in Fortran)." msgstr "" -#: c-family/c.opt:2133 +#: c-family/c.opt:2137 #, no-c-format msgid "Enable OpenMP's SIMD directives." msgstr "" -#: c-family/c.opt:2137 +#: c-family/c.opt:2141 #, no-c-format msgid "Recognize C++ keywords like \"compl\" and \"xor\"." msgstr "" -#: c-family/c.opt:2148 +#: c-family/c.opt:2152 #, no-c-format msgid "Look for and use PCH files even when preprocessing." msgstr "" -#: c-family/c.opt:2152 +#: c-family/c.opt:2156 #, no-c-format msgid "Downgrade conformance errors to warnings." msgstr "" -#: c-family/c.opt:2156 +#: c-family/c.opt:2160 #, no-c-format msgid "Enable Plan 9 language extensions." msgstr "" -#: c-family/c.opt:2160 +#: c-family/c.opt:2164 #, no-c-format msgid "Treat the input file as already preprocessed." msgstr "" -#: c-family/c.opt:2168 +#: c-family/c.opt:2172 #, no-c-format msgid "" "-ftrack-macro-expansion=<0|1|2>\tTrack locations of tokens coming from macro " "expansion and display them in error messages." msgstr "" -#: c-family/c.opt:2172 +#: c-family/c.opt:2176 #, no-c-format msgid "" "Do not pretty-print template specializations as the template signature " "followed by the arguments." msgstr "" -#: c-family/c.opt:2176 +#: c-family/c.opt:2180 #, no-c-format msgid "Treat known sprintf return values as constants." msgstr "" -#: c-family/c.opt:2180 +#: c-family/c.opt:2184 #, no-c-format msgid "" "Used in Fix-and-Continue mode to indicate that object files may be swapped " "in at runtime." msgstr "" -#: c-family/c.opt:2184 +#: c-family/c.opt:2188 #, no-c-format msgid "Removed in GCC 10. This switch has no effect." msgstr "" -#: c-family/c.opt:2188 +#: c-family/c.opt:2192 #, no-c-format msgid "Generate run time type descriptor information." msgstr "" -#: c-family/c.opt:2192 ada/gcc-interface/lang.opt:81 +#: c-family/c.opt:2196 ada/gcc-interface/lang.opt:81 #, no-c-format msgid "Use the narrowest integer type possible for enumeration types." msgstr "" -#: c-family/c.opt:2196 +#: c-family/c.opt:2200 #, no-c-format msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\"." msgstr "" -#: c-family/c.opt:2200 +#: c-family/c.opt:2204 #, no-c-format msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed." msgstr "" -#: c-family/c.opt:2204 ada/gcc-interface/lang.opt:85 +#: c-family/c.opt:2208 ada/gcc-interface/lang.opt:85 #, no-c-format msgid "Make \"char\" signed by default." msgstr "" -#: c-family/c.opt:2208 +#: c-family/c.opt:2212 #, no-c-format msgid "Enable C++14 sized deallocation support." msgstr "" -#: c-family/c.opt:2215 +#: c-family/c.opt:2219 #, no-c-format msgid "" "-fstrict-flex-arrays= Control when to treat the trailing array of " @@ -3565,439 +3572,439 @@ msgid "" "structures as flexible array members." msgstr "" -#: c-family/c.opt:2222 +#: c-family/c.opt:2226 #, no-c-format msgid "" "-fsso-struct=[big-endian|little-endian|native]\tSet the default scalar " "storage order." msgstr "" -#: c-family/c.opt:2238 +#: c-family/c.opt:2242 #, no-c-format msgid "Display statistics accumulated during compilation." msgstr "" -#: c-family/c.opt:2242 +#: c-family/c.opt:2246 #, no-c-format msgid "" "Assume that values of enumeration type are always within the minimum range " "of that type." msgstr "" -#: c-family/c.opt:2249 c-family/c.opt:2254 +#: c-family/c.opt:2253 c-family/c.opt:2258 #, no-c-format msgid "" "Follow the C++17 evaluation order requirements for assignment expressions, " "shift, member function calls, etc." msgstr "" -#: c-family/c.opt:2271 +#: c-family/c.opt:2275 #, no-c-format msgid "" "Set the maximum number of template instantiation notes for a single warning " "or error." msgstr "" -#: c-family/c.opt:2278 +#: c-family/c.opt:2282 #, no-c-format msgid "" "-ftemplate-depth=\tSpecify maximum template instantiation depth." msgstr "" -#: c-family/c.opt:2285 +#: c-family/c.opt:2289 #, no-c-format msgid "" "-fno-threadsafe-statics\tDo not generate thread-safe code for initializing " "local statics." msgstr "" -#: c-family/c.opt:2289 +#: c-family/c.opt:2293 #, no-c-format msgid "" "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned." msgstr "" -#: c-family/c.opt:2293 ada/gcc-interface/lang.opt:89 +#: c-family/c.opt:2297 ada/gcc-interface/lang.opt:89 #, no-c-format msgid "Make \"char\" unsigned by default." msgstr "" -#: c-family/c.opt:2297 +#: c-family/c.opt:2301 #, no-c-format msgid "Use __cxa_atexit to register destructors." msgstr "" -#: c-family/c.opt:2301 +#: c-family/c.opt:2305 #, no-c-format msgid "Use __cxa_get_exception_ptr in exception handling." msgstr "" -#: c-family/c.opt:2305 +#: c-family/c.opt:2309 #, no-c-format msgid "Marks all inlined functions and methods as having hidden visibility." msgstr "" -#: c-family/c.opt:2309 +#: c-family/c.opt:2313 #, no-c-format msgid "Changes visibility to match Microsoft Visual Studio by default." msgstr "" -#: c-family/c.opt:2321 +#: c-family/c.opt:2325 #, no-c-format msgid "Emit common-like symbols as weak symbols." msgstr "" -#: c-family/c.opt:2325 +#: c-family/c.opt:2329 #, no-c-format msgid "" "-fwide-exec-charset=\tConvert all wide strings and character constants " "to character set ." msgstr "" -#: c-family/c.opt:2329 +#: c-family/c.opt:2333 #, no-c-format msgid "Generate a #line directive pointing at the current working directory." msgstr "" -#: c-family/c.opt:2337 +#: c-family/c.opt:2341 #, no-c-format msgid "" "Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode." msgstr "" -#: c-family/c.opt:2341 +#: c-family/c.opt:2345 #, no-c-format msgid "Dump declarations to a .decl file." msgstr "" -#: c-family/c.opt:2345 +#: c-family/c.opt:2349 #, no-c-format msgid "" "-femit-struct-debug-baseonly\tAggressive reduced debug info for structs." msgstr "" -#: c-family/c.opt:2349 +#: c-family/c.opt:2353 #, no-c-format msgid "" "-femit-struct-debug-reduced\tConservative reduced debug info for structs." msgstr "" -#: c-family/c.opt:2353 +#: c-family/c.opt:2357 #, no-c-format msgid "" "-femit-struct-debug-detailed=\tDetailed reduced debug info for " "structs." msgstr "" -#: c-family/c.opt:2357 +#: c-family/c.opt:2361 #, no-c-format msgid "" "Interpret imaginary, fixed-point, or other gnu number suffix as the " "corresponding number literal rather than a user-defined number literal." msgstr "" -#: c-family/c.opt:2362 +#: c-family/c.opt:2366 #, no-c-format msgid "-idirafter \tAdd to the end of the system include path." msgstr "" -#: c-family/c.opt:2366 +#: c-family/c.opt:2370 #, no-c-format msgid "-imacros \tAccept definition of macros in ." msgstr "" -#: c-family/c.opt:2370 +#: c-family/c.opt:2374 #, no-c-format msgid "-imultilib \tSet to be the multilib include subdirectory." msgstr "" -#: c-family/c.opt:2374 +#: c-family/c.opt:2378 #, no-c-format msgid "-include \tInclude the contents of before other files." msgstr "" -#: c-family/c.opt:2378 +#: c-family/c.opt:2382 #, no-c-format msgid "-iprefix \tSpecify as a prefix for next two options." msgstr "" -#: c-family/c.opt:2382 +#: c-family/c.opt:2386 #, no-c-format msgid "-isysroot \tSet to be the system root directory." msgstr "" -#: c-family/c.opt:2386 +#: c-family/c.opt:2390 #, no-c-format msgid "-isystem \tAdd to the start of the system include path." msgstr "" -#: c-family/c.opt:2390 +#: c-family/c.opt:2394 #, no-c-format msgid "-iquote \tAdd to the end of the quote include path." msgstr "" -#: c-family/c.opt:2394 +#: c-family/c.opt:2398 #, no-c-format msgid "-iwithprefix \tAdd to the end of the system include path." msgstr "" -#: c-family/c.opt:2398 +#: c-family/c.opt:2402 #, no-c-format msgid "" "-iwithprefixbefore \tAdd to the end of the main include path." msgstr "" -#: c-family/c.opt:2408 +#: c-family/c.opt:2412 #, no-c-format msgid "" "Do not search standard system include directories (those specified with -" "isystem will still be used)." msgstr "" -#: c-family/c.opt:2412 +#: c-family/c.opt:2416 #, no-c-format msgid "Do not search standard system include directories for C++." msgstr "" -#: c-family/c.opt:2424 +#: c-family/c.opt:2428 #, no-c-format msgid "Generate C header of platform-specific features." msgstr "" -#: c-family/c.opt:2428 +#: c-family/c.opt:2432 #, no-c-format msgid "Remap file names when including files." msgstr "" -#: c-family/c.opt:2432 c-family/c.opt:2436 +#: c-family/c.opt:2436 c-family/c.opt:2440 #, no-c-format msgid "" "Conform to the ISO 1998 C++ standard revised by the 2003 technical " "corrigendum." msgstr "" -#: c-family/c.opt:2440 +#: c-family/c.opt:2444 #, no-c-format msgid "Conform to the ISO 2011 C++ standard." msgstr "" -#: c-family/c.opt:2444 +#: c-family/c.opt:2448 #, no-c-format msgid "Deprecated in favor of -std=c++11." msgstr "" -#: c-family/c.opt:2448 +#: c-family/c.opt:2452 #, no-c-format msgid "Deprecated in favor of -std=c++14." msgstr "" -#: c-family/c.opt:2452 +#: c-family/c.opt:2456 #, no-c-format msgid "Conform to the ISO 2014 C++ standard." msgstr "" -#: c-family/c.opt:2456 +#: c-family/c.opt:2460 #, no-c-format msgid "Deprecated in favor of -std=c++17." msgstr "" -#: c-family/c.opt:2460 +#: c-family/c.opt:2464 #, no-c-format msgid "Conform to the ISO 2017 C++ standard." msgstr "" -#: c-family/c.opt:2464 c-family/c.opt:2468 +#: c-family/c.opt:2468 c-family/c.opt:2472 #, no-c-format msgid "" "Conform to the ISO 2020 C++ standard (experimental and incomplete support)." msgstr "" -#: c-family/c.opt:2472 c-family/c.opt:2476 +#: c-family/c.opt:2476 c-family/c.opt:2480 #, no-c-format msgid "" "Conform to the ISO 2023 C++ draft standard (experimental and incomplete " "support)." msgstr "" -#: c-family/c.opt:2480 c-family/c.opt:2484 +#: c-family/c.opt:2484 c-family/c.opt:2488 #, no-c-format msgid "" "Conform to the ISO 2026 C++ draft standard (experimental and incomplete " "support)." msgstr "" -#: c-family/c.opt:2488 c-family/c.opt:2642 +#: c-family/c.opt:2492 c-family/c.opt:2646 #, no-c-format msgid "Conform to the ISO 2011 C standard." msgstr "" -#: c-family/c.opt:2492 +#: c-family/c.opt:2496 #, no-c-format msgid "Deprecated in favor of -std=c11." msgstr "" -#: c-family/c.opt:2496 c-family/c.opt:2500 c-family/c.opt:2646 -#: c-family/c.opt:2650 +#: c-family/c.opt:2500 c-family/c.opt:2504 c-family/c.opt:2650 +#: c-family/c.opt:2654 #, no-c-format msgid "Conform to the ISO 2017 C standard (published in 2018)." msgstr "" -#: c-family/c.opt:2504 c-family/c.opt:2654 +#: c-family/c.opt:2508 c-family/c.opt:2658 #, no-c-format msgid "" "Conform to the ISO 2023 C standard draft (expected to be published in 2024) " "(experimental and incomplete support)." msgstr "" -#: c-family/c.opt:2508 +#: c-family/c.opt:2512 #, no-c-format msgid "Deprecated in favor of -std=c23." msgstr "" -#: c-family/c.opt:2512 c-family/c.opt:2516 c-family/c.opt:2626 +#: c-family/c.opt:2516 c-family/c.opt:2520 c-family/c.opt:2630 #, no-c-format msgid "Conform to the ISO 1990 C standard." msgstr "" -#: c-family/c.opt:2520 c-family/c.opt:2634 +#: c-family/c.opt:2524 c-family/c.opt:2638 #, no-c-format msgid "Conform to the ISO 1999 C standard." msgstr "" -#: c-family/c.opt:2524 +#: c-family/c.opt:2528 #, no-c-format msgid "Deprecated in favor of -std=c99." msgstr "" -#: c-family/c.opt:2528 c-family/c.opt:2533 +#: c-family/c.opt:2532 c-family/c.opt:2537 #, no-c-format msgid "" "Conform to the ISO 1998 C++ standard revised by the 2003 technical " "corrigendum with GNU extensions." msgstr "" -#: c-family/c.opt:2538 +#: c-family/c.opt:2542 #, no-c-format msgid "Conform to the ISO 2011 C++ standard with GNU extensions." msgstr "" -#: c-family/c.opt:2542 +#: c-family/c.opt:2546 #, no-c-format msgid "Deprecated in favor of -std=gnu++11." msgstr "" -#: c-family/c.opt:2546 +#: c-family/c.opt:2550 #, no-c-format msgid "Deprecated in favor of -std=gnu++14." msgstr "" -#: c-family/c.opt:2550 +#: c-family/c.opt:2554 #, no-c-format msgid "Conform to the ISO 2014 C++ standard with GNU extensions." msgstr "" -#: c-family/c.opt:2554 +#: c-family/c.opt:2558 #, no-c-format msgid "Deprecated in favor of -std=gnu++17." msgstr "" -#: c-family/c.opt:2558 +#: c-family/c.opt:2562 #, no-c-format msgid "Conform to the ISO 2017 C++ standard with GNU extensions." msgstr "" -#: c-family/c.opt:2562 c-family/c.opt:2566 +#: c-family/c.opt:2566 c-family/c.opt:2570 #, no-c-format msgid "" "Conform to the ISO 2020 C++ standard with GNU extensions (experimental and " "incomplete support)." msgstr "" -#: c-family/c.opt:2570 c-family/c.opt:2574 +#: c-family/c.opt:2574 c-family/c.opt:2578 #, no-c-format msgid "" "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental " "and incomplete support)." msgstr "" -#: c-family/c.opt:2578 c-family/c.opt:2582 +#: c-family/c.opt:2582 c-family/c.opt:2586 #, no-c-format msgid "" "Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental " "and incomplete support)." msgstr "" -#: c-family/c.opt:2586 +#: c-family/c.opt:2590 #, no-c-format msgid "Conform to the ISO 2011 C standard with GNU extensions." msgstr "" -#: c-family/c.opt:2590 +#: c-family/c.opt:2594 #, no-c-format msgid "Deprecated in favor of -std=gnu11." msgstr "" -#: c-family/c.opt:2594 c-family/c.opt:2598 +#: c-family/c.opt:2598 c-family/c.opt:2602 #, no-c-format msgid "" "Conform to the ISO 2017 C standard (published in 2018) with GNU extensions." msgstr "" -#: c-family/c.opt:2602 +#: c-family/c.opt:2606 #, no-c-format msgid "" "Conform to the ISO 2023 C standard draft (expected to be published in 2024) " "with GNU extensions (experimental and incomplete support)." msgstr "" -#: c-family/c.opt:2606 +#: c-family/c.opt:2610 #, no-c-format msgid "Deprecated in favor of -std=gnu23." msgstr "" -#: c-family/c.opt:2610 c-family/c.opt:2614 +#: c-family/c.opt:2614 c-family/c.opt:2618 #, no-c-format msgid "Conform to the ISO 1990 C standard with GNU extensions." msgstr "" -#: c-family/c.opt:2618 +#: c-family/c.opt:2622 #, no-c-format msgid "Conform to the ISO 1999 C standard with GNU extensions." msgstr "" -#: c-family/c.opt:2622 +#: c-family/c.opt:2626 #, no-c-format msgid "Deprecated in favor of -std=gnu99." msgstr "" -#: c-family/c.opt:2630 +#: c-family/c.opt:2634 #, no-c-format msgid "Conform to the ISO 1990 C standard as amended in 1994." msgstr "" -#: c-family/c.opt:2638 +#: c-family/c.opt:2642 #, no-c-format msgid "Deprecated in favor of -std=iso9899:1999." msgstr "" -#: c-family/c.opt:2658 +#: c-family/c.opt:2662 #, no-c-format msgid "" "-stdlib=[libstdc++|libc++]\tThe standard library to be used for C++ headers " "and runtime." msgstr "" -#: c-family/c.opt:2675 +#: c-family/c.opt:2679 #, no-c-format msgid "Enable traditional preprocessing." msgstr "" -#: c-family/c.opt:2679 +#: c-family/c.opt:2683 #, no-c-format msgid "-trigraphs\tSupport ISO C trigraphs." msgstr "" -#: c-family/c.opt:2683 +#: c-family/c.opt:2687 #, no-c-format msgid "Do not predefine system-specific and GCC-specific macros." msgstr "" @@ -4474,60 +4481,50 @@ msgstr "" #: m2/lang.opt:95 #, no-c-format -msgid "turn on quadruple tracing (internal switch)" +msgid "turn on tracing of procedure line numbers (internal switch)" msgstr "" #: m2/lang.opt:99 #, no-c-format -msgid "turn on the Modula-2 api tracing (internal switch)" -msgstr "" - -#: m2/lang.opt:103 -#, no-c-format -msgid "turn on the Modula-2 function line number generation (internal switch)" -msgstr "" - -#: m2/lang.opt:107 -#, no-c-format msgid "recognise the specified suffix as a definition module filename" msgstr "" -#: m2/lang.opt:111 +#: m2/lang.opt:103 #, no-c-format msgid "display all inbuilt system items" msgstr "" -#: m2/lang.opt:115 +#: m2/lang.opt:107 #, no-c-format msgid "" "allows opaque types to be implemented as any type (a GNU Modula-2 extension)" msgstr "" -#: m2/lang.opt:119 +#: m2/lang.opt:111 #, no-c-format msgid "" "turns on runtime checking to check whether a floating point number will " "exceed range" msgstr "" -#: m2/lang.opt:123 +#: m2/lang.opt:115 #, no-c-format msgid "" "create a topologically sorted module list from all dependent modules used in " "the application" msgstr "" -#: m2/lang.opt:127 m2/lang.opt:215 +#: m2/lang.opt:119 m2/lang.opt:211 #, no-c-format msgid "turns on all range checking for numerical values" msgstr "" -#: m2/lang.opt:131 +#: m2/lang.opt:123 #, no-c-format msgid "use ISO dialect of Modula-2" msgstr "" -#: m2/lang.opt:135 +#: m2/lang.opt:127 #, no-c-format msgid "" "specify the library order, the libraries may be specified by a comma " @@ -4535,197 +4532,203 @@ msgid "" "m2pim,m2iso." msgstr "" -#: m2/lang.opt:139 +#: m2/lang.opt:131 #, no-c-format msgid "set all location values to a specific value (internal switch)" msgstr "" -#: m2/lang.opt:143 +#: m2/lang.opt:135 +#, no-c-format +msgid "" +"turn on internal debug tracing for quad,token,line,all (internal switch)" +msgstr "" + +#: m2/lang.opt:139 #, no-c-format msgid "" "generate extra nops to improve debugging, producing an instruction for every " "code related keyword" msgstr "" -#: m2/lang.opt:147 +#: m2/lang.opt:143 #, no-c-format msgid "generate error messages which render keywords in lower case" msgstr "" -#: m2/lang.opt:151 +#: m2/lang.opt:147 #, no-c-format msgid "" "specify the module mangled prefix name for all modules in the following " "include paths" msgstr "" -#: m2/lang.opt:159 +#: m2/lang.opt:155 #, no-c-format msgid "insert plugin to identify runtime errors at compiletime" msgstr "" -#: m2/lang.opt:163 +#: m2/lang.opt:159 #, no-c-format msgid "specify the module mangled prefix name" msgstr "" -#: m2/lang.opt:167 +#: m2/lang.opt:163 #, no-c-format msgid "" "display statistics about the amount of source lines compiled and symbols used" msgstr "" -#: m2/lang.opt:171 +#: m2/lang.opt:167 #, no-c-format msgid "experimental flag to turn on the new strict type checker" msgstr "" -#: m2/lang.opt:175 +#: m2/lang.opt:171 #, no-c-format msgid "compile all implementation modules and program module at once" msgstr "" -#: m2/lang.opt:179 +#: m2/lang.opt:175 #, no-c-format msgid "recognise the specified suffix as implementation and module filenames" msgstr "" -#: m2/lang.opt:183 +#: m2/lang.opt:179 #, no-c-format msgid "" "turns on runtime checking to detect accessing data through a NIL value " "pointer" msgstr "" -#: m2/lang.opt:187 +#: m2/lang.opt:183 #, no-c-format msgid "use PIM [234] dialect of Modula-2" msgstr "" -#: m2/lang.opt:191 +#: m2/lang.opt:187 #, no-c-format msgid "use PIM 2 dialect of Modula-2" msgstr "" -#: m2/lang.opt:195 +#: m2/lang.opt:191 #, no-c-format msgid "use PIM 3 dialect of Modula-2" msgstr "" -#: m2/lang.opt:199 +#: m2/lang.opt:195 #, no-c-format msgid "use PIM 4 dialect of Modula-2" msgstr "" -#: m2/lang.opt:203 +#: m2/lang.opt:199 #, no-c-format msgid "force positive result from MOD and DIV result floor" msgstr "" -#: m2/lang.opt:207 +#: m2/lang.opt:203 #, no-c-format msgid "link against the pthread library (default on)" msgstr "" -#: m2/lang.opt:211 +#: m2/lang.opt:207 #, no-c-format msgid "internal compiler debugging information, dump the list of quadruples" msgstr "" -#: m2/lang.opt:219 +#: m2/lang.opt:215 #, no-c-format msgid "" "turns on runtime checking for functions which finish without executing a " "RETURN statement" msgstr "" -#: m2/lang.opt:223 +#: m2/lang.opt:219 #, no-c-format msgid "specify the list of runtime modules and their initialization order" msgstr "" -#: m2/lang.opt:227 +#: m2/lang.opt:223 #, no-c-format msgid "" "the modules initialization order is dynamically determined by M2RTS and " "application dependencies" msgstr "" -#: m2/lang.opt:231 +#: m2/lang.opt:227 #, no-c-format msgid "generate a C source scaffold for the current module being compiled" msgstr "" -#: m2/lang.opt:235 +#: m2/lang.opt:231 #, no-c-format msgid "generate a C++ source scaffold for the current module being compiled" msgstr "" -#: m2/lang.opt:239 +#: m2/lang.opt:235 #, no-c-format msgid "generate the main function" msgstr "" -#: m2/lang.opt:243 +#: m2/lang.opt:239 #, no-c-format msgid "" "generate static scaffold initialization and finalization for every module " "inside main" msgstr "" -#: m2/lang.opt:247 +#: m2/lang.opt:243 #, no-c-format msgid "generate a shared library from the module" msgstr "" -#: m2/lang.opt:251 +#: m2/lang.opt:247 #, no-c-format msgid "" "turns on all software runtime checking (an abbreviation for -fnil -frange -" "findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)" msgstr "" -#: m2/lang.opt:255 +#: m2/lang.opt:251 #, no-c-format msgid "display the location of module source files as they are compiled" msgstr "" -#: m2/lang.opt:259 +#: m2/lang.opt:255 #, no-c-format msgid "create a swig interface file for the module" msgstr "" -#: m2/lang.opt:263 +#: m2/lang.opt:259 #, no-c-format msgid "" "optimize non var unbounded parameters by passing it by reference, providing " "it is not written to within the callee procedure." msgstr "" -#: m2/lang.opt:267 +#: m2/lang.opt:263 #, no-c-format msgid "" "orders the initialization/finalializations for scaffold-static or force " "linking of modules if scaffold-dynamic" msgstr "" -#: m2/lang.opt:275 +#: m2/lang.opt:271 #, no-c-format msgid "turns on all division and modulus by zero checking for ordinal values" msgstr "" -#: m2/lang.opt:279 +#: m2/lang.opt:275 #, no-c-format msgid "" "turns on runtime checking to check whether a whole number will exceed range" msgstr "" -#: m2/lang.opt:283 +#: m2/lang.opt:279 #, no-c-format msgid "Link the standard Modula-2 libraries statically in the compilation." msgstr "" -#: m2/lang.opt:428 m2/lang.opt:432 +#: m2/lang.opt:424 m2/lang.opt:428 #, no-c-format msgid "save temporary preprocessed files" msgstr "" @@ -5129,7 +5132,7 @@ msgstr "" #: analyzer/analyzer.opt:227 #, no-c-format msgid "" -"Warn about code paths in in which a call is made to strtok with undefined " +"Warn about code paths in which a call is made to strtok with undefined " "behavior." msgstr "" @@ -6055,7 +6058,7 @@ msgstr "" msgid "Use simulator runtime." msgstr "" -#: config/bfin/bfin.opt:44 config/arm/arm.opt:120 +#: config/bfin/bfin.opt:44 config/arm/arm.opt:117 #, no-c-format msgid "Specify the name of the target CPU." msgstr "" @@ -6114,7 +6117,7 @@ msgstr "" msgid "Link with the fast floating-point library." msgstr "" -#: config/bfin/bfin.opt:90 config/arm/arm.opt:348 config/frv/frv.opt:130 +#: config/bfin/bfin.opt:90 config/arm/arm.opt:345 config/frv/frv.opt:130 #, no-c-format msgid "Enable Function Descriptor PIC mode." msgstr "" @@ -6264,7 +6267,7 @@ msgstr "" msgid "Align variables on a 32-bit boundary." msgstr "" -#: config/m68k/m68k.opt:103 config/arm/arm.opt:89 config/nios2/nios2.opt:570 +#: config/m68k/m68k.opt:103 config/arm/arm.opt:86 config/nios2/nios2.opt:570 #: config/nds32/nds32.opt:171 config/c6x/c6x.opt:67 #, no-c-format msgid "Specify the name of the target architecture." @@ -6371,13 +6374,13 @@ msgid "Support TLS segment larger than 64K." msgstr "" #: config/riscv/riscv.opt:26 config/aarch64/aarch64.opt:74 -#: config/arm/arm.opt:108 config/microblaze/microblaze.opt:60 +#: config/arm/arm.opt:105 config/microblaze/microblaze.opt:60 #, no-c-format msgid "Assume target CPU is configured as big endian." msgstr "" #: config/riscv/riscv.opt:30 config/aarch64/aarch64.opt:94 -#: config/arm/arm.opt:173 config/microblaze/microblaze.opt:64 +#: config/arm/arm.opt:170 config/microblaze/microblaze.opt:64 #, no-c-format msgid "Assume target CPU is configured as little endian." msgstr "" @@ -6519,116 +6522,125 @@ msgid "Known data alignment choices (for use with the -malign-data= option):" msgstr "" #: config/riscv/riscv.opt:201 config/aarch64/aarch64.opt:304 -#: config/i386/i386.opt:1034 config/arm/arm.opt:352 +#: config/i386/i386.opt:1038 config/arm/arm.opt:349 #: config/rs6000/rs6000.opt:550 #, no-c-format msgid "Use given stack-protector guard." msgstr "" #: config/riscv/riscv.opt:205 config/aarch64/aarch64.opt:308 -#: config/arm/arm.opt:356 config/rs6000/rs6000.opt:554 +#: config/arm/arm.opt:353 config/rs6000/rs6000.opt:554 #, no-c-format msgid "Valid arguments to -mstack-protector-guard=:" msgstr "" -#: config/riscv/riscv.opt:215 config/i386/i386.opt:1048 +#: config/riscv/riscv.opt:215 config/i386/i386.opt:1052 #: config/rs6000/rs6000.opt:564 #, no-c-format msgid "Use the given base register for addressing the stack-protector guard." msgstr "" -#: config/riscv/riscv.opt:222 config/i386/i386.opt:1055 +#: config/riscv/riscv.opt:222 config/i386/i386.opt:1059 #: config/rs6000/rs6000.opt:571 #, no-c-format msgid "Use the given offset for addressing the stack-protector guard." msgstr "" -#: config/riscv/riscv.opt:492 +#: config/riscv/riscv.opt:494 #, no-c-format msgid "Supported ISA specs (for use with the -misa-spec= option):" msgstr "" -#: config/riscv/riscv.opt:505 +#: config/riscv/riscv.opt:507 #, no-c-format msgid "Set the version of RISC-V ISA spec." msgstr "" -#: config/riscv/riscv.opt:509 +#: config/riscv/riscv.opt:511 #, no-c-format msgid "Enable conditional moves unconditionally." msgstr "" -#: config/riscv/riscv.opt:513 +#: config/riscv/riscv.opt:515 #, no-c-format msgid "Always inline subword atomic operations." msgstr "" -#: config/riscv/riscv.opt:517 +#: config/riscv/riscv.opt:519 #, no-c-format msgid "Inline strcmp calls if possible." msgstr "" -#: config/riscv/riscv.opt:521 +#: config/riscv/riscv.opt:523 #, no-c-format msgid "Inline strncmp calls if possible." msgstr "" -#: config/riscv/riscv.opt:525 +#: config/riscv/riscv.opt:527 #, no-c-format msgid "Inline strlen calls if possible." msgstr "" -#: config/riscv/riscv.opt:529 +#: config/riscv/riscv.opt:531 #, no-c-format msgid "" "Max number of bytes to compare as part of inlined strcmp/strncmp routines " "(default: 64)." msgstr "" -#: config/riscv/riscv.opt:533 +#: config/riscv/riscv.opt:535 #, no-c-format -msgid "Valid arguments to -param=riscv-autovec-preference=:" +msgid "The RVV possible LMUL (-mrvv-max-lmul=):" msgstr "" -#: config/riscv/riscv.opt:546 +#: config/riscv/riscv.opt:554 #, no-c-format -msgid "" -"-param=riscv-autovec-preference=\tSet the preference of auto-" -"vectorization in the RISC-V port." +msgid "-mrvv-max-lmul=\tSet the RVV LMUL of auto-vectorization." msgstr "" -#: config/riscv/riscv.opt:550 +#: config/riscv/riscv.opt:561 #, no-c-format -msgid "The RVV possible LMUL (-param=riscv-autovec-lmul=):" +msgid "Valid arguments to -param=vsetvl-strategy=:" msgstr "" -#: config/riscv/riscv.opt:569 +#: config/riscv/riscv.opt:574 #, no-c-format msgid "" -"-param=riscv-autovec-lmul=\tSet the RVV LMUL of auto-vectorization " -"in the RISC-V port." +"-param=vsetvl-strategy=\tSet the optimization level of VSETVL insert " +"pass." msgstr "" -#: config/riscv/riscv.opt:576 +#: config/riscv/riscv.opt:578 config/i386/i386.opt:496 #, no-c-format -msgid "Valid arguments to -param=vsetvl-strategy=:" +msgid "Valid arguments to -mstringop-strategy=:" +msgstr "" + +#: config/riscv/riscv.opt:594 +#, no-c-format +msgid "Specify stringop expansion strategy." msgstr "" -#: config/riscv/riscv.opt:589 +#: config/riscv/riscv.opt:598 +#, no-c-format +msgid "The possible RVV vector register lengths:" +msgstr "" + +#: config/riscv/riscv.opt:608 #, no-c-format msgid "" -"-param=vsetvl-strategy=\tSet the optimization level of VSETVL insert " -"pass." +"-mrvv-vector-bits=\tSet the kind of bits for an RVV vector register." msgstr "" -#: config/riscv/riscv.opt:593 config/i386/i386.opt:496 +#: config/riscv/riscv.opt:612 config/aarch64/aarch64.opt:49 +#: config/loongarch/loongarch.opt:258 #, no-c-format -msgid "Valid arguments to -mstringop-strategy=:" +msgid "The possible TLS dialects:" msgstr "" -#: config/riscv/riscv.opt:609 +#: config/riscv/riscv.opt:622 config/aarch64/aarch64.opt:145 +#: config/loongarch/loongarch.opt:268 #, no-c-format -msgid "Specify stringop expansion strategy." +msgid "Specify TLS dialect." msgstr "" #: config/m32c/m32c.opt:23 @@ -6778,22 +6790,17 @@ msgid "" "__mspabi helper function. The default value is 4." msgstr "" -#: config/aarch64/aarch64.opt:49 -#, no-c-format -msgid "The possible TLS dialects:" -msgstr "" - #: config/aarch64/aarch64.opt:61 config/loongarch/loongarch.opt:219 #, no-c-format msgid "The code model option names for -mcmodel:" msgstr "" -#: config/aarch64/aarch64.opt:78 config/i386/i386.opt:1069 +#: config/aarch64/aarch64.opt:78 config/i386/i386.opt:1073 #, no-c-format msgid "Generate code which uses only the general registers." msgstr "" -#: config/aarch64/aarch64.opt:82 config/i386/i386.opt:1161 +#: config/aarch64/aarch64.opt:82 config/i386/i386.opt:1165 #, no-c-format msgid "Generate code to mitigate against straight line speculation." msgstr "" @@ -6823,11 +6830,6 @@ msgstr "" msgid "Don't assume that unaligned accesses are handled by the system." msgstr "" -#: config/aarch64/aarch64.opt:145 -#, no-c-format -msgid "Specify TLS dialect." -msgstr "" - #: config/aarch64/aarch64.opt:149 #, no-c-format msgid "" @@ -6871,7 +6873,7 @@ msgstr "" msgid "PC relative literal loads." msgstr "" -#: config/aarch64/aarch64.opt:202 config/arm/arm.opt:340 +#: config/aarch64/aarch64.opt:202 config/arm/arm.opt:337 #, no-c-format msgid "Use branch-protection features." msgstr "" @@ -7755,7 +7757,7 @@ msgstr "" msgid "Generate code for given CPU." msgstr "" -#: config/i386/i386.opt:282 config/bpf/bpf.opt:98 +#: config/i386/i386.opt:282 config/bpf/bpf.opt:100 #, no-c-format msgid "Use given assembler dialect." msgstr "" @@ -7990,7 +7992,7 @@ msgstr "" msgid "Generate reciprocals instead of divss and sqrtss." msgstr "" -#: config/i386/i386.opt:601 config/loongarch/loongarch.opt:214 +#: config/i386/i386.opt:601 config/loongarch/loongarch.opt:210 #, no-c-format msgid "Control generation of reciprocal estimates." msgstr "" @@ -8067,817 +8069,824 @@ msgstr "" msgid "Maximum number of bits that can be stored to memory efficiently." msgstr "" -#: config/i386/i386.opt:666 +#: config/i386/i386.opt:664 #, no-c-format -msgid "Generate 32bit i386 code." +msgid "" +"Optimize noreturn functions by not saving callee-saved registers used in the " +"function." msgstr "" #: config/i386/i386.opt:670 #, no-c-format -msgid "Generate 64bit x86-64 code." +msgid "Generate 32bit i386 code." msgstr "" #: config/i386/i386.opt:674 #, no-c-format -msgid "Generate 32bit x86-64 code." +msgid "Generate 64bit x86-64 code." msgstr "" #: config/i386/i386.opt:678 #, no-c-format -msgid "Generate 16bit i386 code." +msgid "Generate 32bit x86-64 code." msgstr "" #: config/i386/i386.opt:682 #, no-c-format -msgid "Support MMX built-in functions." +msgid "Generate 16bit i386 code." msgstr "" #: config/i386/i386.opt:686 #, no-c-format -msgid "Support 3DNow! built-in functions." +msgid "Support MMX built-in functions." msgstr "" #: config/i386/i386.opt:690 #, no-c-format -msgid "Support Athlon 3Dnow! built-in functions." +msgid "Support 3DNow! built-in functions." msgstr "" #: config/i386/i386.opt:694 #, no-c-format -msgid "Support MMX and SSE built-in functions and code generation." +msgid "Support Athlon 3Dnow! built-in functions." msgstr "" #: config/i386/i386.opt:698 #, no-c-format -msgid "Support MMX, SSE and SSE2 built-in functions and code generation." +msgid "Support MMX and SSE built-in functions and code generation." msgstr "" #: config/i386/i386.opt:702 #, no-c-format -msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation." +msgid "Support MMX, SSE and SSE2 built-in functions and code generation." msgstr "" #: config/i386/i386.opt:706 #, no-c-format +msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation." +msgstr "" + +#: config/i386/i386.opt:710 +#, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code " "generation." msgstr "" -#: config/i386/i386.opt:710 +#: config/i386/i386.opt:714 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code " "generation." msgstr "" -#: config/i386/i386.opt:714 config/i386/i386.opt:718 +#: config/i386/i386.opt:718 config/i386/i386.opt:722 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions " "and code generation." msgstr "" -#: config/i386/i386.opt:722 +#: config/i386/i386.opt:726 #, no-c-format msgid "" "Do not support SSE4.1 and SSE4.2 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:730 +#: config/i386/i386.opt:734 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in " "functions and code generation." msgstr "" -#: config/i386/i386.opt:734 +#: config/i386/i386.opt:738 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in " "functions and code generation." msgstr "" -#: config/i386/i386.opt:738 +#: config/i386/i386.opt:742 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:742 +#: config/i386/i386.opt:746 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512PF built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:746 +#: config/i386/i386.opt:750 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512ER built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:750 +#: config/i386/i386.opt:754 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512CD built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:754 +#: config/i386/i386.opt:758 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512DQ built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:758 +#: config/i386/i386.opt:762 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512BW built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:762 +#: config/i386/i386.opt:766 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512VL built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:766 +#: config/i386/i386.opt:770 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512IFMA built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:770 +#: config/i386/i386.opt:774 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F " "and AVX512VBMI built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:774 +#: config/i386/i386.opt:778 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and " "AVX5124FMAPS built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:778 +#: config/i386/i386.opt:782 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and " "AVX5124VNNIW built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:782 +#: config/i386/i386.opt:786 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and " "AVX512VPOPCNTDQ built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:786 +#: config/i386/i386.opt:790 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and " "AVX512VBMI2 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:790 +#: config/i386/i386.opt:794 #, no-c-format msgid "Support AVX512VNNI built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:794 +#: config/i386/i386.opt:798 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and " "AVX512BITALG built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:798 +#: config/i386/i386.opt:802 #, no-c-format msgid "Support AVX512VP2INTERSECT built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:802 +#: config/i386/i386.opt:806 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in " "functions and code generation." msgstr "" -#: config/i386/i386.opt:806 +#: config/i386/i386.opt:810 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code " "generation." msgstr "" -#: config/i386/i386.opt:810 +#: config/i386/i386.opt:814 #, no-c-format msgid "Support FMA4 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:814 +#: config/i386/i386.opt:818 #, no-c-format msgid "Support XOP built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:818 +#: config/i386/i386.opt:822 #, no-c-format msgid "Support LWP built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:822 +#: config/i386/i386.opt:826 #, no-c-format msgid "" "Support code generation of Advanced Bit Manipulation (ABM) instructions." msgstr "" -#: config/i386/i386.opt:826 +#: config/i386/i386.opt:830 #, no-c-format msgid "Support code generation of popcnt instruction." msgstr "" -#: config/i386/i386.opt:830 +#: config/i386/i386.opt:834 #, no-c-format msgid "Support PCONFIG built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:834 +#: config/i386/i386.opt:838 #, no-c-format msgid "Support WBNOINVD built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:838 +#: config/i386/i386.opt:842 #, no-c-format msgid "Support PTWRITE built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:842 +#: config/i386/i386.opt:846 #, no-c-format msgid "Support UINTR built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:846 +#: config/i386/i386.opt:850 #, no-c-format msgid "Support SGX built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:850 +#: config/i386/i386.opt:854 #, no-c-format msgid "Support RDPID built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:854 +#: config/i386/i386.opt:858 #, no-c-format msgid "Support GFNI built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:858 +#: config/i386/i386.opt:862 #, no-c-format msgid "Support VAES built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:862 +#: config/i386/i386.opt:866 #, no-c-format msgid "Support VPCLMULQDQ built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:866 +#: config/i386/i386.opt:870 #, no-c-format msgid "Support BMI built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:870 +#: config/i386/i386.opt:874 #, no-c-format msgid "Support BMI2 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:874 +#: config/i386/i386.opt:878 #, no-c-format msgid "Support LZCNT built-in function and code generation." msgstr "" -#: config/i386/i386.opt:878 +#: config/i386/i386.opt:882 #, no-c-format msgid "Support Hardware Lock Elision prefixes." msgstr "" -#: config/i386/i386.opt:882 +#: config/i386/i386.opt:886 #, no-c-format msgid "Support RDSEED instruction." msgstr "" -#: config/i386/i386.opt:886 +#: config/i386/i386.opt:890 #, no-c-format msgid "Support PREFETCHW instruction." msgstr "" -#: config/i386/i386.opt:890 +#: config/i386/i386.opt:894 #, no-c-format msgid "Support flag-preserving add-carry instructions." msgstr "" -#: config/i386/i386.opt:894 +#: config/i386/i386.opt:898 #, no-c-format msgid "Support CLFLUSHOPT instructions." msgstr "" -#: config/i386/i386.opt:898 +#: config/i386/i386.opt:902 #, no-c-format msgid "Support CLWB instruction." msgstr "" -#: config/i386/i386.opt:905 +#: config/i386/i386.opt:909 #, no-c-format msgid "Support FXSAVE and FXRSTOR instructions." msgstr "" -#: config/i386/i386.opt:909 +#: config/i386/i386.opt:913 #, no-c-format msgid "Support XSAVE and XRSTOR instructions." msgstr "" -#: config/i386/i386.opt:913 +#: config/i386/i386.opt:917 #, no-c-format msgid "Support XSAVEOPT instruction." msgstr "" -#: config/i386/i386.opt:917 +#: config/i386/i386.opt:921 #, no-c-format msgid "Support XSAVEC instructions." msgstr "" -#: config/i386/i386.opt:921 +#: config/i386/i386.opt:925 #, no-c-format msgid "Support XSAVES and XRSTORS instructions." msgstr "" -#: config/i386/i386.opt:925 +#: config/i386/i386.opt:929 #, no-c-format msgid "Support TBM built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:929 +#: config/i386/i386.opt:933 #, no-c-format msgid "Support code generation of cmpxchg16b instruction." msgstr "" -#: config/i386/i386.opt:933 +#: config/i386/i386.opt:937 #, no-c-format msgid "Support code generation of sahf instruction in 64bit x86-64 code." msgstr "" -#: config/i386/i386.opt:937 +#: config/i386/i386.opt:941 #, no-c-format msgid "Support code generation of movbe instruction." msgstr "" -#: config/i386/i386.opt:941 +#: config/i386/i386.opt:945 #, no-c-format msgid "Support code generation of crc32 instruction." msgstr "" -#: config/i386/i386.opt:945 +#: config/i386/i386.opt:949 #, no-c-format msgid "Support AES built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:949 +#: config/i386/i386.opt:953 #, no-c-format msgid "Support SHA1 and SHA256 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:953 +#: config/i386/i386.opt:957 #, no-c-format msgid "Support PCLMUL built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:957 +#: config/i386/i386.opt:961 #, no-c-format msgid "Encode SSE instructions with VEX prefix." msgstr "" -#: config/i386/i386.opt:961 +#: config/i386/i386.opt:965 #, no-c-format msgid "Support FSGSBASE built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:965 +#: config/i386/i386.opt:969 #, no-c-format msgid "Support RDRND built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:969 +#: config/i386/i386.opt:973 #, no-c-format msgid "Support F16C built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:973 +#: config/i386/i386.opt:977 #, no-c-format msgid "Support PREFETCHWT1 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:977 +#: config/i386/i386.opt:981 #, no-c-format msgid "Emit profiling counter call at function entry before prologue." msgstr "" -#: config/i386/i386.opt:981 +#: config/i386/i386.opt:985 #, no-c-format msgid "Generate __mcount_loc section with all mcount or __fentry__ calls." msgstr "" -#: config/i386/i386.opt:985 config/s390/s390.opt:311 +#: config/i386/i386.opt:989 config/s390/s390.opt:311 #, no-c-format msgid "" "Generate mcount/__fentry__ calls as nops. To activate they need to be " "patched in." msgstr "" -#: config/i386/i386.opt:990 +#: config/i386/i386.opt:994 #, no-c-format msgid "Set name of __fentry__ symbol called at function entry." msgstr "" -#: config/i386/i386.opt:994 +#: config/i386/i386.opt:998 #, no-c-format msgid "Set name of section to record mrecord-mcount calls." msgstr "" -#: config/i386/i386.opt:998 +#: config/i386/i386.opt:1002 #, no-c-format msgid "Skip setting up RAX register when passing variable arguments." msgstr "" -#: config/i386/i386.opt:1002 +#: config/i386/i386.opt:1006 #, no-c-format msgid "" "Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-" "time check." msgstr "" -#: config/i386/i386.opt:1006 +#: config/i386/i386.opt:1010 #, no-c-format msgid "Split 32-byte AVX unaligned load." msgstr "" -#: config/i386/i386.opt:1010 +#: config/i386/i386.opt:1014 #, no-c-format msgid "Split 32-byte AVX unaligned store." msgstr "" -#: config/i386/i386.opt:1014 +#: config/i386/i386.opt:1018 #, no-c-format msgid "Support RTM built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1022 +#: config/i386/i386.opt:1026 #, no-c-format msgid "Support MWAITX and MONITORX built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1026 +#: config/i386/i386.opt:1030 #, no-c-format msgid "Support CLZERO built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1030 +#: config/i386/i386.opt:1034 #, no-c-format msgid "Support PKU built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1038 +#: config/i386/i386.opt:1042 #, no-c-format msgid "" "Known stack protector guard (for use with the -mstack-protector-guard= " "option):" msgstr "" -#: config/i386/i386.opt:1062 +#: config/i386/i386.opt:1066 #, no-c-format msgid "Use the given symbol for addressing the stack-protector guard." msgstr "" -#: config/i386/i386.opt:1073 +#: config/i386/i386.opt:1077 #, no-c-format msgid "" "Enable shadow stack built-in functions from Control-flow Enforcement " "Technology (CET)." msgstr "" -#: config/i386/i386.opt:1078 +#: config/i386/i386.opt:1082 #, no-c-format msgid "" "Turn on CET instrumentation for switch statements that use a jump table and " "an indirect jump." msgstr "" -#: config/i386/i386.opt:1083 +#: config/i386/i386.opt:1087 #, no-c-format msgid "" "Insert ENDBR instruction at function entry only via cf_check attribute for " "CET instrumentation." msgstr "" -#: config/i386/i386.opt:1088 +#: config/i386/i386.opt:1092 #, no-c-format msgid "Make all function calls indirect." msgstr "" -#: config/i386/i386.opt:1092 +#: config/i386/i386.opt:1096 #, no-c-format msgid "Convert indirect call and jump to call and return thunks." msgstr "" -#: config/i386/i386.opt:1096 +#: config/i386/i386.opt:1100 #, no-c-format msgid "Convert function return to call and return thunk." msgstr "" -#: config/i386/i386.opt:1100 config/s390/s390.opt:277 +#: config/i386/i386.opt:1104 config/s390/s390.opt:277 #, no-c-format msgid "" "Known indirect branch choices (for use with the -mindirect-branch=/-" "mfunction-return= options):" msgstr "" -#: config/i386/i386.opt:1116 +#: config/i386/i386.opt:1120 #, no-c-format msgid "" "Add CS prefix to call and jmp to indirect thunk with branch target in r8-r15 " "registers." msgstr "" -#: config/i386/i386.opt:1120 +#: config/i386/i386.opt:1124 #, no-c-format msgid "Force indirect call and jump via register." msgstr "" -#: config/i386/i386.opt:1124 +#: config/i386/i386.opt:1128 #, no-c-format msgid "Support MOVDIRI built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1128 +#: config/i386/i386.opt:1132 #, no-c-format msgid "Support MOVDIR64B built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1132 +#: config/i386/i386.opt:1136 #, no-c-format msgid "Support WAITPKG built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1136 +#: config/i386/i386.opt:1140 #, no-c-format msgid "Support CLDEMOTE built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1140 +#: config/i386/i386.opt:1144 #, no-c-format msgid "Instrument function exit in instrumented functions with __fentry__." msgstr "" -#: config/i386/i386.opt:1144 +#: config/i386/i386.opt:1148 #, no-c-format msgid "Known choices for return instrumentation with -minstrument-return=:" msgstr "" -#: config/i386/i386.opt:1157 +#: config/i386/i386.opt:1161 #, no-c-format msgid "" "Generate a __return_loc section pointing to all return instrumentation code." msgstr "" -#: config/i386/i386.opt:1165 +#: config/i386/i386.opt:1169 #, no-c-format msgid "" "Known choices for mitigation against straight line speculation with -mharden-" "sls=:" msgstr "" -#: config/i386/i386.opt:1181 +#: config/i386/i386.opt:1185 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and " "AVX512BF16 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1186 +#: config/i386/i386.opt:1190 #, no-c-format msgid "Support ENQCMD built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1190 +#: config/i386/i386.opt:1194 #, no-c-format msgid "Support SERIALIZE built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1194 +#: config/i386/i386.opt:1198 #, no-c-format msgid "Support TSXLDTRK built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1198 +#: config/i386/i386.opt:1202 #, no-c-format msgid "Support AMX-TILE built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1202 +#: config/i386/i386.opt:1206 #, no-c-format msgid "Support AMX-INT8 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1206 +#: config/i386/i386.opt:1210 #, no-c-format msgid "Support AMX-BF16 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1210 +#: config/i386/i386.opt:1214 #, no-c-format msgid "Support HRESET built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1214 +#: config/i386/i386.opt:1218 #, no-c-format msgid "Support KL built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1218 +#: config/i386/i386.opt:1222 #, no-c-format msgid "Support WIDEKL built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1222 +#: config/i386/i386.opt:1226 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXVNNI " "built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1227 +#: config/i386/i386.opt:1231 #, no-c-format msgid "Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property." msgstr "" -#: config/i386/i386.opt:1231 +#: config/i386/i386.opt:1235 #, no-c-format msgid "Support MWAIT and MONITOR built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1235 +#: config/i386/i386.opt:1239 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and " "AVX512-FP16 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1239 +#: config/i386/i386.opt:1243 #, no-c-format msgid "Do not use GOT to access external symbols." msgstr "" -#: config/i386/i386.opt:1243 +#: config/i386/i386.opt:1247 #, no-c-format msgid "Instructions number above which STFL stall penalty can be compensated." msgstr "" -#: config/i386/i386.opt:1247 +#: config/i386/i386.opt:1251 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXIFMA " "built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1252 +#: config/i386/i386.opt:1256 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and " "AVXVNNIINT8 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1257 +#: config/i386/i386.opt:1261 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and " "AVXNECONVERT build-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1262 +#: config/i386/i386.opt:1266 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and " "CMPCCXADD build-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1267 +#: config/i386/i386.opt:1271 #, no-c-format msgid "Support AMX-FP16 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1271 +#: config/i386/i386.opt:1275 #, no-c-format msgid "Support PREFETCHI built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1275 +#: config/i386/i386.opt:1279 #, no-c-format msgid "Support RAOINT built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1279 +#: config/i386/i386.opt:1283 #, no-c-format msgid "Enable conservative small loop unrolling." msgstr "" -#: config/i386/i386.opt:1283 +#: config/i386/i386.opt:1287 #, no-c-format msgid "" "-mlam=[none|u48|u57] Instrument meta data position in user data pointers." msgstr "" -#: config/i386/i386.opt:1299 +#: config/i386/i386.opt:1303 #, no-c-format msgid "Support AMX-COMPLEX built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1303 +#: config/i386/i386.opt:1307 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and " "AVXVNNIINT16 built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1308 +#: config/i386/i386.opt:1312 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM3 built-in " "functions and code generation." msgstr "" -#: config/i386/i386.opt:1313 +#: config/i386/i386.opt:1317 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SHA512 built-in " "functions and code generation." msgstr "" -#: config/i386/i386.opt:1318 +#: config/i386/i386.opt:1322 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM4 built-in " "functions and code generation." msgstr "" -#: config/i386/i386.opt:1323 +#: config/i386/i386.opt:1327 #, no-c-format msgid "Enable vectorization for gather instruction." msgstr "" -#: config/i386/i386.opt:1327 +#: config/i386/i386.opt:1331 #, no-c-format msgid "Enable vectorization for scatter instruction." msgstr "" -#: config/i386/i386.opt:1331 +#: config/i386/i386.opt:1335 #, no-c-format msgid "" "Support code generation for APX features, including EGPR, PUSH2POP2, NDD and " "PPX." msgstr "" -#: config/i386/i386.opt:1360 +#: config/i386/i386.opt:1364 #, no-c-format msgid "Enable GPR32 in inline asm when APX_F enabled." msgstr "" -#: config/i386/i386.opt:1364 +#: config/i386/i386.opt:1368 #, no-c-format msgid "Support 512 bit vector built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1368 +#: config/i386/i386.opt:1372 #, no-c-format msgid "Support USER_MSR built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1372 config/i386/i386.opt:1382 +#: config/i386/i386.opt:1376 config/i386/i386.opt:1386 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1 " "built-in functions and code generation." msgstr "" -#: config/i386/i386.opt:1377 +#: config/i386/i386.opt:1381 #, no-c-format msgid "" "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and " @@ -9266,38 +9275,46 @@ msgstr "" #: config/avr/avr.opt:23 #, no-c-format -msgid "Use subroutines for function prologues and epilogues." +msgid "Optimization. Use subroutines for function prologues and epilogues." msgstr "" #: config/avr/avr.opt:27 #, no-c-format -msgid "-mmcu=MCU\tSelect the target MCU." +msgid "-mmcu=\tSelect the target MCU." msgstr "" #: config/avr/avr.opt:31 #, no-c-format msgid "" -"Allow usage of __gcc_isr pseudo instructions in ISR prologues and epilogues." +"Optimization. Allow usage of __gcc_isr pseudo instructions in ISR prologues " +"and epilogues." msgstr "" #: config/avr/avr.opt:35 #, no-c-format -msgid "Set the number of 64 KiB flash segments." +msgid "" +"This option is used internally. Set the number of 64 KiB flash segments." msgstr "" #: config/avr/avr.opt:39 #, no-c-format -msgid "Indicate presence of a processor erratum." +msgid "" +"This option is used internally. Indicate presence of a processor erratum. " +"Do not skip 32-bit instructions." msgstr "" #: config/avr/avr.opt:43 #, no-c-format -msgid "Enable Read-Modify-Write (RMW) instructions support/use." +msgid "" +"This option is used internally. Enable Read-Modify-Write (RMW) instructions " +"support/use." msgstr "" #: config/avr/avr.opt:53 #, no-c-format -msgid "Use RJMP / RCALL even though CALL / JMP are available." +msgid "" +"This option is used internally for multilib generation and selection. " +"Assume RJMP / RCALL can target all program memory." msgstr "" #: config/avr/avr.opt:57 @@ -9313,13 +9330,14 @@ msgstr "" #: config/avr/avr.opt:65 #, no-c-format msgid "" -"Set the branch costs for conditional branch instructions. Reasonable values " -"are small, non-negative integers. The default branch cost is 0." +"-mbranch-cost=\tOptimization. Set the branch costs for conditional " +"branch instructions. Reasonable values are small, non-negative integers. " +"The default branch cost is 0." msgstr "" #: config/avr/avr.opt:69 #, no-c-format -msgid "Treat main as if it had attribute OS_task." +msgid "Optimization. Treat main as if it had attribute OS_task." msgstr "" #: config/avr/avr.opt:79 @@ -9329,7 +9347,7 @@ msgstr "" #: config/avr/avr.opt:83 #, no-c-format -msgid "Relax branches." +msgid "Optimization. Relax branches." msgstr "" #: config/avr/avr.opt:87 @@ -9342,29 +9360,29 @@ msgstr "" #: config/avr/avr.opt:91 #, no-c-format msgid "" -"Accumulate outgoing function arguments and acquire/release the needed stack " -"space for outgoing function arguments in function prologue/epilogue. " -"Without this option, outgoing arguments are pushed before calling a function " -"and popped afterwards. This option can lead to reduced code size for " -"functions that call many functions that get their arguments on the stack " +"Optimization. Accumulate outgoing function arguments and acquire/release the " +"needed stack space for outgoing function arguments in function prologue/" +"epilogue. Without this option, outgoing arguments are pushed before calling " +"a function and popped afterwards. This option can lead to reduced code size " +"for functions that call many functions that get their arguments on the stack " "like, for example printf." msgstr "" #: config/avr/avr.opt:95 #, no-c-format msgid "" -"When accessing RAM, use X as imposed by the hardware, i.e. just use pre-" -"decrement, post-increment and indirect addressing with the X register. " -"Without this option, the compiler may assume that there is an addressing " -"mode X+const similar to Y+const and Z+const and emit instructions to emulate " -"such an addressing mode for X." +"Optimization. When accessing RAM, use X as imposed by the hardware, i.e. " +"just use pre-decrement, post-increment and indirect addressing with the X " +"register. Without this option, the compiler may assume that there is an " +"addressing mode X+const similar to Y+const and Z+const and emit instructions " +"to emulate such an addressing mode for X." msgstr "" #: config/avr/avr.opt:99 #, no-c-format msgid "" -"The device has the bitfield NVMCTRL_CTRLB.FLMAP. This option is used " -"internally." +"This option is used internally. The device has the bitfield NVMCTRL_CTRLB." +"FLMAP." msgstr "" #: config/avr/avr.opt:103 @@ -9375,58 +9393,72 @@ msgstr "" #: config/avr/avr.opt:108 #, no-c-format msgid "" -"The device has no SPH special function register. This option will be " -"overridden by the compiler driver with the correct setting if presence/" -"absence of SPH can be deduced from -mmcu=MCU." +"This option is used internally for multilib generation and selection. The " +"device has no SPH special function register." msgstr "" #: config/avr/avr.opt:112 #, no-c-format -msgid "Warn if the address space of an address is changed." +msgid "" +"Optimization. Split register additions from load/store instructions. Most " +"useful on Reduced Tiny." msgstr "" #: config/avr/avr.opt:116 #, no-c-format msgid "" +"-mfuse-add=<0,2>\tOptimization. Split register additions from load/store " +"instructions. Most useful on Reduced Tiny." +msgstr "" + +#: config/avr/avr.opt:120 +#, no-c-format +msgid "Warn if the address space of an address is changed." +msgstr "" + +#: config/avr/avr.opt:124 +#, no-c-format +msgid "" "Warn if the ISR is misspelled, i.e. without __vector prefix. Enabled by " "default." msgstr "" -#: config/avr/avr.opt:120 +#: config/avr/avr.opt:128 #, no-c-format msgid "" "Allow to use truncation instead of rounding towards zero for fractional " "fixed-point types." msgstr "" -#: config/avr/avr.opt:124 +#: config/avr/avr.opt:132 #, no-c-format msgid "" -"Assume that all data in static storage can be accessed by LDS / STS. This " -"option is only useful for reduced Tiny devices." +"Assume that all data in static storage can be accessed by LDS / STS " +"instructions. This option is only useful for reduced Tiny devices like " +"ATtiny40." msgstr "" -#: config/avr/avr.opt:128 +#: config/avr/avr.opt:136 #, no-c-format msgid "-mdouble=\tUse bits wide double type." msgstr "" -#: config/avr/avr.opt:132 +#: config/avr/avr.opt:140 #, no-c-format msgid "-mlong-double=\tUse bits wide long double type." msgstr "" -#: config/avr/avr.opt:136 +#: config/avr/avr.opt:144 #, no-c-format msgid "Do not link against the device-specific library lib.a." msgstr "" -#: config/avr/avr.opt:140 +#: config/avr/avr.opt:148 #, no-c-format msgid "Do not use the device-specific specs file device-specs/specs-." msgstr "" -#: config/avr/avr.opt:144 +#: config/avr/avr.opt:152 #, no-c-format msgid "Available BITS selections:" msgstr "" @@ -9675,7 +9707,7 @@ msgid "" "are small, non-negative integers. The default branch cost is 1." msgstr "" -#: config/s390/s390.opt:238 config/arm/arm.opt:181 +#: config/s390/s390.opt:238 config/arm/arm.opt:178 #, no-c-format msgid "Assume data segments are relative to text segment." msgstr "" @@ -9770,9 +9802,9 @@ msgstr "" #: config/s390/s390.opt:335 #, no-c-format msgid "" -"Assume external symbols to be potentially unaligned. By default all symbols " -"without explicit alignment are assumed to reside on a 2 byte boundary as " -"mandated by the IBM Z ABI." +"Assume external symbols, whose natural alignment would be 1, to be " +"potentially unaligned. By default all symbols without explicit alignment " +"are assumed to reside on a 2 byte boundary as mandated by the IBM Z ABI." msgstr "" #: config/rl78/rl78.opt:27 config/rx/elf.opt:26 config/csky/csky.opt:198 @@ -9850,159 +9882,159 @@ msgstr "" msgid "Known ARM FPUs (for use with the -mfpu= option):" msgstr "" -#: config/arm/arm.opt:38 +#: config/arm/arm.opt:35 #, no-c-format msgid "TLS dialect to use:" msgstr "" -#: config/arm/arm.opt:48 +#: config/arm/arm.opt:45 #, no-c-format msgid "Specify an ABI." msgstr "" -#: config/arm/arm.opt:52 +#: config/arm/arm.opt:49 #, no-c-format msgid "Known ARM ABIs (for use with the -mabi= option):" msgstr "" -#: config/arm/arm.opt:71 +#: config/arm/arm.opt:68 #, no-c-format msgid "Generate a call to abort if a noreturn function returns." msgstr "" -#: config/arm/arm.opt:78 +#: config/arm/arm.opt:75 #, no-c-format msgid "Generate APCS conformant stack frames." msgstr "" -#: config/arm/arm.opt:82 +#: config/arm/arm.opt:79 #, no-c-format msgid "Generate re-entrant, PIC code." msgstr "" -#: config/arm/arm.opt:104 +#: config/arm/arm.opt:101 #, no-c-format msgid "Generate code in 32 bit ARM state." msgstr "" -#: config/arm/arm.opt:112 +#: config/arm/arm.opt:109 #, no-c-format msgid "Thumb: Assume non-static functions may be called from ARM code." msgstr "" -#: config/arm/arm.opt:116 +#: config/arm/arm.opt:113 #, no-c-format msgid "Thumb: Assume function pointers may go to non-Thumb aware code." msgstr "" -#: config/arm/arm.opt:124 config/csky/csky.opt:73 +#: config/arm/arm.opt:121 config/csky/csky.opt:73 #, no-c-format msgid "Specify if floating point hardware should be used." msgstr "" -#: config/arm/arm.opt:128 +#: config/arm/arm.opt:125 #, no-c-format msgid "" "Specify that the compiler should target secure code as per ARMv8-M Security " "Extensions." msgstr "" -#: config/arm/arm.opt:132 config/csky/csky.opt:77 +#: config/arm/arm.opt:129 config/csky/csky.opt:77 #, no-c-format msgid "Known floating-point ABIs (for use with the -mfloat-abi= option):" msgstr "" -#: config/arm/arm.opt:145 +#: config/arm/arm.opt:142 #, no-c-format msgid "Switch ARM/Thumb modes on alternating functions for compiler testing." msgstr "" -#: config/arm/arm.opt:149 +#: config/arm/arm.opt:146 #, no-c-format msgid "Specify the __fp16 floating-point format." msgstr "" -#: config/arm/arm.opt:153 +#: config/arm/arm.opt:150 #, no-c-format msgid "Known __fp16 formats (for use with the -mfp16-format= option):" msgstr "" -#: config/arm/arm.opt:166 +#: config/arm/arm.opt:163 #, no-c-format msgid "Specify the name of the target floating point hardware/format." msgstr "" -#: config/arm/arm.opt:177 +#: config/arm/arm.opt:174 #, no-c-format msgid "Generate call insns as indirect calls, if necessary." msgstr "" -#: config/arm/arm.opt:185 +#: config/arm/arm.opt:182 #, no-c-format msgid "Specify the register to be used for PIC addressing." msgstr "" -#: config/arm/arm.opt:189 +#: config/arm/arm.opt:186 #, no-c-format msgid "Store function names in object code." msgstr "" -#: config/arm/arm.opt:193 +#: config/arm/arm.opt:190 #, no-c-format msgid "Permit scheduling of a function's prologue sequence." msgstr "" -#: config/arm/arm.opt:197 config/rs6000/rs6000.opt:235 +#: config/arm/arm.opt:194 config/rs6000/rs6000.opt:235 #, no-c-format msgid "Do not load the PIC register in function prologues." msgstr "" -#: config/arm/arm.opt:204 +#: config/arm/arm.opt:201 #, no-c-format msgid "Specify the minimum bit alignment of structures. (Deprecated)." msgstr "" -#: config/arm/arm.opt:208 +#: config/arm/arm.opt:205 #, no-c-format msgid "Generate code for Thumb state." msgstr "" -#: config/arm/arm.opt:212 +#: config/arm/arm.opt:209 #, no-c-format msgid "Support calls between Thumb and ARM instruction sets." msgstr "" -#: config/arm/arm.opt:216 +#: config/arm/arm.opt:213 #, no-c-format msgid "Specify thread local storage scheme." msgstr "" -#: config/arm/arm.opt:220 +#: config/arm/arm.opt:217 #, no-c-format msgid "Specify how to access the thread pointer." msgstr "" -#: config/arm/arm.opt:224 +#: config/arm/arm.opt:221 #, no-c-format msgid "Valid arguments to -mtp=:" msgstr "" -#: config/arm/arm.opt:246 +#: config/arm/arm.opt:243 #, no-c-format msgid "Thumb: Generate (non-leaf) stack frames even if not needed." msgstr "" -#: config/arm/arm.opt:250 +#: config/arm/arm.opt:247 #, no-c-format msgid "Thumb: Generate (leaf) stack frames even if not needed." msgstr "" -#: config/arm/arm.opt:254 config/mn10300/mn10300.opt:42 +#: config/arm/arm.opt:251 config/mn10300/mn10300.opt:42 #, no-c-format msgid "Tune code for the given processor." msgstr "" -#: config/arm/arm.opt:258 +#: config/arm/arm.opt:255 #, no-c-format msgid "" "Print CPU tuning information as comment in assembler file. This is an " @@ -10010,108 +10042,108 @@ msgid "" "ordinary use in compiling code." msgstr "" -#: config/arm/arm.opt:269 +#: config/arm/arm.opt:266 #, no-c-format msgid "" "Use Neon quad-word (rather than double-word) registers for vectorization." msgstr "" -#: config/arm/arm.opt:273 +#: config/arm/arm.opt:270 #, no-c-format msgid "" "Use Neon double-word (rather than quad-word) registers for vectorization." msgstr "" -#: config/arm/arm.opt:277 +#: config/arm/arm.opt:274 #, no-c-format msgid "" "Enable more verbose RTX cost dumps during debug. For GCC developers use " "only." msgstr "" -#: config/arm/arm.opt:281 +#: config/arm/arm.opt:278 #, no-c-format msgid "Only generate absolute relocations on word sized values." msgstr "" -#: config/arm/arm.opt:285 +#: config/arm/arm.opt:282 #, no-c-format msgid "Generate IT blocks appropriate for ARMv8." msgstr "" -#: config/arm/arm.opt:289 +#: config/arm/arm.opt:286 #, no-c-format msgid "" "Avoid overlapping destination and address registers on LDRD instructions " "that may trigger Cortex-M3 errata." msgstr "" -#: config/arm/arm.opt:294 +#: config/arm/arm.opt:291 #, no-c-format msgid "Mitigate issues with VLLDM on some M-profile devices (CVE-2021-35465)." msgstr "" -#: config/arm/arm.opt:298 +#: config/arm/arm.opt:295 #, no-c-format msgid "" "Mitigate issues with AES instructions on Cortex-A57 and Cortex-A72 (Arm " "erratum #1742098)." msgstr "" -#: config/arm/arm.opt:303 +#: config/arm/arm.opt:300 #, no-c-format msgid "" "Mitigate issues with AES instructions on Cortex-A57 and Cortex-A72 (Arm " "erratum #1655431)." msgstr "" -#: config/arm/arm.opt:308 config/nds32/nds32.opt:461 config/arc/arc.opt:495 +#: config/arm/arm.opt:305 config/nds32/nds32.opt:461 config/arc/arc.opt:495 #, no-c-format msgid "Enable unaligned word and halfword accesses to packed data." msgstr "" -#: config/arm/arm.opt:312 +#: config/arm/arm.opt:309 #, no-c-format msgid "This option is deprecated and has no effect." msgstr "" -#: config/arm/arm.opt:316 +#: config/arm/arm.opt:313 #, no-c-format msgid "Assume loading data from flash is slower than fetching instructions." msgstr "" -#: config/arm/arm.opt:320 +#: config/arm/arm.opt:317 #, no-c-format msgid "Assume unified syntax for inline assembly code." msgstr "" -#: config/arm/arm.opt:324 +#: config/arm/arm.opt:321 #, no-c-format msgid "Do not allow constant data to be placed in code sections." msgstr "" -#: config/arm/arm.opt:328 +#: config/arm/arm.opt:325 #, no-c-format msgid "When linking for big-endian targets, generate a BE8 format image." msgstr "" -#: config/arm/arm.opt:332 +#: config/arm/arm.opt:329 #, no-c-format msgid "" "When linking for big-endian targets, generate a legacy BE32 format image." msgstr "" -#: config/arm/arm.opt:336 config/sh/sh.opt:195 +#: config/arm/arm.opt:333 config/sh/sh.opt:195 #, no-c-format msgid "Cost to assume for a branch insn." msgstr "" -#: config/arm/arm.opt:344 +#: config/arm/arm.opt:341 #, no-c-format msgid "Generate code which uses the core registers only (r0-r14)." msgstr "" -#: config/arm/arm.opt:366 +#: config/arm/arm.opt:363 #, no-c-format msgid "" "Use an immediate to offset from the TLS register. This option is for use " @@ -10845,7 +10877,7 @@ msgid "" "and penalize only if it's satisfied. The default value is 20." msgstr "" -#: config/rs6000/rs6000.opt:670 config/loongarch/loongarch.opt:263 +#: config/rs6000/rs6000.opt:670 config/loongarch/loongarch.opt:277 #, no-c-format msgid "" "Indicate how many non memory access vector instructions can be issued per " @@ -11247,7 +11279,7 @@ msgstr "" msgid "Use %reloc() assembly operators (for backward compatibility)." msgstr "" -#: config/loongarch/loongarch.opt:210 +#: config/loongarch/loongarch.opt:214 #, no-c-format msgid "" "Generate approximate reciprocal divide and square root for better throughput." @@ -11263,35 +11295,35 @@ msgstr "" msgid "Pass -mrelax or -mno-relax option to the assembler." msgstr "" -#: config/loongarch/loongarch.opt:258 +#: config/loongarch/loongarch.opt:272 #, no-c-format msgid "" "Used to limit unroll factor which indicates how much the autovectorizer may " "unroll a loop. The default value is 6." msgstr "" -#: config/loongarch/loongarch.opt:276 +#: config/loongarch/loongarch.opt:290 #, no-c-format msgid "Support frecipe.{s/d} and frsqrte.{s/d} instructions." msgstr "" -#: config/loongarch/loongarch.opt:280 +#: config/loongarch/loongarch.opt:294 #, no-c-format msgid "" "Support div.w[u] and mod.w[u] instructions with inputs not sign-extended." msgstr "" -#: config/loongarch/loongarch.opt:284 +#: config/loongarch/loongarch.opt:298 #, no-c-format msgid "Support am{swap/add}[_db].{b/h} instructions." msgstr "" -#: config/loongarch/loongarch.opt:288 +#: config/loongarch/loongarch.opt:302 #, no-c-format msgid "Support amcas[_db].{b/h/w/d} instructions." msgstr "" -#: config/loongarch/loongarch.opt:292 +#: config/loongarch/loongarch.opt:306 #, no-c-format msgid "Do not need load-load barriers (dbar 0x700)." msgstr "" @@ -12924,7 +12956,7 @@ msgstr "" msgid "No default crt0.o." msgstr "" -#: config/iq2000/iq2000.opt:74 config/mips/mips.opt:438 +#: config/iq2000/iq2000.opt:74 config/mips/mips.opt:446 #, no-c-format msgid "Put uninitialized constants in ROM (needs -membedded-data)." msgstr "" @@ -13523,62 +13555,69 @@ msgstr "" msgid "GCN GPU type to use:" msgstr "" -#: config/gcn/gcn.opt:51 config/gcn/gcn.opt:55 +#: config/gcn/gcn.opt:57 config/gcn/gcn.opt:61 #, no-c-format msgid "Specify the name of the target GPU." msgstr "" -#: config/gcn/gcn.opt:59 +#: config/gcn/gcn.opt:65 #, no-c-format msgid "Generate code for a 32-bit ABI." msgstr "" -#: config/gcn/gcn.opt:63 +#: config/gcn/gcn.opt:69 #, no-c-format msgid "Generate code for a 64-bit ABI." msgstr "" -#: config/gcn/gcn.opt:67 +#: config/gcn/gcn.opt:73 #, no-c-format msgid "Enable OpenMP GPU offloading." msgstr "" -#: config/gcn/gcn.opt:78 +#: config/gcn/gcn.opt:84 #, no-c-format msgid "Obsolete; use GCN_STACK_SIZE at runtime." msgstr "" -#: config/gcn/gcn.opt:84 +#: config/gcn/gcn.opt:90 #, no-c-format msgid "" "Amount of local data-share (LDS) memory to reserve for gang-private " "variables." msgstr "" -#: config/gcn/gcn.opt:88 +#: config/gcn/gcn.opt:94 #, no-c-format msgid "Warn about invalid OpenACC dimensions." msgstr "" -#: config/gcn/gcn.opt:92 +#: config/gcn/gcn.opt:98 #, no-c-format msgid "SRAM-ECC and XNACK modes:" msgstr "" -#: config/gcn/gcn.opt:108 +#: config/gcn/gcn.opt:114 #, no-c-format msgid "" "Compile for devices requiring XNACK enabled. Default \"any\" if USM is " "supported." msgstr "" -#: config/gcn/gcn.opt:112 +#: config/gcn/gcn.opt:118 #, no-c-format msgid "" "Compile for devices with the SRAM ECC feature enabled, or not. Default " "\"any\"." msgstr "" +#: config/gcn/gcn.opt:122 +#, no-c-format +msgid "" +"--param=gcn-preferred-vectorization-factor=[default,32,64]\tPreferred " +"vectorization factor." +msgstr "" + #: config/fr30/fr30.opt:23 #, no-c-format msgid "Assume small address space." @@ -13645,11 +13684,28 @@ msgstr "" msgid "Enable signed move and memory load instructions." msgstr "" -#: config/bpf/bpf.opt:102 +#: config/bpf/bpf.opt:80 +#, no-c-format +msgid "Select the eBPF ISA version to target in code generation." +msgstr "" + +#: config/bpf/bpf.opt:84 +#, no-c-format +msgid "Valid ISA versions (for use with the -mcpu= option)" +msgstr "" + +#: config/bpf/bpf.opt:104 #, no-c-format msgid "Known assembler dialects (for use with the -masm= option)" msgstr "" +#: config/bpf/bpf.opt:114 +#, no-c-format +msgid "" +"-minline-memops-threshold= Maximum size of memset/memmove/memcpy to " +"inline, larger sizes will use a library call." +msgstr "" + #: config/mips/mips.opt:32 #, no-c-format msgid "-mabi=ABI\tGenerate code that conforms to the given ABI." @@ -14033,75 +14089,88 @@ msgstr "" #: config/mips/mips.opt:434 #, no-c-format -msgid "Generate code with unaligned load store, valid for MIPS R6." +msgid "Don't generate code with unaligned load store, only valid for MIPS R6." +msgstr "" + +#: config/mips/mips.opt:438 +#, no-c-format +msgid "" +"Generate code with unaligned load store for R6 (alias of -mno-strict-align)." msgstr "" #: config/mips/mips.opt:442 #, no-c-format +msgid "" +"Don't generate code with unaligned load store for R6 (alias of -mstrict-" +"align)." +msgstr "" + +#: config/mips/mips.opt:450 +#, no-c-format msgid "Use Virtualization (VZ) instructions." msgstr "" -#: config/mips/mips.opt:446 +#: config/mips/mips.opt:454 #, no-c-format msgid "Use eXtended Physical Address (XPA) instructions." msgstr "" -#: config/mips/mips.opt:450 +#: config/mips/mips.opt:458 #, no-c-format msgid "Use Cyclic Redundancy Check (CRC) instructions." msgstr "" -#: config/mips/mips.opt:454 +#: config/mips/mips.opt:462 #, no-c-format msgid "Use Global INValidate (GINV) instructions." msgstr "" -#: config/mips/mips.opt:458 +#: config/mips/mips.opt:466 #, no-c-format msgid "Perform VR4130-specific alignment optimizations." msgstr "" -#: config/mips/mips.opt:462 +#: config/mips/mips.opt:470 #, no-c-format msgid "Lift restrictions on GOT size." msgstr "" -#: config/mips/mips.opt:466 +#: config/mips/mips.opt:474 #, no-c-format msgid "Enable use of odd-numbered single-precision registers." msgstr "" -#: config/mips/mips.opt:470 +#: config/mips/mips.opt:478 #, no-c-format msgid "Optimize frame header." msgstr "" -#: config/mips/mips.opt:477 +#: config/mips/mips.opt:485 #, no-c-format msgid "Enable load/store bonding." msgstr "" -#: config/mips/mips.opt:481 +#: config/mips/mips.opt:489 #, no-c-format msgid "Specify the compact branch usage policy." msgstr "" -#: config/mips/mips.opt:485 +#: config/mips/mips.opt:493 #, no-c-format msgid "Policies available for use with -mcompact-branches=:" msgstr "" -#: config/mips/mips.opt:498 +#: config/mips/mips.opt:506 #, no-c-format msgid "Use Loongson MultiMedia extensions Instructions (MMI) instructions." msgstr "" -#: config/mips/mips.opt:502 +#: config/mips/mips.opt:510 #, no-c-format msgid "Use Loongson EXTension (EXT) instructions." msgstr "" -#: config/mips/mips.opt:506 +#: config/mips/mips.opt:514 #, no-c-format msgid "Use Loongson EXTension R2 (EXT2) instructions." msgstr "" @@ -15058,404 +15127,411 @@ msgstr "" #: common.opt:875 #, no-c-format +msgid "" +"Warn when a conditional has too many terms and condition coverage profiling " +"gives up instrumenting the expression." +msgstr "" + +#: common.opt:880 +#, no-c-format msgid "Warn in case profiles in -fprofile-use do not exist." msgstr "" -#: common.opt:879 +#: common.opt:884 #, no-c-format msgid "Warn when a vector operation is compiled outside the SIMD." msgstr "" -#: common.opt:883 +#: common.opt:888 #, no-c-format msgid "Warn about unsupported features in ThreadSanitizer." msgstr "" -#: common.opt:899 +#: common.opt:904 #, no-c-format msgid "-aux-info \tEmit declaration information into ." msgstr "" -#: common.opt:912 +#: common.opt:917 #, no-c-format msgid "-d\tEnable dumps from specific passes of the compiler." msgstr "" -#: common.opt:916 +#: common.opt:921 #, no-c-format msgid "-dumpbase \tSet the file basename to be used for dumps." msgstr "" -#: common.opt:920 +#: common.opt:925 #, no-c-format msgid "" "-dumpbase-ext . Drop a trailing . from the dump basename to " "name auxiliary output files." msgstr "" -#: common.opt:924 +#: common.opt:929 #, no-c-format msgid "-dumpdir \tSet the directory name to be used for dumps." msgstr "" -#: common.opt:1030 +#: common.opt:1035 #, no-c-format msgid "The version of the C++ ABI in use." msgstr "" -#: common.opt:1034 +#: common.opt:1039 #, no-c-format msgid "Aggressively optimize loops using language constraints." msgstr "" -#: common.opt:1038 +#: common.opt:1043 #, no-c-format msgid "Align the start of functions." msgstr "" -#: common.opt:1045 +#: common.opt:1050 #, no-c-format msgid "Align labels which are only reached by jumping." msgstr "" -#: common.opt:1052 +#: common.opt:1057 #, no-c-format msgid "Align all labels." msgstr "" -#: common.opt:1059 +#: common.opt:1064 #, no-c-format msgid "Align the start of loops." msgstr "" -#: common.opt:1066 +#: common.opt:1071 #, no-c-format msgid "Allow the compiler to introduce new data races on stores." msgstr "" -#: common.opt:1070 +#: common.opt:1075 #, no-c-format msgid "Enable static analysis pass." msgstr "" -#: common.opt:1090 +#: common.opt:1095 #, no-c-format msgid "Select what to sanitize." msgstr "" -#: common.opt:1094 +#: common.opt:1099 #, no-c-format msgid "Select type of coverage sanitization." msgstr "" -#: common.opt:1107 +#: common.opt:1112 #, no-c-format msgid "-fasan-shadow-offset=\tUse custom shadow memory offset." msgstr "" -#: common.opt:1111 +#: common.opt:1116 #, no-c-format msgid "" "-fsanitize-sections=\tSanitize global variables in user-" "defined sections." msgstr "" -#: common.opt:1116 +#: common.opt:1121 #, no-c-format msgid "After diagnosing undefined behavior attempt to continue execution." msgstr "" -#: common.opt:1120 +#: common.opt:1125 #, no-c-format msgid "This switch is deprecated; use -fsanitize-recover= instead." msgstr "" -#: common.opt:1124 +#: common.opt:1129 #, no-c-format msgid "Use traps instead of diagnostics of undefined behavior sanitizers." msgstr "" -#: common.opt:1134 +#: common.opt:1139 #, no-c-format msgid "This switch is deprecated; use -fsanitize-trap= instead." msgstr "" -#: common.opt:1138 +#: common.opt:1143 #, no-c-format msgid "Generate unwind tables that are exact at each instruction boundary." msgstr "" -#: common.opt:1142 +#: common.opt:1147 #, no-c-format msgid "Generate auto-inc/dec instructions." msgstr "" -#: common.opt:1146 +#: common.opt:1151 #, no-c-format msgid "" "Use sample profile information for call graph node weights. The default " "profile file is fbdata.afdo in 'pwd'." msgstr "" -#: common.opt:1151 +#: common.opt:1156 #, no-c-format msgid "" "Use sample profile information for call graph node weights. The profile file " "is specified in the argument." msgstr "" -#: common.opt:1160 +#: common.opt:1165 #, no-c-format msgid "Generate code to check bounds before indexing arrays." msgstr "" -#: common.opt:1164 +#: common.opt:1169 #, no-c-format msgid "Replace add, compare, branch with branch on count register." msgstr "" -#: common.opt:1168 +#: common.opt:1173 #, no-c-format msgid "Use profiling information for branch probabilities." msgstr "" -#: common.opt:1184 +#: common.opt:1189 #, no-c-format msgid "Output callgraph information on a per-file basis." msgstr "" -#: common.opt:1188 +#: common.opt:1193 #, no-c-format msgid "Output callgraph information on a per-file basis with decorations." msgstr "" -#: common.opt:1192 +#: common.opt:1197 #, no-c-format msgid "" "-fcall-saved-\tMark as being preserved across functions." msgstr "" -#: common.opt:1196 +#: common.opt:1201 #, no-c-format msgid "" "-fcall-used-\tMark as being corrupted by function calls." msgstr "" -#: common.opt:1203 +#: common.opt:1208 #, no-c-format msgid "Save registers around function calls." msgstr "" -#: common.opt:1207 +#: common.opt:1212 #, no-c-format msgid "This switch is deprecated; do not use." msgstr "" -#: common.opt:1211 +#: common.opt:1216 #, no-c-format msgid "Check the return value of new in C++." msgstr "" -#: common.opt:1215 common.opt:1219 +#: common.opt:1220 common.opt:1224 #, no-c-format msgid "Perform internal consistency checkings." msgstr "" -#: common.opt:1223 +#: common.opt:1228 #, no-c-format msgid "" "For -f*-prefix-map= options compare canonicalized pathnames rather than just " "strings." msgstr "" -#: common.opt:1227 +#: common.opt:1232 #, no-c-format msgid "Enable code hoisting." msgstr "" -#: common.opt:1231 +#: common.opt:1236 #, no-c-format msgid "" "Looks for opportunities to reduce stack adjustments and stack references." msgstr "" -#: common.opt:1235 +#: common.opt:1240 #, no-c-format msgid "Put uninitialized globals in the common section." msgstr "" -#: common.opt:1243 +#: common.opt:1248 #, no-c-format msgid "" "-fcompare-debug[=]\tCompile with and without e.g. -gtoggle, and " "compare the final-insns dump." msgstr "" -#: common.opt:1247 +#: common.opt:1252 #, no-c-format msgid "Run only the second compilation of -fcompare-debug." msgstr "" -#: common.opt:1251 +#: common.opt:1256 #, no-c-format msgid "Perform comparison elimination after register allocation has finished." msgstr "" -#: common.opt:1255 +#: common.opt:1260 #, no-c-format msgid "Do not perform optimizations increasing noticeably stack usage." msgstr "" -#: common.opt:1259 +#: common.opt:1264 #, no-c-format msgid "Perform a register copy-propagation optimization pass." msgstr "" -#: common.opt:1263 +#: common.opt:1268 #, no-c-format msgid "" "Fold instructions calculating memory offsets to the memory access " "instruction if possible." msgstr "" -#: common.opt:1267 +#: common.opt:1272 #, no-c-format msgid "Perform cross-jumping optimization." msgstr "" -#: common.opt:1271 +#: common.opt:1276 #, no-c-format msgid "When running CSE, follow jumps to their targets." msgstr "" -#: common.opt:1279 +#: common.opt:1284 #, no-c-format msgid "Omit range reduction step when performing complex division." msgstr "" -#: common.opt:1283 +#: common.opt:1288 #, no-c-format msgid "Complex multiplication and division follow Fortran rules." msgstr "" -#: common.opt:1287 +#: common.opt:1292 #, no-c-format msgid "Place data items into their own section." msgstr "" -#: common.opt:1291 +#: common.opt:1296 #, no-c-format msgid "List all available debugging counters with their limits and counts." msgstr "" -#: common.opt:1295 +#: common.opt:1300 #, no-c-format msgid "" "-fdbg-cnt=[:-][:-" ":...][,:...]\tSet the debug counter limit." msgstr "" -#: common.opt:1299 +#: common.opt:1304 #, no-c-format msgid "" "-fdebug-prefix-map==\tMap one directory name to another in debug " "information." msgstr "" -#: common.opt:1303 +#: common.opt:1308 #, no-c-format msgid "" "-ffile-prefix-map==\tMap one directory name to another in " "compilation result." msgstr "" -#: common.opt:1307 +#: common.opt:1312 #, no-c-format msgid "Output .debug_types section when using DWARF v4 debuginfo." msgstr "" -#: common.opt:1313 +#: common.opt:1318 #, no-c-format msgid "Defer popping functions args from stack until later." msgstr "" -#: common.opt:1317 +#: common.opt:1322 #, no-c-format msgid "Attempt to fill delay slots of branch instructions." msgstr "" -#: common.opt:1321 +#: common.opt:1326 #, no-c-format msgid "Delete dead instructions that may throw exceptions." msgstr "" -#: common.opt:1325 +#: common.opt:1330 #, no-c-format msgid "Delete useless null pointer checks." msgstr "" -#: common.opt:1329 +#: common.opt:1334 #, no-c-format msgid "" "Stream extra data to support more aggressive devirtualization in LTO local " "transformation mode." msgstr "" -#: common.opt:1333 +#: common.opt:1338 #, no-c-format msgid "Perform speculative devirtualization." msgstr "" -#: common.opt:1337 +#: common.opt:1342 #, no-c-format msgid "Try to convert virtual calls to direct ones." msgstr "" -#: common.opt:1341 +#: common.opt:1346 #, no-c-format msgid "" "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source " "location at the beginning of line-wrapped diagnostics." msgstr "" -#: common.opt:1358 +#: common.opt:1363 #, no-c-format msgid "Show the source line with a caret indicating the column." msgstr "" -#: common.opt:1362 +#: common.opt:1367 #, no-c-format msgid "Show labels annotating ranges of source code when showing source." msgstr "" -#: common.opt:1366 +#: common.opt:1371 #, no-c-format msgid "Show line numbers in the left margin when showing source." msgstr "" -#: common.opt:1374 +#: common.opt:1379 #, no-c-format msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics." msgstr "" -#: common.opt:1394 +#: common.opt:1399 #, no-c-format msgid "Enable formatting of JSON output." msgstr "" -#: common.opt:1398 +#: common.opt:1403 #, no-c-format msgid "-fdiagnostics-urls=[never|always|auto]\tEmbed URLs in diagnostics." msgstr "" -#: common.opt:1418 +#: common.opt:1423 #, no-c-format msgid "" "-fdiagnostics-column-unit=[display|byte]\tSelect whether column numbers are " "output as display columns (default) or raw bytes." msgstr "" -#: common.opt:1422 +#: common.opt:1427 #, no-c-format msgid "" "-fdiagnostics-column-origin=\tSet the number of the first column. " @@ -15463,498 +15539,498 @@ msgid "" "based, for example." msgstr "" -#: common.opt:1426 +#: common.opt:1431 #, no-c-format msgid "" "-fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-" "file]\tSelect output format." msgstr "" -#: common.opt:1430 +#: common.opt:1435 #, no-c-format msgid "" "-fdiagnostics-escape-format=[unicode|bytes]\tSelect how to escape non-" "printable-ASCII bytes in the source for diagnostics that suggest it." msgstr "" -#: common.opt:1477 +#: common.opt:1482 #, no-c-format msgid "Print fix-it hints in machine-readable form." msgstr "" -#: common.opt:1481 +#: common.opt:1486 #, no-c-format msgid "Print fix-it hints to stderr in unified diff format." msgstr "" -#: common.opt:1485 +#: common.opt:1490 #, no-c-format msgid "" "Amend appropriate diagnostic messages with the command line option that " "controls them." msgstr "" -#: common.opt:1489 +#: common.opt:1494 #, no-c-format msgid "Print CWE identifiers for diagnostic messages, where available." msgstr "" -#: common.opt:1493 +#: common.opt:1498 #, no-c-format msgid "Print any rules associated with diagnostic messages." msgstr "" -#: common.opt:1497 +#: common.opt:1502 #, no-c-format msgid "" "Specify how to print any control-flow path associated with a diagnostic." msgstr "" -#: common.opt:1501 +#: common.opt:1506 #, no-c-format msgid "" "Turn off any diagnostics features that complicate the output, such as line " "numbers, color, and warning URLs." msgstr "" -#: common.opt:1505 +#: common.opt:1510 #, no-c-format msgid "" "-ftabstop= Distance between tab stops for column reporting." msgstr "" -#: common.opt:1521 +#: common.opt:1526 #, no-c-format msgid "Show stack depths of events in paths." msgstr "" -#: common.opt:1525 +#: common.opt:1530 #, no-c-format msgid "" "-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]\tDetermine which " "characters to use in text arg diagrams." msgstr "" -#: common.opt:1544 +#: common.opt:1549 #, no-c-format msgid "Set minimum width of left margin of source code when showing source." msgstr "" -#: common.opt:1548 +#: common.opt:1553 #, no-c-format msgid "" "-fdisable-[tree|rtl|ipa]-=range1+range2\tDisable an optimization pass." msgstr "" -#: common.opt:1552 +#: common.opt:1557 #, no-c-format msgid "" "-fenable-[tree|rtl|ipa]-=range1+range2\tEnable an optimization pass." msgstr "" -#: common.opt:1556 +#: common.opt:1561 #, no-c-format msgid "-fdump-\tDump various compiler internals to a file." msgstr "" -#: common.opt:1563 +#: common.opt:1568 #, no-c-format msgid "" "-fdump-final-insns=filename\tDump to filename the insns at the end of " "translation." msgstr "" -#: common.opt:1567 +#: common.opt:1572 #, no-c-format msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code." msgstr "" -#: common.opt:1571 +#: common.opt:1576 #, no-c-format msgid "Suppress output of addresses in debugging dumps." msgstr "" -#: common.opt:1575 +#: common.opt:1580 #, no-c-format msgid "" "Collect and dump debug information into temporary file if ICE in C/C++ " "compiler occurred." msgstr "" -#: common.opt:1580 +#: common.opt:1585 #, no-c-format msgid "" "Dump detailed information on GCC's internal representation of source code " "locations." msgstr "" -#: common.opt:1584 +#: common.opt:1589 #, no-c-format msgid "Dump optimization passes." msgstr "" -#: common.opt:1588 +#: common.opt:1593 #, no-c-format msgid "" "Suppress output of instruction numbers, line number notes and addresses in " "debugging dumps." msgstr "" -#: common.opt:1592 +#: common.opt:1597 #, no-c-format msgid "Suppress output of previous and next insn numbers in debugging dumps." msgstr "" -#: common.opt:1596 +#: common.opt:1601 #, no-c-format msgid "Enable CFI tables via GAS assembler directives." msgstr "" -#: common.opt:1600 +#: common.opt:1605 #, no-c-format msgid "Perform early inlining." msgstr "" -#: common.opt:1608 +#: common.opt:1613 #, no-c-format msgid "Perform interprocedural reduction of aggregates." msgstr "" -#: common.opt:1612 +#: common.opt:1617 #, no-c-format msgid "Perform unused symbol elimination in debug info." msgstr "" -#: common.opt:1616 +#: common.opt:1621 #, no-c-format msgid "Perform unused type elimination in debug info." msgstr "" -#: common.opt:1620 +#: common.opt:1625 #, no-c-format msgid "Do not suppress C++ class debug information." msgstr "" -#: common.opt:1624 +#: common.opt:1629 #, no-c-format msgid "Enable exception handling." msgstr "" -#: common.opt:1628 +#: common.opt:1633 #, no-c-format msgid "Perform a number of minor, expensive optimizations." msgstr "" -#: common.opt:1632 +#: common.opt:1637 #, no-c-format msgid "" "-fexcess-precision=[fast|standard|16]\tSpecify handling of excess floating-" "point precision." msgstr "" -#: common.opt:1650 +#: common.opt:1655 #, no-c-format msgid "" "-fpermitted-flt-eval-methods=[c11|ts-18661]\tSpecify which values of " "FLT_EVAL_METHOD are permitted." msgstr "" -#: common.opt:1666 +#: common.opt:1671 #, no-c-format msgid "" "Output lto objects containing both the intermediate language and binary " "output." msgstr "" -#: common.opt:1670 +#: common.opt:1675 #, no-c-format msgid "Assume no NaNs or infinities are generated." msgstr "" -#: common.opt:1674 +#: common.opt:1679 #, no-c-format msgid "" "Assume that loops with an exit will terminate and not loop indefinitely." msgstr "" -#: common.opt:1678 +#: common.opt:1683 #, no-c-format msgid "" "-ffixed-\tMark as being unavailable to the compiler." msgstr "" -#: common.opt:1682 +#: common.opt:1687 #, no-c-format msgid "Don't allocate floats and doubles in extended-precision registers." msgstr "" -#: common.opt:1690 +#: common.opt:1695 #, no-c-format msgid "Perform a forward propagation pass on RTL." msgstr "" -#: common.opt:1694 +#: common.opt:1699 #, no-c-format msgid "" "-ffp-contract=[off|on|fast]\tPerform floating-point expression contraction." msgstr "" -#: common.opt:1710 +#: common.opt:1715 #, no-c-format msgid "" "Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" " "exceptions." msgstr "" -#: common.opt:1717 +#: common.opt:1722 #, no-c-format msgid "Allow function addresses to be held in registers." msgstr "" -#: common.opt:1721 +#: common.opt:1726 #, no-c-format msgid "Place each function into its own section." msgstr "" -#: common.opt:1725 +#: common.opt:1730 #, no-c-format msgid "Perform global common subexpression elimination." msgstr "" -#: common.opt:1729 +#: common.opt:1734 #, no-c-format msgid "" "Perform enhanced load motion during global common subexpression elimination." msgstr "" -#: common.opt:1733 +#: common.opt:1738 #, no-c-format msgid "Perform store motion after global common subexpression elimination." msgstr "" -#: common.opt:1737 +#: common.opt:1742 #, no-c-format msgid "" "Perform redundant load after store elimination in global common " "subexpression elimination." msgstr "" -#: common.opt:1742 +#: common.opt:1747 #, no-c-format msgid "" "Perform global common subexpression elimination after register allocation " "has finished." msgstr "" -#: common.opt:1759 +#: common.opt:1764 #, no-c-format msgid "" "-fgnat-encodings=[all|gdb|minimal]\tSelect the balance between GNAT " "encodings and standard DWARF emitted in the debug information." msgstr "" -#: common.opt:1764 +#: common.opt:1769 #, no-c-format msgid "Enable in and out of Graphite representation." msgstr "" -#: common.opt:1768 +#: common.opt:1773 #, no-c-format msgid "Enable Graphite Identity transformation." msgstr "" -#: common.opt:1772 +#: common.opt:1777 #, no-c-format msgid "" "Enable hoisting adjacent loads to encourage generating conditional move " "instructions." msgstr "" -#: common.opt:1781 +#: common.opt:1786 #, no-c-format msgid "" "Improve GCC's ability to track column numbers in large source files, at the " "expense of slower compilation." msgstr "" -#: common.opt:1786 +#: common.opt:1791 #, no-c-format msgid "Mark all loops as parallel." msgstr "" -#: common.opt:1790 common.opt:1798 common.opt:3139 +#: common.opt:1795 common.opt:1803 common.opt:3148 #, no-c-format msgid "Enable loop nest transforms. Same as -floop-nest-optimize." msgstr "" -#: common.opt:1794 +#: common.opt:1799 #, no-c-format msgid "Enable loop interchange on trees." msgstr "" -#: common.opt:1802 +#: common.opt:1807 #, no-c-format msgid "Perform unroll-and-jam on loops." msgstr "" -#: common.opt:1806 +#: common.opt:1811 #, no-c-format msgid "Enable support for GNU transactional memory." msgstr "" -#: common.opt:1810 +#: common.opt:1815 #, no-c-format msgid "Use STB_GNU_UNIQUE if supported by the assembler." msgstr "" -#: common.opt:1818 +#: common.opt:1823 #, no-c-format msgid "Enable the loop nest optimizer." msgstr "" -#: common.opt:1822 +#: common.opt:1827 #, no-c-format msgid "Force bitfield accesses to match their type width." msgstr "" -#: common.opt:1826 +#: common.opt:1831 #, no-c-format msgid "Merge adjacent stores." msgstr "" -#: common.opt:1830 +#: common.opt:1835 #, no-c-format msgid "Enable guessing of branch probabilities." msgstr "" -#: common.opt:1834 +#: common.opt:1839 #, no-c-format msgid "Enable various security-relevant flags." msgstr "" -#: common.opt:1838 +#: common.opt:1843 #, no-c-format msgid "Harden conditionals not used in branches, checking reversed conditions." msgstr "" -#: common.opt:1842 +#: common.opt:1847 #, no-c-format msgid "Harden conditional branches by checking reversed conditions." msgstr "" -#: common.opt:1846 +#: common.opt:1851 #, no-c-format msgid "Harden control flow by recording and checking execution paths." msgstr "" -#: common.opt:1850 +#: common.opt:1855 #, no-c-format msgid "Disable CFR in leaf functions." msgstr "" -#: common.opt:1854 +#: common.opt:1859 #, no-c-format msgid "" "Check CFR execution paths also before calls followed by returns of their " "results." msgstr "" -#: common.opt:1858 +#: common.opt:1863 #, no-c-format msgid "" "Check CFR execution paths also when exiting a function through an exception." msgstr "" -#: common.opt:1862 +#: common.opt:1867 #, no-c-format msgid "" "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]\tCheck CFR " "execution paths also before calling noreturn functions." msgstr "" -#: common.opt:1885 +#: common.opt:1890 #, no-c-format msgid "Process #ident directives." msgstr "" -#: common.opt:1889 +#: common.opt:1894 #, no-c-format msgid "Perform conversion of conditional jumps to branchless equivalents." msgstr "" -#: common.opt:1893 +#: common.opt:1898 #, no-c-format msgid "Perform conversion of conditional jumps to conditional execution." msgstr "" -#: common.opt:1897 +#: common.opt:1902 #, no-c-format msgid "" "-fstack-reuse=[all|named_vars|none]\tSet stack reuse level for local " "variables." msgstr "" -#: common.opt:1913 +#: common.opt:1918 #, no-c-format msgid "Convert conditional jumps in innermost loops to branchless equivalents." msgstr "" -#: common.opt:1925 +#: common.opt:1930 #, no-c-format msgid "Do not generate .size directives." msgstr "" -#: common.opt:1929 +#: common.opt:1934 #, no-c-format msgid "Perform indirect inlining." msgstr "" -#: common.opt:1935 +#: common.opt:1940 #, no-c-format msgid "" "Enable inlining of function declared \"inline\", disabling disables all " "inlining." msgstr "" -#: common.opt:1939 +#: common.opt:1944 #, no-c-format msgid "" "Integrate functions into their callers when code size is known not to grow." msgstr "" -#: common.opt:1943 +#: common.opt:1948 #, no-c-format msgid "" "Integrate functions not declared \"inline\" into their callers when " "profitable." msgstr "" -#: common.opt:1947 +#: common.opt:1952 #, no-c-format msgid "Integrate functions only required by their single caller." msgstr "" -#: common.opt:1954 +#: common.opt:1959 #, no-c-format msgid "" "-finline-limit=\tLimit the size of inlined functions to ." msgstr "" -#: common.opt:1958 +#: common.opt:1963 #, no-c-format msgid "" "Inline __atomic operations when a lock free instruction sequence is " "available." msgstr "" -#: common.opt:1968 +#: common.opt:1973 #, no-c-format msgid "" "-finline-stringops[=memcmp|memcpy|memmove|memset] Expand supported mem/str " "operations inline, even if against optimization." msgstr "" -#: common.opt:1999 +#: common.opt:2004 #, no-c-format msgid "" "-fcf-protection=[full|branch|return|none|check]\tInstrument functions with " @@ -15962,604 +16038,609 @@ msgid "" "valid targets." msgstr "" -#: common.opt:2022 +#: common.opt:2027 #, no-c-format msgid "Instrument function entry and exit with profiling calls." msgstr "" -#: common.opt:2026 +#: common.opt:2031 #, no-c-format msgid "Instrument function entry and exit with profiling calls invoked once." msgstr "" -#: common.opt:2030 +#: common.opt:2035 #, no-c-format msgid "" "-finstrument-functions-exclude-function-list=name,...\tDo not instrument " "listed functions." msgstr "" -#: common.opt:2034 +#: common.opt:2039 #, no-c-format msgid "" "-finstrument-functions-exclude-file-list=filename,...\tDo not instrument " "functions listed in files." msgstr "" -#: common.opt:2038 +#: common.opt:2043 #, no-c-format msgid "Perform interprocedural constant propagation." msgstr "" -#: common.opt:2042 +#: common.opt:2047 #, no-c-format msgid "Perform cloning to make Interprocedural constant propagation stronger." msgstr "" -#: common.opt:2050 +#: common.opt:2055 #, no-c-format msgid "Perform interprocedural bitwise constant propagation." msgstr "" -#: common.opt:2054 +#: common.opt:2059 #, no-c-format msgid "Perform interprocedural modref analysis." msgstr "" -#: common.opt:2058 +#: common.opt:2063 #, no-c-format msgid "Perform interprocedural profile propagation." msgstr "" -#: common.opt:2062 +#: common.opt:2067 #, no-c-format msgid "Perform interprocedural points-to analysis." msgstr "" -#: common.opt:2066 +#: common.opt:2071 #, no-c-format msgid "Discover pure and const functions." msgstr "" -#: common.opt:2070 +#: common.opt:2075 #, no-c-format msgid "Perform Identical Code Folding for functions and read-only variables." msgstr "" -#: common.opt:2074 +#: common.opt:2079 #, no-c-format msgid "Perform Identical Code Folding for functions." msgstr "" -#: common.opt:2078 +#: common.opt:2083 #, no-c-format msgid "Perform Identical Code Folding for variables." msgstr "" -#: common.opt:2082 +#: common.opt:2087 #, no-c-format msgid "Discover read-only and non addressable static variables." msgstr "" -#: common.opt:2086 +#: common.opt:2091 #, no-c-format msgid "Discover read-only, write-only and non-addressable static variables." msgstr "" -#: common.opt:2090 +#: common.opt:2095 #, no-c-format msgid "Reduce stack alignment on call sites if possible." msgstr "" -#: common.opt:2102 +#: common.opt:2107 #, no-c-format msgid "Perform IPA Value Range Propagation." msgstr "" -#: common.opt:2106 +#: common.opt:2111 #, no-c-format msgid "-fira-algorithm=[CB|priority]\tSet the used IRA algorithm." msgstr "" -#: common.opt:2110 +#: common.opt:2115 #, no-c-format msgid "" "Assume strict aliasing rules apply across (uninlined) function boundaries." msgstr "" -#: common.opt:2123 +#: common.opt:2128 #, no-c-format msgid "-fira-region=[one|all|mixed]\tSet regions for IRA." msgstr "" -#: common.opt:2139 +#: common.opt:2144 #, no-c-format msgid "Use IRA based register pressure calculation in RTL hoist optimizations." msgstr "" -#: common.opt:2144 +#: common.opt:2149 #, no-c-format msgid "Use IRA based register pressure calculation in RTL loop optimizations." msgstr "" -#: common.opt:2149 +#: common.opt:2154 #, no-c-format msgid "Share slots for saving different hard registers." msgstr "" -#: common.opt:2153 +#: common.opt:2158 #, no-c-format msgid "Share stack slots for spilled pseudo-registers." msgstr "" -#: common.opt:2157 +#: common.opt:2162 #, no-c-format msgid "-fira-verbose=\tControl IRA's level of diagnostic messages." msgstr "" -#: common.opt:2161 +#: common.opt:2166 #, no-c-format msgid "Optimize induction variables on trees." msgstr "" -#: common.opt:2165 +#: common.opt:2170 #, no-c-format msgid "Use jump tables for sufficiently large switch statements." msgstr "" -#: common.opt:2169 +#: common.opt:2174 #, no-c-format msgid "Use bit tests for sufficiently large switch statements." msgstr "" -#: common.opt:2173 +#: common.opt:2178 #, no-c-format msgid "Generate code for functions even if they are fully inlined." msgstr "" -#: common.opt:2177 +#: common.opt:2182 #, no-c-format msgid "Generate code for static functions even if they are never called." msgstr "" -#: common.opt:2181 +#: common.opt:2186 #, no-c-format msgid "Emit static const variables even if they are not used." msgstr "" -#: common.opt:2185 +#: common.opt:2190 #, no-c-format msgid "Give external symbols a leading underscore." msgstr "" -#: common.opt:2193 +#: common.opt:2198 #, no-c-format msgid "Do CFG-sensitive rematerialization in LRA." msgstr "" -#: common.opt:2197 +#: common.opt:2202 #, no-c-format msgid "Enable link-time optimization." msgstr "" -#: common.opt:2201 +#: common.opt:2206 #, no-c-format msgid "Link-time optimization with number of parallel jobs or jobserver." msgstr "" -#: common.opt:2223 +#: common.opt:2228 #, no-c-format msgid "Specify the algorithm to partition symbols and vars at linktime." msgstr "" -#: common.opt:2228 +#: common.opt:2233 #, no-c-format msgid "Use zlib/zstd compression level for IL." msgstr "" -#: common.opt:2236 +#: common.opt:2241 #, no-c-format msgid "Report various link-time optimization statistics." msgstr "" -#: common.opt:2240 +#: common.opt:2245 #, no-c-format msgid "Report various link-time optimization statistics for WPA only." msgstr "" -#: common.opt:2244 +#: common.opt:2249 #, no-c-format msgid "Set errno after built-in math functions." msgstr "" -#: common.opt:2248 +#: common.opt:2253 #, no-c-format msgid "-fmax-errors=\tMaximum number of errors to report." msgstr "" -#: common.opt:2252 +#: common.opt:2257 #, no-c-format msgid "Report on permanent memory allocation." msgstr "" -#: common.opt:2256 +#: common.opt:2261 #, no-c-format msgid "Report on permanent memory allocation in WPA only." msgstr "" -#: common.opt:2263 +#: common.opt:2268 #, no-c-format msgid "Attempt to merge identical constants and constant variables." msgstr "" -#: common.opt:2267 +#: common.opt:2272 #, no-c-format msgid "Attempt to merge identical constants across compilation units." msgstr "" -#: common.opt:2271 +#: common.opt:2276 #, no-c-format msgid "Attempt to merge identical debug strings across compilation units." msgstr "" -#: common.opt:2275 +#: common.opt:2280 #, no-c-format msgid "" "-fmessage-length=\tLimit diagnostics to characters per " "line. 0 suppresses line-wrapping." msgstr "" -#: common.opt:2279 +#: common.opt:2284 #, no-c-format msgid "Align the start of every function." msgstr "" -#: common.opt:2283 +#: common.opt:2288 #, no-c-format msgid "Perform SMS based modulo scheduling before the first scheduling pass." msgstr "" -#: common.opt:2287 +#: common.opt:2292 #, no-c-format msgid "Perform SMS based modulo scheduling with register moves allowed." msgstr "" -#: common.opt:2291 +#: common.opt:2296 #, no-c-format msgid "Move loop invariant computations out of loops." msgstr "" -#: common.opt:2295 +#: common.opt:2300 #, no-c-format msgid "Move stores out of loops." msgstr "" -#: common.opt:2299 +#: common.opt:2304 #, no-c-format msgid "Building block for specs-based multilib-aware TFLAGS." msgstr "" -#: common.opt:2303 +#: common.opt:2308 #, no-c-format msgid "Use the RTL dead code elimination pass." msgstr "" -#: common.opt:2307 +#: common.opt:2312 #, no-c-format msgid "Use the RTL dead store elimination pass." msgstr "" -#: common.opt:2311 +#: common.opt:2316 #, no-c-format msgid "" "Enable/Disable the traditional scheduling in loops that already passed " "modulo scheduling." msgstr "" -#: common.opt:2315 +#: common.opt:2320 #, no-c-format msgid "Support synchronous non-call exceptions." msgstr "" -#: common.opt:2322 +#: common.opt:2327 #, no-c-format msgid "" "-foffload-options==\tSpecify options for the offloading " "targets." msgstr "" -#: common.opt:2326 +#: common.opt:2331 #, no-c-format msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler." msgstr "" -#: common.opt:2339 +#: common.opt:2344 #, no-c-format msgid "When possible do not generate stack frames." msgstr "" -#: common.opt:2346 +#: common.opt:2351 #, no-c-format msgid "" "Generate SIMD clones for functions with the OpenMP declare target directive." msgstr "" -#: common.opt:2365 +#: common.opt:2370 #, no-c-format msgid "Enable all optimization info dumps on stderr." msgstr "" -#: common.opt:2369 +#: common.opt:2374 #, no-c-format msgid "-fopt-info[-=filename]\tDump compiler optimization details." msgstr "" -#: common.opt:2373 +#: common.opt:2378 #, no-c-format msgid "" "Write a SRCFILE.opt-record.json file detailing what optimizations were " "performed." msgstr "" -#: common.opt:2381 +#: common.opt:2386 #, no-c-format msgid "Optimize sibling and tail recursive calls." msgstr "" -#: common.opt:2385 +#: common.opt:2390 #, no-c-format msgid "Perform partial inlining." msgstr "" -#: common.opt:2389 common.opt:2393 +#: common.opt:2394 common.opt:2398 #, no-c-format msgid "Report on memory allocation before interprocedural optimization." msgstr "" -#: common.opt:2397 +#: common.opt:2402 #, no-c-format msgid "Pack structure members together without holes." msgstr "" -#: common.opt:2401 +#: common.opt:2406 #, no-c-format msgid "-fpack-struct=\tSet initial maximum structure member alignment." msgstr "" -#: common.opt:2405 +#: common.opt:2410 #, no-c-format msgid "Return small aggregates in memory, not registers." msgstr "" -#: common.opt:2409 +#: common.opt:2414 #, no-c-format msgid "Perform loop peeling." msgstr "" -#: common.opt:2413 +#: common.opt:2418 #, no-c-format msgid "Enable machine specific peephole optimizations." msgstr "" -#: common.opt:2417 +#: common.opt:2422 #, no-c-format msgid "Enable an RTL peephole pass before sched2." msgstr "" -#: common.opt:2421 +#: common.opt:2426 #, no-c-format msgid "Generate position-independent code if possible (large mode)." msgstr "" -#: common.opt:2425 +#: common.opt:2430 #, no-c-format msgid "" "Generate position-independent code for executables if possible (large mode)." msgstr "" -#: common.opt:2429 +#: common.opt:2434 #, no-c-format msgid "Generate position-independent code if possible (small mode)." msgstr "" -#: common.opt:2433 +#: common.opt:2438 #, no-c-format msgid "" "Generate position-independent code for executables if possible (small mode)." msgstr "" -#: common.opt:2437 +#: common.opt:2442 #, no-c-format msgid "" "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)." msgstr "" -#: common.opt:2441 +#: common.opt:2446 #, no-c-format msgid "Specify a plugin to load." msgstr "" -#: common.opt:2445 +#: common.opt:2450 #, no-c-format msgid "" "-fplugin-arg--[=]\tSpecify argument = for " "plugin ." msgstr "" -#: common.opt:2449 +#: common.opt:2454 #, no-c-format msgid "Run predictive commoning optimization." msgstr "" -#: common.opt:2453 +#: common.opt:2458 #, no-c-format msgid "Generate prefetch instructions, if available, for arrays in loops." msgstr "" -#: common.opt:2457 +#: common.opt:2462 #, no-c-format msgid "Enable basic program profiling code." msgstr "" -#: common.opt:2461 +#: common.opt:2466 #, no-c-format msgid "Generate absolute source path names for gcov." msgstr "" -#: common.opt:2465 +#: common.opt:2470 #, no-c-format msgid "Insert arc-based program profiling code." msgstr "" -#: common.opt:2469 +#: common.opt:2474 +#, no-c-format +msgid "Insert condition coverage profiling code." +msgstr "" + +#: common.opt:2478 #, no-c-format msgid "" "Set the top-level directory for storing the profile data. The default is " "'pwd'." msgstr "" -#: common.opt:2474 +#: common.opt:2483 #, no-c-format msgid "Select the name for storing the profile note file." msgstr "" -#: common.opt:2478 +#: common.opt:2487 #, no-c-format msgid "Enable correction of flow inconsistent profile data input." msgstr "" -#: common.opt:2482 +#: common.opt:2491 #, no-c-format msgid "" "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update " "method." msgstr "" -#: common.opt:2486 +#: common.opt:2495 #, no-c-format msgid "" "Instrument only functions from files whose name matches any of the regular " "expressions (separated by semi-colons)." msgstr "" -#: common.opt:2490 +#: common.opt:2499 #, no-c-format msgid "" "Instrument only functions from files whose name does not match any of the " "regular expressions (separated by semi-colons)." msgstr "" -#: common.opt:2506 +#: common.opt:2515 #, no-c-format msgid "" "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level " "of reproducibility of profile gathered by -fprofile-generate." msgstr "" -#: common.opt:2522 +#: common.opt:2531 #, no-c-format msgid "" "Remove prefix from absolute path before mangling name for -fprofile-" "generate= and -fprofile-use=." msgstr "" -#: common.opt:2526 +#: common.opt:2535 #, no-c-format msgid "" "-fprofile-prefix-map==\tMap one directory name to another in GCOV " "coverage result." msgstr "" -#: common.opt:2530 +#: common.opt:2539 #, no-c-format msgid "" "Enable common options for generating profile info for profile feedback " "directed optimizations." msgstr "" -#: common.opt:2534 +#: common.opt:2543 #, no-c-format msgid "" "Enable common options for generating profile info for profile feedback " "directed optimizations, and set -fprofile-dir=." msgstr "" -#: common.opt:2538 +#: common.opt:2547 #, no-c-format msgid "" "Register the profile information in the .gcov_info section instead of using " "a constructor/destructor." msgstr "" -#: common.opt:2542 +#: common.opt:2551 #, no-c-format msgid "" "Register the profile information in the specified section instead of using a " "constructor/destructor." msgstr "" -#: common.opt:2546 +#: common.opt:2555 #, no-c-format msgid "" "Do not assume that functions never executed during the train run are cold." msgstr "" -#: common.opt:2550 +#: common.opt:2559 #, no-c-format msgid "" "Enable common options for performing profile feedback directed optimizations." msgstr "" -#: common.opt:2554 +#: common.opt:2563 #, no-c-format msgid "" "Enable common options for performing profile feedback directed " "optimizations, and set -fprofile-dir=." msgstr "" -#: common.opt:2558 +#: common.opt:2567 #, no-c-format msgid "Insert code to profile values of expressions." msgstr "" -#: common.opt:2562 +#: common.opt:2571 #, no-c-format msgid "Report on consistency of profile." msgstr "" -#: common.opt:2566 +#: common.opt:2575 #, no-c-format msgid "Enable function reordering that improves code placement." msgstr "" -#: common.opt:2570 +#: common.opt:2579 #, no-c-format msgid "Insert NOP instructions at each function entry." msgstr "" -#: common.opt:2577 +#: common.opt:2586 #, no-c-format msgid "-frandom-seed=\tMake compile reproducible using ." msgstr "" -#: common.opt:2587 +#: common.opt:2596 #, no-c-format msgid "Record gcc command line switches in the object file." msgstr "" -#: common.opt:2591 +#: common.opt:2600 #, no-c-format msgid "Return small aggregates in registers." msgstr "" -#: common.opt:2599 +#: common.opt:2608 #, no-c-format msgid "" "Tell DSE that the storage for a C++ object is dead when the constructor " "starts and when the destructor finishes." msgstr "" -#: common.opt:2613 +#: common.opt:2622 #, no-c-format msgid "" "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations " @@ -16567,520 +16648,520 @@ msgid "" "multiple-level control on the enabled IPA optimizations." msgstr "" -#: common.opt:2628 +#: common.opt:2637 #, no-c-format msgid "Tell DCE to remove unused C++ allocations." msgstr "" -#: common.opt:2632 +#: common.opt:2641 #, no-c-format msgid "Relief of register pressure through live range shrinkage." msgstr "" -#: common.opt:2636 +#: common.opt:2645 #, no-c-format msgid "Perform a register renaming optimization pass." msgstr "" -#: common.opt:2640 +#: common.opt:2649 #, no-c-format msgid "Perform a target dependent instruction fusion optimization pass." msgstr "" -#: common.opt:2644 +#: common.opt:2653 #, no-c-format msgid "Reorder basic blocks to improve code placement." msgstr "" -#: common.opt:2648 +#: common.opt:2657 #, no-c-format msgid "" "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering " "algorithm." msgstr "" -#: common.opt:2661 +#: common.opt:2670 #, no-c-format msgid "Reorder basic blocks and partition into hot and cold sections." msgstr "" -#: common.opt:2665 +#: common.opt:2674 #, no-c-format msgid "Reorder functions to improve code placement." msgstr "" -#: common.opt:2669 +#: common.opt:2678 #, no-c-format msgid "Add a common subexpression elimination pass after loop optimizations." msgstr "" -#: common.opt:2677 +#: common.opt:2686 #, no-c-format msgid "Disable optimizations that assume default FP rounding behavior." msgstr "" -#: common.opt:2681 +#: common.opt:2690 #, no-c-format msgid "Enable scheduling across basic blocks." msgstr "" -#: common.opt:2685 +#: common.opt:2694 #, no-c-format msgid "Enable register pressure sensitive insn scheduling." msgstr "" -#: common.opt:2689 +#: common.opt:2698 #, no-c-format msgid "Allow speculative motion of non-loads." msgstr "" -#: common.opt:2693 +#: common.opt:2702 #, no-c-format msgid "Allow speculative motion of some loads." msgstr "" -#: common.opt:2697 +#: common.opt:2706 #, no-c-format msgid "Allow speculative motion of more loads." msgstr "" -#: common.opt:2701 +#: common.opt:2710 #, no-c-format msgid "-fsched-verbose=\tSet the verbosity level of the scheduler." msgstr "" -#: common.opt:2705 +#: common.opt:2714 #, no-c-format msgid "If scheduling post reload, do superblock scheduling." msgstr "" -#: common.opt:2713 +#: common.opt:2722 #, no-c-format msgid "Reschedule instructions before register allocation." msgstr "" -#: common.opt:2717 +#: common.opt:2726 #, no-c-format msgid "Reschedule instructions after register allocation." msgstr "" -#: common.opt:2724 +#: common.opt:2733 #, no-c-format msgid "Schedule instructions using selective scheduling algorithm." msgstr "" -#: common.opt:2728 +#: common.opt:2737 #, no-c-format msgid "Run selective scheduling after reload." msgstr "" -#: common.opt:2732 +#: common.opt:2741 #, no-c-format msgid "Run self-tests, using the given path to locate test files." msgstr "" -#: common.opt:2736 +#: common.opt:2745 #, no-c-format msgid "Perform software pipelining of inner loops during selective scheduling." msgstr "" -#: common.opt:2740 +#: common.opt:2749 #, no-c-format msgid "Perform software pipelining of outer loops during selective scheduling." msgstr "" -#: common.opt:2744 +#: common.opt:2753 #, no-c-format msgid "Reschedule pipelined regions without pipelining." msgstr "" -#: common.opt:2748 +#: common.opt:2757 #, no-c-format msgid "" "Allow interposing function (or variables) by ones with different semantics " "(or initializer) respectively by dynamic linker." msgstr "" -#: common.opt:2754 +#: common.opt:2763 #, no-c-format msgid "Allow premature scheduling of queued insns." msgstr "" -#: common.opt:2758 +#: common.opt:2767 #, no-c-format msgid "" "-fsched-stalled-insns=\tSet number of queued insns that can be " "prematurely scheduled." msgstr "" -#: common.opt:2766 +#: common.opt:2775 #, no-c-format msgid "" "Set dependence distance checking in premature scheduling of queued insns." msgstr "" -#: common.opt:2770 +#: common.opt:2779 #, no-c-format msgid "" "-fsched-stalled-insns-dep=\tSet dependence distance checking in " "premature scheduling of queued insns." msgstr "" -#: common.opt:2774 +#: common.opt:2783 #, no-c-format msgid "Enable the group heuristic in the scheduler." msgstr "" -#: common.opt:2778 +#: common.opt:2787 #, no-c-format msgid "Enable the critical path heuristic in the scheduler." msgstr "" -#: common.opt:2782 +#: common.opt:2791 #, no-c-format msgid "Enable the speculative instruction heuristic in the scheduler." msgstr "" -#: common.opt:2786 +#: common.opt:2795 #, no-c-format msgid "Enable the rank heuristic in the scheduler." msgstr "" -#: common.opt:2790 +#: common.opt:2799 #, no-c-format msgid "Enable the last instruction heuristic in the scheduler." msgstr "" -#: common.opt:2794 +#: common.opt:2803 #, no-c-format msgid "Enable the dependent count heuristic in the scheduler." msgstr "" -#: common.opt:2798 +#: common.opt:2807 #, no-c-format msgid "Access data in the same section from shared anchor points." msgstr "" -#: common.opt:2810 +#: common.opt:2819 #, no-c-format msgid "Turn on Redundant Extensions Elimination pass." msgstr "" -#: common.opt:2814 +#: common.opt:2823 #, no-c-format msgid "Show column numbers in diagnostics, when available. Default on." msgstr "" -#: common.opt:2818 +#: common.opt:2827 #, no-c-format msgid "" "Emit function prologues only before parts of the function that need it, " "rather than at the top of the function." msgstr "" -#: common.opt:2823 +#: common.opt:2832 #, no-c-format msgid "Shrink-wrap parts of the prologue and epilogue separately." msgstr "" -#: common.opt:2827 +#: common.opt:2836 #, no-c-format msgid "Disable optimizations observable by IEEE signaling NaNs." msgstr "" -#: common.opt:2831 +#: common.opt:2840 #, no-c-format msgid "" "Disable floating point optimizations that ignore the IEEE signedness of zero." msgstr "" -#: common.opt:2835 +#: common.opt:2844 #, no-c-format msgid "Convert floating point constants to single precision constants." msgstr "" -#: common.opt:2839 +#: common.opt:2848 #, no-c-format msgid "Split lifetimes of induction variables when loops are unrolled." msgstr "" -#: common.opt:2843 +#: common.opt:2852 #, no-c-format msgid "Generate discontiguous stack frames." msgstr "" -#: common.opt:2847 +#: common.opt:2856 #, no-c-format msgid "Split wide types into independent registers." msgstr "" -#: common.opt:2851 +#: common.opt:2860 #, no-c-format msgid "Split wide types into independent registers earlier." msgstr "" -#: common.opt:2855 +#: common.opt:2864 #, no-c-format msgid "Enable backward propagation of use properties at the SSA level." msgstr "" -#: common.opt:2859 +#: common.opt:2868 #, no-c-format msgid "Optimize conditional patterns using SSA PHI nodes." msgstr "" -#: common.opt:2863 +#: common.opt:2872 #, no-c-format msgid "" "Optimize amount of stdarg registers saved to stack at start of function." msgstr "" -#: common.opt:2867 +#: common.opt:2876 #, no-c-format msgid "Apply variable expansion when loops are unrolled." msgstr "" -#: common.opt:2871 +#: common.opt:2880 #, no-c-format msgid "" "-fstack-check=[no|generic|specific]\tInsert stack checking code into the " "program." msgstr "" -#: common.opt:2875 +#: common.opt:2884 #, no-c-format msgid "" "Insert stack checking code into the program. Same as -fstack-check=specific." msgstr "" -#: common.opt:2879 +#: common.opt:2888 #, no-c-format msgid "" "Insert code to probe each page of stack space as it is allocated to protect " "from stack-clash style attacks." msgstr "" -#: common.opt:2887 +#: common.opt:2896 #, no-c-format msgid "" "-fstack-limit-register=\tTrap if the stack goes past ." msgstr "" -#: common.opt:2891 +#: common.opt:2900 #, no-c-format msgid "-fstack-limit-symbol=\tTrap if the stack goes past symbol ." msgstr "" -#: common.opt:2895 +#: common.opt:2904 #, no-c-format msgid "Use propolice as a stack protection method." msgstr "" -#: common.opt:2899 +#: common.opt:2908 #, no-c-format msgid "Use a stack protection method for every function." msgstr "" -#: common.opt:2903 +#: common.opt:2912 #, no-c-format msgid "Use a smart stack protection method for certain functions." msgstr "" -#: common.opt:2907 +#: common.opt:2916 #, no-c-format msgid "" "Use stack protection method only for functions with the stack_protect " "attribute." msgstr "" -#: common.opt:2911 +#: common.opt:2920 #, no-c-format msgid "Output stack usage information on a per-function basis." msgstr "" -#: common.opt:2923 +#: common.opt:2932 #, no-c-format msgid "Assume strict aliasing rules apply." msgstr "" -#: common.opt:2927 +#: common.opt:2936 #, no-c-format msgid "" "Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer." msgstr "" -#: common.opt:2931 +#: common.opt:2940 #, no-c-format msgid "Disable stack scrub entirely, disregarding strub attributes." msgstr "" -#: common.opt:2935 +#: common.opt:2944 #, no-c-format msgid "Enable stack scrub as per attributes, with strict call checking." msgstr "" -#: common.opt:2944 +#: common.opt:2953 #, no-c-format msgid "Restore default strub mode: as per attributes, with relaxed checking." msgstr "" -#: common.opt:2948 +#: common.opt:2957 #, no-c-format msgid "Enable stack scrubbing for all viable functions." msgstr "" -#: common.opt:2952 +#: common.opt:2961 #, no-c-format msgid "Enable at-calls stack scrubbing for all viable functions." msgstr "" -#: common.opt:2956 +#: common.opt:2965 #, no-c-format msgid "Enable internal stack scrubbing for all viable functions." msgstr "" -#: common.opt:2960 +#: common.opt:2969 #, no-c-format msgid "Implement __atomic operations via libcalls to legacy __sync functions." msgstr "" -#: common.opt:2964 +#: common.opt:2973 #, no-c-format msgid "Check for syntax errors, then stop." msgstr "" -#: common.opt:2968 +#: common.opt:2977 #, no-c-format msgid "Create data files needed by \"gcov\"." msgstr "" -#: common.opt:2972 +#: common.opt:2981 #, no-c-format msgid "Perform jump threading optimizations." msgstr "" -#: common.opt:2976 +#: common.opt:2985 #, no-c-format msgid "Report the time taken by each compiler pass." msgstr "" -#: common.opt:2980 +#: common.opt:2989 #, no-c-format msgid "Record times taken by sub-phases separately." msgstr "" -#: common.opt:2984 +#: common.opt:2993 #, no-c-format msgid "" "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the " "default thread-local storage code generation model." msgstr "" -#: common.opt:3003 +#: common.opt:3012 #, no-c-format msgid "Reorder top level functions, variables, and asms." msgstr "" -#: common.opt:3007 +#: common.opt:3016 #, no-c-format msgid "Perform superblock formation via tail duplication." msgstr "" -#: common.opt:3011 +#: common.opt:3020 #, no-c-format msgid "" "For targets that normally need trampolines for nested functions, always " "generate them instead of using descriptors." msgstr "" -#: common.opt:3016 +#: common.opt:3025 #, no-c-format msgid "" "Whether trampolines are generated in executable memory rather than " "executable stack." msgstr "" -#: common.opt:3034 +#: common.opt:3043 #, no-c-format msgid "Assume floating-point operations can trap." msgstr "" -#: common.opt:3038 +#: common.opt:3047 #, no-c-format msgid "Trap for signed overflow in addition, subtraction and multiplication." msgstr "" -#: common.opt:3042 +#: common.opt:3051 #, no-c-format msgid "Enable SSA-CCP optimization on trees." msgstr "" -#: common.opt:3046 +#: common.opt:3055 #, no-c-format msgid "Enable SSA-BIT-CCP optimization on trees." msgstr "" -#: common.opt:3054 +#: common.opt:3063 #, no-c-format msgid "Enable loop header copying on trees." msgstr "" -#: common.opt:3062 +#: common.opt:3071 #, no-c-format msgid "Enable SSA coalescing of user variables." msgstr "" -#: common.opt:3070 +#: common.opt:3079 #, no-c-format msgid "Enable copy propagation on trees." msgstr "" -#: common.opt:3078 +#: common.opt:3087 #, no-c-format msgid "Transform condition stores into unconditional ones." msgstr "" -#: common.opt:3082 +#: common.opt:3091 #, no-c-format msgid "Perform conversions of switch initializations." msgstr "" -#: common.opt:3086 +#: common.opt:3095 #, no-c-format msgid "Enable SSA dead code elimination optimization on trees." msgstr "" -#: common.opt:3090 +#: common.opt:3099 #, no-c-format msgid "Enable dominator optimizations." msgstr "" -#: common.opt:3094 +#: common.opt:3103 #, no-c-format msgid "Enable tail merging on trees." msgstr "" -#: common.opt:3098 +#: common.opt:3107 #, no-c-format msgid "Enable dead store elimination." msgstr "" -#: common.opt:3102 +#: common.opt:3111 #, no-c-format msgid "Enable forward propagation on trees." msgstr "" -#: common.opt:3106 +#: common.opt:3115 #, no-c-format msgid "Enable Full Redundancy Elimination (FRE) on trees." msgstr "" -#: common.opt:3110 +#: common.opt:3119 #, no-c-format msgid "Enable string length optimizations on trees." msgstr "" -#: common.opt:3114 +#: common.opt:3123 #, no-c-format msgid "" "Detect paths that trigger erroneous or undefined behavior due to " @@ -17088,7 +17169,7 @@ msgid "" "flow and turn the statement with erroneous or undefined behavior into a trap." msgstr "" -#: common.opt:3120 +#: common.opt:3129 #, no-c-format msgid "" "Detect paths that trigger erroneous or undefined behavior due to a null " @@ -17097,521 +17178,521 @@ msgid "" "statement with erroneous or undefined behavior into a trap." msgstr "" -#: common.opt:3127 +#: common.opt:3136 #, no-c-format msgid "Enable loop distribution on trees." msgstr "" -#: common.opt:3131 +#: common.opt:3140 #, no-c-format msgid "Enable loop distribution for patterns transformed into a library call." msgstr "" -#: common.opt:3135 +#: common.opt:3144 #, no-c-format msgid "Enable loop invariant motion on trees." msgstr "" -#: common.opt:3143 +#: common.opt:3152 #, no-c-format msgid "Create canonical induction variables in loops." msgstr "" -#: common.opt:3147 +#: common.opt:3156 #, no-c-format msgid "Enable loop optimizations on tree level." msgstr "" -#: common.opt:3151 +#: common.opt:3160 #, no-c-format msgid "" "-ftree-parallelize-loops=\tEnable automatic parallelization of loops." msgstr "" -#: common.opt:3155 +#: common.opt:3164 #, no-c-format msgid "Enable hoisting loads from conditional pointers." msgstr "" -#: common.opt:3159 +#: common.opt:3168 #, no-c-format msgid "Enable SSA-PRE optimization on trees." msgstr "" -#: common.opt:3163 +#: common.opt:3172 #, no-c-format msgid "" "In SSA-PRE optimization on trees, enable partial-partial redundancy " "elimination." msgstr "" -#: common.opt:3167 +#: common.opt:3176 #, no-c-format msgid "Perform function-local points-to analysis on trees." msgstr "" -#: common.opt:3171 +#: common.opt:3180 #, no-c-format msgid "Enable reassociation on tree level." msgstr "" -#: common.opt:3179 +#: common.opt:3188 #, no-c-format msgid "Enable SSA code sinking on trees." msgstr "" -#: common.opt:3183 +#: common.opt:3192 #, no-c-format msgid "Perform straight-line strength reduction." msgstr "" -#: common.opt:3187 +#: common.opt:3196 #, no-c-format msgid "Perform scalar replacement of aggregates." msgstr "" -#: common.opt:3191 +#: common.opt:3200 #, no-c-format msgid "Replace temporary expressions in the SSA->normal pass." msgstr "" -#: common.opt:3195 +#: common.opt:3204 #, no-c-format msgid "Perform live range splitting during the SSA->normal pass." msgstr "" -#: common.opt:3199 +#: common.opt:3208 #, no-c-format msgid "Perform Value Range Propagation on trees." msgstr "" -#: common.opt:3203 +#: common.opt:3212 #, no-c-format msgid "Split paths leading to loop backedges." msgstr "" -#: common.opt:3207 +#: common.opt:3216 #, no-c-format msgid "" "Assume common declarations may be overridden with ones with a larger " "trailing array." msgstr "" -#: common.opt:3212 +#: common.opt:3221 #, no-c-format msgid "Compile whole compilation unit at a time." msgstr "" -#: common.opt:3216 +#: common.opt:3225 #, no-c-format msgid "Trap on __builtin_unreachable instead of using it for optimization." msgstr "" -#: common.opt:3220 +#: common.opt:3229 #, no-c-format msgid "Perform loop unrolling when iteration count is known." msgstr "" -#: common.opt:3224 +#: common.opt:3233 #, no-c-format msgid "Perform loop unrolling for all loops." msgstr "" -#: common.opt:3239 +#: common.opt:3248 #, no-c-format msgid "" "Allow optimization for floating-point arithmetic which may change the result " "of the operation due to rounding." msgstr "" -#: common.opt:3244 +#: common.opt:3253 #, no-c-format msgid "Same as -fassociative-math for expressions which include division." msgstr "" -#: common.opt:3252 +#: common.opt:3261 #, no-c-format msgid "Allow math optimizations that may violate IEEE or ISO standards." msgstr "" -#: common.opt:3256 +#: common.opt:3265 #, no-c-format msgid "Perform loop unswitching." msgstr "" -#: common.opt:3260 +#: common.opt:3269 #, no-c-format msgid "Perform loop splitting." msgstr "" -#: common.opt:3264 +#: common.opt:3273 #, no-c-format msgid "Version loops based on whether indices have a stride of one." msgstr "" -#: common.opt:3268 +#: common.opt:3277 #, no-c-format msgid "Just generate unwind tables for exception handling." msgstr "" -#: common.opt:3272 +#: common.opt:3281 #, no-c-format msgid "Use the bfd linker instead of the default linker." msgstr "" -#: common.opt:3276 +#: common.opt:3285 #, no-c-format msgid "Use the gold linker instead of the default linker." msgstr "" -#: common.opt:3280 +#: common.opt:3289 #, no-c-format msgid "Use the lld LLVM linker instead of the default linker." msgstr "" -#: common.opt:3284 +#: common.opt:3293 #, no-c-format msgid "Use the Modern linker (MOLD) linker instead of the default linker." msgstr "" -#: common.opt:3294 +#: common.opt:3303 #, no-c-format msgid "Perform variable tracking." msgstr "" -#: common.opt:3301 +#: common.opt:3310 #, no-c-format msgid "Perform variable tracking by annotating assignments." msgstr "" -#: common.opt:3307 +#: common.opt:3316 #, no-c-format msgid "Toggle -fvar-tracking-assignments." msgstr "" -#: common.opt:3314 +#: common.opt:3323 #, no-c-format msgid "" "Perform variable tracking and also tag variables that are uninitialized." msgstr "" -#: common.opt:3319 +#: common.opt:3328 #, no-c-format msgid "Enable vectorization on trees." msgstr "" -#: common.opt:3327 +#: common.opt:3336 #, no-c-format msgid "Enable loop vectorization on trees." msgstr "" -#: common.opt:3331 +#: common.opt:3340 #, no-c-format msgid "Enable basic block vectorization (SLP) on trees." msgstr "" -#: common.opt:3335 +#: common.opt:3344 #, no-c-format msgid "" "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost " "model for vectorization." msgstr "" -#: common.opt:3339 +#: common.opt:3348 #, no-c-format msgid "" "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the " "vectorization cost model for code marked with a simd directive." msgstr "" -#: common.opt:3358 +#: common.opt:3367 #, no-c-format msgid "" "Enables the dynamic vectorizer cost model. Preserved for backward " "compatibility." msgstr "" -#: common.opt:3366 +#: common.opt:3375 #, no-c-format msgid "Enable copy propagation of scalar-evolution information." msgstr "" -#: common.opt:3370 +#: common.opt:3379 #, no-c-format msgid "" "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to " "automatic variables." msgstr "" -#: common.opt:3392 +#: common.opt:3401 #, no-c-format msgid "Add extra commentary to assembler output." msgstr "" -#: common.opt:3396 +#: common.opt:3405 #, no-c-format msgid "" "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol " "visibility." msgstr "" -#: common.opt:3415 +#: common.opt:3424 #, no-c-format msgid "Validate vtable pointers before using them." msgstr "" -#: common.opt:3431 +#: common.opt:3440 #, no-c-format msgid "Output vtable verification counters." msgstr "" -#: common.opt:3435 +#: common.opt:3444 #, no-c-format msgid "Output vtable verification pointer sets information." msgstr "" -#: common.opt:3439 +#: common.opt:3448 #, no-c-format msgid "Use expression value profiles in optimizations." msgstr "" -#: common.opt:3443 +#: common.opt:3452 #, no-c-format msgid "Construct webs and split unrelated uses of single variable." msgstr "" -#: common.opt:3447 +#: common.opt:3456 #, no-c-format msgid "Enable conditional dead code elimination for builtin calls." msgstr "" -#: common.opt:3451 +#: common.opt:3460 #, no-c-format msgid "Perform whole program optimizations." msgstr "" -#: common.opt:3455 +#: common.opt:3464 #, no-c-format msgid "Assume pointer overflow wraps around." msgstr "" -#: common.opt:3459 +#: common.opt:3468 #, no-c-format msgid "Assume signed arithmetic overflow wraps around." msgstr "" -#: common.opt:3463 +#: common.opt:3472 #, no-c-format msgid "Put zero initialized data in the bss section." msgstr "" -#: common.opt:3467 +#: common.opt:3476 #, no-c-format msgid "Clear call-used registers upon function return." msgstr "" -#: common.opt:3471 +#: common.opt:3480 #, no-c-format msgid "Generate debug information in default format." msgstr "" -#: common.opt:3475 +#: common.opt:3484 #, no-c-format msgid "Assume assembler support for (DWARF2+) .loc directives." msgstr "" -#: common.opt:3479 +#: common.opt:3488 #, no-c-format msgid "Assume assembler support for view in (DWARF2+) .loc directives." msgstr "" -#: common.opt:3483 +#: common.opt:3492 #, no-c-format msgid "Generate debug information in CodeView format." msgstr "" -#: common.opt:3503 +#: common.opt:3512 #, no-c-format msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF." msgstr "" -#: common.opt:3509 +#: common.opt:3518 #, no-c-format msgid "Generate CTF debug information at default level." msgstr "" -#: common.opt:3513 +#: common.opt:3522 #, no-c-format msgid "Generate BTF debug information at default level." msgstr "" -#: common.opt:3517 +#: common.opt:3526 #, no-c-format msgid "Generate debug information in default version of DWARF format." msgstr "" -#: common.opt:3521 +#: common.opt:3530 #, no-c-format msgid "Generate debug information in DWARF v2 (or later) format." msgstr "" -#: common.opt:3525 +#: common.opt:3534 #, no-c-format msgid "Use 32-bit DWARF format when emitting DWARF debug information." msgstr "" -#: common.opt:3529 +#: common.opt:3538 #, no-c-format msgid "Use 64-bit DWARF format when emitting DWARF debug information." msgstr "" -#: common.opt:3533 +#: common.opt:3542 #, no-c-format msgid "Generate debug information in default extended format." msgstr "" -#: common.opt:3537 +#: common.opt:3546 #, no-c-format msgid "Generate extended entry point information for inlined functions." msgstr "" -#: common.opt:3541 +#: common.opt:3550 #, no-c-format msgid "Compute locview reset points based on insn length estimates." msgstr "" -#: common.opt:3549 +#: common.opt:3558 #, no-c-format msgid "Don't generate DWARF pubnames and pubtypes sections." msgstr "" -#: common.opt:3553 +#: common.opt:3562 #, no-c-format msgid "Generate DWARF pubnames and pubtypes sections." msgstr "" -#: common.opt:3557 +#: common.opt:3566 #, no-c-format msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions." msgstr "" -#: common.opt:3561 +#: common.opt:3570 #, no-c-format msgid "Record gcc command line switches in DWARF DW_AT_producer." msgstr "" -#: common.opt:3565 +#: common.opt:3574 #, no-c-format msgid "Generate debug information in separate .dwo files." msgstr "" -#: common.opt:3577 +#: common.opt:3586 #, no-c-format msgid "Emit progressive recommended breakpoint locations." msgstr "" -#: common.opt:3581 +#: common.opt:3590 #, no-c-format msgid "Don't emit DWARF additions beyond selected version." msgstr "" -#: common.opt:3585 +#: common.opt:3594 #, no-c-format msgid "" "Add description attributes to some DWARF DIEs that have no name attribute." msgstr "" -#: common.opt:3589 +#: common.opt:3598 #, no-c-format msgid "Toggle debug information generation." msgstr "" -#: common.opt:3593 +#: common.opt:3602 #, no-c-format msgid "Augment variable location lists with progressive views." msgstr "" -#: common.opt:3600 +#: common.opt:3609 #, no-c-format msgid "Generate debug information in VMS format." msgstr "" -#: common.opt:3629 +#: common.opt:3638 #, no-c-format msgid "Generate compressed debug sections." msgstr "" -#: common.opt:3633 +#: common.opt:3642 #, no-c-format msgid "-gz=\tGenerate compressed debug sections in format ." msgstr "" -#: common.opt:3640 +#: common.opt:3649 #, no-c-format msgid "-iplugindir=\tSet to be the default plugin directory." msgstr "" -#: common.opt:3644 +#: common.opt:3653 #, no-c-format msgid "-imultiarch \tSet to be the multiarch include subdirectory." msgstr "" -#: common.opt:3672 +#: common.opt:3681 #, no-c-format msgid "-o \tPlace output into ." msgstr "" -#: common.opt:3676 +#: common.opt:3685 #, no-c-format msgid "Enable function profiling." msgstr "" -#: common.opt:3686 +#: common.opt:3695 #, no-c-format msgid "Like -pedantic but issue them as errors." msgstr "" -#: common.opt:3726 +#: common.opt:3735 #, no-c-format msgid "Do not display functions compiled or elapsed time." msgstr "" -#: common.opt:3758 +#: common.opt:3767 #, no-c-format msgid "Enable verbose output." msgstr "" -#: common.opt:3762 +#: common.opt:3771 #, no-c-format msgid "Display the compiler's version." msgstr "" -#: common.opt:3766 +#: common.opt:3775 #, no-c-format msgid "Suppress warnings." msgstr "" -#: common.opt:3776 +#: common.opt:3785 #, no-c-format msgid "Create a shared library." msgstr "" -#: common.opt:3836 +#: common.opt:3845 #, no-c-format msgid "Don't create a dynamically linked position independent executable." msgstr "" -#: common.opt:3840 +#: common.opt:3849 #, no-c-format msgid "Create a dynamically linked position independent executable." msgstr "" -#: common.opt:3844 +#: common.opt:3853 #, no-c-format msgid "Create a static position independent executable." msgstr "" -#: common.opt:3851 +#: common.opt:3860 #, no-c-format msgid "Use caller save register across calls if possible." msgstr "" @@ -19285,15 +19366,15 @@ msgstr "" msgid "Maximum number of basic blocks for VRP to use a basic cache vector." msgstr "" -#: cfgrtl.cc:2822 +#: cfgrtl.cc:2837 msgid "flow control insn inside a basic block" msgstr "" -#: cfgrtl.cc:3114 +#: cfgrtl.cc:3129 msgid "insn outside basic block" msgstr "" -#: cfgrtl.cc:3122 +#: cfgrtl.cc:3137 msgid "return not followed by barrier" msgstr "" @@ -19302,45 +19383,45 @@ msgstr "" msgid "[cannot find %s]" msgstr "" -#: collect2.cc:1560 +#: collect2.cc:1561 #, c-format msgid "collect2 version %s\n" msgstr "" -#: collect2.cc:1665 +#: collect2.cc:1666 #, c-format msgid "%d constructor found\n" msgid_plural "%d constructors found\n" msgstr[0] "" msgstr[1] "" -#: collect2.cc:1669 +#: collect2.cc:1670 #, c-format msgid "%d destructor found\n" msgid_plural "%d destructors found\n" msgstr[0] "" msgstr[1] "" -#: collect2.cc:1673 +#: collect2.cc:1674 #, c-format msgid "%d frame table found\n" msgid_plural "%d frame tables found\n" msgstr[0] "" msgstr[1] "" -#: collect2.cc:1828 +#: collect2.cc:1829 #, c-format msgid "[Leaving %s]\n" msgstr "" -#: collect2.cc:2058 +#: collect2.cc:2059 #, c-format msgid "" "\n" "write_c_file - output name is %s, prefix is %s\n" msgstr "" -#: collect2.cc:2582 +#: collect2.cc:2583 #, c-format msgid "" "\n" @@ -19351,7 +19432,7 @@ msgstr "" msgid "const/copy propagation disabled" msgstr "" -#: diagnostic-format-json.cc:339 diagnostic-format-sarif.cc:1776 +#: diagnostic-format-json.cc:343 diagnostic-format-sarif.cc:1780 #, c-format msgid "error: unable to open '%s' for writing: %s\n" msgstr "" @@ -19398,7 +19479,7 @@ msgstr "" msgid "See %s for instructions.\n" msgstr "" -#: diagnostic.cc:806 +#: diagnostic.cc:805 #, c-format msgid "compilation terminated.\n" msgstr "" @@ -19434,27 +19515,27 @@ msgstr "" msgid "imported at" msgstr "" -#: diagnostic.cc:1585 +#: diagnostic.cc:1592 #, c-format msgid "%s:%d: confused by earlier errors, bailing out\n" msgstr "" -#: diagnostic.cc:2286 +#: diagnostic.cc:2303 #, c-format msgid "internal compiler error: error reporting routines re-entered.\n" msgstr "" -#: diagnostic.cc:2317 diagnostic.cc:2336 +#: diagnostic.cc:2334 diagnostic.cc:2353 #, gcc-internal-format, gfc-internal-format msgid "in %s, at %s:%d" msgstr "" -#: diagnostic.cc:2387 +#: diagnostic.cc:2404 #, c-format msgid "%s: all warnings being treated as errors" msgstr "" -#: diagnostic.cc:2392 +#: diagnostic.cc:2409 #, c-format msgid "%s: some warnings being treated as errors" msgstr "" @@ -19505,12 +19586,12 @@ msgstr "" #. PRINT_OPERAND must handle them. #. We can't handle floating point constants; #. TARGET_PRINT_OPERAND must handle them. -#: final.cc:3728 config/arc/arc.cc:6310 config/i386/i386.cc:12905 +#: final.cc:3728 config/arc/arc.cc:6311 config/i386/i386.cc:12926 #, c-format msgid "floating constant misused" msgstr "" -#: final.cc:3786 config/arc/arc.cc:6407 config/i386/i386.cc:12996 +#: final.cc:3786 config/arc/arc.cc:6408 config/i386/i386.cc:13017 #: config/pdp11/pdp11.cc:1872 #, c-format msgid "invalid expression as operand" @@ -19846,7 +19927,7 @@ msgstr "" msgid " zstd" msgstr "" -#: gcc.cc:7691 gcov.cc:1523 gcov.cc:1581 gcov.cc:1593 gcov.cc:2916 +#: gcc.cc:7691 gcov.cc:1610 gcov.cc:1668 gcov.cc:1680 gcov.cc:3098 #, c-format msgid "\n" msgstr "" @@ -19901,11 +19982,11 @@ msgstr "" msgid "%s %s%s\n" msgstr "" -#: gcc.cc:8905 gcov-tool.cc:596 gcov.cc:971 fortran/gfortranspec.cc:282 +#: gcc.cc:8905 gcov-tool.cc:596 gcov.cc:1015 fortran/gfortranspec.cc:282 msgid "(C)" msgstr "" -#: gcc.cc:8906 gcov-tool.cc:598 gcov.cc:973 fortran/gfortranspec.cc:283 +#: gcc.cc:8906 gcov-tool.cc:598 gcov.cc:1017 fortran/gfortranspec.cc:283 #, c-format msgid "" "This is free software; see the source for copying conditions. There is NO\n" @@ -20087,7 +20168,7 @@ msgid "" " -v, --version Print version number, then exit\n" msgstr "" -#: gcov-tool.cc:584 gcov.cc:958 +#: gcov-tool.cc:584 gcov.cc:1002 #, c-format msgid "" "\n" @@ -20100,381 +20181,413 @@ msgstr "" msgid "Copyright %s 2024 Free Software Foundation, Inc.\n" msgstr "" -#: gcov.cc:927 +#: gcov.cc:969 #, c-format msgid "" "Usage: gcov [OPTION...] SOURCE|OBJ...\n" "\n" msgstr "" -#: gcov.cc:928 +#: gcov.cc:970 #, c-format msgid "" "Print code coverage information.\n" "\n" msgstr "" -#: gcov.cc:929 +#: gcov.cc:971 #, c-format msgid "" " -a, --all-blocks Show information for every basic block\n" msgstr "" -#: gcov.cc:930 +#: gcov.cc:972 #, c-format msgid "" " -b, --branch-probabilities Include branch probabilities in output\n" msgstr "" -#: gcov.cc:931 +#: gcov.cc:973 #, c-format msgid "" " -c, --branch-counts Output counts of branches taken\n" " rather than percentages\n" msgstr "" -#: gcov.cc:933 +#: gcov.cc:975 +#, c-format +msgid "" +" -g, --conditions Include modified condition/decision\n" +" coverage in output\n" +msgstr "" + +#: gcov.cc:977 #, c-format msgid " -d, --display-progress Display progress information\n" msgstr "" -#: gcov.cc:934 +#: gcov.cc:978 #, c-format msgid " -D, --debug\t\t\t Display debugging dumps\n" msgstr "" -#: gcov.cc:935 +#: gcov.cc:979 #, c-format msgid " -f, --function-summaries Output summaries for each function\n" msgstr "" -#: gcov.cc:936 +#: gcov.cc:980 #, c-format msgid " -h, --help Print this help, then exit\n" msgstr "" -#: gcov.cc:937 +#: gcov.cc:981 #, c-format msgid "" " -j, --json-format Output JSON intermediate format\n" " into .gcov.json.gz file\n" msgstr "" -#: gcov.cc:939 +#: gcov.cc:983 #, c-format msgid " -H, --human-readable Output human readable numbers\n" msgstr "" -#: gcov.cc:940 +#: gcov.cc:984 #, c-format msgid " -k, --use-colors Emit colored output\n" msgstr "" -#: gcov.cc:941 +#: gcov.cc:985 #, c-format msgid "" " -l, --long-file-names Use long output file names for included\n" " source files\n" msgstr "" -#: gcov.cc:943 +#: gcov.cc:987 #, c-format msgid " -m, --demangled-names Output demangled function names\n" msgstr "" -#: gcov.cc:944 +#: gcov.cc:988 #, c-format msgid " -n, --no-output Do not create an output file\n" msgstr "" -#: gcov.cc:945 +#: gcov.cc:989 #, c-format msgid "" " -o, --object-directory DIR|FILE Search for object files in DIR or called " "FILE\n" msgstr "" -#: gcov.cc:946 +#: gcov.cc:990 #, c-format msgid " -p, --preserve-paths Preserve all pathname components\n" msgstr "" -#: gcov.cc:947 +#: gcov.cc:991 #, c-format msgid "" " -q, --use-hotness-colors Emit perf-like colored output for hot " "lines\n" msgstr "" -#: gcov.cc:948 +#: gcov.cc:992 #, c-format msgid " -r, --relative-only Only show data for relative sources\n" msgstr "" -#: gcov.cc:949 +#: gcov.cc:993 #, c-format msgid " -s, --source-prefix DIR Source prefix to elide\n" msgstr "" -#: gcov.cc:950 +#: gcov.cc:994 #, c-format msgid " -t, --stdout Output to stdout instead of a file\n" msgstr "" -#: gcov.cc:951 +#: gcov.cc:995 #, c-format msgid "" " -u, --unconditional-branches Show unconditional branch counts too\n" msgstr "" -#: gcov.cc:952 +#: gcov.cc:996 #, c-format msgid " -v, --version Print version number, then exit\n" msgstr "" -#: gcov.cc:953 +#: gcov.cc:997 #, c-format msgid " -w, --verbose Print verbose informations\n" msgstr "" -#: gcov.cc:954 +#: gcov.cc:998 #, c-format msgid " -x, --hash-filenames Hash long pathnames\n" msgstr "" -#: gcov.cc:955 +#: gcov.cc:999 #, c-format msgid "" "\n" "Obsolete options:\n" msgstr "" -#: gcov.cc:956 +#: gcov.cc:1000 #, c-format msgid " -i, --json-format Replaced with -j, --json-format\n" msgstr "" -#: gcov.cc:957 +#: gcov.cc:1001 #, c-format msgid " -j, --human-readable Replaced with -H, --human-readable\n" msgstr "" -#: gcov.cc:968 +#: gcov.cc:1012 #, c-format msgid "gcov %s%s\n" msgstr "" -#: gcov.cc:969 +#: gcov.cc:1013 #, c-format msgid "JSON format version: %s\n" msgstr "" -#: gcov.cc:1367 +#: gcov.cc:1454 #, c-format msgid "'%s' file is already processed\n" msgstr "" -#: gcov.cc:1483 gcov.cc:1612 +#: gcov.cc:1570 gcov.cc:1699 #, c-format msgid "Creating '%s'\n" msgstr "" -#: gcov.cc:1487 +#: gcov.cc:1574 #, c-format msgid "Error writing output file '%s'\n" msgstr "" -#: gcov.cc:1495 +#: gcov.cc:1582 #, c-format msgid "Could not open output file '%s'\n" msgstr "" -#: gcov.cc:1502 +#: gcov.cc:1589 #, c-format msgid "Removing '%s'\n" msgstr "" -#: gcov.cc:1617 +#: gcov.cc:1704 #, c-format msgid "Cannot open JSON output file %s\n" msgstr "" -#: gcov.cc:1626 +#: gcov.cc:1713 #, c-format msgid "Error writing JSON output file %s\n" msgstr "" -#: gcov.cc:1791 +#: gcov.cc:1878 #, c-format msgid "%s:source file is newer than notes file '%s'\n" msgstr "" -#: gcov.cc:1796 +#: gcov.cc:1883 #, c-format msgid "(the message is displayed only once per source file)\n" msgstr "" -#: gcov.cc:1816 +#: gcov.cc:1903 #, c-format msgid "%s:cannot open notes file\n" msgstr "" -#: gcov.cc:1823 +#: gcov.cc:1910 #, c-format msgid "%s:not a gcov notes file\n" msgstr "" -#: gcov.cc:1837 +#: gcov.cc:1924 #, c-format msgid "%s:version '%.4s', prefer '%.4s'\n" msgstr "" -#: gcov.cc:1890 +#: gcov.cc:1977 #, c-format msgid "%s:already seen blocks for '%s'\n" msgstr "" -#: gcov.cc:2006 gcov.cc:2120 +#: gcov.cc:2064 +#, c-format +msgid "%s:already seen conditions for '%s'\n" +msgstr "" + +#: gcov.cc:2115 gcov.cc:2244 #, c-format msgid "%s:corrupted\n" msgstr "" -#: gcov.cc:2014 +#: gcov.cc:2123 #, c-format msgid "%s:no functions found\n" msgstr "" -#: gcov.cc:2032 +#: gcov.cc:2141 #, c-format msgid "%s:cannot open data file, assuming not executed\n" msgstr "" -#: gcov.cc:2039 +#: gcov.cc:2148 #, c-format msgid "%s:not a gcov data file\n" msgstr "" -#: gcov.cc:2053 +#: gcov.cc:2162 #, c-format msgid "%s:version '%.4s', prefer version '%.4s'\n" msgstr "" -#: gcov.cc:2060 +#: gcov.cc:2169 #, c-format msgid "%s:stamp mismatch with notes file\n" msgstr "" -#: gcov.cc:2097 +#: gcov.cc:2206 #, c-format msgid "%s:profile mismatch for '%s'\n" msgstr "" -#: gcov.cc:2119 +#: gcov.cc:2243 #, c-format msgid "%s:overflowed\n" msgstr "" -#: gcov.cc:2167 +#: gcov.cc:2291 #, c-format msgid "%s:'%s' lacks entry and/or exit blocks\n" msgstr "" -#: gcov.cc:2172 +#: gcov.cc:2296 #, c-format msgid "%s:'%s' has arcs to entry block\n" msgstr "" -#: gcov.cc:2180 +#: gcov.cc:2304 #, c-format msgid "%s:'%s' has arcs from exit block\n" msgstr "" -#: gcov.cc:2389 +#: gcov.cc:2513 #, c-format msgid "%s:graph is unsolvable for '%s'\n" msgstr "" -#: gcov.cc:2505 +#: gcov.cc:2638 #, c-format msgid "Lines executed:%s of %d\n" msgstr "" -#: gcov.cc:2508 +#: gcov.cc:2641 #, c-format msgid "No executable lines\n" msgstr "" -#: gcov.cc:2516 gcov.cc:2525 +#: gcov.cc:2649 gcov.cc:2658 #, c-format msgid "%s '%s'\n" msgstr "" -#: gcov.cc:2532 +#: gcov.cc:2665 #, c-format msgid "Branches executed:%s of %d\n" msgstr "" -#: gcov.cc:2536 +#: gcov.cc:2669 #, c-format msgid "Taken at least once:%s of %d\n" msgstr "" -#: gcov.cc:2542 +#: gcov.cc:2675 #, c-format msgid "No branches\n" msgstr "" -#: gcov.cc:2544 +#: gcov.cc:2677 #, c-format msgid "Calls executed:%s of %d\n" msgstr "" -#: gcov.cc:2548 +#: gcov.cc:2681 #, c-format msgid "No calls\n" msgstr "" -#: gcov.cc:2768 +#: gcov.cc:2688 +#, c-format +msgid "Condition outcomes covered:%s of %d\n" +msgstr "" + +#: gcov.cc:2693 +#, c-format +msgid "No conditions\n" +msgstr "" + +#: gcov.cc:2913 #, c-format msgid "%s:no lines for '%s'\n" msgstr "" -#: gcov.cc:2894 +#: gcov.cc:3049 +#, c-format +msgid "condition outcomes covered %d/%d\n" +msgstr "" + +#: gcov.cc:3062 +#, c-format +msgid "condition %2u not covered (%s%s)\n" +msgstr "" + +#: gcov.cc:3076 #, c-format msgid "call %2d returned %s\n" msgstr "" -#: gcov.cc:2899 +#: gcov.cc:3081 #, c-format msgid "call %2d never executed\n" msgstr "" -#: gcov.cc:2904 +#: gcov.cc:3086 #, c-format msgid "branch %2d taken %s%s" msgstr "" -#: gcov.cc:2909 +#: gcov.cc:3091 #, c-format msgid "branch %2d never executed%s" msgstr "" -#: gcov.cc:2914 +#: gcov.cc:3096 #, c-format msgid " (BB %d)" msgstr "" -#: gcov.cc:2921 +#: gcov.cc:3103 #, c-format msgid "unconditional %2d taken %s\n" msgstr "" -#: gcov.cc:2924 +#: gcov.cc:3106 #, c-format msgid "unconditional %2d never executed\n" msgstr "" -#: gcov.cc:3174 +#: gcov.cc:3369 #, c-format msgid "Cannot open source file %s\n" msgstr "" @@ -20558,7 +20671,7 @@ msgstr "" msgid " inlined from %qs" msgstr "" -#: lra-assigns.cc:1862 reload1.cc:2073 +#: lra-assigns.cc:1868 reload1.cc:2073 msgid "this is the insn:" msgstr "" @@ -20689,12 +20802,12 @@ msgstr "" msgid "The following options are language-related" msgstr "" -#: passes.cc:1832 +#: passes.cc:1833 #, c-format msgid "during %s pass: %s\n" msgstr "" -#: passes.cc:1837 +#: passes.cc:1838 #, c-format msgid "dump file: %s\n" msgstr "" @@ -20753,34 +20866,34 @@ msgstr "" msgid "created and used with different settings of %<-fpie%>" msgstr "" -#: toplev.cc:313 +#: toplev.cc:315 #, c-format msgid "unrecoverable error" msgstr "" -#: toplev.cc:606 +#: toplev.cc:608 #, c-format msgid "" "%s%s%s %sversion %s (%s)\n" "%s\tcompiled by GNU C version %s, " msgstr "" -#: toplev.cc:608 +#: toplev.cc:610 #, c-format msgid "%s%s%s %sversion %s (%s) compiled by CC, " msgstr "" -#: toplev.cc:612 +#: toplev.cc:614 #, c-format msgid "GMP version %s, MPFR version %s, MPC version %s, isl version %s\n" msgstr "" -#: toplev.cc:614 +#: toplev.cc:616 #, c-format msgid "%s%swarning: %s header version %s differs from library version %s.\n" msgstr "" -#: toplev.cc:616 +#: toplev.cc:618 #, c-format msgid "" "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n" @@ -21069,78 +21182,78 @@ msgstr "" msgid "" msgstr "" -#: config/aarch64/aarch64.cc:11911 config/loongarch/loongarch.cc:6212 +#: config/aarch64/aarch64.cc:11980 config/loongarch/loongarch.cc:6148 #, c-format msgid "unsupported operand for code '%c'" msgstr "" -#: config/aarch64/aarch64.cc:11920 config/aarch64/aarch64.cc:11933 -#: config/aarch64/aarch64.cc:11945 config/aarch64/aarch64.cc:11956 -#: config/aarch64/aarch64.cc:11972 config/aarch64/aarch64.cc:11986 -#: config/aarch64/aarch64.cc:12006 config/aarch64/aarch64.cc:12088 -#: config/aarch64/aarch64.cc:12099 config/aarch64/aarch64.cc:12113 -#: config/aarch64/aarch64.cc:12339 config/aarch64/aarch64.cc:12352 -#: config/aarch64/aarch64.cc:12369 config/pru/pru.cc:1794 +#: config/aarch64/aarch64.cc:11989 config/aarch64/aarch64.cc:12002 +#: config/aarch64/aarch64.cc:12014 config/aarch64/aarch64.cc:12025 +#: config/aarch64/aarch64.cc:12041 config/aarch64/aarch64.cc:12055 +#: config/aarch64/aarch64.cc:12075 config/aarch64/aarch64.cc:12157 +#: config/aarch64/aarch64.cc:12168 config/aarch64/aarch64.cc:12182 +#: config/aarch64/aarch64.cc:12408 config/aarch64/aarch64.cc:12421 +#: config/aarch64/aarch64.cc:12438 config/pru/pru.cc:1794 #: config/pru/pru.cc:1805 config/pru/pru.cc:1877 #, c-format msgid "invalid operand for '%%%c'" msgstr "" -#: config/aarch64/aarch64.cc:12024 config/aarch64/aarch64.cc:12035 -#: config/aarch64/aarch64.cc:12199 config/aarch64/aarch64.cc:12210 -#: config/riscv/riscv.cc:5801 config/riscv/riscv.cc:5809 -#: config/riscv/riscv.cc:5816 config/riscv/riscv.cc:5820 -#: config/riscv/riscv.cc:5862 config/riscv/riscv.cc:5880 +#: config/aarch64/aarch64.cc:12093 config/aarch64/aarch64.cc:12104 +#: config/aarch64/aarch64.cc:12268 config/aarch64/aarch64.cc:12279 +#: config/riscv/riscv.cc:6114 config/riscv/riscv.cc:6122 +#: config/riscv/riscv.cc:6129 config/riscv/riscv.cc:6133 +#: config/riscv/riscv.cc:6175 config/riscv/riscv.cc:6193 #, c-format msgid "invalid vector constant" msgstr "" -#: config/aarch64/aarch64.cc:12049 +#: config/aarch64/aarch64.cc:12118 #, c-format msgid "incompatible floating point / vector register operand for '%%%c'" msgstr "" -#: config/aarch64/aarch64.cc:12061 +#: config/aarch64/aarch64.cc:12130 #, c-format msgid "incompatible operand for '%%%c'" msgstr "" -#: config/aarch64/aarch64.cc:12081 +#: config/aarch64/aarch64.cc:12150 #, c-format msgid "incompatible register operand for '%%%c'" msgstr "" -#: config/aarch64/aarch64.cc:12146 config/arm/arm.cc:24757 +#: config/aarch64/aarch64.cc:12215 config/arm/arm.cc:24798 #, c-format msgid "missing operand" msgstr "" -#: config/aarch64/aarch64.cc:12236 +#: config/aarch64/aarch64.cc:12305 #, c-format msgid "invalid constant" msgstr "" -#: config/aarch64/aarch64.cc:12239 +#: config/aarch64/aarch64.cc:12308 #, c-format msgid "invalid operand" msgstr "" -#: config/aarch64/aarch64.cc:12377 config/aarch64/aarch64.cc:12382 +#: config/aarch64/aarch64.cc:12446 config/aarch64/aarch64.cc:12451 #, c-format msgid "invalid operand prefix '%%%c'" msgstr "" -#: config/aarch64/aarch64.cc:12402 +#: config/aarch64/aarch64.cc:12471 #, c-format msgid "invalid address mode" msgstr "" -#: config/aarch64/aarch64.cc:28858 +#: config/aarch64/aarch64.cc:29006 msgid "cannot combine GNU and SVE vectors in a binary operation" msgstr "" -#: config/alpha/alpha.cc:5082 config/i386/i386.cc:14172 -#: config/rs6000/rs6000.cc:14665 config/sparc/sparc.cc:9362 +#: config/alpha/alpha.cc:5082 config/i386/i386.cc:14193 +#: config/rs6000/rs6000.cc:14617 config/sparc/sparc.cc:9362 #, c-format msgid "'%%&' used without any local dynamic TLS references" msgstr "" @@ -21156,18 +21269,18 @@ msgid "invalid %%r value" msgstr "" #: config/alpha/alpha.cc:5180 config/ia64/ia64.cc:5542 -#: config/rs6000/rs6000.cc:14360 config/xtensa/xtensa.cc:3066 +#: config/rs6000/rs6000.cc:14312 config/xtensa/xtensa.cc:3066 #, c-format msgid "invalid %%R value" msgstr "" -#: config/alpha/alpha.cc:5186 config/rs6000/rs6000.cc:14280 +#: config/alpha/alpha.cc:5186 config/rs6000/rs6000.cc:14232 #: config/xtensa/xtensa.cc:3039 #, c-format msgid "invalid %%N value" msgstr "" -#: config/alpha/alpha.cc:5194 config/rs6000/rs6000.cc:14308 +#: config/alpha/alpha.cc:5194 config/rs6000/rs6000.cc:14260 #, c-format msgid "invalid %%P value" msgstr "" @@ -21197,7 +21310,7 @@ msgstr "" msgid "invalid %%U value" msgstr "" -#: config/alpha/alpha.cc:5280 config/rs6000/rs6000.cc:14368 +#: config/alpha/alpha.cc:5280 config/rs6000/rs6000.cc:14320 #, c-format msgid "invalid %%s value" msgstr "" @@ -21207,7 +21320,7 @@ msgstr "" msgid "invalid %%C value" msgstr "" -#: config/alpha/alpha.cc:5328 config/rs6000/rs6000.cc:14144 +#: config/alpha/alpha.cc:5328 config/rs6000/rs6000.cc:14096 #, c-format msgid "invalid %%E value" msgstr "" @@ -21217,10 +21330,10 @@ msgstr "" msgid "unknown relocation unspec" msgstr "" -#: config/alpha/alpha.cc:5362 config/gcn/gcn.cc:7349 config/gcn/gcn.cc:7358 -#: config/gcn/gcn.cc:7418 config/gcn/gcn.cc:7426 config/gcn/gcn.cc:7442 -#: config/gcn/gcn.cc:7460 config/gcn/gcn.cc:7511 config/gcn/gcn.cc:7630 -#: config/gcn/gcn.cc:7747 config/rs6000/rs6000.cc:14670 +#: config/alpha/alpha.cc:5362 config/gcn/gcn.cc:7411 config/gcn/gcn.cc:7420 +#: config/gcn/gcn.cc:7480 config/gcn/gcn.cc:7488 config/gcn/gcn.cc:7504 +#: config/gcn/gcn.cc:7522 config/gcn/gcn.cc:7573 config/gcn/gcn.cc:7692 +#: config/gcn/gcn.cc:7809 config/rs6000/rs6000.cc:14622 #, c-format msgid "invalid %%xn code" msgstr "" @@ -21230,237 +21343,237 @@ msgstr "" msgid "invalid operand address" msgstr "" -#: config/arc/arc.cc:4900 +#: config/arc/arc.cc:4901 #, c-format msgid "invalid operand to %%Z code" msgstr "" -#: config/arc/arc.cc:4908 +#: config/arc/arc.cc:4909 #, c-format msgid "invalid operand to %%z code" msgstr "" -#: config/arc/arc.cc:4916 +#: config/arc/arc.cc:4917 #, c-format msgid "invalid operands to %%c code" msgstr "" -#: config/arc/arc.cc:4924 +#: config/arc/arc.cc:4925 #, c-format msgid "invalid operand to %%M code" msgstr "" -#: config/arc/arc.cc:4932 config/m32r/m32r.cc:2087 +#: config/arc/arc.cc:4933 config/m32r/m32r.cc:2088 #, c-format msgid "invalid operand to %%p code" msgstr "" -#: config/arc/arc.cc:4940 +#: config/arc/arc.cc:4941 #, c-format msgid "invalid operand for %%s code" msgstr "" -#: config/arc/arc.cc:4958 +#: config/arc/arc.cc:4959 #, c-format msgid "invalid operand for %%N code" msgstr "" -#: config/arc/arc.cc:4971 +#: config/arc/arc.cc:4972 #, c-format msgid "invalid operand for %%N or %%S code" msgstr "" -#: config/arc/arc.cc:4993 config/m32r/m32r.cc:2080 +#: config/arc/arc.cc:4994 config/m32r/m32r.cc:2081 #, c-format msgid "invalid operand to %%s code" msgstr "" -#: config/arc/arc.cc:5113 config/m32r/m32r.cc:2113 +#: config/arc/arc.cc:5114 config/m32r/m32r.cc:2114 #, c-format msgid "invalid operand to %%R code" msgstr "" -#: config/arc/arc.cc:5189 config/m32r/m32r.cc:2136 +#: config/arc/arc.cc:5190 config/m32r/m32r.cc:2137 #, c-format msgid "invalid operand to %%H/%%L code" msgstr "" -#: config/arc/arc.cc:5257 config/m32r/m32r.cc:2207 +#: config/arc/arc.cc:5258 config/m32r/m32r.cc:2208 #, c-format msgid "invalid operand to %%U code" msgstr "" -#: config/arc/arc.cc:5269 +#: config/arc/arc.cc:5270 #, c-format msgid "invalid operand to %%V code" msgstr "" -#: config/arc/arc.cc:5319 +#: config/arc/arc.cc:5320 #, c-format msgid "invalid operand to %%O code" msgstr "" #. Unknown flag. #. Undocumented flag. -#: config/arc/arc.cc:5342 config/epiphany/epiphany.cc:1308 -#: config/m32r/m32r.cc:2234 config/nds32/nds32.cc:3518 +#: config/arc/arc.cc:5343 config/epiphany/epiphany.cc:1309 +#: config/m32r/m32r.cc:2235 config/nds32/nds32.cc:3519 #: config/sparc/sparc.cc:9641 #, c-format msgid "invalid operand output code" msgstr "" -#: config/arc/arc.cc:6395 +#: config/arc/arc.cc:6396 #, c-format msgid "invalid UNSPEC as operand: %d" msgstr "" -#: config/arc/arc.cc:6611 +#: config/arc/arc.cc:6612 msgid "unrecognized supposed constant" msgstr "" -#: config/arm/arm.cc:21045 config/arm/arm.cc:21070 config/arm/arm.cc:21080 -#: config/arm/arm.cc:21089 config/arm/arm.cc:21098 +#: config/arm/arm.cc:21086 config/arm/arm.cc:21111 config/arm/arm.cc:21121 +#: config/arm/arm.cc:21130 config/arm/arm.cc:21139 #, c-format msgid "invalid shift operand" msgstr "" -#: config/arm/arm.cc:24007 config/arm/arm.cc:24025 +#: config/arm/arm.cc:24048 config/arm/arm.cc:24066 #, c-format msgid "predicated Thumb instruction" msgstr "" -#: config/arm/arm.cc:24013 +#: config/arm/arm.cc:24054 #, c-format msgid "predicated instruction in conditional sequence" msgstr "" -#: config/arm/arm.cc:24134 config/arm/arm.cc:24147 config/arm/arm.cc:24172 +#: config/arm/arm.cc:24175 config/arm/arm.cc:24188 config/arm/arm.cc:24213 #: config/nios2/nios2.cc:3085 #, c-format msgid "Unsupported operand for code '%c'" msgstr "" -#: config/arm/arm.cc:24249 config/arm/arm.cc:24271 config/arm/arm.cc:24281 -#: config/arm/arm.cc:24291 config/arm/arm.cc:24301 config/arm/arm.cc:24340 -#: config/arm/arm.cc:24358 config/arm/arm.cc:24376 config/arm/arm.cc:24403 -#: config/arm/arm.cc:24418 config/arm/arm.cc:24445 config/arm/arm.cc:24452 -#: config/arm/arm.cc:24470 config/arm/arm.cc:24477 config/arm/arm.cc:24485 -#: config/arm/arm.cc:24506 config/arm/arm.cc:24513 config/arm/arm.cc:24704 -#: config/arm/arm.cc:24711 config/arm/arm.cc:24738 config/arm/arm.cc:24745 +#: config/arm/arm.cc:24290 config/arm/arm.cc:24312 config/arm/arm.cc:24322 +#: config/arm/arm.cc:24332 config/arm/arm.cc:24342 config/arm/arm.cc:24381 +#: config/arm/arm.cc:24399 config/arm/arm.cc:24417 config/arm/arm.cc:24444 +#: config/arm/arm.cc:24459 config/arm/arm.cc:24486 config/arm/arm.cc:24493 +#: config/arm/arm.cc:24511 config/arm/arm.cc:24518 config/arm/arm.cc:24526 +#: config/arm/arm.cc:24547 config/arm/arm.cc:24554 config/arm/arm.cc:24745 +#: config/arm/arm.cc:24752 config/arm/arm.cc:24779 config/arm/arm.cc:24786 #: config/bfin/bfin.cc:1441 config/bfin/bfin.cc:1448 config/bfin/bfin.cc:1455 #: config/bfin/bfin.cc:1462 config/bfin/bfin.cc:1471 config/bfin/bfin.cc:1478 -#: config/bfin/bfin.cc:1485 config/bfin/bfin.cc:1492 config/nds32/nds32.cc:3544 +#: config/bfin/bfin.cc:1485 config/bfin/bfin.cc:1492 config/nds32/nds32.cc:3545 #, c-format msgid "invalid operand for code '%c'" msgstr "" -#: config/arm/arm.cc:24353 +#: config/arm/arm.cc:24394 #, c-format msgid "instruction never executed" msgstr "" #. Former Maverick support, removed after GCC-4.7. -#: config/arm/arm.cc:24394 +#: config/arm/arm.cc:24435 #, c-format msgid "obsolete Maverick format code '%c'" msgstr "" -#: config/arm/arm.cc:34364 +#: config/arm/arm.cc:34406 msgid "invalid conversion from type %" msgstr "" -#: config/arm/arm.cc:34366 +#: config/arm/arm.cc:34408 msgid "invalid conversion to type %" msgstr "" -#: config/arm/arm.cc:34381 config/arm/arm.cc:34397 +#: config/arm/arm.cc:34423 config/arm/arm.cc:34439 msgid "operation not permitted on type %" msgstr "" -#: config/avr/avr.cc:3013 +#: config/avr/avr.cc:3610 #, c-format msgid "address operand requires constraint for X, Y, or Z register" msgstr "" -#: config/avr/avr.cc:3196 +#: config/avr/avr.cc:3793 msgid "operands to %T/%t must be reg + const_int:" msgstr "" -#: config/avr/avr.cc:3246 config/avr/avr.cc:3313 +#: config/avr/avr.cc:3843 config/avr/avr.cc:3910 msgid "bad address, not an I/O address:" msgstr "" -#: config/avr/avr.cc:3255 +#: config/avr/avr.cc:3852 msgid "bad address, not a constant:" msgstr "" -#: config/avr/avr.cc:3273 config/avr/avr.cc:3280 +#: config/avr/avr.cc:3870 config/avr/avr.cc:3877 msgid "bad address, not (reg+disp):" msgstr "" -#: config/avr/avr.cc:3287 +#: config/avr/avr.cc:3884 msgid "bad address, not post_inc or pre_dec:" msgstr "" -#: config/avr/avr.cc:3299 +#: config/avr/avr.cc:3896 msgid "internal compiler error. Bad address:" msgstr "" -#: config/avr/avr.cc:3332 +#: config/avr/avr.cc:3929 #, c-format msgid "Unsupported code '%c' for fixed-point:" msgstr "" -#: config/avr/avr.cc:3340 +#: config/avr/avr.cc:3937 msgid "internal compiler error. Unknown mode:" msgstr "" -#: config/avr/avr.cc:4215 config/avr/avr.cc:5159 config/avr/avr.cc:5606 +#: config/avr/avr.cc:4806 config/avr/avr.cc:5749 config/avr/avr.cc:6196 msgid "invalid insn:" msgstr "" -#: config/avr/avr.cc:4269 config/avr/avr.cc:4381 config/avr/avr.cc:4439 -#: config/avr/avr.cc:4491 config/avr/avr.cc:4510 config/avr/avr.cc:4702 -#: config/avr/avr.cc:5010 config/avr/avr.cc:5295 config/avr/avr.cc:5499 -#: config/avr/avr.cc:5663 config/avr/avr.cc:5756 config/avr/avr.cc:5955 +#: config/avr/avr.cc:4860 config/avr/avr.cc:4971 config/avr/avr.cc:5029 +#: config/avr/avr.cc:5081 config/avr/avr.cc:5100 config/avr/avr.cc:5292 +#: config/avr/avr.cc:5600 config/avr/avr.cc:5885 config/avr/avr.cc:6089 +#: config/avr/avr.cc:6253 config/avr/avr.cc:6346 config/avr/avr.cc:6544 msgid "incorrect insn:" msgstr "" -#: config/avr/avr.cc:4526 config/avr/avr.cc:4801 config/avr/avr.cc:5081 -#: config/avr/avr.cc:5367 config/avr/avr.cc:5545 config/avr/avr.cc:5812 -#: config/avr/avr.cc:6013 +#: config/avr/avr.cc:5116 config/avr/avr.cc:5391 config/avr/avr.cc:5671 +#: config/avr/avr.cc:5957 config/avr/avr.cc:6135 config/avr/avr.cc:6402 +#: config/avr/avr.cc:6602 msgid "unknown move insn:" msgstr "" -#: config/avr/avr.cc:6621 +#: config/avr/avr.cc:7369 msgid "bad shift insn:" msgstr "" -#: config/avr/avr.cc:6729 config/avr/avr.cc:7212 config/avr/avr.cc:7629 +#: config/avr/avr.cc:7477 config/avr/avr.cc:7960 config/avr/avr.cc:8377 msgid "internal compiler error. Incorrect shift:" msgstr "" -#: config/avr/avr.cc:9283 +#: config/avr/avr.cc:10201 msgid "unsupported fixed-point conversion" msgstr "" -#: config/avr/avr.cc:10665 +#: config/avr/avr.cc:11576 msgid "variable" msgstr "" -#: config/avr/avr.cc:10670 +#: config/avr/avr.cc:11581 msgid "function parameter" msgstr "" -#: config/avr/avr.cc:10675 +#: config/avr/avr.cc:11586 msgid "structure field" msgstr "" -#: config/avr/avr.cc:10681 +#: config/avr/avr.cc:11592 msgid "return type of function" msgstr "" -#: config/avr/avr.cc:10686 +#: config/avr/avr.cc:11597 msgid "pointer" msgstr "" @@ -21481,20 +21594,20 @@ msgstr "" msgid "invalid const_double operand" msgstr "" -#: config/bpf/bpf.cc:884 +#: config/bpf/bpf.cc:894 msgid "invalid address in operand" msgstr "" #. Fallthrough. -#: config/bpf/bpf.cc:891 +#: config/bpf/bpf.cc:901 msgid "unsupported operand" msgstr "" #. Format punctuators via %s to avoid -Wformat-diag. #: config/cris/cris.cc:779 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108 #: final.cc:3187 final.cc:3189 fold-const.cc:348 gcc.cc:6261 gcc.cc:6275 -#: rtl-error.cc:101 toplev.cc:317 cp/logic.cc:312 cp/logic.cc:314 -#: cp/typeck.cc:7750 d/d-convert.cc:237 go/go-gcc-diagnostics.cc:28 +#: rtl-error.cc:101 toplev.cc:319 cp/logic.cc:312 cp/logic.cc:314 +#: cp/typeck.cc:7751 d/d-convert.cc:237 go/go-gcc-diagnostics.cc:28 #: go/go-gcc-diagnostics.cc:37 go/go-gcc-diagnostics.cc:45 #: go/go-gcc-diagnostics.cc:53 lto/lto-object.cc:180 lto/lto-object.cc:277 #: lto/lto-object.cc:334 lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:182 @@ -21708,25 +21821,25 @@ msgstr "" msgid "bad output_condmove_single operand" msgstr "" -#: config/gcn/gcn.cc:7031 config/gcn/gcn.cc:7051 config/gcn/gcn.cc:7055 -#: config/gcn/gcn.cc:7391 config/gcn/gcn.cc:7402 config/gcn/gcn.cc:7405 +#: config/gcn/gcn.cc:7093 config/gcn/gcn.cc:7113 config/gcn/gcn.cc:7117 +#: config/gcn/gcn.cc:7453 config/gcn/gcn.cc:7464 config/gcn/gcn.cc:7467 #, c-format msgid "bad ADDR_SPACE_GLOBAL address" msgstr "" -#: config/gcn/gcn.cc:7171 config/gcn/gcn.cc:7194 config/gcn/gcn.cc:7226 -#: config/gcn/gcn.cc:7242 config/gcn/gcn.cc:7257 config/gcn/gcn.cc:7276 -#: config/gcn/gcn.cc:7340 config/gcn/gcn.cc:7536 config/gcn/gcn.cc:7651 +#: config/gcn/gcn.cc:7233 config/gcn/gcn.cc:7256 config/gcn/gcn.cc:7288 +#: config/gcn/gcn.cc:7304 config/gcn/gcn.cc:7319 config/gcn/gcn.cc:7338 +#: config/gcn/gcn.cc:7402 config/gcn/gcn.cc:7598 config/gcn/gcn.cc:7713 #, c-format msgid "invalid operand %%xn code" msgstr "" -#: config/gcn/gcn.cc:7639 +#: config/gcn/gcn.cc:7701 #, c-format msgid "operand %%xn code invalid for QImode" msgstr "" -#: config/gcn/gcn.cc:7727 +#: config/gcn/gcn.cc:7789 #, c-format msgid "invalid fp constant" msgstr "" @@ -21738,122 +21851,122 @@ msgstr "" msgid "Expected register or constant integer." msgstr "" -#: config/i386/i386.cc:12990 +#: config/i386/i386.cc:13011 #, c-format msgid "invalid UNSPEC as operand" msgstr "" -#: config/i386/i386.cc:13529 +#: config/i386/i386.cc:13550 #, c-format msgid "invalid use of register '%s'" msgstr "" -#: config/i386/i386.cc:13534 +#: config/i386/i386.cc:13555 #, c-format msgid "invalid use of asm flag output" msgstr "" -#: config/i386/i386.cc:13767 +#: config/i386/i386.cc:13788 #, c-format msgid "invalid operand size for operand code 'O'" msgstr "" -#: config/i386/i386.cc:13802 +#: config/i386/i386.cc:13823 #, c-format msgid "invalid operand size for operand code 'z'" msgstr "" -#: config/i386/i386.cc:13877 +#: config/i386/i386.cc:13898 #, c-format msgid "invalid operand type used with operand code '%c'" msgstr "" -#: config/i386/i386.cc:13882 +#: config/i386/i386.cc:13903 #, c-format msgid "invalid operand size for operand code '%c'" msgstr "" -#: config/i386/i386.cc:13960 +#: config/i386/i386.cc:13981 #, c-format msgid "operand is not a condition code, invalid operand code 'Y'" msgstr "" -#: config/i386/i386.cc:14039 +#: config/i386/i386.cc:14060 #, c-format msgid "operand is not a condition code, invalid operand code 'D'" msgstr "" -#: config/i386/i386.cc:14057 +#: config/i386/i386.cc:14078 #, c-format msgid "operand is not a condition code, invalid operand code '%c'" msgstr "" -#: config/i386/i386.cc:14070 +#: config/i386/i386.cc:14091 #, c-format msgid "" "operand is not an offsettable memory reference, invalid operand code 'H'" msgstr "" -#: config/i386/i386.cc:14085 +#: config/i386/i386.cc:14106 #, c-format msgid "operand is not an integer, invalid operand code 'K'" msgstr "" -#: config/i386/i386.cc:14113 +#: config/i386/i386.cc:14134 #, c-format msgid "operand is not a specific integer, invalid operand code 'r'" msgstr "" -#: config/i386/i386.cc:14131 +#: config/i386/i386.cc:14152 #, c-format msgid "operand is not an integer, invalid operand code 'R'" msgstr "" -#: config/i386/i386.cc:14154 +#: config/i386/i386.cc:14175 #, c-format msgid "operand is not a specific integer, invalid operand code 'R'" msgstr "" -#: config/i386/i386.cc:14258 +#: config/i386/i386.cc:14279 #, c-format msgid "invalid operand code '%c'" msgstr "" -#: config/i386/i386.cc:14320 config/i386/i386.cc:14709 +#: config/i386/i386.cc:14341 config/i386/i386.cc:14730 #, c-format msgid "invalid constraints for operand" msgstr "" -#: config/i386/i386.cc:14421 +#: config/i386/i386.cc:14442 #, c-format msgid "invalid vector immediate" msgstr "" -#: config/i386/i386.cc:17541 +#: config/i386/i386.cc:17562 msgid "unknown insn mode" msgstr "" -#: config/i386/i386.cc:23578 +#: config/i386/i386.cc:23599 msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:23581 +#: config/i386/i386.cc:23602 msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:23584 +#: config/i386/i386.cc:23605 msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:23587 +#: config/i386/i386.cc:23608 msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:23625 config/i386/i386.cc:23650 +#: config/i386/i386.cc:23646 config/i386/i386.cc:23671 msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:23628 config/i386/i386.cc:23654 +#: config/i386/i386.cc:23649 config/i386/i386.cc:23675 msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>" msgstr "" @@ -21884,7 +21997,7 @@ msgstr "" msgid "invalid %%P operand" msgstr "" -#: config/iq2000/iq2000.cc:3131 config/rs6000/rs6000.cc:14298 +#: config/iq2000/iq2000.cc:3131 config/rs6000/rs6000.cc:14250 #, c-format msgid "invalid %%p value" msgstr "" @@ -21911,65 +22024,65 @@ msgstr "" msgid "invalid addressing mode" msgstr "" -#: config/loongarch/loongarch.cc:5945 config/loongarch/loongarch.cc:5967 -#: config/loongarch/loongarch.cc:6355 config/mips/mips.cc:9233 -#: config/mips/mips.cc:9260 config/mips/mips.cc:9443 +#: config/loongarch/loongarch.cc:5880 config/loongarch/loongarch.cc:5902 +#: config/loongarch/loongarch.cc:6303 config/mips/mips.cc:9239 +#: config/mips/mips.cc:9266 config/mips/mips.cc:9449 #, c-format msgid "'%%%c' is not a valid operand prefix" msgstr "" -#: config/loongarch/loongarch.cc:6204 config/loongarch/loongarch.cc:6224 -#: config/loongarch/loongarch.cc:6270 config/loongarch/loongarch.cc:6277 -#: config/loongarch/loongarch.cc:6312 config/loongarch/loongarch.cc:6315 -#: config/loongarch/loongarch.cc:6327 config/loongarch/loongarch.cc:6334 -#: config/loongarch/loongarch.cc:6344 config/loongarch/loongarch.cc:6347 -#: config/loongarch/loongarch.cc:6368 config/loongarch/loongarch.cc:6375 -#: config/loongarch/loongarch.cc:6402 config/loongarch/loongarch.cc:6413 -#: config/loongarch/loongarch.cc:6428 config/loongarch/loongarch.cc:6437 -#: config/mips/mips.cc:9332 config/mips/mips.cc:9339 config/mips/mips.cc:9346 -#: config/mips/mips.cc:9353 config/mips/mips.cc:9366 config/mips/mips.cc:9373 -#: config/mips/mips.cc:9383 config/mips/mips.cc:9386 config/mips/mips.cc:9398 -#: config/mips/mips.cc:9401 config/mips/mips.cc:9461 config/mips/mips.cc:9468 -#: config/mips/mips.cc:9489 config/mips/mips.cc:9504 config/mips/mips.cc:9523 -#: config/mips/mips.cc:9532 config/riscv/riscv.cc:5605 -#: config/riscv/riscv.cc:5980 config/riscv/riscv.cc:5986 -#: config/riscv/riscv.cc:6002 config/riscv/riscv.cc:6013 +#: config/loongarch/loongarch.cc:6140 config/loongarch/loongarch.cc:6160 +#: config/loongarch/loongarch.cc:6206 config/loongarch/loongarch.cc:6213 +#: config/loongarch/loongarch.cc:6260 config/loongarch/loongarch.cc:6263 +#: config/loongarch/loongarch.cc:6275 config/loongarch/loongarch.cc:6282 +#: config/loongarch/loongarch.cc:6292 config/loongarch/loongarch.cc:6295 +#: config/loongarch/loongarch.cc:6316 config/loongarch/loongarch.cc:6323 +#: config/loongarch/loongarch.cc:6350 config/loongarch/loongarch.cc:6361 +#: config/loongarch/loongarch.cc:6376 config/loongarch/loongarch.cc:6385 +#: config/mips/mips.cc:9338 config/mips/mips.cc:9345 config/mips/mips.cc:9352 +#: config/mips/mips.cc:9359 config/mips/mips.cc:9372 config/mips/mips.cc:9379 +#: config/mips/mips.cc:9389 config/mips/mips.cc:9392 config/mips/mips.cc:9404 +#: config/mips/mips.cc:9407 config/mips/mips.cc:9467 config/mips/mips.cc:9474 +#: config/mips/mips.cc:9495 config/mips/mips.cc:9510 config/mips/mips.cc:9529 +#: config/mips/mips.cc:9538 config/riscv/riscv.cc:5918 +#: config/riscv/riscv.cc:6293 config/riscv/riscv.cc:6299 +#: config/riscv/riscv.cc:6315 config/riscv/riscv.cc:6326 #, c-format msgid "invalid use of '%%%c'" msgstr "" -#: config/m32r/m32r.cc:2145 +#: config/m32r/m32r.cc:2146 msgid "bad insn for 'A'" msgstr "" -#: config/m32r/m32r.cc:2192 +#: config/m32r/m32r.cc:2193 #, c-format msgid "invalid operand to %%T/%%B code" msgstr "" -#: config/m32r/m32r.cc:2215 +#: config/m32r/m32r.cc:2216 #, c-format msgid "invalid operand to %%N code" msgstr "" -#: config/m32r/m32r.cc:2248 +#: config/m32r/m32r.cc:2249 msgid "pre-increment address is not a register" msgstr "" -#: config/m32r/m32r.cc:2255 +#: config/m32r/m32r.cc:2256 msgid "pre-decrement address is not a register" msgstr "" -#: config/m32r/m32r.cc:2262 +#: config/m32r/m32r.cc:2263 msgid "post-increment address is not a register" msgstr "" -#: config/m32r/m32r.cc:2337 config/m32r/m32r.cc:2352 -#: config/rs6000/rs6000.cc:21023 +#: config/m32r/m32r.cc:2338 config/m32r/m32r.cc:2353 +#: config/rs6000/rs6000.cc:20975 msgid "bad address" msgstr "" -#: config/m32r/m32r.cc:2357 +#: config/m32r/m32r.cc:2358 msgid "lo_sum not of register" msgstr "" @@ -22125,7 +22238,7 @@ msgstr "" msgid "unsupported memory expression:" msgstr "" -#: config/riscv/riscv.cc:5782 +#: config/riscv/riscv.cc:6095 #, c-format msgid "invalid vector operand" msgstr "" @@ -22145,270 +22258,270 @@ msgstr "" msgid "Try running '%s' in the shell to raise its limit.\n" msgstr "" -#: config/rs6000/rs6000.cc:3822 +#: config/rs6000/rs6000.cc:3824 msgid "%<-mvsx%> requires hardware floating point" msgstr "" -#: config/rs6000/rs6000.cc:3830 +#: config/rs6000/rs6000.cc:3832 msgid "%<-mvsx%> needs indexed addressing" msgstr "" -#: config/rs6000/rs6000.cc:3835 +#: config/rs6000/rs6000.cc:3837 msgid "%<-mvsx%> and %<-mno-altivec%> are incompatible" msgstr "" -#: config/rs6000/rs6000.cc:3837 +#: config/rs6000/rs6000.cc:3839 msgid "%<-mno-altivec%> disables vsx" msgstr "" -#: config/rs6000/rs6000.cc:3986 +#: config/rs6000/rs6000.cc:3959 msgid "%<-mquad-memory%> requires 64-bit mode" msgstr "" -#: config/rs6000/rs6000.cc:3989 +#: config/rs6000/rs6000.cc:3962 msgid "%<-mquad-memory-atomic%> requires 64-bit mode" msgstr "" -#: config/rs6000/rs6000.cc:4001 +#: config/rs6000/rs6000.cc:3974 msgid "%<-mquad-memory%> is not available in little endian mode" msgstr "" -#: config/rs6000/rs6000.cc:11388 +#: config/rs6000/rs6000.cc:11340 msgid "bad move" msgstr "" -#: config/rs6000/rs6000.cc:13928 +#: config/rs6000/rs6000.cc:13880 msgid "Bad 128-bit move" msgstr "" -#: config/rs6000/rs6000.cc:14108 +#: config/rs6000/rs6000.cc:14060 #, c-format msgid "invalid %%A value" msgstr "" -#: config/rs6000/rs6000.cc:14117 config/xtensa/xtensa.cc:3015 +#: config/rs6000/rs6000.cc:14069 config/xtensa/xtensa.cc:3015 #, c-format msgid "invalid %%D value" msgstr "" -#: config/rs6000/rs6000.cc:14132 +#: config/rs6000/rs6000.cc:14084 #, c-format msgid "invalid %%e value" msgstr "" -#: config/rs6000/rs6000.cc:14153 +#: config/rs6000/rs6000.cc:14105 #, c-format msgid "invalid %%f value" msgstr "" -#: config/rs6000/rs6000.cc:14162 +#: config/rs6000/rs6000.cc:14114 #, c-format msgid "invalid %%F value" msgstr "" -#: config/rs6000/rs6000.cc:14171 +#: config/rs6000/rs6000.cc:14123 #, c-format msgid "invalid %%G value" msgstr "" -#: config/rs6000/rs6000.cc:14206 +#: config/rs6000/rs6000.cc:14158 #, c-format msgid "invalid %%j code" msgstr "" -#: config/rs6000/rs6000.cc:14216 +#: config/rs6000/rs6000.cc:14168 #, c-format msgid "invalid %%J code" msgstr "" -#: config/rs6000/rs6000.cc:14226 +#: config/rs6000/rs6000.cc:14178 #, c-format msgid "invalid %%k value" msgstr "" -#: config/rs6000/rs6000.cc:14241 config/xtensa/xtensa.cc:3052 +#: config/rs6000/rs6000.cc:14193 config/xtensa/xtensa.cc:3052 #, c-format msgid "invalid %%K value" msgstr "" -#: config/rs6000/rs6000.cc:14288 +#: config/rs6000/rs6000.cc:14240 #, c-format msgid "invalid %%O value" msgstr "" -#: config/rs6000/rs6000.cc:14335 +#: config/rs6000/rs6000.cc:14287 #, c-format msgid "invalid %%q value" msgstr "" -#: config/rs6000/rs6000.cc:14377 +#: config/rs6000/rs6000.cc:14329 #, c-format msgid "invalid %%t value" msgstr "" -#: config/rs6000/rs6000.cc:14394 +#: config/rs6000/rs6000.cc:14346 #, c-format msgid "invalid %%T value" msgstr "" -#: config/rs6000/rs6000.cc:14406 +#: config/rs6000/rs6000.cc:14358 #, c-format msgid "invalid %%u value" msgstr "" -#: config/rs6000/rs6000.cc:14420 config/xtensa/xtensa.cc:3027 +#: config/rs6000/rs6000.cc:14372 config/xtensa/xtensa.cc:3027 #, c-format msgid "invalid %%v value" msgstr "" -#: config/rs6000/rs6000.cc:14470 +#: config/rs6000/rs6000.cc:14422 #, c-format msgid "invalid %%V value" msgstr "" -#: config/rs6000/rs6000.cc:14486 config/xtensa/xtensa.cc:3073 +#: config/rs6000/rs6000.cc:14438 config/xtensa/xtensa.cc:3073 #, c-format msgid "invalid %%x value" msgstr "" -#: config/rs6000/rs6000.cc:14543 +#: config/rs6000/rs6000.cc:14495 #, c-format msgid "invalid %%z value" msgstr "" -#: config/rs6000/rs6000.cc:14612 +#: config/rs6000/rs6000.cc:14564 #, c-format msgid "invalid %%y value, try using the 'Z' constraint" msgstr "" -#: config/rs6000/rs6000.cc:15554 +#: config/rs6000/rs6000.cc:15506 msgid "Invalid mixing of IEEE 128-bit and IBM 128-bit floating point types" msgstr "" -#: config/rs6000/rs6000.cc:24424 +#: config/rs6000/rs6000.cc:24376 msgid "AltiVec argument passed to unprototyped function" msgstr "" -#: config/rs6000/rs6000.cc:28047 +#: config/rs6000/rs6000.cc:27991 msgid "Could not generate addis value for fusion" msgstr "" -#: config/rs6000/rs6000.cc:28116 +#: config/rs6000/rs6000.cc:28060 msgid "Unable to generate load/store offset for fusion" msgstr "" -#: config/rs6000/rs6000.cc:28192 +#: config/rs6000/rs6000.cc:28136 msgid "Bad GPR fusion" msgstr "" -#: config/rs6000/rs6000.cc:28794 +#: config/rs6000/rs6000.cc:28738 msgid "invalid conversion from type %<__vector_quad%>" msgstr "" -#: config/rs6000/rs6000.cc:28796 +#: config/rs6000/rs6000.cc:28740 msgid "invalid conversion to type %<__vector_quad%>" msgstr "" -#: config/rs6000/rs6000.cc:28798 +#: config/rs6000/rs6000.cc:28742 msgid "invalid conversion from type %<__vector_pair%>" msgstr "" -#: config/rs6000/rs6000.cc:28800 +#: config/rs6000/rs6000.cc:28744 msgid "invalid conversion to type %<__vector_pair%>" msgstr "" -#: config/s390/s390.cc:8413 +#: config/s390/s390.cc:8415 #, c-format msgid "symbolic memory references are only supported on z10 or later" msgstr "" -#: config/s390/s390.cc:8424 +#: config/s390/s390.cc:8426 #, c-format msgid "cannot decompose address" msgstr "" -#: config/s390/s390.cc:8506 +#: config/s390/s390.cc:8508 #, c-format msgid "invalid comparison operator for 'E' output modifier" msgstr "" -#: config/s390/s390.cc:8529 +#: config/s390/s390.cc:8531 #, c-format msgid "invalid reference for 'J' output modifier" msgstr "" -#: config/s390/s390.cc:8547 +#: config/s390/s390.cc:8549 #, c-format msgid "invalid address for 'O' output modifier" msgstr "" -#: config/s390/s390.cc:8569 +#: config/s390/s390.cc:8571 #, c-format msgid "invalid address for 'R' output modifier" msgstr "" -#: config/s390/s390.cc:8587 +#: config/s390/s390.cc:8589 #, c-format msgid "memory reference expected for 'S' output modifier" msgstr "" -#: config/s390/s390.cc:8597 +#: config/s390/s390.cc:8599 #, c-format msgid "invalid address for 'S' output modifier" msgstr "" -#: config/s390/s390.cc:8618 +#: config/s390/s390.cc:8620 #, c-format msgid "register or memory expression expected for 'N' output modifier" msgstr "" -#: config/s390/s390.cc:8629 +#: config/s390/s390.cc:8631 #, c-format msgid "register or memory expression expected for 'M' output modifier" msgstr "" -#: config/s390/s390.cc:8738 config/s390/s390.cc:8759 +#: config/s390/s390.cc:8740 config/s390/s390.cc:8761 #, c-format msgid "invalid constant for output modifier '%c'" msgstr "" -#: config/s390/s390.cc:8756 +#: config/s390/s390.cc:8758 #, c-format msgid "invalid constant - try using an output modifier" msgstr "" -#: config/s390/s390.cc:8793 +#: config/s390/s390.cc:8795 #, c-format msgid "invalid constant vector for output modifier '%c'" msgstr "" -#: config/s390/s390.cc:8800 +#: config/s390/s390.cc:8802 #, c-format msgid "invalid expression - try using an output modifier" msgstr "" -#: config/s390/s390.cc:8803 +#: config/s390/s390.cc:8805 #, c-format msgid "invalid expression for output modifier '%c'" msgstr "" -#: config/s390/s390.cc:12652 +#: config/s390/s390.cc:12664 msgid "vector argument passed to unprototyped function" msgstr "" -#: config/s390/s390.cc:17089 +#: config/s390/s390.cc:17110 msgid "types differ in signedness" msgstr "" -#: config/s390/s390.cc:17099 +#: config/s390/s390.cc:17120 msgid "binary operator does not support two vector bool operands" msgstr "" -#: config/s390/s390.cc:17102 +#: config/s390/s390.cc:17123 msgid "binary operator does not support vector bool operand" msgstr "" -#: config/s390/s390.cc:17110 +#: config/s390/s390.cc:17131 msgid "" "binary operator does not support mixing vector bool with floating point " "vector operands" @@ -22528,23 +22641,23 @@ msgstr "" msgid "illegal operand detected" msgstr "" -#: config/visium/visium.cc:3366 +#: config/visium/visium.cc:3367 msgid "illegal operand " msgstr "" -#: config/visium/visium.cc:3417 +#: config/visium/visium.cc:3418 msgid "illegal operand address (1)" msgstr "" -#: config/visium/visium.cc:3424 +#: config/visium/visium.cc:3425 msgid "illegal operand address (2)" msgstr "" -#: config/visium/visium.cc:3439 +#: config/visium/visium.cc:3440 msgid "illegal operand address (3)" msgstr "" -#: config/visium/visium.cc:3447 +#: config/visium/visium.cc:3448 msgid "illegal operand address (4)" msgstr "" @@ -22573,15 +22686,15 @@ msgstr "" msgid "address offset not a constant" msgstr "" -#: c/c-objc-common.cc:226 +#: c/c-objc-common.cc:227 msgid "{erroneous}" msgstr "" -#: c/c-objc-common.cc:267 +#: c/c-objc-common.cc:268 msgid "aka" msgstr "" -#: c/c-objc-common.cc:359 +#: c/c-objc-common.cc:360 msgid "({anonymous})" msgstr "" @@ -22594,32 +22707,32 @@ msgstr "" #. ; #. <~~~~~~~~~ declaration ~~~~~~~~~~> #. Use c_parser_require to get an error with a fix-it hint. -#: c/c-parser.cc:2934 c/c-parser.cc:3059 c/c-parser.cc:3073 c/c-parser.cc:7008 -#: c/c-parser.cc:7763 c/c-parser.cc:8219 c/c-parser.cc:8406 c/c-parser.cc:8439 -#: c/c-parser.cc:8710 c/c-parser.cc:13147 c/c-parser.cc:13182 -#: c/c-parser.cc:13213 c/c-parser.cc:13260 c/c-parser.cc:13441 -#: c/c-parser.cc:14274 c/c-parser.cc:14349 c/c-parser.cc:14392 -#: c/c-parser.cc:21252 c/c-parser.cc:21332 c/c-parser.cc:21661 -#: c/c-parser.cc:21687 c/c-parser.cc:21710 c/c-parser.cc:22246 -#: c/c-parser.cc:22290 c/gimple-parser.cc:411 c/gimple-parser.cc:452 +#: c/c-parser.cc:2934 c/c-parser.cc:3059 c/c-parser.cc:3073 c/c-parser.cc:7006 +#: c/c-parser.cc:7761 c/c-parser.cc:8217 c/c-parser.cc:8404 c/c-parser.cc:8437 +#: c/c-parser.cc:8708 c/c-parser.cc:13166 c/c-parser.cc:13201 +#: c/c-parser.cc:13232 c/c-parser.cc:13279 c/c-parser.cc:13460 +#: c/c-parser.cc:14293 c/c-parser.cc:14368 c/c-parser.cc:14411 +#: c/c-parser.cc:21325 c/c-parser.cc:21405 c/c-parser.cc:21734 +#: c/c-parser.cc:21760 c/c-parser.cc:21783 c/c-parser.cc:22319 +#: c/c-parser.cc:22363 c/gimple-parser.cc:411 c/gimple-parser.cc:452 #: c/gimple-parser.cc:461 c/gimple-parser.cc:670 c/gimple-parser.cc:2351 #: c/gimple-parser.cc:2388 c/gimple-parser.cc:2467 c/gimple-parser.cc:2494 -#: c/c-parser.cc:3888 c/c-parser.cc:4079 c/c-parser.cc:4114 c/c-parser.cc:13434 +#: c/c-parser.cc:3888 c/c-parser.cc:4079 c/c-parser.cc:4114 c/c-parser.cc:13453 #: c/gimple-parser.cc:2158 c/gimple-parser.cc:2215 cp/parser.cc:15847 -#: cp/parser.cc:33792 cp/parser.cc:34431 +#: cp/parser.cc:33809 cp/parser.cc:34448 #, gcc-internal-format msgid "expected %<;%>" msgstr "" #: c/c-parser.cc:3569 c/c-parser.cc:4679 c/c-parser.cc:4874 c/c-parser.cc:4932 #: c/c-parser.cc:4990 c/c-parser.cc:5373 c/c-parser.cc:5396 c/c-parser.cc:5405 -#: c/c-parser.cc:5456 c/c-parser.cc:5465 c/c-parser.cc:10147 -#: c/c-parser.cc:10215 c/c-parser.cc:10737 c/c-parser.cc:10763 -#: c/c-parser.cc:10797 c/c-parser.cc:10909 c/c-parser.cc:11728 -#: c/c-parser.cc:13548 c/c-parser.cc:16132 c/c-parser.cc:16867 -#: c/c-parser.cc:16926 c/c-parser.cc:16981 c/c-parser.cc:18840 -#: c/c-parser.cc:18960 c/c-parser.cc:20345 c/c-parser.cc:21752 -#: c/c-parser.cc:22254 c/c-parser.cc:25578 c/c-parser.cc:25660 +#: c/c-parser.cc:5456 c/c-parser.cc:5465 c/c-parser.cc:10145 +#: c/c-parser.cc:10213 c/c-parser.cc:10735 c/c-parser.cc:10761 +#: c/c-parser.cc:10795 c/c-parser.cc:10907 c/c-parser.cc:11726 +#: c/c-parser.cc:13567 c/c-parser.cc:16181 c/c-parser.cc:16916 +#: c/c-parser.cc:16975 c/c-parser.cc:17030 c/c-parser.cc:18889 +#: c/c-parser.cc:19009 c/c-parser.cc:20418 c/c-parser.cc:21825 +#: c/c-parser.cc:22327 c/c-parser.cc:25651 c/c-parser.cc:25733 #: c/gimple-parser.cc:195 c/gimple-parser.cc:198 c/gimple-parser.cc:546 #: c/gimple-parser.cc:580 c/gimple-parser.cc:585 c/gimple-parser.cc:754 #: c/gimple-parser.cc:851 c/gimple-parser.cc:1089 c/gimple-parser.cc:1115 @@ -22627,16 +22740,16 @@ msgstr "" #: c/gimple-parser.cc:1506 c/gimple-parser.cc:1522 c/gimple-parser.cc:1578 #: c/gimple-parser.cc:1605 c/gimple-parser.cc:1635 c/gimple-parser.cc:1661 #: c/gimple-parser.cc:1868 c/gimple-parser.cc:2080 c/gimple-parser.cc:2100 -#: c/gimple-parser.cc:2261 c/gimple-parser.cc:2424 c/c-parser.cc:8662 -#: cp/parser.cc:34479 +#: c/gimple-parser.cc:2261 c/gimple-parser.cc:2424 c/c-parser.cc:8660 +#: cp/parser.cc:34496 #, gcc-internal-format msgid "expected %<)%>" msgstr "" -#: c/c-parser.cc:4768 c/c-parser.cc:5516 c/c-parser.cc:5878 c/c-parser.cc:5896 -#: c/c-parser.cc:5897 c/c-parser.cc:6343 c/c-parser.cc:6387 c/c-parser.cc:8761 -#: c/c-parser.cc:10900 c/c-parser.cc:12160 c/c-parser.cc:12531 -#: c/c-parser.cc:15477 c/gimple-parser.cc:1844 cp/parser.cc:34443 +#: c/c-parser.cc:4768 c/c-parser.cc:5516 c/c-parser.cc:5876 c/c-parser.cc:5894 +#: c/c-parser.cc:5895 c/c-parser.cc:6341 c/c-parser.cc:6385 c/c-parser.cc:8759 +#: c/c-parser.cc:10898 c/c-parser.cc:12179 c/c-parser.cc:12550 +#: c/c-parser.cc:15496 c/gimple-parser.cc:1844 cp/parser.cc:34460 #, gcc-internal-format msgid "expected %<]%>" msgstr "" @@ -22646,113 +22759,113 @@ msgid "expected %<;%>, %<,%> or %<)%>" msgstr "" #. Look for the two `(' tokens. -#: c/c-parser.cc:5425 c/c-parser.cc:5430 c/c-parser.cc:16115 -#: c/c-parser.cc:16956 c/c-parser.cc:24722 c/c-parser.cc:25386 -#: c/c-parser.cc:25603 c/gimple-parser.cc:180 c/gimple-parser.cc:493 +#: c/c-parser.cc:5425 c/c-parser.cc:5430 c/c-parser.cc:16164 +#: c/c-parser.cc:17005 c/c-parser.cc:24795 c/c-parser.cc:25459 +#: c/c-parser.cc:25676 c/gimple-parser.cc:180 c/gimple-parser.cc:493 #: c/gimple-parser.cc:532 c/gimple-parser.cc:564 c/gimple-parser.cc:821 #: c/gimple-parser.cc:1083 c/gimple-parser.cc:1109 c/gimple-parser.cc:1236 #: c/gimple-parser.cc:1371 c/gimple-parser.cc:1496 c/gimple-parser.cc:1601 #: c/gimple-parser.cc:1619 c/gimple-parser.cc:1654 c/gimple-parser.cc:2049 #: c/gimple-parser.cc:2060 c/gimple-parser.cc:2066 c/gimple-parser.cc:2249 -#: c/gimple-parser.cc:2421 c/c-parser.cc:15896 cp/parser.cc:34434 +#: c/gimple-parser.cc:2421 c/c-parser.cc:15945 cp/parser.cc:34451 #, gcc-internal-format msgid "expected %<(%>" msgstr "" -#: c/c-parser.cc:5874 c/c-parser.cc:5876 c/c-parser.cc:15382 cp/parser.cc:34446 -#: cp/parser.cc:38315 go/gofrontend/embed.cc:440 +#: c/c-parser.cc:5872 c/c-parser.cc:5874 c/c-parser.cc:15401 cp/parser.cc:34463 +#: cp/parser.cc:38332 go/gofrontend/embed.cc:440 #, gcc-internal-format msgid "expected %<[%>" msgstr "" -#: c/c-parser.cc:6524 c/c-parser.cc:13777 c/c-parser.cc:21227 -#: c/c-parser.cc:21313 c/c-parser.cc:22074 c/c-parser.cc:23034 -#: c/c-parser.cc:26846 c/gimple-parser.cc:404 c/gimple-parser.cc:2427 -#: c/c-parser.cc:3875 c/c-parser.cc:4103 c/c-parser.cc:13329 cp/parser.cc:21607 -#: cp/parser.cc:34440 go/gofrontend/embed.cc:371 +#: c/c-parser.cc:6522 c/c-parser.cc:13796 c/c-parser.cc:21300 +#: c/c-parser.cc:21386 c/c-parser.cc:22147 c/c-parser.cc:23107 +#: c/c-parser.cc:26919 c/gimple-parser.cc:404 c/gimple-parser.cc:2427 +#: c/c-parser.cc:3875 c/c-parser.cc:4103 c/c-parser.cc:13348 cp/parser.cc:21607 +#: cp/parser.cc:34457 go/gofrontend/embed.cc:371 #, gcc-internal-format msgid "expected %<{%>" msgstr "" -#: c/c-parser.cc:7370 c/c-parser.cc:7379 c/c-parser.cc:9210 c/c-parser.cc:10352 -#: c/c-parser.cc:13541 c/c-parser.cc:13938 c/c-parser.cc:14002 -#: c/c-parser.cc:15459 c/c-parser.cc:16547 c/c-parser.cc:16784 -#: c/c-parser.cc:17337 c/c-parser.cc:17440 c/c-parser.cc:17981 -#: c/c-parser.cc:18417 c/c-parser.cc:18493 c/c-parser.cc:18610 -#: c/c-parser.cc:18682 c/c-parser.cc:24589 c/c-parser.cc:25443 -#: c/c-parser.cc:25502 c/gimple-parser.cc:587 c/gimple-parser.cc:892 -#: c/gimple-parser.cc:2475 c/gimple-parser.cc:2502 c/c-parser.cc:8669 -#: c/c-parser.cc:16040 c/c-parser.cc:17445 cp/parser.cc:34473 -#: cp/parser.cc:36176 cp/parser.cc:39219 cp/parser.cc:40112 +#: c/c-parser.cc:7368 c/c-parser.cc:7377 c/c-parser.cc:9208 c/c-parser.cc:10350 +#: c/c-parser.cc:13560 c/c-parser.cc:13957 c/c-parser.cc:14021 +#: c/c-parser.cc:15478 c/c-parser.cc:16596 c/c-parser.cc:16833 +#: c/c-parser.cc:17386 c/c-parser.cc:17489 c/c-parser.cc:18030 +#: c/c-parser.cc:18466 c/c-parser.cc:18542 c/c-parser.cc:18659 +#: c/c-parser.cc:18731 c/c-parser.cc:24662 c/c-parser.cc:25516 +#: c/c-parser.cc:25575 c/gimple-parser.cc:587 c/gimple-parser.cc:892 +#: c/gimple-parser.cc:2475 c/gimple-parser.cc:2502 c/c-parser.cc:8667 +#: c/c-parser.cc:16089 c/c-parser.cc:17494 cp/parser.cc:34490 +#: cp/parser.cc:36193 cp/parser.cc:39263 cp/parser.cc:40156 #: go/gofrontend/embed.cc:404 #, gcc-internal-format msgid "expected %<:%>" msgstr "" -#: c/c-parser.cc:8201 cp/parser.cc:34360 +#: c/c-parser.cc:8199 cp/parser.cc:34377 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:10110 c/c-parser.cc:10303 c/c-parser.cc:10787 -#: c/c-parser.cc:10830 c/c-parser.cc:10971 c/c-parser.cc:11718 -#: c/c-parser.cc:16961 c/c-parser.cc:18562 c/gimple-parser.cc:1086 +#: c/c-parser.cc:10108 c/c-parser.cc:10301 c/c-parser.cc:10785 +#: c/c-parser.cc:10828 c/c-parser.cc:10969 c/c-parser.cc:11716 +#: c/c-parser.cc:17010 c/c-parser.cc:18611 c/gimple-parser.cc:1086 #: c/gimple-parser.cc:1112 c/gimple-parser.cc:1240 c/gimple-parser.cc:1243 -#: c/gimple-parser.cc:1623 c/gimple-parser.cc:1629 cp/parser.cc:33790 -#: cp/parser.cc:34449 +#: c/gimple-parser.cc:1623 c/gimple-parser.cc:1629 cp/parser.cc:33807 +#: cp/parser.cc:34466 #, gcc-internal-format msgid "expected %<,%>" msgstr "" -#: c/c-parser.cc:10681 +#: c/c-parser.cc:10679 msgid "expected %<.%>" msgstr "" -#: c/c-parser.cc:13000 c/c-parser.cc:13032 c/c-parser.cc:13272 -#: cp/parser.cc:36750 cp/parser.cc:36771 +#: c/c-parser.cc:13019 c/c-parser.cc:13051 c/c-parser.cc:13291 +#: cp/parser.cc:36767 cp/parser.cc:36788 #, gcc-internal-format msgid "expected %<@end%>" msgstr "" -#: c/c-parser.cc:13690 c/gimple-parser.cc:1411 cp/parser.cc:34458 +#: c/c-parser.cc:13709 c/gimple-parser.cc:1411 cp/parser.cc:34475 #, gcc-internal-format msgid "expected %<>%>" msgstr "" -#: c/c-parser.cc:17535 c/c-parser.cc:18978 cp/parser.cc:34482 +#: c/c-parser.cc:17584 c/c-parser.cc:19027 cp/parser.cc:34499 #, gcc-internal-format msgid "expected %<,%> or %<)%>" msgstr "" #. All following cases are statements with LHS. -#: c/c-parser.cc:18409 c/c-parser.cc:21120 c/c-parser.cc:21167 -#: c/c-parser.cc:21324 c/c-parser.cc:21671 c/c-parser.cc:22233 -#: c/c-parser.cc:24770 c/c-parser.cc:25644 c/gimple-parser.cc:745 -#: c/c-parser.cc:6410 c/c-parser.cc:21244 c/c-parser.cc:21467 -#: cp/parser.cc:34461 cp/parser.cc:43102 cp/parser.cc:43275 +#: c/c-parser.cc:18458 c/c-parser.cc:21193 c/c-parser.cc:21240 +#: c/c-parser.cc:21397 c/c-parser.cc:21744 c/c-parser.cc:22306 +#: c/c-parser.cc:24843 c/c-parser.cc:25717 c/gimple-parser.cc:745 +#: c/c-parser.cc:6408 c/c-parser.cc:21317 c/c-parser.cc:21540 +#: cp/parser.cc:34478 cp/parser.cc:43146 cp/parser.cc:43319 #, gcc-internal-format msgid "expected %<=%>" msgstr "" -#: c/c-parser.cc:21255 c/c-parser.cc:21335 c/c-parser.cc:21688 -#: c/c-parser.cc:22143 c/gimple-parser.cc:1677 c/gimple-parser.cc:1709 -#: c/gimple-parser.cc:1719 c/gimple-parser.cc:2512 cp/parser.cc:34437 -#: cp/parser.cc:36960 +#: c/c-parser.cc:21328 c/c-parser.cc:21408 c/c-parser.cc:21761 +#: c/c-parser.cc:22216 c/gimple-parser.cc:1677 c/gimple-parser.cc:1709 +#: c/gimple-parser.cc:1719 c/gimple-parser.cc:2512 cp/parser.cc:34454 +#: cp/parser.cc:36977 #, gcc-internal-format msgid "expected %<}%>" msgstr "" -#: c/c-parser.cc:21348 cp/parser.cc:43200 +#: c/c-parser.cc:21421 cp/parser.cc:43244 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:23081 c/c-parser.cc:23070 cp/parser.cc:45899 +#: c/c-parser.cc:23154 c/c-parser.cc:23143 cp/parser.cc:45943 #, gcc-internal-format msgid "expected %<#pragma omp section%> or %<}%>" msgstr "" -#: c/c-parser.cc:26210 cp/parser.cc:49854 +#: c/c-parser.cc:26283 cp/parser.cc:49920 msgid "" msgstr "" @@ -22760,7 +22873,7 @@ msgstr "" msgid "(anonymous)" msgstr "" -#: c/gimple-parser.cc:1400 cp/parser.cc:18950 cp/parser.cc:34455 +#: c/gimple-parser.cc:1400 cp/parser.cc:18950 cp/parser.cc:34472 #, gcc-internal-format msgid "expected %<<%>" msgstr "" @@ -22779,17 +22892,17 @@ msgstr "" msgid " after user-defined conversion:" msgstr "" -#: cp/call.cc:8475 cp/pt.cc:2043 cp/pt.cc:26267 +#: cp/call.cc:8475 cp/pt.cc:2043 cp/pt.cc:26288 msgid "candidate is:" msgid_plural "candidates are:" msgstr[0] "" msgstr[1] "" -#: cp/call.cc:13002 cp/call.cc:13428 +#: cp/call.cc:12997 cp/call.cc:13423 msgid "candidate 1:" msgstr "" -#: cp/call.cc:13004 cp/call.cc:13429 +#: cp/call.cc:12999 cp/call.cc:13424 msgid "candidate 2:" msgstr "" @@ -22879,7 +22992,7 @@ msgstr "" msgid "" msgstr "" -#: cp/error.cc:2289 cp/error.cc:3390 c-family/c-pretty-print.cc:2707 +#: cp/error.cc:2289 cp/error.cc:3391 c-family/c-pretty-print.cc:2708 #, gcc-internal-format msgid "" msgstr "" @@ -22894,138 +23007,138 @@ msgstr "" msgid "" msgstr "" -#: cp/error.cc:2909 +#: cp/error.cc:2910 msgid "" msgstr "" -#: cp/error.cc:3062 +#: cp/error.cc:3063 msgid "" msgstr "" -#: cp/error.cc:3101 +#: cp/error.cc:3102 msgid "*this" msgstr "" -#: cp/error.cc:3115 +#: cp/error.cc:3116 msgid "" msgstr "" -#: cp/error.cc:3130 +#: cp/error.cc:3131 msgid "" msgstr "" -#: cp/error.cc:3605 +#: cp/error.cc:3606 msgid "At global scope:" msgstr "" -#: cp/error.cc:3664 +#: cp/error.cc:3665 msgid " inlined from %qD at %r%s:%d:%d%R" msgstr "" -#: cp/error.cc:3669 +#: cp/error.cc:3670 msgid " inlined from %qD at %r%s:%d%R" msgstr "" -#: cp/error.cc:3675 +#: cp/error.cc:3676 msgid " inlined from %qD" msgstr "" -#: cp/error.cc:3702 +#: cp/error.cc:3703 msgid "In static member function %qD" msgstr "" -#: cp/error.cc:3704 +#: cp/error.cc:3705 msgid "In copy constructor %qD" msgstr "" -#: cp/error.cc:3706 +#: cp/error.cc:3707 msgid "In constructor %qD" msgstr "" -#: cp/error.cc:3708 +#: cp/error.cc:3709 msgid "In destructor %qD" msgstr "" -#: cp/error.cc:3710 +#: cp/error.cc:3711 msgid "In lambda function" msgstr "" -#: cp/error.cc:3712 +#: cp/error.cc:3713 msgid "In explicit object member function %qD" msgstr "" -#: cp/error.cc:3714 +#: cp/error.cc:3715 msgid "In member function %qD" msgstr "" -#: cp/error.cc:3717 +#: cp/error.cc:3718 msgid "In function %qD" msgstr "" -#: cp/error.cc:3740 +#: cp/error.cc:3741 #, c-format msgid "%s: In substitution of %qS:\n" msgstr "" -#: cp/error.cc:3741 +#: cp/error.cc:3742 msgid "%s: In instantiation of %q#D:\n" msgstr "" -#: cp/error.cc:3766 cp/error.cc:3922 +#: cp/error.cc:3767 cp/error.cc:3923 msgid "%r%s:%d:%d:%R " msgstr "" -#: cp/error.cc:3769 cp/error.cc:3925 +#: cp/error.cc:3770 cp/error.cc:3926 msgid "%r%s:%d:%R " msgstr "" -#: cp/error.cc:3777 +#: cp/error.cc:3778 #, c-format msgid "recursively required by substitution of %qS\n" msgstr "" -#: cp/error.cc:3778 +#: cp/error.cc:3779 #, c-format msgid "required by substitution of %qS\n" msgstr "" -#: cp/error.cc:3783 +#: cp/error.cc:3784 msgid "recursively required from %q#D\n" msgstr "" -#: cp/error.cc:3784 +#: cp/error.cc:3785 msgid "required from %q#D\n" msgstr "" -#: cp/error.cc:3791 +#: cp/error.cc:3792 msgid "recursively required from here\n" msgstr "" -#: cp/error.cc:3792 +#: cp/error.cc:3793 msgid "required from here\n" msgstr "" -#: cp/error.cc:3846 +#: cp/error.cc:3847 msgid "" "%r%s:%d:%d:%R [ skipping %d instantiation contexts, use -ftemplate-" "backtrace-limit=0 to disable ]\n" msgstr "" -#: cp/error.cc:3852 +#: cp/error.cc:3853 msgid "" "%r%s:%d:%R [ skipping %d instantiation contexts, use -ftemplate-backtrace-" "limit=0 to disable ]\n" msgstr "" -#: cp/error.cc:3906 +#: cp/error.cc:3907 msgid "%r%s:%d:%d:%R in % expansion of %qs" msgstr "" -#: cp/error.cc:3910 +#: cp/error.cc:3911 msgid "%r%s:%d:%R in % expansion of %qs" msgstr "" -#: cp/pt.cc:2041 cp/semantics.cc:6237 +#: cp/pt.cc:2041 cp/semantics.cc:6306 msgid "candidates are:" msgstr "" @@ -23069,52 +23182,52 @@ msgstr "" msgid "source type is not polymorphic" msgstr "" -#: cp/typeck.cc:7441 c/c-typeck.cc:4683 +#: cp/typeck.cc:7442 c/c-typeck.cc:4683 #, gcc-internal-format msgid "wrong type argument to unary minus" msgstr "" -#: cp/typeck.cc:7442 c/c-typeck.cc:4669 +#: cp/typeck.cc:7443 c/c-typeck.cc:4669 #, gcc-internal-format msgid "wrong type argument to unary plus" msgstr "" -#: cp/typeck.cc:7469 c/c-typeck.cc:4728 +#: cp/typeck.cc:7470 c/c-typeck.cc:4728 #, gcc-internal-format msgid "wrong type argument to bit-complement" msgstr "" -#: cp/typeck.cc:7486 c/c-typeck.cc:4736 +#: cp/typeck.cc:7487 c/c-typeck.cc:4736 #, gcc-internal-format msgid "wrong type argument to abs" msgstr "" -#: cp/typeck.cc:7498 c/c-typeck.cc:4758 +#: cp/typeck.cc:7499 c/c-typeck.cc:4758 #, gcc-internal-format msgid "wrong type argument to conjugation" msgstr "" -#: cp/typeck.cc:7522 +#: cp/typeck.cc:7523 msgid "in argument to unary !" msgstr "" -#: cp/typeck.cc:7571 +#: cp/typeck.cc:7572 msgid "no pre-increment operator for type" msgstr "" -#: cp/typeck.cc:7573 +#: cp/typeck.cc:7574 msgid "no post-increment operator for type" msgstr "" -#: cp/typeck.cc:7575 +#: cp/typeck.cc:7576 msgid "no pre-decrement operator for type" msgstr "" -#: cp/typeck.cc:7577 +#: cp/typeck.cc:7578 msgid "no post-decrement operator for type" msgstr "" -#: fortran/arith.cc:1497 +#: fortran/arith.cc:1544 msgid "elemental binary operation" msgstr "" @@ -23132,12 +23245,12 @@ msgstr "" msgid "arguments '%s' and '%s' for intrinsic %s" msgstr "" -#: fortran/check.cc:4429 fortran/intrinsic.cc:4831 +#: fortran/check.cc:4432 fortran/intrinsic.cc:4831 #, c-format msgid "arguments '%s' and '%s' for intrinsic '%s'" msgstr "" -#: fortran/dump-parse-tree.cc:3713 +#: fortran/dump-parse-tree.cc:3731 #, c-format msgid "" "/* Prototypes for external procedures generated from %s\n" @@ -23221,7 +23334,7 @@ msgstr "" msgid "Driving:" msgstr "" -#: fortran/interface.cc:3706 fortran/intrinsic.cc:4509 +#: fortran/interface.cc:3758 fortran/intrinsic.cc:4509 msgid "actual argument to INTENT = OUT/INOUT" msgstr "" @@ -23286,310 +23399,310 @@ msgstr "" msgid "Syntax error in expression at %C" msgstr "" -#: fortran/module.cc:1254 +#: fortran/module.cc:1259 msgid "Unexpected EOF" msgstr "" -#: fortran/module.cc:1379 +#: fortran/module.cc:1384 msgid "Name too long" msgstr "" -#: fortran/module.cc:1433 fortran/module.cc:1491 fortran/module.cc:1546 -#: fortran/module.cc:1604 +#: fortran/module.cc:1438 fortran/module.cc:1496 fortran/module.cc:1551 +#: fortran/module.cc:1609 msgid "Bad name" msgstr "" -#: fortran/module.cc:1628 +#: fortran/module.cc:1633 msgid "Expected name" msgstr "" -#: fortran/module.cc:1631 +#: fortran/module.cc:1636 msgid "Expected left parenthesis" msgstr "" -#: fortran/module.cc:1634 +#: fortran/module.cc:1639 msgid "Expected right parenthesis" msgstr "" -#: fortran/module.cc:1637 +#: fortran/module.cc:1642 msgid "Expected integer" msgstr "" -#: fortran/module.cc:1640 fortran/module.cc:2864 +#: fortran/module.cc:1645 fortran/module.cc:2869 msgid "Expected string" msgstr "" -#: fortran/module.cc:1665 +#: fortran/module.cc:1670 msgid "find_enum(): Enum not found" msgstr "" -#: fortran/module.cc:2238 +#: fortran/module.cc:2243 msgid "Unsupported: multiple OpenACC 'routine' levels of parallelism" msgstr "" -#: fortran/module.cc:2484 +#: fortran/module.cc:2489 msgid "Expected attribute bit name" msgstr "" -#: fortran/module.cc:3493 +#: fortran/module.cc:3498 msgid "Expected integer string" msgstr "" -#: fortran/module.cc:3497 +#: fortran/module.cc:3502 msgid "Error converting integer" msgstr "" -#: fortran/module.cc:3519 +#: fortran/module.cc:3524 msgid "Expected real string" msgstr "" -#: fortran/module.cc:3744 +#: fortran/module.cc:3749 msgid "Expected expression type" msgstr "" -#: fortran/module.cc:3824 +#: fortran/module.cc:3829 msgid "Bad operator" msgstr "" -#: fortran/module.cc:3941 +#: fortran/module.cc:3946 msgid "Bad type in constant expression" msgstr "" -#: fortran/module.cc:7399 +#: fortran/module.cc:7404 msgid "Unexpected end of module" msgstr "" -#: fortran/parse.cc:2138 +#: fortran/parse.cc:2139 msgid "arithmetic IF" msgstr "" -#: fortran/parse.cc:2147 +#: fortran/parse.cc:2148 msgid "attribute declaration" msgstr "" -#: fortran/parse.cc:2183 +#: fortran/parse.cc:2184 msgid "data declaration" msgstr "" -#: fortran/parse.cc:2201 +#: fortran/parse.cc:2202 msgid "derived type declaration" msgstr "" -#: fortran/parse.cc:2328 +#: fortran/parse.cc:2329 msgid "block IF" msgstr "" -#: fortran/parse.cc:2337 +#: fortran/parse.cc:2338 msgid "implied END DO" msgstr "" -#: fortran/parse.cc:2431 fortran/resolve.cc:12499 +#: fortran/parse.cc:2432 fortran/resolve.cc:12746 msgid "assignment" msgstr "" -#: fortran/parse.cc:2434 fortran/resolve.cc:12565 fortran/resolve.cc:12568 +#: fortran/parse.cc:2435 fortran/resolve.cc:12812 fortran/resolve.cc:12815 msgid "pointer assignment" msgstr "" -#: fortran/parse.cc:2458 +#: fortran/parse.cc:2459 msgid "simple IF" msgstr "" -#: fortran/resolve.cc:2432 fortran/resolve.cc:2627 +#: fortran/resolve.cc:2434 fortran/resolve.cc:2629 msgid "elemental procedure" msgstr "" -#: fortran/resolve.cc:2530 +#: fortran/resolve.cc:2532 msgid "allocatable argument" msgstr "" -#: fortran/resolve.cc:2535 +#: fortran/resolve.cc:2537 msgid "asynchronous argument" msgstr "" -#: fortran/resolve.cc:2540 +#: fortran/resolve.cc:2542 msgid "optional argument" msgstr "" -#: fortran/resolve.cc:2545 +#: fortran/resolve.cc:2547 msgid "pointer argument" msgstr "" -#: fortran/resolve.cc:2550 +#: fortran/resolve.cc:2552 msgid "target argument" msgstr "" -#: fortran/resolve.cc:2555 +#: fortran/resolve.cc:2557 msgid "value argument" msgstr "" -#: fortran/resolve.cc:2560 +#: fortran/resolve.cc:2562 msgid "volatile argument" msgstr "" -#: fortran/resolve.cc:2565 +#: fortran/resolve.cc:2567 msgid "assumed-shape argument" msgstr "" -#: fortran/resolve.cc:2570 +#: fortran/resolve.cc:2572 msgid "assumed-rank argument" msgstr "" -#: fortran/resolve.cc:2575 +#: fortran/resolve.cc:2577 msgid "coarray argument" msgstr "" -#: fortran/resolve.cc:2580 +#: fortran/resolve.cc:2582 msgid "parametrized derived type argument" msgstr "" -#: fortran/resolve.cc:2585 +#: fortran/resolve.cc:2587 msgid "polymorphic argument" msgstr "" -#: fortran/resolve.cc:2590 +#: fortran/resolve.cc:2592 msgid "NO_ARG_CHECK attribute" msgstr "" #. As assumed-type is unlimited polymorphic (cf. above). #. See also TS 29113, Note 6.1. -#: fortran/resolve.cc:2597 +#: fortran/resolve.cc:2599 msgid "assumed-type argument" msgstr "" -#: fortran/resolve.cc:2608 +#: fortran/resolve.cc:2610 msgid "array result" msgstr "" -#: fortran/resolve.cc:2613 +#: fortran/resolve.cc:2615 msgid "pointer or allocatable result" msgstr "" -#: fortran/resolve.cc:2620 +#: fortran/resolve.cc:2622 msgid "result with non-constant character length" msgstr "" -#: fortran/resolve.cc:2632 +#: fortran/resolve.cc:2634 msgid "bind(c) procedure" msgstr "" -#: fortran/resolve.cc:4204 +#: fortran/resolve.cc:4206 #, c-format msgid "Invalid context for NULL() pointer at %%L" msgstr "" -#: fortran/resolve.cc:4221 +#: fortran/resolve.cc:4223 #, c-format msgid "Operand of unary numeric operator %%<%s%%> at %%L is %s" msgstr "" -#: fortran/resolve.cc:4239 fortran/resolve.cc:4422 fortran/resolve.cc:4577 +#: fortran/resolve.cc:4241 fortran/resolve.cc:4424 fortran/resolve.cc:4579 #, c-format msgid "Inconsistent ranks for operator at %%L and %%L" msgstr "" -#: fortran/resolve.cc:4249 +#: fortran/resolve.cc:4251 #, c-format msgid "" "Unexpected derived-type entities in binary intrinsic numeric operator " "%%<%s%%> at %%L" msgstr "" -#: fortran/resolve.cc:4254 +#: fortran/resolve.cc:4256 #, c-format msgid "Operands of binary numeric operator %%<%s%%> at %%L are %s/%s" msgstr "" -#: fortran/resolve.cc:4269 +#: fortran/resolve.cc:4271 #, c-format msgid "Operands of string concatenation operator at %%L are %s/%s" msgstr "" -#: fortran/resolve.cc:4312 +#: fortran/resolve.cc:4314 #, c-format msgid "Operands of logical operator %%<%s%%> at %%L are %s/%s" msgstr "" -#: fortran/resolve.cc:4335 +#: fortran/resolve.cc:4337 #, c-format msgid "Operand of .not. operator at %%L is %s" msgstr "" -#: fortran/resolve.cc:4349 +#: fortran/resolve.cc:4351 msgid "COMPLEX quantities cannot be compared at %L" msgstr "" -#: fortran/resolve.cc:4458 +#: fortran/resolve.cc:4460 #, c-format msgid "Logicals at %%L must be compared with %s instead of %s" msgstr "" -#: fortran/resolve.cc:4464 +#: fortran/resolve.cc:4466 #, c-format msgid "Operands of comparison operator %%<%s%%> at %%L are %s/%s" msgstr "" -#: fortran/resolve.cc:4478 +#: fortran/resolve.cc:4480 #, c-format msgid "Unknown operator %%<%s%%> at %%L; did you mean %%<%s%%>?" msgstr "" -#: fortran/resolve.cc:4481 +#: fortran/resolve.cc:4483 #, c-format msgid "Unknown operator %%<%s%%> at %%L" msgstr "" -#: fortran/resolve.cc:4486 +#: fortran/resolve.cc:4488 #, c-format msgid "Operand of user operator %%<%s%%> at %%L is %s" msgstr "" -#: fortran/resolve.cc:4491 +#: fortran/resolve.cc:4493 #, c-format msgid "Operands of user operator %%<%s%%> at %%L are %s/%s" msgstr "" -#: fortran/resolve.cc:7476 +#: fortran/resolve.cc:7650 msgid "Loop variable" msgstr "" -#: fortran/resolve.cc:7480 +#: fortran/resolve.cc:7654 msgid "iterator variable" msgstr "" -#: fortran/resolve.cc:7484 +#: fortran/resolve.cc:7658 msgid "Start expression in DO loop" msgstr "" -#: fortran/resolve.cc:7488 +#: fortran/resolve.cc:7662 msgid "End expression in DO loop" msgstr "" -#: fortran/resolve.cc:7492 +#: fortran/resolve.cc:7666 msgid "Step expression in DO loop" msgstr "" -#: fortran/resolve.cc:7779 fortran/resolve.cc:7782 +#: fortran/resolve.cc:7953 fortran/resolve.cc:7956 msgid "DEALLOCATE object" msgstr "" -#: fortran/resolve.cc:8160 fortran/resolve.cc:8163 +#: fortran/resolve.cc:8334 fortran/resolve.cc:8337 msgid "ALLOCATE object" msgstr "" -#: fortran/resolve.cc:8400 fortran/resolve.cc:10404 fortran/resolve.cc:10525 +#: fortran/resolve.cc:8574 fortran/resolve.cc:10651 fortran/resolve.cc:10772 msgid "STAT variable" msgstr "" -#: fortran/resolve.cc:8451 fortran/resolve.cc:10416 fortran/resolve.cc:10537 +#: fortran/resolve.cc:8625 fortran/resolve.cc:10663 fortran/resolve.cc:10784 msgid "ERRMSG variable" msgstr "" -#: fortran/resolve.cc:10206 +#: fortran/resolve.cc:10453 msgid "item in READ" msgstr "" -#: fortran/resolve.cc:10428 +#: fortran/resolve.cc:10675 msgid "ACQUIRED_LOCK variable" msgstr "" @@ -23598,11 +23711,11 @@ msgstr "" msgid "Different CHARACTER lengths (%ld/%ld) in array constructor" msgstr "" -#: fortran/trans-array.cc:6363 +#: fortran/trans-array.cc:6401 msgid "Integer overflow when calculating the amount of memory to allocate" msgstr "" -#: fortran/trans-array.cc:10452 +#: fortran/trans-array.cc:10501 #, c-format msgid "" "The value of the PDT LEN parameter '%s' does not agree with that in the " @@ -23623,12 +23736,12 @@ msgid "" "'%s' (%ld/%ld)" msgstr "" -#: fortran/trans-expr.cc:10713 +#: fortran/trans-expr.cc:10740 #, c-format msgid "Target of rank remapping is too small (%ld < %ld)" msgstr "" -#: fortran/trans-expr.cc:12310 +#: fortran/trans-expr.cc:12337 msgid "Assignment of scalar to unallocated array" msgstr "" @@ -23733,15 +23846,15 @@ msgstr "" msgid "Invalid image number %d in SYNC IMAGES" msgstr "" -#: fortran/trans-stmt.cc:2503 +#: fortran/trans-stmt.cc:2517 msgid "Loop iterates infinitely" msgstr "" -#: fortran/trans-stmt.cc:2523 fortran/trans-stmt.cc:2779 +#: fortran/trans-stmt.cc:2537 fortran/trans-stmt.cc:2793 msgid "Loop variable has been modified" msgstr "" -#: fortran/trans-stmt.cc:2632 +#: fortran/trans-stmt.cc:2646 msgid "DO step value is zero" msgstr "" @@ -23789,7 +23902,7 @@ msgstr "" msgid "short read while reading export data" msgstr "" -#: go/gofrontend/expressions.cc:183 c-family/c-warn.cc:684 cp/cvt.cc:1405 +#: go/gofrontend/expressions.cc:183 c-family/c-warn.cc:684 cp/cvt.cc:1419 #: d/toir.cc:225 rust/backend/rust-tree.cc:512 #, gcc-internal-format msgid "value computed is not used" @@ -23816,8 +23929,8 @@ msgstr "" msgid "expected boolean type" msgstr "" -#: go/gofrontend/expressions.cc:5610 c/c-parser.cc:18321 c/c-parser.cc:18328 -#: cp/parser.cc:40872 cp/parser.cc:40879 +#: go/gofrontend/expressions.cc:5610 c/c-parser.cc:18370 c/c-parser.cc:18377 +#: cp/parser.cc:40916 cp/parser.cc:40923 #, gcc-internal-format msgid "expected integer" msgstr "" @@ -23880,7 +23993,7 @@ msgstr "" #: go/gofrontend/expressions.cc:11743 go/gofrontend/expressions.cc:11838 #: go/gofrontend/expressions.cc:14014 go/gofrontend/expressions.cc:14143 #: go/gofrontend/expressions.cc:14157 go/gofrontend/expressions.cc:14178 -#: cp/pt.cc:9348 +#: cp/pt.cc:9349 #, gcc-internal-format msgid "too many arguments" msgstr "" @@ -24439,7 +24552,7 @@ msgid "" msgstr "" #: config/rs6000/aix71.h:48 config/rs6000/aix72.h:48 config/rs6000/aix73.h:48 -#: config/rs6000/rtems.h:124 config/rs6000/rs6000.cc:3477 +#: config/rs6000/rtems.h:128 config/rs6000/rs6000.cc:3479 #, gcc-internal-format msgid "%<-mcmodel%> incompatible with other toc options" msgstr "" @@ -24449,7 +24562,7 @@ msgstr "" msgid "% and long-double-128 are incompatible" msgstr "" -#: config/rs6000/rtems.h:117 config/rs6000/rs6000.cc:3469 +#: config/rs6000/rtems.h:121 config/rs6000/rs6000.cc:3471 #, gcc-internal-format msgid "%<-m64%> requires a PowerPC64 cpu" msgstr "" @@ -24508,7 +24621,7 @@ msgid "%<-mrelax%> is only supported for RTP PIC" msgstr "" #. A general purpose syntax error. -#: fortran/gfortran.h:3403 fortran/io.cc:3727 fortran/io.cc:4413 +#: fortran/gfortran.h:3412 fortran/io.cc:3727 fortran/io.cc:4413 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in %s statement at %C" msgstr "" @@ -24586,15 +24699,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:220 c-family/c.opt:224 -#: c-family/c.opt:236 c-family/c.opt:2365 c-family/c.opt:2373 -#: config/darwin.opt:30 common.opt:329 common.opt:332 common.opt:3671 +#: c-family/c.opt:236 c-family/c.opt:2369 c-family/c.opt:2377 +#: config/darwin.opt:30 common.opt:329 common.opt:332 common.opt:3680 #, gcc-internal-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:212 c-family/c.opt:268 c-family/c.opt:2361 -#: c-family/c.opt:2381 c-family/c.opt:2385 c-family/c.opt:2389 +#: c-family/c.opt:200 c-family/c.opt:212 c-family/c.opt:268 c-family/c.opt:2365 +#: c-family/c.opt:2385 c-family/c.opt:2389 c-family/c.opt:2393 #, gcc-internal-format msgid "missing path after %qs" msgstr "" @@ -24624,49 +24737,49 @@ msgstr "" msgid "argument %qs to %<-Wbidi-chars%> not recognized" msgstr "" -#: c-family/c.opt:1064 +#: c-family/c.opt:1068 #, gcc-internal-format msgid "argument %qs to %<-Wnormalized%> not recognized" msgstr "" -#: c-family/c.opt:1728 +#: c-family/c.opt:1732 #, gcc-internal-format msgid "no class name specified with %qs" msgstr "" -#: c-family/c.opt:1756 +#: c-family/c.opt:1760 #, gcc-internal-format msgid "argument %qs must be either % or %" msgstr "" -#: c-family/c.opt:1900 +#: c-family/c.opt:1904 #, gcc-internal-format msgid "" "%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by " "default)" msgstr "" -#: c-family/c.opt:1975 +#: c-family/c.opt:1979 #, gcc-internal-format msgid "missing mapper" msgstr "" -#: c-family/c.opt:2003 +#: c-family/c.opt:2007 #, gcc-internal-format msgid "missing header name" msgstr "" -#: c-family/c.opt:2011 +#: c-family/c.opt:2015 #, gcc-internal-format msgid "missing module name" msgstr "" -#: c-family/c.opt:2058 +#: c-family/c.opt:2062 #, gcc-internal-format msgid "unrecognized ivar visibility value %qs" msgstr "" -#: c-family/c.opt:2225 +#: c-family/c.opt:2229 #, gcc-internal-format msgid "unrecognized scalar storage order value %qs" msgstr "" @@ -24708,37 +24821,37 @@ msgid "" "masm=intel%> and %<-masm=att%> instead" msgstr "" -#: config/i386/i386.opt:725 +#: config/i386/i386.opt:729 #, gcc-internal-format msgid "%<-msse5%> was removed" msgstr "" -#: config/i386/i386.opt:741 +#: config/i386/i386.opt:745 #, gcc-internal-format msgid "AVX512PF support will be removed in GCC 15" msgstr "" -#: config/i386/i386.opt:745 +#: config/i386/i386.opt:749 #, gcc-internal-format msgid "AVX512ER support will be removed in GCC 15" msgstr "" -#: config/i386/i386.opt:773 +#: config/i386/i386.opt:777 #, gcc-internal-format msgid "AVX5124FMAPS support will be removed in GCC 15" msgstr "" -#: config/i386/i386.opt:777 +#: config/i386/i386.opt:781 #, gcc-internal-format msgid "AVX5124VNNIW support will be removed in GCC 15" msgstr "" -#: config/i386/i386.opt:972 +#: config/i386/i386.opt:976 #, gcc-internal-format msgid "PREFETCHWT1 support will be removed in GCC 15" msgstr "" -#: config/i386/i386.opt:1286 +#: config/i386/i386.opt:1290 #, gcc-internal-format msgid "unknown lam type %qs" msgstr "" @@ -24796,118 +24909,118 @@ msgstr "" msgid "unknown linker output %qs" msgstr "" -#: common.opt:1635 +#: common.opt:1640 #, gcc-internal-format msgid "unknown excess precision style %qs" msgstr "" -#: common.opt:1653 +#: common.opt:1658 #, gcc-internal-format msgid "" "unknown specification for the set of FLT_EVAL_METHOD values to permit %qs" msgstr "" -#: common.opt:1697 +#: common.opt:1702 #, gcc-internal-format msgid "unknown floating point contraction style %qs" msgstr "" -#: common.opt:1865 +#: common.opt:1870 #, gcc-internal-format msgid "unknown hardcfr noreturn checking level %qs" msgstr "" -#: common.opt:1900 +#: common.opt:1905 #, gcc-internal-format msgid "unknown Stack Reuse Level %qs" msgstr "" -#: common.opt:1972 +#: common.opt:1977 #, gcc-internal-format msgid "unavailable stringop for inlining %qs" msgstr "" -#: common.opt:2003 +#: common.opt:2008 #, gcc-internal-format msgid "unknown Control-Flow Protection Level %qs" msgstr "" -#: common.opt:2113 +#: common.opt:2118 #, gcc-internal-format msgid "unknown IRA algorithm %qs" msgstr "" -#: common.opt:2126 +#: common.opt:2131 #, gcc-internal-format msgid "unknown IRA region %qs" msgstr "" -#: common.opt:2204 +#: common.opt:2209 #, gcc-internal-format msgid "unknown LTO partitioning model %qs" msgstr "" -#: common.opt:2318 +#: common.opt:2323 #, gcc-internal-format msgid "targets missing after %qs" msgstr "" -#: common.opt:2321 +#: common.opt:2326 #, gcc-internal-format msgid "options or targets=options missing after %qs" msgstr "" -#: common.opt:2329 +#: common.opt:2334 #, gcc-internal-format msgid "unknown offload ABI %qs" msgstr "" -#: common.opt:2493 +#: common.opt:2502 #, gcc-internal-format msgid "unknown profile reproducibility method %qs" msgstr "" -#: common.opt:2509 +#: common.opt:2518 #, gcc-internal-format msgid "unknown profile update method %qs" msgstr "" -#: common.opt:2618 +#: common.opt:2627 #, gcc-internal-format msgid "unknown Live-Patching Level %qs" msgstr "" -#: common.opt:2651 +#: common.opt:2660 #, gcc-internal-format msgid "unknown basic block reordering algorithm %qs" msgstr "" -#: common.opt:2987 +#: common.opt:2996 #, gcc-internal-format msgid "unknown TLS model %qs" msgstr "" -#: common.opt:3020 +#: common.opt:3029 #, gcc-internal-format msgid "unknown trampoline implementation %qs" msgstr "" -#: common.opt:3342 +#: common.opt:3351 #, gcc-internal-format msgid "unknown vectorizer cost model %qs" msgstr "" -#: common.opt:3373 +#: common.opt:3382 #, gcc-internal-format msgid "unrecognized automatic variable initialization type %qs" msgstr "" -#: common.opt:3399 +#: common.opt:3408 #, gcc-internal-format msgid "unrecognized visibility value %qs" msgstr "" -#: common.opt:3418 +#: common.opt:3427 #, gcc-internal-format msgid "unknown vtable verify initialization priority %qs" msgstr "" @@ -24946,8 +25059,8 @@ msgstr "" #: attribs.cc:531 c-family/c-attribs.cc:995 c-family/c-attribs.cc:2690 #: c-family/c-attribs.cc:3177 c-family/c-attribs.cc:5054 -#: c-family/c-attribs.cc:5147 cp/decl.cc:16419 cp/decl.cc:16469 -#: cp/friend.cc:318 cp/tree.cc:5245 +#: c-family/c-attribs.cc:5147 cp/decl.cc:16428 cp/decl.cc:16478 +#: cp/friend.cc:318 cp/tree.cc:5259 #, gcc-internal-format msgid "previous declaration here" msgstr "" @@ -24964,7 +25077,7 @@ msgstr "" msgid "%<%E::%E%> scoped attribute directive ignored" msgstr "" -#: attribs.cc:752 c/c-parser.cc:2084 cp/cp-gimplify.cc:3657 +#: attribs.cc:752 c/c-parser.cc:2084 cp/cp-gimplify.cc:3667 #, gcc-internal-format msgid "wrong number of arguments specified for %qE attribute" msgstr "" @@ -24974,7 +25087,7 @@ msgstr "" msgid "expected %i or more, found %i" msgstr "" -#: attribs.cc:758 c/c-parser.cc:2087 cp/cp-gimplify.cc:3659 +#: attribs.cc:758 c/c-parser.cc:2087 cp/cp-gimplify.cc:3669 #, gcc-internal-format, gfc-internal-format msgid "expected %i, found %i" msgstr "" @@ -25040,13 +25153,13 @@ msgstr "" #: c-family/c-attribs.cc:5877 c-family/c-attribs.cc:5919 #: c-family/c-attribs.cc:5935 c-family/c-attribs.cc:6103 #: c-family/c-attribs.cc:6115 c-family/c-common.cc:6137 -#: c-family/c-common.cc:6140 config/darwin.cc:2208 config/arm/arm.cc:7478 -#: config/arm/arm.cc:7505 config/arm/arm.cc:7522 config/avr/avr.cc:10301 -#: config/csky/csky.cc:6497 config/csky/csky.cc:6518 config/h8300/h8300.cc:4972 -#: config/h8300/h8300.cc:4996 config/i386/i386-options.cc:3740 -#: config/i386/i386-options.cc:3898 config/i386/i386-options.cc:4130 -#: config/i386/i386-options.cc:4160 config/ia64/ia64.cc:795 -#: config/loongarch/loongarch.cc:8138 config/rs6000/rs6000.cc:20787 +#: c-family/c-common.cc:6140 config/darwin.cc:2208 config/arm/arm.cc:7519 +#: config/arm/arm.cc:7546 config/arm/arm.cc:7563 config/avr/avr.cc:11217 +#: config/csky/csky.cc:6498 config/csky/csky.cc:6519 config/h8300/h8300.cc:4972 +#: config/h8300/h8300.cc:4996 config/i386/i386-options.cc:3755 +#: config/i386/i386-options.cc:3913 config/i386/i386-options.cc:4145 +#: config/i386/i386-options.cc:4175 config/ia64/ia64.cc:795 +#: config/loongarch/loongarch.cc:7999 config/rs6000/rs6000.cc:20739 #: ada/gcc-interface/utils.cc:6746 ada/gcc-interface/utils.cc:6762 #: ada/gcc-interface/utils.cc:6859 ada/gcc-interface/utils.cc:6876 #: ada/gcc-interface/utils.cc:6893 ada/gcc-interface/utils.cc:6908 @@ -25055,18 +25168,19 @@ msgstr "" #: ada/gcc-interface/utils.cc:7067 ada/gcc-interface/utils.cc:7088 #: ada/gcc-interface/utils.cc:7136 ada/gcc-interface/utils.cc:7152 #: ada/gcc-interface/utils.cc:7186 c/c-decl.cc:4902 c/c-decl.cc:4905 -#: c/c-decl.cc:4920 c/c-parser.cc:5836 cp/tree.cc:5001 d/d-attribs.cc:483 -#: d/d-attribs.cc:702 d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 -#: d/d-attribs.cc:788 d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 -#: d/d-attribs.cc:1008 d/d-attribs.cc:1157 d/d-attribs.cc:1170 -#: d/d-attribs.cc:1387 d/d-attribs.cc:1405 d/d-attribs.cc:1452 -#: d/d-attribs.cc:1490 d/d-attribs.cc:1506 d/d-attribs.cc:1563 -#: d/d-attribs.cc:1591 jit/dummy-frontend.cc:270 jit/dummy-frontend.cc:304 -#: jit/dummy-frontend.cc:599 jit/dummy-frontend.cc:684 -#: jit/dummy-frontend.cc:705 jit/dummy-frontend.cc:724 -#: jit/dummy-frontend.cc:755 jit/dummy-frontend.cc:769 -#: jit/dummy-frontend.cc:812 jit/dummy-frontend.cc:832 -#: jit/dummy-frontend.cc:893 lto/lto-lang.cc:302 rust/rust-attribs.cc:171 +#: c/c-decl.cc:4920 c/c-parser.cc:5835 cp/tree.cc:5013 cp/tree.cc:5424 +#: d/d-attribs.cc:483 d/d-attribs.cc:702 d/d-attribs.cc:723 d/d-attribs.cc:739 +#: d/d-attribs.cc:756 d/d-attribs.cc:788 d/d-attribs.cc:917 d/d-attribs.cc:976 +#: d/d-attribs.cc:992 d/d-attribs.cc:1008 d/d-attribs.cc:1157 +#: d/d-attribs.cc:1170 d/d-attribs.cc:1387 d/d-attribs.cc:1405 +#: d/d-attribs.cc:1452 d/d-attribs.cc:1490 d/d-attribs.cc:1506 +#: d/d-attribs.cc:1563 d/d-attribs.cc:1591 jit/dummy-frontend.cc:270 +#: jit/dummy-frontend.cc:304 jit/dummy-frontend.cc:599 +#: jit/dummy-frontend.cc:684 jit/dummy-frontend.cc:705 +#: jit/dummy-frontend.cc:724 jit/dummy-frontend.cc:755 +#: jit/dummy-frontend.cc:769 jit/dummy-frontend.cc:812 +#: jit/dummy-frontend.cc:832 jit/dummy-frontend.cc:893 lto/lto-lang.cc:302 +#: rust/rust-attribs.cc:171 #, gcc-internal-format msgid "%qE attribute ignored" msgstr "" @@ -25152,37 +25266,37 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: auto-profile.cc:365 +#: auto-profile.cc:367 #, gcc-internal-format msgid "offset exceeds 16 bytes" msgstr "" -#: auto-profile.cc:862 +#: auto-profile.cc:864 #, gcc-internal-format msgid "Not expected TAG." msgstr "" -#: auto-profile.cc:927 +#: auto-profile.cc:929 #, gcc-internal-format, gfc-internal-format msgid "cannot open profile file %s" msgstr "" -#: auto-profile.cc:933 +#: auto-profile.cc:935 #, gcc-internal-format msgid "AutoFDO profile magic number does not match" msgstr "" -#: auto-profile.cc:941 +#: auto-profile.cc:943 #, gcc-internal-format, gfc-internal-format msgid "AutoFDO profile version %u does not match %u" msgstr "" -#: auto-profile.cc:953 +#: auto-profile.cc:955 #, gcc-internal-format, gfc-internal-format msgid "cannot read string table from %s" msgstr "" -#: auto-profile.cc:961 +#: auto-profile.cc:963 #, gcc-internal-format, gfc-internal-format msgid "cannot read function profile from %s" msgstr "" @@ -25192,7 +25306,7 @@ msgstr "" msgid "offset %qwi outside bounds of constant string" msgstr "" -#: builtins.cc:707 cp/name-lookup.cc:6739 +#: builtins.cc:707 cp/name-lookup.cc:6773 #, gcc-internal-format msgid "%qE declared here" msgstr "" @@ -25217,13 +25331,13 @@ msgstr "" msgid "invalid third argument to %<__builtin_prefetch%>; using zero" msgstr "" -#: builtins.cc:4048 gimple-fold.cc:2522 gimple-ssa-warn-access.cc:2566 -#: tree-ssa-strlen.cc:3177 +#: builtins.cc:4048 gimple-fold.cc:2525 gimple-ssa-warn-access.cc:2567 +#: tree-ssa-strlen.cc:3179 #, gcc-internal-format msgid "%qD specified bound %E equals destination size" msgstr "" -#: builtins.cc:5297 gimplify.cc:3894 +#: builtins.cc:5297 gimplify.cc:3921 #, gcc-internal-format msgid "too few arguments to function %" msgstr "" @@ -25297,7 +25411,7 @@ msgstr "" #. All valid uses of __builtin_va_arg_pack () are removed during #. inlining. -#: builtins.cc:8018 expr.cc:12315 +#: builtins.cc:8018 expr.cc:12318 #, gcc-internal-format msgid "invalid use of %<__builtin_va_arg_pack ()%>" msgstr "" @@ -25371,7 +25485,7 @@ msgstr "" msgid "function call has aggregate value" msgstr "" -#: calls.cc:3508 +#: calls.cc:3509 #, gcc-internal-format msgid "passing too large argument on stack" msgstr "" @@ -25386,7 +25500,7 @@ msgstr "" msgid "total size of local objects is too large" msgstr "" -#: cfgexpand.cc:1853 function.cc:1015 varasm.cc:2360 +#: cfgexpand.cc:1853 function.cc:1016 varasm.cc:2360 #, gcc-internal-format msgid "size of variable %q+D is too large" msgstr "" @@ -25837,670 +25951,670 @@ msgstr "" msgid "%d exits recorded for loop %d (having %d exits)" msgstr "" -#: cfgrtl.cc:2426 +#: cfgrtl.cc:2441 #, gcc-internal-format, gfc-internal-format msgid "" "non-cold basic block %d reachable only by paths crossing the cold partition" msgstr "" -#: cfgrtl.cc:2546 +#: cfgrtl.cc:2561 #, gcc-internal-format, gfc-internal-format msgid "multiple hot/cold transitions found (bb %i)" msgstr "" -#: cfgrtl.cc:2554 +#: cfgrtl.cc:2569 #, gcc-internal-format msgid "partition found but function partition flag not set" msgstr "" -#: cfgrtl.cc:2593 +#: cfgrtl.cc:2608 #, gcc-internal-format msgid "verify_flow_info: REG_BR_PROB is set but cfg probability is not" msgstr "" -#: cfgrtl.cc:2602 +#: cfgrtl.cc:2617 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i" msgstr "" -#: cfgrtl.cc:2624 +#: cfgrtl.cc:2639 #, gcc-internal-format msgid "EDGE_CROSSING incorrectly set across same section" msgstr "" -#: cfgrtl.cc:2629 +#: cfgrtl.cc:2644 #, gcc-internal-format, gfc-internal-format msgid "fallthru edge crosses section boundary in bb %i" msgstr "" -#: cfgrtl.cc:2635 +#: cfgrtl.cc:2650 #, gcc-internal-format, gfc-internal-format msgid "EH edge crosses section boundary in bb %i" msgstr "" -#: cfgrtl.cc:2641 +#: cfgrtl.cc:2656 #, gcc-internal-format, gfc-internal-format msgid "No region crossing jump at section boundary in bb %i" msgstr "" -#: cfgrtl.cc:2648 +#: cfgrtl.cc:2663 #, gcc-internal-format msgid "EDGE_CROSSING missing across section boundary" msgstr "" -#: cfgrtl.cc:2678 +#: cfgrtl.cc:2693 #, gcc-internal-format, gfc-internal-format msgid "Region crossing jump across same section in bb %i" msgstr "" -#: cfgrtl.cc:2685 +#: cfgrtl.cc:2700 #, gcc-internal-format, gfc-internal-format msgid "missing REG_EH_REGION note at the end of bb %i" msgstr "" -#: cfgrtl.cc:2690 +#: cfgrtl.cc:2705 #, gcc-internal-format, gfc-internal-format msgid "too many exception handling edges in bb %i" msgstr "" -#: cfgrtl.cc:2698 +#: cfgrtl.cc:2713 #, gcc-internal-format, gfc-internal-format msgid "too many outgoing branch edges from bb %i" msgstr "" -#: cfgrtl.cc:2703 +#: cfgrtl.cc:2718 #, gcc-internal-format, gfc-internal-format msgid "fallthru edge after unconditional jump in bb %i" msgstr "" -#: cfgrtl.cc:2708 +#: cfgrtl.cc:2723 #, gcc-internal-format, gfc-internal-format msgid "wrong number of branch edges after unconditional jump in bb %i" msgstr "" -#: cfgrtl.cc:2715 +#: cfgrtl.cc:2730 #, gcc-internal-format, gfc-internal-format msgid "wrong amount of branch edges after conditional jump in bb %i" msgstr "" -#: cfgrtl.cc:2721 +#: cfgrtl.cc:2736 #, gcc-internal-format, gfc-internal-format msgid "abnormal call edges for non-call insn in bb %i" msgstr "" -#: cfgrtl.cc:2726 +#: cfgrtl.cc:2741 #, gcc-internal-format, gfc-internal-format msgid "sibcall edges for non-call insn in bb %i" msgstr "" -#: cfgrtl.cc:2736 +#: cfgrtl.cc:2751 #, gcc-internal-format, gfc-internal-format msgid "abnormal edges for no purpose in bb %i" msgstr "" -#: cfgrtl.cc:2747 +#: cfgrtl.cc:2762 #, gcc-internal-format, gfc-internal-format msgid "EH incoming edge mixed with non-EH incoming edges in bb %i" msgstr "" -#: cfgrtl.cc:2788 cfgrtl.cc:2798 +#: cfgrtl.cc:2803 cfgrtl.cc:2813 #, gcc-internal-format, gfc-internal-format msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d" msgstr "" -#: cfgrtl.cc:2811 +#: cfgrtl.cc:2826 #, gcc-internal-format, gfc-internal-format msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d" msgstr "" -#: cfgrtl.cc:2821 +#: cfgrtl.cc:2836 #, gcc-internal-format, gfc-internal-format msgid "in basic block %d:" msgstr "" -#: cfgrtl.cc:2847 +#: cfgrtl.cc:2862 #, gcc-internal-format, gfc-internal-format msgid "BB_RTL flag not set for block %d" msgstr "" -#: cfgrtl.cc:2854 +#: cfgrtl.cc:2869 #, gcc-internal-format, gfc-internal-format msgid "insn %d basic block pointer is %d, should be %d" msgstr "" -#: cfgrtl.cc:2865 +#: cfgrtl.cc:2880 #, gcc-internal-format, gfc-internal-format msgid "insn %d in header of bb %d has non-NULL basic block" msgstr "" -#: cfgrtl.cc:2873 +#: cfgrtl.cc:2888 #, gcc-internal-format, gfc-internal-format msgid "insn %d in footer of bb %d has non-NULL basic block" msgstr "" -#: cfgrtl.cc:2949 cfgrtl.cc:2997 +#: cfgrtl.cc:2964 cfgrtl.cc:3012 #, gcc-internal-format, gfc-internal-format msgid "insn %d outside of basic blocks has non-NULL bb field" msgstr "" -#: cfgrtl.cc:2957 +#: cfgrtl.cc:2972 #, gcc-internal-format, gfc-internal-format msgid "end insn %d for block %d not found in the insn stream" msgstr "" -#: cfgrtl.cc:2970 +#: cfgrtl.cc:2985 #, gcc-internal-format, gfc-internal-format msgid "insn %d is in multiple basic blocks (%d and %d)" msgstr "" -#: cfgrtl.cc:2982 +#: cfgrtl.cc:2997 #, gcc-internal-format, gfc-internal-format msgid "head insn %d for block %d not found in the insn stream" msgstr "" -#: cfgrtl.cc:3030 +#: cfgrtl.cc:3045 #, gcc-internal-format, gfc-internal-format msgid "missing barrier after block %i" msgstr "" -#: cfgrtl.cc:3046 +#: cfgrtl.cc:3061 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i" msgstr "" -#: cfgrtl.cc:3055 +#: cfgrtl.cc:3070 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Incorrect fallthru %i->%i" msgstr "" -#: cfgrtl.cc:3057 +#: cfgrtl.cc:3072 #, gcc-internal-format msgid "wrong insn in the fallthru edge" msgstr "" -#: cfgrtl.cc:3091 +#: cfgrtl.cc:3106 #, gcc-internal-format msgid "basic blocks not laid down consecutively" msgstr "" -#: cfgrtl.cc:3130 +#: cfgrtl.cc:3145 #, gcc-internal-format, gfc-internal-format msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)" msgstr "" -#: cgraph.cc:3260 +#: cgraph.cc:3262 #, gcc-internal-format msgid "caller edge count invalid" msgstr "" -#: cgraph.cc:3357 +#: cgraph.cc:3359 #, gcc-internal-format msgid "missing indirect call in speculative call sequence" msgstr "" -#: cgraph.cc:3362 +#: cgraph.cc:3364 #, gcc-internal-format msgid "indirect call in speculative call sequence has no speculative flag" msgstr "" -#: cgraph.cc:3392 +#: cgraph.cc:3394 #, gcc-internal-format msgid "speculative edges are not adjacent" msgstr "" -#: cgraph.cc:3398 +#: cgraph.cc:3400 #, gcc-internal-format, gfc-internal-format msgid "direct call to %s in speculative call sequence has no speculative flag" msgstr "" -#: cgraph.cc:3404 cgraph.cc:3434 +#: cgraph.cc:3406 cgraph.cc:3436 #, gcc-internal-format, gfc-internal-format msgid "" "direct call to %s in speculative call sequence has speculative_id %i out of " "range" msgstr "" -#: cgraph.cc:3411 +#: cgraph.cc:3413 #, gcc-internal-format, gfc-internal-format msgid "" "duplicate direct call to %s in speculative call sequence with speculative_id " "%i" msgstr "" -#: cgraph.cc:3422 +#: cgraph.cc:3424 #, gcc-internal-format msgid "" "call stmt hash does not point to first direct edge of speculative call " "sequence" msgstr "" -#: cgraph.cc:3441 +#: cgraph.cc:3443 #, gcc-internal-format, gfc-internal-format msgid "" "duplicate reference %s in speculative call sequence with speculative_id %i" msgstr "" -#: cgraph.cc:3454 +#: cgraph.cc:3456 #, gcc-internal-format, gfc-internal-format msgid "missing direct call for speculation %i" msgstr "" -#: cgraph.cc:3459 +#: cgraph.cc:3461 #, gcc-internal-format, gfc-internal-format msgid "missing ref for speculation %i" msgstr "" -#: cgraph.cc:3468 +#: cgraph.cc:3470 #, gcc-internal-format, gfc-internal-format msgid "" "number of speculative targets %i mismatched with " "num_speculative_call_targets %i" msgstr "" -#: cgraph.cc:3497 +#: cgraph.cc:3499 #, gcc-internal-format, gfc-internal-format msgid "aux field set for edge %s->%s" msgstr "" -#: cgraph.cc:3504 +#: cgraph.cc:3506 #, gcc-internal-format msgid "cgraph count invalid" msgstr "" -#: cgraph.cc:3509 +#: cgraph.cc:3511 #, gcc-internal-format msgid "inline clone in same comdat group list" msgstr "" -#: cgraph.cc:3514 +#: cgraph.cc:3516 #, gcc-internal-format msgid "inline clone count is not compatible" msgstr "" -#: cgraph.cc:3521 +#: cgraph.cc:3523 #, gcc-internal-format msgid "tp_first_run must be non-negative" msgstr "" -#: cgraph.cc:3526 +#: cgraph.cc:3528 #, gcc-internal-format msgid "local symbols must be defined" msgstr "" -#: cgraph.cc:3531 +#: cgraph.cc:3533 #, gcc-internal-format msgid "externally visible inline clone" msgstr "" -#: cgraph.cc:3536 +#: cgraph.cc:3538 #, gcc-internal-format msgid "inline clone with address taken" msgstr "" -#: cgraph.cc:3541 +#: cgraph.cc:3543 #, gcc-internal-format msgid "inline clone is forced to output" msgstr "" -#: cgraph.cc:3548 +#: cgraph.cc:3550 #, gcc-internal-format msgid "calls_comdat_local is set outside of a comdat group" msgstr "" -#: cgraph.cc:3553 +#: cgraph.cc:3555 #, gcc-internal-format msgid "invalid calls_comdat_local flag" msgstr "" -#: cgraph.cc:3560 +#: cgraph.cc:3562 #, gcc-internal-format msgid "malloc attribute should be used for a function that returns a pointer" msgstr "" -#: cgraph.cc:3572 +#: cgraph.cc:3574 #, gcc-internal-format msgid "semantic interposition mismatch" msgstr "" -#: cgraph.cc:3579 +#: cgraph.cc:3581 #, gcc-internal-format, gfc-internal-format msgid "aux field set for indirect edge from %s" msgstr "" -#: cgraph.cc:3585 cgraph.cc:3645 +#: cgraph.cc:3587 cgraph.cc:3647 #, gcc-internal-format msgid "edge count is not compatible with function count" msgstr "" -#: cgraph.cc:3593 +#: cgraph.cc:3595 #, 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.cc:3601 cgraph.cc:3673 +#: cgraph.cc:3603 cgraph.cc:3675 #, gcc-internal-format msgid "edge has both call_stmt and lto_stmt_uid set" msgstr "" -#: cgraph.cc:3613 +#: cgraph.cc:3615 #, gcc-internal-format, gfc-internal-format msgid "comdat-local function called by %s outside its comdat" msgstr "" -#: cgraph.cc:3623 +#: cgraph.cc:3625 #, gcc-internal-format msgid "inlined_to pointer is wrong" msgstr "" -#: cgraph.cc:3628 +#: cgraph.cc:3630 #, gcc-internal-format msgid "multiple inline callers" msgstr "" -#: cgraph.cc:3635 +#: cgraph.cc:3637 #, gcc-internal-format msgid "inlined_to pointer set for noninline callers" msgstr "" -#: cgraph.cc:3663 +#: cgraph.cc:3665 #, gcc-internal-format msgid "caller edge count does not match BB count" msgstr "" -#: cgraph.cc:3694 +#: cgraph.cc:3696 #, gcc-internal-format msgid "indirect call count does not match BB count" msgstr "" -#: cgraph.cc:3711 +#: cgraph.cc:3713 #, gcc-internal-format msgid "reference has both stmt and lto_stmt_uid set" msgstr "" -#: cgraph.cc:3722 +#: cgraph.cc:3724 #, gcc-internal-format msgid "inlined_to pointer is set but no predecessors found" msgstr "" -#: cgraph.cc:3727 +#: cgraph.cc:3729 #, gcc-internal-format msgid "inlined_to pointer refers to itself" msgstr "" -#: cgraph.cc:3738 +#: cgraph.cc:3740 #, gcc-internal-format msgid "cgraph_node has wrong clone_of" msgstr "" -#: cgraph.cc:3751 +#: cgraph.cc:3753 #, gcc-internal-format msgid "cgraph_node has wrong clone list" msgstr "" -#: cgraph.cc:3757 +#: cgraph.cc:3759 #, gcc-internal-format msgid "cgraph_node is in clone list but it is not clone" msgstr "" -#: cgraph.cc:3762 +#: cgraph.cc:3764 #, gcc-internal-format msgid "cgraph_node has wrong prev_clone pointer" msgstr "" -#: cgraph.cc:3767 +#: cgraph.cc:3769 #, gcc-internal-format msgid "double linked list of clones corrupted" msgstr "" -#: cgraph.cc:3779 +#: cgraph.cc:3781 #, gcc-internal-format msgid "Alias has call edges" msgstr "" -#: cgraph.cc:3785 +#: cgraph.cc:3787 #, gcc-internal-format msgid "Alias has non-alias reference" msgstr "" -#: cgraph.cc:3790 +#: cgraph.cc:3792 #, gcc-internal-format msgid "Alias has more than one alias reference" msgstr "" -#: cgraph.cc:3797 +#: cgraph.cc:3799 #, gcc-internal-format msgid "Analyzed alias has no reference" msgstr "" -#: cgraph.cc:3806 +#: cgraph.cc:3808 #, gcc-internal-format msgid "No edge out of thunk node" msgstr "" -#: cgraph.cc:3811 +#: cgraph.cc:3813 #, gcc-internal-format msgid "More than one edge out of thunk node" msgstr "" -#: cgraph.cc:3816 +#: cgraph.cc:3818 #, gcc-internal-format msgid "Thunk is not supposed to have body" msgstr "" -#: cgraph.cc:3852 +#: cgraph.cc:3854 #, gcc-internal-format msgid "shared call_stmt:" msgstr "" -#: cgraph.cc:3860 +#: cgraph.cc:3862 #, gcc-internal-format msgid "edge points to wrong declaration:" msgstr "" -#: cgraph.cc:3869 +#: cgraph.cc:3871 #, gcc-internal-format msgid "" "an indirect edge with unknown callee corresponding to a call_stmt with a " "known declaration:" msgstr "" -#: cgraph.cc:3879 +#: cgraph.cc:3881 #, gcc-internal-format msgid "missing callgraph edge for call stmt:" msgstr "" -#: cgraph.cc:3889 +#: cgraph.cc:3891 #, gcc-internal-format msgid "reference to dead statement" msgstr "" -#: cgraph.cc:3902 +#: cgraph.cc:3904 #, gcc-internal-format, gfc-internal-format msgid "edge %s->%s has no corresponding call_stmt" msgstr "" -#: cgraph.cc:3914 +#: cgraph.cc:3916 #, gcc-internal-format, gfc-internal-format msgid "an indirect edge from %s has no corresponding call_stmt" msgstr "" -#: cgraph.cc:3933 cgraph.cc:3946 +#: cgraph.cc:3935 cgraph.cc:3948 #, gcc-internal-format msgid "missing origin for a node in a nested list" msgstr "" -#: cgraph.cc:3938 +#: cgraph.cc:3940 #, gcc-internal-format msgid "origin points to a different parent" msgstr "" -#: cgraph.cc:3954 +#: cgraph.cc:3956 #, gcc-internal-format msgid "verify_cgraph_node failed" msgstr "" -#: cgraph.cc:4076 varpool.cc:304 +#: cgraph.cc:4078 varpool.cc:304 #, gcc-internal-format, gfc-internal-format msgid "%s: section %s.%d is missing" msgstr "" -#: cgraphunit.cc:753 +#: cgraphunit.cc:755 #, gcc-internal-format msgid "duplicate definition of a symbol version" msgstr "" -#: cgraphunit.cc:755 +#: cgraphunit.cc:757 #, gcc-internal-format msgid "same version was previously defined here" msgstr "" -#: cgraphunit.cc:761 +#: cgraphunit.cc:763 #, gcc-internal-format msgid "symbol needs to be defined to have a version" msgstr "" -#: cgraphunit.cc:767 +#: cgraphunit.cc:769 #, gcc-internal-format msgid "common symbol cannot be versioned" msgstr "" -#: cgraphunit.cc:773 +#: cgraphunit.cc:775 #, gcc-internal-format msgid "comdat symbol cannot be versioned" msgstr "" -#: cgraphunit.cc:779 +#: cgraphunit.cc:781 #, gcc-internal-format msgid "% cannot be versioned" msgstr "" -#: cgraphunit.cc:785 +#: cgraphunit.cc:787 #, gcc-internal-format msgid "versioned symbol must be public" msgstr "" -#: cgraphunit.cc:791 +#: cgraphunit.cc:793 #, gcc-internal-format msgid "versioned symbol must have default visibility" msgstr "" -#: cgraphunit.cc:824 +#: cgraphunit.cc:826 #, gcc-internal-format msgid "% attribute should be accompanied with an % attribute" msgstr "" -#: cgraphunit.cc:879 +#: cgraphunit.cc:881 #, gcc-internal-format msgid "% attribute is ignored on aliases" msgstr "" -#: cgraphunit.cc:887 cgraphunit.cc:939 +#: cgraphunit.cc:889 cgraphunit.cc:941 #, gcc-internal-format msgid "% attribute have effect only on public objects" msgstr "" -#: cgraphunit.cc:898 +#: cgraphunit.cc:900 #, gcc-internal-format msgid "% attribute ignored because function is defined" msgstr "" -#: cgraphunit.cc:913 +#: cgraphunit.cc:915 #, gcc-internal-format msgid "% attribute ignored because function is defined" msgstr "" -#: cgraphunit.cc:921 +#: cgraphunit.cc:923 #, gcc-internal-format msgid "" "% function might not be inlinable unless also declared " "%" msgstr "" -#: cgraphunit.cc:947 +#: cgraphunit.cc:949 #, gcc-internal-format msgid "% attribute ignored because variable is initialized" msgstr "" #. include_self= #. TODO: Add OPT_Wundefined-inline. -#: cgraphunit.cc:1096 c/c-decl.cc:13291 +#: cgraphunit.cc:1098 c/c-decl.cc:13291 #, gcc-internal-format msgid "%q+F used but never defined" msgstr "" -#: cgraphunit.cc:1098 c/c-decl.cc:13301 +#: cgraphunit.cc:1100 c/c-decl.cc:13301 #, gcc-internal-format msgid "%q+F declared % but never defined" msgstr "" -#: cgraphunit.cc:1142 +#: cgraphunit.cc:1144 #, gcc-internal-format msgid "%qD defined but not used" msgstr "" -#: cgraphunit.cc:1477 +#: cgraphunit.cc:1479 #, gcc-internal-format msgid "% resolver for %qD must return %qT" msgstr "" -#: cgraphunit.cc:1480 cgraphunit.cc:1503 +#: cgraphunit.cc:1482 cgraphunit.cc:1505 #, gcc-internal-format msgid "resolver indirect function declared here" msgstr "" -#: cgraphunit.cc:1500 +#: cgraphunit.cc:1502 #, gcc-internal-format msgid "% resolver for %qD should return %qT" msgstr "" -#: cgraphunit.cc:1510 +#: cgraphunit.cc:1512 #, gcc-internal-format msgid "%qD alias between functions of incompatible types %qT and %qT" msgstr "" -#: cgraphunit.cc:1513 cgraphunit.cc:1595 +#: cgraphunit.cc:1515 cgraphunit.cc:1597 #, gcc-internal-format msgid "aliased declaration here" msgstr "" -#: cgraphunit.cc:1551 c-family/c-pragma.cc:347 +#: cgraphunit.cc:1553 c-family/c-pragma.cc:347 #, gcc-internal-format msgid "%q+D aliased to undefined symbol %qE" msgstr "" -#: cgraphunit.cc:1567 +#: cgraphunit.cc:1569 #, gcc-internal-format msgid "%q+D aliased to external symbol %qE" msgstr "" -#: cgraphunit.cc:1592 +#: cgraphunit.cc:1594 #, gcc-internal-format msgid "%q+D alias between function and variable is not supported" msgstr "" -#: cgraphunit.cc:1666 +#: cgraphunit.cc:1668 #, gcc-internal-format msgid "failed to reclaim unneeded function" msgstr "" -#: cgraphunit.cc:1694 +#: cgraphunit.cc:1696 #, gcc-internal-format msgid "failed to reclaim unneeded function in same comdat group" msgstr "" -#: cgraphunit.cc:1870 +#: cgraphunit.cc:1872 #, gcc-internal-format msgid "size of return value of %q+D is %u bytes" msgstr "" -#: cgraphunit.cc:1874 +#: cgraphunit.cc:1876 #, gcc-internal-format msgid "size of return value of %q+D is larger than %wu bytes" msgstr "" -#: cgraphunit.cc:2436 +#: cgraphunit.cc:2440 #, gcc-internal-format msgid "nodes with unreleased memory found" msgstr "" @@ -26540,13 +26654,13 @@ msgstr "" msgid "cannot find %qs" msgstr "" -#: collect-utils.cc:225 collect2.cc:2388 collect2.cc:2558 gcc.cc:3419 +#: collect-utils.cc:225 collect2.cc:2389 collect2.cc:2559 gcc.cc:3419 #: gcc.cc:7825 #, gcc-internal-format msgid "% failed: %m" msgstr "" -#: collect-utils.cc:234 collect2.cc:2397 collect2.cc:2566 gcc.cc:2703 +#: collect-utils.cc:234 collect2.cc:2398 collect2.cc:2567 gcc.cc:2703 #, gcc-internal-format msgid "%s: %m" msgstr "" @@ -26561,7 +26675,7 @@ msgstr "" msgid "ld returned %d exit status" msgstr "" -#: collect2.cc:916 gcc.cc:8345 config/nvptx/mkoffload.cc:644 +#: collect2.cc:916 gcc.cc:8345 config/nvptx/mkoffload.cc:646 #, gcc-internal-format msgid "atexit failed" msgstr "" @@ -26571,90 +26685,90 @@ msgstr "" msgid "no arguments" msgstr "" -#: collect2.cc:1286 opts.cc:1192 +#: collect2.cc:1287 opts.cc:1192 #, gcc-internal-format msgid "LTO support has not been enabled in this configuration" msgstr "" -#: collect2.cc:1327 graph.cc:55 lto-wrapper.cc:1720 lto-wrapper.cc:1776 -#: toplev.cc:1518 objc/objc-act.cc:462 +#: collect2.cc:1328 graph.cc:55 lto-wrapper.cc:1724 lto-wrapper.cc:1780 +#: toplev.cc:1520 objc/objc-act.cc:462 #, gcc-internal-format msgid "cannot open %s: %m" msgstr "" -#: collect2.cc:1447 +#: collect2.cc:1448 #, gcc-internal-format msgid "unknown demangling style %qs" msgstr "" -#: collect2.cc:1549 collect2.cc:1727 collect2.cc:1767 +#: collect2.cc:1550 collect2.cc:1728 collect2.cc:1768 #, gcc-internal-format msgid "fopen %s: %m" msgstr "" -#: collect2.cc:1552 collect2.cc:1732 collect2.cc:1770 +#: collect2.cc:1553 collect2.cc:1733 collect2.cc:1771 #, gcc-internal-format msgid "fclose %s: %m" msgstr "" -#: collect2.cc:2322 lto-wrapper.cc:1215 lto-wrapper.cc:1230 +#: collect2.cc:2323 lto-wrapper.cc:1219 lto-wrapper.cc:1234 #: lto/lto-object.cc:148 lto/lto-object.cc:182 lto/lto-object.cc:279 #: lto/lto-object.cc:336 lto/lto-object.cc:360 #, gcc-internal-format, gfc-internal-format msgid "%s: %s" msgstr "" -#: collect2.cc:2362 +#: collect2.cc:2363 #, gcc-internal-format msgid "cannot find %" msgstr "" -#: collect2.cc:2410 +#: collect2.cc:2411 #, gcc-internal-format msgid "cannot open nm output: %m" msgstr "" -#: collect2.cc:2465 +#: collect2.cc:2466 #, gcc-internal-format, gfc-internal-format msgid "init function found in object %s" msgstr "" -#: collect2.cc:2476 +#: collect2.cc:2477 #, gcc-internal-format, gfc-internal-format msgid "fini function found in object %s" msgstr "" -#: collect2.cc:2533 +#: collect2.cc:2534 #, gcc-internal-format msgid "cannot find %" msgstr "" -#: collect2.cc:2579 +#: collect2.cc:2580 #, gcc-internal-format msgid "cannot open ldd output: %m" msgstr "" -#: collect2.cc:2597 +#: collect2.cc:2598 #, gcc-internal-format, gfc-internal-format msgid "dynamic dependency %s not found" msgstr "" -#: collect2.cc:2609 +#: collect2.cc:2610 #, gcc-internal-format msgid "unable to open dynamic dependency %qs" msgstr "" -#: collect2.cc:2761 +#: collect2.cc:2762 #, gcc-internal-format, gfc-internal-format msgid "%s: not a COFF file" msgstr "" -#: collect2.cc:2920 +#: collect2.cc:2921 #, gcc-internal-format, gfc-internal-format msgid "%s: cannot open as COFF file" msgstr "" -#: collect2.cc:2979 +#: collect2.cc:2980 #, gcc-internal-format, gfc-internal-format msgid "library lib%s not found" msgstr "" @@ -26853,7 +26967,7 @@ msgstr "" msgid "closed intervals" msgstr "" -#: diagnostic.cc:2642 +#: diagnostic.cc:2659 #, gcc-internal-format msgid "debug path" msgstr "" @@ -26906,12 +27020,12 @@ msgid "" "cfi_personality%> directive" msgstr "" -#: dwarf2out.cc:11187 +#: dwarf2out.cc:11196 #, gcc-internal-format msgid "%<-gdwarf-6%> is output as version 5 with incompatibilities" msgstr "" -#: dwarf2out.cc:15069 +#: dwarf2out.cc:15078 #, gcc-internal-format, gfc-internal-format msgid "non-delegitimized UNSPEC %s (%d) found in variable location" msgstr "" @@ -26991,7 +27105,7 @@ msgstr "" msgid "% does not match %" msgstr "" -#: except.cc:3541 tree.cc:14394 value-prof.cc:529 +#: except.cc:3541 tree.cc:14395 value-prof.cc:529 #, gcc-internal-format msgid "%qs failed" msgstr "" @@ -27023,17 +27137,17 @@ msgid "" "truncated into %wu-bit" msgstr "" -#: expr.cc:12327 +#: expr.cc:12330 #, gcc-internal-format msgid "call to %qs declared with attribute error: %s" msgstr "" -#: expr.cc:12341 +#: expr.cc:12344 #, gcc-internal-format msgid "call to %qs declared with attribute warning: %s" msgstr "" -#: expr.cc:13387 +#: expr.cc:13391 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when simplifying % to " @@ -27050,7 +27164,7 @@ msgstr "" msgid "the frame size of %wu bytes is larger than %wu bytes" msgstr "" -#: final.cc:4391 toplev.cc:1398 tree-cfgcleanup.cc:1540 +#: final.cc:4391 toplev.cc:1400 tree-cfgcleanup.cc:1540 #, gcc-internal-format msgid "could not open final insn dump file %qs: %m" msgstr "" @@ -27075,65 +27189,65 @@ msgstr "" msgid "assuming signed overflow does not occur when simplifying range test" msgstr "" -#: fold-const.cc:6741 fold-const.cc:6757 +#: fold-const.cc:6742 fold-const.cc:6758 #, gcc-internal-format, gfc-internal-format msgid "comparison is always %d" msgstr "" -#: fold-const.cc:6905 +#: fold-const.cc:6906 #, gcc-internal-format msgid "% of unmatched not-equal tests is always 1" msgstr "" -#: fold-const.cc:6910 +#: fold-const.cc:6911 #, gcc-internal-format msgid "% of mutually exclusive equal-tests is always 0" msgstr "" -#: fold-const.cc:10104 +#: fold-const.cc:10128 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when reducing constant in comparison" msgstr "" -#: fold-const.cc:10511 +#: fold-const.cc:10535 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when combining constants around a " "comparison" msgstr "" -#: fold-const.cc:13892 +#: fold-const.cc:13947 #, gcc-internal-format msgid "fold check: original tree changed by fold" msgstr "" -#: function.cc:254 +#: function.cc:255 #, gcc-internal-format msgid "total size of local objects %wu exceeds maximum %wu" msgstr "" -#: function.cc:258 +#: function.cc:259 #, gcc-internal-format msgid "total size of local objects exceeds maximum %wu" msgstr "" -#: function.cc:1788 gimplify.cc:6920 gimplify.cc:7082 +#: function.cc:1789 gimplify.cc:7017 gimplify.cc:7179 #, gcc-internal-format msgid "impossible constraint in %" msgstr "" -#: function.cc:4288 +#: function.cc:4290 #, gcc-internal-format msgid "variable %q+D might be clobbered by % or %" msgstr "" -#: function.cc:4309 +#: function.cc:4311 #, gcc-internal-format msgid "argument %q+D might be clobbered by % or %" msgstr "" -#: function.cc:4976 +#: function.cc:4978 #, gcc-internal-format msgid "function returns an aggregate" msgstr "" @@ -27273,7 +27387,7 @@ msgid "" "options were specified on the command line" msgstr "" -#: gcc.cc:5048 toplev.cc:712 +#: gcc.cc:5048 toplev.cc:714 #, gcc-internal-format msgid "input file %qs is the same as output file" msgstr "" @@ -27500,7 +27614,7 @@ msgstr "" msgid "multilib exclusions %qs is invalid" msgstr "" -#: gcc.cc:9856 common/config/riscv/riscv-common.cc:2129 +#: gcc.cc:9856 common/config/riscv/riscv-common.cc:2242 #, gcc-internal-format msgid "multilib select %qs %qs is invalid" msgstr "" @@ -27779,49 +27893,49 @@ msgstr "" msgid "array subscript %wu is above array bounds of %qT" msgstr "" -#: gimple-fold.cc:2078 gimple-fold.cc:3130 gimple-ssa-warn-restrict.cc:2080 +#: gimple-fold.cc:2081 gimple-fold.cc:3133 gimple-ssa-warn-restrict.cc:2080 #, gcc-internal-format msgid "%qD source argument is the same as destination" msgstr "" -#: gimple-fold.cc:2144 +#: gimple-fold.cc:2147 #, gcc-internal-format msgid "" "%qD destination unchanged after copying no bytes from a string of length %E" msgstr "" -#: gimple-fold.cc:2149 +#: gimple-fold.cc:2152 #, gcc-internal-format msgid "%qD destination unchanged after copying no bytes" msgstr "" -#: gimple-fold.cc:2524 gimple-ssa-warn-access.cc:859 +#: gimple-fold.cc:2527 gimple-ssa-warn-access.cc:859 #, gcc-internal-format msgid "%qD specified bound %E exceeds destination size %E" msgstr "" -#: gimple-fold.cc:2543 +#: gimple-fold.cc:2546 #, gcc-internal-format msgid "%qD specified bound %E equals source length" msgstr "" -#: gimple-fold.cc:4547 gimple-fold.cc:4774 +#: gimple-fold.cc:4550 gimple-fold.cc:4777 #, gcc-internal-format msgid "" "flexible array member %qD does not have well defined padding bits for %qs" msgstr "" -#: gimple-fold.cc:4723 cp/constexpr.cc:4890 +#: gimple-fold.cc:4726 cp/constexpr.cc:4888 #, gcc-internal-format msgid "PDP11 bit-field handling unsupported in %qs" msgstr "" -#: gimple-fold.cc:5004 +#: gimple-fold.cc:5007 #, gcc-internal-format, gfc-internal-format msgid "%s not supported for variable length aggregates" msgstr "" -#: gimple-fold.cc:5010 +#: gimple-fold.cc:5013 #, gcc-internal-format, gfc-internal-format msgid "%s not supported on this target" msgstr "" @@ -27867,17 +27981,17 @@ msgstr "" msgid "function returns address of local variable" msgstr "" -#: gimple-ssa-isolate-paths.cc:417 gimple-ssa-warn-access.cc:2054 -#: gimple-ssa-warn-access.cc:3712 tree.cc:12441 tree.cc:12478 tree.cc:12519 -#: tree.cc:12552 c/c-parser.cc:20560 c/c-parser.cc:20701 c/c-typeck.cc:3157 +#: gimple-ssa-isolate-paths.cc:417 gimple-ssa-warn-access.cc:2055 +#: gimple-ssa-warn-access.cc:3713 tree.cc:12442 tree.cc:12479 tree.cc:12520 +#: tree.cc:12553 c/c-parser.cc:20633 c/c-parser.cc:20774 c/c-typeck.cc:3157 #: c/c-typeck.cc:3252 c/c-typeck.cc:5869 c/c-typeck.cc:11491 #: c/c-typeck.cc:11508 c/gimple-parser.cc:2574 c/gimple-parser.cc:2582 -#: cp/call.cc:8180 cp/call.cc:10380 cp/class.cc:9399 cp/constexpr.cc:894 -#: cp/constexpr.cc:1321 cp/constexpr.cc:4311 cp/constexpr.cc:5982 -#: cp/constexpr.cc:6353 cp/cvt.cc:1081 cp/cvt.cc:1119 cp/decl.cc:9108 -#: cp/decl2.cc:5848 cp/decl2.cc:5903 cp/method.cc:1234 cp/parser.cc:22475 -#: cp/pt.cc:9156 cp/semantics.cc:2309 cp/semantics.cc:3713 cp/semantics.cc:4831 -#: cp/typeck.cc:2143 cp/typeck.cc:2363 cp/typeck.cc:4508 cp/typeck.cc:10690 +#: cp/call.cc:8180 cp/call.cc:10375 cp/class.cc:9399 cp/constexpr.cc:892 +#: cp/constexpr.cc:1319 cp/constexpr.cc:4309 cp/constexpr.cc:5980 +#: cp/constexpr.cc:6351 cp/cvt.cc:1095 cp/cvt.cc:1133 cp/decl.cc:9104 +#: cp/decl2.cc:5886 cp/decl2.cc:5941 cp/method.cc:1234 cp/parser.cc:22475 +#: cp/pt.cc:9157 cp/semantics.cc:2374 cp/semantics.cc:3778 cp/semantics.cc:4896 +#: cp/typeck.cc:2143 cp/typeck.cc:2363 cp/typeck.cc:4509 cp/typeck.cc:10693 #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621 #: rust/backend/rust-tree.cc:3813 #, gcc-internal-format @@ -28856,287 +28970,287 @@ msgstr "" msgid "expecting between %E and %E bytes in a region of size %E" msgstr "" -#: gimple-ssa-warn-access.cc:2049 +#: gimple-ssa-warn-access.cc:2050 #, gcc-internal-format msgid "%qD called on pointer %qE with nonzero offset%s" msgstr "" -#: gimple-ssa-warn-access.cc:2064 gimple-ssa-warn-access.cc:3789 +#: gimple-ssa-warn-access.cc:2065 gimple-ssa-warn-access.cc:3790 #, gcc-internal-format msgid "returned from %qD" msgstr "" -#: gimple-ssa-warn-access.cc:2067 +#: gimple-ssa-warn-access.cc:2068 #, gcc-internal-format msgid "returned from %qT" msgstr "" -#: gimple-ssa-warn-access.cc:2069 +#: gimple-ssa-warn-access.cc:2070 #, gcc-internal-format msgid "obtained here" msgstr "" -#: gimple-ssa-warn-access.cc:2276 +#: gimple-ssa-warn-access.cc:2277 #, gcc-internal-format msgid "argument %i value %qE is negative" msgstr "" -#: gimple-ssa-warn-access.cc:2293 +#: gimple-ssa-warn-access.cc:2294 #, gcc-internal-format, gfc-internal-format msgid "argument %i value is zero" msgstr "" -#: gimple-ssa-warn-access.cc:2311 +#: gimple-ssa-warn-access.cc:2312 #, gcc-internal-format msgid "argument %i value %qE exceeds maximum object size %E" msgstr "" -#: gimple-ssa-warn-access.cc:2325 +#: gimple-ssa-warn-access.cc:2326 #, gcc-internal-format msgid "argument %i range [%E, %E] is negative" msgstr "" -#: gimple-ssa-warn-access.cc:2332 +#: gimple-ssa-warn-access.cc:2333 #, gcc-internal-format msgid "argument %i range [%E, %E] exceeds maximum object size %E" msgstr "" -#: gimple-ssa-warn-access.cc:2362 +#: gimple-ssa-warn-access.cc:2363 #, gcc-internal-format msgid "product %<%E * %E%> of arguments %i and %i exceeds %" msgstr "" -#: gimple-ssa-warn-access.cc:2368 +#: gimple-ssa-warn-access.cc:2369 #, gcc-internal-format msgid "" "product %<%E * %E%> of arguments %i and %i exceeds maximum object size %E" msgstr "" -#: gimple-ssa-warn-access.cc:2379 gimple-ssa-warn-access.cc:2382 +#: gimple-ssa-warn-access.cc:2380 gimple-ssa-warn-access.cc:2383 #, gcc-internal-format msgid "argument %i in the range [%E, %E]" msgstr "" -#: gimple-ssa-warn-access.cc:2393 +#: gimple-ssa-warn-access.cc:2394 #, gcc-internal-format msgid "in a call to built-in allocation function %qD" msgstr "" -#: gimple-ssa-warn-access.cc:2396 +#: gimple-ssa-warn-access.cc:2397 #, gcc-internal-format msgid "in a call to allocation function %qD declared here" msgstr "" -#: gimple-ssa-warn-access.cc:2841 +#: gimple-ssa-warn-access.cc:2842 #, gcc-internal-format msgid "unknown architecture specifier in memory model %wi for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:2933 +#: gimple-ssa-warn-access.cc:2934 #, gcc-internal-format msgid "invalid memory model %qs for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:2937 +#: gimple-ssa-warn-access.cc:2938 #, gcc-internal-format msgid "invalid memory model %wi for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:2952 gimple-ssa-warn-access.cc:3006 +#: gimple-ssa-warn-access.cc:2953 gimple-ssa-warn-access.cc:3007 #, gcc-internal-format, gfc-internal-format msgid "valid models are %s" msgstr "" -#: gimple-ssa-warn-access.cc:2966 +#: gimple-ssa-warn-access.cc:2967 #, gcc-internal-format msgid "invalid failure memory model %qs for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:2971 +#: gimple-ssa-warn-access.cc:2972 #, gcc-internal-format msgid "valid failure models are %qs, %qs, %qs, %qs" msgstr "" -#: gimple-ssa-warn-access.cc:2987 +#: gimple-ssa-warn-access.cc:2988 #, gcc-internal-format msgid "" "failure memory model %qs cannot be stronger than success memory model %qs " "for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3013 +#: gimple-ssa-warn-access.cc:3014 #, gcc-internal-format msgid "" "failure memory model %wi cannot be stronger than success memory model %wi " "for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3457 +#: gimple-ssa-warn-access.cc:3458 #, gcc-internal-format, gfc-internal-format msgid "" "bound argument %i value %s is negative for a variable length array argument " "%i of type %s" msgstr "" -#: gimple-ssa-warn-access.cc:3465 +#: gimple-ssa-warn-access.cc:3466 #, gcc-internal-format, gfc-internal-format msgid "argument %i value %s is negative" msgstr "" -#: gimple-ssa-warn-access.cc:3511 +#: gimple-ssa-warn-access.cc:3512 #, gcc-internal-format, gfc-internal-format msgid "argument %i is null but the corresponding size argument %i value is %s" msgstr "" -#: gimple-ssa-warn-access.cc:3575 +#: gimple-ssa-warn-access.cc:3576 #, gcc-internal-format msgid "referencing argument %u of type %qT" msgstr "" -#: gimple-ssa-warn-access.cc:3589 +#: gimple-ssa-warn-access.cc:3590 #, gcc-internal-format msgid "in a call to function %qD declared with attribute %qs" msgstr "" -#: gimple-ssa-warn-access.cc:3593 +#: gimple-ssa-warn-access.cc:3594 #, gcc-internal-format msgid "in a call with type %qT and attribute %qs" msgstr "" -#: gimple-ssa-warn-access.cc:3600 +#: gimple-ssa-warn-access.cc:3601 #, gcc-internal-format msgid "in a call to function %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3603 +#: gimple-ssa-warn-access.cc:3604 #, gcc-internal-format msgid "in a call with type %qT" msgstr "" -#: gimple-ssa-warn-access.cc:3709 +#: gimple-ssa-warn-access.cc:3710 #, gcc-internal-format msgid "%qD called on unallocated object %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3728 +#: gimple-ssa-warn-access.cc:3729 #, gcc-internal-format msgid "%qD called on a pointer to an unallocated object %qE" msgstr "" -#: gimple-ssa-warn-access.cc:3737 +#: gimple-ssa-warn-access.cc:3738 #, gcc-internal-format msgid "assigned here" msgstr "" -#: gimple-ssa-warn-access.cc:3770 +#: gimple-ssa-warn-access.cc:3771 #, gcc-internal-format msgid "%qD called on pointer returned from a mismatched allocation function" msgstr "" -#: gimple-ssa-warn-access.cc:3779 +#: gimple-ssa-warn-access.cc:3780 #, gcc-internal-format msgid "%qD called on pointer to an unallocated object" msgstr "" -#: gimple-ssa-warn-access.cc:3927 +#: gimple-ssa-warn-access.cc:3928 #, gcc-internal-format msgid "pointer %qE may be used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3928 +#: gimple-ssa-warn-access.cc:3929 #, gcc-internal-format msgid "pointer %qE used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3932 +#: gimple-ssa-warn-access.cc:3933 #, gcc-internal-format msgid "pointer may be used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3933 +#: gimple-ssa-warn-access.cc:3934 #, gcc-internal-format msgid "pointer used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3937 +#: gimple-ssa-warn-access.cc:3938 #, gcc-internal-format msgid "call to %qD here" msgstr "" -#: gimple-ssa-warn-access.cc:3954 +#: gimple-ssa-warn-access.cc:3955 #, gcc-internal-format msgid "dangling pointer %qE to %qD may be used" msgstr "" -#: gimple-ssa-warn-access.cc:3955 +#: gimple-ssa-warn-access.cc:3956 #, gcc-internal-format msgid "using dangling pointer %qE to %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3960 +#: gimple-ssa-warn-access.cc:3961 #, gcc-internal-format msgid "dangling pointer to %qD may be used" msgstr "" -#: gimple-ssa-warn-access.cc:3961 +#: gimple-ssa-warn-access.cc:3962 #, gcc-internal-format msgid "using a dangling pointer to %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3964 gimple-ssa-warn-access.cc:4612 -#: gimple-ssa-warn-access.cc:4615 gimple-ssa-warn-restrict.cc:1830 +#: gimple-ssa-warn-access.cc:3965 gimple-ssa-warn-access.cc:4613 +#: gimple-ssa-warn-access.cc:4616 gimple-ssa-warn-restrict.cc:1830 #: tree-ssa-uninit.cc:921 tree-ssa-uninit.cc:1120 c/c-decl.cc:4099 #: c/c-decl.cc:4389 c/c-typeck.cc:9539 c/c-typeck.cc:12293 cp/call.cc:8555 -#: cp/call.cc:8566 cp/class.cc:1718 cp/class.cc:3517 cp/constexpr.cc:1067 -#: cp/decl.cc:4631 cp/decl.cc:12889 cp/decl.cc:13477 cp/decl.cc:13486 -#: cp/decl.cc:14481 cp/friend.cc:406 cp/friend.cc:416 cp/init.cc:2905 +#: cp/call.cc:8566 cp/class.cc:1718 cp/class.cc:3517 cp/constexpr.cc:1065 +#: cp/decl.cc:4631 cp/decl.cc:12893 cp/decl.cc:13481 cp/decl.cc:13490 +#: cp/decl.cc:14485 cp/friend.cc:406 cp/friend.cc:416 cp/init.cc:2935 #: cp/parser.cc:3692 cp/parser.cc:3838 cp/parser.cc:3889 cp/parser.cc:7166 -#: cp/parser.cc:25045 cp/typeck.cc:5001 +#: cp/parser.cc:25045 cp/typeck.cc:5002 #, gcc-internal-format msgid "%qD declared here" msgstr "" -#: gimple-ssa-warn-access.cc:3972 +#: gimple-ssa-warn-access.cc:3973 #, gcc-internal-format msgid "dangling pointer %qE to an unnamed temporary may be used" msgstr "" -#: gimple-ssa-warn-access.cc:3974 +#: gimple-ssa-warn-access.cc:3975 #, gcc-internal-format msgid "using dangling pointer %qE to an unnamed temporary" msgstr "" -#: gimple-ssa-warn-access.cc:3980 +#: gimple-ssa-warn-access.cc:3981 #, gcc-internal-format msgid "dangling pointer to an unnamed temporary may be used" msgstr "" -#: gimple-ssa-warn-access.cc:3982 +#: gimple-ssa-warn-access.cc:3983 #, gcc-internal-format msgid "using a dangling pointer to an unnamed temporary" msgstr "" -#: gimple-ssa-warn-access.cc:3986 +#: gimple-ssa-warn-access.cc:3987 #, gcc-internal-format msgid "unnamed temporary defined here" msgstr "" -#: gimple-ssa-warn-access.cc:4076 +#: gimple-ssa-warn-access.cc:4077 #, gcc-internal-format msgid "%qD called on pointer %qE passed to mismatched allocation function %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4081 +#: gimple-ssa-warn-access.cc:4082 #, gcc-internal-format msgid "%qD called on a pointer passed to mismatched reallocation function %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4087 +#: gimple-ssa-warn-access.cc:4088 #, gcc-internal-format msgid "call to %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4606 +#: gimple-ssa-warn-access.cc:4607 #, gcc-internal-format msgid "storing the address of local variable %qD in %qE" msgstr "" @@ -29379,7 +29493,7 @@ msgid "" "type %qT" msgstr "" -#: gimple-ssa-warn-restrict.cc:1785 c-family/c-warn.cc:3805 +#: gimple-ssa-warn-restrict.cc:1785 c-family/c-warn.cc:3804 #, gcc-internal-format msgid "array %qD declared here" msgstr "" @@ -29468,444 +29582,444 @@ msgstr "" msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" msgstr "" -#: gimplify.cc:1399 +#: gimplify.cc:1426 #, gcc-internal-format msgid "" "% directive for %qD inside a target region must specify an " "% clause" msgstr "" -#: gimplify.cc:2271 +#: gimplify.cc:2298 #, gcc-internal-format msgid "statement will never be executed" msgstr "" -#: gimplify.cc:2335 +#: gimplify.cc:2362 #, gcc-internal-format msgid "%qs cannot be initialized with%<-ftrivial-auto-var_init%>" msgstr "" -#: gimplify.cc:2727 gimplify.cc:2735 +#: gimplify.cc:2754 gimplify.cc:2762 #, gcc-internal-format msgid "this statement may fall through" msgstr "" -#: gimplify.cc:2737 +#: gimplify.cc:2764 #, gcc-internal-format msgid "here" msgstr "" #. We've found [[fallthrough]]; at the end of a switch, which the C++ #. standard says is ill-formed; see [dcl.attr.fallthrough]. -#: gimplify.cc:2808 gimplify.cc:2865 gimplify.cc:2891 +#: gimplify.cc:2835 gimplify.cc:2892 gimplify.cc:2918 #, gcc-internal-format msgid "attribute % not preceding a case label or default label" msgstr "" -#: gimplify.cc:4064 +#: gimplify.cc:4091 #, gcc-internal-format msgid "using result of function returning %" msgstr "" -#: gimplify.cc:6921 +#: gimplify.cc:7018 #, gcc-internal-format, gfc-internal-format msgid "non-memory output %d must stay in memory" msgstr "" -#: gimplify.cc:6936 +#: gimplify.cc:7033 #, gcc-internal-format msgid "invalid lvalue in % output %d" msgstr "" -#: gimplify.cc:7083 +#: gimplify.cc:7180 #, gcc-internal-format, gfc-internal-format msgid "non-memory input %d must stay in memory" msgstr "" -#: gimplify.cc:7123 gimplify.cc:7133 +#: gimplify.cc:7220 gimplify.cc:7230 #, gcc-internal-format, gfc-internal-format msgid "memory input %d is not directly addressable" msgstr "" -#: gimplify.cc:7756 +#: gimplify.cc:7853 #, gcc-internal-format msgid "" "threadprivate variable %qE used in a region with % clause" msgstr "" -#: gimplify.cc:7758 +#: gimplify.cc:7855 #, gcc-internal-format msgid "enclosing region" msgstr "" -#: gimplify.cc:7762 +#: gimplify.cc:7859 #, gcc-internal-format msgid "threadprivate variable %qE used in target region" msgstr "" -#: gimplify.cc:7764 +#: gimplify.cc:7861 #, gcc-internal-format msgid "enclosing target region" msgstr "" -#: gimplify.cc:7777 +#: gimplify.cc:7874 #, gcc-internal-format msgid "threadprivate variable %qE used in untied task" msgstr "" -#: gimplify.cc:7779 +#: gimplify.cc:7876 #, gcc-internal-format msgid "enclosing task" msgstr "" -#: gimplify.cc:7876 +#: gimplify.cc:7973 #, gcc-internal-format msgid "%qE not specified in enclosing %qs" msgstr "" -#: gimplify.cc:7878 +#: gimplify.cc:7975 #, gcc-internal-format msgid "enclosing %qs" msgstr "" -#: gimplify.cc:8052 +#: gimplify.cc:8149 #, gcc-internal-format msgid "%qE not specified in enclosing OpenACC %qs construct" msgstr "" -#: gimplify.cc:8056 +#: gimplify.cc:8153 #, gcc-internal-format msgid "enclosing OpenACC %qs construct and" msgstr "" -#: gimplify.cc:8059 +#: gimplify.cc:8156 #, gcc-internal-format msgid "enclosing OpenACC %qs construct with %qs clause" msgstr "" -#: gimplify.cc:8129 +#: gimplify.cc:8226 #, gcc-internal-format msgid "%qE with % clause used in % function" msgstr "" -#: gimplify.cc:8137 +#: gimplify.cc:8234 #, gcc-internal-format msgid "%qE requires a % directive for use in a % function" msgstr "" -#: gimplify.cc:8206 +#: gimplify.cc:8296 #, gcc-internal-format msgid "%qE not specified in enclosing %" msgstr "" -#: gimplify.cc:8208 +#: gimplify.cc:8298 #, gcc-internal-format msgid "enclosing %" msgstr "" -#: gimplify.cc:8243 gimplify.cc:12324 +#: gimplify.cc:8333 gimplify.cc:12427 #, gcc-internal-format msgid "variable %qE declared in enclosing % region" msgstr "" -#: gimplify.cc:8264 +#: gimplify.cc:8354 #, gcc-internal-format msgid "%qD referenced in target region does not have a mappable type" msgstr "" -#: gimplify.cc:8395 +#: gimplify.cc:8498 #, gcc-internal-format msgid "iteration variable %qE is predetermined linear" msgstr "" -#: gimplify.cc:8398 +#: gimplify.cc:8501 #, gcc-internal-format msgid "iteration variable %qE should be private" msgstr "" -#: gimplify.cc:8412 +#: gimplify.cc:8515 #, gcc-internal-format msgid "iteration variable %qE should not be firstprivate" msgstr "" -#: gimplify.cc:8415 +#: gimplify.cc:8518 #, gcc-internal-format msgid "iteration variable %qE should not be reduction" msgstr "" -#: gimplify.cc:8418 +#: gimplify.cc:8521 #, gcc-internal-format msgid "iteration variable %qE should not be linear" msgstr "" -#: gimplify.cc:9422 gimplify.cc:9433 gimplify.cc:9445 gimplify.cc:9461 -#: gimplify.cc:9666 gimplify.cc:9689 gimplify.cc:9700 gimplify.cc:9718 +#: gimplify.cc:9525 gimplify.cc:9536 gimplify.cc:9548 gimplify.cc:9564 +#: gimplify.cc:9769 gimplify.cc:9792 gimplify.cc:9803 gimplify.cc:9821 #, gcc-internal-format msgid "unexpected mapping node" msgstr "" -#: gimplify.cc:9755 +#: gimplify.cc:9858 #, gcc-internal-format msgid "unexpected pointer mapping node" msgstr "" -#: gimplify.cc:9968 +#: gimplify.cc:10071 #, gcc-internal-format msgid "base pointer cycle detected" msgstr "" -#: gimplify.cc:10475 +#: gimplify.cc:10578 #, gcc-internal-format msgid "" "data movement for component %qE is not compatible with movement for struct " "%qE" msgstr "" -#: gimplify.cc:10791 +#: gimplify.cc:10894 #, gcc-internal-format msgid "%qE appears more than once in map clauses" msgstr "" -#: gimplify.cc:11747 +#: gimplify.cc:11850 #, gcc-internal-format msgid "mapping field %qE of variable length structure" msgstr "" -#: gimplify.cc:12017 gimplify.cc:12023 +#: gimplify.cc:12120 gimplify.cc:12126 #, gcc-internal-format msgid "conditional % clause on %qs construct" msgstr "" -#: gimplify.cc:12040 +#: gimplify.cc:12143 #, gcc-internal-format msgid "non-scalar variable %qD in conditional % clause" msgstr "" -#: gimplify.cc:12062 +#: gimplify.cc:12165 #, gcc-internal-format msgid "% reduction modifier on a construct with a % clause" msgstr "" -#: gimplify.cc:12070 +#: gimplify.cc:12173 #, gcc-internal-format msgid "" "invalid % reduction modifier on construct other than %, " "%qs, % or %" msgstr "" -#: gimplify.cc:12081 gimplify.cc:12087 gimplify.cc:12093 gimplify.cc:12099 -#: gimplify.cc:12105 gimplify.cc:16319 +#: gimplify.cc:12184 gimplify.cc:12190 gimplify.cc:12196 gimplify.cc:12202 +#: gimplify.cc:12208 gimplify.cc:16422 #, gcc-internal-format msgid "% % clause on %qs construct" msgstr "" -#: gimplify.cc:12199 +#: gimplify.cc:12302 #, gcc-internal-format msgid "" "% clause for variable other than loop iterator specified on " "construct combined with %" msgstr "" -#: gimplify.cc:12824 +#: gimplify.cc:12927 #, gcc-internal-format msgid "" "copyprivate variable %qE is not threadprivate or private in outer context" msgstr "" -#: gimplify.cc:12881 +#: gimplify.cc:12984 #, gcc-internal-format msgid "%s variable %qE is private in outer context" msgstr "" -#: gimplify.cc:12913 +#: gimplify.cc:13016 #, gcc-internal-format msgid "expected %qs % clause modifier rather than %qs" msgstr "" -#: gimplify.cc:12952 +#: gimplify.cc:13055 #, gcc-internal-format msgid "" "% clause with % is only allowed on % construct" msgstr "" -#: gimplify.cc:12968 +#: gimplify.cc:13071 #, gcc-internal-format msgid "" "with %, only the %, %, %, " "%, and % clauses may appear on the construct" msgstr "" -#: gimplify.cc:13184 +#: gimplify.cc:13287 #, gcc-internal-format msgid "" "%qD specified in %qs clause but not in % % clause on " "the containing construct" msgstr "" -#: gimplify.cc:13396 +#: gimplify.cc:13499 #, gcc-internal-format msgid "%<_Atomic%> %qD in implicit % clause" msgstr "" -#: gimplify.cc:13450 +#: gimplify.cc:13553 #, gcc-internal-format msgid "" "%<_Atomic%> %qD in implicit % clause on % construct" msgstr "" -#: gimplify.cc:13788 +#: gimplify.cc:13891 #, gcc-internal-format msgid "%<_Atomic%> %qD in % clause on % construct" msgstr "" -#: gimplify.cc:13861 +#: gimplify.cc:13964 #, gcc-internal-format msgid "" "same variable used in % and % clauses on " "% construct" msgstr "" -#: gimplify.cc:14038 +#: gimplify.cc:14141 #, gcc-internal-format msgid "" "incompatible data clause with reduction on %qE; promoting to " "%" msgstr "" -#: gimplify.cc:14336 +#: gimplify.cc:14439 #, gcc-internal-format msgid "" "%qD specified in % % clause but not in % " "directive clause" msgstr "" -#: gimplify.cc:14355 +#: gimplify.cc:14458 #, gcc-internal-format msgid "invalid private reduction on %qE" msgstr "" -#: gimplify.cc:14522 +#: gimplify.cc:14625 #, gcc-internal-format msgid "" "% % clause used together with % clause for a " "variable other than loop iterator" msgstr "" -#: gimplify.cc:14866 +#: gimplify.cc:14969 #, gcc-internal-format msgid "% kind in % clause on a % construct" msgstr "" -#: gimplify.cc:14876 +#: gimplify.cc:14979 #, gcc-internal-format msgid "% construct with % clause but no % clauses" msgstr "" -#: gimplify.cc:15160 gimplify.cc:15164 gimplify.cc:15173 gimplify.cc:15185 -#: gimplify.cc:15190 +#: gimplify.cc:15263 gimplify.cc:15267 gimplify.cc:15276 gimplify.cc:15288 +#: gimplify.cc:15293 #, gcc-internal-format msgid "%qs clause may not appear on non-rectangular %qs" msgstr "" -#: gimplify.cc:15351 +#: gimplify.cc:15454 #, gcc-internal-format msgid "" "% clause may not be specified together with % clause if " "stand-alone % construct is nested in it" msgstr "" -#: gimplify.cc:15416 +#: gimplify.cc:15519 #, gcc-internal-format msgid "threadprivate iteration variable %qD" msgstr "" -#: gimplify.cc:15447 gimplify.cc:15555 +#: gimplify.cc:15550 gimplify.cc:15658 #, gcc-internal-format msgid "conditional % on loop iterator %qD ignored" msgstr "" -#: gimplify.cc:16257 +#: gimplify.cc:16360 #, gcc-internal-format msgid "" "% clause not specified on a % construct not nested inside " "another OpenMP construct" msgstr "" -#: gimplify.cc:16281 +#: gimplify.cc:16384 #, gcc-internal-format msgid "" "% on a % construct nested inside % construct" msgstr "" -#: gimplify.cc:16301 +#: gimplify.cc:16404 #, gcc-internal-format msgid "" "% on a % region not strictly nested inside of a " "% region" msgstr "" -#: gimplify.cc:16326 +#: gimplify.cc:16429 #, gcc-internal-format msgid "" "invalid % reduction modifier on construct other than %, " "%qs or %" msgstr "" -#: gimplify.cc:16354 +#: gimplify.cc:16457 #, gcc-internal-format msgid "" "% clause on a % construct refers to a variable %qD " "which is not the loop iterator" msgstr "" -#: gimplify.cc:17436 +#: gimplify.cc:17539 #, gcc-internal-format msgid "" "% construct with %qs clause must be closely nested inside a loop " "with % clause" msgstr "" -#: gimplify.cc:17457 +#: gimplify.cc:17560 #, gcc-internal-format msgid "variable %qE is not an iteration of outermost loop %d, expected %qE" msgstr "" -#: gimplify.cc:17470 +#: gimplify.cc:17573 #, gcc-internal-format msgid "" "number of variables in %qs clause with % modifier does not match " "number of iteration variables" msgstr "" -#: gimplify.cc:17484 +#: gimplify.cc:17587 #, gcc-internal-format msgid "" "more than one %qs clause with % modifier on an % construct" msgstr "" -#: gimplify.cc:17497 +#: gimplify.cc:17600 #, gcc-internal-format msgid "" "%qs clause with % modifier specified together with %qs clauses with " "% modifier on the same construct" msgstr "" -#: gimplify.cc:18814 +#: gimplify.cc:18917 #, gcc-internal-format msgid "gimplification failed" msgstr "" -#: gimplify.cc:19413 +#: gimplify.cc:19518 #, gcc-internal-format msgid "%qT is promoted to %qT when passed through %<...%>" msgstr "" -#: gimplify.cc:19418 +#: gimplify.cc:19523 #, gcc-internal-format msgid "(so you should pass %qT not %qT to %)" msgstr "" -#: gimplify.cc:19425 +#: gimplify.cc:19530 #, gcc-internal-format msgid "if this code is reached, the program will abort" msgstr "" @@ -29945,286 +30059,286 @@ msgstr "" msgid "token %u has %" msgstr "" -#: internal-fn.cc:814 +#: internal-fn.cc:841 #, gcc-internal-format msgid "invalid use of attribute %" msgstr "" -#: ipa-devirt.cc:677 ipa-devirt.cc:762 ipa-devirt.cc:791 ipa-devirt.cc:833 -#: ipa-devirt.cc:864 +#: ipa-devirt.cc:679 ipa-devirt.cc:764 ipa-devirt.cc:793 ipa-devirt.cc:835 +#: ipa-devirt.cc:866 #, gcc-internal-format msgid "virtual table of type %qD violates one definition rule" msgstr "" -#: ipa-devirt.cc:680 +#: ipa-devirt.cc:682 #, gcc-internal-format msgid "" "variable of same assembler name as the virtual table is defined in another " "translation unit" msgstr "" -#: ipa-devirt.cc:721 +#: ipa-devirt.cc:723 #, gcc-internal-format msgid "virtual table of type %qD contains RTTI information" msgstr "" -#: ipa-devirt.cc:727 +#: ipa-devirt.cc:729 #, gcc-internal-format msgid "but is prevailed by one without from other translation unit" msgstr "" -#: ipa-devirt.cc:731 +#: ipa-devirt.cc:733 #, gcc-internal-format msgid "RTTI will not work on this type" msgstr "" -#: ipa-devirt.cc:768 +#: ipa-devirt.cc:770 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit has virtual table " "of different size" msgstr "" -#: ipa-devirt.cc:797 +#: ipa-devirt.cc:799 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit with different RTTI " "information" msgstr "" -#: ipa-devirt.cc:841 ipa-devirt.cc:872 +#: ipa-devirt.cc:843 ipa-devirt.cc:874 #, gcc-internal-format msgid "the conflicting type defined in another translation unit" msgstr "" -#: ipa-devirt.cc:845 +#: ipa-devirt.cc:847 #, gcc-internal-format msgid "contains additional virtual method %qD" msgstr "" -#: ipa-devirt.cc:852 +#: ipa-devirt.cc:854 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit has virtual table " "with more entries" msgstr "" -#: ipa-devirt.cc:878 +#: ipa-devirt.cc:880 #, gcc-internal-format msgid "virtual method %qD" msgstr "" -#: ipa-devirt.cc:882 +#: ipa-devirt.cc:884 #, gcc-internal-format msgid "ought to match virtual method %qD but does not" msgstr "" -#: ipa-devirt.cc:888 +#: ipa-devirt.cc:890 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit has virtual table " "with different contents" msgstr "" -#: ipa-devirt.cc:922 +#: ipa-devirt.cc:924 #, gcc-internal-format msgid "type %qT (typedef of %qT) violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:930 +#: ipa-devirt.cc:932 #, gcc-internal-format msgid "type %qT violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:942 ipa-devirt.cc:957 ipa-devirt.cc:1235 ipa-devirt.cc:1280 -#: ipa-devirt.cc:1319 ipa-devirt.cc:1337 +#: ipa-devirt.cc:944 ipa-devirt.cc:959 ipa-devirt.cc:1237 ipa-devirt.cc:1282 +#: ipa-devirt.cc:1321 ipa-devirt.cc:1339 #, gcc-internal-format msgid "a different type is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:949 +#: ipa-devirt.cc:951 #, gcc-internal-format msgid "the first difference of corresponding definitions is field %qD" msgstr "" -#: ipa-devirt.cc:959 +#: ipa-devirt.cc:961 #, gcc-internal-format msgid "the first difference of corresponding definitions is method %qD" msgstr "" -#: ipa-devirt.cc:1064 +#: ipa-devirt.cc:1066 #, gcc-internal-format msgid "" "type %qT defined in anonymous namespace cannot match type %qT across the " "translation unit boundary" msgstr "" -#: ipa-devirt.cc:1069 +#: ipa-devirt.cc:1071 #, gcc-internal-format msgid "" "type %qT defined in anonymous namespace cannot match across the translation " "unit boundary" msgstr "" -#: ipa-devirt.cc:1074 +#: ipa-devirt.cc:1076 #, gcc-internal-format msgid "the incompatible type defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1090 +#: ipa-devirt.cc:1092 #, gcc-internal-format msgid "type name %qs should match type name %qs" msgstr "" -#: ipa-devirt.cc:1094 ipa-devirt.cc:1191 +#: ipa-devirt.cc:1096 ipa-devirt.cc:1193 #, gcc-internal-format msgid "the incompatible type is defined here" msgstr "" -#: ipa-devirt.cc:1122 +#: ipa-devirt.cc:1124 #, gcc-internal-format msgid "array types have different bounds" msgstr "" -#: ipa-devirt.cc:1137 +#: ipa-devirt.cc:1139 #, gcc-internal-format msgid "return value type mismatch" msgstr "" -#: ipa-devirt.cc:1152 +#: ipa-devirt.cc:1154 #, gcc-internal-format msgid "implicit this pointer type mismatch" msgstr "" -#: ipa-devirt.cc:1155 +#: ipa-devirt.cc:1157 #, gcc-internal-format, gfc-internal-format msgid "type mismatch in parameter %i" msgstr "" -#: ipa-devirt.cc:1166 +#: ipa-devirt.cc:1168 #, gcc-internal-format msgid "types have different parameter counts" msgstr "" -#: ipa-devirt.cc:1182 +#: ipa-devirt.cc:1184 #, gcc-internal-format msgid "type %qT itself violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:1188 +#: ipa-devirt.cc:1190 #, gcc-internal-format msgid "type %qT should match type %qT" msgstr "" -#: ipa-devirt.cc:1263 +#: ipa-devirt.cc:1265 #, gcc-internal-format msgid "a type with different precision is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1270 +#: ipa-devirt.cc:1272 #, gcc-internal-format msgid "a type with different signedness is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1295 +#: ipa-devirt.cc:1297 #, gcc-internal-format msgid "" "it is defined as a pointer in different address space in another translation " "unit" msgstr "" -#: ipa-devirt.cc:1304 +#: ipa-devirt.cc:1306 #, gcc-internal-format msgid "" "it is defined as a pointer to different type in another translation unit" msgstr "" -#: ipa-devirt.cc:1364 +#: ipa-devirt.cc:1366 #, gcc-internal-format msgid "an array of different size is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1379 +#: ipa-devirt.cc:1381 #, gcc-internal-format msgid "has different return value in another translation unit" msgstr "" -#: ipa-devirt.cc:1402 ipa-devirt.cc:1414 +#: ipa-devirt.cc:1404 ipa-devirt.cc:1416 #, gcc-internal-format msgid "has different parameters in another translation unit" msgstr "" -#: ipa-devirt.cc:1437 +#: ipa-devirt.cc:1439 #, gcc-internal-format msgid "a type defined in another translation unit is not polymorphic" msgstr "" -#: ipa-devirt.cc:1441 +#: ipa-devirt.cc:1443 #, gcc-internal-format msgid "a type defined in another translation unit is polymorphic" msgstr "" -#: ipa-devirt.cc:1459 ipa-devirt.cc:1523 +#: ipa-devirt.cc:1461 ipa-devirt.cc:1525 #, gcc-internal-format msgid "" "a type with different virtual table pointers is defined in another " "translation unit" msgstr "" -#: ipa-devirt.cc:1466 ipa-devirt.cc:1528 +#: ipa-devirt.cc:1468 ipa-devirt.cc:1530 #, gcc-internal-format msgid "a type with different bases is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1474 +#: ipa-devirt.cc:1476 #, gcc-internal-format msgid "a field with different name is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1488 +#: ipa-devirt.cc:1490 #, gcc-internal-format msgid "" "a field of same name but different type is defined in another translation " "unit" msgstr "" -#: ipa-devirt.cc:1501 +#: ipa-devirt.cc:1503 #, gcc-internal-format msgid "fields have different layout in another translation unit" msgstr "" -#: ipa-devirt.cc:1508 +#: ipa-devirt.cc:1510 #, gcc-internal-format msgid "one field is a bitfield while the other is not" msgstr "" -#: ipa-devirt.cc:1532 +#: ipa-devirt.cc:1534 #, gcc-internal-format msgid "" "a type with different number of fields is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1555 +#: ipa-devirt.cc:1557 #, gcc-internal-format msgid "a type with different size is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1564 +#: ipa-devirt.cc:1566 #, gcc-internal-format msgid "one type needs to be constructed while the other does not" msgstr "" -#: ipa-devirt.cc:1577 +#: ipa-devirt.cc:1579 #, gcc-internal-format msgid "memory layout mismatch" msgstr "" -#: ipa-devirt.cc:1696 +#: ipa-devirt.cc:1698 #, gcc-internal-format msgid "the extra base is defined here" msgstr "" -#: ipa-devirt.cc:3872 +#: ipa-devirt.cc:3874 #, gcc-internal-format msgid "Declaring type %qD final would enable devirtualization of %i call" msgid_plural "" @@ -30232,7 +30346,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:3881 +#: ipa-devirt.cc:3883 #, gcc-internal-format msgid "" "Declaring type %qD final would enable devirtualization of %i call executed " @@ -30243,7 +30357,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:3911 +#: ipa-devirt.cc:3913 #, gcc-internal-format msgid "" "Declaring virtual destructor of %qD final would enable devirtualization of " @@ -30254,7 +30368,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:3919 +#: ipa-devirt.cc:3921 #, gcc-internal-format msgid "Declaring method %qD final would enable devirtualization of %i call" msgid_plural "" @@ -30262,7 +30376,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:3927 +#: ipa-devirt.cc:3929 #, gcc-internal-format msgid "" "Declaring virtual destructor of %qD final would enable devirtualization of " @@ -30273,7 +30387,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:3938 +#: ipa-devirt.cc:3940 #, gcc-internal-format msgid "" "Declaring method %qD final would enable devirtualization of %i call executed " @@ -30284,83 +30398,83 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:4251 +#: ipa-devirt.cc:4253 #, gcc-internal-format msgid "type %qs violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:4260 +#: ipa-devirt.cc:4262 #, gcc-internal-format msgid "" "an enum with different number of values is defined in another translation " "unit" msgstr "" -#: ipa-devirt.cc:4264 +#: ipa-devirt.cc:4266 #, gcc-internal-format msgid "" "an enum with different value name is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:4268 +#: ipa-devirt.cc:4270 #, gcc-internal-format msgid "an enum with different values is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:4289 +#: ipa-devirt.cc:4291 #, gcc-internal-format msgid "name %qs differs from name %qs defined in another translation unit" msgstr "" -#: ipa-devirt.cc:4295 +#: ipa-devirt.cc:4297 #, gcc-internal-format msgid "" "name %qs is defined as %u-bit while another translation unit defines it as " "%u-bit" msgstr "" -#: ipa-devirt.cc:4304 +#: ipa-devirt.cc:4306 #, gcc-internal-format msgid "" "name %qs is defined to %wd while another translation unit defines it as %wd" msgstr "" -#: ipa-devirt.cc:4310 +#: ipa-devirt.cc:4312 #, gcc-internal-format msgid "name %qs is defined to different value in another translation unit" msgstr "" -#: ipa-devirt.cc:4315 +#: ipa-devirt.cc:4317 #, gcc-internal-format msgid "mismatching definition" msgstr "" -#: ipa-fnsummary.cc:4654 +#: ipa-fnsummary.cc:4656 #, gcc-internal-format msgid "invalid fnsummary in LTO stream" msgstr "" -#: ipa-fnsummary.cc:4755 +#: ipa-fnsummary.cc:4757 #, gcc-internal-format msgid "ipa inline summary is missing in input file" msgstr "" -#: ipa-modref.cc:4015 +#: ipa-modref.cc:4017 #, gcc-internal-format msgid "IPA modref summary is missing in input file" msgstr "" -#: ipa-prop.cc:4760 ipa-prop.cc:4802 ipa-prop.cc:4879 ipa-prop.cc:4927 +#: ipa-prop.cc:4824 ipa-prop.cc:4866 ipa-prop.cc:4943 ipa-prop.cc:4991 #, gcc-internal-format msgid "invalid jump function in LTO stream" msgstr "" -#: ipa-pure-const.cc:218 +#: ipa-pure-const.cc:220 #, gcc-internal-format msgid "function might be candidate for attribute %qs" msgstr "" -#: ipa-pure-const.cc:219 +#: ipa-pure-const.cc:221 #, gcc-internal-format msgid "" "function might be candidate for attribute %qs if it is known to return " @@ -30372,144 +30486,144 @@ msgstr "" msgid "ipa reference summary is missing in ltrans unit" msgstr "" -#: ipa-sra.cc:1619 +#: ipa-sra.cc:1621 #, gcc-internal-format msgid "Access offset before parent offset" msgstr "" -#: ipa-sra.cc:1624 +#: ipa-sra.cc:1626 #, gcc-internal-format msgid "Access size greater or equal to its parent size" msgstr "" -#: ipa-sra.cc:1629 +#: ipa-sra.cc:1631 #, gcc-internal-format msgid "Access terminates outside of its parent" msgstr "" -#: ipa-sra.cc:1641 +#: ipa-sra.cc:1643 #, gcc-internal-format msgid "Access overlaps with its sibling" msgstr "" -#: ipa-sra.cc:1660 +#: ipa-sra.cc:1662 #, gcc-internal-format msgid "IPA-SRA access verification failed" msgstr "" -#: ipa-sra.cc:2745 +#: ipa-sra.cc:2747 #, gcc-internal-format msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap" msgstr "" -#: ipa-sra.cc:2748 +#: ipa-sra.cc:2750 #, gcc-internal-format msgid "" "function %qs, parameter %u, is used but does not have any certain IPA-SRA " "access" msgstr "" -#: ipa-strub.cc:620 +#: ipa-strub.cc:622 #, gcc-internal-format msgid "at-calls % does not support call to %qD" msgstr "" -#: ipa-strub.cc:654 +#: ipa-strub.cc:656 #, gcc-internal-format msgid "%qD is not eligible for % on the target system" msgstr "" -#: ipa-strub.cc:658 +#: ipa-strub.cc:660 #, gcc-internal-format msgid "unsupported % call on the target system" msgstr "" -#: ipa-strub.cc:684 +#: ipa-strub.cc:686 #, gcc-internal-format msgid "%qD is not eligible for % because %<-fsplit-stack%> is enabled" msgstr "" -#: ipa-strub.cc:697 +#: ipa-strub.cc:699 #, gcc-internal-format msgid "%qD is not eligible for % because of attribute %" msgstr "" -#: ipa-strub.cc:712 +#: ipa-strub.cc:714 #, gcc-internal-format msgid "%qD is not eligible for % because of attribute %" msgstr "" -#: ipa-strub.cc:846 +#: ipa-strub.cc:848 #, gcc-internal-format msgid "" "%qD is not eligible for internal % because of attribute %" msgstr "" -#: ipa-strub.cc:870 +#: ipa-strub.cc:872 #, gcc-internal-format msgid "%qD is not eligible for internal % because it calls %qD" msgstr "" -#: ipa-strub.cc:884 +#: ipa-strub.cc:886 #, gcc-internal-format msgid "" "%qD is not eligible for internal % because it contains a non-local " "goto target" msgstr "" -#: ipa-strub.cc:897 +#: ipa-strub.cc:899 #, gcc-internal-format msgid "" "%qD is not eligible for internal % because the address of a local " "label escapes" msgstr "" -#: ipa-strub.cc:936 +#: ipa-strub.cc:938 #, gcc-internal-format msgid "internal % does not support forced labels" msgstr "" -#: ipa-strub.cc:950 +#: ipa-strub.cc:952 #, gcc-internal-format msgid "%qD has too many arguments for internal %" msgstr "" -#: ipa-strub.cc:1227 +#: ipa-strub.cc:1229 #, gcc-internal-format msgid "%qD requires %, but no viable % mode was found" msgstr "" -#: ipa-strub.cc:1323 +#: ipa-strub.cc:1325 #, gcc-internal-format msgid "% mode %qE selected for %qD, when %qE was requested" msgstr "" -#: ipa-strub.cc:1332 +#: ipa-strub.cc:1334 #, gcc-internal-format msgid "the incompatible selection was determined by ultimate alias target %qD" msgstr "" -#: ipa-strub.cc:1679 +#: ipa-strub.cc:1681 #, gcc-internal-format msgid "indirect non-% call in % context %qD" msgstr "" -#: ipa-strub.cc:1698 +#: ipa-strub.cc:1700 #, gcc-internal-format msgid "calling % % %qD in non-% context %qD" msgstr "" -#: ipa-strub.cc:1708 +#: ipa-strub.cc:1710 #, gcc-internal-format msgid "calling non-% %qD in % context %qD" msgstr "" -#: ipa-strub.cc:1712 +#: ipa-strub.cc:1714 #, gcc-internal-format msgid "calling %qD using non-% type %qT in % context %qD" msgstr "" -#: ipa-strub.cc:2834 +#: ipa-strub.cc:2836 #, gcc-internal-format msgid "failed to split %qD for %" msgstr "" @@ -30534,12 +30648,12 @@ msgstr "" msgid "frame size too large for reliable stack checking" msgstr "" -#: lra-assigns.cc:1696 +#: lra-assigns.cc:1702 #, gcc-internal-format, gfc-internal-format msgid "maximum number of LRA assignment passes is achieved (%d)" msgstr "" -#: lra-assigns.cc:1861 +#: lra-assigns.cc:1867 #, gcc-internal-format msgid "unable to find a register to spill" msgstr "" @@ -30770,97 +30884,97 @@ msgstr "" msgid "deleting LTRANS file %s: %m" msgstr "" -#: lto-wrapper.cc:355 +#: lto-wrapper.cc:358 #, gcc-internal-format, gfc-internal-format msgid "option %s with different values" msgstr "" -#: lto-wrapper.cc:371 +#: lto-wrapper.cc:374 #, gcc-internal-format msgid "option %qs with mismatching values (%s, %s)" msgstr "" -#: lto-wrapper.cc:486 +#: lto-wrapper.cc:489 #, gcc-internal-format, gfc-internal-format msgid "option %s not used consistently in all LTO input files" msgstr "" -#: lto-wrapper.cc:631 lto-wrapper.cc:639 +#: lto-wrapper.cc:634 lto-wrapper.cc:642 #, gcc-internal-format msgid "" "Extra option to %<-Xassembler%>: %s, dropping all %<-Xassembler%> and %<-" "Wa%> options." msgstr "" -#: lto-wrapper.cc:647 +#: lto-wrapper.cc:650 #, gcc-internal-format msgid "" "Options to %<-Xassembler%> do not match: %s, %s, dropping all %<-" "Xassembler%> and %<-Wa%> options." msgstr "" -#: lto-wrapper.cc:957 +#: lto-wrapper.cc:960 #, gcc-internal-format msgid "could not find %s in %s (consider using %<-B%>)" msgstr "" -#: lto-wrapper.cc:1037 +#: lto-wrapper.cc:1041 #, gcc-internal-format, gfc-internal-format msgid "problem with building target image for %s" msgstr "" -#: lto-wrapper.cc:1066 +#: lto-wrapper.cc:1070 #, gcc-internal-format msgid "reading input file" msgstr "" -#: lto-wrapper.cc:1071 +#: lto-wrapper.cc:1075 #, gcc-internal-format msgid "writing output file" msgstr "" -#: lto-wrapper.cc:1107 +#: lto-wrapper.cc:1111 #, gcc-internal-format msgid "installation error, cannot find %" msgstr "" -#: lto-wrapper.cc:1429 +#: lto-wrapper.cc:1433 #, gcc-internal-format msgid "environment variable % must be set" msgstr "" -#: lto-wrapper.cc:1433 config/gcn/mkoffload.cc:803 +#: lto-wrapper.cc:1437 config/gcn/mkoffload.cc:809 #, gcc-internal-format msgid "environment variable % must be set" msgstr "" -#: lto-wrapper.cc:1723 lto-wrapper.cc:1783 c-family/c-pch.cc:213 +#: lto-wrapper.cc:1727 lto-wrapper.cc:1787 c-family/c-pch.cc:213 #: c-family/c-pch.cc:248 c-family/c-pch.cc:286 #, gcc-internal-format msgid "cannot read %s: %m" msgstr "" -#: lto-wrapper.cc:1750 +#: lto-wrapper.cc:1754 #, gcc-internal-format, gfc-internal-format msgid "invalid format of %s" msgstr "" -#: lto-wrapper.cc:1916 +#: lto-wrapper.cc:1920 #, gcc-internal-format msgid "%: %s: %m" msgstr "" -#: lto-wrapper.cc:1933 +#: lto-wrapper.cc:1937 #, gcc-internal-format, gfc-internal-format msgid "corrupted ltrans output file %s" msgstr "" -#: lto-wrapper.cc:1976 +#: lto-wrapper.cc:1980 #, gcc-internal-format, gfc-internal-format msgid "using serial compilation of %d LTRANS jobs" msgstr "" -#: lto-wrapper.cc:2156 config/gcn/mkoffload.cc:858 +#: lto-wrapper.cc:2160 config/gcn/mkoffload.cc:932 #, gcc-internal-format msgid "% failed" msgstr "" @@ -31547,12 +31661,12 @@ msgstr "" msgid "unrecognized argument in option %qs" msgstr "" -#: opts-common.cc:1562 config/i386/i386-options.cc:1698 +#: opts-common.cc:1562 config/i386/i386-options.cc:1702 #, gcc-internal-format msgid "valid arguments to %qs are: %s; did you mean %qs?" msgstr "" -#: opts-common.cc:1565 config/i386/i386-options.cc:1701 +#: opts-common.cc:1565 config/i386/i386-options.cc:1705 #, gcc-internal-format msgid "valid arguments to %qs are: %s" msgstr "" @@ -31649,8 +31763,8 @@ msgstr "" #: opts.cc:849 opts.cc:855 opts.cc:861 opts.cc:867 opts.cc:878 opts.cc:888 #: opts.cc:894 opts.cc:900 opts.cc:906 opts.cc:912 opts.cc:918 opts.cc:924 -#: opts.cc:930 opts.cc:936 opts.cc:953 opts.cc:961 config/mips/mips.cc:20405 -#: config/mips/mips.cc:20407 config/mips/mips.cc:20420 +#: opts.cc:930 opts.cc:936 opts.cc:953 opts.cc:961 config/mips/mips.cc:20411 +#: config/mips/mips.cc:20413 config/mips/mips.cc:20426 #, gcc-internal-format msgid "%qs is incompatible with %qs" msgstr "" @@ -31787,7 +31901,7 @@ msgid "" "present" msgstr "" -#: opts.cc:1490 config/darwin.cc:3471 +#: opts.cc:1490 config/darwin.cc:3484 #, gcc-internal-format msgid "" "%<-freorder-blocks-and-partition%> does not work with exceptions on this " @@ -31977,72 +32091,72 @@ msgid "" "argument in %" msgstr "" -#: passes.cc:1072 +#: passes.cc:1073 #, gcc-internal-format msgid "unrecognized option %<-fenable%>" msgstr "" -#: passes.cc:1074 +#: passes.cc:1075 #, gcc-internal-format msgid "unrecognized option %<-fdisable%>" msgstr "" -#: passes.cc:1082 +#: passes.cc:1083 #, gcc-internal-format msgid "unknown pass %s specified in %<-fenable%>" msgstr "" -#: passes.cc:1084 +#: passes.cc:1085 #, gcc-internal-format msgid "unknown pass %s specified in %<-fdisable%>" msgstr "" -#: passes.cc:1109 passes.cc:1198 +#: passes.cc:1110 passes.cc:1199 #, gcc-internal-format, gfc-internal-format msgid "enable pass %s for functions in the range of [%u, %u]" msgstr "" -#: passes.cc:1112 passes.cc:1209 +#: passes.cc:1113 passes.cc:1210 #, gcc-internal-format, gfc-internal-format msgid "disable pass %s for functions in the range of [%u, %u]" msgstr "" -#: passes.cc:1148 passes.cc:1176 +#: passes.cc:1149 passes.cc:1177 #, gcc-internal-format, gfc-internal-format msgid "Invalid range %s in option %s" msgstr "" -#: passes.cc:1194 +#: passes.cc:1195 #, gcc-internal-format, gfc-internal-format msgid "enable pass %s for function %s" msgstr "" -#: passes.cc:1205 +#: passes.cc:1206 #, gcc-internal-format, gfc-internal-format msgid "disable pass %s for function %s" msgstr "" -#: passes.cc:1434 +#: passes.cc:1435 #, gcc-internal-format msgid "invalid pass positioning operation" msgstr "" -#: passes.cc:1495 +#: passes.cc:1496 #, gcc-internal-format msgid "plugin cannot register a missing pass" msgstr "" -#: passes.cc:1498 +#: passes.cc:1499 #, gcc-internal-format msgid "plugin cannot register an unnamed pass" msgstr "" -#: passes.cc:1503 +#: passes.cc:1504 #, gcc-internal-format msgid "plugin cannot register pass %qs without reference pass name" msgstr "" -#: passes.cc:1522 +#: passes.cc:1523 #, gcc-internal-format msgid "pass %qs not found but is referenced by new pass %qs" msgstr "" @@ -32219,25 +32333,25 @@ msgstr "" msgid "Missing counts for called function %s" msgstr "" -#: profile.cc:616 +#: profile.cc:628 #, gcc-internal-format msgid "corrupted profile info: profile data is not flow-consistent" msgstr "" -#: profile.cc:633 +#: profile.cc:645 #, gcc-internal-format, gfc-internal-format msgid "" "corrupted profile info: number of iterations for basic block %d thought to " "be %i" msgstr "" -#: profile.cc:656 +#: profile.cc:668 #, gcc-internal-format, gfc-internal-format msgid "" "corrupted profile info: number of executions for edge %d-%d thought to be %i" msgstr "" -#: profile.cc:965 +#: profile.cc:977 #, gcc-internal-format msgid "corrupted profile info: invalid time profile" msgstr "" @@ -32561,77 +32675,77 @@ msgstr "" msgid "undefined named operand %qs" msgstr "" -#: stor-layout.cc:804 +#: stor-layout.cc:830 #, gcc-internal-format msgid "size of %q+D %E bytes exceeds maximum object size %wu" msgstr "" -#: stor-layout.cc:1185 +#: stor-layout.cc:1211 #, gcc-internal-format msgid "alignment %u of %qT is less than %u" msgstr "" -#: stor-layout.cc:1192 +#: stor-layout.cc:1218 #, gcc-internal-format msgid "%q+D offset %E in %qT isn%'t aligned to %u" msgstr "" -#: stor-layout.cc:1195 +#: stor-layout.cc:1221 #, gcc-internal-format msgid "%q+D offset %E in %qT may not be aligned to %u" msgstr "" -#: stor-layout.cc:1327 +#: stor-layout.cc:1353 #, gcc-internal-format msgid "packed attribute causes inefficient alignment for %q+D" msgstr "" -#: stor-layout.cc:1331 +#: stor-layout.cc:1357 #, gcc-internal-format msgid "packed attribute is unnecessary for %q+D" msgstr "" -#: stor-layout.cc:1351 +#: stor-layout.cc:1377 #, gcc-internal-format msgid "padding struct to align %q+D" msgstr "" -#: stor-layout.cc:1410 +#: stor-layout.cc:1436 #, gcc-internal-format msgid "offset of packed bit-field %qD has changed in GCC 4.4" msgstr "" -#: stor-layout.cc:1790 +#: stor-layout.cc:1816 #, gcc-internal-format msgid "padding struct size to alignment boundary with %E bytes" msgstr "" -#: stor-layout.cc:1819 +#: stor-layout.cc:1845 #, gcc-internal-format msgid "packed attribute causes inefficient alignment for %qE" msgstr "" -#: stor-layout.cc:1823 +#: stor-layout.cc:1849 #, gcc-internal-format msgid "packed attribute is unnecessary for %qE" msgstr "" -#: stor-layout.cc:1829 +#: stor-layout.cc:1855 #, gcc-internal-format msgid "packed attribute causes inefficient alignment" msgstr "" -#: stor-layout.cc:1831 +#: stor-layout.cc:1857 #, gcc-internal-format msgid "packed attribute is unnecessary" msgstr "" -#: stor-layout.cc:2712 +#: stor-layout.cc:2738 #, gcc-internal-format msgid "alignment of array elements is greater than element size" msgstr "" -#: stor-layout.cc:2718 +#: stor-layout.cc:2744 #, gcc-internal-format msgid "size of array element is not a multiple of its alignment" msgstr "" @@ -32806,34 +32920,34 @@ msgstr "" msgid "Chained transparent aliases" msgstr "" -#: symtab.cc:1367 symtab.cc:1385 symtab.cc:1412 +#: symtab.cc:1367 symtab.cc:1477 symtab.cc:1504 #, gcc-internal-format msgid "symtab_node::verify failed" msgstr "" -#: symtab.cc:1384 +#: symtab.cc:1476 #, gcc-internal-format, gfc-internal-format msgid "invalid order in asm node %i" msgstr "" -#: symtab.cc:1408 +#: symtab.cc:1500 #, gcc-internal-format msgid "" "Two symbols with same comdat_group are not linked by the same_comdat_group " "list." msgstr "" -#: symtab.cc:1846 +#: symtab.cc:1938 #, gcc-internal-format msgid "function %q+D part of alias cycle" msgstr "" -#: symtab.cc:1848 +#: symtab.cc:1940 #, gcc-internal-format msgid "variable %q+D part of alias cycle" msgstr "" -#: symtab.cc:1876 +#: symtab.cc:1968 #, gcc-internal-format msgid "section of alias %q+D must match section of its target" msgstr "" @@ -32883,47 +32997,47 @@ msgstr "" msgid "%<#pragma GCC target%> is not supported for this machine" msgstr "" -#: toplev.cc:716 +#: toplev.cc:718 #, gcc-internal-format msgid "cannot open %qs for writing: %m" msgstr "" -#: toplev.cc:735 +#: toplev.cc:737 #, gcc-internal-format msgid "%<-frecord-gcc-switches%> is not supported by the current target" msgstr "" -#: toplev.cc:787 +#: toplev.cc:789 #, gcc-internal-format msgid "stack usage computation not supported for this target" msgstr "" -#: toplev.cc:846 +#: toplev.cc:848 #, gcc-internal-format msgid "stack usage might be unbounded" msgstr "" -#: toplev.cc:851 +#: toplev.cc:853 #, gcc-internal-format msgid "stack usage might be %wu bytes" msgstr "" -#: toplev.cc:854 +#: toplev.cc:856 #, gcc-internal-format msgid "stack usage is %wu bytes" msgstr "" -#: toplev.cc:971 +#: toplev.cc:973 #, gcc-internal-format msgid "cannot open %s for writing: %m" msgstr "" -#: toplev.cc:1250 +#: toplev.cc:1252 #, gcc-internal-format msgid "this target does not support %qs" msgstr "" -#: toplev.cc:1284 +#: toplev.cc:1286 #, gcc-internal-format msgid "" "Graphite loop optimizations cannot be used (isl is not available) (%<-" @@ -32931,194 +33045,194 @@ msgid "" "parallelize-all%>)" msgstr "" -#: toplev.cc:1295 +#: toplev.cc:1297 #, gcc-internal-format msgid "%<-fcf-protection=full%> is not supported for this target" msgstr "" -#: toplev.cc:1302 +#: toplev.cc:1304 #, gcc-internal-format msgid "%<-fcf-protection=branch%> is not supported for this target" msgstr "" -#: toplev.cc:1309 +#: toplev.cc:1311 #, gcc-internal-format msgid "%<-fcf-protection=return%> is not supported for this target" msgstr "" -#: toplev.cc:1324 +#: toplev.cc:1326 #, gcc-internal-format msgid "%<-fabi-version=1%> is no longer supported" msgstr "" -#: toplev.cc:1340 +#: toplev.cc:1342 #, gcc-internal-format msgid "instruction scheduling not supported on this target machine" msgstr "" -#: toplev.cc:1344 +#: toplev.cc:1346 #, gcc-internal-format msgid "this target machine does not have delayed branches" msgstr "" -#: toplev.cc:1358 +#: toplev.cc:1360 #, gcc-internal-format msgid "%<-f%sleading-underscore%> not supported on this target machine" msgstr "" -#: toplev.cc:1387 +#: toplev.cc:1389 #, gcc-internal-format msgid "CTF debug info requested, but not supported for %qs frontend" msgstr "" -#: toplev.cc:1405 +#: toplev.cc:1407 #, gcc-internal-format msgid "could not close zeroed insn dump file %qs: %m" msgstr "" -#: toplev.cc:1443 +#: toplev.cc:1445 #, gcc-internal-format msgid "target system does not support the %qs debug format" msgstr "" -#: toplev.cc:1471 +#: toplev.cc:1473 #, gcc-internal-format msgid "" "without %<-gdwarf-5%>, %<-gvariable-location-views=incompat5%> is equivalent " "to %<-gvariable-location-views%>" msgstr "" -#: toplev.cc:1487 +#: toplev.cc:1489 #, gcc-internal-format msgid "" "%<-ginternal-reset-location-views%> is forced disabled without %<-gvariable-" "location-views%>" msgstr "" -#: toplev.cc:1497 +#: toplev.cc:1499 #, gcc-internal-format msgid "" "%<-ginline-points%> is forced disabled without %<-gstatement-frontiers%>" msgstr "" -#: toplev.cc:1526 +#: toplev.cc:1528 #, gcc-internal-format msgid "%<-ffunction-sections%> not supported for this target" msgstr "" -#: toplev.cc:1532 +#: toplev.cc:1534 #, gcc-internal-format msgid "%<-fdata-sections%> not supported for this target" msgstr "" -#: toplev.cc:1540 +#: toplev.cc:1542 #, gcc-internal-format msgid "%<-fprefetch-loop-arrays%> not supported for this target" msgstr "" -#: toplev.cc:1546 +#: toplev.cc:1548 #, gcc-internal-format msgid "" "%<-fprefetch-loop-arrays%> not supported for this target (try %<-march%> " "switches)" msgstr "" -#: toplev.cc:1556 +#: toplev.cc:1558 #, gcc-internal-format msgid "%<-fprefetch-loop-arrays%> is not supported with %<-Os%>" msgstr "" -#: toplev.cc:1568 +#: toplev.cc:1570 #, gcc-internal-format msgid "%<-fassociative-math%> disabled; other options take precedence" msgstr "" -#: toplev.cc:1576 +#: toplev.cc:1578 #, gcc-internal-format msgid "%<-fhardened%> not supported for this target" msgstr "" -#: toplev.cc:1585 +#: toplev.cc:1587 #, gcc-internal-format msgid "" "%<-fstack-clash-protection%> is not supported on targets where the stack " "grows from lower to higher addresses" msgstr "" -#: toplev.cc:1598 +#: toplev.cc:1600 #, gcc-internal-format msgid "" "%<-fstack-clash-protection%> is not enabled by %<-fhardened%> because %<-" "fstack-check%> was specified on the command line" msgstr "" -#: toplev.cc:1608 +#: toplev.cc:1610 #, gcc-internal-format msgid "" "%<-fstack-check=%> and %<-fstack-clash-protection%> are mutually exclusive; " "disabling %<-fstack-check=%>" msgstr "" -#: toplev.cc:1619 +#: toplev.cc:1621 #, gcc-internal-format msgid "%<-fstack-protector%> not supported for this target" msgstr "" -#: toplev.cc:1631 +#: toplev.cc:1633 #, gcc-internal-format msgid "" "%<-fsanitize=address%> and %<-fsanitize=kernel-address%> are not supported " "for this target" msgstr "" -#: toplev.cc:1641 +#: toplev.cc:1643 #, gcc-internal-format msgid "%<-fsanitize=address%> not supported for this target" msgstr "" -#: toplev.cc:1650 +#: toplev.cc:1652 #, gcc-internal-format msgid "" "%<-fsanitize=kernel-address%> with stack protection is not supported without " "%<-fasan-shadow-offset=%> for this target" msgstr "" -#: toplev.cc:1660 +#: toplev.cc:1662 #, gcc-internal-format msgid "%qs is not supported for this target" msgstr "" -#: toplev.cc:1668 +#: toplev.cc:1670 #, gcc-internal-format msgid "%<-fsanitize=shadow-call-stack%> not supported in current platform" msgstr "" -#: toplev.cc:1671 +#: toplev.cc:1673 #, gcc-internal-format msgid "%<-fsanitize=shadow-call-stack%> requires %<-fno-exceptions%>" msgstr "" -#: toplev.cc:2010 +#: toplev.cc:2012 #, gcc-internal-format msgid "error writing to %s: %m" msgstr "" -#: toplev.cc:2012 +#: toplev.cc:2014 #, gcc-internal-format msgid "error closing %s: %m" msgstr "" -#: toplev.cc:2130 +#: toplev.cc:2132 #, gcc-internal-format msgid "mpfr not configured to handle all floating modes" msgstr "" -#: toplev.cc:2216 +#: toplev.cc:2218 #, gcc-internal-format msgid "self-tests are not enabled in this build" msgstr "" -#: toplev.cc:2313 +#: toplev.cc:2315 #, gcc-internal-format msgid "self-tests incompatible with %<-E%>" msgstr "" @@ -33205,172 +33319,172 @@ msgstr "" msgid "outer transaction in % function" msgstr "" -#: tree-cfg.cc:355 +#: tree-cfg.cc:359 #, gcc-internal-format msgid "ignoring loop annotation" msgstr "" -#: tree-cfg.cc:3084 +#: tree-cfg.cc:3088 #, gcc-internal-format msgid "constant not recomputed when % changed" msgstr "" -#: tree-cfg.cc:3089 +#: tree-cfg.cc:3093 #, gcc-internal-format msgid "side effects not recomputed when % changed" msgstr "" -#: tree-cfg.cc:3104 +#: tree-cfg.cc:3108 #, gcc-internal-format msgid "address taken but % bit not set" msgstr "" -#: tree-cfg.cc:3130 +#: tree-cfg.cc:3134 #, gcc-internal-format msgid "non-scalar %qs" msgstr "" -#: tree-cfg.cc:3144 +#: tree-cfg.cc:3148 #, gcc-internal-format msgid "invalid position or size operand to %qs" msgstr "" -#: tree-cfg.cc:3150 +#: tree-cfg.cc:3154 #, gcc-internal-format msgid "integral result type precision does not match field size of %qs" msgstr "" -#: tree-cfg.cc:3159 +#: tree-cfg.cc:3163 #, gcc-internal-format msgid "mode size of non-integral result does not match field size of %qs" msgstr "" -#: tree-cfg.cc:3167 +#: tree-cfg.cc:3171 #, gcc-internal-format msgid "%qs of non-mode-precision operand" msgstr "" -#: tree-cfg.cc:3174 +#: tree-cfg.cc:3178 #, gcc-internal-format msgid "position plus size exceeds size of referenced object in %qs" msgstr "" -#: tree-cfg.cc:3185 +#: tree-cfg.cc:3189 #, gcc-internal-format msgid "type mismatch in %qs reference" msgstr "" -#: tree-cfg.cc:3201 +#: tree-cfg.cc:3205 #, gcc-internal-format msgid "conversion of %qs on the left hand side of %qs" msgstr "" -#: tree-cfg.cc:3209 +#: tree-cfg.cc:3213 #, gcc-internal-format msgid "conversion of register to a different size in %qs" msgstr "" -#: tree-cfg.cc:3229 +#: tree-cfg.cc:3233 #, gcc-internal-format msgid "non-top-level %qs" msgstr "" -#: tree-cfg.cc:3244 +#: tree-cfg.cc:3248 #, gcc-internal-format msgid "invalid operands to %qs" msgstr "" -#: tree-cfg.cc:3255 tree-cfg.cc:3264 tree-cfg.cc:3281 tree-cfg.cc:3960 -#: tree-cfg.cc:3989 tree-cfg.cc:4006 tree-cfg.cc:4027 tree-cfg.cc:4073 -#: tree-cfg.cc:4094 tree-cfg.cc:4148 tree-cfg.cc:4168 tree-cfg.cc:4204 -#: tree-cfg.cc:4225 tree-cfg.cc:4286 tree-cfg.cc:4361 tree-cfg.cc:4387 -#: tree-cfg.cc:4423 tree-cfg.cc:4472 tree-cfg.cc:4497 tree-cfg.cc:4572 -#: tree-cfg.cc:4658 +#: tree-cfg.cc:3259 tree-cfg.cc:3268 tree-cfg.cc:3285 tree-cfg.cc:3964 +#: tree-cfg.cc:3993 tree-cfg.cc:4010 tree-cfg.cc:4031 tree-cfg.cc:4077 +#: tree-cfg.cc:4098 tree-cfg.cc:4152 tree-cfg.cc:4172 tree-cfg.cc:4208 +#: tree-cfg.cc:4229 tree-cfg.cc:4290 tree-cfg.cc:4365 tree-cfg.cc:4391 +#: tree-cfg.cc:4427 tree-cfg.cc:4476 tree-cfg.cc:4501 tree-cfg.cc:4576 +#: tree-cfg.cc:4662 #, gcc-internal-format msgid "type mismatch in %qs" msgstr "" -#: tree-cfg.cc:3275 +#: tree-cfg.cc:3279 #, gcc-internal-format msgid "invalid %qs offset operator" msgstr "" -#: tree-cfg.cc:3299 tree-cfg.cc:3325 +#: tree-cfg.cc:3303 tree-cfg.cc:3329 #, gcc-internal-format msgid "invalid address operand in %qs" msgstr "" -#: tree-cfg.cc:3306 tree-cfg.cc:3332 +#: tree-cfg.cc:3310 tree-cfg.cc:3336 #, gcc-internal-format msgid "invalid offset operand in %qs" msgstr "" -#: tree-cfg.cc:3313 tree-cfg.cc:3339 +#: tree-cfg.cc:3317 tree-cfg.cc:3343 #, gcc-internal-format msgid "invalid clique in %qs" msgstr "" -#: tree-cfg.cc:3346 tree-cfg.cc:4670 +#: tree-cfg.cc:3350 tree-cfg.cc:4674 #, gcc-internal-format msgid "%qs in gimple IL" msgstr "" -#: tree-cfg.cc:3357 +#: tree-cfg.cc:3361 #, gcc-internal-format msgid "%qs as base where non-register is required" msgstr "" -#: tree-cfg.cc:3372 +#: tree-cfg.cc:3376 #, gcc-internal-format msgid "invalid expression for min lvalue" msgstr "" -#: tree-cfg.cc:3423 +#: tree-cfg.cc:3427 #, gcc-internal-format msgid "gimple call has two targets" msgstr "" -#: tree-cfg.cc:3432 +#: tree-cfg.cc:3436 #, gcc-internal-format msgid "gimple call has no target" msgstr "" -#: tree-cfg.cc:3439 +#: tree-cfg.cc:3443 #, gcc-internal-format msgid "invalid function in gimple call" msgstr "" -#: tree-cfg.cc:3449 +#: tree-cfg.cc:3453 #, gcc-internal-format msgid "non-function in gimple call" msgstr "" -#: tree-cfg.cc:3460 +#: tree-cfg.cc:3464 #, gcc-internal-format msgid "invalid pure const state for function" msgstr "" -#: tree-cfg.cc:3472 +#: tree-cfg.cc:3476 #, gcc-internal-format msgid "invalid LHS in gimple call" msgstr "" -#: tree-cfg.cc:3480 +#: tree-cfg.cc:3484 #, gcc-internal-format msgid "LHS in % call" msgstr "" -#: tree-cfg.cc:3494 +#: tree-cfg.cc:3498 #, gcc-internal-format msgid "invalid conversion in gimple call" msgstr "" -#: tree-cfg.cc:3503 +#: tree-cfg.cc:3507 #, gcc-internal-format msgid "invalid static chain in gimple call" msgstr "" -#: tree-cfg.cc:3514 +#: tree-cfg.cc:3518 #, gcc-internal-format msgid "static chain with function that doesn%'t use one" msgstr "" @@ -33381,562 +33495,562 @@ msgstr "" #. __builtin_unreachable internally, for example when IPA figures #. out a call cannot happen in a legal program. In such cases, #. we must make sure arguments are stripped off. -#: tree-cfg.cc:3533 +#: tree-cfg.cc:3537 #, gcc-internal-format msgid "%<__builtin_unreachable%> or %<__builtin_trap%> call with arguments" msgstr "" -#: tree-cfg.cc:3564 +#: tree-cfg.cc:3568 #, gcc-internal-format msgid "" "% calls should have same constant size for the first " "argument and LHS" msgstr "" -#: tree-cfg.cc:3582 +#: tree-cfg.cc:3586 #, gcc-internal-format msgid "invalid argument to gimple call" msgstr "" -#: tree-cfg.cc:3609 +#: tree-cfg.cc:3613 #, gcc-internal-format msgid "invalid operands in gimple comparison" msgstr "" -#: tree-cfg.cc:3620 +#: tree-cfg.cc:3624 #, gcc-internal-format msgid "mismatching comparison operand types" msgstr "" -#: tree-cfg.cc:3637 +#: tree-cfg.cc:3641 #, gcc-internal-format msgid "unsupported operation or type for vector comparison returning a boolean" msgstr "" -#: tree-cfg.cc:3652 +#: tree-cfg.cc:3656 #, gcc-internal-format msgid "non-vector operands in vector comparison" msgstr "" -#: tree-cfg.cc:3661 +#: tree-cfg.cc:3665 #, gcc-internal-format msgid "invalid vector comparison resulting type" msgstr "" -#: tree-cfg.cc:3668 +#: tree-cfg.cc:3672 #, gcc-internal-format msgid "bogus comparison result type" msgstr "" -#: tree-cfg.cc:3690 +#: tree-cfg.cc:3694 #, gcc-internal-format msgid "non-register as LHS of unary operation" msgstr "" -#: tree-cfg.cc:3696 +#: tree-cfg.cc:3700 #, gcc-internal-format msgid "invalid operand in unary operation" msgstr "" -#: tree-cfg.cc:3719 +#: tree-cfg.cc:3723 #, gcc-internal-format msgid "invalid vector types in nop conversion" msgstr "" -#: tree-cfg.cc:3756 +#: tree-cfg.cc:3760 #, gcc-internal-format msgid "invalid types in nop conversion" msgstr "" -#: tree-cfg.cc:3771 +#: tree-cfg.cc:3775 #, gcc-internal-format msgid "invalid types in address space conversion" msgstr "" -#: tree-cfg.cc:3785 +#: tree-cfg.cc:3789 #, gcc-internal-format msgid "invalid types in fixed-point conversion" msgstr "" -#: tree-cfg.cc:3800 +#: tree-cfg.cc:3804 #, gcc-internal-format msgid "invalid types in conversion to floating-point" msgstr "" -#: tree-cfg.cc:3815 +#: tree-cfg.cc:3819 #, gcc-internal-format msgid "invalid types in conversion to integer" msgstr "" -#: tree-cfg.cc:3855 +#: tree-cfg.cc:3859 #, gcc-internal-format msgid "type mismatch in %qs expression" msgstr "" -#: tree-cfg.cc:3872 tree-cfg.cc:3886 tree-cfg.cc:4252 tree-cfg.cc:4274 +#: tree-cfg.cc:3876 tree-cfg.cc:3890 tree-cfg.cc:4256 tree-cfg.cc:4278 #, gcc-internal-format msgid "invalid types for %qs" msgstr "" -#: tree-cfg.cc:3897 +#: tree-cfg.cc:3901 #, gcc-internal-format msgid "%qs should be from a scalar to a like vector" msgstr "" -#: tree-cfg.cc:3911 +#: tree-cfg.cc:3915 #, gcc-internal-format msgid "non-trivial conversion in unary operation" msgstr "" -#: tree-cfg.cc:3936 +#: tree-cfg.cc:3940 #, gcc-internal-format msgid "non-register as LHS of binary operation" msgstr "" -#: tree-cfg.cc:3943 +#: tree-cfg.cc:3947 #, gcc-internal-format msgid "invalid operands in binary operation" msgstr "" -#: tree-cfg.cc:4048 +#: tree-cfg.cc:4052 #, gcc-internal-format msgid "invalid non-vector operands to %qs" msgstr "" -#: tree-cfg.cc:4059 +#: tree-cfg.cc:4063 #, gcc-internal-format msgid "invalid (pointer) operands %qs" msgstr "" -#: tree-cfg.cc:4294 +#: tree-cfg.cc:4298 #, gcc-internal-format msgid "vector type expected in %qs" msgstr "" -#: tree-cfg.cc:4307 +#: tree-cfg.cc:4311 #, gcc-internal-format msgid "type mismatch in binary expression" msgstr "" -#: tree-cfg.cc:4335 +#: tree-cfg.cc:4339 #, gcc-internal-format msgid "non-register as LHS of ternary operation" msgstr "" -#: tree-cfg.cc:4343 +#: tree-cfg.cc:4347 #, gcc-internal-format msgid "invalid operands in ternary operation" msgstr "" -#: tree-cfg.cc:4375 +#: tree-cfg.cc:4379 #, gcc-internal-format msgid "" "the first argument of a %qs must be of a boolean vector type of the same " "number of elements as the result" msgstr "" -#: tree-cfg.cc:4407 tree-cfg.cc:4484 +#: tree-cfg.cc:4411 tree-cfg.cc:4488 #, gcc-internal-format msgid "vector types expected in %qs" msgstr "" -#: tree-cfg.cc:4440 +#: tree-cfg.cc:4444 #, gcc-internal-format msgid "vectors with different element number found in %qs" msgstr "" -#: tree-cfg.cc:4456 +#: tree-cfg.cc:4460 #, gcc-internal-format msgid "invalid mask type in %qs" msgstr "" -#: tree-cfg.cc:4517 +#: tree-cfg.cc:4521 #, gcc-internal-format msgid "not allowed type combination in %qs" msgstr "" -#: tree-cfg.cc:4526 +#: tree-cfg.cc:4530 #, gcc-internal-format msgid "invalid position or size in %qs" msgstr "" -#: tree-cfg.cc:4532 +#: tree-cfg.cc:4536 #, gcc-internal-format msgid "%qs into non-mode-precision operand" msgstr "" -#: tree-cfg.cc:4542 +#: tree-cfg.cc:4546 #, gcc-internal-format msgid "insertion out of range in %qs" msgstr "" -#: tree-cfg.cc:4552 +#: tree-cfg.cc:4556 #, gcc-internal-format msgid "%qs not at element boundary" msgstr "" -#: tree-cfg.cc:4608 +#: tree-cfg.cc:4612 #, gcc-internal-format msgid "non-trivial conversion in %qs" msgstr "" -#: tree-cfg.cc:4617 +#: tree-cfg.cc:4621 #, gcc-internal-format msgid "%qs LHS in clobber statement" msgstr "" -#: tree-cfg.cc:4625 +#: tree-cfg.cc:4629 #, gcc-internal-format msgid "%qs LHS in assignment statement" msgstr "" -#: tree-cfg.cc:4644 +#: tree-cfg.cc:4648 #, gcc-internal-format msgid "invalid operand in %qs" msgstr "" -#: tree-cfg.cc:4676 +#: tree-cfg.cc:4680 #, gcc-internal-format msgid "invalid %qs size argument in load" msgstr "" -#: tree-cfg.cc:4695 tree-cfg.cc:4721 +#: tree-cfg.cc:4699 tree-cfg.cc:4725 #, gcc-internal-format msgid "invalid RHS for gimple memory store: %qs" msgstr "" -#: tree-cfg.cc:4755 tree-cfg.cc:4773 +#: tree-cfg.cc:4759 tree-cfg.cc:4777 #, gcc-internal-format msgid "incorrect type of vector %qs elements" msgstr "" -#: tree-cfg.cc:4764 tree-cfg.cc:4781 +#: tree-cfg.cc:4768 tree-cfg.cc:4785 #, gcc-internal-format msgid "incorrect number of vector %qs elements" msgstr "" -#: tree-cfg.cc:4789 +#: tree-cfg.cc:4793 #, gcc-internal-format msgid "incorrect type of vector CONSTRUCTOR elements" msgstr "" -#: tree-cfg.cc:4798 +#: tree-cfg.cc:4802 #, gcc-internal-format msgid "vector %qs with non-NULL element index" msgstr "" -#: tree-cfg.cc:4805 +#: tree-cfg.cc:4809 #, gcc-internal-format msgid "vector %qs element is not a GIMPLE value" msgstr "" -#: tree-cfg.cc:4814 +#: tree-cfg.cc:4818 #, gcc-internal-format msgid "non-vector %qs with elements" msgstr "" -#: tree-cfg.cc:4872 +#: tree-cfg.cc:4876 #, gcc-internal-format msgid "invalid operand in return statement" msgstr "" -#: tree-cfg.cc:4887 c/gimple-parser.cc:2580 +#: tree-cfg.cc:4891 c/gimple-parser.cc:2580 #, gcc-internal-format msgid "invalid conversion in return statement" msgstr "" -#: tree-cfg.cc:4911 +#: tree-cfg.cc:4915 #, gcc-internal-format msgid "goto destination is neither a label nor a pointer" msgstr "" -#: tree-cfg.cc:4930 +#: tree-cfg.cc:4934 #, gcc-internal-format msgid "invalid operand to switch statement" msgstr "" -#: tree-cfg.cc:4938 +#: tree-cfg.cc:4942 #, gcc-internal-format msgid "non-integral type switch statement" msgstr "" -#: tree-cfg.cc:4948 +#: tree-cfg.cc:4952 #, gcc-internal-format msgid "invalid default case label in switch statement" msgstr "" -#: tree-cfg.cc:4960 +#: tree-cfg.cc:4964 #, gcc-internal-format msgid "invalid %" msgstr "" -#: tree-cfg.cc:4966 +#: tree-cfg.cc:4970 #, gcc-internal-format msgid "invalid case label in switch statement" msgstr "" -#: tree-cfg.cc:4973 +#: tree-cfg.cc:4977 #, gcc-internal-format msgid "invalid case range in switch statement" msgstr "" -#: tree-cfg.cc:4983 +#: tree-cfg.cc:4987 #, gcc-internal-format msgid "type precision mismatch in switch statement" msgstr "" -#: tree-cfg.cc:4990 +#: tree-cfg.cc:4994 #, gcc-internal-format msgid "type mismatch for case label in switch statement" msgstr "" -#: tree-cfg.cc:4999 +#: tree-cfg.cc:5003 #, gcc-internal-format msgid "case labels not sorted in switch statement" msgstr "" -#: tree-cfg.cc:5042 +#: tree-cfg.cc:5046 #, gcc-internal-format msgid "label context is not the current function declaration" msgstr "" -#: tree-cfg.cc:5051 +#: tree-cfg.cc:5055 #, gcc-internal-format msgid "incorrect entry in %" msgstr "" -#: tree-cfg.cc:5061 +#: tree-cfg.cc:5065 #, gcc-internal-format msgid "incorrect setting of landing pad number" msgstr "" -#: tree-cfg.cc:5077 +#: tree-cfg.cc:5081 #, gcc-internal-format msgid "invalid comparison code in gimple cond" msgstr "" -#: tree-cfg.cc:5085 +#: tree-cfg.cc:5089 #, gcc-internal-format msgid "invalid labels in gimple cond" msgstr "" -#: tree-cfg.cc:5171 tree-cfg.cc:5180 +#: tree-cfg.cc:5175 tree-cfg.cc:5184 #, gcc-internal-format msgid "invalid % result" msgstr "" -#: tree-cfg.cc:5190 +#: tree-cfg.cc:5194 #, gcc-internal-format msgid "missing % def" msgstr "" -#: tree-cfg.cc:5204 +#: tree-cfg.cc:5208 #, gcc-internal-format msgid "invalid % argument" msgstr "" -#: tree-cfg.cc:5211 +#: tree-cfg.cc:5215 #, gcc-internal-format msgid "incompatible types in % argument %u" msgstr "" -#: tree-cfg.cc:5314 +#: tree-cfg.cc:5318 #, gcc-internal-format msgid "% failed" msgstr "" -#: tree-cfg.cc:5372 +#: tree-cfg.cc:5376 #, gcc-internal-format msgid "dead statement in EH table" msgstr "" -#: tree-cfg.cc:5388 +#: tree-cfg.cc:5392 #, gcc-internal-format msgid "location references block not in block tree" msgstr "" -#: tree-cfg.cc:5437 +#: tree-cfg.cc:5441 #, gcc-internal-format msgid "local declaration from a different function" msgstr "" -#: tree-cfg.cc:5540 +#: tree-cfg.cc:5544 #, gcc-internal-format msgid "gimple_bb (phi) is set to a wrong basic block" msgstr "" -#: tree-cfg.cc:5549 +#: tree-cfg.cc:5553 #, gcc-internal-format msgid "PHI node with location" msgstr "" -#: tree-cfg.cc:5560 tree-cfg.cc:5607 +#: tree-cfg.cc:5564 tree-cfg.cc:5611 #, gcc-internal-format msgid "incorrect sharing of tree nodes" msgstr "" -#: tree-cfg.cc:5568 +#: tree-cfg.cc:5572 #, gcc-internal-format msgid "virtual PHI with argument locations" msgstr "" -#: tree-cfg.cc:5595 +#: tree-cfg.cc:5599 #, gcc-internal-format msgid "gimple_bb (stmt) is set to a wrong basic block" msgstr "" -#: tree-cfg.cc:5635 +#: tree-cfg.cc:5639 #, gcc-internal-format msgid "statement marked for throw, but doesn%'t" msgstr "" -#: tree-cfg.cc:5641 +#: tree-cfg.cc:5645 #, gcc-internal-format msgid "statement marked for throw in middle of block" msgstr "" -#: tree-cfg.cc:5663 +#: tree-cfg.cc:5667 #, gcc-internal-format msgid "verify_gimple failed" msgstr "" -#: tree-cfg.cc:5687 +#: tree-cfg.cc:5691 #, gcc-internal-format msgid "ENTRY_BLOCK has IL associated with it" msgstr "" -#: tree-cfg.cc:5694 +#: tree-cfg.cc:5698 #, gcc-internal-format msgid "EXIT_BLOCK has IL associated with it" msgstr "" -#: tree-cfg.cc:5701 +#: tree-cfg.cc:5705 #, gcc-internal-format, gfc-internal-format msgid "fallthru to exit from bb %d" msgstr "" -#: tree-cfg.cc:5707 +#: tree-cfg.cc:5711 #, gcc-internal-format msgid "entry block count not initialized" msgstr "" -#: tree-cfg.cc:5713 +#: tree-cfg.cc:5717 #, gcc-internal-format msgid "exit block count not initialized" msgstr "" -#: tree-cfg.cc:5720 +#: tree-cfg.cc:5724 #, gcc-internal-format msgid "probability of edge from entry block not initialized" msgstr "" -#: tree-cfg.cc:5735 +#: tree-cfg.cc:5739 #, gcc-internal-format, gfc-internal-format msgid "count of bb %d not initialized" msgstr "" -#: tree-cfg.cc:5741 +#: tree-cfg.cc:5745 #, gcc-internal-format, gfc-internal-format msgid "probability of edge %d->%d not initialized" msgstr "" -#: tree-cfg.cc:5761 +#: tree-cfg.cc:5765 #, gcc-internal-format msgid "nonlocal label %qD is not first in a sequence of labels in bb %d" msgstr "" -#: tree-cfg.cc:5768 +#: tree-cfg.cc:5772 #, gcc-internal-format msgid "EH landing pad label %qD is not first in a sequence of labels in bb %d" msgstr "" -#: tree-cfg.cc:5775 +#: tree-cfg.cc:5779 #, gcc-internal-format msgid "label %qD to block does not match in bb %d" msgstr "" -#: tree-cfg.cc:5782 +#: tree-cfg.cc:5786 #, gcc-internal-format msgid "label %qD has incorrect context in bb %d" msgstr "" -#: tree-cfg.cc:5797 +#: tree-cfg.cc:5801 #, gcc-internal-format, gfc-internal-format msgid "control flow in the middle of basic block %d" msgstr "" -#: tree-cfg.cc:5807 +#: tree-cfg.cc:5811 #, gcc-internal-format msgid "label %qD in the middle of basic block %d" msgstr "" -#: tree-cfg.cc:5835 +#: tree-cfg.cc:5839 #, gcc-internal-format, gfc-internal-format msgid "returns_twice call is %s in basic block %d" msgstr "" -#: tree-cfg.cc:5862 +#: tree-cfg.cc:5866 #, gcc-internal-format, gfc-internal-format msgid "fallthru edge after a control statement in bb %d" msgstr "" -#: tree-cfg.cc:5875 +#: tree-cfg.cc:5879 #, gcc-internal-format, gfc-internal-format msgid "true/false edge after a non-GIMPLE_COND in bb %d" msgstr "" -#: tree-cfg.cc:5898 tree-cfg.cc:5920 tree-cfg.cc:5937 tree-cfg.cc:6006 +#: tree-cfg.cc:5902 tree-cfg.cc:5924 tree-cfg.cc:5941 tree-cfg.cc:6010 #, gcc-internal-format, gfc-internal-format msgid "wrong outgoing edge flags at end of bb %d" msgstr "" -#: tree-cfg.cc:5908 +#: tree-cfg.cc:5912 #, gcc-internal-format, gfc-internal-format msgid "explicit goto at end of bb %d" msgstr "" -#: tree-cfg.cc:5942 +#: tree-cfg.cc:5946 #, gcc-internal-format, gfc-internal-format msgid "return edge does not point to exit in bb %d" msgstr "" -#: tree-cfg.cc:5972 +#: tree-cfg.cc:5976 #, gcc-internal-format msgid "found default case not at the start of case vector" msgstr "" -#: tree-cfg.cc:5980 +#: tree-cfg.cc:5984 #, gcc-internal-format msgid "case labels not sorted: " msgstr "" -#: tree-cfg.cc:5997 +#: tree-cfg.cc:6001 #, gcc-internal-format, gfc-internal-format msgid "extra outgoing edge %d->%d" msgstr "" -#: tree-cfg.cc:6020 +#: tree-cfg.cc:6024 #, gcc-internal-format, gfc-internal-format msgid "missing edge %i->%i" msgstr "" -#: tree-cfg.cc:9776 +#: tree-cfg.cc:9780 #, gcc-internal-format msgid "% function does return" msgstr "" -#: tree-cfg.cc:9796 tree-cfg.cc:9831 +#: tree-cfg.cc:9800 tree-cfg.cc:9835 #, gcc-internal-format msgid "control reaches end of non-void function" msgstr "" -#: tree-cfg.cc:9897 +#: tree-cfg.cc:9901 #, gcc-internal-format msgid "" "ignoring return value of %qD declared with attribute %" msgstr "" -#: tree-cfg.cc:9902 cp/cvt.cc:1123 +#: tree-cfg.cc:9906 cp/cvt.cc:1137 #, gcc-internal-format msgid "" "ignoring return value of function declared with attribute " @@ -34015,95 +34129,95 @@ msgstr "" msgid "BB %i has incorrect fallthru edge" msgstr "" -#: tree-inline.cc:3912 +#: tree-inline.cc:3925 #, gcc-internal-format msgid "function %q+F can never be copied because it receives a non-local goto" msgstr "" -#: tree-inline.cc:3919 +#: tree-inline.cc:3932 #, 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.cc:3959 +#: tree-inline.cc:3972 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses alloca (override using " "the always_inline attribute)" msgstr "" -#: tree-inline.cc:3973 +#: tree-inline.cc:3986 #, gcc-internal-format msgid "function %q+F can never be inlined because it uses setjmp" msgstr "" -#: tree-inline.cc:3987 +#: tree-inline.cc:4000 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses variable argument lists" msgstr "" -#: tree-inline.cc:3999 +#: tree-inline.cc:4012 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses setjmp-longjmp exception " "handling" msgstr "" -#: tree-inline.cc:4007 +#: tree-inline.cc:4020 #, gcc-internal-format msgid "function %q+F can never be inlined because it uses non-local goto" msgstr "" -#: tree-inline.cc:4019 +#: tree-inline.cc:4032 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses %<__builtin_return%> or " "%<__builtin_apply_args%>" msgstr "" -#: tree-inline.cc:4039 +#: tree-inline.cc:4052 #, gcc-internal-format msgid "function %q+F can never be inlined because it contains a computed goto" msgstr "" -#: tree-inline.cc:4085 +#: tree-inline.cc:4098 #, gcc-internal-format msgid "function %q+F can never be inlined because it has a VLA argument" msgstr "" -#: tree-inline.cc:4152 +#: tree-inline.cc:4165 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it is suppressed using %<-fno-" "inline%>" msgstr "" -#: tree-inline.cc:4160 +#: tree-inline.cc:4173 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses attributes conflicting " "with inlining" msgstr "" -#: tree-inline.cc:4841 +#: tree-inline.cc:4854 #, gcc-internal-format msgid "inlining failed in call to % %q+F: %s" msgstr "" -#: tree-inline.cc:4844 tree-inline.cc:4865 +#: tree-inline.cc:4857 tree-inline.cc:4878 #, gcc-internal-format msgid "called from here" msgstr "" -#: tree-inline.cc:4847 tree-inline.cc:4868 +#: tree-inline.cc:4860 tree-inline.cc:4881 #, gcc-internal-format msgid "called from this function" msgstr "" -#: tree-inline.cc:4861 +#: tree-inline.cc:4874 #, gcc-internal-format msgid "inlining failed in call to %q+F: %s" msgstr "" @@ -34133,12 +34247,17 @@ msgstr "" msgid "%s from %s called in %s" msgstr "" -#: tree-profile.cc:686 +#: tree-profile.cc:899 +#, gcc-internal-format, gfc-internal-format +msgid "Too many conditions (found %u); giving up coverage" +msgstr "" + +#: tree-profile.cc:1757 #, gcc-internal-format msgid "invalid regular expression %qs in %qs" msgstr "" -#: tree-profile.cc:785 +#: tree-profile.cc:1856 #, gcc-internal-format msgid "target does not support atomic profile update, single mode is selected" msgstr "" @@ -34153,42 +34272,42 @@ msgstr "" msgid "invalid fn spec attribute \"%s\" arg %i" msgstr "" -#: tree-ssa-ccp.cc:4679 c-family/c-common.cc:5911 +#: tree-ssa-ccp.cc:4681 c-family/c-common.cc:5911 #, gcc-internal-format msgid "%qs pointer is null" msgstr "" -#: tree-ssa-ccp.cc:4682 c-family/c-common.cc:5914 +#: tree-ssa-ccp.cc:4684 c-family/c-common.cc:5914 #, gcc-internal-format msgid "in a call to non-static member function %qD" msgstr "" -#: tree-ssa-ccp.cc:4688 c-family/c-common.cc:5920 +#: tree-ssa-ccp.cc:4690 c-family/c-common.cc:5920 #, gcc-internal-format, gfc-internal-format msgid "argument %u null where non-null expected" msgstr "" -#: tree-ssa-ccp.cc:4694 +#: tree-ssa-ccp.cc:4696 #, gcc-internal-format msgid "in a call to built-in function %qD" msgstr "" -#: tree-ssa-ccp.cc:4698 c-family/c-common.cc:5924 +#: tree-ssa-ccp.cc:4700 c-family/c-common.cc:5924 #, gcc-internal-format msgid "in a call to function %qD declared %qs" msgstr "" -#: tree-ssa-loop-niter.cc:3890 +#: tree-ssa-loop-niter.cc:3889 #, gcc-internal-format, gfc-internal-format msgid "iteration %s invokes undefined behavior" msgstr "" -#: tree-ssa-loop-niter.cc:3891 +#: tree-ssa-loop-niter.cc:3890 #, gcc-internal-format msgid "within this loop" msgstr "" -#: tree-ssa-loop-prefetch.cc:2100 +#: tree-ssa-loop-prefetch.cc:2102 #, gcc-internal-format msgid "% parameter is not a power of two %d" msgstr "" @@ -34292,7 +34411,7 @@ msgid "" "writing between %wu and %wu bytes into a region of size between %wu and %wu" msgstr "" -#: tree-ssa-strlen.cc:3090 +#: tree-ssa-strlen.cc:3092 #, gcc-internal-format msgid "" "%qD output truncated before terminating nul copying %E byte from a string of " @@ -34303,7 +34422,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: tree-ssa-strlen.cc:3106 +#: tree-ssa-strlen.cc:3108 #, gcc-internal-format msgid "%qD output truncated copying %E byte from a string of length %wu" msgid_plural "" @@ -34311,14 +34430,14 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: tree-ssa-strlen.cc:3113 +#: tree-ssa-strlen.cc:3115 #, gcc-internal-format msgid "" "%qD output truncated copying between %wu and %wu bytes from a string of " "length %wu" msgstr "" -#: tree-ssa-strlen.cc:3125 +#: tree-ssa-strlen.cc:3127 #, gcc-internal-format msgid "%qD output may be truncated copying %E byte from a string of length %wu" msgid_plural "" @@ -34326,57 +34445,57 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: tree-ssa-strlen.cc:3132 tree-ssa-strlen.cc:3148 +#: tree-ssa-strlen.cc:3134 tree-ssa-strlen.cc:3150 #, gcc-internal-format msgid "" "%qD output may be truncated copying between %wu and %wu bytes from a string " "of length %wu" msgstr "" -#: tree-ssa-strlen.cc:3302 +#: tree-ssa-strlen.cc:3304 #, gcc-internal-format msgid "" "%qD output truncated before terminating nul copying as many bytes from a " "string as its length" msgstr "" -#: tree-ssa-strlen.cc:3315 +#: tree-ssa-strlen.cc:3317 #, gcc-internal-format msgid "%qD specified bound depends on the length of the source argument" msgstr "" -#: tree-ssa-strlen.cc:3323 +#: tree-ssa-strlen.cc:3325 #, gcc-internal-format msgid "length computed here" msgstr "" -#: tree-ssa-strlen.cc:4280 +#: tree-ssa-strlen.cc:4282 #, gcc-internal-format msgid "" "%qD of a string of length %wu or more and an array of size %wu evaluates to " "nonzero" msgstr "" -#: tree-ssa-strlen.cc:4282 +#: tree-ssa-strlen.cc:4284 #, gcc-internal-format msgid "" "%qD of a string of length %wu and an array of size %wu evaluates to nonzero" msgstr "" -#: tree-ssa-strlen.cc:4289 +#: tree-ssa-strlen.cc:4291 #, gcc-internal-format msgid "" "%qD of strings of length %wu and %wu and bound of %wu evaluates to nonzero" msgstr "" -#: tree-ssa-strlen.cc:4294 +#: tree-ssa-strlen.cc:4296 #, gcc-internal-format msgid "" "%qD of a string of length %wu, an array of size %wu and bound of %wu " "evaluates to nonzero" msgstr "" -#: tree-ssa-strlen.cc:4305 +#: tree-ssa-strlen.cc:4307 #, gcc-internal-format msgid "in this expression" msgstr "" @@ -34401,7 +34520,7 @@ msgstr "" msgid "%qs may be used uninitialized" msgstr "" -#: tree-ssa-uninit.cc:337 varasm.cc:363 varasm.cc:7973 +#: tree-ssa-uninit.cc:337 varasm.cc:363 varasm.cc:8019 #, gcc-internal-format msgid "%qD was declared here" msgstr "" @@ -34646,128 +34765,128 @@ msgstr "" msgid "side-effects element in no-side-effects CONSTRUCTOR" msgstr "" -#: tree.cc:7340 m2/gm2-gcc/m2type.cc:215 +#: tree.cc:7341 m2/gm2-gcc/m2type.cc:215 #, gcc-internal-format msgid "arrays of functions are not meaningful" msgstr "" -#: tree.cc:7495 +#: tree.cc:7496 #, gcc-internal-format msgid "function return type cannot be function" msgstr "" -#: tree.cc:8955 tree.cc:9040 tree.cc:9103 +#: tree.cc:8956 tree.cc:9041 tree.cc:9104 #, gcc-internal-format, gfc-internal-format msgid "tree check: %s, have %s in %s, at %s:%d" msgstr "" -#: tree.cc:8992 +#: tree.cc:8993 #, gcc-internal-format, gfc-internal-format msgid "tree check: expected none of %s, have %s in %s, at %s:%d" msgstr "" -#: tree.cc:9005 +#: tree.cc:9006 #, gcc-internal-format msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d" msgstr "" -#: tree.cc:9054 +#: tree.cc:9055 #, gcc-internal-format msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d" msgstr "" -#: tree.cc:9067 +#: tree.cc:9068 #, gcc-internal-format msgid "tree check: expected %, have %qs in %s, at %s:%d" msgstr "" -#: tree.cc:9129 +#: tree.cc:9130 #, gcc-internal-format msgid "" "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:" "%d" msgstr "" -#: tree.cc:9143 +#: tree.cc:9144 #, gcc-internal-format msgid "" "tree check: accessed elt %d of % with %d elts in %s, at %s:%d" msgstr "" -#: tree.cc:9156 +#: tree.cc:9157 #, gcc-internal-format msgid "" "tree check: accessed elt %d of % with %d elts in %s, at %s:%d" msgstr "" -#: tree.cc:9169 +#: tree.cc:9170 #, gcc-internal-format, gfc-internal-format msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d" msgstr "" -#: tree.cc:9182 +#: tree.cc:9183 #, gcc-internal-format msgid "" "tree check: accessed operand %d of % with %d operands in %s, " "at %s:%d" msgstr "" -#: tree.cc:12436 +#: tree.cc:12437 #, gcc-internal-format msgid "%qD is deprecated: %s" msgstr "" -#: tree.cc:12439 +#: tree.cc:12440 #, gcc-internal-format msgid "%qD is deprecated" msgstr "" -#: tree.cc:12462 +#: tree.cc:12463 #, gcc-internal-format msgid "%qE is deprecated: %s" msgstr "" -#: tree.cc:12465 +#: tree.cc:12466 #, gcc-internal-format msgid "%qE is deprecated" msgstr "" -#: tree.cc:12471 +#: tree.cc:12472 #, gcc-internal-format, gfc-internal-format msgid "type is deprecated: %s" msgstr "" -#: tree.cc:12474 +#: tree.cc:12475 #, gcc-internal-format msgid "type is deprecated" msgstr "" -#: tree.cc:12516 +#: tree.cc:12517 #, gcc-internal-format msgid "%qD is unavailable: %s" msgstr "" -#: tree.cc:12518 +#: tree.cc:12519 #, gcc-internal-format msgid "%qD is unavailable" msgstr "" -#: tree.cc:12539 +#: tree.cc:12540 #, gcc-internal-format msgid "%qE is unavailable: %s" msgstr "" -#: tree.cc:12541 +#: tree.cc:12542 #, gcc-internal-format msgid "%qE is unavailable" msgstr "" -#: tree.cc:12546 +#: tree.cc:12547 #, gcc-internal-format, gfc-internal-format msgid "type is unavailable: %s" msgstr "" -#: tree.cc:12548 +#: tree.cc:12549 #, gcc-internal-format msgid "type is unavailable" msgstr "" @@ -34792,267 +34911,267 @@ msgstr "" #. - vector types may differ by TYPE_VECTOR_OPAQUE #. #. Convenience macro for matching individual fields. -#: tree.cc:13476 +#: tree.cc:13477 #, gcc-internal-format, gfc-internal-format msgid "type variant differs by %s" msgstr "" -#: tree.cc:13521 +#: tree.cc:13522 #, gcc-internal-format msgid "type variant has different %" msgstr "" -#: tree.cc:13523 +#: tree.cc:13524 #, gcc-internal-format msgid "type variant%'s %" msgstr "" -#: tree.cc:13525 +#: tree.cc:13526 #, gcc-internal-format msgid "type%'s %" msgstr "" -#: tree.cc:13550 +#: tree.cc:13551 #, gcc-internal-format msgid "type variant with %" msgstr "" -#: tree.cc:13563 +#: tree.cc:13564 #, gcc-internal-format msgid "type variant has different %" msgstr "" -#: tree.cc:13600 +#: tree.cc:13601 #, gcc-internal-format msgid "type variant has different %" msgstr "" -#: tree.cc:13602 +#: tree.cc:13603 #, gcc-internal-format msgid "type variant%'s %" msgstr "" -#: tree.cc:13604 +#: tree.cc:13605 #, gcc-internal-format msgid "type%'s %" msgstr "" -#: tree.cc:13643 +#: tree.cc:13644 #, gcc-internal-format msgid "type variant has different %" msgstr "" -#: tree.cc:13645 +#: tree.cc:13646 #, gcc-internal-format msgid "first mismatch is field" msgstr "" -#: tree.cc:13647 +#: tree.cc:13648 #, gcc-internal-format msgid "and field" msgstr "" -#: tree.cc:13664 +#: tree.cc:13665 #, gcc-internal-format msgid "type variant has different %" msgstr "" -#: tree.cc:13666 tree.cc:13677 +#: tree.cc:13667 tree.cc:13678 #, gcc-internal-format msgid "type variant%'s %" msgstr "" -#: tree.cc:13668 tree.cc:13679 +#: tree.cc:13669 tree.cc:13680 #, gcc-internal-format msgid "type%'s %" msgstr "" -#: tree.cc:13675 +#: tree.cc:13676 #, gcc-internal-format msgid "type is not compatible with its variant" msgstr "" -#: tree.cc:14000 +#: tree.cc:14001 #, gcc-internal-format, gfc-internal-format msgid "type %s is not an opaque type" msgstr "" -#: tree.cc:14006 +#: tree.cc:14007 #, gcc-internal-format, gfc-internal-format msgid "type %s is not with opaque mode" msgstr "" -#: tree.cc:14012 +#: tree.cc:14013 #, gcc-internal-format msgid "type %s differs by %" msgstr "" -#: tree.cc:14020 +#: tree.cc:14021 #, gcc-internal-format msgid "type %s differs by %" msgstr "" -#: tree.cc:14026 +#: tree.cc:14027 #, gcc-internal-format msgid "type %s differs by %" msgstr "" -#: tree.cc:14032 +#: tree.cc:14033 #, gcc-internal-format msgid "type %s differs by %" msgstr "" -#: tree.cc:14062 +#: tree.cc:14063 #, gcc-internal-format msgid "main variant is not defined" msgstr "" -#: tree.cc:14067 +#: tree.cc:14068 #, gcc-internal-format msgid "% has different %" msgstr "" -#: tree.cc:14078 +#: tree.cc:14079 #, gcc-internal-format msgid "% has different %" msgstr "" -#: tree.cc:14097 +#: tree.cc:14098 #, gcc-internal-format msgid "% is not compatible" msgstr "" -#: tree.cc:14105 +#: tree.cc:14106 #, gcc-internal-format msgid "% of % is not compatible" msgstr "" -#: tree.cc:14111 +#: tree.cc:14112 #, gcc-internal-format msgid "% of main variant is not main variant" msgstr "" -#: tree.cc:14127 +#: tree.cc:14128 #, gcc-internal-format msgid "% is not % nor %" msgstr "" -#: tree.cc:14137 +#: tree.cc:14138 #, gcc-internal-format msgid "% is not %" msgstr "" -#: tree.cc:14147 +#: tree.cc:14148 #, gcc-internal-format msgid "% is not %" msgstr "" -#: tree.cc:14168 +#: tree.cc:14169 #, gcc-internal-format msgid "% is not %" msgstr "" -#: tree.cc:14174 +#: tree.cc:14175 #, gcc-internal-format msgid "% type is not %" msgstr "" -#: tree.cc:14185 +#: tree.cc:14186 #, gcc-internal-format msgid "% is not record nor union" msgstr "" -#: tree.cc:14196 +#: tree.cc:14197 #, gcc-internal-format msgid "% is not record nor union" msgstr "" -#: tree.cc:14214 +#: tree.cc:14215 #, gcc-internal-format msgid "% not %" msgstr "" -#: tree.cc:14221 +#: tree.cc:14222 #, gcc-internal-format msgid "% non-NULL" msgstr "" -#: tree.cc:14228 +#: tree.cc:14229 #, gcc-internal-format msgid "% field is non-NULL" msgstr "" -#: tree.cc:14244 +#: tree.cc:14245 #, gcc-internal-format msgid "enum value is not % or %" msgstr "" -#: tree.cc:14253 +#: tree.cc:14254 #, gcc-internal-format msgid "enum value type is not % nor convertible to the enum" msgstr "" -#: tree.cc:14261 +#: tree.cc:14262 #, gcc-internal-format msgid "enum value name is not %" msgstr "" -#: tree.cc:14271 +#: tree.cc:14272 #, gcc-internal-format msgid "array % is not integer type" msgstr "" -#: tree.cc:14280 +#: tree.cc:14281 #, gcc-internal-format msgid "% defined in incomplete type" msgstr "" -#: tree.cc:14302 +#: tree.cc:14303 #, gcc-internal-format msgid "wrong tree in % list" msgstr "" -#: tree.cc:14318 +#: tree.cc:14319 #, gcc-internal-format msgid "% is %i while % is %p" msgstr "" -#: tree.cc:14325 +#: tree.cc:14326 #, gcc-internal-format msgid "% is not %" msgstr "" -#: tree.cc:14338 +#: tree.cc:14339 #, gcc-internal-format msgid "wrong % entry" msgstr "" -#: tree.cc:14351 +#: tree.cc:14352 #, gcc-internal-format msgid "% is non-NULL in % list" msgstr "" -#: tree.cc:14357 +#: tree.cc:14358 #, gcc-internal-format msgid "wrong entry in % list" msgstr "" -#: tree.cc:14364 +#: tree.cc:14365 #, gcc-internal-format msgid "% field is non-NULL" msgstr "" -#: tree.cc:14377 +#: tree.cc:14378 #, gcc-internal-format msgid "% is set while it should not be" msgstr "" -#: tree.cc:14387 +#: tree.cc:14388 #, gcc-internal-format msgid "% is not main variant" msgstr "" -#: tsan.cc:506 +#: tsan.cc:509 #, gcc-internal-format msgid "%qs is not supported with %qs" msgstr "" @@ -35264,7 +35383,7 @@ msgstr "" msgid "%qs symbol %q+D must have static linkage" msgstr "" -#: varasm.cc:6417 config/nvptx/nvptx.cc:7591 +#: varasm.cc:6417 config/nvptx/nvptx.cc:7592 #, gcc-internal-format msgid "alias definitions not supported in this configuration" msgstr "" @@ -35274,7 +35393,7 @@ msgstr "" msgid "visibility attribute not supported in this configuration; ignored" msgstr "" -#: varasm.cc:7969 +#: varasm.cc:8015 #, gcc-internal-format msgid "" "%+qD without % attribute and %qD with % attribute are " @@ -35491,7 +35610,7 @@ msgstr "" msgid "%qE attribute ignored because %qD is not a local variable" msgstr "" -#: c-family/c-attribs.cc:1952 config/i386/i386-options.cc:4154 +#: c-family/c-attribs.cc:1952 config/i386/i386-options.cc:4169 #, gcc-internal-format msgid "%qE attribute have effect only on public objects" msgstr "" @@ -35675,7 +35794,7 @@ msgid "ignoring %qE attribute not set on a variable" msgstr "" #: c-family/c-attribs.cc:2877 config/bfin/bfin.cc:4825 -#: config/loongarch/loongarch.cc:8095 +#: config/loongarch/loongarch.cc:7956 #, gcc-internal-format msgid "%qE attribute cannot be specified for local variables" msgstr "" @@ -35999,7 +36118,7 @@ msgstr "" msgid "%qE argument is not a function" msgstr "" -#: c-family/c-attribs.cc:4447 cp/name-lookup.cc:6377 +#: c-family/c-attribs.cc:4447 cp/name-lookup.cc:6411 #, gcc-internal-format msgid "deprecated message is not a string" msgstr "" @@ -36604,7 +36723,7 @@ msgstr "" msgid "duplicate case value" msgstr "" -#: c-family/c-common.cc:5264 c-family/c-warn.cc:2652 +#: c-family/c-common.cc:5264 c-family/c-warn.cc:2651 #, gcc-internal-format msgid "previously used here" msgstr "" @@ -36677,16 +36796,16 @@ msgstr "" #: c-family/c-common.cc:6306 c-family/c-common.cc:7228 #: c-family/c-common.cc:7275 c-family/c-common.cc:7354 -#: c-family/c-common.cc:7437 c-family/c-common.cc:8070 -#: config/aarch64/aarch64-sve-builtins.cc:2987 +#: c-family/c-common.cc:7437 c-family/c-common.cc:8080 +#: config/aarch64/aarch64-sve-builtins.cc:3026 #: config/arm/arm-mve-builtins.cc:1570 c/c-typeck.cc:3918 #, gcc-internal-format msgid "too few arguments to function %qE" msgstr "" #: c-family/c-common.cc:6311 c-family/c-common.cc:7281 -#: c-family/c-common.cc:7463 c-family/c-common.cc:8072 -#: config/aarch64/aarch64-sve-builtins.cc:2989 +#: c-family/c-common.cc:7463 c-family/c-common.cc:8082 +#: config/aarch64/aarch64-sve-builtins.cc:3028 #: config/arm/arm-mve-builtins.cc:1572 c/c-typeck.cc:3777 #, gcc-internal-format msgid "too many arguments to function %qE" @@ -36907,73 +37026,73 @@ msgstr "" msgid "invalid memory model argument %d of %qE" msgstr "" -#: c-family/c-common.cc:8304 +#: c-family/c-common.cc:8314 #, gcc-internal-format msgid "" "this target does not define a speculation barrier; your program will still " "execute correctly, but incorrect speculation may not be restricted" msgstr "" -#: c-family/c-common.cc:8946 +#: c-family/c-common.cc:8968 #, gcc-internal-format msgid "index value is out of bound" msgstr "" -#: c-family/c-common.cc:8988 c-family/c-common.cc:9037 -#: c-family/c-common.cc:9053 +#: c-family/c-common.cc:9010 c-family/c-common.cc:9059 +#: c-family/c-common.cc:9075 #, 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.cc:9141 d/intrinsics.cc:1459 +#: c-family/c-common.cc:9163 d/intrinsics.cc:1459 #: rust/backend/rust-tree.cc:3497 #, gcc-internal-format msgid "built-in function %qE must be directly called" msgstr "" -#: c-family/c-common.cc:9161 +#: c-family/c-common.cc:9183 #, gcc-internal-format msgid "size of array %qE is not a constant expression" msgstr "" -#: c-family/c-common.cc:9164 +#: c-family/c-common.cc:9186 #, gcc-internal-format msgid "size of array is not a constant expression" msgstr "" -#: c-family/c-common.cc:9168 +#: c-family/c-common.cc:9190 #, gcc-internal-format msgid "size %qE of array %qE is negative" msgstr "" -#: c-family/c-common.cc:9171 +#: c-family/c-common.cc:9193 #, gcc-internal-format msgid "size %qE of array is negative" msgstr "" -#: c-family/c-common.cc:9176 +#: c-family/c-common.cc:9198 #, gcc-internal-format msgid "size %qE of array %qE exceeds maximum object size %qE" msgstr "" -#: c-family/c-common.cc:9179 +#: c-family/c-common.cc:9201 #, gcc-internal-format msgid "size %qE of array exceeds maximum object size %qE" msgstr "" -#: c-family/c-common.cc:9184 +#: c-family/c-common.cc:9206 #, gcc-internal-format msgid "size of array %qE exceeds maximum object size %qE" msgstr "" -#: c-family/c-common.cc:9187 +#: c-family/c-common.cc:9209 #, gcc-internal-format msgid "size of array exceeds maximum object size %qE" msgstr "" -#: c-family/c-common.cc:9258 +#: c-family/c-common.cc:9280 #, gcc-internal-format msgid "" "environment variable %qs must expand to a non-negative integer less than or " @@ -37576,126 +37695,126 @@ msgid "ignoring %<#pragma %s %s%>" msgstr "" #. ... or not. -#: c-family/c-lex.cc:663 c-family/c-lex.cc:1602 +#: c-family/c-lex.cc:683 c-family/c-lex.cc:1622 #, gcc-internal-format msgid "stray %<@%> in program" msgstr "" -#: c-family/c-lex.cc:678 +#: c-family/c-lex.cc:698 #, gcc-internal-format msgid "stray %qs in program" msgstr "" -#: c-family/c-lex.cc:688 +#: c-family/c-lex.cc:708 #, gcc-internal-format, gfc-internal-format msgid "missing terminating %c character" msgstr "" -#: c-family/c-lex.cc:690 +#: c-family/c-lex.cc:710 #, gcc-internal-format msgid "stray %qc in program" msgstr "" -#: c-family/c-lex.cc:695 +#: c-family/c-lex.cc:715 #, gcc-internal-format msgid "stray %<\\%o%> in program" msgstr "" -#: c-family/c-lex.cc:1014 +#: c-family/c-lex.cc:1034 #, gcc-internal-format msgid "integer constant is too large for % type" msgstr "" -#: c-family/c-lex.cc:1017 +#: c-family/c-lex.cc:1037 #, gcc-internal-format msgid "integer constant is too large for %<_BitInt(%d)%> type" msgstr "" -#: c-family/c-lex.cc:1025 c/c-decl.cc:12651 +#: c-family/c-lex.cc:1045 c/c-decl.cc:12651 #, gcc-internal-format msgid "%<_BitInt(%d)%> is not supported on this target" msgstr "" -#: c-family/c-lex.cc:1077 +#: c-family/c-lex.cc:1097 #, gcc-internal-format msgid "this decimal constant is unsigned only in ISO C90" msgstr "" -#: c-family/c-lex.cc:1081 +#: c-family/c-lex.cc:1101 #, gcc-internal-format msgid "this decimal constant would be unsigned in ISO C90" msgstr "" -#: c-family/c-lex.cc:1109 +#: c-family/c-lex.cc:1129 #, gcc-internal-format msgid "integer constant is too large for % type" msgstr "" -#: c-family/c-lex.cc:1149 +#: c-family/c-lex.cc:1169 #, gcc-internal-format msgid "unsuffixed floating constant" msgstr "" -#: c-family/c-lex.cc:1163 +#: c-family/c-lex.cc:1183 #, gcc-internal-format msgid "decimal floating-point not supported for this target" msgstr "" -#: c-family/c-lex.cc:1186 c-family/c-lex.cc:1214 c-family/c-lex.cc:1252 +#: c-family/c-lex.cc:1206 c-family/c-lex.cc:1234 c-family/c-lex.cc:1272 #, gcc-internal-format msgid "unsupported non-standard suffix on floating constant" msgstr "" -#: c-family/c-lex.cc:1191 c-family/c-lex.cc:1245 c-family/c-lex.cc:1257 +#: c-family/c-lex.cc:1211 c-family/c-lex.cc:1265 c-family/c-lex.cc:1277 #, gcc-internal-format msgid "non-standard suffix on floating constant" msgstr "" -#: c-family/c-lex.cc:1223 c-family/c-lex.cc:1227 c-family/c-lex.cc:1232 +#: c-family/c-lex.cc:1243 c-family/c-lex.cc:1247 c-family/c-lex.cc:1252 #, gcc-internal-format msgid "non-standard suffix on floating constant before C23" msgstr "" -#: c-family/c-lex.cc:1239 +#: c-family/c-lex.cc:1259 #, gcc-internal-format msgid "" "% or % suffix on floating constant only available with %<-std=c+" "+2b%> or %<-std=gnu++2b%>" msgstr "" -#: c-family/c-lex.cc:1260 +#: c-family/c-lex.cc:1280 #, gcc-internal-format msgid "" "% or % suffix on floating constant only available with %<-" "std=c++2b%> or %<-std=gnu++2b%>" msgstr "" -#: c-family/c-lex.cc:1340 c-family/c-lex.cc:1343 +#: c-family/c-lex.cc:1360 c-family/c-lex.cc:1363 #, gcc-internal-format msgid "floating constant exceeds range of %qT" msgstr "" -#: c-family/c-lex.cc:1358 +#: c-family/c-lex.cc:1378 #, gcc-internal-format msgid "floating constant truncated to zero" msgstr "" -#: c-family/c-lex.cc:1559 +#: c-family/c-lex.cc:1579 #, gcc-internal-format msgid "repeated %<@%> before Objective-C string" msgstr "" -#: c-family/c-lex.cc:1578 c/c-parser.cc:8928 +#: c-family/c-lex.cc:1598 c/c-parser.cc:8926 #, gcc-internal-format msgid "unsupported non-standard concatenation of string literals" msgstr "" -#: c-family/c-lex.cc:1614 c/c-parser.cc:8949 +#: c-family/c-lex.cc:1634 c/c-parser.cc:8947 #, gcc-internal-format msgid "traditional C rejects string constant concatenation" msgstr "" -#: c-family/c-omp.cc:131 cp/pt.cc:19120 +#: c-family/c-omp.cc:131 cp/pt.cc:19123 #, gcc-internal-format msgid "" "%<#pragma omp critical%> with % clause requires a name, except when " @@ -37755,7 +37874,7 @@ msgstr "" msgid "% modifier may not be specified on % construct" msgstr "" -#: c-family/c-omp.cc:969 cp/semantics.cc:10852 +#: c-family/c-omp.cc:969 cp/semantics.cc:10921 #, gcc-internal-format msgid "invalid type for iteration variable %qE" msgstr "" @@ -37770,17 +37889,17 @@ msgstr "" msgid "%qE is not initialized" msgstr "" -#: c-family/c-omp.cc:1011 cp/semantics.cc:10744 +#: c-family/c-omp.cc:1011 cp/semantics.cc:10813 #, gcc-internal-format msgid "missing controlling predicate" msgstr "" -#: c-family/c-omp.cc:1117 cp/semantics.cc:10340 +#: c-family/c-omp.cc:1117 cp/semantics.cc:10409 #, gcc-internal-format msgid "invalid controlling predicate" msgstr "" -#: c-family/c-omp.cc:1124 cp/semantics.cc:10750 +#: c-family/c-omp.cc:1124 cp/semantics.cc:10819 #, gcc-internal-format msgid "missing increment expression" msgstr "" @@ -37790,7 +37909,7 @@ msgstr "" msgid "increment is not constant 1 or -1 for % condition" msgstr "" -#: c-family/c-omp.cc:1255 cp/semantics.cc:10457 +#: c-family/c-omp.cc:1255 cp/semantics.cc:10526 #, gcc-internal-format msgid "invalid increment expression" msgstr "" @@ -37845,61 +37964,76 @@ msgid "" "two different outer iteration variables %qD and %qD used in a single loop" msgstr "" -#: c-family/c-omp.cc:1810 +#: c-family/c-omp.cc:1820 #, gcc-internal-format -msgid "variable %qD used %s is bound in intervening code" +msgid "variable %qD used as loop variable is bound in intervening code" msgstr "" -#: c-family/c-omp.cc:2409 +#: c-family/c-omp.cc:1824 +#, gcc-internal-format +msgid "variable %qD used in initializer is bound in intervening code" +msgstr "" + +#: c-family/c-omp.cc:1828 +#, gcc-internal-format +msgid "variable %qD used in end test is bound in intervening code" +msgstr "" + +#: c-family/c-omp.cc:1832 +#, gcc-internal-format +msgid "variable %qD used in increment expression is bound in intervening code" +msgstr "" + +#: c-family/c-omp.cc:2436 #, gcc-internal-format msgid "" "invalid % reduction modifier on construct combined with % or " "%" msgstr "" -#: c-family/c-omp.cc:2420 +#: c-family/c-omp.cc:2447 #, gcc-internal-format msgid "" "invalid % reduction modifier on construct not combined with " "%, % or %" msgstr "" -#: c-family/c-omp.cc:2433 +#: c-family/c-omp.cc:2460 #, gcc-internal-format msgid "" "% % clause on construct other than %, %, " "%, %, %" msgstr "" -#: c-family/c-omp.cc:2920 c/c-typeck.cc:16316 cp/semantics.cc:9444 +#: c-family/c-omp.cc:2947 c/c-typeck.cc:16316 cp/semantics.cc:9513 #, gcc-internal-format msgid "" "%qD specified in % clause but not in an explicit privatization " "clause" msgstr "" -#: c-family/c-omp.cc:3012 c-family/c-omp.cc:3027 +#: c-family/c-omp.cc:3039 c-family/c-omp.cc:3054 #, gcc-internal-format msgid "%qD is not a function argument" msgstr "" -#: c-family/c-omp.cc:3308 c/c-typeck.cc:15464 cp/semantics.cc:8183 +#: c-family/c-omp.cc:3335 c/c-typeck.cc:15464 cp/semantics.cc:8252 #, gcc-internal-format msgid "bit-field %qE in %qs clause" msgstr "" -#: c-family/c-omp.cc:3316 +#: c-family/c-omp.cc:3343 #, gcc-internal-format msgid "%qE does not have a mappable type in %qs clause" msgstr "" -#: c-family/c-omp.cc:3324 c/c-typeck.cc:13874 c/c-typeck.cc:15553 +#: c-family/c-omp.cc:3351 c/c-typeck.cc:13874 c/c-typeck.cc:15553 #: c/c-typeck.cc:15741 #, gcc-internal-format msgid "%<_Atomic%> %qE in %qs clause" msgstr "" -#: c-family/c-omp.cc:3349 +#: c-family/c-omp.cc:3376 #, gcc-internal-format msgid "%qE is a member of a union" msgstr "" @@ -38509,8 +38643,8 @@ msgstr "" msgid "wrong type argument to %s" msgstr "" -#: c-family/c-warn.cc:59 c-family/c-warn.cc:72 cp/constexpr.cc:3590 -#: cp/constexpr.cc:7356 m2/gm2-gcc/m2expr.cc:956 +#: c-family/c-warn.cc:59 c-family/c-warn.cc:72 cp/constexpr.cc:3588 +#: cp/constexpr.cc:7354 m2/gm2-gcc/m2expr.cc:964 #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331 #, gcc-internal-format msgid "overflow in constant expression" @@ -39207,215 +39341,215 @@ msgstr "" msgid "comparisons like % do not have their mathematical meaning" msgstr "" -#: c-family/c-warn.cc:2190 +#: c-family/c-warn.cc:2189 #, gcc-internal-format msgid "label %q+D defined but not used" msgstr "" -#: c-family/c-warn.cc:2192 +#: c-family/c-warn.cc:2191 #, gcc-internal-format msgid "label %q+D declared but not defined" msgstr "" -#: c-family/c-warn.cc:2215 +#: c-family/c-warn.cc:2214 #, gcc-internal-format msgid "division by zero" msgstr "" -#: c-family/c-warn.cc:2235 +#: c-family/c-warn.cc:2234 #, gcc-internal-format msgid "" "% used with constant zero length parameter; this could be due to " "transposed parameters" msgstr "" -#: c-family/c-warn.cc:2259 +#: c-family/c-warn.cc:2258 #, gcc-internal-format msgid "" "% used with length equal to number of elements without " "multiplication by element size" msgstr "" -#: c-family/c-warn.cc:2291 +#: c-family/c-warn.cc:2290 #, gcc-internal-format msgid "" "%qD sizes specified with % in the earlier argument and not in the " "later argument" msgstr "" -#: c-family/c-warn.cc:2293 +#: c-family/c-warn.cc:2292 #, gcc-internal-format msgid "" "earlier argument should specify number of elements, later size of each " "element" msgstr "" -#: c-family/c-warn.cc:2332 +#: c-family/c-warn.cc:2331 #, gcc-internal-format msgid "allocation of insufficient size %qE for type %qT with size %qE" msgstr "" -#: c-family/c-warn.cc:2409 +#: c-family/c-warn.cc:2408 #, gcc-internal-format msgid "comparison of integer expressions of different signedness: %qT and %qT" msgstr "" -#: c-family/c-warn.cc:2483 +#: c-family/c-warn.cc:2482 #, gcc-internal-format msgid "promoted bitwise complement of an unsigned value is always nonzero" msgstr "" -#: c-family/c-warn.cc:2487 +#: c-family/c-warn.cc:2486 #, gcc-internal-format msgid "" "comparison of promoted bitwise complement of an unsigned value with constant" msgstr "" -#: c-family/c-warn.cc:2498 +#: c-family/c-warn.cc:2497 #, gcc-internal-format msgid "" "comparison of promoted bitwise complement of an unsigned value with unsigned" msgstr "" -#: c-family/c-warn.cc:2553 +#: c-family/c-warn.cc:2552 #, gcc-internal-format msgid "unused parameter %qD" msgstr "" -#: c-family/c-warn.cc:2615 +#: c-family/c-warn.cc:2614 #, gcc-internal-format msgid "typedef %qD locally defined but not used" msgstr "" -#: c-family/c-warn.cc:2651 +#: c-family/c-warn.cc:2650 #, gcc-internal-format msgid "duplicated % condition" msgstr "" -#: c-family/c-warn.cc:2680 +#: c-family/c-warn.cc:2679 #, gcc-internal-format msgid "" "optimization attribute on %qD follows definition but the attribute doesn%'t " "match" msgstr "" -#: c-family/c-warn.cc:2688 +#: c-family/c-warn.cc:2687 #, gcc-internal-format msgid "" "inline declaration of %qD follows declaration with attribute %" msgstr "" -#: c-family/c-warn.cc:2693 +#: c-family/c-warn.cc:2692 #, gcc-internal-format msgid "" "declaration of %q+D with attribute % follows inline declaration" msgstr "" -#: c-family/c-warn.cc:2747 +#: c-family/c-warn.cc:2746 #, gcc-internal-format msgid "result of %qE requires %u bits to represent, but %qT only has %u bits" msgstr "" -#: c-family/c-warn.cc:2786 c-family/c-warn.cc:2810 +#: c-family/c-warn.cc:2785 c-family/c-warn.cc:2809 #, gcc-internal-format msgid "comparison of constant %qE with boolean expression is always false" msgstr "" -#: c-family/c-warn.cc:2789 c-family/c-warn.cc:2807 +#: c-family/c-warn.cc:2788 c-family/c-warn.cc:2806 #, gcc-internal-format msgid "comparison of constant %qE with boolean expression is always true" msgstr "" -#: c-family/c-warn.cc:2857 +#: c-family/c-warn.cc:2856 msgid "passing argument %i to %qs-qualified parameter aliases with argument %Z" msgid_plural "" "passing argument %i to %qs-qualified parameter aliases with arguments %Z" msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:2923 c/c-typeck.cc:5823 cp/call.cc:6362 +#: c-family/c-warn.cc:2922 c/c-typeck.cc:5823 cp/call.cc:6362 #, gcc-internal-format msgid "this condition has identical branches" msgstr "" -#: c-family/c-warn.cc:3030 +#: c-family/c-warn.cc:3029 #, gcc-internal-format msgid "macro expands to multiple statements" msgstr "" -#: c-family/c-warn.cc:3031 +#: c-family/c-warn.cc:3030 #, gcc-internal-format msgid "some parts of macro expansion are not guarded by this %qs clause" msgstr "" -#: c-family/c-warn.cc:3171 +#: c-family/c-warn.cc:3170 #, gcc-internal-format msgid "" "taking address of packed member of %qT may result in an unaligned pointer " "value" msgstr "" -#: c-family/c-warn.cc:3397 +#: c-family/c-warn.cc:3396 msgid "mismatch in bound %Z of argument %u declared as %s" msgid_plural "mismatch in bounds %Z of argument %u declared as %s" msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:3400 c-family/c-warn.cc:3759 +#: c-family/c-warn.cc:3399 c-family/c-warn.cc:3758 #, gcc-internal-format, gfc-internal-format msgid "previously declared as %s" msgstr "" -#: c-family/c-warn.cc:3534 +#: c-family/c-warn.cc:3533 #, gcc-internal-format, gfc-internal-format msgid "argument %u of type %s declared as a variable length array" msgstr "" -#: c-family/c-warn.cc:3539 +#: c-family/c-warn.cc:3538 #, gcc-internal-format, gfc-internal-format msgid "previously declared as a pointer %s" msgstr "" -#: c-family/c-warn.cc:3540 +#: c-family/c-warn.cc:3539 #, gcc-internal-format, gfc-internal-format msgid "previously declared as an ordinary array %s" msgstr "" -#: c-family/c-warn.cc:3553 c-family/c-warn.cc:3567 +#: c-family/c-warn.cc:3552 c-family/c-warn.cc:3566 #, gcc-internal-format, gfc-internal-format msgid "argument %u of type %s declared as a pointer" msgstr "" -#: c-family/c-warn.cc:3557 c-family/c-warn.cc:3583 +#: c-family/c-warn.cc:3556 c-family/c-warn.cc:3582 #, gcc-internal-format, gfc-internal-format msgid "previously declared as a variable length array %s" msgstr "" -#: c-family/c-warn.cc:3570 +#: c-family/c-warn.cc:3569 #, gcc-internal-format, gfc-internal-format msgid "previously declared as an array %s" msgstr "" -#: c-family/c-warn.cc:3579 +#: c-family/c-warn.cc:3578 #, gcc-internal-format, gfc-internal-format msgid "argument %u of type %s declared as an ordinary array" msgstr "" -#: c-family/c-warn.cc:3607 +#: c-family/c-warn.cc:3606 #, gcc-internal-format, gfc-internal-format msgid "argument %u of type %s declared with %u variable bound" msgid_plural "argument %u of type %s declared with %u variable bounds" msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:3614 +#: c-family/c-warn.cc:3613 #, gcc-internal-format, gfc-internal-format msgid "previously declared as %s with %u variable bound" msgid_plural "previously declared as %s with %u variable bounds" msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:3628 +#: c-family/c-warn.cc:3627 #, gcc-internal-format, gfc-internal-format msgid "argument %u of type %s declared with %u unspecified variable bound" msgid_plural "" @@ -39423,110 +39557,110 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:3636 +#: c-family/c-warn.cc:3635 #, gcc-internal-format, gfc-internal-format msgid "previously declared as %s with %u unspecified variable bound" msgid_plural "previously declared as %s with %u unspecified variable bounds" msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:3643 +#: c-family/c-warn.cc:3642 #, gcc-internal-format, gfc-internal-format msgid "subsequently declared as %s with %u unspecified variable bound" msgid_plural "subsequently declared as %s with %u unspecified variable bounds" msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:3694 +#: c-family/c-warn.cc:3693 #, gcc-internal-format msgid "argument %u of type %s declared with mismatched bound argument %E" msgstr "" -#: c-family/c-warn.cc:3701 c-family/c-warn.cc:3735 +#: c-family/c-warn.cc:3700 c-family/c-warn.cc:3734 #, gcc-internal-format msgid "argument %u of type %s declared with mismatched bound %<%s%>" msgstr "" -#: c-family/c-warn.cc:3713 +#: c-family/c-warn.cc:3712 #, gcc-internal-format msgid "previously declared as %s with bound argument %E" msgstr "" -#: c-family/c-warn.cc:3718 +#: c-family/c-warn.cc:3717 #, gcc-internal-format msgid "previously declared as %s with bound %<%s%>" msgstr "" -#: c-family/c-warn.cc:3738 +#: c-family/c-warn.cc:3737 #, gcc-internal-format msgid "previously declared as %s with bound %qs" msgstr "" -#: c-family/c-warn.cc:3757 +#: c-family/c-warn.cc:3756 #, gcc-internal-format, gfc-internal-format msgid "argument %u of type %s with mismatched bound" msgstr "" -#: c-family/c-warn.cc:3788 +#: c-family/c-warn.cc:3787 #, gcc-internal-format msgid "" "expression does not compute the number of elements in this array; element " "type is %qT, not %qT" msgstr "" -#: c-family/c-warn.cc:3798 +#: c-family/c-warn.cc:3797 #, gcc-internal-format msgid "add parentheses around %qE to silence this warning" msgstr "" -#: c-family/c-warn.cc:3802 +#: c-family/c-warn.cc:3801 #, gcc-internal-format msgid "add parentheses around the second % to silence this warning" msgstr "" -#: c-family/c-warn.cc:3828 +#: c-family/c-warn.cc:3827 #, gcc-internal-format msgid "comparison between two arrays is deprecated in C++20" msgstr "" -#: c-family/c-warn.cc:3829 +#: c-family/c-warn.cc:3828 #, gcc-internal-format msgid "comparison between two arrays" msgstr "" -#: c-family/c-warn.cc:3833 +#: c-family/c-warn.cc:3832 #, gcc-internal-format msgid "" "use unary %<+%> which decays operands to pointers or %<&%D[0] %s &%D[0]%> to " "compare the addresses" msgstr "" -#: c-family/c-warn.cc:3837 +#: c-family/c-warn.cc:3836 #, gcc-internal-format msgid "use %<&%D[0] %s &%D[0]%> to compare the addresses" msgstr "" -#: c-family/c-warn.cc:3897 +#: c-family/c-warn.cc:3896 #, gcc-internal-format msgid "result of %<%wu^%wu%> is %wu; did you mean %<1 << %wu%> (%wu)?" msgstr "" -#: c-family/c-warn.cc:3907 +#: c-family/c-warn.cc:3906 #, gcc-internal-format msgid "result of %<%wu^%wu%> is %wu; did you mean %<1LL << %wu%>?" msgstr "" -#: c-family/c-warn.cc:3914 +#: c-family/c-warn.cc:3913 #, gcc-internal-format msgid "result of %<%wu^%wu%> is %wu; did you mean exponentiation?" msgstr "" -#: c-family/c-warn.cc:3925 +#: c-family/c-warn.cc:3924 #, gcc-internal-format msgid "result of %<%wu^%wu%> is %wu; did you mean %<1e%wu%>?" msgstr "" -#: c-family/c-warn.cc:3942 +#: c-family/c-warn.cc:3941 #, gcc-internal-format msgid "" "you can silence this warning by using a hexadecimal constant (%wx rather " @@ -39550,7 +39684,7 @@ msgid "" "%s%>" msgstr "" -#: common/config/aarch64/aarch64-common.cc:415 config/aarch64/aarch64.cc:18466 +#: common/config/aarch64/aarch64-common.cc:415 config/aarch64/aarch64.cc:18535 #, gcc-internal-format msgid "unknown value %qs for %<-mcpu%>" msgstr "" @@ -39581,15 +39715,15 @@ msgid "unrecognized option passed to %%:%" msgstr "" #: common/config/arm/arm-common.cc:378 common/config/arm/arm-common.cc:442 -#: common/config/arm/arm-common.cc:489 config/aarch64/aarch64.cc:18398 -#: config/aarch64/aarch64.cc:18436 +#: common/config/arm/arm-common.cc:489 config/aarch64/aarch64.cc:18467 +#: config/aarch64/aarch64.cc:18505 #, gcc-internal-format msgid "valid arguments are: %s; did you mean %qs?" msgstr "" #: common/config/arm/arm-common.cc:381 common/config/arm/arm-common.cc:445 -#: common/config/arm/arm-common.cc:492 config/aarch64/aarch64.cc:18401 -#: config/aarch64/aarch64.cc:18439 +#: common/config/arm/arm-common.cc:492 config/aarch64/aarch64.cc:18470 +#: config/aarch64/aarch64.cc:18508 #, gcc-internal-format, gfc-internal-format msgid "valid arguments are: %s" msgstr "" @@ -39639,21 +39773,21 @@ msgstr "" msgid "unrecognized operand to %%:%" msgstr "" -#: common/config/avr/avr-common.cc:85 +#: common/config/avr/avr-common.cc:87 #, gcc-internal-format msgid "" "option %<-mdouble=64%> is only available if configured %<--with-double={64|" "64,32|32,64}%>" msgstr "" -#: common/config/avr/avr-common.cc:93 +#: common/config/avr/avr-common.cc:95 #, gcc-internal-format msgid "" "option %<-mdouble=32%> is only available if configured %<--with-double={32|" "32,64|64,32}%>" msgstr "" -#: common/config/avr/avr-common.cc:109 +#: common/config/avr/avr-common.cc:111 #, gcc-internal-format msgid "" "option %<-mlong-double=64%> is only available if configured %<--with-long-" @@ -39661,7 +39795,7 @@ msgid "" "%<--with-double={64|64,32|32,64}%>" msgstr "" -#: common/config/avr/avr-common.cc:118 +#: common/config/avr/avr-common.cc:120 #, gcc-internal-format msgid "" "option %<-mlong-double=32%> is only available if configured %<--with-long-" @@ -39751,130 +39885,130 @@ msgid "" "64, 128, 256, or 512" msgstr "" -#: common/config/riscv/riscv-common.cc:667 +#: common/config/riscv/riscv-common.cc:765 #, gcc-internal-format msgid "%<-march=%s%>: extension %qs appear more than one time" msgstr "" -#: common/config/riscv/riscv-common.cc:676 +#: common/config/riscv/riscv-common.cc:774 #, gcc-internal-format msgid "" "%<-march=%s%>: extension %qs is unsupported standard single letter extension" msgstr "" -#: common/config/riscv/riscv-common.cc:684 +#: common/config/riscv/riscv-common.cc:782 #, gcc-internal-format msgid "" "%<-march=%s%>: extension %qs starts with 'z' but is unsupported standard " "extension" msgstr "" -#: common/config/riscv/riscv-common.cc:692 +#: common/config/riscv/riscv-common.cc:790 #, gcc-internal-format msgid "" "%<-march=%s%>: extension %qs starts with 's' but is unsupported standard " "supervisor extension" msgstr "" -#: common/config/riscv/riscv-common.cc:700 +#: common/config/riscv/riscv-common.cc:798 #, gcc-internal-format msgid "" "%<-march=%s%>: extension %qs starts with 'x' but is unsupported non-standard " "extension" msgstr "" -#: common/config/riscv/riscv-common.cc:947 +#: common/config/riscv/riscv-common.cc:1045 #, gcc-internal-format msgid "%<-march=%s%>: expect number after %<%dp%>" msgstr "" -#: common/config/riscv/riscv-common.cc:953 +#: common/config/riscv/riscv-common.cc:1051 #, gcc-internal-format msgid "" "%<-march=%s%>: for %<%s%dp%dp?%>, version number with more than 2 level is " "not supported" msgstr "" -#: common/config/riscv/riscv-common.cc:1011 +#: common/config/riscv/riscv-common.cc:1109 #, gcc-internal-format msgid "%<-march=%s%>: ISA string must begin with rv32 or rv64" msgstr "" -#: common/config/riscv/riscv-common.cc:1035 +#: common/config/riscv/riscv-common.cc:1133 #, gcc-internal-format msgid "%<-march=%s%>: rv%de is not a valid base ISA" msgstr "" -#: common/config/riscv/riscv-common.cc:1047 +#: common/config/riscv/riscv-common.cc:1145 #, gcc-internal-format msgid "" "version of % will be omitted, please specify version for individual " "extension" msgstr "" -#: common/config/riscv/riscv-common.cc:1066 +#: common/config/riscv/riscv-common.cc:1164 #, gcc-internal-format msgid "%<-march=%s%>: first ISA subset must be %, % or %" msgstr "" -#: common/config/riscv/riscv-common.cc:1089 +#: common/config/riscv/riscv-common.cc:1187 #, gcc-internal-format msgid "%<-march=%s%>: Not single-letter extension. %<%c%>" msgstr "" -#: common/config/riscv/riscv-common.cc:1220 +#: common/config/riscv/riscv-common.cc:1318 #, gcc-internal-format msgid "%<-march=%s%>: zcf extension supports in rv32 only" msgstr "" -#: common/config/riscv/riscv-common.cc:1225 +#: common/config/riscv/riscv-common.cc:1323 #, gcc-internal-format msgid "%<-march=%s%>: z*inx conflicts with floating-point extensions" msgstr "" -#: common/config/riscv/riscv-common.cc:1231 +#: common/config/riscv/riscv-common.cc:1329 #, gcc-internal-format msgid "%<-march=%s%>: h extension requires i extension" msgstr "" -#: common/config/riscv/riscv-common.cc:1236 +#: common/config/riscv/riscv-common.cc:1334 #, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmt" msgstr "" -#: common/config/riscv/riscv-common.cc:1238 +#: common/config/riscv/riscv-common.cc:1336 #, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmp" msgstr "" -#: common/config/riscv/riscv-common.cc:1247 +#: common/config/riscv/riscv-common.cc:1345 #, gcc-internal-format msgid "" "%<-march=%s%>: xtheadvector conflicts with vector extension or its sub-" "extensions" msgstr "" -#: common/config/riscv/riscv-common.cc:1344 +#: common/config/riscv/riscv-common.cc:1442 #, gcc-internal-format msgid "%<-march=%s%>: name of %s must be more than 1 letter" msgstr "" -#: common/config/riscv/riscv-common.cc:1356 +#: common/config/riscv/riscv-common.cc:1454 #, gcc-internal-format msgid "%<-march=%s%>: %s must separate with %<_%>" msgstr "" -#: common/config/riscv/riscv-common.cc:1419 +#: common/config/riscv/riscv-common.cc:1516 #, gcc-internal-format msgid "%<-march=%s%>: i, e or g must be the first extension" msgstr "" -#: common/config/riscv/riscv-common.cc:1758 +#: common/config/riscv/riscv-common.cc:1871 #, gcc-internal-format msgid "%<-mcpu=%s%>: unknown CPU" msgstr "" -#: common/config/riscv/riscv-common.cc:1837 +#: common/config/riscv/riscv-common.cc:1950 #, gcc-internal-format msgid "Cannot find suitable multilib set for %<-march=%s%>/%<-mabi=%s%>" msgstr "" @@ -40088,48 +40222,53 @@ msgid "" "runtime%>" msgstr "" -#: config/darwin.cc:3440 +#: config/darwin.cc:3435 #, gcc-internal-format msgid "%<-gsplit-dwarf%> is not supported on this platform, ignored" msgstr "" -#: config/darwin.cc:3528 +#: config/darwin.cc:3449 +#, gcc-internal-format +msgid "%<-g3%> is not supported by the debug linker in use (set to 2)" +msgstr "" + +#: config/darwin.cc:3541 #, gcc-internal-format msgid "" "%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>" msgstr "" -#: config/darwin.cc:3571 +#: config/darwin.cc:3584 #, gcc-internal-format msgid "%<-mpic-symbol-stubs%> is not required for 64-bit code (ignored)" msgstr "" -#: config/darwin.cc:3774 +#: config/darwin.cc:3787 #, gcc-internal-format msgid "built-in function %qD requires the %<-mconstant-cfstrings%> flag" msgstr "" -#: config/darwin.cc:3781 +#: config/darwin.cc:3794 #, gcc-internal-format msgid "built-in function %qD takes one argument only" msgstr "" -#: config/darwin.cc:3825 +#: config/darwin.cc:3838 #, gcc-internal-format msgid "CFString literal is missing" msgstr "" -#: config/darwin.cc:3836 +#: config/darwin.cc:3849 #, gcc-internal-format msgid "CFString literal expression is not a string constant" msgstr "" -#: config/darwin.cc:3860 +#: config/darwin.cc:3873 #, gcc-internal-format msgid "non-ASCII character in CFString literal" msgstr "" -#: config/darwin.cc:3861 +#: config/darwin.cc:3874 #, gcc-internal-format msgid "embedded NUL in CFString literal" msgstr "" @@ -40204,74 +40343,74 @@ msgstr "" msgid "PIC is only supported for RTPs" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2122 +#: config/aarch64/aarch64-builtins.cc:2123 #, gcc-internal-format msgid "first argument to %qD must be a string literal" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2253 -#: config/aarch64/aarch64-builtins.cc:2487 config/arm/arm-builtins.cc:3146 +#: config/aarch64/aarch64-builtins.cc:2254 +#: config/aarch64/aarch64-builtins.cc:2488 config/arm/arm-builtins.cc:3146 #, gcc-internal-format, gfc-internal-format msgid "argument %d must be a constant immediate" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2325 config/arm/arm-builtins.cc:3494 +#: config/aarch64/aarch64-builtins.cc:2326 config/arm/arm-builtins.cc:3494 #, gcc-internal-format msgid "lane index must be a constant immediate" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2329 +#: config/aarch64/aarch64-builtins.cc:2330 #, gcc-internal-format msgid "total size and element size must be a nonzero constant immediate" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2577 +#: config/aarch64/aarch64-builtins.cc:2578 #, gcc-internal-format msgid "argument must be a 16-bit constant immediate" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2700 +#: config/aarch64/aarch64-builtins.cc:2701 #, gcc-internal-format msgid "128-bit system register support requires the % extension" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2715 +#: config/aarch64/aarch64-builtins.cc:2716 #, gcc-internal-format msgid "invalid system register name provided" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2729 +#: config/aarch64/aarch64-builtins.cc:2730 #, gcc-internal-format msgid "invalid system register name %qs" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2809 +#: config/aarch64/aarch64-builtins.cc:2810 #, gcc-internal-format msgid "Constant-type argument expected" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2815 +#: config/aarch64/aarch64-builtins.cc:2816 #, gcc-internal-format msgid "argument %d must be a constant immediate in range [%wd,%wd]" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2894 +#: config/aarch64/aarch64-builtins.cc:2895 #, gcc-internal-format msgid "Memory Tagging Extension does not support %<-mabi=ilp32%>" msgstr "" -#: config/aarch64/aarch64-builtins.cc:2929 +#: config/aarch64/aarch64-builtins.cc:2930 #, gcc-internal-format, gfc-internal-format msgid "argument %d must be a constant immediate in range [0,15]" msgstr "" -#: config/aarch64/aarch64-builtins.cc:3727 -#: config/aarch64/aarch64-builtins.cc:3747 +#: config/aarch64/aarch64-builtins.cc:3728 +#: config/aarch64/aarch64-builtins.cc:3748 #, gcc-internal-format, gfc-internal-format msgid "expected 64-bit address but argument 1 is %d-bit" msgstr "" -#: config/aarch64/aarch64-builtins.cc:3731 +#: config/aarch64/aarch64-builtins.cc:3732 #, gcc-internal-format, gfc-internal-format msgid "expected 64-bit address but argument 2 is %d-bit" msgstr "" @@ -40286,78 +40425,78 @@ msgstr "" msgid "unknown %<#pragma GCC aarch64%> option %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1068 +#: config/aarch64/aarch64-sve-builtins.cc:1089 #: config/arm/arm-mve-builtins.cc:558 #, gcc-internal-format msgid "ACLE function %qD requires ISA extension %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1070 config/aarch64/aarch64.cc:11082 -#: config/aarch64/aarch64.cc:18241 config/aarch64/aarch64.cc:18956 +#: config/aarch64/aarch64-sve-builtins.cc:1091 config/aarch64/aarch64.cc:11151 +#: config/aarch64/aarch64.cc:18310 config/aarch64/aarch64.cc:19082 #, gcc-internal-format msgid "" "you can enable %qs using the command-line option %<-march%>, or by using the " "% attribute or pragma" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1090 +#: config/aarch64/aarch64-sve-builtins.cc:1111 #, gcc-internal-format msgid "ACLE function %qD is incompatible with the use of %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1112 +#: config/aarch64/aarch64-sve-builtins.cc:1133 #, gcc-internal-format msgid "ACLE function %qD cannot be called when SME streaming mode is enabled" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1119 +#: config/aarch64/aarch64-sve-builtins.cc:1140 #, gcc-internal-format msgid "ACLE function %qD can only be called when SME streaming mode is enabled" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1126 +#: config/aarch64/aarch64-sve-builtins.cc:1147 #, gcc-internal-format msgid "ACLE function %qD can only be called from a function that has %qs state" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1154 +#: config/aarch64/aarch64-sve-builtins.cc:1175 #: config/arm/arm-mve-builtins.cc:571 -#: config/riscv/riscv-vector-builtins.cc:4209 +#: config/riscv/riscv-vector-builtins.cc:4246 #, gcc-internal-format msgid "argument %d of %qE must be an integer constant expression" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1167 +#: config/aarch64/aarch64-sve-builtins.cc:1188 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects the value %wd" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1170 +#: config/aarch64/aarch64-sve-builtins.cc:1191 #: config/arm/arm-mve-builtins.cc:583 -#: config/riscv/riscv-vector-builtins.cc:4223 +#: config/riscv/riscv-vector-builtins.cc:4260 #, gcc-internal-format msgid "" "passing %wd to argument %d of %qE, which expects a value in the range [%wd, " "%wd]" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1183 +#: config/aarch64/aarch64-sve-builtins.cc:1204 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1196 +#: config/aarch64/aarch64-sve-builtins.cc:1217 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1208 +#: config/aarch64/aarch64-sve-builtins.cc:1229 #: config/arm/arm-mve-builtins.cc:595 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects a valid %qT value" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1723 +#: config/aarch64/aarch64-sve-builtins.cc:1762 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a single SVE vector rather " @@ -40365,8 +40504,8 @@ msgid "" msgstr "" #. num_vectors is always != 1, so the singular isn't needed. -#: config/aarch64/aarch64-sve-builtins.cc:1729 -#: config/aarch64/aarch64-sve-builtins.cc:1735 +#: config/aarch64/aarch64-sve-builtins.cc:1768 +#: config/aarch64/aarch64-sve-builtins.cc:1774 #: config/arm/arm-mve-builtins.cc:1205 config/arm/arm-mve-builtins.cc:1211 #, gcc-internal-format msgid "%qT%d%qE%d" @@ -40376,111 +40515,111 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: config/aarch64/aarch64-sve-builtins.cc:1767 +#: config/aarch64/aarch64-sve-builtins.cc:1806 #, gcc-internal-format msgid "" "passing tuple %qT to argument %d of %qE after passing single vector %qT to " "argument %d" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1772 +#: config/aarch64/aarch64-sve-builtins.cc:1811 #, gcc-internal-format msgid "" "passing single vector %qT to argument %d of %qE after passing tuple %qT to " "argument %d" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1777 +#: config/aarch64/aarch64-sve-builtins.cc:1816 #, gcc-internal-format msgid "" "passing mismatched tuple types %qT and %qT to arguments %d and %d of %qE" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1788 +#: config/aarch64/aarch64-sve-builtins.cc:1827 #: config/arm/arm-mve-builtins.cc:1104 #, gcc-internal-format msgid "%qE has no form that takes %qT arguments" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1849 +#: config/aarch64/aarch64-sve-builtins.cc:1888 #, gcc-internal-format msgid "%qE has no form that takes %qT and %qT arguments" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1911 +#: config/aarch64/aarch64-sve-builtins.cc:1950 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an %qs or %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1942 +#: config/aarch64/aarch64-sve-builtins.cc:1981 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a 32-bit or 64-bit integer " "type" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1961 +#: config/aarch64/aarch64-sve-builtins.cc:2000 #, gcc-internal-format msgid "" "passing %qT and %qT to arguments %d and %d of %qE, which expects a pair of " "64-bit integers" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:1985 +#: config/aarch64/aarch64-sve-builtins.cc:2024 #, gcc-internal-format msgid "" "passing mismatched integer types %qT and %qT to arguments %d and %d of %qE" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2006 +#: config/aarch64/aarch64-sve-builtins.cc:2045 #: config/arm/arm-mve-builtins.cc:1157 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a pointer type" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2009 +#: config/aarch64/aarch64-sve-builtins.cc:2048 #, gcc-internal-format msgid "an explicit type suffix is needed when using a vector of base addresses" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2018 +#: config/aarch64/aarch64-sve-builtins.cc:2057 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, but %qT is not a valid SVE element type" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2026 +#: config/aarch64/aarch64-sve-builtins.cc:2065 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a pointer to 32-bit or 64-" "bit elements" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2068 +#: config/aarch64/aarch64-sve-builtins.cc:2107 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects an SVE type rather than a " "scalar type" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2072 +#: config/aarch64/aarch64-sve-builtins.cc:2111 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an SVE type" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2117 +#: config/aarch64/aarch64-sve-builtins.cc:2156 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a vector of integers" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2147 +#: config/aarch64/aarch64-sve-builtins.cc:2186 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a 128 bit NEON vector type" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2164 -#: config/aarch64/aarch64-sve-builtins.cc:2462 +#: config/aarch64/aarch64-sve-builtins.cc:2203 +#: config/aarch64/aarch64-sve-builtins.cc:2501 #: config/arm/arm-mve-builtins.cc:1403 #, gcc-internal-format msgid "" @@ -40488,64 +40627,64 @@ msgid "" "integers" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2185 +#: config/aarch64/aarch64-sve-builtins.cc:2224 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a vector of 32-bit or 64-" "bit elements" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2227 +#: config/aarch64/aarch64-sve-builtins.cc:2266 #, gcc-internal-format msgid "" "operations on multiple vectors must be predicated by %qs rather than %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2230 +#: config/aarch64/aarch64-sve-builtins.cc:2269 #, gcc-internal-format msgid "operations on single vectors must be predicated by %qs rather than %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2246 +#: config/aarch64/aarch64-sve-builtins.cc:2285 #: config/arm/arm-mve-builtins.cc:1248 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a vector or scalar type" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2268 -#: config/aarch64/aarch64-sve-builtins.cc:2919 +#: config/aarch64/aarch64-sve-builtins.cc:2307 +#: config/aarch64/aarch64-sve-builtins.cc:2958 #: config/arm/arm-mve-builtins.cc:1270 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2295 -#: config/aarch64/aarch64-sve-builtins.cc:2411 -#: config/aarch64/aarch64-sve-builtins.cc:2540 +#: config/aarch64/aarch64-sve-builtins.cc:2334 +#: config/aarch64/aarch64-sve-builtins.cc:2450 +#: config/aarch64/aarch64-sve-builtins.cc:2579 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, but argument %d had type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2406 +#: config/aarch64/aarch64-sve-builtins.cc:2445 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, but argument %d was a tuple of %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2430 +#: config/aarch64/aarch64-sve-builtins.cc:2469 #: config/arm/arm-mve-builtins.cc:1384 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a vector of %d-bit elements" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2435 +#: config/aarch64/aarch64-sve-builtins.cc:2474 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects vectors of %d-bit elements" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2448 +#: config/aarch64/aarch64-sve-builtins.cc:2487 #: config/arm/arm-mve-builtins.cc:1396 #, gcc-internal-format msgid "" @@ -40554,7 +40693,7 @@ msgstr "" #. Translation note: could also be written "expects a tuple of #. signed integer vectors". -#: config/aarch64/aarch64-sve-builtins.cc:2454 +#: config/aarch64/aarch64-sve-builtins.cc:2493 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects vectors of signed integers" @@ -40562,13 +40701,13 @@ msgstr "" #. Translation note: could also be written "expects a tuple of #. unsigned integer vectors". -#: config/aarch64/aarch64-sve-builtins.cc:2468 +#: config/aarch64/aarch64-sve-builtins.cc:2507 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects vectors of unsigned integers" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2488 +#: config/aarch64/aarch64-sve-builtins.cc:2527 #: config/arm/arm-mve-builtins.cc:1423 #, gcc-internal-format msgid "" @@ -40576,7 +40715,7 @@ msgid "" "passed here have type %qT and %qT respectively" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2508 +#: config/aarch64/aarch64-sve-builtins.cc:2547 #: config/arm/arm-mve-builtins.cc:1444 #, gcc-internal-format msgid "" @@ -40584,7 +40723,7 @@ msgid "" "passed here have type %qT and %qT respectively" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2519 +#: config/aarch64/aarch64-sve-builtins.cc:2558 #: config/arm/arm-mve-builtins.cc:1455 #, gcc-internal-format msgid "" @@ -40592,26 +40731,26 @@ msgid "" "%qT to argument %d" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2559 +#: config/aarch64/aarch64-sve-builtins.cc:2598 #: config/arm/arm-mve-builtins.cc:1540 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2577 +#: config/aarch64/aarch64-sve-builtins.cc:2616 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which does not accept scalars for this " "combination of arguments" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2593 +#: config/aarch64/aarch64-sve-builtins.cc:2632 #: config/arm/arm-mve-builtins.cc:1556 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a scalar pointer" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2616 +#: config/aarch64/aarch64-sve-builtins.cc:2655 #, gcc-internal-format msgid "" "call to %qE is ambiguous; argument %d has type %qs but argument %d has type " @@ -40620,7 +40759,7 @@ msgstr "" #. It doesn't really matter whether the element is expected to be #. the same size as type suffix 0. -#: config/aarch64/aarch64-sve-builtins.cc:2661 +#: config/aarch64/aarch64-sve-builtins.cc:2700 #: config/arm/arm-mve-builtins.cc:1501 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a scalar element" @@ -40628,57 +40767,57 @@ msgstr "" #. It doesn't seem useful to distinguish between signed and unsigned #. scalars here. -#: config/aarch64/aarch64-sve-builtins.cc:2667 +#: config/aarch64/aarch64-sve-builtins.cc:2706 #: config/arm/arm-mve-builtins.cc:1507 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a scalar integer" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2703 +#: config/aarch64/aarch64-sve-builtins.cc:2742 #, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects %qs or %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2723 +#: config/aarch64/aarch64-sve-builtins.cc:2762 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a vector of 32-bit or 64-" "bit integers" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2773 +#: config/aarch64/aarch64-sve-builtins.cc:2812 #, gcc-internal-format msgid "when storing %qT, %qE requires a vector base and a scalar index" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2778 +#: config/aarch64/aarch64-sve-builtins.cc:2817 #, gcc-internal-format msgid "%qE requires a vector base and a scalar index" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2782 +#: config/aarch64/aarch64-sve-builtins.cc:2821 #, gcc-internal-format msgid "%qE does not support 32-bit vector type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2810 +#: config/aarch64/aarch64-sve-builtins.cc:2849 #, gcc-internal-format msgid "%qE does not support 32-bit sign-extended offsets" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2813 +#: config/aarch64/aarch64-sve-builtins.cc:2852 #, gcc-internal-format msgid "%qE does not support sign-extended offsets" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2826 +#: config/aarch64/aarch64-sve-builtins.cc:2865 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which when loading %qT expects a vector " "of %d-bit integers" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2831 +#: config/aarch64/aarch64-sve-builtins.cc:2870 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which when storing %qT expects a vector " @@ -40686,194 +40825,193 @@ msgid "" msgstr "" #. TYPE is part of the function name. -#: config/aarch64/aarch64-sve-builtins.cc:2838 +#: config/aarch64/aarch64-sve-builtins.cc:2877 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a vector of %d-bit integers" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2886 +#: config/aarch64/aarch64-sve-builtins.cc:2925 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, which expects a vector or pointer base " "address" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2970 +#: config/aarch64/aarch64-sve-builtins.cc:3009 #, gcc-internal-format msgid "cannot combine a base of type %qT with an offset of type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:2974 +#: config/aarch64/aarch64-sve-builtins.cc:3013 #, gcc-internal-format msgid "cannot combine a base of type %qT with an index of type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:3063 +#: config/aarch64/aarch64-sve-builtins.cc:3102 #: config/arm/arm-mve-builtins.cc:1666 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, but its %qT form does not accept scalars" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:3127 +#: config/aarch64/aarch64-sve-builtins.cc:3166 #, gcc-internal-format msgid "" "passing %qT to argument %d of %qE, but its %qT form does not accept single " "vectors" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4621 -#: config/aarch64/aarch64-sve-builtins.cc:4683 +#: config/aarch64/aarch64-sve-builtins.cc:4660 #: config/arm/arm-mve-builtins.cc:466 config/arm/arm-mve-builtins.cc:491 -#: config/riscv/riscv-vector-builtins.cc:4536 +#: config/riscv/riscv-vector-builtins.cc:4589 #, gcc-internal-format msgid "duplicate definition of %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4675 +#: config/aarch64/aarch64-sve-builtins.cc:4717 #, gcc-internal-format msgid "%qs defined without first defining %qs" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4834 +#: config/aarch64/aarch64-sve-builtins.cc:4868 #, gcc-internal-format msgid "%qs applied to non-SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4840 +#: config/aarch64/aarch64-sve-builtins.cc:4874 #, gcc-internal-format msgid "%qs applied to non-vector type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4847 +#: config/aarch64/aarch64-sve-builtins.cc:4881 #, gcc-internal-format msgid "%qs applied to type %qT, which already has a size" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4855 +#: config/aarch64/aarch64-sve-builtins.cc:4889 #, gcc-internal-format msgid "%qs requires an integer constant expression" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4863 +#: config/aarch64/aarch64-sve-builtins.cc:4897 #, gcc-internal-format msgid "unsupported SVE vector size" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4977 +#: config/aarch64/aarch64-sve-builtins.cc:5011 #, gcc-internal-format msgid "SVE type %qT does not have a fixed size" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4982 +#: config/aarch64/aarch64-sve-builtins.cc:5016 #, gcc-internal-format msgid "SVE type %qT does not have a defined alignment" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4987 -#: config/riscv/riscv-vector-builtins.cc:4448 +#: config/aarch64/aarch64-sve-builtins.cc:5021 +#: config/riscv/riscv-vector-builtins.cc:4501 #, gcc-internal-format msgid "variables of type %qT cannot have thread-local storage duration" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:4993 +#: config/aarch64/aarch64-sve-builtins.cc:5027 #, gcc-internal-format msgid "arithmetic on pointer to SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:5000 +#: config/aarch64/aarch64-sve-builtins.cc:5034 #, gcc-internal-format msgid "member variables cannot have SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:5002 +#: config/aarch64/aarch64-sve-builtins.cc:5036 #, gcc-internal-format msgid "fields cannot have SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:5007 +#: config/aarch64/aarch64-sve-builtins.cc:5041 #, gcc-internal-format msgid "array elements cannot have SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:5012 +#: config/aarch64/aarch64-sve-builtins.cc:5046 #, gcc-internal-format msgid "cannot allocate objects with SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:5017 +#: config/aarch64/aarch64-sve-builtins.cc:5051 #, gcc-internal-format msgid "cannot delete objects with SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:5022 +#: config/aarch64/aarch64-sve-builtins.cc:5056 #, gcc-internal-format msgid "cannot throw or catch SVE type %qT" msgstr "" -#: config/aarch64/aarch64-sve-builtins.cc:5027 +#: config/aarch64/aarch64-sve-builtins.cc:5061 #, gcc-internal-format msgid "capture by copy of SVE type %qT" msgstr "" -#: config/aarch64/aarch64.cc:635 +#: config/aarch64/aarch64.cc:637 #, gcc-internal-format msgid "the arguments to %qE must be constant strings" msgstr "" -#: config/aarch64/aarch64.cc:643 +#: config/aarch64/aarch64.cc:645 #, gcc-internal-format msgid "unrecognized state string %qs" msgstr "" -#: config/aarch64/aarch64.cc:727 +#: config/aarch64/aarch64.cc:729 #, gcc-internal-format msgid "the %qE attribute cannot be applied to an SVE function type" msgstr "" -#: config/aarch64/aarch64.cc:754 +#: config/aarch64/aarch64.cc:756 #, gcc-internal-format msgid "cannot create a new %qs scope since %qs is shared with callers" msgstr "" -#: config/aarch64/aarch64.cc:770 +#: config/aarch64/aarch64.cc:772 #, gcc-internal-format msgid "%qE attribute applies only to function definitions" msgstr "" -#: config/aarch64/aarch64.cc:816 +#: config/aarch64/aarch64.cc:818 #, gcc-internal-format msgid "inconsistent attributes for state %qs" msgstr "" -#: config/aarch64/aarch64.cc:1305 +#: config/aarch64/aarch64.cc:1307 #, gcc-internal-format msgid "%qs is incompatible with the use of floating-point types" msgstr "" -#: config/aarch64/aarch64.cc:1308 +#: config/aarch64/aarch64.cc:1310 #, gcc-internal-format msgid "%qs is incompatible with the use of vector types" msgstr "" -#: config/aarch64/aarch64.cc:1312 +#: config/aarch64/aarch64.cc:1314 #, gcc-internal-format msgid "" "%qs feature modifier is incompatible with the use of floating-point types" msgstr "" -#: config/aarch64/aarch64.cc:1315 +#: config/aarch64/aarch64.cc:1317 #, gcc-internal-format msgid "%qs feature modifier is incompatible with the use of vector types" msgstr "" -#: config/aarch64/aarch64.cc:1331 +#: config/aarch64/aarch64.cc:1333 #, gcc-internal-format msgid "this operation requires the SVE ISA extension" msgstr "" -#: config/aarch64/aarch64.cc:1332 +#: config/aarch64/aarch64.cc:1334 #, gcc-internal-format msgid "" "you can enable SVE using the command-line option %<-march%>, or by using the " @@ -40882,456 +41020,456 @@ msgstr "" #. We can't gracefully recover at this point, so make this a #. fatal error. -#: config/aarch64/aarch64.cc:6377 +#: config/aarch64/aarch64.cc:6403 #, gcc-internal-format msgid "arguments of type %qT require the SVE ISA extension" msgstr "" -#: config/aarch64/aarch64.cc:6822 +#: config/aarch64/aarch64.cc:6880 #, gcc-internal-format msgid "SVE type %qT cannot be passed to an unprototyped function" msgstr "" -#: config/aarch64/aarch64.cc:6959 config/aarch64/aarch64.cc:7037 -#: config/aarch64/aarch64.cc:21183 +#: config/aarch64/aarch64.cc:7021 config/aarch64/aarch64.cc:7100 +#: config/aarch64/aarch64.cc:21311 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 13.1" msgstr "" -#: config/aarch64/aarch64.cc:6966 config/aarch64/aarch64.cc:7044 -#: config/aarch64/aarch64.cc:21189 +#: config/aarch64/aarch64.cc:7028 config/aarch64/aarch64.cc:7107 +#: config/aarch64/aarch64.cc:21318 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 14.1" msgstr "" -#: config/aarch64/aarch64.cc:6976 config/aarch64/aarch64.cc:7053 -#: config/aarch64/aarch64.cc:21195 config/arm/arm.cc:7301 -#: config/arm/arm.cc:7331 config/arm/arm.cc:29376 +#: config/aarch64/aarch64.cc:7039 config/aarch64/aarch64.cc:7117 +#: config/aarch64/aarch64.cc:21326 config/arm/arm.cc:7342 +#: config/arm/arm.cc:7372 config/arm/arm.cc:29418 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 9.1" msgstr "" -#: config/aarch64/aarch64.cc:7176 +#: config/aarch64/aarch64.cc:7240 #, gcc-internal-format msgid "%qE requires the SVE ISA extension" msgstr "" -#: config/aarch64/aarch64.cc:7179 +#: config/aarch64/aarch64.cc:7243 #, gcc-internal-format msgid "calls to functions of type %qT require the SVE ISA extension" msgstr "" -#: config/aarch64/aarch64.cc:7367 +#: config/aarch64/aarch64.cc:7431 #, gcc-internal-format msgid "stack probes for SVE frames" msgstr "" -#: config/aarch64/aarch64.cc:11080 +#: config/aarch64/aarch64.cc:11149 #, gcc-internal-format msgid "calling a streaming function requires the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:11089 config/aarch64/aarch64.cc:11093 +#: config/aarch64/aarch64.cc:11158 config/aarch64/aarch64.cc:11162 #, gcc-internal-format msgid "" "call to a function that shares %qs state from a function that has no %qs " "state" msgstr "" -#: config/aarch64/aarch64.cc:11096 +#: config/aarch64/aarch64.cc:11165 #, gcc-internal-format msgid "" "call to a function that shares SME state from a function that has no SME " "state" msgstr "" -#: config/aarch64/aarch64.cc:11154 +#: config/aarch64/aarch64.cc:11223 #, gcc-internal-format msgid "" "call to a function that shares state other than %qs from a function that has " "%qs state" msgstr "" -#: config/aarch64/aarch64.cc:11156 +#: config/aarch64/aarch64.cc:11225 #, gcc-internal-format msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA" msgstr "" -#: config/aarch64/aarch64.cc:17859 +#: config/aarch64/aarch64.cc:17928 #, gcc-internal-format msgid "unknown flag passed in %<-moverride=%s%> (%s)" msgstr "" -#: config/aarch64/aarch64.cc:17903 +#: config/aarch64/aarch64.cc:17972 #, gcc-internal-format msgid "%qs string ill-formed" msgstr "" -#: config/aarch64/aarch64.cc:17959 +#: config/aarch64/aarch64.cc:18028 #, gcc-internal-format msgid "invalid format for %" msgstr "" -#: config/aarch64/aarch64.cc:17971 +#: config/aarch64/aarch64.cc:18040 #, gcc-internal-format msgid "invalid % value: %d" msgstr "" -#: config/aarch64/aarch64.cc:17991 +#: config/aarch64/aarch64.cc:18060 #, gcc-internal-format, gfc-internal-format msgid "tuning string missing in option (%s)" msgstr "" -#: config/aarch64/aarch64.cc:18009 +#: config/aarch64/aarch64.cc:18078 #, gcc-internal-format, gfc-internal-format msgid "unknown tuning option (%s)" msgstr "" -#: config/aarch64/aarch64.cc:18197 config/arm/arm.cc:3227 -#: config/riscv/riscv.cc:9031 +#: config/aarch64/aarch64.cc:18266 config/arm/arm.cc:3227 +#: config/riscv/riscv.cc:9367 #, gcc-internal-format msgid "" "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-" "protector-guard-offset=%s%>" msgstr "" -#: config/aarch64/aarch64.cc:18206 config/riscv/riscv.cc:9040 +#: config/aarch64/aarch64.cc:18275 config/riscv/riscv.cc:9376 #, gcc-internal-format msgid "" "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> " "must be used with %<-mstack-protector-guard=sysreg%>" msgstr "" -#: config/aarch64/aarch64.cc:18214 +#: config/aarch64/aarch64.cc:18283 #, gcc-internal-format msgid "specify a system register with a small string length" msgstr "" -#: config/aarch64/aarch64.cc:18224 config/arm/arm.cc:3239 -#: config/riscv/riscv.cc:9069 config/rs6000/rs6000.cc:4546 +#: config/aarch64/aarch64.cc:18293 config/arm/arm.cc:3239 +#: config/riscv/riscv.cc:9405 config/rs6000/rs6000.cc:4498 #, gcc-internal-format msgid "%qs is not a valid offset in %qs" msgstr "" -#: config/aarch64/aarch64.cc:18231 +#: config/aarch64/aarch64.cc:18300 #, gcc-internal-format msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>" msgstr "" -#: config/aarch64/aarch64.cc:18237 +#: config/aarch64/aarch64.cc:18306 #, gcc-internal-format msgid "streaming functions require the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:18239 +#: config/aarch64/aarch64.cc:18308 #, gcc-internal-format msgid "functions with SME state require the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:18333 +#: config/aarch64/aarch64.cc:18402 #, gcc-internal-format msgid "" "only values 12 (4 KB) and 16 (64 KB) are supported for guard size. Given " "value %d (%llu KB) is out of range" msgstr "" -#: config/aarch64/aarch64.cc:18349 +#: config/aarch64/aarch64.cc:18418 #, gcc-internal-format msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>" msgstr "" -#: config/aarch64/aarch64.cc:18463 +#: config/aarch64/aarch64.cc:18532 #, gcc-internal-format msgid "missing cpu name in %<-mcpu=%s%>" msgstr "" -#: config/aarch64/aarch64.cc:18473 +#: config/aarch64/aarch64.cc:18542 #, gcc-internal-format msgid "did you mean %<-march=%s%>?" msgstr "" -#: config/aarch64/aarch64.cc:18476 +#: config/aarch64/aarch64.cc:18545 #, gcc-internal-format msgid "invalid feature modifier %qs in %<-mcpu=%s%>" msgstr "" -#: config/aarch64/aarch64.cc:18535 +#: config/aarch64/aarch64.cc:18604 #, gcc-internal-format msgid "invalid argument given to %<-mharden-sls=%>" msgstr "" -#: config/aarch64/aarch64.cc:18546 +#: config/aarch64/aarch64.cc:18615 #, gcc-internal-format msgid "%qs must be by itself for %<-mharden-sls=%>" msgstr "" -#: config/aarch64/aarch64.cc:18551 +#: config/aarch64/aarch64.cc:18620 #, gcc-internal-format msgid "invalid argument %<%s%> for %<-mharden-sls=%>" msgstr "" -#: config/aarch64/aarch64.cc:18579 +#: config/aarch64/aarch64.cc:18648 #, gcc-internal-format msgid "missing arch name in %<-march=%s%>" msgstr "" -#: config/aarch64/aarch64.cc:18582 +#: config/aarch64/aarch64.cc:18651 #, gcc-internal-format msgid "unknown value %qs for %<-march%>" msgstr "" -#: config/aarch64/aarch64.cc:18588 +#: config/aarch64/aarch64.cc:18657 #, gcc-internal-format msgid "did you mean %<-mcpu=%s%>?" msgstr "" -#: config/aarch64/aarch64.cc:18591 +#: config/aarch64/aarch64.cc:18660 #, gcc-internal-format msgid "invalid feature modifier %qs in %<-march=%s%>" msgstr "" -#: config/aarch64/aarch64.cc:18619 +#: config/aarch64/aarch64.cc:18688 #, gcc-internal-format msgid "missing cpu name in %<-mtune=%s%>" msgstr "" -#: config/aarch64/aarch64.cc:18622 +#: config/aarch64/aarch64.cc:18691 #, gcc-internal-format msgid "unknown value %qs for %<-mtune%>" msgstr "" -#: config/aarch64/aarch64.cc:18717 +#: config/aarch64/aarch64.cc:18843 #, gcc-internal-format msgid "" "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in " "options %<%s%> being added" msgstr "" -#: config/aarch64/aarch64.cc:18773 +#: config/aarch64/aarch64.cc:18899 #, gcc-internal-format msgid "assembler does not support %<-mabi=ilp32%>" msgstr "" -#: config/aarch64/aarch64.cc:18780 +#: config/aarch64/aarch64.cc:18906 #, gcc-internal-format msgid "return address signing is only supported for %<-mabi=lp64%>" msgstr "" -#: config/aarch64/aarch64.cc:18853 +#: config/aarch64/aarch64.cc:18979 #, gcc-internal-format msgid "code model %qs with %<-f%s%>" msgstr "" -#: config/aarch64/aarch64.cc:18856 +#: config/aarch64/aarch64.cc:18982 #, gcc-internal-format msgid "code model %qs not supported in ilp32 mode" msgstr "" -#: config/aarch64/aarch64.cc:18954 +#: config/aarch64/aarch64.cc:19080 #, gcc-internal-format msgid "functions with %qs state require the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:19057 +#: config/aarch64/aarch64.cc:19183 #, gcc-internal-format msgid "missing name in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19060 +#: config/aarch64/aarch64.cc:19186 #, gcc-internal-format msgid "invalid name %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19064 +#: config/aarch64/aarch64.cc:19190 #, gcc-internal-format msgid "" "invalid feature modifier %s of value %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19098 +#: config/aarch64/aarch64.cc:19224 #, gcc-internal-format msgid "missing name in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19101 +#: config/aarch64/aarch64.cc:19227 #, gcc-internal-format msgid "invalid name %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19105 config/aarch64/aarch64.cc:19189 +#: config/aarch64/aarch64.cc:19231 config/aarch64/aarch64.cc:19315 #, gcc-internal-format msgid "" "invalid feature modifier %qs of value %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19144 +#: config/aarch64/aarch64.cc:19270 #, gcc-internal-format msgid "invalid name %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19185 +#: config/aarch64/aarch64.cc:19311 #, gcc-internal-format msgid "missing value in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19243 config/aarch64/aarch64.cc:19416 +#: config/aarch64/aarch64.cc:19369 config/aarch64/aarch64.cc:19542 #, gcc-internal-format msgid "malformed % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19287 +#: config/aarch64/aarch64.cc:19413 #, gcc-internal-format msgid "pragma or attribute % does not accept an argument" msgstr "" -#: config/aarch64/aarch64.cc:19295 config/i386/i386-options.cc:1299 +#: config/aarch64/aarch64.cc:19421 config/i386/i386-options.cc:1303 #, gcc-internal-format msgid "pragma or attribute % does not allow a negated form" msgstr "" -#: config/aarch64/aarch64.cc:19349 +#: config/aarch64/aarch64.cc:19475 #, gcc-internal-format msgid "pragma or attribute % is not valid" msgstr "" -#: config/aarch64/aarch64.cc:19406 config/arm/arm.cc:33633 -#: config/riscv/riscv-target-attr.cc:318 config/rs6000/rs6000.cc:24733 -#: config/s390/s390.cc:16400 +#: config/aarch64/aarch64.cc:19532 config/arm/arm.cc:33675 +#: config/riscv/riscv-target-attr.cc:325 config/rs6000/rs6000.cc:24685 +#: config/s390/s390.cc:16421 #, gcc-internal-format msgid "attribute % argument not a string" msgstr "" -#: config/aarch64/aarch64.cc:19441 +#: config/aarch64/aarch64.cc:19567 #, gcc-internal-format msgid "arch extension %<%s%> should be prefixed by %<+%>" msgstr "" -#: config/aarch64/aarch64.cc:19444 +#: config/aarch64/aarch64.cc:19570 #, gcc-internal-format msgid "pragma or attribute % is not valid" msgstr "" -#: config/aarch64/aarch64.cc:19453 +#: config/aarch64/aarch64.cc:19579 #, gcc-internal-format msgid "malformed % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:19668 +#: config/aarch64/aarch64.cc:19793 #, gcc-internal-format msgid "attribute % has multiple values" msgstr "" -#: config/aarch64/aarch64.cc:19676 +#: config/aarch64/aarch64.cc:19801 #, gcc-internal-format msgid "attribute % argument not a string" msgstr "" -#: config/aarch64/aarch64.cc:19698 +#: config/aarch64/aarch64.cc:19823 #, gcc-internal-format msgid "missing value in % attribute" msgstr "" -#: config/aarch64/aarch64.cc:19702 +#: config/aarch64/aarch64.cc:19827 #, gcc-internal-format msgid "" "invalid feature modifier %qs of value %qs in % attribute" msgstr "" -#: config/aarch64/aarch64.cc:19708 +#: config/aarch64/aarch64.cc:19833 #, gcc-internal-format msgid "" "duplicate feature modifier %qs of value %qs in % attribute" msgstr "" -#: config/aarch64/aarch64.cc:20285 config/i386/i386-features.cc:3531 -#: config/i386/i386-features.cc:3800 +#: config/aarch64/aarch64.cc:20410 config/i386/i386-features.cc:3521 +#: config/i386/i386-features.cc:3790 #, gcc-internal-format msgid "virtual function multiversioning not supported" msgstr "" -#: config/aarch64/aarch64.cc:20406 config/i386/i386-features.cc:3664 -#: config/rs6000/rs6000.cc:25431 +#: config/aarch64/aarch64.cc:20531 config/i386/i386-features.cc:3654 +#: config/rs6000/rs6000.cc:25375 #, gcc-internal-format msgid "multiversioning needs % which is not supported on this target" msgstr "" -#: config/aarch64/aarch64.cc:21943 config/arm/arm.cc:6649 -#: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12766 +#: config/aarch64/aarch64.cc:22079 config/arm/arm.cc:6690 +#: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12778 msgid "" "parameter passing for argument of type %qT with %<[[no_unique_address]]%> " "members changed %{in GCC 10.1%}" msgstr "" -#: config/aarch64/aarch64.cc:21948 config/arm/arm.cc:6654 -#: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12761 +#: config/aarch64/aarch64.cc:22084 config/arm/arm.cc:6695 +#: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12773 msgid "" "parameter passing for argument of type %qT when C++17 is enabled changed to " "match C++14 %{in GCC 10.1%}" msgstr "" -#: config/aarch64/aarch64.cc:21953 config/arm/arm.cc:6659 +#: config/aarch64/aarch64.cc:22089 config/arm/arm.cc:6700 msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}" msgstr "" -#: config/aarch64/aarch64.cc:23177 config/aarch64/aarch64.cc:23180 +#: config/aarch64/aarch64.cc:23313 config/aarch64/aarch64.cc:23316 #, gcc-internal-format msgid "lane %wd out of range %wd - %wd" msgstr "" -#: config/aarch64/aarch64.cc:28591 config/i386/i386.cc:25093 -#: config/i386/i386.cc:25224 +#: config/aarch64/aarch64.cc:28739 config/i386/i386.cc:25115 +#: config/i386/i386.cc:25246 #, gcc-internal-format msgid "unsupported simdlen %wd" msgstr "" -#: config/aarch64/aarch64.cc:28605 +#: config/aarch64/aarch64.cc:28753 #, gcc-internal-format msgid "GCC does not currently support return type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:28609 config/i386/i386.cc:25115 +#: config/aarch64/aarch64.cc:28757 config/i386/i386.cc:25137 #, gcc-internal-format msgid "unsupported return type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:28639 +#: config/aarch64/aarch64.cc:28787 #, gcc-internal-format msgid "GCC does not currently support argument type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:28643 config/i386/i386.cc:25146 +#: config/aarch64/aarch64.cc:28791 config/i386/i386.cc:25168 #, gcc-internal-format msgid "unsupported argument type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:28692 +#: config/aarch64/aarch64.cc:28840 #, gcc-internal-format msgid "GCC does not currently support simdlen %wd for type %qT" msgstr "" -#: config/aarch64/aarch64.cc:28713 +#: config/aarch64/aarch64.cc:28861 #, gcc-internal-format msgid "" "GCC does not currently support a simdclone with simdlens %wd and %wd for " "these types." msgstr "" -#: config/aarch64/aarch64.cc:28803 +#: config/aarch64/aarch64.cc:28951 #, gcc-internal-format msgid "cannot apply attribute %qs to %q+D after the function has been defined" msgstr "" -#: config/aarch64/aarch64.cc:28805 +#: config/aarch64/aarch64.cc:28953 #, gcc-internal-format msgid "%q+D defined here" msgstr "" -#: config/aarch64/aarch64.cc:29263 +#: config/aarch64/aarch64.cc:29411 #, gcc-internal-format msgid "non-local gotos in functions with SME state" msgstr "" -#: config/aarch64/aarch64.cc:29558 +#: config/aarch64/aarch64.cc:29720 #, gcc-internal-format msgid "catching non-call exceptions in functions with SME state" msgstr "" @@ -41391,8 +41529,8 @@ msgstr "" msgid "bad value %qs for %<-mmemory-latency%>" msgstr "" -#: config/alpha/alpha.cc:6658 config/alpha/alpha.cc:6661 config/arc/arc.cc:6980 -#: config/arc/arc.cc:7254 config/s390/s390.cc:957 +#: config/alpha/alpha.cc:6659 config/alpha/alpha.cc:6662 config/arc/arc.cc:6981 +#: config/arc/arc.cc:7255 config/s390/s390.cc:959 #, gcc-internal-format msgid "bad builtin fcode" msgstr "" @@ -41513,19 +41651,19 @@ msgstr "" msgid "argument of %qE attribute is not \"ilink\" or \"firq\"" msgstr "" -#: config/arc/arc.cc:2037 config/arm/arm.cc:7442 config/arm/arm.cc:7460 -#: config/arm/arm.cc:7639 config/avr/avr.cc:10321 config/avr/avr.cc:10337 +#: config/arc/arc.cc:2037 config/arm/arm.cc:7483 config/arm/arm.cc:7501 +#: config/arm/arm.cc:7680 config/avr/avr.cc:11235 config/avr/avr.cc:11249 #: config/bfin/bfin.cc:4695 config/bfin/bfin.cc:4756 config/bfin/bfin.cc:4786 -#: config/bpf/bpf.cc:93 config/csky/csky.cc:6458 config/csky/csky.cc:6486 -#: config/epiphany/epiphany.cc:488 config/gcn/gcn.cc:371 -#: config/h8300/h8300.cc:4948 config/i386/i386-options.cc:3695 -#: config/i386/i386-options.cc:3872 config/i386/i386-options.cc:3928 -#: config/i386/i386-options.cc:3979 config/i386/i386-options.cc:4016 +#: config/bpf/bpf.cc:93 config/csky/csky.cc:6459 config/csky/csky.cc:6487 +#: config/epiphany/epiphany.cc:488 config/gcn/gcn.cc:377 +#: config/h8300/h8300.cc:4948 config/i386/i386-options.cc:3710 +#: config/i386/i386-options.cc:3887 config/i386/i386-options.cc:3943 +#: config/i386/i386-options.cc:3994 config/i386/i386-options.cc:4031 #: config/m68k/m68k.cc:796 config/mcore/mcore.cc:3067 -#: config/nvptx/nvptx.cc:5801 config/riscv/riscv.cc:5476 +#: config/nvptx/nvptx.cc:5801 config/riscv/riscv.cc:5728 #: config/rl78/rl78.cc:820 config/rl78/rl78.cc:889 -#: config/rs6000/rs6000.cc:20684 config/rx/rx.cc:2728 config/rx/rx.cc:2754 -#: config/s390/s390.cc:1172 config/s390/s390.cc:1259 config/sh/sh.cc:8429 +#: config/rs6000/rs6000.cc:20636 config/rx/rx.cc:2728 config/rx/rx.cc:2754 +#: config/s390/s390.cc:1174 config/s390/s390.cc:1261 config/sh/sh.cc:8429 #: config/sh/sh.cc:8447 config/sh/sh.cc:8471 config/sh/sh.cc:8542 #: config/sh/sh.cc:8565 config/stormy16/stormy16.cc:2403 #: config/v850/v850.cc:2010 config/visium/visium.cc:724 @@ -41533,166 +41671,166 @@ msgstr "" msgid "%qE attribute only applies to functions" msgstr "" -#: config/arc/arc.cc:6879 +#: config/arc/arc.cc:6880 #, gcc-internal-format msgid "%<__builtin_arc_aligned%> with non-constant alignment" msgstr "" -#: config/arc/arc.cc:6887 +#: config/arc/arc.cc:6888 #, gcc-internal-format msgid "invalid alignment value for %<__builtin_arc_aligned%>" msgstr "" -#: config/arc/arc.cc:7050 +#: config/arc/arc.cc:7051 #, gcc-internal-format msgid "operand 1 should be an unsigned 3-bit immediate" msgstr "" -#: config/arc/arc.cc:7091 config/arc/arc.cc:7188 +#: config/arc/arc.cc:7092 config/arc/arc.cc:7189 #, gcc-internal-format msgid "operand 2 should be an unsigned 3-bit value (I0-I7)" msgstr "" -#: config/arc/arc.cc:7124 config/arc/arc.cc:7156 +#: config/arc/arc.cc:7125 config/arc/arc.cc:7157 #, gcc-internal-format msgid "operand 1 should be an unsigned 3-bit value (I0-I7)" msgstr "" -#: config/arc/arc.cc:7128 config/arc/arc.cc:7160 +#: config/arc/arc.cc:7129 config/arc/arc.cc:7161 #, gcc-internal-format msgid "operand 2 should be an unsigned 8-bit value" msgstr "" -#: config/arc/arc.cc:7192 +#: config/arc/arc.cc:7193 #, gcc-internal-format msgid "operand 3 should be an unsigned 8-bit value" msgstr "" -#: config/arc/arc.cc:7225 +#: config/arc/arc.cc:7226 #, gcc-internal-format msgid "operand 4 should be an unsigned 8-bit value (0-255)" msgstr "" -#: config/arc/arc.cc:7229 +#: config/arc/arc.cc:7230 #, gcc-internal-format msgid "operand 3 should be an unsigned 3-bit value (I0-I7)" msgstr "" -#: config/arc/arc.cc:7236 +#: config/arc/arc.cc:7237 #, gcc-internal-format msgid "operand 2 should be an unsigned 3-bit value (subreg 0-7)" msgstr "" -#: config/arc/arc.cc:7239 +#: config/arc/arc.cc:7240 #, gcc-internal-format msgid "operand 2 should be an even 3-bit value (subreg 0,2,4,6)" msgstr "" -#: config/arc/arc.cc:7286 +#: config/arc/arc.cc:7287 #, gcc-internal-format, gfc-internal-format msgid "builtin requires an immediate for operand %d" msgstr "" -#: config/arc/arc.cc:7291 +#: config/arc/arc.cc:7292 #, gcc-internal-format, gfc-internal-format msgid "operand %d should be a 6 bit unsigned immediate" msgstr "" -#: config/arc/arc.cc:7295 +#: config/arc/arc.cc:7296 #, gcc-internal-format, gfc-internal-format msgid "operand %d should be a 8 bit unsigned immediate" msgstr "" -#: config/arc/arc.cc:7299 +#: config/arc/arc.cc:7300 #, gcc-internal-format, gfc-internal-format msgid "operand %d should be a 3 bit unsigned immediate" msgstr "" -#: config/arc/arc.cc:7302 +#: config/arc/arc.cc:7303 #, gcc-internal-format, gfc-internal-format msgid "unknown builtin immediate operand type for operand %d" msgstr "" -#: config/arc/arc.cc:7393 +#: config/arc/arc.cc:7394 #, gcc-internal-format msgid "" "register number must be a compile-time constant. Try giving higher " "optimization levels" msgstr "" -#: config/arc/arc.cc:8466 +#: config/arc/arc.cc:8467 #, gcc-internal-format msgid "insn addresses not set after shorten branches" msgstr "" -#: config/arc/arc.cc:8681 +#: config/arc/arc.cc:8682 #, gcc-internal-format msgid "insn addresses not freed" msgstr "" -#: config/arc/arc.cc:10837 +#: config/arc/arc.cc:10838 #, gcc-internal-format msgid "%qE attribute only valid for ARCv2 architecture" msgstr "" -#: config/arc/arc.cc:10845 config/arc/arc.cc:10884 +#: config/arc/arc.cc:10846 config/arc/arc.cc:10885 #, gcc-internal-format msgid "argument of %qE attribute is missing" msgstr "" -#: config/arc/arc.cc:10856 config/arc/arc.cc:10895 config/arc/arc.cc:11021 -#: config/avr/avr.cc:10397 +#: config/arc/arc.cc:10857 config/arc/arc.cc:10896 config/arc/arc.cc:11022 +#: config/avr/avr.cc:11309 #, gcc-internal-format msgid "%qE attribute allows only an integer constant argument" msgstr "" -#: config/arc/arc.cc:10876 +#: config/arc/arc.cc:10877 #, gcc-internal-format msgid "%qE attribute only valid for ARC EM architecture" msgstr "" -#: config/arc/arc.cc:10931 +#: config/arc/arc.cc:10932 #, gcc-internal-format msgid "%qE attribute only applies to types" msgstr "" -#: config/arc/arc.cc:10937 +#: config/arc/arc.cc:10938 #, gcc-internal-format msgid "argument of %qE attribute ignored" msgstr "" -#: config/arc/arc.cc:11011 config/avr/avr.cc:10384 config/bfin/bfin.cc:4818 +#: config/arc/arc.cc:11012 config/avr/avr.cc:11296 config/bfin/bfin.cc:4818 #: config/i386/winnt.cc:63 config/nvptx/nvptx.cc:5824 #, gcc-internal-format msgid "%qE attribute only applies to variables" msgstr "" -#: config/arm/aarch-common.cc:552 config/i386/i386.cc:23845 +#: config/arm/aarch-common.cc:553 config/i386/i386.cc:23866 #, gcc-internal-format msgid "alternatives not allowed in % flag output" msgstr "" -#: config/arm/aarch-common.cc:613 config/i386/i386.cc:23909 +#: config/arm/aarch-common.cc:614 config/i386/i386.cc:23930 #, gcc-internal-format msgid "unknown % flag output %qs" msgstr "" -#: config/arm/aarch-common.cc:623 config/i386/i386.cc:23938 +#: config/arm/aarch-common.cc:624 config/i386/i386.cc:23959 #, gcc-internal-format msgid "invalid type for % flag output" msgstr "" -#: config/arm/aarch-common.cc:765 +#: config/arm/aarch-common.cc:714 #, gcc-internal-format msgid "missing feature or flag for %<%s%>" msgstr "" -#: config/arm/aarch-common.cc:767 +#: config/arm/aarch-common.cc:716 #, gcc-internal-format msgid "invalid argument %<%s%> for %<%s%>" msgstr "" -#: config/arm/aarch-common.cc:778 +#: config/arm/aarch-common.cc:727 #, gcc-internal-format msgid "argument %<%s%> can only appear alone in %<%s%>" msgstr "" @@ -41943,7 +42081,7 @@ msgstr "" msgid "target CPU does not support unaligned accesses" msgstr "" -#: config/arm/arm.cc:3247 config/arm/arm.cc:33306 +#: config/arm/arm.cc:3247 config/arm/arm.cc:33348 #, gcc-internal-format msgid "This architecture does not support branch protection instructions" msgstr "" @@ -41953,239 +42091,234 @@ msgstr "" msgid "Return address signing is not supported with %<-mtpcs-frame%>." msgstr "" -#: config/arm/arm.cc:3314 -#, gcc-internal-format -msgid "invalid key type for %<-mbranch-protection=%>" -msgstr "" - -#: config/arm/arm.cc:3347 +#: config/arm/arm.cc:3388 #, gcc-internal-format msgid "switch %<-mcpu=%s%> conflicts with switch %<-march=%s%>" msgstr "" -#: config/arm/arm.cc:3602 +#: config/arm/arm.cc:3643 #, gcc-internal-format msgid "%<-mapcs-stack-check%> incompatible with %<-mno-apcs-frame%>" msgstr "" -#: config/arm/arm.cc:3611 +#: config/arm/arm.cc:3652 #, gcc-internal-format msgid "%<-fpic%> and %<-mapcs-reent%> are incompatible" msgstr "" -#: config/arm/arm.cc:3614 +#: config/arm/arm.cc:3655 #, gcc-internal-format msgid "APCS reentrant code not supported. Ignored" msgstr "" -#: config/arm/arm.cc:3637 +#: config/arm/arm.cc:3678 #, gcc-internal-format msgid "option %<-mstructure-size-boundary%> is deprecated" msgstr "" -#: config/arm/arm.cc:3645 +#: config/arm/arm.cc:3686 #, gcc-internal-format msgid "structure size boundary can only be set to 8, 32 or 64" msgstr "" -#: config/arm/arm.cc:3647 +#: config/arm/arm.cc:3688 #, gcc-internal-format msgid "structure size boundary can only be set to 8 or 32" msgstr "" -#: config/arm/arm.cc:3672 +#: config/arm/arm.cc:3713 #, gcc-internal-format msgid "RTP PIC is incompatible with %<-msingle-pic-base%>" msgstr "" -#: config/arm/arm.cc:3684 config/arm/arm.cc:33647 +#: config/arm/arm.cc:3725 config/arm/arm.cc:33689 #, gcc-internal-format msgid "FDPIC mode is not supported in Thumb-1 mode" msgstr "" -#: config/arm/arm.cc:3692 +#: config/arm/arm.cc:3733 #, gcc-internal-format msgid "%<-mpic-register=%> is useless without %<-fpic%>" msgstr "" -#: config/arm/arm.cc:3701 +#: config/arm/arm.cc:3742 #, gcc-internal-format msgid "unable to use %qs for PIC register" msgstr "" -#: config/arm/arm.cc:3741 config/pru/pru.cc:612 +#: config/arm/arm.cc:3782 config/pru/pru.cc:612 #, gcc-internal-format msgid "%<-freorder-blocks-and-partition%> not supported on this architecture" msgstr "" -#: config/arm/arm.cc:3909 +#: config/arm/arm.cc:3950 #, gcc-internal-format msgid "selected fp16 options are incompatible" msgstr "" -#: config/arm/arm.cc:3944 +#: config/arm/arm.cc:3985 #, gcc-internal-format msgid "%<-mstack-protector-guard=tls%> needs a hardware TLS register" msgstr "" -#: config/arm/arm.cc:3964 +#: config/arm/arm.cc:4005 #, gcc-internal-format msgid "iwmmxt requires an AAPCS compatible ABI for proper operation" msgstr "" -#: config/arm/arm.cc:3967 +#: config/arm/arm.cc:4008 #, gcc-internal-format msgid "iwmmxt abi requires an iwmmxt capable cpu" msgstr "" -#: config/arm/arm.cc:3975 +#: config/arm/arm.cc:4016 #, gcc-internal-format msgid "target CPU does not support interworking" msgstr "" -#: config/arm/arm.cc:3988 +#: config/arm/arm.cc:4029 #, gcc-internal-format msgid "AAPCS does not support %<-mcaller-super-interworking%>" msgstr "" -#: config/arm/arm.cc:3991 +#: config/arm/arm.cc:4032 #, gcc-internal-format msgid "AAPCS does not support %<-mcallee-super-interworking%>" msgstr "" -#: config/arm/arm.cc:3996 +#: config/arm/arm.cc:4037 #, gcc-internal-format msgid "%<__fp16%> and no ldrh" msgstr "" -#: config/arm/arm.cc:3999 +#: config/arm/arm.cc:4040 #, gcc-internal-format msgid "target CPU does not support ARMv8-M Security Extensions" msgstr "" -#: config/arm/arm.cc:4004 +#: config/arm/arm.cc:4045 #, gcc-internal-format msgid "ARMv8-M Security Extensions incompatible with selected FPU" msgstr "" -#: config/arm/arm.cc:4016 +#: config/arm/arm.cc:4057 #, gcc-internal-format msgid "%<-mfloat-abi=hard%>: selected architecture lacks an FPU" msgstr "" -#: config/arm/arm.cc:4024 +#: config/arm/arm.cc:4065 #, gcc-internal-format msgid "%<-mfloat-abi=hard%> and VFP" msgstr "" -#: config/arm/arm.cc:6289 +#: config/arm/arm.cc:6330 #, gcc-internal-format msgid "non-AAPCS derived PCS variant" msgstr "" -#: config/arm/arm.cc:6291 +#: config/arm/arm.cc:6332 #, gcc-internal-format msgid "variadic functions must use the base AAPCS variant" msgstr "" -#: config/arm/arm.cc:6320 +#: config/arm/arm.cc:6361 #, gcc-internal-format msgid "PCS variant" msgstr "" -#: config/arm/arm.cc:6595 +#: config/arm/arm.cc:6636 #, gcc-internal-format msgid "Thumb-1 % VFP ABI" msgstr "" -#: config/arm/arm.cc:6690 +#: config/arm/arm.cc:6731 #, gcc-internal-format msgid "argument of type %qT not permitted with %<-mgeneral-regs-only%>" msgstr "" -#: config/arm/arm.cc:7074 config/arm/arm.cc:7295 config/arm/arm.cc:7328 -#: config/arm/arm.cc:29369 +#: config/arm/arm.cc:7115 config/arm/arm.cc:7336 config/arm/arm.cc:7369 +#: config/arm/arm.cc:29411 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 7.1" msgstr "" -#: config/arm/arm.cc:7466 +#: config/arm/arm.cc:7507 #, gcc-internal-format msgid "" "FP registers might be clobbered despite %qE attribute: compile with %<-" "mgeneral-regs-only%>" msgstr "" -#: config/arm/arm.cc:7588 +#: config/arm/arm.cc:7629 #, gcc-internal-format msgid "" "%qE attribute not available to functions with arguments passed on the stack" msgstr "" -#: config/arm/arm.cc:7600 +#: config/arm/arm.cc:7641 #, gcc-internal-format msgid "" "%qE attribute not available to functions with variable number of arguments" msgstr "" -#: config/arm/arm.cc:7609 +#: config/arm/arm.cc:7650 #, gcc-internal-format msgid "%qE attribute not available to functions that return value on the stack" msgstr "" -#: config/arm/arm.cc:7631 config/arm/arm.cc:7683 +#: config/arm/arm.cc:7672 config/arm/arm.cc:7724 #, gcc-internal-format msgid "%qE attribute ignored without %<-mcmse%> option" msgstr "" -#: config/arm/arm.cc:7650 +#: config/arm/arm.cc:7691 #, gcc-internal-format msgid "%qE attribute has no effect on functions with static linkage" msgstr "" -#: config/arm/arm.cc:7703 +#: config/arm/arm.cc:7744 #, gcc-internal-format msgid "%qE attribute only applies to base type of a function pointer" msgstr "" -#: config/arm/arm.cc:9696 +#: config/arm/arm.cc:9737 #, gcc-internal-format msgid "" "accessing thread-local storage is not currently supported with %<-mpure-" "code%> or %<-mslow-flash-data%>" msgstr "" -#: config/arm/arm.cc:13547 config/arm/arm.cc:13549 +#: config/arm/arm.cc:13588 config/arm/arm.cc:13590 #, gcc-internal-format msgid "%s %wd out of range %wd - %wd" msgstr "" -#: config/arm/arm.cc:25956 +#: config/arm/arm.cc:25998 #, gcc-internal-format msgid "unable to compute real location of stacked parameter" msgstr "" -#: config/arm/arm.cc:26619 +#: config/arm/arm.cc:26661 #, gcc-internal-format msgid "Unexpected thumb1 far jump" msgstr "" -#: config/arm/arm.cc:26878 +#: config/arm/arm.cc:26920 #, gcc-internal-format msgid "no low registers available for popping high registers" msgstr "" -#: config/arm/arm.cc:27131 +#: config/arm/arm.cc:27173 #, gcc-internal-format msgid "Interrupt Service Routines cannot be coded in Thumb-1 mode" msgstr "" -#: config/arm/arm.cc:27377 +#: config/arm/arm.cc:27419 #, gcc-internal-format msgid "%<-fstack-check=specific%> for Thumb-1" msgstr "" -#: config/arm/arm.cc:33662 +#: config/arm/arm.cc:33704 #, gcc-internal-format msgid "invalid fpu for target attribute or pragma %qs" msgstr "" @@ -42193,22 +42326,22 @@ msgstr "" #. This doesn't really make sense until we support #. general dynamic selection of the architecture and all #. sub-features. -#: config/arm/arm.cc:33670 +#: config/arm/arm.cc:33712 #, gcc-internal-format msgid "auto fpu selection not currently permitted here" msgstr "" -#: config/arm/arm.cc:33683 +#: config/arm/arm.cc:33725 #, gcc-internal-format msgid "invalid architecture for target attribute or pragma %qs" msgstr "" -#: config/arm/arm.cc:33697 +#: config/arm/arm.cc:33739 #, gcc-internal-format msgid "unknown target attribute or pragma %qs" msgstr "" -#: config/arm/arm.cc:34660 +#: config/arm/arm.cc:34702 #, gcc-internal-format msgid "% flags not supported in thumb1 mode" msgstr "" @@ -42257,163 +42390,171 @@ 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=. -#: config/avr/avr.cc:1065 +#: config/avr/avr.cc:1090 #, gcc-internal-format msgid "unknown core architecture %qs specified with %qs" msgstr "" -#: config/avr/avr.cc:1119 config/pru/pru.cc:601 config/visium/visium.cc:422 +#: config/avr/avr.cc:1144 config/pru/pru.cc:601 config/visium/visium.cc:422 #, gcc-internal-format msgid "%<-fpic%> is not supported" msgstr "" -#: config/avr/avr.cc:1121 config/pru/pru.cc:603 config/visium/visium.cc:424 +#: config/avr/avr.cc:1146 config/pru/pru.cc:603 config/visium/visium.cc:424 #, gcc-internal-format msgid "%<-fPIC%> is not supported" msgstr "" -#: config/avr/avr.cc:1123 config/pru/pru.cc:605 +#: config/avr/avr.cc:1148 config/pru/pru.cc:605 #, gcc-internal-format msgid "%<-fpie%> is not supported" msgstr "" -#: config/avr/avr.cc:1125 config/pru/pru.cc:607 +#: config/avr/avr.cc:1150 config/pru/pru.cc:607 #, gcc-internal-format msgid "%<-fPIE%> is not supported" msgstr "" -#: config/avr/avr.cc:1421 config/avr/avr.cc:1426 config/riscv/riscv.cc:9392 +#: config/avr/avr.cc:1446 config/avr/avr.cc:1451 config/riscv/riscv.cc:9728 #, gcc-internal-format msgid "function attributes %qs and %qs are mutually exclusive" msgstr "" -#: config/avr/avr.cc:1447 config/riscv/riscv.cc:9404 +#: config/avr/avr.cc:1472 config/riscv/riscv.cc:9740 #, gcc-internal-format msgid "%qs function cannot have arguments" msgstr "" -#: config/avr/avr.cc:1450 config/riscv/riscv.cc:9401 +#: config/avr/avr.cc:1475 config/riscv/riscv.cc:9737 #, gcc-internal-format msgid "%qs function cannot return a value" msgstr "" -#: config/avr/avr.cc:1464 +#: config/avr/avr.cc:1489 #, gcc-internal-format msgid "%qs appears to be a misspelled %qs handler, missing %<__vector%> prefix" msgstr "" -#: config/avr/avr.cc:1477 +#: config/avr/avr.cc:1500 #, gcc-internal-format msgid "" "%qs is a reserved identifier in AVR-LibC. Consider %<#include %> before using the %qs macro" msgstr "" -#: config/avr/avr.cc:1694 +#: config/avr/avr.cc:1507 +#, gcc-internal-format +msgid "" +"%qs is a deprecated identifier in AVR-LibC. Consider %<#include %> or %<#include %> before using the %qs " +"macro" +msgstr "" + +#: config/avr/avr.cc:1728 #, gcc-internal-format msgid "% contains only 2 bytes of address" msgstr "" -#: config/avr/avr.cc:3119 +#: config/avr/avr.cc:3716 #, gcc-internal-format msgid "pointer offset from symbol maybe incorrect" msgstr "" -#: config/avr/avr.cc:3258 +#: config/avr/avr.cc:3855 #, gcc-internal-format msgid "accessing data memory with program memory address" msgstr "" -#: config/avr/avr.cc:3319 +#: config/avr/avr.cc:3916 #, gcc-internal-format msgid "accessing program memory with data memory address" msgstr "" -#: config/avr/avr.cc:3653 +#: config/avr/avr.cc:4249 #, gcc-internal-format, gfc-internal-format msgid "fixed register %s used to pass parameter to function" msgstr "" -#: config/avr/avr.cc:3918 +#: config/avr/avr.cc:4509 #, gcc-internal-format msgid "writing to address space %qs not supported" msgstr "" -#: config/avr/avr.cc:10356 +#: config/avr/avr.cc:11268 #, gcc-internal-format msgid "%qE attribute only applies to variables in static storage" msgstr "" -#: config/avr/avr.cc:10363 +#: config/avr/avr.cc:11275 #, gcc-internal-format msgid "%qE attribute only supported for reduced Tiny cores" msgstr "" -#: config/avr/avr.cc:10405 +#: config/avr/avr.cc:11317 #, gcc-internal-format msgid "%qE attribute address out of range 0x%x%s0x%x" msgstr "" -#: config/avr/avr.cc:10419 +#: config/avr/avr.cc:11331 #, gcc-internal-format msgid "both %s and %qE attribute provide address" msgstr "" -#: config/avr/avr.cc:10429 +#: config/avr/avr.cc:11341 #, gcc-internal-format msgid "%qE attribute on non-volatile variable" msgstr "" -#: config/avr/avr.cc:10505 +#: config/avr/avr.cc:11417 #, gcc-internal-format msgid "address spaces are not supported for reduced Tiny devices" msgstr "" -#: config/avr/avr.cc:10512 +#: config/avr/avr.cc:11424 #, gcc-internal-format msgid "" "address space %qs not supported for devices with flash size up to %d KiB" msgstr "" -#: config/avr/avr.cc:10693 +#: config/avr/avr.cc:11604 #, gcc-internal-format msgid "pointer targeting address space %qs must be const in %qT" msgstr "" -#: config/avr/avr.cc:10696 +#: config/avr/avr.cc:11607 #, gcc-internal-format msgid "pointer targeting address space %qs must be const in %s %q+D" msgstr "" -#: config/avr/avr.cc:10717 +#: config/avr/avr.cc:11628 #, gcc-internal-format msgid "variable %q+D with attribute %qs must be located in static storage" msgstr "" -#: config/avr/avr.cc:10769 +#: config/avr/avr.cc:11679 #, 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.cc:10930 +#: config/avr/avr.cc:11840 #, gcc-internal-format msgid "static attribute %qs declaration for %q+D needs an address" msgstr "" -#: config/avr/avr.cc:11019 +#: config/avr/avr.cc:11929 #, gcc-internal-format msgid "only uninitialized variables can be placed in the %<.noinit%> section" msgstr "" #. This might happen with C++ if stuff needs constructing. -#: config/avr/avr.cc:11096 +#: config/avr/avr.cc:12006 #, gcc-internal-format msgid "variable %q+D with dynamic initialization put into program memory area" msgstr "" -#: config/avr/avr.cc:11107 +#: config/avr/avr.cc:12017 #, gcc-internal-format msgid "uninitialized variable %q+D put into program memory area" msgstr "" @@ -42422,44 +42563,44 @@ msgstr "" #. hence deny initializers now. The values of symbols with an #. address attribute are determined by the attribute, not by #. some initializer. -#: config/avr/avr.cc:11172 +#: config/avr/avr.cc:12082 #, gcc-internal-format msgid "variable %q+D with attribute %qs must not have an initializer" msgstr "" -#: config/avr/avr.cc:11225 +#: config/avr/avr.cc:12135 #, gcc-internal-format msgid "%q+D has incompatible attributes %qs and %qs" msgstr "" -#: config/avr/avr.cc:11288 +#: config/avr/avr.cc:12198 #, gcc-internal-format msgid "architecture %qs supported for assembler only" msgstr "" -#: config/avr/avr.cc:13788 +#: config/avr/avr.cc:14758 #, gcc-internal-format msgid "conversion from address space %qs to address space %qs" msgstr "" -#: config/avr/avr.cc:14878 config/avr/avr.cc:14891 +#: config/avr/avr.cc:15839 config/avr/avr.cc:15852 #, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time integer constant" msgstr "" -#: config/avr/avr.cc:14905 +#: config/avr/avr.cc:15866 #, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time long integer constant as first argument" msgstr "" -#: config/avr/avr.cc:14933 +#: config/avr/avr.cc:15894 #, 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.cc:14942 +#: config/avr/avr.cc:15903 #, gcc-internal-format msgid "rounding result will always be 0" msgstr "" @@ -42563,54 +42704,78 @@ msgstr "" msgid "BPF CO-RE requires BTF debugging information, use %<-gbtf%>" msgstr "" -#: config/bpf/bpf.cc:216 +#: config/bpf/bpf.cc:214 #, gcc-internal-format msgid "BPF CO-RE does not support LTO" msgstr "" -#: config/bpf/bpf.cc:253 +#: config/bpf/bpf.cc:248 #, gcc-internal-format msgid "%<-fstack-protector%> does not work on this architecture" msgstr "" -#: config/bpf/bpf.cc:382 +#: config/bpf/bpf.cc:380 #, gcc-internal-format msgid "eBPF stack limit exceeded" msgstr "" -#: config/bpf/bpf.cc:664 +#: config/bpf/bpf.cc:674 #, gcc-internal-format msgid "too many function arguments for eBPF" msgstr "" -#: config/bpf/bpf.cc:683 config/bpf/bpf.cc:685 +#: config/bpf/bpf.cc:693 config/bpf/bpf.cc:695 #, gcc-internal-format msgid "no constructors" msgstr "" -#: config/bpf/bpf.cc:701 config/bpf/bpf.cc:703 +#: config/bpf/bpf.cc:711 config/bpf/bpf.cc:713 #, gcc-internal-format msgid "no destructors" msgstr "" -#: config/bpf/bpf.cc:755 +#: config/bpf/bpf.cc:765 #, gcc-internal-format msgid "indirect call in function, which are not supported by eBPF" msgstr "" -#: config/bpf/bpf.cc:1005 config/loongarch/loongarch-builtins.cc:3008 -#: config/mips/mips.cc:17388 config/nios2/nios2.cc:3601 +#: config/bpf/bpf.cc:1015 config/loongarch/loongarch-builtins.cc:3005 +#: config/mips/mips.cc:17394 config/nios2/nios2.cc:3602 #: config/riscv/riscv-builtins.cc:344 -#: config/riscv/riscv-vector-builtins.cc:4189 +#: config/riscv/riscv-vector-builtins.cc:4226 #, gcc-internal-format msgid "invalid argument to built-in function" msgstr "" -#: config/bpf/bpf.cc:1019 +#: config/bpf/bpf.cc:1029 #, gcc-internal-format msgid "invalid built-in function at expansion" msgstr "" +#: config/bpf/bpf.cc:1251 config/bpf/bpf.cc:1254 +#, gcc-internal-format +msgid "could not inline call to %<__builtin_%s%>: size must be constant" +msgstr "" + +#: config/bpf/bpf.cc:1282 config/bpf/bpf.cc:1285 +#, gcc-internal-format +msgid "" +"could not inline call to %<__builtin_%s%>: too many bytes, use %<-minline-" +"memops-threshold%>" +msgstr "" + +#: config/bpf/bpf.cc:1335 config/bpf/bpf.cc:1338 +#, gcc-internal-format +msgid "could not inline call to %<__builtin_memset%>: size must be constant" +msgstr "" + +#: config/bpf/bpf.cc:1366 config/bpf/bpf.cc:1369 +#, gcc-internal-format +msgid "" +"could not inline call to %<__builtin_memset%>: too many bytes, use %<-" +"minline-memops-threshold%>" +msgstr "" + #: config/c6x/c6x.cc:245 #, gcc-internal-format msgid "%<-fpic%> and %<-fPIC%> not supported without %<-mdsbt%> on this target" @@ -42674,33 +42839,33 @@ msgstr "" msgid "stackframe too big: %d bytes" msgstr "" -#: config/csky/csky.cc:2543 +#: config/csky/csky.cc:2544 #, gcc-internal-format, gfc-internal-format msgid "cpu %s is not based on arch %s, ignoring the arch" msgstr "" -#: config/csky/csky.cc:2609 config/csky/csky.cc:2647 config/csky/csky.cc:2712 -#: config/csky/csky.cc:2735 config/csky/csky.cc:2752 +#: config/csky/csky.cc:2610 config/csky/csky.cc:2648 config/csky/csky.cc:2713 +#: config/csky/csky.cc:2736 config/csky/csky.cc:2753 #, gcc-internal-format msgid "%qs is not supported by arch %s" msgstr "" -#: config/csky/csky.cc:2650 +#: config/csky/csky.cc:2651 #, gcc-internal-format msgid "%<-mhard-float%> is not supported by the selected CPU" msgstr "" -#: config/csky/csky.cc:2666 +#: config/csky/csky.cc:2667 #, gcc-internal-format msgid "%<-mdouble-float%> ignored without %<-mhard-float%>" msgstr "" -#: config/csky/csky.cc:2669 +#: config/csky/csky.cc:2670 #, gcc-internal-format msgid "%<-mfdivdu%> ignored without %<-mhard-float%>" msgstr "" -#: config/csky/csky.cc:2724 +#: config/csky/csky.cc:2725 #, gcc-internal-format msgid "%<-msmart%> is incompatible with %<-mhigh-registers%>" msgstr "" @@ -42717,12 +42882,12 @@ msgstr "" #. by the caller. In theory we could test for that and handle #. limited cases with parameters that all fit in r0-r3 with no #. stack overflow, but punt for now. -#: config/csky/csky.cc:6280 +#: config/csky/csky.cc:6281 #, gcc-internal-format msgid "Nested function trampolines not supported on CK801." msgstr "" -#: config/csky/csky.cc:6476 +#: config/csky/csky.cc:6477 #, gcc-internal-format msgid "%qE attribute ignored without %<-mistack%>" msgstr "" @@ -42739,12 +42904,12 @@ msgid "" "or %qs" msgstr "" -#: config/epiphany/epiphany.cc:1542 +#: config/epiphany/epiphany.cc:1543 #, gcc-internal-format msgid "% must be at least 4" msgstr "" -#: config/epiphany/epiphany.cc:1544 +#: config/epiphany/epiphany.cc:1545 #, gcc-internal-format msgid "% must be a multiple of 4" msgstr "" @@ -42824,143 +42989,158 @@ msgstr "" msgid "stack frame must be smaller than 64K" msgstr "" -#: config/gcn/gcn.cc:170 +#: config/gcn/gcn.cc:174 #, gcc-internal-format msgid "%<-mxnack=on%> is incompatible with %<-march=%s%>" msgstr "" -#: config/gcn/gcn.cc:284 +#: config/gcn/gcn.cc:290 #, gcc-internal-format msgid "% attribute requires string constant arguments" msgstr "" -#: config/gcn/gcn.cc:297 +#: config/gcn/gcn.cc:303 #, gcc-internal-format msgid "unknown specifier %qs in % attribute" msgstr "" -#: config/gcn/gcn.cc:304 +#: config/gcn/gcn.cc:310 #, gcc-internal-format msgid "duplicated parameter specifier %qs in % attribute" msgstr "" -#: config/gcn/gcn.cc:356 +#: config/gcn/gcn.cc:362 #, gcc-internal-format msgid "too many arguments passed in sgpr registers" msgstr "" -#: config/gcn/gcn.cc:2515 +#: config/gcn/gcn.cc:2521 #, gcc-internal-format msgid "" "A non-default set of initial values has been requested, which violates the " "ABI" msgstr "" -#: config/gcn/gcn.cc:2783 +#: config/gcn/gcn.cc:2789 #, gcc-internal-format, gfc-internal-format msgid "wrong type of argument %s" msgstr "" -#: config/gcn/gcn.cc:3788 +#: config/gcn/gcn.cc:3798 #, gcc-internal-format msgid "" "nested function trampolines not supported on GCN5 due to non-executable " "stacks" msgstr "" -#: config/gcn/gcn.cc:3940 +#: config/gcn/gcn.cc:3950 #, gcc-internal-format msgid "TLS is not implemented for GCN." msgstr "" -#: config/gcn/gcn.cc:5032 +#: config/gcn/gcn.cc:5042 #, gcc-internal-format msgid "Builtin not implemented" msgstr "" -#: config/gcn/gcn.cc:5636 +#: config/gcn/gcn.cc:5688 #, gcc-internal-format msgid "unsupported simdlen %wd (amdgcn)" msgstr "" -#: config/gcn/gcn.cc:6346 +#: config/gcn/gcn.cc:6398 #, gcc-internal-format msgid "using %, ignoring %d" msgstr "" -#: config/gcn/gcn.cc:6347 +#: config/gcn/gcn.cc:6399 #, gcc-internal-format msgid "using %, ignoring runtime setting" msgstr "" -#: config/gcn/gcn.cc:6359 config/nvptx/nvptx.cc:6606 +#: config/gcn/gcn.cc:6411 config/nvptx/nvptx.cc:6607 #, gcc-internal-format msgid "using %, ignoring %d" msgstr "" -#: config/gcn/gcn.cc:6386 config/gcn/gcn.cc:6415 +#: config/gcn/gcn.cc:6438 config/gcn/gcn.cc:6467 #, gcc-internal-format, gfc-internal-format msgid "offload dimension out of range (%d)" msgstr "" -#: config/gcn/gcn.cc:6910 +#: config/gcn/gcn.cc:6972 #, gcc-internal-format msgid "" "%d bytes of gang-private data-share memory exhausted (increase with %<-mgang-" "private-size=%d%>, for example)" msgstr "" -#: config/gcn/mkoffload.cc:160 +#: config/gcn/mkoffload.cc:166 #, gcc-internal-format msgid "deleting file %qs: %m" msgstr "" -#: config/gcn/mkoffload.cc:862 +#: config/gcn/mkoffload.cc:873 +#, gcc-internal-format +msgid "unrecognized argument in option %<-march=%s%>" +msgstr "" + +#: config/gcn/mkoffload.cc:897 +#, gcc-internal-format +msgid "valid arguments to %<-march=%> are: %s" +msgstr "" + +#: config/gcn/mkoffload.cc:900 +#, gcc-internal-format +msgid "valid argument to %<-march=%> is %qs" +msgstr "" + +#: config/gcn/mkoffload.cc:936 #, gcc-internal-format msgid "% must be set" msgstr "" -#: config/gcn/mkoffload.cc:908 +#: config/gcn/mkoffload.cc:982 #, gcc-internal-format msgid "offload compiler %qs not found" msgstr "" -#: config/gcn/mkoffload.cc:930 +#: config/gcn/mkoffload.cc:1004 #, gcc-internal-format msgid "unrecognizable argument of option %<" msgstr "" -#: config/gcn/mkoffload.cc:994 config/nvptx/mkoffload.cc:751 +#: config/gcn/mkoffload.cc:1056 config/nvptx/mkoffload.cc:753 #, gcc-internal-format msgid "either %<-fopenacc%> or %<-fopenmp%> must be set" msgstr "" -#: config/gcn/mkoffload.cc:1039 +#: config/gcn/mkoffload.cc:1103 #, gcc-internal-format msgid "unhandled architecture" msgstr "" -#: config/gcn/mkoffload.cc:1079 config/gcn/mkoffload.cc:1231 +#: config/gcn/mkoffload.cc:1143 config/gcn/mkoffload.cc:1295 #, gcc-internal-format msgid "cannot open %qs" msgstr "" -#: config/gcn/mkoffload.cc:1217 config/nvptx/mkoffload.cc:841 +#: config/gcn/mkoffload.cc:1281 config/nvptx/mkoffload.cc:843 #, gcc-internal-format msgid "cannot open omp_requires file %qs" msgstr "" -#: config/gcn/mkoffload.cc:1221 config/nvptx/mkoffload.cc:845 +#: config/gcn/mkoffload.cc:1285 config/nvptx/mkoffload.cc:847 #, gcc-internal-format msgid "cannot read omp_requires file %qs" msgstr "" -#: config/gcn/mkoffload.cc:1227 +#: config/gcn/mkoffload.cc:1291 #, gcc-internal-format msgid "cannot open intermediate gcn asm file" msgstr "" -#: config/gcn/mkoffload.cc:1244 +#: config/gcn/mkoffload.cc:1308 #, gcc-internal-format msgid "cannot open intermediate gcn obj file" msgstr "" @@ -43000,526 +43180,526 @@ msgstr "" msgid "cannot set position in PCH file: %m" msgstr "" -#: config/i386/i386-builtins.cc:1960 +#: config/i386/i386-builtins.cc:1962 #, gcc-internal-format msgid "no dispatcher found for the versioning attributes" msgstr "" -#: config/i386/i386-builtins.cc:2010 +#: config/i386/i386-builtins.cc:2012 #, gcc-internal-format msgid "ISA %qs is not supported in % attribute, use % syntax" msgstr "" -#: config/i386/i386-builtins.cc:2021 +#: config/i386/i386-builtins.cc:2023 #, gcc-internal-format, gfc-internal-format msgid "no dispatcher found for the versioning attributes: %s" msgstr "" -#: config/i386/i386-builtins.cc:2131 +#: config/i386/i386-builtins.cc:2133 #, gcc-internal-format msgid "parameter to builtin must be a string constant or literal" msgstr "" -#: config/i386/i386-builtins.cc:2155 config/i386/i386-builtins.cc:2204 +#: config/i386/i386-builtins.cc:2157 config/i386/i386-builtins.cc:2206 #, gcc-internal-format, gfc-internal-format msgid "parameter to builtin not valid: %s" msgstr "" -#: config/i386/i386-expand.cc:9751 +#: config/i386/i386-expand.cc:9752 #, gcc-internal-format msgid "interrupt service routine cannot be called directly" msgstr "" -#: config/i386/i386-expand.cc:10222 config/i386/i386-expand.cc:11809 +#: config/i386/i386-expand.cc:10223 config/i386/i386-expand.cc:11810 #, gcc-internal-format msgid "the last argument must be a 2-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:10696 +#: config/i386/i386-expand.cc:10697 #, gcc-internal-format msgid "the fifth argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:10791 +#: config/i386/i386-expand.cc:10792 #, gcc-internal-format msgid "the third argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11738 +#: config/i386/i386-expand.cc:11739 #, gcc-internal-format msgid "the last argument must be an 1-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11753 +#: config/i386/i386-expand.cc:11754 #, gcc-internal-format msgid "the last argument must be a 3-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11788 +#: config/i386/i386-expand.cc:11789 #, gcc-internal-format msgid "the last argument must be a 4-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11828 +#: config/i386/i386-expand.cc:11829 #, gcc-internal-format msgid "the last argument must be a 1-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11844 +#: config/i386/i386-expand.cc:11845 #, gcc-internal-format msgid "the last argument must be a 5-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11854 +#: config/i386/i386-expand.cc:11855 #, gcc-internal-format msgid "the next to last argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11859 +#: config/i386/i386-expand.cc:11860 #, gcc-internal-format msgid "the last argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:11996 +#: config/i386/i386-expand.cc:11997 #, gcc-internal-format msgid "the third argument must be comparison constant" msgstr "" -#: config/i386/i386-expand.cc:12001 +#: config/i386/i386-expand.cc:12002 #, gcc-internal-format msgid "incorrect comparison mode" msgstr "" -#: config/i386/i386-expand.cc:12007 config/i386/i386-expand.cc:12331 +#: config/i386/i386-expand.cc:12008 config/i386/i386-expand.cc:12332 #, gcc-internal-format msgid "incorrect rounding operand" msgstr "" -#: config/i386/i386-expand.cc:12311 +#: config/i386/i386-expand.cc:12312 #, gcc-internal-format msgid "the immediate argument must be a 4-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:12319 +#: config/i386/i386-expand.cc:12320 #, gcc-internal-format msgid "the immediate argument must be a 5-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:12322 +#: config/i386/i386-expand.cc:12323 #, gcc-internal-format msgid "the immediate argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:12798 +#: config/i386/i386-expand.cc:12799 #, gcc-internal-format msgid "the fourth argument must be one of enum %qs" msgstr "" -#: config/i386/i386-expand.cc:12868 config/rs6000/rs6000-builtin.cc:2378 +#: config/i386/i386-expand.cc:12869 config/rs6000/rs6000-builtin.cc:2378 #, gcc-internal-format msgid "selector must be an integer constant in the range [0, %wi]" msgstr "" -#: config/i386/i386-expand.cc:13119 +#: config/i386/i386-expand.cc:13120 #, gcc-internal-format msgid "%qE needs unknown isa option" msgstr "" -#: config/i386/i386-expand.cc:13123 +#: config/i386/i386-expand.cc:13124 #, gcc-internal-format msgid "%qE needs isa option %s" msgstr "" -#: config/i386/i386-expand.cc:13611 +#: config/i386/i386-expand.cc:13612 #, gcc-internal-format msgid "second, third and fourth argument must be a const" msgstr "" -#: config/i386/i386-expand.cc:13619 +#: config/i386/i386-expand.cc:13620 #, gcc-internal-format msgid "invalid third argument" msgstr "" #. Ignore the hint. -#: config/i386/i386-expand.cc:13628 config/i386/i386-expand.cc:13683 +#: config/i386/i386-expand.cc:13629 config/i386/i386-expand.cc:13684 #, gcc-internal-format msgid "" "instruction prefetch applies when in 64-bit mode with RIP-relative " "addressing and option %<-mprefetchi%>; they stay NOPs otherwise" msgstr "" -#: config/i386/i386-expand.cc:13645 +#: config/i386/i386-expand.cc:13646 #, gcc-internal-format msgid "invalid third argument to %<__builtin_ia32_prefetch%>; using zero" msgstr "" -#: config/i386/i386-expand.cc:13671 +#: config/i386/i386-expand.cc:13672 #, gcc-internal-format msgid "second argument must be a const" msgstr "" -#: config/i386/i386-expand.cc:14198 +#: config/i386/i386-expand.cc:14218 #, gcc-internal-format msgid "the last argument must be a 32-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:14231 +#: config/i386/i386-expand.cc:14251 #, gcc-internal-format msgid "last argument must be an immediate" msgstr "" -#: config/i386/i386-expand.cc:14993 config/i386/i386-expand.cc:15205 +#: config/i386/i386-expand.cc:15013 config/i386/i386-expand.cc:15225 #, gcc-internal-format msgid "the last argument must be scale 1, 2, 4, 8" msgstr "" -#: config/i386/i386-expand.cc:15258 +#: config/i386/i386-expand.cc:15278 #, gcc-internal-format msgid "the forth argument must be scale 1, 2, 4, 8" msgstr "" -#: config/i386/i386-expand.cc:15264 +#: config/i386/i386-expand.cc:15284 #, gcc-internal-format msgid "incorrect hint operand" msgstr "" -#: config/i386/i386-expand.cc:15283 +#: config/i386/i386-expand.cc:15303 #, gcc-internal-format msgid "the argument to % intrinsic must be an 8-bit immediate" msgstr "" -#: config/i386/i386-features.cc:3526 +#: config/i386/i386-features.cc:3516 #, gcc-internal-format msgid "" "function versions cannot be marked as %, bodies have to be " "generated" msgstr "" -#: config/i386/i386-options.cc:921 config/i386/i386-options.cc:2246 -#: config/i386/i386-options.cc:2255 +#: config/i386/i386-options.cc:925 config/i386/i386-options.cc:2250 +#: config/i386/i386-options.cc:2259 #, gcc-internal-format, gfc-internal-format msgid "code model %s does not support PIC mode" msgstr "" -#: config/i386/i386-options.cc:1204 +#: config/i386/i386-options.cc:1208 #, gcc-internal-format msgid "attribute %qs argument is not a string" msgstr "" -#: config/i386/i386-options.cc:1268 +#: config/i386/i386-options.cc:1272 #, gcc-internal-format msgid "attribute %qs argument %qs is unknown" msgstr "" -#: config/i386/i386-options.cc:1331 +#: config/i386/i386-options.cc:1335 #, gcc-internal-format msgid "attribute value %qs was already specified in %qs attribute" msgstr "" -#: config/i386/i386-options.cc:1369 +#: config/i386/i386-options.cc:1373 #, gcc-internal-format msgid "attribute value %qs is unknown in %qs attribute" msgstr "" -#: config/i386/i386-options.cc:1669 +#: config/i386/i386-options.cc:1673 #, gcc-internal-format msgid "wrong argument %qs to option %qs" msgstr "" -#: config/i386/i386-options.cc:1675 +#: config/i386/i386-options.cc:1679 #, gcc-internal-format msgid "size ranges of option %qs should be increasing" msgstr "" -#: config/i386/i386-options.cc:1685 +#: config/i386/i386-options.cc:1689 #, gcc-internal-format msgid "wrong strategy name %qs specified for option %qs" msgstr "" #. rep; movq isn't available in 32-bit code. -#: config/i386/i386-options.cc:1711 +#: config/i386/i386-options.cc:1715 #, gcc-internal-format msgid "" "strategy name %qs specified for option %qs not supported for 32-bit code" msgstr "" -#: config/i386/i386-options.cc:1724 +#: config/i386/i386-options.cc:1728 #, gcc-internal-format msgid "unknown alignment %qs specified for option %qs" msgstr "" -#: config/i386/i386-options.cc:1734 +#: config/i386/i386-options.cc:1738 #, gcc-internal-format msgid "the max value for the last size range should be -1 for option %qs" msgstr "" -#: config/i386/i386-options.cc:1741 +#: config/i386/i386-options.cc:1745 #, gcc-internal-format msgid "too many size ranges specified in option %qs" msgstr "" -#: config/i386/i386-options.cc:1819 +#: config/i386/i386-options.cc:1823 #, gcc-internal-format msgid "unknown parameter to option %<-mtune-ctrl%>: %s" msgstr "" -#: config/i386/i386-options.cc:2042 +#: config/i386/i386-options.cc:2046 #, gcc-internal-format msgid "Intel MCU psABI isn%'t supported in %s mode" msgstr "" -#: config/i386/i386-options.cc:2096 +#: config/i386/i386-options.cc:2100 #, gcc-internal-format msgid "" "%<-mtune=x86-64%> is deprecated; use %<-mtune=k8%> or %<-mtune=generic%> " "instead as appropriate" msgstr "" -#: config/i386/i386-options.cc:2098 +#: config/i386/i386-options.cc:2102 #, gcc-internal-format msgid "" "% is deprecated; use % or " "% instead as appropriate" msgstr "" -#: config/i386/i386-options.cc:2104 +#: config/i386/i386-options.cc:2108 #, gcc-internal-format msgid "%<-mtune=knl%> support will be removed in GCC 15" msgstr "" -#: config/i386/i386-options.cc:2105 +#: config/i386/i386-options.cc:2109 #, gcc-internal-format msgid "% support will be removed in GCC 15" msgstr "" -#: config/i386/i386-options.cc:2110 +#: config/i386/i386-options.cc:2114 #, gcc-internal-format msgid "%<-mtune=knm%> support will be removed in GCC 15" msgstr "" -#: config/i386/i386-options.cc:2111 +#: config/i386/i386-options.cc:2115 #, gcc-internal-format msgid "% support will be removed in GCC 15" msgstr "" #. rep; movq isn't available in 32-bit code. -#: config/i386/i386-options.cc:2138 +#: config/i386/i386-options.cc:2142 #, gcc-internal-format msgid "%<-mstringop-strategy=rep_8byte%> not supported for 32-bit code" msgstr "" -#: config/i386/i386-options.cc:2143 +#: config/i386/i386-options.cc:2147 #, gcc-internal-format msgid "%<-mapxf%> is not supported for 32-bit code" msgstr "" -#: config/i386/i386-options.cc:2145 +#: config/i386/i386-options.cc:2149 #, gcc-internal-format msgid "%<-mapx-features=%> option is not supported for 32-bit code" msgstr "" -#: config/i386/i386-options.cc:2148 +#: config/i386/i386-options.cc:2152 #, gcc-internal-format msgid "%<-muintr%> not supported for 32-bit code" msgstr "" -#: config/i386/i386-options.cc:2151 +#: config/i386/i386-options.cc:2155 #, gcc-internal-format msgid "%<-mlam=%> option: [u48|u57] not supported for 32-bit code" msgstr "" -#: config/i386/i386-options.cc:2166 +#: config/i386/i386-options.cc:2170 #, gcc-internal-format msgid "address mode %qs not supported in the %s bit mode" msgstr "" -#: config/i386/i386-options.cc:2177 +#: config/i386/i386-options.cc:2181 #, gcc-internal-format msgid "%<-mabi=ms%> not supported with X32 ABI" msgstr "" -#: config/i386/i386-options.cc:2183 +#: config/i386/i386-options.cc:2187 #, gcc-internal-format msgid "%<-mabi=%s%> not supported with %<-fsanitize=address%>" msgstr "" -#: config/i386/i386-options.cc:2186 +#: config/i386/i386-options.cc:2190 #, gcc-internal-format msgid "%<-mabi=%s%> not supported with %<-fsanitize=kernel-address%>" msgstr "" -#: config/i386/i386-options.cc:2190 +#: config/i386/i386-options.cc:2194 #, gcc-internal-format msgid "%<-mabi=%s%> not supported with %<-fsanitize=thread%>" msgstr "" -#: config/i386/i386-options.cc:2196 +#: config/i386/i386-options.cc:2200 #, gcc-internal-format msgid "" "%<-mlam=u48%> is not compatible with Hardware-assisted AddressSanitizer, " "override to %<-mlam=u57%>" msgstr "" -#: config/i386/i386-options.cc:2216 config/i386/i386-options.cc:2225 -#: config/i386/i386-options.cc:2237 config/i386/i386-options.cc:2248 -#: config/i386/i386-options.cc:2259 +#: config/i386/i386-options.cc:2220 config/i386/i386-options.cc:2229 +#: config/i386/i386-options.cc:2241 config/i386/i386-options.cc:2252 +#: config/i386/i386-options.cc:2263 #, gcc-internal-format msgid "code model %qs not supported in the %s bit mode" msgstr "" -#: config/i386/i386-options.cc:2228 config/i386/i386-options.cc:2240 +#: config/i386/i386-options.cc:2232 config/i386/i386-options.cc:2244 #, gcc-internal-format msgid "code model %qs not supported in x32 mode" msgstr "" -#: config/i386/i386-options.cc:2283 +#: config/i386/i386-options.cc:2287 #, gcc-internal-format msgid "%<-masm=intel%> not supported in this configuration" msgstr "" -#: config/i386/i386-options.cc:2288 +#: config/i386/i386-options.cc:2292 #, gcc-internal-format, gfc-internal-format msgid "%i-bit mode not compiled in" msgstr "" -#: config/i386/i386-options.cc:2300 +#: config/i386/i386-options.cc:2304 #, gcc-internal-format msgid "% CPU can be used only for %<-mtune=%> switch" msgstr "" -#: config/i386/i386-options.cc:2302 +#: config/i386/i386-options.cc:2306 #, gcc-internal-format msgid "% CPU can be used only for % attribute" msgstr "" -#: config/i386/i386-options.cc:2309 +#: config/i386/i386-options.cc:2313 #, gcc-internal-format msgid "% CPU can be used only for %<-mtune=%> switch" msgstr "" -#: config/i386/i386-options.cc:2311 +#: config/i386/i386-options.cc:2315 #, gcc-internal-format msgid "% CPU can be used only for % attribute" msgstr "" -#: config/i386/i386-options.cc:2319 config/i386/i386-options.cc:2472 +#: config/i386/i386-options.cc:2323 config/i386/i386-options.cc:2476 #, gcc-internal-format msgid "CPU you selected does not support x86-64 instruction set" msgstr "" -#: config/i386/i386-options.cc:2327 +#: config/i386/i386-options.cc:2331 #, gcc-internal-format msgid "%<-march=knl%> support will be removed in GCC 15" msgstr "" -#: config/i386/i386-options.cc:2328 +#: config/i386/i386-options.cc:2332 #, gcc-internal-format msgid "% support will be removed in GCC 15" msgstr "" -#: config/i386/i386-options.cc:2333 +#: config/i386/i386-options.cc:2337 #, gcc-internal-format msgid "%<-march=knm%> support will be removed in GCC 15" msgstr "" -#: config/i386/i386-options.cc:2334 +#: config/i386/i386-options.cc:2338 #, gcc-internal-format msgid "% support will be removed in GCC 15" msgstr "" -#: config/i386/i386-options.cc:2411 +#: config/i386/i386-options.cc:2415 #, gcc-internal-format msgid "bad value %qs for %<-march=%> switch" msgstr "" -#: config/i386/i386-options.cc:2412 +#: config/i386/i386-options.cc:2416 #, gcc-internal-format msgid "bad value %qs for % attribute" msgstr "" -#: config/i386/i386-options.cc:2434 +#: config/i386/i386-options.cc:2438 #, gcc-internal-format msgid "valid arguments to %<-march=%> switch are: %s; did you mean %qs?" msgstr "" -#: config/i386/i386-options.cc:2436 +#: config/i386/i386-options.cc:2440 #, gcc-internal-format msgid "" "valid arguments to % attribute are: %s; did you mean %qs?" msgstr "" -#: config/i386/i386-options.cc:2441 +#: config/i386/i386-options.cc:2445 #, gcc-internal-format msgid "valid arguments to %<-march=%> switch are: %s" msgstr "" -#: config/i386/i386-options.cc:2442 +#: config/i386/i386-options.cc:2446 #, gcc-internal-format msgid "valid arguments to % attribute are: %s" msgstr "" -#: config/i386/i386-options.cc:2491 +#: config/i386/i386-options.cc:2495 #, gcc-internal-format msgid "bad value %qs for %<-mtune=%> switch" msgstr "" -#: config/i386/i386-options.cc:2492 +#: config/i386/i386-options.cc:2496 #, gcc-internal-format msgid "bad value %qs for % attribute" msgstr "" -#: config/i386/i386-options.cc:2513 +#: config/i386/i386-options.cc:2517 #, gcc-internal-format msgid "valid arguments to %<-mtune=%> switch are: %s; did you mean %qs?" msgstr "" -#: config/i386/i386-options.cc:2515 +#: config/i386/i386-options.cc:2519 #, gcc-internal-format msgid "" "valid arguments to % attribute are: %s; did you mean %qs?" msgstr "" -#: config/i386/i386-options.cc:2520 +#: config/i386/i386-options.cc:2524 #, gcc-internal-format msgid "valid arguments to %<-mtune=%> switch are: %s" msgstr "" -#: config/i386/i386-options.cc:2521 +#: config/i386/i386-options.cc:2525 #, gcc-internal-format msgid "valid arguments to % attribute are: %s" msgstr "" -#: config/i386/i386-options.cc:2549 +#: config/i386/i386-options.cc:2553 #, gcc-internal-format msgid "%<-mregparm%> is ignored in 64-bit mode" msgstr "" -#: config/i386/i386-options.cc:2551 +#: config/i386/i386-options.cc:2555 #, gcc-internal-format msgid "%<-mregparm%> is ignored for Intel MCU psABI" msgstr "" -#: config/i386/i386-options.cc:2554 +#: config/i386/i386-options.cc:2558 #, gcc-internal-format msgid "%<-mregparm=%d%> is not between 0 and %d" msgstr "" -#: config/i386/i386-options.cc:2577 +#: config/i386/i386-options.cc:2581 #, gcc-internal-format msgid "%<-m96bit-long-double%> is not compatible with this target" msgstr "" -#: config/i386/i386-options.cc:2582 +#: config/i386/i386-options.cc:2586 #, gcc-internal-format msgid "%<-mrtd%> is ignored in 64bit mode" msgstr "" -#: config/i386/i386-options.cc:2583 +#: config/i386/i386-options.cc:2587 #, gcc-internal-format msgid "% is ignored in 64bit mode" msgstr "" -#: config/i386/i386-options.cc:2676 +#: config/i386/i386-options.cc:2680 #, gcc-internal-format msgid "" "%<-mno-evex512%> or %<-mno-avx512XXX%> cannot disable AVX10 instructions " @@ -43529,7 +43709,7 @@ msgstr "" #. We should not emit 512 bit instructions under AVX10.1-256 #. when EVEX512 is enabled w/o any AVX512 features enabled. #. Disable EVEX512 bit for this. -#: config/i386/i386-options.cc:2690 +#: config/i386/i386-options.cc:2694 #, gcc-internal-format msgid "" "Using %<-mevex512%> without any AVX512 features enabled together with " @@ -43537,441 +43717,441 @@ msgid "" "as max vector size" msgstr "" -#: config/i386/i386-options.cc:2697 config/i386/i386-options.cc:2703 +#: config/i386/i386-options.cc:2701 config/i386/i386-options.cc:2707 #, gcc-internal-format msgid "" "Vector size conflicts between AVX10.1 and AVX512, using 512 as max vector " "size" msgstr "" -#: config/i386/i386-options.cc:2711 +#: config/i386/i386-options.cc:2715 #, gcc-internal-format msgid "" "%<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10 is available" msgstr "" -#: config/i386/i386-options.cc:2721 +#: config/i386/i386-options.cc:2725 #, gcc-internal-format msgid "" "%<-mno-avx10.1, -mno-avx10.1-256, -mno-avx10.1-512%> cannot disable AVX512 " "instructions when %<-mavx512XXX%>" msgstr "" -#: config/i386/i386-options.cc:2776 +#: config/i386/i386-options.cc:2780 #, gcc-internal-format msgid "%<-mpreferred-stack-boundary%> is not supported for this target" msgstr "" -#: config/i386/i386-options.cc:2779 +#: config/i386/i386-options.cc:2783 #, gcc-internal-format msgid "%<-mpreferred-stack-boundary=%d%> is not between %d and %d" msgstr "" -#: config/i386/i386-options.cc:2802 +#: config/i386/i386-options.cc:2806 #, gcc-internal-format msgid "%<-mincoming-stack-boundary=%d%> is not between %d and 12" msgstr "" -#: config/i386/i386-options.cc:2815 +#: config/i386/i386-options.cc:2819 #, gcc-internal-format msgid "%<-mnop-mcount%> is not compatible with this target" msgstr "" -#: config/i386/i386-options.cc:2818 +#: config/i386/i386-options.cc:2822 #, gcc-internal-format msgid "%<-mnop-mcount%> is not implemented for %<-fPIC%>" msgstr "" -#: config/i386/i386-options.cc:2824 +#: config/i386/i386-options.cc:2828 #, gcc-internal-format msgid "%<-msseregparm%> used without SSE enabled" msgstr "" -#: config/i386/i386-options.cc:2825 +#: config/i386/i386-options.cc:2829 #, gcc-internal-format msgid "% used without SSE enabled" msgstr "" -#: config/i386/i386-options.cc:2835 +#: config/i386/i386-options.cc:2839 #, gcc-internal-format msgid "SSE instruction set disabled, using 387 arithmetics" msgstr "" -#: config/i386/i386-options.cc:2842 +#: config/i386/i386-options.cc:2846 #, gcc-internal-format msgid "387 instruction set disabled, using SSE arithmetics" msgstr "" -#: config/i386/i386-options.cc:2892 +#: config/i386/i386-options.cc:2896 #, gcc-internal-format msgid "stack probing requires %<-maccumulate-outgoing-args%> for correctness" msgstr "" -#: config/i386/i386-options.cc:2894 +#: config/i386/i386-options.cc:2898 #, gcc-internal-format msgid "" "stack probing requires % for " "correctness" msgstr "" -#: config/i386/i386-options.cc:2908 +#: config/i386/i386-options.cc:2912 #, gcc-internal-format msgid "fixed ebp register requires %<-maccumulate-outgoing-args%>" msgstr "" -#: config/i386/i386-options.cc:2910 +#: config/i386/i386-options.cc:2914 #, gcc-internal-format msgid "fixed ebp register requires %" msgstr "" -#: config/i386/i386-options.cc:2970 +#: config/i386/i386-options.cc:2974 #, gcc-internal-format msgid "%<-mfentry%> isn%'t supported for 32-bit in combination with %<-fpic%>" msgstr "" -#: config/i386/i386-options.cc:2973 +#: config/i386/i386-options.cc:2977 #, gcc-internal-format msgid "%<-mno-fentry%> isn%'t compatible with SEH" msgstr "" -#: config/i386/i386-options.cc:2977 +#: config/i386/i386-options.cc:2981 #, gcc-internal-format msgid "%<-mcall-ms2sysv-xlogues%> isn%'t currently supported with SEH" msgstr "" -#: config/i386/i386-options.cc:3099 config/loongarch/loongarch.cc:7785 +#: config/i386/i386-options.cc:3103 config/loongarch/loongarch-opts.cc:868 #, gcc-internal-format msgid "unknown option for %<-mrecip=%s%>" msgstr "" -#: config/i386/i386-options.cc:3158 +#: config/i386/i386-options.cc:3162 #, gcc-internal-format msgid "%qs is not a valid number in %<-mstack-protector-guard-offset=%>" msgstr "" -#: config/i386/i386-options.cc:3163 +#: config/i386/i386-options.cc:3167 #, gcc-internal-format msgid "%qs is not a valid offset in %<-mstack-protector-guard-offset=%>" msgstr "" -#: config/i386/i386-options.cc:3191 +#: config/i386/i386-options.cc:3195 #, gcc-internal-format msgid "%qs is not a valid base register in %<-mstack-protector-guard-reg=%>" msgstr "" -#: config/i386/i386-options.cc:3245 +#: config/i386/i386-options.cc:3249 #, gcc-internal-format msgid "" "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was " "specified on the command line" msgstr "" -#: config/i386/i386-options.cc:3254 +#: config/i386/i386-options.cc:3258 #, gcc-internal-format msgid "%<-fcf-protection%> is not compatible with this target" msgstr "" -#: config/i386/i386-options.cc:3410 +#: config/i386/i386-options.cc:3425 #, gcc-internal-format msgid "interrupt and naked attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3414 config/i386/i386-options.cc:3446 -#: config/i386/i386-options.cc:3990 config/i386/i386-options.cc:4000 +#: config/i386/i386-options.cc:3429 config/i386/i386-options.cc:3461 +#: config/i386/i386-options.cc:4005 config/i386/i386-options.cc:4015 #, gcc-internal-format msgid "%qs and %qs attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3431 +#: config/i386/i386-options.cc:3446 #, gcc-internal-format msgid "only DWARF debug format is supported for interrupt service routine" msgstr "" -#: config/i386/i386-options.cc:3492 +#: config/i386/i386-options.cc:3507 #, gcc-internal-format msgid "%<-mindirect-branch=%s%> and %<-mcmodel=large%> are not compatible" msgstr "" -#: config/i386/i386-options.cc:3502 +#: config/i386/i386-options.cc:3517 #, gcc-internal-format msgid "%<-mindirect-branch%> and %<-fcf-protection%> are not compatible" msgstr "" -#: config/i386/i386-options.cc:3537 +#: config/i386/i386-options.cc:3552 #, gcc-internal-format msgid "%<-mfunction-return=%s%> and %<-mcmodel=large%> are not compatible" msgstr "" -#: config/i386/i386-options.cc:3547 +#: config/i386/i386-options.cc:3562 #, gcc-internal-format msgid "%<-mfunction-return%> and %<-fcf-protection%> are not compatible" msgstr "" -#: config/i386/i386-options.cc:3655 +#: config/i386/i386-options.cc:3670 #, gcc-internal-format msgid "%s instructions aren%'t allowed in an exception service routine" msgstr "" -#: config/i386/i386-options.cc:3657 +#: config/i386/i386-options.cc:3672 #, gcc-internal-format msgid "%s instructions aren%'t allowed in an interrupt service routine" msgstr "" -#: config/i386/i386-options.cc:3661 +#: config/i386/i386-options.cc:3676 #, gcc-internal-format msgid "" "%s instructions aren%'t allowed in a function with the " "% attribute" msgstr "" -#: config/i386/i386-options.cc:3708 config/i386/i386-options.cc:3759 +#: config/i386/i386-options.cc:3723 config/i386/i386-options.cc:3774 #, gcc-internal-format msgid "fastcall and regparm attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3713 +#: config/i386/i386-options.cc:3728 #, gcc-internal-format msgid "regparam and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3720 config/i386/i386-options.cc:3948 +#: config/i386/i386-options.cc:3735 config/i386/i386-options.cc:3963 #, gcc-internal-format msgid "%qE attribute requires an integer constant argument" msgstr "" -#: config/i386/i386-options.cc:3726 +#: config/i386/i386-options.cc:3741 #, gcc-internal-format msgid "argument to %qE attribute larger than %d" msgstr "" -#: config/i386/i386-options.cc:3751 config/i386/i386-options.cc:3794 +#: config/i386/i386-options.cc:3766 config/i386/i386-options.cc:3809 #, gcc-internal-format msgid "fastcall and cdecl attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3755 +#: config/i386/i386-options.cc:3770 #, gcc-internal-format msgid "fastcall and stdcall attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3763 config/i386/i386-options.cc:3812 +#: config/i386/i386-options.cc:3778 config/i386/i386-options.cc:3827 #, gcc-internal-format msgid "fastcall and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3773 config/i386/i386-options.cc:3790 +#: config/i386/i386-options.cc:3788 config/i386/i386-options.cc:3805 #, gcc-internal-format msgid "stdcall and cdecl attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3777 +#: config/i386/i386-options.cc:3792 #, gcc-internal-format msgid "stdcall and fastcall attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3781 config/i386/i386-options.cc:3808 +#: config/i386/i386-options.cc:3796 config/i386/i386-options.cc:3823 #, gcc-internal-format msgid "stdcall and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3798 config/i386/i386-options.cc:3816 +#: config/i386/i386-options.cc:3813 config/i386/i386-options.cc:3831 #, gcc-internal-format msgid "cdecl and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386-options.cc:3804 +#: config/i386/i386-options.cc:3819 #, gcc-internal-format msgid "%qE attribute is used for non-class method" msgstr "" -#: config/i386/i386-options.cc:3908 config/rs6000/rs6000.cc:20796 +#: config/i386/i386-options.cc:3923 config/rs6000/rs6000.cc:20748 #, gcc-internal-format msgid "%qE incompatible attribute ignored" msgstr "" -#: config/i386/i386-options.cc:3935 +#: config/i386/i386-options.cc:3950 #, gcc-internal-format msgid "%qE attribute only available for 32-bit" msgstr "" -#: config/i386/i386-options.cc:3956 +#: config/i386/i386-options.cc:3971 #, gcc-internal-format msgid "argument to %qE attribute is neither zero, nor one" msgstr "" -#: config/i386/i386-options.cc:4027 config/i386/i386-options.cc:4049 -#: config/ia64/ia64.cc:822 config/s390/s390.cc:1269 +#: config/i386/i386-options.cc:4042 config/i386/i386-options.cc:4064 +#: config/ia64/ia64.cc:822 config/s390/s390.cc:1271 #, gcc-internal-format msgid "%qE attribute requires a string constant argument" msgstr "" -#: config/i386/i386-options.cc:4037 config/i386/i386-options.cc:4059 -#: config/s390/s390.cc:1298 +#: config/i386/i386-options.cc:4052 config/i386/i386-options.cc:4074 +#: config/s390/s390.cc:1300 #, gcc-internal-format msgid "argument to %qE attribute is not (keep|thunk|thunk-inline|thunk-extern)" msgstr "" -#: config/i386/i386-options.cc:4091 +#: config/i386/i386-options.cc:4106 #, gcc-internal-format msgid "interrupt service routine should have a pointer as the first argument" msgstr "" -#: config/i386/i386-options.cc:4098 +#: config/i386/i386-options.cc:4113 #, gcc-internal-format msgid "interrupt service routine should have %qs as the second argument" msgstr "" -#: config/i386/i386-options.cc:4109 +#: config/i386/i386-options.cc:4124 #, gcc-internal-format msgid "" "interrupt service routine can only have a pointer argument and an optional " "integer argument" msgstr "" -#: config/i386/i386-options.cc:4112 +#: config/i386/i386-options.cc:4127 #, gcc-internal-format msgid "interrupt service routine must return %" msgstr "" -#: config/i386/i386.cc:1278 +#: config/i386/i386.cc:1281 #, gcc-internal-format msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.cc:1281 +#: config/i386/i386.cc:1284 #, gcc-internal-format msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.cc:1585 +#: config/i386/i386.cc:1588 #, gcc-internal-format msgid "X32 does not support % attribute" msgstr "" -#: config/i386/i386.cc:1619 +#: config/i386/i386.cc:1622 #, gcc-internal-format msgid "% attribute is not compatible with nested function" msgstr "" -#: config/i386/i386.cc:1971 +#: config/i386/i386.cc:1974 #, gcc-internal-format msgid "AVX512F vector argument without AVX512F enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:1977 +#: config/i386/i386.cc:1980 #, gcc-internal-format msgid "AVX512F vector return without AVX512F enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:1991 +#: config/i386/i386.cc:1994 #, gcc-internal-format msgid "AVX vector argument without AVX enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:1997 +#: config/i386/i386.cc:2000 #, gcc-internal-format msgid "AVX vector return without AVX enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:2013 +#: config/i386/i386.cc:2016 #, gcc-internal-format msgid "SSE vector argument without SSE enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:2019 +#: config/i386/i386.cc:2022 #, gcc-internal-format msgid "SSE vector return without SSE enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:2035 +#: config/i386/i386.cc:2038 #, gcc-internal-format msgid "MMX vector argument without MMX enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:2041 +#: config/i386/i386.cc:2044 #, gcc-internal-format msgid "MMX vector return without MMX enabled changes the ABI" msgstr "" -#: config/i386/i386.cc:2240 +#: config/i386/i386.cc:2243 #, gcc-internal-format msgid "" "the ABI of passing struct with a flexible array member has changed in GCC 4.4" msgstr "" -#: config/i386/i386.cc:2369 +#: config/i386/i386.cc:2372 #, gcc-internal-format msgid "the ABI of passing union with % has changed in GCC 4.4" msgstr "" -#: config/i386/i386.cc:2504 +#: config/i386/i386.cc:2507 #, gcc-internal-format msgid "" "the ABI of passing structure with % member has changed in " "GCC 4.4" msgstr "" -#: config/i386/i386.cc:2625 +#: config/i386/i386.cc:2628 msgid "" "the ABI of passing C structures with zero-width bit-fields has changed in " "GCC %{12.1%}" msgstr "" -#: config/i386/i386.cc:2722 config/i386/i386.cc:4091 config/i386/i386.cc:4101 +#: config/i386/i386.cc:2725 config/i386/i386.cc:4094 config/i386/i386.cc:4104 #, gcc-internal-format msgid "SSE register return with SSE2 disabled" msgstr "" -#: config/i386/i386.cc:2724 +#: config/i386/i386.cc:2727 #, gcc-internal-format msgid "SSE register return with SSE disabled" msgstr "" -#: config/i386/i386.cc:2731 +#: config/i386/i386.cc:2734 #, gcc-internal-format msgid "SSE register argument with SSE2 disabled" msgstr "" -#: config/i386/i386.cc:2733 +#: config/i386/i386.cc:2736 #, gcc-internal-format msgid "SSE register argument with SSE disabled" msgstr "" -#: config/i386/i386.cc:2753 +#: config/i386/i386.cc:2756 #, gcc-internal-format msgid "x87 register return with x87 disabled" msgstr "" -#: config/i386/i386.cc:3081 config/i386/i386.cc:3326 config/i386/i386.cc:4119 +#: config/i386/i386.cc:3084 config/i386/i386.cc:3329 config/i386/i386.cc:4122 #, gcc-internal-format msgid "calling %qD with SSE calling convention without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.cc:3083 config/i386/i386.cc:3328 config/i386/i386.cc:4121 +#: config/i386/i386.cc:3086 config/i386/i386.cc:3331 config/i386/i386.cc:4124 #, 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.cc:3731 +#: config/i386/i386.cc:3734 #, 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.cc:6781 +#: config/i386/i386.cc:6790 #, gcc-internal-format msgid "%<-mcall-ms2sysv-xlogues%> is not compatible with %s" msgstr "" -#: config/i386/i386.cc:8789 +#: config/i386/i386.cc:8808 #, gcc-internal-format msgid "" "% attribute is not compatible with %<-mfentry%> for 32-bit" msgstr "" -#: config/i386/i386.cc:8879 +#: config/i386/i386.cc:8898 #, gcc-internal-format msgid "" "Dynamic Realign Argument Pointer (DRAP) not supported in interrupt service " @@ -43979,22 +44159,22 @@ msgid "" "return." msgstr "" -#: config/i386/i386.cc:9932 +#: config/i386/i386.cc:9951 #, gcc-internal-format msgid "Stack realignment not supported with %<__builtin_eh_return%>" msgstr "" -#: config/i386/i386.cc:9937 +#: config/i386/i386.cc:9956 #, gcc-internal-format msgid "regparm nested function not supported with %<__builtin_eh_return%>" msgstr "" -#: config/i386/i386.cc:10326 +#: config/i386/i386.cc:10347 #, gcc-internal-format msgid "%<-fsplit-stack%> does not support fastcall with nested function" msgstr "" -#: config/i386/i386.cc:10346 +#: config/i386/i386.cc:10367 #, gcc-internal-format msgid "" "%<-fsplit-stack%> does not support 2 register parameters for a nested " @@ -44003,57 +44183,57 @@ msgstr "" #. FIXME: We could make this work by pushing a register #. around the addition and comparison. -#: config/i386/i386.cc:10357 +#: config/i386/i386.cc:10378 #, gcc-internal-format msgid "%<-fsplit-stack%> does not support 3 register parameters" msgstr "" -#: config/i386/i386.cc:13543 +#: config/i386/i386.cc:13564 #, gcc-internal-format msgid "% modifier on non-integer register" msgstr "" -#: config/i386/i386.cc:13554 config/i386/i386.cc:13568 +#: config/i386/i386.cc:13575 config/i386/i386.cc:13589 #, gcc-internal-format msgid "unsupported size for integer register" msgstr "" -#: config/i386/i386.cc:13600 +#: config/i386/i386.cc:13621 #, gcc-internal-format msgid "extended registers have no high halves" msgstr "" -#: config/i386/i386.cc:13615 +#: config/i386/i386.cc:13636 #, gcc-internal-format msgid "unsupported operand size for extended register" msgstr "" -#: config/i386/i386.cc:13812 config/i386/i386.cc:13814 +#: config/i386/i386.cc:13833 config/i386/i386.cc:13835 #, gcc-internal-format msgid "non-integer operand used with operand code %" msgstr "" -#: config/i386/i386.cc:17975 +#: config/i386/i386.cc:17996 #, gcc-internal-format msgid "" "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)" msgstr "" -#: config/i386/i386.cc:22713 +#: config/i386/i386.cc:22734 msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}" msgstr "" -#: config/i386/i386.cc:22794 +#: config/i386/i386.cc:22815 #, gcc-internal-format msgid "no register available for profiling %<-mcmodel=large%s%>" msgstr "" -#: config/i386/i386.cc:22890 +#: config/i386/i386.cc:22911 #, gcc-internal-format msgid "profiling %<-mcmodel=large%> with PIC is not supported" msgstr "" -#: config/i386/i386.cc:23603 +#: config/i386/i386.cc:23624 #, gcc-internal-format msgid "" "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since " @@ -44061,22 +44241,22 @@ msgid "" "%; an explicit bitcast may be needed here" msgstr "" -#: config/i386/i386.cc:25052 +#: config/i386/i386.cc:25074 #, gcc-internal-format msgid "unknown architecture specific memory model" msgstr "" -#: config/i386/i386.cc:25059 +#: config/i386/i386.cc:25081 #, gcc-internal-format msgid "% not used with % or stronger memory model" msgstr "" -#: config/i386/i386.cc:25066 +#: config/i386/i386.cc:25088 #, gcc-internal-format msgid "% not used with % or stronger memory model" msgstr "" -#: config/i386/i386.cc:25753 +#: config/i386/i386.cc:25775 #, gcc-internal-format msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>" msgstr "" @@ -44097,8 +44277,8 @@ msgstr "" msgid "malformed %<#pragma builtin%>" msgstr "" -#: config/ia64/ia64.cc:761 config/loongarch/loongarch.cc:8113 -#: config/loongarch/loongarch.cc:8123 +#: config/ia64/ia64.cc:761 config/loongarch/loongarch.cc:7974 +#: config/loongarch/loongarch.cc:7984 #, gcc-internal-format msgid "invalid argument of %qE attribute" msgstr "" @@ -44153,16 +44333,21 @@ msgstr "" msgid "% null pointer" msgstr "" -#: config/loongarch/loongarch-builtins.cc:3002 config/mips/mips.cc:17382 +#: config/loongarch/loongarch-builtins.cc:2999 config/mips/mips.cc:17388 #, gcc-internal-format, gfc-internal-format msgid "argument %d to the built-in must be a constant in range %d to %d" msgstr "" -#: config/loongarch/loongarch-builtins.cc:3080 config/mips/mips.cc:17502 +#: config/loongarch/loongarch-builtins.cc:3077 config/mips/mips.cc:17508 #, gcc-internal-format msgid "failed to expand built-in function" msgstr "" +#: config/loongarch/loongarch-builtins.cc:3116 +#, gcc-internal-format +msgid "built-in function %qD is not enabled" +msgstr "" + #: config/loongarch/loongarch-cpu.cc:112 #, gcc-internal-format msgid "" @@ -44199,113 +44384,113 @@ msgid "" "will be enabled" msgstr "" -#: config/loongarch/loongarch-opts.cc:225 +#: config/loongarch/loongarch-opts.cc:234 #, gcc-internal-format msgid "%<-m%s%> overrides %<-m%s=%s%>, adjusting ABI to %qs" msgstr "" -#: config/loongarch/loongarch-opts.cc:242 +#: config/loongarch/loongarch-opts.cc:251 #, gcc-internal-format msgid "ABI changed (%qs to %qs) while multilib is disabled" msgstr "" -#: config/loongarch/loongarch-opts.cc:268 -#: config/loongarch/loongarch-opts.cc:273 +#: config/loongarch/loongarch-opts.cc:277 +#: config/loongarch/loongarch-opts.cc:282 #, gcc-internal-format msgid "%qs does not work on a cross compiler" msgstr "" -#: config/loongarch/loongarch-opts.cc:365 +#: config/loongarch/loongarch-opts.cc:374 #, gcc-internal-format -msgid "enabing %qs promotes %<%s%s%> to %<%s%s%>" +msgid "enabling %qs promotes %<%s%s%> to %<%s%s%>" msgstr "" -#: config/loongarch/loongarch-opts.cc:377 +#: config/loongarch/loongarch-opts.cc:386 #, gcc-internal-format msgid "%qs is disabled by %<-m%s%>, because it requires %<%s%s%>" msgstr "" -#: config/loongarch/loongarch-opts.cc:389 +#: config/loongarch/loongarch-opts.cc:398 #, gcc-internal-format msgid "%<-m%s=%s%> conflicts with %qs, which requires %<%s%s%>" msgstr "" -#: config/loongarch/loongarch-opts.cc:433 +#: config/loongarch/loongarch-opts.cc:442 #, gcc-internal-format msgid "" "your native CPU architecture (%qs) does not support %qs ABI, falling back to " "%<-m%s=%s%>" msgstr "" -#: config/loongarch/loongarch-opts.cc:438 +#: config/loongarch/loongarch-opts.cc:447 #, gcc-internal-format msgid "" "default CPU architecture (%qs) does not support %qs ABI, falling back to %<-" "m%s=%s%>" msgstr "" -#: config/loongarch/loongarch-opts.cc:469 +#: config/loongarch/loongarch-opts.cc:478 #, gcc-internal-format msgid "unable to implement ABI %qs with instruction set %qs" msgstr "" -#: config/loongarch/loongarch-opts.cc:491 +#: config/loongarch/loongarch-opts.cc:500 #, gcc-internal-format msgid "" "ABI %qs cannot be implemented due to limited instruction set %qs, falling " "back to %qs" msgstr "" -#: config/loongarch/loongarch-opts.cc:502 +#: config/loongarch/loongarch-opts.cc:511 #, gcc-internal-format msgid "" "instruction set %qs cannot implement default ABI %qs, falling back to %qs" msgstr "" -#: config/loongarch/loongarch-opts.cc:507 +#: config/loongarch/loongarch-opts.cc:516 #, gcc-internal-format msgid "" "no multilib-enabled ABI (%qs) can be implemented with instruction set %qs, " "falling back to %qs" msgstr "" -#: config/loongarch/loongarch-opts.cc:523 +#: config/loongarch/loongarch-opts.cc:532 #, gcc-internal-format msgid "" "ABI %qs is not enabled at configure-time, the linker might report an error" msgstr "" -#: config/loongarch/loongarch-opts.cc:526 +#: config/loongarch/loongarch-opts.cc:535 #, gcc-internal-format, gfc-internal-format msgid "ABI with startfiles: %s" msgstr "" -#: config/loongarch/loongarch-opts.cc:540 +#: config/loongarch/loongarch-opts.cc:549 #, gcc-internal-format msgid "%qs is not supported, now cmodel is set to %qs" msgstr "" -#: config/loongarch/loongarch.cc:7680 +#: config/loongarch/loongarch-opts.cc:993 #, gcc-internal-format -msgid "%qs cannot be used for compiling a shared library" +msgid "code model %qs is not compatible with %s" msgstr "" -#: config/loongarch/loongarch.cc:7689 +#: config/loongarch/loongarch-opts.cc:1059 #, gcc-internal-format -msgid "code model %qs is not compatible with %s" +msgid "%qs cannot be used for compiling a shared library" msgstr "" -#: config/loongarch/loongarch.cc:8085 +#: config/loongarch/loongarch.cc:7946 #, gcc-internal-format msgid "%qE attribute cannot be specified for thread-local variables" msgstr "" -#: config/loongarch/loongarch.cc:8103 +#: config/loongarch/loongarch.cc:7964 #, gcc-internal-format msgid "%qE attribute cannot be specified for register variables" msgstr "" -#: config/loongarch/loongarch.cc:8131 +#: config/loongarch/loongarch.cc:7992 #, gcc-internal-format msgid "multiple %qE attribute" msgstr "" @@ -44411,7 +44596,7 @@ msgstr "" msgid "stack limit expression is not supported" msgstr "" -#: config/m68k/m68k.cc:7138 config/s390/s390.cc:17156 +#: config/m68k/m68k.cc:7138 config/s390/s390.cc:17177 #, gcc-internal-format msgid "%<-fexcess-precision=16%> is not supported on this target" msgstr "" @@ -44454,7 +44639,7 @@ msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>" msgstr "" #: config/mips/mips.cc:1332 config/mips/mips.cc:1593 config/mips/mips.cc:1647 -#: config/riscv/riscv.cc:5504 +#: config/riscv/riscv.cc:5756 #, gcc-internal-format msgid "%qE attribute requires a string argument" msgstr "" @@ -44474,7 +44659,7 @@ msgstr "" msgid "%qE cannot have both %qs and %qs attributes" msgstr "" -#: config/mips/mips.cc:1555 config/mips/mips.cc:1561 config/nios2/nios2.cc:4488 +#: config/mips/mips.cc:1555 config/mips/mips.cc:1561 config/nios2/nios2.cc:4489 #, gcc-internal-format msgid "%qE redeclared with conflicting %qs attributes" msgstr "" @@ -44516,124 +44701,124 @@ msgid "" "%{12.1%}" msgstr "" -#: config/mips/mips.cc:8033 +#: config/mips/mips.cc:8039 #, gcc-internal-format msgid "cannot handle inconsistent calls to %qs" msgstr "" -#: config/mips/mips.cc:11289 +#: config/mips/mips.cc:11295 #, gcc-internal-format msgid "the % attribute requires a MIPS32r2 processor or greater" msgstr "" -#: config/mips/mips.cc:11291 +#: config/mips/mips.cc:11297 #, gcc-internal-format msgid "interrupt handlers cannot be MIPS16 functions" msgstr "" -#: config/mips/mips.cc:12295 +#: config/mips/mips.cc:12301 #, gcc-internal-format msgid "%<-fstack-check=specific%> not implemented for MIPS16" msgstr "" -#: config/mips/mips.cc:17634 +#: config/mips/mips.cc:17640 #, gcc-internal-format msgid "built-in function %qE not supported for MIPS16" msgstr "" -#: config/mips/mips.cc:18242 +#: config/mips/mips.cc:18248 #, gcc-internal-format msgid "%qs does not support MIPS16 code" msgstr "" -#: config/mips/mips.cc:20055 +#: config/mips/mips.cc:20061 #, gcc-internal-format msgid "MIPS16 PIC for ABIs other than o32 and o64" msgstr "" -#: config/mips/mips.cc:20058 +#: config/mips/mips.cc:20064 #, gcc-internal-format msgid "MIPS16 %<-mxgot%> code" msgstr "" -#: config/mips/mips.cc:20061 +#: config/mips/mips.cc:20067 #, gcc-internal-format msgid "% MIPS16 code for ABIs other than o32 and o64" msgstr "" -#: config/mips/mips.cc:20064 +#: config/mips/mips.cc:20070 #, gcc-internal-format msgid "MSA MIPS16 code" msgstr "" -#: config/mips/mips.cc:20067 +#: config/mips/mips.cc:20073 #, gcc-internal-format msgid "MIPS16 requires %<-mexplicit-relocs%>" msgstr "" -#: config/mips/mips.cc:20258 config/mips/mips.cc:20263 -#: config/mips/mips.cc:20353 config/mips/mips.cc:20355 -#: config/mips/mips.cc:20385 config/mips/mips.cc:20395 -#: config/mips/mips.cc:20501 config/mips/mips.cc:20525 +#: config/mips/mips.cc:20264 config/mips/mips.cc:20269 +#: config/mips/mips.cc:20359 config/mips/mips.cc:20361 +#: config/mips/mips.cc:20391 config/mips/mips.cc:20401 +#: config/mips/mips.cc:20507 config/mips/mips.cc:20531 #, gcc-internal-format, gfc-internal-format msgid "unsupported combination: %s" msgstr "" -#: config/mips/mips.cc:20298 +#: config/mips/mips.cc:20304 #, gcc-internal-format msgid "" "%<-%s%> conflicts with the other architecture options, which specify a %s " "processor" msgstr "" -#: config/mips/mips.cc:20308 +#: config/mips/mips.cc:20314 #, gcc-internal-format msgid "%<-march=%s%> is not compatible with the selected ABI" msgstr "" -#: config/mips/mips.cc:20323 +#: config/mips/mips.cc:20329 #, gcc-internal-format msgid "%<-mgp64%> used with a 32-bit processor" msgstr "" -#: config/mips/mips.cc:20325 +#: config/mips/mips.cc:20331 #, gcc-internal-format msgid "%<-mgp32%> used with a 64-bit ABI" msgstr "" -#: config/mips/mips.cc:20327 +#: config/mips/mips.cc:20333 #, gcc-internal-format msgid "%<-mgp64%> used with a 32-bit ABI" msgstr "" -#: config/mips/mips.cc:20350 +#: config/mips/mips.cc:20356 #, gcc-internal-format msgid "the %qs architecture does not support %<-mfp32%>" msgstr "" -#: config/mips/mips.cc:20359 +#: config/mips/mips.cc:20365 #, gcc-internal-format msgid "" "%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the " "mfhc1 and mthc1 instructions" msgstr "" -#: config/mips/mips.cc:20362 +#: config/mips/mips.cc:20368 #, gcc-internal-format msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI" msgstr "" -#: config/mips/mips.cc:20383 +#: config/mips/mips.cc:20389 #, gcc-internal-format msgid "%<-mfpxx%> can only be used with the o32 ABI" msgstr "" -#: config/mips/mips.cc:20387 +#: config/mips/mips.cc:20393 #, gcc-internal-format msgid "%<-march=%s%> requires %<-mfp32%>" msgstr "" -#: config/mips/mips.cc:20389 +#: config/mips/mips.cc:20395 #, gcc-internal-format msgid "%<-mfpxx%> requires %<-mlra%>" msgstr "" @@ -44643,117 +44828,117 @@ msgstr "" #. effort to support the combination of 32-bit GOT entries #. and 64-bit pointers, so we treat the abicalls case as #. an error. -#: config/mips/mips.cc:20414 +#: config/mips/mips.cc:20420 #, gcc-internal-format msgid "the combination of %qs and %qs is incompatible with %qs" msgstr "" -#: config/mips/mips.cc:20467 +#: config/mips/mips.cc:20473 #, gcc-internal-format msgid "the %qs architecture does not support branch-likely instructions" msgstr "" -#: config/mips/mips.cc:20482 +#: config/mips/mips.cc:20488 #, gcc-internal-format msgid "the %qs architecture does not support madd or msub instructions" msgstr "" -#: config/mips/mips.cc:20496 +#: config/mips/mips.cc:20502 #, gcc-internal-format msgid "the %qs architecture does not support odd single-precision registers" msgstr "" -#: config/mips/mips.cc:20509 +#: config/mips/mips.cc:20515 #, gcc-internal-format msgid "unsupported combination: %qs%s %s" msgstr "" -#: config/mips/mips.cc:20518 +#: config/mips/mips.cc:20524 #, gcc-internal-format msgid "unsupported combination: %qs %s" msgstr "" -#: config/mips/mips.cc:20533 +#: config/mips/mips.cc:20539 #, gcc-internal-format msgid "cannot generate position-independent code for %qs" msgstr "" -#: config/mips/mips.cc:20536 +#: config/mips/mips.cc:20542 #, gcc-internal-format msgid "position-independent code requires %qs" msgstr "" -#: config/mips/mips.cc:20569 +#: config/mips/mips.cc:20575 #, gcc-internal-format msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" msgstr "" -#: config/mips/mips.cc:20577 config/mips/mips.cc:20580 +#: config/mips/mips.cc:20583 config/mips/mips.cc:20586 #, gcc-internal-format msgid "cannot use small-data accesses for %qs" msgstr "" -#: config/mips/mips.cc:20597 +#: config/mips/mips.cc:20603 #, gcc-internal-format msgid "the %qs architecture does not support %<-m%s=legacy%>" msgstr "" -#: config/mips/mips.cc:20604 +#: config/mips/mips.cc:20610 #, gcc-internal-format msgid "the %qs architecture does not support %<-m%s=2008%>" msgstr "" -#: config/mips/mips.cc:20622 +#: config/mips/mips.cc:20628 #, gcc-internal-format msgid "%<-mips3d%> requires %<-mpaired-single%>" msgstr "" -#: config/mips/mips.cc:20632 +#: config/mips/mips.cc:20638 #, gcc-internal-format msgid "%qs must be used with %qs" msgstr "" -#: config/mips/mips.cc:20642 +#: config/mips/mips.cc:20648 #, gcc-internal-format msgid "%<-mmsa%> must be used with %<-mfp64%> and %<-mhard-float%>" msgstr "" -#: config/mips/mips.cc:20649 +#: config/mips/mips.cc:20655 #, gcc-internal-format msgid "the %qs architecture does not support paired-single instructions" msgstr "" -#: config/mips/mips.cc:20658 +#: config/mips/mips.cc:20664 #, gcc-internal-format msgid "%qs requires a target that provides the %qs instruction" msgstr "" -#: config/mips/mips.cc:20669 +#: config/mips/mips.cc:20675 #, gcc-internal-format msgid "the %qs architecture does not support DSP instructions" msgstr "" -#: config/mips/mips.cc:20679 +#: config/mips/mips.cc:20685 #, gcc-internal-format msgid "%<-mloongson-mmi%> must be used with %<-mhard-float%>" msgstr "" -#: config/mips/mips.cc:20689 +#: config/mips/mips.cc:20695 #, gcc-internal-format msgid "%<-mloongson-ext2%> must be used with %<-mloongson-ext%>" msgstr "" -#: config/mips/mips.cc:20784 +#: config/mips/mips.cc:20790 #, gcc-internal-format msgid "%qs requires branch-likely instructions" msgstr "" -#: config/mips/mips.cc:20788 +#: config/mips/mips.cc:20794 #, gcc-internal-format msgid "the %qs architecture does not support the synci instruction" msgstr "" -#: config/mips/mips.cc:21624 +#: config/mips/mips.cc:21630 #, gcc-internal-format msgid "mips16 function profiling" msgstr "" @@ -45084,7 +45269,7 @@ msgstr "" msgid "bad builtin code" msgstr "" -#: config/nds32/nds32-intrinsic.cc:126 config/nios2/nios2.cc:3839 +#: config/nds32/nds32-intrinsic.cc:126 config/nios2/nios2.cc:3840 #, gcc-internal-format, gfc-internal-format msgid "invalid argument to built-in function %s" msgstr "" @@ -45175,69 +45360,69 @@ msgid "cannot use reset attributes to function %qD under linux toolchain" msgstr "" #. Trampoline is not supported on reduced-set registers yet. -#: config/nds32/nds32.cc:2407 config/nds32/nds32.cc:2461 -#: config/nds32/nds32.cc:3573 config/nds32/nds32.cc:3670 -#: config/nds32/nds32.cc:3685 config/nds32/nds32.cc:3691 -#: config/nds32/nds32.cc:3767 config/nds32/nds32.cc:3773 -#: config/nds32/nds32.cc:3805 +#: config/nds32/nds32.cc:2408 config/nds32/nds32.cc:2462 +#: config/nds32/nds32.cc:3574 config/nds32/nds32.cc:3671 +#: config/nds32/nds32.cc:3686 config/nds32/nds32.cc:3692 +#: config/nds32/nds32.cc:3768 config/nds32/nds32.cc:3774 +#: config/nds32/nds32.cc:3806 #, gcc-internal-format msgid "a nested function is not supported for reduced registers" msgstr "" #. The enum index value for array size is out of range. -#: config/nds32/nds32.cc:3464 +#: config/nds32/nds32.cc:3465 #, gcc-internal-format msgid "intrinsic register index is out of range" msgstr "" -#: config/nds32/nds32.cc:3480 config/nds32/nds32.cc:3487 -#: config/nds32/nds32.cc:3494 config/nds32/nds32.cc:3501 -#: config/nds32/nds32.cc:3508 +#: config/nds32/nds32.cc:3481 config/nds32/nds32.cc:3488 +#: config/nds32/nds32.cc:3495 config/nds32/nds32.cc:3502 +#: config/nds32/nds32.cc:3509 #, gcc-internal-format msgid "CCTL intrinsic function subtype out of range" msgstr "" -#: config/nds32/nds32.cc:3945 +#: config/nds32/nds32.cc:3946 #, gcc-internal-format msgid "cannot use % attribute under linux toolchain" msgstr "" -#: config/nds32/nds32.cc:3953 +#: config/nds32/nds32.cc:3954 #, gcc-internal-format msgid "% attribute cannot apply for static function" msgstr "" -#: config/nds32/nds32.cc:4042 +#: config/nds32/nds32.cc:4043 #, gcc-internal-format msgid "invalid id value for interrupt/exception attribute" msgstr "" -#: config/nds32/nds32.cc:4070 +#: config/nds32/nds32.cc:4071 #, gcc-internal-format msgid "invalid id value for reset attribute" msgstr "" -#: config/nds32/nds32.cc:4086 +#: config/nds32/nds32.cc:4087 #, gcc-internal-format msgid "invalid nmi function for reset attribute" msgstr "" -#: config/nds32/nds32.cc:4099 +#: config/nds32/nds32.cc:4100 #, gcc-internal-format msgid "invalid warm function for reset attribute" msgstr "" -#: config/nds32/nds32.cc:4150 +#: config/nds32/nds32.cc:4151 #, gcc-internal-format msgid "not support %<-fpic%> option for v3m toolchain" msgstr "" -#: config/nds32/nds32.cc:4183 +#: config/nds32/nds32.cc:4184 #, gcc-internal-format msgid "Disable FPU ISA, the ABI option must be enable %<-mfloat-abi=soft%>" msgstr "" -#: config/nds32/nds32.cc:4186 +#: config/nds32/nds32.cc:4187 #, gcc-internal-format msgid "" "%<-mabi=2fp+%> option only support when FPU available, must be enable %<-" @@ -45321,85 +45506,85 @@ msgstr "" msgid "R2 architecture is little-endian only" msgstr "" -#: config/nios2/nios2.cc:3584 +#: config/nios2/nios2.cc:3585 #, gcc-internal-format msgid "" "cannot call %<__builtin_custom_%s%> without specifying switch %<-mcustom-%s%>" msgstr "" -#: config/nios2/nios2.cc:3693 +#: config/nios2/nios2.cc:3694 #, gcc-internal-format msgid "" "custom instruction opcode must be a compile-time constant in the range 0-255 " "for %<__builtin_custom_%s%>" msgstr "" -#: config/nios2/nios2.cc:3898 +#: config/nios2/nios2.cc:3899 #, gcc-internal-format, gfc-internal-format msgid "control register number must be in range 0-31 for %s" msgstr "" -#: config/nios2/nios2.cc:3926 +#: config/nios2/nios2.cc:3927 #, gcc-internal-format, gfc-internal-format msgid "register number must be in range 0-31 for %s" msgstr "" -#: config/nios2/nios2.cc:3933 +#: config/nios2/nios2.cc:3934 #, gcc-internal-format, gfc-internal-format msgid "immediate value must fit into a %d-bit integer for %s" msgstr "" -#: config/nios2/nios2.cc:3983 +#: config/nios2/nios2.cc:3984 #, gcc-internal-format msgid "the ENI instruction operand must be either 0 or 1" msgstr "" -#: config/nios2/nios2.cc:4011 +#: config/nios2/nios2.cc:4012 #, gcc-internal-format, gfc-internal-format msgid "built-in function %s requires Nios II R%d" msgstr "" -#: config/nios2/nios2.cc:4091 +#: config/nios2/nios2.cc:4092 #, gcc-internal-format msgid "switch %<-mcustom-%s%> conflicts with switch %<-mcustom-%s%>" msgstr "" -#: config/nios2/nios2.cc:4098 config/nios2/nios2.cc:4109 +#: config/nios2/nios2.cc:4099 config/nios2/nios2.cc:4110 #, gcc-internal-format msgid "call to %<__builtin_custom_%s%> conflicts with switch %<-mcustom-%s%>" msgstr "" -#: config/nios2/nios2.cc:4252 +#: config/nios2/nios2.cc:4253 #, gcc-internal-format msgid "% option does not support %" msgstr "" -#: config/nios2/nios2.cc:4257 +#: config/nios2/nios2.cc:4258 #, gcc-internal-format msgid "% option requires configuration argument" msgstr "" -#: config/nios2/nios2.cc:4285 +#: config/nios2/nios2.cc:4286 #, gcc-internal-format msgid "% does not accept arguments" msgstr "" -#: config/nios2/nios2.cc:4300 +#: config/nios2/nios2.cc:4301 #, gcc-internal-format msgid "% requires argument" msgstr "" -#: config/nios2/nios2.cc:4310 +#: config/nios2/nios2.cc:4311 #, gcc-internal-format msgid "% argument should be a non-negative integer" msgstr "" -#: config/nios2/nios2.cc:4322 +#: config/nios2/nios2.cc:4323 #, gcc-internal-format msgid "% is not recognized as FPU instruction" msgstr "" -#: config/nios2/nios2.cc:4329 +#: config/nios2/nios2.cc:4330 #, gcc-internal-format msgid "invalid custom instruction option %qs" msgstr "" @@ -45432,27 +45617,27 @@ msgstr "" msgid "environment variable COLLECT_GCC_OPTIONS must be set" msgstr "" -#: config/nvptx/mkoffload.cc:648 +#: config/nvptx/mkoffload.cc:650 #, gcc-internal-format msgid "COLLECT_GCC must be set." msgstr "" -#: config/nvptx/mkoffload.cc:696 +#: config/nvptx/mkoffload.cc:698 #, gcc-internal-format msgid "offload compiler %s not found (consider using %<-B%>)" msgstr "" -#: config/nvptx/mkoffload.cc:719 +#: config/nvptx/mkoffload.cc:721 #, gcc-internal-format msgid "unrecognizable argument of option " msgstr "" -#: config/nvptx/mkoffload.cc:795 +#: config/nvptx/mkoffload.cc:797 #, gcc-internal-format, gfc-internal-format msgid "cannot open '%s'" msgstr "" -#: config/nvptx/mkoffload.cc:851 +#: config/nvptx/mkoffload.cc:853 #, gcc-internal-format msgid "cannot open intermediate ptx file" msgstr "" @@ -45515,34 +45700,34 @@ msgstr "" msgid "complement argument must be constant" msgstr "" -#: config/nvptx/nvptx.cc:6579 +#: config/nvptx/nvptx.cc:6580 #, gcc-internal-format msgid "" "using % due to call to vector-partitionable routine, " "ignoring %d" msgstr "" -#: config/nvptx/nvptx.cc:6587 +#: config/nvptx/nvptx.cc:6588 #, gcc-internal-format msgid "using %, ignoring runtime setting" msgstr "" -#: config/nvptx/nvptx.cc:6601 +#: config/nvptx/nvptx.cc:6602 #, gcc-internal-format msgid "using %, ignoring %d" msgstr "" -#: config/nvptx/nvptx.cc:7487 +#: config/nvptx/nvptx.cc:7488 #, gcc-internal-format msgid "variable %qD adjusted for OpenACC privatization level: %qs" msgstr "" -#: config/nvptx/nvptx.cc:7601 +#: config/nvptx/nvptx.cc:7602 #, gcc-internal-format msgid "weak alias definitions not supported in this configuration" msgstr "" -#: config/nvptx/nvptx.cc:7614 +#: config/nvptx/nvptx.cc:7615 #, gcc-internal-format msgid "non-function alias definitions not supported in this configuration" msgstr "" @@ -45649,249 +45834,304 @@ msgstr "" msgid "pointers to %<__regio_symbol%> address space are prohibited" msgstr "" -#: config/riscv/riscv-c.cc:192 +#: config/riscv/riscv-c.cc:261 #, gcc-internal-format msgid "%<#pragma riscv intrinsic%> requires a string parameter" msgstr "" -#: config/riscv/riscv-c.cc:203 -#, gcc-internal-format -msgid "" -"%<#pragma riscv intrinsic%> option %qs needs 'V' or 'XTHEADVECTOR' extension " -"enabled" -msgstr "" - -#: config/riscv/riscv-c.cc:211 +#: config/riscv/riscv-c.cc:286 #, gcc-internal-format msgid "unknown %<#pragma riscv intrinsic%> option %qs" msgstr "" -#: config/riscv/riscv-target-attr.cc:120 +#: config/riscv/riscv-target-attr.cc:124 #, gcc-internal-format msgid "unexpected arch for % attribute: must start with + or rv" msgstr "" -#: config/riscv/riscv-target-attr.cc:132 +#: config/riscv/riscv-target-attr.cc:136 #, gcc-internal-format msgid "unexpected arch for % attribute: bad string found %<%s%>" msgstr "" -#: config/riscv/riscv-target-attr.cc:156 +#: config/riscv/riscv-target-attr.cc:162 #, gcc-internal-format msgid "% attribute: arch appears more than once" msgstr "" -#: config/riscv/riscv-target-attr.cc:167 +#: config/riscv/riscv-target-attr.cc:173 #, gcc-internal-format msgid "% attribute: cpu appears more than once" msgstr "" -#: config/riscv/riscv-target-attr.cc:174 +#: config/riscv/riscv-target-attr.cc:180 #, gcc-internal-format msgid "% attribute: unknown CPU %qs" msgstr "" -#: config/riscv/riscv-target-attr.cc:195 +#: config/riscv/riscv-target-attr.cc:201 #, gcc-internal-format msgid "% attribute: tune appears more than once" msgstr "" -#: config/riscv/riscv-target-attr.cc:201 +#: config/riscv/riscv-target-attr.cc:207 #, gcc-internal-format msgid "% attribute: unknown TUNE %qs" msgstr "" -#: config/riscv/riscv-target-attr.cc:240 +#: config/riscv/riscv-target-attr.cc:246 #, gcc-internal-format msgid "malformed % attribute" msgstr "" -#: config/riscv/riscv-target-attr.cc:254 +#: config/riscv/riscv-target-attr.cc:260 #, gcc-internal-format msgid "attribute % does not accept an argument" msgstr "" -#: config/riscv/riscv-target-attr.cc:271 +#: config/riscv/riscv-target-attr.cc:277 #, gcc-internal-format msgid "Got unknown attribute %" msgstr "" -#: config/riscv/riscv-target-attr.cc:352 +#: config/riscv/riscv-target-attr.cc:359 #, gcc-internal-format msgid "malformed % attribute" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4239 +#: config/riscv/riscv-vector-builtins.cc:4276 #, gcc-internal-format msgid "" "passing %wd to argument %d of %qE, which expects a value in the range [%wd, " "%wd] or %wd" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4435 +#: config/riscv/riscv-vector-builtins.cc:4488 #, gcc-internal-format msgid "RVV type %qT does not have a fixed size" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4441 +#: config/riscv/riscv-vector-builtins.cc:4494 #, gcc-internal-format msgid "RVV type %qT does not have a defined alignment" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4456 +#: config/riscv/riscv-vector-builtins.cc:4509 #, gcc-internal-format msgid "arithmetic on pointer to RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4464 +#: config/riscv/riscv-vector-builtins.cc:4517 #, gcc-internal-format msgid "member variables cannot have RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4466 +#: config/riscv/riscv-vector-builtins.cc:4519 #, gcc-internal-format msgid "fields cannot have RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4472 +#: config/riscv/riscv-vector-builtins.cc:4525 #, gcc-internal-format msgid "array elements cannot have RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4478 +#: config/riscv/riscv-vector-builtins.cc:4531 #, gcc-internal-format msgid "cannot allocate objects with RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4484 +#: config/riscv/riscv-vector-builtins.cc:4537 #, gcc-internal-format msgid "cannot delete objects with RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4490 +#: config/riscv/riscv-vector-builtins.cc:4543 #, gcc-internal-format msgid "cannot throw or catch RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4496 +#: config/riscv/riscv-vector-builtins.cc:4549 #, gcc-internal-format msgid "capture by copy of RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:4633 +#: config/riscv/riscv-vector-builtins.cc:4646 +#, gcc-internal-format +msgid "built-in function %qE requires the %qs ISA extension" +msgstr "" + +#: config/riscv/riscv-vector-builtins.cc:4696 #, gcc-internal-format msgid "no matching function call to %qE with empty arguments" msgstr "" -#: config/riscv/riscv.cc:647 +#: config/riscv/riscv.cc:714 #, gcc-internal-format msgid "unknown cpu %qs for %<-mtune%>" msgstr "" -#: config/riscv/riscv.cc:2458 +#: config/riscv/riscv.cc:2537 #, gcc-internal-format msgid "this operation requires the RVV ISA extension" msgstr "" -#: config/riscv/riscv.cc:2459 +#: config/riscv/riscv.cc:2538 #, gcc-internal-format msgid "" "you can enable RVV using the command-line option %<-march%>, or by using the " "% attribute or pragma" msgstr "" -#: config/riscv/riscv.cc:4848 config/riscv/riscv.cc:4890 +#: config/riscv/riscv.cc:4925 config/riscv/riscv.cc:4967 #, gcc-internal-format msgid "ABI for flattened struct with zero-length bit-fields changed in GCC 10" msgstr "" -#: config/riscv/riscv.cc:5237 +#: config/riscv/riscv.cc:5314 #, gcc-internal-format msgid "RVV type %qT cannot be passed to an unprototyped function" msgstr "" -#: config/riscv/riscv.cc:5515 +#: config/riscv/riscv.cc:5567 +#, gcc-internal-format +msgid "%s %qT requires the V ISA extension" +msgstr "" + +#: config/riscv/riscv.cc:5579 +#, gcc-internal-format +msgid "%s %qT requires the zve64x, zve64f, zve64d or v ISA extension" +msgstr "" + +#: config/riscv/riscv.cc:5590 +#, gcc-internal-format +msgid "%s %qT requires the zvfhmin or zvfh ISA extension" +msgstr "" + +#: config/riscv/riscv.cc:5599 +#, gcc-internal-format +msgid "%s %qT requires the zve32f, zve64f, zve64d or v ISA extension" +msgstr "" + +#: config/riscv/riscv.cc:5608 +#, gcc-internal-format +msgid "%s %qT requires the zve64d or v ISA extension" +msgstr "" + +#: config/riscv/riscv.cc:5618 +#, gcc-internal-format +msgid "%s %qT requires the minimal vector length %qd but %qd is given" +msgstr "" + +#: config/riscv/riscv.cc:5673 +#, gcc-internal-format +msgid "function attribute %qs requires the V ISA extension" +msgstr "" + +#: config/riscv/riscv.cc:5767 #, gcc-internal-format msgid "" "argument to %qE attribute is not %<\"user\"%>, %<\"supervisor\"%>, or " "%<\"machine\"%>" msgstr "" -#: config/riscv/riscv.cc:8875 +#: config/riscv/riscv.cc:5790 +#, gcc-internal-format +msgid "%qs is only supported when %<-mrvv-vector-bits=zvl%> is specified" +msgstr "" + +#: config/riscv/riscv.cc:5799 +#, gcc-internal-format +msgid "%qs applied to non-RVV type %qT" +msgstr "" + +#: config/riscv/riscv.cc:5807 +#, gcc-internal-format +msgid "%qs requires an integer constant" +msgstr "" + +#: config/riscv/riscv.cc:5817 +#, gcc-internal-format +msgid "" +"invalid RVV vector size %qd, expected size is %qd based on LMUL of type and " +"%qs" +msgstr "" + +#: config/riscv/riscv.cc:9211 #, gcc-internal-format msgid "%<-mdiv%> requires %<-march%> to subsume the % extension" msgstr "" -#: config/riscv/riscv.cc:8917 +#: config/riscv/riscv.cc:9253 #, gcc-internal-format msgid "" "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' " "Extension" msgstr "" -#: config/riscv/riscv.cc:8923 +#: config/riscv/riscv.cc:9259 #, gcc-internal-format msgid "Current RISC-V GCC does not support RVV in big-endian mode" msgstr "" -#: config/riscv/riscv.cc:8949 config/riscv/riscv.cc:8952 +#: config/riscv/riscv.cc:9285 config/riscv/riscv.cc:9288 #, gcc-internal-format msgid "code model %qs with %qs" msgstr "" -#: config/riscv/riscv.cc:8981 +#: config/riscv/riscv.cc:9317 #, gcc-internal-format msgid "requested ABI requires %<-march%> to subsume the %qc extension" msgstr "" -#: config/riscv/riscv.cc:8988 +#: config/riscv/riscv.cc:9324 #, gcc-internal-format msgid "rv32e requires ilp32e ABI" msgstr "" -#: config/riscv/riscv.cc:8990 +#: config/riscv/riscv.cc:9326 #, gcc-internal-format msgid "rv64e requires lp64e ABI" msgstr "" -#: config/riscv/riscv.cc:8997 +#: config/riscv/riscv.cc:9333 #, gcc-internal-format msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e" msgstr "" -#: config/riscv/riscv.cc:9001 +#: config/riscv/riscv.cc:9337 #, gcc-internal-format msgid "ABI requires %<-march=rv%d%>" msgstr "" -#: config/riscv/riscv.cc:9011 +#: config/riscv/riscv.cc:9347 #, gcc-internal-format msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d" msgstr "" -#: config/riscv/riscv.cc:9024 +#: config/riscv/riscv.cc:9360 #, gcc-internal-format msgid "" "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-" "attribute%>]" msgstr "" -#: config/riscv/riscv.cc:9051 config/rs6000/rs6000.cc:4558 +#: config/riscv/riscv.cc:9387 config/rs6000/rs6000.cc:4510 #, gcc-internal-format msgid "%qs is not a valid base register in %qs" msgstr "" -#: config/riscv/riscv.cc:9065 config/rs6000/rs6000.cc:4541 +#: config/riscv/riscv.cc:9401 config/rs6000/rs6000.cc:4493 #, gcc-internal-format msgid "%qs is not a valid number in %qs" msgstr "" -#: config/riscv/riscv.cc:9459 +#: config/riscv/riscv.cc:9799 #, gcc-internal-format msgid "%qs function cannot have different interrupt type" msgstr "" -#: config/riscv/riscv.cc:9985 +#: config/riscv/riscv.cc:10325 #, gcc-internal-format msgid "cannot allocate vl register for %qs on this target" msgstr "" @@ -46129,52 +46369,52 @@ msgstr "" msgid "junk at end of %<#pragma longcall%>" msgstr "" -#: config/rs6000/rs6000-c.cc:1249 config/rs6000/rs6000-c.cc:1650 +#: config/rs6000/rs6000-c.cc:1237 config/rs6000/rs6000-c.cc:1638 #, gcc-internal-format msgid "builtin %qs only accepts 1 argument" msgstr "" -#: config/rs6000/rs6000-c.cc:1256 config/rs6000/rs6000-c.cc:1342 +#: config/rs6000/rs6000-c.cc:1244 config/rs6000/rs6000-c.cc:1330 #, gcc-internal-format msgid "builtin %qs only accepts 2 arguments" msgstr "" -#: config/rs6000/rs6000-c.cc:1520 +#: config/rs6000/rs6000-c.cc:1508 #, gcc-internal-format msgid "builtin %qs only accepts 3 arguments" msgstr "" -#: config/rs6000/rs6000-c.cc:1746 +#: config/rs6000/rs6000-c.cc:1734 #, gcc-internal-format msgid "" "% is deprecated for little endian; use assignment for unaligned " "loads and stores" msgstr "" -#: config/rs6000/rs6000-c.cc:1750 +#: config/rs6000/rs6000-c.cc:1738 #, gcc-internal-format msgid "" "% is deprecated for little endian; use assignment for unaligned " "loads and stores" msgstr "" -#: config/rs6000/rs6000-c.cc:1836 +#: config/rs6000/rs6000-c.cc:1824 #, gcc-internal-format msgid "" "passing argument %d of %qE discards %qs qualifier from pointer target type" msgstr "" -#: config/rs6000/rs6000-c.cc:1892 config/rs6000/rs6000-c.cc:2075 +#: config/rs6000/rs6000-c.cc:1880 config/rs6000/rs6000-c.cc:2063 #, gcc-internal-format msgid "invalid parameter combination for AltiVec intrinsic %qs" msgstr "" -#: config/rs6000/rs6000-c.cc:2064 +#: config/rs6000/rs6000-c.cc:2052 #, gcc-internal-format msgid "overloaded builtin %qs is implemented by builtin %qs" msgstr "" -#: config/rs6000/rs6000-c.cc:2068 +#: config/rs6000/rs6000-c.cc:2056 #, gcc-internal-format msgid "%qs is not supported in this compiler configuration" msgstr "" @@ -46251,45 +46491,45 @@ msgstr "" msgid "Stack frame larger than 2G is not supported for %<-fsplit-stack%>" msgstr "" -#: config/rs6000/rs6000.cc:3226 config/rs6000/rs6000.cc:3229 -#: config/rs6000/rs6000.cc:3232 +#: config/rs6000/rs6000.cc:3228 config/rs6000/rs6000.cc:3231 +#: config/rs6000/rs6000.cc:3234 #, gcc-internal-format msgid "%qs requires %qs or %qs" msgstr "" -#: config/rs6000/rs6000.cc:3333 +#: config/rs6000/rs6000.cc:3335 #, gcc-internal-format msgid "%qs requires PowerPC64 architecture, enabling" msgstr "" -#: config/rs6000/rs6000.cc:3449 +#: config/rs6000/rs6000.cc:3451 #, gcc-internal-format msgid "%<-mcall-aixdesc%> incompatible with %<-mabi=elfv2%>" msgstr "" -#: config/rs6000/rs6000.cc:3498 +#: config/rs6000/rs6000.cc:3500 #, gcc-internal-format msgid "%qs unsupported for this ABI" msgstr "" -#: config/rs6000/rs6000.cc:3626 +#: config/rs6000/rs6000.cc:3628 #, gcc-internal-format msgid "" "%qs is not supported for 64-bit Darwin; it is incompatible with the " "installed C and C++ libraries" msgstr "" -#: config/rs6000/rs6000.cc:3787 +#: config/rs6000/rs6000.cc:3789 #, gcc-internal-format msgid "AltiVec not supported in this target" msgstr "" -#: config/rs6000/rs6000.cc:3804 +#: config/rs6000/rs6000.cc:3806 #, gcc-internal-format msgid "%qs is not supported on little endian systems" msgstr "" -#: config/rs6000/rs6000.cc:3886 +#: config/rs6000/rs6000.cc:3887 #, gcc-internal-format msgid "" "power9 target option is incompatible with %<%s=%> for less than " @@ -46298,191 +46538,189 @@ msgstr "" #. Enforce that none of the ISA_3_0_MASKS_SERVER flags #. were explicitly cleared. -#: config/rs6000/rs6000.cc:3894 +#: config/rs6000/rs6000.cc:3895 #, gcc-internal-format msgid "%qs incompatible with explicitly disabled options" msgstr "" #. TARGET_VSX = 1 implies Power 7 and newer -#: config/rs6000/rs6000.cc:3928 config/rs6000/rs6000.cc:3936 -#: config/rs6000/rs6000.cc:3943 config/rs6000/rs6000.cc:3950 -#: config/rs6000/rs6000.cc:3958 config/rs6000/rs6000.cc:3977 -#: config/rs6000/rs6000.cc:4039 config/rs6000/rs6000.cc:4066 -#: config/rs6000/rs6000.cc:4093 config/rs6000/rs6000.cc:4108 -#: config/rs6000/rs6000.cc:4116 config/rs6000/rs6000.cc:4240 -#: config/rs6000/rs6000.cc:4253 config/rs6000/rs6000.cc:4262 -#: config/rs6000/rs6000.cc:4400 config/rs6000/rs6000.cc:4413 -#: config/rs6000/rs6000.cc:4434 +#: config/rs6000/rs6000.cc:3929 config/rs6000/rs6000.cc:3937 +#: config/rs6000/rs6000.cc:3950 config/rs6000/rs6000.cc:4012 +#: config/rs6000/rs6000.cc:4045 config/rs6000/rs6000.cc:4060 +#: config/rs6000/rs6000.cc:4068 config/rs6000/rs6000.cc:4192 +#: config/rs6000/rs6000.cc:4205 config/rs6000/rs6000.cc:4214 +#: config/rs6000/rs6000.cc:4352 config/rs6000/rs6000.cc:4365 +#: config/rs6000/rs6000.cc:4386 #, gcc-internal-format msgid "%qs requires %qs" msgstr "" -#: config/rs6000/rs6000.cc:4144 +#: config/rs6000/rs6000.cc:4096 #, gcc-internal-format msgid "target attribute or pragma changes % size" msgstr "" -#: config/rs6000/rs6000.cc:4165 +#: config/rs6000/rs6000.cc:4117 #, gcc-internal-format msgid "%qs requires full ISA 2.06 support" msgstr "" -#: config/rs6000/rs6000.cc:4178 +#: config/rs6000/rs6000.cc:4130 #, gcc-internal-format msgid "Using IEEE extended precision %" msgstr "" -#: config/rs6000/rs6000.cc:4181 +#: config/rs6000/rs6000.cc:4133 #, gcc-internal-format msgid "Using IBM extended precision %" msgstr "" -#: config/rs6000/rs6000.cc:4200 +#: config/rs6000/rs6000.cc:4152 #, gcc-internal-format msgid "%qs requires VSX support" msgstr "" -#: config/rs6000/rs6000.cc:4209 +#: config/rs6000/rs6000.cc:4161 #, gcc-internal-format msgid "The %<-mfloat128%> option may not be fully supported" msgstr "" -#: config/rs6000/rs6000.cc:4232 +#: config/rs6000/rs6000.cc:4184 #, gcc-internal-format msgid "%qs requires full ISA 3.0 support" msgstr "" -#: config/rs6000/rs6000.cc:4319 +#: config/rs6000/rs6000.cc:4271 #, gcc-internal-format msgid "unknown vectorization library ABI type in %<-mveclibabi=%s%>" msgstr "" -#: config/rs6000/rs6000.cc:4332 config/rs6000/rs6000.cc:4347 +#: config/rs6000/rs6000.cc:4284 config/rs6000/rs6000.cc:4299 #, gcc-internal-format msgid "target attribute or pragma changes AltiVec ABI" msgstr "" -#: config/rs6000/rs6000.cc:4360 +#: config/rs6000/rs6000.cc:4312 #, gcc-internal-format msgid "target attribute or pragma changes darwin64 ABI" msgstr "" -#: config/rs6000/rs6000.cc:4566 +#: config/rs6000/rs6000.cc:4518 #, gcc-internal-format msgid "%qs needs a valid base register" msgstr "" -#: config/rs6000/rs6000.cc:4863 +#: config/rs6000/rs6000.cc:4815 #, gcc-internal-format msgid "unknown option for %<%s=%s%>" msgstr "" -#: config/rs6000/rs6000.cc:4892 +#: config/rs6000/rs6000.cc:4844 #, gcc-internal-format msgid "%qs is deprecated and not recommended in any circumstances" msgstr "" -#: config/rs6000/rs6000.cc:11218 +#: config/rs6000/rs6000.cc:11170 #, gcc-internal-format msgid "%qs is an opaque type, and you cannot set it to other values" msgstr "" -#: config/rs6000/rs6000.cc:18063 +#: config/rs6000/rs6000.cc:18015 #, gcc-internal-format msgid "no profiling of 64-bit code for this ABI" msgstr "" -#: config/rs6000/rs6000.cc:20459 +#: config/rs6000/rs6000.cc:20411 #, gcc-internal-format msgid "" "you cannot take the address of a nested function if you use the %qs option" msgstr "" -#: config/rs6000/rs6000.cc:20541 +#: config/rs6000/rs6000.cc:20493 #, gcc-internal-format msgid "use of % in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.cc:20543 +#: config/rs6000/rs6000.cc:20495 #, gcc-internal-format msgid "use of boolean types in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.cc:20545 +#: config/rs6000/rs6000.cc:20497 #, gcc-internal-format msgid "use of % in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.cc:20547 +#: config/rs6000/rs6000.cc:20499 #, gcc-internal-format msgid "use of decimal floating-point types in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.cc:20553 +#: config/rs6000/rs6000.cc:20505 #, gcc-internal-format msgid "use of % in AltiVec types is invalid for 64-bit code without %qs" msgstr "" -#: config/rs6000/rs6000.cc:20556 +#: config/rs6000/rs6000.cc:20508 #, gcc-internal-format msgid "use of % in AltiVec types is deprecated; use %" msgstr "" -#: config/rs6000/rs6000.cc:20561 +#: config/rs6000/rs6000.cc:20513 #, gcc-internal-format msgid "use of % in AltiVec types is invalid without %qs" msgstr "" -#: config/rs6000/rs6000.cc:20564 +#: config/rs6000/rs6000.cc:20516 #, gcc-internal-format msgid "use of % in AltiVec types is invalid without %qs" msgstr "" -#: config/rs6000/rs6000.cc:24705 +#: config/rs6000/rs6000.cc:24657 #, gcc-internal-format msgid "invalid cpu %qs for %s%qs%s" msgstr "" -#: config/rs6000/rs6000.cc:24708 +#: config/rs6000/rs6000.cc:24660 #, gcc-internal-format msgid "%s%qs%s is not allowed" msgstr "" -#: config/rs6000/rs6000.cc:24710 +#: config/rs6000/rs6000.cc:24662 #, gcc-internal-format msgid "%s%qs%s is invalid" msgstr "" -#: config/rs6000/rs6000.cc:25239 +#: config/rs6000/rs6000.cc:25183 #, gcc-internal-format msgid "%<-mno-%s%> turns off %<-m%s%>" msgstr "" -#: config/rs6000/rs6000.cc:25398 +#: config/rs6000/rs6000.cc:25342 #, gcc-internal-format msgid "" "% attribute needs GLIBC (2.23 and newer) that exports " "hardware capability bits" msgstr "" -#: config/rs6000/rs6000.cc:25687 +#: config/rs6000/rs6000.cc:25631 #, gcc-internal-format msgid "Virtual function multiversioning not supported" msgstr "" -#: config/rs6000/rs6000.cc:28825 +#: config/rs6000/rs6000.cc:28769 #, gcc-internal-format msgid "" "the result for the xxspltidp instruction is undefined for subnormal input " "values" msgstr "" -#: config/rs6000/rs6000.cc:29303 +#: config/rs6000/rs6000.cc:29247 #, gcc-internal-format msgid "type %<__vector_quad%> requires the %qs option" msgstr "" -#: config/rs6000/rs6000.cc:29308 +#: config/rs6000/rs6000.cc:29252 #, gcc-internal-format msgid "type %<__vector_pair%> requires the %qs option" msgstr "" @@ -46528,7 +46766,7 @@ msgstr "" msgid "builtin %qs can only be used on vector types" msgstr "" -#: config/s390/s390-c.cc:718 config/s390/s390.cc:997 +#: config/s390/s390-c.cc:718 config/s390/s390.cc:999 #, gcc-internal-format msgid "constant value required for builtin %qF argument %d" msgstr "" @@ -46600,83 +46838,83 @@ msgstr "" msgid "constant argument %d for builtin %qF is out of range for target type" msgstr "" -#: config/s390/s390.cc:846 +#: config/s390/s390.cc:848 #, gcc-internal-format msgid "constant argument %d for builtin %qF is invalid (%s)" msgstr "" -#: config/s390/s390.cc:850 +#: config/s390/s390.cc:852 #, gcc-internal-format msgid "constant argument %d for builtin %qF is out of range (0-%wu)" msgstr "" -#: config/s390/s390.cc:866 +#: config/s390/s390.cc:868 #, gcc-internal-format msgid "constant argument %d for builtin %qF is out of range (%wd-%wd)" msgstr "" -#: config/s390/s390.cc:915 +#: config/s390/s390.cc:917 #, gcc-internal-format msgid "" "builtin %qF is not supported without %<-mhtm%> (default with %<-" "march=zEC12%> and higher)" msgstr "" -#: config/s390/s390.cc:921 +#: config/s390/s390.cc:923 #, gcc-internal-format msgid "builtin %qF requires %<-mvx%> (default with %<-march=z13%> and higher)" msgstr "" -#: config/s390/s390.cc:928 +#: config/s390/s390.cc:930 #, gcc-internal-format msgid "Builtin %qF requires z14 or higher" msgstr "" -#: config/s390/s390.cc:934 +#: config/s390/s390.cc:936 #, gcc-internal-format msgid "Builtin %qF requires z15 or higher" msgstr "" -#: config/s390/s390.cc:953 +#: config/s390/s390.cc:955 #, gcc-internal-format msgid "unresolved overloaded builtin" msgstr "" -#: config/s390/s390.cc:960 +#: config/s390/s390.cc:962 #, gcc-internal-format msgid "bad builtin icode" msgstr "" -#: config/s390/s390.cc:1094 +#: config/s390/s390.cc:1096 #, gcc-internal-format msgid "invalid argument %d for builtin %qF" msgstr "" -#: config/s390/s390.cc:1195 +#: config/s390/s390.cc:1197 #, 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.cc:1285 +#: config/s390/s390.cc:1287 #, gcc-internal-format msgid "argument to %qE attribute is not (keep|thunk|thunk-extern)" msgstr "" -#: config/s390/s390.cc:10581 +#: config/s390/s390.cc:10593 #, gcc-internal-format msgid "total size of local variables exceeds architecture limit" msgstr "" -#: config/s390/s390.cc:11988 +#: config/s390/s390.cc:12000 #, 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.cc:12004 +#: config/s390/s390.cc:12016 #, gcc-internal-format msgid "" "frame size of function %qs is %wd bytes which is more than half the stack " @@ -46684,156 +46922,156 @@ msgid "" "function" msgstr "" -#: config/s390/s390.cc:12032 +#: config/s390/s390.cc:12044 #, gcc-internal-format msgid "frame size of %qs is %wd bytes" msgstr "" -#: config/s390/s390.cc:12036 +#: config/s390/s390.cc:12048 #, gcc-internal-format msgid "%qs uses dynamic stack allocation" msgstr "" -#: config/s390/s390.cc:12783 +#: config/s390/s390.cc:12795 #, gcc-internal-format msgid "" "parameter passing for argument of type %qT with zero-width bit fields " "members changed in GCC 12" msgstr "" -#: config/s390/s390.cc:13742 +#: config/s390/s390.cc:13754 #, gcc-internal-format msgid "nested functions cannot be profiled with %<-mfentry%> on s390" msgstr "" -#: config/s390/s390.cc:16035 +#: config/s390/s390.cc:16056 #, gcc-internal-format msgid "64-bit ABI not supported in ESA/390 mode" msgstr "" -#: config/s390/s390.cc:16042 +#: config/s390/s390.cc:16063 #, gcc-internal-format msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>" msgstr "" -#: config/s390/s390.cc:16077 +#: config/s390/s390.cc:16098 #, gcc-internal-format, gfc-internal-format msgid "hardware vector support not available on %s" msgstr "" -#: config/s390/s390.cc:16080 +#: config/s390/s390.cc:16101 #, gcc-internal-format msgid "hardware vector support not available with %<-msoft-float%>" msgstr "" -#: config/s390/s390.cc:16109 +#: config/s390/s390.cc:16130 #, gcc-internal-format, gfc-internal-format msgid "hardware decimal floating-point instructions not available on %s" msgstr "" -#: config/s390/s390.cc:16113 +#: config/s390/s390.cc:16134 #, gcc-internal-format msgid "" "hardware decimal floating-point instructions not available in ESA/390 mode" msgstr "" -#: config/s390/s390.cc:16125 +#: config/s390/s390.cc:16146 #, gcc-internal-format msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>" msgstr "" -#: config/s390/s390.cc:16134 +#: config/s390/s390.cc:16155 #, gcc-internal-format msgid "" "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in " "combination" msgstr "" -#: config/s390/s390.cc:16140 +#: config/s390/s390.cc:16161 #, gcc-internal-format msgid "stack size must be greater than the stack guard value" msgstr "" -#: config/s390/s390.cc:16142 +#: config/s390/s390.cc:16163 #, gcc-internal-format msgid "stack size must not be greater than 64k" msgstr "" -#: config/s390/s390.cc:16145 +#: config/s390/s390.cc:16166 #, gcc-internal-format msgid "%<-mstack-guard%> implies use of %<-mstack-size%>" msgstr "" -#: config/s390/s390.cc:16158 +#: config/s390/s390.cc:16179 #, gcc-internal-format msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095" msgstr "" -#: config/s390/s390.cc:16161 +#: config/s390/s390.cc:16182 #, gcc-internal-format msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095" msgstr "" -#: config/s390/s390.cc:16164 +#: config/s390/s390.cc:16185 #, gcc-internal-format msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095" msgstr "" -#: config/s390/s390.cc:16167 +#: config/s390/s390.cc:16188 #, gcc-internal-format msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095" msgstr "" -#: config/s390/s390.cc:16231 +#: config/s390/s390.cc:16252 #, gcc-internal-format msgid "%<-mfentry%> is supported only for 64-bit CPUs" msgstr "" #. argument is not a plain number -#: config/s390/s390.cc:16267 +#: config/s390/s390.cc:16288 #, gcc-internal-format msgid "arguments to %qs should be non-negative integers" msgstr "" -#: config/s390/s390.cc:16274 +#: config/s390/s390.cc:16295 #, gcc-internal-format msgid "argument to %qs is too large (max. %d)" msgstr "" -#: config/s390/s390.cc:16305 +#: config/s390/s390.cc:16326 #, gcc-internal-format msgid "" "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>" msgstr "" -#: config/s390/s390.cc:16466 config/s390/s390.cc:16516 -#: config/s390/s390.cc:16533 +#: config/s390/s390.cc:16487 config/s390/s390.cc:16537 +#: config/s390/s390.cc:16554 #, gcc-internal-format msgid "attribute % argument %qs is unknown" msgstr "" #. Value is not allowed for the target attribute. -#: config/s390/s390.cc:16472 +#: config/s390/s390.cc:16493 #, gcc-internal-format msgid "value %qs is not supported by attribute %" msgstr "" -#: config/s390/s390.cc:17531 +#: config/s390/s390.cc:17552 #, gcc-internal-format msgid "invalid cc output constraint: %qs" msgstr "" -#: config/s390/s390.cc:17536 +#: config/s390/s390.cc:17557 #, gcc-internal-format msgid "multiple cc output constraints not supported" msgstr "" -#: config/s390/s390.cc:17541 +#: config/s390/s390.cc:17562 #, gcc-internal-format msgid "% specifier for cc output conflicts with % clobber list" msgstr "" -#: config/s390/s390.cc:17547 +#: config/s390/s390.cc:17568 #, gcc-internal-format msgid "invalid type for cc output constraint" msgstr "" @@ -47258,8 +47496,8 @@ msgstr "" msgid "attribute %qs applies to array types only" msgstr "" -#: c/c-convert.cc:104 c/c-typeck.cc:2351 c/c-typeck.cc:13556 cp/typeck.cc:2497 -#: cp/typeck.cc:9510 cp/typeck.cc:10298 d/d-convert.cc:262 +#: c/c-convert.cc:104 c/c-typeck.cc:2351 c/c-typeck.cc:13556 cp/typeck.cc:2498 +#: cp/typeck.cc:9511 cp/typeck.cc:10299 d/d-convert.cc:262 #, gcc-internal-format msgid "void value not ignored as it ought to be" msgstr "" @@ -47723,7 +47961,7 @@ msgstr "" msgid "%qE defined as wrong kind of tag" msgstr "" -#: c/c-decl.cc:4669 cp/tree.cc:5024 +#: c/c-decl.cc:4669 cp/tree.cc:5036 #, gcc-internal-format msgid "%qE attribute applied to %qD with void return type" msgstr "" @@ -47875,7 +48113,7 @@ msgstr "" msgid "%<[*]%> not allowed in other than function prototype scope" msgstr "" -#: c/c-decl.cc:5475 cp/decl2.cc:1852 cp/name-lookup.cc:8767 +#: c/c-decl.cc:5475 cp/decl2.cc:1852 cp/name-lookup.cc:8804 #, gcc-internal-format msgid "% not allowed to be specified in this context" msgstr "" @@ -47885,7 +48123,7 @@ msgstr "" msgid "%q+D is usually a function" msgstr "" -#: c/c-decl.cc:5560 c/c-decl.cc:10575 cp/decl.cc:17926 +#: c/c-decl.cc:5560 c/c-decl.cc:10575 cp/decl.cc:17935 #, gcc-internal-format msgid "no previous declaration for %qD" msgstr "" @@ -47961,7 +48199,7 @@ msgstr "" msgid "uninitialized % is invalid in C++" msgstr "" -#: c/c-decl.cc:6108 cp/decl.cc:9047 +#: c/c-decl.cc:6108 cp/decl.cc:9043 #, gcc-internal-format msgid "%q+D in declare target directive does not have mappable type" msgstr "" @@ -48146,7 +48384,7 @@ msgstr "" msgid "storage class specified for unnamed parameter" msgstr "" -#: c/c-decl.cc:7066 cp/decl.cc:13130 +#: c/c-decl.cc:7066 cp/decl.cc:13134 #, gcc-internal-format msgid "storage class specified for typename" msgstr "" @@ -48319,7 +48557,7 @@ msgstr "" msgid "function definition has qualified void return type" msgstr "" -#: c/c-decl.cc:7645 cp/decl.cc:13539 +#: c/c-decl.cc:7645 cp/decl.cc:13543 #, gcc-internal-format msgid "type qualifiers ignored on function return type" msgstr "" @@ -48446,7 +48684,7 @@ msgstr "" msgid "a member of a structure or union cannot have a variably modified type" msgstr "" -#: c/c-decl.cc:7942 cp/decl.cc:12010 +#: c/c-decl.cc:7942 cp/decl.cc:12014 #, gcc-internal-format msgid "variable or field %qE declared void" msgstr "" @@ -48516,12 +48754,12 @@ msgstr "" msgid "% object has variably modified type" msgstr "" -#: c/c-decl.cc:8226 c/c-parser.cc:12258 +#: c/c-decl.cc:8226 c/c-parser.cc:12277 #, gcc-internal-format msgid "invalid qualifiers for % object" msgstr "" -#: c/c-decl.cc:8232 c/c-parser.cc:12261 +#: c/c-decl.cc:8232 c/c-parser.cc:12280 #, gcc-internal-format msgid "invalid qualifiers for field of % object" msgstr "" @@ -48705,7 +48943,7 @@ msgstr "" msgid "struct has no members" msgstr "" -#: c/c-decl.cc:9476 cp/decl.cc:14566 +#: c/c-decl.cc:9476 cp/decl.cc:14570 #, gcc-internal-format msgid "flexible array member in union" msgstr "" @@ -48767,7 +49005,7 @@ msgstr "" msgid "% declared with but defined without fixed underlying type" msgstr "" -#: c/c-decl.cc:9996 cp/decl.cc:17200 m2/gm2-gcc/m2type.cc:2073 +#: c/c-decl.cc:9996 cp/decl.cc:17209 m2/gm2-gcc/m2type.cc:2073 #, gcc-internal-format msgid "specified mode too small for enumerated values" msgstr "" @@ -48817,7 +49055,7 @@ msgstr "" msgid "ISO C restricts enumerator values to range of % before C23" msgstr "" -#: c/c-decl.cc:10442 cp/decl.cc:5981 cp/decl.cc:17785 +#: c/c-decl.cc:10442 cp/decl.cc:5981 cp/decl.cc:17794 #, gcc-internal-format msgid "inline function %qD given attribute %qs" msgstr "" @@ -48959,12 +49197,12 @@ msgstr "" msgid "argument %qD doesn%'t match prototype" msgstr "" -#: c/c-decl.cc:11231 cp/decl.cc:18722 +#: c/c-decl.cc:11231 cp/decl.cc:18731 #, gcc-internal-format msgid "no return statement in function returning non-void" msgstr "" -#: c/c-decl.cc:11250 cp/decl.cc:18793 +#: c/c-decl.cc:11250 cp/decl.cc:18802 #, gcc-internal-format msgid "parameter %qD set but not used" msgstr "" @@ -49049,7 +49287,7 @@ msgstr "" msgid "two or more data types in declaration specifiers" msgstr "" -#: c/c-decl.cc:11832 cp/parser.cc:34248 +#: c/c-decl.cc:11832 cp/parser.cc:34265 #, gcc-internal-format msgid "% is too long for GCC" msgstr "" @@ -49059,7 +49297,7 @@ msgstr "" msgid "ISO C90 does not support %" msgstr "" -#: c/c-decl.cc:12082 c/c-parser.cc:11621 +#: c/c-decl.cc:12082 c/c-parser.cc:11619 #, gcc-internal-format msgid "ISO C90 does not support complex types" msgstr "" @@ -49104,7 +49342,7 @@ msgstr "" msgid "ISO C does not support decimal floating-point before C23" msgstr "" -#: c/c-decl.cc:12597 c/c-decl.cc:12974 c/c-parser.cc:10628 +#: c/c-decl.cc:12597 c/c-decl.cc:12974 c/c-parser.cc:10626 #, gcc-internal-format msgid "fixed-point types not supported for this target" msgstr "" @@ -49166,12 +49404,12 @@ msgstr "" msgid "%qE used with %" msgstr "" -#: c/c-decl.cc:12798 c/c-parser.cc:3100 c/c-parser.cc:4427 c/c-parser.cc:9962 +#: c/c-decl.cc:12798 c/c-parser.cc:3100 c/c-parser.cc:4427 c/c-parser.cc:9960 #, gcc-internal-format msgid "ISO C99 does not support %qE" msgstr "" -#: c/c-decl.cc:12801 c/c-parser.cc:3103 c/c-parser.cc:4430 c/c-parser.cc:9965 +#: c/c-decl.cc:12801 c/c-parser.cc:3103 c/c-parser.cc:4430 c/c-parser.cc:9963 #, gcc-internal-format msgid "ISO C90 does not support %qE" msgstr "" @@ -49251,41 +49489,41 @@ msgstr "" msgid "ISO C does not support %<%s_BitInt(%d)%> before C23" msgstr "" -#: c/c-decl.cc:13545 cp/semantics.cc:6316 +#: c/c-decl.cc:13545 cp/semantics.cc:6385 #, gcc-internal-format msgid "" "%<#pragma omp declare reduction%> combiner refers to variable %qD which is " "not % nor %" msgstr "" -#: c/c-decl.cc:13549 cp/semantics.cc:6320 +#: c/c-decl.cc:13549 cp/semantics.cc:6389 #, gcc-internal-format msgid "" "%<#pragma omp declare reduction%> initializer refers to variable %qD which " "is not % nor %" msgstr "" -#: c/c-fold.cc:389 c/c-typeck.cc:12830 cp/typeck.cc:5734 +#: c/c-fold.cc:389 c/c-typeck.cc:12830 cp/typeck.cc:5735 #, gcc-internal-format msgid "left shift of negative value" msgstr "" -#: c/c-fold.cc:399 c/c-typeck.cc:12839 cp/typeck.cc:5742 +#: c/c-fold.cc:399 c/c-typeck.cc:12839 cp/typeck.cc:5743 #, gcc-internal-format msgid "left shift count is negative" msgstr "" -#: c/c-fold.cc:400 c/c-typeck.cc:12766 cp/typeck.cc:5681 +#: c/c-fold.cc:400 c/c-typeck.cc:12766 cp/typeck.cc:5682 #, gcc-internal-format msgid "right shift count is negative" msgstr "" -#: c/c-fold.cc:409 c/c-typeck.cc:12858 cp/typeck.cc:5750 +#: c/c-fold.cc:409 c/c-typeck.cc:12858 cp/typeck.cc:5751 #, gcc-internal-format msgid "left shift count >= width of type" msgstr "" -#: c/c-fold.cc:410 c/c-typeck.cc:12790 cp/typeck.cc:5692 +#: c/c-fold.cc:410 c/c-typeck.cc:12790 cp/typeck.cc:5693 #, gcc-internal-format msgid "right shift count >= width of type" msgstr "" @@ -49315,7 +49553,7 @@ msgstr "" msgid "to match this %qs" msgstr "" -#: c/c-parser.cc:1409 cp/parser.cc:34485 +#: c/c-parser.cc:1409 cp/parser.cc:34502 #, gcc-internal-format msgid "expected end of line" msgstr "" @@ -49325,13 +49563,13 @@ msgstr "" msgid "ISO C forbids an empty translation unit" msgstr "" -#: c/c-parser.cc:1917 c/c-parser.cc:1926 c/c-parser.cc:25332 cp/parser.cc:49026 -#: cp/semantics.cc:3564 cp/semantics.cc:3573 +#: c/c-parser.cc:1917 c/c-parser.cc:1926 c/c-parser.cc:25405 cp/parser.cc:49092 +#: cp/semantics.cc:3629 cp/semantics.cc:3638 #, gcc-internal-format msgid "%qs without corresponding %qs" msgstr "" -#: c/c-parser.cc:2022 c/c-parser.cc:13376 +#: c/c-parser.cc:2022 c/c-parser.cc:13395 #, gcc-internal-format msgid "ISO C does not allow extra %<;%> outside of a function" msgstr "" @@ -49366,9 +49604,9 @@ msgstr "" msgid "unknown type name %qE" msgstr "" -#: c/c-parser.cc:2315 c/c-parser.cc:14736 c/c-parser.cc:22962 -#: c/c-parser.cc:23561 c/c-parser.cc:24147 cp/parser.cc:46386 -#: cp/parser.cc:51112 +#: c/c-parser.cc:2315 c/c-parser.cc:14755 c/c-parser.cc:23035 +#: c/c-parser.cc:23634 c/c-parser.cc:24220 cp/parser.cc:46430 +#: cp/parser.cc:51178 #, gcc-internal-format msgid "expected declaration specifiers" msgstr "" @@ -49398,7 +49636,7 @@ msgstr "" msgid "expected %<;%>, identifier or %<(%>" msgstr "" -#: c/c-parser.cc:2439 cp/parser.cc:36739 cp/parser.cc:36811 +#: c/c-parser.cc:2439 cp/parser.cc:36756 cp/parser.cc:36828 #, gcc-internal-format msgid "prefix attributes are ignored for methods" msgstr "" @@ -49413,12 +49651,12 @@ msgstr "" msgid "unexpected attribute" msgstr "" -#: c/c-parser.cc:2505 c/c-parser.cc:7727 cp/parser.cc:12966 cp/parser.cc:13190 +#: c/c-parser.cc:2505 c/c-parser.cc:7725 cp/parser.cc:12966 cp/parser.cc:13190 #, gcc-internal-format msgid "% attribute not followed by %<;%>" msgstr "" -#: c/c-parser.cc:2508 c/c-parser.cc:7710 cp/cp-gimplify.cc:3637 +#: c/c-parser.cc:2508 c/c-parser.cc:7708 cp/cp-gimplify.cc:3647 #, gcc-internal-format msgid "% attribute not followed by %<;%>" msgstr "" @@ -49481,7 +49719,7 @@ msgstr "" msgid "ISO C forbids nested functions" msgstr "" -#: c/c-parser.cc:3126 c/c-parser.cc:8889 c/c-parser.cc:14809 +#: c/c-parser.cc:3126 c/c-parser.cc:8887 c/c-parser.cc:14828 #, gcc-internal-format msgid "expected string literal" msgstr "" @@ -49511,7 +49749,7 @@ msgstr "" msgid "static assertion failed: %E" msgstr "" -#: c/c-parser.cc:3164 cp/semantics.cc:11678 +#: c/c-parser.cc:3164 cp/semantics.cc:11747 #, gcc-internal-format msgid "static assertion failed" msgstr "" @@ -49571,21 +49809,21 @@ msgstr "" msgid "empty enum is invalid" msgstr "" -#: c/c-parser.cc:3805 c/c-parser.cc:4859 c/c-parser.cc:5717 c/c-parser.cc:5734 -#: c/c-parser.cc:6263 c/c-parser.cc:6995 c/c-parser.cc:8756 c/c-parser.cc:8839 -#: c/c-parser.cc:9819 c/c-parser.cc:10136 c/c-parser.cc:10145 -#: c/c-parser.cc:10688 c/c-parser.cc:10878 c/c-parser.cc:10906 -#: c/c-parser.cc:12079 c/c-parser.cc:12652 c/c-parser.cc:12690 -#: c/c-parser.cc:12958 c/c-parser.cc:13009 c/c-parser.cc:13169 -#: c/c-parser.cc:13199 c/c-parser.cc:13207 c/c-parser.cc:13236 -#: c/c-parser.cc:13249 c/c-parser.cc:13555 c/c-parser.cc:13679 -#: c/c-parser.cc:14264 c/c-parser.cc:14317 c/c-parser.cc:14333 -#: c/c-parser.cc:14379 c/c-parser.cc:15367 c/c-parser.cc:15412 -#: c/c-parser.cc:18265 c/c-parser.cc:18402 c/c-parser.cc:19159 -#: c/c-parser.cc:21755 c/c-parser.cc:24625 c/c-parser.cc:24814 +#: c/c-parser.cc:3805 c/c-parser.cc:4859 c/c-parser.cc:5716 c/c-parser.cc:5733 +#: c/c-parser.cc:6261 c/c-parser.cc:6993 c/c-parser.cc:8754 c/c-parser.cc:8837 +#: c/c-parser.cc:9817 c/c-parser.cc:10134 c/c-parser.cc:10143 +#: c/c-parser.cc:10686 c/c-parser.cc:10876 c/c-parser.cc:10904 +#: c/c-parser.cc:12098 c/c-parser.cc:12671 c/c-parser.cc:12709 +#: c/c-parser.cc:12977 c/c-parser.cc:13028 c/c-parser.cc:13188 +#: c/c-parser.cc:13218 c/c-parser.cc:13226 c/c-parser.cc:13255 +#: c/c-parser.cc:13268 c/c-parser.cc:13574 c/c-parser.cc:13698 +#: c/c-parser.cc:14283 c/c-parser.cc:14336 c/c-parser.cc:14352 +#: c/c-parser.cc:14398 c/c-parser.cc:15386 c/c-parser.cc:15431 +#: c/c-parser.cc:18314 c/c-parser.cc:18451 c/c-parser.cc:19208 +#: c/c-parser.cc:21828 c/c-parser.cc:24698 c/c-parser.cc:24887 #: c/gimple-parser.cc:1895 c/gimple-parser.cc:1942 cp/parser.cc:9524 -#: cp/parser.cc:34488 cp/parser.cc:37716 cp/parser.cc:40816 cp/parser.cc:41008 -#: cp/parser.cc:47959 cp/parser.cc:50378 +#: cp/parser.cc:34505 cp/parser.cc:37733 cp/parser.cc:40860 cp/parser.cc:41052 +#: cp/parser.cc:48025 cp/parser.cc:50444 #, gcc-internal-format msgid "expected identifier" msgstr "" @@ -49620,7 +49858,7 @@ msgstr "" msgid "no semicolon at end of struct or union" msgstr "" -#: c/c-parser.cc:4192 c/c-parser.cc:6029 +#: c/c-parser.cc:4192 c/c-parser.cc:6027 #, gcc-internal-format msgid "expected specifier-qualifier-list" msgstr "" @@ -49665,98 +49903,98 @@ msgstr "" msgid "parentheses must be omitted if attribute argument list is empty" msgstr "" -#: c/c-parser.cc:5562 cp/parser.cc:29822 +#: c/c-parser.cc:5562 cp/parser.cc:29828 #, gcc-internal-format msgid "expected OpenMP directive name" msgstr "" -#: c/c-parser.cc:5609 cp/parser.cc:29878 +#: c/c-parser.cc:5609 cp/parser.cc:29884 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:5755 cp/parser.cc:30047 +#: c/c-parser.cc:5754 cp/parser.cc:30053 #, gcc-internal-format msgid "% attribute requires argument" msgstr "" -#: c/c-parser.cc:5771 cp/parser.cc:30063 +#: c/c-parser.cc:5770 cp/parser.cc:30069 #, gcc-internal-format msgid "%qE attribute does not take any arguments" msgstr "" -#: c/c-parser.cc:5893 +#: c/c-parser.cc:5891 #, gcc-internal-format msgid "ISO C does not support %<[[]]%> attributes before C23" msgstr "" -#: c/c-parser.cc:6106 c/c-parser.cc:6169 c/c-typeck.cc:8822 +#: c/c-parser.cc:6104 c/c-parser.cc:6167 c/c-typeck.cc:8822 #, gcc-internal-format msgid "" "variable-sized object may not be initialized except with an empty initializer" msgstr "" -#: c/c-parser.cc:6163 +#: c/c-parser.cc:6161 #, gcc-internal-format msgid "ISO C forbids empty initializer braces before C23" msgstr "" -#: c/c-parser.cc:6227 +#: c/c-parser.cc:6225 #, gcc-internal-format msgid "obsolete use of designated initializer with %<:%>" msgstr "" -#: c/c-parser.cc:6383 +#: c/c-parser.cc:6381 #, gcc-internal-format msgid "ISO C forbids specifying range of elements to initialize" msgstr "" -#: c/c-parser.cc:6395 +#: c/c-parser.cc:6393 #, gcc-internal-format msgid "ISO C90 forbids specifying subobject to initialize" msgstr "" -#: c/c-parser.cc:6403 +#: c/c-parser.cc:6401 #, gcc-internal-format msgid "obsolete use of designated initializer without %<=%>" msgstr "" -#: c/c-parser.cc:6567 cp/parser.cc:13308 +#: c/c-parser.cc:6565 cp/parser.cc:13308 #, gcc-internal-format msgid "inner loops must be perfectly nested in %<#pragma acc loop%>" msgstr "" -#: c/c-parser.cc:6574 cp/parser.cc:13315 +#: c/c-parser.cc:6572 cp/parser.cc:13315 #, gcc-internal-format msgid "inner loops must be perfectly nested with % clause" msgstr "" -#: c/c-parser.cc:6581 cp/parser.cc:13322 +#: c/c-parser.cc:6579 cp/parser.cc:13322 #, gcc-internal-format msgid "" "inner loops must be perfectly nested with % % clause" msgstr "" -#: c/c-parser.cc:6638 c/c-parser.cc:6793 cp/parser.cc:12240 cp/parser.cc:12390 -#: cp/parser.cc:48555 +#: c/c-parser.cc:6636 c/c-parser.cc:6791 cp/parser.cc:12240 cp/parser.cc:12390 +#: cp/parser.cc:48621 #, gcc-internal-format msgid "" "mixing OpenMP directives with attribute and pragma syntax on the same " "statement" msgstr "" -#: c/c-parser.cc:6646 cp/parser.cc:12248 +#: c/c-parser.cc:6644 cp/parser.cc:12248 #, gcc-internal-format msgid "OpenMP % attribute on a statement" msgstr "" -#: c/c-parser.cc:6670 c/c-parser.cc:6889 c/c-parser.cc:25015 cp/parser.cc:12272 -#: cp/parser.cc:48535 cp/parser.cc:48675 +#: c/c-parser.cc:6668 c/c-parser.cc:6887 c/c-parser.cc:25088 cp/parser.cc:12272 +#: cp/parser.cc:48601 cp/parser.cc:48741 #, gcc-internal-format msgid "unknown OpenMP directive name in %qs attribute argument" msgstr "" -#: c/c-parser.cc:6762 cp/parser.cc:12359 +#: c/c-parser.cc:6760 cp/parser.cc:12359 #, gcc-internal-format msgid "" "OpenMP construct among % attributes requires all %" msgstr "" -#: c/c-parser.cc:6770 cp/parser.cc:12367 +#: c/c-parser.cc:6768 cp/parser.cc:12367 #, gcc-internal-format msgid "" "multiple OpenMP standalone directives among % attributes " "must be all within the same %" msgstr "" -#: c/c-parser.cc:6782 cp/parser.cc:12379 +#: c/c-parser.cc:6780 cp/parser.cc:12379 #, gcc-internal-format msgid "" "standalone OpenMP directives in % attribute can only appear " "on an empty statement" msgstr "" -#: c/c-parser.cc:6901 cp/parser.cc:12509 +#: c/c-parser.cc:6899 cp/parser.cc:12509 #, gcc-internal-format msgid "" "mixing OpenMP directives with attribute and pragma syntax on the same " "declaration" msgstr "" -#: c/c-parser.cc:7010 +#: c/c-parser.cc:7008 #, gcc-internal-format msgid "ISO C forbids label declarations" msgstr "" -#: c/c-parser.cc:7016 c/c-parser.cc:7197 c/c-parser.cc:7222 +#: c/c-parser.cc:7014 c/c-parser.cc:7195 c/c-parser.cc:7220 #: c/gimple-parser.cc:424 #, gcc-internal-format msgid "expected declaration or statement" msgstr "" -#: c/c-parser.cc:7126 +#: c/c-parser.cc:7124 #, gcc-internal-format msgid "" "a label can only be part of a statement and a declaration is not a statement" msgstr "" -#: c/c-parser.cc:7146 c/c-parser.cc:7188 +#: c/c-parser.cc:7144 c/c-parser.cc:7186 #, gcc-internal-format msgid "ISO C90 forbids mixed declarations and code" msgstr "" -#: c/c-parser.cc:7230 +#: c/c-parser.cc:7228 #, gcc-internal-format msgid "expected %<}%> before %" msgstr "" -#: c/c-parser.cc:7235 cp/parser.cc:13369 +#: c/c-parser.cc:7233 cp/parser.cc:13369 #, gcc-internal-format msgid "% without a previous %" msgstr "" -#: c/c-parser.cc:7266 +#: c/c-parser.cc:7264 #, gcc-internal-format msgid "label at end of compound statement" msgstr "" @@ -49826,1292 +50064,1307 @@ 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.cc:7315 c/c-parser.cc:7319 c/c-parser.cc:7752 +#: c/c-parser.cc:7313 c/c-parser.cc:7317 c/c-parser.cc:7750 #: c/gimple-parser.cc:2434 cp/parser.cc:12872 #, gcc-internal-format msgid "expected statement" msgstr "" -#: c/c-parser.cc:7374 +#: c/c-parser.cc:7372 #, gcc-internal-format msgid "expected %<:%> or %<...%>" msgstr "" -#: c/c-parser.cc:7402 +#: c/c-parser.cc:7400 #, gcc-internal-format msgid "" "GNU-style attribute between label and declaration appertains to the label" msgstr "" -#: c/c-parser.cc:7634 +#: c/c-parser.cc:7632 #, gcc-internal-format msgid "expected identifier or %<*%>" msgstr "" -#: c/c-parser.cc:7735 +#: c/c-parser.cc:7733 #, gcc-internal-format msgid "" "only attribute % or % can be applied to a null " "statement" msgstr "" -#: c/c-parser.cc:7860 cp/parser.cc:14984 +#: c/c-parser.cc:7858 cp/parser.cc:14984 #, gcc-internal-format msgid "suggest braces around empty body in an % statement" msgstr "" -#: c/c-parser.cc:7902 cp/parser.cc:14987 +#: c/c-parser.cc:7900 cp/parser.cc:14987 #, gcc-internal-format msgid "suggest braces around empty body in an % statement" msgstr "" -#: c/c-parser.cc:8033 cp/parser.cc:13782 +#: c/c-parser.cc:8031 cp/parser.cc:13782 #, gcc-internal-format msgid "suggest explicit braces to avoid ambiguous %" msgstr "" -#: c/c-parser.cc:8122 c/c-parser.cc:8187 c/c-parser.cc:8306 cp/parser.cc:14614 +#: c/c-parser.cc:8120 c/c-parser.cc:8185 c/c-parser.cc:8304 cp/parser.cc:14614 #, gcc-internal-format msgid "loop not permitted in intervening code in OpenMP loop body" msgstr "" -#: c/c-parser.cc:8195 +#: c/c-parser.cc:8193 #, gcc-internal-format msgid "suggest braces around empty body in % statement" msgstr "" -#: c/c-parser.cc:8340 c/c-parser.cc:8372 +#: c/c-parser.cc:8338 c/c-parser.cc:8370 #, gcc-internal-format msgid "multiple iterating variables in fast enumeration" msgstr "" -#: c/c-parser.cc:8395 +#: c/c-parser.cc:8393 #, gcc-internal-format msgid "invalid iterating variable in fast enumeration" msgstr "" -#: c/c-parser.cc:8419 cp/parser.cc:14069 +#: c/c-parser.cc:8417 cp/parser.cc:14069 #, gcc-internal-format msgid "missing loop condition in loop with % pragma" msgstr "" -#: c/c-parser.cc:8425 cp/parser.cc:14075 +#: c/c-parser.cc:8423 cp/parser.cc:14075 #, gcc-internal-format msgid "missing loop condition in loop with % pragma" msgstr "" -#: c/c-parser.cc:8466 +#: c/c-parser.cc:8464 #, gcc-internal-format msgid "missing collection in fast enumeration" msgstr "" -#: c/c-parser.cc:8588 c/c-parser.cc:8599 c/c-parser.cc:8610 +#: c/c-parser.cc:8586 c/c-parser.cc:8597 c/c-parser.cc:8608 #, gcc-internal-format msgid "duplicate % qualifier %qE" msgstr "" -#: c/c-parser.cc:8589 c/c-parser.cc:8600 c/c-parser.cc:8611 cp/parser.cc:22744 +#: c/c-parser.cc:8587 c/c-parser.cc:8598 c/c-parser.cc:8609 cp/parser.cc:22744 #: cp/parser.cc:22761 cp/parser.cc:22775 #, gcc-internal-format msgid "first seen here" msgstr "" -#: c/c-parser.cc:8620 +#: c/c-parser.cc:8618 #, gcc-internal-format msgid "%qE is not a valid % qualifier" msgstr "" -#: c/c-parser.cc:8670 +#: c/c-parser.cc:8668 #, gcc-internal-format msgid "expected %<:%> or %<)%>" msgstr "" -#: c/c-parser.cc:8969 cp/parser.cc:4706 +#: c/c-parser.cc:8967 cp/parser.cc:4706 #, gcc-internal-format msgid "a wide string is invalid in this context" msgstr "" -#: c/c-parser.cc:9177 +#: c/c-parser.cc:9175 #, gcc-internal-format msgid "ISO C forbids omitting the middle term of a % expression" msgstr "" #. Location of the binary operator. #. Quiet warning. -#: c/c-parser.cc:9401 cp/typeck.cc:5513 +#: c/c-parser.cc:9399 cp/typeck.cc:5514 #, gcc-internal-format msgid "" "division % does not compute the number of array " "elements" msgstr "" -#: c/c-parser.cc:9407 cp/typeck.cc:5518 +#: c/c-parser.cc:9405 cp/typeck.cc:5519 #, gcc-internal-format msgid "first % operand was declared here" msgstr "" -#: c/c-parser.cc:9678 +#: c/c-parser.cc:9676 #, gcc-internal-format msgid "storage class specifier in cast" msgstr "" -#: c/c-parser.cc:9681 +#: c/c-parser.cc:9679 #, gcc-internal-format msgid "alignment specified for type name in cast" msgstr "" -#: c/c-parser.cc:9782 +#: c/c-parser.cc:9780 #, gcc-internal-format msgid "traditional C rejects the unary plus operator" msgstr "" -#: c/c-parser.cc:9914 +#: c/c-parser.cc:9912 #, gcc-internal-format msgid "storage class specifier in %" msgstr "" -#: c/c-parser.cc:9917 +#: c/c-parser.cc:9915 #, gcc-internal-format msgid "alignment specified for type name in %" msgstr "" -#: c/c-parser.cc:9933 +#: c/c-parser.cc:9931 #, gcc-internal-format msgid "% applied to a bit-field" msgstr "" -#: c/c-parser.cc:10006 +#: c/c-parser.cc:10004 #, gcc-internal-format msgid "storage class specifier in %qE" msgstr "" -#: c/c-parser.cc:10009 +#: c/c-parser.cc:10007 #, gcc-internal-format msgid "alignment specified for type name in %qE" msgstr "" -#: c/c-parser.cc:10033 +#: c/c-parser.cc:10031 #, gcc-internal-format msgid "ISO C does not allow %<%E (expression)%>" msgstr "" -#: c/c-parser.cc:10186 +#: c/c-parser.cc:10184 #, gcc-internal-format msgid "cannot take address of %qs" msgstr "" -#: c/c-parser.cc:10269 +#: c/c-parser.cc:10267 #, gcc-internal-format msgid "ISO C99 does not support %<_Generic%>" msgstr "" -#: c/c-parser.cc:10272 +#: c/c-parser.cc:10270 #, gcc-internal-format msgid "ISO C90 does not support %<_Generic%>" msgstr "" -#: c/c-parser.cc:10341 +#: c/c-parser.cc:10339 #, gcc-internal-format msgid "%<_Generic%> association has function type" msgstr "" -#: c/c-parser.cc:10344 +#: c/c-parser.cc:10342 #, gcc-internal-format msgid "%<_Generic%> association has incomplete type" msgstr "" -#: c/c-parser.cc:10348 +#: c/c-parser.cc:10346 #, gcc-internal-format msgid "%<_Generic%> association has variable length type" msgstr "" -#: c/c-parser.cc:10382 +#: c/c-parser.cc:10380 #, gcc-internal-format msgid "duplicate % case in %<_Generic%>" msgstr "" -#: c/c-parser.cc:10383 +#: c/c-parser.cc:10381 #, gcc-internal-format msgid "original % is here" msgstr "" -#: c/c-parser.cc:10391 +#: c/c-parser.cc:10389 #, gcc-internal-format msgid "%<_Generic%> specifies two compatible types" msgstr "" -#: c/c-parser.cc:10392 +#: c/c-parser.cc:10390 #, gcc-internal-format msgid "compatible type is here" msgstr "" -#: c/c-parser.cc:10415 +#: c/c-parser.cc:10413 #, gcc-internal-format msgid "%<_Generic%> selector matches multiple associations" msgstr "" -#: c/c-parser.cc:10417 +#: c/c-parser.cc:10415 #, gcc-internal-format msgid "other match is here" msgstr "" -#: c/c-parser.cc:10442 +#: c/c-parser.cc:10440 #, gcc-internal-format msgid "" "%<_Generic%> selector of type %qT is not compatible with any association" msgstr "" -#: c/c-parser.cc:10463 +#: c/c-parser.cc:10461 #, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> is not a function pointer" msgstr "" -#: c/c-parser.cc:10471 +#: c/c-parser.cc:10469 #, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> is unprototyped" msgstr "" -#: c/c-parser.cc:10477 +#: c/c-parser.cc:10475 #, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> has variable arguments" msgstr "" -#: c/c-parser.cc:10493 +#: c/c-parser.cc:10491 #, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> has no arguments" msgstr "" -#: c/c-parser.cc:10516 c/c-parser.cc:10520 +#: c/c-parser.cc:10514 c/c-parser.cc:10518 #, gcc-internal-format msgid "ISO C does not support %qs predefined identifier" msgstr "" -#: c/c-parser.cc:10524 +#: c/c-parser.cc:10522 #, gcc-internal-format msgid "ISO C90 does not support %<__func__%> predefined identifier" msgstr "" -#: c/c-parser.cc:10702 c/c-parser.cc:12146 c/c-parser.cc:12168 -#: c/c-parser.cc:21172 c/gimple-parser.cc:1811 c/gimple-parser.cc:2451 -#: cp/parser.cc:43040 +#: c/c-parser.cc:10700 c/c-parser.cc:12165 c/c-parser.cc:12187 +#: c/c-parser.cc:21245 c/gimple-parser.cc:1811 c/gimple-parser.cc:2451 +#: cp/parser.cc:43084 #, gcc-internal-format msgid "expected expression" msgstr "" -#: c/c-parser.cc:10724 +#: c/c-parser.cc:10722 #, gcc-internal-format msgid "braced-group within expression allowed only inside a function" msgstr "" -#: c/c-parser.cc:10739 +#: c/c-parser.cc:10737 #, gcc-internal-format msgid "ISO C forbids braced-groups within expressions" msgstr "" -#: c/c-parser.cc:10933 +#: c/c-parser.cc:10931 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_choose_expr%>" msgstr "" -#: c/c-parser.cc:10949 +#: c/c-parser.cc:10947 #, gcc-internal-format msgid "first argument to %<__builtin_choose_expr%> not a constant" msgstr "" -#: c/c-parser.cc:11019 c/c-parser.cc:11036 c/c-parser.cc:11043 +#: c/c-parser.cc:11017 c/c-parser.cc:11034 c/c-parser.cc:11041 #, gcc-internal-format msgid "too few arguments to %<__builtin_tgmath%>" msgstr "" -#: c/c-parser.cc:11064 +#: c/c-parser.cc:11062 #, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments" msgstr "" -#: c/c-parser.cc:11108 c/c-parser.cc:11118 +#: c/c-parser.cc:11106 c/c-parser.cc:11116 #, gcc-internal-format msgid "" "invalid type-generic return type for argument %u of %<__builtin_tgmath%>" msgstr "" -#: c/c-parser.cc:11140 c/c-parser.cc:11150 +#: c/c-parser.cc:11138 c/c-parser.cc:11148 #, gcc-internal-format msgid "" "invalid type-generic type for argument %u of argument %u of " "%<__builtin_tgmath%>" msgstr "" -#: c/c-parser.cc:11183 +#: c/c-parser.cc:11181 #, gcc-internal-format msgid "function arguments of %<__builtin_tgmath%> all have the same type" msgstr "" -#: c/c-parser.cc:11202 +#: c/c-parser.cc:11200 #, gcc-internal-format msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter" msgstr "" -#: c/c-parser.cc:11250 +#: c/c-parser.cc:11248 #, gcc-internal-format msgid "" "duplicate type-generic parameter type for function argument %u of " "%<__builtin_tgmath%>" msgstr "" -#: c/c-parser.cc:11273 +#: c/c-parser.cc:11271 #, gcc-internal-format msgid "bad return type for function argument %u of %<__builtin_tgmath%>" msgstr "" -#: c/c-parser.cc:11290 +#: c/c-parser.cc:11288 #, gcc-internal-format msgid "" "bad type for argument %u of function argument %u of %<__builtin_tgmath%>" msgstr "" -#: c/c-parser.cc:11329 +#: c/c-parser.cc:11327 #, gcc-internal-format, gfc-internal-format msgid "invalid type of argument %u of type-generic function" msgstr "" -#: c/c-parser.cc:11340 +#: c/c-parser.cc:11338 #, gcc-internal-format, gfc-internal-format msgid "" "decimal floating-point argument %u to complex-only type-generic function" msgstr "" -#: c/c-parser.cc:11348 +#: c/c-parser.cc:11346 #, gcc-internal-format, gfc-internal-format msgid "decimal floating-point argument %u to binary-only type-generic function" msgstr "" -#: c/c-parser.cc:11356 c/c-parser.cc:11386 +#: c/c-parser.cc:11354 c/c-parser.cc:11384 #, gcc-internal-format msgid "" "both complex and decimal floating-point arguments to type-generic function" msgstr "" -#: c/c-parser.cc:11364 c/c-parser.cc:11406 +#: c/c-parser.cc:11362 c/c-parser.cc:11404 #, gcc-internal-format msgid "" "both binary and decimal floating-point arguments to type-generic function" msgstr "" -#: c/c-parser.cc:11378 +#: c/c-parser.cc:11376 #, gcc-internal-format, gfc-internal-format msgid "complex argument %u to decimal-only type-generic function" msgstr "" -#: c/c-parser.cc:11398 +#: c/c-parser.cc:11396 #, gcc-internal-format, gfc-internal-format msgid "binary argument %u to decimal-only type-generic function" msgstr "" -#: c/c-parser.cc:11501 +#: c/c-parser.cc:11499 #, gcc-internal-format msgid "no matching function for type-generic call" msgstr "" -#: c/c-parser.cc:11542 +#: c/c-parser.cc:11540 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>" msgstr "" -#: c/c-parser.cc:11555 +#: c/c-parser.cc:11553 #, gcc-internal-format msgid "" "first argument to %<__builtin_call_with_static_chain%> must be a call " "expression" msgstr "" -#: c/c-parser.cc:11559 +#: c/c-parser.cc:11557 #, gcc-internal-format msgid "" "second argument to %<__builtin_call_with_static_chain%> must be a pointer " "type" msgstr "" -#: c/c-parser.cc:11585 +#: c/c-parser.cc:11583 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_complex%>" msgstr "" -#: c/c-parser.cc:11607 +#: c/c-parser.cc:11605 #, gcc-internal-format msgid "%<__builtin_complex%> operand not of real binary floating-point type" msgstr "" -#: c/c-parser.cc:11616 +#: c/c-parser.cc:11614 #, gcc-internal-format msgid "%<__builtin_complex%> operands of different types" msgstr "" -#: c/c-parser.cc:11661 c/c-parser.cc:11690 cp/parser.cc:7764 +#: c/c-parser.cc:11659 c/c-parser.cc:11688 cp/parser.cc:7764 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_shuffle%>" msgstr "" -#: c/c-parser.cc:11851 +#: c/c-parser.cc:11849 #, gcc-internal-format msgid "wrong number of arguments to %qs" msgstr "" -#: c/c-parser.cc:11860 +#: c/c-parser.cc:11858 #, gcc-internal-format msgid "%qs operand not an integral type" msgstr "" -#: c/c-parser.cc:12123 cp/parser.cc:6134 +#: c/c-parser.cc:11864 +#, gcc-internal-format +msgid "argument %u in call to function %qs has enumerated type" +msgstr "" + +#: c/c-parser.cc:11871 +#, gcc-internal-format +msgid "argument %u in call to function %qs has boolean type" +msgstr "" + +#: c/c-parser.cc:11878 +#, gcc-internal-format +msgid "argument 1 in call to function %qs has signed type" +msgstr "" + +#: c/c-parser.cc:12142 cp/parser.cc:6134 #, gcc-internal-format msgid "% may only be used in OpenMP % clause" msgstr "" -#: c/c-parser.cc:12133 +#: c/c-parser.cc:12152 #, gcc-internal-format msgid "ISO C does not support %qs before C23" msgstr "" -#: c/c-parser.cc:12221 +#: c/c-parser.cc:12240 #, gcc-internal-format msgid "%qT declared in % compound literal" msgstr "" -#: c/c-parser.cc:12226 +#: c/c-parser.cc:12245 #, gcc-internal-format msgid "%qT defined in % compound literal" msgstr "" -#: c/c-parser.cc:12241 +#: c/c-parser.cc:12260 #, gcc-internal-format msgid "compound literal has variable size" msgstr "" -#: c/c-parser.cc:12246 +#: c/c-parser.cc:12265 #, gcc-internal-format msgid "compound literal has function type" msgstr "" -#: c/c-parser.cc:12277 +#: c/c-parser.cc:12296 #, gcc-internal-format msgid "compound literal qualified by address-space qualifier" msgstr "" -#: c/c-parser.cc:12282 +#: c/c-parser.cc:12301 #, gcc-internal-format msgid "ISO C90 forbids compound literals" msgstr "" -#: c/c-parser.cc:12284 +#: c/c-parser.cc:12303 #, gcc-internal-format msgid "ISO C forbids storage class specifiers in compound literals before C23" msgstr "" -#: c/c-parser.cc:12298 +#: c/c-parser.cc:12317 #, gcc-internal-format msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal" msgstr "" -#: c/c-parser.cc:12373 +#: c/c-parser.cc:12392 #, gcc-internal-format msgid "" "using integer absolute value function %qD when argument is of floating-point " "type %qT" msgstr "" -#: c/c-parser.cc:12378 +#: c/c-parser.cc:12397 #, gcc-internal-format msgid "" "using integer absolute value function %qD when argument is of complex type " "%qT" msgstr "" -#: c/c-parser.cc:12386 +#: c/c-parser.cc:12405 #, gcc-internal-format msgid "taking the absolute value of unsigned type %qT has no effect" msgstr "" -#: c/c-parser.cc:12397 +#: c/c-parser.cc:12416 #, gcc-internal-format msgid "" "using floating-point absolute value function %qD when argument is of integer " "type %qT" msgstr "" -#: c/c-parser.cc:12401 +#: c/c-parser.cc:12420 #, gcc-internal-format msgid "" "using floating-point absolute value function %qD when argument is of decimal " "floating-point type %qT" msgstr "" -#: c/c-parser.cc:12406 +#: c/c-parser.cc:12425 #, gcc-internal-format msgid "" "using floating-point absolute value function %qD when argument is of complex " "type %qT" msgstr "" -#: c/c-parser.cc:12419 +#: c/c-parser.cc:12438 #, gcc-internal-format msgid "" "using complex absolute value function %qD when argument is of integer type " "%qT" msgstr "" -#: c/c-parser.cc:12423 +#: c/c-parser.cc:12442 #, gcc-internal-format msgid "" "using complex absolute value function %qD when argument is of floating-point " "type %qT" msgstr "" -#: c/c-parser.cc:12440 +#: c/c-parser.cc:12459 #, gcc-internal-format msgid "" "using decimal floating-point absolute value function %qD when argument is of " "integer type %qT" msgstr "" -#: c/c-parser.cc:12445 +#: c/c-parser.cc:12464 #, gcc-internal-format msgid "" "using decimal floating-point absolute value function %qD when argument is of " "floating-point type %qT" msgstr "" -#: c/c-parser.cc:12450 +#: c/c-parser.cc:12469 #, gcc-internal-format msgid "" "using decimal floating-point absolute value function %qD when argument is of " "complex type %qT" msgstr "" -#: c/c-parser.cc:12476 +#: c/c-parser.cc:12495 #, gcc-internal-format msgid "" "absolute value function %qD given an argument of type %qT but has parameter " "of type %qT which may cause truncation of value" msgstr "" -#: c/c-parser.cc:12606 cp/parser.cc:8164 +#: c/c-parser.cc:12625 cp/parser.cc:8164 #, gcc-internal-format msgid "calls to the OpenMP runtime API are not permitted in intervening code" msgstr "" -#: c/c-parser.cc:12980 +#: c/c-parser.cc:12999 #, gcc-internal-format msgid "expected identifier or %<)%>" msgstr "" -#: c/c-parser.cc:13076 +#: c/c-parser.cc:13095 #, gcc-internal-format msgid "extra semicolon" msgstr "" -#: c/c-parser.cc:13324 +#: c/c-parser.cc:13343 #, gcc-internal-format msgid "extra semicolon in method definition specified" msgstr "" -#: c/c-parser.cc:13456 +#: c/c-parser.cc:13475 #, gcc-internal-format msgid "method attributes must be specified at the end only" msgstr "" -#: c/c-parser.cc:13476 +#: c/c-parser.cc:13495 #, gcc-internal-format msgid "expected %<;%> or %<{%> after method attribute definition" msgstr "" -#: c/c-parser.cc:13598 +#: c/c-parser.cc:13617 #, gcc-internal-format msgid "objective-c method declaration is expected" msgstr "" -#: c/c-parser.cc:14050 +#: c/c-parser.cc:14069 #, gcc-internal-format msgid "no type or storage class may be specified here," msgstr "" -#: c/c-parser.cc:14118 cp/parser.cc:37573 +#: c/c-parser.cc:14137 cp/parser.cc:37590 #, gcc-internal-format msgid "empty property attribute list" msgstr "" -#: c/c-parser.cc:14132 cp/parser.cc:37586 +#: c/c-parser.cc:14151 cp/parser.cc:37603 #, gcc-internal-format msgid "missing property attribute" msgstr "" -#: c/c-parser.cc:14171 +#: c/c-parser.cc:14190 #, gcc-internal-format msgid "unknown property attribute %<%s%s%>" msgstr "" -#: c/c-parser.cc:14174 cp/parser.cc:37623 +#: c/c-parser.cc:14193 cp/parser.cc:37640 #, gcc-internal-format msgid "unknown property attribute" msgstr "" -#: c/c-parser.cc:14183 cp/parser.cc:37632 +#: c/c-parser.cc:14202 cp/parser.cc:37649 #, gcc-internal-format msgid "expected %<=%> after Objective-C %qE" msgstr "" -#: c/c-parser.cc:14194 cp/parser.cc:37646 +#: c/c-parser.cc:14213 cp/parser.cc:37663 #, gcc-internal-format msgid "expected %qE selector name" msgstr "" -#: c/c-parser.cc:14210 cp/parser.cc:37665 +#: c/c-parser.cc:14229 cp/parser.cc:37682 #, gcc-internal-format msgid "setter method names must terminate with %<:%>" msgstr "" -#: c/c-parser.cc:14434 cp/semantics.cc:13110 +#: c/c-parser.cc:14453 cp/semantics.cc:13234 #, gcc-internal-format msgid "" "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a " "non-negative integral constant less than %u" msgstr "" -#: c/c-parser.cc:14470 cp/parser.cc:50733 +#: c/c-parser.cc:14489 cp/parser.cc:50799 #, gcc-internal-format msgid "intervening code must not contain OpenMP directives" msgstr "" -#: c/c-parser.cc:14490 c/c-parser.cc:23558 c/c-parser.cc:23867 -#: c/c-parser.cc:23930 c/c-parser.cc:24040 cp/parser.cc:46383 -#: cp/parser.cc:46731 cp/parser.cc:46846 cp/parser.cc:46945 cp/parser.cc:50754 -#: cp/parser.cc:50770 cp/parser.cc:50786 cp/parser.cc:50803 cp/parser.cc:50820 -#: cp/parser.cc:50837 cp/parser.cc:50864 cp/parser.cc:50878 cp/parser.cc:50903 -#: cp/parser.cc:50917 +#: c/c-parser.cc:14509 c/c-parser.cc:23631 c/c-parser.cc:23940 +#: c/c-parser.cc:24003 c/c-parser.cc:24113 cp/parser.cc:46427 +#: cp/parser.cc:46775 cp/parser.cc:46890 cp/parser.cc:46989 cp/parser.cc:50820 +#: cp/parser.cc:50836 cp/parser.cc:50852 cp/parser.cc:50869 cp/parser.cc:50886 +#: cp/parser.cc:50903 cp/parser.cc:50930 cp/parser.cc:50944 cp/parser.cc:50969 +#: cp/parser.cc:50983 #, gcc-internal-format msgid "%<#pragma %s%> may only be used in compound statements" msgstr "" -#: c/c-parser.cc:14513 cp/parser.cc:50892 +#: c/c-parser.cc:14532 cp/parser.cc:50958 #, gcc-internal-format msgid "%<#pragma acc routine%> must be at file scope" msgstr "" -#: c/c-parser.cc:14603 cp/parser.cc:51016 +#: c/c-parser.cc:14622 cp/parser.cc:51082 #, gcc-internal-format msgid "" "%<#pragma omp scan%> may only be used in a loop construct with % " "% clause" msgstr "" -#: c/c-parser.cc:14610 cp/parser.cc:51022 +#: c/c-parser.cc:14629 cp/parser.cc:51088 #, gcc-internal-format msgid "" "%<#pragma omp section%> may only be used in %<#pragma omp sections%> " "construct" msgstr "" -#: c/c-parser.cc:14622 c/c-parser.cc:14638 +#: c/c-parser.cc:14641 c/c-parser.cc:14657 #, gcc-internal-format msgid "%<#pragma %s%> may only be used at file scope" msgstr "" -#: c/c-parser.cc:14705 cp/parser.cc:51099 +#: c/c-parser.cc:14724 cp/parser.cc:51165 #, gcc-internal-format msgid "for, while or do statement expected" msgstr "" -#: c/c-parser.cc:14718 cp/parser.cc:50744 +#: c/c-parser.cc:14737 cp/parser.cc:50810 #, gcc-internal-format msgid "%<#pragma GCC pch_preprocess%> must be first" msgstr "" -#: c/c-parser.cc:15085 c/c-parser.cc:18983 c/c-parser.cc:20640 -#: c/c-parser.cc:20659 c/c-parser.cc:20910 c/c-parser.cc:20968 -#: c/c-parser.cc:20975 c/c-parser.cc:20982 c/c-parser.cc:25881 -#: c/c-parser.cc:25889 c/c-parser.cc:26159 c/c-parser.cc:26169 -#: c/c-parser.cc:26263 c/c-parser.cc:26270 c/c-parser.cc:26277 -#: cp/parser.cc:38096 cp/parser.cc:41648 cp/parser.cc:42566 cp/parser.cc:42603 -#: cp/parser.cc:42792 cp/parser.cc:42855 cp/parser.cc:42862 cp/parser.cc:42869 -#: cp/parser.cc:48178 cp/parser.cc:48185 cp/parser.cc:48192 cp/parser.cc:49639 -#: cp/parser.cc:49647 cp/parser.cc:49799 cp/parser.cc:49809 +#: c/c-parser.cc:15104 c/c-parser.cc:19032 c/c-parser.cc:20713 +#: c/c-parser.cc:20732 c/c-parser.cc:20983 c/c-parser.cc:21041 +#: c/c-parser.cc:21048 c/c-parser.cc:21055 c/c-parser.cc:25954 +#: c/c-parser.cc:25962 c/c-parser.cc:26232 c/c-parser.cc:26242 +#: c/c-parser.cc:26336 c/c-parser.cc:26343 c/c-parser.cc:26350 +#: cp/parser.cc:38113 cp/parser.cc:41692 cp/parser.cc:42610 cp/parser.cc:42647 +#: cp/parser.cc:42836 cp/parser.cc:42899 cp/parser.cc:42906 cp/parser.cc:42913 +#: cp/parser.cc:48244 cp/parser.cc:48251 cp/parser.cc:48258 cp/parser.cc:49705 +#: cp/parser.cc:49713 cp/parser.cc:49865 cp/parser.cc:49875 #, gcc-internal-format msgid "too many %qs clauses" msgstr "" -#: c/c-parser.cc:15112 +#: c/c-parser.cc:15131 #, gcc-internal-format msgid "expression must be integral" msgstr "" -#: c/c-parser.cc:15517 c/c-parser.cc:15529 +#: c/c-parser.cc:15536 c/c-parser.cc:15548 #, gcc-internal-format msgid "expected %<)%> or %<,%>" msgstr "" -#: c/c-parser.cc:15697 c/c-parser.cc:26565 +#: c/c-parser.cc:15746 c/c-parser.cc:26638 #, gcc-internal-format msgid "%qD is not a variable" msgstr "" -#: c/c-parser.cc:15701 cp/semantics.cc:8541 +#: c/c-parser.cc:15750 cp/semantics.cc:8610 #, gcc-internal-format msgid "%qD is not a pointer variable" msgstr "" -#: c/c-parser.cc:15743 cp/parser.cc:38950 +#: c/c-parser.cc:15792 cp/parser.cc:38994 #, gcc-internal-format msgid "collapse argument needs positive constant integer expression" msgstr "" -#: c/c-parser.cc:15838 cp/parser.cc:39028 +#: c/c-parser.cc:15887 cp/parser.cc:39072 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:15840 cp/parser.cc:39030 +#: c/c-parser.cc:15889 cp/parser.cc:39074 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:15925 cp/parser.cc:39100 +#: c/c-parser.cc:15974 cp/parser.cc:39144 #, gcc-internal-format msgid "expected constant logical expression" msgstr "" -#: c/c-parser.cc:16002 cp/parser.cc:39182 +#: c/c-parser.cc:16051 cp/parser.cc:39226 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:16022 c/c-parser.cc:23923 c/c-parser.cc:24033 -#: cp/parser.cc:39200 cp/parser.cc:46723 cp/parser.cc:46838 +#: c/c-parser.cc:16071 c/c-parser.cc:23996 c/c-parser.cc:24106 +#: cp/parser.cc:39244 cp/parser.cc:46767 cp/parser.cc:46882 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:16075 cp/parser.cc:39255 +#: c/c-parser.cc:16124 cp/parser.cc:39299 #, gcc-internal-format msgid "too many % clauses with %qs modifier" msgstr "" -#: c/c-parser.cc:16082 cp/parser.cc:39262 +#: c/c-parser.cc:16131 cp/parser.cc:39306 #, gcc-internal-format msgid "too many % clauses" msgstr "" -#: c/c-parser.cc:16084 cp/parser.cc:39264 +#: c/c-parser.cc:16133 cp/parser.cc:39308 #, gcc-internal-format msgid "too many % clauses without modifier" msgstr "" -#: c/c-parser.cc:16090 cp/parser.cc:39270 +#: c/c-parser.cc:16139 cp/parser.cc:39314 #, gcc-internal-format msgid "" "if any % clause has modifier, then all % clauses have to use " "modifier" msgstr "" -#: c/c-parser.cc:16195 c/c-parser.cc:16255 c/c-parser.cc:16317 -#: c/c-parser.cc:16365 c/c-parser.cc:16445 c/c-parser.cc:16842 -#: c/c-parser.cc:16924 c/c-parser.cc:17529 c/c-parser.cc:17674 -#: c/c-parser.cc:17742 c/c-parser.cc:18920 +#: c/c-parser.cc:16244 c/c-parser.cc:16304 c/c-parser.cc:16366 +#: c/c-parser.cc:16414 c/c-parser.cc:16494 c/c-parser.cc:16891 +#: c/c-parser.cc:16973 c/c-parser.cc:17578 c/c-parser.cc:17723 +#: c/c-parser.cc:17791 c/c-parser.cc:18969 #, gcc-internal-format msgid "expected integer expression" msgstr "" -#: c/c-parser.cc:16206 +#: c/c-parser.cc:16255 #, gcc-internal-format msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:16267 +#: c/c-parser.cc:16316 #, gcc-internal-format msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:16329 cp/semantics.cc:8755 +#: c/c-parser.cc:16378 cp/semantics.cc:8824 #, gcc-internal-format msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:16378 cp/semantics.cc:8785 +#: c/c-parser.cc:16427 cp/semantics.cc:8854 #, gcc-internal-format msgid "% value must be non-negative" msgstr "" -#: c/c-parser.cc:16412 cp/parser.cc:39496 +#: c/c-parser.cc:16461 cp/parser.cc:39540 #, gcc-internal-format msgid "expected constant integer expression with valid sync-hint value" msgstr "" -#: c/c-parser.cc:16484 cp/parser.cc:39566 +#: c/c-parser.cc:16533 cp/parser.cc:39610 #, gcc-internal-format msgid "" "expected %, %, %, %, %, % " "or %" msgstr "" -#: c/c-parser.cc:16552 +#: c/c-parser.cc:16601 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:16629 cp/parser.cc:39718 +#: c/c-parser.cc:16678 cp/parser.cc:39762 #, gcc-internal-format msgid "too many % clauses with %qs category" msgstr "" -#: c/c-parser.cc:16632 cp/parser.cc:39721 +#: c/c-parser.cc:16681 cp/parser.cc:39765 #, gcc-internal-format msgid "too many % clauses with unspecified category" msgstr "" -#: c/c-parser.cc:16716 cp/semantics.cc:7612 cp/semantics.cc:7667 +#: c/c-parser.cc:16765 cp/semantics.cc:7681 cp/semantics.cc:7736 #, gcc-internal-format msgid "%qs expression must be integral" msgstr "" -#: c/c-parser.cc:16728 c/c-parser.cc:16851 cp/semantics.cc:7646 -#: cp/semantics.cc:7681 +#: c/c-parser.cc:16777 c/c-parser.cc:16900 cp/semantics.cc:7715 +#: cp/semantics.cc:7750 #, gcc-internal-format msgid "%qs value must be positive" msgstr "" -#: c/c-parser.cc:16790 cp/parser.cc:38722 +#: c/c-parser.cc:16839 cp/parser.cc:38766 #, gcc-internal-format msgid "too many % arguments" msgstr "" -#: c/c-parser.cc:16824 cp/parser.cc:38755 +#: c/c-parser.cc:16873 cp/parser.cc:38799 #, gcc-internal-format msgid "unexpected argument" msgstr "" -#: c/c-parser.cc:16991 cp/semantics.cc:8972 +#: c/c-parser.cc:17040 cp/semantics.cc:9041 #, gcc-internal-format msgid "% argument needs positive integral constant" msgstr "" -#: c/c-parser.cc:17059 cp/parser.cc:41829 +#: c/c-parser.cc:17108 cp/parser.cc:41873 #, gcc-internal-format msgid "too many % clauses" msgstr "" -#: c/c-parser.cc:17101 cp/parser.cc:39771 +#: c/c-parser.cc:17150 cp/parser.cc:39815 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:17110 c/c-parser.cc:17116 cp/parser.cc:39780 -#: cp/parser.cc:39790 +#: c/c-parser.cc:17159 c/c-parser.cc:17165 cp/parser.cc:39824 +#: cp/parser.cc:39834 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:17152 cp/parser.cc:39830 +#: c/c-parser.cc:17201 cp/parser.cc:39874 #, gcc-internal-format msgid "expected %, % or %" msgstr "" -#: c/c-parser.cc:17205 cp/parser.cc:39898 +#: c/c-parser.cc:17254 cp/parser.cc:39942 #, gcc-internal-format msgid "ordered argument needs positive constant integer expression" msgstr "" -#: c/c-parser.cc:17330 c/c-parser.cc:25432 cp/parser.cc:49280 +#: c/c-parser.cc:17379 c/c-parser.cc:25505 cp/parser.cc:49346 #, gcc-internal-format msgid "" "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or " "identifier" msgstr "" -#: c/c-parser.cc:17452 cp/parser.cc:40156 +#: c/c-parser.cc:17501 cp/parser.cc:40200 #, gcc-internal-format msgid "both % and % modifiers specified" msgstr "" -#: c/c-parser.cc:17506 cp/parser.cc:40172 +#: c/c-parser.cc:17555 cp/parser.cc:40216 #, gcc-internal-format msgid "schedule % does not take a % parameter" msgstr "" -#: c/c-parser.cc:17510 cp/parser.cc:40175 +#: c/c-parser.cc:17559 cp/parser.cc:40219 #, gcc-internal-format msgid "schedule % does not take a % parameter" msgstr "" -#: c/c-parser.cc:17523 cp/semantics.cc:7728 +#: c/c-parser.cc:17572 cp/semantics.cc:7797 #, gcc-internal-format msgid "chunk size value must be positive" msgstr "" -#: c/c-parser.cc:17546 cp/parser.cc:40195 +#: c/c-parser.cc:17595 cp/parser.cc:40239 #, gcc-internal-format msgid "invalid schedule kind" msgstr "" -#: c/c-parser.cc:17685 c/c-parser.cc:17696 +#: c/c-parser.cc:17734 c/c-parser.cc:17745 #, gcc-internal-format msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:17704 cp/semantics.cc:7695 +#: c/c-parser.cc:17753 cp/semantics.cc:7764 #, gcc-internal-format msgid "% lower bound %qE bigger than upper bound %qE" msgstr "" -#: c/c-parser.cc:17753 cp/semantics.cc:7824 +#: c/c-parser.cc:17802 cp/semantics.cc:7893 #, gcc-internal-format msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:17798 cp/semantics.cc:7952 +#: c/c-parser.cc:17847 cp/semantics.cc:8021 #, gcc-internal-format msgid "" "% clause alignment expression must be positive constant integer " "expression" msgstr "" -#: c/c-parser.cc:17910 c/c-parser.cc:20627 cp/parser.cc:42558 +#: c/c-parser.cc:17959 c/c-parser.cc:20700 cp/parser.cc:42602 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:17917 +#: c/c-parser.cc:17966 #, gcc-internal-format msgid "duplicate %qs modifier" msgstr "" -#: c/c-parser.cc:17965 cp/semantics.cc:8087 +#: c/c-parser.cc:18014 cp/semantics.cc:8156 #, gcc-internal-format msgid "" "% clause allocator expression has type %qT rather than " "%" msgstr "" -#: c/c-parser.cc:17976 cp/semantics.cc:8042 cp/semantics.cc:8058 +#: c/c-parser.cc:18025 cp/semantics.cc:8111 cp/semantics.cc:8127 #, gcc-internal-format msgid "" "% clause % modifier argument needs to be positive " "constant power of two integer expression" msgstr "" -#: c/c-parser.cc:18095 cp/parser.cc:40642 +#: c/c-parser.cc:18144 cp/parser.cc:40686 #, gcc-internal-format msgid "multiple linear modifiers" msgstr "" -#: c/c-parser.cc:18107 cp/parser.cc:40655 +#: c/c-parser.cc:18156 cp/parser.cc:40699 #, gcc-internal-format msgid "multiple % modifiers" msgstr "" -#: c/c-parser.cc:18115 c/c-parser.cc:18143 +#: c/c-parser.cc:18164 c/c-parser.cc:18192 #, gcc-internal-format msgid "% clause step expression must be integral" msgstr "" -#: c/c-parser.cc:18195 +#: c/c-parser.cc:18244 #, gcc-internal-format msgid "" "% clause expression must be positive constant integer expression" msgstr "" -#: c/c-parser.cc:18234 +#: c/c-parser.cc:18283 #, gcc-internal-format msgid "" "% clause expression must be positive constant integer expression" msgstr "" -#: c/c-parser.cc:18594 cp/parser.cc:41202 +#: c/c-parser.cc:18643 cp/parser.cc:41246 #, gcc-internal-format msgid "% modifier incompatible with %qs" msgstr "" -#: c/c-parser.cc:18642 cp/parser.cc:41257 cp/parser.cc:41709 cp/parser.cc:41759 +#: c/c-parser.cc:18691 cp/parser.cc:41301 cp/parser.cc:41753 cp/parser.cc:41803 #, gcc-internal-format msgid "invalid depend kind" msgstr "" -#: c/c-parser.cc:18703 cp/parser.cc:41287 +#: c/c-parser.cc:18752 cp/parser.cc:41331 #, gcc-internal-format msgid "invalid doacross kind" msgstr "" -#: c/c-parser.cc:18772 cp/parser.cc:41430 +#: c/c-parser.cc:18821 cp/parser.cc:41474 #, gcc-internal-format msgid "too many % modifiers" msgstr "" -#: c/c-parser.cc:18782 cp/parser.cc:41443 +#: c/c-parser.cc:18831 cp/parser.cc:41487 #, gcc-internal-format msgid "too many % modifiers" msgstr "" -#: c/c-parser.cc:18792 cp/parser.cc:41456 +#: c/c-parser.cc:18841 cp/parser.cc:41500 #, gcc-internal-format msgid "too many % modifiers" msgstr "" -#: c/c-parser.cc:18800 cp/parser.cc:41467 +#: c/c-parser.cc:18849 cp/parser.cc:41511 #, gcc-internal-format msgid "" "% clause with map-type modifier other than %, % or " "%" msgstr "" -#: c/c-parser.cc:18838 cp/parser.cc:41507 +#: c/c-parser.cc:18887 cp/parser.cc:41551 #, gcc-internal-format msgid "invalid map kind" msgstr "" -#: c/c-parser.cc:18890 cp/parser.cc:41571 +#: c/c-parser.cc:18939 cp/parser.cc:41615 #, gcc-internal-format msgid "" "% device modifier not preceded by % directive with " "% clause" msgstr "" -#: c/c-parser.cc:18902 cp/parser.cc:41582 +#: c/c-parser.cc:18951 cp/parser.cc:41626 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:18925 cp/semantics.cc:7849 +#: c/c-parser.cc:18974 cp/semantics.cc:7918 #, gcc-internal-format msgid "the % clause expression must evaluate to %<1%>" msgstr "" -#: c/c-parser.cc:18958 cp/parser.cc:41653 +#: c/c-parser.cc:19007 cp/parser.cc:41697 #, gcc-internal-format msgid "invalid dist_schedule kind" msgstr "" -#: c/c-parser.cc:19037 +#: c/c-parser.cc:19086 #, gcc-internal-format msgid "invalid proc_bind kind" msgstr "" -#: c/c-parser.cc:19081 +#: c/c-parser.cc:19130 #, gcc-internal-format msgid "expected %, % or %" msgstr "" -#: c/c-parser.cc:19179 cp/semantics.cc:8268 +#: c/c-parser.cc:19228 cp/semantics.cc:8337 #, gcc-internal-format msgid "" "% clause event handle has type %qT rather than " "%" msgstr "" -#: c/c-parser.cc:19391 cp/parser.cc:42045 +#: c/c-parser.cc:19440 cp/parser.cc:42089 #, gcc-internal-format msgid "expected an OpenACC clause" msgstr "" -#: c/c-parser.cc:19402 c/c-parser.cc:19767 cp/parser.cc:42056 -#: cp/parser.cc:42464 +#: c/c-parser.cc:19451 c/c-parser.cc:19816 cp/parser.cc:42100 +#: cp/parser.cc:42508 #, gcc-internal-format msgid "%qs is not valid for %qs" msgstr "" -#: c/c-parser.cc:19447 cp/parser.cc:42104 +#: c/c-parser.cc:19496 cp/parser.cc:42148 #, gcc-internal-format msgid "clauses in % trait should be separated by %<,%>" msgstr "" -#: c/c-parser.cc:19600 cp/parser.cc:42297 +#: c/c-parser.cc:19649 cp/parser.cc:42341 #, gcc-internal-format msgid "%qs must be the first clause of %qs" msgstr "" -#: c/c-parser.cc:19756 cp/parser.cc:42453 +#: c/c-parser.cc:19805 cp/parser.cc:42497 #, gcc-internal-format msgid "expected an OpenMP clause" msgstr "" -#: c/c-parser.cc:19891 cp/parser.cc:47284 +#: c/c-parser.cc:19964 cp/parser.cc:47350 #, gcc-internal-format msgid "no valid clauses specified in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:19901 cp/parser.cc:47294 +#: c/c-parser.cc:19974 cp/parser.cc:47360 #, gcc-internal-format msgid "array section in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:19921 cp/parser.cc:47314 +#: c/c-parser.cc:19994 cp/parser.cc:47380 #, gcc-internal-format msgid "%qD must be a global variable in %<#pragma acc declare link%>" msgstr "" -#: c/c-parser.cc:19932 cp/parser.cc:47325 +#: c/c-parser.cc:20005 cp/parser.cc:47391 #, gcc-internal-format msgid "invalid OpenACC clause at file scope" msgstr "" -#: c/c-parser.cc:19939 cp/parser.cc:47332 +#: c/c-parser.cc:20012 cp/parser.cc:47398 #, gcc-internal-format msgid "invalid use of % variable %qD in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:19947 cp/parser.cc:47340 +#: c/c-parser.cc:20020 cp/parser.cc:47406 #, gcc-internal-format msgid "invalid use of % variable %qD in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:19958 cp/parser.cc:47362 +#: c/c-parser.cc:20031 cp/parser.cc:47428 #, gcc-internal-format msgid "" "%qD must be a variable declared in the same scope as %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:19968 cp/parser.cc:47385 +#: c/c-parser.cc:20041 cp/parser.cc:47451 #, gcc-internal-format msgid "variable %qD used more than once with %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:20061 cp/parser.cc:47469 +#: c/c-parser.cc:20134 cp/parser.cc:47535 #, gcc-internal-format msgid "expected % after %<#pragma acc %s%>" msgstr "" -#: c/c-parser.cc:20077 cp/parser.cc:47486 +#: c/c-parser.cc:20150 cp/parser.cc:47552 #, gcc-internal-format msgid "%<#pragma acc %s data%> has no data movement clause" msgstr "" -#: c/c-parser.cc:20109 cp/parser.cc:47244 +#: c/c-parser.cc:20182 cp/parser.cc:47310 #, gcc-internal-format msgid "% construct requires % clause" msgstr "" -#: c/c-parser.cc:20338 cp/parser.cc:3367 +#: c/c-parser.cc:20411 cp/parser.cc:3367 #, gcc-internal-format msgid "%qE has not been declared" msgstr "" -#: c/c-parser.cc:20342 +#: c/c-parser.cc:20415 #, gcc-internal-format msgid "expected function name" msgstr "" -#: c/c-parser.cc:20360 cp/parser.cc:50066 +#: c/c-parser.cc:20433 cp/parser.cc:50132 #, gcc-internal-format msgid "%qD does not refer to a function" msgstr "" -#: c/c-parser.cc:20383 c/c-parser.cc:20431 cp/parser.cc:1662 +#: c/c-parser.cc:20456 c/c-parser.cc:20504 cp/parser.cc:1662 #, gcc-internal-format msgid "" "%<#pragma acc routine%> not immediately followed by function declaration or " "definition" msgstr "" -#: c/c-parser.cc:20423 cp/parser.cc:50117 cp/parser.cc:50164 +#: c/c-parser.cc:20496 cp/parser.cc:50183 cp/parser.cc:50230 #, gcc-internal-format msgid "" "%<#pragma acc routine%> not immediately followed by a single function " "declaration or definition" msgstr "" -#: c/c-parser.cc:20454 cp/parser.cc:50192 +#: c/c-parser.cc:20527 cp/parser.cc:50258 #, gcc-internal-format msgid "%<#pragma acc routine%> must be applied before use" msgstr "" -#: c/c-parser.cc:20455 cp/parser.cc:50194 +#: c/c-parser.cc:20528 cp/parser.cc:50260 #, gcc-internal-format msgid "%<#pragma acc routine%> must be applied before definition" msgstr "" -#: c/c-parser.cc:20500 cp/parser.cc:47702 +#: c/c-parser.cc:20573 cp/parser.cc:47768 #, gcc-internal-format msgid "" "%<#pragma acc update%> must contain at least one % or % or " "% clause" msgstr "" -#: c/c-parser.cc:20558 +#: c/c-parser.cc:20631 #, gcc-internal-format msgid "" "variable %qD used in the % clause must be declared before %qD" msgstr "" -#: c/c-parser.cc:20562 c/c-parser.cc:20585 +#: c/c-parser.cc:20635 c/c-parser.cc:20658 #, gcc-internal-format msgid "to be allocated variable declared here" msgstr "" -#: c/c-parser.cc:20580 +#: c/c-parser.cc:20653 #, gcc-internal-format msgid "" "variable %qD used in the % clause must not be modified between " "declaration of %qD and its % directive" msgstr "" -#: c/c-parser.cc:20583 +#: c/c-parser.cc:20656 #, gcc-internal-format msgid "modified here" msgstr "" -#: c/c-parser.cc:20651 cp/parser.cc:42578 cp/parser.cc:42593 +#: c/c-parser.cc:20724 cp/parser.cc:42622 cp/parser.cc:42637 #, gcc-internal-format msgid "" "% clause argument needs to be positive constant power of two integer " "expression" msgstr "" -#: c/c-parser.cc:20675 +#: c/c-parser.cc:20748 #, gcc-internal-format msgid "" "% clause allocator expression has type %qT rather than " "%" msgstr "" -#: c/c-parser.cc:20692 +#: c/c-parser.cc:20765 #, gcc-internal-format msgid "" "function parameter %qD may not appear as list item in an % " "directive" msgstr "" -#: c/c-parser.cc:20699 +#: c/c-parser.cc:20772 #, gcc-internal-format msgid "% directive must be in the same scope as %qD" msgstr "" -#: c/c-parser.cc:20707 +#: c/c-parser.cc:20780 #, gcc-internal-format msgid "%qD already appeared as list item in an % directive" msgstr "" -#: c/c-parser.cc:20714 +#: c/c-parser.cc:20787 #, gcc-internal-format msgid "% clause required for static variable %qD" msgstr "" -#: c/c-parser.cc:20721 +#: c/c-parser.cc:20794 #, gcc-internal-format msgid "% clause requires a predefined allocator as %qD is static" msgstr "" -#: c/c-parser.cc:20725 +#: c/c-parser.cc:20798 #, gcc-internal-format msgid "" "%<#pragma omp allocate%> for static variables like %qD not yet supported" msgstr "" -#: c/c-parser.cc:20876 cp/parser.cc:42758 +#: c/c-parser.cc:20949 cp/parser.cc:42802 #, gcc-internal-format msgid "expected %, %, %, or % clause" msgstr "" -#: c/c-parser.cc:20915 cp/parser.cc:42797 +#: c/c-parser.cc:20988 cp/parser.cc:42841 #, gcc-internal-format msgid "expected %, % or %" msgstr "" -#: c/c-parser.cc:20939 cp/parser.cc:42826 +#: c/c-parser.cc:21012 cp/parser.cc:42870 #, gcc-internal-format msgid "" "expected %, %, %, %, %, " @@ -51119,320 +51372,320 @@ msgid "" "% clause" msgstr "" -#: c/c-parser.cc:20954 cp/parser.cc:42841 +#: c/c-parser.cc:21027 cp/parser.cc:42885 #, gcc-internal-format msgid "too many atomic clauses" msgstr "" -#: c/c-parser.cc:20961 cp/parser.cc:42848 +#: c/c-parser.cc:21034 cp/parser.cc:42892 #, gcc-internal-format msgid "too many memory order clauses" msgstr "" -#: c/c-parser.cc:20999 c/c-parser.cc:21006 cp/parser.cc:42886 -#: cp/parser.cc:42893 +#: c/c-parser.cc:21072 c/c-parser.cc:21079 cp/parser.cc:42930 +#: cp/parser.cc:42937 #, gcc-internal-format msgid "%qs clause is incompatible with % or % clauses" msgstr "" -#: c/c-parser.cc:21012 c/c-parser.cc:21017 cp/parser.cc:42899 -#: cp/parser.cc:42904 +#: c/c-parser.cc:21085 c/c-parser.cc:21090 cp/parser.cc:42943 +#: cp/parser.cc:42948 #, gcc-internal-format msgid "%qs clause requires %qs clause" msgstr "" -#: c/c-parser.cc:21040 cp/parser.cc:42927 +#: c/c-parser.cc:21113 cp/parser.cc:42971 #, gcc-internal-format msgid "" "%<#pragma omp atomic write%> incompatible with % clause implicitly " "provided by a % directive" msgstr "" -#: c/c-parser.cc:21051 cp/parser.cc:42938 +#: c/c-parser.cc:21124 cp/parser.cc:42982 #, gcc-internal-format msgid "" "%<#pragma omp atomic read%> incompatible with % clause implicitly " "provided by a % directive" msgstr "" -#: c/c-parser.cc:21083 cp/parser.cc:42970 +#: c/c-parser.cc:21156 cp/parser.cc:43014 #, gcc-internal-format msgid "%<#pragma omp atomic read%> incompatible with % clause" msgstr "" -#: c/c-parser.cc:21093 cp/parser.cc:42980 +#: c/c-parser.cc:21166 cp/parser.cc:43024 #, gcc-internal-format msgid "%<#pragma omp atomic write%> incompatible with % clause" msgstr "" -#: c/c-parser.cc:21216 cp/parser.cc:43080 +#: c/c-parser.cc:21289 cp/parser.cc:43124 #, gcc-internal-format msgid "expected %<==%> comparison in % condition" msgstr "" -#: c/c-parser.cc:21223 cp/parser.cc:43087 +#: c/c-parser.cc:21296 cp/parser.cc:43131 #, gcc-internal-format msgid "expected %<==%>, %<<%> or %<>%> comparison in % condition" msgstr "" -#: c/c-parser.cc:21296 cp/parser.cc:43152 cp/parser.cc:43435 cp/parser.cc:43529 -#: cp/parser.cc:43547 +#: c/c-parser.cc:21369 cp/parser.cc:43196 cp/parser.cc:43479 cp/parser.cc:43573 +#: cp/parser.cc:43591 #, gcc-internal-format msgid "invalid form of %<#pragma omp atomic compare%>" msgstr "" -#: c/c-parser.cc:21307 cp/parser.cc:43163 +#: c/c-parser.cc:21380 cp/parser.cc:43207 #, gcc-internal-format msgid "unexpected %" msgstr "" -#: c/c-parser.cc:21367 cp/parser.cc:43602 +#: c/c-parser.cc:21440 cp/parser.cc:43646 #, gcc-internal-format msgid "invalid form of %" msgstr "" -#: c/c-parser.cc:21638 cp/parser.cc:43456 cp/parser.cc:43482 +#: c/c-parser.cc:21711 cp/parser.cc:43500 cp/parser.cc:43526 #, gcc-internal-format msgid "invalid form of %<#pragma omp atomic%>" msgstr "" -#: c/c-parser.cc:21642 cp/parser.cc:43522 cp/parser.cc:43556 +#: c/c-parser.cc:21715 cp/parser.cc:43566 cp/parser.cc:43600 #, gcc-internal-format msgid "invalid operator for %<#pragma omp atomic%>" msgstr "" -#: c/c-parser.cc:21693 cp/parser.cc:43591 +#: c/c-parser.cc:21766 cp/parser.cc:43635 #, gcc-internal-format msgid "% clause requires atomic equality comparison" msgstr "" -#: c/c-parser.cc:21699 cp/semantics.cc:11160 cp/semantics.cc:11170 +#: c/c-parser.cc:21772 cp/semantics.cc:11229 cp/semantics.cc:11239 #, gcc-internal-format msgid "" "%<#pragma omp atomic capture%> uses two different expressions for memory" msgstr "" -#: c/c-parser.cc:21802 cp/semantics.cc:11247 +#: c/c-parser.cc:21875 cp/semantics.cc:11316 #, gcc-internal-format msgid "% expression is not lvalue expression" msgstr "" -#: c/c-parser.cc:21845 +#: c/c-parser.cc:21918 #, gcc-internal-format msgid "% expression is not lvalue expression" msgstr "" -#: c/c-parser.cc:21851 cp/parser.cc:43744 +#: c/c-parser.cc:21924 cp/parser.cc:43788 #, gcc-internal-format msgid "" "the % expression %qE should be the same as the % argument " "%qE" msgstr "" -#: c/c-parser.cc:21882 cp/parser.cc:43780 +#: c/c-parser.cc:21955 cp/parser.cc:43824 #, gcc-internal-format msgid "expected %, %, %, % or %" msgstr "" -#: c/c-parser.cc:21894 cp/parser.cc:43796 +#: c/c-parser.cc:21967 cp/parser.cc:43840 #, gcc-internal-format msgid "expected %, % or % clause" msgstr "" -#: c/c-parser.cc:21935 cp/parser.cc:43834 +#: c/c-parser.cc:22008 cp/parser.cc:43878 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:21943 cp/parser.cc:43842 +#: c/c-parser.cc:22016 cp/parser.cc:43886 #, gcc-internal-format msgid "% list specified together with memory order clause" msgstr "" -#: c/c-parser.cc:21948 +#: c/c-parser.cc:22021 #, gcc-internal-format msgid "expected %<(%> or end of line" msgstr "" -#: c/c-parser.cc:22019 cp/parser.cc:44548 +#: c/c-parser.cc:22092 cp/parser.cc:44592 #, gcc-internal-format msgid "" "%<[[omp::directive(%s)]]%> must be the only specified attribute on a " "statement" msgstr "" -#: c/c-parser.cc:22086 cp/parser.cc:44617 +#: c/c-parser.cc:22159 cp/parser.cc:44661 #, gcc-internal-format msgid "%<#pragma omp scan%> with zero preceding executable statements" msgstr "" -#: c/c-parser.cc:22120 cp/parser.cc:44650 +#: c/c-parser.cc:22193 cp/parser.cc:44694 #, gcc-internal-format msgid "expected % or % clause" msgstr "" -#: c/c-parser.cc:22125 cp/parser.cc:44656 +#: c/c-parser.cc:22198 cp/parser.cc:44700 #, gcc-internal-format msgid "expected %<#pragma omp scan%>" msgstr "" -#: c/c-parser.cc:22134 cp/parser.cc:44665 +#: c/c-parser.cc:22207 cp/parser.cc:44709 #, gcc-internal-format msgid "%<#pragma omp scan%> with zero succeeding executable statements" msgstr "" -#: c/c-parser.cc:22252 cp/semantics.cc:10734 cp/semantics.cc:10819 +#: c/c-parser.cc:22325 cp/semantics.cc:10803 cp/semantics.cc:10888 #, gcc-internal-format msgid "expected iteration declaration or initialization" msgstr "" -#: c/c-parser.cc:22340 c/c-parser.cc:22355 cp/parser.cc:45012 -#: cp/parser.cc:45027 +#: c/c-parser.cc:22413 c/c-parser.cc:22428 cp/parser.cc:45056 +#: cp/parser.cc:45071 #, gcc-internal-format msgid "not enough nested loops" msgstr "" -#: c/c-parser.cc:22455 cp/parser.cc:45299 +#: c/c-parser.cc:22528 cp/parser.cc:45343 #, gcc-internal-format msgid "% clause parameter is less than %" msgstr "" -#: c/c-parser.cc:22466 cp/parser.cc:45310 +#: c/c-parser.cc:22539 cp/parser.cc:45354 #, gcc-internal-format msgid "for statement expected" msgstr "" -#: c/c-parser.cc:22578 cp/parser.cc:44850 cp/parser.cc:44893 cp/pt.cc:18109 +#: c/c-parser.cc:22651 cp/parser.cc:44894 cp/parser.cc:44937 cp/pt.cc:18112 #, gcc-internal-format msgid "iteration variable %qD should not be firstprivate" msgstr "" -#: c/c-parser.cc:22986 cp/parser.cc:45821 +#: c/c-parser.cc:23059 cp/parser.cc:45865 #, gcc-internal-format msgid "" "%<#pragma omp ordered%> with %qs clause may only be used in compound " "statements" msgstr "" -#: c/c-parser.cc:23202 cp/parser.cc:46027 +#: c/c-parser.cc:23275 cp/parser.cc:46071 #, gcc-internal-format msgid "expected % after %qs" msgstr "" -#: c/c-parser.cc:23549 cp/parser.cc:46374 +#: c/c-parser.cc:23622 cp/parser.cc:46418 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:23816 cp/parser.cc:46661 +#: c/c-parser.cc:23889 cp/parser.cc:46705 #, gcc-internal-format msgid "" "%<#pragma omp target data%> with map-type other than %, %, " "% or % on % clause" msgstr "" -#: c/c-parser.cc:23832 cp/parser.cc:46677 +#: c/c-parser.cc:23905 cp/parser.cc:46721 #, gcc-internal-format msgid "" "%<#pragma omp target data%> must contain at least one %, " "% or % clause" msgstr "" -#: c/c-parser.cc:23880 cp/parser.cc:46958 +#: c/c-parser.cc:23953 cp/parser.cc:47002 #, gcc-internal-format msgid "" "%<#pragma omp target update%> must contain at least one % or % " "clauses" msgstr "" -#: c/c-parser.cc:23982 cp/parser.cc:46784 +#: c/c-parser.cc:24055 cp/parser.cc:46828 #, gcc-internal-format msgid "" "%<#pragma omp target enter data%> with map-type other than %, " "% or % on % clause" msgstr "" -#: c/c-parser.cc:23994 cp/parser.cc:46796 +#: c/c-parser.cc:24067 cp/parser.cc:46840 #, gcc-internal-format msgid "" "%<#pragma omp target enter data%> must contain at least one % clause" msgstr "" -#: c/c-parser.cc:24093 cp/parser.cc:46901 +#: c/c-parser.cc:24166 cp/parser.cc:46945 #, gcc-internal-format msgid "" "%<#pragma omp target exit data%> with map-type other than %, " "%, % or % on % clause" msgstr "" -#: c/c-parser.cc:24106 cp/parser.cc:46914 +#: c/c-parser.cc:24179 cp/parser.cc:46958 #, gcc-internal-format msgid "" "%<#pragma omp target exit data%> must contain at least one % clause" msgstr "" -#: c/c-parser.cc:24351 cp/semantics.cc:10242 +#: c/c-parser.cc:24424 cp/semantics.cc:10311 #, gcc-internal-format msgid "" "%<#pragma omp target%> with map-type other than %, %, % " "or % on % clause" msgstr "" -#: c/c-parser.cc:24408 +#: c/c-parser.cc:24481 #, gcc-internal-format msgid "" "%<#pragma omp declare %s%> must be followed by function declaration or " "definition or another %<#pragma omp declare %s%>" msgstr "" -#: c/c-parser.cc:24459 c/c-parser.cc:24497 +#: c/c-parser.cc:24532 c/c-parser.cc:24570 #, gcc-internal-format msgid "" "%<#pragma omp declare %s%> must be followed by function declaration or " "definition" msgstr "" -#: c/c-parser.cc:24530 cp/parser.cc:47846 +#: c/c-parser.cc:24603 cp/parser.cc:47912 #, gcc-internal-format msgid "expected trait selector name" msgstr "" -#: c/c-parser.cc:24542 cp/parser.cc:47860 +#: c/c-parser.cc:24615 cp/parser.cc:47926 #, gcc-internal-format msgid "unknown selector %qs for context selector set %qs" msgstr "" -#: c/c-parser.cc:24570 cp/parser.cc:47889 +#: c/c-parser.cc:24643 cp/parser.cc:47955 #, gcc-internal-format msgid "selector %qs does not accept any properties" msgstr "" -#: c/c-parser.cc:24592 cp/parser.cc:47921 +#: c/c-parser.cc:24665 cp/parser.cc:47987 #, gcc-internal-format msgid "% cannot be specified in traits in the %qs trait-selector-set" msgstr "" -#: c/c-parser.cc:24601 cp/parser.cc:47931 +#: c/c-parser.cc:24674 cp/parser.cc:47997 #, gcc-internal-format msgid "% argument must be constant integer expression" msgstr "" -#: c/c-parser.cc:24604 cp/parser.cc:47934 +#: c/c-parser.cc:24677 cp/parser.cc:48000 #, gcc-internal-format msgid "% argument must be non-negative" msgstr "" -#: c/c-parser.cc:24645 cp/parser.cc:47980 +#: c/c-parser.cc:24718 cp/parser.cc:48046 #, gcc-internal-format msgid "expected identifier or string literal" msgstr "" -#: c/c-parser.cc:24670 cp/parser.cc:48005 cp/pt.cc:12022 +#: c/c-parser.cc:24743 cp/parser.cc:48071 cp/pt.cc:12015 #, gcc-internal-format msgid "property must be constant integer expression" msgstr "" -#: c/c-parser.cc:24684 cp/parser.cc:48019 +#: c/c-parser.cc:24757 cp/parser.cc:48085 #, gcc-internal-format msgid "" "properties for % selector may not be specified in %" @@ -51441,172 +51694,172 @@ msgstr "" #. FIXME: The "requires" selector was added in OpenMP 5.1. #. Currently only the now-deprecated syntax #. from OpenMP 5.0 is supported. -#: c/c-parser.cc:24705 cp/parser.cc:48035 fortran/openmp.cc:5891 +#: c/c-parser.cc:24778 cp/parser.cc:48101 fortran/openmp.cc:5921 #, gcc-internal-format msgid "% selector is not supported yet" msgstr "" -#: c/c-parser.cc:24764 cp/parser.cc:48098 +#: c/c-parser.cc:24837 cp/parser.cc:48164 #, gcc-internal-format msgid "expected context selector set name" msgstr "" -#: c/c-parser.cc:24841 cp/parser.cc:48413 +#: c/c-parser.cc:24914 cp/parser.cc:48479 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:24861 +#: c/c-parser.cc:24934 #, gcc-internal-format msgid "variant %qD is not a function" msgstr "" -#: c/c-parser.cc:24868 cp/decl.cc:8318 +#: c/c-parser.cc:24941 cp/decl.cc:8314 #, gcc-internal-format msgid "variant %qD and base %qD have incompatible types" msgstr "" -#: c/c-parser.cc:24880 cp/decl.cc:8327 +#: c/c-parser.cc:24953 cp/decl.cc:8323 #, gcc-internal-format msgid "variant %qD is a built-in" msgstr "" -#: c/c-parser.cc:24926 +#: c/c-parser.cc:24999 #, gcc-internal-format msgid "" "%<#pragma omp declare %s%> not immediately followed by a function " "declaration or definition" msgstr "" -#: c/c-parser.cc:24934 cp/parser.cc:48458 +#: c/c-parser.cc:25007 cp/parser.cc:48524 #, gcc-internal-format msgid "" "%<#pragma omp declare %s%> not immediately followed by a single function " "declaration or definition" msgstr "" -#: c/c-parser.cc:25135 cp/parser.cc:48748 +#: c/c-parser.cc:25208 cp/parser.cc:48814 #, gcc-internal-format msgid "%qD specified both in declare target % and %qs clauses" msgstr "" -#: c/c-parser.cc:25139 cp/parser.cc:48752 +#: c/c-parser.cc:25212 cp/parser.cc:48818 #, gcc-internal-format msgid "" "%qD specified both in declare target % and % or % clauses" msgstr "" -#: c/c-parser.cc:25199 cp/parser.cc:48882 +#: c/c-parser.cc:25272 cp/parser.cc:48948 #, gcc-internal-format msgid "directive with only % or % clauses" msgstr "" -#: c/c-parser.cc:25202 cp/parser.cc:48885 +#: c/c-parser.cc:25275 cp/parser.cc:48951 #, gcc-internal-format msgid "" "% clause must specify 'any' when used with an % " "clause" msgstr "" -#: c/c-parser.cc:25251 c/c-parser.cc:25293 cp/parser.cc:48940 -#: cp/parser.cc:48987 +#: c/c-parser.cc:25324 c/c-parser.cc:25366 cp/parser.cc:49006 +#: cp/parser.cc:49053 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:25265 cp/parser.cc:48953 +#: c/c-parser.cc:25338 cp/parser.cc:49019 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:25300 cp/parser.cc:48994 +#: c/c-parser.cc:25373 cp/parser.cc:49060 #, gcc-internal-format msgid "" "%<#pragma omp end declare target%> without corresponding %<#pragma omp " "declare target%> or %<#pragma omp begin declare target%>" msgstr "" -#: c/c-parser.cc:25311 c/c-parser.cc:25342 cp/parser.cc:49005 -#: cp/parser.cc:49036 +#: c/c-parser.cc:25384 c/c-parser.cc:25415 cp/parser.cc:49071 +#: cp/parser.cc:49102 #, gcc-internal-format msgid "%qs in attribute syntax terminated with %qs in pragma syntax" msgstr "" -#: c/c-parser.cc:25318 c/c-parser.cc:25347 cp/parser.cc:49012 -#: cp/parser.cc:49041 +#: c/c-parser.cc:25391 c/c-parser.cc:25420 cp/parser.cc:49078 +#: cp/parser.cc:49107 #, gcc-internal-format msgid "%qs in pragma syntax terminated with %qs in attribute syntax" msgstr "" -#: c/c-parser.cc:25355 cp/parser.cc:49049 +#: c/c-parser.cc:25428 cp/parser.cc:49115 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:25382 +#: c/c-parser.cc:25455 #, gcc-internal-format msgid "%<#pragma omp declare reduction%> not at file or block scope" msgstr "" -#: c/c-parser.cc:25459 +#: c/c-parser.cc:25532 #, gcc-internal-format msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>" msgstr "" -#: c/c-parser.cc:25463 +#: c/c-parser.cc:25536 #, gcc-internal-format msgid "function or array type in %<#pragma omp declare reduction%>" msgstr "" -#: c/c-parser.cc:25466 +#: c/c-parser.cc:25539 #, gcc-internal-format msgid "%<_Atomic%> qualified type in %<#pragma omp declare reduction%>" msgstr "" -#: c/c-parser.cc:25469 +#: c/c-parser.cc:25542 #, gcc-internal-format msgid "" "const, volatile or restrict qualified type in %<#pragma omp declare " "reduction%>" msgstr "" -#: c/c-parser.cc:25477 +#: c/c-parser.cc:25550 #, gcc-internal-format msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT" msgstr "" -#: c/c-parser.cc:25486 +#: c/c-parser.cc:25559 #, gcc-internal-format msgid "previous %<#pragma omp declare reduction%>" msgstr "" -#: c/c-parser.cc:25607 +#: c/c-parser.cc:25680 #, gcc-internal-format msgid "expected % or function-name" msgstr "" -#: c/c-parser.cc:25618 +#: c/c-parser.cc:25691 #, gcc-internal-format msgid "expected function-name %<(%>" msgstr "" -#: c/c-parser.cc:25637 +#: c/c-parser.cc:25710 #, gcc-internal-format msgid "one of the initializer call arguments should be %<&omp_priv%>" msgstr "" -#: c/c-parser.cc:25768 cp/parser.cc:49522 +#: c/c-parser.cc:25841 cp/parser.cc:49588 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:25837 cp/parser.cc:49589 +#: c/c-parser.cc:25910 cp/parser.cc:49655 #, gcc-internal-format msgid "" "expected %, %, %, % or %" msgstr "" -#: c/c-parser.cc:25866 cp/parser.cc:49624 +#: c/c-parser.cc:25939 cp/parser.cc:49690 #, gcc-internal-format msgid "" "expected %, %, " @@ -51614,143 +51867,143 @@ msgid "" "clause" msgstr "" -#: c/c-parser.cc:25884 cp/parser.cc:49642 +#: c/c-parser.cc:25957 cp/parser.cc:49708 #, gcc-internal-format msgid "" "%qs clause used lexically after first target construct or offloading API" msgstr "" -#: c/c-parser.cc:25896 cp/parser.cc:49654 +#: c/c-parser.cc:25969 cp/parser.cc:49720 #, gcc-internal-format msgid "" "more than one % clause in a single compilation " "unit" msgstr "" -#: c/c-parser.cc:25905 cp/parser.cc:49663 +#: c/c-parser.cc:25978 cp/parser.cc:49729 #, gcc-internal-format msgid "" "% clause used lexically after first % " "construct without memory order clause" msgstr "" -#: c/c-parser.cc:25919 cp/parser.cc:49677 +#: c/c-parser.cc:25992 cp/parser.cc:49743 #, gcc-internal-format msgid "% requires at least one clause" msgstr "" -#: c/c-parser.cc:25938 +#: c/c-parser.cc:26011 #, gcc-internal-format msgid "zero sized type %qT in % clause" msgstr "" -#: c/c-parser.cc:25944 +#: c/c-parser.cc:26017 #, gcc-internal-format msgid "variable sized type %qT in % clause" msgstr "" -#: c/c-parser.cc:26101 cp/parser.cc:49734 +#: c/c-parser.cc:26174 cp/parser.cc:49800 #, gcc-internal-format msgid "expected %, % or % clause" msgstr "" -#: c/c-parser.cc:26134 cp/parser.cc:49769 +#: c/c-parser.cc:26207 cp/parser.cc:49835 #, gcc-internal-format msgid "expected %qs or %qs" msgstr "" -#: c/c-parser.cc:26191 cp/parser.cc:49831 +#: c/c-parser.cc:26264 cp/parser.cc:49897 #, gcc-internal-format msgid "" "%<#pragma omp error%> with % clause may only be used in " "compound statements" msgstr "" -#: c/c-parser.cc:26214 cp/parser.cc:49858 +#: c/c-parser.cc:26287 cp/parser.cc:49924 #, gcc-internal-format msgid "% encountered: %s" msgstr "" -#: c/c-parser.cc:26217 cp/parser.cc:49861 +#: c/c-parser.cc:26290 cp/parser.cc:49927 #, gcc-internal-format msgid "% encountered" msgstr "" -#: c/c-parser.cc:26244 cp/parser.cc:48159 +#: c/c-parser.cc:26317 cp/parser.cc:48225 #, gcc-internal-format msgid "expected at least one assumption clause" msgstr "" -#: c/c-parser.cc:26330 cp/parser.cc:48245 +#: c/c-parser.cc:26403 cp/parser.cc:48311 #, gcc-internal-format msgid "expected directive name" msgstr "" -#: c/c-parser.cc:26343 cp/parser.cc:48258 +#: c/c-parser.cc:26416 cp/parser.cc:48324 #, gcc-internal-format msgid "unknown OpenMP directive name in %qs clause argument" msgstr "" -#: c/c-parser.cc:26350 cp/parser.cc:48265 +#: c/c-parser.cc:26423 cp/parser.cc:48331 #, gcc-internal-format msgid "" "%<%s%s%s%s%s%> directive mentioned in both % and % " "clauses" msgstr "" -#: c/c-parser.cc:26361 cp/parser.cc:48276 +#: c/c-parser.cc:26434 cp/parser.cc:48342 #, gcc-internal-format msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses" msgstr "" -#: c/c-parser.cc:26384 cp/parser.cc:48303 +#: c/c-parser.cc:26457 cp/parser.cc:48369 #, gcc-internal-format msgid "unknown assumption clause %qs" msgstr "" -#: c/c-parser.cc:26397 cp/parser.cc:48313 +#: c/c-parser.cc:26470 cp/parser.cc:48379 #, gcc-internal-format msgid "expected assumption clause" msgstr "" -#: c/c-parser.cc:26567 cp/semantics.cc:9608 +#: c/c-parser.cc:26640 cp/semantics.cc:9677 #, gcc-internal-format msgid "%qE declared % after first use" msgstr "" -#: c/c-parser.cc:26569 cp/semantics.cc:9610 +#: c/c-parser.cc:26642 cp/semantics.cc:9679 #, gcc-internal-format msgid "automatic variable %qE cannot be %" msgstr "" -#: c/c-parser.cc:26573 cp/semantics.cc:9612 +#: c/c-parser.cc:26646 cp/semantics.cc:9681 #, gcc-internal-format msgid "% %qE has incomplete type" msgstr "" -#: c/c-parser.cc:26753 cp/parser.cc:50600 +#: c/c-parser.cc:26826 cp/parser.cc:50666 #, gcc-internal-format msgid "%<__transaction_cancel%> without transactional memory support enabled" msgstr "" -#: c/c-parser.cc:26759 cp/parser.cc:50606 +#: c/c-parser.cc:26832 cp/parser.cc:50672 #, gcc-internal-format msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>" msgstr "" -#: c/c-parser.cc:26768 +#: c/c-parser.cc:26841 #, gcc-internal-format msgid "" "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or " "a % function" msgstr "" -#: c/c-parser.cc:26776 cp/parser.cc:50624 +#: c/c-parser.cc:26849 cp/parser.cc:50690 #, gcc-internal-format msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>" msgstr "" -#: c/c-parser.cc:26869 +#: c/c-parser.cc:26942 #, gcc-internal-format msgid "no closing brace" msgstr "" @@ -51899,7 +52152,7 @@ msgstr "" msgid "subscripted value is neither array nor pointer nor vector" msgstr "" -#: c/c-typeck.cc:2808 cp/typeck.cc:4004 cp/typeck.cc:4098 +#: c/c-typeck.cc:2808 cp/typeck.cc:4005 cp/typeck.cc:4099 #, gcc-internal-format msgid "array subscript is not an integer" msgstr "" @@ -52050,17 +52303,17 @@ msgstr "" msgid "too few arguments to built-in function %qE expecting %u" msgstr "" -#: c/c-typeck.cc:4108 c/c-typeck.cc:4136 cp/typeck.cc:5780 cp/typeck.cc:6063 +#: c/c-typeck.cc:4108 c/c-typeck.cc:4136 cp/typeck.cc:5781 cp/typeck.cc:6064 #, gcc-internal-format msgid "comparison with string literal results in unspecified behavior" msgstr "" -#: c/c-typeck.cc:4116 c/c-typeck.cc:4127 cp/typeck.cc:5812 cp/typeck.cc:5836 +#: c/c-typeck.cc:4116 c/c-typeck.cc:4127 cp/typeck.cc:5813 cp/typeck.cc:5837 #, gcc-internal-format msgid "comparison between pointer and zero character constant" msgstr "" -#: c/c-typeck.cc:4119 c/c-typeck.cc:4130 cp/typeck.cc:5815 cp/typeck.cc:5839 +#: c/c-typeck.cc:4119 c/c-typeck.cc:4130 cp/typeck.cc:5816 cp/typeck.cc:5840 #, gcc-internal-format msgid "did you mean to dereference the pointer?" msgstr "" @@ -52085,7 +52338,7 @@ msgstr "" msgid "arithmetic on pointer to an incomplete type" msgstr "" -#: c/c-typeck.cc:4262 cp/typeck.cc:6858 +#: c/c-typeck.cc:4262 cp/typeck.cc:6859 #, gcc-internal-format msgid "arithmetic on pointer to an empty aggregate" msgstr "" @@ -52297,7 +52550,7 @@ msgid "" "ignoring return value of type %qT, declared with attribute %" msgstr "" -#: c/c-typeck.cc:5898 cp/cvt.cc:1102 rust/backend/rust-tree.cc:640 +#: c/c-typeck.cc:5898 cp/cvt.cc:1116 rust/backend/rust-tree.cc:640 #, gcc-internal-format msgid "in call to %qD, declared here" msgstr "" @@ -52390,7 +52643,7 @@ msgstr "" msgid "cast from function call of type %qT to non-matching type %qT" msgstr "" -#: c/c-typeck.cc:6334 cp/typeck.cc:9294 +#: c/c-typeck.cc:6334 cp/typeck.cc:9295 #, gcc-internal-format msgid "cast to pointer from integer of different size" msgstr "" @@ -52570,7 +52823,7 @@ msgid "" "initialization left-hand side might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.cc:7633 cp/typeck.cc:10457 +#: c/c-typeck.cc:7633 cp/typeck.cc:10458 #, gcc-internal-format msgid "return type might be a candidate for a format attribute" msgstr "" @@ -52788,12 +53041,12 @@ msgid "" "% initializer for a binary floating-point type is of decimal type" msgstr "" -#: c/c-typeck.cc:8544 c/c-typeck.cc:9478 cp/typeck2.cc:1219 +#: c/c-typeck.cc:8544 c/c-typeck.cc:9478 cp/typeck2.cc:1218 #, gcc-internal-format msgid "initialization of a flexible array member" msgstr "" -#: c/c-typeck.cc:8560 cp/typeck2.cc:1236 +#: c/c-typeck.cc:8560 cp/typeck2.cc:1235 #, gcc-internal-format msgid "" "cannot initialize array of %qT from a string literal with type array of %qT" @@ -52804,7 +53057,7 @@ msgstr "" msgid "array of inappropriate type initialized from string constant" msgstr "" -#: c/c-typeck.cc:8687 cp/typeck.cc:2533 +#: c/c-typeck.cc:8687 cp/typeck.cc:2534 #, gcc-internal-format msgid "invalid use of non-lvalue array" msgstr "" @@ -52850,7 +53103,7 @@ msgstr "" msgid "braces around scalar initializer" msgstr "" -#: c/c-typeck.cc:9475 c/c-typeck.cc:10964 cp/typeck2.cc:1246 cp/typeck2.cc:1604 +#: c/c-typeck.cc:9475 c/c-typeck.cc:10964 cp/typeck2.cc:1245 cp/typeck2.cc:1603 #, gcc-internal-format msgid "initialization of flexible array member in a nested context" msgstr "" @@ -52942,7 +53195,7 @@ msgid "" "% attribute" msgstr "" -#: c/c-typeck.cc:10938 cp/typeck2.cc:1223 +#: c/c-typeck.cc:10938 cp/typeck2.cc:1222 #, gcc-internal-format msgid "non-static initialization of a flexible array member" msgstr "" @@ -52982,7 +53235,7 @@ msgstr "" msgid "computed goto must be pointer type" msgstr "" -#: c/c-typeck.cc:11461 c/gimple-parser.cc:2562 cp/typeck.cc:11056 +#: c/c-typeck.cc:11461 c/gimple-parser.cc:2562 cp/typeck.cc:11059 #, gcc-internal-format msgid "function declared % has a % statement" msgstr "" @@ -53007,7 +53260,7 @@ msgstr "" msgid "function returns address of label" msgstr "" -#: c/c-typeck.cc:11672 cp/semantics.cc:1637 +#: c/c-typeck.cc:11672 cp/semantics.cc:1702 #, gcc-internal-format msgid "switch quantity not an integer" msgstr "" @@ -53091,27 +53344,27 @@ msgid "" "never be NULL" msgstr "" -#: c/c-typeck.cc:12880 c/c-typeck.cc:13044 cp/typeck.cc:6085 +#: c/c-typeck.cc:12880 c/c-typeck.cc:13044 cp/typeck.cc:6086 #, gcc-internal-format msgid "comparing vectors with different element types" msgstr "" -#: c/c-typeck.cc:12888 c/c-typeck.cc:13052 cp/typeck.cc:6098 +#: c/c-typeck.cc:12888 c/c-typeck.cc:13052 cp/typeck.cc:6099 #, gcc-internal-format msgid "comparing vectors with different number of elements" msgstr "" -#: c/c-typeck.cc:12903 c/c-typeck.cc:13067 cp/typeck.cc:6116 +#: c/c-typeck.cc:12903 c/c-typeck.cc:13067 cp/typeck.cc:6117 #, gcc-internal-format msgid "comparison between types %qT and %qT" msgstr "" -#: c/c-typeck.cc:12913 c/c-typeck.cc:13077 cp/typeck.cc:6133 +#: c/c-typeck.cc:12913 c/c-typeck.cc:13077 cp/typeck.cc:6134 #, gcc-internal-format msgid "could not find an integer type of the same size as %qT" msgstr "" -#: c/c-typeck.cc:12927 cp/typeck.cc:5769 +#: c/c-typeck.cc:12927 cp/typeck.cc:5770 #, gcc-internal-format msgid "comparing floating-point with %<==%> or % is unsafe" msgstr "" @@ -53185,33 +53438,33 @@ msgstr "" msgid "used vector type where scalar is required" msgstr "" -#: c/c-typeck.cc:13771 cp/semantics.cc:11320 +#: c/c-typeck.cc:13771 cp/semantics.cc:11389 #, gcc-internal-format msgid "" "%<#pragma omp cancel%> must specify one of %, %, " "% or % clauses" msgstr "" -#: c/c-typeck.cc:13782 c/c-typeck.cc:13792 cp/semantics.cc:11331 -#: cp/semantics.cc:11341 +#: c/c-typeck.cc:13782 c/c-typeck.cc:13792 cp/semantics.cc:11400 +#: cp/semantics.cc:11410 #, gcc-internal-format msgid "expected % % clause modifier" msgstr "" -#: c/c-typeck.cc:13827 cp/semantics.cc:11376 +#: c/c-typeck.cc:13827 cp/semantics.cc:11445 #, gcc-internal-format msgid "" "%<#pragma omp cancellation point%> must specify one of %, " "%, % or % clauses" msgstr "" -#: c/c-typeck.cc:13895 cp/semantics.cc:5481 cp/semantics.cc:8489 +#: c/c-typeck.cc:13895 cp/semantics.cc:5550 cp/semantics.cc:8558 #, gcc-internal-format msgid "%qD is not a variable in %qs clause" msgstr "" -#: c/c-typeck.cc:13899 c/c-typeck.cc:15706 cp/semantics.cc:5485 -#: cp/semantics.cc:8493 +#: c/c-typeck.cc:13899 c/c-typeck.cc:15706 cp/semantics.cc:5554 +#: cp/semantics.cc:8562 #, gcc-internal-format msgid "%qE is not a variable in %qs clause" msgstr "" @@ -53222,85 +53475,85 @@ msgid "%<_Atomic%> %qD in %qs clause" msgstr "" #: c/c-typeck.cc:13917 c/c-typeck.cc:15713 c/c-typeck.cc:15867 -#: cp/semantics.cc:5494 cp/semantics.cc:8500 cp/semantics.cc:8688 +#: cp/semantics.cc:5563 cp/semantics.cc:8569 cp/semantics.cc:8757 #, gcc-internal-format msgid "%qD is threadprivate variable in %qs clause" msgstr "" -#: c/c-typeck.cc:13954 cp/semantics.cc:5528 +#: c/c-typeck.cc:13954 cp/semantics.cc:5597 #, gcc-internal-format msgid "low bound %qE of array section does not have integral type" msgstr "" -#: c/c-typeck.cc:13961 cp/semantics.cc:5535 +#: c/c-typeck.cc:13961 cp/semantics.cc:5604 #, gcc-internal-format msgid "length %qE of array section does not have integral type" msgstr "" -#: c/c-typeck.cc:13984 cp/semantics.cc:5568 +#: c/c-typeck.cc:13984 cp/semantics.cc:5637 #, gcc-internal-format msgid "expected single pointer in %qs clause" msgstr "" #: c/c-typeck.cc:14002 c/c-typeck.cc:14069 c/c-typeck.cc:14362 -#: cp/semantics.cc:5586 cp/semantics.cc:5653 +#: cp/semantics.cc:5655 cp/semantics.cc:5722 #, gcc-internal-format msgid "zero length array section in %qs clause" msgstr "" -#: c/c-typeck.cc:14021 cp/semantics.cc:5605 +#: c/c-typeck.cc:14021 cp/semantics.cc:5674 #, gcc-internal-format msgid "for unknown bound array type length expression must be specified" msgstr "" -#: c/c-typeck.cc:14029 cp/semantics.cc:5613 +#: c/c-typeck.cc:14029 cp/semantics.cc:5682 #, gcc-internal-format msgid "negative low bound in array section in %qs clause" msgstr "" -#: c/c-typeck.cc:14038 c/c-typeck.cc:14162 cp/semantics.cc:5622 -#: cp/semantics.cc:5746 +#: c/c-typeck.cc:14038 c/c-typeck.cc:14162 cp/semantics.cc:5691 +#: cp/semantics.cc:5815 #, gcc-internal-format msgid "negative length in array section in %qs clause" msgstr "" -#: c/c-typeck.cc:14055 cp/semantics.cc:5639 +#: c/c-typeck.cc:14055 cp/semantics.cc:5708 #, gcc-internal-format msgid "low bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.cc:14098 cp/semantics.cc:5682 +#: c/c-typeck.cc:14098 cp/semantics.cc:5751 #, gcc-internal-format msgid "length %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.cc:14113 cp/semantics.cc:5697 +#: c/c-typeck.cc:14113 cp/semantics.cc:5766 #, gcc-internal-format msgid "high bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.cc:14150 cp/semantics.cc:5734 +#: c/c-typeck.cc:14150 cp/semantics.cc:5803 #, gcc-internal-format msgid "for array function parameter length expression must be specified" msgstr "" -#: c/c-typeck.cc:14154 cp/semantics.cc:5738 +#: c/c-typeck.cc:14154 cp/semantics.cc:5807 #, gcc-internal-format msgid "for pointer type length expression must be specified" msgstr "" -#: c/c-typeck.cc:14182 c/c-typeck.cc:14301 cp/semantics.cc:5765 -#: cp/semantics.cc:5901 +#: c/c-typeck.cc:14182 c/c-typeck.cc:14301 cp/semantics.cc:5834 +#: cp/semantics.cc:5970 #, gcc-internal-format msgid "array section is not contiguous in %qs clause" msgstr "" -#: c/c-typeck.cc:14192 cp/semantics.cc:5775 +#: c/c-typeck.cc:14192 cp/semantics.cc:5844 #, gcc-internal-format msgid "%qE does not have pointer or array type" msgstr "" -#: c/c-typeck.cc:14568 cp/semantics.cc:6837 +#: c/c-typeck.cc:14568 cp/semantics.cc:6906 #, gcc-internal-format msgid "iterator %qD has neither integral nor pointer type" msgstr "" @@ -53310,17 +53563,17 @@ msgstr "" msgid "iterator %qD has %<_Atomic%> qualified type" msgstr "" -#: c/c-typeck.cc:14581 cp/semantics.cc:6844 +#: c/c-typeck.cc:14581 cp/semantics.cc:6913 #, gcc-internal-format msgid "iterator %qD has const qualified type" msgstr "" -#: c/c-typeck.cc:14594 cp/semantics.cc:6860 +#: c/c-typeck.cc:14594 cp/semantics.cc:6929 #, gcc-internal-format msgid "iterator step with non-integral type" msgstr "" -#: c/c-typeck.cc:14614 cp/semantics.cc:6896 +#: c/c-typeck.cc:14614 cp/semantics.cc:6965 #, gcc-internal-format msgid "iterator %qD has zero step" msgstr "" @@ -53330,33 +53583,33 @@ msgstr "" msgid "type of iterator %qD refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:14648 cp/semantics.cc:6930 +#: c/c-typeck.cc:14648 cp/semantics.cc:6999 #, gcc-internal-format msgid "begin expression refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:14654 cp/semantics.cc:6936 +#: c/c-typeck.cc:14654 cp/semantics.cc:7005 #, gcc-internal-format msgid "end expression refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:14660 cp/semantics.cc:6942 +#: c/c-typeck.cc:14660 cp/semantics.cc:7011 #, gcc-internal-format msgid "step expression refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:14697 cp/semantics.cc:6990 +#: c/c-typeck.cc:14697 cp/semantics.cc:7059 #, gcc-internal-format msgid "expected pointer in %qs clause" msgstr "" -#: c/c-typeck.cc:14792 cp/semantics.cc:7079 +#: c/c-typeck.cc:14792 cp/semantics.cc:7148 #, gcc-internal-format msgid "" "% and non-% % clauses on the same construct" msgstr "" -#: c/c-typeck.cc:14814 cp/semantics.cc:7099 +#: c/c-typeck.cc:14814 cp/semantics.cc:7168 #, gcc-internal-format msgid "% % clause with array section" msgstr "" @@ -53386,7 +53639,7 @@ msgstr "" msgid "%qE has invalid type for %" msgstr "" -#: c/c-typeck.cc:14943 cp/semantics.cc:6729 +#: c/c-typeck.cc:14943 cp/semantics.cc:6798 #, gcc-internal-format msgid "user defined reduction not found for %qE" msgstr "" @@ -53396,17 +53649,17 @@ msgstr "" msgid "variable length element type in array % clause" msgstr "" -#: c/c-typeck.cc:15049 c/c-typeck.cc:15961 cp/semantics.cc:9225 +#: c/c-typeck.cc:15049 c/c-typeck.cc:15961 cp/semantics.cc:9294 #, gcc-internal-format msgid "% clause must not be used together with %" msgstr "" -#: c/c-typeck.cc:15061 cp/semantics.cc:9293 +#: c/c-typeck.cc:15061 cp/semantics.cc:9362 #, gcc-internal-format msgid "%qE must be % for %" msgstr "" -#: c/c-typeck.cc:15076 cp/semantics.cc:7142 +#: c/c-typeck.cc:15076 cp/semantics.cc:7211 #, gcc-internal-format msgid "" "modifier should not be specified in % clause on % or % " @@ -53424,23 +53677,23 @@ msgstr "" msgid "%<_Atomic%> %qD in % clause" msgstr "" -#: c/c-typeck.cc:15112 cp/semantics.cc:7226 +#: c/c-typeck.cc:15112 cp/semantics.cc:7295 #, gcc-internal-format msgid "% clause step %qE is neither constant nor a parameter" msgstr "" #: c/c-typeck.cc:15142 c/c-typeck.cc:15861 c/c-typeck.cc:16108 -#: cp/semantics.cc:7313 cp/semantics.cc:8682 cp/semantics.cc:9033 +#: cp/semantics.cc:7382 cp/semantics.cc:8751 cp/semantics.cc:9102 #, gcc-internal-format msgid "%qE is not a variable in clause %qs" msgstr "" -#: c/c-typeck.cc:15159 cp/semantics.cc:7331 +#: c/c-typeck.cc:15159 cp/semantics.cc:7400 #, gcc-internal-format msgid "%qD appears more than once in data-sharing clauses" msgstr "" -#: c/c-typeck.cc:15170 cp/semantics.cc:7342 +#: c/c-typeck.cc:15170 cp/semantics.cc:7411 #, gcc-internal-format msgid "%qD appears more than once in reduction clauses" msgstr "" @@ -53452,32 +53705,32 @@ msgstr "" #: c/c-typeck.cc:15194 c/c-typeck.cc:15262 c/c-typeck.cc:15609 #: c/c-typeck.cc:15761 c/c-typeck.cc:15769 c/c-typeck.cc:15785 -#: c/c-typeck.cc:15794 c/c-typeck.cc:15802 cp/semantics.cc:7356 -#: cp/semantics.cc:7366 cp/semantics.cc:7459 cp/semantics.cc:7467 -#: cp/semantics.cc:7514 cp/semantics.cc:8371 cp/semantics.cc:8560 -#: cp/semantics.cc:8568 cp/semantics.cc:8588 cp/semantics.cc:8597 -#: cp/semantics.cc:8605 +#: c/c-typeck.cc:15794 c/c-typeck.cc:15802 cp/semantics.cc:7425 +#: cp/semantics.cc:7435 cp/semantics.cc:7528 cp/semantics.cc:7536 +#: cp/semantics.cc:7583 cp/semantics.cc:8440 cp/semantics.cc:8629 +#: cp/semantics.cc:8637 cp/semantics.cc:8657 cp/semantics.cc:8666 +#: cp/semantics.cc:8674 #, gcc-internal-format msgid "%qD appears more than once in data clauses" msgstr "" #: c/c-typeck.cc:15197 c/c-typeck.cc:15268 c/c-typeck.cc:15805 -#: cp/semantics.cc:7369 cp/semantics.cc:7473 cp/semantics.cc:8608 +#: cp/semantics.cc:7438 cp/semantics.cc:7542 cp/semantics.cc:8677 #, gcc-internal-format msgid "%qD appears both in data and map clauses" msgstr "" -#: c/c-typeck.cc:15242 cp/semantics.cc:7446 +#: c/c-typeck.cc:15242 cp/semantics.cc:7515 #, gcc-internal-format msgid "%qE is not a variable in clause %" msgstr "" -#: c/c-typeck.cc:15282 cp/semantics.cc:7506 +#: c/c-typeck.cc:15282 cp/semantics.cc:7575 #, gcc-internal-format msgid "%qE is not a variable in clause %" msgstr "" -#: c/c-typeck.cc:15301 cp/semantics.cc:7904 +#: c/c-typeck.cc:15301 cp/semantics.cc:7973 #, gcc-internal-format msgid "%qE is not a variable in % clause" msgstr "" @@ -53497,7 +53750,7 @@ msgstr "" msgid "%qE appears more than once in % clauses" msgstr "" -#: c/c-typeck.cc:15335 cp/semantics.cc:7975 +#: c/c-typeck.cc:15335 cp/semantics.cc:8044 #, gcc-internal-format msgid "%qE is not a variable in % clause" msgstr "" @@ -53507,7 +53760,7 @@ msgstr "" msgid "%qE appears more than once in % clauses" msgstr "" -#: c/c-typeck.cc:15354 cp/semantics.cc:8014 +#: c/c-typeck.cc:15354 cp/semantics.cc:8083 #, gcc-internal-format msgid "%qE is not a variable in % clause" msgstr "" @@ -53517,81 +53770,81 @@ msgstr "" msgid "%qE appears more than once in % clauses" msgstr "" -#: c/c-typeck.cc:15430 cp/semantics.cc:8140 +#: c/c-typeck.cc:15430 cp/semantics.cc:8209 #, gcc-internal-format msgid "% clause with % dependence type on array section" msgstr "" -#: c/c-typeck.cc:15445 cp/semantics.cc:8155 +#: c/c-typeck.cc:15445 cp/semantics.cc:8224 #, gcc-internal-format msgid "" "% used with % kind other than % or %" msgstr "" -#: c/c-typeck.cc:15453 cp/semantics.cc:8173 +#: c/c-typeck.cc:15453 cp/semantics.cc:8242 #, gcc-internal-format msgid "%qE is not lvalue expression nor array section in %qs clause" msgstr "" -#: c/c-typeck.cc:15474 cp/semantics.cc:8195 +#: c/c-typeck.cc:15474 cp/semantics.cc:8264 #, gcc-internal-format msgid "" "%qE does not have % type in % clause with % " "dependence type" msgstr "" -#: c/c-typeck.cc:15484 cp/semantics.cc:8207 +#: c/c-typeck.cc:15484 cp/semantics.cc:8276 #, gcc-internal-format msgid "" "%qE should not have % type in % clause with " "dependence type other than %" msgstr "" -#: c/c-typeck.cc:15545 cp/semantics.cc:8306 +#: c/c-typeck.cc:15545 cp/semantics.cc:8375 #, gcc-internal-format msgid "array section does not have mappable type in %qs clause" msgstr "" #: c/c-typeck.cc:15565 c/c-typeck.cc:15641 c/c-typeck.cc:15677 -#: cp/semantics.cc:8326 cp/semantics.cc:8405 cp/semantics.cc:8441 +#: cp/semantics.cc:8395 cp/semantics.cc:8474 cp/semantics.cc:8510 #, gcc-internal-format msgid "unsupported map expression %qE" msgstr "" -#: c/c-typeck.cc:15605 c/c-typeck.cc:15782 cp/semantics.cc:8367 -#: cp/semantics.cc:8585 +#: c/c-typeck.cc:15605 c/c-typeck.cc:15782 cp/semantics.cc:8436 +#: cp/semantics.cc:8654 #, gcc-internal-format msgid "%qD appears more than once in motion clauses" msgstr "" -#: c/c-typeck.cc:15613 c/c-typeck.cc:15788 cp/semantics.cc:8375 -#: cp/semantics.cc:8591 +#: c/c-typeck.cc:15613 c/c-typeck.cc:15788 cp/semantics.cc:8444 +#: cp/semantics.cc:8660 #, gcc-internal-format msgid "%qD appears more than once in map clauses" msgstr "" -#: c/c-typeck.cc:15732 c/c-typeck.cc:15874 cp/semantics.cc:8528 -#: cp/semantics.cc:8695 +#: c/c-typeck.cc:15732 c/c-typeck.cc:15874 cp/semantics.cc:8597 +#: cp/semantics.cc:8764 #, gcc-internal-format msgid "%qD does not have a mappable type in %qs clause" msgstr "" -#: c/c-typeck.cc:15857 cp/semantics.cc:8677 +#: c/c-typeck.cc:15857 cp/semantics.cc:8746 #, gcc-internal-format msgid "%qE is neither a variable nor a function name in clause %qs" msgstr "" -#: c/c-typeck.cc:15883 cp/semantics.cc:8707 +#: c/c-typeck.cc:15883 cp/semantics.cc:8776 #, gcc-internal-format msgid "%qE appears more than once on the same % directive" msgstr "" -#: c/c-typeck.cc:15897 cp/semantics.cc:8723 +#: c/c-typeck.cc:15897 cp/semantics.cc:8792 #, gcc-internal-format msgid "%qD is not an argument in % clause" msgstr "" -#: c/c-typeck.cc:15900 cp/semantics.cc:8726 +#: c/c-typeck.cc:15900 cp/semantics.cc:8795 #, gcc-internal-format msgid "%qE is not an argument in % clause" msgstr "" @@ -53606,22 +53859,22 @@ msgstr "" msgid "%qs variable is neither a pointer nor an array" msgstr "" -#: c/c-typeck.cc:15974 c/c-typeck.cc:16069 cp/semantics.cc:9187 +#: c/c-typeck.cc:15974 c/c-typeck.cc:16069 cp/semantics.cc:9256 #, gcc-internal-format msgid "% clause must not be used together with %" msgstr "" -#: c/c-typeck.cc:15994 cp/semantics.cc:8247 +#: c/c-typeck.cc:15994 cp/semantics.cc:8316 #, gcc-internal-format msgid "too many %qs clauses on a task construct" msgstr "" -#: c/c-typeck.cc:16091 cp/semantics.cc:9001 +#: c/c-typeck.cc:16091 cp/semantics.cc:9070 #, gcc-internal-format msgid "% clause is incompatible with %" msgstr "" -#: c/c-typeck.cc:16158 cp/semantics.cc:9364 +#: c/c-typeck.cc:16158 cp/semantics.cc:9433 #, gcc-internal-format msgid "%qE is predetermined %qs for %qs" msgstr "" @@ -53633,40 +53886,40 @@ msgid "" "clauses" msgstr "" -#: c/c-typeck.cc:16199 cp/semantics.cc:9139 +#: c/c-typeck.cc:16199 cp/semantics.cc:9208 #, gcc-internal-format msgid "% clause value is bigger than % clause value" msgstr "" -#: c/c-typeck.cc:16211 cp/semantics.cc:9152 +#: c/c-typeck.cc:16211 cp/semantics.cc:9221 #, gcc-internal-format msgid "" "% schedule modifier specified together with % clause" msgstr "" -#: c/c-typeck.cc:16222 c/c-typeck.cc:16230 cp/semantics.cc:9161 -#: cp/semantics.cc:9179 +#: c/c-typeck.cc:16222 c/c-typeck.cc:16230 cp/semantics.cc:9230 +#: cp/semantics.cc:9248 #, gcc-internal-format msgid "%qs clause specified together with % % clause" msgstr "" -#: c/c-typeck.cc:16278 cp/semantics.cc:9119 +#: c/c-typeck.cc:16278 cp/semantics.cc:9188 #, gcc-internal-format msgid "" "% clause step is a parameter %qD not specified in % clause" msgstr "" -#: c/c-typeck.cc:16329 cp/semantics.cc:9169 +#: c/c-typeck.cc:16329 cp/semantics.cc:9238 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:16339 cp/semantics.cc:9198 +#: c/c-typeck.cc:16339 cp/semantics.cc:9267 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:16357 cp/semantics.cc:9389 +#: c/c-typeck.cc:16357 cp/semantics.cc:9458 #, gcc-internal-format msgid "" "the event handle of a % clause should not be in a data-sharing " @@ -53928,14 +54181,14 @@ msgstr "" msgid " no known conversion for argument %d from %qH to %qI" msgstr "" -#: cp/call.cc:3904 cp/pt.cc:7090 +#: cp/call.cc:3904 cp/pt.cc:7091 #, 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/call.cc:3909 cp/pt.cc:7095 +#: cp/call.cc:3909 cp/pt.cc:7096 #, gcc-internal-format, gfc-internal-format msgid " candidate expects %d argument, %d provided" msgid_plural " candidate expects %d arguments, %d provided" @@ -54355,7 +54608,7 @@ msgstr "" msgid "%q#D is private within this context" msgstr "" -#: cp/call.cc:8166 cp/decl.cc:9117 +#: cp/call.cc:8166 cp/decl.cc:9113 #, gcc-internal-format msgid "declared private here" msgstr "" @@ -54365,7 +54618,7 @@ msgstr "" msgid "%q#D is protected within this context" msgstr "" -#: cp/call.cc:8172 cp/decl.cc:9118 +#: cp/call.cc:8172 cp/decl.cc:9114 #, gcc-internal-format msgid "declared protected here" msgstr "" @@ -54380,8 +54633,8 @@ msgstr "" msgid "passing NULL to non-pointer argument %P of %qD" msgstr "" -#: cp/call.cc:8263 cp/call.cc:8282 cp/decl.cc:10846 cp/decl.cc:10854 -#: cp/typeck.cc:4605 +#: cp/call.cc:8263 cp/call.cc:8282 cp/decl.cc:10850 cp/decl.cc:10858 +#: cp/typeck.cc:4606 #, gcc-internal-format msgid " declared here" msgstr "" @@ -54453,419 +54706,419 @@ msgstr "" msgid "in C++11 and above a default constructor can be explicit" msgstr "" -#: cp/call.cc:8842 +#: cp/call.cc:8837 msgid "cannot bind rvalue reference of type %qH to lvalue of type %qI" msgstr "" -#: cp/call.cc:8851 +#: cp/call.cc:8846 msgid "" "cannot bind non-const lvalue reference of type %qH to a value of type %qI" msgstr "" -#: cp/call.cc:8856 +#: cp/call.cc:8851 msgid "" "cannot bind non-const lvalue reference of type %qH to an rvalue of type %qI" msgstr "" #. extype is volatile -#: cp/call.cc:8859 +#: cp/call.cc:8854 msgid "cannot bind lvalue reference of type %qH to an rvalue of type %qI" msgstr "" -#: cp/call.cc:8872 +#: cp/call.cc:8867 msgid "cannot bind reference of type %qH to %qI due to different array bounds" msgstr "" -#: cp/call.cc:8875 +#: cp/call.cc:8870 msgid "binding reference of type %qH to %qI discards qualifiers" msgstr "" -#: cp/call.cc:8914 +#: cp/call.cc:8909 #, gcc-internal-format msgid "cannot bind bit-field %qE to %qT" msgstr "" -#: cp/call.cc:8917 cp/call.cc:8935 +#: cp/call.cc:8912 cp/call.cc:8930 #, gcc-internal-format msgid "cannot bind packed field %qE to %qT" msgstr "" -#: cp/call.cc:8920 +#: cp/call.cc:8915 #, gcc-internal-format msgid "cannot bind rvalue %qE to %qT" msgstr "" -#: cp/call.cc:9121 +#: cp/call.cc:9116 msgid "implicit conversion from %qH to %qI when passing argument to function" msgstr "" -#: cp/call.cc:9150 cp/cvt.cc:1997 +#: cp/call.cc:9145 cp/cvt.cc:2011 #, gcc-internal-format msgid "" "scoped enum %qT passed through %<...%> as %qT before %<-fabi-version=6%>, " "%qT after" msgstr "" -#: cp/call.cc:9194 +#: cp/call.cc:9189 #, gcc-internal-format msgid "" "passing objects of non-trivially-copyable type %q#T through %<...%> is " "conditionally supported" msgstr "" -#: cp/call.cc:9230 +#: cp/call.cc:9225 #, gcc-internal-format msgid "cannot receive reference type %qT through %<...%>" msgstr "" -#: cp/call.cc:9240 +#: cp/call.cc:9235 #, gcc-internal-format msgid "" "receiving objects of non-trivially-copyable type %q#T through %<...%> is " "conditionally-supported" msgstr "" -#: cp/call.cc:9308 +#: cp/call.cc:9303 #, gcc-internal-format msgid "recursive evaluation of default argument for %q#D" msgstr "" -#: cp/call.cc:9317 +#: cp/call.cc:9312 #, gcc-internal-format msgid "" "call to %qD uses the default argument for parameter %P, which is not yet " "defined" msgstr "" -#: cp/call.cc:9417 +#: cp/call.cc:9412 #, gcc-internal-format msgid "argument of function call might be a candidate for a format attribute" msgstr "" -#: cp/call.cc:9497 +#: cp/call.cc:9492 #, gcc-internal-format msgid "use of multiversioned function without a default" msgstr "" -#: cp/call.cc:10002 +#: cp/call.cc:9997 #, gcc-internal-format msgid "use %<-fdiagnostics-all-candidates%> to display considered candidates" msgstr "" -#: cp/call.cc:10125 +#: cp/call.cc:10120 #, gcc-internal-format msgid "passing %qT as % argument discards qualifiers" msgstr "" -#: cp/call.cc:10128 cp/call.cc:12974 +#: cp/call.cc:10123 cp/call.cc:12969 #, gcc-internal-format msgid " in call to %qD" msgstr "" -#: cp/call.cc:10153 +#: cp/call.cc:10148 #, gcc-internal-format msgid "%qT is not an accessible base of %qT" msgstr "" -#: cp/call.cc:10378 +#: cp/call.cc:10373 #, gcc-internal-format msgid "passing arguments to ellipsis of inherited constructor %qD" msgstr "" -#: cp/call.cc:10515 +#: cp/call.cc:10510 #, gcc-internal-format msgid "" "assignment from temporary % does not extend the lifetime " "of the underlying array" msgstr "" -#: cp/call.cc:10882 +#: cp/call.cc:10877 #, gcc-internal-format msgid "%qD writing to an object of type %#qT with no trivial copy-assignment" msgstr "" -#: cp/call.cc:10885 +#: cp/call.cc:10880 #, gcc-internal-format msgid "%qD writing to an object of non-trivial type %#qT%s" msgstr "" -#: cp/call.cc:10890 +#: cp/call.cc:10885 #, gcc-internal-format msgid "%qD writing to an object of type %#qT with %qs member %qD" msgstr "" -#: cp/call.cc:10895 +#: cp/call.cc:10890 #, gcc-internal-format msgid "" "%qD writing to an object of type %#qT containing a pointer to data member%s" msgstr "" -#: cp/call.cc:10910 +#: cp/call.cc:10905 #, gcc-internal-format msgid "; use assignment or value-initialization instead" msgstr "" -#: cp/call.cc:10912 +#: cp/call.cc:10907 #, gcc-internal-format msgid "; use assignment instead" msgstr "" -#: cp/call.cc:10914 +#: cp/call.cc:10909 #, gcc-internal-format msgid "; use value-initialization instead" msgstr "" -#: cp/call.cc:10917 +#: cp/call.cc:10912 #, gcc-internal-format msgid "%qD clearing an object of type %#qT with no trivial copy-assignment%s" msgstr "" -#: cp/call.cc:10920 +#: cp/call.cc:10915 #, gcc-internal-format msgid "%qD clearing an object of non-trivial type %#qT%s" msgstr "" -#: cp/call.cc:10922 +#: cp/call.cc:10917 #, gcc-internal-format msgid "%qD clearing an object of type %#qT containing a pointer-to-member%s" msgstr "" -#: cp/call.cc:10943 +#: cp/call.cc:10938 #, gcc-internal-format msgid "; use copy-assignment or copy-initialization instead" msgstr "" -#: cp/call.cc:10945 +#: cp/call.cc:10940 #, gcc-internal-format msgid "; use copy-assignment instead" msgstr "" -#: cp/call.cc:10947 +#: cp/call.cc:10942 #, gcc-internal-format msgid "; use copy-initialization instead" msgstr "" -#: cp/call.cc:10950 +#: cp/call.cc:10945 #, gcc-internal-format msgid "%qD writing to an object of type %#qT with no trivial copy-assignment%s" msgstr "" -#: cp/call.cc:10953 +#: cp/call.cc:10948 #, gcc-internal-format msgid "%qD writing to an object of non-trivially copyable type %#qT%s" msgstr "" -#: cp/call.cc:10956 +#: cp/call.cc:10951 #, gcc-internal-format msgid "%qD writing to an object with a deleted copy constructor" msgstr "" -#: cp/call.cc:10967 +#: cp/call.cc:10962 #, gcc-internal-format msgid "%qD copying an object of non-trivial type %#qT from an array of %#qT" msgstr "" -#: cp/call.cc:10979 +#: cp/call.cc:10974 #, gcc-internal-format msgid "" "%qD copying an object of type %#qT with %qs member %qD from an array of " "%#qT; use assignment or copy-initialization instead" msgstr "" -#: cp/call.cc:10998 +#: cp/call.cc:10993 #, gcc-internal-format msgid "" "%qD writing to an object of a non-trivial type %#qT leaves %wu bytes " "unchanged" msgstr "" -#: cp/call.cc:11001 +#: cp/call.cc:10996 #, gcc-internal-format msgid "" "%qD writing to an object of a non-trivial type %#qT leaves %wu byte unchanged" msgstr "" -#: cp/call.cc:11011 +#: cp/call.cc:11006 #, gcc-internal-format msgid "" "%qD moving an object of non-trivially copyable type %#qT; use % and " "% instead" msgstr "" -#: cp/call.cc:11014 +#: cp/call.cc:11009 #, gcc-internal-format msgid "" "%qD moving an object of type %#qT with deleted copy constructor; use % " "and % instead" msgstr "" -#: cp/call.cc:11017 +#: cp/call.cc:11012 #, gcc-internal-format msgid "%qD moving an object of type %#qT with deleted destructor" msgstr "" -#: cp/call.cc:11026 +#: cp/call.cc:11021 #, gcc-internal-format msgid "" "%qD moving an object of non-trivial type %#qT and size %E into a region of " "size %E" msgstr "" -#: cp/call.cc:11048 +#: cp/call.cc:11043 #, gcc-internal-format msgid "%#qT declared here" msgstr "" -#: cp/call.cc:11102 +#: cp/call.cc:11097 #, gcc-internal-format msgid "" "argument %u in call to function %qE has pointer to a non-trivially-copyable " "type (%qT)" msgstr "" -#: cp/call.cc:11169 +#: cp/call.cc:11164 #, gcc-internal-format msgid "constructor delegates to itself" msgstr "" -#: cp/call.cc:11444 cp/typeck.cc:10388 +#: cp/call.cc:11439 cp/typeck.cc:10389 msgid "cannot convert %qH to %qI" msgstr "" -#: cp/call.cc:11466 +#: cp/call.cc:11461 #, gcc-internal-format msgid "no matching function for call to %<%T::operator %T(%A)%#V%>" msgstr "" -#: cp/call.cc:11498 +#: cp/call.cc:11493 #, gcc-internal-format msgid "no matching function for call to %<%T::%s%E(%A)%#V%>" msgstr "" -#: cp/call.cc:11546 +#: cp/call.cc:11541 #, gcc-internal-format msgid "call to non-function %qD" msgstr "" -#: cp/call.cc:11584 cp/pt.cc:17138 cp/typeck.cc:3482 +#: cp/call.cc:11579 cp/pt.cc:17141 cp/typeck.cc:3483 #, gcc-internal-format msgid "cannot call constructor %<%T::%D%> directly" msgstr "" -#: cp/call.cc:11586 +#: cp/call.cc:11581 #, gcc-internal-format msgid "for a function-style cast, remove the redundant %<::%D%>" msgstr "" -#: cp/call.cc:11768 +#: cp/call.cc:11763 #, gcc-internal-format msgid "no matching function for call to %<%s(%A)%>" msgstr "" -#: cp/call.cc:11771 +#: cp/call.cc:11766 #, gcc-internal-format msgid "call of overloaded %<%s(%A)%> is ambiguous" msgstr "" -#: cp/call.cc:11794 +#: cp/call.cc:11789 #, gcc-internal-format msgid "pure virtual %q#D called from non-static data member initializer" msgstr "" -#: cp/call.cc:11799 +#: cp/call.cc:11794 #, gcc-internal-format msgid "pure virtual %q#D called from constructor" msgstr "" -#: cp/call.cc:11800 +#: cp/call.cc:11795 #, gcc-internal-format msgid "pure virtual %q#D called from destructor" msgstr "" -#: cp/call.cc:11823 +#: cp/call.cc:11818 #, gcc-internal-format msgid "cannot call member function %qD without object" msgstr "" -#: cp/call.cc:12972 +#: cp/call.cc:12967 #, gcc-internal-format msgid "passing %qT chooses %qT over %qT" msgstr "" -#: cp/call.cc:12998 +#: cp/call.cc:12993 #, gcc-internal-format msgid "" "C++20 says that these are ambiguous, even though the second is reversed:" msgstr "" -#: cp/call.cc:13021 +#: cp/call.cc:13016 #, gcc-internal-format msgid "try making the operator a % member function" msgstr "" -#: cp/call.cc:13084 +#: cp/call.cc:13079 #, gcc-internal-format msgid "choosing %qD over %qD" msgstr "" -#: cp/call.cc:13085 +#: cp/call.cc:13080 msgid " for conversion from %qH to %qI" msgstr "" -#: cp/call.cc:13088 +#: cp/call.cc:13083 #, gcc-internal-format msgid " because conversion sequence for the argument is better" msgstr "" -#: cp/call.cc:13372 +#: cp/call.cc:13367 #, gcc-internal-format msgid "default argument mismatch in overload resolution" msgstr "" -#: cp/call.cc:13376 +#: cp/call.cc:13371 #, gcc-internal-format msgid " candidate 1: %q#F" msgstr "" -#: cp/call.cc:13378 +#: cp/call.cc:13373 #, gcc-internal-format msgid " candidate 2: %q#F" msgstr "" -#: cp/call.cc:13424 +#: cp/call.cc:13419 #, 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.cc:13832 +#: cp/call.cc:13827 #, gcc-internal-format msgid "a temporary bound to %qD only persists until the constructor exits" msgstr "" -#: cp/call.cc:13985 +#: cp/call.cc:13980 msgid "" "invalid initialization of non-const reference of type %qH from an rvalue of " "type %qI" msgstr "" -#: cp/call.cc:13989 +#: cp/call.cc:13984 msgid "" "invalid initialization of reference of type %qH from expression of type %qI" msgstr "" -#: cp/call.cc:14281 +#: cp/call.cc:14302 #, gcc-internal-format msgid "possibly dangling reference to a temporary" msgstr "" -#: cp/call.cc:14282 +#: cp/call.cc:14303 #, gcc-internal-format msgid "the temporary was destroyed at the end of the full expression %qE" msgstr "" -#: cp/call.cc:14550 +#: cp/call.cc:14571 #, gcc-internal-format msgid "explicit conversion function was not considered" msgstr "" @@ -54959,7 +55212,7 @@ msgid "%qD inherits the %E ABI tag that %qT (used in its return type) has" msgstr "" #: cp/class.cc:1694 cp/class.cc:1701 cp/class.cc:1708 cp/class.cc:1720 -#: cp/cvt.cc:1104 rust/backend/rust-tree.cc:643 +#: cp/cvt.cc:1118 rust/backend/rust-tree.cc:643 #, gcc-internal-format msgid "%qT declared here" msgstr "" @@ -55349,7 +55602,7 @@ msgstr "" msgid "next member %q#D declared here" msgstr "" -#: cp/class.cc:7785 cp/decl.cc:17628 cp/parser.cc:27637 +#: cp/class.cc:7785 cp/decl.cc:17637 cp/parser.cc:27637 #, gcc-internal-format msgid "redefinition of %q#T" msgstr "" @@ -55487,7 +55740,7 @@ msgstr "" msgid "lambdas are implicitly % only in C++17 and later" msgstr "" -#: cp/constexpr.cc:272 cp/decl.cc:14668 +#: cp/constexpr.cc:272 cp/decl.cc:14672 #, gcc-internal-format msgid "" "% destructors only available with %<-std=c++20%> or %<-std=gnu+" @@ -55510,120 +55763,120 @@ msgstr "" msgid "% constructor does not have empty body" msgstr "" -#: cp/constexpr.cc:831 +#: cp/constexpr.cc:829 #, gcc-internal-format msgid "" "% constructor for union %qT must initialize exactly one non-" "static data member" msgstr "" -#: cp/constexpr.cc:892 +#: cp/constexpr.cc:890 #, gcc-internal-format msgid "" "member %qD must be initialized by mem-initializer in % " "constructor" msgstr "" -#: cp/constexpr.cc:955 +#: cp/constexpr.cc:953 #, gcc-internal-format msgid "body of % function %qD not a return-statement" msgstr "" -#: cp/constexpr.cc:1083 +#: cp/constexpr.cc:1081 #, gcc-internal-format msgid "%qD is not usable as a % function because:" msgstr "" -#: cp/constexpr.cc:1320 cp/constexpr.cc:6349 +#: cp/constexpr.cc:1318 cp/constexpr.cc:6347 #, gcc-internal-format msgid "destroying %qE outside its lifetime" msgstr "" -#: cp/constexpr.cc:1611 cp/constexpr.cc:3308 +#: cp/constexpr.cc:1609 cp/constexpr.cc:3306 #: rust/backend/rust-constexpr.cc:3326 rust/backend/rust-constexpr.cc:3589 #, gcc-internal-format msgid "% call flows off the end of the function" msgstr "" -#: cp/constexpr.cc:1613 cp/constexpr.cc:1712 cp/constexpr.cc:1721 -#: cp/constexpr.cc:3580 rust/backend/rust-constexpr.cc:3331 +#: cp/constexpr.cc:1611 cp/constexpr.cc:1710 cp/constexpr.cc:1719 +#: cp/constexpr.cc:3578 rust/backend/rust-constexpr.cc:3331 #: rust/backend/rust-constexpr.cc:3341 rust/backend/rust-constexpr.cc:4324 #, gcc-internal-format msgid "%q+E is not a constant expression" msgstr "" -#: cp/constexpr.cc:1898 cp/constexpr.cc:5915 cp/constexpr.cc:8214 +#: cp/constexpr.cc:1896 cp/constexpr.cc:5913 cp/constexpr.cc:8212 #: rust/backend/rust-constexpr.cc:875 rust/backend/rust-constexpr.cc:2494 #, gcc-internal-format msgid "dereferencing a null pointer" msgstr "" -#: cp/constexpr.cc:2077 +#: cp/constexpr.cc:2075 #, gcc-internal-format msgid "the comparison reduces to %qE" msgstr "" -#: cp/constexpr.cc:2080 +#: cp/constexpr.cc:2078 #, gcc-internal-format msgid "%qE evaluates to false" msgstr "" -#: cp/constexpr.cc:2159 +#: cp/constexpr.cc:2157 #, gcc-internal-format msgid "failed % attribute assumption" msgstr "" -#: cp/constexpr.cc:2194 cp/constexpr.cc:9664 +#: cp/constexpr.cc:2192 cp/constexpr.cc:9662 #: rust/backend/rust-constexpr.cc:5758 #, gcc-internal-format msgid "call to internal function %qE" msgstr "" -#: cp/constexpr.cc:2248 rust/backend/rust-constexpr.cc:2615 +#: cp/constexpr.cc:2246 rust/backend/rust-constexpr.cc:2615 #, gcc-internal-format msgid "modifying a const object %qE is not allowed in a constant expression" msgstr "" -#: cp/constexpr.cc:2276 rust/backend/rust-constexpr.cc:2618 +#: cp/constexpr.cc:2274 rust/backend/rust-constexpr.cc:2618 #, gcc-internal-format msgid "originally declared % here" msgstr "" -#: cp/constexpr.cc:2532 cp/constexpr.cc:2588 cp/constexpr.cc:2621 -#: cp/constexpr.cc:2643 +#: cp/constexpr.cc:2530 cp/constexpr.cc:2586 cp/constexpr.cc:2619 +#: cp/constexpr.cc:2641 #, gcc-internal-format msgid "reference % failed" msgstr "" -#: cp/constexpr.cc:2533 +#: cp/constexpr.cc:2531 #, gcc-internal-format msgid "dynamic type %qT of its operand does not have a base class of type %qT" msgstr "" -#: cp/constexpr.cc:2557 +#: cp/constexpr.cc:2555 #, gcc-internal-format msgid "virtual table pointer is used uninitialized" msgstr "" -#: cp/constexpr.cc:2589 cp/constexpr.cc:2622 +#: cp/constexpr.cc:2587 cp/constexpr.cc:2620 #, gcc-internal-format msgid "" "static type %qT of its operand is a non-public base class of dynamic type %qT" msgstr "" -#: cp/constexpr.cc:2645 +#: cp/constexpr.cc:2643 #, gcc-internal-format msgid "%qT is an ambiguous base class of dynamic type %qT of its operand" msgstr "" -#: cp/constexpr.cc:2648 +#: cp/constexpr.cc:2646 #, gcc-internal-format msgid "" "dynamic type %qT of its operand does not have an unambiguous public base " "class %qT" msgstr "" -#: cp/constexpr.cc:2725 cp/constexpr.cc:3005 cp/constexpr.cc:9700 +#: cp/constexpr.cc:2723 cp/constexpr.cc:3003 cp/constexpr.cc:9698 #: rust/backend/rust-constexpr.cc:5789 #, gcc-internal-format msgid "call to non-% function %qD" @@ -55631,149 +55884,149 @@ msgstr "" #. virtual_offset is only set for virtual bases, which make the #. class non-literal, so we don't need to handle it here. -#: cp/constexpr.cc:2731 +#: cp/constexpr.cc:2729 #, gcc-internal-format msgid "calling constexpr member function %qD through virtual base subobject" msgstr "" -#: cp/constexpr.cc:2847 rust/backend/rust-constexpr.cc:3387 +#: cp/constexpr.cc:2845 rust/backend/rust-constexpr.cc:3387 #, gcc-internal-format msgid "expression %qE does not designate a % function" msgstr "" -#: cp/constexpr.cc:2925 +#: cp/constexpr.cc:2923 #, gcc-internal-format msgid "array deallocation of object allocated with non-array allocation" msgstr "" -#: cp/constexpr.cc:2929 cp/constexpr.cc:2952 +#: cp/constexpr.cc:2927 cp/constexpr.cc:2950 #, gcc-internal-format msgid "allocation performed here" msgstr "" -#: cp/constexpr.cc:2948 +#: cp/constexpr.cc:2946 #, gcc-internal-format msgid "non-array deallocation of object allocated with array allocation" msgstr "" -#: cp/constexpr.cc:2965 +#: cp/constexpr.cc:2963 #, gcc-internal-format msgid "deallocation of already deallocated storage" msgstr "" -#: cp/constexpr.cc:2972 +#: cp/constexpr.cc:2970 #, gcc-internal-format msgid "deallocation of storage that was not previously allocated" msgstr "" -#: cp/constexpr.cc:3089 rust/backend/rust-constexpr.cc:3442 +#: cp/constexpr.cc:3087 rust/backend/rust-constexpr.cc:3442 #, gcc-internal-format msgid "%qD called in a constant expression before its definition is complete" msgstr "" -#: cp/constexpr.cc:3096 +#: cp/constexpr.cc:3094 #, gcc-internal-format msgid "%qD called in a constant expression" msgstr "" -#: cp/constexpr.cc:3100 rust/backend/rust-constexpr.cc:3456 +#: cp/constexpr.cc:3098 rust/backend/rust-constexpr.cc:3456 #, gcc-internal-format msgid "%qD used before its definition" msgstr "" -#: cp/constexpr.cc:3172 rust/backend/rust-constexpr.cc:3498 +#: cp/constexpr.cc:3170 rust/backend/rust-constexpr.cc:3498 #, gcc-internal-format msgid "call has circular dependency" msgstr "" -#: cp/constexpr.cc:3183 rust/backend/rust-constexpr.cc:3509 +#: cp/constexpr.cc:3181 rust/backend/rust-constexpr.cc:3509 #, gcc-internal-format msgid "" "% evaluation depth exceeds maximum of %d (use %<-fconstexpr-" "depth=%> to increase the maximum)" msgstr "" -#: cp/constexpr.cc:3538 +#: cp/constexpr.cc:3536 #, gcc-internal-format msgid "reference to %qD is not a constant expression" msgstr "" -#: cp/constexpr.cc:3541 +#: cp/constexpr.cc:3539 #, gcc-internal-format msgid "pointer to %qD is not a constant expression" msgstr "" -#: cp/constexpr.cc:3547 +#: cp/constexpr.cc:3545 #, gcc-internal-format msgid "" "address of non-static constexpr variable %qD may differ on each invocation " "of the enclosing function; add % to give it a constant address" msgstr "" -#: cp/constexpr.cc:3623 +#: cp/constexpr.cc:3621 #, gcc-internal-format msgid "right operand of shift expression %q+E is negative" msgstr "" -#: cp/constexpr.cc:3630 +#: cp/constexpr.cc:3628 #, gcc-internal-format msgid "" "right operand of shift expression %q+E is greater than or equal to the " "precision %wu of the left operand" msgstr "" -#: cp/constexpr.cc:3653 +#: cp/constexpr.cc:3651 #, gcc-internal-format msgid "left operand of shift expression %q+E is negative" msgstr "" -#: cp/constexpr.cc:3672 +#: cp/constexpr.cc:3670 #, gcc-internal-format msgid "shift expression %q+E overflows" msgstr "" -#: cp/constexpr.cc:3871 +#: cp/constexpr.cc:3869 #, gcc-internal-format msgid "arithmetic involving a null pointer in %qE" msgstr "" -#: cp/constexpr.cc:4306 rust/backend/rust-constexpr.cc:4399 +#: cp/constexpr.cc:4304 rust/backend/rust-constexpr.cc:4399 #, gcc-internal-format msgid "" "array subscript value %qE is outside the bounds of array %qD of type %qT" msgstr "" -#: cp/constexpr.cc:4309 rust/backend/rust-constexpr.cc:4404 +#: cp/constexpr.cc:4307 rust/backend/rust-constexpr.cc:4404 #, gcc-internal-format msgid "" "nonzero array subscript %qE is used with array %qD of type %qT with unknown " "bounds" msgstr "" -#: cp/constexpr.cc:4314 rust/backend/rust-constexpr.cc:4411 +#: cp/constexpr.cc:4312 rust/backend/rust-constexpr.cc:4411 #, gcc-internal-format msgid "array subscript value %qE is outside the bounds of array type %qT" msgstr "" -#: cp/constexpr.cc:4317 rust/backend/rust-constexpr.cc:4416 +#: cp/constexpr.cc:4315 rust/backend/rust-constexpr.cc:4416 #, gcc-internal-format msgid "" "nonzero array subscript %qE is used with array of type %qT with unknown " "bounds" msgstr "" -#: cp/constexpr.cc:4505 rust/backend/rust-constexpr.cc:1667 +#: cp/constexpr.cc:4503 rust/backend/rust-constexpr.cc:1667 #, gcc-internal-format msgid "accessing uninitialized array element" msgstr "" -#: cp/constexpr.cc:4567 rust/backend/rust-constexpr.cc:1724 +#: cp/constexpr.cc:4565 rust/backend/rust-constexpr.cc:1724 #, gcc-internal-format msgid "dereferencing a null pointer in %qE" msgstr "" -#: cp/constexpr.cc:4586 cp/constexpr.cc:4702 cp/constexpr.cc:4714 -#: cp/constexpr.cc:7408 cp/constexpr.cc:7528 cp/constexpr.cc:9614 +#: cp/constexpr.cc:4584 cp/constexpr.cc:4700 cp/constexpr.cc:4712 +#: cp/constexpr.cc:7406 cp/constexpr.cc:7526 cp/constexpr.cc:9612 #: rust/backend/rust-constexpr.cc:1738 rust/backend/rust-constexpr.cc:1983 #: rust/backend/rust-constexpr.cc:2225 rust/backend/rust-constexpr.cc:4743 #: rust/backend/rust-constexpr.cc:5712 @@ -55781,269 +56034,269 @@ msgstr "" msgid "%qE is not a constant expression" msgstr "" -#: cp/constexpr.cc:4594 rust/backend/rust-constexpr.cc:1744 +#: cp/constexpr.cc:4592 rust/backend/rust-constexpr.cc:1744 #, gcc-internal-format msgid "mutable %qD is not usable in a constant expression" msgstr "" -#: cp/constexpr.cc:4626 cp/constexpr.cc:4662 cp/constexpr.cc:6513 +#: cp/constexpr.cc:4624 cp/constexpr.cc:4660 cp/constexpr.cc:6511 #: rust/backend/rust-constexpr.cc:1774 rust/backend/rust-constexpr.cc:1797 #, gcc-internal-format msgid "accessing uninitialized member %qD" msgstr "" -#: cp/constexpr.cc:4628 cp/constexpr.cc:4641 cp/constexpr.cc:6508 +#: cp/constexpr.cc:4626 cp/constexpr.cc:4639 cp/constexpr.cc:6506 #: rust/backend/rust-constexpr.cc:1776 #, gcc-internal-format msgid "" "accessing %qD member instead of initialized %qD member in constant expression" msgstr "" -#: cp/constexpr.cc:4780 +#: cp/constexpr.cc:4778 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is a union type" msgstr "" -#: cp/constexpr.cc:4783 +#: cp/constexpr.cc:4781 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a union type" msgstr "" -#: cp/constexpr.cc:4794 +#: cp/constexpr.cc:4792 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is a pointer type" msgstr "" -#: cp/constexpr.cc:4797 +#: cp/constexpr.cc:4795 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a pointer type" msgstr "" -#: cp/constexpr.cc:4808 +#: cp/constexpr.cc:4806 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is a reference type" msgstr "" -#: cp/constexpr.cc:4811 +#: cp/constexpr.cc:4809 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a reference type" msgstr "" -#: cp/constexpr.cc:4822 +#: cp/constexpr.cc:4820 #, gcc-internal-format msgid "" "%qs is not a constant expression because %qT is a pointer to member type" msgstr "" -#: cp/constexpr.cc:4826 +#: cp/constexpr.cc:4824 #, gcc-internal-format msgid "" "%qs is not a constant expression because %qT contains a pointer to member " "type" msgstr "" -#: cp/constexpr.cc:4837 +#: cp/constexpr.cc:4835 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is volatile" msgstr "" -#: cp/constexpr.cc:4840 +#: cp/constexpr.cc:4838 #, gcc-internal-format msgid "" "%qs is not a constant expression because %qT contains a volatile subobject" msgstr "" -#: cp/constexpr.cc:4993 +#: cp/constexpr.cc:4991 #, gcc-internal-format msgid "%qs cannot be constant evaluated on the target" msgstr "" -#: cp/constexpr.cc:5002 cp/constexpr.cc:5012 +#: cp/constexpr.cc:5000 cp/constexpr.cc:5010 #, gcc-internal-format msgid "%qs cannot be constant evaluated because the type is too large" msgstr "" -#: cp/constexpr.cc:5032 +#: cp/constexpr.cc:5030 #, gcc-internal-format msgid "%qs cannot be constant evaluated because the argument cannot be encoded" msgstr "" -#: cp/constexpr.cc:5078 +#: cp/constexpr.cc:5076 #, gcc-internal-format msgid "%qs accessing uninitialized byte at offset %d" msgstr "" -#: cp/constexpr.cc:5090 +#: cp/constexpr.cc:5088 #, gcc-internal-format msgid "" "%qs cannot be constant evaluated because the argument cannot be interpreted" msgstr "" -#: cp/constexpr.cc:5935 rust/backend/rust-constexpr.cc:895 +#: cp/constexpr.cc:5933 rust/backend/rust-constexpr.cc:895 #, gcc-internal-format msgid "accessing value of %qE through a %qT glvalue in a constant expression" msgstr "" #. Provide a more accurate message for deleted variables. -#: cp/constexpr.cc:5975 cp/constexpr.cc:6008 +#: cp/constexpr.cc:5973 cp/constexpr.cc:6006 #, gcc-internal-format msgid "use of allocated storage after deallocation in a constant expression" msgstr "" -#: cp/constexpr.cc:5977 cp/constexpr.cc:6003 cp/constexpr.cc:6010 -#: cp/constexpr.cc:6344 +#: cp/constexpr.cc:5975 cp/constexpr.cc:6001 cp/constexpr.cc:6008 +#: cp/constexpr.cc:6342 #, gcc-internal-format msgid "allocated here" msgstr "" -#: cp/constexpr.cc:5981 +#: cp/constexpr.cc:5979 #, gcc-internal-format msgid "accessing %qE outside its lifetime" msgstr "" -#: cp/constexpr.cc:6001 +#: cp/constexpr.cc:5999 #, gcc-internal-format msgid "" "the content of uninitialized storage is not usable in a constant expression" msgstr "" -#: cp/constexpr.cc:6013 rust/backend/rust-constexpr.cc:4041 +#: cp/constexpr.cc:6011 rust/backend/rust-constexpr.cc:4041 #, gcc-internal-format msgid "the value of %qD is not usable in a constant expression" msgstr "" -#: cp/constexpr.cc:6021 +#: cp/constexpr.cc:6019 #, gcc-internal-format msgid "%qD used in its own initializer" msgstr "" -#: cp/constexpr.cc:6026 +#: cp/constexpr.cc:6024 #, gcc-internal-format msgid "%q#D is not const" msgstr "" -#: cp/constexpr.cc:6029 +#: cp/constexpr.cc:6027 #, gcc-internal-format msgid "%q#D is volatile" msgstr "" -#: cp/constexpr.cc:6034 cp/constexpr.cc:6041 +#: cp/constexpr.cc:6032 cp/constexpr.cc:6039 #, gcc-internal-format msgid "%qD was not initialized with a constant expression" msgstr "" -#: cp/constexpr.cc:6047 +#: cp/constexpr.cc:6045 #, gcc-internal-format msgid "%qD was not declared %" msgstr "" -#: cp/constexpr.cc:6050 +#: cp/constexpr.cc:6048 #, gcc-internal-format msgid "%qD does not have integral or enumeration type" msgstr "" -#: cp/constexpr.cc:6342 +#: cp/constexpr.cc:6340 #, gcc-internal-format msgid "" "modification of allocated storage after deallocation is not a constant " "expression" msgstr "" -#: cp/constexpr.cc:6351 +#: cp/constexpr.cc:6349 #, gcc-internal-format msgid "modification of %qE outside its lifetime is not a constant expression" msgstr "" -#: cp/constexpr.cc:6358 +#: cp/constexpr.cc:6356 #, gcc-internal-format msgid "" "destroying %qE from outside current evaluation is not a constant expression" msgstr "" -#: cp/constexpr.cc:6361 +#: cp/constexpr.cc:6359 #, gcc-internal-format msgid "" "modification of %qE from outside current evaluation is not a constant " "expression" msgstr "" -#: cp/constexpr.cc:6488 +#: cp/constexpr.cc:6486 #, gcc-internal-format msgid "" "change of the active member of a union from %qD to %qD is not a constant " "expression before C++20" msgstr "" -#: cp/constexpr.cc:6517 +#: cp/constexpr.cc:6515 #, gcc-internal-format msgid "" "%qD does not implicitly begin its lifetime because %qT does not have a non-" "deleted trivial default constructor, use % instead" msgstr "" -#: cp/constexpr.cc:6524 +#: cp/constexpr.cc:6522 #, gcc-internal-format msgid "" "initializing %qD requires a member access expression as the left operand of " "the assignment" msgstr "" -#: cp/constexpr.cc:6536 rust/backend/rust-constexpr.cc:2822 +#: cp/constexpr.cc:6534 rust/backend/rust-constexpr.cc:2822 #, gcc-internal-format msgid "" "change of the active member of a union from %qD to %qD during initialization" msgstr "" -#: cp/constexpr.cc:6984 cp/constexpr.cc:8563 cp/constexpr.cc:8575 +#: cp/constexpr.cc:6982 cp/constexpr.cc:8561 cp/constexpr.cc:8573 #: rust/backend/rust-constexpr.cc:4668 #, gcc-internal-format msgid "statement is not a constant expression" msgstr "" -#: cp/constexpr.cc:7080 rust/backend/rust-constexpr.cc:4933 +#: cp/constexpr.cc:7078 rust/backend/rust-constexpr.cc:4933 #, gcc-internal-format msgid "" "% loop iteration count exceeds limit of %d (use %<-fconstexpr-" "loop-limit=%> to increase the limit)" msgstr "" -#: cp/constexpr.cc:7187 rust/backend/rust-constexpr.cc:999 +#: cp/constexpr.cc:7185 rust/backend/rust-constexpr.cc:999 #, gcc-internal-format msgid "inline assembly is not a constant expression" msgstr "" -#: cp/constexpr.cc:7189 rust/backend/rust-constexpr.cc:1000 +#: cp/constexpr.cc:7187 rust/backend/rust-constexpr.cc:1000 #, gcc-internal-format msgid "" "only unevaluated inline assembly is allowed in a % function in C+" "+20" msgstr "" -#: cp/constexpr.cc:7207 +#: cp/constexpr.cc:7205 #, gcc-internal-format msgid "use of %qD" msgstr "" -#: cp/constexpr.cc:7211 +#: cp/constexpr.cc:7209 #, gcc-internal-format msgid "" "its value can vary between compiler versions or with different %<-mtune%> or " "%<-mcpu%> flags" msgstr "" -#: cp/constexpr.cc:7213 +#: cp/constexpr.cc:7211 #, gcc-internal-format msgid "" "if this use is part of a public ABI, change it to instead use a constant " "variable you define" msgstr "" -#: cp/constexpr.cc:7215 +#: cp/constexpr.cc:7213 #, gcc-internal-format, gfc-internal-format msgid "the default value for the current CPU tuning is %d bytes" msgstr "" -#: cp/constexpr.cc:7217 +#: cp/constexpr.cc:7215 #, gcc-internal-format msgid "" "you can stabilize this value with %<--param " @@ -56051,250 +56304,250 @@ msgid "" "Wno-interference-size%>" msgstr "" -#: cp/constexpr.cc:7370 +#: cp/constexpr.cc:7368 #, gcc-internal-format msgid "value %qE of type %qT is not a constant expression" msgstr "" -#: cp/constexpr.cc:7383 +#: cp/constexpr.cc:7381 #, gcc-internal-format msgid "" "% evaluation operation count exceeds limit of %wd (use %<-" "fconstexpr-ops-limit=%> to increase the limit)" msgstr "" -#: cp/constexpr.cc:7558 +#: cp/constexpr.cc:7556 #, gcc-internal-format msgid "control passes through definition of %qD with thread storage duration" msgstr "" -#: cp/constexpr.cc:7561 +#: cp/constexpr.cc:7559 #, gcc-internal-format msgid "control passes through definition of %qD with static storage duration" msgstr "" -#: cp/constexpr.cc:7626 cp/constexpr.cc:10308 +#: cp/constexpr.cc:7624 cp/constexpr.cc:10306 #: rust/backend/rust-constexpr.cc:2056 rust/backend/rust-constexpr.cc:6206 #, gcc-internal-format msgid "temporary of non-literal type %qT in a constant expression" msgstr "" -#: cp/constexpr.cc:8075 cp/constexpr.cc:9815 +#: cp/constexpr.cc:8073 cp/constexpr.cc:9813 #, gcc-internal-format msgid "% is not a constant expression" msgstr "" -#: cp/constexpr.cc:8103 rust/backend/rust-constexpr.cc:2461 +#: cp/constexpr.cc:8101 rust/backend/rust-constexpr.cc:2461 #, gcc-internal-format msgid "" "conversion from pointer type %qT to arithmetic type %qT in a constant " "expression" msgstr "" -#: cp/constexpr.cc:8153 +#: cp/constexpr.cc:8151 #, gcc-internal-format msgid "" "cast from %qT is not allowed in a constant expression because pointed-to " "type %qT is not similar to %qT" msgstr "" -#: cp/constexpr.cc:8160 +#: cp/constexpr.cc:8158 #, gcc-internal-format msgid "pointed-to object declared here" msgstr "" -#: cp/constexpr.cc:8165 +#: cp/constexpr.cc:8163 #, gcc-internal-format msgid "" "cast from %qT is not allowed in a constant expression because %qE does not " "point to an object" msgstr "" -#: cp/constexpr.cc:8177 +#: cp/constexpr.cc:8175 #, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression before C++26" msgstr "" -#: cp/constexpr.cc:8191 +#: cp/constexpr.cc:8189 #, gcc-internal-format msgid "%qE is not a constant expression when the class %qT is still incomplete" msgstr "" -#: cp/constexpr.cc:8225 rust/backend/rust-constexpr.cc:2506 +#: cp/constexpr.cc:8223 rust/backend/rust-constexpr.cc:2506 #, gcc-internal-format msgid "%(%E)%> is not a constant expression" msgstr "" -#: cp/constexpr.cc:8363 cp/constexpr.cc:10126 cp/constexpr.cc:10531 +#: cp/constexpr.cc:8361 cp/constexpr.cc:10124 cp/constexpr.cc:10529 #: rust/backend/rust-constexpr.cc:6100 rust/backend/rust-constexpr.cc:6415 #, gcc-internal-format msgid "expression %qE is not a constant expression" msgstr "" -#: cp/constexpr.cc:8408 cp/constexpr.cc:10572 +#: cp/constexpr.cc:8406 cp/constexpr.cc:10570 #, gcc-internal-format msgid "% is not a constant expression" msgstr "" -#: cp/constexpr.cc:8466 +#: cp/constexpr.cc:8464 #, gcc-internal-format msgid "contract predicate is false in constant expression" msgstr "" -#: cp/constexpr.cc:8482 +#: cp/constexpr.cc:8480 #, gcc-internal-format msgid "unexpected template-id %qE" msgstr "" -#: cp/constexpr.cc:8488 cp/constraint.cc:178 cp/constraint.cc:755 +#: cp/constexpr.cc:8486 cp/constraint.cc:178 cp/constraint.cc:755 #, gcc-internal-format msgid "function concept must be called" msgstr "" -#: cp/constexpr.cc:8513 +#: cp/constexpr.cc:8511 #, gcc-internal-format msgid "address of a call to %qs is not a constant expression" msgstr "" -#: cp/constexpr.cc:8578 +#: cp/constexpr.cc:8576 #, gcc-internal-format msgid "unexpected expression %qE of kind %s" msgstr "" -#: cp/constexpr.cc:8854 rust/backend/rust-constexpr.cc:5158 +#: cp/constexpr.cc:8852 rust/backend/rust-constexpr.cc:5158 #, gcc-internal-format msgid "" "%qE is not a constant expression because it refers to mutable subobjects of " "%qT" msgstr "" -#: cp/constexpr.cc:8862 rust/backend/rust-constexpr.cc:5167 +#: cp/constexpr.cc:8860 rust/backend/rust-constexpr.cc:5167 #, gcc-internal-format msgid "" "%qE is not a constant expression because it refers to an incompletely " "initialized variable" msgstr "" -#: cp/constexpr.cc:8878 rust/backend/rust-constexpr.cc:5183 +#: cp/constexpr.cc:8876 rust/backend/rust-constexpr.cc:5183 #, gcc-internal-format msgid "" "%qE is not a constant expression because it refers to a result of %" msgstr "" -#: cp/constexpr.cc:8889 rust/backend/rust-constexpr.cc:5195 +#: cp/constexpr.cc:8887 rust/backend/rust-constexpr.cc:5195 #, gcc-internal-format msgid "" "%qE is not a constant expression because allocated storage has not been " "deallocated" msgstr "" -#: cp/constexpr.cc:8909 rust/backend/rust-constexpr.cc:5213 +#: cp/constexpr.cc:8907 rust/backend/rust-constexpr.cc:5213 #, gcc-internal-format msgid "immediate evaluation returns address of immediate function %qD" msgstr "" -#: cp/constexpr.cc:8913 +#: cp/constexpr.cc:8911 #, gcc-internal-format msgid "constant evaluation returns address of immediate function %qD" msgstr "" -#: cp/constexpr.cc:9551 rust/backend/rust-constexpr.cc:5667 +#: cp/constexpr.cc:9549 rust/backend/rust-constexpr.cc:5667 #, gcc-internal-format msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT" msgstr "" -#: cp/constexpr.cc:9780 +#: cp/constexpr.cc:9778 #, gcc-internal-format msgid "lambda capture of %qE is not a constant expression" msgstr "" -#: cp/constexpr.cc:9783 +#: cp/constexpr.cc:9781 #, gcc-internal-format msgid "because it is used as a glvalue" msgstr "" -#: cp/constexpr.cc:9839 rust/backend/rust-constexpr.cc:5893 +#: cp/constexpr.cc:9837 rust/backend/rust-constexpr.cc:5893 #, gcc-internal-format msgid "% from integer to pointer" msgstr "" -#: cp/constexpr.cc:9873 rust/backend/rust-constexpr.cc:5921 +#: cp/constexpr.cc:9871 rust/backend/rust-constexpr.cc:5921 #, gcc-internal-format msgid "" "address-of an object %qE with thread local or automatic storage is not a " "constant expression" msgstr "" -#: cp/constexpr.cc:9912 +#: cp/constexpr.cc:9910 #, gcc-internal-format msgid "use of % in a constant expression" msgstr "" -#: cp/constexpr.cc:10061 +#: cp/constexpr.cc:10059 #, gcc-internal-format msgid "lambda-expression is not a constant expression before C++17" msgstr "" -#: cp/constexpr.cc:10073 +#: cp/constexpr.cc:10071 #, gcc-internal-format msgid "new-expression is not a constant expression before C++20" msgstr "" -#: cp/constexpr.cc:10140 +#: cp/constexpr.cc:10138 #, gcc-internal-format msgid "virtual functions cannot be % before C++20" msgstr "" -#: cp/constexpr.cc:10156 +#: cp/constexpr.cc:10154 #, gcc-internal-format msgid "" "% is not a constant expression because %qE is of polymorphic type" msgstr "" -#: cp/constexpr.cc:10219 +#: cp/constexpr.cc:10217 #, gcc-internal-format msgid "cast to non-integral type %qT in a constant expression" msgstr "" -#: cp/constexpr.cc:10272 +#: cp/constexpr.cc:10270 #, gcc-internal-format msgid "%qD defined % in % context" msgstr "" -#: cp/constexpr.cc:10280 +#: cp/constexpr.cc:10278 #, gcc-internal-format msgid "%qD defined % in % context" msgstr "" -#: cp/constexpr.cc:10358 rust/backend/rust-constexpr.cc:6251 +#: cp/constexpr.cc:10356 rust/backend/rust-constexpr.cc:6251 #, gcc-internal-format msgid "division by zero is not a constant expression" msgstr "" -#: cp/constexpr.cc:10459 rust/backend/rust-constexpr.cc:6349 +#: cp/constexpr.cc:10457 rust/backend/rust-constexpr.cc:6349 #, gcc-internal-format msgid "% is not a constant expression" msgstr "" -#: cp/constexpr.cc:10528 +#: cp/constexpr.cc:10526 #, gcc-internal-format msgid "neither branch of % is a constant expression" msgstr "" -#: cp/constexpr.cc:10541 +#: cp/constexpr.cc:10539 #, gcc-internal-format msgid "non-constant array initialization" msgstr "" -#: cp/constexpr.cc:10589 rust/backend/rust-constexpr.cc:6427 +#: cp/constexpr.cc:10587 rust/backend/rust-constexpr.cc:6427 #, gcc-internal-format msgid "" "label definition in % function only available with %<-std=c+" "+2b%> or %<-std=gnu++2b%>" msgstr "" -#: cp/constexpr.cc:10620 rust/backend/rust-constexpr.cc:6438 +#: cp/constexpr.cc:10618 rust/backend/rust-constexpr.cc:6438 #, gcc-internal-format, gfc-internal-format msgid "unexpected AST of kind %s" msgstr "" @@ -56385,337 +56638,337 @@ msgstr "" msgid "the required type %qT is invalid" msgstr "" -#: cp/constraint.cc:2112 cp/constraint.cc:2185 +#: cp/constraint.cc:2112 cp/constraint.cc:2186 #, gcc-internal-format msgid "cannot convert %qE to %qT" msgstr "" -#: cp/constraint.cc:2140 +#: cp/constraint.cc:2141 #, gcc-internal-format msgid "%qE is not %" msgstr "" -#: cp/constraint.cc:2162 +#: cp/constraint.cc:2163 #, gcc-internal-format msgid "%qE does not satisfy return-type-requirement, because" msgstr "" -#: cp/constraint.cc:2169 +#: cp/constraint.cc:2170 #, gcc-internal-format msgid "%qE does not satisfy return-type-requirement" msgstr "" -#: cp/constraint.cc:2180 +#: cp/constraint.cc:2181 #, gcc-internal-format msgid "cannot convert %qE to %qT because" msgstr "" #. Replay the substitution error. -#: cp/constraint.cc:2224 +#: cp/constraint.cc:2225 #, gcc-internal-format msgid "nested requirement %qE is not satisfied, because" msgstr "" -#: cp/constraint.cc:2228 +#: cp/constraint.cc:2229 #, gcc-internal-format msgid "nested requirement %qE is not satisfied" msgstr "" -#: cp/constraint.cc:2742 +#: cp/constraint.cc:2743 #, gcc-internal-format msgid "satisfaction of atomic constraint %qE depends on itself" msgstr "" -#: cp/constraint.cc:2788 +#: cp/constraint.cc:2789 #, gcc-internal-format msgid "satisfaction value of atomic constraint %qE changed from %qE to %qE" msgstr "" -#: cp/constraint.cc:2791 +#: cp/constraint.cc:2792 #, gcc-internal-format msgid "satisfaction value first evaluated to %qE from here" msgstr "" -#: cp/constraint.cc:2908 +#: cp/constraint.cc:2909 #, gcc-internal-format msgid "no operand of the disjunction is satisfied" msgstr "" -#: cp/constraint.cc:2921 +#: cp/constraint.cc:2922 #, gcc-internal-format msgid "the operand %qE is unsatisfied because" msgstr "" -#: cp/constraint.cc:3563 +#: cp/constraint.cc:3564 #, gcc-internal-format msgid "definition of concept %qD is empty" msgstr "" -#: cp/constraint.cc:3566 +#: cp/constraint.cc:3567 #, gcc-internal-format msgid "definition of concept %qD has multiple statements" msgstr "" -#: cp/constraint.cc:3722 +#: cp/constraint.cc:3723 #, gcc-internal-format msgid " %qT is not nothrow copy assignable" msgstr "" -#: cp/constraint.cc:3725 cp/constraint.cc:3810 +#: cp/constraint.cc:3726 cp/constraint.cc:3811 #, gcc-internal-format msgid " %qT is not nothrow default constructible" msgstr "" -#: cp/constraint.cc:3728 +#: cp/constraint.cc:3729 #, gcc-internal-format msgid " %qT is not nothrow copy constructible" msgstr "" -#: cp/constraint.cc:3731 +#: cp/constraint.cc:3732 #, gcc-internal-format msgid " %qT is not trivially copy assignable" msgstr "" -#: cp/constraint.cc:3734 cp/constraint.cc:3850 +#: cp/constraint.cc:3735 cp/constraint.cc:3851 #, gcc-internal-format msgid " %qT is not trivially default constructible" msgstr "" -#: cp/constraint.cc:3737 +#: cp/constraint.cc:3738 #, gcc-internal-format msgid " %qT is not trivially copy constructible" msgstr "" -#: cp/constraint.cc:3740 +#: cp/constraint.cc:3741 #, gcc-internal-format msgid " %qT is not trivially destructible" msgstr "" -#: cp/constraint.cc:3743 +#: cp/constraint.cc:3744 #, gcc-internal-format msgid " %qT does not have unique object representations" msgstr "" -#: cp/constraint.cc:3746 +#: cp/constraint.cc:3747 #, gcc-internal-format msgid " %qT does not have a virtual destructor" msgstr "" -#: cp/constraint.cc:3749 +#: cp/constraint.cc:3750 #, gcc-internal-format msgid " %qT is not an abstract class" msgstr "" -#: cp/constraint.cc:3752 +#: cp/constraint.cc:3753 #, gcc-internal-format msgid " %qT is not an aggregate" msgstr "" -#: cp/constraint.cc:3755 +#: cp/constraint.cc:3756 #, gcc-internal-format msgid " %qT is not an array" msgstr "" -#: cp/constraint.cc:3758 +#: cp/constraint.cc:3759 #, gcc-internal-format msgid " %qT is not assignable from %qT" msgstr "" -#: cp/constraint.cc:3761 +#: cp/constraint.cc:3762 #, gcc-internal-format msgid " %qT is not a base of %qT" msgstr "" -#: cp/constraint.cc:3764 +#: cp/constraint.cc:3765 #, gcc-internal-format msgid " %qT is not a bounded array" msgstr "" -#: cp/constraint.cc:3767 +#: cp/constraint.cc:3768 #, gcc-internal-format msgid " %qT is not a class" msgstr "" -#: cp/constraint.cc:3771 +#: cp/constraint.cc:3772 #, gcc-internal-format msgid " %qT is not default constructible" msgstr "" -#: cp/constraint.cc:3773 +#: cp/constraint.cc:3774 #, gcc-internal-format msgid " %qT is not constructible from %qE" msgstr "" -#: cp/constraint.cc:3776 +#: cp/constraint.cc:3777 #, gcc-internal-format msgid " %qT is not convertible from %qE" msgstr "" -#: cp/constraint.cc:3779 +#: cp/constraint.cc:3780 #, gcc-internal-format msgid " %qT is not an empty class" msgstr "" -#: cp/constraint.cc:3782 +#: cp/constraint.cc:3783 #, gcc-internal-format msgid " %qT is not an enum" msgstr "" -#: cp/constraint.cc:3785 +#: cp/constraint.cc:3786 #, gcc-internal-format msgid " %qT is not a final class" msgstr "" -#: cp/constraint.cc:3788 +#: cp/constraint.cc:3789 #, gcc-internal-format msgid " %qT is not a function" msgstr "" -#: cp/constraint.cc:3791 +#: cp/constraint.cc:3792 #, gcc-internal-format msgid " %qT is not layout compatible with %qT" msgstr "" -#: cp/constraint.cc:3794 +#: cp/constraint.cc:3795 #, gcc-internal-format msgid " %qT is not a literal type" msgstr "" -#: cp/constraint.cc:3797 +#: cp/constraint.cc:3798 #, gcc-internal-format msgid " %qT is not a member function pointer" msgstr "" -#: cp/constraint.cc:3800 +#: cp/constraint.cc:3801 #, gcc-internal-format msgid " %qT is not a member object pointer" msgstr "" -#: cp/constraint.cc:3803 +#: cp/constraint.cc:3804 #, gcc-internal-format msgid " %qT is not a member pointer" msgstr "" -#: cp/constraint.cc:3806 +#: cp/constraint.cc:3807 #, gcc-internal-format msgid " %qT is not nothrow assignable from %qT" msgstr "" -#: cp/constraint.cc:3812 +#: cp/constraint.cc:3813 #, gcc-internal-format msgid " %qT is not nothrow constructible from %qE" msgstr "" -#: cp/constraint.cc:3815 +#: cp/constraint.cc:3816 #, gcc-internal-format msgid " %qT is not nothrow convertible from %qE" msgstr "" -#: cp/constraint.cc:3818 +#: cp/constraint.cc:3819 #, gcc-internal-format msgid " %qT is not an object type" msgstr "" -#: cp/constraint.cc:3821 +#: cp/constraint.cc:3822 #, gcc-internal-format msgid " %qT is not pointer-interconvertible base of %qT" msgstr "" -#: cp/constraint.cc:3825 +#: cp/constraint.cc:3826 #, gcc-internal-format msgid " %qT is not a POD type" msgstr "" -#: cp/constraint.cc:3828 +#: cp/constraint.cc:3829 #, gcc-internal-format msgid " %qT is not a polymorphic type" msgstr "" -#: cp/constraint.cc:3831 +#: cp/constraint.cc:3832 #, gcc-internal-format msgid " %qT is not a reference" msgstr "" -#: cp/constraint.cc:3834 +#: cp/constraint.cc:3835 #, gcc-internal-format msgid " %qT is not the same as %qT" msgstr "" -#: cp/constraint.cc:3837 +#: cp/constraint.cc:3838 #, gcc-internal-format msgid " %qT is not a scoped enum" msgstr "" -#: cp/constraint.cc:3840 +#: cp/constraint.cc:3841 #, gcc-internal-format msgid " %qT is not an standard layout type" msgstr "" -#: cp/constraint.cc:3843 +#: cp/constraint.cc:3844 #, gcc-internal-format msgid " %qT is not a trivial type" msgstr "" -#: cp/constraint.cc:3846 +#: cp/constraint.cc:3847 #, gcc-internal-format msgid " %qT is not trivially assignable from %qT" msgstr "" -#: cp/constraint.cc:3852 +#: cp/constraint.cc:3853 #, gcc-internal-format msgid " %qT is not trivially constructible from %qE" msgstr "" -#: cp/constraint.cc:3855 +#: cp/constraint.cc:3856 #, gcc-internal-format msgid " %qT is not trivially copyable" msgstr "" -#: cp/constraint.cc:3858 +#: cp/constraint.cc:3859 #, gcc-internal-format msgid " %qT is not a union" msgstr "" -#: cp/constraint.cc:3861 +#: cp/constraint.cc:3862 #, gcc-internal-format msgid "" " %qT is not a reference that binds to a temporary object of type %qT " "(direct-initialization)" msgstr "" -#: cp/constraint.cc:3865 +#: cp/constraint.cc:3866 #, gcc-internal-format msgid "" " %qT is not a reference that binds to a temporary object of type %qT (copy-" "initialization)" msgstr "" -#: cp/constraint.cc:3869 +#: cp/constraint.cc:3870 #, gcc-internal-format msgid " %qD is not deducible from %qT" msgstr "" -#: cp/constraint.cc:3896 +#: cp/constraint.cc:3897 #, gcc-internal-format msgid "invalid constraints" msgstr "" -#: cp/constraint.cc:3921 +#: cp/constraint.cc:3922 #, gcc-internal-format msgid "constraint %qE has type %qT, not %" msgstr "" -#: cp/constraint.cc:3924 +#: cp/constraint.cc:3925 #, gcc-internal-format msgid "the expression %qE evaluated to %" msgstr "" -#: cp/constraint.cc:3975 +#: cp/constraint.cc:3976 #, gcc-internal-format msgid "constraints not satisfied" msgstr "" -#: cp/constraint.cc:3990 +#: cp/constraint.cc:3991 #, gcc-internal-format msgid "set %qs to at least %d for more detail" msgstr "" @@ -57105,43 +57358,43 @@ msgid "" "to %" msgstr "" -#: cp/cp-gimplify.cc:3604 +#: cp/cp-gimplify.cc:3614 #, gcc-internal-format msgid "ignoring attribute %qE after earlier %qE" msgstr "" -#: cp/cp-gimplify.cc:3646 +#: cp/cp-gimplify.cc:3656 #, gcc-internal-format msgid "pack expansion of %qE attribute" msgstr "" -#: cp/cp-gimplify.cc:3649 +#: cp/cp-gimplify.cc:3659 #, gcc-internal-format msgid "use fold expression in the attribute argument instead" msgstr "" -#: cp/cp-gimplify.cc:3688 cp/cp-gimplify.cc:3700 cp/decl.cc:4456 +#: cp/cp-gimplify.cc:3698 cp/cp-gimplify.cc:3710 cp/decl.cc:4456 #: cp/method.cc:984 #, gcc-internal-format msgid "%qD is not a type" msgstr "" -#: cp/cp-gimplify.cc:3706 +#: cp/cp-gimplify.cc:3716 #, gcc-internal-format msgid "%qD is not a class type" msgstr "" -#: cp/cp-gimplify.cc:3723 +#: cp/cp-gimplify.cc:3733 #, gcc-internal-format msgid "%qD does not have % type" msgstr "" -#: cp/cp-gimplify.cc:3733 +#: cp/cp-gimplify.cc:3743 #, gcc-internal-format msgid "%qD does not have integral type" msgstr "" -#: cp/cp-gimplify.cc:3745 +#: cp/cp-gimplify.cc:3755 #, gcc-internal-format msgid "" "% does not contain only non-static data " @@ -57184,7 +57437,7 @@ msgstr "" msgid "conversion from %qH to %qI discards qualifiers" msgstr "" -#: cp/cvt.cc:498 cp/typeck.cc:8825 +#: cp/cvt.cc:498 cp/typeck.cc:8826 #, gcc-internal-format msgid "casting %qT to %qT does not dereference pointer" msgstr "" @@ -57224,347 +57477,347 @@ msgstr "" msgid "conversion from %qH to non-scalar type %qI requested" msgstr "" -#: cp/cvt.cc:1074 +#: cp/cvt.cc:1088 #, gcc-internal-format msgid "" "ignoring return value of %qD, declared with attribute %: %<%s%>" msgstr "" -#: cp/cvt.cc:1076 +#: cp/cvt.cc:1090 #, gcc-internal-format msgid "ignoring return value of %qD, declared with attribute %%s" msgstr "" -#: cp/cvt.cc:1092 +#: cp/cvt.cc:1106 #, gcc-internal-format msgid "" "ignoring returned value of type %qT, declared with attribute %: " "%<%s%>" msgstr "" -#: cp/cvt.cc:1094 +#: cp/cvt.cc:1108 #, gcc-internal-format msgid "" "ignoring returned value of type %qT, declared with attribute %%s" msgstr "" -#: cp/cvt.cc:1116 +#: cp/cvt.cc:1130 #, gcc-internal-format msgid "" "ignoring return value of %qD, declared with attribute %" msgstr "" -#: cp/cvt.cc:1170 +#: cp/cvt.cc:1184 #, gcc-internal-format msgid "pseudo-destructor is not called" msgstr "" -#: cp/cvt.cc:1268 rust/backend/rust-tree.cc:339 +#: cp/cvt.cc:1282 rust/backend/rust-tree.cc:339 #, gcc-internal-format msgid "conversion to void will not access object of incomplete type %qT" msgstr "" -#: cp/cvt.cc:1272 rust/backend/rust-tree.cc:345 +#: cp/cvt.cc:1286 rust/backend/rust-tree.cc:345 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in second operand " "of conditional expression" msgstr "" -#: cp/cvt.cc:1277 rust/backend/rust-tree.cc:352 +#: cp/cvt.cc:1291 rust/backend/rust-tree.cc:352 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in third operand " "of conditional expression" msgstr "" -#: cp/cvt.cc:1282 rust/backend/rust-tree.cc:359 +#: cp/cvt.cc:1296 rust/backend/rust-tree.cc:359 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in right operand " "of comma operator" msgstr "" -#: cp/cvt.cc:1287 rust/backend/rust-tree.cc:366 +#: cp/cvt.cc:1301 rust/backend/rust-tree.cc:366 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in left operand of " "comma operator" msgstr "" -#: cp/cvt.cc:1292 rust/backend/rust-tree.cc:373 +#: cp/cvt.cc:1306 rust/backend/rust-tree.cc:373 #, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in statement" msgstr "" -#: cp/cvt.cc:1296 rust/backend/rust-tree.cc:379 +#: cp/cvt.cc:1310 rust/backend/rust-tree.cc:379 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in for increment " "expression" msgstr "" -#: cp/cvt.cc:1312 rust/backend/rust-tree.cc:396 +#: cp/cvt.cc:1326 rust/backend/rust-tree.cc:396 #, gcc-internal-format msgid "conversion to void will not access object of type %qT" msgstr "" -#: cp/cvt.cc:1316 rust/backend/rust-tree.cc:402 +#: cp/cvt.cc:1330 rust/backend/rust-tree.cc:402 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in second operand of " "conditional expression" msgstr "" -#: cp/cvt.cc:1321 rust/backend/rust-tree.cc:409 +#: cp/cvt.cc:1335 rust/backend/rust-tree.cc:409 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in third operand of " "conditional expression" msgstr "" -#: cp/cvt.cc:1326 rust/backend/rust-tree.cc:416 +#: cp/cvt.cc:1340 rust/backend/rust-tree.cc:416 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in right operand of " "comma operator" msgstr "" -#: cp/cvt.cc:1331 rust/backend/rust-tree.cc:423 +#: cp/cvt.cc:1345 rust/backend/rust-tree.cc:423 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in left operand of " "comma operator" msgstr "" -#: cp/cvt.cc:1336 rust/backend/rust-tree.cc:430 +#: cp/cvt.cc:1350 rust/backend/rust-tree.cc:430 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in statement" msgstr "" -#: cp/cvt.cc:1340 rust/backend/rust-tree.cc:436 +#: cp/cvt.cc:1354 rust/backend/rust-tree.cc:436 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in for increment " "expression" msgstr "" -#: cp/cvt.cc:1354 rust/backend/rust-tree.cc:450 +#: cp/cvt.cc:1368 rust/backend/rust-tree.cc:450 #, gcc-internal-format msgid "" "conversion to void will not access object of non-trivially-copyable type %qT" msgstr "" -#: cp/cvt.cc:1359 rust/backend/rust-tree.cc:456 +#: cp/cvt.cc:1373 rust/backend/rust-tree.cc:456 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "second operand of conditional expression" msgstr "" -#: cp/cvt.cc:1364 rust/backend/rust-tree.cc:463 +#: cp/cvt.cc:1378 rust/backend/rust-tree.cc:463 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "third operand of conditional expression" msgstr "" -#: cp/cvt.cc:1369 rust/backend/rust-tree.cc:470 +#: cp/cvt.cc:1383 rust/backend/rust-tree.cc:470 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "right operand of comma operator" msgstr "" -#: cp/cvt.cc:1374 rust/backend/rust-tree.cc:477 +#: cp/cvt.cc:1388 rust/backend/rust-tree.cc:477 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "left operand of comma operator" msgstr "" -#: cp/cvt.cc:1379 rust/backend/rust-tree.cc:484 +#: cp/cvt.cc:1393 rust/backend/rust-tree.cc:484 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "statement" msgstr "" -#: cp/cvt.cc:1384 rust/backend/rust-tree.cc:490 +#: cp/cvt.cc:1398 rust/backend/rust-tree.cc:490 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in for " "increment expression" msgstr "" -#: cp/cvt.cc:1426 rust/backend/rust-tree.cc:531 +#: cp/cvt.cc:1440 rust/backend/rust-tree.cc:531 #, gcc-internal-format msgid "conversion to void will not access object %qE of incomplete type %qT" msgstr "" -#: cp/cvt.cc:1430 rust/backend/rust-tree.cc:537 +#: cp/cvt.cc:1444 rust/backend/rust-tree.cc:537 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in second operand " "of conditional expression" msgstr "" -#: cp/cvt.cc:1435 rust/backend/rust-tree.cc:544 +#: cp/cvt.cc:1449 rust/backend/rust-tree.cc:544 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in third operand of " "conditional expression" msgstr "" -#: cp/cvt.cc:1440 rust/backend/rust-tree.cc:551 +#: cp/cvt.cc:1454 rust/backend/rust-tree.cc:551 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in right operand of " "comma operator" msgstr "" -#: cp/cvt.cc:1445 rust/backend/rust-tree.cc:557 +#: cp/cvt.cc:1459 rust/backend/rust-tree.cc:557 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in left operand of " "comma operator" msgstr "" -#: cp/cvt.cc:1450 rust/backend/rust-tree.cc:563 +#: cp/cvt.cc:1464 rust/backend/rust-tree.cc:563 #, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in statement" msgstr "" -#: cp/cvt.cc:1454 rust/backend/rust-tree.cc:569 +#: cp/cvt.cc:1468 rust/backend/rust-tree.cc:569 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in for increment " "expression" msgstr "" -#: cp/cvt.cc:1510 +#: cp/cvt.cc:1524 #, gcc-internal-format msgid "conversion to void cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.cc:1514 +#: cp/cvt.cc:1528 #, gcc-internal-format msgid "" "second operand of conditional expression cannot resolve address of " "overloaded function" msgstr "" -#: cp/cvt.cc:1518 +#: cp/cvt.cc:1532 #, gcc-internal-format msgid "" "third operand of conditional expression cannot resolve address of overloaded " "function" msgstr "" -#: cp/cvt.cc:1522 +#: cp/cvt.cc:1536 #, gcc-internal-format msgid "" "right operand of comma operator cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.cc:1526 +#: cp/cvt.cc:1540 #, gcc-internal-format msgid "" "left operand of comma operator cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.cc:1530 +#: cp/cvt.cc:1544 #, gcc-internal-format msgid "statement cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.cc:1534 +#: cp/cvt.cc:1548 #, gcc-internal-format msgid "for increment expression cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.cc:1550 +#: cp/cvt.cc:1564 #, gcc-internal-format msgid "" "second operand of conditional expression is a reference, not call, to " "function %qE" msgstr "" -#: cp/cvt.cc:1555 +#: cp/cvt.cc:1569 #, gcc-internal-format msgid "" "third operand of conditional expression is a reference, not call, to " "function %qE" msgstr "" -#: cp/cvt.cc:1560 +#: cp/cvt.cc:1574 #, gcc-internal-format msgid "" "right operand of comma operator is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.cc:1565 +#: cp/cvt.cc:1579 #, gcc-internal-format msgid "" "left operand of comma operator is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.cc:1570 +#: cp/cvt.cc:1584 #, gcc-internal-format msgid "statement is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.cc:1575 +#: cp/cvt.cc:1589 #, gcc-internal-format msgid "for increment expression is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.cc:1604 +#: cp/cvt.cc:1618 #, gcc-internal-format msgid "second operand of conditional expression has no effect" msgstr "" -#: cp/cvt.cc:1609 +#: cp/cvt.cc:1623 #, gcc-internal-format msgid "third operand of conditional expression has no effect" msgstr "" -#: cp/cvt.cc:1614 +#: cp/cvt.cc:1628 #, gcc-internal-format msgid "right operand of comma operator has no effect" msgstr "" -#: cp/cvt.cc:1618 +#: cp/cvt.cc:1632 #, gcc-internal-format msgid "left operand of comma operator has no effect" msgstr "" -#: cp/cvt.cc:1622 +#: cp/cvt.cc:1636 #, gcc-internal-format msgid "statement has no effect" msgstr "" -#: cp/cvt.cc:1626 +#: cp/cvt.cc:1640 #, gcc-internal-format msgid "for increment expression has no effect" msgstr "" -#: cp/cvt.cc:1779 +#: cp/cvt.cc:1793 #, gcc-internal-format msgid "converting NULL to non-pointer type" msgstr "" -#: cp/cvt.cc:1897 +#: cp/cvt.cc:1911 #, gcc-internal-format msgid "default type conversion cannot deduce template argument for %qD" msgstr "" -#: cp/cvt.cc:1912 +#: cp/cvt.cc:1926 #, gcc-internal-format msgid "ambiguous default type conversion from %qT" msgstr "" -#: cp/cvt.cc:1915 +#: cp/cvt.cc:1929 #, gcc-internal-format msgid " candidate conversions include %qD and %qD" msgstr "" @@ -57629,7 +57882,7 @@ msgstr "" msgid "redeclaration %qD differs in %qs from previous declaration" msgstr "" -#: cp/decl.cc:1446 cp/decl.cc:16605 +#: cp/decl.cc:1446 cp/decl.cc:16614 #, gcc-internal-format msgid "previous declaration %qD" msgstr "" @@ -57862,12 +58115,12 @@ msgstr "" msgid "import declared %q#D here" msgstr "" -#: cp/decl.cc:2306 cp/decl.cc:16628 +#: cp/decl.cc:2306 cp/decl.cc:16637 #, gcc-internal-format msgid "conflicting exporting for declaration %qD" msgstr "" -#: cp/decl.cc:2308 cp/decl.cc:16630 +#: cp/decl.cc:2308 cp/decl.cc:16639 #, gcc-internal-format msgid "previously declared here without exporting" msgstr "" @@ -58336,7 +58589,8 @@ msgstr "" #: cp/decl.cc:6097 #, gcc-internal-format -msgid "block-scope extern declaration %q#D not permitted in module purview" +msgid "" +"block-scope extern declaration %q#D must not be attached to a named module" msgstr "" #: cp/decl.cc:6133 @@ -58484,7 +58738,7 @@ msgstr "" msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT" msgstr "" -#: cp/decl.cc:7044 cp/init.cc:3377 cp/search.cc:1230 +#: cp/decl.cc:7044 cp/init.cc:3407 cp/search.cc:1230 #, gcc-internal-format msgid "request for member %qD is ambiguous" msgstr "" @@ -58509,8 +58763,8 @@ msgstr "" msgid "C99 designator %qE outside aggregate initializer" msgstr "" -#: cp/decl.cc:7218 cp/decl.cc:7506 cp/typeck2.cc:1617 cp/typeck2.cc:1947 -#: cp/typeck2.cc:1995 cp/typeck2.cc:2042 +#: cp/decl.cc:7218 cp/decl.cc:7506 cp/typeck2.cc:1616 cp/typeck2.cc:1946 +#: cp/typeck2.cc:1994 cp/typeck2.cc:2041 #, gcc-internal-format msgid "too many initializers for %qT" msgstr "" @@ -58586,1970 +58840,1970 @@ msgstr "" msgid "(an out of class initialization is required)" msgstr "" -#: cp/decl.cc:8083 +#: cp/decl.cc:8079 #, gcc-internal-format msgid "reference %qD is initialized with itself" msgstr "" -#: cp/decl.cc:8342 +#: cp/decl.cc:8338 #, gcc-internal-format msgid "could not find variant declaration" msgstr "" -#: cp/decl.cc:8366 +#: cp/decl.cc:8362 #, gcc-internal-format msgid "% on constructor %qD" msgstr "" -#: cp/decl.cc:8371 +#: cp/decl.cc:8367 #, gcc-internal-format msgid "% on destructor %qD" msgstr "" -#: cp/decl.cc:8376 +#: cp/decl.cc:8372 #, gcc-internal-format msgid "% on defaulted %qD" msgstr "" -#: cp/decl.cc:8381 +#: cp/decl.cc:8377 #, gcc-internal-format msgid "% on deleted %qD" msgstr "" -#: cp/decl.cc:8386 +#: cp/decl.cc:8382 #, gcc-internal-format msgid "% on virtual %qD" msgstr "" -#: cp/decl.cc:8440 +#: cp/decl.cc:8436 #, gcc-internal-format msgid "assignment (not initialization) in declaration" msgstr "" -#: cp/decl.cc:8461 cp/decl.cc:15224 +#: cp/decl.cc:8457 cp/decl.cc:15228 #, gcc-internal-format msgid "ISO C++17 does not allow % storage class specifier" msgstr "" -#: cp/decl.cc:8465 cp/decl.cc:15228 +#: cp/decl.cc:8461 cp/decl.cc:15232 #, gcc-internal-format msgid "% storage class specifier used" msgstr "" -#: cp/decl.cc:8510 cp/decl.cc:15191 +#: cp/decl.cc:8506 cp/decl.cc:15195 #, gcc-internal-format msgid "declaration of %q#D has no initializer" msgstr "" -#: cp/decl.cc:8546 +#: cp/decl.cc:8542 #, gcc-internal-format msgid "" "initializer for % has function type; did you forget the " "%<()%>?" msgstr "" -#: cp/decl.cc:8557 +#: cp/decl.cc:8553 #, gcc-internal-format msgid "deduced type %qT for %qD is incomplete" msgstr "" -#: cp/decl.cc:8695 +#: cp/decl.cc:8691 #, gcc-internal-format msgid "variable concept has no initializer" msgstr "" -#: cp/decl.cc:8754 +#: cp/decl.cc:8750 #, gcc-internal-format msgid "shadowing previous type declaration of %q#D" msgstr "" -#: cp/decl.cc:8797 +#: cp/decl.cc:8793 #, gcc-internal-format msgid "" "% can only be applied to a variable with static or thread " "storage duration" msgstr "" -#: cp/decl.cc:8992 +#: cp/decl.cc:8988 #, gcc-internal-format msgid "function %q#D is initialized like a variable" msgstr "" -#: cp/decl.cc:9103 +#: cp/decl.cc:9099 #, gcc-internal-format msgid "" "cannot decompose class type %qT because it has an anonymous struct member" msgstr "" -#: cp/decl.cc:9106 +#: cp/decl.cc:9102 #, gcc-internal-format msgid "" "cannot decompose class type %qT because it has an anonymous union member" msgstr "" -#: cp/decl.cc:9113 +#: cp/decl.cc:9109 #, gcc-internal-format msgid "cannot decompose inaccessible member %qD of %qT" msgstr "" -#: cp/decl.cc:9139 +#: cp/decl.cc:9135 #, gcc-internal-format msgid "" "cannot decompose class type %qT: both it and its base class %qT have non-" "static data members" msgstr "" -#: cp/decl.cc:9148 +#: cp/decl.cc:9144 #, gcc-internal-format msgid "" "cannot decompose class type %qT: its base classes %qT and %qT have non-" "static data members" msgstr "" -#: cp/decl.cc:9383 +#: cp/decl.cc:9381 #, gcc-internal-format msgid "structured binding refers to incomplete type %qT" msgstr "" -#: cp/decl.cc:9399 +#: cp/decl.cc:9397 #, gcc-internal-format msgid "cannot decompose variable length array %qT" msgstr "" -#: cp/decl.cc:9408 cp/decl.cc:9487 +#: cp/decl.cc:9406 cp/decl.cc:9485 #, gcc-internal-format, gfc-internal-format msgid "%u name provided for structured binding" msgid_plural "%u names provided for structured binding" msgstr[0] "" msgstr[1] "" -#: cp/decl.cc:9412 +#: cp/decl.cc:9410 #, gcc-internal-format, gfc-internal-format msgid "only %u name provided for structured binding" msgid_plural "only %u names provided for structured binding" msgstr[0] "" msgstr[1] "" -#: cp/decl.cc:9415 +#: cp/decl.cc:9413 #, gcc-internal-format msgid "while %qT decomposes into %wu element" msgid_plural "while %qT decomposes into %wu elements" msgstr[0] "" msgstr[1] "" -#: cp/decl.cc:9456 +#: cp/decl.cc:9454 #, gcc-internal-format msgid "cannot decompose variable length vector %qT" msgstr "" -#: cp/decl.cc:9480 +#: cp/decl.cc:9478 #, gcc-internal-format msgid "%::value%> is not an integral constant expression" msgstr "" -#: cp/decl.cc:9489 +#: cp/decl.cc:9487 #, gcc-internal-format msgid "while %qT decomposes into %E elements" msgstr "" -#: cp/decl.cc:9510 +#: cp/decl.cc:9508 #, gcc-internal-format msgid "%::type%> is %" msgstr "" -#: cp/decl.cc:9516 +#: cp/decl.cc:9514 #, gcc-internal-format msgid "in initialization of structured binding variable %qD" msgstr "" -#: cp/decl.cc:9545 +#: cp/decl.cc:9543 #, gcc-internal-format msgid "cannot decompose union type %qT" msgstr "" -#: cp/decl.cc:9550 +#: cp/decl.cc:9548 #, gcc-internal-format msgid "cannot decompose non-array non-class type %qT" msgstr "" -#: cp/decl.cc:9555 +#: cp/decl.cc:9553 #, gcc-internal-format msgid "cannot decompose lambda closure type %qT" msgstr "" -#: cp/decl.cc:9561 +#: cp/decl.cc:9559 #, gcc-internal-format msgid "structured binding refers to incomplete class type %qT" msgstr "" -#: cp/decl.cc:9570 +#: cp/decl.cc:9568 #, gcc-internal-format msgid "cannot decompose class type %qT without non-static data members" msgstr "" -#: cp/decl.cc:10048 +#: cp/decl.cc:10046 #, gcc-internal-format msgid "" "non-local variable %qD declared %<__thread%> needs dynamic initialization" msgstr "" -#: cp/decl.cc:10051 +#: cp/decl.cc:10049 #, gcc-internal-format msgid "" "non-local variable %qD declared %<__thread%> has a non-trivial destructor" msgstr "" -#: cp/decl.cc:10056 +#: cp/decl.cc:10054 #, gcc-internal-format msgid "C++11 % allows dynamic initialization and destruction" msgstr "" -#: cp/decl.cc:10275 +#: cp/decl.cc:10273 #, gcc-internal-format msgid "initializer fails to determine size of %qT" msgstr "" -#: cp/decl.cc:10279 +#: cp/decl.cc:10277 #, gcc-internal-format msgid "array size missing in %qT" msgstr "" -#: cp/decl.cc:10282 +#: cp/decl.cc:10280 #, gcc-internal-format msgid "zero-size array %qT" msgstr "" -#: cp/decl.cc:10298 +#: cp/decl.cc:10296 #, gcc-internal-format msgid "destructor for alien class %qT cannot be a member" msgstr "" -#: cp/decl.cc:10300 +#: cp/decl.cc:10298 #, gcc-internal-format msgid "constructor for alien class %qT cannot be a member" msgstr "" -#: cp/decl.cc:10326 +#: cp/decl.cc:10324 #, gcc-internal-format msgid "%qD declared as a % variable" msgstr "" -#: cp/decl.cc:10328 +#: cp/decl.cc:10326 #, gcc-internal-format msgid "" "% and % function specifiers on %qD invalid in variable " "declaration" msgstr "" -#: cp/decl.cc:10334 +#: cp/decl.cc:10332 #, gcc-internal-format msgid "%qD declared as a % parameter" msgstr "" -#: cp/decl.cc:10337 +#: cp/decl.cc:10335 #, gcc-internal-format msgid "%qD declared as an % parameter" msgstr "" -#: cp/decl.cc:10339 +#: cp/decl.cc:10337 #, gcc-internal-format msgid "" "% and % function specifiers on %qD invalid in parameter " "declaration" msgstr "" -#: cp/decl.cc:10345 +#: cp/decl.cc:10343 #, gcc-internal-format msgid "%qD declared as a % type" msgstr "" -#: cp/decl.cc:10348 +#: cp/decl.cc:10346 #, gcc-internal-format msgid "%qD declared as an % type" msgstr "" -#: cp/decl.cc:10350 +#: cp/decl.cc:10348 #, gcc-internal-format msgid "" "% and % function specifiers on %qD invalid in type " "declaration" msgstr "" -#: cp/decl.cc:10356 +#: cp/decl.cc:10354 #, gcc-internal-format msgid "%qD declared as a % field" msgstr "" -#: cp/decl.cc:10359 +#: cp/decl.cc:10357 #, gcc-internal-format msgid "%qD declared as an % field" msgstr "" -#: cp/decl.cc:10361 +#: cp/decl.cc:10359 #, gcc-internal-format msgid "" "% and % function specifiers on %qD invalid in field " "declaration" msgstr "" -#: cp/decl.cc:10368 +#: cp/decl.cc:10366 #, gcc-internal-format msgid "%q+D declared as a friend" msgstr "" -#: cp/decl.cc:10375 +#: cp/decl.cc:10373 #, gcc-internal-format msgid "%q+D declared with an exception specification" msgstr "" -#: cp/decl.cc:10407 +#: cp/decl.cc:10405 #, gcc-internal-format msgid "definition of %qD is not in namespace enclosing %qT" msgstr "" -#: cp/decl.cc:10447 +#: cp/decl.cc:10445 #, gcc-internal-format msgid "static member function %q#D declared with type qualifiers" msgstr "" -#: cp/decl.cc:10458 +#: cp/decl.cc:10456 #, gcc-internal-format msgid "concept %q#D declared with function parameters" msgstr "" -#: cp/decl.cc:10465 +#: cp/decl.cc:10463 #, gcc-internal-format msgid "concept %q#D declared with a deduced return type" msgstr "" -#: cp/decl.cc:10468 +#: cp/decl.cc:10466 #, gcc-internal-format msgid "concept %q#D with non-% return type %qT" msgstr "" -#: cp/decl.cc:10544 +#: cp/decl.cc:10542 #, gcc-internal-format msgid "concept %qD has no definition" msgstr "" -#: cp/decl.cc:10573 +#: cp/decl.cc:10571 #, gcc-internal-format msgid "a function concept cannot be constrained" msgstr "" -#: cp/decl.cc:10588 +#: cp/decl.cc:10586 #, gcc-internal-format msgid "constraints on a non-templated function" msgstr "" -#: cp/decl.cc:10590 +#: cp/decl.cc:10588 #, gcc-internal-format msgid "constrained non-template friend declaration must be a definition" msgstr "" -#: cp/decl.cc:10597 +#: cp/decl.cc:10595 #, gcc-internal-format msgid "" "friend function template with constraints that depend on outer template " "parameters must be a definition" msgstr "" -#: cp/decl.cc:10646 +#: cp/decl.cc:10644 #, gcc-internal-format msgid "defining explicit specialization %qD in friend declaration" msgstr "" -#: cp/decl.cc:10657 +#: cp/decl.cc:10655 #, gcc-internal-format msgid "invalid use of template-id %qD in declaration of primary template" msgstr "" -#: cp/decl.cc:10675 +#: cp/decl.cc:10673 #, gcc-internal-format msgid "" "default arguments are not allowed in declaration of friend template " "specialization %qD" msgstr "" -#: cp/decl.cc:10684 +#: cp/decl.cc:10682 #, gcc-internal-format msgid "" "% is not allowed in declaration of friend template specialization " "%qD" msgstr "" -#: cp/decl.cc:10701 +#: cp/decl.cc:10699 #, gcc-internal-format msgid "" "friend declaration of %qD specifies default arguments and isn%'t a definition" msgstr "" -#: cp/decl.cc:10743 +#: cp/decl.cc:10741 #, gcc-internal-format msgid "cannot declare %<::main%> to be a template" msgstr "" -#: cp/decl.cc:10746 +#: cp/decl.cc:10744 #, gcc-internal-format msgid "cannot declare %<::main%> to be inline" msgstr "" -#: cp/decl.cc:10749 cp/decl.cc:10752 +#: cp/decl.cc:10747 cp/decl.cc:10750 #, gcc-internal-format msgid "cannot declare %<::main%> to be %qs" msgstr "" -#: cp/decl.cc:10754 +#: cp/decl.cc:10752 #, gcc-internal-format msgid "cannot declare %<::main%> to be static" msgstr "" -#: cp/decl.cc:10815 +#: cp/decl.cc:10819 #, gcc-internal-format msgid "non-member function %qD cannot have cv-qualifier" msgstr "" -#: cp/decl.cc:10817 +#: cp/decl.cc:10821 #, gcc-internal-format msgid "static member function %qD cannot have cv-qualifier" msgstr "" -#: cp/decl.cc:10818 +#: cp/decl.cc:10822 #, gcc-internal-format msgid "explicit object member function %qD cannot have cv-qualifier" msgstr "" -#: cp/decl.cc:10823 +#: cp/decl.cc:10827 #, gcc-internal-format msgid "non-member function %qD cannot have ref-qualifier" msgstr "" -#: cp/decl.cc:10825 +#: cp/decl.cc:10829 #, gcc-internal-format msgid "static member function %qD cannot have ref-qualifier" msgstr "" -#: cp/decl.cc:10826 +#: cp/decl.cc:10830 #, gcc-internal-format msgid "explicit object member function %qD cannot have ref-qualifier" msgstr "" -#: cp/decl.cc:10832 cp/decl.cc:13715 cp/decl.cc:13725 cp/parser.cc:11972 +#: cp/decl.cc:10836 cp/decl.cc:13719 cp/decl.cc:13729 cp/parser.cc:11972 #, gcc-internal-format msgid "explicit object parameter declared here" msgstr "" -#: cp/decl.cc:10844 +#: cp/decl.cc:10848 #, gcc-internal-format msgid "deduction guide %qD must be declared in the same scope as %qT" msgstr "" -#: cp/decl.cc:10852 +#: cp/decl.cc:10856 #, gcc-internal-format msgid "deduction guide %qD must have the same access as %qT" msgstr "" -#: cp/decl.cc:10858 +#: cp/decl.cc:10862 #, gcc-internal-format msgid "deduction guide %qD must not have a function body" msgstr "" -#: cp/decl.cc:10871 +#: cp/decl.cc:10875 #, gcc-internal-format msgid "literal operator with C linkage" msgstr "" -#: cp/decl.cc:10881 +#: cp/decl.cc:10885 #, gcc-internal-format msgid "%qD has invalid argument list" msgstr "" -#: cp/decl.cc:10889 +#: cp/decl.cc:10893 #, gcc-internal-format msgid "integer suffix %qs shadowed by implementation" msgstr "" -#: cp/decl.cc:10895 +#: cp/decl.cc:10899 #, gcc-internal-format msgid "floating-point suffix %qs shadowed by implementation" msgstr "" -#: cp/decl.cc:10902 +#: cp/decl.cc:10906 #, gcc-internal-format msgid "" "literal operator suffixes not preceded by %<_%> are reserved for future " "standardization" msgstr "" -#: cp/decl.cc:10907 +#: cp/decl.cc:10911 #, gcc-internal-format msgid "%qD must be a non-member function" msgstr "" -#: cp/decl.cc:10993 +#: cp/decl.cc:10997 #, gcc-internal-format msgid "%<::main%> must return %" msgstr "" -#: cp/decl.cc:11033 +#: cp/decl.cc:11037 #, gcc-internal-format msgid "definition of implicitly-declared %qD" msgstr "" -#: cp/decl.cc:11038 +#: cp/decl.cc:11042 #, gcc-internal-format msgid "definition of explicitly-defaulted %q+D" msgstr "" -#: cp/decl.cc:11040 +#: cp/decl.cc:11044 #, gcc-internal-format msgid "%q#D explicitly defaulted here" msgstr "" -#: cp/decl.cc:11057 +#: cp/decl.cc:11061 #, gcc-internal-format msgid "no %q#D member function declared in class %qT" msgstr "" -#: cp/decl.cc:11251 +#: cp/decl.cc:11255 #, gcc-internal-format msgid "cannot declare %<::main%> to be a global variable" msgstr "" -#: cp/decl.cc:11260 +#: cp/decl.cc:11264 #, gcc-internal-format msgid "a non-template variable cannot be %" msgstr "" -#: cp/decl.cc:11266 +#: cp/decl.cc:11270 #, gcc-internal-format msgid "concept must be defined at namespace scope" msgstr "" -#: cp/decl.cc:11273 +#: cp/decl.cc:11277 #, gcc-internal-format msgid "concept must have type %" msgstr "" -#: cp/decl.cc:11276 +#: cp/decl.cc:11280 #, gcc-internal-format msgid "a variable concept cannot be constrained" msgstr "" -#: cp/decl.cc:11398 +#: cp/decl.cc:11402 #, gcc-internal-format msgid "in-class initialization of static data member %q#D of incomplete type" msgstr "" -#: cp/decl.cc:11402 +#: cp/decl.cc:11406 #, gcc-internal-format msgid "" "% needed for in-class initialization of static data member %q#D " "of non-integral type" msgstr "" -#: cp/decl.cc:11406 +#: cp/decl.cc:11410 #, gcc-internal-format msgid "in-class initialization of static data member %q#D of non-literal type" msgstr "" -#: cp/decl.cc:11417 +#: cp/decl.cc:11421 #, gcc-internal-format msgid "" "invalid in-class initialization of static data member of non-integral type " "%qT" msgstr "" -#: cp/decl.cc:11422 +#: cp/decl.cc:11426 #, gcc-internal-format msgid "ISO C++ forbids in-class initialization of non-const static member %qD" msgstr "" -#: cp/decl.cc:11427 +#: cp/decl.cc:11431 #, gcc-internal-format msgid "" "ISO C++ forbids initialization of member constant %qD of non-integral type " "%qT" msgstr "" -#: cp/decl.cc:11538 +#: cp/decl.cc:11542 #, gcc-internal-format msgid "size of array %qD has non-integral type %qT" msgstr "" -#: cp/decl.cc:11541 +#: cp/decl.cc:11545 #, gcc-internal-format msgid "size of array has non-integral type %qT" msgstr "" -#: cp/decl.cc:11572 cp/decl.cc:11644 +#: cp/decl.cc:11576 cp/decl.cc:11648 #, gcc-internal-format msgid "size of array %qD is not an integral constant-expression" msgstr "" -#: cp/decl.cc:11576 cp/decl.cc:11647 +#: cp/decl.cc:11580 cp/decl.cc:11651 #, gcc-internal-format msgid "size of array is not an integral constant-expression" msgstr "" -#: cp/decl.cc:11627 +#: cp/decl.cc:11631 #, gcc-internal-format msgid "ISO C++ forbids zero-size array %qD" msgstr "" -#: cp/decl.cc:11630 +#: cp/decl.cc:11634 #, gcc-internal-format msgid "ISO C++ forbids zero-size array" msgstr "" -#: cp/decl.cc:11654 +#: cp/decl.cc:11658 #, gcc-internal-format msgid "ISO C++ forbids variable length array %qD" msgstr "" -#: cp/decl.cc:11657 +#: cp/decl.cc:11661 #, gcc-internal-format msgid "ISO C++ forbids variable length array" msgstr "" -#: cp/decl.cc:11663 +#: cp/decl.cc:11667 #, gcc-internal-format msgid "variable length array %qD is used" msgstr "" -#: cp/decl.cc:11666 +#: cp/decl.cc:11670 #, gcc-internal-format msgid "variable length array is used" msgstr "" -#: cp/decl.cc:11718 +#: cp/decl.cc:11722 #, gcc-internal-format msgid "overflow in array dimension" msgstr "" -#: cp/decl.cc:11778 +#: cp/decl.cc:11782 #, gcc-internal-format msgid "%qD declared as array of template placeholder type %qT" msgstr "" -#: cp/decl.cc:11781 +#: cp/decl.cc:11785 #, gcc-internal-format msgid "creating array of template placeholder type %qT" msgstr "" -#: cp/decl.cc:11791 +#: cp/decl.cc:11795 #, gcc-internal-format msgid "declaration of %qD as array of void" msgstr "" -#: cp/decl.cc:11793 +#: cp/decl.cc:11797 #, gcc-internal-format msgid "creating array of void" msgstr "" -#: cp/decl.cc:11798 +#: cp/decl.cc:11802 #, gcc-internal-format msgid "declaration of %qD as array of functions" msgstr "" -#: cp/decl.cc:11800 +#: cp/decl.cc:11804 #, gcc-internal-format msgid "creating array of functions" msgstr "" -#: cp/decl.cc:11805 +#: cp/decl.cc:11809 #, gcc-internal-format msgid "declaration of %qD as array of references" msgstr "" -#: cp/decl.cc:11807 +#: cp/decl.cc:11811 #, gcc-internal-format msgid "creating array of references" msgstr "" -#: cp/decl.cc:11812 +#: cp/decl.cc:11816 #, gcc-internal-format msgid "declaration of %qD as array of function members" msgstr "" -#: cp/decl.cc:11815 +#: cp/decl.cc:11819 #, gcc-internal-format msgid "creating array of function members" msgstr "" -#: cp/decl.cc:11833 +#: cp/decl.cc:11837 #, gcc-internal-format msgid "" "declaration of %qD as multidimensional array must have bounds for all " "dimensions except the first" msgstr "" -#: cp/decl.cc:11837 +#: cp/decl.cc:11841 #, gcc-internal-format msgid "" "multidimensional array must have bounds for all dimensions except the first" msgstr "" -#: cp/decl.cc:11851 +#: cp/decl.cc:11855 #, gcc-internal-format msgid "variable-length array of %" msgstr "" -#: cp/decl.cc:11927 +#: cp/decl.cc:11931 #, gcc-internal-format msgid "return type specification for constructor invalid" msgstr "" -#: cp/decl.cc:11930 +#: cp/decl.cc:11934 #, gcc-internal-format msgid "qualifiers are not allowed on constructor declaration" msgstr "" -#: cp/decl.cc:11941 +#: cp/decl.cc:11945 #, gcc-internal-format msgid "return type specification for destructor invalid" msgstr "" -#: cp/decl.cc:11944 +#: cp/decl.cc:11948 #, gcc-internal-format msgid "qualifiers are not allowed on destructor declaration" msgstr "" -#: cp/decl.cc:11957 +#: cp/decl.cc:11961 #, gcc-internal-format msgid "return type specified for %" msgstr "" -#: cp/decl.cc:11960 +#: cp/decl.cc:11964 #, gcc-internal-format msgid "qualifiers are not allowed on declaration of %" msgstr "" -#: cp/decl.cc:11969 +#: cp/decl.cc:11973 #, gcc-internal-format msgid "return type specified for deduction guide" msgstr "" -#: cp/decl.cc:11972 +#: cp/decl.cc:11976 #, gcc-internal-format msgid "qualifiers are not allowed on declaration of deduction guide" msgstr "" -#: cp/decl.cc:11976 +#: cp/decl.cc:11980 #, gcc-internal-format msgid "template template parameter %qT in declaration of deduction guide" msgstr "" -#: cp/decl.cc:11985 +#: cp/decl.cc:11989 #, gcc-internal-format msgid "% in declaration of deduction guide" msgstr "" -#: cp/decl.cc:12006 +#: cp/decl.cc:12010 #, gcc-internal-format msgid "unnamed variable or field declared void" msgstr "" -#: cp/decl.cc:12014 +#: cp/decl.cc:12018 #, gcc-internal-format msgid "variable or field declared void" msgstr "" -#: cp/decl.cc:12029 +#: cp/decl.cc:12033 #, gcc-internal-format msgid "% specifier invalid for variable %qD declared at block scope" msgstr "" -#: cp/decl.cc:12034 +#: cp/decl.cc:12038 #, gcc-internal-format msgid "" "inline variables are only available with %<-std=c++17%> or %<-std=gnu++17%>" msgstr "" -#: cp/decl.cc:12090 +#: cp/decl.cc:12094 #, gcc-internal-format msgid "%qT as type rather than plain %" msgstr "" -#: cp/decl.cc:12096 +#: cp/decl.cc:12100 #, gcc-internal-format msgid "% cannot be cv-qualified" msgstr "" -#: cp/decl.cc:12312 +#: cp/decl.cc:12316 #, gcc-internal-format msgid "invalid use of qualified-name %<::%D%>" msgstr "" -#: cp/decl.cc:12315 cp/decl.cc:12337 +#: cp/decl.cc:12319 cp/decl.cc:12341 #, gcc-internal-format msgid "invalid use of qualified-name %<%T::%D%>" msgstr "" -#: cp/decl.cc:12318 +#: cp/decl.cc:12322 #, gcc-internal-format msgid "invalid use of qualified-name %<%D::%D%>" msgstr "" -#: cp/decl.cc:12328 +#: cp/decl.cc:12332 #, gcc-internal-format msgid "%q#T is not a class or namespace" msgstr "" -#: cp/decl.cc:12352 +#: cp/decl.cc:12356 #, gcc-internal-format msgid "declaration of %qE as non-function" msgstr "" -#: cp/decl.cc:12359 +#: cp/decl.cc:12363 #, gcc-internal-format msgid "declaration of %qE as non-member" msgstr "" -#: cp/decl.cc:12387 +#: cp/decl.cc:12391 #, gcc-internal-format msgid "declarator-id missing; using reserved word %qD" msgstr "" -#: cp/decl.cc:12438 +#: cp/decl.cc:12442 #, gcc-internal-format msgid "function definition does not declare parameters" msgstr "" -#: cp/decl.cc:12446 cp/decl.cc:12455 cp/decl.cc:14434 +#: cp/decl.cc:12450 cp/decl.cc:12459 cp/decl.cc:14438 #, gcc-internal-format msgid "declaration of %qD as non-function" msgstr "" -#: cp/decl.cc:12463 +#: cp/decl.cc:12467 #, gcc-internal-format msgid "declaration of %qD as %" msgstr "" -#: cp/decl.cc:12468 +#: cp/decl.cc:12472 #, gcc-internal-format msgid "declaration of %qD as parameter" msgstr "" -#: cp/decl.cc:12503 +#: cp/decl.cc:12507 #, gcc-internal-format msgid "both %qs and %qs specified" msgstr "" -#: cp/decl.cc:12510 cp/decl.cc:12517 cp/decl.cc:12524 cp/decl.cc:12531 +#: cp/decl.cc:12514 cp/decl.cc:12521 cp/decl.cc:12528 cp/decl.cc:12535 #, gcc-internal-format msgid "%qs cannot appear in a typedef declaration" msgstr "" -#: cp/decl.cc:12542 +#: cp/decl.cc:12546 #, gcc-internal-format msgid "can use at most one of the % and % specifiers" msgstr "" -#: cp/decl.cc:12552 +#: cp/decl.cc:12556 #, gcc-internal-format msgid "two or more data types in declaration of %qs" msgstr "" -#: cp/decl.cc:12606 +#: cp/decl.cc:12610 #, gcc-internal-format msgid "ISO C++ does not support plain % meaning %" msgstr "" -#: cp/decl.cc:12655 cp/decl.cc:12659 cp/decl.cc:12662 +#: cp/decl.cc:12659 cp/decl.cc:12663 cp/decl.cc:12666 #, gcc-internal-format msgid "ISO C++ forbids declaration of %qs with no type" msgstr "" -#: cp/decl.cc:12679 +#: cp/decl.cc:12683 #, gcc-internal-format msgid "%<__int%d%> is not supported by this target" msgstr "" -#: cp/decl.cc:12687 +#: cp/decl.cc:12691 #, gcc-internal-format msgid "ISO C++ does not support %<__int%d%> for %qs" msgstr "" -#: cp/decl.cc:12741 +#: cp/decl.cc:12745 #, gcc-internal-format msgid "% and % specified together" msgstr "" -#: cp/decl.cc:12747 +#: cp/decl.cc:12751 #, gcc-internal-format msgid "% and % specified together" msgstr "" -#: cp/decl.cc:12755 +#: cp/decl.cc:12759 #, gcc-internal-format msgid "%qs specified with %qT" msgstr "" -#: cp/decl.cc:12762 +#: cp/decl.cc:12766 #, gcc-internal-format msgid "%qs specified with typedef-name %qD" msgstr "" -#: cp/decl.cc:12771 +#: cp/decl.cc:12775 #, gcc-internal-format msgid "%qs specified with %" msgstr "" -#: cp/decl.cc:12773 +#: cp/decl.cc:12777 #, gcc-internal-format msgid "%qs specified with %" msgstr "" -#: cp/decl.cc:12842 +#: cp/decl.cc:12846 #, gcc-internal-format msgid "complex invalid for %qs" msgstr "" -#: cp/decl.cc:12886 +#: cp/decl.cc:12890 #, gcc-internal-format msgid "" "missing template argument list after %qE; for deduction, template " "placeholder must be followed by a simple declarator-id" msgstr "" -#: cp/decl.cc:12912 +#: cp/decl.cc:12916 #, gcc-internal-format msgid "member %qD cannot be declared both % and %" msgstr "" -#: cp/decl.cc:12921 +#: cp/decl.cc:12925 #, gcc-internal-format msgid "" "member %qD can be declared both % and % only in %<-" "std=c++20%> or %<-std=gnu++20%>" msgstr "" -#: cp/decl.cc:12934 +#: cp/decl.cc:12938 #, gcc-internal-format msgid "typedef declaration invalid in parameter declaration" msgstr "" -#: cp/decl.cc:12941 +#: cp/decl.cc:12945 #, gcc-internal-format msgid "storage class specified for template parameter %qs" msgstr "" -#: cp/decl.cc:12951 cp/decl.cc:13128 +#: cp/decl.cc:12955 cp/decl.cc:13132 #, gcc-internal-format msgid "storage class specified for parameter %qs" msgstr "" -#: cp/decl.cc:12959 cp/decl.cc:12968 cp/decl.cc:12974 cp/decl.cc:12980 +#: cp/decl.cc:12963 cp/decl.cc:12972 cp/decl.cc:12978 cp/decl.cc:12984 #, gcc-internal-format msgid "a parameter cannot be declared %qs" msgstr "" -#: cp/decl.cc:12990 +#: cp/decl.cc:12994 #, gcc-internal-format msgid "% outside class declaration" msgstr "" -#: cp/decl.cc:13000 cp/decl.cc:13003 cp/decl.cc:13005 cp/decl.cc:13008 -#: cp/decl.cc:13018 cp/decl.cc:13028 cp/decl.cc:13038 cp/decl.cc:13042 +#: cp/decl.cc:13004 cp/decl.cc:13007 cp/decl.cc:13009 cp/decl.cc:13012 +#: cp/decl.cc:13022 cp/decl.cc:13032 cp/decl.cc:13042 cp/decl.cc:13046 #, gcc-internal-format msgid "structured binding declaration cannot be %qs" msgstr "" -#: cp/decl.cc:13012 cp/decl.cc:13034 +#: cp/decl.cc:13016 cp/decl.cc:13038 #, gcc-internal-format msgid "" "structured binding declaration can be %qs only in %<-std=c++20%> or %<-" "std=gnu++20%>" msgstr "" -#: cp/decl.cc:13022 +#: cp/decl.cc:13026 #, gcc-internal-format msgid "%-qualified structured binding is deprecated" msgstr "" -#: cp/decl.cc:13046 +#: cp/decl.cc:13050 #, gcc-internal-format msgid "structured binding declaration cannot be C++98 %" msgstr "" -#: cp/decl.cc:13058 +#: cp/decl.cc:13062 #, gcc-internal-format msgid "structured binding declaration cannot have type %qT" msgstr "" -#: cp/decl.cc:13061 +#: cp/decl.cc:13065 #, gcc-internal-format msgid "" "type must be cv-qualified % or reference to cv-qualified %" msgstr "" -#: cp/decl.cc:13069 +#: cp/decl.cc:13073 #, gcc-internal-format msgid "" "structured binding declaration cannot have constrained % type %qT" msgstr "" -#: cp/decl.cc:13100 +#: cp/decl.cc:13104 #, gcc-internal-format msgid "multiple storage classes in declaration of %qs" msgstr "" -#: cp/decl.cc:13126 +#: cp/decl.cc:13130 #, gcc-internal-format msgid "storage class specified for %qs" msgstr "" -#: cp/decl.cc:13140 +#: cp/decl.cc:13144 #, gcc-internal-format msgid "nested function %qs declared %" msgstr "" -#: cp/decl.cc:13145 +#: cp/decl.cc:13149 #, gcc-internal-format msgid "top-level declaration of %qs specifies %" msgstr "" -#: cp/decl.cc:13153 +#: cp/decl.cc:13157 #, gcc-internal-format msgid "function-scope %qs implicitly auto and declared %<__thread%>" msgstr "" -#: cp/decl.cc:13167 +#: cp/decl.cc:13171 #, gcc-internal-format msgid "storage class specifiers invalid in friend function declarations" msgstr "" -#: cp/decl.cc:13200 cp/decl.cc:14824 cp/parser.cc:15434 cp/parser.cc:21379 -#: cp/parser.cc:28056 +#: cp/decl.cc:13204 cp/decl.cc:14828 cp/parser.cc:15434 cp/parser.cc:21379 +#: cp/parser.cc:28062 #, gcc-internal-format msgid "attribute ignored" msgstr "" -#: cp/decl.cc:13201 +#: cp/decl.cc:13205 #, gcc-internal-format msgid "an attribute that appertains to a type-specifier is ignored" msgstr "" -#: cp/decl.cc:13271 +#: cp/decl.cc:13275 #, gcc-internal-format msgid "unnecessary parentheses in declaration of %qs" msgstr "" -#: cp/decl.cc:13277 +#: cp/decl.cc:13281 #, gcc-internal-format msgid "remove parentheses" msgstr "" -#: cp/decl.cc:13345 +#: cp/decl.cc:13349 #, gcc-internal-format msgid "" "explicit object member function only available with %<-std=c++23%> or %<-" "std=gnu++23%>" msgstr "" -#: cp/decl.cc:13359 +#: cp/decl.cc:13363 #, gcc-internal-format msgid "a function type cannot have an explicit object parameter" msgstr "" -#: cp/decl.cc:13365 +#: cp/decl.cc:13369 #, gcc-internal-format msgid "a pointer to function type cannot have an explicit object parameter" msgstr "" -#: cp/decl.cc:13369 +#: cp/decl.cc:13373 #, gcc-internal-format msgid "" "a pointer to member function type cannot have an explicit object parameter" msgstr "" -#: cp/decl.cc:13377 +#: cp/decl.cc:13381 #, gcc-internal-format msgid "" "the type of a pointer to explicit object member function is a regular " "pointer to function type" msgstr "" -#: cp/decl.cc:13381 +#: cp/decl.cc:13385 #, gcc-internal-format msgid "" "the type of an explicit object member function is a regular function type" msgstr "" -#: cp/decl.cc:13402 +#: cp/decl.cc:13406 #, gcc-internal-format msgid "" "only the first parameter of a member function can be declared as an explicit " "object parameter" msgstr "" -#: cp/decl.cc:13407 +#: cp/decl.cc:13411 #, gcc-internal-format msgid "valid explicit object parameter declared here" msgstr "" -#: cp/decl.cc:13411 +#: cp/decl.cc:13415 #, gcc-internal-format msgid "requires-clause on return type" msgstr "" -#: cp/decl.cc:13431 +#: cp/decl.cc:13435 #, gcc-internal-format msgid "%qs function uses % type specifier without trailing return type" msgstr "" -#: cp/decl.cc:13435 +#: cp/decl.cc:13439 #, gcc-internal-format msgid "" "deduced return type only available with %<-std=c++14%> or %<-std=gnu++14%>" msgstr "" -#: cp/decl.cc:13440 +#: cp/decl.cc:13444 #, gcc-internal-format msgid "virtual function cannot have deduced return type" msgstr "" -#: cp/decl.cc:13447 +#: cp/decl.cc:13451 #, gcc-internal-format msgid "" "%qs function with trailing return type has %qT as its type rather than plain " "%" msgstr "" -#: cp/decl.cc:13456 +#: cp/decl.cc:13460 #, gcc-internal-format msgid "" "%qs function with trailing return type has % as its type " "rather than plain %" msgstr "" -#: cp/decl.cc:13461 +#: cp/decl.cc:13465 #, gcc-internal-format msgid "invalid use of %" msgstr "" -#: cp/decl.cc:13473 +#: cp/decl.cc:13477 #, gcc-internal-format msgid "deduced class type %qD in function return type" msgstr "" -#: cp/decl.cc:13482 +#: cp/decl.cc:13486 #, gcc-internal-format msgid "deduction guide for %qT must have trailing return type" msgstr "" -#: cp/decl.cc:13495 +#: cp/decl.cc:13499 #, gcc-internal-format msgid "" "trailing return type %qT of deduction guide is not a specialization of %qT" msgstr "" -#: cp/decl.cc:13509 +#: cp/decl.cc:13513 #, gcc-internal-format msgid "" "trailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/decl.cc:13512 +#: cp/decl.cc:13516 #, gcc-internal-format msgid "" "%qs function with trailing return type not declared with % type " "specifier" msgstr "" -#: cp/decl.cc:13519 +#: cp/decl.cc:13523 #, gcc-internal-format msgid "a conversion function cannot have a trailing return type" msgstr "" -#: cp/decl.cc:13545 +#: cp/decl.cc:13549 #, gcc-internal-format msgid "%-qualified return type is deprecated" msgstr "" -#: cp/decl.cc:13557 +#: cp/decl.cc:13561 #, gcc-internal-format msgid "%qs declared as function returning a function" msgstr "" -#: cp/decl.cc:13563 +#: cp/decl.cc:13567 #, gcc-internal-format msgid "%qs declared as function returning an array" msgstr "" -#: cp/decl.cc:13570 +#: cp/decl.cc:13574 #, gcc-internal-format msgid "% on function return type is not allowed" msgstr "" -#: cp/decl.cc:13603 +#: cp/decl.cc:13607 #, gcc-internal-format msgid "destructor cannot be static member function" msgstr "" -#: cp/decl.cc:13605 +#: cp/decl.cc:13609 #, gcc-internal-format msgid "constructor cannot be static member function" msgstr "" -#: cp/decl.cc:13610 +#: cp/decl.cc:13614 #, gcc-internal-format msgid "destructors may not be cv-qualified" msgstr "" -#: cp/decl.cc:13611 +#: cp/decl.cc:13615 #, gcc-internal-format msgid "constructors may not be cv-qualified" msgstr "" -#: cp/decl.cc:13619 +#: cp/decl.cc:13623 #, gcc-internal-format msgid "destructors may not be ref-qualified" msgstr "" -#: cp/decl.cc:13620 +#: cp/decl.cc:13624 #, gcc-internal-format msgid "constructors may not be ref-qualified" msgstr "" -#: cp/decl.cc:13638 +#: cp/decl.cc:13642 #, gcc-internal-format msgid "constructors cannot be declared %" msgstr "" -#: cp/decl.cc:13655 +#: cp/decl.cc:13659 #, gcc-internal-format msgid "virtual functions cannot be friends" msgstr "" -#: cp/decl.cc:13660 +#: cp/decl.cc:13664 #, gcc-internal-format msgid "friend declaration not in class definition" msgstr "" -#: cp/decl.cc:13664 +#: cp/decl.cc:13668 #, gcc-internal-format msgid "cannot define friend function %qs in a local class definition" msgstr "" -#: cp/decl.cc:13674 +#: cp/decl.cc:13678 #, gcc-internal-format msgid "friend function definition %qs cannot have a name qualified with %<::%>" msgstr "" -#: cp/decl.cc:13678 +#: cp/decl.cc:13682 #, gcc-internal-format msgid "" "friend function definition %qs cannot have a name qualified with %<%D::%>" msgstr "" -#: cp/decl.cc:13704 +#: cp/decl.cc:13708 #, gcc-internal-format msgid "a non-member function cannot have an explicit object parameter" msgstr "" -#: cp/decl.cc:13712 +#: cp/decl.cc:13716 #, gcc-internal-format msgid "an explicit object member function cannot be %" msgstr "" -#: cp/decl.cc:13722 +#: cp/decl.cc:13726 #, gcc-internal-format msgid "an explicit object member function cannot be %" msgstr "" -#: cp/decl.cc:13748 +#: cp/decl.cc:13752 #, gcc-internal-format msgid "destructors may not have parameters" msgstr "" -#: cp/decl.cc:13806 +#: cp/decl.cc:13810 #, gcc-internal-format msgid "cannot declare pointer to %q#T" msgstr "" -#: cp/decl.cc:13819 cp/decl.cc:13826 +#: cp/decl.cc:13823 cp/decl.cc:13830 #, gcc-internal-format msgid "cannot declare reference to %q#T" msgstr "" -#: cp/decl.cc:13828 +#: cp/decl.cc:13832 #, gcc-internal-format msgid "cannot declare pointer to %q#T member" msgstr "" -#: cp/decl.cc:13857 +#: cp/decl.cc:13861 #, gcc-internal-format msgid "cannot declare reference to qualified function type %qT" msgstr "" -#: cp/decl.cc:13858 +#: cp/decl.cc:13862 #, gcc-internal-format msgid "cannot declare pointer to qualified function type %qT" msgstr "" -#: cp/decl.cc:13931 +#: cp/decl.cc:13935 #, gcc-internal-format msgid "" "cannot declare reference to %q#T, which is not a typedef or a template type " "argument" msgstr "" -#: cp/decl.cc:14011 +#: cp/decl.cc:14015 #, gcc-internal-format msgid "template-id %qD used as a declarator" msgstr "" -#: cp/decl.cc:14037 +#: cp/decl.cc:14041 #, gcc-internal-format msgid "member functions are implicitly friends of their class" msgstr "" -#: cp/decl.cc:14042 +#: cp/decl.cc:14046 #, gcc-internal-format msgid "extra qualification %<%T::%> on member %qs" msgstr "" -#: cp/decl.cc:14072 +#: cp/decl.cc:14076 #, gcc-internal-format msgid "cannot define member function %<%T::%s%> within %qT" msgstr "" -#: cp/decl.cc:14074 +#: cp/decl.cc:14078 #, gcc-internal-format msgid "cannot declare member function %<%T::%s%> within %qT" msgstr "" -#: cp/decl.cc:14082 +#: cp/decl.cc:14086 #, gcc-internal-format msgid "cannot declare member %<%T::%s%> within %qT" msgstr "" -#: cp/decl.cc:14122 +#: cp/decl.cc:14126 #, gcc-internal-format msgid "non-parameter %qs cannot be a parameter pack" msgstr "" -#: cp/decl.cc:14131 +#: cp/decl.cc:14135 #, gcc-internal-format msgid "data member may not have variably modified type %qT" msgstr "" -#: cp/decl.cc:14134 +#: cp/decl.cc:14138 #, gcc-internal-format msgid "parameter may not have variably modified type %qT" msgstr "" -#: cp/decl.cc:14145 +#: cp/decl.cc:14149 #, gcc-internal-format msgid "% outside class declaration" msgstr "" -#: cp/decl.cc:14148 +#: cp/decl.cc:14152 #, gcc-internal-format msgid "% in friend declaration" msgstr "" -#: cp/decl.cc:14151 +#: cp/decl.cc:14155 #, gcc-internal-format msgid "" "only declarations of constructors and conversion operators can be " "%" msgstr "" -#: cp/decl.cc:14161 +#: cp/decl.cc:14165 #, gcc-internal-format msgid "non-member %qs cannot be declared %" msgstr "" -#: cp/decl.cc:14168 +#: cp/decl.cc:14172 #, gcc-internal-format msgid "non-object member %qs cannot be declared %" msgstr "" -#: cp/decl.cc:14174 +#: cp/decl.cc:14178 #, gcc-internal-format msgid "function %qs cannot be declared %" msgstr "" -#: cp/decl.cc:14180 +#: cp/decl.cc:14184 #, gcc-internal-format msgid "% %qs cannot be declared %" msgstr "" -#: cp/decl.cc:14186 +#: cp/decl.cc:14190 #, gcc-internal-format msgid "% %qs cannot be declared %" msgstr "" -#: cp/decl.cc:14192 +#: cp/decl.cc:14196 #, gcc-internal-format msgid "reference %qs cannot be declared %" msgstr "" -#: cp/decl.cc:14208 +#: cp/decl.cc:14212 #, gcc-internal-format msgid "typedef may not be a function definition" msgstr "" -#: cp/decl.cc:14211 +#: cp/decl.cc:14215 #, gcc-internal-format msgid "typedef may not be a member function definition" msgstr "" -#: cp/decl.cc:14237 +#: cp/decl.cc:14241 #, gcc-internal-format msgid "% not allowed in alias declaration" msgstr "" -#: cp/decl.cc:14240 +#: cp/decl.cc:14244 #, gcc-internal-format msgid "typedef declared %" msgstr "" -#: cp/decl.cc:14245 +#: cp/decl.cc:14249 #, gcc-internal-format msgid "requires-clause on typedef" msgstr "" -#: cp/decl.cc:14249 +#: cp/decl.cc:14253 #, gcc-internal-format msgid "typedef name may not be a nested-name-specifier" msgstr "" -#: cp/decl.cc:14275 +#: cp/decl.cc:14279 #, gcc-internal-format msgid "ISO C++ forbids nested type %qD with same name as enclosing class" msgstr "" -#: cp/decl.cc:14364 +#: cp/decl.cc:14368 #, gcc-internal-format msgid "% specified for friend class declaration" msgstr "" -#: cp/decl.cc:14372 +#: cp/decl.cc:14376 #, gcc-internal-format msgid "template parameters cannot be friends" msgstr "" -#: cp/decl.cc:14374 +#: cp/decl.cc:14378 #, gcc-internal-format msgid "friend declaration requires class-key, i.e. %" msgstr "" -#: cp/decl.cc:14378 +#: cp/decl.cc:14382 #, gcc-internal-format msgid "friend declaration requires class-key, i.e. %" msgstr "" -#: cp/decl.cc:14391 +#: cp/decl.cc:14395 #, gcc-internal-format msgid "trying to make class %qT a friend of global scope" msgstr "" -#: cp/decl.cc:14411 +#: cp/decl.cc:14415 #, gcc-internal-format msgid "invalid qualifiers on non-member function type" msgstr "" -#: cp/decl.cc:14415 +#: cp/decl.cc:14419 #, gcc-internal-format msgid "requires-clause on type-id" msgstr "" -#: cp/decl.cc:14425 +#: cp/decl.cc:14429 #, gcc-internal-format msgid "abstract declarator %qT used as declaration" msgstr "" -#: cp/decl.cc:14440 +#: cp/decl.cc:14444 #, gcc-internal-format msgid "requires-clause on declaration of non-function type %qT" msgstr "" -#: cp/decl.cc:14459 +#: cp/decl.cc:14463 #, gcc-internal-format msgid "cannot use %<::%> in parameter declaration" msgstr "" -#: cp/decl.cc:14469 cp/parser.cc:20813 +#: cp/decl.cc:14473 cp/parser.cc:20813 #, gcc-internal-format msgid "cannot declare a parameter with %" msgstr "" -#: cp/decl.cc:14476 +#: cp/decl.cc:14480 #, gcc-internal-format msgid "" "missing template argument list after %qE; template placeholder not permitted " "in parameter" msgstr "" -#: cp/decl.cc:14479 +#: cp/decl.cc:14483 #, gcc-internal-format msgid "or use % for an abbreviated function template" msgstr "" -#: cp/decl.cc:14485 cp/parser.cc:25355 +#: cp/decl.cc:14489 cp/parser.cc:25355 #, gcc-internal-format msgid "% parameter not permitted in this context" msgstr "" -#: cp/decl.cc:14495 +#: cp/decl.cc:14499 #, gcc-internal-format msgid "parameter declared %" msgstr "" -#: cp/decl.cc:14549 cp/parser.cc:3687 +#: cp/decl.cc:14553 cp/parser.cc:3687 #, gcc-internal-format msgid "invalid use of template-name %qE without an argument list" msgstr "" -#: cp/decl.cc:14553 +#: cp/decl.cc:14557 #, gcc-internal-format msgid "non-static data member declared with placeholder %qT" msgstr "" -#: cp/decl.cc:14574 +#: cp/decl.cc:14578 #, gcc-internal-format msgid "ISO C++ forbids flexible array member %qs" msgstr "" -#: cp/decl.cc:14577 +#: cp/decl.cc:14581 #, gcc-internal-format msgid "ISO C++ forbids flexible array members" msgstr "" #. Something like struct S { int N::j; }; -#: cp/decl.cc:14593 +#: cp/decl.cc:14597 #, gcc-internal-format msgid "invalid use of %<::%>" msgstr "" -#: cp/decl.cc:14614 +#: cp/decl.cc:14618 #, gcc-internal-format msgid "declaration of function %qD in invalid context" msgstr "" -#: cp/decl.cc:14624 +#: cp/decl.cc:14628 #, gcc-internal-format msgid "function %qD declared % inside a union" msgstr "" -#: cp/decl.cc:14634 +#: cp/decl.cc:14638 #, gcc-internal-format msgid "%qD cannot be declared %, since it is always static" msgstr "" -#: cp/decl.cc:14648 +#: cp/decl.cc:14652 #, gcc-internal-format msgid "expected qualified name in friend declaration for destructor %qD" msgstr "" -#: cp/decl.cc:14655 +#: cp/decl.cc:14659 #, gcc-internal-format msgid "declaration of %qD as member of %qT" msgstr "" -#: cp/decl.cc:14662 cp/decl.cc:14675 +#: cp/decl.cc:14666 cp/decl.cc:14679 #, gcc-internal-format msgid "a destructor cannot be %qs" msgstr "" -#: cp/decl.cc:14681 +#: cp/decl.cc:14685 #, gcc-internal-format msgid "expected qualified name in friend declaration for constructor %qD" msgstr "" -#: cp/decl.cc:14690 +#: cp/decl.cc:14694 #, gcc-internal-format msgid "a constructor cannot be %" msgstr "" -#: cp/decl.cc:14696 +#: cp/decl.cc:14700 #, gcc-internal-format msgid "a concept cannot be a member function" msgstr "" -#: cp/decl.cc:14704 cp/decl.cc:15059 +#: cp/decl.cc:14708 cp/decl.cc:15063 #, gcc-internal-format msgid "%qD cannot be %qs" msgstr "" -#: cp/decl.cc:14713 +#: cp/decl.cc:14717 #, gcc-internal-format msgid "specialization of variable template %qD declared as function" msgstr "" -#: cp/decl.cc:14716 +#: cp/decl.cc:14720 #, gcc-internal-format msgid "variable template declared here" msgstr "" -#: cp/decl.cc:14779 +#: cp/decl.cc:14783 #, gcc-internal-format msgid "field %qD has incomplete type %qT" msgstr "" -#: cp/decl.cc:14784 +#: cp/decl.cc:14788 #, gcc-internal-format msgid "name %qT has incomplete type" msgstr "" -#: cp/decl.cc:14804 +#: cp/decl.cc:14808 #, gcc-internal-format msgid "%qE is neither function nor member function; cannot be declared friend" msgstr "" -#: cp/decl.cc:14807 +#: cp/decl.cc:14811 #, gcc-internal-format msgid "" "unnamed field is neither function nor member function; cannot be declared " "friend" msgstr "" -#: cp/decl.cc:14825 cp/parser.cc:21380 cp/parser.cc:28057 +#: cp/decl.cc:14829 cp/parser.cc:21380 cp/parser.cc:28063 #, gcc-internal-format msgid "" "an attribute that appertains to a friend declaration that is not a " "definition is ignored" msgstr "" -#: cp/decl.cc:14875 cp/decl.cc:14886 +#: cp/decl.cc:14879 cp/decl.cc:14890 #, gcc-internal-format msgid "static data member %qE declared %qs" msgstr "" -#: cp/decl.cc:14880 +#: cp/decl.cc:14884 #, gcc-internal-format msgid "% static data member %qD must have an initializer" msgstr "" -#: cp/decl.cc:14923 cp/decl.cc:14931 cp/decl.cc:14938 cp/decl.cc:14945 +#: cp/decl.cc:14927 cp/decl.cc:14935 cp/decl.cc:14942 cp/decl.cc:14949 #, gcc-internal-format msgid "non-static data member %qE declared %qs" msgstr "" -#: cp/decl.cc:14997 +#: cp/decl.cc:15001 #, gcc-internal-format msgid "storage class % invalid for function %qs" msgstr "" -#: cp/decl.cc:15000 +#: cp/decl.cc:15004 #, gcc-internal-format msgid "storage class % invalid for function %qs" msgstr "" -#: cp/decl.cc:15006 +#: cp/decl.cc:15010 #, gcc-internal-format msgid "storage class %<__thread%> invalid for function %qs" msgstr "" -#: cp/decl.cc:15010 +#: cp/decl.cc:15014 #, gcc-internal-format msgid "storage class % invalid for function %qs" msgstr "" -#: cp/decl.cc:15015 +#: cp/decl.cc:15019 #, gcc-internal-format msgid "% specifier invalid for function %qs" msgstr "" -#: cp/decl.cc:15018 +#: cp/decl.cc:15022 #, gcc-internal-format msgid "virt-specifiers in %qs not allowed outside a class definition" msgstr "" -#: cp/decl.cc:15030 +#: cp/decl.cc:15034 #, gcc-internal-format msgid "" "% specifier invalid for function %qs declared out of global scope" msgstr "" -#: cp/decl.cc:15034 +#: cp/decl.cc:15038 #, gcc-internal-format msgid "" "% specifier invalid for function %qs declared out of global scope" msgstr "" -#: cp/decl.cc:15042 +#: cp/decl.cc:15046 #, gcc-internal-format msgid "virtual non-class function %qs" msgstr "" -#: cp/decl.cc:15049 +#: cp/decl.cc:15053 #, gcc-internal-format msgid "%qs defined in a non-class scope" msgstr "" -#: cp/decl.cc:15050 +#: cp/decl.cc:15054 #, gcc-internal-format msgid "%qs declared in a non-class scope" msgstr "" -#: cp/decl.cc:15093 +#: cp/decl.cc:15097 #, gcc-internal-format msgid "cannot declare member function %qD to have static linkage" msgstr "" -#: cp/decl.cc:15102 +#: cp/decl.cc:15106 #, gcc-internal-format msgid "cannot declare static function inside another function" msgstr "" -#: cp/decl.cc:15143 +#: cp/decl.cc:15147 #, gcc-internal-format msgid "" "% may not be used when defining (as opposed to declaring) a static " "data member" msgstr "" -#: cp/decl.cc:15150 +#: cp/decl.cc:15154 #, gcc-internal-format msgid "static member %qD declared %" msgstr "" -#: cp/decl.cc:15156 +#: cp/decl.cc:15160 #, gcc-internal-format msgid "cannot explicitly declare member %q#D to have extern linkage" msgstr "" -#: cp/decl.cc:15164 +#: cp/decl.cc:15168 #, gcc-internal-format msgid "declaration of % variable %qD is not a definition" msgstr "" -#: cp/decl.cc:15171 +#: cp/decl.cc:15175 #, gcc-internal-format msgid "a variable cannot be declared %" msgstr "" -#: cp/decl.cc:15203 +#: cp/decl.cc:15207 #, gcc-internal-format msgid "%qs initialized and declared %" msgstr "" -#: cp/decl.cc:15208 +#: cp/decl.cc:15212 #, gcc-internal-format msgid "%qs has both % and initializer" msgstr "" -#: cp/decl.cc:15405 +#: cp/decl.cc:15414 #, gcc-internal-format msgid "default argument %qE uses %qD" msgstr "" -#: cp/decl.cc:15408 +#: cp/decl.cc:15417 #, gcc-internal-format msgid "default argument %qE uses local variable %qD" msgstr "" -#: cp/decl.cc:15535 +#: cp/decl.cc:15544 #, gcc-internal-format msgid "invalid use of cv-qualified type %qT in parameter declaration" msgstr "" -#: cp/decl.cc:15539 +#: cp/decl.cc:15548 #, gcc-internal-format msgid "invalid use of type % in parameter declaration" msgstr "" -#: cp/decl.cc:15568 +#: cp/decl.cc:15577 #, gcc-internal-format msgid "%-qualified parameter is deprecated" msgstr "" -#: cp/decl.cc:15576 +#: cp/decl.cc:15585 #, gcc-internal-format msgid "parameter %qD invalidly declared method type" msgstr "" -#: cp/decl.cc:15601 +#: cp/decl.cc:15610 #, gcc-internal-format msgid "parameter %qD includes pointer to array of unknown bound %qT" msgstr "" -#: cp/decl.cc:15603 +#: cp/decl.cc:15612 #, gcc-internal-format msgid "parameter %qD includes reference to array of unknown bound %qT" msgstr "" -#: cp/decl.cc:15886 +#: cp/decl.cc:15895 #, gcc-internal-format msgid "invalid constructor; you probably meant %<%T (const %T&)%>" msgstr "" -#: cp/decl.cc:15965 +#: cp/decl.cc:15974 #, gcc-internal-format msgid "%qD may not be declared within a namespace" msgstr "" -#: cp/decl.cc:15972 +#: cp/decl.cc:15981 #, gcc-internal-format msgid "%qD may not be declared as static" msgstr "" -#: cp/decl.cc:16000 +#: cp/decl.cc:16009 #, gcc-internal-format msgid "%qD must be a non-static member function" msgstr "" -#: cp/decl.cc:16008 +#: cp/decl.cc:16017 #, gcc-internal-format msgid "%qD must be a member function" msgstr "" -#: cp/decl.cc:16016 +#: cp/decl.cc:16025 #, gcc-internal-format msgid "" "%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu+" "+23%>" msgstr "" -#: cp/decl.cc:16026 +#: cp/decl.cc:16035 #, gcc-internal-format msgid "" "%qD must be either a non-static member function or a non-member function" msgstr "" -#: cp/decl.cc:16036 +#: cp/decl.cc:16045 #, gcc-internal-format msgid "%qD must have an argument of class or enumerated type" msgstr "" #. 13.4.0.3 -#: cp/decl.cc:16067 +#: cp/decl.cc:16076 #, gcc-internal-format msgid "ISO C++ prohibits overloading %" msgstr "" -#: cp/decl.cc:16077 +#: cp/decl.cc:16086 #, gcc-internal-format msgid "%qD must not have variable number of arguments" msgstr "" -#: cp/decl.cc:16103 +#: cp/decl.cc:16112 #, gcc-internal-format msgid "%qD must have either zero or one argument" msgstr "" -#: cp/decl.cc:16104 +#: cp/decl.cc:16113 #, gcc-internal-format msgid "%qD must have either one or two arguments" msgstr "" -#: cp/decl.cc:16116 +#: cp/decl.cc:16125 #, gcc-internal-format msgid "postfix %qD must have % as its argument" msgstr "" -#: cp/decl.cc:16117 +#: cp/decl.cc:16126 #, gcc-internal-format msgid "postfix %qD must have % as its second argument" msgstr "" -#: cp/decl.cc:16128 +#: cp/decl.cc:16137 #, gcc-internal-format msgid "%qD must have no arguments" msgstr "" -#: cp/decl.cc:16129 cp/decl.cc:16139 +#: cp/decl.cc:16138 cp/decl.cc:16148 #, gcc-internal-format msgid "%qD must have exactly one argument" msgstr "" -#: cp/decl.cc:16140 +#: cp/decl.cc:16149 #, gcc-internal-format msgid "%qD must have exactly two arguments" msgstr "" -#: cp/decl.cc:16155 +#: cp/decl.cc:16164 #, gcc-internal-format msgid "%qD cannot have default arguments" msgstr "" -#: cp/decl.cc:16179 +#: cp/decl.cc:16188 #, gcc-internal-format msgid "converting %qT to % will never use a type conversion operator" msgstr "" -#: cp/decl.cc:16186 +#: cp/decl.cc:16195 #, gcc-internal-format msgid "" "converting %qT to a reference to the same type will never use a type " "conversion operator" msgstr "" -#: cp/decl.cc:16188 +#: cp/decl.cc:16197 #, gcc-internal-format msgid "" "converting %qT to the same type will never use a type conversion operator" msgstr "" -#: cp/decl.cc:16197 +#: cp/decl.cc:16206 #, gcc-internal-format msgid "" "converting %qT to a reference to a base class %qT will never use a type " "conversion operator" msgstr "" -#: cp/decl.cc:16199 +#: cp/decl.cc:16208 #, gcc-internal-format msgid "" "converting %qT to a base class %qT will never use a type conversion operator" msgstr "" -#: cp/decl.cc:16215 +#: cp/decl.cc:16224 #, gcc-internal-format msgid "user-defined %qD always evaluates both arguments" msgstr "" -#: cp/decl.cc:16234 +#: cp/decl.cc:16243 #, gcc-internal-format msgid "prefix %qD should return %qT" msgstr "" -#: cp/decl.cc:16241 +#: cp/decl.cc:16250 #, gcc-internal-format msgid "postfix %qD should return %qT" msgstr "" -#: cp/decl.cc:16253 +#: cp/decl.cc:16262 #, gcc-internal-format msgid "%qD should return by value" msgstr "" -#: cp/decl.cc:16308 +#: cp/decl.cc:16317 #, gcc-internal-format msgid "using template type parameter %qT after %qs" msgstr "" -#: cp/decl.cc:16331 +#: cp/decl.cc:16340 #, gcc-internal-format msgid "using alias template specialization %qT after %qs" msgstr "" -#: cp/decl.cc:16334 +#: cp/decl.cc:16343 #, gcc-internal-format msgid "using typedef-name %qD after %qs" msgstr "" -#: cp/decl.cc:16336 +#: cp/decl.cc:16345 #, gcc-internal-format msgid "%qD has a previous declaration here" msgstr "" -#: cp/decl.cc:16344 +#: cp/decl.cc:16353 #, gcc-internal-format msgid "%qT referred to as %qs" msgstr "" -#: cp/decl.cc:16345 cp/decl.cc:16352 +#: cp/decl.cc:16354 cp/decl.cc:16361 #, gcc-internal-format msgid "%qT has a previous declaration here" msgstr "" -#: cp/decl.cc:16351 +#: cp/decl.cc:16360 #, gcc-internal-format msgid "%qT referred to as enum" msgstr "" @@ -60561,115 +60815,115 @@ msgstr "" #. void f(class C); // No template header here #. #. then the required template argument is missing. -#: cp/decl.cc:16366 +#: cp/decl.cc:16375 #, gcc-internal-format msgid "template argument required for %<%s %T%>" msgstr "" -#: cp/decl.cc:16409 cp/name-lookup.cc:6040 cp/name-lookup.cc:6172 -#: cp/parser.cc:7215 cp/parser.cc:32107 +#: cp/decl.cc:16418 cp/name-lookup.cc:6074 cp/name-lookup.cc:6206 +#: cp/parser.cc:7215 cp/parser.cc:32113 #, gcc-internal-format msgid "reference to %qD is ambiguous" msgstr "" -#: cp/decl.cc:16418 +#: cp/decl.cc:16427 #, gcc-internal-format msgid "class template %qD redeclared as non-template" msgstr "" -#: cp/decl.cc:16440 cp/name-lookup.cc:5730 +#: cp/decl.cc:16449 cp/name-lookup.cc:5764 #, gcc-internal-format msgid "%qD has the same name as the class in which it is declared" msgstr "" -#: cp/decl.cc:16468 cp/friend.cc:317 cp/parser.cc:3512 cp/parser.cc:6920 -#: cp/pt.cc:9970 +#: cp/decl.cc:16477 cp/friend.cc:317 cp/parser.cc:3512 cp/parser.cc:6920 +#: cp/pt.cc:9971 #, gcc-internal-format msgid "%qT is not a template" msgstr "" -#: cp/decl.cc:16473 +#: cp/decl.cc:16482 #, gcc-internal-format msgid "perhaps you want to explicitly add %<%T::%>" msgstr "" -#: cp/decl.cc:16578 +#: cp/decl.cc:16587 #, gcc-internal-format msgid "use of enum %q#D without previous declaration" msgstr "" -#: cp/decl.cc:16604 +#: cp/decl.cc:16613 #, gcc-internal-format msgid "redeclaration of %qT as a non-template" msgstr "" -#: cp/decl.cc:16616 cp/semantics.cc:3712 +#: cp/decl.cc:16625 cp/semantics.cc:3777 #, gcc-internal-format msgid "cannot declare %qD in a different module" msgstr "" -#: cp/decl.cc:16617 cp/decl.cc:16970 lto/lto-symtab.cc:865 +#: cp/decl.cc:16626 cp/decl.cc:16979 lto/lto-symtab.cc:865 #, gcc-internal-format msgid "previously declared here" msgstr "" -#: cp/decl.cc:16744 +#: cp/decl.cc:16753 #, gcc-internal-format msgid "derived union %qT invalid" msgstr "" -#: cp/decl.cc:16751 +#: cp/decl.cc:16760 #, gcc-internal-format msgid "%qT defined with multiple direct bases" msgstr "" -#: cp/decl.cc:16762 +#: cp/decl.cc:16771 #, gcc-internal-format msgid "%qT defined with direct virtual base" msgstr "" -#: cp/decl.cc:16787 +#: cp/decl.cc:16796 #, gcc-internal-format msgid "base type %qT fails to be a struct or class type" msgstr "" -#: cp/decl.cc:16817 +#: cp/decl.cc:16826 #, gcc-internal-format msgid "recursive type %qT undefined" msgstr "" -#: cp/decl.cc:16819 +#: cp/decl.cc:16828 #, gcc-internal-format msgid "duplicate base type %qT invalid" msgstr "" -#: cp/decl.cc:16969 +#: cp/decl.cc:16978 #, gcc-internal-format msgid "cannot declare %qD in different module" msgstr "" -#: cp/decl.cc:16982 +#: cp/decl.cc:16991 #, gcc-internal-format msgid "scoped/unscoped mismatch in enum %q#T" msgstr "" -#: cp/decl.cc:16985 cp/decl.cc:16994 cp/decl.cc:17005 cp/decl.cc:17597 +#: cp/decl.cc:16994 cp/decl.cc:17003 cp/decl.cc:17014 cp/decl.cc:17606 #: cp/parser.cc:21734 #, gcc-internal-format msgid "previous definition here" msgstr "" -#: cp/decl.cc:16991 +#: cp/decl.cc:17000 #, gcc-internal-format msgid "underlying type mismatch in enum %q#T" msgstr "" -#: cp/decl.cc:17002 +#: cp/decl.cc:17011 #, gcc-internal-format msgid "different underlying type in enum %q#T" msgstr "" -#: cp/decl.cc:17075 +#: cp/decl.cc:17084 #, gcc-internal-format msgid "underlying type %qT of %qT must be an integral type" msgstr "" @@ -60678,83 +60932,83 @@ msgstr "" #. #. IF no integral type can represent all the enumerator values, the #. enumeration is ill-formed. -#: cp/decl.cc:17224 +#: cp/decl.cc:17233 #, gcc-internal-format msgid "no integral type can represent all of the enumerator values for %qT" msgstr "" -#: cp/decl.cc:17405 +#: cp/decl.cc:17414 #, gcc-internal-format msgid "" "enumerator value for %qD must have integral or unscoped enumeration type" msgstr "" -#: cp/decl.cc:17415 +#: cp/decl.cc:17424 #, gcc-internal-format msgid "enumerator value for %qD is not an integer constant" msgstr "" -#: cp/decl.cc:17464 +#: cp/decl.cc:17473 #, gcc-internal-format msgid "incremented enumerator value is too large for %" msgstr "" -#: cp/decl.cc:17465 +#: cp/decl.cc:17474 #, gcc-internal-format msgid "incremented enumerator value is too large for %" msgstr "" -#: cp/decl.cc:17476 +#: cp/decl.cc:17485 #, gcc-internal-format msgid "overflow in enumeration values at %qD" msgstr "" -#: cp/decl.cc:17496 +#: cp/decl.cc:17505 #, gcc-internal-format msgid "enumerator value %qE is outside the range of underlying type %qT" msgstr "" -#: cp/decl.cc:17595 cp/parser.cc:21732 +#: cp/decl.cc:17604 cp/parser.cc:21732 #, gcc-internal-format msgid "multiple definition of %q#T" msgstr "" -#: cp/decl.cc:17669 +#: cp/decl.cc:17678 #, gcc-internal-format msgid "return type %q#T is incomplete" msgstr "" -#: cp/decl.cc:17827 cp/typeck.cc:11238 +#: cp/decl.cc:17836 cp/typeck.cc:11241 #, gcc-internal-format msgid "% should return a reference to %<*this%>" msgstr "" -#: cp/decl.cc:18657 +#: cp/decl.cc:18666 #, gcc-internal-format msgid "no return statements in function returning %qT" msgstr "" -#: cp/decl.cc:18659 cp/typeck.cc:11118 +#: cp/decl.cc:18668 cp/typeck.cc:11121 #, gcc-internal-format msgid "only plain % return type can be deduced to %" msgstr "" -#: cp/decl.cc:18719 +#: cp/decl.cc:18728 #, gcc-internal-format msgid "no return statement in % function returning non-void" msgstr "" -#: cp/decl.cc:18899 +#: cp/decl.cc:18908 #, gcc-internal-format msgid "%qD is already defined in class %qT" msgstr "" -#: cp/decl.cc:19287 +#: cp/decl.cc:19298 #, gcc-internal-format msgid "using %qs" msgstr "" -#: cp/decl.cc:19299 +#: cp/decl.cc:19310 #, gcc-internal-format msgid "use of %qD before deduction of %" msgstr "" @@ -60812,7 +61066,7 @@ msgstr "" msgid "deleting %qT is undefined" msgstr "" -#: cp/decl2.cc:768 cp/pt.cc:5939 +#: cp/decl2.cc:768 cp/pt.cc:5940 #, gcc-internal-format msgid "template declaration of %q#D" msgstr "" @@ -60823,7 +61077,7 @@ msgid "" "template parameter lists provided don%'t match the template parameters of %qD" msgstr "" -#: cp/decl2.cc:823 cp/pt.cc:5907 +#: cp/decl2.cc:823 cp/pt.cc:5908 #, gcc-internal-format msgid "destructor %qD declared as member template" msgstr "" @@ -61007,307 +61261,317 @@ msgstr "" msgid "% takes type %qT as first parameter" msgstr "" -#: cp/decl2.cc:3154 +#: cp/decl2.cc:3159 #, gcc-internal-format msgid "%qT has a field %q#D whose type has no linkage" msgstr "" -#: cp/decl2.cc:3158 +#: cp/decl2.cc:3163 #, gcc-internal-format msgid "" "%qT has a field %qD whose type depends on the type %qT which has no linkage" msgstr "" -#: cp/decl2.cc:3164 +#: cp/decl2.cc:3169 #, gcc-internal-format msgid "%qT has a field %q#D whose type has internal linkage" msgstr "" #. In C++98 this can only happen with unnamed namespaces. -#: cp/decl2.cc:3168 +#: cp/decl2.cc:3173 #, gcc-internal-format msgid "%qT has a field %q#D whose type uses the anonymous namespace" msgstr "" -#: cp/decl2.cc:3176 +#: cp/decl2.cc:3181 #, gcc-internal-format msgid "%qT declared with greater visibility than the type of its field %qD" msgstr "" -#: cp/decl2.cc:3195 +#: cp/decl2.cc:3200 #, gcc-internal-format msgid "%qT has a base %qT which has no linkage" msgstr "" -#: cp/decl2.cc:3199 +#: cp/decl2.cc:3204 #, gcc-internal-format msgid "%qT has a base %qT which depends on the type %qT which has no linkage" msgstr "" -#: cp/decl2.cc:3205 +#: cp/decl2.cc:3210 #, gcc-internal-format msgid "%qT has a base %qT which has internal linkage" msgstr "" #. In C++98 this can only happen with unnamed namespaces. -#: cp/decl2.cc:3209 +#: cp/decl2.cc:3214 #, gcc-internal-format msgid "%qT has a base %qT which uses the anonymous namespace" msgstr "" -#: cp/decl2.cc:3216 +#: cp/decl2.cc:3221 #, gcc-internal-format msgid "%qT declared with greater visibility than its base %qT" msgstr "" -#: cp/decl2.cc:4695 +#: cp/decl2.cc:4710 +#, gcc-internal-format +msgid "%q#D, declared using an unnamed type, is used but never defined" +msgstr "" + +#: cp/decl2.cc:4714 #, gcc-internal-format -msgid "%q#D, declared using unnamed type, is used but never defined" +msgid "%q#D, declared using an unnamed type, is used but not defined" msgstr "" #. DRs 132, 319 and 389 seem to indicate types with #. no linkage can only be used to declare extern "C" #. entities. Since it's not always an error in the #. ISO C++ 90 Standard, we only issue a warning. -#: cp/decl2.cc:4704 +#: cp/decl2.cc:4724 #, gcc-internal-format msgid "unnamed type with no linkage used to declare variable %q#D with linkage" msgstr "" -#: cp/decl2.cc:4708 +#: cp/decl2.cc:4728 #, gcc-internal-format msgid "unnamed type with no linkage used to declare function %q#D with linkage" msgstr "" -#: cp/decl2.cc:4712 +#: cp/decl2.cc:4732 #, gcc-internal-format msgid "" "%q#D does not refer to the unqualified type, so it is not used for linkage" msgstr "" -#: cp/decl2.cc:4720 +#: cp/decl2.cc:4750 #, gcc-internal-format msgid "%q#D, declared using local type %qT, is used but never defined" msgstr "" -#: cp/decl2.cc:4724 +#: cp/decl2.cc:4754 +#, gcc-internal-format +msgid "%q#D, declared using local type %qT, is used but not defined here" +msgstr "" + +#: cp/decl2.cc:4762 #, gcc-internal-format msgid "type %qT with no linkage used to declare variable %q#D with linkage" msgstr "" -#: cp/decl2.cc:4727 +#: cp/decl2.cc:4765 #, gcc-internal-format msgid "type %qT with no linkage used to declare function %q#D with linkage" msgstr "" -#: cp/decl2.cc:4924 +#: cp/decl2.cc:4962 #, gcc-internal-format msgid "mangling of %q#D as %qE conflicts with a previous mangle" msgstr "" -#: cp/decl2.cc:4927 +#: cp/decl2.cc:4965 #, gcc-internal-format msgid "previous mangling %q#D" msgstr "" -#: cp/decl2.cc:4929 +#: cp/decl2.cc:4967 #, gcc-internal-format msgid "" "a later %<-fabi-version=%> (or =0) avoids this error with a change in " "mangling" msgstr "" -#: cp/decl2.cc:5001 cp/decl2.cc:5004 +#: cp/decl2.cc:5039 cp/decl2.cc:5042 #, gcc-internal-format msgid "the program should also define %qD" msgstr "" -#: cp/decl2.cc:5343 +#: cp/decl2.cc:5381 #, gcc-internal-format msgid "inline function %qD used but never defined" msgstr "" -#: cp/decl2.cc:5569 +#: cp/decl2.cc:5607 #, gcc-internal-format msgid "default argument missing for parameter %P of %q#D" msgstr "" -#: cp/decl2.cc:5574 +#: cp/decl2.cc:5612 #, gcc-internal-format msgid "...following parameter %P which has a default argument" msgstr "" -#: cp/decl2.cc:5698 +#: cp/decl2.cc:5736 #, gcc-internal-format msgid "implicitly-declared %qD is deprecated" msgstr "" -#: cp/decl2.cc:5702 +#: cp/decl2.cc:5740 #, gcc-internal-format msgid "because %qT has user-provided %qD" msgstr "" #. We mark a lambda conversion op as deleted if we can't #. generate it properly; see maybe_add_lambda_conv_op. -#: cp/decl2.cc:5843 +#: cp/decl2.cc:5881 #, gcc-internal-format msgid "converting lambda that uses %<...%> to function pointer" msgstr "" -#: cp/decl2.cc:5846 +#: cp/decl2.cc:5884 #, gcc-internal-format msgid "use of deleted function %qD" msgstr "" -#: cp/decl2.cc:5900 +#: cp/decl2.cc:5938 #, gcc-internal-format msgid "use of function %qD with unsatisfied constraints" msgstr "" -#: cp/decl2.cc:5930 +#: cp/decl2.cc:5968 #, gcc-internal-format msgid "use of built-in parameter pack %qD outside of a template" msgstr "" -#: cp/error.cc:4112 +#: cp/error.cc:4113 #, gcc-internal-format msgid "(no argument)" msgstr "" -#: cp/error.cc:4204 +#: cp/error.cc:4205 #, gcc-internal-format msgid "[...]" msgstr "" -#: cp/error.cc:4551 +#: cp/error.cc:4552 #, gcc-internal-format msgid "" "extended initializer lists only available with %<-std=c++11%> or %<-std=gnu+" "+11%>" msgstr "" -#: cp/error.cc:4556 +#: cp/error.cc:4557 #, gcc-internal-format msgid "" "explicit conversion operators only available with %<-std=c++11%> or %<-" "std=gnu++11%>" msgstr "" -#: cp/error.cc:4561 +#: cp/error.cc:4562 #, gcc-internal-format msgid "" "variadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4566 +#: cp/error.cc:4567 #, gcc-internal-format msgid "" "lambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4571 +#: cp/error.cc:4572 #, gcc-internal-format msgid "C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4576 +#: cp/error.cc:4577 #, gcc-internal-format msgid "scoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4581 +#: cp/error.cc:4582 #, gcc-internal-format msgid "" "defaulted and deleted functions only available with %<-std=c++11%> or %<-" "std=gnu++11%>" msgstr "" -#: cp/error.cc:4587 +#: cp/error.cc:4588 #, gcc-internal-format msgid "" "inline namespaces only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4592 +#: cp/error.cc:4593 #, gcc-internal-format msgid "" "override controls (override/final) only available with %<-std=c++11%> or %<-" "std=gnu++11%>" msgstr "" -#: cp/error.cc:4597 +#: cp/error.cc:4598 #, gcc-internal-format msgid "" "non-static data member initializers only available with %<-std=c++11%> or %<-" "std=gnu++11%>" msgstr "" -#: cp/error.cc:4602 +#: cp/error.cc:4603 #, gcc-internal-format msgid "" "user-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4607 +#: cp/error.cc:4608 #, gcc-internal-format msgid "" "delegating constructors only available with %<-std=c++11%> or %<-std=gnu+" "+11%>" msgstr "" -#: cp/error.cc:4612 +#: cp/error.cc:4613 #, gcc-internal-format msgid "" "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu+" "+11%>" msgstr "" -#: cp/error.cc:4617 +#: cp/error.cc:4618 #, gcc-internal-format msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4622 +#: cp/error.cc:4623 #, gcc-internal-format msgid "ref-qualifiers only available with %<-std=c++11%> or %<-std=gnu++11%>" msgstr "" -#: cp/error.cc:4672 +#: cp/error.cc:4673 #, gcc-internal-format msgid "incomplete type %qT used in nested name specifier" msgstr "" -#: cp/error.cc:4676 +#: cp/error.cc:4677 #, gcc-internal-format msgid "reference to %<%T::%D%> is ambiguous" msgstr "" -#: cp/error.cc:4690 +#: cp/error.cc:4691 #, gcc-internal-format msgid "%qD is not a member of %qT; did you mean %qs?" msgstr "" -#: cp/error.cc:4694 cp/typeck.cc:2874 +#: cp/error.cc:4695 cp/typeck.cc:2875 #, gcc-internal-format msgid "%qD is not a member of %qT" msgstr "" -#: cp/error.cc:4716 +#: cp/error.cc:4717 #, gcc-internal-format msgid "%qD is not a member of %qD; did you mean %qs?" msgstr "" -#: cp/error.cc:4720 cp/typeck.cc:3466 +#: cp/error.cc:4721 cp/typeck.cc:3467 #, gcc-internal-format msgid "%qD is not a member of %qD" msgstr "" -#: cp/error.cc:4731 +#: cp/error.cc:4732 #, gcc-internal-format msgid "%<::%D%> has not been declared; did you mean %qs?" msgstr "" -#: cp/error.cc:4735 +#: cp/error.cc:4736 #, gcc-internal-format msgid "%<::%D%> has not been declared" msgstr "" @@ -61514,7 +61778,7 @@ msgid "" "array" msgstr "" -#: cp/init.cc:901 cp/init.cc:982 +#: cp/init.cc:901 cp/init.cc:1014 #, gcc-internal-format msgid "%qD is initialized with itself" msgstr "" @@ -61524,376 +61788,376 @@ msgstr "" msgid "reference %qD is not yet bound to a value when used here" msgstr "" -#: cp/init.cc:911 +#: cp/init.cc:912 #, gcc-internal-format msgid "member %qD is used uninitialized" msgstr "" -#: cp/init.cc:959 +#: cp/init.cc:991 #, gcc-internal-format msgid "%qD should be initialized in the member initialization list" msgstr "" -#: cp/init.cc:1103 +#: cp/init.cc:1133 #, gcc-internal-format msgid "invalid initializer for array member %q#D" msgstr "" -#: cp/init.cc:1118 cp/init.cc:1144 cp/init.cc:2739 cp/method.cc:2494 +#: cp/init.cc:1148 cp/init.cc:1174 cp/init.cc:2769 cp/method.cc:2494 #, gcc-internal-format msgid "uninitialized const member in %q#T" msgstr "" -#: cp/init.cc:1120 cp/init.cc:1138 cp/init.cc:1146 cp/init.cc:2724 -#: cp/init.cc:2752 cp/method.cc:2497 cp/method.cc:2508 +#: cp/init.cc:1150 cp/init.cc:1168 cp/init.cc:1176 cp/init.cc:2754 +#: cp/init.cc:2782 cp/method.cc:2497 cp/method.cc:2508 #, gcc-internal-format msgid "%q#D should be initialized" msgstr "" -#: cp/init.cc:1136 cp/init.cc:2711 cp/method.cc:2505 +#: cp/init.cc:1166 cp/init.cc:2741 cp/method.cc:2505 #, gcc-internal-format msgid "uninitialized reference member in %q#T" msgstr "" -#: cp/init.cc:1321 +#: cp/init.cc:1351 #, gcc-internal-format msgid "%qD will be initialized after" msgstr "" -#: cp/init.cc:1324 +#: cp/init.cc:1354 #, gcc-internal-format msgid "base %qT will be initialized after" msgstr "" -#: cp/init.cc:1328 +#: cp/init.cc:1358 #, gcc-internal-format msgid " %q#D" msgstr "" -#: cp/init.cc:1330 +#: cp/init.cc:1360 #, gcc-internal-format msgid " base %qT" msgstr "" -#: cp/init.cc:1332 +#: cp/init.cc:1362 #, gcc-internal-format msgid " when initialized here" msgstr "" -#: cp/init.cc:1349 +#: cp/init.cc:1379 #, gcc-internal-format msgid "multiple initializations given for %qD" msgstr "" -#: cp/init.cc:1353 +#: cp/init.cc:1383 #, gcc-internal-format msgid "multiple initializations given for base %qT" msgstr "" -#: cp/init.cc:1440 +#: cp/init.cc:1470 #, gcc-internal-format msgid "initializations for multiple members of %qT" msgstr "" -#: cp/init.cc:1549 +#: cp/init.cc:1579 #, gcc-internal-format msgid "" "base class %q#T should be explicitly initialized in the copy constructor" msgstr "" -#: cp/init.cc:1785 cp/init.cc:1804 +#: cp/init.cc:1815 cp/init.cc:1834 #, gcc-internal-format msgid "class %qT does not have any field named %qD" msgstr "" -#: cp/init.cc:1791 +#: cp/init.cc:1821 #, gcc-internal-format msgid "" "%q#D is a static data member; it can only be initialized at its definition" msgstr "" -#: cp/init.cc:1798 +#: cp/init.cc:1828 #, gcc-internal-format msgid "%q#D is not a non-static data member of %qT" msgstr "" -#: cp/init.cc:1837 +#: cp/init.cc:1867 #, gcc-internal-format msgid "unnamed initializer for %qT, which has no base classes" msgstr "" -#: cp/init.cc:1845 +#: cp/init.cc:1875 #, gcc-internal-format msgid "unnamed initializer for %qT, which uses multiple inheritance" msgstr "" -#: cp/init.cc:1892 +#: cp/init.cc:1922 #, gcc-internal-format msgid "%qD is both a direct base and an indirect virtual base" msgstr "" -#: cp/init.cc:1900 +#: cp/init.cc:1930 #, gcc-internal-format msgid "type %qT is not a direct or virtual base of %qT" msgstr "" -#: cp/init.cc:1903 +#: cp/init.cc:1933 #, gcc-internal-format msgid "type %qT is not a direct base of %qT" msgstr "" -#: cp/init.cc:2015 cp/init.cc:4914 cp/typeck2.cc:1379 +#: cp/init.cc:2045 cp/init.cc:4944 cp/typeck2.cc:1378 #, gcc-internal-format msgid "array must be initialized with a brace-enclosed initializer" msgstr "" -#: cp/init.cc:2336 cp/semantics.cc:3989 rust/backend/rust-tree.cc:4168 +#: cp/init.cc:2366 cp/semantics.cc:4054 rust/backend/rust-tree.cc:4168 #, gcc-internal-format msgid "%qT is not a class type" msgstr "" -#: cp/init.cc:2394 +#: cp/init.cc:2424 #, gcc-internal-format msgid "incomplete type %qT does not have member %qD" msgstr "" -#: cp/init.cc:2408 +#: cp/init.cc:2438 #, gcc-internal-format msgid "invalid pointer to bit-field %qD" msgstr "" -#: cp/init.cc:2494 cp/typeck.cc:2361 rust/backend/rust-tree.cc:3811 +#: cp/init.cc:2524 cp/typeck.cc:2361 rust/backend/rust-tree.cc:3811 #, gcc-internal-format msgid "invalid use of non-static member function %qD" msgstr "" -#: cp/init.cc:2501 cp/semantics.cc:2308 +#: cp/init.cc:2531 cp/semantics.cc:2373 #, gcc-internal-format msgid "invalid use of non-static data member %qD" msgstr "" -#: cp/init.cc:2708 +#: cp/init.cc:2738 #, gcc-internal-format msgid "" "uninitialized reference member in %q#T using % without new-initializer" msgstr "" -#: cp/init.cc:2716 +#: cp/init.cc:2746 #, gcc-internal-format msgid "" "uninitialized reference member in base %q#T of %q#T using % without " "new-initializer" msgstr "" -#: cp/init.cc:2720 +#: cp/init.cc:2750 #, gcc-internal-format msgid "uninitialized reference member in base %q#T of %q#T" msgstr "" -#: cp/init.cc:2736 +#: cp/init.cc:2766 #, gcc-internal-format msgid "" "uninitialized const member in %q#T using % without new-initializer" msgstr "" -#: cp/init.cc:2744 +#: cp/init.cc:2774 #, gcc-internal-format msgid "" "uninitialized const member in base %q#T of %q#T using % without new-" "initializer" msgstr "" -#: cp/init.cc:2748 +#: cp/init.cc:2778 #, gcc-internal-format msgid "uninitialized const member in base %q#T of %q#T" msgstr "" -#: cp/init.cc:2863 +#: cp/init.cc:2893 #, 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.cc:2866 +#: cp/init.cc:2896 #, gcc-internal-format msgid "" "placement new constructing an object of type %<%T [%wu]%> and size %qwu in a " "region of type %qT and size at most %qwu" msgstr "" -#: cp/init.cc:2876 +#: cp/init.cc:2906 #, 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.cc:2879 +#: cp/init.cc:2909 #, 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 at most %qwu" msgstr "" -#: cp/init.cc:2888 +#: cp/init.cc:2918 #, 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.cc:2891 +#: cp/init.cc:2921 #, gcc-internal-format msgid "" "placement new constructing an object of type %qT and size %qwu in a region " "of type %qT and size at most %qwu" msgstr "" -#: cp/init.cc:2908 +#: cp/init.cc:2938 #, gcc-internal-format msgid "at offset %wi from %qD declared here" msgstr "" -#: cp/init.cc:2912 +#: cp/init.cc:2942 #, gcc-internal-format msgid "at offset [%wi, %wi] from %qD declared here" msgstr "" -#: cp/init.cc:3110 +#: cp/init.cc:3140 #, gcc-internal-format msgid "integer overflow in array size" msgstr "" -#: cp/init.cc:3120 +#: cp/init.cc:3150 #, gcc-internal-format msgid "array size in new-expression must be constant" msgstr "" -#: cp/init.cc:3138 +#: cp/init.cc:3168 #, gcc-internal-format msgid "variably modified type not allowed in new-expression" msgstr "" -#: cp/init.cc:3154 +#: cp/init.cc:3184 #, gcc-internal-format msgid "" "non-constant array new length must be specified directly, not by %" msgstr "" -#: cp/init.cc:3156 +#: cp/init.cc:3186 #, gcc-internal-format msgid "" "non-constant array new length must be specified without parentheses around " "the type-id" msgstr "" -#: cp/init.cc:3166 +#: cp/init.cc:3196 #, gcc-internal-format msgid "invalid type % for %" msgstr "" -#: cp/init.cc:3172 +#: cp/init.cc:3202 #, gcc-internal-format msgid "" "% of % does not extend the lifetime of the " "underlying array" msgstr "" -#: cp/init.cc:3214 +#: cp/init.cc:3244 #, gcc-internal-format msgid "uninitialized const in % of %q#T" msgstr "" -#: cp/init.cc:3370 +#: cp/init.cc:3400 #, gcc-internal-format msgid "no suitable %qD found in class %qT" msgstr "" -#: cp/init.cc:3459 +#: cp/init.cc:3489 #, gcc-internal-format msgid "% of type %qT with extended alignment %d" msgstr "" -#: cp/init.cc:3462 +#: cp/init.cc:3492 #, gcc-internal-format msgid "uses %qD, which does not have an alignment parameter" msgstr "" -#: cp/init.cc:3465 +#: cp/init.cc:3495 #, gcc-internal-format msgid "use %<-faligned-new%> to enable C++17 over-aligned new support" msgstr "" -#: cp/init.cc:3661 +#: cp/init.cc:3691 #, gcc-internal-format msgid "parenthesized initializer in array new" msgstr "" -#: cp/init.cc:3932 +#: cp/init.cc:3962 #, gcc-internal-format msgid "size in array new must have integral type" msgstr "" -#: cp/init.cc:3961 +#: cp/init.cc:3991 #, gcc-internal-format msgid "new cannot be applied to a reference type" msgstr "" -#: cp/init.cc:3970 +#: cp/init.cc:4000 #, gcc-internal-format msgid "new cannot be applied to a function type" msgstr "" -#: cp/init.cc:4090 +#: cp/init.cc:4120 #, gcc-internal-format msgid "possible problem detected in invocation of operator %" msgstr "" -#: cp/init.cc:4094 +#: cp/init.cc:4124 #, gcc-internal-format msgid "" "neither the destructor nor the class-specific operator % will be " "called, even if they are declared when the class is defined" msgstr "" -#: cp/init.cc:4816 +#: cp/init.cc:4846 #, gcc-internal-format msgid "initializer ends prematurely" msgstr "" -#: cp/init.cc:5114 +#: cp/init.cc:5144 #, gcc-internal-format msgid "unknown array size in delete" msgstr "" -#: cp/init.cc:5148 +#: cp/init.cc:5178 #, gcc-internal-format msgid "possible problem detected in invocation of %" msgstr "" -#: cp/init.cc:5153 +#: cp/init.cc:5183 #, gcc-internal-format msgid "" "neither the destructor nor the class-specific % will be " "called, even if they are declared when the class is defined" msgstr "" -#: cp/init.cc:5168 +#: cp/init.cc:5198 #, gcc-internal-format msgid "" "deleting object of abstract class type %qT which has non-virtual destructor " "will cause undefined behavior" msgstr "" -#: cp/init.cc:5173 +#: cp/init.cc:5203 #, gcc-internal-format msgid "" "deleting object of polymorphic class type %qT which has non-virtual " "destructor might cause undefined behavior" msgstr "" -#: cp/init.cc:5480 +#: cp/init.cc:5510 #, gcc-internal-format msgid "type to vector delete is neither pointer or array type" msgstr "" @@ -62344,225 +62608,225 @@ msgstr "" msgid "encapsulation is malformed" msgstr "" -#: cp/module.cc:11383 +#: cp/module.cc:11377 #, gcc-internal-format msgid "conflicting global module declaration %#qD" msgstr "" -#: cp/module.cc:11385 +#: cp/module.cc:11379 #, gcc-internal-format msgid "existing declaration %#qD" msgstr "" -#: cp/module.cc:12423 +#: cp/module.cc:12419 #, gcc-internal-format msgid "definition of %qD does not match" msgstr "" -#: cp/module.cc:12425 +#: cp/module.cc:12421 #, gcc-internal-format msgid "existing definition %qD" msgstr "" -#: cp/module.cc:12437 +#: cp/module.cc:12433 #, gcc-internal-format msgid "... this enumerator %qD" msgstr "" -#: cp/module.cc:12439 +#: cp/module.cc:12435 #, gcc-internal-format msgid "enumerator %qD does not match ..." msgstr "" -#: cp/module.cc:12445 +#: cp/module.cc:12441 #, gcc-internal-format msgid "additional enumerators beginning with %qD" msgstr "" -#: cp/module.cc:12449 +#: cp/module.cc:12445 #, gcc-internal-format msgid "enumeration range differs" msgstr "" -#: cp/module.cc:13580 +#: cp/module.cc:13540 #, gcc-internal-format msgid "%q#D references internal linkage entity %q#D" msgstr "" -#: cp/module.cc:14163 +#: cp/module.cc:14123 #, gcc-internal-format msgid "recursive lazy load" msgstr "" #. Cannot import the current module. -#: cp/module.cc:14182 +#: cp/module.cc:14142 #, gcc-internal-format msgid "cannot import module in its own purview" msgstr "" -#: cp/module.cc:14183 cp/module.cc:19383 +#: cp/module.cc:14143 cp/module.cc:19380 #, gcc-internal-format msgid "module %qs declared here" msgstr "" -#: cp/module.cc:14527 +#: cp/module.cc:14487 #, gcc-internal-format msgid "indirect import %qs is not already loaded" msgstr "" -#: cp/module.cc:14533 +#: cp/module.cc:14493 #, gcc-internal-format msgid "import %qs has CRC mismatch" msgstr "" -#: cp/module.cc:16333 +#: cp/module.cc:16321 #, gcc-internal-format msgid "unable to represent further imported source locations" msgstr "" -#: cp/module.cc:17206 +#: cp/module.cc:17194 #, gcc-internal-format msgid "not exporting %<#define %E%> as it is a keyword" msgstr "" -#: cp/module.cc:17446 +#: cp/module.cc:17434 #, gcc-internal-format msgid "macro definitions of %qE corrupted" msgstr "" -#: cp/module.cc:17470 cp/module.cc:17473 +#: cp/module.cc:17458 cp/module.cc:17461 #, gcc-internal-format msgid "inconsistent imported macro definition %qE" msgstr "" -#: cp/module.cc:17479 +#: cp/module.cc:17467 #, gcc-internal-format msgid "%<#undef %E%>" msgstr "" -#: cp/module.cc:17481 +#: cp/module.cc:17469 #, gcc-internal-format msgid "%<#define %s%>" msgstr "" -#: cp/module.cc:17713 +#: cp/module.cc:17702 #, gcc-internal-format msgid "compiled module file is %qs" msgstr "" -#: cp/module.cc:17750 cp/module.cc:17755 +#: cp/module.cc:17739 cp/module.cc:17744 #, gcc-internal-format, gfc-internal-format msgid "compiled module is %sversion %s" msgstr "" -#: cp/module.cc:17761 +#: cp/module.cc:17750 #, gcc-internal-format, gfc-internal-format msgid "compiler is %sversion %s%s%s" msgstr "" -#: cp/module.cc:17791 +#: cp/module.cc:17780 #, gcc-internal-format msgid "module %qs found" msgstr "" -#: cp/module.cc:17793 +#: cp/module.cc:17782 #, gcc-internal-format msgid "header module expected, module %qs found" msgstr "" -#: cp/module.cc:17794 +#: cp/module.cc:17783 #, gcc-internal-format msgid "module %qs expected, header module found" msgstr "" -#: cp/module.cc:17809 +#: cp/module.cc:17798 #, gcc-internal-format msgid "module %qs CRC mismatch" msgstr "" -#: cp/module.cc:17823 +#: cp/module.cc:17812 #, gcc-internal-format msgid "target & host is %qs:%qs, expected %qs:%qs" msgstr "" -#: cp/module.cc:17835 +#: cp/module.cc:17824 #, gcc-internal-format msgid "language dialect differs %qs, expected %qs" msgstr "" -#: cp/module.cc:17851 +#: cp/module.cc:17840 #, gcc-internal-format msgid "module contains OpenMP, use %<-fopenmp%> to enable" msgstr "" -#: cp/module.cc:17868 +#: cp/module.cc:17857 #, gcc-internal-format msgid "fixed tree mismatch" msgstr "" -#: cp/module.cc:17959 +#: cp/module.cc:17948 #, gcc-internal-format msgid "interface partition is not exported" msgstr "" -#: cp/module.cc:18516 +#: cp/module.cc:18505 #, gcc-internal-format, gfc-internal-format msgid "failed to read compiled module cluster %u: %s" msgstr "" -#: cp/module.cc:18554 +#: cp/module.cc:18543 #, gcc-internal-format, gfc-internal-format msgid "failed to read compiled module: %s" msgstr "" -#: cp/module.cc:18564 +#: cp/module.cc:18553 #, gcc-internal-format msgid "" "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> " "value, or increasing the per-process file descriptor limit" msgstr "" -#: cp/module.cc:18569 +#: cp/module.cc:18558 #, gcc-internal-format msgid "imports must be built before being imported" msgstr "" -#: cp/module.cc:18572 +#: cp/module.cc:18561 #, gcc-internal-format msgid "returning to the gate for a mechanical issue" msgstr "" -#: cp/module.cc:19077 +#: cp/module.cc:19074 #, gcc-internal-format msgid "reading CMI %qs" msgstr "" -#: cp/module.cc:19228 +#: cp/module.cc:19225 #, gcc-internal-format msgid "failed to load binding %<%E%s%E%>" msgstr "" -#: cp/module.cc:19229 +#: cp/module.cc:19226 #, gcc-internal-format msgid "failed to load binding %<%E%s%E@%s%>" msgstr "" -#: cp/module.cc:19236 +#: cp/module.cc:19233 #, gcc-internal-format msgid "during load of binding %<%E%s%E%>" msgstr "" -#: cp/module.cc:19237 +#: cp/module.cc:19234 #, gcc-internal-format msgid "during load of binding %<%E%s%E@%s%>" msgstr "" -#: cp/module.cc:19299 +#: cp/module.cc:19296 #, gcc-internal-format msgid "failed to load pendings for %<%E%s%E%>" msgstr "" -#: cp/module.cc:19303 +#: cp/module.cc:19300 #, gcc-internal-format msgid "during load of pendings for %<%E%s%E%>" msgstr "" @@ -62574,102 +62838,102 @@ msgstr "" #. module, so we don't want to confuse things by having to think #. about whether 'extern "C++" { import foo; }' puts foo's #. contents into the global module all of a sudden. -#: cp/module.cc:19348 +#: cp/module.cc:19345 #, gcc-internal-format msgid "import of named module %qs inside language-linkage block" msgstr "" -#: cp/module.cc:19378 +#: cp/module.cc:19375 #, gcc-internal-format msgid "module already declared" msgstr "" -#: cp/module.cc:19379 +#: cp/module.cc:19376 #, gcc-internal-format msgid "module already imported" msgstr "" -#: cp/module.cc:19384 +#: cp/module.cc:19381 #, gcc-internal-format msgid "module %qs imported here" msgstr "" -#: cp/module.cc:19591 +#: cp/module.cc:19588 #, gcc-internal-format, gfc-internal-format msgid "unknown Compiled Module Interface: %s" msgstr "" -#: cp/module.cc:19634 +#: cp/module.cc:19631 #, gcc-internal-format msgid "cannot determine %<#include%> translation of %s: %s" msgstr "" -#: cp/module.cc:19652 +#: cp/module.cc:19649 #, gcc-internal-format msgid "include %qs translated to import" msgstr "" -#: cp/module.cc:19653 +#: cp/module.cc:19650 #, gcc-internal-format msgid "include %qs processed textually" msgstr "" -#: cp/module.cc:20012 +#: cp/module.cc:20009 #, gcc-internal-format msgid "C++ modules are incompatible with precompiled headers" msgstr "" -#: cp/module.cc:20016 +#: cp/module.cc:20013 #, gcc-internal-format msgid "C++ modules are incompatible with traditional preprocessing" msgstr "" -#: cp/module.cc:20026 +#: cp/module.cc:20023 #, gcc-internal-format msgid "macro debug output may be incomplete with modules" msgstr "" -#: cp/module.cc:20027 +#: cp/module.cc:20024 #, gcc-internal-format msgid "module dependencies require preprocessing" msgstr "" -#: cp/module.cc:20029 +#: cp/module.cc:20026 #, gcc-internal-format msgid "you should use the %<-%s%> option" msgstr "" -#: cp/module.cc:20064 cp/module.cc:20093 +#: cp/module.cc:20061 cp/module.cc:20090 #, gcc-internal-format msgid "invalid header name %qs" msgstr "" -#: cp/module.cc:20103 +#: cp/module.cc:20100 #, gcc-internal-format msgid "invalid module name %qs" msgstr "" -#: cp/module.cc:20293 +#: cp/module.cc:20298 #, gcc-internal-format msgid "%<-fmodule-only%> used for non-interface" msgstr "" -#: cp/module.cc:20333 +#: cp/module.cc:20338 #, gcc-internal-format msgid "writing CMI %qs" msgstr "" -#: cp/module.cc:20340 +#: cp/module.cc:20345 #, gcc-internal-format msgid "not writing module %qs due to errors" msgstr "" -#: cp/module.cc:20405 +#: cp/module.cc:20410 #, gcc-internal-format, gfc-internal-format msgid "failed to write compiled module: %s" msgstr "" -#: cp/module.cc:20502 +#: cp/module.cc:20507 #, gcc-internal-format msgid "unknown header kind %qs" msgstr "" @@ -62756,218 +63020,218 @@ msgstr "" msgid "%q#D declared here with module linkage" msgstr "" -#: cp/name-lookup.cc:5877 +#: cp/name-lookup.cc:5911 #, gcc-internal-format msgid "%<%T%s%D%> names destructor" msgstr "" -#: cp/name-lookup.cc:5893 +#: cp/name-lookup.cc:5927 #, gcc-internal-format msgid "using-declaration for non-member at class scope" msgstr "" -#: cp/name-lookup.cc:5901 +#: cp/name-lookup.cc:5935 #, gcc-internal-format msgid "" "% with enumeration scope %q#T only available with %<-std=c++20%> or " "%<-std=gnu++20%>" msgstr "" -#: cp/name-lookup.cc:5917 cp/pt.cc:18456 +#: cp/name-lookup.cc:5951 cp/pt.cc:18459 #, gcc-internal-format msgid "%qT is not a class, namespace, or enumeration" msgstr "" -#: cp/name-lookup.cc:5927 +#: cp/name-lookup.cc:5961 #, gcc-internal-format msgid "non-member using-declaration names constructor of %qT" msgstr "" -#: cp/name-lookup.cc:5938 cp/name-lookup.cc:6011 +#: cp/name-lookup.cc:5972 cp/name-lookup.cc:6045 #, gcc-internal-format msgid "using-declaration for member at non-class scope" msgstr "" -#: cp/name-lookup.cc:5961 +#: cp/name-lookup.cc:5995 #, gcc-internal-format msgid "%qT is not a direct base of %qT" msgstr "" -#: cp/name-lookup.cc:6021 +#: cp/name-lookup.cc:6055 #, gcc-internal-format msgid "did you mean %?" msgstr "" -#: cp/name-lookup.cc:6033 +#: cp/name-lookup.cc:6067 #, gcc-internal-format msgid "%qD has not been declared in %qD" msgstr "" -#: cp/name-lookup.cc:6047 +#: cp/name-lookup.cc:6081 #, gcc-internal-format msgid "using-declaration may not name namespace %qD" msgstr "" -#: cp/name-lookup.cc:6058 +#: cp/name-lookup.cc:6092 #, gcc-internal-format msgid "%<%T::%D%> names constructor in %qT" msgstr "" -#: cp/name-lookup.cc:6151 +#: cp/name-lookup.cc:6185 #, gcc-internal-format msgid "declaration of %qD not in a namespace surrounding %qD" msgstr "" -#: cp/name-lookup.cc:6192 +#: cp/name-lookup.cc:6226 #, gcc-internal-format msgid "explicit qualification in declaration of %qD" msgstr "" -#: cp/name-lookup.cc:6202 +#: cp/name-lookup.cc:6236 #, gcc-internal-format msgid "%qD should have been declared inside %qD" msgstr "" -#: cp/name-lookup.cc:6271 +#: cp/name-lookup.cc:6305 #, gcc-internal-format msgid "%qD has not been declared within %qD" msgstr "" -#: cp/name-lookup.cc:6273 +#: cp/name-lookup.cc:6307 #, gcc-internal-format msgid "only here as a %" msgstr "" -#: cp/name-lookup.cc:6327 +#: cp/name-lookup.cc:6361 #, gcc-internal-format msgid "%qD attribute requires a single NTBS argument" msgstr "" -#: cp/name-lookup.cc:6334 +#: cp/name-lookup.cc:6368 #, gcc-internal-format msgid "" "%qD attribute is meaningless since members of the anonymous namespace get " "local symbols" msgstr "" -#: cp/name-lookup.cc:6344 cp/name-lookup.cc:6371 +#: cp/name-lookup.cc:6378 cp/name-lookup.cc:6405 #, gcc-internal-format msgid "ignoring %qD attribute on anonymous namespace" msgstr "" -#: cp/name-lookup.cc:6350 +#: cp/name-lookup.cc:6384 #, gcc-internal-format msgid "ignoring %qD attribute on non-inline namespace" msgstr "" -#: cp/name-lookup.cc:6387 cp/name-lookup.cc:8778 +#: cp/name-lookup.cc:6421 cp/name-lookup.cc:8815 #, gcc-internal-format msgid "%qD attribute directive ignored" msgstr "" -#: cp/name-lookup.cc:6713 +#: cp/name-lookup.cc:6747 #, gcc-internal-format msgid "maximum limit of %d namespaces searched for %qE" msgstr "" -#: cp/name-lookup.cc:6765 +#: cp/name-lookup.cc:6799 #, gcc-internal-format msgid "suggested alternative:" msgid_plural "suggested alternatives:" msgstr[0] "" msgstr[1] "" -#: cp/name-lookup.cc:6771 +#: cp/name-lookup.cc:6805 #, gcc-internal-format msgid " %qE" msgstr "" -#: cp/name-lookup.cc:7085 +#: cp/name-lookup.cc:7119 #, gcc-internal-format msgid "" "% is defined in header %qs; this is probably fixable by adding " "%<#include %s%>" msgstr "" -#: cp/name-lookup.cc:7091 +#: cp/name-lookup.cc:7125 #, gcc-internal-format msgid "% is only available from %s onwards" msgstr "" -#: cp/name-lookup.cc:7527 +#: cp/name-lookup.cc:7561 #, gcc-internal-format msgid "the macro %qs had not yet been defined" msgstr "" -#: cp/name-lookup.cc:7530 +#: cp/name-lookup.cc:7564 #, gcc-internal-format msgid "it was later defined here" msgstr "" -#: cp/name-lookup.cc:8325 +#: cp/name-lookup.cc:8359 #, gcc-internal-format msgid "" "declaration of % does not match %<#include " "%>, isn%'t a template" msgstr "" -#: cp/name-lookup.cc:8750 +#: cp/name-lookup.cc:8787 #, gcc-internal-format msgid "% using directive no longer supported" msgstr "" -#: cp/name-lookup.cc:8753 +#: cp/name-lookup.cc:8790 #, gcc-internal-format msgid "you can use an inline namespace instead" msgstr "" -#: cp/name-lookup.cc:8772 +#: cp/name-lookup.cc:8809 #, gcc-internal-format msgid "% not allowed to be specified in this context" msgstr "" #. We only allow depth 255. -#: cp/name-lookup.cc:8864 +#: cp/name-lookup.cc:8901 #, gcc-internal-format, gfc-internal-format msgid "cannot nest more than %d namespaces" msgstr "" -#: cp/name-lookup.cc:8961 +#: cp/name-lookup.cc:8998 #, gcc-internal-format msgid "% is ambiguous" msgstr "" -#: cp/name-lookup.cc:8977 +#: cp/name-lookup.cc:9014 #, gcc-internal-format msgid "namespace alias %qD not allowed here, assuming %qD" msgstr "" -#: cp/name-lookup.cc:9064 +#: cp/name-lookup.cc:9101 #, gcc-internal-format msgid "inline namespace must be specified at initial definition" msgstr "" -#: cp/name-lookup.cc:9065 +#: cp/name-lookup.cc:9102 #, gcc-internal-format msgid "%qD defined here" msgstr "" -#: cp/name-lookup.cc:9113 +#: cp/name-lookup.cc:9150 #, gcc-internal-format msgid "%s namespace %qD conflicts with reachable definition" msgstr "" -#: cp/name-lookup.cc:9115 +#: cp/name-lookup.cc:9152 #, gcc-internal-format, gfc-internal-format msgid "reachable %s definition here" msgstr "" -#: cp/name-lookup.cc:9158 +#: cp/name-lookup.cc:9195 #, gcc-internal-format msgid "XXX entering %" msgstr "" -#: cp/name-lookup.cc:9167 +#: cp/name-lookup.cc:9204 #, gcc-internal-format msgid "XXX leaving %" msgstr "" @@ -62992,7 +63256,7 @@ msgstr "" msgid "% is not set to true" msgstr "" -#: cp/parser.cc:1607 cp/parser.cc:47814 +#: cp/parser.cc:1607 cp/parser.cc:47880 #, gcc-internal-format msgid "" "%<#pragma omp declare %s%> not immediately followed by function declaration " @@ -63252,7 +63516,7 @@ msgstr "" msgid "% only available with %<-std=c++20%> or %<-fconcepts%>" msgstr "" -#: cp/parser.cc:3754 cp/parser.cc:31344 +#: cp/parser.cc:3754 cp/parser.cc:31350 #, gcc-internal-format msgid "% only available with %<-std=c++20%> or %<-fconcepts%>" msgstr "" @@ -63439,7 +63703,7 @@ msgstr "" msgid "fold-expressions only available with %<-std=c++17%> or %<-std=gnu++17%>" msgstr "" -#: cp/parser.cc:5995 cp/parser.cc:6150 cp/parser.cc:6334 cp/semantics.cc:4336 +#: cp/parser.cc:5995 cp/parser.cc:6150 cp/parser.cc:6334 cp/semantics.cc:4401 #, gcc-internal-format msgid "expected primary-expression" msgstr "" @@ -63494,7 +63758,7 @@ msgstr "" msgid "template-id not allowed for destructor in C++20" msgstr "" -#: cp/parser.cc:6735 cp/parser.cc:32577 +#: cp/parser.cc:6735 cp/parser.cc:32583 #, gcc-internal-format msgid "remove the %qs" msgstr "" @@ -63514,7 +63778,7 @@ msgstr "" msgid "expected unqualified-id" msgstr "" -#: cp/parser.cc:6921 cp/typeck.cc:3164 cp/typeck.cc:3167 cp/typeck.cc:3184 +#: cp/parser.cc:6921 cp/typeck.cc:3165 cp/typeck.cc:3168 cp/typeck.cc:3185 #, gcc-internal-format msgid "%qD is not a template" msgstr "" @@ -63564,7 +63828,7 @@ msgstr "" msgid "wrong number of arguments to %<__builtin_addressof%>" msgstr "" -#: cp/parser.cc:7734 cp/pt.cc:20917 +#: cp/parser.cc:7734 cp/pt.cc:20928 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_launder%>" msgstr "" @@ -63599,7 +63863,7 @@ msgstr "" msgid "cannot use multidimensional subscript in OpenMP array section" msgstr "" -#: cp/parser.cc:8687 cp/typeck.cc:3052 +#: cp/parser.cc:8687 cp/typeck.cc:3053 #, gcc-internal-format msgid "invalid use of %qD" msgstr "" @@ -63624,7 +63888,7 @@ msgstr "" msgid "types may not be defined in % expressions" msgstr "" -#: cp/parser.cc:9444 cp/parser.cc:33979 +#: cp/parser.cc:9444 cp/parser.cc:33996 #, gcc-internal-format msgid "types may not be defined in %qs expressions" msgstr "" @@ -63786,8 +64050,8 @@ msgstr "" msgid "capture of non-variable %qE" msgstr "" -#: cp/parser.cc:11688 cp/parser.cc:11698 cp/semantics.cc:4178 -#: cp/semantics.cc:4193 +#: cp/parser.cc:11688 cp/parser.cc:11698 cp/semantics.cc:4243 +#: cp/semantics.cc:4258 #, gcc-internal-format msgid "%q#D declared here" msgstr "" @@ -63832,7 +64096,7 @@ msgid "" "with %<-std=c++2b%> or %<-std=gnu++2b%>" msgstr "" -#: cp/parser.cc:11932 cp/pt.cc:14718 +#: cp/parser.cc:11932 cp/pt.cc:14711 #, gcc-internal-format msgid "" "a lambda with captures may not have an explicit object parameter of an " @@ -63971,7 +64235,7 @@ msgid "" "%<-std=gnu++17%>" msgstr "" -#: cp/parser.cc:13819 cp/parser.cc:34491 +#: cp/parser.cc:13819 cp/parser.cc:34508 #, gcc-internal-format msgid "expected selection-statement" msgstr "" @@ -64039,7 +64303,7 @@ msgid "" "inconsistent begin/end types in range-based % statement: %qT and %qT" msgstr "" -#: cp/parser.cc:14700 cp/parser.cc:34494 +#: cp/parser.cc:14700 cp/parser.cc:34511 #, gcc-internal-format msgid "expected iteration-statement" msgstr "" @@ -64071,7 +64335,7 @@ msgstr "" msgid "ISO C++ forbids computed gotos" msgstr "" -#: cp/parser.cc:14915 cp/parser.cc:34497 +#: cp/parser.cc:14915 cp/parser.cc:34514 #, gcc-internal-format msgid "expected jump-statement" msgstr "" @@ -64165,7 +64429,7 @@ msgstr "" msgid "% not part of following module-directive" msgstr "" -#: cp/parser.cc:15403 cp/parser.cc:28013 +#: cp/parser.cc:15403 cp/parser.cc:28019 #, gcc-internal-format msgid "extra %<;%>" msgstr "" @@ -64300,7 +64564,7 @@ msgstr "" msgid "class definition may not be declared a friend" msgstr "" -#: cp/parser.cc:16746 cp/parser.cc:28555 +#: cp/parser.cc:16746 cp/parser.cc:28561 #, gcc-internal-format msgid "templates may not be %" msgstr "" @@ -64373,12 +64637,12 @@ msgstr "" msgid "cannot expand initializer for member %qD" msgstr "" -#: cp/parser.cc:17514 cp/pt.cc:27578 +#: cp/parser.cc:17514 cp/pt.cc:27598 #, gcc-internal-format msgid "mem-initializer for %qD follows constructor delegation" msgstr "" -#: cp/parser.cc:17526 cp/pt.cc:27590 +#: cp/parser.cc:17526 cp/pt.cc:27610 #, gcc-internal-format msgid "constructor delegation follows mem-initializer for %qD" msgstr "" @@ -65052,7 +65316,7 @@ msgstr "" msgid "%qT not permitted in template argument" msgstr "" -#: cp/parser.cc:25052 cp/typeck2.cc:336 cp/typeck2.cc:383 cp/typeck2.cc:2497 +#: cp/parser.cc:25052 cp/typeck2.cc:336 cp/typeck2.cc:382 cp/typeck2.cc:2496 #: rust/backend/rust-tree.cc:3909 #, gcc-internal-format msgid "invalid use of %qT" @@ -65088,7 +65352,7 @@ msgstr "" msgid "% specifier in template parameter declaration" msgstr "" -#: cp/parser.cc:25746 +#: cp/parser.cc:25791 #, gcc-internal-format msgid "an explicit object parameter cannot be a function parameter pack" msgstr "" @@ -65238,255 +65502,255 @@ msgstr "" #. In a lambda this should work, but doesn't currently. #. We're in a lambda, but it isn't the innermost class. #. This should work, but currently doesn't. -#: cp/parser.cc:27653 cp/pt.cc:4305 +#: cp/parser.cc:27653 cp/pt.cc:4306 #, gcc-internal-format msgid "unexpanded parameter pack in local class in lambda" msgstr "" -#: cp/parser.cc:27753 cp/parser.cc:34500 +#: cp/parser.cc:27759 cp/parser.cc:34517 #, gcc-internal-format msgid "expected class-key" msgstr "" -#: cp/parser.cc:27778 +#: cp/parser.cc:27784 #, gcc-internal-format msgid "" "ISO C++ forbids typename key in template template parameter; use %<-std=c+" "+17%> or %<-std=gnu++17%>" msgstr "" -#: cp/parser.cc:27782 +#: cp/parser.cc:27788 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: cp/parser.cc:28032 +#: cp/parser.cc:28038 #, gcc-internal-format msgid "in C++03 a class-key must be used when declaring a friend" msgstr "" -#: cp/parser.cc:28063 +#: cp/parser.cc:28069 #, gcc-internal-format msgid "friend declaration does not name a class or function" msgstr "" -#: cp/parser.cc:28081 +#: cp/parser.cc:28087 #, gcc-internal-format msgid "a storage class on an anonymous aggregate in class scope is not allowed" msgstr "" -#: cp/parser.cc:28183 +#: cp/parser.cc:28189 #, gcc-internal-format msgid "" "default member initializers for bit-fields only available with %<-std=c+" "+20%> or %<-std=gnu++20%>" msgstr "" -#: cp/parser.cc:28190 +#: cp/parser.cc:28196 #, gcc-internal-format msgid "default member initializer for unnamed bit-field" msgstr "" -#: cp/parser.cc:28203 +#: cp/parser.cc:28209 #, gcc-internal-format msgid "ISO C++ allows bit-field attributes only before the %<:%> token" msgstr "" -#: cp/parser.cc:28362 +#: cp/parser.cc:28368 #, gcc-internal-format msgid "bit-field %qD has non-integral type %qT" msgstr "" -#: cp/parser.cc:28390 +#: cp/parser.cc:28396 #, gcc-internal-format msgid "pure-specifier on function-definition" msgstr "" -#: cp/parser.cc:28411 +#: cp/parser.cc:28417 #, gcc-internal-format msgid "extra %<;%> after in-class function definition" msgstr "" -#: cp/parser.cc:28460 +#: cp/parser.cc:28466 #, gcc-internal-format msgid "stray %<,%> at end of member declaration" msgstr "" -#: cp/parser.cc:28474 +#: cp/parser.cc:28480 #, gcc-internal-format msgid "expected %<;%> at end of member declaration" msgstr "" -#: cp/parser.cc:28549 +#: cp/parser.cc:28555 #, gcc-internal-format msgid "invalid pure specifier (only %<= 0%> is allowed)" msgstr "" -#: cp/parser.cc:28584 +#: cp/parser.cc:28590 #, gcc-internal-format msgid "a brace-enclosed initializer is not allowed here" msgstr "" -#: cp/parser.cc:28714 +#: cp/parser.cc:28720 #, gcc-internal-format msgid "% specified more than once in base-specifier" msgstr "" -#: cp/parser.cc:28734 +#: cp/parser.cc:28740 #, gcc-internal-format msgid "more than one access specifier in base-specifier" msgstr "" -#: cp/parser.cc:28758 +#: cp/parser.cc:28764 #, gcc-internal-format msgid "keyword % not allowed outside of templates" msgstr "" -#: cp/parser.cc:28761 +#: cp/parser.cc:28767 #, gcc-internal-format msgid "" "keyword % not allowed in this context (the base class is " "implicitly a type)" msgstr "" -#: cp/parser.cc:28960 cp/parser.cc:29054 +#: cp/parser.cc:28966 cp/parser.cc:29060 #, gcc-internal-format msgid "types may not be defined in an exception-specification" msgstr "" -#: cp/parser.cc:29062 +#: cp/parser.cc:29068 #, gcc-internal-format msgid "ISO C++17 does not allow dynamic exception specifications" msgstr "" -#: cp/parser.cc:29068 +#: cp/parser.cc:29074 #, gcc-internal-format msgid "dynamic exception specifications are deprecated in C++11" msgstr "" -#: cp/parser.cc:29112 +#: cp/parser.cc:29118 #, gcc-internal-format msgid "invalid use of % in exception-specification" msgstr "" -#: cp/parser.cc:29153 +#: cp/parser.cc:29159 #, gcc-internal-format msgid "" "% in % function only available with %<-std=c++20%> or %<-" "std=gnu++20%>" msgstr "" -#: cp/parser.cc:29265 +#: cp/parser.cc:29271 #, gcc-internal-format msgid "types may not be defined in exception-declarations" msgstr "" -#: cp/parser.cc:29831 +#: cp/parser.cc:29837 #, gcc-internal-format msgid "expected attribute argument as balanced token sequence" msgstr "" -#: cp/parser.cc:29977 +#: cp/parser.cc:29983 #, gcc-internal-format msgid "attribute using prefix used together with scoped attribute token" msgstr "" -#: cp/parser.cc:29991 +#: cp/parser.cc:29997 #, gcc-internal-format msgid "expected an identifier for the attribute name" msgstr "" #. e.g. [[attr()]]. -#: cp/parser.cc:30134 +#: cp/parser.cc:30140 #, gcc-internal-format msgid "parentheses must be omitted if %qE attribute argument list is empty" msgstr "" -#: cp/parser.cc:30169 +#: cp/parser.cc:30175 #, gcc-internal-format msgid "attribute %qs specified multiple times" msgstr "" -#: cp/parser.cc:30211 +#: cp/parser.cc:30217 #, gcc-internal-format msgid "expected attribute before %<...%>" msgstr "" -#: cp/parser.cc:30214 +#: cp/parser.cc:30220 #, gcc-internal-format msgid "attribute with no arguments contains no parameter packs" msgstr "" -#: cp/parser.cc:30260 +#: cp/parser.cc:30266 #, gcc-internal-format msgid "expected contract-role" msgstr "" #. We got some other token other than a ':'. -#: cp/parser.cc:30341 +#: cp/parser.cc:30347 #, gcc-internal-format msgid "expected contract semantic or level" msgstr "" -#: cp/parser.cc:30351 +#: cp/parser.cc:30357 #, gcc-internal-format msgid "expected contract level: %, %, or %" msgstr "" -#: cp/parser.cc:30361 +#: cp/parser.cc:30367 #, gcc-internal-format msgid "invalid use of contract role for explicit semantic" msgstr "" -#: cp/parser.cc:30498 +#: cp/parser.cc:30504 #, gcc-internal-format msgid "contracts are only available with %<-fcontracts%>" msgstr "" -#: cp/parser.cc:30657 +#: cp/parser.cc:30663 #, gcc-internal-format msgid "" "attribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>" msgstr "" -#: cp/parser.cc:31006 cp/parser.cc:31015 +#: cp/parser.cc:31012 cp/parser.cc:31021 #, gcc-internal-format msgid "expression must be enclosed in parentheses" msgstr "" -#: cp/parser.cc:31361 +#: cp/parser.cc:31367 #, gcc-internal-format msgid "missing additional % to start a requires-expression" msgstr "" -#: cp/parser.cc:31604 +#: cp/parser.cc:31610 #, gcc-internal-format msgid "" "testing if a concept-id is a valid expression; add % to check " "satisfaction" msgstr "" -#: cp/parser.cc:31742 +#: cp/parser.cc:31748 #, gcc-internal-format msgid "result type is not a plain type-constraint" msgstr "" -#: cp/parser.cc:31750 +#: cp/parser.cc:31756 #, gcc-internal-format msgid "return-type-requirement is not a type-constraint" msgstr "" -#: cp/parser.cc:32268 +#: cp/parser.cc:32274 #, gcc-internal-format msgid "specializing member %<%T::%E%> requires %%> syntax" msgstr "" -#: cp/parser.cc:32273 +#: cp/parser.cc:32279 #, gcc-internal-format msgid "invalid declaration of %<%T::%E%>" msgstr "" -#: cp/parser.cc:32277 +#: cp/parser.cc:32283 #, gcc-internal-format msgid "too few template-parameter-lists" msgstr "" @@ -65495,29 +65759,29 @@ msgstr "" #. something like: #. #. template template void S::f(); -#: cp/parser.cc:32284 +#: cp/parser.cc:32290 #, gcc-internal-format msgid "too many template-parameter-lists" msgstr "" -#: cp/parser.cc:32576 +#: cp/parser.cc:32582 #, gcc-internal-format msgid "template-id not allowed for constructor in C++20" msgstr "" -#: cp/parser.cc:32687 +#: cp/parser.cc:32693 #, gcc-internal-format msgid "named return values are no longer supported" msgstr "" -#: cp/parser.cc:32860 +#: cp/parser.cc:32866 #, gcc-internal-format msgid "" "ISO C++ did not adopt string literal operator templates taking an argument " "pack of characters" msgstr "" -#: cp/parser.cc:32869 +#: cp/parser.cc:32875 #, gcc-internal-format msgid "" "literal operator template %qD has invalid parameter list; expected non-type " @@ -65525,417 +65789,417 @@ msgid "" "type" msgstr "" -#: cp/parser.cc:32875 +#: cp/parser.cc:32881 #, gcc-internal-format msgid "" "literal operator template %qD has invalid parameter list; expected non-type " "template parameter pack %<%>" msgstr "" -#: cp/parser.cc:32982 +#: cp/parser.cc:32988 #, gcc-internal-format msgid "" "template-introductions are not part of C++20 concepts; use %qs to enable" msgstr "" -#: cp/parser.cc:32992 +#: cp/parser.cc:32998 #, gcc-internal-format msgid "no matching concept for template-introduction" msgstr "" -#: cp/parser.cc:33015 +#: cp/parser.cc:33021 #, gcc-internal-format msgid "invalid declaration of member template in local class" msgstr "" -#: cp/parser.cc:33024 +#: cp/parser.cc:33030 #, gcc-internal-format msgid "template with C linkage" msgstr "" -#: cp/parser.cc:33044 +#: cp/parser.cc:33050 #, gcc-internal-format msgid "invalid explicit specialization" msgstr "" -#: cp/parser.cc:33156 +#: cp/parser.cc:33162 #, gcc-internal-format msgid "template declaration of %" msgstr "" -#: cp/parser.cc:33207 +#: cp/parser.cc:33213 #, gcc-internal-format msgid "a class template declaration must not declare anything else" msgstr "" -#: cp/parser.cc:33259 +#: cp/parser.cc:33265 #, gcc-internal-format msgid "explicit template specialization cannot have a storage class" msgstr "" -#: cp/parser.cc:33565 +#: cp/parser.cc:33582 #, gcc-internal-format msgid "%<>>%> should be %<> >%> within a nested template argument list" msgstr "" -#: cp/parser.cc:33578 +#: cp/parser.cc:33595 #, gcc-internal-format msgid "spurious %<>>%>, use %<>%> to terminate a template argument list" msgstr "" -#: cp/parser.cc:33609 +#: cp/parser.cc:33626 #, gcc-internal-format msgid "%qs should be %qs to terminate a template argument list" msgstr "" -#: cp/parser.cc:33926 +#: cp/parser.cc:33943 #, gcc-internal-format msgid "% argument must be surrounded by parentheses" msgstr "" -#: cp/parser.cc:34103 +#: cp/parser.cc:34120 #, gcc-internal-format msgid "invalid use of %qD in linkage specification" msgstr "" -#: cp/parser.cc:34114 +#: cp/parser.cc:34131 #, gcc-internal-format msgid "duplicate %qD specifier" msgstr "" -#: cp/parser.cc:34117 +#: cp/parser.cc:34134 #, gcc-internal-format msgid "%qD specifier conflicts with %qs" msgstr "" -#: cp/parser.cc:34129 +#: cp/parser.cc:34146 #, gcc-internal-format msgid "%<__thread%> before %qD" msgstr "" -#: cp/parser.cc:34145 +#: cp/parser.cc:34162 #, gcc-internal-format msgid "%qD specifier conflicts with %" msgstr "" -#: cp/parser.cc:34254 +#: cp/parser.cc:34271 #, gcc-internal-format msgid "ISO C++ 1998 does not support %" msgstr "" -#: cp/parser.cc:34265 +#: cp/parser.cc:34282 #, gcc-internal-format msgid "both %<__thread%> and % specified" msgstr "" -#: cp/parser.cc:34270 +#: cp/parser.cc:34287 #, gcc-internal-format msgid "duplicate %qD" msgstr "" -#: cp/parser.cc:34299 +#: cp/parser.cc:34316 #, gcc-internal-format msgid "duplicate %qs" msgstr "" -#: cp/parser.cc:34351 +#: cp/parser.cc:34368 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34354 +#: cp/parser.cc:34371 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34357 +#: cp/parser.cc:34374 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34363 +#: cp/parser.cc:34380 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34366 +#: cp/parser.cc:34383 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34369 +#: cp/parser.cc:34386 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34372 +#: cp/parser.cc:34389 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34375 +#: cp/parser.cc:34392 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34378 +#: cp/parser.cc:34395 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34381 +#: cp/parser.cc:34398 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34384 +#: cp/parser.cc:34401 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34387 +#: cp/parser.cc:34404 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34390 +#: cp/parser.cc:34407 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34393 +#: cp/parser.cc:34410 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34396 +#: cp/parser.cc:34413 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34399 +#: cp/parser.cc:34416 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34402 +#: cp/parser.cc:34419 #, gcc-internal-format msgid "expected %<__label__%>" msgstr "" -#: cp/parser.cc:34405 +#: cp/parser.cc:34422 #, gcc-internal-format msgid "expected %<@try%>" msgstr "" -#: cp/parser.cc:34408 +#: cp/parser.cc:34425 #, gcc-internal-format msgid "expected %<@synchronized%>" msgstr "" -#: cp/parser.cc:34411 +#: cp/parser.cc:34428 #, gcc-internal-format msgid "expected %<@throw%>" msgstr "" -#: cp/parser.cc:34414 +#: cp/parser.cc:34431 #, gcc-internal-format msgid "expected %<__transaction_atomic%>" msgstr "" -#: cp/parser.cc:34417 +#: cp/parser.cc:34434 #, gcc-internal-format msgid "expected %<__transaction_relaxed%>" msgstr "" -#: cp/parser.cc:34420 +#: cp/parser.cc:34437 #, gcc-internal-format msgid "expected %" msgstr "" -#: cp/parser.cc:34452 +#: cp/parser.cc:34469 #, gcc-internal-format msgid "expected %<::%>" msgstr "" -#: cp/parser.cc:34464 +#: cp/parser.cc:34481 #, gcc-internal-format msgid "expected %<...%>" msgstr "" -#: cp/parser.cc:34467 +#: cp/parser.cc:34484 #, gcc-internal-format msgid "expected %<*%>" msgstr "" -#: cp/parser.cc:34470 +#: cp/parser.cc:34487 #, gcc-internal-format msgid "expected %<~%>" msgstr "" -#: cp/parser.cc:34476 +#: cp/parser.cc:34493 #, gcc-internal-format msgid "expected %<:%> or %<::%>" msgstr "" -#: cp/parser.cc:34503 +#: cp/parser.cc:34520 #, gcc-internal-format msgid "expected %, %, or %" msgstr "" -#: cp/parser.cc:34838 +#: cp/parser.cc:34855 #, gcc-internal-format msgid "redundant enum-key % in reference to %q#T" msgstr "" -#: cp/parser.cc:34989 +#: cp/parser.cc:35006 #, gcc-internal-format msgid "%qs tag used in naming %q#T" msgstr "" -#: cp/parser.cc:34994 +#: cp/parser.cc:35011 #, gcc-internal-format msgid "%q#T was previously declared here" msgstr "" -#: cp/parser.cc:35115 +#: cp/parser.cc:35132 #, gcc-internal-format msgid "redundant class-key %qs in reference to %q#T" msgstr "" -#: cp/parser.cc:35273 cp/parser.cc:35307 +#: cp/parser.cc:35290 cp/parser.cc:35324 #, gcc-internal-format msgid "%qT declared with a mismatched class-key %qs" msgstr "" -#: cp/parser.cc:35280 cp/parser.cc:35313 +#: cp/parser.cc:35297 cp/parser.cc:35330 #, gcc-internal-format msgid "remove the class-key or replace it with %qs" msgstr "" -#: cp/parser.cc:35281 cp/parser.cc:35314 +#: cp/parser.cc:35298 cp/parser.cc:35331 #, gcc-internal-format msgid "replace the class-key with %qs" msgstr "" -#: cp/parser.cc:35288 +#: cp/parser.cc:35305 #, gcc-internal-format msgid "%qT defined as %qs here" msgstr "" -#: cp/parser.cc:35289 +#: cp/parser.cc:35306 #, gcc-internal-format msgid "%qT first declared as %qs here" msgstr "" -#: cp/parser.cc:35372 +#: cp/parser.cc:35389 #, gcc-internal-format msgid "%qD redeclared with different access" msgstr "" -#: cp/parser.cc:35393 +#: cp/parser.cc:35410 #, gcc-internal-format msgid "" "in C++98 % (as a disambiguator) is only allowed within templates" msgstr "" -#: cp/parser.cc:35643 +#: cp/parser.cc:35660 #, gcc-internal-format msgid "file ends in default argument" msgstr "" -#: cp/parser.cc:35884 cp/parser.cc:37192 cp/parser.cc:37381 +#: cp/parser.cc:35901 cp/parser.cc:37209 cp/parser.cc:37398 #, gcc-internal-format msgid "misplaced %<@%D%> Objective-C++ construct" msgstr "" -#: cp/parser.cc:35955 +#: cp/parser.cc:35972 #, gcc-internal-format msgid "objective-c++ message receiver expected" msgstr "" -#: cp/parser.cc:36025 +#: cp/parser.cc:36042 #, gcc-internal-format msgid "objective-c++ message argument(s) are expected" msgstr "" -#: cp/parser.cc:36056 +#: cp/parser.cc:36073 #, gcc-internal-format msgid "%<@encode%> must specify a type as an argument" msgstr "" -#: cp/parser.cc:36460 +#: cp/parser.cc:36477 #, gcc-internal-format msgid "invalid Objective-C++ selector name" msgstr "" -#: cp/parser.cc:36535 cp/parser.cc:36553 +#: cp/parser.cc:36552 cp/parser.cc:36570 #, gcc-internal-format msgid "objective-c++ method declaration is expected" msgstr "" -#: cp/parser.cc:36547 cp/parser.cc:36613 +#: cp/parser.cc:36564 cp/parser.cc:36630 #, gcc-internal-format msgid "method attributes must be specified at the end" msgstr "" -#: cp/parser.cc:36656 +#: cp/parser.cc:36673 #, gcc-internal-format msgid "stray %qs between Objective-C++ methods" msgstr "" -#: cp/parser.cc:36853 cp/parser.cc:36860 cp/parser.cc:36867 +#: cp/parser.cc:36870 cp/parser.cc:36877 cp/parser.cc:36884 #, gcc-internal-format msgid "invalid type for instance variable" msgstr "" -#: cp/parser.cc:36984 +#: cp/parser.cc:37001 #, gcc-internal-format msgid "identifier expected after %<@protocol%>" msgstr "" -#: cp/parser.cc:37157 +#: cp/parser.cc:37174 #, gcc-internal-format msgid "" "attributes may not be specified before the %<@%D%> Objective-C++ keyword" msgstr "" -#: cp/parser.cc:37164 +#: cp/parser.cc:37181 #, gcc-internal-format msgid "prefix attributes are ignored before %<@%D%>" msgstr "" -#: cp/parser.cc:37444 cp/parser.cc:37451 cp/parser.cc:37458 +#: cp/parser.cc:37461 cp/parser.cc:37468 cp/parser.cc:37475 #, gcc-internal-format msgid "invalid type for property" msgstr "" -#: cp/parser.cc:37620 +#: cp/parser.cc:37637 #, gcc-internal-format msgid "unknown property attribute %qE" msgstr "" -#: cp/parser.cc:38865 +#: cp/parser.cc:38909 #, gcc-internal-format msgid "expected integer expression list" msgstr "" -#: cp/parser.cc:38882 +#: cp/parser.cc:38926 #, gcc-internal-format msgid "% expression must be integral" msgstr "" -#: cp/parser.cc:39638 +#: cp/parser.cc:39682 #, gcc-internal-format msgid "expected %, %, %" msgstr "" -#: cp/parser.cc:40029 +#: cp/parser.cc:40073 #, gcc-internal-format msgid "invalid reduction-identifier" msgstr "" -#: cp/parser.cc:40998 +#: cp/parser.cc:41042 #, gcc-internal-format msgid "types may not be defined in iterator type" msgstr "" @@ -65944,154 +66208,154 @@ msgstr "" #. check above and add one in semantics.cc (to properly handle templates). #. Base this on the allocator/align modifiers check for the 'allocate' clause #. in semantics.cc's finish_omp_clauses. -#: cp/parser.cc:42626 +#: cp/parser.cc:42670 #, gcc-internal-format msgid "%<#pragma omp allocate%> not yet supported" msgstr "" -#: cp/parser.cc:44077 +#: cp/parser.cc:44121 #, gcc-internal-format msgid "parenthesized initialization is not allowed in OpenMP % loop" msgstr "" -#: cp/parser.cc:44817 +#: cp/parser.cc:44861 #, gcc-internal-format msgid "% clause with parameter on range-based % loop" msgstr "" -#: cp/parser.cc:44899 cp/pt.cc:18116 +#: cp/parser.cc:44943 cp/pt.cc:18119 #, gcc-internal-format msgid "iteration variable %qD should not be reduction" msgstr "" -#: cp/parser.cc:47776 +#: cp/parser.cc:47842 #, gcc-internal-format msgid "%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>" msgstr "" -#: cp/parser.cc:48546 +#: cp/parser.cc:48612 #, gcc-internal-format msgid "" "OpenMP directive other than % or % " "appertains to a declaration" msgstr "" -#: cp/parser.cc:49153 +#: cp/parser.cc:49219 #, gcc-internal-format msgid "invalid initializer clause" msgstr "" -#: cp/parser.cc:49184 +#: cp/parser.cc:49250 #, gcc-internal-format msgid "expected id-expression (arguments)" msgstr "" -#: cp/parser.cc:49196 +#: cp/parser.cc:49262 #, gcc-internal-format msgid "" "one of the initializer call arguments should be % or %<&omp_priv%>" msgstr "" -#: cp/parser.cc:49299 +#: cp/parser.cc:49365 #, gcc-internal-format msgid "types may not be defined in declare reduction type list" msgstr "" -#: cp/parser.cc:49319 cp/semantics.cc:6373 +#: cp/parser.cc:49385 cp/semantics.cc:6442 #, gcc-internal-format msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>" msgstr "" -#: cp/parser.cc:49323 cp/semantics.cc:6381 +#: cp/parser.cc:49389 cp/semantics.cc:6450 #, gcc-internal-format msgid "function or array type %qT in %<#pragma omp declare reduction%>" msgstr "" -#: cp/parser.cc:49326 cp/pt.cc:14611 cp/semantics.cc:6387 +#: cp/parser.cc:49392 cp/pt.cc:14604 cp/semantics.cc:6456 #, gcc-internal-format msgid "reference type %qT in %<#pragma omp declare reduction%>" msgstr "" -#: cp/parser.cc:49329 cp/semantics.cc:6393 +#: cp/parser.cc:49395 cp/semantics.cc:6462 #, gcc-internal-format msgid "" "%, % or %<__restrict%>-qualified type %qT in %<#pragma " "omp declare reduction%>" msgstr "" -#: cp/parser.cc:50049 +#: cp/parser.cc:50115 #, gcc-internal-format msgid "%<#pragma acc routine%> names a set of overloads" msgstr "" -#: cp/parser.cc:50059 +#: cp/parser.cc:50125 #, gcc-internal-format msgid "%qD does not refer to a namespace scope function" msgstr "" #. cancel-and-throw is unimplemented. -#: cp/parser.cc:50420 +#: cp/parser.cc:50486 #, gcc-internal-format msgid "%" msgstr "" -#: cp/parser.cc:50467 cp/semantics.cc:11405 +#: cp/parser.cc:50533 cp/semantics.cc:11474 #, gcc-internal-format msgid "%<__transaction_relaxed%> without transactional memory support enabled" msgstr "" -#: cp/parser.cc:50469 cp/semantics.cc:11407 +#: cp/parser.cc:50535 cp/semantics.cc:11476 #, gcc-internal-format msgid "%<__transaction_atomic%> without transactional memory support enabled" msgstr "" -#: cp/parser.cc:50615 +#: cp/parser.cc:50681 #, gcc-internal-format msgid "" "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>" msgstr "" -#: cp/parser.cc:50618 +#: cp/parser.cc:50684 #, gcc-internal-format msgid " or a % function" msgstr "" -#: cp/parser.cc:50665 +#: cp/parser.cc:50731 #, gcc-internal-format msgid "malformed %<#pragma GCC pch_preprocess%>" msgstr "" -#: cp/parser.cc:50965 +#: cp/parser.cc:51031 #, gcc-internal-format msgid "%<#pragma omp requires%> may only be used at file or namespace scope" msgstr "" -#: cp/parser.cc:50976 +#: cp/parser.cc:51042 #, gcc-internal-format msgid "%<#pragma omp assumes%> may only be used at file or namespace scope" msgstr "" -#: cp/parser.cc:51053 +#: cp/parser.cc:51119 #, gcc-internal-format msgid "%<#pragma GCC %s%> must be inside a function" msgstr "" -#: cp/parser.cc:51195 +#: cp/parser.cc:51261 #, gcc-internal-format msgid "multi-source compilation not implemented for C++" msgstr "" -#: cp/parser.cc:51232 +#: cp/parser.cc:51298 #, gcc-internal-format msgid "placeholder type not allowed in this context" msgstr "" -#: cp/parser.cc:51441 +#: cp/parser.cc:51507 #, gcc-internal-format msgid "implicit templates may not be %" msgstr "" -#: cp/parser.cc:51497 +#: cp/parser.cc:51563 #, gcc-internal-format msgid "% linkage started here" msgstr "" @@ -66180,7 +66444,7 @@ msgstr "" msgid "specialization of %qD after instantiation" msgstr "" -#: cp/pt.cc:2046 cp/semantics.cc:6243 +#: cp/pt.cc:2046 cp/semantics.cc:6312 #, gcc-internal-format msgid "%s %#qD" msgstr "" @@ -66352,69 +66616,69 @@ msgstr "" msgid "argument to %<__integer_pack%> must be between 0 and %d" msgstr "" -#: cp/pt.cc:4168 +#: cp/pt.cc:4169 #, gcc-internal-format msgid "base initializer expansion %qT contains no parameter packs" msgstr "" -#: cp/pt.cc:4236 +#: cp/pt.cc:4237 #, gcc-internal-format msgid "expansion pattern %qT contains no parameter packs" msgstr "" -#: cp/pt.cc:4238 +#: cp/pt.cc:4239 #, gcc-internal-format msgid "expansion pattern %qE contains no parameter packs" msgstr "" -#: cp/pt.cc:4322 +#: cp/pt.cc:4323 #, gcc-internal-format msgid "parameter packs not expanded with %<...%>:" msgstr "" -#: cp/pt.cc:4339 cp/pt.cc:5220 +#: cp/pt.cc:4340 cp/pt.cc:5221 #, gcc-internal-format msgid " %qD" msgstr "" -#: cp/pt.cc:4341 +#: cp/pt.cc:4342 #, gcc-internal-format, gfc-internal-format msgid " %s" msgstr "" -#: cp/pt.cc:4467 +#: cp/pt.cc:4468 #, gcc-internal-format msgid "declaration of template parameter %q+D shadows template parameter" msgstr "" -#: cp/pt.cc:4470 +#: cp/pt.cc:4471 #, gcc-internal-format msgid "declaration of %q+#D shadows template parameter" msgstr "" -#: cp/pt.cc:4472 +#: cp/pt.cc:4473 #, gcc-internal-format msgid "template parameter %qD declared here" msgstr "" -#: cp/pt.cc:5156 +#: cp/pt.cc:5157 #, gcc-internal-format msgid "specialization of variable concept %q#D" msgstr "" -#: cp/pt.cc:5215 +#: cp/pt.cc:5216 #, gcc-internal-format msgid "template parameters not deducible in partial specialization:" msgstr "" -#: cp/pt.cc:5238 +#: cp/pt.cc:5239 #, gcc-internal-format msgid "" "partial specialization %q+D does not specialize any template arguments; to " "define the primary template, remove the template argument list" msgstr "" -#: cp/pt.cc:5242 +#: cp/pt.cc:5243 #, gcc-internal-format msgid "" "partial specialization %q+D does not specialize any template arguments and " @@ -66422,63 +66686,63 @@ msgid "" "template, remove the template argument list" msgstr "" -#: cp/pt.cc:5246 cp/pt.cc:5257 cp/pt.cc:5265 +#: cp/pt.cc:5247 cp/pt.cc:5258 cp/pt.cc:5266 #, gcc-internal-format msgid "primary template here" msgstr "" -#: cp/pt.cc:5254 +#: cp/pt.cc:5255 #, 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.cc:5264 +#: cp/pt.cc:5265 #, gcc-internal-format msgid "too many arguments for partial specialization %qT" msgstr "" -#: cp/pt.cc:5279 +#: cp/pt.cc:5280 #, gcc-internal-format msgid "partial specialization %qD is not more specialized than" msgstr "" -#: cp/pt.cc:5281 +#: cp/pt.cc:5282 #, gcc-internal-format msgid "primary template %qD" msgstr "" -#: cp/pt.cc:5323 +#: cp/pt.cc:5324 #, gcc-internal-format msgid "" "parameter pack argument %qE must be at the end of the template argument list" msgstr "" -#: cp/pt.cc:5326 +#: cp/pt.cc:5327 #, gcc-internal-format msgid "" "parameter pack argument %qT must be at the end of the template argument list" msgstr "" -#: cp/pt.cc:5388 +#: cp/pt.cc:5389 #, 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.cc:5456 +#: cp/pt.cc:5457 #, gcc-internal-format msgid "declaration of %qD ambiguates earlier template instantiation for %qD" msgstr "" -#: cp/pt.cc:5460 +#: cp/pt.cc:5461 #, gcc-internal-format msgid "partial specialization of %qD after instantiation of %qD" msgstr "" -#: cp/pt.cc:5643 +#: cp/pt.cc:5644 #, gcc-internal-format msgid "no default argument for %qD" msgstr "" @@ -66487,52 +66751,52 @@ msgstr "" #. (DR 2032), or alias template can only have one #. parameter pack, at the end of the template #. parameter list. -#: cp/pt.cc:5666 +#: cp/pt.cc:5667 #, gcc-internal-format msgid "parameter pack %q+D must be at the end of the template parameter list" msgstr "" -#: cp/pt.cc:5702 +#: cp/pt.cc:5703 #, gcc-internal-format msgid "" "default template arguments may not be used in function template friend re-" "declaration" msgstr "" -#: cp/pt.cc:5705 +#: cp/pt.cc:5706 #, gcc-internal-format msgid "" "default template arguments may not be used in template friend declarations" msgstr "" -#: cp/pt.cc:5708 +#: cp/pt.cc:5709 #, 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.cc:5711 +#: cp/pt.cc:5712 #, gcc-internal-format msgid "default template arguments may not be used in partial specializations" msgstr "" -#: cp/pt.cc:5714 cp/pt.cc:5772 +#: cp/pt.cc:5715 cp/pt.cc:5773 #, gcc-internal-format msgid "default argument for template parameter for class enclosing %qD" msgstr "" -#: cp/pt.cc:5883 +#: cp/pt.cc:5884 #, gcc-internal-format msgid "template %qD declared" msgstr "" -#: cp/pt.cc:5891 +#: cp/pt.cc:5892 #, gcc-internal-format msgid "template class without a name" msgstr "" -#: cp/pt.cc:5899 +#: cp/pt.cc:5900 #, gcc-internal-format msgid "member template %qD may not have virt-specifiers" msgstr "" @@ -66542,538 +66806,538 @@ msgstr "" #. An allocation function can be a function #. template. ... Template allocation functions shall #. have two or more parameters. -#: cp/pt.cc:5922 +#: cp/pt.cc:5923 #, gcc-internal-format msgid "invalid template declaration of %qD" msgstr "" -#: cp/pt.cc:6074 +#: cp/pt.cc:6075 #, gcc-internal-format msgid "template definition of non-template %q#D" msgstr "" -#: cp/pt.cc:6113 +#: cp/pt.cc:6114 #, gcc-internal-format msgid "expected %d levels of template parms for %q#D, got %d" msgstr "" -#: cp/pt.cc:6127 +#: cp/pt.cc:6128 #, gcc-internal-format msgid "got %d template parameters for %q#D" msgstr "" -#: cp/pt.cc:6130 +#: cp/pt.cc:6131 #, gcc-internal-format msgid "got %d template parameters for %q#T" msgstr "" -#: cp/pt.cc:6132 +#: cp/pt.cc:6133 #, gcc-internal-format, gfc-internal-format msgid " but %d required" msgstr "" -#: cp/pt.cc:6153 +#: cp/pt.cc:6154 #, gcc-internal-format msgid "template arguments to %qD do not match original template %qD" msgstr "" -#: cp/pt.cc:6156 +#: cp/pt.cc:6157 #, gcc-internal-format msgid "use %%> for an explicit specialization" msgstr "" -#: cp/pt.cc:6178 +#: cp/pt.cc:6179 #, gcc-internal-format msgid "redeclaration of %qD with different constraints" msgstr "" -#: cp/pt.cc:6323 +#: cp/pt.cc:6324 #, gcc-internal-format msgid "%qT is not a template type" msgstr "" -#: cp/pt.cc:6336 +#: cp/pt.cc:6337 #, gcc-internal-format msgid "template specifiers not specified in declaration of %qD" msgstr "" -#: cp/pt.cc:6347 +#: cp/pt.cc:6348 #, 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.cc:6351 +#: cp/pt.cc:6352 #, 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.cc:6385 +#: cp/pt.cc:6386 #, gcc-internal-format msgid "template parameter %q+#D" msgstr "" -#: cp/pt.cc:6387 +#: cp/pt.cc:6388 #, gcc-internal-format msgid "redeclared here as %q#D" msgstr "" -#: cp/pt.cc:6389 +#: cp/pt.cc:6390 #, gcc-internal-format msgid "redeclared here" msgstr "" -#: cp/pt.cc:6400 +#: cp/pt.cc:6401 #, gcc-internal-format msgid "declaration of template parameter %q+#D with different constraints" msgstr "" -#: cp/pt.cc:6403 cp/pt.cc:6431 +#: cp/pt.cc:6404 cp/pt.cc:6432 #, gcc-internal-format msgid "original declaration appeared here" msgstr "" -#: cp/pt.cc:6428 +#: cp/pt.cc:6429 #, gcc-internal-format msgid "redeclaration of %q#D with different constraints" msgstr "" -#: cp/pt.cc:6839 cp/pt.cc:6909 +#: cp/pt.cc:6840 cp/pt.cc:6910 #, gcc-internal-format msgid "%qE is not a valid template argument for type %qT" msgstr "" -#: cp/pt.cc:6842 +#: cp/pt.cc:6843 #, gcc-internal-format msgid "it must be the address of a function with external linkage" msgstr "" -#: cp/pt.cc:6845 +#: cp/pt.cc:6846 #, gcc-internal-format msgid "it must be the name of a function with external linkage" msgstr "" -#: cp/pt.cc:6859 +#: cp/pt.cc:6860 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because %qD has no linkage" msgstr "" -#: cp/pt.cc:6863 +#: cp/pt.cc:6864 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because %qD does not have " "external linkage" msgstr "" -#: cp/pt.cc:6912 +#: cp/pt.cc:6913 #, gcc-internal-format msgid "it must be a pointer-to-member of the form %<&X::Y%>" msgstr "" -#: cp/pt.cc:6914 +#: cp/pt.cc:6915 #, gcc-internal-format msgid "because it is a member of %qT" msgstr "" -#: cp/pt.cc:6983 +#: cp/pt.cc:6984 #, gcc-internal-format msgid " couldn%'t deduce template parameter %qD" msgstr "" -#: cp/pt.cc:6992 +#: cp/pt.cc:6993 #, gcc-internal-format msgid " types %qT and %qT have incompatible cv-qualifiers" msgstr "" -#: cp/pt.cc:7001 +#: cp/pt.cc:7002 #, gcc-internal-format msgid " mismatched types %qT and %qT" msgstr "" -#: cp/pt.cc:7010 +#: cp/pt.cc:7011 #, gcc-internal-format msgid " template parameter %qD is not a parameter pack, but argument %qD is" msgstr "" -#: cp/pt.cc:7021 +#: cp/pt.cc:7022 #, gcc-internal-format msgid " template argument %qE does not match pointer-to-member constant %qE" msgstr "" -#: cp/pt.cc:7031 +#: cp/pt.cc:7032 #, gcc-internal-format msgid " %qE is not equivalent to %qE" msgstr "" -#: cp/pt.cc:7040 +#: cp/pt.cc:7041 #, gcc-internal-format msgid " inconsistent parameter pack deduction with %qT and %qT" msgstr "" -#: cp/pt.cc:7052 +#: cp/pt.cc:7053 #, gcc-internal-format msgid " deduced conflicting types for parameter %qT (%qT and %qT)" msgstr "" -#: cp/pt.cc:7056 +#: cp/pt.cc:7057 #, gcc-internal-format msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)" msgstr "" -#: cp/pt.cc:7067 +#: cp/pt.cc:7068 #, gcc-internal-format msgid " variable-sized array type %qT is not a valid template argument" msgstr "" -#: cp/pt.cc:7078 +#: cp/pt.cc:7079 #, gcc-internal-format msgid " member function type %qT is not a valid template argument" msgstr "" -#: cp/pt.cc:7121 +#: cp/pt.cc:7122 #, gcc-internal-format msgid " cannot convert %qE (type %qT) to type %qT" msgstr "" -#: cp/pt.cc:7134 +#: cp/pt.cc:7135 #, gcc-internal-format msgid " %qT is an ambiguous base class of %qT" msgstr "" -#: cp/pt.cc:7138 +#: cp/pt.cc:7139 #, gcc-internal-format msgid " %qT is not derived from %qT" msgstr "" -#: cp/pt.cc:7149 +#: cp/pt.cc:7150 #, gcc-internal-format msgid "" " template parameters of a template template argument are inconsistent with " "other deduced template arguments" msgstr "" -#: cp/pt.cc:7159 +#: cp/pt.cc:7160 #, gcc-internal-format msgid " cannot deduce a template for %qT from non-template type %qT" msgstr "" -#: cp/pt.cc:7169 +#: cp/pt.cc:7170 #, gcc-internal-format msgid " template argument %qE does not match %qE" msgstr "" -#: cp/pt.cc:7220 +#: cp/pt.cc:7221 #, gcc-internal-format msgid "" "%qE is not a valid template argument of type %qT because %qE is not a " "variable or function" msgstr "" -#: cp/pt.cc:7229 +#: cp/pt.cc:7230 #, gcc-internal-format msgid "" "%qE is not a valid template argument of type %qT in C++98 because %qD does " "not have external linkage" msgstr "" -#: cp/pt.cc:7239 +#: cp/pt.cc:7240 #, gcc-internal-format msgid "" "%qE is not a valid template argument of type %qT because %qD has no linkage" msgstr "" -#: cp/pt.cc:7256 +#: cp/pt.cc:7257 #, gcc-internal-format msgid "the address of %qD is not a valid template argument" msgstr "" -#: cp/pt.cc:7266 +#: cp/pt.cc:7267 #, gcc-internal-format msgid "" "the address of the %qT subobject of %qD is not a valid template argument" msgstr "" -#: cp/pt.cc:7273 +#: cp/pt.cc:7274 #, gcc-internal-format msgid "" "the address of %qD is not a valid template argument because it does not have " "static storage duration" msgstr "" -#: cp/pt.cc:7291 +#: cp/pt.cc:7292 #, 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.cc:7299 +#: cp/pt.cc:7300 #, 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.cc:7421 +#: cp/pt.cc:7422 #, 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.cc:7586 +#: cp/pt.cc:7587 #, gcc-internal-format msgid "in template argument for type %qT" msgstr "" -#: cp/pt.cc:7600 +#: cp/pt.cc:7601 #, gcc-internal-format msgid "template argument %qE for type %qT not a compile-time constant" msgstr "" -#: cp/pt.cc:7686 +#: cp/pt.cc:7687 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because of conflicts in cv-" "qualification" msgstr "" -#: cp/pt.cc:7694 +#: cp/pt.cc:7695 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because it is not an lvalue" msgstr "" -#: cp/pt.cc:7712 +#: cp/pt.cc:7713 #, 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.cc:7771 +#: cp/pt.cc:7772 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because it is a pointer" msgstr "" -#: cp/pt.cc:7773 +#: cp/pt.cc:7774 #, gcc-internal-format msgid "try using %qE instead" msgstr "" -#: cp/pt.cc:7827 +#: cp/pt.cc:7828 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because it is of type %qT" msgstr "" -#: cp/pt.cc:8419 +#: cp/pt.cc:8420 #, gcc-internal-format msgid "ignoring attributes on template argument %qT" msgstr "" -#: cp/pt.cc:8435 +#: cp/pt.cc:8436 #, gcc-internal-format msgid "ignoring attributes in template argument %qE" msgstr "" -#: cp/pt.cc:8579 +#: cp/pt.cc:8580 #, gcc-internal-format msgid "injected-class-name %qD used as template template argument" msgstr "" -#: cp/pt.cc:8608 +#: cp/pt.cc:8609 #, gcc-internal-format msgid "invalid use of destructor %qE as a type" msgstr "" -#: cp/pt.cc:8613 +#: cp/pt.cc:8614 #, gcc-internal-format msgid "to refer to a type member of a template parameter, use %" msgstr "" -#: cp/pt.cc:8629 cp/pt.cc:8663 cp/pt.cc:8713 +#: cp/pt.cc:8630 cp/pt.cc:8664 cp/pt.cc:8714 #, gcc-internal-format msgid "type/value mismatch at argument %d in template parameter list for %qD" msgstr "" -#: cp/pt.cc:8637 +#: cp/pt.cc:8638 #, gcc-internal-format msgid " expected a constant of type %qT, got %qT" msgstr "" -#: cp/pt.cc:8645 +#: cp/pt.cc:8646 #, gcc-internal-format msgid "" " ambiguous template argument for non-type template parameter is treated as " "function type" msgstr "" -#: cp/pt.cc:8651 +#: cp/pt.cc:8652 #, gcc-internal-format msgid " expected a class template, got %qE" msgstr "" -#: cp/pt.cc:8654 +#: cp/pt.cc:8655 #, gcc-internal-format msgid " expected a type, got %qE" msgstr "" -#: cp/pt.cc:8668 +#: cp/pt.cc:8669 #, gcc-internal-format msgid " expected a type, got %qT" msgstr "" -#: cp/pt.cc:8671 +#: cp/pt.cc:8672 #, gcc-internal-format msgid " expected a class template, got %qT" msgstr "" -#: cp/pt.cc:8717 +#: cp/pt.cc:8718 #, gcc-internal-format msgid " expected a template of type %qD, got %qT" msgstr "" -#: cp/pt.cc:8731 +#: cp/pt.cc:8732 #, gcc-internal-format msgid "constraint mismatch at argument %d in template parameter list for %qD" msgstr "" -#: cp/pt.cc:8734 +#: cp/pt.cc:8735 #, gcc-internal-format msgid " expected %qD but got %qD" msgstr "" -#: cp/pt.cc:8822 +#: cp/pt.cc:8823 #, gcc-internal-format msgid "could not convert template argument %qE from %qT to %qT" msgstr "" -#: cp/pt.cc:8960 cp/pt.cc:9286 +#: cp/pt.cc:8961 cp/pt.cc:9287 #, gcc-internal-format, gfc-internal-format msgid "template argument %d is invalid" msgstr "" -#: cp/pt.cc:8975 cp/pt.cc:9120 +#: cp/pt.cc:8976 cp/pt.cc:9121 #, gcc-internal-format, gfc-internal-format msgid "wrong number of template arguments (%d, should be %d)" msgstr "" -#: cp/pt.cc:9116 +#: cp/pt.cc:9117 #, gcc-internal-format, gfc-internal-format msgid "wrong number of template arguments (%d, should be at least %d)" msgstr "" -#: cp/pt.cc:9125 +#: cp/pt.cc:9126 #, gcc-internal-format msgid "provided for %qD" msgstr "" -#: cp/pt.cc:9150 +#: cp/pt.cc:9151 #, gcc-internal-format msgid "" "pack expansion argument for non-pack parameter %qD of alias template %qD" msgstr "" -#: cp/pt.cc:9154 +#: cp/pt.cc:9155 #, gcc-internal-format msgid "pack expansion argument for non-pack parameter %qD of concept %qD" msgstr "" -#: cp/pt.cc:9252 +#: cp/pt.cc:9253 #, gcc-internal-format msgid "" "so any instantiation with a non-empty parameter pack would be ill-formed" msgstr "" -#: cp/pt.cc:9819 +#: cp/pt.cc:9820 #, gcc-internal-format msgid "%q#D is not a function template" msgstr "" -#: cp/pt.cc:9982 +#: cp/pt.cc:9983 #, gcc-internal-format msgid "non-template type %qT used as a template" msgstr "" -#: cp/pt.cc:9984 +#: cp/pt.cc:9985 #, gcc-internal-format msgid "for template declaration %q+D" msgstr "" -#: cp/pt.cc:10128 cp/pt.cc:22190 +#: cp/pt.cc:10154 cp/pt.cc:22201 #, gcc-internal-format msgid "template constraint failure for %qD" msgstr "" -#: cp/pt.cc:10515 +#: cp/pt.cc:10507 #, gcc-internal-format msgid "use of invalid variable template %qE" msgstr "" -#: cp/pt.cc:11238 +#: cp/pt.cc:11231 #, gcc-internal-format msgid "" "template instantiation depth exceeds maximum of %d (use %<-ftemplate-" "depth=%> to increase the maximum)" msgstr "" -#: cp/pt.cc:11982 +#: cp/pt.cc:11975 #, gcc-internal-format msgid "score argument must be constant integer expression" msgstr "" -#: cp/pt.cc:11991 +#: cp/pt.cc:11984 #, gcc-internal-format msgid "score argument must be non-negative" msgstr "" -#: cp/pt.cc:12018 +#: cp/pt.cc:12011 #, gcc-internal-format msgid "property must be constant integer expression or string literal" msgstr "" -#: cp/pt.cc:12567 +#: cp/pt.cc:12560 #, gcc-internal-format msgid "flexible array member %qD in union" msgstr "" -#: cp/pt.cc:13057 +#: cp/pt.cc:13050 #, gcc-internal-format msgid "fold of empty expansion over %O" msgstr "" -#: cp/pt.cc:13507 +#: cp/pt.cc:13500 #, gcc-internal-format msgid "%qE is not the entire pattern of the pack expansion" msgstr "" -#: cp/pt.cc:13595 +#: cp/pt.cc:13588 #, gcc-internal-format msgid "mismatched argument pack lengths while expanding %qT" msgstr "" -#: cp/pt.cc:13598 +#: cp/pt.cc:13591 #, gcc-internal-format msgid "mismatched argument pack lengths while expanding %qE" msgstr "" -#: cp/pt.cc:14286 +#: cp/pt.cc:14279 #, gcc-internal-format msgid " when instantiating default argument for call to %qD" msgstr "" -#: cp/pt.cc:14382 +#: cp/pt.cc:14375 #, gcc-internal-format msgid "creating pointer to member function of non-class type %qT" msgstr "" -#: cp/pt.cc:15374 +#: cp/pt.cc:15367 #, gcc-internal-format, gfc-internal-format msgid "mismatched argument pack lengths (%d vs %d)" msgstr "" @@ -67091,305 +67355,305 @@ msgstr "" #. #. is an attempt to declare a variable with function #. type. -#: cp/pt.cc:15563 +#: cp/pt.cc:15556 #, gcc-internal-format msgid "variable %qD has function type" msgstr "" -#: cp/pt.cc:15764 +#: cp/pt.cc:15757 #, gcc-internal-format msgid "invalid parameter type %qT" msgstr "" -#: cp/pt.cc:15766 +#: cp/pt.cc:15759 #, gcc-internal-format msgid "in declaration %q+D" msgstr "" -#: cp/pt.cc:15893 +#: cp/pt.cc:15886 #, gcc-internal-format msgid "function returning an array" msgstr "" -#: cp/pt.cc:15895 +#: cp/pt.cc:15888 #, gcc-internal-format msgid "function returning a function" msgstr "" -#: cp/pt.cc:16591 +#: cp/pt.cc:16594 #, gcc-internal-format msgid "forming reference to void" msgstr "" -#: cp/pt.cc:16593 +#: cp/pt.cc:16596 #, gcc-internal-format msgid "forming pointer to reference type %qT" msgstr "" -#: cp/pt.cc:16595 +#: cp/pt.cc:16598 #, gcc-internal-format msgid "forming reference to reference type %qT" msgstr "" -#: cp/pt.cc:16608 +#: cp/pt.cc:16611 #, gcc-internal-format msgid "forming pointer to qualified function type %qT" msgstr "" -#: cp/pt.cc:16611 +#: cp/pt.cc:16614 #, gcc-internal-format msgid "forming reference to qualified function type %qT" msgstr "" -#: cp/pt.cc:16659 +#: cp/pt.cc:16662 #, gcc-internal-format msgid "creating pointer to member of non-class type %qT" msgstr "" -#: cp/pt.cc:16665 +#: cp/pt.cc:16668 #, gcc-internal-format msgid "creating pointer to member reference type %qT" msgstr "" -#: cp/pt.cc:16671 +#: cp/pt.cc:16674 #, gcc-internal-format msgid "creating pointer to member of type void" msgstr "" -#: cp/pt.cc:16737 +#: cp/pt.cc:16740 #, gcc-internal-format msgid "creating array of %qT" msgstr "" -#: cp/pt.cc:16774 +#: cp/pt.cc:16777 #, gcc-internal-format msgid "%qD is instantiated for an empty pack" msgstr "" -#: cp/pt.cc:16795 +#: cp/pt.cc:16798 #, gcc-internal-format msgid "%qT is not a class, struct, or union type" msgstr "" -#: cp/pt.cc:16835 +#: cp/pt.cc:16838 #, gcc-internal-format msgid "%qT resolves to %qT, which is not an enumeration type" msgstr "" -#: cp/pt.cc:16843 +#: cp/pt.cc:16846 #, gcc-internal-format msgid "%qT resolves to %qT, which is not a class type" msgstr "" -#: cp/pt.cc:16961 +#: cp/pt.cc:16964 #, gcc-internal-format msgid "use of %qs in template" msgstr "" -#: cp/pt.cc:17280 +#: cp/pt.cc:17283 #, gcc-internal-format msgid "qualifying type %qT does not match destructor name ~%qT" msgstr "" -#: cp/pt.cc:17295 +#: cp/pt.cc:17298 #, gcc-internal-format msgid "" "dependent-name %qE is parsed as a non-type, but instantiation yields a type" msgstr "" -#: cp/pt.cc:17297 +#: cp/pt.cc:17300 #, gcc-internal-format msgid "say % if a type is meant" msgstr "" -#: cp/pt.cc:17390 +#: cp/pt.cc:17393 #, gcc-internal-format msgid "initializer for %q#D expands to an empty list of expressions" msgstr "" -#: cp/pt.cc:19413 cp/pt.cc:21558 +#: cp/pt.cc:19416 cp/pt.cc:21569 #, gcc-internal-format msgid "invalid use of pack expansion expression" msgstr "" -#: cp/pt.cc:19417 cp/pt.cc:21562 +#: cp/pt.cc:19420 cp/pt.cc:21573 #, gcc-internal-format msgid "use %<...%> to expand argument pack" msgstr "" -#: cp/pt.cc:19547 +#: cp/pt.cc:19550 #, gcc-internal-format msgid "empty initializer in lambda init-capture" msgstr "" -#: cp/pt.cc:20832 +#: cp/pt.cc:20843 #, 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.cc:20867 +#: cp/pt.cc:20878 #, gcc-internal-format msgid "declarations in dependent base %qT are not found by unqualified lookup" msgstr "" -#: cp/pt.cc:20872 +#: cp/pt.cc:20883 #, gcc-internal-format msgid "use %%D%> instead" msgstr "" -#: cp/pt.cc:20875 +#: cp/pt.cc:20886 #, gcc-internal-format msgid "use %<%T::%D%> instead" msgstr "" -#: cp/pt.cc:20880 +#: cp/pt.cc:20891 #, gcc-internal-format msgid "%qD declared here, later in the translation unit" msgstr "" -#: cp/pt.cc:20931 +#: cp/pt.cc:20942 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_convertvector%>" msgstr "" -#: cp/pt.cc:20958 +#: cp/pt.cc:20969 #, gcc-internal-format msgid "wrong number of arguments to % attribute" msgstr "" -#: cp/pt.cc:21169 +#: cp/pt.cc:21180 #, gcc-internal-format msgid "%qT is not a class or namespace" msgstr "" -#: cp/pt.cc:21172 +#: cp/pt.cc:21183 #, gcc-internal-format msgid "%qD is not a class or namespace" msgstr "" -#: cp/pt.cc:21490 +#: cp/pt.cc:21501 #, gcc-internal-format msgid "using invalid field %qD" msgstr "" -#: cp/pt.cc:21836 +#: cp/pt.cc:21847 #, gcc-internal-format msgid "%qT is/uses unnamed type" msgstr "" -#: cp/pt.cc:21838 +#: cp/pt.cc:21849 #, gcc-internal-format msgid "template argument for %qD uses local type %qT" msgstr "" -#: cp/pt.cc:21848 +#: cp/pt.cc:21859 #, gcc-internal-format msgid "%qT is a variably modified type" msgstr "" -#: cp/pt.cc:21863 +#: cp/pt.cc:21874 #, gcc-internal-format msgid "integral expression %qE is not constant" msgstr "" -#: cp/pt.cc:21881 +#: cp/pt.cc:21892 #, gcc-internal-format msgid " trying to instantiate %qD" msgstr "" -#: cp/pt.cc:26264 +#: cp/pt.cc:26285 #, gcc-internal-format msgid "ambiguous template instantiation for %q#T" msgstr "" -#: cp/pt.cc:26266 +#: cp/pt.cc:26287 #, gcc-internal-format msgid "ambiguous template instantiation for %q#D" msgstr "" -#: cp/pt.cc:26272 +#: cp/pt.cc:26293 msgid "%s %#qS" msgstr "" -#: cp/pt.cc:26299 cp/pt.cc:26394 +#: cp/pt.cc:26320 cp/pt.cc:26415 #, gcc-internal-format msgid "explicit instantiation of non-template %q#D" msgstr "" -#: cp/pt.cc:26305 +#: cp/pt.cc:26326 #, gcc-internal-format msgid "explicit instantiation of variable concept %q#D" msgstr "" -#: cp/pt.cc:26307 +#: cp/pt.cc:26328 #, gcc-internal-format msgid "explicit instantiation of function concept %q#D" msgstr "" -#: cp/pt.cc:26326 +#: cp/pt.cc:26347 #, gcc-internal-format msgid "%qD is not a static data member of a class template" msgstr "" -#: cp/pt.cc:26332 cp/pt.cc:26389 +#: cp/pt.cc:26353 cp/pt.cc:26410 #, gcc-internal-format msgid "no matching template for %qD found" msgstr "" -#: cp/pt.cc:26337 +#: cp/pt.cc:26358 #, gcc-internal-format msgid "" "type %qT for explicit instantiation %qD does not match declared type %qT" msgstr "" -#: cp/pt.cc:26345 +#: cp/pt.cc:26366 #, gcc-internal-format msgid "explicit instantiation of %q#D" msgstr "" -#: cp/pt.cc:26381 +#: cp/pt.cc:26402 #, gcc-internal-format msgid "duplicate explicit instantiation of %q#D" msgstr "" -#: cp/pt.cc:26404 cp/pt.cc:26471 +#: cp/pt.cc:26425 cp/pt.cc:26492 #, gcc-internal-format msgid "ISO C++ 1998 forbids the use of % on explicit instantiations" msgstr "" -#: cp/pt.cc:26409 cp/pt.cc:26486 +#: cp/pt.cc:26430 cp/pt.cc:26507 #, gcc-internal-format msgid "storage class %qD applied to template instantiation" msgstr "" -#: cp/pt.cc:26443 +#: cp/pt.cc:26464 #, gcc-internal-format msgid "explicit instantiation of non-class template %qD" msgstr "" -#: cp/pt.cc:26446 +#: cp/pt.cc:26467 #, gcc-internal-format msgid "explicit instantiation of non-template type %qT" msgstr "" -#: cp/pt.cc:26455 +#: cp/pt.cc:26476 #, gcc-internal-format msgid "explicit instantiation of %q#T before definition of template" msgstr "" -#: cp/pt.cc:26476 +#: cp/pt.cc:26497 #, gcc-internal-format msgid "ISO C++ forbids the use of %qE on explicit instantiations" msgstr "" -#: cp/pt.cc:26516 +#: cp/pt.cc:26537 #, gcc-internal-format msgid "duplicate explicit instantiation of %q#T" msgstr "" -#: cp/pt.cc:26832 +#: cp/pt.cc:26853 #, gcc-internal-format msgid "exception specification of %qD depends on itself" msgstr "" @@ -67401,12 +67665,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.cc:27306 +#: cp/pt.cc:27326 #, gcc-internal-format msgid "explicit instantiation of %qD but no definition available" msgstr "" -#: cp/pt.cc:27351 +#: cp/pt.cc:27371 #, gcc-internal-format msgid "" "template instantiation depth exceeds maximum of %d instantiating %q+D, " @@ -67414,170 +67678,170 @@ msgid "" "increase the maximum)" msgstr "" -#: cp/pt.cc:27725 +#: cp/pt.cc:27745 #, gcc-internal-format msgid "" "non-type template parameters of deduced class type only available with %<-" "std=c++20%> or %<-std=gnu++20%>" msgstr "" -#: cp/pt.cc:27755 +#: cp/pt.cc:27775 #, gcc-internal-format msgid "" "%qT is not a valid type for a template non-type parameter because it is not " "structural" msgstr "" -#: cp/pt.cc:27764 +#: cp/pt.cc:27784 #, gcc-internal-format msgid "" "non-type template parameters of class type only available with %<-std=c+" "+20%> or %<-std=gnu++20%>" msgstr "" -#: cp/pt.cc:27772 +#: cp/pt.cc:27792 #, gcc-internal-format msgid "invalid template non-type parameter" msgstr "" -#: cp/pt.cc:27774 +#: cp/pt.cc:27794 #, gcc-internal-format msgid "%q#T is not a valid type for a template non-type parameter" msgstr "" -#: cp/pt.cc:29218 +#: cp/pt.cc:29238 #, gcc-internal-format msgid "keyword % not allowed in declarator-id" msgstr "" -#: cp/pt.cc:29398 +#: cp/pt.cc:29429 #, gcc-internal-format msgid "a concept cannot be constrained" msgstr "" -#: cp/pt.cc:29407 +#: cp/pt.cc:29438 #, gcc-internal-format msgid "concept %qE not in namespace scope" msgstr "" -#: cp/pt.cc:29413 +#: cp/pt.cc:29444 #, gcc-internal-format msgid "concept %qE has multiple template parameter lists" msgstr "" -#: cp/pt.cc:29444 +#: cp/pt.cc:29475 #, gcc-internal-format msgid "" "deducing from brace-enclosed initializer list requires %<#include " "%>" msgstr "" -#: cp/pt.cc:30722 +#: cp/pt.cc:30753 #, gcc-internal-format msgid "non-deducible template %qT used without template arguments" msgstr "" -#: cp/pt.cc:30734 +#: cp/pt.cc:30765 #, gcc-internal-format msgid "" "alias template deduction only available with %<-std=c++20%> or %<-std=gnu+" "+20%>" msgstr "" -#: cp/pt.cc:30740 +#: cp/pt.cc:30771 #, gcc-internal-format msgid "use %qD directly instead" msgstr "" -#: cp/pt.cc:30868 +#: cp/pt.cc:30899 #, gcc-internal-format msgid "" "cannot deduce template arguments for copy-initialization of %qT, as it has " "no non-explicit deduction guides or user-declared constructors" msgstr "" -#: cp/pt.cc:30875 +#: cp/pt.cc:30906 #, gcc-internal-format msgid "" "cannot deduce template arguments of %qT, as it has no viable deduction guides" msgstr "" -#: cp/pt.cc:30887 +#: cp/pt.cc:30918 #, gcc-internal-format msgid "class template argument deduction failed:" msgstr "" -#: cp/pt.cc:30890 +#: cp/pt.cc:30921 #, gcc-internal-format msgid "explicit deduction guides not considered for copy-initialization" msgstr "" #. TODO: Pass down location from cp_finish_decl. -#: cp/pt.cc:30904 +#: cp/pt.cc:30935 #, gcc-internal-format msgid "" "class template argument deduction for %qT failed: explicit deduction guide " "selected in copy-list-initialization" msgstr "" -#: cp/pt.cc:30908 +#: cp/pt.cc:30939 #, gcc-internal-format msgid "explicit deduction guide declared here" msgstr "" -#: cp/pt.cc:30922 +#: cp/pt.cc:30953 #, gcc-internal-format msgid "%qT may not intend to support class template argument deduction" msgstr "" -#: cp/pt.cc:30924 +#: cp/pt.cc:30955 #, gcc-internal-format msgid "add a deduction guide to suppress this warning" msgstr "" -#: cp/pt.cc:31046 +#: cp/pt.cc:31077 #, gcc-internal-format msgid "direct-list-initialization of % requires exactly one element" msgstr "" -#: cp/pt.cc:31049 +#: cp/pt.cc:31080 #, gcc-internal-format msgid "" "for deduction to %, use copy-list-initialization (i." "e. add %<=%> before the %<{%>)" msgstr "" -#: cp/pt.cc:31116 +#: cp/pt.cc:31147 #, gcc-internal-format msgid "unable to deduce lambda return type from %qE" msgstr "" -#: cp/pt.cc:31119 +#: cp/pt.cc:31150 #, gcc-internal-format msgid "unable to deduce %qT from %qE" msgstr "" -#: cp/pt.cc:31194 +#: cp/pt.cc:31225 #, gcc-internal-format msgid "placeholder constraints not satisfied" msgstr "" -#: cp/pt.cc:31198 +#: cp/pt.cc:31229 #, gcc-internal-format msgid "deduced initializer does not satisfy placeholder constraints" msgstr "" -#: cp/pt.cc:31202 +#: cp/pt.cc:31233 #, gcc-internal-format msgid "deduced return type does not satisfy placeholder constraints" msgstr "" -#: cp/pt.cc:31206 +#: cp/pt.cc:31237 #, gcc-internal-format msgid "deduced expression type does not satisfy placeholder constraints" msgstr "" -#: cp/pt.cc:31351 +#: cp/pt.cc:31392 #, gcc-internal-format msgid "invalid use of %qT in template argument" msgstr "" @@ -67629,809 +67893,823 @@ msgstr "" msgid "%qT is an inaccessible base of %qT" msgstr "" -#: cp/search.cc:1981 +#: cp/search.cc:1992 #, gcc-internal-format msgid "looser exception specification on overriding virtual function %q+#F" msgstr "" -#: cp/search.cc:1984 +#: cp/search.cc:1995 #, gcc-internal-format msgid "overridden function is %q#F" msgstr "" -#: cp/search.cc:2059 +#: cp/search.cc:2070 #, gcc-internal-format msgid "invalid covariant return type for %q#D" msgstr "" -#: cp/search.cc:2061 cp/search.cc:2078 cp/search.cc:2095 +#: cp/search.cc:2072 cp/search.cc:2089 cp/search.cc:2106 #, gcc-internal-format msgid "overridden function is %q#D" msgstr "" -#: cp/search.cc:2074 +#: cp/search.cc:2085 #, gcc-internal-format msgid "invalid covariant return type for %q+#D" msgstr "" -#: cp/search.cc:2076 +#: cp/search.cc:2087 #, gcc-internal-format msgid "conflicting return type specified for %q+#D" msgstr "" -#: cp/search.cc:2093 +#: cp/search.cc:2104 #, gcc-internal-format msgid "conflicting type attributes specified for %q+#D" msgstr "" -#: cp/search.cc:2108 +#: cp/search.cc:2119 #, gcc-internal-format msgid "% function %q+D overriding non-% function" msgstr "" -#: cp/search.cc:2111 +#: cp/search.cc:2122 #, gcc-internal-format msgid "non-% function %q+D overriding % function" msgstr "" -#: cp/search.cc:2114 cp/search.cc:2143 cp/search.cc:2152 cp/search.cc:2163 -#: cp/search.cc:2188 +#: cp/search.cc:2125 cp/search.cc:2154 cp/search.cc:2163 cp/search.cc:2174 +#: cp/search.cc:2199 #, gcc-internal-format msgid "overridden function is %qD" msgstr "" -#: cp/search.cc:2130 +#: cp/search.cc:2141 #, gcc-internal-format msgid "%qD declared %" msgstr "" -#: cp/search.cc:2132 +#: cp/search.cc:2143 #, gcc-internal-format msgid "overriding %qD declared %" msgstr "" -#: cp/search.cc:2140 +#: cp/search.cc:2151 #, gcc-internal-format msgid "deleted function %q+D overriding non-deleted function" msgstr "" -#: cp/search.cc:2149 +#: cp/search.cc:2160 #, gcc-internal-format msgid "non-deleted function %q+D overriding deleted function" msgstr "" -#: cp/search.cc:2160 +#: cp/search.cc:2171 #, gcc-internal-format msgid "function with contracts %q+D overriding contractless function" msgstr "" -#: cp/search.cc:2186 +#: cp/search.cc:2197 #, gcc-internal-format msgid "virtual function %q+D overriding final function" msgstr "" -#: cp/search.cc:2274 +#: cp/search.cc:2285 #, gcc-internal-format msgid "%q+#D cannot be declared" msgstr "" -#: cp/search.cc:2275 +#: cp/search.cc:2286 #, gcc-internal-format msgid " since %q+#D declared in base class" msgstr "" -#: cp/search.cc:2281 +#: cp/search.cc:2292 #, gcc-internal-format msgid "explicit object member function overrides virtual function" msgstr "" -#: cp/search.cc:2284 +#: cp/search.cc:2295 #, gcc-internal-format msgid "virtual function declared here" msgstr "" -#: cp/semantics.cc:1109 +#: cp/semantics.cc:1110 #, gcc-internal-format msgid "" "% always evaluates to true in %" msgstr "" -#: cp/semantics.cc:1113 +#: cp/semantics.cc:1116 +#, gcc-internal-format +msgid "" +"% evaluates to true when checking if trivially " +"empty iteration statement is trivial infinite loop" +msgstr "" + +#: cp/semantics.cc:1121 +#, gcc-internal-format +msgid "" +"and evaluates to false when actually evaluating the condition in non-" +"% function" +msgstr "" + +#: cp/semantics.cc:1126 #, gcc-internal-format msgid "" "% always evaluates to false in a non-" "% function" msgstr "" -#: cp/semantics.cc:1117 +#: cp/semantics.cc:1130 #, gcc-internal-format msgid "" "% always evaluates to true in a % " "function" msgstr "" -#: cp/semantics.cc:1294 +#: cp/semantics.cc:1347 #, gcc-internal-format msgid "suggest explicit braces around empty body in % statement" msgstr "" -#: cp/semantics.cc:1821 +#: cp/semantics.cc:1886 #, gcc-internal-format msgid "catching polymorphic type %q#T by value" msgstr "" -#: cp/semantics.cc:1826 +#: cp/semantics.cc:1891 #, gcc-internal-format msgid "catching type %q#T by value" msgstr "" -#: cp/semantics.cc:1831 +#: cp/semantics.cc:1896 #, gcc-internal-format msgid "catching non-reference type %q#T" msgstr "" -#: cp/semantics.cc:2043 +#: cp/semantics.cc:2108 #, gcc-internal-format msgid "type of % operand %qE could not be determined" msgstr "" -#: cp/semantics.cc:2125 +#: cp/semantics.cc:2190 #, gcc-internal-format msgid "%<__label__%> declarations are only allowed in function scopes" msgstr "" -#: cp/semantics.cc:2298 +#: cp/semantics.cc:2363 #, gcc-internal-format msgid "invalid use of member %qD in static member function" msgstr "" -#: cp/semantics.cc:2302 +#: cp/semantics.cc:2367 #, gcc-internal-format msgid "invalid use of member %qD in constructor % contract" msgstr "" -#: cp/semantics.cc:2306 +#: cp/semantics.cc:2371 #, gcc-internal-format msgid "invalid use of member %qD in destructor % contract" msgstr "" -#: cp/semantics.cc:2569 +#: cp/semantics.cc:2634 #, gcc-internal-format msgid "%qE missing template arguments" msgstr "" -#: cp/semantics.cc:2629 +#: cp/semantics.cc:2694 #, gcc-internal-format msgid "" "a statement expression is an insufficient context for overload resolution" msgstr "" -#: cp/semantics.cc:2988 +#: cp/semantics.cc:3053 #, gcc-internal-format msgid "cannot call a concept as a function" msgstr "" -#: cp/semantics.cc:3071 +#: cp/semantics.cc:3136 #, gcc-internal-format msgid "arguments to destructor are not allowed" msgstr "" -#: cp/semantics.cc:3175 +#: cp/semantics.cc:3240 #, gcc-internal-format msgid "% is unavailable for explicit object member functions" msgstr "" -#: cp/semantics.cc:3187 +#: cp/semantics.cc:3252 #, gcc-internal-format msgid "use explicit object parameter %qs instead" msgstr "" -#: cp/semantics.cc:3191 +#: cp/semantics.cc:3256 #, gcc-internal-format msgid "name the explicit object parameter" msgstr "" -#: cp/semantics.cc:3196 +#: cp/semantics.cc:3261 #, gcc-internal-format msgid "% is unavailable for static member functions" msgstr "" -#: cp/semantics.cc:3198 +#: cp/semantics.cc:3263 #, gcc-internal-format msgid "invalid use of % before it is valid" msgstr "" -#: cp/semantics.cc:3200 +#: cp/semantics.cc:3265 #, gcc-internal-format msgid "invalid use of % after it is valid" msgstr "" -#: cp/semantics.cc:3202 +#: cp/semantics.cc:3267 #, gcc-internal-format msgid "invalid use of % in non-member function" msgstr "" -#: cp/semantics.cc:3204 +#: cp/semantics.cc:3269 #, gcc-internal-format msgid "invalid use of % at top level" msgstr "" -#: cp/semantics.cc:3226 +#: cp/semantics.cc:3291 #, gcc-internal-format msgid "invalid qualifying scope in pseudo-destructor name" msgstr "" -#: cp/semantics.cc:3234 cp/typeck.cc:3084 +#: cp/semantics.cc:3299 cp/typeck.cc:3085 #, gcc-internal-format msgid "qualified type %qT does not match destructor name ~%qT" msgstr "" -#: cp/semantics.cc:3256 +#: cp/semantics.cc:3321 #, gcc-internal-format msgid "%qE is not of type %qT" msgstr "" -#: cp/semantics.cc:3370 +#: cp/semantics.cc:3435 #, gcc-internal-format msgid "compound literal of non-object type %qT" msgstr "" -#: cp/semantics.cc:3390 +#: cp/semantics.cc:3455 #, gcc-internal-format msgid "% cannot be constrained" msgstr "" -#: cp/semantics.cc:3395 +#: cp/semantics.cc:3460 #, gcc-internal-format msgid "% only available with %<-std=c++2b%> or %<-std=gnu++2b%>" msgstr "" -#: cp/semantics.cc:3587 +#: cp/semantics.cc:3652 #, gcc-internal-format msgid "template type parameters must use the keyword % or %" msgstr "" -#: cp/semantics.cc:3640 +#: cp/semantics.cc:3705 #, gcc-internal-format msgid "" "invalid use of type %qT as a default value for a template template-parameter" msgstr "" -#: cp/semantics.cc:3644 +#: cp/semantics.cc:3709 #, gcc-internal-format msgid "invalid default argument for a template template parameter" msgstr "" -#: cp/semantics.cc:3661 +#: cp/semantics.cc:3726 #, gcc-internal-format msgid "definition of %q#T inside template parameter list" msgstr "" -#: cp/semantics.cc:3692 +#: cp/semantics.cc:3757 #, gcc-internal-format msgid "invalid definition of qualified type %qT" msgstr "" -#: cp/semantics.cc:3984 +#: cp/semantics.cc:4049 #, gcc-internal-format msgid "invalid base-class specification" msgstr "" -#: cp/semantics.cc:4152 +#: cp/semantics.cc:4217 #, gcc-internal-format msgid "cannot capture member %qD of anonymous union" msgstr "" -#: cp/semantics.cc:4169 +#: cp/semantics.cc:4234 #, gcc-internal-format msgid "%qD is not captured" msgstr "" -#: cp/semantics.cc:4173 +#: cp/semantics.cc:4238 #, gcc-internal-format msgid "the lambda has no capture-default" msgstr "" -#: cp/semantics.cc:4175 +#: cp/semantics.cc:4240 #, gcc-internal-format msgid "" "lambda in local class %q+T cannot capture variables from the enclosing " "context" msgstr "" -#: cp/semantics.cc:4190 +#: cp/semantics.cc:4255 #, gcc-internal-format msgid "use of local variable with automatic storage from containing function" msgstr "" -#: cp/semantics.cc:4192 +#: cp/semantics.cc:4257 #, gcc-internal-format msgid "use of parameter from containing function" msgstr "" -#: cp/semantics.cc:4320 +#: cp/semantics.cc:4385 #, gcc-internal-format msgid "use of parameter outside function body" msgstr "" -#: cp/semantics.cc:4330 +#: cp/semantics.cc:4395 #, gcc-internal-format msgid "missing template arguments" msgstr "" -#: cp/semantics.cc:4366 +#: cp/semantics.cc:4431 #, 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.cc:4417 +#: cp/semantics.cc:4482 #, gcc-internal-format msgid "use of class template %qT as expression" msgstr "" #. Ambiguous reference to base members. -#: cp/semantics.cc:4424 +#: cp/semantics.cc:4489 #, gcc-internal-format msgid "request for member %qD is ambiguous in multiple inheritance lattice" msgstr "" -#: cp/semantics.cc:4452 +#: cp/semantics.cc:4517 #, gcc-internal-format msgid "%qD cannot appear in a constant-expression" msgstr "" -#: cp/semantics.cc:4605 +#: cp/semantics.cc:4670 #, gcc-internal-format msgid "type of %qE is unknown" msgstr "" -#: cp/semantics.cc:4623 rust/backend/rust-tree.cc:5511 +#: cp/semantics.cc:4688 rust/backend/rust-tree.cc:5511 #, gcc-internal-format msgid "%qT is not an enumeration type" msgstr "" -#: cp/semantics.cc:4650 +#: cp/semantics.cc:4715 #, gcc-internal-format msgid "%<__type_pack_element%> index is not an integral constant" msgstr "" -#: cp/semantics.cc:4656 +#: cp/semantics.cc:4721 #, gcc-internal-format msgid "%<__type_pack_element%> index is negative" msgstr "" -#: cp/semantics.cc:4662 +#: cp/semantics.cc:4727 #, gcc-internal-format msgid "%<__type_pack_element%> index is out of range" msgstr "" #. Parameter packs can only be used in templates -#: cp/semantics.cc:4785 +#: cp/semantics.cc:4850 #, gcc-internal-format msgid "parameter pack %<__bases%> only valid in template declaration" msgstr "" -#: cp/semantics.cc:4817 +#: cp/semantics.cc:4882 #, gcc-internal-format msgid "cannot apply % to destructor %<~%T%>" msgstr "" -#: cp/semantics.cc:4830 +#: cp/semantics.cc:4895 #, gcc-internal-format msgid "cannot apply % to member function %qD" msgstr "" -#: cp/semantics.cc:4834 +#: cp/semantics.cc:4899 #, gcc-internal-format msgid "cannot apply % to member function" msgstr "" -#: cp/semantics.cc:4839 +#: cp/semantics.cc:4904 #, gcc-internal-format msgid "cannot apply % to an enumerator %qD" msgstr "" -#: cp/semantics.cc:4850 +#: cp/semantics.cc:4915 #, gcc-internal-format msgid "" "% within non-standard-layout type %qT is conditionally-supported" msgstr "" -#: cp/semantics.cc:6046 +#: cp/semantics.cc:6115 #, gcc-internal-format msgid "pointer-to-member mapping %qE not supported" msgstr "" -#: cp/semantics.cc:6240 +#: cp/semantics.cc:6309 #, gcc-internal-format msgid "user defined reduction lookup is ambiguous" msgstr "" -#: cp/semantics.cc:6513 +#: cp/semantics.cc:6582 #, gcc-internal-format msgid "%qE in % clause is a zero size array" msgstr "" -#: cp/semantics.cc:6559 +#: cp/semantics.cc:6628 #, gcc-internal-format msgid "%qE has const type for %" msgstr "" -#: cp/semantics.cc:6678 +#: cp/semantics.cc:6747 #, gcc-internal-format msgid "user defined reduction with constructor initializer for base class %qT" msgstr "" -#: cp/semantics.cc:7150 +#: cp/semantics.cc:7219 #, gcc-internal-format msgid "" "modifier other than % specified in % clause on % or " "% constructs when using OpenMP 5.2 modifiers" msgstr "" -#: cp/semantics.cc:7165 +#: cp/semantics.cc:7234 #, gcc-internal-format msgid "" "linear clause with %qs modifier applied to non-reference variable with %qT " "type" msgstr "" -#: cp/semantics.cc:7180 +#: cp/semantics.cc:7249 #, gcc-internal-format msgid "" "linear clause applied to non-integral non-pointer variable with %qT type" msgstr "" -#: cp/semantics.cc:7204 +#: cp/semantics.cc:7273 #, gcc-internal-format msgid "linear step expression must be integral" msgstr "" -#: cp/semantics.cc:7297 cp/semantics.cc:7429 cp/semantics.cc:7489 -#: cp/semantics.cc:7890 cp/semantics.cc:9016 +#: cp/semantics.cc:7366 cp/semantics.cc:7498 cp/semantics.cc:7558 +#: cp/semantics.cc:7959 cp/semantics.cc:9085 #, gcc-internal-format msgid "% allowed in OpenMP only in % clauses" msgstr "" -#: cp/semantics.cc:7309 cp/semantics.cc:9029 +#: cp/semantics.cc:7378 cp/semantics.cc:9098 #, gcc-internal-format msgid "%qD is not a variable in clause %qs" msgstr "" -#: cp/semantics.cc:7442 +#: cp/semantics.cc:7511 #, gcc-internal-format msgid "%qD is not a variable in clause %" msgstr "" -#: cp/semantics.cc:7502 +#: cp/semantics.cc:7571 #, gcc-internal-format msgid "%qD is not a variable in clause %" msgstr "" -#: cp/semantics.cc:7553 +#: cp/semantics.cc:7622 #, gcc-internal-format msgid "% static expression must be integral" msgstr "" -#: cp/semantics.cc:7567 +#: cp/semantics.cc:7636 #, gcc-internal-format msgid "% static value must be positive" msgstr "" -#: cp/semantics.cc:7601 +#: cp/semantics.cc:7670 #, gcc-internal-format msgid "% num expression must be integral" msgstr "" -#: cp/semantics.cc:7604 +#: cp/semantics.cc:7673 #, gcc-internal-format msgid "% length expression must be integral" msgstr "" -#: cp/semantics.cc:7608 +#: cp/semantics.cc:7677 #, gcc-internal-format msgid "% num expression must be integral" msgstr "" -#: cp/semantics.cc:7630 +#: cp/semantics.cc:7699 #, gcc-internal-format msgid "% num value must be positive" msgstr "" -#: cp/semantics.cc:7634 +#: cp/semantics.cc:7703 #, gcc-internal-format msgid "% length value must be positive" msgstr "" -#: cp/semantics.cc:7639 +#: cp/semantics.cc:7708 #, gcc-internal-format msgid "% num value must be positive" msgstr "" -#: cp/semantics.cc:7715 +#: cp/semantics.cc:7784 #, gcc-internal-format msgid "schedule chunk size expression must be integral" msgstr "" -#: cp/semantics.cc:7748 +#: cp/semantics.cc:7817 #, gcc-internal-format msgid "%qs length expression must be integral" msgstr "" -#: cp/semantics.cc:7762 +#: cp/semantics.cc:7831 #, gcc-internal-format msgid "%qs length expression must be positive constant integer expression" msgstr "" -#: cp/semantics.cc:7782 +#: cp/semantics.cc:7851 #, gcc-internal-format msgid "% expression must be integral" msgstr "" -#: cp/semantics.cc:7811 +#: cp/semantics.cc:7880 #, gcc-internal-format msgid "% expression must be integral" msgstr "" -#: cp/semantics.cc:7841 +#: cp/semantics.cc:7910 #, gcc-internal-format msgid "% id must be integral" msgstr "" -#: cp/semantics.cc:7872 +#: cp/semantics.cc:7941 #, gcc-internal-format msgid "% chunk size expression must be integral" msgstr "" -#: cp/semantics.cc:7901 +#: cp/semantics.cc:7970 #, gcc-internal-format msgid "%qD is not a variable in % clause" msgstr "" -#: cp/semantics.cc:7916 +#: cp/semantics.cc:7985 #, gcc-internal-format msgid "" "%qE in % clause is neither a pointer nor an array nor a reference " "to pointer or array" msgstr "" -#: cp/semantics.cc:7923 +#: cp/semantics.cc:7992 #, gcc-internal-format msgid "%qD appears more than once in % clauses" msgstr "" -#: cp/semantics.cc:7938 +#: cp/semantics.cc:8007 #, gcc-internal-format msgid "% clause alignment expression must be integral" msgstr "" -#: cp/semantics.cc:7971 +#: cp/semantics.cc:8040 #, gcc-internal-format msgid "%qD is not a variable in % clause" msgstr "" -#: cp/semantics.cc:7982 +#: cp/semantics.cc:8051 #, gcc-internal-format msgid "%qD appears more than once in % clauses" msgstr "" -#: cp/semantics.cc:7999 +#: cp/semantics.cc:8068 #, gcc-internal-format msgid "% not allowed in % clause" msgstr "" -#: cp/semantics.cc:8011 +#: cp/semantics.cc:8080 #, gcc-internal-format msgid "%qD is not a variable in % clause" msgstr "" -#: cp/semantics.cc:8020 +#: cp/semantics.cc:8089 #, gcc-internal-format msgid "%qD appears more than once in % clauses" msgstr "" -#: cp/semantics.cc:8168 +#: cp/semantics.cc:8237 #, gcc-internal-format msgid "%qD is not lvalue expression nor array section in %qs clause" msgstr "" -#: cp/semantics.cc:8670 +#: cp/semantics.cc:8739 #, gcc-internal-format msgid "template %qE in clause %qs" msgstr "" -#: cp/semantics.cc:8673 +#: cp/semantics.cc:8742 #, gcc-internal-format msgid "overloaded function name %qE in clause %qs" msgstr "" -#: cp/semantics.cc:8742 +#: cp/semantics.cc:8811 #, gcc-internal-format msgid "% expression must be integral" msgstr "" -#: cp/semantics.cc:8772 +#: cp/semantics.cc:8841 #, gcc-internal-format msgid "% expression must be integral" msgstr "" -#: cp/semantics.cc:8802 +#: cp/semantics.cc:8871 #, gcc-internal-format msgid "% expression must be integral" msgstr "" -#: cp/semantics.cc:8815 +#: cp/semantics.cc:8884 #, gcc-internal-format msgid "% expression must be constant integer expression" msgstr "" -#: cp/semantics.cc:8832 +#: cp/semantics.cc:8901 #, gcc-internal-format msgid "% expression must be integral" msgstr "" -#: cp/semantics.cc:8863 +#: cp/semantics.cc:8932 #, gcc-internal-format msgid "%qs variable is neither a pointer nor reference to pointer" msgstr "" -#: cp/semantics.cc:8873 +#: cp/semantics.cc:8942 #, gcc-internal-format msgid "" "%qs variable is neither a pointer, nor an array nor reference to pointer or " "array" msgstr "" -#: cp/semantics.cc:8957 +#: cp/semantics.cc:9026 #, gcc-internal-format msgid "% argument needs integral type" msgstr "" -#: cp/semantics.cc:9374 +#: cp/semantics.cc:9443 #, gcc-internal-format msgid "" "% qualified %qE without % member may appear only in " "% or % clauses" msgstr "" -#: cp/semantics.cc:9601 +#: cp/semantics.cc:9670 #, gcc-internal-format msgid "% %qD is not file, namespace or block scope variable" msgstr "" -#: cp/semantics.cc:9615 +#: cp/semantics.cc:9684 #, gcc-internal-format msgid "% %qE directive not in %qT definition" msgstr "" -#: cp/semantics.cc:10352 +#: cp/semantics.cc:10421 #, gcc-internal-format msgid "difference between %qE and %qD does not have integer type" msgstr "" -#: cp/semantics.cc:10837 +#: cp/semantics.cc:10906 #, gcc-internal-format msgid "%<#pragma omp simd%> used with class iteration variable %qE" msgstr "" -#: cp/semantics.cc:11157 cp/semantics.cc:11167 +#: cp/semantics.cc:11226 cp/semantics.cc:11236 #, gcc-internal-format msgid "%<#pragma omp atomic update%> uses two different expressions for memory" msgstr "" -#: cp/semantics.cc:11509 +#: cp/semantics.cc:11578 #, gcc-internal-format msgid "" "% message must be a string literal or object with % " "and % members" msgstr "" -#: cp/semantics.cc:11525 +#: cp/semantics.cc:11594 #, gcc-internal-format msgid "" "% message % must be implicitly convertible to " "%" msgstr "" -#: cp/semantics.cc:11534 +#: cp/semantics.cc:11603 #, gcc-internal-format msgid "" "% message % must be implicitly convertible to " "%" msgstr "" -#: cp/semantics.cc:11592 +#: cp/semantics.cc:11661 #, gcc-internal-format msgid "% message % must be a constant expression" msgstr "" -#: cp/semantics.cc:11600 +#: cp/semantics.cc:11669 #, gcc-internal-format msgid "% message % %qE too large" msgstr "" -#: cp/semantics.cc:11627 +#: cp/semantics.cc:11696 #, gcc-internal-format msgid "% message % must be a constant expression" msgstr "" -#: cp/semantics.cc:11654 +#: cp/semantics.cc:11723 #, gcc-internal-format msgid "% message % must be a core constant expression" msgstr "" -#: cp/semantics.cc:11680 +#: cp/semantics.cc:11749 #, gcc-internal-format msgid "static assertion failed: %.*s" msgstr "" -#: cp/semantics.cc:11688 +#: cp/semantics.cc:11757 #, gcc-internal-format msgid "non-constant condition for static assertion" msgstr "" -#: cp/semantics.cc:11717 +#: cp/semantics.cc:11786 #, gcc-internal-format msgid "argument to % must be an expression" msgstr "" -#: cp/semantics.cc:11763 +#: cp/semantics.cc:11832 #, gcc-internal-format msgid "% cannot resolve address of overloaded function" msgstr "" -#: cp/semantics.cc:12066 rust/backend/rust-tree.cc:5225 +#: cp/semantics.cc:12144 rust/backend/rust-tree.cc:5225 #, gcc-internal-format msgid "" "%<__builtin_is_pointer_interconvertible_with_class%> needs a single argument" msgstr "" -#: cp/semantics.cc:12075 rust/backend/rust-tree.cc:5234 +#: cp/semantics.cc:12153 rust/backend/rust-tree.cc:5234 #, gcc-internal-format msgid "" "%<__builtin_is_pointer_interconvertible_with_class%> argument is not pointer " "to member" msgstr "" -#: cp/semantics.cc:12246 rust/backend/rust-tree.cc:5838 +#: cp/semantics.cc:12324 rust/backend/rust-tree.cc:5838 #, gcc-internal-format msgid "" "%<__builtin_is_corresponding_member%> not well defined for anonymous unions" msgstr "" -#: cp/semantics.cc:12270 rust/backend/rust-tree.cc:5882 +#: cp/semantics.cc:12348 rust/backend/rust-tree.cc:5882 #, gcc-internal-format msgid "%<__builtin_is_corresponding_member%> needs two arguments" msgstr "" -#: cp/semantics.cc:12281 rust/backend/rust-tree.cc:5892 +#: cp/semantics.cc:12359 rust/backend/rust-tree.cc:5892 #, gcc-internal-format msgid "%<__builtin_is_corresponding_member%> argument is not pointer to member" msgstr "" -#: cp/semantics.cc:12719 +#: cp/semantics.cc:12843 #, gcc-internal-format msgid "%qD is not a class or alias template" msgstr "" -#: cp/semantics.cc:12908 +#: cp/semantics.cc:13032 #, gcc-internal-format msgid "operand of fold expression has no unexpanded parameter packs" msgstr "" -#: cp/semantics.cc:12968 +#: cp/semantics.cc:13092 #, gcc-internal-format msgid "both arguments in binary fold have unexpanded parameter packs" msgstr "" -#: cp/semantics.cc:12970 +#: cp/semantics.cc:13094 #, gcc-internal-format msgid "no unexpanded parameter packs in binary fold" msgstr "" -#: cp/semantics.cc:12988 +#: cp/semantics.cc:13112 #, gcc-internal-format msgid "non-pointer argument to %<__builtin_launder%>" msgstr "" @@ -68439,213 +68717,219 @@ msgstr "" #. std::bit_cast for destination ARRAY_TYPE is not possible, #. as functions may not return an array, so don't bother trying #. to support this (and then deal with VLAs etc.). -#: cp/semantics.cc:13037 +#: cp/semantics.cc:13161 #, gcc-internal-format msgid "%<__builtin_bit_cast%> destination type %qT is an array type" msgstr "" -#: cp/semantics.cc:13043 +#: cp/semantics.cc:13167 #, gcc-internal-format msgid "%<__builtin_bit_cast%> destination type %qT is not trivially copyable" msgstr "" -#: cp/semantics.cc:13070 +#: cp/semantics.cc:13194 #, gcc-internal-format msgid "%<__builtin_bit_cast%> source type %qT is not trivially copyable" msgstr "" -#: cp/semantics.cc:13078 +#: cp/semantics.cc:13202 #, gcc-internal-format msgid "" "%<__builtin_bit_cast%> source size %qE not equal to destination type size %qE" msgstr "" -#: cp/tree.cc:1485 rust/backend/rust-tree.cc:2609 +#: cp/tree.cc:1486 rust/backend/rust-tree.cc:2609 #, gcc-internal-format msgid "%qV qualifiers cannot be applied to %qT" msgstr "" -#: cp/tree.cc:2003 +#: cp/tree.cc:2004 #, gcc-internal-format msgid "statement-expression in a constant expression" msgstr "" -#: cp/tree.cc:4512 +#: cp/tree.cc:4524 #, gcc-internal-format msgid "" "%<-fabi-version=13%> (GCC 8.2) fixes the calling convention for %qT, which " "was accidentally changed in 8.1" msgstr "" -#: cp/tree.cc:4516 +#: cp/tree.cc:4528 #, gcc-internal-format msgid "" "%<-fabi-version=12%> (GCC 8.1) accidentally changes the calling convention " "for %qT" msgstr "" -#: cp/tree.cc:4520 +#: cp/tree.cc:4532 #, gcc-internal-format msgid " declared here" msgstr "" -#: cp/tree.cc:4525 +#: cp/tree.cc:4537 #, gcc-internal-format msgid "" "the calling convention for %qT changes in %<-fabi-version=13%> (GCC 8.2)" msgstr "" -#: cp/tree.cc:4527 +#: cp/tree.cc:4539 #, gcc-internal-format msgid " because all of its copy and move constructors are deleted" msgstr "" -#: cp/tree.cc:4954 +#: cp/tree.cc:4966 #, gcc-internal-format msgid "base class %qT is not public" msgstr "" -#: cp/tree.cc:4957 +#: cp/tree.cc:4969 #, gcc-internal-format msgid "%qD is not public" msgstr "" -#: cp/tree.cc:4964 +#: cp/tree.cc:4976 #, gcc-internal-format msgid "%qD is mutable" msgstr "" -#: cp/tree.cc:4972 +#: cp/tree.cc:4984 #, gcc-internal-format msgid "%qD has a non-structural type" msgstr "" -#: cp/tree.cc:4995 +#: cp/tree.cc:5007 #, gcc-internal-format msgid "%qE attribute can only be applied to functions or parameters" msgstr "" -#: cp/tree.cc:5016 +#: cp/tree.cc:5028 #, gcc-internal-format msgid "%qE attribute argument must be a string constant" msgstr "" -#: cp/tree.cc:5031 +#: cp/tree.cc:5043 #, gcc-internal-format msgid "" "%qE attribute can only be applied to functions or to class or enumeration " "types" msgstr "" -#: cp/tree.cc:5051 cp/tree.cc:5056 +#: cp/tree.cc:5063 cp/tree.cc:5068 #, gcc-internal-format msgid "%qE attribute can only be applied to non-static data members" msgstr "" -#: cp/tree.cc:5062 +#: cp/tree.cc:5074 #, gcc-internal-format msgid "%qE attribute cannot be applied to a bit-field" msgstr "" -#: cp/tree.cc:5082 +#: cp/tree.cc:5094 #, gcc-internal-format msgid "%qE attribute takes no arguments" msgstr "" -#: cp/tree.cc:5086 +#: cp/tree.cc:5098 #, gcc-internal-format msgid "" "ISO C++ %qE attribute does not apply to functions; treating as %<[[gnu::" "%E]]%>" msgstr "" -#: cp/tree.cc:5168 +#: cp/tree.cc:5182 #, gcc-internal-format msgid "requested % is not an integer constant" msgstr "" -#: cp/tree.cc:5190 +#: cp/tree.cc:5204 #, gcc-internal-format msgid "" "can only use %qE attribute on file-scope definitions of objects of class type" msgstr "" -#: cp/tree.cc:5198 +#: cp/tree.cc:5212 #, gcc-internal-format msgid "requested % %i is out of range [0, %i]" msgstr "" -#: cp/tree.cc:5209 +#: cp/tree.cc:5223 #, gcc-internal-format msgid "requested % %i is reserved for internal use" msgstr "" -#: cp/tree.cc:5239 +#: cp/tree.cc:5253 #, gcc-internal-format msgid "redeclaration of %qD adds abi tag %qE" msgstr "" -#: cp/tree.cc:5259 +#: cp/tree.cc:5273 #, gcc-internal-format msgid "the %qE attribute requires arguments" msgstr "" -#: cp/tree.cc:5270 +#: cp/tree.cc:5284 #, gcc-internal-format msgid "arguments to the %qE attribute must be narrow string literals" msgstr "" -#: cp/tree.cc:5283 cp/tree.cc:5296 +#: cp/tree.cc:5297 cp/tree.cc:5310 #, gcc-internal-format msgid "arguments to the %qE attribute must contain valid identifiers" msgstr "" -#: cp/tree.cc:5285 +#: cp/tree.cc:5299 #, gcc-internal-format msgid "%<%c%> is not a valid first character for an identifier" msgstr "" -#: cp/tree.cc:5298 +#: cp/tree.cc:5312 #, gcc-internal-format msgid "%<%c%> is not a valid character in an identifier" msgstr "" -#: cp/tree.cc:5322 +#: cp/tree.cc:5336 #, gcc-internal-format msgid "%qE attribute applied to non-class, non-enum type %qT" msgstr "" -#: cp/tree.cc:5328 +#: cp/tree.cc:5342 #, gcc-internal-format msgid "%qE attribute applied to %qT after its definition" msgstr "" -#: cp/tree.cc:5335 +#: cp/tree.cc:5349 #, gcc-internal-format msgid "ignoring %qE attribute applied to template instantiation %qT" msgstr "" -#: cp/tree.cc:5342 +#: cp/tree.cc:5356 #, gcc-internal-format msgid "ignoring %qE attribute applied to template specialization %qT" msgstr "" -#: cp/tree.cc:5364 +#: cp/tree.cc:5378 #, gcc-internal-format msgid "%qE attribute applied to non-function, non-variable %qD" msgstr "" -#: cp/tree.cc:5370 +#: cp/tree.cc:5384 #, gcc-internal-format msgid "%qE attribute applied to extern \"C\" declaration %qD" msgstr "" -#: cp/tree.cc:6246 +#: cp/tree.cc:5417 +#, gcc-internal-format +msgid "" +"%qE attribute argument must be an expression that evaluates to true or false" +msgstr "" + +#: cp/tree.cc:6283 #, gcc-internal-format msgid "zero as null pointer constant" msgstr "" -#: cp/tree.cc:6287 rust/backend/rust-tree.cc:3189 +#: cp/tree.cc:6324 rust/backend/rust-tree.cc:3189 #, gcc-internal-format msgid "% check: failed in %s, at %s:%d" msgstr "" @@ -68753,441 +69037,441 @@ msgstr "" msgid "invalid use of non-static member function of type %qT" msgstr "" -#: cp/typeck.cc:2715 +#: cp/typeck.cc:2716 #, gcc-internal-format msgid "ISO C++ forbids converting a string constant to %qT" msgstr "" -#: cp/typeck.cc:2719 +#: cp/typeck.cc:2720 #, gcc-internal-format msgid "deprecated conversion from string constant to %qT" msgstr "" -#: cp/typeck.cc:2834 cp/typeck.cc:3398 +#: cp/typeck.cc:2835 cp/typeck.cc:3399 #, gcc-internal-format msgid "" "request for member %qD in %qE, which is of pointer type %qT (maybe you meant " "to use %<->%> ?)" msgstr "" -#: cp/typeck.cc:2838 cp/typeck.cc:3402 +#: cp/typeck.cc:2839 cp/typeck.cc:3403 #, gcc-internal-format msgid "request for member %qD in %qE, which is of non-class type %qT" msgstr "" -#: cp/typeck.cc:2872 +#: cp/typeck.cc:2873 #, gcc-internal-format msgid "invalid use of non-static data member %qE" msgstr "" -#: cp/typeck.cc:2949 +#: cp/typeck.cc:2950 #, gcc-internal-format msgid "" "invalid access to non-static data member %qD in virtual base of NULL object" msgstr "" -#: cp/typeck.cc:3099 +#: cp/typeck.cc:3100 #, gcc-internal-format msgid "object type %qT does not match destructor name ~%qT" msgstr "" -#: cp/typeck.cc:3108 +#: cp/typeck.cc:3109 #, gcc-internal-format msgid "the type being destroyed is %qT, but the destructor refers to %qT" msgstr "" -#: cp/typeck.cc:3250 +#: cp/typeck.cc:3251 #, gcc-internal-format msgid "field %q#D can be accessed via %q#D" msgstr "" #. No hint. -#: cp/typeck.cc:3269 +#: cp/typeck.cc:3270 #, gcc-internal-format msgid "%q#T has no member named %qE" msgstr "" -#: cp/typeck.cc:3292 +#: cp/typeck.cc:3293 #, gcc-internal-format msgid "%q#T has no member named %qE; did you mean %q#D? (accessible via %q#D)" msgstr "" -#: cp/typeck.cc:3303 +#: cp/typeck.cc:3304 #, gcc-internal-format msgid "" "%q#T has no member named %qE; did you mean %q#D? (not accessible from this " "context)" msgstr "" -#: cp/typeck.cc:3318 +#: cp/typeck.cc:3319 #, gcc-internal-format msgid "%q#T has no member named %qE; did you mean %qE?" msgstr "" -#: cp/typeck.cc:3432 cp/typeck.cc:3458 +#: cp/typeck.cc:3433 cp/typeck.cc:3459 #, gcc-internal-format msgid "%<%D::%D%> is not a member of %qT" msgstr "" -#: cp/typeck.cc:3512 +#: cp/typeck.cc:3513 #, gcc-internal-format msgid "%qT is not a base of %qT" msgstr "" -#: cp/typeck.cc:3575 +#: cp/typeck.cc:3576 #, gcc-internal-format msgid "%qD is not a member template function" msgstr "" -#: cp/typeck.cc:3840 +#: cp/typeck.cc:3841 #, gcc-internal-format msgid "%qT is not a pointer-to-object type" msgstr "" -#: cp/typeck.cc:3872 +#: cp/typeck.cc:3873 #, gcc-internal-format msgid "invalid use of array indexing on pointer to member" msgstr "" -#: cp/typeck.cc:3875 +#: cp/typeck.cc:3876 #, gcc-internal-format msgid "invalid use of unary %<*%> on pointer to member" msgstr "" -#: cp/typeck.cc:3878 +#: cp/typeck.cc:3879 #, gcc-internal-format msgid "invalid use of implicit conversion on pointer to member" msgstr "" -#: cp/typeck.cc:3882 +#: cp/typeck.cc:3883 #, 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.cc:3948 +#: cp/typeck.cc:3949 #, gcc-internal-format msgid "subscript missing in array reference" msgstr "" -#: cp/typeck.cc:4053 +#: cp/typeck.cc:4054 #, gcc-internal-format msgid "subscripting array declared %" msgstr "" -#: cp/typeck.cc:4092 +#: cp/typeck.cc:4093 #, gcc-internal-format msgid "subscripted value is neither array nor pointer" msgstr "" -#: cp/typeck.cc:4164 +#: cp/typeck.cc:4165 #, gcc-internal-format msgid "object missing in use of %qE" msgstr "" -#: cp/typeck.cc:4389 +#: cp/typeck.cc:4390 #, gcc-internal-format msgid "ISO C++ forbids calling %<::main%> from within program" msgstr "" -#: cp/typeck.cc:4410 +#: cp/typeck.cc:4411 #, gcc-internal-format msgid "" "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E " "(...)%>, e.g. %<(... ->* %E) (...)%>" msgstr "" -#: cp/typeck.cc:4427 +#: cp/typeck.cc:4428 #, gcc-internal-format msgid "%qE cannot be used as a function" msgstr "" -#: cp/typeck.cc:4430 +#: cp/typeck.cc:4431 #, gcc-internal-format msgid "%qD cannot be used as a function" msgstr "" -#: cp/typeck.cc:4433 +#: cp/typeck.cc:4434 #, gcc-internal-format msgid "expression cannot be used as a function" msgstr "" -#: cp/typeck.cc:4491 +#: cp/typeck.cc:4492 #, gcc-internal-format msgid "too many arguments to constructor %q#D" msgstr "" -#: cp/typeck.cc:4492 +#: cp/typeck.cc:4493 #, gcc-internal-format msgid "too few arguments to constructor %q#D" msgstr "" -#: cp/typeck.cc:4497 +#: cp/typeck.cc:4498 #, gcc-internal-format msgid "too many arguments to member function %q#D" msgstr "" -#: cp/typeck.cc:4498 +#: cp/typeck.cc:4499 #, gcc-internal-format msgid "too few arguments to member function %q#D" msgstr "" -#: cp/typeck.cc:4504 +#: cp/typeck.cc:4505 #, gcc-internal-format msgid "too many arguments to function %q#D" msgstr "" -#: cp/typeck.cc:4505 +#: cp/typeck.cc:4506 #, gcc-internal-format msgid "too few arguments to function %q#D" msgstr "" -#: cp/typeck.cc:4515 +#: cp/typeck.cc:4516 #, gcc-internal-format msgid "too many arguments to method %q#D" msgstr "" -#: cp/typeck.cc:4516 +#: cp/typeck.cc:4517 #, gcc-internal-format msgid "too few arguments to method %q#D" msgstr "" -#: cp/typeck.cc:4519 +#: cp/typeck.cc:4520 #, gcc-internal-format msgid "too many arguments to function" msgstr "" -#: cp/typeck.cc:4520 +#: cp/typeck.cc:4521 #, gcc-internal-format msgid "too few arguments to function" msgstr "" -#: cp/typeck.cc:4602 +#: cp/typeck.cc:4603 #, gcc-internal-format msgid "parameter %P of %qD has incomplete type %qT" msgstr "" -#: cp/typeck.cc:4608 +#: cp/typeck.cc:4609 #, gcc-internal-format msgid "parameter %P has incomplete type %qT" msgstr "" -#: cp/typeck.cc:4917 +#: cp/typeck.cc:4918 #, gcc-internal-format msgid "the address %qE will never be NULL" msgstr "" -#: cp/typeck.cc:4963 +#: cp/typeck.cc:4964 #, gcc-internal-format msgid "the address of %qD will never be NULL" msgstr "" -#: cp/typeck.cc:4978 +#: cp/typeck.cc:4979 #, gcc-internal-format msgid "the compiler can assume that the address of %qE will never be NULL" msgstr "" -#: cp/typeck.cc:4981 +#: cp/typeck.cc:4982 #, gcc-internal-format msgid "comparing the result of pointer addition %qE and NULL" msgstr "" -#: cp/typeck.cc:4996 +#: cp/typeck.cc:4997 #, gcc-internal-format msgid "the compiler can assume that the address of %qD will never be NULL" msgstr "" -#: cp/typeck.cc:5055 +#: cp/typeck.cc:5056 #, gcc-internal-format msgid "bitwise operation between different enumeration types %qT and %qT" msgstr "" -#: cp/typeck.cc:5058 +#: cp/typeck.cc:5059 #, gcc-internal-format msgid "" "bitwise operation between different enumeration types %qT and %qT is " "deprecated" msgstr "" -#: cp/typeck.cc:5064 +#: cp/typeck.cc:5065 #, gcc-internal-format msgid "arithmetic between different enumeration types %qT and %qT" msgstr "" -#: cp/typeck.cc:5067 +#: cp/typeck.cc:5068 #, gcc-internal-format msgid "" "arithmetic between different enumeration types %qT and %qT is deprecated" msgstr "" -#: cp/typeck.cc:5104 +#: cp/typeck.cc:5105 #, gcc-internal-format msgid "comparison of enumeration type %qT with floating-point type %qT" msgstr "" -#: cp/typeck.cc:5107 +#: cp/typeck.cc:5108 #, gcc-internal-format msgid "comparison of floating-point type %qT with enumeration type %qT" msgstr "" -#: cp/typeck.cc:5110 +#: cp/typeck.cc:5111 #, gcc-internal-format msgid "" "comparison of enumeration type %qT with floating-point type %qT is deprecated" msgstr "" -#: cp/typeck.cc:5114 +#: cp/typeck.cc:5115 #, gcc-internal-format msgid "" "comparison of floating-point type %qT with enumeration type %qT is deprecated" msgstr "" -#: cp/typeck.cc:5123 +#: cp/typeck.cc:5124 #, gcc-internal-format msgid "arithmetic between enumeration type %qT and floating-point type %qT" msgstr "" -#: cp/typeck.cc:5126 +#: cp/typeck.cc:5127 #, gcc-internal-format msgid "arithmetic between floating-point type %qT and enumeration type %qT" msgstr "" -#: cp/typeck.cc:5129 +#: cp/typeck.cc:5130 #, gcc-internal-format msgid "" "arithmetic between enumeration type %qT and floating-point type %qT is " "deprecated" msgstr "" -#: cp/typeck.cc:5133 +#: cp/typeck.cc:5134 #, gcc-internal-format msgid "" "arithmetic between floating-point type %qT and enumeration type %qT is " "deprecated" msgstr "" -#: cp/typeck.cc:5268 cp/typeck.cc:5280 +#: cp/typeck.cc:5269 cp/typeck.cc:5281 #, gcc-internal-format msgid "assuming cast to type %qT from overloaded function" msgstr "" -#: cp/typeck.cc:5394 +#: cp/typeck.cc:5395 #, gcc-internal-format msgid "NULL used in arithmetic" msgstr "" -#: cp/typeck.cc:5855 cp/typeck.cc:5864 cp/typeck.cc:6165 cp/typeck.cc:6174 +#: cp/typeck.cc:5856 cp/typeck.cc:5865 cp/typeck.cc:6166 cp/typeck.cc:6175 #, gcc-internal-format msgid "ISO C++ forbids comparison between pointer and integer" msgstr "" -#: cp/typeck.cc:6087 cp/typeck.cc:6100 +#: cp/typeck.cc:6088 cp/typeck.cc:6101 #, gcc-internal-format msgid "operand types are %qT and %qT" msgstr "" -#: cp/typeck.cc:6123 +#: cp/typeck.cc:6124 #, gcc-internal-format msgid "three-way comparison of vectors" msgstr "" -#: cp/typeck.cc:6157 +#: cp/typeck.cc:6158 #, gcc-internal-format msgid "ordered comparison of pointer with integer zero (%qT and %qT)" msgstr "" -#: cp/typeck.cc:6204 +#: cp/typeck.cc:6205 #, gcc-internal-format msgid "unordered comparison on non-floating-point argument" msgstr "" -#: cp/typeck.cc:6270 +#: cp/typeck.cc:6271 msgid "" "implicit conversion from %qH to %qI to match other operand of binary " "expression" msgstr "" -#: cp/typeck.cc:6379 +#: cp/typeck.cc:6380 #, gcc-internal-format msgid "invalid operands of types %qT and %qT to binary %qO" msgstr "" -#: cp/typeck.cc:6780 +#: cp/typeck.cc:6781 #, gcc-internal-format msgid "ISO C++ forbids using pointer of type % in subtraction" msgstr "" -#: cp/typeck.cc:6788 +#: cp/typeck.cc:6789 #, gcc-internal-format msgid "ISO C++ forbids using pointer to a function in subtraction" msgstr "" -#: cp/typeck.cc:6796 +#: cp/typeck.cc:6797 #, gcc-internal-format msgid "ISO C++ forbids using pointer to a method in subtraction" msgstr "" -#: cp/typeck.cc:6849 +#: cp/typeck.cc:6850 #, gcc-internal-format msgid "invalid use of a pointer to an incomplete type in pointer arithmetic" msgstr "" -#: cp/typeck.cc:6926 +#: cp/typeck.cc:6927 #, gcc-internal-format msgid "taking address of constructor %qD" msgstr "" -#: cp/typeck.cc:6927 +#: cp/typeck.cc:6928 #, gcc-internal-format msgid "taking address of destructor %qD" msgstr "" -#: cp/typeck.cc:6943 +#: cp/typeck.cc:6944 #, gcc-internal-format msgid "invalid use of %qE to form a pointer-to-member-function" msgstr "" -#: cp/typeck.cc:6946 +#: cp/typeck.cc:6947 #, gcc-internal-format msgid " a qualified-id is required" msgstr "" -#: cp/typeck.cc:6953 +#: cp/typeck.cc:6954 #, gcc-internal-format msgid "" "parentheses around %qE cannot be used to form a pointer-to-member-function" msgstr "" -#: cp/typeck.cc:7148 +#: cp/typeck.cc:7149 #, 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.cc:7154 +#: cp/typeck.cc:7155 #, gcc-internal-format msgid "" "ISO C++ forbids taking the address of an unqualified or parenthesized non-" "static member function to form a pointer to explicit object member function" msgstr "" -#: cp/typeck.cc:7160 +#: cp/typeck.cc:7161 #, gcc-internal-format msgid "" "ISO C++ forbids taking the address of a bound member function to form a " "pointer to member function. Say %<&%T::%D%>" msgstr "" -#: cp/typeck.cc:7166 +#: cp/typeck.cc:7167 #, gcc-internal-format msgid "" "ISO C++ forbids taking the address of a bound member function to form a " "pointer to explicit object member function" msgstr "" -#: cp/typeck.cc:7171 +#: cp/typeck.cc:7172 #, gcc-internal-format msgid "" "a pointer to explicit object member function can only be formed with %<&%T::" @@ -69195,465 +69479,465 @@ msgid "" msgstr "" #. Make this a permerror because we used to accept it. -#: cp/typeck.cc:7204 +#: cp/typeck.cc:7205 #, gcc-internal-format msgid "taking address of rvalue" msgstr "" -#: cp/typeck.cc:7221 +#: cp/typeck.cc:7222 #, gcc-internal-format msgid "ISO C++ forbids taking address of function %<::main%>" msgstr "" -#: cp/typeck.cc:7279 +#: cp/typeck.cc:7280 #, gcc-internal-format msgid "cannot create pointer to reference member %qD" msgstr "" -#: cp/typeck.cc:7314 cp/typeck.cc:7890 rust/backend/rust-tree.cc:4714 +#: cp/typeck.cc:7315 cp/typeck.cc:7891 rust/backend/rust-tree.cc:4714 #, gcc-internal-format msgid "attempt to take address of bit-field" msgstr "" -#: cp/typeck.cc:7476 +#: cp/typeck.cc:7477 #, gcc-internal-format msgid "%<~%> on an expression of type %" msgstr "" -#: cp/typeck.cc:7477 +#: cp/typeck.cc:7478 #, gcc-internal-format msgid "did you mean to use logical not (%)?" msgstr "" -#: cp/typeck.cc:7609 +#: cp/typeck.cc:7610 #, gcc-internal-format msgid "ISO C++ forbids incrementing an enum" msgstr "" -#: cp/typeck.cc:7610 +#: cp/typeck.cc:7611 #, gcc-internal-format msgid "ISO C++ forbids decrementing an enum" msgstr "" -#: cp/typeck.cc:7626 +#: cp/typeck.cc:7627 #, gcc-internal-format msgid "cannot increment a pointer to incomplete type %qT" msgstr "" -#: cp/typeck.cc:7628 +#: cp/typeck.cc:7629 #, gcc-internal-format msgid "cannot decrement a pointer to incomplete type %qT" msgstr "" -#: cp/typeck.cc:7640 +#: cp/typeck.cc:7641 #, gcc-internal-format msgid "ISO C++ forbids incrementing a pointer of type %qT" msgstr "" -#: cp/typeck.cc:7642 +#: cp/typeck.cc:7643 #, gcc-internal-format msgid "ISO C++ forbids decrementing a pointer of type %qT" msgstr "" -#: cp/typeck.cc:7682 +#: cp/typeck.cc:7683 #, gcc-internal-format msgid "%qs expression of %-qualified type is deprecated" msgstr "" -#: cp/typeck.cc:7695 +#: cp/typeck.cc:7696 #, gcc-internal-format msgid "use of an operand of type %qT in % is forbidden" msgstr "" -#: cp/typeck.cc:7705 +#: cp/typeck.cc:7706 #, gcc-internal-format msgid "use of an operand of type %qT in % is forbidden in C++17" msgstr "" -#: cp/typeck.cc:7713 +#: cp/typeck.cc:7714 #, gcc-internal-format msgid "use of an operand of type %qT in % is deprecated" msgstr "" -#: cp/typeck.cc:7902 rust/backend/rust-tree.cc:4726 +#: cp/typeck.cc:7903 rust/backend/rust-tree.cc:4726 #, gcc-internal-format msgid "cannot take the address of %, which is an rvalue expression" msgstr "" -#: cp/typeck.cc:7924 d/d-codegen.cc:719 rust/backend/rust-tree.cc:4745 +#: cp/typeck.cc:7925 d/d-codegen.cc:719 rust/backend/rust-tree.cc:4745 #, gcc-internal-format msgid "address of explicit register variable %qD requested" msgstr "" -#: cp/typeck.cc:7929 rust/backend/rust-tree.cc:4752 +#: cp/typeck.cc:7930 rust/backend/rust-tree.cc:4752 #, gcc-internal-format msgid "address requested for %qD, which is declared %" msgstr "" -#: cp/typeck.cc:8000 +#: cp/typeck.cc:8001 #, gcc-internal-format msgid "list-initializer for non-class type must not be parenthesized" msgstr "" -#: cp/typeck.cc:8012 +#: cp/typeck.cc:8013 #, gcc-internal-format msgid "expression list treated as compound expression in initializer" msgstr "" -#: cp/typeck.cc:8016 +#: cp/typeck.cc:8017 #, gcc-internal-format msgid "expression list treated as compound expression in mem-initializer" msgstr "" -#: cp/typeck.cc:8020 +#: cp/typeck.cc:8021 #, gcc-internal-format msgid "expression list treated as compound expression in functional cast" msgstr "" -#: cp/typeck.cc:8058 +#: cp/typeck.cc:8059 #, gcc-internal-format, gfc-internal-format msgid "%s expression list treated as compound expression" msgstr "" -#: cp/typeck.cc:8159 +#: cp/typeck.cc:8160 #, gcc-internal-format msgid "no context to resolve type of %qE" msgstr "" -#: cp/typeck.cc:8196 +#: cp/typeck.cc:8197 #, gcc-internal-format msgid "cast from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.cc:8202 +#: cp/typeck.cc:8203 #, gcc-internal-format msgid "% from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.cc:8209 +#: cp/typeck.cc:8210 #, gcc-internal-format msgid "% from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.cc:8235 +#: cp/typeck.cc:8236 #, gcc-internal-format msgid "useless cast to type %q#T" msgstr "" -#: cp/typeck.cc:8249 +#: cp/typeck.cc:8250 #, gcc-internal-format msgid "type qualifiers ignored on cast result type" msgstr "" -#: cp/typeck.cc:8697 +#: cp/typeck.cc:8698 #, gcc-internal-format msgid "invalid % from type %qT to type %qT" msgstr "" -#: cp/typeck.cc:8703 cp/typeck.cc:8709 cp/typeck.cc:10420 +#: cp/typeck.cc:8704 cp/typeck.cc:8710 cp/typeck.cc:10421 #, gcc-internal-format msgid "class type %qT is incomplete" msgstr "" -#: cp/typeck.cc:8737 +#: cp/typeck.cc:8738 msgid "converting from %qH to %qI" msgstr "" -#: cp/typeck.cc:8812 +#: cp/typeck.cc:8813 #, gcc-internal-format msgid "invalid cast of a prvalue expression of type %qT to type %qT" msgstr "" -#: cp/typeck.cc:8882 +#: cp/typeck.cc:8883 msgid "cast from %qH to %qI loses precision" msgstr "" -#: cp/typeck.cc:8907 +#: cp/typeck.cc:8908 msgid "cast between incompatible function types from %qH to %qI" msgstr "" -#: cp/typeck.cc:8918 +#: cp/typeck.cc:8919 msgid "cast between incompatible pointer to member types from %qH to %qI" msgstr "" -#: cp/typeck.cc:8939 cp/typeck.cc:9129 +#: cp/typeck.cc:8940 cp/typeck.cc:9130 msgid "cast from %qH to %qI increases required alignment of target type" msgstr "" -#: cp/typeck.cc:8956 +#: cp/typeck.cc:8957 #, gcc-internal-format msgid "" "casting between pointer-to-function and pointer-to-object is conditionally-" "supported" msgstr "" -#: cp/typeck.cc:8970 +#: cp/typeck.cc:8971 #, gcc-internal-format msgid "invalid cast from type %qT to type %qT" msgstr "" -#: cp/typeck.cc:9043 +#: cp/typeck.cc:9044 #, gcc-internal-format msgid "" "invalid use of % with type %qT, which is not a pointer, " "reference, nor a pointer-to-data-member type" msgstr "" -#: cp/typeck.cc:9052 +#: cp/typeck.cc:9053 #, gcc-internal-format msgid "" "invalid use of % with type %qT, which is a pointer or reference " "to a function type" msgstr "" -#: cp/typeck.cc:9094 +#: cp/typeck.cc:9095 #, gcc-internal-format msgid "invalid % of an rvalue of type %qT to type %qT" msgstr "" -#: cp/typeck.cc:9164 +#: cp/typeck.cc:9165 #, gcc-internal-format msgid "invalid % from type %qT to type %qT" msgstr "" -#: cp/typeck.cc:9265 cp/typeck.cc:9274 +#: cp/typeck.cc:9266 cp/typeck.cc:9275 #, gcc-internal-format msgid "ISO C++ forbids casting to an array type %qT" msgstr "" -#: cp/typeck.cc:9283 +#: cp/typeck.cc:9284 #, gcc-internal-format msgid "invalid cast to function type %qT" msgstr "" -#: cp/typeck.cc:9396 +#: cp/typeck.cc:9397 #, gcc-internal-format msgid "moving %qE of type %qT to itself" msgstr "" -#: cp/typeck.cc:9397 cp/typeck.cc:10947 cp/typeck.cc:10963 cp/typeck.cc:10988 -#: cp/typeck.cc:11025 +#: cp/typeck.cc:9398 cp/typeck.cc:10950 cp/typeck.cc:10966 cp/typeck.cc:10991 +#: cp/typeck.cc:11028 #, gcc-internal-format msgid "remove % call" msgstr "" -#: cp/typeck.cc:9657 +#: cp/typeck.cc:9658 #, gcc-internal-format msgid " in evaluation of %<%Q(%#T, %#T)%>" msgstr "" -#: cp/typeck.cc:9717 +#: cp/typeck.cc:9718 #, gcc-internal-format msgid "assigning to an array from an initializer list" msgstr "" -#: cp/typeck.cc:9744 +#: cp/typeck.cc:9745 #, gcc-internal-format msgid "incompatible types in assignment of %qT to %qT" msgstr "" -#: cp/typeck.cc:9760 +#: cp/typeck.cc:9761 #, gcc-internal-format msgid "array used as initializer" msgstr "" -#: cp/typeck.cc:9762 +#: cp/typeck.cc:9763 #, gcc-internal-format msgid "invalid array assignment" msgstr "" -#: cp/typeck.cc:9898 +#: cp/typeck.cc:9899 #, gcc-internal-format msgid " in pointer to member function conversion" msgstr "" -#: cp/typeck.cc:9912 +#: cp/typeck.cc:9913 #, gcc-internal-format msgid "pointer to member conversion via virtual base %qT" msgstr "" -#: cp/typeck.cc:9959 cp/typeck.cc:9978 +#: cp/typeck.cc:9960 cp/typeck.cc:9979 #, gcc-internal-format msgid " in pointer to member conversion" msgstr "" -#: cp/typeck.cc:10059 +#: cp/typeck.cc:10060 #, gcc-internal-format msgid "invalid conversion to type %qT from type %qT" msgstr "" -#: cp/typeck.cc:10379 +#: cp/typeck.cc:10380 msgid "cannot convert %qH to %qI in default argument" msgstr "" -#: cp/typeck.cc:10384 +#: cp/typeck.cc:10385 msgid "cannot convert %qH to %qI in argument passing" msgstr "" -#: cp/typeck.cc:10393 +#: cp/typeck.cc:10394 msgid "cannot convert %qH to %qI in initialization" msgstr "" -#: cp/typeck.cc:10397 +#: cp/typeck.cc:10398 msgid "cannot convert %qH to %qI in return" msgstr "" -#: cp/typeck.cc:10402 +#: cp/typeck.cc:10403 msgid "cannot convert %qH to %qI in assignment" msgstr "" -#: cp/typeck.cc:10438 +#: cp/typeck.cc:10439 #, gcc-internal-format msgid "parameter %qP of %qD might be a candidate for a format attribute" msgstr "" -#: cp/typeck.cc:10442 +#: cp/typeck.cc:10443 #, gcc-internal-format msgid "parameter might be a candidate for a format attribute" msgstr "" -#: cp/typeck.cc:10447 +#: cp/typeck.cc:10448 #, gcc-internal-format msgid "target of conversion might be a candidate for a format attribute" msgstr "" -#: cp/typeck.cc:10452 +#: cp/typeck.cc:10453 #, gcc-internal-format msgid "target of initialization might be a candidate for a format attribute" msgstr "" -#: cp/typeck.cc:10462 +#: cp/typeck.cc:10463 #, gcc-internal-format msgid "" "left-hand side of assignment might be a candidate for a format attribute" msgstr "" -#: cp/typeck.cc:10548 +#: cp/typeck.cc:10549 #, gcc-internal-format msgid "in passing argument %P of %qD" msgstr "" -#: cp/typeck.cc:10630 +#: cp/typeck.cc:10633 #, gcc-internal-format msgid "returning reference to temporary" msgstr "" -#: cp/typeck.cc:10633 +#: cp/typeck.cc:10636 #, gcc-internal-format msgid "returning pointer to temporary" msgstr "" -#: cp/typeck.cc:10636 +#: cp/typeck.cc:10639 #, gcc-internal-format msgid "" "returning temporary % does not extend the lifetime of the " "underlying array" msgstr "" -#: cp/typeck.cc:10672 +#: cp/typeck.cc:10675 #, gcc-internal-format msgid "reference to local variable %qD returned" msgstr "" -#: cp/typeck.cc:10676 +#: cp/typeck.cc:10679 #, gcc-internal-format msgid "" "returning local % variable %qD does not extend the " "lifetime of the underlying array" msgstr "" -#: cp/typeck.cc:10682 +#: cp/typeck.cc:10685 #, gcc-internal-format msgid "address of label %qD returned" msgstr "" -#: cp/typeck.cc:10686 +#: cp/typeck.cc:10689 #, gcc-internal-format msgid "address of local variable %qD returned" msgstr "" -#: cp/typeck.cc:10946 +#: cp/typeck.cc:10949 #, gcc-internal-format msgid "moving a temporary object prevents copy elision" msgstr "" -#: cp/typeck.cc:10961 +#: cp/typeck.cc:10964 #, gcc-internal-format msgid "moving a local object in a return statement prevents copy elision" msgstr "" -#: cp/typeck.cc:10987 cp/typeck.cc:11022 +#: cp/typeck.cc:10990 cp/typeck.cc:11025 #, gcc-internal-format msgid "redundant move in return statement" msgstr "" -#: cp/typeck.cc:11024 +#: cp/typeck.cc:11027 #, gcc-internal-format msgid "redundant move in initialization" msgstr "" -#: cp/typeck.cc:11062 +#: cp/typeck.cc:11065 #, 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.cc:11074 +#: cp/typeck.cc:11077 #, 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.cc:11077 +#: cp/typeck.cc:11080 #, gcc-internal-format msgid "returning a value from a constructor" msgstr "" #. Give a helpful error message. -#: cp/typeck.cc:11116 cp/typeck.cc:11162 +#: cp/typeck.cc:11119 cp/typeck.cc:11165 #, gcc-internal-format msgid "return-statement with no value, in function returning %qT" msgstr "" -#: cp/typeck.cc:11124 +#: cp/typeck.cc:11127 #, gcc-internal-format msgid "returning initializer list" msgstr "" -#: cp/typeck.cc:11143 +#: cp/typeck.cc:11146 #, gcc-internal-format msgid "inconsistent types %qT and %qT deduced for lambda return type" msgstr "" -#: cp/typeck.cc:11146 +#: cp/typeck.cc:11149 #, gcc-internal-format msgid "inconsistent deduction for auto return type: %qT and then %qT" msgstr "" -#: cp/typeck.cc:11181 +#: cp/typeck.cc:11184 #, gcc-internal-format msgid "return-statement with a value, in function returning %qT" msgstr "" -#: cp/typeck.cc:11210 +#: cp/typeck.cc:11213 #, gcc-internal-format msgid "" "% must not return NULL unless it is declared % (or " "%<-fcheck-new%> is in effect)" msgstr "" -#: cp/typeck.cc:11299 +#: cp/typeck.cc:11302 #, gcc-internal-format msgid "not eliding copy on return from %qD" msgstr "" -#: cp/typeck.cc:11311 +#: cp/typeck.cc:11314 #, gcc-internal-format msgid "not eliding copy on return in %qD" msgstr "" -#: cp/typeck.cc:11898 +#: cp/typeck.cc:11901 #, gcc-internal-format msgid "using rvalue as lvalue" msgstr "" @@ -69820,211 +70104,211 @@ msgstr "" msgid "invalid use of incomplete type %q#T" msgstr "" -#: cp/typeck2.cc:365 rust/backend/rust-tree.cc:3936 +#: cp/typeck2.cc:364 rust/backend/rust-tree.cc:3936 #, gcc-internal-format msgid "invalid use of member function %qD (did you forget the %<()%> ?)" msgstr "" -#: cp/typeck2.cc:370 rust/backend/rust-tree.cc:3942 +#: cp/typeck2.cc:369 rust/backend/rust-tree.cc:3942 #, gcc-internal-format msgid "invalid use of member %qD (did you forget the %<&%> ?)" msgstr "" -#: cp/typeck2.cc:380 +#: cp/typeck2.cc:379 #, gcc-internal-format msgid "invalid use of placeholder %qT" msgstr "" -#: cp/typeck2.cc:387 +#: cp/typeck2.cc:386 #, gcc-internal-format msgid "invalid use of template type parameter %qT" msgstr "" -#: cp/typeck2.cc:392 +#: cp/typeck2.cc:391 #, gcc-internal-format msgid "invalid use of template template parameter %qT" msgstr "" -#: cp/typeck2.cc:398 +#: cp/typeck2.cc:397 #, gcc-internal-format msgid "invalid use of pack expansion %qT" msgstr "" -#: cp/typeck2.cc:404 +#: cp/typeck2.cc:403 #, gcc-internal-format msgid "invalid use of dependent type %qT" msgstr "" -#: cp/typeck2.cc:411 rust/backend/rust-tree.cc:3952 +#: cp/typeck2.cc:410 rust/backend/rust-tree.cc:3952 #, gcc-internal-format msgid "invalid use of brace-enclosed initializer list" msgstr "" -#: cp/typeck2.cc:419 rust/backend/rust-tree.cc:3960 +#: cp/typeck2.cc:418 rust/backend/rust-tree.cc:3960 #, gcc-internal-format msgid "address of overloaded function with no contextual type information" msgstr "" -#: cp/typeck2.cc:423 rust/backend/rust-tree.cc:3965 +#: cp/typeck2.cc:422 rust/backend/rust-tree.cc:3965 #, gcc-internal-format msgid "overloaded function with no contextual type information" msgstr "" -#: cp/typeck2.cc:426 rust/backend/rust-tree.cc:3969 +#: cp/typeck2.cc:425 rust/backend/rust-tree.cc:3969 #, gcc-internal-format msgid "insufficient contextual information to determine type" msgstr "" -#: cp/typeck2.cc:833 +#: cp/typeck2.cc:832 #, gcc-internal-format msgid "constructor syntax used, but no constructor declared for type %qT" msgstr "" -#: cp/typeck2.cc:884 cp/typeck2.cc:901 +#: cp/typeck2.cc:883 cp/typeck2.cc:900 #, gcc-internal-format msgid "% variable %qD does not have a constant initializer" msgstr "" -#: cp/typeck2.cc:1089 +#: cp/typeck2.cc:1088 msgid "narrowing conversion of %qE from %qH to %qI is ill-formed in C++11" msgstr "" -#: cp/typeck2.cc:1101 cp/typeck2.cc:1113 +#: cp/typeck2.cc:1100 cp/typeck2.cc:1112 msgid "narrowing conversion of %qE from %qH to %qI" msgstr "" -#: cp/typeck2.cc:1104 +#: cp/typeck2.cc:1103 #, gcc-internal-format msgid "" " the expression has a constant value but is not a C++ constant-expression" msgstr "" -#: cp/typeck2.cc:1276 +#: cp/typeck2.cc:1275 #, gcc-internal-format msgid "initializer-string for %qT is too long" msgstr "" -#: cp/typeck2.cc:1339 +#: cp/typeck2.cc:1338 #, gcc-internal-format msgid "initializing a base class of type %qT results in object slicing" msgstr "" -#: cp/typeck2.cc:1341 +#: cp/typeck2.cc:1340 #, gcc-internal-format msgid "remove %<{ }%> around initializer" msgstr "" -#: cp/typeck2.cc:1361 +#: cp/typeck2.cc:1360 #, gcc-internal-format msgid "cannot initialize aggregate of type %qT with a compound literal" msgstr "" -#: cp/typeck2.cc:1844 cp/typeck2.cc:1875 +#: cp/typeck2.cc:1843 cp/typeck2.cc:1874 #, gcc-internal-format msgid "missing initializer for member %qD" msgstr "" -#: cp/typeck2.cc:1851 +#: cp/typeck2.cc:1850 #, gcc-internal-format msgid "member %qD is uninitialized reference" msgstr "" -#: cp/typeck2.cc:1858 +#: cp/typeck2.cc:1857 #, gcc-internal-format msgid "member %qD with uninitialized reference fields" msgstr "" -#: cp/typeck2.cc:1944 +#: cp/typeck2.cc:1943 #, gcc-internal-format msgid "designator order for field %qD does not match declaration order in %qT" msgstr "" -#: cp/typeck2.cc:2017 +#: cp/typeck2.cc:2016 #, gcc-internal-format msgid "no field %qD found in union being initialized" msgstr "" -#: cp/typeck2.cc:2028 +#: cp/typeck2.cc:2027 #, gcc-internal-format msgid "index value instead of field name in union initializer" msgstr "" -#: cp/typeck2.cc:2243 +#: cp/typeck2.cc:2242 #, gcc-internal-format msgid "circular pointer delegation detected" msgstr "" -#: cp/typeck2.cc:2257 +#: cp/typeck2.cc:2256 #, gcc-internal-format msgid "base operand of %<->%> has non-pointer type %qT" msgstr "" -#: cp/typeck2.cc:2287 +#: cp/typeck2.cc:2286 #, gcc-internal-format msgid "result of %()%> yields non-pointer result" msgstr "" -#: cp/typeck2.cc:2289 +#: cp/typeck2.cc:2288 #, gcc-internal-format msgid "base operand of %<->%> is not a pointer" msgstr "" -#: cp/typeck2.cc:2316 +#: cp/typeck2.cc:2315 #, gcc-internal-format msgid "%qE cannot be used as a member pointer, since it is of type %qT" msgstr "" -#: cp/typeck2.cc:2325 +#: cp/typeck2.cc:2324 #, gcc-internal-format msgid "cannot apply member pointer %qE to %qE, which is of non-class type %qT" msgstr "" -#: cp/typeck2.cc:2347 +#: cp/typeck2.cc:2346 #, gcc-internal-format msgid "pointer to member type %qT incompatible with object type %qT" msgstr "" -#: cp/typeck2.cc:2409 +#: cp/typeck2.cc:2408 #, gcc-internal-format msgid "pointer-to-member-function type %qT requires an rvalue" msgstr "" -#: cp/typeck2.cc:2420 +#: cp/typeck2.cc:2419 #, gcc-internal-format msgid "pointer-to-member-function type %qT requires an lvalue" msgstr "" -#: cp/typeck2.cc:2428 +#: cp/typeck2.cc:2427 #, gcc-internal-format msgid "pointer-to-member-function type %qT requires an lvalue before C++20" msgstr "" -#: cp/typeck2.cc:2469 +#: cp/typeck2.cc:2468 #, gcc-internal-format msgid "functional cast to array type %qT" msgstr "" -#: cp/typeck2.cc:2486 +#: cp/typeck2.cc:2485 #, gcc-internal-format msgid "% cannot be constrained" msgstr "" -#: cp/typeck2.cc:2491 +#: cp/typeck2.cc:2490 #, gcc-internal-format msgid "% only available with %<-std=c++2b%> or %<-std=gnu++2b%>" msgstr "" -#: cp/typeck2.cc:2516 +#: cp/typeck2.cc:2515 #, gcc-internal-format msgid "invalid value-initialization of reference type" msgstr "" -#: cp/typeck2.cc:2757 +#: cp/typeck2.cc:2756 #, gcc-internal-format msgid "call to function %qD which throws incomplete type %q#T" msgstr "" -#: cp/typeck2.cc:2760 +#: cp/typeck2.cc:2759 #, gcc-internal-format msgid "call to function which throws incomplete type %q#T" msgstr "" @@ -70061,7 +70345,7 @@ msgid "" "attribute" msgstr "" -#: d/d-builtins.cc:823 +#: d/d-builtins.cc:824 #, gcc-internal-format msgid "conflicting types for built-in function %qs; expected %qs" msgstr "" @@ -70071,53 +70355,53 @@ msgstr "" msgid "cannot determine the length of a %qs" msgstr "" -#: d/d-codegen.cc:1241 +#: d/d-codegen.cc:1242 #, gcc-internal-format msgid "overlapping initializer for field %qT.%qD" msgstr "" -#: d/d-codegen.cc:1436 +#: d/d-codegen.cc:1437 #, gcc-internal-format msgid "the address of %qD will never be %" msgstr "" -#: d/d-codegen.cc:2221 +#: d/d-codegen.cc:2222 #, gcc-internal-format msgid "need % to access member %qE" msgstr "" -#: d/d-codegen.cc:2369 +#: d/d-codegen.cc:2370 #, gcc-internal-format msgid "tried to perform floating-point modulo division on %qT" msgstr "" -#: d/d-codegen.cc:2420 +#: d/d-codegen.cc:2421 #, gcc-internal-format msgid "cannot get frame pointer to %qs" msgstr "" #. Should instead error on line that references `fd'. -#: d/d-codegen.cc:2446 +#: d/d-codegen.cc:2447 #, gcc-internal-format msgid "nested function missing body" msgstr "" -#: d/d-codegen.cc:2488 +#: d/d-codegen.cc:2489 #, gcc-internal-format msgid "%qs is a nested function and cannot be accessed from %qs" msgstr "" -#: d/d-codegen.cc:2797 +#: d/d-codegen.cc:2798 #, gcc-internal-format msgid "variable %qs has scoped destruction, cannot build closure" msgstr "" -#: d/d-codegen.cc:2805 +#: d/d-codegen.cc:2806 #, gcc-internal-format msgid "explicit register variable %qs cannot be used in nested function" msgstr "" -#: d/d-codegen.cc:3030 +#: d/d-codegen.cc:3031 #, gcc-internal-format msgid "forward reference to frame of %qs" msgstr "" @@ -70238,53 +70522,53 @@ msgstr "" msgid "cannot represent built-in % type in D" msgstr "" -#: d/decl.cc:375 +#: d/decl.cc:383 #, gcc-internal-format, gfc-internal-format msgid "pragma(%s) not implemented" msgstr "" -#: d/decl.cc:482 d/decl.cc:600 d/decl.cc:674 d/decl.cc:717 d/decl.cc:756 +#: d/decl.cc:490 d/decl.cc:608 d/decl.cc:682 d/decl.cc:725 d/decl.cc:764 #, gcc-internal-format msgid "had semantic errors when compiling" msgstr "" #. Hiding detected; same name, overlapping specializations. -#: d/decl.cc:573 +#: d/decl.cc:581 #, gcc-internal-format msgid "use of %qs" msgstr "" -#: d/decl.cc:575 +#: d/decl.cc:583 #, gcc-internal-format msgid "is hidden by %qs" msgstr "" -#: d/decl.cc:578 +#: d/decl.cc:586 #, gcc-internal-format msgid "use % to introduce base class overload set" msgstr "" -#: d/decl.cc:814 +#: d/decl.cc:822 #, gcc-internal-format msgid "size is too large" msgstr "" -#: d/decl.cc:1415 +#: d/decl.cc:1424 #, gcc-internal-format msgid "function requires a dual-context, which is not yet supported by GDC" msgstr "" -#: d/decl.cc:1592 +#: d/decl.cc:1601 #, gcc-internal-format msgid "explicit register variable %qs declared %" msgstr "" -#: d/decl.cc:1595 +#: d/decl.cc:1604 #, gcc-internal-format msgid "explicit register variable %qs declared thread local" msgstr "" -#: d/decl.cc:1808 +#: d/decl.cc:1817 #, gcc-internal-format msgid "" "mismatch between declaration %qE size (%wd) and its initializer size (%wd)" @@ -70310,52 +70594,52 @@ msgid "" msgstr "" #. Static arrays have already been handled by the front-end. -#: d/expr.cc:1285 +#: d/expr.cc:1286 #, gcc-internal-format msgid "unexpected type for array length: %qs" msgstr "" -#: d/expr.cc:1420 +#: d/expr.cc:1421 #, gcc-internal-format msgid "don%'t know how to delete %qs" msgstr "" -#: d/expr.cc:1444 +#: d/expr.cc:1445 #, gcc-internal-format msgid "%qs is not an associative array" msgstr "" -#: d/expr.cc:1728 d/expr.cc:2108 +#: d/expr.cc:1729 d/expr.cc:2109 #, gcc-internal-format msgid "need % to access member %qs" msgstr "" -#: d/expr.cc:1810 +#: d/expr.cc:1811 #, gcc-internal-format msgid "delegates are only for non-static functions" msgstr "" -#: d/expr.cc:1882 +#: d/expr.cc:1883 #, gcc-internal-format msgid "%qs is not a field, but a %qs" msgstr "" -#: d/expr.cc:2134 +#: d/expr.cc:2135 #, gcc-internal-format msgid "recursive reference %qs" msgstr "" -#: d/expr.cc:2153 d/expr.cc:3024 +#: d/expr.cc:2155 d/expr.cc:3027 #, gcc-internal-format msgid "non-constant expression %qs" msgstr "" -#: d/expr.cc:2991 +#: d/expr.cc:2994 #, gcc-internal-format msgid "%qs is not an expression" msgstr "" -#: d/expr.cc:2998 +#: d/expr.cc:3001 #, gcc-internal-format msgid "type %qs is not an expression" msgstr "" @@ -70532,169 +70816,169 @@ msgstr "" msgid "Invalid type in arithmetic operation at %L" msgstr "" -#: fortran/arith.cc:126 fortran/arith.cc:2076 +#: fortran/arith.cc:126 fortran/arith.cc:2130 #, gcc-internal-format msgid "gfc_arith_error(): Bad error code" msgstr "" -#: fortran/arith.cc:159 +#: fortran/arith.cc:183 #, gcc-internal-format msgid "Fix min_int calculation" msgstr "" -#: fortran/arith.cc:554 +#: fortran/arith.cc:578 #, gcc-internal-format msgid "gfc_range_check(): Bad type" msgstr "" -#: fortran/arith.cc:627 +#: fortran/arith.cc:651 #, gcc-internal-format msgid "gfc_arith_uminus(): Bad basic type" msgstr "" -#: fortran/arith.cc:664 +#: fortran/arith.cc:688 #, gcc-internal-format msgid "gfc_arith_plus(): Bad basic type" msgstr "" -#: fortran/arith.cc:701 +#: fortran/arith.cc:725 #, gcc-internal-format msgid "gfc_arith_minus(): Bad basic type" msgstr "" -#: fortran/arith.cc:739 +#: fortran/arith.cc:763 #, gcc-internal-format msgid "gfc_arith_times(): Bad basic type" msgstr "" -#: fortran/arith.cc:781 +#: fortran/arith.cc:805 #, gcc-internal-format msgid "Integer division truncated to constant %qs at %L" msgstr "" -#: fortran/arith.cc:827 +#: fortran/arith.cc:854 #, gcc-internal-format msgid "gfc_arith_divide(): Bad basic type" msgstr "" -#: fortran/arith.cc:883 +#: fortran/arith.cc:910 #, gcc-internal-format msgid "arith_power(): Bad base" msgstr "" -#: fortran/arith.cc:922 +#: fortran/arith.cc:949 #, gcc-internal-format, gfc-internal-format msgid "Negative exponent of integer has zero result at %L" msgstr "" -#: fortran/arith.cc:942 +#: fortran/arith.cc:969 #, gcc-internal-format, gfc-internal-format msgid "Result of exponentiation at %L exceeds the range of %s" msgstr "" -#: fortran/arith.cc:979 fortran/arith.cc:1004 +#: fortran/arith.cc:1006 fortran/arith.cc:1031 #, gcc-internal-format, gfc-internal-format msgid "Noninteger exponent in an initialization expression at %L" msgstr "" -#: fortran/arith.cc:990 +#: fortran/arith.cc:1017 #, gcc-internal-format, gfc-internal-format msgid "Raising a negative REAL at %L to a REAL power is prohibited" msgstr "" -#: fortran/arith.cc:1018 +#: fortran/arith.cc:1045 #, gcc-internal-format msgid "arith_power(): unknown type" msgstr "" -#: fortran/arith.cc:1089 +#: fortran/arith.cc:1116 #, gcc-internal-format msgid "compare_real(): Bad operator" msgstr "" -#: fortran/arith.cc:1129 +#: fortran/arith.cc:1156 #, gcc-internal-format msgid "gfc_compare_expr(): Bad basic type" msgstr "" -#: fortran/arith.cc:1723 +#: fortran/arith.cc:1777 #, gcc-internal-format msgid "eval_intrinsic(): Bad operator" msgstr "" -#: fortran/arith.cc:1782 +#: fortran/arith.cc:1836 #, gcc-internal-format msgid "eval_type_intrinsic0(): op NULL" msgstr "" -#: fortran/arith.cc:2044 +#: fortran/arith.cc:2098 #, gcc-internal-format, gfc-internal-format msgid "Arithmetic OK converting %s to %s at %L" msgstr "" -#: fortran/arith.cc:2048 +#: fortran/arith.cc:2102 #, gcc-internal-format msgid "" "Arithmetic overflow converting %s to %s at %L. This check can be disabled " "with the option %<-fno-range-check%>" msgstr "" -#: fortran/arith.cc:2053 +#: fortran/arith.cc:2107 #, gcc-internal-format msgid "" "Arithmetic underflow converting %s to %s at %L. This check can be disabled " "with the option %<-fno-range-check%>" msgstr "" -#: fortran/arith.cc:2058 +#: fortran/arith.cc:2112 #, gcc-internal-format msgid "" "Arithmetic NaN converting %s to %s at %L. This check can be disabled with " "the option %<-fno-range-check%>" msgstr "" -#: fortran/arith.cc:2063 +#: fortran/arith.cc:2117 #, gcc-internal-format, gfc-internal-format msgid "Division by zero converting %s to %s at %L" msgstr "" -#: fortran/arith.cc:2067 +#: fortran/arith.cc:2121 #, gcc-internal-format, gfc-internal-format msgid "Array operands are incommensurate converting %s to %s at %L" msgstr "" -#: fortran/arith.cc:2071 +#: fortran/arith.cc:2125 #, gcc-internal-format, gfc-internal-format msgid "" "Integer outside symmetric range implied by Standard Fortran converting %s to " "%s at %L" msgstr "" -#: fortran/arith.cc:2161 fortran/arith.cc:2280 fortran/arith.cc:2343 -#: fortran/arith.cc:2398 fortran/arith.cc:2461 fortran/arith.cc:2533 -#: fortran/arith.cc:2603 +#: fortran/arith.cc:2215 fortran/arith.cc:2334 fortran/arith.cc:2397 +#: fortran/arith.cc:2452 fortran/arith.cc:2515 fortran/arith.cc:2587 +#: fortran/arith.cc:2657 #, gcc-internal-format msgid "Conversion from %qs to %qs at %L" msgstr "" -#: fortran/arith.cc:2193 fortran/arith.cc:2229 fortran/arith.cc:2271 -#: fortran/arith.cc:2333 fortran/arith.cc:2388 fortran/arith.cc:2451 -#: fortran/arith.cc:2523 fortran/arith.cc:2595 +#: fortran/arith.cc:2247 fortran/arith.cc:2283 fortran/arith.cc:2325 +#: fortran/arith.cc:2387 fortran/arith.cc:2442 fortran/arith.cc:2505 +#: fortran/arith.cc:2577 fortran/arith.cc:2649 #, gcc-internal-format msgid "Change of value in conversion from %qs to %qs at %L" msgstr "" -#: fortran/arith.cc:2437 fortran/arith.cc:2509 +#: fortran/arith.cc:2491 fortran/arith.cc:2563 #, gcc-internal-format msgid "Non-zero imaginary part discarded in conversion from %qs to %qs at %L" msgstr "" -#: fortran/arith.cc:2688 +#: fortran/arith.cc:2742 #, gcc-internal-format msgid "The Hollerith constant at %L is truncated in conversion to %qs" msgstr "" -#: fortran/arith.cc:2717 +#: fortran/arith.cc:2771 #, gcc-internal-format, gfc-internal-format msgid "The character constant at %L is truncated in conversion to %s" msgstr "" @@ -70745,8 +71029,8 @@ msgid "Array reference at %C cannot have more than %d dimensions" msgstr "" #: fortran/array.cc:248 fortran/array.cc:716 fortran/check.cc:3445 -#: fortran/check.cc:5969 fortran/check.cc:6014 fortran/check.cc:6056 -#: fortran/check.cc:6083 fortran/check.cc:6346 fortran/match.cc:1854 +#: fortran/check.cc:5976 fortran/check.cc:6021 fortran/check.cc:6063 +#: fortran/check.cc:6090 fortran/check.cc:6353 fortran/match.cc:1854 #: fortran/match.cc:3316 fortran/match.cc:3658 fortran/match.cc:3854 #: fortran/simplify.cc:3026 fortran/simplify.cc:3056 fortran/simplify.cc:6409 #: fortran/simplify.cc:8450 @@ -71005,12 +71289,12 @@ msgstr "" msgid "gfc_array_dimen_size(): Bad dimension" msgstr "" -#: fortran/array.cc:2637 +#: fortran/array.cc:2644 #, gcc-internal-format msgid "gfc_array_dimen_size(): Bad EXPR_ARRAY expr" msgstr "" -#: fortran/array.cc:2785 +#: fortran/array.cc:2792 #, gcc-internal-format msgid "gfc_find_array_ref(): No ref found" msgstr "" @@ -71031,7 +71315,7 @@ msgstr "" msgid "Arguments of %qs at %L and %L cannot both be BOZ literal constants" msgstr "" -#: fortran/check.cc:123 fortran/resolve.cc:11270 +#: fortran/check.cc:123 fortran/resolve.cc:11517 #, gcc-internal-format, gfc-internal-format msgid "Invalid use of BOZ literal constant at %L" msgstr "" @@ -71087,7 +71371,7 @@ msgstr "" msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE" msgstr "" -#: fortran/check.cc:651 fortran/check.cc:7625 +#: fortran/check.cc:651 fortran/check.cc:7632 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must be a constant" msgstr "" @@ -71237,7 +71521,7 @@ msgstr "" msgid "%qs argument of %qs intrinsic at %L must be a POINTER" msgstr "" -#: fortran/check.cc:1486 fortran/check.cc:1521 fortran/check.cc:4409 +#: fortran/check.cc:1486 fortran/check.cc:1521 fortran/check.cc:4412 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L shall not be coindexed" msgstr "" @@ -71507,9 +71791,9 @@ msgid "BOZ constant at %L cannot appear in the COMPLEX intrinsic subprogram" msgstr "" #: fortran/check.cc:2496 fortran/check.cc:3126 fortran/check.cc:3209 -#: fortran/check.cc:3431 fortran/check.cc:3479 fortran/check.cc:4956 -#: fortran/check.cc:5081 fortran/check.cc:5151 fortran/check.cc:6332 -#: fortran/check.cc:6463 +#: fortran/check.cc:3431 fortran/check.cc:3479 fortran/check.cc:4959 +#: fortran/check.cc:5084 fortran/check.cc:5154 fortran/check.cc:6339 +#: fortran/check.cc:6470 #, gcc-internal-format msgid "%qs intrinsic with KIND argument at %L" msgstr "" @@ -71688,7 +71972,7 @@ msgid "" "%qs at %L" msgstr "" -#: fortran/check.cc:4153 fortran/check.cc:7545 fortran/check.cc:7560 +#: fortran/check.cc:4153 fortran/check.cc:7552 fortran/check.cc:7567 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must be INTEGER" msgstr "" @@ -71736,508 +72020,513 @@ msgstr "" msgid "Argument % of NEAREST at %L shall not be zero" msgstr "" -#: fortran/check.cc:4394 +#: fortran/check.cc:4397 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L must be a POINTER, ALLOCATABLE or " "procedure pointer" msgstr "" -#: fortran/check.cc:4402 +#: fortran/check.cc:4405 #, gcc-internal-format, gfc-internal-format msgid "NULL intrinsic with allocatable MOLD at %L" msgstr "" -#: fortran/check.cc:4481 fortran/check.cc:6410 +#: fortran/check.cc:4484 fortran/check.cc:6417 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L must provide at least as many elements " "as there are .TRUE. values in %qs (%ld/%d)" msgstr "" -#: fortran/check.cc:4542 +#: fortran/check.cc:4545 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must be of a dummy variable" msgstr "" -#: fortran/check.cc:4552 +#: fortran/check.cc:4555 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L must be of an OPTIONAL dummy variable" msgstr "" -#: fortran/check.cc:4571 +#: fortran/check.cc:4574 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must not be a subobject of %qs" msgstr "" -#: fortran/check.cc:4622 +#: fortran/check.cc:4625 #, gcc-internal-format, gfc-internal-format msgid "The argument of the RANK intrinsic at %L must be a data object" msgstr "" -#: fortran/check.cc:4730 +#: fortran/check.cc:4733 #, gcc-internal-format msgid "" "% argument of % intrinsic at %L must be an array of " "constant size" msgstr "" -#: fortran/check.cc:4740 +#: fortran/check.cc:4743 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L is empty" msgstr "" -#: fortran/check.cc:4747 +#: fortran/check.cc:4750 #, gcc-internal-format msgid "" "% argument of % intrinsic at %L has more than %d elements" msgstr "" -#: fortran/check.cc:4770 +#: fortran/check.cc:4773 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L has negative element (%d)" msgstr "" -#: fortran/check.cc:4810 +#: fortran/check.cc:4813 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L has wrong number of elements (%d/%d)" msgstr "" -#: fortran/check.cc:4828 +#: fortran/check.cc:4831 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L has out-of-range dimension (%d)" msgstr "" -#: fortran/check.cc:4837 +#: fortran/check.cc:4840 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L has invalid permutation of dimensions " "(dimension %qd duplicated)" msgstr "" -#: fortran/check.cc:4872 fortran/simplify.cc:7050 +#: fortran/check.cc:4875 fortran/simplify.cc:7050 #, gcc-internal-format, gfc-internal-format msgid "" "Without padding, there are not enough elements in the intrinsic RESHAPE " "source at %L to match the shape" msgstr "" -#: fortran/check.cc:4889 fortran/check.cc:4908 +#: fortran/check.cc:4892 fortran/check.cc:4911 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L cannot be of type %s" msgstr "" -#: fortran/check.cc:4899 fortran/check.cc:4918 +#: fortran/check.cc:4902 fortran/check.cc:4921 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must be of an extensible type" msgstr "" -#: fortran/check.cc:5017 +#: fortran/check.cc:5020 #, gcc-internal-format msgid "SELECTED_REAL_KIND with neither % nor % argument at %L" msgstr "" -#: fortran/check.cc:5048 +#: fortran/check.cc:5051 #, gcc-internal-format msgid "%qs intrinsic with RADIX argument at %L" msgstr "" -#: fortran/check.cc:5096 +#: fortran/check.cc:5099 #, gcc-internal-format msgid "" "% argument of % intrinsic at %L must not be an assumed size " "array" msgstr "" -#: fortran/check.cc:5169 fortran/check.cc:7605 +#: fortran/check.cc:5172 fortran/check.cc:7612 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L shall not be a procedure" msgstr "" -#: fortran/check.cc:5185 fortran/check.cc:5335 fortran/check.cc:7597 +#: fortran/check.cc:5188 fortran/check.cc:5334 fortran/check.cc:7604 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)" msgstr "" -#: fortran/check.cc:5196 fortran/check.cc:5347 +#: fortran/check.cc:5199 fortran/check.cc:5346 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L shall not be an assumed-size array" msgstr "" -#: fortran/check.cc:5278 +#: fortran/check.cc:5281 #, gcc-internal-format msgid "is_c_interoperable(): gfc_simplify_expr failed" msgstr "" -#: fortran/check.cc:5326 +#: fortran/check.cc:5325 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s" msgstr "" -#: fortran/check.cc:5365 +#: fortran/check.cc:5364 #, gcc-internal-format, gfc-internal-format msgid "" "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or " "TYPE(C_FUNPTR)" msgstr "" -#: fortran/check.cc:5379 +#: fortran/check.cc:5378 #, gcc-internal-format, gfc-internal-format msgid "" "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1: " "%s instead of %s" msgstr "" -#: fortran/check.cc:5403 +#: fortran/check.cc:5402 #, gcc-internal-format, gfc-internal-format msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)" msgstr "" -#: fortran/check.cc:5415 +#: fortran/check.cc:5414 #, gcc-internal-format, gfc-internal-format msgid "Argument FPTR at %L to C_F_POINTER must be a pointer" msgstr "" -#: fortran/check.cc:5422 +#: fortran/check.cc:5421 #, gcc-internal-format, gfc-internal-format msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic" msgstr "" -#: fortran/check.cc:5429 +#: fortran/check.cc:5428 #, gcc-internal-format, gfc-internal-format msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed" msgstr "" -#: fortran/check.cc:5436 +#: fortran/check.cc:5435 #, gcc-internal-format, gfc-internal-format msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR" msgstr "" -#: fortran/check.cc:5442 +#: fortran/check.cc:5441 #, gcc-internal-format, gfc-internal-format msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L" msgstr "" -#: fortran/check.cc:5461 +#: fortran/check.cc:5460 #, gcc-internal-format, gfc-internal-format msgid "" "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of " "FPTR" msgstr "" -#: fortran/check.cc:5471 +#: fortran/check.cc:5470 #, gcc-internal-format, gfc-internal-format msgid "Polymorphic FPTR at %L to C_F_POINTER" msgstr "" #: fortran/check.cc:5476 #, gcc-internal-format, gfc-internal-format -msgid "Noninteroperable array FPTR at %L to C_F_POINTER: %s" +msgid "FPTR argument to C_F_POINTER at %L is a function returning a pointer" +msgstr "" + +#: fortran/check.cc:5483 +#, gcc-internal-format, gfc-internal-format +msgid "Noninteroperable array FPTR argument to C_F_POINTER at %L: %s" msgstr "" -#: fortran/check.cc:5492 +#: fortran/check.cc:5499 #, gcc-internal-format, gfc-internal-format msgid "" "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)" msgstr "" -#: fortran/check.cc:5504 +#: fortran/check.cc:5511 #, gcc-internal-format, gfc-internal-format msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer" msgstr "" -#: fortran/check.cc:5511 +#: fortran/check.cc:5518 #, gcc-internal-format, gfc-internal-format msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed" msgstr "" -#: fortran/check.cc:5517 +#: fortran/check.cc:5524 #, gcc-internal-format, gfc-internal-format msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER" msgstr "" -#: fortran/check.cc:5531 +#: fortran/check.cc:5538 #, gcc-internal-format, gfc-internal-format msgid "Argument X at %L to C_FUNLOC shall not be coindexed" msgstr "" -#: fortran/check.cc:5543 +#: fortran/check.cc:5550 #, gcc-internal-format msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC" msgstr "" -#: fortran/check.cc:5550 +#: fortran/check.cc:5557 #, gcc-internal-format, gfc-internal-format msgid "" "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer" msgstr "" -#: fortran/check.cc:5556 +#: fortran/check.cc:5563 #, gcc-internal-format, gfc-internal-format msgid "Noninteroperable procedure at %L to C_FUNLOC" msgstr "" -#: fortran/check.cc:5570 +#: fortran/check.cc:5577 #, gcc-internal-format, gfc-internal-format msgid "Argument X at %L to C_LOC shall not be coindexed" msgstr "" -#: fortran/check.cc:5576 +#: fortran/check.cc:5583 #, gcc-internal-format, gfc-internal-format msgid "X argument at %L to C_LOC shall not be polymorphic" msgstr "" -#: fortran/check.cc:5587 +#: fortran/check.cc:5594 #, gcc-internal-format, gfc-internal-format msgid "" "Argument X at %L to C_LOC shall have either the POINTER or the TARGET " "attribute" msgstr "" -#: fortran/check.cc:5595 +#: fortran/check.cc:5602 #, gcc-internal-format, gfc-internal-format msgid "Argument X at %L to C_LOC shall be not be a zero-sized string" msgstr "" -#: fortran/check.cc:5604 +#: fortran/check.cc:5611 #, gcc-internal-format, gfc-internal-format msgid "Argument at %L to C_LOC shall not be polymorphic" msgstr "" -#: fortran/check.cc:5611 +#: fortran/check.cc:5618 #, gcc-internal-format, gfc-internal-format msgid "Noninteroperable array at %L as argument to C_LOC: %s" msgstr "" -#: fortran/check.cc:5622 +#: fortran/check.cc:5629 #, gcc-internal-format, gfc-internal-format msgid "" "Array of interoperable type at %L to C_LOC which is nonallocatable and " "neither assumed size nor explicit size" msgstr "" -#: fortran/check.cc:5627 +#: fortran/check.cc:5634 #, gcc-internal-format, gfc-internal-format msgid "Array section at %L to C_LOC" msgstr "" -#: fortran/check.cc:5655 +#: fortran/check.cc:5662 #, gcc-internal-format, gfc-internal-format msgid "non double precision REAL argument to %s intrinsic at %L" msgstr "" -#: fortran/check.cc:5671 +#: fortran/check.cc:5678 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must be less than rank %d" msgstr "" -#: fortran/check.cc:5690 +#: fortran/check.cc:5697 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index" msgstr "" -#: fortran/check.cc:5714 +#: fortran/check.cc:5721 #, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must have length at least 1" msgstr "" -#: fortran/check.cc:5978 +#: fortran/check.cc:5985 #, gcc-internal-format, gfc-internal-format msgid "%s argument to IMAGE_INDEX must be a rank one array at %L" msgstr "" -#: fortran/check.cc:5985 +#: fortran/check.cc:5992 #, gcc-internal-format, gfc-internal-format msgid "Type of %s argument of IMAGE_INDEX at %L shall be INTEGER" msgstr "" -#: fortran/check.cc:5996 +#: fortran/check.cc:6003 #, gcc-internal-format, gfc-internal-format msgid "" "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall " "be %d (corank) not %d" msgstr "" -#: fortran/check.cc:6029 +#: fortran/check.cc:6036 #, gcc-internal-format, gfc-internal-format msgid "DISTANCE= argument to NUM_IMAGES at %L" msgstr "" -#: fortran/check.cc:6042 +#: fortran/check.cc:6049 #, gcc-internal-format, gfc-internal-format msgid "FAILED= argument to NUM_IMAGES at %L" msgstr "" -#: fortran/check.cc:6066 +#: fortran/check.cc:6073 #, gcc-internal-format, gfc-internal-format msgid "" "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE" msgstr "" -#: fortran/check.cc:6092 +#: fortran/check.cc:6099 #, gcc-internal-format, gfc-internal-format msgid "" "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic " "at %L" msgstr "" -#: fortran/check.cc:6099 +#: fortran/check.cc:6106 #, gcc-internal-format, gfc-internal-format msgid "" "The DISTANCE argument may not be specified together with the COARRAY or DIM " "argument in intrinsic at %L" msgstr "" -#: fortran/check.cc:6110 +#: fortran/check.cc:6117 #, gcc-internal-format, gfc-internal-format msgid "Unexpected DIM argument with noncoarray argument at %L" msgstr "" -#: fortran/check.cc:6128 +#: fortran/check.cc:6135 #, gcc-internal-format, gfc-internal-format msgid "DISTANCE= argument to THIS_IMAGE at %L" msgstr "" -#: fortran/check.cc:6186 +#: fortran/check.cc:6193 #, gcc-internal-format msgid "" "% argument of % intrinsic at %L is an array and shall not " "have storage size 0 when % argument has size greater than 0" msgstr "" -#: fortran/check.cc:6238 +#: fortran/check.cc:6245 #, gcc-internal-format msgid "% argument of % intrinsic at %L must not be a %s" msgstr "" -#: fortran/check.cc:6257 +#: fortran/check.cc:6264 #, gcc-internal-format msgid "% argument of % intrinsic at %L must not be a %s" msgstr "" -#: fortran/check.cc:6265 +#: fortran/check.cc:6272 #, gcc-internal-format msgid "% argument of % intrinsic at %L must not be %s" msgstr "" -#: fortran/check.cc:6300 +#: fortran/check.cc:6307 msgid "" "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < " "result size %zd" msgstr "" -#: fortran/check.cc:6424 +#: fortran/check.cc:6431 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a " "scalar" msgstr "" -#: fortran/check.cc:6437 +#: fortran/check.cc:6444 #, gcc-internal-format msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape." msgstr "" -#: fortran/check.cc:6573 +#: fortran/check.cc:6580 #, gcc-internal-format, gfc-internal-format msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind" msgstr "" -#: fortran/check.cc:6585 +#: fortran/check.cc:6592 #, gcc-internal-format, gfc-internal-format msgid "" "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of " "at least four" msgstr "" -#: fortran/check.cc:6724 fortran/check.cc:6756 +#: fortran/check.cc:6731 fortran/check.cc:6763 #, gcc-internal-format msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)" msgstr "" -#: fortran/check.cc:6764 +#: fortran/check.cc:6771 #, gcc-internal-format, gfc-internal-format msgid "Too many arguments to %s at %L" msgstr "" -#: fortran/check.cc:6782 +#: fortran/check.cc:6789 #, gcc-internal-format msgid "fe_runtime_error string must be null terminated" msgstr "" -#: fortran/check.cc:6794 +#: fortran/check.cc:6801 #, gcc-internal-format, gfc-internal-format msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)" msgstr "" -#: fortran/check.cc:6836 +#: fortran/check.cc:6843 #, gcc-internal-format, gfc-internal-format msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "" -#: fortran/check.cc:6843 +#: fortran/check.cc:6850 #, gcc-internal-format, gfc-internal-format msgid "" "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer" msgstr "" -#: fortran/check.cc:6864 +#: fortran/check.cc:6871 #, gcc-internal-format, gfc-internal-format msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L" msgstr "" -#: fortran/check.cc:6874 +#: fortran/check.cc:6881 #, gcc-internal-format, gfc-internal-format msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "" -#: fortran/check.cc:6881 +#: fortran/check.cc:6888 #, gcc-internal-format, gfc-internal-format msgid "" "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default " "integer" msgstr "" -#: fortran/check.cc:6901 +#: fortran/check.cc:6908 #, gcc-internal-format, gfc-internal-format msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind" msgstr "" -#: fortran/check.cc:6911 +#: fortran/check.cc:6918 #, gcc-internal-format, gfc-internal-format msgid "" "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default " "integer" msgstr "" -#: fortran/check.cc:6926 fortran/check.cc:6933 +#: fortran/check.cc:6933 fortran/check.cc:6940 #, gcc-internal-format, gfc-internal-format msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters" msgstr "" -#: fortran/check.cc:7147 +#: fortran/check.cc:7154 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L must be of a kind not wider than the " "default kind (%d)" msgstr "" -#: fortran/check.cc:7329 +#: fortran/check.cc:7336 #, gcc-internal-format msgid "Actual argument at %L of %qs intrinsic shall be an associated pointer" msgstr "" -#: fortran/check.cc:7518 fortran/check.cc:7529 +#: fortran/check.cc:7525 fortran/check.cc:7536 #, gcc-internal-format msgid "" "%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ " "literal constant" msgstr "" -#: fortran/check.cc:7589 +#: fortran/check.cc:7596 #, gcc-internal-format, gfc-internal-format msgid "" "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, " @@ -72246,12 +72535,12 @@ msgstr "" #. Since the extension field is 8 bit wide, we can only have #. up to 255 extension levels. -#: fortran/class.cc:799 fortran/decl.cc:4076 fortran/decl.cc:10767 +#: fortran/class.cc:799 fortran/decl.cc:4076 fortran/decl.cc:10782 #, gcc-internal-format msgid "Maximum extension level reached with type %qs at %L" msgstr "" -#: fortran/class.cc:3059 fortran/class.cc:3133 +#: fortran/class.cc:3109 fortran/class.cc:3183 #, gcc-internal-format msgid "%qs of %qs is PRIVATE at %L" msgstr "" @@ -72296,12 +72585,12 @@ msgstr "" msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)" msgstr "" -#: fortran/data.cc:220 fortran/resolve.cc:5287 +#: fortran/data.cc:220 fortran/resolve.cc:5289 #, gcc-internal-format, gfc-internal-format msgid "Substring start index at %L is less than one" msgstr "" -#: fortran/data.cc:226 fortran/resolve.cc:5317 +#: fortran/data.cc:226 fortran/resolve.cc:5319 #, gcc-internal-format, gfc-internal-format msgid "Substring end index at %L exceeds the string length" msgstr "" @@ -72486,7 +72775,7 @@ msgstr "" msgid "deferred type parameter at %C" msgstr "" -#: fortran/decl.cc:1162 fortran/resolve.cc:13060 +#: fortran/decl.cc:1162 fortran/resolve.cc:13307 #, gcc-internal-format, gfc-internal-format msgid "Scalar INTEGER expression expected at %L" msgstr "" @@ -72739,7 +73028,7 @@ msgstr "" msgid "Array component of structure at %C must have explicit or deferred shape" msgstr "" -#: fortran/decl.cc:2355 fortran/symbol.cc:2270 +#: fortran/decl.cc:2355 fortran/symbol.cc:2283 #, gcc-internal-format msgid "Component %qs at %C already declared at %L" msgstr "" @@ -72851,7 +73140,7 @@ msgstr "" msgid "%qs entity cannot have an initializer at %C" msgstr "" -#: fortran/decl.cc:2915 fortran/decl.cc:8997 +#: fortran/decl.cc:2915 fortran/decl.cc:9012 #, gcc-internal-format, gfc-internal-format msgid "Duplicate array spec for Cray pointee at %C" msgstr "" @@ -72876,7 +73165,7 @@ msgstr "" msgid "Syntax error in old style initialization of %s at %C" msgstr "" -#: fortran/decl.cc:3027 fortran/decl.cc:7212 +#: fortran/decl.cc:3027 fortran/decl.cc:7227 #, gcc-internal-format, gfc-internal-format msgid "Initialization at %C isn't for a pointer variable" msgstr "" @@ -72886,7 +73175,7 @@ msgstr "" msgid "Pointer initialization at %C requires %<=>%>, not %<=%>" msgstr "" -#: fortran/decl.cc:3059 fortran/decl.cc:10941 +#: fortran/decl.cc:3059 fortran/decl.cc:10956 #, gcc-internal-format, gfc-internal-format msgid "Expected an initialization expression at %C" msgstr "" @@ -72964,7 +73253,7 @@ msgstr "" msgid "Expected scalar initialization expression at %C" msgstr "" -#: fortran/decl.cc:3362 fortran/decl.cc:4097 +#: fortran/decl.cc:3362 fortran/decl.cc:4112 #, gcc-internal-format, gfc-internal-format msgid "Kind %d not supported for type %s at %C" msgstr "" @@ -73051,302 +73340,302 @@ msgstr "" msgid "Parameterized derived type at %C is ambiguous" msgstr "" -#: fortran/decl.cc:4232 +#: fortran/decl.cc:4247 #, gcc-internal-format, gfc-internal-format msgid "BYTE type at %C" msgstr "" -#: fortran/decl.cc:4244 +#: fortran/decl.cc:4259 #, gcc-internal-format, gfc-internal-format msgid "BYTE type used at %C is not available on the target machine" msgstr "" -#: fortran/decl.cc:4306 +#: fortran/decl.cc:4321 #, gcc-internal-format, gfc-internal-format msgid "Assumed type at %C is not allowed for components" msgstr "" -#: fortran/decl.cc:4309 +#: fortran/decl.cc:4324 #, gcc-internal-format, gfc-internal-format msgid "Assumed type at %C" msgstr "" -#: fortran/decl.cc:4331 fortran/decl.cc:4365 fortran/decl.cc:4398 -#: fortran/decl.cc:4697 +#: fortran/decl.cc:4346 fortran/decl.cc:4380 fortran/decl.cc:4413 +#: fortran/decl.cc:4712 #, gcc-internal-format, gfc-internal-format msgid "TYPE with intrinsic-type-spec at %C" msgstr "" -#: fortran/decl.cc:4343 fortran/decl.cc:4371 fortran/decl.cc:4404 -#: fortran/decl.cc:4430 fortran/decl.cc:4722 fortran/decl.cc:4740 +#: fortran/decl.cc:4358 fortran/decl.cc:4386 fortran/decl.cc:4419 +#: fortran/decl.cc:4445 fortran/decl.cc:4737 fortran/decl.cc:4755 #, gcc-internal-format, gfc-internal-format msgid "Malformed type-spec at %C" msgstr "" -#: fortran/decl.cc:4394 +#: fortran/decl.cc:4409 #, gcc-internal-format, gfc-internal-format msgid "DOUBLE COMPLEX at %C" msgstr "" -#: fortran/decl.cc:4446 fortran/decl.cc:4588 fortran/decl.cc:4600 -#: fortran/decl.cc:4614 fortran/decl.cc:5099 fortran/decl.cc:5107 +#: fortran/decl.cc:4461 fortran/decl.cc:4603 fortran/decl.cc:4615 +#: fortran/decl.cc:4629 fortran/decl.cc:5114 fortran/decl.cc:5122 #, gcc-internal-format msgid "Type name %qs at %C is ambiguous" msgstr "" -#: fortran/decl.cc:4547 +#: fortran/decl.cc:4562 #, gcc-internal-format, gfc-internal-format msgid "CLASS statement at %C" msgstr "" -#: fortran/decl.cc:4629 +#: fortran/decl.cc:4644 #, gcc-internal-format msgid "" "Type name %qs at %C conflicts with previously declared entity at %L, which " "has the same name" msgstr "" -#: fortran/decl.cc:4775 +#: fortran/decl.cc:4790 #, gcc-internal-format, gfc-internal-format msgid "Duplicate IMPLICIT NONE statement at %C" msgstr "" -#: fortran/decl.cc:4784 +#: fortran/decl.cc:4799 #, gcc-internal-format, gfc-internal-format msgid "IMPLICIT NONE with spec list at %C" msgstr "" -#: fortran/decl.cc:4843 +#: fortran/decl.cc:4858 #, gcc-internal-format, gfc-internal-format msgid "Missing character range in IMPLICIT at %C" msgstr "" -#: fortran/decl.cc:4889 +#: fortran/decl.cc:4904 #, gcc-internal-format, gfc-internal-format msgid "Letters must be in alphabetic order in IMPLICIT statement at %C" msgstr "" -#: fortran/decl.cc:4942 +#: fortran/decl.cc:4957 #, gcc-internal-format, gfc-internal-format msgid "IMPLICIT statement at %C following an IMPLICIT NONE (type) statement" msgstr "" -#: fortran/decl.cc:4952 +#: fortran/decl.cc:4967 #, gcc-internal-format, gfc-internal-format msgid "Empty IMPLICIT statement at %C" msgstr "" -#: fortran/decl.cc:5058 +#: fortran/decl.cc:5073 #, gcc-internal-format, gfc-internal-format msgid "IMPORT statement at %C only permitted in an INTERFACE body" msgstr "" -#: fortran/decl.cc:5065 +#: fortran/decl.cc:5080 #, 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.cc:5070 +#: fortran/decl.cc:5085 #, gcc-internal-format, gfc-internal-format msgid "IMPORT statement at %C" msgstr "" -#: fortran/decl.cc:5084 +#: fortran/decl.cc:5099 #, gcc-internal-format, gfc-internal-format msgid "Expecting list of named entities at %C" msgstr "" -#: fortran/decl.cc:5113 +#: fortran/decl.cc:5128 #, gcc-internal-format msgid "Cannot IMPORT %qs from host scoping unit at %C - does not exist." msgstr "" -#: fortran/decl.cc:5120 +#: fortran/decl.cc:5135 #, gcc-internal-format msgid "%qs is already IMPORTed from host scoping unit at %C" msgstr "" -#: fortran/decl.cc:5161 +#: fortran/decl.cc:5176 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in IMPORT statement at %C" msgstr "" -#: fortran/decl.cc:5501 +#: fortran/decl.cc:5516 #, gcc-internal-format, gfc-internal-format msgid "Missing codimension specification at %C" msgstr "" -#: fortran/decl.cc:5503 +#: fortran/decl.cc:5518 #, gcc-internal-format, gfc-internal-format msgid "Missing dimension specification at %C" msgstr "" -#: fortran/decl.cc:5598 +#: fortran/decl.cc:5613 #, gcc-internal-format, gfc-internal-format msgid "Duplicate %s attribute at %L" msgstr "" -#: fortran/decl.cc:5615 +#: fortran/decl.cc:5630 #, gcc-internal-format msgid "%s at %L is a DEC extension, enable with %<-fdec-static%>" msgstr "" -#: fortran/decl.cc:5634 +#: fortran/decl.cc:5649 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATABLE attribute at %C in a TYPE definition" msgstr "" -#: fortran/decl.cc:5636 +#: fortran/decl.cc:5651 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATABLE attribute at %C in a STRUCTURE definition" msgstr "" -#: fortran/decl.cc:5646 +#: fortran/decl.cc:5661 #, gcc-internal-format, gfc-internal-format msgid "KIND attribute at %C in a TYPE definition" msgstr "" -#: fortran/decl.cc:5648 +#: fortran/decl.cc:5663 #, gcc-internal-format, gfc-internal-format msgid "KIND attribute at %C in a STRUCTURE definition" msgstr "" -#: fortran/decl.cc:5656 +#: fortran/decl.cc:5671 #, gcc-internal-format, gfc-internal-format msgid "Component with KIND attribute at %C must be INTEGER" msgstr "" -#: fortran/decl.cc:5665 +#: fortran/decl.cc:5680 #, gcc-internal-format, gfc-internal-format msgid "LEN attribute at %C in a TYPE definition" msgstr "" -#: fortran/decl.cc:5667 +#: fortran/decl.cc:5682 #, gcc-internal-format, gfc-internal-format msgid "LEN attribute at %C in a STRUCTURE definition" msgstr "" -#: fortran/decl.cc:5675 +#: fortran/decl.cc:5690 #, gcc-internal-format, gfc-internal-format msgid "Component with LEN attribute at %C must be INTEGER" msgstr "" -#: fortran/decl.cc:5683 +#: fortran/decl.cc:5698 #, gcc-internal-format, gfc-internal-format msgid "Attribute at %L is not allowed in a TYPE definition" msgstr "" -#: fortran/decl.cc:5685 +#: fortran/decl.cc:5700 #, gcc-internal-format, gfc-internal-format msgid "Attribute at %L is not allowed in a STRUCTURE definition" msgstr "" -#: fortran/decl.cc:5703 +#: fortran/decl.cc:5718 #, gcc-internal-format, gfc-internal-format msgid "Attribute %s at %L in a TYPE definition" msgstr "" -#: fortran/decl.cc:5713 +#: fortran/decl.cc:5728 #, 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.cc:5723 +#: fortran/decl.cc:5738 #, gcc-internal-format, gfc-internal-format msgid "Attribute at %L is not allowed outside a TYPE definition" msgstr "" -#: fortran/decl.cc:5736 +#: fortran/decl.cc:5751 #, gcc-internal-format, gfc-internal-format msgid "ASYNCHRONOUS attribute at %C" msgstr "" -#: fortran/decl.cc:5747 +#: fortran/decl.cc:5762 #, gcc-internal-format, gfc-internal-format msgid "CONTIGUOUS attribute at %C" msgstr "" -#: fortran/decl.cc:5802 fortran/decl.cc:9299 +#: fortran/decl.cc:5817 fortran/decl.cc:9314 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED at %C only allowed in specification part of a module" msgstr "" -#: fortran/decl.cc:5808 +#: fortran/decl.cc:5823 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED attribute at %C" msgstr "" -#: fortran/decl.cc:5842 +#: fortran/decl.cc:5857 #, gcc-internal-format, gfc-internal-format msgid "VALUE attribute at %C" msgstr "" -#: fortran/decl.cc:5849 +#: fortran/decl.cc:5864 #, gcc-internal-format, gfc-internal-format msgid "VOLATILE attribute at %C" msgstr "" -#: fortran/decl.cc:5856 +#: fortran/decl.cc:5871 #, gcc-internal-format msgid "match_attr_spec(): Bad attribute" msgstr "" -#: fortran/decl.cc:5897 +#: fortran/decl.cc:5912 #, gcc-internal-format, gfc-internal-format msgid "Multiple identifiers provided with single NAME= specifier at %C" msgstr "" -#: fortran/decl.cc:5995 +#: fortran/decl.cc:6010 #, gcc-internal-format msgid "" "Implicitly declared BIND(C) function %qs at %L may not be C interoperable" msgstr "" -#: fortran/decl.cc:6017 +#: fortran/decl.cc:6032 #, 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.cc:6028 +#: fortran/decl.cc:6043 #, gcc-internal-format msgid "Type declaration %qs at %L is not C interoperable but it is BIND(C)" msgstr "" -#: fortran/decl.cc:6034 +#: fortran/decl.cc:6049 #, gcc-internal-format msgid "Variable %qs at %L may not be a C interoperable kind but it is BIND(C)" msgstr "" -#: fortran/decl.cc:6046 +#: fortran/decl.cc:6061 #, 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.cc:6060 +#: fortran/decl.cc:6075 #, gcc-internal-format msgid "Variable %qs at %L cannot have both the POINTER and BIND(C) attributes" msgstr "" -#: fortran/decl.cc:6068 +#: fortran/decl.cc:6083 #, gcc-internal-format msgid "" "Variable %qs at %L cannot have both the ALLOCATABLE and BIND(C) attributes" msgstr "" -#: fortran/decl.cc:6080 +#: fortran/decl.cc:6095 #, gcc-internal-format msgid "Return type of BIND(C) function %qs at %L cannot be an array" msgstr "" -#: fortran/decl.cc:6086 +#: fortran/decl.cc:6101 #, gcc-internal-format msgid "" "Return type of BIND(C) function %qs of character type at %L must have length " @@ -73355,1050 +73644,1050 @@ msgstr "" #. Use gfc_warning_now because we won't say that the symbol fails #. just because of this. -#: fortran/decl.cc:6097 +#: fortran/decl.cc:6112 #, gcc-internal-format msgid "" "Symbol %qs at %L is marked PRIVATE but has been given the binding label %qs" msgstr "" -#: fortran/decl.cc:6171 +#: fortran/decl.cc:6186 #, gcc-internal-format, gfc-internal-format msgid "" "Need either entity or common block name for attribute specification " "statement at %C" msgstr "" -#: fortran/decl.cc:6216 +#: fortran/decl.cc:6231 #, gcc-internal-format, gfc-internal-format msgid "" "Missing entity or common block name for attribute specification statement at " "%C" msgstr "" -#: fortran/decl.cc:6223 +#: fortran/decl.cc:6238 #, gcc-internal-format msgid "Missing symbol" msgstr "" -#: fortran/decl.cc:6252 +#: fortran/decl.cc:6267 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) statement at %C" msgstr "" -#: fortran/decl.cc:6314 +#: fortran/decl.cc:6329 #, gcc-internal-format, gfc-internal-format msgid "CLASS entity at %C cannot have the PARAMETER attribute" msgstr "" -#: fortran/decl.cc:6346 +#: fortran/decl.cc:6361 #, 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.cc:6388 +#: fortran/decl.cc:6403 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in anonymous structure declaration at %C" msgstr "" -#: fortran/decl.cc:6397 +#: fortran/decl.cc:6412 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in data declaration at %C" msgstr "" -#: fortran/decl.cc:6469 +#: fortran/decl.cc:6484 #, gcc-internal-format, gfc-internal-format msgid "MODULE prefix at %C" msgstr "" -#: fortran/decl.cc:6474 +#: fortran/decl.cc:6489 #, gcc-internal-format, gfc-internal-format msgid "MODULE prefix at %C found outside of a module, submodule, or interface" msgstr "" -#: fortran/decl.cc:6525 +#: fortran/decl.cc:6540 #, gcc-internal-format, gfc-internal-format msgid "IMPURE procedure at %C" msgstr "" -#: fortran/decl.cc:6537 +#: fortran/decl.cc:6552 #, gcc-internal-format, gfc-internal-format msgid "PURE and IMPURE must not appear both at %C" msgstr "" -#: fortran/decl.cc:6583 +#: fortran/decl.cc:6598 #, gcc-internal-format, gfc-internal-format msgid "ELEMENTAL prefix in MODULE PROCEDURE interface is missing at %L" msgstr "" -#: fortran/decl.cc:6590 +#: fortran/decl.cc:6605 #, gcc-internal-format, gfc-internal-format msgid "PURE prefix in MODULE PROCEDURE interface is missing at %L" msgstr "" -#: fortran/decl.cc:6597 +#: fortran/decl.cc:6612 #, gcc-internal-format, gfc-internal-format msgid "RECURSIVE prefix in MODULE PROCEDURE interface is missing at %L" msgstr "" -#: fortran/decl.cc:6658 +#: fortran/decl.cc:6673 #, gcc-internal-format, gfc-internal-format msgid "A type parameter list is required at %C" msgstr "" -#: fortran/decl.cc:6672 fortran/primary.cc:1885 +#: fortran/decl.cc:6687 fortran/primary.cc:1885 #, gcc-internal-format, gfc-internal-format msgid "Alternate-return argument at %C" msgstr "" -#: fortran/decl.cc:6678 fortran/decl.cc:6686 +#: fortran/decl.cc:6693 fortran/decl.cc:6701 #, gcc-internal-format, gfc-internal-format msgid "A parameter name is required at %C" msgstr "" -#: fortran/decl.cc:6726 +#: fortran/decl.cc:6741 #, gcc-internal-format msgid "Name %qs at %C is the name of the procedure" msgstr "" -#: fortran/decl.cc:6739 +#: fortran/decl.cc:6754 #, gcc-internal-format, gfc-internal-format msgid "Expected parameter list in type declaration at %C" msgstr "" -#: fortran/decl.cc:6742 +#: fortran/decl.cc:6757 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk in formal argument list at %C" msgstr "" -#: fortran/decl.cc:6760 +#: fortran/decl.cc:6775 #, gcc-internal-format msgid "Duplicate name %qs in parameter list at %C" msgstr "" -#: fortran/decl.cc:6763 +#: fortran/decl.cc:6778 #, gcc-internal-format msgid "Duplicate symbol %qs in formal argument list at %C" msgstr "" -#: fortran/decl.cc:6805 +#: fortran/decl.cc:6820 #, gcc-internal-format msgid "" "MODULE PROCEDURE formal argument %qs conflicts with alternate return at %C" msgstr "" -#: fortran/decl.cc:6809 +#: fortran/decl.cc:6824 #, gcc-internal-format msgid "" "MODULE PROCEDURE formal argument is alternate return and conflicts with %qs " "in the separate declaration at %C" msgstr "" -#: fortran/decl.cc:6814 +#: fortran/decl.cc:6829 #, gcc-internal-format, gfc-internal-format msgid "Mismatch in MODULE PROCEDURE formal argument names (%s/%s) at %C" msgstr "" -#: fortran/decl.cc:6821 +#: fortran/decl.cc:6836 #, gcc-internal-format, gfc-internal-format msgid "Mismatch in number of MODULE PROCEDURE formal arguments at %C" msgstr "" -#: fortran/decl.cc:6860 +#: fortran/decl.cc:6875 #, gcc-internal-format, gfc-internal-format msgid "RESULT variable at %C must be different than function name" msgstr "" -#: fortran/decl.cc:6937 +#: fortran/decl.cc:6952 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after function declaration at %C" msgstr "" -#: fortran/decl.cc:6947 fortran/decl.cc:8085 +#: fortran/decl.cc:6962 fortran/decl.cc:8100 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) attribute at %L may not be specified for an internal procedure" msgstr "" -#: fortran/decl.cc:7151 +#: fortran/decl.cc:7166 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) attribute at %C requires an interface with BIND(C)" msgstr "" -#: fortran/decl.cc:7158 +#: fortran/decl.cc:7173 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C" msgstr "" -#: fortran/decl.cc:7164 +#: fortran/decl.cc:7179 #, gcc-internal-format, gfc-internal-format msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME" msgstr "" -#: fortran/decl.cc:7187 +#: fortran/decl.cc:7202 #, gcc-internal-format msgid "Procedure %qs at %L already has basic type of %s" msgstr "" -#: fortran/decl.cc:7233 fortran/decl.cc:7421 fortran/decl.cc:11425 +#: fortran/decl.cc:7248 fortran/decl.cc:7436 fortran/decl.cc:11440 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in PROCEDURE statement at %C" msgstr "" -#: fortran/decl.cc:7282 fortran/decl.cc:11325 +#: fortran/decl.cc:7297 fortran/decl.cc:11340 #, gcc-internal-format msgid "Expected %<::%> after binding-attributes at %C" msgstr "" -#: fortran/decl.cc:7289 +#: fortran/decl.cc:7304 #, gcc-internal-format, gfc-internal-format msgid "NOPASS or explicit interface required at %C" msgstr "" -#: fortran/decl.cc:7293 +#: fortran/decl.cc:7308 #, gcc-internal-format, gfc-internal-format msgid "Procedure pointer component at %C" msgstr "" -#: fortran/decl.cc:7365 +#: fortran/decl.cc:7380 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in procedure pointer component at %C" msgstr "" -#: fortran/decl.cc:7383 +#: fortran/decl.cc:7398 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE at %C must be in a generic interface" msgstr "" -#: fortran/decl.cc:7392 fortran/decl.cc:10065 +#: fortran/decl.cc:7407 fortran/decl.cc:10080 #, gcc-internal-format, gfc-internal-format msgid "double colon in MODULE PROCEDURE statement at %L" msgstr "" -#: fortran/decl.cc:7462 +#: fortran/decl.cc:7477 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE statement at %C" msgstr "" -#: fortran/decl.cc:7534 +#: fortran/decl.cc:7549 #, gcc-internal-format, gfc-internal-format msgid "Expected formal argument list in function definition at %C" msgstr "" -#: fortran/decl.cc:7564 fortran/decl.cc:7843 fortran/decl.cc:8052 -#: fortran/symbol.cc:1910 +#: fortran/decl.cc:7579 fortran/decl.cc:7858 fortran/decl.cc:8067 +#: fortran/symbol.cc:1923 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) attribute at %L can only be used for variables or common blocks" msgstr "" -#: fortran/decl.cc:7594 fortran/decl.cc:8110 +#: fortran/decl.cc:7609 fortran/decl.cc:8125 #, gcc-internal-format msgid "Mismatch in BIND(C) names (%qs/%qs) at %C" msgstr "" -#: fortran/decl.cc:7737 +#: fortran/decl.cc:7752 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C" msgstr "" -#: fortran/decl.cc:7746 +#: fortran/decl.cc:7761 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a PROGRAM" msgstr "" -#: fortran/decl.cc:7749 +#: fortran/decl.cc:7764 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a MODULE" msgstr "" -#: fortran/decl.cc:7752 +#: fortran/decl.cc:7767 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a SUBMODULE" msgstr "" -#: fortran/decl.cc:7755 +#: fortran/decl.cc:7770 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a BLOCK DATA" msgstr "" -#: fortran/decl.cc:7759 fortran/decl.cc:7804 +#: fortran/decl.cc:7774 fortran/decl.cc:7819 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within an INTERFACE" msgstr "" -#: fortran/decl.cc:7763 +#: fortran/decl.cc:7778 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a STRUCTURE block" msgstr "" -#: fortran/decl.cc:7767 +#: fortran/decl.cc:7782 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block" msgstr "" -#: fortran/decl.cc:7771 +#: fortran/decl.cc:7786 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within an IF-THEN block" msgstr "" -#: fortran/decl.cc:7776 +#: fortran/decl.cc:7791 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a DO block" msgstr "" -#: fortran/decl.cc:7780 +#: fortran/decl.cc:7795 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a SELECT block" msgstr "" -#: fortran/decl.cc:7784 +#: fortran/decl.cc:7799 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a FORALL block" msgstr "" -#: fortran/decl.cc:7788 +#: fortran/decl.cc:7803 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a WHERE block" msgstr "" -#: fortran/decl.cc:7792 +#: fortran/decl.cc:7807 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a contained subprogram" msgstr "" -#: fortran/decl.cc:7796 +#: fortran/decl.cc:7811 #, gcc-internal-format, gfc-internal-format msgid "Unexpected ENTRY statement at %C" msgstr "" -#: fortran/decl.cc:7817 +#: fortran/decl.cc:7832 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear in a contained procedure" msgstr "" -#: fortran/decl.cc:7868 fortran/decl.cc:8092 +#: fortran/decl.cc:7883 fortran/decl.cc:8107 #, gcc-internal-format, gfc-internal-format msgid "Missing required parentheses before BIND(C) at %C" msgstr "" -#: fortran/decl.cc:7962 +#: fortran/decl.cc:7977 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %L with BIND(C) prohibited in an elemental procedure" msgstr "" -#: fortran/decl.cc:8119 +#: fortran/decl.cc:8134 #, gcc-internal-format, gfc-internal-format msgid "" "Alternate return dummy argument cannot appear in a SUBROUTINE with the " "BIND(C) attribute at %L" msgstr "" -#: fortran/decl.cc:8182 fortran/decl.cc:8189 +#: fortran/decl.cc:8197 fortran/decl.cc:8204 #, gcc-internal-format, gfc-internal-format msgid "Invalid C identifier in NAME= specifier at %C" msgstr "" -#: fortran/decl.cc:8229 +#: fortran/decl.cc:8244 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in NAME= specifier for binding label at %C" msgstr "" -#: fortran/decl.cc:8245 +#: fortran/decl.cc:8260 #, gcc-internal-format, gfc-internal-format msgid "NAME= specifier at %C should be a constant expression" msgstr "" -#: fortran/decl.cc:8253 +#: fortran/decl.cc:8268 #, gcc-internal-format, gfc-internal-format msgid "NAME= specifier at %C should be a scalar of default character kind" msgstr "" -#: fortran/decl.cc:8272 +#: fortran/decl.cc:8287 #, gcc-internal-format, gfc-internal-format msgid "Missing closing paren for binding label at %C" msgstr "" -#: fortran/decl.cc:8278 +#: fortran/decl.cc:8293 #, gcc-internal-format, gfc-internal-format msgid "No binding name is allowed in BIND(C) at %C" msgstr "" -#: fortran/decl.cc:8284 +#: fortran/decl.cc:8299 #, gcc-internal-format, gfc-internal-format msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C" msgstr "" -#: fortran/decl.cc:8313 +#: fortran/decl.cc:8328 #, gcc-internal-format, gfc-internal-format msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C" msgstr "" -#: fortran/decl.cc:8560 +#: fortran/decl.cc:8575 #, gcc-internal-format, gfc-internal-format msgid "Unexpected END statement at %C" msgstr "" -#: fortran/decl.cc:8569 +#: fortran/decl.cc:8584 #, gcc-internal-format, gfc-internal-format msgid "END statement instead of %s statement at %L" msgstr "" #. We would have required END [something]. -#: fortran/decl.cc:8578 +#: fortran/decl.cc:8593 #, gcc-internal-format, gfc-internal-format msgid "%s statement expected at %L" msgstr "" -#: fortran/decl.cc:8589 +#: fortran/decl.cc:8604 #, gcc-internal-format, gfc-internal-format msgid "Expecting %s statement at %L" msgstr "" -#: fortran/decl.cc:8609 +#: fortran/decl.cc:8624 #, gcc-internal-format msgid "Expected block name of %qs in %s statement at %L" msgstr "" -#: fortran/decl.cc:8626 +#: fortran/decl.cc:8641 #, gcc-internal-format, gfc-internal-format msgid "Expected terminating name at %C" msgstr "" -#: fortran/decl.cc:8640 fortran/decl.cc:8648 +#: fortran/decl.cc:8655 fortran/decl.cc:8663 #, gcc-internal-format msgid "Expected label %qs for %s statement at %C" msgstr "" -#: fortran/decl.cc:8747 +#: fortran/decl.cc:8762 #, gcc-internal-format, gfc-internal-format msgid "Missing array specification at %L in DIMENSION statement" msgstr "" -#: fortran/decl.cc:8755 +#: fortran/decl.cc:8770 #, gcc-internal-format, gfc-internal-format msgid "Dimensions specified for %s at %L after its initialization" msgstr "" -#: fortran/decl.cc:8763 +#: fortran/decl.cc:8778 #, gcc-internal-format, gfc-internal-format msgid "Missing array specification at %L in CODIMENSION statement" msgstr "" -#: fortran/decl.cc:8772 +#: fortran/decl.cc:8787 #, gcc-internal-format, gfc-internal-format msgid "Array specification must be deferred at %L" msgstr "" -#: fortran/decl.cc:8877 +#: fortran/decl.cc:8892 #, gcc-internal-format, gfc-internal-format msgid "Unexpected character in variable list at %C" msgstr "" -#: fortran/decl.cc:8914 +#: fortran/decl.cc:8929 #, gcc-internal-format msgid "Expected %<(%> at %C" msgstr "" -#: fortran/decl.cc:8928 fortran/decl.cc:8968 +#: fortran/decl.cc:8943 fortran/decl.cc:8983 #, gcc-internal-format, gfc-internal-format msgid "Expected variable name at %C" msgstr "" -#: fortran/decl.cc:8944 +#: fortran/decl.cc:8959 #, gcc-internal-format, gfc-internal-format msgid "Cray pointer at %C must be an integer" msgstr "" -#: fortran/decl.cc:8948 +#: fortran/decl.cc:8963 #, gcc-internal-format, gfc-internal-format msgid "" "Cray pointer at %C has %d bytes of precision; memory addresses require %d " "bytes" msgstr "" -#: fortran/decl.cc:8954 +#: fortran/decl.cc:8969 #, gcc-internal-format, gfc-internal-format msgid "Expected \",\" at %C" msgstr "" -#: fortran/decl.cc:8993 +#: fortran/decl.cc:9008 #, gcc-internal-format msgid "Cannot set Cray pointee array spec." msgstr "" -#: fortran/decl.cc:9017 +#: fortran/decl.cc:9032 #, gcc-internal-format, gfc-internal-format msgid "Expected \")\" at %C" msgstr "" -#: fortran/decl.cc:9029 +#: fortran/decl.cc:9044 #, gcc-internal-format msgid "Expected %<,%> or end of statement at %C" msgstr "" -#: fortran/decl.cc:9055 +#: fortran/decl.cc:9070 #, gcc-internal-format, gfc-internal-format msgid "INTENT is not allowed inside of BLOCK at %C" msgstr "" -#: fortran/decl.cc:9087 +#: fortran/decl.cc:9102 #, gcc-internal-format, gfc-internal-format msgid "OPTIONAL is not allowed inside of BLOCK at %C" msgstr "" -#: fortran/decl.cc:9106 +#: fortran/decl.cc:9121 #, gcc-internal-format msgid "Cray pointer declaration at %C requires %<-fcray-pointer%> flag" msgstr "" -#: fortran/decl.cc:9145 +#: fortran/decl.cc:9160 #, gcc-internal-format, gfc-internal-format msgid "CONTIGUOUS statement at %C" msgstr "" -#: fortran/decl.cc:9243 +#: fortran/decl.cc:9258 #, gcc-internal-format, gfc-internal-format msgid "" "Access specification of the %s operator at %C has already been specified" msgstr "" -#: fortran/decl.cc:9259 +#: fortran/decl.cc:9274 #, gcc-internal-format, gfc-internal-format msgid "" "Access specification of the .%s. operator at %C has already been specified" msgstr "" -#: fortran/decl.cc:9307 +#: fortran/decl.cc:9322 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED statement at %C" msgstr "" -#: fortran/decl.cc:9341 +#: fortran/decl.cc:9356 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in PROTECTED statement at %C" msgstr "" -#: fortran/decl.cc:9368 fortran/decl.cc:9393 +#: fortran/decl.cc:9383 fortran/decl.cc:9408 #, gcc-internal-format, gfc-internal-format msgid "" "PRIVATE statement at %C is only allowed in the specification part of a module" msgstr "" -#: fortran/decl.cc:9414 fortran/decl.cc:9434 +#: fortran/decl.cc:9429 fortran/decl.cc:9449 #, gcc-internal-format, gfc-internal-format msgid "" "PUBLIC statement at %C is only allowed in the specification part of a module" msgstr "" -#: fortran/decl.cc:9456 +#: fortran/decl.cc:9471 #, gcc-internal-format, gfc-internal-format msgid "Expected variable name at %C in PARAMETER statement" msgstr "" -#: fortran/decl.cc:9463 +#: fortran/decl.cc:9478 #, gcc-internal-format, gfc-internal-format msgid "Expected = sign in PARAMETER statement at %C" msgstr "" -#: fortran/decl.cc:9469 +#: fortran/decl.cc:9484 #, gcc-internal-format, gfc-internal-format msgid "Expected expression at %C in PARAMETER statement" msgstr "" -#: fortran/decl.cc:9489 +#: fortran/decl.cc:9504 #, gcc-internal-format, gfc-internal-format msgid "Initializing already initialized variable at %C" msgstr "" #. With legacy PARAMETER statements, don't expect a terminating ')'. -#: fortran/decl.cc:9514 +#: fortran/decl.cc:9529 #, gcc-internal-format, gfc-internal-format msgid "PARAMETER without '()' at %C" msgstr "" -#: fortran/decl.cc:9530 +#: fortran/decl.cc:9545 #, gcc-internal-format, gfc-internal-format msgid "Unexpected characters in PARAMETER statement at %C" msgstr "" -#: fortran/decl.cc:9549 fortran/decl.cc:9605 +#: fortran/decl.cc:9564 fortran/decl.cc:9620 #, gcc-internal-format msgid "%s at %C is a DEC extension, enable with %<-fdec-static%>" msgstr "" -#: fortran/decl.cc:9584 +#: fortran/decl.cc:9599 #, gcc-internal-format, gfc-internal-format msgid "Expected entity-list in AUTOMATIC statement at %C" msgstr "" -#: fortran/decl.cc:9591 +#: fortran/decl.cc:9606 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in AUTOMATIC statement at %C" msgstr "" -#: fortran/decl.cc:9640 +#: fortran/decl.cc:9655 #, gcc-internal-format, gfc-internal-format msgid "Expected entity-list in STATIC statement at %C" msgstr "" -#: fortran/decl.cc:9647 +#: fortran/decl.cc:9662 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in STATIC statement at %C" msgstr "" -#: fortran/decl.cc:9666 +#: fortran/decl.cc:9681 #, gcc-internal-format, gfc-internal-format msgid "Blanket SAVE statement at %C follows previous SAVE statement" msgstr "" -#: fortran/decl.cc:9677 +#: fortran/decl.cc:9692 #, gcc-internal-format, gfc-internal-format msgid "SAVE statement at %C follows blanket SAVE statement" msgstr "" -#: fortran/decl.cc:9725 +#: fortran/decl.cc:9740 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in SAVE statement at %C" msgstr "" -#: fortran/decl.cc:9742 +#: fortran/decl.cc:9757 #, gcc-internal-format, gfc-internal-format msgid "VALUE is not allowed inside of BLOCK at %C" msgstr "" -#: fortran/decl.cc:9746 +#: fortran/decl.cc:9761 #, gcc-internal-format, gfc-internal-format msgid "VALUE statement at %C" msgstr "" -#: fortran/decl.cc:9784 +#: fortran/decl.cc:9799 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in VALUE statement at %C" msgstr "" -#: fortran/decl.cc:9796 +#: fortran/decl.cc:9811 #, gcc-internal-format, gfc-internal-format msgid "VOLATILE statement at %C" msgstr "" -#: fortran/decl.cc:9823 +#: fortran/decl.cc:9838 #, gcc-internal-format msgid "" "Specifying VOLATILE for coarray variable %qs at %C, which is use-/host-" "associated" msgstr "" -#: fortran/decl.cc:9848 +#: fortran/decl.cc:9863 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in VOLATILE statement at %C" msgstr "" -#: fortran/decl.cc:9860 +#: fortran/decl.cc:9875 #, gcc-internal-format, gfc-internal-format msgid "ASYNCHRONOUS statement at %C" msgstr "" -#: fortran/decl.cc:9904 +#: fortran/decl.cc:9919 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in ASYNCHRONOUS statement at %C" msgstr "" -#: fortran/decl.cc:9929 +#: fortran/decl.cc:9944 #, gcc-internal-format, gfc-internal-format msgid "MODULE PROCEDURE declaration at %C" msgstr "" -#: fortran/decl.cc:10040 +#: fortran/decl.cc:10055 #, gcc-internal-format, gfc-internal-format msgid "MODULE PROCEDURE at %C must be in a generic module interface" msgstr "" -#: fortran/decl.cc:10098 +#: fortran/decl.cc:10113 #, gcc-internal-format, gfc-internal-format msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE" msgstr "" -#: fortran/decl.cc:10147 +#: fortran/decl.cc:10162 #, gcc-internal-format, gfc-internal-format msgid "Ambiguous symbol in TYPE definition at %C" msgstr "" -#: fortran/decl.cc:10156 +#: fortran/decl.cc:10171 #, gcc-internal-format msgid "Symbol %qs at %C has not been previously defined" msgstr "" -#: fortran/decl.cc:10162 +#: fortran/decl.cc:10177 #, gcc-internal-format msgid "%qs in EXTENDS expression at %C is not a derived type" msgstr "" -#: fortran/decl.cc:10169 +#: fortran/decl.cc:10184 #, gcc-internal-format msgid "%qs cannot be extended at %C because it is BIND(C)" msgstr "" -#: fortran/decl.cc:10176 +#: fortran/decl.cc:10191 #, gcc-internal-format msgid "%qs cannot be extended at %C because it is a SEQUENCE type" msgstr "" -#: fortran/decl.cc:10199 +#: fortran/decl.cc:10214 #, 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.cc:10211 +#: fortran/decl.cc:10226 #, 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.cc:10232 +#: fortran/decl.cc:10247 #, gcc-internal-format, gfc-internal-format msgid "ABSTRACT type at %C" msgstr "" -#: fortran/decl.cc:10278 +#: fortran/decl.cc:10293 #, gcc-internal-format, gfc-internal-format msgid "Failed to create structure type '%s' at %C" msgstr "" -#: fortran/decl.cc:10284 +#: fortran/decl.cc:10299 #, gcc-internal-format msgid "Type definition of %qs at %C was already defined at %L" msgstr "" -#: fortran/decl.cc:10331 +#: fortran/decl.cc:10346 #, gcc-internal-format, gfc-internal-format msgid "Junk after MAP statement at %C" msgstr "" -#: fortran/decl.cc:10364 +#: fortran/decl.cc:10379 #, gcc-internal-format, gfc-internal-format msgid "Junk after UNION statement at %C" msgstr "" -#: fortran/decl.cc:10399 +#: fortran/decl.cc:10414 #, gcc-internal-format msgid "%s at %C is a DEC extension, enable with %<-fdec-structure%>" msgstr "" -#: fortran/decl.cc:10413 +#: fortran/decl.cc:10428 #, gcc-internal-format, gfc-internal-format msgid "Structure name expected in non-nested structure declaration at %C" msgstr "" -#: fortran/decl.cc:10431 +#: fortran/decl.cc:10446 #, gcc-internal-format, gfc-internal-format msgid "Junk after non-nested STRUCTURE statement at %C" msgstr "" -#: fortran/decl.cc:10438 +#: fortran/decl.cc:10453 #, gcc-internal-format msgid "Structure name %qs at %C cannot be the same as an intrinsic type" msgstr "" -#: fortran/decl.cc:10601 +#: fortran/decl.cc:10616 #, gcc-internal-format, gfc-internal-format msgid "Expected :: in TYPE definition at %C" msgstr "" -#: fortran/decl.cc:10614 +#: fortran/decl.cc:10629 #, gcc-internal-format, gfc-internal-format msgid "Mangled derived type definition at %C" msgstr "" -#: fortran/decl.cc:10643 +#: fortran/decl.cc:10658 #, gcc-internal-format msgid "Type name %qs at %C cannot be the same as an intrinsic type" msgstr "" -#: fortran/decl.cc:10654 +#: fortran/decl.cc:10669 #, gcc-internal-format msgid "Derived type name %qs at %C already has a basic type of %s" msgstr "" -#: fortran/decl.cc:10657 +#: fortran/decl.cc:10672 #, gcc-internal-format msgid "Derived type name %qs at %C already has a basic type" msgstr "" -#: fortran/decl.cc:10672 +#: fortran/decl.cc:10687 #, gcc-internal-format msgid "Dummy argument %qs at %L cannot be a derived type at %C" msgstr "" -#: fortran/decl.cc:10681 +#: fortran/decl.cc:10696 #, gcc-internal-format msgid "Derived type definition of %qs at %C has already been defined" msgstr "" -#: fortran/decl.cc:10744 +#: fortran/decl.cc:10759 #, gcc-internal-format, gfc-internal-format msgid "Garbage after PARAMETERIZED TYPE declaration at %C" msgstr "" -#: fortran/decl.cc:10827 +#: fortran/decl.cc:10842 #, gcc-internal-format, gfc-internal-format msgid "Cray Pointee at %C cannot be assumed shape array" msgstr "" -#: fortran/decl.cc:10847 +#: fortran/decl.cc:10862 #, gcc-internal-format, gfc-internal-format msgid "ENUM and ENUMERATOR at %C" msgstr "" -#: fortran/decl.cc:10879 +#: fortran/decl.cc:10894 #, gcc-internal-format, gfc-internal-format msgid "Enumerator exceeds the C integer type at %C" msgstr "" -#: fortran/decl.cc:10958 +#: fortran/decl.cc:10973 #, gcc-internal-format, gfc-internal-format msgid "ENUMERATOR %L not initialized with integer expression" msgstr "" -#: fortran/decl.cc:11006 +#: fortran/decl.cc:11021 #, gcc-internal-format, gfc-internal-format msgid "ENUM definition statement expected before %C" msgstr "" -#: fortran/decl.cc:11042 +#: fortran/decl.cc:11057 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in ENUMERATOR definition at %C" msgstr "" -#: fortran/decl.cc:11089 fortran/decl.cc:11104 +#: fortran/decl.cc:11104 fortran/decl.cc:11119 #, gcc-internal-format, gfc-internal-format msgid "Duplicate access-specifier at %C" msgstr "" -#: fortran/decl.cc:11124 +#: fortran/decl.cc:11139 #, gcc-internal-format, gfc-internal-format msgid "Binding attributes already specify passing, illegal NOPASS at %C" msgstr "" -#: fortran/decl.cc:11144 +#: fortran/decl.cc:11159 #, gcc-internal-format, gfc-internal-format msgid "Binding attributes already specify passing, illegal PASS at %C" msgstr "" -#: fortran/decl.cc:11171 +#: fortran/decl.cc:11186 #, gcc-internal-format, gfc-internal-format msgid "Duplicate POINTER attribute at %C" msgstr "" -#: fortran/decl.cc:11189 +#: fortran/decl.cc:11204 #, gcc-internal-format, gfc-internal-format msgid "Duplicate NON_OVERRIDABLE at %C" msgstr "" -#: fortran/decl.cc:11205 +#: fortran/decl.cc:11220 #, gcc-internal-format, gfc-internal-format msgid "Duplicate DEFERRED at %C" msgstr "" -#: fortran/decl.cc:11218 +#: fortran/decl.cc:11233 #, gcc-internal-format, gfc-internal-format msgid "Expected access-specifier at %C" msgstr "" -#: fortran/decl.cc:11220 +#: fortran/decl.cc:11235 #, gcc-internal-format, gfc-internal-format msgid "Expected binding attribute at %C" msgstr "" -#: fortran/decl.cc:11228 +#: fortran/decl.cc:11243 #, gcc-internal-format, gfc-internal-format msgid "NON_OVERRIDABLE and DEFERRED cannot both appear at %C" msgstr "" -#: fortran/decl.cc:11241 +#: fortran/decl.cc:11256 #, gcc-internal-format, gfc-internal-format msgid "POINTER attribute is required for procedure pointer component at %C" msgstr "" -#: fortran/decl.cc:11283 +#: fortran/decl.cc:11298 #, gcc-internal-format msgid "Interface-name expected after %<(%> at %C" msgstr "" -#: fortran/decl.cc:11289 +#: fortran/decl.cc:11304 #, gcc-internal-format msgid "%<)%> expected at %C" msgstr "" -#: fortran/decl.cc:11309 +#: fortran/decl.cc:11324 #, gcc-internal-format, gfc-internal-format msgid "Interface must be specified for DEFERRED binding at %C" msgstr "" -#: fortran/decl.cc:11314 +#: fortran/decl.cc:11329 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE(interface) at %C should be declared DEFERRED" msgstr "" -#: fortran/decl.cc:11337 +#: fortran/decl.cc:11352 #, gcc-internal-format, gfc-internal-format msgid "Expected binding name at %C" msgstr "" -#: fortran/decl.cc:11341 +#: fortran/decl.cc:11356 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE list at %C" msgstr "" -#: fortran/decl.cc:11353 +#: fortran/decl.cc:11368 #, gcc-internal-format msgid "%<=> target%> is invalid for DEFERRED binding at %C" msgstr "" -#: fortran/decl.cc:11359 +#: fortran/decl.cc:11374 #, gcc-internal-format msgid "%<::%> needed in PROCEDURE binding with explicit target at %C" msgstr "" -#: fortran/decl.cc:11369 +#: fortran/decl.cc:11384 #, gcc-internal-format msgid "Expected binding target after %<=>%> at %C" msgstr "" -#: fortran/decl.cc:11386 +#: fortran/decl.cc:11401 #, gcc-internal-format msgid "Type %qs containing DEFERRED binding at %C is not ABSTRACT" msgstr "" -#: fortran/decl.cc:11397 +#: fortran/decl.cc:11412 #, gcc-internal-format msgid "" "There is already a procedure with binding name %qs for the derived type %qs " "at %C" msgstr "" -#: fortran/decl.cc:11448 +#: fortran/decl.cc:11463 #, gcc-internal-format, gfc-internal-format msgid "GENERIC at %C must be inside a derived-type CONTAINS" msgstr "" -#: fortran/decl.cc:11468 +#: fortran/decl.cc:11483 #, gcc-internal-format msgid "Expected %<::%> at %C" msgstr "" -#: fortran/decl.cc:11480 +#: fortran/decl.cc:11495 #, gcc-internal-format, gfc-internal-format msgid "Expected generic name or operator descriptor at %C" msgstr "" -#: fortran/decl.cc:11501 +#: fortran/decl.cc:11516 #, gcc-internal-format, gfc-internal-format msgid "Malformed GENERIC statement at %C" msgstr "" -#: fortran/decl.cc:11512 +#: fortran/decl.cc:11527 #, gcc-internal-format msgid "Expected %<=>%> at %C" msgstr "" -#: fortran/decl.cc:11548 +#: fortran/decl.cc:11563 #, 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.cc:11556 +#: fortran/decl.cc:11571 #, gcc-internal-format msgid "Binding at %C must have the same access as already defined binding %qs" msgstr "" -#: fortran/decl.cc:11604 +#: fortran/decl.cc:11619 #, gcc-internal-format, gfc-internal-format msgid "Expected specific binding name at %C" msgstr "" -#: fortran/decl.cc:11614 +#: fortran/decl.cc:11629 #, gcc-internal-format msgid "%qs already defined as specific binding for the generic %qs at %C" msgstr "" -#: fortran/decl.cc:11632 +#: fortran/decl.cc:11647 #, gcc-internal-format, gfc-internal-format msgid "Junk after GENERIC binding at %C" msgstr "" -#: fortran/decl.cc:11667 +#: fortran/decl.cc:11682 #, gcc-internal-format, gfc-internal-format msgid "FINAL declaration at %C must be inside a derived type CONTAINS section" msgstr "" -#: fortran/decl.cc:11679 +#: fortran/decl.cc:11694 #, 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.cc:11701 +#: fortran/decl.cc:11716 #, gcc-internal-format, gfc-internal-format msgid "Empty FINAL at %C" msgstr "" -#: fortran/decl.cc:11708 +#: fortran/decl.cc:11723 #, gcc-internal-format, gfc-internal-format msgid "Expected module procedure name at %C" msgstr "" -#: fortran/decl.cc:11718 +#: fortran/decl.cc:11733 #, gcc-internal-format msgid "Expected %<,%> at %C" msgstr "" -#: fortran/decl.cc:11724 +#: fortran/decl.cc:11739 #, gcc-internal-format msgid "Unknown procedure name %qs at %C" msgstr "" -#: fortran/decl.cc:11737 +#: fortran/decl.cc:11752 #, gcc-internal-format msgid "%qs at %C is already defined as FINAL procedure" msgstr "" -#: fortran/decl.cc:11811 +#: fortran/decl.cc:11826 #, gcc-internal-format, gfc-internal-format msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C" msgstr "" -#: fortran/decl.cc:11857 +#: fortran/decl.cc:11872 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C" msgstr "" -#: fortran/decl.cc:11878 +#: fortran/decl.cc:11893 #, gcc-internal-format msgid "" "% directive requires a non-negative integral constant less than " "or equal to %u at %C" msgstr "" -#: fortran/decl.cc:11892 +#: fortran/decl.cc:11907 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ UNROLL directive at %C" msgstr "" -#: fortran/decl.cc:11956 +#: fortran/decl.cc:11971 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ IVDEP directive at %C" msgstr "" -#: fortran/decl.cc:11973 +#: fortran/decl.cc:11988 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ VECTOR directive at %C" msgstr "" -#: fortran/decl.cc:11990 +#: fortran/decl.cc:12005 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ NOVECTOR directive at %C" msgstr "" @@ -74449,12 +74738,12 @@ msgstr "" msgid "show_expr(): Don't know how to show expr" msgstr "" -#: fortran/dump-parse-tree.cc:3549 +#: fortran/dump-parse-tree.cc:3567 #, gcc-internal-format msgid "show_code_node(): Bad statement code" msgstr "" -#: fortran/dump-parse-tree.cc:3885 fortran/dump-parse-tree.cc:3990 +#: fortran/dump-parse-tree.cc:3903 fortran/dump-parse-tree.cc:4008 #, gcc-internal-format msgid "Cannot convert %qs to interoperable type at %L" msgstr "" @@ -74534,191 +74823,191 @@ msgstr "" msgid "Error in array constructor referenced at %L" msgstr "" -#: fortran/expr.cc:1856 fortran/primary.cc:2292 fortran/primary.cc:2436 +#: fortran/expr.cc:1861 fortran/primary.cc:2389 fortran/primary.cc:2566 #, gcc-internal-format, gfc-internal-format msgid "LEN part_ref at %C" msgstr "" -#: fortran/expr.cc:1881 fortran/primary.cc:2287 fortran/primary.cc:2451 +#: fortran/expr.cc:1886 fortran/primary.cc:2384 fortran/primary.cc:2581 #, gcc-internal-format, gfc-internal-format msgid "KIND part_ref at %C" msgstr "" -#: fortran/expr.cc:1892 +#: fortran/expr.cc:1897 #, gcc-internal-format, gfc-internal-format msgid "RE part_ref at %C" msgstr "" -#: fortran/expr.cc:1904 +#: fortran/expr.cc:1909 #, gcc-internal-format, gfc-internal-format msgid "IM part_ref at %C" msgstr "" -#: fortran/expr.cc:2554 +#: fortran/expr.cc:2559 #, gcc-internal-format, gfc-internal-format msgid "elemental function arguments at %C are not compliant" msgstr "" -#: fortran/expr.cc:2598 +#: fortran/expr.cc:2603 #, gcc-internal-format, gfc-internal-format msgid "Numeric or CHARACTER operands are required in expression at %L" msgstr "" -#: fortran/expr.cc:2623 +#: fortran/expr.cc:2628 #, gcc-internal-format, gfc-internal-format msgid "" "Concatenation operator in expression at %L must have two CHARACTER operands" msgstr "" -#: fortran/expr.cc:2630 +#: fortran/expr.cc:2635 #, gcc-internal-format, gfc-internal-format msgid "Concat operator at %L must concatenate strings of the same kind" msgstr "" -#: fortran/expr.cc:2640 +#: fortran/expr.cc:2645 #, gcc-internal-format, gfc-internal-format msgid ".NOT. operator in expression at %L must have a LOGICAL operand" msgstr "" -#: fortran/expr.cc:2656 +#: fortran/expr.cc:2661 #, gcc-internal-format, gfc-internal-format msgid "LOGICAL operands are required in expression at %L" msgstr "" -#: fortran/expr.cc:2667 +#: fortran/expr.cc:2672 #, gcc-internal-format, gfc-internal-format msgid "Only intrinsic operators can be used in expression at %L" msgstr "" -#: fortran/expr.cc:2675 +#: fortran/expr.cc:2680 #, gcc-internal-format, gfc-internal-format msgid "Numeric operands are required in expression at %L" msgstr "" -#: fortran/expr.cc:2698 +#: fortran/expr.cc:2703 #, gcc-internal-format msgid "" "Invalid initialization expression for ALLOCATABLE component %qs in structure " "constructor at %L" msgstr "" -#: fortran/expr.cc:2835 +#: fortran/expr.cc:2840 #, gcc-internal-format msgid "" "Assumed or deferred character length variable %qs in constant expression at " "%L" msgstr "" -#: fortran/expr.cc:2910 +#: fortran/expr.cc:2915 #, gcc-internal-format msgid "" "transformational intrinsic %qs at %L is not permitted in an initialization " "expression" msgstr "" -#: fortran/expr.cc:2941 +#: fortran/expr.cc:2946 #, gcc-internal-format, gfc-internal-format msgid "Evaluation of nonstandard initialization expression at %L" msgstr "" -#: fortran/expr.cc:3018 fortran/resolve.cc:2852 +#: fortran/expr.cc:3023 fortran/resolve.cc:2854 #, gcc-internal-format msgid "" "Function %qs in initialization expression at %L must be an intrinsic function" msgstr "" -#: fortran/expr.cc:3030 +#: fortran/expr.cc:3035 #, gcc-internal-format msgid "" "Intrinsic function %qs at %L is not permitted in an initialization expression" msgstr "" -#: fortran/expr.cc:3069 +#: fortran/expr.cc:3074 #, gcc-internal-format msgid "PARAMETER %qs is used at %L before its definition is complete" msgstr "" -#: fortran/expr.cc:3089 +#: fortran/expr.cc:3094 #, gcc-internal-format msgid "" "Assumed size array %qs at %L is not permitted in an initialization expression" msgstr "" -#: fortran/expr.cc:3095 +#: fortran/expr.cc:3100 #, gcc-internal-format msgid "" "Assumed shape array %qs at %L is not permitted in an initialization " "expression" msgstr "" -#: fortran/expr.cc:3104 +#: fortran/expr.cc:3109 #, gcc-internal-format msgid "" "Assumed-shape array %qs at %L is not permitted in an initialization " "expression" msgstr "" -#: fortran/expr.cc:3108 +#: fortran/expr.cc:3113 #, gcc-internal-format msgid "" "Deferred array %qs at %L is not permitted in an initialization expression" msgstr "" -#: fortran/expr.cc:3114 +#: fortran/expr.cc:3119 #, gcc-internal-format msgid "" "Array %qs at %L is a variable, which does not reduce to a constant expression" msgstr "" -#: fortran/expr.cc:3120 +#: fortran/expr.cc:3125 #, gcc-internal-format msgid "" "Assumed-rank array %qs at %L is not permitted in an initialization expression" msgstr "" -#: fortran/expr.cc:3130 +#: fortran/expr.cc:3135 #, gcc-internal-format msgid "" "Parameter %qs at %L has not been declared or is a variable, which does not " "reduce to a constant expression" msgstr "" -#: fortran/expr.cc:3184 +#: fortran/expr.cc:3189 #, gcc-internal-format msgid "check_init_expr(): Unknown expression type" msgstr "" -#: fortran/expr.cc:3319 +#: fortran/expr.cc:3324 #, gcc-internal-format msgid "Specification function %qs at %L cannot be a statement function" msgstr "" -#: fortran/expr.cc:3326 +#: fortran/expr.cc:3331 #, gcc-internal-format msgid "Specification function %qs at %L cannot be an internal function" msgstr "" -#: fortran/expr.cc:3333 +#: fortran/expr.cc:3338 #, gcc-internal-format msgid "Specification function %qs at %L must be PURE" msgstr "" -#: fortran/expr.cc:3341 +#: fortran/expr.cc:3346 #, gcc-internal-format msgid "Specification function %qs at %L cannot be RECURSIVE" msgstr "" -#: fortran/expr.cc:3488 +#: fortran/expr.cc:3493 #, gcc-internal-format msgid "Dummy argument %qs not allowed in expression at %L" msgstr "" -#: fortran/expr.cc:3496 +#: fortran/expr.cc:3501 #, gcc-internal-format msgid "Dummy argument %qs at %L cannot be OPTIONAL" msgstr "" -#: fortran/expr.cc:3503 +#: fortran/expr.cc:3508 #, gcc-internal-format msgid "Dummy argument %qs at %L cannot be INTENT(OUT)" msgstr "" @@ -74921,7 +75210,7 @@ msgstr "" msgid "Explicit interface required for component %qs at %L: %s" msgstr "" -#: fortran/expr.cc:4232 fortran/expr.cc:4247 fortran/resolve.cc:2732 +#: fortran/expr.cc:4232 fortran/expr.cc:4247 fortran/resolve.cc:2734 #, gcc-internal-format msgid "Explicit interface required for %qs at %L: %s" msgstr "" @@ -75054,7 +75343,7 @@ msgstr "" msgid "Pointer at %L in pointer assignment might outlive the pointer target" msgstr "" -#: fortran/expr.cc:4638 fortran/resolve.cc:1571 +#: fortran/expr.cc:4638 fortran/resolve.cc:1565 #, gcc-internal-format, gfc-internal-format msgid "Pointer initialization target at %L must not be ALLOCATABLE" msgstr "" @@ -75064,7 +75353,7 @@ msgstr "" msgid "Pointer initialization target at %L must have the TARGET attribute" msgstr "" -#: fortran/expr.cc:4659 fortran/resolve.cc:1577 +#: fortran/expr.cc:4659 fortran/resolve.cc:1571 #, gcc-internal-format, gfc-internal-format msgid "Pointer initialization target at %L must have the SAVE attribute" msgstr "" @@ -75094,114 +75383,114 @@ msgid "" "% or %" msgstr "" -#: fortran/expr.cc:6266 +#: fortran/expr.cc:6267 #, gcc-internal-format, gfc-internal-format msgid "" "Fortran 2008: Pointer functions in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6274 +#: fortran/expr.cc:6275 #, gcc-internal-format, gfc-internal-format msgid "Non-variable expression in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6282 +#: fortran/expr.cc:6283 #, gcc-internal-format msgid "Named constant %qs in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6293 +#: fortran/expr.cc:6294 #, gcc-internal-format msgid "%qs in variable definition context (%s) at %L is not a variable" msgstr "" -#: fortran/expr.cc:6304 +#: fortran/expr.cc:6305 #, gcc-internal-format, gfc-internal-format msgid "Non-POINTER in pointer association context (%s) at %L" msgstr "" -#: fortran/expr.cc:6313 +#: fortran/expr.cc:6314 #, gcc-internal-format, gfc-internal-format msgid "Type inaccessible in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6326 +#: fortran/expr.cc:6327 #, gcc-internal-format, gfc-internal-format msgid "LOCK_TYPE in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6339 +#: fortran/expr.cc:6340 #, gcc-internal-format, gfc-internal-format msgid "LOCK_EVENT in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6370 +#: fortran/expr.cc:6371 #, gcc-internal-format msgid "%qs parameter inquiry for %qs in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6387 +#: fortran/expr.cc:6388 #, gcc-internal-format msgid "" "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L" msgstr "" -#: fortran/expr.cc:6397 +#: fortran/expr.cc:6398 #, gcc-internal-format msgid "" "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L" msgstr "" -#: fortran/expr.cc:6410 +#: fortran/expr.cc:6411 #, gcc-internal-format msgid "" "Variable %qs is PROTECTED and cannot appear in a pointer association context " "(%s) at %L" msgstr "" -#: fortran/expr.cc:6418 +#: fortran/expr.cc:6419 #, gcc-internal-format msgid "" "Variable %qs is PROTECTED and cannot appear in a variable definition context " "(%s) at %L" msgstr "" -#: fortran/expr.cc:6433 +#: fortran/expr.cc:6434 #, gcc-internal-format msgid "" "Variable %qs cannot appear in a variable definition context (%s) at %L in " "PURE procedure" msgstr "" -#: fortran/expr.cc:6493 fortran/expr.cc:6514 +#: fortran/expr.cc:6494 fortran/expr.cc:6515 #, gcc-internal-format msgid "" "%qs at %L associated to vector-indexed target cannot be used in a variable " "definition context (%s)" msgstr "" -#: fortran/expr.cc:6498 +#: fortran/expr.cc:6499 #, gcc-internal-format msgid "" "%qs at %L associated to expression cannot be used in a variable definition " "context (%s)" msgstr "" -#: fortran/expr.cc:6507 +#: fortran/expr.cc:6508 #, gcc-internal-format msgid "" "%qs at %L associated to pointer function target being used in a variable " "definition context (%s)" msgstr "" -#: fortran/expr.cc:6526 +#: fortran/expr.cc:6527 #, gcc-internal-format msgid "" "Associate-name %qs cannot appear in a variable definition context (%s) at %L " "because its target at %L cannot, either" msgstr "" -#: fortran/expr.cc:6568 +#: fortran/expr.cc:6569 #, gcc-internal-format, gfc-internal-format msgid "" "Elements with the same value at %L and %L in vector subscript in a variable " @@ -75224,7 +75513,7 @@ msgid "Illegal id in copy_walk_reduction_arg" msgstr "" #: fortran/frontend-passes.cc:870 fortran/trans-array.cc:1514 -#: fortran/trans-array.cc:7156 fortran/trans-array.cc:8807 +#: fortran/trans-array.cc:7194 fortran/trans-array.cc:8856 #: fortran/trans-intrinsic.cc:8475 #, gcc-internal-format, gfc-internal-format msgid "Creating array temporary at %L" @@ -75321,7 +75610,7 @@ msgid "" "INTENT(INOUT) argument to function %qs" msgstr "" -#: fortran/frontend-passes.cc:3481 fortran/trans-expr.cc:1900 +#: fortran/frontend-passes.cc:3481 fortran/trans-expr.cc:1924 #, gcc-internal-format, gfc-internal-format msgid "Code for reallocating the allocatable array at %L will be added" msgstr "" @@ -75336,7 +75625,7 @@ msgstr "" msgid "Interchanging loops at %L" msgstr "" -#: fortran/frontend-passes.cc:5852 +#: fortran/frontend-passes.cc:5855 #, gcc-internal-format, gfc-internal-format msgid "%s between %L and %L" msgstr "" @@ -75460,12 +75749,12 @@ msgstr "" msgid "Second argument of defined assignment at %L must be INTENT(IN)" msgstr "" -#: fortran/interface.cc:1035 fortran/resolve.cc:17916 +#: fortran/interface.cc:1035 fortran/resolve.cc:18209 #, gcc-internal-format, gfc-internal-format msgid "First argument of operator interface at %L must be INTENT(IN)" msgstr "" -#: fortran/interface.cc:1042 fortran/resolve.cc:17934 +#: fortran/interface.cc:1042 fortran/resolve.cc:18227 #, gcc-internal-format, gfc-internal-format msgid "Second argument of operator interface at %L must be INTENT(IN)" msgstr "" @@ -75495,157 +75784,158 @@ msgid "" "gfc_dep_compare_expr" msgstr "" -#: fortran/interface.cc:1932 +#: fortran/interface.cc:1940 #, gcc-internal-format msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?" msgstr "" -#: fortran/interface.cc:1937 +#: fortran/interface.cc:1945 #, gcc-internal-format msgid "Procedure %qs in %s at %L has no explicit interface" msgstr "" -#: fortran/interface.cc:1941 +#: fortran/interface.cc:1949 #, gcc-internal-format msgid "" "Procedure %qs in %s at %L is neither function nor subroutine; did you mean " "%qs?" msgstr "" -#: fortran/interface.cc:1945 +#: fortran/interface.cc:1953 #, gcc-internal-format msgid "Procedure %qs in %s at %L is neither function nor subroutine" msgstr "" -#: fortran/interface.cc:1957 +#: fortran/interface.cc:1965 #, gcc-internal-format, gfc-internal-format msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs" msgstr "" -#: fortran/interface.cc:1961 +#: fortran/interface.cc:1969 #, gcc-internal-format, gfc-internal-format msgid "" "In %s at %L procedures must be all FUNCTIONs as the generic name is also the " "name of a derived type" msgstr "" -#: fortran/interface.cc:1969 +#: fortran/interface.cc:1977 #, gcc-internal-format msgid "Internal procedure %qs in %s at %L" msgstr "" -#: fortran/interface.cc:2026 fortran/interface.cc:2031 +#: fortran/interface.cc:2034 fortran/interface.cc:2039 #, gcc-internal-format msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L" msgstr "" -#: fortran/interface.cc:2036 +#: fortran/interface.cc:2044 #, gcc-internal-format msgid "Although not referenced, %qs has ambiguous interfaces at %L" msgstr "" -#: fortran/interface.cc:2074 +#: fortran/interface.cc:2082 #, gcc-internal-format msgid "%qs at %L is not a module procedure" msgstr "" -#: fortran/interface.cc:2279 +#: fortran/interface.cc:2287 #, gcc-internal-format msgid "" "The assumed-rank array at %L requires that the dummy argument %qs has " "assumed-rank" msgstr "" -#: fortran/interface.cc:2282 +#: fortran/interface.cc:2290 #, gcc-internal-format msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)" msgstr "" -#: fortran/interface.cc:2285 +#: fortran/interface.cc:2293 #, gcc-internal-format msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)" msgstr "" -#: fortran/interface.cc:2288 +#: fortran/interface.cc:2296 #, gcc-internal-format msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)" msgstr "" -#: fortran/interface.cc:2300 +#: fortran/interface.cc:2308 #, gcc-internal-format, gfc-internal-format msgid "" "Rank mismatch between actual argument at %L and actual argument at %L " "(scalar and rank-%d)" msgstr "" -#: fortran/interface.cc:2304 +#: fortran/interface.cc:2312 #, gcc-internal-format, gfc-internal-format msgid "" "Rank mismatch between actual argument at %L and actual argument at %L (rank-" "%d and scalar)" msgstr "" -#: fortran/interface.cc:2308 +#: fortran/interface.cc:2316 #, gcc-internal-format, gfc-internal-format msgid "" "Rank mismatch between actual argument at %L and actual argument at %L (rank-" "%d and rank-%d)" msgstr "" -#: fortran/interface.cc:2431 +#: fortran/interface.cc:2439 #, gcc-internal-format, gfc-internal-format msgid "Invalid procedure argument at %L" msgstr "" -#: fortran/interface.cc:2439 fortran/interface.cc:2466 +#: fortran/interface.cc:2448 fortran/interface.cc:2457 +#: fortran/interface.cc:2484 #, gcc-internal-format msgid "Interface mismatch in dummy procedure %qs at %L: %s" msgstr "" -#: fortran/interface.cc:2477 +#: fortran/interface.cc:2495 #, gcc-internal-format msgid "" "Actual argument to contiguous pointer dummy %qs at %L must be simply " "contiguous" msgstr "" -#: fortran/interface.cc:2500 +#: fortran/interface.cc:2518 #, gcc-internal-format, gfc-internal-format msgid "" "Type mismatch between actual argument at %L and actual argument at %L (%s/" "%s)." msgstr "" -#: fortran/interface.cc:2510 +#: fortran/interface.cc:2528 #, gcc-internal-format msgid "Type mismatch in argument %qs at %L; passed %s to %s" msgstr "" -#: fortran/interface.cc:2520 +#: fortran/interface.cc:2538 #, gcc-internal-format msgid "" "Assumed-type actual argument at %L requires that dummy argument %qs is of " "assumed type" msgstr "" -#: fortran/interface.cc:2534 +#: fortran/interface.cc:2552 #, gcc-internal-format msgid "" "Assumed-type actual argument at %L corresponding to assumed-rank dummy " "argument %qs must be assumed-shape or assumed-rank" msgstr "" -#: fortran/interface.cc:2551 +#: fortran/interface.cc:2569 #, gcc-internal-format msgid "Actual argument to %qs at %L must be polymorphic" msgstr "" -#: fortran/interface.cc:2561 +#: fortran/interface.cc:2579 #, gcc-internal-format msgid "Actual argument to %qs at %L must have the same declared type" msgstr "" -#: fortran/interface.cc:2576 +#: fortran/interface.cc:2594 #, gcc-internal-format msgid "" "Actual argument to %qs at %L must be unlimited polymorphic since the formal " @@ -75653,38 +75943,38 @@ msgid "" "12.5.2.5]" msgstr "" -#: fortran/interface.cc:2592 +#: fortran/interface.cc:2610 #, gcc-internal-format msgid "Actual argument to %qs at %L must be a coarray" msgstr "" -#: fortran/interface.cc:2614 +#: fortran/interface.cc:2632 #, gcc-internal-format msgid "Corank mismatch in argument %qs at %L (%d and %d)" msgstr "" -#: fortran/interface.cc:2632 +#: fortran/interface.cc:2650 #, gcc-internal-format msgid "" "Actual argument to %qs at %L must be simply contiguous or an element of such " "an array" msgstr "" -#: fortran/interface.cc:2647 +#: fortran/interface.cc:2665 #, gcc-internal-format msgid "" "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or " "has a LOCK_TYPE component" msgstr "" -#: fortran/interface.cc:2662 +#: fortran/interface.cc:2680 #, gcc-internal-format msgid "" "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or " "has a EVENT_TYPE component" msgstr "" -#: fortran/interface.cc:2681 +#: fortran/interface.cc:2699 #, gcc-internal-format msgid "" "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array " @@ -75692,230 +75982,244 @@ msgid "" "contiguous and both are ASYNCHRONOUS or VOLATILE" msgstr "" -#: fortran/interface.cc:2694 +#: fortran/interface.cc:2712 #, gcc-internal-format msgid "" "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument " "%qs" msgstr "" -#: fortran/interface.cc:2701 +#: fortran/interface.cc:2719 #, gcc-internal-format msgid "" "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which " "is invalid if the allocation status is modified" msgstr "" -#: fortran/interface.cc:2787 +#: fortran/interface.cc:2805 #, gcc-internal-format msgid "Polymorphic scalar passed to array dummy argument %qs at %L" msgstr "" -#: fortran/interface.cc:2798 +#: fortran/interface.cc:2816 #, gcc-internal-format, gfc-internal-format msgid "" "Element of assumed-shape or pointer array as actual argument at %L cannot " "correspond to actual argument at %L" msgstr "" -#: fortran/interface.cc:2803 +#: fortran/interface.cc:2821 #, gcc-internal-format msgid "" "Element of assumed-shape or pointer array passed to array dummy argument %qs " "at %L" msgstr "" -#: fortran/interface.cc:2816 +#: fortran/interface.cc:2834 #, gcc-internal-format msgid "" "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual " "argument with array dummy argument %qs at %L" msgstr "" -#: fortran/interface.cc:2824 +#: fortran/interface.cc:2842 #, gcc-internal-format msgid "" "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs " "at %L" msgstr "" -#: fortran/interface.cc:3212 +#: fortran/interface.cc:3230 #, gcc-internal-format msgid "Keyword argument %qs at %L is invalid in a statement function" msgstr "" -#: fortran/interface.cc:3235 +#: fortran/interface.cc:3253 #, gcc-internal-format msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?" msgstr "" -#: fortran/interface.cc:3239 +#: fortran/interface.cc:3257 #, gcc-internal-format msgid "Keyword argument %qs at %L is not in the procedure" msgstr "" -#: fortran/interface.cc:3248 +#: fortran/interface.cc:3266 #, gcc-internal-format msgid "" "Keyword argument %qs at %L is already associated with another actual argument" msgstr "" -#: fortran/interface.cc:3258 +#: fortran/interface.cc:3276 #, gcc-internal-format, gfc-internal-format msgid "More actual than formal arguments in procedure call at %L" msgstr "" -#: fortran/interface.cc:3271 +#: fortran/interface.cc:3289 #, gcc-internal-format, gfc-internal-format msgid "Missing alternate return specifier in subroutine call at %L" msgstr "" -#: fortran/interface.cc:3285 +#: fortran/interface.cc:3303 #, gcc-internal-format, gfc-internal-format msgid "Unexpected alternate return specifier in subroutine call at %L" msgstr "" -#: fortran/interface.cc:3314 +#: fortran/interface.cc:3326 +#, gcc-internal-format +msgid "" +"Intrinsic % without % argument at %L passed to assumed-rank " +"dummy %qs" +msgstr "" + +#: fortran/interface.cc:3340 +#, gcc-internal-format +msgid "" +"Intrinsic % without % argument at %L passed to assumed-" +"length dummy %qs" +msgstr "" + +#: fortran/interface.cc:3362 #, gcc-internal-format msgid "Unexpected NULL() intrinsic at %L to dummy %qs" msgstr "" -#: fortran/interface.cc:3317 +#: fortran/interface.cc:3365 #, gcc-internal-format msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs" msgstr "" -#: fortran/interface.cc:3343 +#: fortran/interface.cc:3391 #, gcc-internal-format, gfc-internal-format msgid "" "Actual argument at %L to assumed-type dummy has type parameters or is of " "derived type with type-bound or FINAL procedures" msgstr "" -#: fortran/interface.cc:3355 +#: fortran/interface.cc:3403 #, gcc-internal-format, gfc-internal-format msgid "" "Unlimited polymorphic actual argument at %L is not matched with either an " "unlimited polymorphic or assumed type dummy argument" msgstr "" -#: fortran/interface.cc:3379 +#: fortran/interface.cc:3427 #, gcc-internal-format msgid "" "Character length mismatch (%ld/%ld) between actual argument and pointer or " "allocatable dummy argument %qs at %L" msgstr "" -#: fortran/interface.cc:3386 +#: fortran/interface.cc:3434 #, gcc-internal-format msgid "" "Character length mismatch (%ld/%ld) between actual argument and assumed-" "shape dummy argument %qs at %L" msgstr "" -#: fortran/interface.cc:3401 +#: fortran/interface.cc:3449 #, gcc-internal-format msgid "" "Actual argument at %L to allocatable or pointer dummy argument %qs must have " "a deferred length type parameter if and only if the dummy has one" msgstr "" -#: fortran/interface.cc:3420 +#: fortran/interface.cc:3472 #, gcc-internal-format msgid "" "Character length of actual argument shorter than of dummy argument %qs (%lu/" "%lu) at %L" msgstr "" -#: fortran/interface.cc:3430 fortran/interface.cc:3435 +#: fortran/interface.cc:3482 fortran/interface.cc:3487 #, gcc-internal-format msgid "" "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) " "at %L" msgstr "" -#: fortran/interface.cc:3456 +#: fortran/interface.cc:3508 #, gcc-internal-format msgid "Expected a procedure pointer for argument %qs at %L" msgstr "" -#: fortran/interface.cc:3473 +#: fortran/interface.cc:3525 #, gcc-internal-format msgid "Expected a procedure for argument %qs at %L" msgstr "" -#: fortran/interface.cc:3538 +#: fortran/interface.cc:3590 #, gcc-internal-format msgid "Actual argument for %qs cannot be an assumed-size array at %L" msgstr "" -#: fortran/interface.cc:3567 +#: fortran/interface.cc:3619 #, gcc-internal-format msgid "" "Actual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of " "unknown size" msgstr "" -#: fortran/interface.cc:3582 +#: fortran/interface.cc:3634 #, gcc-internal-format msgid "Actual argument for %qs at %L must be a pointer" msgstr "" -#: fortran/interface.cc:3591 +#: fortran/interface.cc:3643 #, gcc-internal-format msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs" msgstr "" -#: fortran/interface.cc:3600 +#: fortran/interface.cc:3652 #, gcc-internal-format msgid "" "Actual argument for %qs at %L must be a pointer or a valid target for the " "dummy pointer in a pointer assignment statement" msgstr "" -#: fortran/interface.cc:3614 +#: fortran/interface.cc:3666 #, gcc-internal-format msgid "Coindexed actual argument at %L to pointer dummy %qs" msgstr "" -#: fortran/interface.cc:3628 +#: fortran/interface.cc:3680 #, gcc-internal-format msgid "" "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)" msgstr "" -#: fortran/interface.cc:3643 +#: fortran/interface.cc:3695 #, gcc-internal-format msgid "" "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy " "%qs has neither ASYNCHRONOUS nor VOLATILE" msgstr "" -#: fortran/interface.cc:3658 +#: fortran/interface.cc:3710 #, gcc-internal-format msgid "" "Coindexed actual argument at %L with allocatable ultimate component to dummy " "%qs requires either VALUE or INTENT(IN)" msgstr "" -#: fortran/interface.cc:3671 +#: fortran/interface.cc:3723 #, gcc-internal-format msgid "Actual CLASS array argument for %qs must be a full array at %L" msgstr "" -#: fortran/interface.cc:3682 +#: fortran/interface.cc:3734 #, gcc-internal-format msgid "Actual argument for %qs must be ALLOCATABLE at %L" msgstr "" -#: fortran/interface.cc:3693 +#: fortran/interface.cc:3745 #, gcc-internal-format msgid "" "Actual argument for %qs at %L is a function result and the dummy argument is " "ALLOCATABLE" msgstr "" -#: fortran/interface.cc:3731 +#: fortran/interface.cc:3783 #, gcc-internal-format msgid "" "Array-section actual argument with vector subscripts at %L is incompatible " @@ -75923,341 +76227,341 @@ msgid "" "dummy argument %qs" msgstr "" -#: fortran/interface.cc:3751 +#: fortran/interface.cc:3803 #, gcc-internal-format msgid "" "Assumed-shape actual argument at %L is incompatible with the non-assumed-" "shape dummy argument %qs due to VOLATILE attribute" msgstr "" -#: fortran/interface.cc:3769 +#: fortran/interface.cc:3821 #, gcc-internal-format msgid "" "Array-section actual argument at %L is incompatible with the non-assumed-" "shape dummy argument %qs due to VOLATILE attribute" msgstr "" -#: fortran/interface.cc:3790 +#: fortran/interface.cc:3842 #, gcc-internal-format msgid "" "Pointer-array actual argument at %L requires an assumed-shape or pointer-" "array dummy argument %qs due to VOLATILE attribute" msgstr "" -#: fortran/interface.cc:3818 +#: fortran/interface.cc:3870 #, gcc-internal-format, gfc-internal-format msgid "Missing alternate return spec in subroutine call at %L" msgstr "" -#: fortran/interface.cc:3831 +#: fortran/interface.cc:3883 #, gcc-internal-format msgid "Missing actual argument for argument %qs at %L" msgstr "" -#: fortran/interface.cc:3959 +#: fortran/interface.cc:4011 #, gcc-internal-format msgid "compare_actual_expr(): Bad component code" msgstr "" -#: fortran/interface.cc:3988 +#: fortran/interface.cc:4040 #, gcc-internal-format msgid "check_some_aliasing(): List mismatch" msgstr "" -#: fortran/interface.cc:4014 +#: fortran/interface.cc:4066 #, gcc-internal-format msgid "check_some_aliasing(): corrupted data" msgstr "" -#: fortran/interface.cc:4024 +#: fortran/interface.cc:4076 #, gcc-internal-format msgid "" "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) " "argument %qs at %L" msgstr "" -#: fortran/interface.cc:4054 +#: fortran/interface.cc:4106 #, gcc-internal-format msgid "check_intents(): List mismatch" msgstr "" -#: fortran/interface.cc:4074 +#: fortran/interface.cc:4126 #, gcc-internal-format, gfc-internal-format msgid "" "Procedure argument at %L is local to a PURE procedure and has the POINTER " "attribute" msgstr "" -#: fortran/interface.cc:4086 +#: fortran/interface.cc:4138 #, gcc-internal-format, gfc-internal-format msgid "" "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) " "argument" msgstr "" -#: fortran/interface.cc:4096 +#: fortran/interface.cc:4148 #, gcc-internal-format, gfc-internal-format msgid "" "Coindexed actual argument at %L in PURE procedure is passed to a POINTER " "dummy argument" msgstr "" -#: fortran/interface.cc:4107 +#: fortran/interface.cc:4159 #, gcc-internal-format msgid "" "Coindexed polymorphic actual argument at %L is passed polymorphic dummy " "argument %qs" msgstr "" -#: fortran/interface.cc:4149 +#: fortran/interface.cc:4201 #, gcc-internal-format msgid "" "Procedure %qs called at %L is not explicitly declared; did you mean %qs?" msgstr "" -#: fortran/interface.cc:4153 fortran/interface.cc:4163 +#: fortran/interface.cc:4205 fortran/interface.cc:4215 #, gcc-internal-format msgid "Procedure %qs called at %L is not explicitly declared" msgstr "" -#: fortran/interface.cc:4159 +#: fortran/interface.cc:4211 #, gcc-internal-format msgid "Procedure %qs called with an implicit interface at %L" msgstr "" -#: fortran/interface.cc:4172 +#: fortran/interface.cc:4224 #, gcc-internal-format msgid "" "The pointer object %qs at %L must have an explicit function interface or be " "declared as array" msgstr "" -#: fortran/interface.cc:4180 +#: fortran/interface.cc:4232 #, gcc-internal-format msgid "" "The allocatable object %qs at %L must have an explicit function interface or " "be declared as array" msgstr "" -#: fortran/interface.cc:4188 +#: fortran/interface.cc:4240 #, gcc-internal-format msgid "Allocatable function %qs at %L must have an explicit function interface" msgstr "" -#: fortran/interface.cc:4205 +#: fortran/interface.cc:4257 #, gcc-internal-format, gfc-internal-format msgid "Explicit interface required for polymorphic argument at %L" msgstr "" -#: fortran/interface.cc:4214 +#: fortran/interface.cc:4266 #, gcc-internal-format msgid "Keyword argument requires explicit interface for procedure %qs at %L" msgstr "" -#: fortran/interface.cc:4223 +#: fortran/interface.cc:4275 #, gcc-internal-format, gfc-internal-format msgid "Assumed-type argument %s at %L requires an explicit interface" msgstr "" -#: fortran/interface.cc:4238 +#: fortran/interface.cc:4290 #, gcc-internal-format msgid "" "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an " "explicit interface for procedure %qs" msgstr "" -#: fortran/interface.cc:4253 +#: fortran/interface.cc:4305 #, gcc-internal-format msgid "" "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an " "explicit interface for procedure %qs" msgstr "" -#: fortran/interface.cc:4263 +#: fortran/interface.cc:4315 #, gcc-internal-format, gfc-internal-format msgid "MOLD argument to NULL required at %L" msgstr "" -#: fortran/interface.cc:4271 +#: fortran/interface.cc:4323 #, gcc-internal-format, gfc-internal-format msgid "" "Passing intrinsic NULL as actual argument at %L requires an explicit " "interface" msgstr "" -#: fortran/interface.cc:4281 +#: fortran/interface.cc:4333 #, gcc-internal-format, gfc-internal-format msgid "Assumed-rank argument requires an explicit interface at %L" msgstr "" -#: fortran/interface.cc:4323 +#: fortran/interface.cc:4375 #, gcc-internal-format msgid "Procedure pointer component %qs called with an implicit interface at %L" msgstr "" -#: fortran/interface.cc:4334 +#: fortran/interface.cc:4386 #, gcc-internal-format msgid "" "Keyword argument requires explicit interface for procedure pointer component " "%qs at %L" msgstr "" -#: fortran/interface.cc:4419 +#: fortran/interface.cc:4471 #, gcc-internal-format, gfc-internal-format msgid "" "MOLD= required in NULL() argument at %L: Ambiguity between specific " "functions %s and %s" msgstr "" -#: fortran/interface.cc:4489 +#: fortran/interface.cc:4541 #, gcc-internal-format msgid "Unable to find symbol %qs" msgstr "" -#: fortran/interface.cc:4873 +#: fortran/interface.cc:4925 #, gcc-internal-format msgid "Entity %qs at %L is already present in the interface" msgstr "" -#: fortran/interface.cc:4990 +#: fortran/interface.cc:5042 #, gcc-internal-format msgid "gfc_add_interface(): Bad interface type" msgstr "" -#: fortran/interface.cc:5084 +#: fortran/interface.cc:5136 #, gcc-internal-format msgid "Cannot overwrite GENERIC %qs at %L" msgstr "" -#: fortran/interface.cc:5096 +#: fortran/interface.cc:5148 #, gcc-internal-format msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE" msgstr "" -#: fortran/interface.cc:5104 +#: fortran/interface.cc:5156 #, gcc-internal-format msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding" msgstr "" -#: fortran/interface.cc:5112 +#: fortran/interface.cc:5164 #, gcc-internal-format msgid "%qs at %L overrides a PURE procedure and must also be PURE" msgstr "" -#: fortran/interface.cc:5121 +#: fortran/interface.cc:5173 #, gcc-internal-format msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL" msgstr "" -#: fortran/interface.cc:5127 +#: fortran/interface.cc:5179 #, gcc-internal-format msgid "" "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, " "either" msgstr "" -#: fortran/interface.cc:5136 +#: fortran/interface.cc:5188 #, gcc-internal-format msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE" msgstr "" -#: fortran/interface.cc:5147 +#: fortran/interface.cc:5199 #, gcc-internal-format msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION" msgstr "" -#: fortran/interface.cc:5155 +#: fortran/interface.cc:5207 #, gcc-internal-format msgid "Result mismatch for the overriding procedure %qs at %L: %s" msgstr "" -#: fortran/interface.cc:5166 +#: fortran/interface.cc:5218 #, gcc-internal-format msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE" msgstr "" -#: fortran/interface.cc:5196 +#: fortran/interface.cc:5248 #, gcc-internal-format msgid "" "Dummy argument %qs of %qs at %L should be named %qs as to match the " "corresponding argument of the overridden procedure" msgstr "" -#: fortran/interface.cc:5207 +#: fortran/interface.cc:5259 #, gcc-internal-format msgid "Argument mismatch for the overriding procedure %qs at %L: %s" msgstr "" -#: fortran/interface.cc:5216 +#: fortran/interface.cc:5268 #, gcc-internal-format msgid "" "%qs at %L must have the same number of formal arguments as the overridden " "procedure" msgstr "" -#: fortran/interface.cc:5225 +#: fortran/interface.cc:5277 #, gcc-internal-format msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS" msgstr "" -#: fortran/interface.cc:5236 +#: fortran/interface.cc:5288 #, gcc-internal-format msgid "%qs at %L overrides a binding with PASS and must also be PASS" msgstr "" -#: fortran/interface.cc:5243 +#: fortran/interface.cc:5295 #, gcc-internal-format msgid "" "Passed-object dummy argument of %qs at %L must be at the same position as " "the passed-object dummy argument of the overridden procedure" msgstr "" -#: fortran/interface.cc:5264 +#: fortran/interface.cc:5316 #, gcc-internal-format, gfc-internal-format msgid "DTIO dummy argument at %L must be of type %s" msgstr "" -#: fortran/interface.cc:5271 +#: fortran/interface.cc:5323 #, gcc-internal-format, gfc-internal-format msgid "DTIO dummy argument at %L must be of KIND = %d" msgstr "" -#: fortran/interface.cc:5278 +#: fortran/interface.cc:5330 #, gcc-internal-format, gfc-internal-format msgid "DTIO dummy argument at %L must be a scalar" msgstr "" -#: fortran/interface.cc:5282 +#: fortran/interface.cc:5334 #, gcc-internal-format, gfc-internal-format msgid "DTIO dummy argument at %L must be an ASSUMED SHAPE ARRAY" msgstr "" -#: fortran/interface.cc:5286 +#: fortran/interface.cc:5338 #, gcc-internal-format, gfc-internal-format msgid "DTIO character argument at %L must have assumed length" msgstr "" -#: fortran/interface.cc:5290 +#: fortran/interface.cc:5342 #, gcc-internal-format, gfc-internal-format msgid "DTIO dummy argument at %L must have INTENT %s" msgstr "" -#: fortran/interface.cc:5348 fortran/interface.cc:5394 +#: fortran/interface.cc:5400 fortran/interface.cc:5446 #, gcc-internal-format, gfc-internal-format msgid "Alternate return at %L is not permitted in a DTIO procedure" msgstr "" -#: fortran/interface.cc:5360 +#: fortran/interface.cc:5412 #, gcc-internal-format msgid "DTIO procedure %qs at %L must be a subroutine" msgstr "" -#: fortran/interface.cc:5372 +#: fortran/interface.cc:5424 #, gcc-internal-format msgid "Too few dummy arguments in DTIO procedure %qs at %L" msgstr "" -#: fortran/interface.cc:5379 +#: fortran/interface.cc:5431 #, gcc-internal-format msgid "Too many dummy arguments in DTIO procedure %qs at %L" msgstr "" @@ -76462,7 +76766,7 @@ msgstr "" #. Use of -fdec-char-conversions allows assignment of character data #. to non-character variables. This not permitted for nonconstant #. strings. -#: fortran/intrinsic.cc:5413 fortran/resolve.cc:11245 +#: fortran/intrinsic.cc:5413 fortran/resolve.cc:11492 #, gcc-internal-format, gfc-internal-format msgid "Cannot convert %s to %s at %L" msgstr "" @@ -77030,7 +77334,7 @@ msgid "" "defined input/output procedure" msgstr "" -#: fortran/io.cc:3422 fortran/resolve.cc:15736 +#: fortran/io.cc:3422 fortran/resolve.cc:16037 #, gcc-internal-format msgid "" "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER " @@ -77613,7 +77917,7 @@ msgstr "" msgid "STOP code at %L must be default integer KIND=%d" msgstr "" -#: fortran/match.cc:3210 fortran/resolve.cc:12384 +#: fortran/match.cc:3210 fortran/resolve.cc:12631 #, gcc-internal-format, gfc-internal-format msgid "QUIET specifier at %L must be a scalar LOGICAL" msgstr "" @@ -78146,104 +78450,104 @@ msgstr "" msgid "Expected block name %qs of SELECT construct at %C" msgstr "" -#: fortran/match.cc:6635 +#: fortran/match.cc:6654 #, gcc-internal-format, gfc-internal-format msgid "SELECT TYPE at %C cannot appear in this scope" msgstr "" -#: fortran/match.cc:6663 +#: fortran/match.cc:6682 #, gcc-internal-format, gfc-internal-format msgid "parse error in SELECT TYPE statement at %C" msgstr "" -#: fortran/match.cc:6688 +#: fortran/match.cc:6707 #, gcc-internal-format, gfc-internal-format msgid "" "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>" msgstr "" -#: fortran/match.cc:6855 +#: fortran/match.cc:6874 #, gcc-internal-format, gfc-internal-format msgid "SELECT RANK statement at %C" msgstr "" -#: fortran/match.cc:6896 fortran/match.cc:6950 +#: fortran/match.cc:6915 fortran/match.cc:6969 #, gcc-internal-format, gfc-internal-format msgid "The SELECT RANK selector at %C must be an assumed rank variable" msgstr "" -#: fortran/match.cc:6960 +#: fortran/match.cc:6979 #, gcc-internal-format, gfc-internal-format msgid "parse error in SELECT RANK statement at %C" msgstr "" -#: fortran/match.cc:6996 +#: fortran/match.cc:7015 #, gcc-internal-format, gfc-internal-format msgid "Unexpected CASE statement at %C" msgstr "" -#: fortran/match.cc:7048 +#: fortran/match.cc:7067 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in CASE specification at %C" msgstr "" -#: fortran/match.cc:7066 +#: fortran/match.cc:7085 #, gcc-internal-format, gfc-internal-format msgid "Unexpected TYPE IS statement at %C" msgstr "" -#: fortran/match.cc:7098 +#: fortran/match.cc:7117 #, 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.cc:7109 +#: fortran/match.cc:7128 #, gcc-internal-format, gfc-internal-format msgid "" "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED" msgstr "" -#: fortran/match.cc:7120 +#: fortran/match.cc:7139 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in TYPE IS specification at %C" msgstr "" -#: fortran/match.cc:7196 +#: fortran/match.cc:7215 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in CLASS IS specification at %C" msgstr "" -#: fortran/match.cc:7216 +#: fortran/match.cc:7235 #, gcc-internal-format, gfc-internal-format msgid "Unexpected RANK statement at %C" msgstr "" -#: fortran/match.cc:7262 +#: fortran/match.cc:7281 #, gcc-internal-format, gfc-internal-format msgid "" "The SELECT RANK CASE expression at %C must be a scalar, integer constant" msgstr "" -#: fortran/match.cc:7271 +#: fortran/match.cc:7290 #, gcc-internal-format, gfc-internal-format msgid "" "The value of the SELECT RANK CASE expression at %C must not be less than " "zero or greater than %d" msgstr "" -#: fortran/match.cc:7298 +#: fortran/match.cc:7317 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in RANK specification at %C" msgstr "" -#: fortran/match.cc:7420 +#: fortran/match.cc:7439 #, gcc-internal-format, gfc-internal-format msgid "ELSEWHERE statement at %C not enclosed in WHERE block" msgstr "" -#: fortran/match.cc:7458 +#: fortran/match.cc:7477 #, gcc-internal-format msgid "Label %qs at %C doesn't match WHERE label %qs" msgstr "" @@ -78296,1157 +78600,1157 @@ msgstr "" msgid "gfc_code2string(): Bad code" msgstr "" -#: fortran/module.cc:238 +#: fortran/module.cc:243 #, gcc-internal-format msgid "free_pi_tree(): Unresolved fixup" msgstr "" -#: fortran/module.cc:455 +#: fortran/module.cc:460 #, gcc-internal-format msgid "associate_integer_pointer(): Already associated" msgstr "" -#: fortran/module.cc:539 +#: fortran/module.cc:544 #, gcc-internal-format, gfc-internal-format msgid "module nature in USE statement at %C" msgstr "" -#: fortran/module.cc:551 +#: fortran/module.cc:556 #, gcc-internal-format, gfc-internal-format msgid "" "Module nature in USE statement at %C shall be either INTRINSIC or " "NON_INTRINSIC" msgstr "" -#: fortran/module.cc:564 +#: fortran/module.cc:569 #, gcc-internal-format, gfc-internal-format msgid "\"::\" was expected after module nature at %C but was not found" msgstr "" -#: fortran/module.cc:574 +#: fortran/module.cc:579 #, gcc-internal-format, gfc-internal-format msgid "\"USE :: module\" at %C" msgstr "" -#: fortran/module.cc:633 +#: fortran/module.cc:638 #, gcc-internal-format, gfc-internal-format msgid "Missing generic specification in USE statement at %C" msgstr "" -#: fortran/module.cc:644 +#: fortran/module.cc:649 #, gcc-internal-format, gfc-internal-format msgid "Renaming operators in USE statements at %C" msgstr "" -#: fortran/module.cc:688 +#: fortran/module.cc:693 #, gcc-internal-format msgid "Symbol %qs at %L conflicts with the rename symbol at %L" msgstr "" -#: fortran/module.cc:691 +#: fortran/module.cc:696 #, gcc-internal-format msgid "Symbol %qs at %L conflicts with the symbol at %L" msgstr "" -#: fortran/module.cc:699 +#: fortran/module.cc:704 #, gcc-internal-format msgid "The name %qs at %C has already been used as an external module name" msgstr "" -#: fortran/module.cc:762 +#: fortran/module.cc:767 #, gcc-internal-format, gfc-internal-format msgid "SUBMODULE declaration at %C" msgstr "" -#: fortran/module.cc:767 +#: fortran/module.cc:772 #, gcc-internal-format, gfc-internal-format msgid "SUBMODULE declaration at %C cannot appear within another scoping unit" msgstr "" -#: fortran/module.cc:842 +#: fortran/module.cc:847 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in SUBMODULE statement at %C" msgstr "" -#: fortran/module.cc:1202 +#: fortran/module.cc:1207 #, gcc-internal-format msgid "Reading module %qs at line %d column %d: %s" msgstr "" -#: fortran/module.cc:1206 +#: fortran/module.cc:1211 #, gcc-internal-format msgid "Writing module %qs at line %d column %d: %s" msgstr "" -#: fortran/module.cc:1210 +#: fortran/module.cc:1215 #, gcc-internal-format msgid "Module %qs at line %d column %d: %s" msgstr "" -#: fortran/module.cc:1643 +#: fortran/module.cc:1648 #, gcc-internal-format msgid "require_atom(): bad atom type required" msgstr "" -#: fortran/module.cc:1692 +#: fortran/module.cc:1697 #, gcc-internal-format, gfc-internal-format msgid "Error writing modules file: %s" msgstr "" -#: fortran/module.cc:1742 +#: fortran/module.cc:1747 #, gcc-internal-format msgid "write_atom(): Trying to write dab atom" msgstr "" -#: fortran/module.cc:1963 +#: fortran/module.cc:1968 #, gcc-internal-format msgid "unquote_string(): got bad string" msgstr "" -#: fortran/module.cc:2979 +#: fortran/module.cc:2984 #, gcc-internal-format msgid "mio_array_ref(): Unknown array ref" msgstr "" -#: fortran/module.cc:5114 +#: fortran/module.cc:5119 #, gcc-internal-format, gfc-internal-format msgid "Ambiguous !$OMP DECLARE REDUCTION from module %s at %L" msgstr "" -#: fortran/module.cc:5117 +#: fortran/module.cc:5122 #, gcc-internal-format, gfc-internal-format msgid "Previous !$OMP DECLARE REDUCTION from module %s at %L" msgstr "" -#: fortran/module.cc:5311 +#: fortran/module.cc:5316 #, gcc-internal-format msgid "" "%qs of module %qs, imported at %C, is also the name of the current program " "unit" msgstr "" -#: fortran/module.cc:5448 +#: fortran/module.cc:5453 #, gcc-internal-format msgid "" "Mismatch in components of derived type %qs from %qs at %C: expecting %qs, " "but got %qs" msgstr "" -#: fortran/module.cc:5727 +#: fortran/module.cc:5732 #, gcc-internal-format msgid "Symbol %qs referenced at %L not found in module %qs" msgstr "" -#: fortran/module.cc:5734 +#: fortran/module.cc:5739 #, gcc-internal-format msgid "User operator %qs referenced at %L not found in module %qs" msgstr "" -#: fortran/module.cc:5739 +#: fortran/module.cc:5744 #, gcc-internal-format msgid "Intrinsic operator %qs referenced at %L not found in module %qs" msgstr "" -#: fortran/module.cc:5975 +#: fortran/module.cc:5980 #, gcc-internal-format msgid "write_symbol(): bad module symbol %qs" msgstr "" -#: fortran/module.cc:6319 +#: fortran/module.cc:6324 #, gcc-internal-format msgid "write_symtree(): Symbol not written" msgstr "" -#: fortran/module.cc:6509 +#: fortran/module.cc:6514 #, gcc-internal-format msgid "Cannot open module file %qs for writing at %C: %s" msgstr "" -#: fortran/module.cc:6530 +#: fortran/module.cc:6535 #, gcc-internal-format msgid "Error writing module file %qs for writing: %s" msgstr "" -#: fortran/module.cc:6541 +#: fortran/module.cc:6546 #, gcc-internal-format msgid "Cannot delete module file %qs: %s" msgstr "" -#: fortran/module.cc:6544 +#: fortran/module.cc:6549 #, gcc-internal-format msgid "Cannot rename module file %qs to %qs: %s" msgstr "" -#: fortran/module.cc:6550 +#: fortran/module.cc:6555 #, gcc-internal-format msgid "Cannot delete temporary module file %qs: %s" msgstr "" -#: fortran/module.cc:6607 +#: fortran/module.cc:6612 #, gcc-internal-format msgid "Symbol %qs at %C already declared" msgstr "" -#: fortran/module.cc:6678 +#: fortran/module.cc:6683 #, gcc-internal-format, gfc-internal-format msgid "import_iso_c_binding_module(): Unable to create symbol for %s" msgstr "" -#: fortran/module.cc:6786 fortran/module.cc:7130 +#: fortran/module.cc:6791 fortran/module.cc:7135 #, gcc-internal-format msgid "The symbol %qs, referenced at %L, is not in the selected standard" msgstr "" -#: fortran/module.cc:6914 +#: fortran/module.cc:6919 #, gcc-internal-format msgid "Symbol %qs referenced at %L not found in intrinsic module ISO_C_BINDING" msgstr "" -#: fortran/module.cc:6935 fortran/module.cc:6968 fortran/module.cc:7010 +#: fortran/module.cc:6940 fortran/module.cc:6973 fortran/module.cc:7015 #, gcc-internal-format msgid "Symbol %qs already declared" msgstr "" -#: fortran/module.cc:7115 +#: fortran/module.cc:7120 #, gcc-internal-format msgid "" "Use of intrinsic module %qs at %C conflicts with non-intrinsic module name " "used previously" msgstr "" -#: fortran/module.cc:7137 +#: fortran/module.cc:7142 #, gcc-internal-format msgid "" "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module " "ISO_FORTRAN_ENV at %L is incompatible with option %qs" msgstr "" -#: fortran/module.cc:7205 +#: fortran/module.cc:7210 #, gcc-internal-format, gfc-internal-format msgid "" "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module " "ISO_FORTRAN_ENV at %C is incompatible with option %s" msgstr "" -#: fortran/module.cc:7259 +#: fortran/module.cc:7264 #, gcc-internal-format msgid "" "Symbol %qs referenced at %L not found in intrinsic module ISO_FORTRAN_ENV" msgstr "" -#: fortran/module.cc:7285 +#: fortran/module.cc:7290 #, gcc-internal-format, gfc-internal-format msgid "USE statement at %C has no ONLY qualifier" msgstr "" -#: fortran/module.cc:7314 +#: fortran/module.cc:7319 #, gcc-internal-format, gfc-internal-format msgid "ISO_FORTRAN_ENV intrinsic module at %C" msgstr "" -#: fortran/module.cc:7326 +#: fortran/module.cc:7331 #, gcc-internal-format, gfc-internal-format msgid "ISO_C_BINDING module at %C" msgstr "" -#: fortran/module.cc:7339 +#: fortran/module.cc:7344 #, gcc-internal-format msgid "Cannot find an intrinsic module named %qs at %C" msgstr "" -#: fortran/module.cc:7345 +#: fortran/module.cc:7350 #, gcc-internal-format, gfc-internal-format msgid "IEEE_FEATURES module at %C" msgstr "" -#: fortran/module.cc:7351 +#: fortran/module.cc:7356 #, gcc-internal-format, gfc-internal-format msgid "IEEE_EXCEPTIONS module at %C" msgstr "" -#: fortran/module.cc:7357 +#: fortran/module.cc:7362 #, gcc-internal-format, gfc-internal-format msgid "IEEE_ARITHMETIC module at %C" msgstr "" -#: fortran/module.cc:7367 +#: fortran/module.cc:7372 #, gcc-internal-format msgid "Cannot open module file %qs for reading at %C: %s" msgstr "" -#: fortran/module.cc:7370 +#: fortran/module.cc:7375 #, gcc-internal-format msgid "" "Module file %qs has not been generated, either because the module does not " "contain a MODULE PROCEDURE or there is an error in the module." msgstr "" -#: fortran/module.cc:7381 +#: fortran/module.cc:7386 #, gcc-internal-format msgid "" "Use of non-intrinsic module %qs at %C conflicts with intrinsic module name " "used previously" msgstr "" -#: fortran/module.cc:7404 +#: fortran/module.cc:7409 #, gcc-internal-format msgid "File %qs opened at %C is not a GNU Fortran module file" msgstr "" -#: fortran/module.cc:7412 +#: fortran/module.cc:7417 #, gcc-internal-format msgid "" "Cannot read module file %qs opened at %C, because it was created by a " "different version of GNU Fortran" msgstr "" -#: fortran/module.cc:7429 +#: fortran/module.cc:7434 #, gcc-internal-format msgid "Cannot USE a submodule that is currently built" msgstr "" -#: fortran/module.cc:7431 +#: fortran/module.cc:7436 #, gcc-internal-format msgid "Cannot USE a module that is currently built" msgstr "" -#: fortran/openmp.cc:150 fortran/openmp.cc:7083 +#: fortran/openmp.cc:150 fortran/openmp.cc:7113 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk at %C" msgstr "" -#: fortran/openmp.cc:428 +#: fortran/openmp.cc:429 #, gcc-internal-format msgid "% at %C not permitted in this clause" msgstr "" -#: fortran/openmp.cc:473 +#: fortran/openmp.cc:474 #, gcc-internal-format, gfc-internal-format msgid "List item shall not be coindexed at %C" msgstr "" -#: fortran/openmp.cc:492 +#: fortran/openmp.cc:493 #, gcc-internal-format msgid "" "%qs at %L is part of the common block % and may only be specificed " "implicitly via the named common block" msgstr "" -#: fortran/openmp.cc:517 fortran/openmp.cc:618 fortran/openmp.cc:948 -#: fortran/openmp.cc:6135 +#: fortran/openmp.cc:518 fortran/openmp.cc:619 fortran/openmp.cc:949 +#: fortran/openmp.cc:6165 #, gcc-internal-format, gfc-internal-format msgid "COMMON block /%s/ not found at %C" msgstr "" -#: fortran/openmp.cc:556 fortran/openmp.cc:646 +#: fortran/openmp.cc:557 fortran/openmp.cc:647 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in OpenMP variable list at %C" msgstr "" -#: fortran/openmp.cc:673 +#: fortran/openmp.cc:674 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in OpenMP detach clause at %C" msgstr "" -#: fortran/openmp.cc:702 +#: fortran/openmp.cc:703 #, gcc-internal-format msgid "" "% used with dependence-type other than OUT or INOUT at %C" msgstr "" -#: fortran/openmp.cc:755 +#: fortran/openmp.cc:756 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in OpenMP SINK dependence-type list at %C" msgstr "" -#: fortran/openmp.cc:817 +#: fortran/openmp.cc:818 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in OpenACC expression list at %C" msgstr "" -#: fortran/openmp.cc:884 +#: fortran/openmp.cc:885 #, gcc-internal-format msgid "Unexpected OpenACC parallelism." msgstr "" -#: fortran/openmp.cc:916 +#: fortran/openmp.cc:917 #, gcc-internal-format, gfc-internal-format msgid "Variable at %C is an element of a COMMON block" msgstr "" -#: fortran/openmp.cc:976 +#: fortran/openmp.cc:977 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$ACC DECLARE at %C" msgstr "" -#: fortran/openmp.cc:986 +#: fortran/openmp.cc:987 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$ACC DECLARE list at %C" msgstr "" -#: fortran/openmp.cc:1241 +#: fortran/openmp.cc:1242 #, gcc-internal-format, gfc-internal-format msgid "Expected INTEGER type at %L" msgstr "" -#: fortran/openmp.cc:1255 +#: fortran/openmp.cc:1256 #, gcc-internal-format, gfc-internal-format msgid "Expected identifier at %C" msgstr "" -#: fortran/openmp.cc:1260 +#: fortran/openmp.cc:1261 #, gcc-internal-format msgid "Same identifier %qs specified again at %C" msgstr "" -#: fortran/openmp.cc:1287 +#: fortran/openmp.cc:1288 #, gcc-internal-format, gfc-internal-format msgid "Expected range-specification at %C" msgstr "" -#: fortran/openmp.cc:1397 +#: fortran/openmp.cc:1398 #, gcc-internal-format, gfc-internal-format msgid "Comma expected at %C" msgstr "" -#: fortran/openmp.cc:1509 +#: fortran/openmp.cc:1510 #, gcc-internal-format, gfc-internal-format msgid "!$OMP DECLARE REDUCTION %s not found at %L" msgstr "" -#: fortran/openmp.cc:1569 +#: fortran/openmp.cc:1570 #, gcc-internal-format, gfc-internal-format msgid "Unknown directive at %L" msgstr "" -#: fortran/openmp.cc:1571 +#: fortran/openmp.cc:1572 #, gcc-internal-format, gfc-internal-format msgid "Invalid combined or composite directive at %L" msgstr "" -#: fortran/openmp.cc:1579 +#: fortran/openmp.cc:1580 #, gcc-internal-format msgid "" "Invalid %qs directive at %L in %s clause: declarative, informational and " "meta directives not permitted" msgstr "" -#: fortran/openmp.cc:1611 +#: fortran/openmp.cc:1612 #, gcc-internal-format msgid "Expected %<,%> or %<)%> at %C" msgstr "" -#: fortran/openmp.cc:1637 fortran/openmp.cc:1647 +#: fortran/openmp.cc:1638 fortran/openmp.cc:1648 #, gcc-internal-format msgid "" "%qs directive mentioned multiple times in %s clause in %s directive at %L" msgstr "" -#: fortran/openmp.cc:1655 +#: fortran/openmp.cc:1656 #, gcc-internal-format msgid "" "%qs directive mentioned both times in ABSENT and CONTAINS clauses in %s " "directive at %L" msgstr "" -#: fortran/openmp.cc:1745 +#: fortran/openmp.cc:1746 #, gcc-internal-format, gfc-internal-format msgid "Duplicate %s modifier at %L in USES_ALLOCATORS clause" msgstr "" -#: fortran/openmp.cc:1779 +#: fortran/openmp.cc:1780 #, gcc-internal-format msgid "Unexpected %<(%> at %C" msgstr "" -#: fortran/openmp.cc:1826 +#: fortran/openmp.cc:1827 #, gcc-internal-format msgid "Duplicated %qs clause at %L" msgstr "" -#: fortran/openmp.cc:1833 +#: fortran/openmp.cc:1834 #, gcc-internal-format msgid "Expected %<(%> after %qs at %C" msgstr "" -#: fortran/openmp.cc:1840 +#: fortran/openmp.cc:1841 #, gcc-internal-format msgid "Invalid expression after %<%s(%> at %C" msgstr "" -#: fortran/openmp.cc:1901 +#: fortran/openmp.cc:1902 #, gcc-internal-format, gfc-internal-format msgid "Clause expected at %C after trailing comma" msgstr "" -#: fortran/openmp.cc:1971 fortran/openmp.cc:2007 fortran/openmp.cc:2403 -#: fortran/openmp.cc:2428 +#: fortran/openmp.cc:1972 fortran/openmp.cc:2008 fortran/openmp.cc:2418 +#: fortran/openmp.cc:2443 #, gcc-internal-format msgid "Expected %<:%> at %C" msgstr "" -#: fortran/openmp.cc:2031 +#: fortran/openmp.cc:2032 #, gcc-internal-format, gfc-internal-format msgid "Expected variable list at %C" msgstr "" -#: fortran/openmp.cc:2055 +#: fortran/openmp.cc:2056 #, gcc-internal-format, gfc-internal-format msgid "Expected COMPILATION or EXECUTION in AT clause at %C" msgstr "" -#: fortran/openmp.cc:2116 +#: fortran/openmp.cc:2117 #, gcc-internal-format, gfc-internal-format msgid "Expected TEAMS, PARALLEL or THREAD as binding in BIND at %C" msgstr "" -#: fortran/openmp.cc:2147 +#: fortran/openmp.cc:2148 #, gcc-internal-format, gfc-internal-format msgid "COLLAPSE clause argument not constant positive integer at %C" msgstr "" -#: fortran/openmp.cc:2236 +#: fortran/openmp.cc:2251 #, gcc-internal-format, gfc-internal-format msgid "" "Expected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE or DEFAULT at " "%C" msgstr "" -#: fortran/openmp.cc:2258 +#: fortran/openmp.cc:2273 #, gcc-internal-format, gfc-internal-format msgid "Expected SCALAR, AGGREGATE, ALLOCATABLE, POINTER or ALL at %C" msgstr "" -#: fortran/openmp.cc:2291 +#: fortran/openmp.cc:2306 #, gcc-internal-format, gfc-internal-format msgid "DEFAULTMAP at %C but prior DEFAULTMAP with unspecified category" msgstr "" -#: fortran/openmp.cc:2294 +#: fortran/openmp.cc:2309 #, gcc-internal-format, gfc-internal-format msgid "DEFAULTMAP at %C but prior DEFAULTMAP for category %s" msgstr "" -#: fortran/openmp.cc:2330 +#: fortran/openmp.cc:2345 #, gcc-internal-format, gfc-internal-format msgid "Expected NONE or PRESENT in DEFAULT clause at %C" msgstr "" -#: fortran/openmp.cc:2333 +#: fortran/openmp.cc:2348 #, gcc-internal-format, gfc-internal-format msgid "Expected NONE, FIRSTPRIVATE, PRIVATE or SHARED in DEFAULT clause at %C" msgstr "" -#: fortran/openmp.cc:2383 +#: fortran/openmp.cc:2398 #, gcc-internal-format, gfc-internal-format msgid "ITERATOR may not be combined with SOURCE at %C" msgstr "" -#: fortran/openmp.cc:2389 +#: fortran/openmp.cc:2404 #, gcc-internal-format, gfc-internal-format msgid "SOURCE at %C not permitted as dependence-type for this directive" msgstr "" -#: fortran/openmp.cc:2395 +#: fortran/openmp.cc:2410 #, gcc-internal-format, gfc-internal-format msgid "Duplicated clause with SOURCE dependence-type at %C" msgstr "" -#: fortran/openmp.cc:2410 +#: fortran/openmp.cc:2425 #, gcc-internal-format msgid "Expected %<)%> or % at %C" msgstr "" -#: fortran/openmp.cc:2422 +#: fortran/openmp.cc:2437 #, gcc-internal-format, gfc-internal-format msgid "SINK at %C not permitted as dependence-type for this directive" msgstr "" -#: fortran/openmp.cc:2433 +#: fortran/openmp.cc:2448 #, gcc-internal-format, gfc-internal-format msgid "ITERATOR may not be combined with SINK at %C" msgstr "" -#: fortran/openmp.cc:2447 +#: fortran/openmp.cc:2462 #, gcc-internal-format, gfc-internal-format msgid "Expected dependence-type SINK or SOURCE at %C" msgstr "" -#: fortran/openmp.cc:2464 +#: fortran/openmp.cc:2479 #, gcc-internal-format msgid "% used with DEPEND kind other than OUT or INOUT at %C" msgstr "" -#: fortran/openmp.cc:2502 fortran/openmp.cc:2537 +#: fortran/openmp.cc:2517 fortran/openmp.cc:2552 #, gcc-internal-format, gfc-internal-format msgid "Expected integer expression at %C" msgstr "" -#: fortran/openmp.cc:2518 +#: fortran/openmp.cc:2533 #, gcc-internal-format msgid "" "% device modifier not preceded by % directive with " "% clause at %C" msgstr "" -#: fortran/openmp.cc:2530 +#: fortran/openmp.cc:2545 #, gcc-internal-format msgid "the % clause expression must evaluate to %<1%> at %C" msgstr "" -#: fortran/openmp.cc:2543 +#: fortran/openmp.cc:2558 #, gcc-internal-format msgid "" "Expected integer expression or a single device-modifier % or " "% at %C" msgstr "" -#: fortran/openmp.cc:2573 +#: fortran/openmp.cc:2588 #, gcc-internal-format, gfc-internal-format msgid "Expected HOST, NOHOST or ANY at %C" msgstr "" -#: fortran/openmp.cc:2628 +#: fortran/openmp.cc:2643 #, gcc-internal-format, gfc-internal-format msgid "Expected SEQ_CST, ACQUIRE or RELAXED at %C" msgstr "" -#: fortran/openmp.cc:2816 +#: fortran/openmp.cc:2831 #, gcc-internal-format, gfc-internal-format msgid "INDIRECT clause at %C requires a constant logical expression" msgstr "" -#: fortran/openmp.cc:3003 +#: fortran/openmp.cc:3018 #, gcc-internal-format msgid "Multiple %qs modifiers specified at %C" msgstr "" -#: fortran/openmp.cc:3113 +#: fortran/openmp.cc:3128 #, gcc-internal-format msgid "too many % modifiers at %L" msgstr "" -#: fortran/openmp.cc:3119 +#: fortran/openmp.cc:3134 #, gcc-internal-format msgid "too many % modifiers at %L" msgstr "" -#: fortran/openmp.cc:3125 +#: fortran/openmp.cc:3140 #, gcc-internal-format msgid "too many % modifiers at %L" msgstr "" -#: fortran/openmp.cc:3316 +#: fortran/openmp.cc:3331 #, gcc-internal-format msgid "" "Expected ORDER(CONCURRENT) at %C with optional % or " "% modifier" msgstr "" -#: fortran/openmp.cc:3341 +#: fortran/openmp.cc:3356 #, gcc-internal-format, gfc-internal-format msgid "ORDERED clause argument not constant positive integer at %C" msgstr "" -#: fortran/openmp.cc:3631 +#: fortran/openmp.cc:3646 #, gcc-internal-format, gfc-internal-format msgid "Expected FATAL or WARNING in SEVERITY clause at %C" msgstr "" -#: fortran/openmp.cc:3824 +#: fortran/openmp.cc:3839 #, gcc-internal-format, gfc-internal-format msgid "Failed to match clause at %C" msgstr "" -#: fortran/openmp.cc:4007 +#: fortran/openmp.cc:4022 #, gcc-internal-format, gfc-internal-format msgid "Invalid clause in module with !$ACC DECLARE at %L" msgstr "" -#: fortran/openmp.cc:4017 +#: fortran/openmp.cc:4032 #, gcc-internal-format, gfc-internal-format msgid "Variable is USE-associated with !$ACC DECLARE at %L" msgstr "" -#: fortran/openmp.cc:4026 +#: fortran/openmp.cc:4041 #, gcc-internal-format msgid "" "Variable %qs shall be declared in the same scoping unit as !$ACC DECLARE at " "%L" msgstr "" -#: fortran/openmp.cc:4034 +#: fortran/openmp.cc:4049 #, gcc-internal-format, gfc-internal-format msgid "Assumed-size dummy array with !$ACC DECLARE at %L" msgstr "" -#: fortran/openmp.cc:4083 +#: fortran/openmp.cc:4098 #, gcc-internal-format msgid "" "% must contain at least one % or % or % " "clause at %L" msgstr "" -#: fortran/openmp.cc:4131 +#: fortran/openmp.cc:4146 #, gcc-internal-format, gfc-internal-format msgid "Invalid argument to !$ACC WAIT at %C" msgstr "" -#: fortran/openmp.cc:4138 +#: fortran/openmp.cc:4153 #, gcc-internal-format, gfc-internal-format msgid "WAIT clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.cc:4171 +#: fortran/openmp.cc:4201 #, gcc-internal-format, gfc-internal-format msgid "ACC CACHE directive must be inside of loop %C" msgstr "" -#: fortran/openmp.cc:4240 +#: fortran/openmp.cc:4270 #, gcc-internal-format, gfc-internal-format msgid "" "Only the !$ACC ROUTINE form without list is allowed in interface block at %C" msgstr "" -#: fortran/openmp.cc:4274 +#: fortran/openmp.cc:4304 #, gcc-internal-format msgid "Invalid NAME %qs in !$ACC ROUTINE ( NAME ) at %C" msgstr "" -#: fortran/openmp.cc:4282 +#: fortran/openmp.cc:4312 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C" msgstr "" -#: fortran/openmp.cc:4289 +#: fortran/openmp.cc:4319 #, gcc-internal-format msgid "" "Syntax error in !$ACC ROUTINE ( NAME ) at %C, expecting %<)%> after NAME" msgstr "" -#: fortran/openmp.cc:4304 +#: fortran/openmp.cc:4334 #, gcc-internal-format, gfc-internal-format msgid "Multiple loop axes specified for routine at %C" msgstr "" -#: fortran/openmp.cc:4315 +#: fortran/openmp.cc:4345 #, gcc-internal-format, gfc-internal-format msgid "" "Intrinsic symbol specified in !$ACC ROUTINE ( NAME ) at %C marked with " "incompatible GANG, WORKER, or VECTOR clause" msgstr "" -#: fortran/openmp.cc:4323 +#: fortran/openmp.cc:4353 #, gcc-internal-format, gfc-internal-format msgid "" "Intrinsic symbol specified in !$ACC ROUTINE ( NAME ) at %C marked with " "incompatible NOHOST clause" msgstr "" -#: fortran/openmp.cc:4344 fortran/openmp.cc:4372 +#: fortran/openmp.cc:4374 fortran/openmp.cc:4402 #, gcc-internal-format, gfc-internal-format msgid "!$ACC ROUTINE already applied at %C" msgstr "" -#: fortran/openmp.cc:4389 +#: fortran/openmp.cc:4419 #, gcc-internal-format, gfc-internal-format msgid "" "!$ACC ROUTINE with GANG, WORKER, or VECTOR clause is not permitted in PURE " "procedure at %C" msgstr "" -#: fortran/openmp.cc:4568 +#: fortran/openmp.cc:4598 #, gcc-internal-format, gfc-internal-format msgid "Expected ALIGN or ALLOCATOR clause at %C" msgstr "" -#: fortran/openmp.cc:4576 +#: fortran/openmp.cc:4606 #, gcc-internal-format, gfc-internal-format msgid "" "Sorry, structure-element list item at %L in ALLOCATE directive is not yet " "supported" msgstr "" -#: fortran/openmp.cc:4579 +#: fortran/openmp.cc:4609 #, gcc-internal-format, gfc-internal-format msgid "Unexpected expression as list item at %L in ALLOCATE directive" msgstr "" -#: fortran/openmp.cc:4650 +#: fortran/openmp.cc:4680 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ASSUMES at %C must be in the specification part of a subprogram or " "module" msgstr "" -#: fortran/openmp.cc:4717 +#: fortran/openmp.cc:4747 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP CRITICAL statement at %C" msgstr "" -#: fortran/openmp.cc:4739 +#: fortran/openmp.cc:4769 #, gcc-internal-format msgid "Expected %<( depobj )%> at %C" msgstr "" -#: fortran/openmp.cc:4757 +#: fortran/openmp.cc:4787 #, gcc-internal-format msgid "" "Expected IN, OUT, INOUT, INOUTSET or MUTEXINOUTSET followed by %<)%> at %C" msgstr "" -#: fortran/openmp.cc:4771 +#: fortran/openmp.cc:4801 #, gcc-internal-format, gfc-internal-format msgid "" "The same depend object should be used as DEPOBJ argument at %L and as " "DESTROY argument at %L" msgstr "" -#: fortran/openmp.cc:4785 +#: fortran/openmp.cc:4815 #, gcc-internal-format, gfc-internal-format msgid "Expected DEPEND, UPDATE, or DESTROY clause at %C" msgstr "" -#: fortran/openmp.cc:4790 +#: fortran/openmp.cc:4820 #, gcc-internal-format, gfc-internal-format msgid "" "DEPEND clause at %L of OMP DEPOBJ construct shall not have dependence-type " "DEPOBJ" msgstr "" -#: fortran/openmp.cc:4798 +#: fortran/openmp.cc:4828 #, gcc-internal-format, gfc-internal-format msgid "" "DEPEND clause at %L of OMP DEPOBJ construct shall have only a single locator" msgstr "" -#: fortran/openmp.cc:4924 fortran/openmp.cc:9176 +#: fortran/openmp.cc:4954 fortran/openmp.cc:9206 #, gcc-internal-format, gfc-internal-format msgid "" "MESSAGE clause at %L requires a scalar default-kind CHARACTER expression" msgstr "" -#: fortran/openmp.cc:4931 +#: fortran/openmp.cc:4961 #, gcc-internal-format, gfc-internal-format msgid "Constant character expression required in MESSAGE clause at %L" msgstr "" -#: fortran/openmp.cc:4937 +#: fortran/openmp.cc:4967 #, gcc-internal-format, gfc-internal-format msgid "$OMP ERROR encountered at %L: %s" msgstr "" -#: fortran/openmp.cc:4956 +#: fortran/openmp.cc:4986 #, gcc-internal-format, gfc-internal-format msgid "$OMP ERROR encountered at %L" msgstr "" -#: fortran/openmp.cc:4984 +#: fortran/openmp.cc:5014 #, gcc-internal-format, gfc-internal-format msgid "Expected SEQ_CST, AQC_REL, RELEASE, or ACQUIRE at %C" msgstr "" -#: fortran/openmp.cc:4993 +#: fortran/openmp.cc:5023 #, gcc-internal-format, gfc-internal-format msgid "" "List specified together with memory order clause in FLUSH directive at %C" msgstr "" -#: fortran/openmp.cc:5001 +#: fortran/openmp.cc:5031 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP FLUSH statement at %C" msgstr "" -#: fortran/openmp.cc:5401 fortran/openmp.cc:11748 +#: fortran/openmp.cc:5431 fortran/openmp.cc:11778 #, gcc-internal-format, gfc-internal-format msgid "Redefinition of predefined %s !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:5405 fortran/openmp.cc:11752 +#: fortran/openmp.cc:5435 fortran/openmp.cc:11782 #, gcc-internal-format, gfc-internal-format msgid "Redefinition of predefined !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:5410 +#: fortran/openmp.cc:5440 #, gcc-internal-format, gfc-internal-format msgid "Redefinition of !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:5412 +#: fortran/openmp.cc:5442 #, gcc-internal-format, gfc-internal-format msgid "Previous !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:5432 +#: fortran/openmp.cc:5462 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$OMP DECLARE REDUCTION at %C" msgstr "" -#: fortran/openmp.cc:5469 +#: fortran/openmp.cc:5499 #, gcc-internal-format, gfc-internal-format msgid "" "Only the !$OMP DECLARE TARGET form without clauses is allowed in interface " "block at %C" msgstr "" -#: fortran/openmp.cc:5484 +#: fortran/openmp.cc:5514 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$OMP DECLARE TARGET at %C" msgstr "" -#: fortran/openmp.cc:5509 +#: fortran/openmp.cc:5539 #, gcc-internal-format, gfc-internal-format msgid "OMP DECLARE TARGET variable at %L is an element of a COMMON block" msgstr "" -#: fortran/openmp.cc:5512 +#: fortran/openmp.cc:5542 #, gcc-internal-format, gfc-internal-format msgid "" "Variable at %L mentioned multiple times in clauses of the same OMP DECLARE " "TARGET directive" msgstr "" -#: fortran/openmp.cc:5518 +#: fortran/openmp.cc:5548 #, gcc-internal-format, gfc-internal-format msgid "" "OMP DECLARE TARGET variable at %L previously mentioned in LINK clause and " "later in %s clause" msgstr "" -#: fortran/openmp.cc:5524 +#: fortran/openmp.cc:5554 #, gcc-internal-format, gfc-internal-format msgid "" "OMP DECLARE TARGET variable at %L previously mentioned in TO or ENTER clause " "and later in LINK clause" msgstr "" -#: fortran/openmp.cc:5538 fortran/openmp.cc:5593 +#: fortran/openmp.cc:5568 fortran/openmp.cc:5623 #, gcc-internal-format msgid "" "List item %qs at %L set in previous OMP DECLARE TARGET directive to a " "different DEVICE_TYPE" msgstr "" -#: fortran/openmp.cc:5547 fortran/openmp.cc:5601 +#: fortran/openmp.cc:5577 fortran/openmp.cc:5631 #, gcc-internal-format, gfc-internal-format msgid "DEVICE_TYPE must be ANY when used with INDIRECT at %L" msgstr "" -#: fortran/openmp.cc:5557 +#: fortran/openmp.cc:5587 #, gcc-internal-format, gfc-internal-format msgid "" "OMP DECLARE TARGET COMMON at %L previously mentioned in LINK clause and " "later in %s clause" msgstr "" -#: fortran/openmp.cc:5563 +#: fortran/openmp.cc:5593 #, gcc-internal-format, gfc-internal-format msgid "" "OMP DECLARE TARGET COMMON at %L previously mentioned in TO or ENTER clause " "and later in LINK clause" msgstr "" -#: fortran/openmp.cc:5567 +#: fortran/openmp.cc:5597 #, gcc-internal-format, gfc-internal-format msgid "" "COMMON at %L mentioned multiple times in clauses of the same OMP DECLARE " "TARGET directive" msgstr "" -#: fortran/openmp.cc:5576 +#: fortran/openmp.cc:5606 #, gcc-internal-format, gfc-internal-format msgid "" "COMMON at %L set in previous OMP DECLARE TARGET directive to a different " "DEVICE_TYPE" msgstr "" -#: fortran/openmp.cc:5611 +#: fortran/openmp.cc:5641 #, gcc-internal-format, gfc-internal-format msgid "" "OMP DECLARE TARGET directive at %L with only DEVICE_TYPE or INDIRECT clauses " "is ignored" msgstr "" -#: fortran/openmp.cc:5622 +#: fortran/openmp.cc:5652 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$OMP DECLARE TARGET list at %C" msgstr "" #. FIXME: constant integer expressions. -#: fortran/openmp.cc:5661 +#: fortran/openmp.cc:5691 #, gcc-internal-format, gfc-internal-format msgid "Expected trait-property-extension at %C" msgstr "" -#: fortran/openmp.cc:5676 fortran/openmp.cc:5773 fortran/openmp.cc:5904 -#: fortran/openmp.cc:6054 fortran/openmp.cc:6082 +#: fortran/openmp.cc:5706 fortran/openmp.cc:5803 fortran/openmp.cc:5934 +#: fortran/openmp.cc:6084 fortran/openmp.cc:6112 #, gcc-internal-format msgid "expected %<)%> at %C" msgstr "" -#: fortran/openmp.cc:5698 +#: fortran/openmp.cc:5728 #, gcc-internal-format, gfc-internal-format msgid "expected trait selector name at %C" msgstr "" -#: fortran/openmp.cc:5717 +#: fortran/openmp.cc:5747 #, gcc-internal-format msgid "unknown selector %qs for context selector set %qs at %C" msgstr "" -#: fortran/openmp.cc:5735 +#: fortran/openmp.cc:5765 #, gcc-internal-format msgid "selector %qs does not accept any properties at %C" msgstr "" -#: fortran/openmp.cc:5744 +#: fortran/openmp.cc:5774 #, gcc-internal-format msgid "" "% cannot be specified in traits in the %qs trait-selector-set at %C" msgstr "" -#: fortran/openmp.cc:5751 fortran/openmp.cc:5914 fortran/openmp.cc:6006 -#: fortran/openmp.cc:6073 +#: fortran/openmp.cc:5781 fortran/openmp.cc:5944 fortran/openmp.cc:6036 +#: fortran/openmp.cc:6103 #, gcc-internal-format msgid "expected %<(%> at %C" msgstr "" -#: fortran/openmp.cc:5759 +#: fortran/openmp.cc:5789 #, gcc-internal-format msgid "% argument must be constant integer expression at %C" msgstr "" -#: fortran/openmp.cc:5767 +#: fortran/openmp.cc:5797 #, gcc-internal-format msgid "% argument must be non-negative at %C" msgstr "" -#: fortran/openmp.cc:5779 +#: fortran/openmp.cc:5809 #, gcc-internal-format, gfc-internal-format msgid "expected : at %C" msgstr "" -#: fortran/openmp.cc:5801 +#: fortran/openmp.cc:5831 #, gcc-internal-format, gfc-internal-format msgid "expected identifier at %C" msgstr "" -#: fortran/openmp.cc:5820 +#: fortran/openmp.cc:5850 #, gcc-internal-format, gfc-internal-format msgid "expected identifier or string literal at %C" msgstr "" -#: fortran/openmp.cc:5841 +#: fortran/openmp.cc:5871 #, gcc-internal-format, gfc-internal-format msgid "expected expression at %C" msgstr "" -#: fortran/openmp.cc:5853 +#: fortran/openmp.cc:5883 #, gcc-internal-format, gfc-internal-format msgid "property must be a constant logical expression at %C" msgstr "" -#: fortran/openmp.cc:5856 +#: fortran/openmp.cc:5886 #, gcc-internal-format, gfc-internal-format msgid "property must be a constant integer expression at %C" msgstr "" -#: fortran/openmp.cc:5868 +#: fortran/openmp.cc:5898 #, gcc-internal-format, gfc-internal-format msgid "property must be a conforming device number at %C" msgstr "" -#: fortran/openmp.cc:5882 +#: fortran/openmp.cc:5912 #, gcc-internal-format, gfc-internal-format msgid "expected simd clause at %C" msgstr "" -#: fortran/openmp.cc:5955 +#: fortran/openmp.cc:5985 #, gcc-internal-format, gfc-internal-format msgid "expected context selector set name at %C" msgstr "" -#: fortran/openmp.cc:5962 +#: fortran/openmp.cc:5992 #, gcc-internal-format msgid "expected %<=%> at %C" msgstr "" -#: fortran/openmp.cc:5969 +#: fortran/openmp.cc:5999 #, gcc-internal-format msgid "expected %<{%> at %C" msgstr "" -#: fortran/openmp.cc:5984 +#: fortran/openmp.cc:6014 #, gcc-internal-format msgid "expected %<}%> at %C" msgstr "" -#: fortran/openmp.cc:6013 +#: fortran/openmp.cc:6043 #, gcc-internal-format, gfc-internal-format msgid "expected name at %C" msgstr "" -#: fortran/openmp.cc:6024 +#: fortran/openmp.cc:6054 #, gcc-internal-format, gfc-internal-format msgid "expected variant name at %C" msgstr "" -#: fortran/openmp.cc:6064 +#: fortran/openmp.cc:6094 #, gcc-internal-format msgid "expected % at %C" msgstr "" -#: fortran/openmp.cc:6115 +#: fortran/openmp.cc:6145 #, gcc-internal-format, gfc-internal-format msgid "Threadprivate variable at %C is an element of a COMMON block" msgstr "" -#: fortran/openmp.cc:6152 +#: fortran/openmp.cc:6182 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after OMP THREADPRIVATE at %C" msgstr "" -#: fortran/openmp.cc:6159 +#: fortran/openmp.cc:6189 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$OMP THREADPRIVATE list at %C" msgstr "" -#: fortran/openmp.cc:6265 +#: fortran/openmp.cc:6295 #, gcc-internal-format, gfc-internal-format msgid "" "Program unit at %L has OpenMP device constructs/routines but does not set !" "$OMP REQUIRES REVERSE_OFFLOAD but other program units do" msgstr "" -#: fortran/openmp.cc:6270 +#: fortran/openmp.cc:6300 #, gcc-internal-format, gfc-internal-format msgid "" "Program unit at %L has OpenMP device constructs/routines but does not set !" "$OMP REQUIRES UNIFIED_ADDRESS but other program units do" msgstr "" -#: fortran/openmp.cc:6275 +#: fortran/openmp.cc:6305 #, gcc-internal-format, gfc-internal-format msgid "" "Program unit at %L has OpenMP device constructs/routines but does not set !" "$OMP REQUIRES UNIFIED_SHARED_MEMORY but other program units do" msgstr "" -#: fortran/openmp.cc:6301 +#: fortran/openmp.cc:6331 #, gcc-internal-format msgid "" "!$OMP REQUIRES clause %qs specified via module %qs use at %L comes after " "using a device construct/routine" msgstr "" -#: fortran/openmp.cc:6305 +#: fortran/openmp.cc:6335 #, gcc-internal-format msgid "" "!$OMP REQUIRES clause %qs specified at %L comes after using a device " "construct/routine" msgstr "" -#: fortran/openmp.cc:6328 +#: fortran/openmp.cc:6358 #, gcc-internal-format msgid "" "!$OMP REQUIRES clause % specified via module " @@ -79454,7 +79758,7 @@ msgid "" "might be through using a module)" msgstr "" -#: fortran/openmp.cc:6333 +#: fortran/openmp.cc:6363 #, gcc-internal-format msgid "" "!$OMP REQUIRES clause % specified at %L " @@ -79462,477 +79766,477 @@ msgid "" "through using a module)" msgstr "" -#: fortran/openmp.cc:6344 +#: fortran/openmp.cc:6374 #, gcc-internal-format msgid "" "!$OMP REQUIRES clause % specified via module " "%qs use at %L but same clause is not specified for the program unit" msgstr "" -#: fortran/openmp.cc:6349 +#: fortran/openmp.cc:6379 #, gcc-internal-format msgid "" "!$OMP REQUIRES clause %qs specified via module %qs use at %L but same clause " "is not specified for the program unit" msgstr "" -#: fortran/openmp.cc:6378 +#: fortran/openmp.cc:6408 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP REQUIRES at %C must appear in the specification part of a program unit" msgstr "" -#: fortran/openmp.cc:6456 +#: fortran/openmp.cc:6486 #, gcc-internal-format, gfc-internal-format msgid "" "Expected ACQ_REL, ACQUIRE, RELAXED, RELEASE or SEQ_CST for " "ATOMIC_DEFAULT_MEM_ORDER clause at %C" msgstr "" -#: fortran/openmp.cc:6472 +#: fortran/openmp.cc:6502 #, gcc-internal-format, gfc-internal-format msgid "Clause expected at %C" msgstr "" -#: fortran/openmp.cc:6478 +#: fortran/openmp.cc:6508 #, gcc-internal-format msgid "%qs clause at %L specified more than once" msgstr "" -#: fortran/openmp.cc:6481 +#: fortran/openmp.cc:6511 #, gcc-internal-format, gfc-internal-format msgid "" "Expected UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, DYNAMIC_ALLOCATORS, " "REVERSE_OFFLOAD, or ATOMIC_DEFAULT_MEM_ORDER clause at %L" msgstr "" -#: fortran/openmp.cc:6507 +#: fortran/openmp.cc:6537 #, gcc-internal-format, gfc-internal-format msgid "Expected INCLUSIVE or EXCLUSIVE clause at %C" msgstr "" -#: fortran/openmp.cc:6513 +#: fortran/openmp.cc:6543 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$OMP SCAN at %C" msgstr "" -#: fortran/openmp.cc:6712 +#: fortran/openmp.cc:6742 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after TASKYIELD clause at %C" msgstr "" -#: fortran/openmp.cc:6800 +#: fortran/openmp.cc:6830 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP MASTER statement at %C" msgstr "" -#: fortran/openmp.cc:6832 +#: fortran/openmp.cc:6862 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP NOTHING statement at %C" msgstr "" -#: fortran/openmp.cc:6867 fortran/openmp.cc:6870 fortran/openmp.cc:6873 +#: fortran/openmp.cc:6897 fortran/openmp.cc:6900 fortran/openmp.cc:6903 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC at %L with %s clause is incompatible with READ or WRITE" msgstr "" -#: fortran/openmp.cc:6877 +#: fortran/openmp.cc:6907 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC at %L with %s clause requires %s clause" msgstr "" -#: fortran/openmp.cc:6907 +#: fortran/openmp.cc:6937 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC WRITE at %L incompatible with ACQUIRES clause implicitly " "provided by a REQUIRES directive" msgstr "" -#: fortran/openmp.cc:6918 +#: fortran/openmp.cc:6948 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC READ at %L incompatible with RELEASE clause implicitly provided " "by a REQUIRES directive" msgstr "" -#: fortran/openmp.cc:6936 +#: fortran/openmp.cc:6966 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC READ at %L incompatible with RELEASE clause" msgstr "" -#: fortran/openmp.cc:6946 +#: fortran/openmp.cc:6976 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC WRITE at %L incompatible with ACQUIRE clause" msgstr "" -#: fortran/openmp.cc:6983 +#: fortran/openmp.cc:7013 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$ACC ATOMIC statement at %C" msgstr "" -#: fortran/openmp.cc:6998 +#: fortran/openmp.cc:7028 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP BARRIER statement at %C" msgstr "" -#: fortran/openmp.cc:7054 +#: fortran/openmp.cc:7084 #, gcc-internal-format, gfc-internal-format msgid "" "Expected construct-type PARALLEL, SECTIONS, DO or TASKGROUP in $OMP " "CANCELLATION POINT statement at %C" msgstr "" -#: fortran/openmp.cc:7060 +#: fortran/openmp.cc:7090 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP CANCELLATION POINT statement at %C" msgstr "" -#: fortran/openmp.cc:7081 +#: fortran/openmp.cc:7111 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after NOWAIT clause at %C" msgstr "" -#: fortran/openmp.cc:7120 +#: fortran/openmp.cc:7150 #, gcc-internal-format, gfc-internal-format msgid "%s clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.cc:7132 +#: fortran/openmp.cc:7162 #, gcc-internal-format, gfc-internal-format msgid "INTEGER expression of %s clause at %L must be positive" msgstr "" -#: fortran/openmp.cc:7144 +#: fortran/openmp.cc:7174 #, gcc-internal-format, gfc-internal-format msgid "INTEGER expression of %s clause at %L must be non-negative" msgstr "" -#: fortran/openmp.cc:7155 +#: fortran/openmp.cc:7185 #, gcc-internal-format msgid "Cray pointer object %qs of derived type in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7158 +#: fortran/openmp.cc:7188 #, gcc-internal-format msgid "Cray pointee object %qs of derived type in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7164 fortran/openmp.cc:9044 +#: fortran/openmp.cc:7194 fortran/openmp.cc:9074 #, gcc-internal-format msgid "POINTER object %qs of polymorphic type in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7169 +#: fortran/openmp.cc:7199 #, gcc-internal-format msgid "Cray pointer object %qs of polymorphic type in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7174 +#: fortran/openmp.cc:7204 #, gcc-internal-format msgid "Cray pointee object %qs of polymorphic type in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7184 fortran/openmp.cc:8529 fortran/openmp.cc:8806 +#: fortran/openmp.cc:7214 fortran/openmp.cc:8559 fortran/openmp.cc:8836 #, gcc-internal-format msgid "Assumed size array %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7187 +#: fortran/openmp.cc:7217 #, gcc-internal-format msgid "Assumed rank array %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7203 fortran/openmp.cc:8793 +#: fortran/openmp.cc:7233 fortran/openmp.cc:8823 #, gcc-internal-format msgid "POINTER object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7208 fortran/openmp.cc:9048 +#: fortran/openmp.cc:7238 fortran/openmp.cc:9078 #, gcc-internal-format msgid "Cray pointer object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7213 fortran/openmp.cc:9051 +#: fortran/openmp.cc:7243 fortran/openmp.cc:9081 #, gcc-internal-format msgid "Cray pointee object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7218 fortran/openmp.cc:9039 +#: fortran/openmp.cc:7248 fortran/openmp.cc:9069 #, gcc-internal-format msgid "ALLOCATABLE object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7221 +#: fortran/openmp.cc:7251 #, gcc-internal-format msgid "VALUE object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:7264 +#: fortran/openmp.cc:7294 #, gcc-internal-format, gfc-internal-format msgid "Implicitly declared function %s used in !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:7313 +#: fortran/openmp.cc:7343 #, gcc-internal-format, gfc-internal-format msgid "Implicitly declared subroutine %s used in !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:7349 +#: fortran/openmp.cc:7379 #, gcc-internal-format msgid "" "Unexpected function-result variable %qs at %L in declarative !$OMP ALLOCATE" msgstr "" -#: fortran/openmp.cc:7355 +#: fortran/openmp.cc:7385 #, gcc-internal-format msgid "Procedure pointer %qs not supported with !$OMP ALLOCATE at %L" msgstr "" -#: fortran/openmp.cc:7361 +#: fortran/openmp.cc:7391 #, gcc-internal-format msgid "" "Argument %qs at %L to declarative !$OMP ALLOCATE directive must be a variable" msgstr "" -#: fortran/openmp.cc:7368 +#: fortran/openmp.cc:7398 #, gcc-internal-format msgid "" "Argument %qs at %L to declarative !$OMP ALLOCATE shall be in the same scope " "as the variable declaration" msgstr "" -#: fortran/openmp.cc:7375 +#: fortran/openmp.cc:7405 #, gcc-internal-format msgid "" "Unexpected dummy argument %qs as argument at %L to declarative !$OMP ALLOCATE" msgstr "" -#: fortran/openmp.cc:7381 +#: fortran/openmp.cc:7411 #, gcc-internal-format msgid "" "Unexpected coarray argument %qs as argument at %L to declarative !$OMP " "ALLOCATE" msgstr "" -#: fortran/openmp.cc:7389 +#: fortran/openmp.cc:7419 #, gcc-internal-format msgid "Duplicated common block % in !$OMP ALLOCATE at %L" msgstr "" -#: fortran/openmp.cc:7396 +#: fortran/openmp.cc:7426 #, gcc-internal-format msgid "Duplicated variable %qs in !$OMP ALLOCATE at %L" msgstr "" -#: fortran/openmp.cc:7407 +#: fortran/openmp.cc:7437 #, gcc-internal-format msgid "Sorry, EQUIVALENCE object %qs not supported with !$OMP ALLOCATE at %L" msgstr "" -#: fortran/openmp.cc:7416 +#: fortran/openmp.cc:7446 #, gcc-internal-format msgid "" "Sorry, Cray pointers and pointees such as %qs are not supported with !$OMP " "ALLOCATE at %L" msgstr "" -#: fortran/openmp.cc:7425 +#: fortran/openmp.cc:7455 #, gcc-internal-format msgid "" "Unexpected allocatable variable %qs at %L in declarative !$OMP ALLOCATE " "directive" msgstr "" -#: fortran/openmp.cc:7430 +#: fortran/openmp.cc:7460 #, gcc-internal-format msgid "" "Unexpected pointer variable %qs at %L in declarative !$OMP ALLOCATE directive" msgstr "" -#: fortran/openmp.cc:7441 fortran/openmp.cc:7996 +#: fortran/openmp.cc:7471 fortran/openmp.cc:8026 #, gcc-internal-format, gfc-internal-format msgid "" "ALIGN requires a scalar positive constant integer alignment expression at %L " "that is a power of two" msgstr "" -#: fortran/openmp.cc:7456 +#: fortran/openmp.cc:7486 #, gcc-internal-format msgid "" "An ALLOCATOR clause is required as the list item %<%s%s%s%> at %L has the " "SAVE attribute" msgstr "" -#: fortran/openmp.cc:7461 +#: fortran/openmp.cc:7491 #, gcc-internal-format msgid "" "Predefined allocator required in ALLOCATOR clause at %L as the list item " "%<%s%s%s%> at %L has the SAVE attribute" msgstr "" -#: fortran/openmp.cc:7475 fortran/openmp.cc:7980 +#: fortran/openmp.cc:7505 fortran/openmp.cc:8010 #, gcc-internal-format msgid "" "Expected integer expression of the % kind at %L" msgstr "" -#: fortran/openmp.cc:7491 +#: fortran/openmp.cc:7521 #, gcc-internal-format, gfc-internal-format msgid "HOLDS expression at %L must be a scalar logical expression" msgstr "" -#: fortran/openmp.cc:7527 +#: fortran/openmp.cc:7557 #, gcc-internal-format, gfc-internal-format msgid "ORDERED clause parameter is less than COLLAPSE at %L" msgstr "" -#: fortran/openmp.cc:7530 +#: fortran/openmp.cc:7560 #, gcc-internal-format, gfc-internal-format msgid "ORDER clause must not be used together ORDERED at %L" msgstr "" -#: fortran/openmp.cc:7537 fortran/openmp.cc:7548 fortran/resolve.cc:11043 -#: fortran/resolve.cc:12612 +#: fortran/openmp.cc:7567 fortran/openmp.cc:7578 fortran/resolve.cc:11290 +#: fortran/resolve.cc:12859 #, gcc-internal-format, gfc-internal-format msgid "IF clause at %L requires a scalar LOGICAL expression" msgstr "" -#: fortran/openmp.cc:7552 +#: fortran/openmp.cc:7582 #, gcc-internal-format, gfc-internal-format msgid "" "IF clause without modifier at %L used together with IF clauses with modifiers" msgstr "" -#: fortran/openmp.cc:7677 +#: fortran/openmp.cc:7707 #, gcc-internal-format, gfc-internal-format msgid "" "IF clause modifier %s at %L not appropriate for the current OpenMP construct" msgstr "" -#: fortran/openmp.cc:7687 +#: fortran/openmp.cc:7717 #, gcc-internal-format, gfc-internal-format msgid "SELF clause at %L requires a scalar LOGICAL expression" msgstr "" -#: fortran/openmp.cc:7696 +#: fortran/openmp.cc:7726 #, gcc-internal-format, gfc-internal-format msgid "FINAL clause at %L requires a scalar LOGICAL expression" msgstr "" -#: fortran/openmp.cc:7706 +#: fortran/openmp.cc:7736 #, gcc-internal-format, gfc-internal-format msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.cc:7711 +#: fortran/openmp.cc:7741 #, gcc-internal-format, gfc-internal-format msgid "" "INTEGER expression of SCHEDULE clause's chunk_size at %L must be positive" msgstr "" -#: fortran/openmp.cc:7718 +#: fortran/openmp.cc:7748 #, gcc-internal-format, gfc-internal-format msgid "Both MONOTONIC and NONMONOTONIC schedule modifiers specified at %L" msgstr "" -#: fortran/openmp.cc:7721 +#: fortran/openmp.cc:7751 #, gcc-internal-format, gfc-internal-format msgid "NONMONOTONIC schedule modifier specified with ORDERED clause at %L" msgstr "" -#: fortran/openmp.cc:7730 +#: fortran/openmp.cc:7760 #, gcc-internal-format, gfc-internal-format msgid "" "DEPOBJ in DEPOBJ construct at %L shall be a scalar integer of " "OMP_DEPEND_KIND kind" msgstr "" -#: fortran/openmp.cc:7751 +#: fortran/openmp.cc:7781 #, gcc-internal-format msgid "Variable %qs is not a dummy argument at %L" msgstr "" -#: fortran/openmp.cc:7786 +#: fortran/openmp.cc:7816 #, gcc-internal-format msgid "" "Object %qs is not a variable at %L; parameters cannot be and need not be " "copied" msgstr "" -#: fortran/openmp.cc:7790 +#: fortran/openmp.cc:7820 #, gcc-internal-format msgid "" "Object %qs is not a variable at %L; parameters cannot be and need not be " "mapped" msgstr "" -#: fortran/openmp.cc:7795 fortran/openmp.cc:11411 +#: fortran/openmp.cc:7825 fortran/openmp.cc:11441 #, gcc-internal-format msgid "Object %qs is not a variable at %L" msgstr "" -#: fortran/openmp.cc:7806 +#: fortran/openmp.cc:7836 #, gcc-internal-format msgid "" "% REDUCTION clause on construct other than DO, SIMD, DO SIMD, " "PARALLEL DO, PARALLEL DO SIMD at %L" msgstr "" -#: fortran/openmp.cc:7810 +#: fortran/openmp.cc:7840 #, gcc-internal-format msgid "" "ORDERED clause specified together with % REDUCTION clause at %L" msgstr "" -#: fortran/openmp.cc:7813 +#: fortran/openmp.cc:7843 #, gcc-internal-format msgid "" "SCHEDULE clause specified together with % REDUCTION clause at %L" msgstr "" -#: fortran/openmp.cc:7844 fortran/openmp.cc:7856 fortran/openmp.cc:7877 -#: fortran/openmp.cc:7889 fortran/openmp.cc:7912 fortran/openmp.cc:7920 -#: fortran/openmp.cc:7941 fortran/openmp.cc:7952 fortran/openmp.cc:7964 -#: fortran/openmp.cc:8199 fortran/openmp.cc:11435 +#: fortran/openmp.cc:7874 fortran/openmp.cc:7886 fortran/openmp.cc:7907 +#: fortran/openmp.cc:7919 fortran/openmp.cc:7942 fortran/openmp.cc:7950 +#: fortran/openmp.cc:7971 fortran/openmp.cc:7982 fortran/openmp.cc:7994 +#: fortran/openmp.cc:8229 fortran/openmp.cc:11465 #, gcc-internal-format msgid "Symbol %qs present on multiple clauses at %L" msgstr "" -#: fortran/openmp.cc:7885 +#: fortran/openmp.cc:7915 #, gcc-internal-format msgid "Symbol %qs has mixed component and non-component accesses at %L" msgstr "" -#: fortran/openmp.cc:7935 +#: fortran/openmp.cc:7965 #, gcc-internal-format msgid "Symbol %qs present on both data and map clauses at %L" msgstr "" -#: fortran/openmp.cc:8021 +#: fortran/openmp.cc:8051 #, gcc-internal-format msgid "%qs appears more than once in % at %L" msgstr "" -#: fortran/openmp.cc:8063 +#: fortran/openmp.cc:8093 #, gcc-internal-format msgid "" "%qs specified in % clause at %L but not in an explicit " "privatization clause" msgstr "" -#: fortran/openmp.cc:8091 +#: fortran/openmp.cc:8121 #, gcc-internal-format msgid "Unexpected coarray %qs in % at %L" msgstr "" -#: fortran/openmp.cc:8105 +#: fortran/openmp.cc:8135 #, gcc-internal-format msgid "" "%qs specified in % at %L but not in the associated ALLOCATE " "statement" msgstr "" -#: fortran/openmp.cc:8139 +#: fortran/openmp.cc:8169 #, gcc-internal-format msgid "" "%qs listed in % statement at %L but it is neither explicitly in " @@ -79940,772 +80244,772 @@ msgid "" "argument list" msgstr "" -#: fortran/openmp.cc:8150 +#: fortran/openmp.cc:8180 #, gcc-internal-format msgid "" "Unexpected coarray %qs in % at %L, implicitly listed in % at %L" msgstr "" -#: fortran/openmp.cc:8175 +#: fortran/openmp.cc:8205 #, gcc-internal-format msgid "" "ALLOCATORS directive at %L inside a target region must specify an ALLOCATOR " "modifier for %qs" msgstr "" -#: fortran/openmp.cc:8179 +#: fortran/openmp.cc:8209 #, gcc-internal-format msgid "" "ALLOCATE directive at %L inside a target region must specify an ALLOCATOR " "clause for %qs" msgstr "" -#: fortran/openmp.cc:8183 +#: fortran/openmp.cc:8213 #, gcc-internal-format, gfc-internal-format msgid "" "ALLOCATE directive at %L inside a target region must specify an ALLOCATOR " "clause" msgstr "" -#: fortran/openmp.cc:8206 +#: fortran/openmp.cc:8236 #, gcc-internal-format msgid "Array %qs is not permitted in reduction at %L" msgstr "" -#: fortran/openmp.cc:8219 +#: fortran/openmp.cc:8249 #, gcc-internal-format msgid "Symbol %qs present on both FROM and TO clauses at %L" msgstr "" -#: fortran/openmp.cc:8237 +#: fortran/openmp.cc:8267 #, gcc-internal-format msgid "Non-THREADPRIVATE object %qs in COPYIN clause at %L" msgstr "" -#: fortran/openmp.cc:8243 +#: fortran/openmp.cc:8273 #, gcc-internal-format, gfc-internal-format msgid "NOWAIT clause must not be used with COPYPRIVATE clause at %L" msgstr "" -#: fortran/openmp.cc:8248 +#: fortran/openmp.cc:8278 #, gcc-internal-format msgid "Assumed size array %qs in COPYPRIVATE clause at %L" msgstr "" -#: fortran/openmp.cc:8251 +#: fortran/openmp.cc:8281 #, gcc-internal-format msgid "INTENT(IN) POINTER %qs in COPYPRIVATE clause at %L" msgstr "" -#: fortran/openmp.cc:8259 +#: fortran/openmp.cc:8289 #, gcc-internal-format msgid "THREADPRIVATE object %qs in SHARED clause at %L" msgstr "" -#: fortran/openmp.cc:8262 +#: fortran/openmp.cc:8292 #, gcc-internal-format msgid "Cray pointee %qs in SHARED clause at %L" msgstr "" -#: fortran/openmp.cc:8265 +#: fortran/openmp.cc:8295 #, gcc-internal-format msgid "Associate name %qs in SHARED clause at %L" msgstr "" -#: fortran/openmp.cc:8271 +#: fortran/openmp.cc:8301 #, gcc-internal-format msgid "DETACH event handle %qs in SHARED clause at %L" msgstr "" -#: fortran/openmp.cc:8286 +#: fortran/openmp.cc:8316 #, gcc-internal-format msgid "" "%qs in ALIGNED clause must be POINTER, ALLOCATABLE, Cray pointer or C_PTR at " "%L" msgstr "" -#: fortran/openmp.cc:8296 +#: fortran/openmp.cc:8326 #, gcc-internal-format msgid "" "%qs in ALIGNED clause at %L requires a scalar positive constant integer " "alignment expression" msgstr "" -#: fortran/openmp.cc:8322 +#: fortran/openmp.cc:8352 #, gcc-internal-format, gfc-internal-format msgid "Scalar integer expression for range begin expected at %L" msgstr "" -#: fortran/openmp.cc:8328 +#: fortran/openmp.cc:8358 #, gcc-internal-format, gfc-internal-format msgid "Scalar integer expression for range end expected at %L" msgstr "" -#: fortran/openmp.cc:8334 +#: fortran/openmp.cc:8364 #, gcc-internal-format, gfc-internal-format msgid "Scalar integer expression for range step expected at %L" msgstr "" -#: fortran/openmp.cc:8339 +#: fortran/openmp.cc:8369 #, gcc-internal-format, gfc-internal-format msgid "Nonzero range step expected at %L" msgstr "" -#: fortran/openmp.cc:8352 +#: fortran/openmp.cc:8382 #, gcc-internal-format, gfc-internal-format msgid "" "Dependence-type SINK used together with SOURCE on the same construct at %L" msgstr "" -#: fortran/openmp.cc:8362 +#: fortran/openmp.cc:8392 #, gcc-internal-format, gfc-internal-format msgid "SINK addend not a constant integer at %L" msgstr "" -#: fortran/openmp.cc:8368 +#: fortran/openmp.cc:8398 #, gcc-internal-format msgid "omp_cur_iteration at %L requires %<-1%> as logical offset" msgstr "" -#: fortran/openmp.cc:8378 +#: fortran/openmp.cc:8408 #, gcc-internal-format msgid "" "Locator %qs at %L in DEPEND clause of depobj type shall be a scalar integer " "of OMP_DEPEND_KIND kind" msgstr "" -#: fortran/openmp.cc:8389 +#: fortran/openmp.cc:8419 #, gcc-internal-format, gfc-internal-format msgid "" "Locator at %L in DEPEND clause of depobj type shall be a scalar integer of " "OMP_DEPEND_KIND kind" msgstr "" -#: fortran/openmp.cc:8433 +#: fortran/openmp.cc:8463 #, gcc-internal-format, gfc-internal-format msgid "Array is not contiguous at %L" msgstr "" -#: fortran/openmp.cc:8448 +#: fortran/openmp.cc:8478 #, gcc-internal-format msgid "%qs clause argument must be ALLOCATABLE or a POINTER at %L" msgstr "" -#: fortran/openmp.cc:8460 +#: fortran/openmp.cc:8490 #, gcc-internal-format, gfc-internal-format msgid "Unexpected substring reference in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8468 +#: fortran/openmp.cc:8498 #, gcc-internal-format, gfc-internal-format msgid "Unexpected complex-parts designator reference in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8477 fortran/openmp.cc:8495 +#: fortran/openmp.cc:8507 fortran/openmp.cc:8525 #, gcc-internal-format msgid "%qs in %s clause at %L is not a proper array section" msgstr "" -#: fortran/openmp.cc:8487 +#: fortran/openmp.cc:8517 #, gcc-internal-format, gfc-internal-format msgid "Stride should not be specified for array section in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8509 +#: fortran/openmp.cc:8539 #, gcc-internal-format msgid "%qs in %s clause at %L is a zero size array section" msgstr "" -#: fortran/openmp.cc:8535 +#: fortran/openmp.cc:8565 #, gcc-internal-format msgid "" "List item %qs with allocatable components is not permitted in map clause at " "%L" msgstr "" -#: fortran/openmp.cc:8561 +#: fortran/openmp.cc:8591 #, gcc-internal-format, gfc-internal-format msgid "" "TARGET%s with map-type other than TO, FROM, TOFROM, or ALLOC on MAP clause " "at %L" msgstr "" -#: fortran/openmp.cc:8592 +#: fortran/openmp.cc:8622 #, gcc-internal-format, gfc-internal-format msgid "" "TARGET ENTER DATA with map-type other than TO, TOFROM or ALLOC on MAP clause " "at %L" msgstr "" -#: fortran/openmp.cc:8621 +#: fortran/openmp.cc:8651 #, gcc-internal-format, gfc-internal-format msgid "" "TARGET EXIT DATA with map-type other than FROM, TOFROM, RELEASE, or DELETE " "on MAP clause at %L" msgstr "" -#: fortran/openmp.cc:8637 fortran/openmp.cc:8777 +#: fortran/openmp.cc:8667 fortran/openmp.cc:8807 #, gcc-internal-format msgid "THREADPRIVATE object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8640 fortran/openmp.cc:8780 +#: fortran/openmp.cc:8670 fortran/openmp.cc:8810 #, gcc-internal-format msgid "Cray pointee %qs in %s clause at %L" msgstr "" #. Non-TARGET (i.e. DISPATCH) requires a C_PTR. -#: fortran/openmp.cc:8652 +#: fortran/openmp.cc:8682 #, gcc-internal-format msgid "List item %qs in %s clause at %L must be of TYPE(C_PTR)" msgstr "" -#: fortran/openmp.cc:8709 +#: fortran/openmp.cc:8739 #, gcc-internal-format msgid "Memspace %qs at %L in USES_ALLOCATORS must be a predefined memory space" msgstr "" -#: fortran/openmp.cc:8717 +#: fortran/openmp.cc:8747 #, gcc-internal-format msgid "" "Allocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind " "%" msgstr "" -#: fortran/openmp.cc:8725 +#: fortran/openmp.cc:8755 #, gcc-internal-format msgid "" "Allocator %qs at %L in USES_ALLOCATORS must either a variable or a " "predefined allocator" msgstr "" -#: fortran/openmp.cc:8730 +#: fortran/openmp.cc:8760 #, gcc-internal-format msgid "" "A memory space or traits array may not be specified for predefined allocator " "%qs at %L" msgstr "" -#: fortran/openmp.cc:8741 +#: fortran/openmp.cc:8771 #, gcc-internal-format msgid "" "Traits array %qs in USES_ALLOCATORS %L must be a one-dimensional named " "constant array of type %" msgstr "" -#: fortran/openmp.cc:8771 +#: fortran/openmp.cc:8801 #, gcc-internal-format msgid "" "% and non-% % clauses on the same construct at " "%L" msgstr "" -#: fortran/openmp.cc:8783 +#: fortran/openmp.cc:8813 #, gcc-internal-format msgid "Associate name %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8790 +#: fortran/openmp.cc:8820 #, gcc-internal-format msgid "Procedure pointer %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8796 +#: fortran/openmp.cc:8826 #, gcc-internal-format msgid "Cray pointer %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8809 +#: fortran/openmp.cc:8839 #, gcc-internal-format msgid "Variable %qs in %s clause is used in NAMELIST statement at %L" msgstr "" #. case OMP_LIST_REDUCTION: -#: fortran/openmp.cc:8819 +#: fortran/openmp.cc:8849 #, gcc-internal-format msgid "INTENT(IN) POINTER %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8830 +#: fortran/openmp.cc:8860 #, gcc-internal-format msgid "DETACH event handle %qs in %s clause at %L" msgstr "" -#: fortran/openmp.cc:8854 +#: fortran/openmp.cc:8884 #, gcc-internal-format, gfc-internal-format msgid "Only DEFAULT permitted as reduction-modifier in REDUCTION clause at %L" msgstr "" -#: fortran/openmp.cc:8947 +#: fortran/openmp.cc:8977 #, gcc-internal-format, gfc-internal-format msgid "!$OMP DECLARE REDUCTION %s not found for type %s at %L" msgstr "" -#: fortran/openmp.cc:8975 +#: fortran/openmp.cc:9005 #, gcc-internal-format, gfc-internal-format msgid "LINEAR clause modifier used on DO or SIMD construct at %L" msgstr "" -#: fortran/openmp.cc:8981 +#: fortran/openmp.cc:9011 #, gcc-internal-format, gfc-internal-format msgid "" "LINEAR clause modifier other than VAL used on DO or SIMD construct at %L" msgstr "" -#: fortran/openmp.cc:8989 +#: fortran/openmp.cc:9019 #, gcc-internal-format msgid "LINEAR variable %qs must be INTEGER at %L" msgstr "" -#: fortran/openmp.cc:8994 +#: fortran/openmp.cc:9024 #, gcc-internal-format msgid "LINEAR dummy argument %qs with VALUE attribute with %s modifier at %L" msgstr "" -#: fortran/openmp.cc:9005 +#: fortran/openmp.cc:9035 #, gcc-internal-format msgid "" "%qs in LINEAR clause at %L requires a scalar integer linear-step expression" msgstr "" -#: fortran/openmp.cc:9022 +#: fortran/openmp.cc:9052 #, gcc-internal-format msgid "" "%qs in LINEAR clause at %L requires a constant integer linear-step " "expression or dummy argument specified in UNIFORM clause" msgstr "" -#: fortran/openmp.cc:9056 +#: fortran/openmp.cc:9086 #, gcc-internal-format msgid "%s clause variable %qs at %L is neither a POINTER nor an array" msgstr "" -#: fortran/openmp.cc:9116 +#: fortran/openmp.cc:9146 #, gcc-internal-format, gfc-internal-format msgid "NUM_TEAMS lower bound at %L larger than upper bound at %L" msgstr "" -#: fortran/openmp.cc:9129 +#: fortran/openmp.cc:9159 #, gcc-internal-format, gfc-internal-format msgid "Value of HINT clause at %L shall be a valid constant hint expression" msgstr "" -#: fortran/openmp.cc:9139 +#: fortran/openmp.cc:9169 #, gcc-internal-format, gfc-internal-format msgid "" "DIST_SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.cc:9169 +#: fortran/openmp.cc:9199 #, gcc-internal-format, gfc-internal-format msgid "Incompatible use of TILE and COLLAPSE at %L" msgstr "" -#: fortran/openmp.cc:9193 +#: fortran/openmp.cc:9223 #, gcc-internal-format, gfc-internal-format msgid "" "TARGET DATA must contain at least one MAP, USE_DEVICE_PTR, or " "USE_DEVICE_ADDR clause at %L" msgstr "" -#: fortran/openmp.cc:9196 +#: fortran/openmp.cc:9226 #, gcc-internal-format, gfc-internal-format msgid "%s must contain at least one MAP clause at %L" msgstr "" -#: fortran/openmp.cc:9206 +#: fortran/openmp.cc:9236 #, gcc-internal-format msgid "" "%qs at %L should be a scalar of type integer(kind=omp_event_handle_kind)" msgstr "" -#: fortran/openmp.cc:9211 +#: fortran/openmp.cc:9241 #, gcc-internal-format, gfc-internal-format msgid "The event handle at %L must not be an array element" msgstr "" -#: fortran/openmp.cc:9215 +#: fortran/openmp.cc:9245 #, gcc-internal-format, gfc-internal-format msgid "The event handle at %L must not be part of a derived type or class" msgstr "" -#: fortran/openmp.cc:9219 +#: fortran/openmp.cc:9249 #, gcc-internal-format msgid "" "% clause at %L must not be used together with % clause" msgstr "" -#: fortran/openmp.cc:9226 +#: fortran/openmp.cc:9256 #, gcc-internal-format msgid "% construct at %L requires % clause" msgstr "" -#: fortran/openmp.cc:9380 +#: fortran/openmp.cc:9410 #, gcc-internal-format, gfc-internal-format msgid "Expected IF at %L in atomic compare capture" msgstr "" -#: fortran/openmp.cc:9388 +#: fortran/openmp.cc:9418 #, gcc-internal-format, gfc-internal-format msgid "Expected ELSE at %L in atomic compare capture" msgstr "" -#: fortran/openmp.cc:9500 +#: fortran/openmp.cc:9530 #, gcc-internal-format msgid "" "Expected %<==%>, %<.EQ.%> or %<.EQV.%> atomic comparison expression at %L" msgstr "" -#: fortran/openmp.cc:9506 +#: fortran/openmp.cc:9536 #, gcc-internal-format, gfc-internal-format msgid "Expected scalar intrinsic variable at %L in atomic comparison" msgstr "" -#: fortran/openmp.cc:9514 +#: fortran/openmp.cc:9544 #, gcc-internal-format, gfc-internal-format msgid "Expected scalar intrinsic expression at %L in atomic comparison" msgstr "" -#: fortran/openmp.cc:9522 +#: fortran/openmp.cc:9552 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L" msgstr "" -#: fortran/openmp.cc:9531 +#: fortran/openmp.cc:9561 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC statement must assign an expression of intrinsic type at %L" msgstr "" -#: fortran/openmp.cc:9538 +#: fortran/openmp.cc:9568 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC with ALLOCATABLE variable at %L" msgstr "" -#: fortran/openmp.cc:9555 +#: fortran/openmp.cc:9585 #, 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.cc:9560 +#: fortran/openmp.cc:9590 #, 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.cc:9572 +#: fortran/openmp.cc:9602 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC capture-statement must set a scalar variable of intrinsic type " "at %L" msgstr "" -#: fortran/openmp.cc:9580 +#: fortran/openmp.cc:9610 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC capture-statement requires a scalar variable of intrinsic type " "at %L" msgstr "" -#: fortran/openmp.cc:9590 +#: fortran/openmp.cc:9620 #, 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.cc:9606 +#: fortran/openmp.cc:9636 #, gcc-internal-format msgid "" "For !$OMP ATOMIC COMPARE, the first operand in comparison at %L must be the " "variable %qs that the update statement writes into at %L" msgstr "" -#: fortran/openmp.cc:9614 +#: fortran/openmp.cc:9644 #, gcc-internal-format, gfc-internal-format msgid "" "expr in !$OMP ATOMIC COMPARE assignment var = expr must be scalar and cannot " "reference var at %L" msgstr "" -#: fortran/openmp.cc:9632 +#: fortran/openmp.cc:9662 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC UPDATE at %L with FAIL clause requiries either the COMPARE " "clause or using the intrinsic MIN/MAX procedure" msgstr "" -#: fortran/openmp.cc:9659 +#: fortran/openmp.cc:9689 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment operator must be binary +, *, -, /, .AND., .OR., ." "EQV. or .NEQV. at %L" msgstr "" -#: fortran/openmp.cc:9707 +#: fortran/openmp.cc:9737 #, 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.cc:9721 +#: fortran/openmp.cc:9751 #, 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.cc:9754 +#: fortran/openmp.cc:9784 #, 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.cc:9778 +#: fortran/openmp.cc:9808 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments " "at %L" msgstr "" -#: fortran/openmp.cc:9785 +#: fortran/openmp.cc:9815 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L" msgstr "" -#: fortran/openmp.cc:9808 +#: fortran/openmp.cc:9838 #, gcc-internal-format msgid "" "!$OMP ATOMIC intrinsic arguments except one must not reference %qs at %L" msgstr "" -#: fortran/openmp.cc:9815 +#: fortran/openmp.cc:9845 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L" msgstr "" -#: fortran/openmp.cc:9823 +#: fortran/openmp.cc:9853 #, gcc-internal-format msgid "First or last !$OMP ATOMIC intrinsic argument must be %qs at %L" msgstr "" -#: fortran/openmp.cc:9841 +#: fortran/openmp.cc:9871 #, 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.cc:9846 +#: fortran/openmp.cc:9876 #, gcc-internal-format, gfc-internal-format msgid "unexpected !$OMP ATOMIC expression at %L" msgstr "" -#: fortran/openmp.cc:9948 +#: fortran/openmp.cc:9978 #, gcc-internal-format, gfc-internal-format msgid "" "With INSCAN at %L, expected loop body with !$OMP SCAN between two structured " "block sequences" msgstr "" -#: fortran/openmp.cc:9955 +#: fortran/openmp.cc:9985 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP SCAN at %L with zero executable statements in preceding structured " "block sequence" msgstr "" -#: fortran/openmp.cc:9962 +#: fortran/openmp.cc:9992 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP SCAN at %L with zero executable statements in succeeding structured " "block sequence" msgstr "" -#: fortran/openmp.cc:10176 +#: fortran/openmp.cc:10206 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain loop in intervening code at %L" msgstr "" -#: fortran/openmp.cc:10256 +#: fortran/openmp.cc:10286 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP directive in intervening code at %L" msgstr "" -#: fortran/openmp.cc:10268 fortran/openmp.cc:10294 +#: fortran/openmp.cc:10298 fortran/openmp.cc:10324 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP API call in intervening code at %L" msgstr "" -#: fortran/openmp.cc:10822 +#: fortran/openmp.cc:10852 #, gcc-internal-format, gfc-internal-format msgid "%s cannot be a DO WHILE or DO without loop control at %L" msgstr "" -#: fortran/openmp.cc:10828 +#: fortran/openmp.cc:10858 #, gcc-internal-format, gfc-internal-format msgid "%s cannot be a DO CONCURRENT loop at %L" msgstr "" -#: fortran/openmp.cc:10835 +#: fortran/openmp.cc:10865 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable must be of type integer at %L" msgstr "" -#: fortran/openmp.cc:10842 +#: fortran/openmp.cc:10872 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable must not be THREADPRIVATE at %L" msgstr "" -#: fortran/openmp.cc:10857 +#: fortran/openmp.cc:10887 #, gcc-internal-format, gfc-internal-format msgid "" "%s iteration variable present on clause other than PRIVATE, LASTPRIVATE or " "ALLOCATE at %L" msgstr "" -#: fortran/openmp.cc:10861 +#: fortran/openmp.cc:10891 #, gcc-internal-format, gfc-internal-format msgid "" "%s iteration variable present on clause other than PRIVATE, LASTPRIVATE, " "ALLOCATE or LINEAR at %L" msgstr "" -#: fortran/openmp.cc:10868 +#: fortran/openmp.cc:10898 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable used in more than one loop at %L" msgstr "" -#: fortran/openmp.cc:10874 +#: fortran/openmp.cc:10904 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable at %L is bound in intervening code" msgstr "" -#: fortran/openmp.cc:10883 +#: fortran/openmp.cc:10913 #, gcc-internal-format, gfc-internal-format msgid "%s loop start expression not in canonical form at %L" msgstr "" -#: fortran/openmp.cc:10890 +#: fortran/openmp.cc:10920 #, gcc-internal-format, gfc-internal-format msgid "%s loop start expression at %L uses variable bound in intervening code" msgstr "" -#: fortran/openmp.cc:10899 +#: fortran/openmp.cc:10929 #, gcc-internal-format, gfc-internal-format msgid "%s loop end expression not in canonical form at %L" msgstr "" -#: fortran/openmp.cc:10906 +#: fortran/openmp.cc:10936 #, gcc-internal-format, gfc-internal-format msgid "%s loop end expression at %L uses variable bound in intervening code" msgstr "" -#: fortran/openmp.cc:10913 +#: fortran/openmp.cc:10943 #, gcc-internal-format, gfc-internal-format msgid "%s loop bounds reference different iteration variables at %L" msgstr "" -#: fortran/openmp.cc:10919 +#: fortran/openmp.cc:10949 #, gcc-internal-format, gfc-internal-format msgid "%s loop increment not in canonical form at %L" msgstr "" -#: fortran/openmp.cc:10926 +#: fortran/openmp.cc:10956 #, gcc-internal-format, gfc-internal-format msgid "" "%s loop increment expression at %L uses variable bound in intervening code" msgstr "" #. Parse error, can't recover from this. -#: fortran/openmp.cc:10944 +#: fortran/openmp.cc:10974 #, gcc-internal-format, gfc-internal-format msgid "not enough DO loops for collapsed %s (level %d) at %L" msgstr "" -#: fortran/openmp.cc:10956 +#: fortran/openmp.cc:10986 #, gcc-internal-format, gfc-internal-format msgid "%s inner loops must be perfectly nested with ORDERED clause at %L" msgstr "" -#: fortran/openmp.cc:10963 +#: fortran/openmp.cc:10993 #, gcc-internal-format, gfc-internal-format msgid "" "%s inner loops must be perfectly nested with REDUCTION INSCAN clause at %L" msgstr "" -#: fortran/openmp.cc:11190 fortran/openmp.cc:11203 +#: fortran/openmp.cc:11220 fortran/openmp.cc:11233 #, gcc-internal-format, gfc-internal-format msgid "The %s directive cannot be specified within a %s region at %L" msgstr "" -#: fortran/openmp.cc:11222 +#: fortran/openmp.cc:11252 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP cannot be a DO WHILE or DO without loop control at %L" msgstr "" -#: fortran/openmp.cc:11228 +#: fortran/openmp.cc:11258 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP cannot be a DO CONCURRENT loop at %L" msgstr "" -#: fortran/openmp.cc:11234 +#: fortran/openmp.cc:11264 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP iteration variable must be of type integer at %L" msgstr "" -#: fortran/openmp.cc:11250 +#: fortran/openmp.cc:11280 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP %s loops don't form rectangular iteration space at %L" msgstr "" -#: fortran/openmp.cc:11262 +#: fortran/openmp.cc:11292 #, gcc-internal-format, gfc-internal-format msgid "%s !$ACC LOOP loops not perfectly nested at %L" msgstr "" -#: fortran/openmp.cc:11272 fortran/openmp.cc:11281 +#: fortran/openmp.cc:11302 fortran/openmp.cc:11311 #, gcc-internal-format, gfc-internal-format msgid "not enough DO loops for %s !$ACC LOOP at %L" msgstr "" -#: fortran/openmp.cc:11297 +#: fortran/openmp.cc:11327 #, 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.cc:11318 +#: fortran/openmp.cc:11348 #, gcc-internal-format, gfc-internal-format msgid "TILE requires constant expression at %L" msgstr "" -#: fortran/openmp.cc:11418 +#: fortran/openmp.cc:11448 #, gcc-internal-format msgid "Array sections: %qs not allowed in !$ACC DECLARE at %L" msgstr "" -#: fortran/openmp.cc:11465 +#: fortran/openmp.cc:11495 #, gcc-internal-format msgid "" "NAME %qs does not refer to a subroutine or function in !$ACC ROUTINE " "( NAME ) at %L" msgstr "" -#: fortran/openmp.cc:11471 +#: fortran/openmp.cc:11501 #, gcc-internal-format msgid "NAME %qs invalid in !$ACC ROUTINE ( NAME ) at %L" msgstr "" -#: fortran/openmp.cc:11539 +#: fortran/openmp.cc:11569 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP TARGET region at %L with a nested TEAMS at %L may not contain any " @@ -80713,83 +81017,83 @@ msgid "" "construct" msgstr "" -#: fortran/openmp.cc:11543 +#: fortran/openmp.cc:11573 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP TARGET region at %L with a nested TEAMS may not contain any other " "statement, declaration or directive outside of the single TEAMS construct" msgstr "" -#: fortran/openmp.cc:11637 +#: fortran/openmp.cc:11667 #, gcc-internal-format, gfc-internal-format msgid "OMP TARGET UPDATE at %L requires at least one TO or FROM clause" msgstr "" -#: fortran/openmp.cc:11651 +#: fortran/openmp.cc:11681 #, gcc-internal-format, gfc-internal-format msgid "" "OMP CRITICAL at %L with HINT clause requires a NAME, except when " "omp_sync_hint_none is used" msgstr "" -#: fortran/openmp.cc:11657 +#: fortran/openmp.cc:11687 #, gcc-internal-format msgid "" "Unexpected !$OMP SCAN at %L outside loop construct with % REDUCTION " "clause" msgstr "" -#: fortran/openmp.cc:11678 +#: fortran/openmp.cc:11708 #, gcc-internal-format msgid "!$OMP DECLARE SIMD should refer to containing procedure %qs at %L" msgstr "" -#: fortran/openmp.cc:11702 +#: fortran/openmp.cc:11732 #, 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.cc:11710 +#: fortran/openmp.cc:11740 #, 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.cc:11739 +#: fortran/openmp.cc:11769 #, gcc-internal-format, gfc-internal-format msgid "Invalid operator for !$OMP DECLARE REDUCTION %s at %L" msgstr "" -#: fortran/openmp.cc:11761 +#: fortran/openmp.cc:11791 #, gcc-internal-format, gfc-internal-format msgid "CHARACTER length in !$OMP DECLARE REDUCTION %s not constant at %L" msgstr "" -#: fortran/openmp.cc:11777 +#: fortran/openmp.cc:11807 #, gcc-internal-format, gfc-internal-format msgid "" "Subroutine call with alternate returns in combiner of !$OMP DECLARE " "REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:11792 +#: fortran/openmp.cc:11822 #, gcc-internal-format, gfc-internal-format msgid "" "Subroutine call with alternate returns in INITIALIZER clause of !$OMP " "DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.cc:11802 +#: fortran/openmp.cc:11832 #, 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.cc:11810 +#: fortran/openmp.cc:11840 #, gcc-internal-format, gfc-internal-format msgid "" "Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type " @@ -80996,92 +81300,92 @@ msgstr "" msgid "Bad continuation line at %C" msgstr "" -#: fortran/parse.cc:2059 +#: fortran/parse.cc:2060 #, gcc-internal-format, gfc-internal-format msgid "FORMAT statement at %L does not have a statement label" msgstr "" -#: fortran/parse.cc:2974 +#: fortran/parse.cc:2975 #, gcc-internal-format msgid "gfc_ascii_statement(): Bad statement code" msgstr "" -#: fortran/parse.cc:3120 +#: fortran/parse.cc:3124 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement at %C" msgstr "" -#: fortran/parse.cc:3277 +#: fortran/parse.cc:3281 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C cannot follow %s statement at %L" msgstr "" -#: fortran/parse.cc:3294 +#: fortran/parse.cc:3298 #, gcc-internal-format msgid "Unexpected end of file in %qs" msgstr "" -#: fortran/parse.cc:3329 +#: fortran/parse.cc:3333 #, gcc-internal-format msgid "Derived-type %qs with SEQUENCE must not have a CONTAINS section at %C" msgstr "" -#: fortran/parse.cc:3332 +#: fortran/parse.cc:3336 #, gcc-internal-format msgid "Derived-type %qs with BIND(C) must not have a CONTAINS section at %C" msgstr "" -#: fortran/parse.cc:3352 +#: fortran/parse.cc:3356 #, gcc-internal-format, gfc-internal-format msgid "Components in TYPE at %C must precede CONTAINS" msgstr "" -#: fortran/parse.cc:3356 +#: fortran/parse.cc:3360 #, gcc-internal-format, gfc-internal-format msgid "Type-bound procedure at %C" msgstr "" -#: fortran/parse.cc:3364 +#: fortran/parse.cc:3368 #, gcc-internal-format, gfc-internal-format msgid "GENERIC binding at %C" msgstr "" -#: fortran/parse.cc:3372 +#: fortran/parse.cc:3376 #, gcc-internal-format, gfc-internal-format msgid "FINAL procedure declaration at %C" msgstr "" -#: fortran/parse.cc:3384 +#: fortran/parse.cc:3388 #, gcc-internal-format, gfc-internal-format msgid "Derived type definition at %C with empty CONTAINS section" msgstr "" -#: fortran/parse.cc:3394 fortran/parse.cc:3849 +#: fortran/parse.cc:3398 fortran/parse.cc:3853 #, gcc-internal-format, gfc-internal-format msgid "PRIVATE statement in TYPE at %C must be inside a MODULE" msgstr "" -#: fortran/parse.cc:3401 +#: fortran/parse.cc:3405 #, gcc-internal-format, gfc-internal-format msgid "PRIVATE statement at %C must precede procedure bindings" msgstr "" -#: fortran/parse.cc:3408 fortran/parse.cc:3862 +#: fortran/parse.cc:3412 fortran/parse.cc:3866 #, gcc-internal-format, gfc-internal-format msgid "Duplicate PRIVATE statement at %C" msgstr "" -#: fortran/parse.cc:3418 +#: fortran/parse.cc:3422 #, gcc-internal-format, gfc-internal-format msgid "SEQUENCE statement at %C must precede CONTAINS" msgstr "" -#: fortran/parse.cc:3422 +#: fortran/parse.cc:3426 #, gcc-internal-format, gfc-internal-format msgid "Already inside a CONTAINS block at %C" msgstr "" -#: fortran/parse.cc:3541 +#: fortran/parse.cc:3545 #, gcc-internal-format, gfc-internal-format msgid "" "Component %s at %L of type LOCK_TYPE must have a codimension or be a " @@ -81089,27 +81393,27 @@ msgid "" "pointer attribute" msgstr "" -#: fortran/parse.cc:3547 +#: fortran/parse.cc:3551 #, gcc-internal-format, gfc-internal-format msgid "" "Pointer component %s at %L has a noncoarray subcomponent of type LOCK_TYPE, " "which must have a codimension or be a subcomponent of a coarray" msgstr "" -#: fortran/parse.cc:3552 +#: fortran/parse.cc:3556 #, gcc-internal-format, gfc-internal-format msgid "" "Allocatable component %s at %L of type LOCK_TYPE must have a codimension" msgstr "" -#: fortran/parse.cc:3556 +#: fortran/parse.cc:3560 #, gcc-internal-format, gfc-internal-format msgid "" "Allocatable component %s at %L must have a codimension as it has a " "noncoarray subcomponent of type LOCK_TYPE" msgstr "" -#: fortran/parse.cc:3561 +#: fortran/parse.cc:3565 #, gcc-internal-format, gfc-internal-format msgid "" "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type " @@ -81118,7 +81422,7 @@ msgid "" "subcomponent exists)" msgstr "" -#: fortran/parse.cc:3568 +#: fortran/parse.cc:3572 #, gcc-internal-format, gfc-internal-format msgid "" "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type " @@ -81127,7 +81431,7 @@ msgid "" "codimension or a coarray subcomponent)" msgstr "" -#: fortran/parse.cc:3578 +#: fortran/parse.cc:3582 #, gcc-internal-format, gfc-internal-format msgid "" "Component %s at %L of type EVENT_TYPE must have a codimension or be a " @@ -81135,27 +81439,27 @@ msgid "" "pointer attribute" msgstr "" -#: fortran/parse.cc:3584 +#: fortran/parse.cc:3588 #, gcc-internal-format, gfc-internal-format msgid "" "Pointer component %s at %L has a noncoarray subcomponent of type EVENT_TYPE, " "which must have a codimension or be a subcomponent of a coarray" msgstr "" -#: fortran/parse.cc:3589 +#: fortran/parse.cc:3593 #, gcc-internal-format, gfc-internal-format msgid "" "Allocatable component %s at %L of type EVENT_TYPE must have a codimension" msgstr "" -#: fortran/parse.cc:3593 +#: fortran/parse.cc:3597 #, gcc-internal-format, gfc-internal-format msgid "" "Allocatable component %s at %L must have a codimension as it has a " "noncoarray subcomponent of type EVENT_TYPE" msgstr "" -#: fortran/parse.cc:3598 +#: fortran/parse.cc:3602 #, gcc-internal-format, gfc-internal-format msgid "" "Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of " @@ -81164,7 +81468,7 @@ msgid "" "subcomponent exists)" msgstr "" -#: fortran/parse.cc:3605 +#: fortran/parse.cc:3609 #, gcc-internal-format, gfc-internal-format msgid "" "Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of " @@ -81173,331 +81477,331 @@ msgid "" "codimension or a coarray subcomponent)" msgstr "" -#: fortran/parse.cc:3657 +#: fortran/parse.cc:3661 #, gcc-internal-format, gfc-internal-format msgid "failed to create map component '%s'" msgstr "" -#: fortran/parse.cc:3690 +#: fortran/parse.cc:3694 #, gcc-internal-format, gfc-internal-format msgid "failed to create union component '%s'" msgstr "" -#: fortran/parse.cc:3745 +#: fortran/parse.cc:3749 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in nested structure declaration at %C" msgstr "" -#: fortran/parse.cc:3832 +#: fortran/parse.cc:3836 #, gcc-internal-format, gfc-internal-format msgid "FINAL declaration at %C must be inside CONTAINS" msgstr "" -#: fortran/parse.cc:3840 +#: fortran/parse.cc:3844 #, gcc-internal-format, gfc-internal-format msgid "Derived type definition at %C without components" msgstr "" -#: fortran/parse.cc:3856 +#: fortran/parse.cc:3860 #, gcc-internal-format, gfc-internal-format msgid "PRIVATE statement at %C must precede structure components" msgstr "" -#: fortran/parse.cc:3873 +#: fortran/parse.cc:3877 #, gcc-internal-format, gfc-internal-format msgid "SEQUENCE statement at %C must precede structure components" msgstr "" -#: fortran/parse.cc:3879 +#: fortran/parse.cc:3883 #, gcc-internal-format, gfc-internal-format msgid "SEQUENCE attribute at %C already specified in TYPE statement" msgstr "" -#: fortran/parse.cc:3884 +#: fortran/parse.cc:3888 #, gcc-internal-format, gfc-internal-format msgid "Duplicate SEQUENCE statement at %C" msgstr "" -#: fortran/parse.cc:3894 +#: fortran/parse.cc:3898 #, gcc-internal-format, gfc-internal-format msgid "CONTAINS block in derived type definition at %C" msgstr "" -#: fortran/parse.cc:3952 +#: fortran/parse.cc:3956 #, gcc-internal-format, gfc-internal-format msgid "ENUM declaration at %C has no ENUMERATORS" msgstr "" -#: fortran/parse.cc:4039 +#: fortran/parse.cc:4043 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in INTERFACE block at %C" msgstr "" -#: fortran/parse.cc:4064 +#: fortran/parse.cc:4068 #, gcc-internal-format msgid "" "Name %qs of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type" msgstr "" -#: fortran/parse.cc:4095 +#: fortran/parse.cc:4099 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement at %C in INTERFACE body" msgstr "" -#: fortran/parse.cc:4113 +#: fortran/parse.cc:4117 #, gcc-internal-format msgid "" "INTERFACE procedure %qs at %L has the same name as the enclosing procedure" msgstr "" -#: fortran/parse.cc:4252 +#: fortran/parse.cc:4256 #, gcc-internal-format, gfc-internal-format msgid "%s statement is not allowed inside of BLOCK at %C" msgstr "" -#: fortran/parse.cc:4284 +#: fortran/parse.cc:4288 #, gcc-internal-format, gfc-internal-format msgid "%s statement is not allowed inside of BLOCK DATA at %C" msgstr "" -#: fortran/parse.cc:4368 +#: fortran/parse.cc:4372 #, gcc-internal-format, gfc-internal-format msgid "%s statement must appear in a MODULE" msgstr "" -#: fortran/parse.cc:4376 +#: fortran/parse.cc:4380 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C follows another accessibility specification" msgstr "" -#: fortran/parse.cc:4428 +#: fortran/parse.cc:4432 #, gcc-internal-format msgid "Bad kind expression for function %qs at %L" msgstr "" -#: fortran/parse.cc:4432 +#: fortran/parse.cc:4436 #, gcc-internal-format msgid "The type for function %qs at %L is not accessible" msgstr "" -#: fortran/parse.cc:4492 +#: fortran/parse.cc:4496 #, gcc-internal-format, gfc-internal-format msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE" msgstr "" -#: fortran/parse.cc:4514 +#: fortran/parse.cc:4518 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in WHERE block at %C" msgstr "" -#: fortran/parse.cc:4573 +#: fortran/parse.cc:4577 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in FORALL block at %C" msgstr "" -#: fortran/parse.cc:4624 +#: fortran/parse.cc:4628 #, gcc-internal-format, gfc-internal-format msgid "ELSE IF statement at %C cannot follow ELSE statement at %L" msgstr "" -#: fortran/parse.cc:4642 +#: fortran/parse.cc:4646 #, gcc-internal-format, gfc-internal-format msgid "Duplicate ELSE statements at %L and %C" msgstr "" -#: fortran/parse.cc:4703 +#: fortran/parse.cc:4707 #, gcc-internal-format, gfc-internal-format msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C" msgstr "" -#: fortran/parse.cc:4787 +#: fortran/parse.cc:4791 #, gcc-internal-format, gfc-internal-format msgid "" "Expected TYPE IS, CLASS IS or END SELECT statement following SELECT TYPE at " "%C" msgstr "" -#: fortran/parse.cc:4863 +#: fortran/parse.cc:4867 #, gcc-internal-format, gfc-internal-format msgid "Expected RANK or RANK DEFAULT following SELECT RANK at %C" msgstr "" -#: fortran/parse.cc:4927 +#: fortran/parse.cc:4931 #, gcc-internal-format msgid "Variable %qs at %C cannot be redefined inside loop beginning at %L" msgstr "" -#: fortran/parse.cc:4960 +#: fortran/parse.cc:4964 #, gcc-internal-format, gfc-internal-format msgid "End of nonblock DO statement at %C is within another block" msgstr "" -#: fortran/parse.cc:4970 +#: fortran/parse.cc:4974 #, gcc-internal-format, gfc-internal-format msgid "End of nonblock DO statement at %C is interwoven with another DO loop" msgstr "" -#: fortran/parse.cc:4996 +#: fortran/parse.cc:5000 #, gcc-internal-format, gfc-internal-format msgid "CRITICAL block inside of OpenACC region at %C" msgstr "" -#: fortran/parse.cc:4997 +#: fortran/parse.cc:5001 #, gcc-internal-format, gfc-internal-format msgid "CRITICAL block inside of OpenMP region at %C" msgstr "" -#: fortran/parse.cc:5023 +#: fortran/parse.cc:5027 #, gcc-internal-format, gfc-internal-format msgid "Statement label in END CRITICAL at %C does not match CRITICAL label" msgstr "" -#: fortran/parse.cc:5092 fortran/parse.cc:5951 +#: fortran/parse.cc:5096 fortran/parse.cc:5977 #, gcc-internal-format, gfc-internal-format msgid "BLOCK construct at %C" msgstr "" -#: fortran/parse.cc:5127 +#: fortran/parse.cc:5131 #, gcc-internal-format, gfc-internal-format msgid "ASSOCIATE construct at %C" msgstr "" -#: fortran/parse.cc:5384 +#: fortran/parse.cc:5410 #, gcc-internal-format, gfc-internal-format msgid "Statement label in ENDDO at %C doesn't match DO label" msgstr "" -#: fortran/parse.cc:5400 +#: fortran/parse.cc:5426 #, gcc-internal-format, gfc-internal-format msgid "Named block DO at %L requires matching ENDDO name" msgstr "" -#: fortran/parse.cc:5557 fortran/parse.cc:6109 fortran/parse.cc:6127 +#: fortran/parse.cc:5583 fortran/parse.cc:6135 fortran/parse.cc:6153 #, gcc-internal-format, gfc-internal-format msgid "Duplicated NOWAIT clause on %s and %s at %C" msgstr "" -#: fortran/parse.cc:5658 fortran/parse.cc:5720 +#: fortran/parse.cc:5684 fortran/parse.cc:5746 #, gcc-internal-format, gfc-internal-format msgid "OpenACC directive inside of CRITICAL block at %C" msgstr "" -#: fortran/parse.cc:5695 +#: fortran/parse.cc:5721 #, gcc-internal-format, gfc-internal-format msgid "Expecting %s at %C" msgstr "" -#: fortran/parse.cc:5739 +#: fortran/parse.cc:5765 #, gcc-internal-format, gfc-internal-format msgid "Expected DO loop at %C" msgstr "" -#: fortran/parse.cc:5759 +#: fortran/parse.cc:5785 #, gcc-internal-format, gfc-internal-format msgid "Redundant !$ACC END LOOP at %C" msgstr "" -#: fortran/parse.cc:5809 +#: fortran/parse.cc:5835 #, gcc-internal-format, gfc-internal-format msgid "%s statements at %L and %L have both no list item but only one may" msgstr "" -#: fortran/parse.cc:5829 +#: fortran/parse.cc:5855 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s at %C; expected ALLOCATE or %s statement" msgstr "" -#: fortran/parse.cc:5832 +#: fortran/parse.cc:5858 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s at %C; expected ALLOCATE statement after %s" msgstr "" -#: fortran/parse.cc:6120 +#: fortran/parse.cc:6146 #, gcc-internal-format, gfc-internal-format msgid "Name after !$omp critical and !$omp end critical does not match at %C" msgstr "" -#: fortran/parse.cc:6195 +#: fortran/parse.cc:6221 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C cannot terminate a non-block DO loop" msgstr "" -#: fortran/parse.cc:6209 +#: fortran/parse.cc:6235 #, gcc-internal-format, gfc-internal-format msgid "DATA statement at %C after the first executable statement" msgstr "" -#: fortran/parse.cc:6365 +#: fortran/parse.cc:6391 #, gcc-internal-format msgid "% directive not at the start of a loop at %C" msgstr "" -#: fortran/parse.cc:6368 +#: fortran/parse.cc:6394 #, gcc-internal-format msgid "% directive not at the start of a loop at %C" msgstr "" -#: fortran/parse.cc:6371 +#: fortran/parse.cc:6397 #, gcc-internal-format msgid "% directive not at the start of a loop at %C" msgstr "" -#: fortran/parse.cc:6374 +#: fortran/parse.cc:6400 #, gcc-internal-format msgid "% directive not at the start of a loop at %C" msgstr "" -#: fortran/parse.cc:6490 +#: fortran/parse.cc:6516 #, gcc-internal-format msgid "Contained procedure %qs at %C is already ambiguous" msgstr "" -#: fortran/parse.cc:6547 +#: fortran/parse.cc:6573 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in CONTAINS section at %C" msgstr "" -#: fortran/parse.cc:6572 +#: fortran/parse.cc:6598 #, gcc-internal-format, gfc-internal-format msgid "CONTAINS statement without FUNCTION or SUBROUTINE statement at %L" msgstr "" -#: fortran/parse.cc:6686 +#: fortran/parse.cc:6712 #, gcc-internal-format, gfc-internal-format msgid "CONTAINS statement at %C is already in a contained program unit" msgstr "" -#: fortran/parse.cc:6738 +#: fortran/parse.cc:6764 #, gcc-internal-format msgid "Global binding name %qs at %L is already being used as a %s at %L" msgstr "" -#: fortran/parse.cc:6742 +#: fortran/parse.cc:6768 #, gcc-internal-format msgid "Global name %qs at %L is already being used as a %s at %L" msgstr "" -#: fortran/parse.cc:6748 +#: fortran/parse.cc:6774 #, gcc-internal-format msgid "Global binding name %qs at %L is already being used at %L" msgstr "" -#: fortran/parse.cc:6751 +#: fortran/parse.cc:6777 #, gcc-internal-format msgid "Global name %qs at %L is already being used at %L" msgstr "" -#: fortran/parse.cc:6773 +#: fortran/parse.cc:6799 #, gcc-internal-format, gfc-internal-format msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L" msgstr "" -#: fortran/parse.cc:6799 +#: fortran/parse.cc:6825 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in BLOCK DATA at %C" msgstr "" -#: fortran/parse.cc:6902 +#: fortran/parse.cc:6928 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in MODULE at %C" msgstr "" @@ -81505,7 +81809,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.cc:7403 +#: fortran/parse.cc:7429 #, gcc-internal-format, gfc-internal-format msgid "Two main PROGRAMs at %L and %C" msgstr "" @@ -81740,349 +82044,349 @@ msgstr "" msgid "extend_ref(): Bad tail" msgstr "" -#: fortran/primary.cc:2073 +#: fortran/primary.cc:2097 #, gcc-internal-format msgid "" "Array section designator, e.g. %<(:)%>, is required besides the coarray " "designator %<[...]%> at %C" msgstr "" -#: fortran/primary.cc:2081 +#: fortran/primary.cc:2105 #, gcc-internal-format msgid "Coarray designator at %C but %qs is not a coarray" msgstr "" -#: fortran/primary.cc:2233 +#: fortran/primary.cc:2329 #, gcc-internal-format msgid "Symbol %qs at %C has no IMPLICIT type" msgstr "" -#: fortran/primary.cc:2240 +#: fortran/primary.cc:2336 #, gcc-internal-format msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C" msgstr "" -#: fortran/primary.cc:2261 +#: fortran/primary.cc:2357 #, gcc-internal-format, gfc-internal-format msgid "Expected structure component name at %C" msgstr "" -#: fortran/primary.cc:2281 fortran/primary.cc:2423 +#: fortran/primary.cc:2378 fortran/primary.cc:2553 #, gcc-internal-format, gfc-internal-format msgid "RE or IM part_ref at %C" msgstr "" -#: fortran/primary.cc:2300 fortran/primary.cc:2428 +#: fortran/primary.cc:2430 fortran/primary.cc:2558 #, gcc-internal-format, gfc-internal-format msgid "The RE or IM part_ref at %C must be applied to a COMPLEX expression" msgstr "" -#: fortran/primary.cc:2307 fortran/primary.cc:2441 +#: fortran/primary.cc:2437 fortran/primary.cc:2571 #, gcc-internal-format, gfc-internal-format msgid "The LEN part_ref at %C must be applied to a CHARACTER expression" msgstr "" -#: fortran/primary.cc:2366 +#: fortran/primary.cc:2496 #, gcc-internal-format, gfc-internal-format msgid "Expected argument list at %C" msgstr "" -#: fortran/primary.cc:2384 +#: fortran/primary.cc:2514 #, gcc-internal-format msgid "" "%qs at %C is not an inquiry reference to an intrinsic type component %qs" msgstr "" -#: fortran/primary.cc:2387 +#: fortran/primary.cc:2517 #, gcc-internal-format msgid "%qs at %C is not an inquiry reference to an intrinsic type component" msgstr "" -#: fortran/primary.cc:2457 +#: fortran/primary.cc:2587 #, gcc-internal-format, gfc-internal-format msgid "" "The KIND part_ref at %C must be applied to an expression of intrinsic type" msgstr "" -#: fortran/primary.cc:2485 +#: fortran/primary.cc:2615 #, gcc-internal-format msgid "Procedure pointer component %qs requires an argument list at %C" msgstr "" -#: fortran/primary.cc:2588 +#: fortran/primary.cc:2718 #, gcc-internal-format, gfc-internal-format msgid "Nonpolymorphic reference to abstract type at %C" msgstr "" -#: fortran/primary.cc:2595 +#: fortran/primary.cc:2725 #, gcc-internal-format, gfc-internal-format msgid "Coindexed procedure-pointer component at %C" msgstr "" -#: fortran/primary.cc:2633 +#: fortran/primary.cc:2763 #, gcc-internal-format msgid "gfc_variable_attr(): Expression isn't a variable" msgstr "" -#: fortran/primary.cc:2839 +#: fortran/primary.cc:2981 #, gcc-internal-format msgid "gfc_caf_attr(): Expression isn't a variable" msgstr "" -#: fortran/primary.cc:2896 +#: fortran/primary.cc:3038 #, gcc-internal-format msgid "gfc_caf_attr(): Bad array reference" msgstr "" -#: fortran/primary.cc:3075 +#: fortran/primary.cc:3217 #, gcc-internal-format msgid "" "No initializer for allocatable component %qs given in the structure " "constructor at %C" msgstr "" -#: fortran/primary.cc:3086 +#: fortran/primary.cc:3228 #, gcc-internal-format, gfc-internal-format msgid "Structure constructor with missing optional arguments at %C" msgstr "" -#: fortran/primary.cc:3095 +#: fortran/primary.cc:3237 #, gcc-internal-format msgid "" "No initializer for component %qs given in the structure constructor at %C" msgstr "" -#: fortran/primary.cc:3143 +#: fortran/primary.cc:3285 #, gcc-internal-format msgid "Cannot construct ABSTRACT type %qs at %L" msgstr "" -#: fortran/primary.cc:3163 +#: fortran/primary.cc:3305 #, gcc-internal-format, gfc-internal-format msgid "Structure constructor with named arguments at %C" msgstr "" -#: fortran/primary.cc:3178 +#: fortran/primary.cc:3320 #, gcc-internal-format, gfc-internal-format msgid "Component initializer without name after component named %s at %L" msgstr "" -#: fortran/primary.cc:3183 +#: fortran/primary.cc:3325 #, gcc-internal-format, gfc-internal-format msgid "Too many components in structure constructor at %L" msgstr "" -#: fortran/primary.cc:3242 +#: fortran/primary.cc:3384 msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L" msgstr "" -#: fortran/primary.cc:3260 +#: fortran/primary.cc:3402 #, gcc-internal-format msgid "Component %qs is initialized twice in the structure constructor at %L" msgstr "" -#: fortran/primary.cc:3272 +#: fortran/primary.cc:3414 #, gcc-internal-format msgid "" "Coindexed expression to pointer component %qs in structure constructor at %L" msgstr "" -#: fortran/primary.cc:3326 +#: fortran/primary.cc:3468 #, gcc-internal-format msgid "" "component %qs at %L has already been set by a parent derived type constructor" msgstr "" -#: fortran/primary.cc:3491 +#: fortran/primary.cc:3633 #, gcc-internal-format, gfc-internal-format msgid "%%LOC() as an rvalue at %C" msgstr "" -#: fortran/primary.cc:3550 +#: fortran/primary.cc:3692 #, 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.cc:3581 fortran/primary.cc:3983 +#: fortran/primary.cc:3723 fortran/primary.cc:4125 #, gcc-internal-format, gfc-internal-format msgid "Symbol at %C is not appropriate for an expression" msgstr "" -#: fortran/primary.cc:3686 +#: fortran/primary.cc:3828 #, gcc-internal-format msgid "Unexpected use of subroutine name %qs at %C" msgstr "" -#: fortran/primary.cc:3718 +#: fortran/primary.cc:3860 #, gcc-internal-format msgid "Statement function %qs requires argument list at %C" msgstr "" -#: fortran/primary.cc:3721 +#: fortran/primary.cc:3863 #, gcc-internal-format msgid "Function %qs requires an argument list at %C" msgstr "" -#: fortran/primary.cc:3771 +#: fortran/primary.cc:3913 #, gcc-internal-format msgid "Missing argument to %qs at %C" msgstr "" -#: fortran/primary.cc:3784 +#: fortran/primary.cc:3926 #, gcc-internal-format, gfc-internal-format msgid "" "The leftmost part-ref in a data-ref cannot be a function reference at %C" msgstr "" -#: fortran/primary.cc:3939 +#: fortran/primary.cc:4081 #, gcc-internal-format msgid "Missing argument list in function %qs at %C" msgstr "" -#: fortran/primary.cc:4053 +#: fortran/primary.cc:4195 #, gcc-internal-format msgid "Derived type %qs cannot be used as a variable at %C" msgstr "" -#: fortran/primary.cc:4094 +#: fortran/primary.cc:4236 #, gcc-internal-format, gfc-internal-format msgid "Named constant at %C in an EQUIVALENCE" msgstr "" -#: fortran/primary.cc:4099 +#: fortran/primary.cc:4241 #, gcc-internal-format msgid "PARAMETER %qs shall not appear in a DATA statement at %C" msgstr "" -#: fortran/primary.cc:4135 +#: fortran/primary.cc:4277 #, gcc-internal-format msgid "%qs at %C is not a variable" msgstr "" -#: fortran/resolve.cc:123 +#: fortran/resolve.cc:114 #, gcc-internal-format msgid "%qs at %L is of the ABSTRACT type %qs" msgstr "" -#: fortran/resolve.cc:126 +#: fortran/resolve.cc:117 #, gcc-internal-format msgid "ABSTRACT type %qs used at %L" msgstr "" -#: fortran/resolve.cc:143 +#: fortran/resolve.cc:134 #, gcc-internal-format msgid "Interface %qs at %L is declared in a later PROCEDURE statement" msgstr "" -#: fortran/resolve.cc:156 +#: fortran/resolve.cc:147 #, gcc-internal-format msgid "Interface %qs at %L may not be generic" msgstr "" -#: fortran/resolve.cc:163 +#: fortran/resolve.cc:154 #, gcc-internal-format msgid "Interface %qs at %L may not be a statement function" msgstr "" -#: fortran/resolve.cc:172 +#: fortran/resolve.cc:163 #, gcc-internal-format msgid "Intrinsic procedure %qs not allowed in PROCEDURE statement at %L" msgstr "" -#: fortran/resolve.cc:178 +#: fortran/resolve.cc:169 #, gcc-internal-format msgid "Interface %qs at %L must be explicit" msgstr "" -#: fortran/resolve.cc:200 +#: fortran/resolve.cc:191 #, gcc-internal-format msgid "PROCEDURE %qs at %L may not be used as its own interface" msgstr "" -#: fortran/resolve.cc:300 +#: fortran/resolve.cc:292 #, gcc-internal-format msgid "" "Alternate return specifier in elemental subroutine %qs at %L is not allowed" msgstr "" -#: fortran/resolve.cc:304 +#: fortran/resolve.cc:296 #, gcc-internal-format msgid "Alternate return specifier in function %qs at %L is not allowed" msgstr "" -#: fortran/resolve.cc:315 +#: fortran/resolve.cc:308 #, gcc-internal-format msgid "Self-referential argument %qs at %L is not allowed" msgstr "" -#: fortran/resolve.cc:387 +#: fortran/resolve.cc:380 #, gcc-internal-format msgid "Dummy procedure %qs of PURE procedure at %L must also be PURE" msgstr "" -#: fortran/resolve.cc:397 +#: fortran/resolve.cc:390 #, gcc-internal-format msgid "" "Argument %qs of pure function %qs at %L with VALUE attribute but without " "INTENT(IN)" msgstr "" -#: fortran/resolve.cc:402 +#: fortran/resolve.cc:395 #, gcc-internal-format msgid "Argument %qs of pure function %qs at %L must be INTENT(IN) or VALUE" msgstr "" -#: fortran/resolve.cc:410 +#: fortran/resolve.cc:403 #, gcc-internal-format msgid "" "Argument %qs of pure subroutine %qs at %L with VALUE attribute but without " "INTENT" msgstr "" -#: fortran/resolve.cc:415 +#: fortran/resolve.cc:408 #, gcc-internal-format msgid "" "Argument %qs of pure subroutine %qs at %L must have its INTENT specified or " "have the VALUE attribute" msgstr "" -#: fortran/resolve.cc:425 +#: fortran/resolve.cc:418 #, gcc-internal-format msgid "" "INTENT(OUT) argument %qs of pure procedure %qs at %L may not be polymorphic" msgstr "" -#: fortran/resolve.cc:458 +#: fortran/resolve.cc:451 #, gcc-internal-format msgid "Coarray dummy argument %qs at %L to elemental procedure" msgstr "" -#: fortran/resolve.cc:466 +#: fortran/resolve.cc:459 #, gcc-internal-format msgid "Argument %qs of elemental procedure at %L must be scalar" msgstr "" -#: fortran/resolve.cc:475 +#: fortran/resolve.cc:468 #, gcc-internal-format msgid "" "Argument %qs of elemental procedure at %L cannot have the ALLOCATABLE " "attribute" msgstr "" -#: fortran/resolve.cc:485 +#: fortran/resolve.cc:478 #, gcc-internal-format msgid "" "Argument %qs of elemental procedure at %L cannot have the POINTER attribute" msgstr "" -#: fortran/resolve.cc:493 +#: fortran/resolve.cc:486 #, gcc-internal-format msgid "Dummy procedure %qs not allowed in elemental procedure %qs at %L" msgstr "" -#: fortran/resolve.cc:502 +#: fortran/resolve.cc:495 #, gcc-internal-format msgid "" "Argument %qs of elemental procedure %qs at %L must have its INTENT specified " @@ -82091,311 +82395,311 @@ msgstr "" #. F03:C1263 (R1238) The function-name and each dummy-arg-name #. shall be specified, explicitly or implicitly, to be scalar. -#: fortran/resolve.cc:517 +#: fortran/resolve.cc:510 #, gcc-internal-format msgid "Argument %qs of statement function %qs at %L must be scalar" msgstr "" -#: fortran/resolve.cc:528 +#: fortran/resolve.cc:521 #, gcc-internal-format msgid "" "Character-valued argument %qs of statement function at %L must have constant " "length" msgstr "" -#: fortran/resolve.cc:577 +#: fortran/resolve.cc:571 #, gcc-internal-format msgid "" "Contained procedure %qs at %L has the same name as its encompassing procedure" msgstr "" -#: fortran/resolve.cc:597 +#: fortran/resolve.cc:591 #, gcc-internal-format msgid "Contained function %qs at %L has no IMPLICIT type" msgstr "" -#: fortran/resolve.cc:600 +#: fortran/resolve.cc:594 #, gcc-internal-format msgid "Result %qs of contained function %qs at %L has no IMPLICIT type" msgstr "" -#: fortran/resolve.cc:626 +#: fortran/resolve.cc:620 #, gcc-internal-format msgid "Character-valued module procedure %qs at %L must not be assumed length" msgstr "" -#: fortran/resolve.cc:628 +#: fortran/resolve.cc:622 #, gcc-internal-format msgid "Character-valued internal function %qs at %L must not be assumed length" msgstr "" -#: fortran/resolve.cc:801 +#: fortran/resolve.cc:795 #, gcc-internal-format, gfc-internal-format msgid "Function %s at %L has entries with mismatched array specifications" msgstr "" -#: fortran/resolve.cc:812 +#: fortran/resolve.cc:806 #, gcc-internal-format, gfc-internal-format msgid "Function %s at %L has entry %s with mismatched characteristics" msgstr "" -#: fortran/resolve.cc:827 +#: fortran/resolve.cc:821 #, gcc-internal-format, gfc-internal-format msgid "" "Function %s at %L with entries returning variables of different string " "lengths" msgstr "" -#: fortran/resolve.cc:859 +#: fortran/resolve.cc:853 #, gcc-internal-format, gfc-internal-format msgid "FUNCTION result %s cannot be an array in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:863 +#: fortran/resolve.cc:857 #, gcc-internal-format, gfc-internal-format msgid "ENTRY result %s cannot be an array in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:870 +#: fortran/resolve.cc:864 #, gcc-internal-format, gfc-internal-format msgid "FUNCTION result %s cannot be a POINTER in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:874 +#: fortran/resolve.cc:868 #, gcc-internal-format, gfc-internal-format msgid "ENTRY result %s cannot be a POINTER in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:881 +#: fortran/resolve.cc:875 #, gcc-internal-format, gfc-internal-format msgid "FUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:885 +#: fortran/resolve.cc:879 #, gcc-internal-format, gfc-internal-format msgid "ENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:923 +#: fortran/resolve.cc:917 #, gcc-internal-format, gfc-internal-format msgid "FUNCTION result %s cannot be of type %s in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:928 +#: fortran/resolve.cc:922 #, gcc-internal-format, gfc-internal-format msgid "ENTRY result %s cannot be of type %s in FUNCTION %s at %L" msgstr "" -#: fortran/resolve.cc:979 +#: fortran/resolve.cc:973 #, gcc-internal-format msgid "Global entity %qs at %L cannot appear in a COMMON block at %L" msgstr "" -#: fortran/resolve.cc:983 +#: fortran/resolve.cc:977 #, gcc-internal-format msgid "Global entity %qs at %L cannot appear in a COMMON block" msgstr "" -#: fortran/resolve.cc:993 +#: fortran/resolve.cc:987 #, gcc-internal-format, gfc-internal-format msgid "COMMON block at %L" msgstr "" -#: fortran/resolve.cc:1000 +#: fortran/resolve.cc:994 #, gcc-internal-format msgid "" "Variable %qs at %L is in COMMON but only in BLOCK DATA initialization is " "allowed" msgstr "" -#: fortran/resolve.cc:1004 +#: fortran/resolve.cc:998 #, gcc-internal-format msgid "" "Initialized variable %qs at %L is in a blank COMMON but initialization is " "only allowed in named common blocks" msgstr "" -#: fortran/resolve.cc:1011 +#: fortran/resolve.cc:1005 #, gcc-internal-format msgid "%qs at %L cannot appear in COMMON [F2008:C5100]" msgstr "" -#: fortran/resolve.cc:1016 +#: fortran/resolve.cc:1010 #, gcc-internal-format msgid "Automatic object %qs at %L cannot appear in COMMON at %L" msgstr "" -#: fortran/resolve.cc:1028 +#: fortran/resolve.cc:1022 #, gcc-internal-format msgid "" "Derived type variable %qs in COMMON at %L has neither the SEQUENCE nor the " "BIND(C) attribute" msgstr "" -#: fortran/resolve.cc:1032 +#: fortran/resolve.cc:1026 #, gcc-internal-format msgid "" "Derived type variable %qs in COMMON at %L has an ultimate component that is " "allocatable" msgstr "" -#: fortran/resolve.cc:1036 +#: fortran/resolve.cc:1030 #, gcc-internal-format msgid "" "Derived type variable %qs in COMMON at %L may not have default initializer" msgstr "" -#: fortran/resolve.cc:1080 +#: fortran/resolve.cc:1074 #, gcc-internal-format msgid "" "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus " "have the same binding name as the same-named COMMON block at %L: %s vs %s" msgstr "" -#: fortran/resolve.cc:1094 +#: fortran/resolve.cc:1088 #, gcc-internal-format msgid "COMMON block %qs at %L uses the same global identifier as entity at %L" msgstr "" -#: fortran/resolve.cc:1102 +#: fortran/resolve.cc:1096 #, gcc-internal-format msgid "" "Fortran 2008: COMMON block %qs with binding label at %L sharing the " "identifier with global non-COMMON-block entity at %L" msgstr "" -#: fortran/resolve.cc:1124 +#: fortran/resolve.cc:1118 #, gcc-internal-format msgid "" "COMMON block at %L with binding label %qs uses the same global identifier as " "entity at %L" msgstr "" -#: fortran/resolve.cc:1145 +#: fortran/resolve.cc:1139 #, gcc-internal-format msgid "COMMON block %qs at %L is used as PARAMETER at %L" msgstr "" -#: fortran/resolve.cc:1149 +#: fortran/resolve.cc:1143 #, gcc-internal-format msgid "COMMON block %qs at %L cannot have the EXTERNAL attribute" msgstr "" -#: fortran/resolve.cc:1153 +#: fortran/resolve.cc:1147 #, gcc-internal-format msgid "COMMON block %qs at %L is also an intrinsic procedure" msgstr "" -#: fortran/resolve.cc:1157 +#: fortran/resolve.cc:1151 #, gcc-internal-format msgid "COMMON block %qs at %L that is also a function result" msgstr "" -#: fortran/resolve.cc:1162 +#: fortran/resolve.cc:1156 #, gcc-internal-format msgid "COMMON block %qs at %L that is also a global procedure" msgstr "" -#: fortran/resolve.cc:1229 +#: fortran/resolve.cc:1223 #, gcc-internal-format msgid "The KIND parameter %qs in the PDT constructor at %C has no value" msgstr "" -#: fortran/resolve.cc:1372 +#: fortran/resolve.cc:1366 #, gcc-internal-format, gfc-internal-format msgid "" "The rank of the element in the structure constructor at %L does not match " "that of the component (%d/%d)" msgstr "" -#: fortran/resolve.cc:1393 +#: fortran/resolve.cc:1387 #, gcc-internal-format msgid "" "The element in the structure constructor at %L, for pointer component %qs, " "is %s but should be %s" msgstr "" -#: fortran/resolve.cc:1428 +#: fortran/resolve.cc:1422 #, gcc-internal-format msgid "" "Unequal character lengths (%wd/%wd) for pointer component %qs in constructor " "at %L" msgstr "" -#: fortran/resolve.cc:1473 +#: fortran/resolve.cc:1467 #, gcc-internal-format msgid "" "The NULL in the structure constructor at %L is being applied to component " "%qs, which is neither a POINTER nor ALLOCATABLE" msgstr "" -#: fortran/resolve.cc:1507 +#: fortran/resolve.cc:1501 #, gcc-internal-format msgid "" "Interface mismatch for procedure-pointer component %qs in structure " "constructor at %L: %s" msgstr "" -#: fortran/resolve.cc:1526 +#: fortran/resolve.cc:1520 #, gcc-internal-format msgid "" "Bad array spec of component %qs referenced in structure constructor at %L" msgstr "" -#: fortran/resolve.cc:1539 +#: fortran/resolve.cc:1533 #, gcc-internal-format msgid "" "The shape of component %qs in the structure constructor at %L differs from " "the shape of the declared component for dimension %d (%ld/%ld)" msgstr "" -#: fortran/resolve.cc:1560 +#: fortran/resolve.cc:1554 #, gcc-internal-format msgid "" "The element in the structure constructor at %L, for pointer component %qs " "should be a POINTER or a TARGET" msgstr "" -#: fortran/resolve.cc:1589 +#: fortran/resolve.cc:1583 #, gcc-internal-format msgid "" "Invalid expression in the structure constructor for pointer component %qs at " "%L in PURE procedure" msgstr "" -#: fortran/resolve.cc:1715 +#: fortran/resolve.cc:1709 #, gcc-internal-format msgid "" "The upper bound in the last dimension must appear in the reference to the " "assumed size array %qs at %L" msgstr "" -#: fortran/resolve.cc:1777 +#: fortran/resolve.cc:1771 #, gcc-internal-format msgid "%qs at %L is ambiguous" msgstr "" -#: fortran/resolve.cc:1781 +#: fortran/resolve.cc:1775 #, gcc-internal-format msgid "GENERIC procedure %qs is not allowed as an actual argument at %L" msgstr "" -#: fortran/resolve.cc:1902 +#: fortran/resolve.cc:1896 #, gcc-internal-format msgid "Type specified for intrinsic function %qs at %L is ignored" msgstr "" -#: fortran/resolve.cc:1915 +#: fortran/resolve.cc:1909 #, gcc-internal-format msgid "Intrinsic subroutine %qs at %L shall not have a type specifier" msgstr "" -#: fortran/resolve.cc:1926 +#: fortran/resolve.cc:1920 #, gcc-internal-format msgid "%qs declared INTRINSIC at %L does not exist" msgstr "" -#: fortran/resolve.cc:1939 +#: fortran/resolve.cc:1933 #, gcc-internal-format msgid "" "The intrinsic %qs declared INTRINSIC at %L is not available in the current " @@ -82403,89 +82707,96 @@ msgid "" "fall-intrinsics%> in order to use it." msgstr "" -#: fortran/resolve.cc:1975 +#: fortran/resolve.cc:1971 +#, gcc-internal-format +msgid "" +"Non-RECURSIVE procedure %qs from module %qs is possibly calling itself " +"recursively in procedure %qs. Declare it RECURSIVE or use %<-frecursive%>" +msgstr "" + +#: fortran/resolve.cc:1976 fortran/resolve.cc:6834 #, gcc-internal-format msgid "" "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively. " "Declare it RECURSIVE or use %<-frecursive%>" msgstr "" -#: fortran/resolve.cc:2033 fortran/resolve.cc:10557 fortran/resolve.cc:12539 +#: fortran/resolve.cc:2035 fortran/resolve.cc:10804 fortran/resolve.cc:12786 #, gcc-internal-format, gfc-internal-format msgid "Label %d referenced at %L is never defined" msgstr "" -#: fortran/resolve.cc:2065 +#: fortran/resolve.cc:2067 #, gcc-internal-format msgid "Derived type %qs is used as an actual argument at %L" msgstr "" -#: fortran/resolve.cc:2083 +#: fortran/resolve.cc:2085 #, gcc-internal-format msgid "Statement function %qs at %L is not allowed as an actual argument" msgstr "" -#: fortran/resolve.cc:2091 +#: fortran/resolve.cc:2093 #, gcc-internal-format msgid "Intrinsic %qs at %L is not allowed as an actual argument" msgstr "" -#: fortran/resolve.cc:2098 +#: fortran/resolve.cc:2100 #, gcc-internal-format msgid "Internal procedure %qs is used as actual argument at %L" msgstr "" -#: fortran/resolve.cc:2106 +#: fortran/resolve.cc:2108 #, gcc-internal-format msgid "" "ELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument " "at %L" msgstr "" -#: fortran/resolve.cc:2133 +#: fortran/resolve.cc:2135 #, gcc-internal-format msgid "" "Unable to find a specific INTRINSIC procedure for the reference %qs at %L" msgstr "" -#: fortran/resolve.cc:2155 +#: fortran/resolve.cc:2157 #, gcc-internal-format msgid "Symbol %qs at %L is ambiguous" msgstr "" -#: fortran/resolve.cc:2210 +#: fortran/resolve.cc:2212 #, gcc-internal-format, gfc-internal-format msgid "By-value argument at %L is not of numeric type" msgstr "" -#: fortran/resolve.cc:2217 +#: fortran/resolve.cc:2219 #, gcc-internal-format, gfc-internal-format msgid "By-value argument at %L cannot be an array or an array section" msgstr "" -#: fortran/resolve.cc:2231 +#: fortran/resolve.cc:2233 #, gcc-internal-format, gfc-internal-format msgid "By-value argument at %L is not allowed in this context" msgstr "" -#: fortran/resolve.cc:2243 +#: fortran/resolve.cc:2245 #, gcc-internal-format, gfc-internal-format msgid "Passing internal procedure at %L by location not allowed" msgstr "" -#: fortran/resolve.cc:2254 +#: fortran/resolve.cc:2256 #, gcc-internal-format msgid "" "ELEMENTAL procedure pointer component %qs is not allowed as an actual " "argument at %L" msgstr "" -#: fortran/resolve.cc:2263 +#: fortran/resolve.cc:2265 #, gcc-internal-format, gfc-internal-format msgid "Coindexed actual argument at %L with ultimate pointer component" msgstr "" -#: fortran/resolve.cc:2410 +#: fortran/resolve.cc:2412 #, gcc-internal-format msgid "" "%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be " @@ -82493,92 +82804,92 @@ msgid "" "argument with the same rank (Fortran 2018, 15.5.2.12)" msgstr "" -#: fortran/resolve.cc:2449 +#: fortran/resolve.cc:2451 #, gcc-internal-format msgid "" "Actual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs " "is a scalar, but another actual argument is an array" msgstr "" -#: fortran/resolve.cc:2723 +#: fortran/resolve.cc:2725 #, gcc-internal-format msgid "Return type mismatch of function %qs at %L (%s/%s)" msgstr "" -#: fortran/resolve.cc:2750 +#: fortran/resolve.cc:2752 #, gcc-internal-format msgid "Interface mismatch in global procedure %qs at %L: %s" msgstr "" -#: fortran/resolve.cc:2856 +#: fortran/resolve.cc:2858 #, gcc-internal-format msgid "There is no specific function for the generic %qs at %L" msgstr "" -#: fortran/resolve.cc:2876 +#: fortran/resolve.cc:2878 #, gcc-internal-format msgid "" "Generic function %qs at %L is not consistent with a specific intrinsic " "interface" msgstr "" -#: fortran/resolve.cc:2914 +#: fortran/resolve.cc:2916 #, gcc-internal-format msgid "Function %qs at %L is INTRINSIC but is not compatible with an intrinsic" msgstr "" -#: fortran/resolve.cc:2969 +#: fortran/resolve.cc:2971 #, gcc-internal-format msgid "Unable to resolve the specific function %qs at %L" msgstr "" -#: fortran/resolve.cc:3046 +#: fortran/resolve.cc:3048 #, gcc-internal-format msgid "" "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L" msgstr "" -#: fortran/resolve.cc:3078 +#: fortran/resolve.cc:3080 #, gcc-internal-format msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?" msgstr "" -#: fortran/resolve.cc:3082 fortran/resolve.cc:17846 +#: fortran/resolve.cc:3084 fortran/resolve.cc:18139 #, gcc-internal-format msgid "Function %qs at %L has no IMPLICIT type" msgstr "" -#: fortran/resolve.cc:3206 +#: fortran/resolve.cc:3208 #, gcc-internal-format msgid "Reference to impure function %qs at %L inside a FORALL %s" msgstr "" -#: fortran/resolve.cc:3213 +#: fortran/resolve.cc:3215 #, gcc-internal-format msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s" msgstr "" -#: fortran/resolve.cc:3220 +#: fortran/resolve.cc:3222 #, gcc-internal-format msgid "Reference to impure function %qs at %L within a PURE procedure" msgstr "" -#: fortran/resolve.cc:3287 +#: fortran/resolve.cc:3289 #, gcc-internal-format msgid "Unexpected junk after %qs at %L" msgstr "" -#: fortran/resolve.cc:3298 +#: fortran/resolve.cc:3300 #, gcc-internal-format msgid "%qs at %L is not a function" msgstr "" -#: fortran/resolve.cc:3306 fortran/resolve.cc:3821 +#: fortran/resolve.cc:3308 fortran/resolve.cc:3823 #, gcc-internal-format msgid "ABSTRACT INTERFACE %qs must not be referenced at %L" msgstr "" -#: fortran/resolve.cc:3318 +#: fortran/resolve.cc:3320 #, gcc-internal-format msgid "" "ABSTRACT INTERFACE %qs at %L must not have an assumed character length " @@ -82586,349 +82897,349 @@ msgid "" msgstr "" #. Internal procedures are taken care of in resolve_contained_fntype. -#: fortran/resolve.cc:3361 +#: fortran/resolve.cc:3363 #, gcc-internal-format msgid "" "Function %qs is declared CHARACTER(*) and cannot be used at %L since it is " "not a dummy argument" msgstr "" -#: fortran/resolve.cc:3395 +#: fortran/resolve.cc:3397 #, gcc-internal-format msgid "resolve_function(): bad function type" msgstr "" -#: fortran/resolve.cc:3409 +#: fortran/resolve.cc:3411 #, gcc-internal-format, gfc-internal-format msgid "" "A BOZ literal constant at %L cannot appear as an actual argument in a " "function reference" msgstr "" -#: fortran/resolve.cc:3425 +#: fortran/resolve.cc:3427 #, gcc-internal-format msgid "" "User defined non-ELEMENTAL function %qs at %L not allowed in WORKSHARE " "construct" msgstr "" -#: fortran/resolve.cc:3487 +#: fortran/resolve.cc:3489 #, gcc-internal-format msgid "" "ENTRY %qs at %L cannot be called recursively, as function %qs is not " "RECURSIVE" msgstr "" -#: fortran/resolve.cc:3491 +#: fortran/resolve.cc:3493 #, gcc-internal-format msgid "Function %qs at %L cannot be called recursively, as it is not RECURSIVE" msgstr "" -#: fortran/resolve.cc:3549 +#: fortran/resolve.cc:3551 #, gcc-internal-format msgid "Using function %qs at %L is deprecated" msgstr "" -#: fortran/resolve.cc:3565 +#: fortran/resolve.cc:3567 #, gcc-internal-format msgid "Subroutine call to %qs in FORALL block at %L is not PURE" msgstr "" -#: fortran/resolve.cc:3571 +#: fortran/resolve.cc:3573 #, gcc-internal-format msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE" msgstr "" -#: fortran/resolve.cc:3577 +#: fortran/resolve.cc:3579 #, gcc-internal-format msgid "Subroutine call to %qs at %L is not PURE" msgstr "" -#: fortran/resolve.cc:3645 +#: fortran/resolve.cc:3647 #, gcc-internal-format msgid "There is no specific subroutine for the generic %qs at %L" msgstr "" -#: fortran/resolve.cc:3654 +#: fortran/resolve.cc:3656 #, gcc-internal-format msgid "" "Generic subroutine %qs at %L is not consistent with an intrinsic subroutine " "interface" msgstr "" -#: fortran/resolve.cc:3689 +#: fortran/resolve.cc:3691 #, gcc-internal-format msgid "" "Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsic" msgstr "" -#: fortran/resolve.cc:3734 +#: fortran/resolve.cc:3736 #, gcc-internal-format msgid "Unable to resolve the specific subroutine %qs at %L" msgstr "" -#: fortran/resolve.cc:3792 +#: fortran/resolve.cc:3794 #, gcc-internal-format msgid "%qs at %L has a type, which is not consistent with the CALL at %L" msgstr "" -#: fortran/resolve.cc:3831 +#: fortran/resolve.cc:3833 #, gcc-internal-format msgid "" "ENTRY %qs at %L cannot be called recursively, as subroutine %qs is not " "RECURSIVE" msgstr "" -#: fortran/resolve.cc:3835 +#: fortran/resolve.cc:3837 #, gcc-internal-format msgid "" "SUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVE" msgstr "" -#: fortran/resolve.cc:3880 +#: fortran/resolve.cc:3882 #, gcc-internal-format msgid "resolve_subroutine(): bad function type" msgstr "" -#: fortran/resolve.cc:3897 +#: fortran/resolve.cc:3899 #, gcc-internal-format msgid "Using subroutine %qs at %L is deprecated" msgstr "" -#: fortran/resolve.cc:3924 +#: fortran/resolve.cc:3926 #, gcc-internal-format, gfc-internal-format msgid "Shapes for operands at %L and %L are not conformable" msgstr "" -#: fortran/resolve.cc:3976 +#: fortran/resolve.cc:3978 #, gcc-internal-format msgid "logical_to_bitwise(): Bad intrinsic" msgstr "" -#: fortran/resolve.cc:4079 +#: fortran/resolve.cc:4081 #, gcc-internal-format msgid "Impure function %qs at %L might not be evaluated" msgstr "" -#: fortran/resolve.cc:4083 +#: fortran/resolve.cc:4085 #, gcc-internal-format, gfc-internal-format msgid "Impure function at %L might not be evaluated" msgstr "" -#: fortran/resolve.cc:4170 +#: fortran/resolve.cc:4172 #, gcc-internal-format msgid "BOZ literal constant at %L cannot be an operand of unary operator %qs" msgstr "" -#: fortran/resolve.cc:4194 +#: fortran/resolve.cc:4196 #, gcc-internal-format msgid "Operands at %L and %L cannot appear as operands of binary operator %qs" msgstr "" -#: fortran/resolve.cc:4379 fortran/resolve.cc:4394 +#: fortran/resolve.cc:4381 fortran/resolve.cc:4396 #, gcc-internal-format, gfc-internal-format msgid "" "BOZ literal constant near %L cannot appear as an operand of a relational " "operator" msgstr "" -#: fortran/resolve.cc:4444 +#: fortran/resolve.cc:4446 #, gcc-internal-format, gfc-internal-format msgid "Equality comparison for %s at %L" msgstr "" -#: fortran/resolve.cc:4446 +#: fortran/resolve.cc:4448 #, gcc-internal-format, gfc-internal-format msgid "Inequality comparison for %s at %L" msgstr "" -#: fortran/resolve.cc:4506 +#: fortran/resolve.cc:4508 #, gcc-internal-format msgid "resolve_operator(): Bad intrinsic" msgstr "" -#: fortran/resolve.cc:4792 +#: fortran/resolve.cc:4794 #, gcc-internal-format, gfc-internal-format msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d" msgstr "" -#: fortran/resolve.cc:4797 +#: fortran/resolve.cc:4799 #, gcc-internal-format, gfc-internal-format msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d" msgstr "" -#: fortran/resolve.cc:4807 +#: fortran/resolve.cc:4809 #, gcc-internal-format, gfc-internal-format msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d" msgstr "" -#: fortran/resolve.cc:4812 +#: fortran/resolve.cc:4814 #, gcc-internal-format, gfc-internal-format msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d" msgstr "" -#: fortran/resolve.cc:4833 +#: fortran/resolve.cc:4835 #, gcc-internal-format, gfc-internal-format msgid "Illegal stride of zero at %L" msgstr "" -#: fortran/resolve.cc:4850 +#: fortran/resolve.cc:4852 #, gcc-internal-format, gfc-internal-format msgid "" "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d" msgstr "" -#: fortran/resolve.cc:4858 +#: fortran/resolve.cc:4860 #, gcc-internal-format, gfc-internal-format msgid "" "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d" msgstr "" -#: fortran/resolve.cc:4874 +#: fortran/resolve.cc:4876 #, gcc-internal-format, gfc-internal-format msgid "" "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d" msgstr "" -#: fortran/resolve.cc:4883 +#: fortran/resolve.cc:4885 #, gcc-internal-format, gfc-internal-format msgid "" "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d" msgstr "" -#: fortran/resolve.cc:4899 +#: fortran/resolve.cc:4901 #, gcc-internal-format msgid "check_dimension(): Bad array reference" msgstr "" -#: fortran/resolve.cc:4922 +#: fortran/resolve.cc:4924 #, gcc-internal-format, gfc-internal-format msgid "Rightmost upper bound of assumed size array section not specified at %L" msgstr "" -#: fortran/resolve.cc:4932 +#: fortran/resolve.cc:4934 #, gcc-internal-format, gfc-internal-format msgid "Rank mismatch in array reference at %L (%d/%d)" msgstr "" -#: fortran/resolve.cc:4940 +#: fortran/resolve.cc:4942 #, gcc-internal-format, gfc-internal-format msgid "Coindex rank mismatch in array reference at %L (%d/%d)" msgstr "" -#: fortran/resolve.cc:4956 +#: fortran/resolve.cc:4958 #, gcc-internal-format, gfc-internal-format msgid "Coindex of codimension %d must be a scalar at %L" msgstr "" -#: fortran/resolve.cc:4984 +#: fortran/resolve.cc:4986 #, gcc-internal-format, gfc-internal-format msgid "Array index at %L must be scalar" msgstr "" -#: fortran/resolve.cc:4990 +#: fortran/resolve.cc:4992 #, gcc-internal-format, gfc-internal-format msgid "Array index at %L must be of INTEGER type, found %s" msgstr "" -#: fortran/resolve.cc:4996 +#: fortran/resolve.cc:4998 #, gcc-internal-format, gfc-internal-format msgid "REAL array index at %L" msgstr "" -#: fortran/resolve.cc:5035 +#: fortran/resolve.cc:5037 #, gcc-internal-format, gfc-internal-format msgid "Argument dim at %L must be scalar" msgstr "" -#: fortran/resolve.cc:5042 +#: fortran/resolve.cc:5044 #, gcc-internal-format, gfc-internal-format msgid "Argument dim at %L must be of INTEGER type" msgstr "" -#: fortran/resolve.cc:5102 +#: fortran/resolve.cc:5104 #, gcc-internal-format, gfc-internal-format msgid "Invalid array reference of a non-array entity at %L" msgstr "" -#: fortran/resolve.cc:5116 +#: fortran/resolve.cc:5118 #, gcc-internal-format msgid "find_array_spec(): unused as(1)" msgstr "" -#: fortran/resolve.cc:5128 +#: fortran/resolve.cc:5130 #, gcc-internal-format msgid "find_array_spec(): unused as(2)" msgstr "" -#: fortran/resolve.cc:5173 +#: fortran/resolve.cc:5175 #, gcc-internal-format, gfc-internal-format msgid "Array index at %L is an array of rank %d" msgstr "" -#: fortran/resolve.cc:5271 +#: fortran/resolve.cc:5273 #, gcc-internal-format, gfc-internal-format msgid "Substring start index at %L must be of type INTEGER" msgstr "" -#: fortran/resolve.cc:5278 +#: fortran/resolve.cc:5280 #, gcc-internal-format, gfc-internal-format msgid "Substring start index at %L must be scalar" msgstr "" -#: fortran/resolve.cc:5300 +#: fortran/resolve.cc:5302 #, gcc-internal-format, gfc-internal-format msgid "Substring end index at %L must be of type INTEGER" msgstr "" -#: fortran/resolve.cc:5307 +#: fortran/resolve.cc:5309 #, gcc-internal-format, gfc-internal-format msgid "Substring end index at %L must be scalar" msgstr "" -#: fortran/resolve.cc:5327 +#: fortran/resolve.cc:5329 #, gcc-internal-format, gfc-internal-format msgid "Substring end index at %L is too large" msgstr "" -#: fortran/resolve.cc:5518 +#: fortran/resolve.cc:5520 #, gcc-internal-format msgid "resolve_ref(): Bad array reference" msgstr "" -#: fortran/resolve.cc:5532 +#: fortran/resolve.cc:5534 #, gcc-internal-format, gfc-internal-format msgid "" "Component to the right of a part reference with nonzero rank must not have " "the POINTER attribute at %L" msgstr "" -#: fortran/resolve.cc:5542 +#: fortran/resolve.cc:5544 #, gcc-internal-format, gfc-internal-format msgid "" "Component to the right of a part reference with nonzero rank must not have " "the ALLOCATABLE attribute at %L" msgstr "" -#: fortran/resolve.cc:5590 +#: fortran/resolve.cc:5592 #, gcc-internal-format, gfc-internal-format msgid "" "Two or more part references with nonzero rank must not be specified at %L" msgstr "" -#: fortran/resolve.cc:5682 +#: fortran/resolve.cc:5684 #, gcc-internal-format msgid "gfc_expression_rank(): Two array specs" msgstr "" -#: fortran/resolve.cc:5779 +#: fortran/resolve.cc:5781 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L with NO_ARG_CHECK attribute may only be used as actual " "argument" msgstr "" -#: fortran/resolve.cc:5789 +#: fortran/resolve.cc:5791 #, gcc-internal-format, gfc-internal-format msgid "Assumed-type variable %s at %L may only be used as actual argument" msgstr "" @@ -82937,14 +83248,14 @@ msgstr "" #. for all inquiry functions in resolve_function; the reason is #. that the function-name resolution happens too late in that #. function. -#: fortran/resolve.cc:5799 +#: fortran/resolve.cc:5801 #, gcc-internal-format, gfc-internal-format msgid "" "Assumed-type variable %s at %L as actual argument to an inquiry function " "shall be the first argument" msgstr "" -#: fortran/resolve.cc:5818 +#: fortran/resolve.cc:5820 #, gcc-internal-format, gfc-internal-format msgid "Assumed-rank variable %s at %L may only be used as actual argument" msgstr "" @@ -82953,326 +83264,326 @@ msgstr "" #. for all inquiry functions in resolve_function; the reason is #. that the function-name resolution happens too late in that #. function. -#: fortran/resolve.cc:5828 +#: fortran/resolve.cc:5830 #, gcc-internal-format, gfc-internal-format msgid "" "Assumed-rank variable %s at %L as actual argument to an inquiry function " "shall be the first argument" msgstr "" -#: fortran/resolve.cc:5839 +#: fortran/resolve.cc:5841 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L with NO_ARG_CHECK attribute shall not have a subobject " "reference" msgstr "" -#: fortran/resolve.cc:5848 +#: fortran/resolve.cc:5850 #, gcc-internal-format, gfc-internal-format msgid "Assumed-type variable %s at %L shall not have a subobject reference" msgstr "" -#: fortran/resolve.cc:5864 +#: fortran/resolve.cc:5866 #, gcc-internal-format, gfc-internal-format msgid "Assumed-rank variable %s at %L shall not have a subobject reference" msgstr "" -#: fortran/resolve.cc:5909 +#: fortran/resolve.cc:5923 #, gcc-internal-format msgid "Scalar variable %qs has an array reference at %L" msgstr "" -#: fortran/resolve.cc:6054 +#: fortran/resolve.cc:6068 #, gcc-internal-format msgid "" "Variable %qs, used in a specification expression, is referenced at %L before " "the ENTRY statement in which it is a parameter" msgstr "" -#: fortran/resolve.cc:6059 +#: fortran/resolve.cc:6073 #, gcc-internal-format msgid "" "Variable %qs is used at %L before the ENTRY statement in which it is a " "parameter" msgstr "" -#: fortran/resolve.cc:6129 +#: fortran/resolve.cc:6143 #, gcc-internal-format, gfc-internal-format msgid "Polymorphic subobject of coindexed object at %L" msgstr "" -#: fortran/resolve.cc:6142 +#: fortran/resolve.cc:6156 #, gcc-internal-format, gfc-internal-format msgid "Coindexed object with polymorphic allocatable subcomponent at %L" msgstr "" -#: fortran/resolve.cc:6158 +#: fortran/resolve.cc:6172 #, gcc-internal-format msgid "Using variable %qs at %L is deprecated" msgstr "" -#: fortran/resolve.cc:6248 +#: fortran/resolve.cc:6415 #, gcc-internal-format msgid "" "%qs at %L is host associated at %L into a contained procedure with an " "internal procedure of the same name" msgstr "" -#: fortran/resolve.cc:6426 fortran/resolve.cc:6578 +#: fortran/resolve.cc:6593 fortran/resolve.cc:6745 #, gcc-internal-format, gfc-internal-format msgid "Error in typebound call at %L" msgstr "" -#: fortran/resolve.cc:6542 +#: fortran/resolve.cc:6709 #, gcc-internal-format, gfc-internal-format msgid "Passed-object at %L must be scalar" msgstr "" -#: fortran/resolve.cc:6549 +#: fortran/resolve.cc:6716 #, gcc-internal-format msgid "" "Base object for procedure-pointer component call at %L is of ABSTRACT type " "%qs" msgstr "" -#: fortran/resolve.cc:6588 +#: fortran/resolve.cc:6755 #, gcc-internal-format msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs" msgstr "" -#: fortran/resolve.cc:6597 +#: fortran/resolve.cc:6764 #, gcc-internal-format, gfc-internal-format msgid "Base object for NOPASS type-bound procedure call at %L must be scalar" msgstr "" #. Nothing matching found! -#: fortran/resolve.cc:6785 +#: fortran/resolve.cc:6959 #, gcc-internal-format msgid "" "Found no matching specific binding for the call to the GENERIC %qs at %L" msgstr "" -#: fortran/resolve.cc:6819 +#: fortran/resolve.cc:6993 #, gcc-internal-format msgid "%qs at %L should be a SUBROUTINE" msgstr "" -#: fortran/resolve.cc:6871 +#: fortran/resolve.cc:7045 #, gcc-internal-format msgid "%qs at %L should be a FUNCTION" msgstr "" -#: fortran/resolve.cc:7406 +#: fortran/resolve.cc:7580 #, gcc-internal-format msgid "gfc_resolve_expr(): Bad expression type" msgstr "" -#: fortran/resolve.cc:7439 +#: fortran/resolve.cc:7613 #, gcc-internal-format, gfc-internal-format msgid "%s at %L must be a scalar" msgstr "" -#: fortran/resolve.cc:7449 +#: fortran/resolve.cc:7623 #, gcc-internal-format, gfc-internal-format msgid "%s at %L must be integer" msgstr "" -#: fortran/resolve.cc:7453 fortran/resolve.cc:7460 +#: fortran/resolve.cc:7627 fortran/resolve.cc:7634 #, gcc-internal-format, gfc-internal-format msgid "%s at %L must be INTEGER" msgstr "" -#: fortran/resolve.cc:7515 +#: fortran/resolve.cc:7689 #, gcc-internal-format, gfc-internal-format msgid "Step expression in DO loop at %L cannot be zero" msgstr "" -#: fortran/resolve.cc:7538 +#: fortran/resolve.cc:7712 #, gcc-internal-format, gfc-internal-format msgid "DO loop at %L will be executed zero times" msgstr "" -#: fortran/resolve.cc:7555 +#: fortran/resolve.cc:7729 #, gcc-internal-format, gfc-internal-format msgid "DO loop at %L is undefined as it overflows" msgstr "" -#: fortran/resolve.cc:7561 +#: fortran/resolve.cc:7735 #, gcc-internal-format, gfc-internal-format msgid "DO loop at %L is undefined as it underflows" msgstr "" -#: fortran/resolve.cc:7622 +#: fortran/resolve.cc:7796 #, gcc-internal-format, gfc-internal-format msgid "FORALL index-name at %L must be a scalar INTEGER" msgstr "" -#: fortran/resolve.cc:7627 +#: fortran/resolve.cc:7801 #, gcc-internal-format, gfc-internal-format msgid "FORALL start expression at %L must be a scalar INTEGER" msgstr "" -#: fortran/resolve.cc:7634 +#: fortran/resolve.cc:7808 #, gcc-internal-format, gfc-internal-format msgid "FORALL end expression at %L must be a scalar INTEGER" msgstr "" -#: fortran/resolve.cc:7642 +#: fortran/resolve.cc:7816 #, gcc-internal-format, gfc-internal-format msgid "FORALL stride expression at %L must be a scalar %s" msgstr "" -#: fortran/resolve.cc:7647 +#: fortran/resolve.cc:7821 #, gcc-internal-format, gfc-internal-format msgid "FORALL stride expression at %L cannot be zero" msgstr "" -#: fortran/resolve.cc:7660 +#: fortran/resolve.cc:7834 #, gcc-internal-format msgid "FORALL index %qs may not appear in triplet specification at %L" msgstr "" -#: fortran/resolve.cc:7765 fortran/resolve.cc:8063 +#: fortran/resolve.cc:7939 fortran/resolve.cc:8237 #, gcc-internal-format, gfc-internal-format msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER" msgstr "" -#: fortran/resolve.cc:7773 fortran/resolve.cc:8026 +#: fortran/resolve.cc:7947 fortran/resolve.cc:8200 #, gcc-internal-format, gfc-internal-format msgid "Coindexed allocatable object at %L" msgstr "" -#: fortran/resolve.cc:7883 +#: fortran/resolve.cc:8057 #, gcc-internal-format, gfc-internal-format msgid "" "Source-expr at %L must be scalar or have the same rank as the allocate-" "object at %L" msgstr "" -#: fortran/resolve.cc:7914 +#: fortran/resolve.cc:8088 #, gcc-internal-format, gfc-internal-format msgid "Source-expr at %L and allocate-object at %L must have the same shape" msgstr "" -#: fortran/resolve.cc:8074 +#: fortran/resolve.cc:8248 #, gcc-internal-format, gfc-internal-format msgid "Type of entity at %L is type incompatible with source-expr at %L" msgstr "" -#: fortran/resolve.cc:8086 +#: fortran/resolve.cc:8260 #, gcc-internal-format, gfc-internal-format msgid "" "The allocate-object at %L and the source-expr at %L shall have the same kind " "type parameter" msgstr "" -#: fortran/resolve.cc:8100 +#: fortran/resolve.cc:8274 #, gcc-internal-format, gfc-internal-format msgid "" "The source-expr at %L shall neither be of type LOCK_TYPE nor have a " "LOCK_TYPE component if allocate-object at %L is a coarray" msgstr "" -#: fortran/resolve.cc:8115 +#: fortran/resolve.cc:8289 #, gcc-internal-format, gfc-internal-format msgid "" "The source-expr at %L shall neither be of type EVENT_TYPE nor have a " "EVENT_TYPE component if allocate-object at %L is a coarray" msgstr "" -#: fortran/resolve.cc:8128 +#: fortran/resolve.cc:8302 #, gcc-internal-format, gfc-internal-format msgid "" "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr" msgstr "" -#: fortran/resolve.cc:8146 +#: fortran/resolve.cc:8320 #, gcc-internal-format, gfc-internal-format msgid "" "Allocating %s at %L with type-spec requires the same character-length " "parameter as in the declaration" msgstr "" -#: fortran/resolve.cc:8230 fortran/resolve.cc:8245 +#: fortran/resolve.cc:8404 fortran/resolve.cc:8419 #, gcc-internal-format, gfc-internal-format msgid "Array specification required in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.cc:8237 +#: fortran/resolve.cc:8411 #, gcc-internal-format, gfc-internal-format msgid "" "Array specification or array-valued SOURCE= expression required in ALLOCATE " "statement at %L" msgstr "" -#: fortran/resolve.cc:8262 +#: fortran/resolve.cc:8436 #, gcc-internal-format, gfc-internal-format msgid "Coarray specification required in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.cc:8272 fortran/resolve.cc:8374 +#: fortran/resolve.cc:8446 fortran/resolve.cc:8548 #, gcc-internal-format, gfc-internal-format msgid "Bad coarray specification in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.cc:8278 +#: fortran/resolve.cc:8452 #, gcc-internal-format, gfc-internal-format msgid "Upper cobound is less than lower cobound at %L" msgstr "" -#: fortran/resolve.cc:8290 +#: fortran/resolve.cc:8464 #, gcc-internal-format, gfc-internal-format msgid "Upper cobound is less than lower cobound of 1 at %L" msgstr "" -#: fortran/resolve.cc:8301 fortran/resolve.cc:8329 +#: fortran/resolve.cc:8475 fortran/resolve.cc:8503 #, gcc-internal-format, gfc-internal-format msgid "Bad array specification in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.cc:8348 +#: fortran/resolve.cc:8522 #, 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.cc:8363 +#: fortran/resolve.cc:8537 #, gcc-internal-format msgid "Expected %<*%> in coindex specification in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.cc:8405 +#: fortran/resolve.cc:8579 #, gcc-internal-format, gfc-internal-format msgid "Stat-variable at %L must be a scalar INTEGER variable" msgstr "" -#: fortran/resolve.cc:8434 +#: fortran/resolve.cc:8608 #, gcc-internal-format, gfc-internal-format msgid "Stat-variable at %L shall not be %sd within the same %s statement" msgstr "" -#: fortran/resolve.cc:8447 +#: fortran/resolve.cc:8621 #, gcc-internal-format, gfc-internal-format msgid "ERRMSG at %L is useless without a STAT tag" msgstr "" -#: fortran/resolve.cc:8461 +#: fortran/resolve.cc:8635 #, gcc-internal-format, gfc-internal-format msgid "ERRMSG variable at %L shall be a scalar default CHARACTER variable" msgstr "" -#: fortran/resolve.cc:8490 +#: fortran/resolve.cc:8664 #, gcc-internal-format, gfc-internal-format msgid "Errmsg-variable at %L shall not be %sd within the same %s statement" msgstr "" -#: fortran/resolve.cc:8522 +#: fortran/resolve.cc:8696 #, gcc-internal-format, gfc-internal-format msgid "Allocate-object at %L also appears at %L" msgstr "" -#: fortran/resolve.cc:8528 fortran/resolve.cc:8534 +#: fortran/resolve.cc:8702 fortran/resolve.cc:8708 #, gcc-internal-format, gfc-internal-format msgid "Allocate-object at %L is subobject of object at %L" msgstr "" @@ -83281,301 +83592,301 @@ 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.cc:8762 +#: fortran/resolve.cc:8936 #, gcc-internal-format, gfc-internal-format msgid "CASE label at %L overlaps with CASE label at %L" msgstr "" -#: fortran/resolve.cc:8813 +#: fortran/resolve.cc:8987 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L must be of type %s" msgstr "" -#: fortran/resolve.cc:8824 +#: fortran/resolve.cc:8998 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L must be of kind %d" msgstr "" -#: fortran/resolve.cc:8837 +#: fortran/resolve.cc:9011 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L must be scalar" msgstr "" -#: fortran/resolve.cc:8883 +#: fortran/resolve.cc:9057 #, gcc-internal-format, gfc-internal-format msgid "" "Selection expression in computed GOTO statement at %L must be a scalar " "integer expression" msgstr "" -#: fortran/resolve.cc:8902 +#: fortran/resolve.cc:9076 #, gcc-internal-format, gfc-internal-format msgid "Argument of SELECT statement at %L cannot be %s" msgstr "" -#: fortran/resolve.cc:8912 +#: fortran/resolve.cc:9086 #, gcc-internal-format, gfc-internal-format msgid "Argument of SELECT statement at %L must be a scalar expression" msgstr "" -#: fortran/resolve.cc:8930 fortran/resolve.cc:8938 +#: fortran/resolve.cc:9104 fortran/resolve.cc:9112 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L is not in the range of %s" msgstr "" -#: fortran/resolve.cc:9000 fortran/resolve.cc:9691 +#: fortran/resolve.cc:9174 fortran/resolve.cc:9938 #, 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.cc:9026 +#: fortran/resolve.cc:9200 #, gcc-internal-format, gfc-internal-format msgid "Logical range in CASE statement at %L is not allowed" msgstr "" -#: fortran/resolve.cc:9039 +#: fortran/resolve.cc:9213 #, gcc-internal-format, gfc-internal-format msgid "Constant logical value in CASE statement is repeated at %L" msgstr "" -#: fortran/resolve.cc:9054 +#: fortran/resolve.cc:9228 #, gcc-internal-format, gfc-internal-format msgid "Range specification at %L can never be matched" msgstr "" -#: fortran/resolve.cc:9157 +#: fortran/resolve.cc:9331 #, gcc-internal-format, gfc-internal-format msgid "Logical SELECT CASE block at %L has more that two cases" msgstr "" -#: fortran/resolve.cc:9219 +#: fortran/resolve.cc:9393 #, gcc-internal-format msgid "Associating entity %qs at %L is a procedure pointer" msgstr "" -#: fortran/resolve.cc:9228 +#: fortran/resolve.cc:9402 #, gcc-internal-format msgid "Derived type %qs cannot be used as a variable at %L" msgstr "" -#: fortran/resolve.cc:9245 +#: fortran/resolve.cc:9419 #, gcc-internal-format msgid "Associating entity %qs at %L is a procedure name" msgstr "" -#: fortran/resolve.cc:9261 +#: fortran/resolve.cc:9435 #, gcc-internal-format, gfc-internal-format msgid "Associating selector-expression at %L yields a procedure" msgstr "" -#: fortran/resolve.cc:9268 +#: fortran/resolve.cc:9489 #, gcc-internal-format, gfc-internal-format msgid "Selector at %L cannot be NULL()" msgstr "" -#: fortran/resolve.cc:9273 +#: fortran/resolve.cc:9494 #, gcc-internal-format, gfc-internal-format msgid "Selector at %L has no type" msgstr "" -#: fortran/resolve.cc:9297 +#: fortran/resolve.cc:9552 #, gcc-internal-format msgid "Associate-name %qs at %L is used as array" msgstr "" -#: fortran/resolve.cc:9307 +#: fortran/resolve.cc:9563 #, gcc-internal-format, gfc-internal-format msgid "CLASS selector at %L needs a temporary which is not yet implemented" msgstr "" -#: fortran/resolve.cc:9555 +#: fortran/resolve.cc:9802 #, gcc-internal-format, gfc-internal-format msgid "Selector shall be polymorphic in SELECT TYPE statement at %L" msgstr "" -#: fortran/resolve.cc:9599 fortran/resolve.cc:9611 +#: fortran/resolve.cc:9846 fortran/resolve.cc:9858 #, gcc-internal-format, gfc-internal-format msgid "Selector at %L must not be coindexed" msgstr "" -#: fortran/resolve.cc:9640 +#: fortran/resolve.cc:9887 #, gcc-internal-format, gfc-internal-format msgid "TYPE IS at %L overlaps with TYPE IS at %L" msgstr "" -#: fortran/resolve.cc:9653 +#: fortran/resolve.cc:9900 #, gcc-internal-format msgid "Derived type %qs at %L must be extensible" msgstr "" -#: fortran/resolve.cc:9666 +#: fortran/resolve.cc:9913 #, gcc-internal-format msgid "Derived type %qs at %L must be an extension of %qs" msgstr "" -#: fortran/resolve.cc:9669 +#: fortran/resolve.cc:9916 #, gcc-internal-format msgid "Unexpected intrinsic type %qs at %L" msgstr "" -#: fortran/resolve.cc:9679 +#: fortran/resolve.cc:9926 #, gcc-internal-format, gfc-internal-format msgid "" "The type-spec at %L shall specify that each length type parameter is assumed" msgstr "" -#: fortran/resolve.cc:9926 +#: fortran/resolve.cc:10173 #, gcc-internal-format, gfc-internal-format msgid "Double CLASS IS block in SELECT TYPE statement at %L" msgstr "" -#: fortran/resolve.cc:10059 +#: fortran/resolve.cc:10306 #, gcc-internal-format, gfc-internal-format msgid "RANK DEFAULT at %L is repeated at %L" msgstr "" -#: fortran/resolve.cc:10068 +#: fortran/resolve.cc:10315 #, gcc-internal-format, gfc-internal-format msgid "RANK (*) at %L is repeated at %L" msgstr "" -#: fortran/resolve.cc:10071 +#: fortran/resolve.cc:10318 #, gcc-internal-format, gfc-internal-format msgid "RANK (%i) at %L is repeated at %L" msgstr "" -#: fortran/resolve.cc:10081 +#: fortran/resolve.cc:10328 #, gcc-internal-format, gfc-internal-format msgid "" "RANK (*) at %L cannot be used with the pointer or allocatable selector at %L" msgstr "" -#: fortran/resolve.cc:10190 +#: fortran/resolve.cc:10437 #, gcc-internal-format, gfc-internal-format msgid "Invalid context for NULL () intrinsic at %L" msgstr "" -#: fortran/resolve.cc:10244 +#: fortran/resolve.cc:10491 #, gcc-internal-format, gfc-internal-format msgid "DTIO %s procedure at %L must be recursive" msgstr "" -#: fortran/resolve.cc:10254 +#: fortran/resolve.cc:10501 #, 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.cc:10267 +#: fortran/resolve.cc:10514 #, 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.cc:10276 +#: fortran/resolve.cc:10523 #, gcc-internal-format, gfc-internal-format msgid "Data transfer element at %L cannot have procedure pointer components" msgstr "" -#: fortran/resolve.cc:10283 +#: fortran/resolve.cc:10530 #, 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.cc:10294 +#: fortran/resolve.cc:10541 #, gcc-internal-format, gfc-internal-format msgid "Data transfer element at %L cannot have PRIVATE components" msgstr "" -#: fortran/resolve.cc:10300 +#: fortran/resolve.cc:10547 #, gcc-internal-format, gfc-internal-format msgid "" "Data transfer element at %L cannot have PRIVATE components unless it is " "processed by a defined input/output procedure" msgstr "" -#: fortran/resolve.cc:10318 +#: fortran/resolve.cc:10565 #, 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.cc:10375 +#: fortran/resolve.cc:10622 #, gcc-internal-format, gfc-internal-format msgid "Lock variable at %L must be a scalar of type LOCK_TYPE" msgstr "" -#: fortran/resolve.cc:10385 +#: fortran/resolve.cc:10632 #, gcc-internal-format, gfc-internal-format msgid "Event variable at %L must be a scalar of type EVENT_TYPE" msgstr "" -#: fortran/resolve.cc:10389 +#: fortran/resolve.cc:10636 #, gcc-internal-format, gfc-internal-format msgid "Event variable argument at %L must be a coarray or coindexed" msgstr "" -#: fortran/resolve.cc:10392 +#: fortran/resolve.cc:10639 #, gcc-internal-format, gfc-internal-format msgid "Event variable argument at %L must be a coarray but not coindexed" msgstr "" -#: fortran/resolve.cc:10399 fortran/resolve.cc:10521 +#: fortran/resolve.cc:10646 fortran/resolve.cc:10768 #, gcc-internal-format, gfc-internal-format msgid "STAT= argument at %L must be a scalar INTEGER variable" msgstr "" -#: fortran/resolve.cc:10411 fortran/resolve.cc:10533 +#: fortran/resolve.cc:10658 fortran/resolve.cc:10780 #, gcc-internal-format, gfc-internal-format msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable" msgstr "" -#: fortran/resolve.cc:10423 +#: fortran/resolve.cc:10670 #, gcc-internal-format, gfc-internal-format msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable" msgstr "" -#: fortran/resolve.cc:10436 +#: fortran/resolve.cc:10683 #, gcc-internal-format, gfc-internal-format msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression" msgstr "" -#: fortran/resolve.cc:10497 +#: fortran/resolve.cc:10744 #, gcc-internal-format, gfc-internal-format msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression" msgstr "" -#: fortran/resolve.cc:10501 fortran/resolve.cc:10511 +#: fortran/resolve.cc:10748 fortran/resolve.cc:10758 #, gcc-internal-format, gfc-internal-format msgid "Imageset argument at %L must between 1 and num_images()" msgstr "" -#: fortran/resolve.cc:10564 +#: fortran/resolve.cc:10811 #, 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.cc:10574 +#: fortran/resolve.cc:10821 #, 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.cc:10591 fortran/resolve.cc:10614 +#: fortran/resolve.cc:10838 fortran/resolve.cc:10861 #, gcc-internal-format, gfc-internal-format msgid "GOTO statement at %L leaves CRITICAL construct for label at %L" msgstr "" -#: fortran/resolve.cc:10595 fortran/resolve.cc:10620 +#: fortran/resolve.cc:10842 fortran/resolve.cc:10867 #, gcc-internal-format, gfc-internal-format msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L" msgstr "" @@ -83583,80 +83894,80 @@ 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.cc:10635 +#: fortran/resolve.cc:10882 #, 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.cc:10707 +#: fortran/resolve.cc:10954 #, gcc-internal-format, gfc-internal-format msgid "WHERE mask at %L has inconsistent shape" msgstr "" -#: fortran/resolve.cc:10723 +#: fortran/resolve.cc:10970 #, gcc-internal-format, gfc-internal-format msgid "WHERE assignment target at %L has inconsistent shape" msgstr "" -#: fortran/resolve.cc:10736 fortran/resolve.cc:10828 +#: fortran/resolve.cc:10983 fortran/resolve.cc:11075 #, gcc-internal-format, gfc-internal-format msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L" msgstr "" -#: fortran/resolve.cc:10746 fortran/resolve.cc:10838 +#: fortran/resolve.cc:10993 fortran/resolve.cc:11085 #, gcc-internal-format, gfc-internal-format msgid "Unsupported statement inside WHERE at %L" msgstr "" -#: fortran/resolve.cc:10777 +#: fortran/resolve.cc:11024 #, gcc-internal-format, gfc-internal-format msgid "Assignment to a FORALL index variable at %L" msgstr "" -#: fortran/resolve.cc:10786 +#: fortran/resolve.cc:11033 #, 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.cc:10943 +#: fortran/resolve.cc:11190 #, gcc-internal-format, gfc-internal-format msgid "FORALL construct at %L" msgstr "" -#: fortran/resolve.cc:10964 +#: fortran/resolve.cc:11211 #, gcc-internal-format, gfc-internal-format msgid "FORALL index-name at %L must be a scalar variable of type integer" msgstr "" -#: fortran/resolve.cc:10974 +#: fortran/resolve.cc:11221 #, gcc-internal-format, gfc-internal-format msgid "An outer FORALL construct already has an index with this name %L" msgstr "" -#: fortran/resolve.cc:11051 +#: fortran/resolve.cc:11298 #, gcc-internal-format, gfc-internal-format msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array" msgstr "" -#: fortran/resolve.cc:11169 +#: fortran/resolve.cc:11416 #, gcc-internal-format msgid "gfc_resolve_blocks(): Bad block type" msgstr "" -#: fortran/resolve.cc:11232 +#: fortran/resolve.cc:11479 #, gcc-internal-format, gfc-internal-format msgid "" "Variable in the ordinary assignment at %L is a procedure pointer component" msgstr "" -#: fortran/resolve.cc:11293 +#: fortran/resolve.cc:11540 #, gcc-internal-format msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L" msgstr "" -#: fortran/resolve.cc:11325 +#: fortran/resolve.cc:11572 #, gcc-internal-format, gfc-internal-format msgid "" "Coindexed expression at %L is assigned to a derived type variable with a " @@ -83664,7 +83975,7 @@ msgid "" msgstr "" #. F2008, C1283 (4). -#: fortran/resolve.cc:11331 +#: fortran/resolve.cc:11578 #, gcc-internal-format, gfc-internal-format msgid "" "In a pure subprogram an INTENT(IN) dummy argument shall not be used as the " @@ -83673,43 +83984,43 @@ msgid "" "component selection." msgstr "" -#: fortran/resolve.cc:11343 +#: fortran/resolve.cc:11590 #, gcc-internal-format, gfc-internal-format msgid "Assignment to coindexed variable at %L in a PURE procedure" msgstr "" -#: fortran/resolve.cc:11375 +#: fortran/resolve.cc:11622 #, gcc-internal-format, gfc-internal-format msgid "Assignment to polymorphic coarray at %L is not permitted" msgstr "" -#: fortran/resolve.cc:11379 +#: fortran/resolve.cc:11626 #, gcc-internal-format, gfc-internal-format msgid "Assignment to an allocatable polymorphic variable at %L" msgstr "" -#: fortran/resolve.cc:11384 +#: fortran/resolve.cc:11631 #, gcc-internal-format msgid "" "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-" "lhs%>" msgstr "" -#: fortran/resolve.cc:11391 +#: fortran/resolve.cc:11638 #, gcc-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.cc:11402 +#: fortran/resolve.cc:11649 #, gcc-internal-format, gfc-internal-format msgid "" "Coindexed variable must not have an allocatable ultimate component in " "assignment at %L" msgstr "" -#: fortran/resolve.cc:11825 +#: fortran/resolve.cc:12072 #, gcc-internal-format, gfc-internal-format msgid "" "TODO: type-bound defined assignment(s) at %L not done because multiple part " @@ -83718,93 +84029,93 @@ msgstr "" #. Even if standard does not support this feature, continue to build #. the two statements to avoid upsetting frontend_passes.c. -#: fortran/resolve.cc:12129 +#: fortran/resolve.cc:12376 #, gcc-internal-format, gfc-internal-format msgid "Pointer procedure assignment at %L" msgstr "" -#: fortran/resolve.cc:12141 +#: fortran/resolve.cc:12388 #, 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.cc:12226 +#: fortran/resolve.cc:12473 #, gcc-internal-format msgid "" "TEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPE" msgstr "" -#: fortran/resolve.cc:12417 +#: fortran/resolve.cc:12664 #, gcc-internal-format, gfc-internal-format msgid "TEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGER" msgstr "" -#: fortran/resolve.cc:12453 +#: fortran/resolve.cc:12700 #, gcc-internal-format, gfc-internal-format msgid "ASSIGNED GOTO statement at %L requires a scalar INTEGER variable" msgstr "" -#: fortran/resolve.cc:12457 +#: fortran/resolve.cc:12704 #, gcc-internal-format msgid "Variable %qs has not been assigned a target label at %L" msgstr "" -#: fortran/resolve.cc:12468 +#: fortran/resolve.cc:12715 #, gcc-internal-format, gfc-internal-format msgid "" "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier" msgstr "" -#: fortran/resolve.cc:12506 +#: fortran/resolve.cc:12753 #, gcc-internal-format, gfc-internal-format msgid "Expected intrinsic assignment in OMP WORKSHARE at %L" msgstr "" -#: fortran/resolve.cc:12548 +#: fortran/resolve.cc:12795 #, gcc-internal-format, gfc-internal-format msgid "ASSIGN statement at %L requires a scalar default INTEGER variable" msgstr "" -#: fortran/resolve.cc:12595 +#: fortran/resolve.cc:12842 #, gcc-internal-format, gfc-internal-format msgid "Invalid NULL at %L" msgstr "" -#: fortran/resolve.cc:12599 +#: fortran/resolve.cc:12846 #, gcc-internal-format, gfc-internal-format msgid "" "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression" msgstr "" -#: fortran/resolve.cc:12660 +#: fortran/resolve.cc:12907 #, gcc-internal-format msgid "gfc_resolve_code(): No expression on DO WHILE" msgstr "" -#: fortran/resolve.cc:12665 +#: fortran/resolve.cc:12912 #, gcc-internal-format, gfc-internal-format msgid "" "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression" msgstr "" -#: fortran/resolve.cc:12749 +#: fortran/resolve.cc:12996 #, gcc-internal-format, gfc-internal-format msgid "FORALL mask clause at %L requires a scalar LOGICAL expression" msgstr "" -#: fortran/resolve.cc:12853 +#: fortran/resolve.cc:13100 #, gcc-internal-format msgid "gfc_resolve_code(): Bad statement code" msgstr "" -#: fortran/resolve.cc:12874 +#: fortran/resolve.cc:13121 #, gcc-internal-format msgid "Using parameter %qs declared at %L is deprecated" msgstr "" -#: fortran/resolve.cc:12968 +#: fortran/resolve.cc:13215 #, gcc-internal-format msgid "" "Variable %qs with binding label %qs at %L uses the same global identifier as " @@ -83813,7 +84124,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.cc:12982 +#: fortran/resolve.cc:13229 #, gcc-internal-format msgid "" "Variable %qs from module %qs with binding label %qs at %L uses the same " @@ -83823,63 +84134,63 @@ 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.cc:13001 +#: fortran/resolve.cc:13248 #, gcc-internal-format msgid "" "Procedure %qs with binding label %qs at %L uses the same global identifier " "as entity at %L" msgstr "" -#: fortran/resolve.cc:13087 +#: fortran/resolve.cc:13334 #, gcc-internal-format, gfc-internal-format msgid "String length at %L is too large" msgstr "" -#: fortran/resolve.cc:13325 +#: fortran/resolve.cc:13572 #, gcc-internal-format msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank" msgstr "" -#: fortran/resolve.cc:13329 +#: fortran/resolve.cc:13576 #, gcc-internal-format msgid "Scalar object %qs at %L may not be ALLOCATABLE" msgstr "" -#: fortran/resolve.cc:13337 +#: fortran/resolve.cc:13584 #, gcc-internal-format msgid "Array pointer %qs at %L must have a deferred shape or assumed rank" msgstr "" -#: fortran/resolve.cc:13348 +#: fortran/resolve.cc:13595 #, gcc-internal-format msgid "Array %qs at %L cannot have a deferred shape" msgstr "" -#: fortran/resolve.cc:13366 +#: fortran/resolve.cc:13613 #, gcc-internal-format msgid "Type %qs of CLASS variable %qs at %L is not extensible" msgstr "" -#: fortran/resolve.cc:13378 +#: fortran/resolve.cc:13625 #, gcc-internal-format msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer" msgstr "" -#: fortran/resolve.cc:13411 +#: fortran/resolve.cc:13658 #, 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.cc:13433 +#: fortran/resolve.cc:13680 #, gcc-internal-format msgid "" "Implied SAVE for module variable %qs at %L, needed due to the default " "initialization" msgstr "" -#: fortran/resolve.cc:13466 +#: fortran/resolve.cc:13713 #, gcc-internal-format msgid "" "Entity %qs at %L has a deferred type parameter and requires either the " @@ -83888,1057 +84199,1071 @@ msgstr "" #. F08:C541. The shape of an array defined in a main program or module #. * needs to be constant. -#: fortran/resolve.cc:13502 +#: fortran/resolve.cc:13749 #, gcc-internal-format msgid "The module or main program array %qs at %L must have constant shape" msgstr "" -#: fortran/resolve.cc:13527 +#: fortran/resolve.cc:13774 #, 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.cc:13548 +#: fortran/resolve.cc:13795 #, gcc-internal-format msgid "%qs at %L must have constant character length in this context" msgstr "" -#: fortran/resolve.cc:13555 +#: fortran/resolve.cc:13802 #, gcc-internal-format msgid "COMMON variable %qs at %L must have constant character length" msgstr "" -#: fortran/resolve.cc:13603 +#: fortran/resolve.cc:13850 #, gcc-internal-format msgid "Allocatable %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.cc:13606 +#: fortran/resolve.cc:13853 #, gcc-internal-format msgid "External %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.cc:13609 +#: fortran/resolve.cc:13856 #, gcc-internal-format msgid "Dummy %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.cc:13612 +#: fortran/resolve.cc:13859 #, gcc-internal-format msgid "Intrinsic %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.cc:13615 +#: fortran/resolve.cc:13862 #, gcc-internal-format msgid "Function result %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.cc:13618 +#: fortran/resolve.cc:13865 #, gcc-internal-format msgid "Automatic array %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.cc:13660 +#: fortran/resolve.cc:13907 #, gcc-internal-format, gfc-internal-format msgid "%s at %L" msgstr "" -#: fortran/resolve.cc:13692 +#: fortran/resolve.cc:13939 #, gcc-internal-format msgid "Character-valued statement function %qs at %L must have constant length" msgstr "" -#: fortran/resolve.cc:13715 +#: fortran/resolve.cc:13962 #, 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.cc:13737 +#: fortran/resolve.cc:13984 #, gcc-internal-format msgid "" "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs " "which is PRIVATE" msgstr "" -#: fortran/resolve.cc:13755 +#: fortran/resolve.cc:14002 #, gcc-internal-format msgid "Function %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.cc:13767 +#: fortran/resolve.cc:14014 #, gcc-internal-format msgid "External object %qs at %L may not have an initializer" msgstr "" -#: fortran/resolve.cc:13777 +#: fortran/resolve.cc:14024 #, gcc-internal-format msgid "ELEMENTAL function %qs at %L must have a scalar result" msgstr "" -#: fortran/resolve.cc:13787 +#: fortran/resolve.cc:14034 #, gcc-internal-format msgid "" "Statement function %qs at %L may not have pointer or allocatable attribute" msgstr "" -#: fortran/resolve.cc:13806 +#: fortran/resolve.cc:14053 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be array-valued" msgstr "" -#: fortran/resolve.cc:13810 +#: fortran/resolve.cc:14057 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued" msgstr "" -#: fortran/resolve.cc:13814 +#: fortran/resolve.cc:14061 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be pure" msgstr "" -#: fortran/resolve.cc:13818 +#: fortran/resolve.cc:14065 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be recursive" msgstr "" -#: fortran/resolve.cc:13831 +#: fortran/resolve.cc:14078 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L" msgstr "" -#: fortran/resolve.cc:13842 +#: fortran/resolve.cc:14089 #, gcc-internal-format msgid "Procedure pointer %qs at %L shall not be elemental" msgstr "" -#: fortran/resolve.cc:13848 +#: fortran/resolve.cc:14095 #, gcc-internal-format msgid "Dummy procedure %qs at %L shall not be elemental" msgstr "" -#: fortran/resolve.cc:13868 +#: fortran/resolve.cc:14115 #, gcc-internal-format msgid "" "Function result variable %qs at %L of elemental function %qs shall not have " "an ALLOCATABLE or POINTER attribute" msgstr "" -#: fortran/resolve.cc:13925 +#: fortran/resolve.cc:14172 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L" msgstr "" -#: fortran/resolve.cc:13931 +#: fortran/resolve.cc:14178 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L" msgstr "" -#: fortran/resolve.cc:13937 +#: fortran/resolve.cc:14184 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L" msgstr "" -#: fortran/resolve.cc:13945 +#: fortran/resolve.cc:14192 #, gcc-internal-format msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L" msgstr "" -#: fortran/resolve.cc:13951 +#: fortran/resolve.cc:14198 #, gcc-internal-format msgid "Procedure pointer result %qs at %L is missing the pointer attribute" msgstr "" -#: fortran/resolve.cc:13994 +#: fortran/resolve.cc:14241 #, gcc-internal-format, gfc-internal-format msgid "" "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its " "interface in %s" msgstr "" -#: fortran/resolve.cc:14002 +#: fortran/resolve.cc:14249 #, gcc-internal-format, gfc-internal-format msgid "" "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface " "in %s" msgstr "" -#: fortran/resolve.cc:14010 +#: fortran/resolve.cc:14257 #, gcc-internal-format, gfc-internal-format msgid "" "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its " "interface in %s" msgstr "" -#: fortran/resolve.cc:14019 +#: fortran/resolve.cc:14266 #, gcc-internal-format msgid "" "%s between the MODULE PROCEDURE declaration in MODULE %qs and the " "declaration at %L in (SUB)MODULE %qs" msgstr "" -#: fortran/resolve.cc:14043 +#: fortran/resolve.cc:14290 #, gcc-internal-format msgid "Interface of %qs at %L must be explicit" msgstr "" -#: fortran/resolve.cc:14113 +#: fortran/resolve.cc:14360 #, gcc-internal-format msgid "FINAL procedure %qs at %L is not a SUBROUTINE" msgstr "" -#: fortran/resolve.cc:14122 +#: fortran/resolve.cc:14369 #, gcc-internal-format, gfc-internal-format msgid "FINAL procedure at %L must have exactly one argument" msgstr "" -#: fortran/resolve.cc:14130 fortran/resolve.cc:14147 +#: fortran/resolve.cc:14377 fortran/resolve.cc:14394 #, gcc-internal-format msgid "Argument of FINAL procedure at %L must be of type %qs" msgstr "" -#: fortran/resolve.cc:14138 +#: fortran/resolve.cc:14385 #, gcc-internal-format, gfc-internal-format msgid "" "FINAL procedure at %L with assumed rank argument must be the only finalizer " "with the same kind/type (F2018: C790)" msgstr "" -#: fortran/resolve.cc:14155 +#: fortran/resolve.cc:14402 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be a POINTER" msgstr "" -#: fortran/resolve.cc:14161 +#: fortran/resolve.cc:14408 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE" msgstr "" -#: fortran/resolve.cc:14167 +#: fortran/resolve.cc:14414 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be OPTIONAL" msgstr "" -#: fortran/resolve.cc:14175 +#: fortran/resolve.cc:14422 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)" msgstr "" -#: fortran/resolve.cc:14184 +#: fortran/resolve.cc:14431 #, gcc-internal-format, gfc-internal-format msgid "Non-scalar FINAL procedure at %L should have assumed shape argument" msgstr "" -#: fortran/resolve.cc:14206 +#: fortran/resolve.cc:14453 #, gcc-internal-format msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs" msgstr "" -#: fortran/resolve.cc:14243 +#: fortran/resolve.cc:14490 #, gcc-internal-format msgid "" "Only array FINAL procedures declared for derived type %qs defined at %L, " "suggest also scalar one unless an assumed rank finalizer has been declared" msgstr "" -#: fortran/resolve.cc:14284 +#: fortran/resolve.cc:14531 #, gcc-internal-format msgid "%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L" msgstr "" -#: fortran/resolve.cc:14320 +#: fortran/resolve.cc:14567 #, gcc-internal-format msgid "%qs and %qs for GENERIC %qs at %L are ambiguous" msgstr "" -#: fortran/resolve.cc:14379 +#: fortran/resolve.cc:14626 #, gcc-internal-format msgid "Undefined specific binding %qs as target of GENERIC %qs at %L" msgstr "" -#: fortran/resolve.cc:14391 +#: fortran/resolve.cc:14638 #, gcc-internal-format msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too" msgstr "" -#: fortran/resolve.cc:14419 +#: fortran/resolve.cc:14666 #, gcc-internal-format msgid "GENERIC %qs at %L cannot overwrite specific binding with the same name" msgstr "" -#: fortran/resolve.cc:14475 +#: fortran/resolve.cc:14722 #, gcc-internal-format, gfc-internal-format msgid "Type-bound operator at %L cannot be NOPASS" msgstr "" -#: fortran/resolve.cc:14687 +#: fortran/resolve.cc:14934 #, gcc-internal-format msgid "" "%qs must be a module procedure or an external procedure with an explicit " "interface at %L" msgstr "" -#: fortran/resolve.cc:14730 +#: fortran/resolve.cc:14977 #, gcc-internal-format msgid "Procedure %qs with PASS(%s) at %L has no argument %qs" msgstr "" -#: fortran/resolve.cc:14744 +#: fortran/resolve.cc:14991 #, gcc-internal-format msgid "Procedure %qs with PASS at %L must have at least one argument" msgstr "" -#: fortran/resolve.cc:14758 fortran/resolve.cc:15246 +#: fortran/resolve.cc:15005 fortran/resolve.cc:15547 #, gcc-internal-format msgid "Non-polymorphic passed-object dummy argument of %qs at %L" msgstr "" -#: fortran/resolve.cc:14766 +#: fortran/resolve.cc:15014 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs" msgstr "" -#: fortran/resolve.cc:14775 +#: fortran/resolve.cc:15024 +#, gcc-internal-format +msgid "" +"Argument %qs of %qs with PASS(%s) at %L must be of the parametric derived-" +"type %qs" +msgstr "" + +#: fortran/resolve.cc:15066 +#, gcc-internal-format +msgid "" +"All LEN type parameters of the passed dummy argument %qs of %qs at %L must " +"be ASSUMED." +msgstr "" + +#: fortran/resolve.cc:15076 #, gcc-internal-format msgid "Passed-object dummy argument of %qs at %L must be scalar" msgstr "" -#: fortran/resolve.cc:14781 +#: fortran/resolve.cc:15082 #, gcc-internal-format msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE" msgstr "" -#: fortran/resolve.cc:14787 +#: fortran/resolve.cc:15088 #, gcc-internal-format msgid "Passed-object dummy argument of %qs at %L must not be POINTER" msgstr "" -#: fortran/resolve.cc:14816 +#: fortran/resolve.cc:15117 #, gcc-internal-format msgid "Procedure %qs at %L has the same name as a component of %qs" msgstr "" -#: fortran/resolve.cc:14826 +#: fortran/resolve.cc:15127 #, gcc-internal-format msgid "Procedure %qs at %L has the same name as an inherited component of %qs" msgstr "" -#: fortran/resolve.cc:14921 +#: fortran/resolve.cc:15222 #, gcc-internal-format msgid "" "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and " "not overridden" msgstr "" -#: fortran/resolve.cc:15026 +#: fortran/resolve.cc:15327 #, gcc-internal-format msgid "Coarray component %qs at %L must be allocatable with deferred shape" msgstr "" -#: fortran/resolve.cc:15035 +#: fortran/resolve.cc:15336 #, gcc-internal-format msgid "" "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray" msgstr "" -#: fortran/resolve.cc:15045 +#: fortran/resolve.cc:15346 #, gcc-internal-format msgid "" "Component %qs at %L with coarray component shall be a nonpointer, " "nonallocatable scalar" msgstr "" -#: fortran/resolve.cc:15070 +#: fortran/resolve.cc:15371 #, gcc-internal-format msgid "" "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer" msgstr "" -#: fortran/resolve.cc:15081 +#: fortran/resolve.cc:15382 #, gcc-internal-format msgid "Component %qs of BIND(C) type at %L must have length one" msgstr "" -#: fortran/resolve.cc:15179 +#: fortran/resolve.cc:15480 #, gcc-internal-format msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs" msgstr "" -#: fortran/resolve.cc:15193 +#: fortran/resolve.cc:15494 #, gcc-internal-format msgid "" "Procedure pointer component %qs with PASS at %L must have at least one " "argument" msgstr "" -#: fortran/resolve.cc:15209 +#: fortran/resolve.cc:15510 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs" msgstr "" -#: fortran/resolve.cc:15219 +#: fortran/resolve.cc:15520 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar" msgstr "" -#: fortran/resolve.cc:15228 +#: fortran/resolve.cc:15529 #, gcc-internal-format msgid "" "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute" msgstr "" -#: fortran/resolve.cc:15237 +#: fortran/resolve.cc:15538 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE" msgstr "" -#: fortran/resolve.cc:15279 +#: fortran/resolve.cc:15580 #, gcc-internal-format msgid "" "Component %qs of %qs at %L has the same name as an inherited type-bound " "procedure" msgstr "" -#: fortran/resolve.cc:15292 +#: fortran/resolve.cc:15593 #, gcc-internal-format msgid "" "Character length of component %qs needs to be a constant specification " "expression at %L" msgstr "" -#: fortran/resolve.cc:15303 +#: fortran/resolve.cc:15604 #, gcc-internal-format msgid "" "Character length expression of component %qs at %L must be of INTEGER type, " "found %s" msgstr "" -#: fortran/resolve.cc:15316 +#: fortran/resolve.cc:15617 #, gcc-internal-format msgid "" "Character component %qs of %qs at %L with deferred length must be a POINTER " "or ALLOCATABLE" msgstr "" -#: fortran/resolve.cc:15349 +#: fortran/resolve.cc:15650 #, 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.cc:15357 +#: fortran/resolve.cc:15658 #, gcc-internal-format, gfc-internal-format msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s" msgstr "" -#: fortran/resolve.cc:15366 +#: fortran/resolve.cc:15667 #, gcc-internal-format, gfc-internal-format msgid "" "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE " "attribute" msgstr "" -#: fortran/resolve.cc:15452 +#: fortran/resolve.cc:15753 #, gcc-internal-format, gfc-internal-format msgid "Conflicting initializers in union at %L and %L" msgstr "" -#: fortran/resolve.cc:15497 +#: fortran/resolve.cc:15798 #, gcc-internal-format msgid "" "As extending type %qs at %L has a coarray component, parent type %qs shall " "also have one" msgstr "" -#: fortran/resolve.cc:15510 +#: fortran/resolve.cc:15811 #, gcc-internal-format msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT" msgstr "" -#: fortran/resolve.cc:15574 +#: fortran/resolve.cc:15875 #, gcc-internal-format msgid "" "Parameterized type %qs does not have a component corresponding to parameter " "%qs at %L" msgstr "" -#: fortran/resolve.cc:15607 +#: fortran/resolve.cc:15908 #, gcc-internal-format msgid "" "Generic name %qs of function %qs at %L being the same name as derived type " "at %L" msgstr "" -#: fortran/resolve.cc:15621 +#: fortran/resolve.cc:15922 #, gcc-internal-format msgid "Derived type %qs at %L has not been declared" msgstr "" -#: fortran/resolve.cc:15689 +#: fortran/resolve.cc:15990 #, gcc-internal-format msgid "Assumed size array %qs in namelist %qs at %L is not allowed" msgstr "" -#: fortran/resolve.cc:15695 +#: fortran/resolve.cc:15996 #, gcc-internal-format msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L" msgstr "" -#: fortran/resolve.cc:15701 +#: fortran/resolve.cc:16002 #, gcc-internal-format msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L" msgstr "" -#: fortran/resolve.cc:15709 +#: fortran/resolve.cc:16010 #, gcc-internal-format msgid "" "NAMELIST object %qs with nonconstant character length in namelist %qs at %L" msgstr "" -#: fortran/resolve.cc:15726 +#: fortran/resolve.cc:16027 #, gcc-internal-format msgid "" "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC " "namelist %qs at %L" msgstr "" -#: fortran/resolve.cc:15748 +#: fortran/resolve.cc:16049 #, gcc-internal-format msgid "" "NAMELIST object %qs has use-associated PRIVATE components and cannot be " "member of namelist %qs at %L" msgstr "" -#: fortran/resolve.cc:15759 +#: fortran/resolve.cc:16060 #, gcc-internal-format msgid "" "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC " "namelist %qs at %L" msgstr "" -#: fortran/resolve.cc:15786 +#: fortran/resolve.cc:16087 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L" msgstr "" -#: fortran/resolve.cc:15805 +#: fortran/resolve.cc:16106 #, gcc-internal-format msgid "Parameter array %qs at %L cannot be automatic or of deferred shape" msgstr "" -#: fortran/resolve.cc:15821 +#: fortran/resolve.cc:16122 #, gcc-internal-format msgid "" "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type" msgstr "" -#: fortran/resolve.cc:15832 +#: fortran/resolve.cc:16133 #, gcc-internal-format, gfc-internal-format msgid "Incompatible derived type in PARAMETER at %L" msgstr "" -#: fortran/resolve.cc:15840 +#: fortran/resolve.cc:16141 #, gcc-internal-format msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute" msgstr "" -#: fortran/resolve.cc:15891 +#: fortran/resolve.cc:16193 #, gcc-internal-format msgid "" -"The object %qs at %L has a deferred LEN parameter %qs and is neither " -"allocatable nor a pointer" +"Entity %qs at %L has a deferred LEN parameter %qs and requires either the " +"POINTER or ALLOCATABLE attribute" msgstr "" -#: fortran/resolve.cc:15902 +#: fortran/resolve.cc:16205 #, gcc-internal-format msgid "" "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a " "variable declared in the main program, a module or a submodule(F08/C513)" msgstr "" -#: fortran/resolve.cc:15909 +#: fortran/resolve.cc:16212 #, gcc-internal-format msgid "" "The object %qs at %L with ASSUMED type parameters must be a dummy or a " "SELECT TYPE selector(F08/4.2)" msgstr "" -#: fortran/resolve.cc:15949 +#: fortran/resolve.cc:16271 #, gcc-internal-format, gfc-internal-format msgid "" "Sorry, allocatable/pointer components in polymorphic (CLASS) type coarrays " "at %L are unsupported" msgstr "" -#: fortran/resolve.cc:15962 +#: fortran/resolve.cc:16284 #, gcc-internal-format msgid "" "%, declared at %L, may only be used in the OpenMP DEPEND " "clause" msgstr "" -#: fortran/resolve.cc:16020 +#: fortran/resolve.cc:16342 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L" msgstr "" -#: fortran/resolve.cc:16023 +#: fortran/resolve.cc:16345 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L" msgstr "" -#: fortran/resolve.cc:16129 +#: fortran/resolve.cc:16442 #, 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.cc:16150 +#: fortran/resolve.cc:16463 #, gcc-internal-format, gfc-internal-format msgid "Bad specification for assumed size array at %L" msgstr "" -#: fortran/resolve.cc:16164 +#: fortran/resolve.cc:16477 #, gcc-internal-format, gfc-internal-format msgid "Assumed size array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.cc:16167 +#: fortran/resolve.cc:16480 #, gcc-internal-format, gfc-internal-format msgid "Assumed shape array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.cc:16177 +#: fortran/resolve.cc:16490 #, gcc-internal-format, gfc-internal-format msgid "Assumed-rank array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.cc:16184 +#: fortran/resolve.cc:16497 #, gcc-internal-format, gfc-internal-format msgid "" "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute" msgstr "" -#: fortran/resolve.cc:16197 +#: fortran/resolve.cc:16510 #, gcc-internal-format, gfc-internal-format msgid "Symbol at %L is not a DUMMY variable" msgstr "" -#: fortran/resolve.cc:16203 +#: fortran/resolve.cc:16516 #, gcc-internal-format msgid "" "%qs at %L cannot have the VALUE attribute because it is not a dummy argument" msgstr "" -#: fortran/resolve.cc:16213 +#: fortran/resolve.cc:16526 #, gcc-internal-format msgid "" "Character dummy variable %qs at %L with VALUE attribute must have constant " "length" msgstr "" -#: fortran/resolve.cc:16222 +#: fortran/resolve.cc:16535 #, gcc-internal-format msgid "" "C interoperable character dummy variable %qs at %L with VALUE attribute must " "have length one" msgstr "" -#: fortran/resolve.cc:16235 fortran/resolve.cc:16412 +#: fortran/resolve.cc:16548 fortran/resolve.cc:16725 #, gcc-internal-format msgid "The derived type %qs at %L is of type %qs, which has not been defined" msgstr "" -#: fortran/resolve.cc:16249 +#: fortran/resolve.cc:16562 #, gcc-internal-format, gfc-internal-format msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument" msgstr "" -#: fortran/resolve.cc:16258 +#: fortran/resolve.cc:16571 #, 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.cc:16267 +#: fortran/resolve.cc:16580 #, 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.cc:16275 +#: fortran/resolve.cc:16588 #, 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.cc:16282 +#: fortran/resolve.cc:16595 #, 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.cc:16302 +#: fortran/resolve.cc:16615 #, gcc-internal-format, gfc-internal-format msgid "Assumed type of variable %s at %L is only permitted for dummy variables" msgstr "" -#: fortran/resolve.cc:16309 +#: fortran/resolve.cc:16622 #, 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.cc:16316 +#: fortran/resolve.cc:16629 #, gcc-internal-format, gfc-internal-format msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute" msgstr "" -#: fortran/resolve.cc:16323 +#: fortran/resolve.cc:16636 #, gcc-internal-format, gfc-internal-format msgid "Assumed-type variable %s at %L shall not be an explicit-shape array" msgstr "" -#: fortran/resolve.cc:16349 +#: fortran/resolve.cc:16662 #, 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.cc:16359 +#: fortran/resolve.cc:16672 #, gcc-internal-format msgid "BIND(C) Variable %qs at %L must have length one" msgstr "" -#: fortran/resolve.cc:16438 +#: fortran/resolve.cc:16751 #, gcc-internal-format msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs" msgstr "" -#: fortran/resolve.cc:16453 +#: fortran/resolve.cc:16766 #, 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.cc:16466 +#: fortran/resolve.cc:16779 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE " "must be a coarray" msgstr "" -#: fortran/resolve.cc:16484 +#: fortran/resolve.cc:16797 #, 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.cc:16496 +#: fortran/resolve.cc:16809 #, gcc-internal-format msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)" msgstr "" -#: fortran/resolve.cc:16505 +#: fortran/resolve.cc:16818 #, gcc-internal-format msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)" msgstr "" -#: fortran/resolve.cc:16518 +#: fortran/resolve.cc:16831 #, gcc-internal-format msgid "" "Function result %qs at %L shall not be a coarray or have a coarray component" msgstr "" -#: fortran/resolve.cc:16527 +#: fortran/resolve.cc:16840 #, gcc-internal-format msgid "" "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray" msgstr "" -#: fortran/resolve.cc:16540 +#: fortran/resolve.cc:16853 #, 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.cc:16556 +#: fortran/resolve.cc:16869 #, gcc-internal-format msgid "" "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy " "argument" msgstr "" -#: fortran/resolve.cc:16564 +#: fortran/resolve.cc:16877 #, gcc-internal-format msgid "" "Coarray variable %qs at %L shall not have codimensions with deferred shape" msgstr "" -#: fortran/resolve.cc:16571 +#: fortran/resolve.cc:16884 #, gcc-internal-format msgid "Allocatable coarray variable %qs at %L must have deferred shape" msgstr "" -#: fortran/resolve.cc:16584 +#: fortran/resolve.cc:16897 #, 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.cc:16593 +#: fortran/resolve.cc:16906 #, gcc-internal-format msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs" msgstr "" -#: fortran/resolve.cc:16609 +#: fortran/resolve.cc:16922 #, gcc-internal-format msgid "" "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure " "%qs" msgstr "" -#: fortran/resolve.cc:16615 +#: fortran/resolve.cc:16928 #, gcc-internal-format msgid "" "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure " "%qs" msgstr "" -#: fortran/resolve.cc:16640 +#: fortran/resolve.cc:16953 #, gcc-internal-format msgid "Namelist %qs cannot be an argument to subroutine or function at %L" msgstr "" -#: fortran/resolve.cc:16711 +#: fortran/resolve.cc:17013 #, gcc-internal-format, gfc-internal-format msgid "Threadprivate at %L isn't SAVEd" msgstr "" -#: fortran/resolve.cc:16723 +#: fortran/resolve.cc:17025 #, gcc-internal-format msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd" msgstr "" -#: fortran/resolve.cc:16839 +#: fortran/resolve.cc:17132 #, gcc-internal-format, gfc-internal-format msgid "Expecting definable entity near %L" msgstr "" -#: fortran/resolve.cc:16847 +#: fortran/resolve.cc:17140 #, gcc-internal-format msgid "BLOCK DATA element %qs at %L must be in COMMON" msgstr "" -#: fortran/resolve.cc:16854 +#: fortran/resolve.cc:17147 #, gcc-internal-format msgid "DATA array %qs at %L must be specified in a previous declaration" msgstr "" -#: fortran/resolve.cc:16861 +#: fortran/resolve.cc:17154 #, gcc-internal-format msgid "DATA element %qs at %L cannot have a coindex" msgstr "" -#: fortran/resolve.cc:16877 +#: fortran/resolve.cc:17170 #, gcc-internal-format msgid "DATA element %qs at %L is a pointer and so must be a full array" msgstr "" -#: fortran/resolve.cc:16884 +#: fortran/resolve.cc:17177 #, gcc-internal-format, gfc-internal-format msgid "" "DATA object near %L has the pointer attribute and the corresponding DATA " "value is not a valid initial-data-target" msgstr "" -#: fortran/resolve.cc:16893 +#: fortran/resolve.cc:17186 #, gcc-internal-format msgid "DATA element %qs at %L cannot have the ALLOCATABLE attribute" msgstr "" -#: fortran/resolve.cc:16955 +#: fortran/resolve.cc:17248 #, gcc-internal-format, gfc-internal-format msgid "Nonconstant array section at %L in DATA statement" msgstr "" -#: fortran/resolve.cc:16968 +#: fortran/resolve.cc:17261 #, gcc-internal-format, gfc-internal-format msgid "DATA statement at %L has more variables than values" msgstr "" -#: fortran/resolve.cc:17044 +#: fortran/resolve.cc:17337 #, gcc-internal-format, gfc-internal-format msgid "Non-constant character length at %L in DATA statement" msgstr "" -#: fortran/resolve.cc:17072 +#: fortran/resolve.cc:17365 #, 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.cc:17080 +#: fortran/resolve.cc:17373 #, 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.cc:17088 +#: fortran/resolve.cc:17381 #, 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.cc:17095 +#: fortran/resolve.cc:17388 #, gcc-internal-format, gfc-internal-format msgid "step of implied-do loop at %L shall not be zero" msgstr "" -#: fortran/resolve.cc:17220 +#: fortran/resolve.cc:17513 #, gcc-internal-format, gfc-internal-format msgid "DATA statement at %L has more values than variables" msgstr "" -#: fortran/resolve.cc:17386 +#: fortran/resolve.cc:17679 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %L defined but not used" msgstr "" -#: fortran/resolve.cc:17392 +#: fortran/resolve.cc:17685 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %L defined but cannot be used" msgstr "" -#: fortran/resolve.cc:17476 +#: fortran/resolve.cc:17769 #, gcc-internal-format msgid "" "Derived type variable %qs at %L must have SEQUENCE attribute to be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.cc:17485 +#: fortran/resolve.cc:17778 #, gcc-internal-format msgid "" "Derived type variable %qs at %L cannot have ALLOCATABLE components to be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.cc:17493 +#: fortran/resolve.cc:17786 #, 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.cc:17509 +#: fortran/resolve.cc:17802 #, gcc-internal-format msgid "" "Derived type variable %qs at %L with pointer component(s) cannot be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.cc:17612 +#: fortran/resolve.cc:17905 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in EQUIVALENCE statement at %L" msgstr "" -#: fortran/resolve.cc:17627 +#: fortran/resolve.cc:17920 #, 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.cc:17652 +#: fortran/resolve.cc:17945 #, gcc-internal-format msgid "" "COMMON block member %qs at %L cannot be an EQUIVALENCE object in the pure " "procedure %qs" msgstr "" -#: fortran/resolve.cc:17661 +#: fortran/resolve.cc:17954 #, gcc-internal-format msgid "Named constant %qs at %L cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.cc:17736 +#: fortran/resolve.cc:18029 #, gcc-internal-format msgid "" "Array %qs at %L with non-constant bounds cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.cc:17747 +#: fortran/resolve.cc:18040 #, gcc-internal-format msgid "Structure component %qs at %L cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.cc:17758 +#: fortran/resolve.cc:18051 #, gcc-internal-format, gfc-internal-format msgid "Substring at %L has length zero" msgstr "" -#: fortran/resolve.cc:17789 +#: fortran/resolve.cc:18082 #, gcc-internal-format msgid "Self reference in character length expression for %qs at %L" msgstr "" -#: fortran/resolve.cc:17856 +#: fortran/resolve.cc:18149 #, gcc-internal-format msgid "PUBLIC function %qs at %L of PRIVATE type %qs" msgstr "" -#: fortran/resolve.cc:17869 +#: fortran/resolve.cc:18162 #, gcc-internal-format msgid "ENTRY %qs at %L has no IMPLICIT type" msgstr "" -#: fortran/resolve.cc:17891 +#: fortran/resolve.cc:18184 #, gcc-internal-format msgid "User operator procedure %qs at %L must be a FUNCTION" msgstr "" -#: fortran/resolve.cc:17901 +#: fortran/resolve.cc:18194 #, gcc-internal-format msgid "User operator procedure %qs at %L cannot be assumed character length" msgstr "" -#: fortran/resolve.cc:17909 +#: fortran/resolve.cc:18202 #, gcc-internal-format msgid "User operator procedure %qs at %L must have at least one argument" msgstr "" -#: fortran/resolve.cc:17923 +#: fortran/resolve.cc:18216 #, gcc-internal-format, gfc-internal-format msgid "First argument of operator interface at %L cannot be optional" msgstr "" -#: fortran/resolve.cc:17941 +#: fortran/resolve.cc:18234 #, gcc-internal-format, gfc-internal-format msgid "Second argument of operator interface at %L cannot be optional" msgstr "" -#: fortran/resolve.cc:17948 +#: fortran/resolve.cc:18241 #, gcc-internal-format, gfc-internal-format msgid "Operator interface at %L must have, at most, two arguments" msgstr "" -#: fortran/resolve.cc:18030 +#: fortran/resolve.cc:18323 #, gcc-internal-format msgid "Contained procedure %qs at %L of a PURE procedure must also be PURE" msgstr "" @@ -85476,23 +85801,23 @@ msgstr "" msgid "gfc_get_default_type(): Bad symbol %qs" msgstr "" -#: fortran/symbol.cc:296 +#: fortran/symbol.cc:309 #, gcc-internal-format msgid "gfc_set_default_type(): symbol already has a type" msgstr "" -#: fortran/symbol.cc:306 +#: fortran/symbol.cc:319 #, gcc-internal-format msgid "Symbol %qs at %L has no IMPLICIT type; did you mean %qs?" msgstr "" -#: fortran/symbol.cc:310 +#: fortran/symbol.cc:323 #, gcc-internal-format -msgid "Symbol %qs at %L has no IMPLICIT type" +msgid "Symbol %qs at %L has no IMPLICIT type(symbol)" msgstr "" #. BIND(C) variables should not be implicitly declared. -#: fortran/symbol.cc:330 +#: fortran/symbol.cc:343 #, gcc-internal-format msgid "" "Implicitly declared BIND(C) variable %qs at %L may not be C interoperable" @@ -85500,139 +85825,139 @@ msgstr "" #. Dummy args to a BIND(C) routine may not be interoperable if #. they are implicitly typed. -#: fortran/symbol.cc:346 +#: fortran/symbol.cc:359 #, gcc-internal-format msgid "" "Implicitly declared variable %qs at %L may not be C interoperable but it is " "a dummy argument to the BIND(C) procedure %qs at %L" msgstr "" -#: fortran/symbol.cc:387 +#: fortran/symbol.cc:400 #, gcc-internal-format msgid "Function result %qs at %L has no IMPLICIT type" msgstr "" -#: fortran/symbol.cc:488 +#: fortran/symbol.cc:501 #, gcc-internal-format, gfc-internal-format msgid "%s attribute not allowed in BLOCK DATA program unit at %L" msgstr "" -#: fortran/symbol.cc:513 +#: fortran/symbol.cc:526 #, gcc-internal-format, gfc-internal-format msgid "Namelist group name at %L cannot have the SAVE attribute" msgstr "" -#: fortran/symbol.cc:532 +#: fortran/symbol.cc:545 #, gcc-internal-format msgid "internal procedure %qs at %L conflicts with DUMMY argument" msgstr "" -#: fortran/symbol.cc:565 +#: fortran/symbol.cc:578 #, gcc-internal-format, gfc-internal-format msgid "Procedure pointer at %C" msgstr "" -#: fortran/symbol.cc:777 +#: fortran/symbol.cc:790 #, gcc-internal-format, gfc-internal-format msgid "%s attribute applied to %s %s at %L" msgstr "" -#: fortran/symbol.cc:784 +#: fortran/symbol.cc:797 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) applied to %s %s at %L" msgstr "" -#: fortran/symbol.cc:905 fortran/symbol.cc:916 fortran/symbol.cc:1796 +#: fortran/symbol.cc:918 fortran/symbol.cc:929 fortran/symbol.cc:1809 #, gcc-internal-format, gfc-internal-format msgid "%s attribute conflicts with %s attribute at %L" msgstr "" -#: fortran/symbol.cc:908 fortran/symbol.cc:922 +#: fortran/symbol.cc:921 fortran/symbol.cc:935 #, gcc-internal-format msgid "%s attribute conflicts with %s attribute in %qs at %L" msgstr "" -#: fortran/symbol.cc:966 +#: fortran/symbol.cc:979 #, gcc-internal-format, gfc-internal-format msgid "Cannot change attributes of USE-associated symbol at %L" msgstr "" -#: fortran/symbol.cc:969 +#: fortran/symbol.cc:982 #, gcc-internal-format, gfc-internal-format msgid "Cannot change attributes of USE-associated symbol %s at %L" msgstr "" -#: fortran/symbol.cc:985 +#: fortran/symbol.cc:998 #, gcc-internal-format, gfc-internal-format msgid "Duplicate %s attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1027 +#: fortran/symbol.cc:1040 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATABLE specified outside of INTERFACE body at %L" msgstr "" -#: fortran/symbol.cc:1044 +#: fortran/symbol.cc:1057 #, gcc-internal-format, gfc-internal-format msgid "Duplicate AUTOMATIC attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1068 +#: fortran/symbol.cc:1081 #, gcc-internal-format msgid "CODIMENSION specified for %qs outside its INTERFACE body at %L" msgstr "" -#: fortran/symbol.cc:1094 +#: fortran/symbol.cc:1107 #, gcc-internal-format msgid "DIMENSION specified for %qs outside its INTERFACE body at %L" msgstr "" -#: fortran/symbol.cc:1257 +#: fortran/symbol.cc:1270 #, gcc-internal-format, gfc-internal-format msgid "Cray Pointee at %L appears in multiple pointer() statements" msgstr "" -#: fortran/symbol.cc:1276 +#: fortran/symbol.cc:1289 #, gcc-internal-format, gfc-internal-format msgid "Duplicate PROTECTED attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1309 +#: fortran/symbol.cc:1322 #, gcc-internal-format, gfc-internal-format msgid "SAVE attribute at %L cannot be specified in a PURE procedure" msgstr "" -#: fortran/symbol.cc:1321 +#: fortran/symbol.cc:1334 #, gcc-internal-format, gfc-internal-format msgid "Duplicate SAVE attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1341 +#: fortran/symbol.cc:1354 #, gcc-internal-format, gfc-internal-format msgid "Duplicate VALUE attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1360 +#: fortran/symbol.cc:1373 #, gcc-internal-format, gfc-internal-format msgid "Duplicate VOLATILE attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1372 +#: fortran/symbol.cc:1385 #, gcc-internal-format, gfc-internal-format msgid "VOLATILE attribute at %L cannot be specified in a PURE procedure" msgstr "" -#: fortran/symbol.cc:1393 +#: fortran/symbol.cc:1406 #, gcc-internal-format, gfc-internal-format msgid "Duplicate ASYNCHRONOUS attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1792 +#: fortran/symbol.cc:1805 #, gcc-internal-format msgid "%s attribute of %qs conflicts with %s attribute at %L" msgstr "" -#: fortran/symbol.cc:1829 +#: fortran/symbol.cc:1842 #, gcc-internal-format, gfc-internal-format msgid "" "%s procedure at %L is already declared as %s procedure. \n" @@ -85641,220 +85966,220 @@ msgid "" "kind of executable statement before it. FIXME" msgstr "" -#: fortran/symbol.cc:1837 +#: fortran/symbol.cc:1850 #, gcc-internal-format, gfc-internal-format msgid "%s procedure at %L is already declared as %s procedure" msgstr "" -#: fortran/symbol.cc:1872 +#: fortran/symbol.cc:1885 #, gcc-internal-format, gfc-internal-format msgid "INTENT (%s) conflicts with INTENT(%s) at %L" msgstr "" -#: fortran/symbol.cc:1896 +#: fortran/symbol.cc:1909 #, gcc-internal-format, gfc-internal-format msgid "ACCESS specification at %L was already specified" msgstr "" -#: fortran/symbol.cc:1913 +#: fortran/symbol.cc:1926 #, gcc-internal-format, gfc-internal-format msgid "Duplicate BIND attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1920 +#: fortran/symbol.cc:1933 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) at %L" msgstr "" -#: fortran/symbol.cc:1936 +#: fortran/symbol.cc:1949 #, gcc-internal-format, gfc-internal-format msgid "Duplicate EXTENDS attribute specified at %L" msgstr "" -#: fortran/symbol.cc:1940 +#: fortran/symbol.cc:1953 #, gcc-internal-format, gfc-internal-format msgid "EXTENDS at %L" msgstr "" -#: fortran/symbol.cc:1966 +#: fortran/symbol.cc:1979 #, gcc-internal-format msgid "Symbol %qs at %L already has an explicit interface" msgstr "" -#: fortran/symbol.cc:1973 +#: fortran/symbol.cc:1986 #, gcc-internal-format msgid "%qs at %L has attributes specified outside its INTERFACE body" msgstr "" -#: fortran/symbol.cc:2011 +#: fortran/symbol.cc:2024 #, gcc-internal-format msgid "" "Symbol %qs at %L conflicts with symbol from module %qs, use-associated at %L" msgstr "" -#: fortran/symbol.cc:2015 fortran/symbol.cc:2018 +#: fortran/symbol.cc:2028 fortran/symbol.cc:2031 #, gcc-internal-format msgid "Symbol %qs at %L already has basic type of %s" msgstr "" -#: fortran/symbol.cc:2025 +#: fortran/symbol.cc:2038 #, gcc-internal-format msgid "Procedure %qs at %L may not have basic type of %s" msgstr "" -#: fortran/symbol.cc:2037 +#: fortran/symbol.cc:2050 #, gcc-internal-format msgid "Symbol %qs at %L cannot have a type" msgstr "" -#: fortran/symbol.cc:2282 +#: fortran/symbol.cc:2295 #, gcc-internal-format msgid "Component %qs at %C already in the parent type at %L" msgstr "" -#: fortran/symbol.cc:2367 +#: fortran/symbol.cc:2380 #, gcc-internal-format msgid "Symbol %qs at %C is ambiguous" msgstr "" -#: fortran/symbol.cc:2399 +#: fortran/symbol.cc:2412 #, gcc-internal-format msgid "Derived type %qs at %C is being used before it is defined" msgstr "" -#: fortran/symbol.cc:2548 +#: fortran/symbol.cc:2622 #, gcc-internal-format msgid "Component %qs at %C is a PRIVATE component of %qs" msgstr "" -#: fortran/symbol.cc:2569 +#: fortran/symbol.cc:2643 #, gcc-internal-format msgid "%qs at %C is not a member of the %qs structure; did you mean %qs?" msgstr "" -#: fortran/symbol.cc:2573 +#: fortran/symbol.cc:2647 #, gcc-internal-format msgid "%qs at %C is not a member of the %qs structure" msgstr "" -#: fortran/symbol.cc:2737 +#: fortran/symbol.cc:2811 #, gcc-internal-format, gfc-internal-format msgid "Duplicate statement label %d at %L and %L" msgstr "" -#: fortran/symbol.cc:2748 +#: fortran/symbol.cc:2822 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %C already referenced as branch target" msgstr "" -#: fortran/symbol.cc:2758 +#: fortran/symbol.cc:2832 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %C already referenced as a format label" msgstr "" -#: fortran/symbol.cc:2765 +#: fortran/symbol.cc:2839 #, gcc-internal-format, gfc-internal-format msgid "" "DO termination statement which is not END DO or CONTINUE with label %d at %C" msgstr "" -#: fortran/symbol.cc:2806 +#: fortran/symbol.cc:2880 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %C previously used as a FORMAT label" msgstr "" -#: fortran/symbol.cc:2815 +#: fortran/symbol.cc:2889 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %C previously used as branch target" msgstr "" -#: fortran/symbol.cc:2822 +#: fortran/symbol.cc:2896 #, gcc-internal-format, gfc-internal-format msgid "Shared DO termination label %d at %C" msgstr "" -#: fortran/symbol.cc:2826 +#: fortran/symbol.cc:2900 #, gcc-internal-format, gfc-internal-format msgid "Labeled DO statement at %L" msgstr "" -#: fortran/symbol.cc:3167 +#: fortran/symbol.cc:3241 #, gcc-internal-format msgid "Name %qs at %C is an ambiguous reference to %qs from module %qs" msgstr "" -#: fortran/symbol.cc:3170 +#: fortran/symbol.cc:3244 #, gcc-internal-format msgid "" "Name %qs at %C is an ambiguous reference to %qs from current program unit" msgstr "" #. Symbol is from another namespace. -#: fortran/symbol.cc:3415 +#: fortran/symbol.cc:3489 #, gcc-internal-format msgid "Symbol %qs at %C has already been host associated" msgstr "" -#: fortran/symbol.cc:4469 +#: fortran/symbol.cc:4543 #, gcc-internal-format msgid "verify_bind_c_derived_type(): Given symbol is unexpectedly NULL" msgstr "" -#: fortran/symbol.cc:4482 +#: fortran/symbol.cc:4556 #, gcc-internal-format msgid "" "Derived type %qs declared at %L must have the BIND attribute to be C " "interoperable" msgstr "" -#: fortran/symbol.cc:4500 +#: fortran/symbol.cc:4574 #, gcc-internal-format msgid "" "Derived type %qs with BIND(C) attribute at %L is empty, and may be " "inaccessible by the C companion processor" msgstr "" -#: fortran/symbol.cc:4521 +#: fortran/symbol.cc:4595 #, gcc-internal-format msgid "" "Component %qs at %L cannot have the POINTER attribute because it is a member " "of the BIND(C) derived type %qs at %L" msgstr "" -#: fortran/symbol.cc:4531 +#: fortran/symbol.cc:4605 #, gcc-internal-format msgid "" "Procedure pointer component %qs at %L cannot be a member of the BIND(C) " "derived type %qs at %L" msgstr "" -#: fortran/symbol.cc:4542 +#: fortran/symbol.cc:4616 #, gcc-internal-format msgid "" "Component %qs at %L cannot have the ALLOCATABLE attribute because it is a " "member of the BIND(C) derived type %qs at %L" msgstr "" -#: fortran/symbol.cc:4581 +#: fortran/symbol.cc:4655 #, gcc-internal-format msgid "" "Component %qs in derived type %qs at %L may not be C interoperable, even " "though derived type %qs is BIND(C)" msgstr "" -#: fortran/symbol.cc:4591 +#: fortran/symbol.cc:4665 #, gcc-internal-format msgid "Component %qs in derived type %qs at %L may not be C interoperable" msgstr "" -#: fortran/symbol.cc:4603 +#: fortran/symbol.cc:4677 #, gcc-internal-format msgid "" "Derived type %qs at %L cannot have the SEQUENCE attribute because it is " "BIND(C)" msgstr "" -#: fortran/symbol.cc:5107 fortran/symbol.cc:5112 +#: fortran/symbol.cc:5181 fortran/symbol.cc:5186 #, gcc-internal-format msgid "Symbol %qs is used before it is typed at %L" msgstr "" @@ -85884,7 +86209,7 @@ msgstr "" msgid "Overlapping unequal initializers in EQUIVALENCE at %C" msgstr "" -#: fortran/trans-array.cc:2338 fortran/trans-expr.cc:9810 +#: fortran/trans-array.cc:2338 fortran/trans-expr.cc:9840 #, gcc-internal-format, gfc-internal-format msgid "" "The structure constructor at %C has been finalized. This feature was removed " @@ -85893,19 +86218,19 @@ msgstr "" #. Problems occur when we get something like #. integer :: a(lots) = (/(i, i=1, lots)/) -#: fortran/trans-array.cc:6570 +#: fortran/trans-array.cc:6608 #, 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.cc:8803 +#: fortran/trans-array.cc:8852 #, gcc-internal-format msgid "Creating array temporary at %L for argument %qs" msgstr "" -#: fortran/trans-array.cc:12166 +#: fortran/trans-array.cc:12215 #, gcc-internal-format, gfc-internal-format msgid "bad expression type during walk (%d)" msgstr "" @@ -86116,41 +86441,41 @@ msgstr "" msgid "Sorry, !$ACC DECLARE at %L is not allowed in BLOCK construct" msgstr "" -#: fortran/trans-expr.cc:1124 +#: fortran/trans-expr.cc:1132 #, gcc-internal-format, gfc-internal-format msgid "Cannot compute the length of the char array at %L." msgstr "" -#: fortran/trans-expr.cc:1904 +#: fortran/trans-expr.cc:1928 #, gcc-internal-format, gfc-internal-format msgid "Code for reallocating the allocatable variable at %L will be added" msgstr "" -#: fortran/trans-expr.cc:2240 +#: fortran/trans-expr.cc:2264 #, gcc-internal-format, gfc-internal-format msgid "" "Sorry, coindexed access to an unlimited polymorphic object at %L is not " "supported" msgstr "" -#: fortran/trans-expr.cc:2249 +#: fortran/trans-expr.cc:2273 #, gcc-internal-format, gfc-internal-format msgid "" "Sorry, coindexed access to an unlimited polymorphic component at %L is not " "supported" msgstr "" -#: fortran/trans-expr.cc:3944 +#: fortran/trans-expr.cc:3972 #, gcc-internal-format msgid "Unknown intrinsic op" msgstr "" -#: fortran/trans-expr.cc:5463 +#: fortran/trans-expr.cc:5491 #, gcc-internal-format, gfc-internal-format msgid "Unknown argument list function at %L" msgstr "" -#: fortran/trans-expr.cc:10388 +#: fortran/trans-expr.cc:10418 #, gcc-internal-format, gfc-internal-format msgid "" "If bounds remapping is specified at %L, the pointer target shall not be NULL" @@ -86187,49 +86512,49 @@ msgstr "" msgid "Bad IO basetype (%d)" msgstr "" -#: fortran/trans-openmp.cc:872 fortran/trans-openmp.cc:1389 +#: fortran/trans-openmp.cc:881 fortran/trans-openmp.cc:1398 #, gcc-internal-format msgid "Sorry, polymorphic arrays not yet supported for firstprivate" msgstr "" -#: fortran/trans-openmp.cc:1543 +#: fortran/trans-openmp.cc:1552 #, gcc-internal-format msgid "implicit mapping of assumed size array %qD" msgstr "" -#: fortran/trans-openmp.cc:3284 +#: fortran/trans-openmp.cc:3296 #, gcc-internal-format msgid "optional class parameter" msgstr "" -#: fortran/trans-openmp.cc:3700 +#: fortran/trans-openmp.cc:3712 #, gcc-internal-format msgid "unhandled expression type" msgstr "" -#: fortran/trans-openmp.cc:3980 +#: fortran/trans-openmp.cc:3992 #, gcc-internal-format msgid "unhandled expression" msgstr "" -#: fortran/trans-openmp.cc:4100 +#: fortran/trans-openmp.cc:4114 #, gcc-internal-format msgid "% clause with traits and memory spaces" msgstr "" -#: fortran/trans-openmp.cc:5024 +#: fortran/trans-openmp.cc:5038 #, gcc-internal-format msgid "% at %L requires %<-fopenmp-allocators%>" msgstr "" -#: fortran/trans-openmp.cc:5027 +#: fortran/trans-openmp.cc:5041 #, gcc-internal-format msgid "" "All files that might deallocate such a variable must be compiled with %<-" "fopenmp-allocators%>" msgstr "" -#: fortran/trans-openmp.cc:5030 +#: fortran/trans-openmp.cc:5044 #, gcc-internal-format msgid "" "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, " @@ -86237,69 +86562,69 @@ msgid "" "components allocated with an OpenMP allocator" msgstr "" -#: fortran/trans-openmp.cc:5607 fortran/trans-openmp.cc:5627 +#: fortran/trans-openmp.cc:5621 fortran/trans-openmp.cc:5641 #, gcc-internal-format msgid "non-rectangular loop nest with non-constant step for %qs" msgstr "" -#: fortran/trans-openmp.cc:5629 +#: fortran/trans-openmp.cc:5643 #, gcc-internal-format msgid "Used here" msgstr "" -#: fortran/trans-openmp.cc:7153 +#: fortran/trans-openmp.cc:7165 #, gcc-internal-format msgid "" "%qs specified in 'allocate' clause at %L but not in an explicit " "privatization clause" msgstr "" -#: fortran/trans-openmp.cc:8053 +#: fortran/trans-openmp.cc:8065 #, gcc-internal-format msgid "gfc_trans_omp_workshare(): Bad statement code" msgstr "" -#: fortran/trans-openmp.cc:8356 +#: fortran/trans-openmp.cc:8368 #, gcc-internal-format, gfc-internal-format msgid "The base name for 'declare variant' must be specified at %L " msgstr "" -#: fortran/trans-openmp.cc:8366 +#: fortran/trans-openmp.cc:8378 #, gcc-internal-format, gfc-internal-format msgid "The base name at %L does not match the name of the current procedure" msgstr "" -#: fortran/trans-openmp.cc:8369 +#: fortran/trans-openmp.cc:8381 #, gcc-internal-format, gfc-internal-format msgid "The base name at %L must not be an entry name" msgstr "" -#: fortran/trans-openmp.cc:8372 +#: fortran/trans-openmp.cc:8384 #, gcc-internal-format, gfc-internal-format msgid "The base name at %L must not be a generic name" msgstr "" -#: fortran/trans-openmp.cc:8375 +#: fortran/trans-openmp.cc:8387 #, gcc-internal-format, gfc-internal-format msgid "The base name at %L must not be a procedure pointer" msgstr "" -#: fortran/trans-openmp.cc:8378 +#: fortran/trans-openmp.cc:8390 #, gcc-internal-format, gfc-internal-format msgid "The base procedure at %L must have an explicit interface" msgstr "" -#: fortran/trans-openmp.cc:8491 +#: fortran/trans-openmp.cc:8503 #, gcc-internal-format msgid "Cannot find symbol %qs" msgstr "" -#: fortran/trans-openmp.cc:8502 +#: fortran/trans-openmp.cc:8514 #, gcc-internal-format msgid "variant %qs at %L is not a function or subroutine" msgstr "" -#: fortran/trans-openmp.cc:8516 +#: fortran/trans-openmp.cc:8528 #, gcc-internal-format msgid "variant %qs and base %qs at %L have incompatible types: %s" msgstr "" @@ -86319,7 +86644,7 @@ msgstr "" msgid "Sorry, only support for integer kind %d implemented for image-set at %L" msgstr "" -#: fortran/trans-stmt.cc:3686 +#: fortran/trans-stmt.cc:3700 #, gcc-internal-format msgid "gfc_trans_select(): Bad type for case expr." msgstr "" @@ -86487,82 +86812,82 @@ msgstr "" msgid "unexpected EOF" msgstr "" -#: lto/lto-common.cc:2028 +#: lto/lto-common.cc:2030 #, gcc-internal-format msgid "bytecode stream: garbage at the end of symbols section" msgstr "" -#: lto/lto-common.cc:2055 +#: lto/lto-common.cc:2057 #, gcc-internal-format msgid "could not parse hex number" msgstr "" -#: lto/lto-common.cc:2087 +#: lto/lto-common.cc:2089 #, gcc-internal-format, gfc-internal-format msgid "unexpected file name %s in linker resolution file. Expected %s" msgstr "" -#: lto/lto-common.cc:2096 +#: lto/lto-common.cc:2098 #, gcc-internal-format msgid "could not parse file offset" msgstr "" -#: lto/lto-common.cc:2099 +#: lto/lto-common.cc:2101 #, gcc-internal-format msgid "unexpected offset" msgstr "" -#: lto/lto-common.cc:2120 +#: lto/lto-common.cc:2122 #, gcc-internal-format msgid "invalid line in the resolution file" msgstr "" -#: lto/lto-common.cc:2142 +#: lto/lto-common.cc:2144 #, gcc-internal-format msgid "invalid resolution in the resolution file" msgstr "" -#: lto/lto-common.cc:2148 +#: lto/lto-common.cc:2150 #, gcc-internal-format msgid "resolution sub id %wx not in object file" msgstr "" -#: lto/lto-common.cc:2265 +#: lto/lto-common.cc:2267 #, gcc-internal-format msgid "bytecode stream in file %qs generated with GCC compiler older than 10.0" msgstr "" -#: lto/lto-common.cc:2285 +#: lto/lto-common.cc:2287 #, gcc-internal-format msgid "cannot read % from %s" msgstr "" -#: lto/lto-common.cc:2406 +#: lto/lto-common.cc:2408 #, gcc-internal-format, gfc-internal-format msgid "Cannot open %s" msgstr "" -#: lto/lto-common.cc:2427 +#: lto/lto-common.cc:2429 #, gcc-internal-format, gfc-internal-format msgid "Cannot map %s" msgstr "" -#: lto/lto-common.cc:2438 +#: lto/lto-common.cc:2440 #, gcc-internal-format, gfc-internal-format msgid "Cannot read %s" msgstr "" -#: lto/lto-common.cc:2755 +#: lto/lto-common.cc:2757 #, gcc-internal-format msgid "could not open symbol resolution file: %m" msgstr "" -#: lto/lto-common.cc:2880 +#: lto/lto-common.cc:2882 #, gcc-internal-format, gfc-internal-format msgid "missing resolution data for %s" msgstr "" -#: lto/lto-common.cc:2917 +#: lto/lto-common.cc:2919 #, gcc-internal-format msgid "errors during merging of translation units" msgstr "" @@ -86617,7 +86942,7 @@ msgstr "" msgid "two or more sections for %s" msgstr "" -#: lto/lto-partition.cc:534 +#: lto/lto-partition.cc:535 #, gcc-internal-format msgid "min partition size cannot be greater than max partition size" msgstr "" @@ -86687,47 +87012,47 @@ msgstr "" msgid "function %qD redeclared as variable" msgstr "" -#: lto/lto.cc:172 +#: lto/lto.cc:174 #, gcc-internal-format msgid "% failed" msgstr "" -#: lto/lto.cc:204 +#: lto/lto.cc:206 #, gcc-internal-format msgid "waitpid failed" msgstr "" -#: lto/lto.cc:207 +#: lto/lto.cc:209 #, gcc-internal-format msgid "streaming subprocess failed" msgstr "" -#: lto/lto.cc:210 +#: lto/lto.cc:212 #, gcc-internal-format msgid "streaming subprocess was killed by signal" msgstr "" -#: lto/lto.cc:317 +#: lto/lto.cc:319 #, gcc-internal-format msgid "no LTRANS output list filename provided" msgstr "" -#: lto/lto.cc:425 +#: lto/lto.cc:427 #, gcc-internal-format msgid "opening LTRANS output list %s: %m" msgstr "" -#: lto/lto.cc:432 +#: lto/lto.cc:434 #, gcc-internal-format msgid "writing to LTRANS output list %s: %m" msgstr "" -#: lto/lto.cc:442 +#: lto/lto.cc:444 #, gcc-internal-format msgid "closing LTRANS output list %s: %m" msgstr "" -#: m2/gm2-lang.cc:1119 +#: m2/gm2-lang.cc:1151 #, gcc-internal-format msgid "cannot convert expression, only base types can be converted" msgstr "" @@ -86804,48 +87129,48 @@ msgstr "" msgid "constant %qs is too large" msgstr "" -#: m2/gm2-gcc/m2expr.cc:2609 +#: m2/gm2-gcc/m2expr.cc:2617 #, gcc-internal-format msgid "not expecting different types to binary operator" msgstr "" -#: m2/gm2-gcc/m2expr.cc:2867 +#: m2/gm2-gcc/m2expr.cc:2875 #, gcc-internal-format msgid "cannot take the address of this expression" msgstr "" -#: m2/gm2-gcc/m2expr.cc:3634 +#: m2/gm2-gcc/m2expr.cc:3642 #, gcc-internal-format msgid "argument to CAP is not a constant or variable of type CHAR" msgstr "" -#: m2/gm2-gcc/m2expr.cc:3914 m2/gm2-gcc/m2expr.cc:4020 -#: m2/gm2-gcc/m2expr.cc:4029 +#: m2/gm2-gcc/m2expr.cc:3922 m2/gm2-gcc/m2expr.cc:4028 +#: m2/gm2-gcc/m2expr.cc:4037 #, gcc-internal-format msgid "constant literal %qs exceeds internal ZTYPE range" msgstr "" -#: m2/gm2-gcc/m2expr.cc:3949 +#: m2/gm2-gcc/m2expr.cc:3957 #, gcc-internal-format msgid "constant literal %qs contains %qc, expected 0 or 1" msgstr "" -#: m2/gm2-gcc/m2expr.cc:3964 m2/gm2-gcc/m2expr.cc:3976 +#: m2/gm2-gcc/m2expr.cc:3972 m2/gm2-gcc/m2expr.cc:3984 #, gcc-internal-format msgid "constant literal %qs contains %qc, expected %qs" msgstr "" -#: m2/gm2-gcc/m2expr.cc:3995 +#: m2/gm2-gcc/m2expr.cc:4003 #, gcc-internal-format msgid "constant literal %qs contains %qc, expected %qs or %qs" msgstr "" -#: m2/gm2-gcc/m2expr.cc:4061 +#: m2/gm2-gcc/m2expr.cc:4069 #, gcc-internal-format msgid "%qs applied to a void type" msgstr "" -#: m2/gm2-gcc/m2expr.cc:4082 m2/gm2-gcc/m2expr.cc:4126 +#: m2/gm2-gcc/m2expr.cc:4090 m2/gm2-gcc/m2expr.cc:4134 #, gcc-internal-format msgid "%qs applied to an incomplete type" msgstr "" @@ -86860,12 +87185,12 @@ msgstr "" msgid "at %s, %s" msgstr "" -#: m2/gm2-gcc/m2statement.cc:558 +#: m2/gm2-gcc/m2statement.cc:563 #, gcc-internal-format msgid "internal error: not expecting operand1 to be a constant set" msgstr "" -#: m2/gm2-gcc/m2statement.cc:952 +#: m2/gm2-gcc/m2statement.cc:957 #, gcc-internal-format msgid "expecting one and only one label to be declared" msgstr "" diff --git a/gcc/po/sv.po b/gcc/po/sv.po index f24eb1bbd349..d8a55cf55d3c 100644 --- a/gcc/po/sv.po +++ b/gcc/po/sv.po @@ -32,7 +32,7 @@ msgstr "" "Project-Id-Version: gcc 14.1-b20240218\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2024-02-16 21:35+0000\n" -"PO-Revision-Date: 2024-03-03 17:38+0100\n" +"PO-Revision-Date: 2024-04-02 09:51+0200\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -1635,10 +1635,9 @@ msgid "Warn about C++26 constructs in code compiled with an older standard." msgstr "Varna för C++26-konstruktioner i kod kompilerad med en äldre standard." #: c-family/c.opt:507 -#, fuzzy, no-c-format -#| msgid "Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers." +#, no-c-format msgid "Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter." -msgstr "Varna för misstänkta divisioner av två sizeof-uttryck som inte fungerar korrekt med pekare." +msgstr "Varna för misstänkta anrop av calloc-liknande funktioner där sizeof-uttryck är det tidigare storleksargumentet och inte det senare." #: c-family/c.opt:511 #, no-c-format @@ -1758,10 +1757,9 @@ msgid "Warn when a declaration is found after a statement." msgstr "Varna när en deklaration hittas efter en sats." #: c-family/c.opt:612 -#, fuzzy, no-c-format -#| msgid "Warn about unprototyped function declarations." +#, no-c-format msgid "Warn for missing parameter types in function declarations." -msgstr "Varna för funktionsdeklarationer utan prototyp." +msgstr "Varna för saknade parametertyper i funktionsdeklarationer." #: c-family/c.opt:616 #, no-c-format @@ -2174,10 +2172,9 @@ msgid "Warn when the template keyword is missing after a member access token in msgstr "Varna när nyckelordet template saknas efter en medlemsåtkomstsymbol i en beroende medlems åtkomstuttryck om den medlemmen är en mall." #: c-family/c.opt:994 -#, fuzzy, no-c-format -#| msgid "Warn about global functions without previous declarations." +#, no-c-format msgid "Warn about global variables without previous declarations." -msgstr "Varna för globala funktioner utan tidigare deklaration." +msgstr "Varna för globala variabler utan tidigare deklaration." #: c-family/c.opt:1001 #, no-c-format @@ -2265,10 +2262,9 @@ msgid "Warn about potentially suboptimal choices related to OpenACC parallelism. msgstr "Varna för potentiellt suboptimala val relaterade till OpenACC-parallellism." #: c-family/c.opt:1101 -#, fuzzy, no-c-format -#| msgid "Warn about \"suspicious\" constructs." +#, no-c-format msgid "Warn about suspicious OpenMP code." -msgstr "Varna för ”misstänkta” konstruktioner." +msgstr "Varna för misstänkt OpenMP-kod." #: c-family/c.opt:1105 #, no-c-format @@ -2606,10 +2602,9 @@ msgid "Warn if a comparison always evaluates to true or false." msgstr "Varna om en logisk jämförelse alltid beräknas till sant eller falskt." #: c-family/c.opt:1413 -#, fuzzy, no-c-format -#| msgid "template-id not allowed for destructor" +#, no-c-format msgid "Warn about simple-template-id in a constructor or destructor." -msgstr "mall-id är inte tillåtet för destruerare" +msgstr "Varna för simple-template-id i en konstruerare eller destruerare." #: c-family/c.opt:1417 #, no-c-format @@ -2918,10 +2913,9 @@ msgid "Print hierarchical comparisons when template types are mismatched." msgstr "Skriv ut hierarkiska jämförelser när malltyper inte stämmer överens." #: c-family/c.opt:1818 -#, fuzzy, no-c-format -#| msgid "default argument mismatch in overload resolution" +#, no-c-format msgid "Note all candidates during overload resolution failure." -msgstr "standardargument stämmer inte överens i upplösning av överlagring" +msgstr "Notera alla kandidater under misslyckad upplösning av överlagring." #: c-family/c.opt:1822 #, no-c-format @@ -3084,10 +3078,9 @@ msgid "Warn about macros that have conflicting header units definitions." msgstr "Varna för makron som har motstridiga huvudenhetsdefinitioner." #: c-family/c.opt:1992 -#, fuzzy, no-c-format -#| msgid "Warn when a pointer is compared with a zero character constant." +#, no-c-format msgid "Warn if pointers of distinct types are compared without a cast." -msgstr "Varna när en pekare jämförs med en noll-teckenkonstant." +msgstr "Varna om pekare av distinkta typer jämförs utan en typkonvertering." #: c-family/c.opt:1996 #, no-c-format @@ -3130,10 +3123,9 @@ msgid "Implement resolution of DR 150 for matching of template template argument msgstr "Implementera upplösning av DR 150 för att matcha mall-mall-argument." #: c-family/c.opt:2043 -#, fuzzy, no-c-format -#| msgid "Generate code for NeXT (Apple Mac OS X) runtime environment." +#, no-c-format msgid "Generate code for NeXT (Apple macOS) runtime environment." -msgstr "Generera kod för körtidsmiljön NeXT (Apple Mac OS X)." +msgstr "Generera kod för körtidsmiljön NeXT (Apple macOS)." #: c-family/c.opt:2047 #, no-c-format @@ -3526,10 +3518,9 @@ msgid "Conform to the ISO 2023 C++ draft standard (experimental and incomplete s msgstr "Följ standardutkastet ISO 2023 C++ (experimentellt och ofullständigt stöd)." #: c-family/c.opt:2480 c-family/c.opt:2484 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2023 C++ draft standard (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2026 C++ draft standard (experimental and incomplete support)." -msgstr "Följ standardutkastet ISO 2023 C++ (experimentellt och ofullständigt stöd)." +msgstr "Följ standardutkastet ISO 2026 C++ (experimentellt och ofullständigt stöd)." #: c-family/c.opt:2488 c-family/c.opt:2642 #, no-c-format @@ -3548,16 +3539,14 @@ msgid "Conform to the ISO 2017 C standard (published in 2018)." msgstr "Följ standarden ISO 2017 C (publicerades 2018)." #: c-family/c.opt:2504 c-family/c.opt:2654 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 202X C standard draft (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) (experimental and incomplete support)." -msgstr "Följ standardutkastet ISO 202X C (experimentellt och ofullständigt stöd)." +msgstr "Följ standardutkastet ISO 2023 C (förväntas publiceras under 2024) (experimentellt och ofullständigt stöd)." #: c-family/c.opt:2508 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -std=c11." +#, no-c-format msgid "Deprecated in favor of -std=c23." -msgstr "Undanbedes till förmån för -std=c11." +msgstr "Undanbedes till förmån för -std=c23." #: c-family/c.opt:2512 c-family/c.opt:2516 c-family/c.opt:2626 #, no-c-format @@ -3620,10 +3609,9 @@ msgid "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimen msgstr "Följ standardutkastet ISO 2023 C++ med GNU-utökningar (experimentellt och ofullständigt stöd)." #: c-family/c.opt:2578 c-family/c.opt:2582 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support)." -msgstr "Följ standardutkastet ISO 2023 C++ med GNU-utökningar (experimentellt och ofullständigt stöd)." +msgstr "Följ standardutkastet ISO 2026 C++ med GNU-utökningar (experimentellt och ofullständigt stöd)." #: c-family/c.opt:2586 #, no-c-format @@ -3641,16 +3629,14 @@ msgid "Conform to the ISO 2017 C standard (published in 2018) with GNU extension msgstr "Följ standarden ISO 2017 C (publicerades 2018) med GNU-utökningar." #: c-family/c.opt:2602 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) with GNU extensions (experimental and incomplete support)." -msgstr "Följ standardutkastet ISO 202X C med GNU-utökningar (experimentellt och ofullständigt stöd)." +msgstr "Följ standardutkastet ISO 2023 C (förväntas publiceras under 2024) med GNU-utökningar (experimentellt och ofullständigt stöd)." #: c-family/c.opt:2606 -#, fuzzy, no-c-format -#| msgid "Deprecated in favor of -std=gnu11." +#, no-c-format msgid "Deprecated in favor of -std=gnu23." -msgstr "Undanbedes till förmån för -std=gnu11." +msgstr "Undanbedes till förmån för -std=gnu23." #: c-family/c.opt:2610 c-family/c.opt:2614 #, no-c-format @@ -4583,10 +4569,9 @@ msgid "Warn about code paths in which floating-point arithmetic is used in locat msgstr "Varna för kodvägar i vilka flyttalsaritmetik används på platser där precis beräkning behövs." #: analyzer/analyzer.opt:139 -#, fuzzy, no-c-format -#| msgid "Warn about code paths which appear to lead to infinite recursion." +#, no-c-format msgid "Warn about code paths which appear to lead to an infinite loop." -msgstr "Varna för kodvägar vilka förefaller leda till oändlig rekursion." +msgstr "Varna för kodvägar vilka förefaller leda till oändlig slinga." #: analyzer/analyzer.opt:143 #, no-c-format @@ -4614,10 +4599,9 @@ msgid "Warn about code paths in which a write or read to a buffer is out-of-boun msgstr "Varna för kodvägar i vilka en skrivning eller läsning till/från en buffert går utanför gränserna." #: analyzer/analyzer.opt:163 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which a write or read to a buffer is out-of-bounds." +#, no-c-format msgid "Warn about code paths in which undefined behavior would occur due to overlapping buffers." -msgstr "Varna för kodvägar i vilka en skrivning eller läsning till/från en buffert går utanför gränserna." +msgstr "Varna för kodvägar i vilka odefinierat beteende skulle uppstå på grund av överlappande buffertar." #: analyzer/analyzer.opt:167 #, no-c-format @@ -4695,10 +4679,9 @@ msgid "Warn about code paths in which an unsanitized value is used as a size." msgstr "Varna för kodvägar i vilka ett osanerat värde används som en storlek." #: analyzer/analyzer.opt:227 -#, fuzzy, no-c-format -#| msgid "Warn about code paths which appear to lead to infinite recursion." +#, no-c-format msgid "Warn about code paths in in which a call is made to strtok with undefined behavior." -msgstr "Varna för kodvägar vilka förefaller leda till oändlig rekursion." +msgstr "Varna för kodvägar i vilka förefaller ett anrop görs av strtok med odefinierat beteende." #: analyzer/analyzer.opt:231 #, no-c-format @@ -4746,10 +4729,9 @@ msgid "Warn about code paths in which an uninitialized value is used." msgstr "Varna för kodvägar i vilka ett oinitierat värde används." #: analyzer/analyzer.opt:267 -#, fuzzy, no-c-format -#| msgid "Warn if the code is too complicated for the analyzer to fully explore." +#, no-c-format msgid "Warn if expressions are too complicated for the analyzer to fully track." -msgstr "Varna om koden är för komplicerad för att analyseraren skall kunna utforska den fullständigt." +msgstr "Varna om uttryck är för komplicerade för att analyseraren skall kunna spåra dem fullständigt." #: analyzer/analyzer.opt:271 #, no-c-format @@ -4877,10 +4859,9 @@ msgid "Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot. msgstr "Dumpa diverse intern information om analyseraren till KÄLLFIL.*.fg.dot och KÄLLFIL.*.tg.dot." #: analyzer/analyzer.opt:371 -#, fuzzy, no-c-format -#| msgid "Dump various analyzer internals to SRCFILE.analyzer.txt." +#, no-c-format msgid "Dump various analyzer internals to SRCFILE.*.infinite-loop.dot." -msgstr "Dumpa diverse intern information om analyseraren till KÄLLFIL.analyzer.txt." +msgstr "Dumpa diverse intern information om analyseraren till KÄLLFIL.*.infinite-loop.dot." #: analyzer/analyzer.opt:375 #, no-c-format @@ -5318,10 +5299,9 @@ msgid "Do not add a default symbol exports to modules or dynamic libraries." msgstr "Lägg inte till standardsymbolexporter till moduler eller dynamiska bibliotek." #: config/darwin.opt:246 -#, fuzzy, no-c-format -#| msgid "Do not add a default symbol exports to modules or dynamic libraries." +#, no-c-format msgid "Do not add default run paths (for the compiler library directories) to executables, modules or dynamic libraries." -msgstr "Lägg inte till standardsymbolexporter till moduler eller dynamiska bibliotek." +msgstr "Lägg inte till en standardkörsökväg (för kompilatorns bibliotekskataloger) till körbara, moduler eller dynamiska bibliotek." #: config/darwin.opt:250 #, no-c-format @@ -5985,10 +5965,9 @@ msgid "Set the version of RISC-V ISA spec." msgstr "Sätt versionen för RISC-V ISA-specifikationen." #: config/riscv/riscv.opt:509 -#, fuzzy, no-c-format -#| msgid "Enable conditional move instruction usage." +#, no-c-format msgid "Enable conditional moves unconditionally." -msgstr "Aktivera användning av villkorliga flyttinstruktioner." +msgstr "Aktivera villkorliga flyttinstruktioner ovillkorligt." #: config/riscv/riscv.opt:513 #, no-c-format @@ -5996,22 +5975,19 @@ msgid "Always inline subword atomic operations." msgstr "Inline:a alltid atomära operationer på delord." #: config/riscv/riscv.opt:517 -#, fuzzy, no-c-format -#| msgid "Use caller save register across calls if possible." +#, no-c-format msgid "Inline strcmp calls if possible." -msgstr "Använd anroparens sparregister mellan anrop om möjligt." +msgstr "Inline:a strcmp-anrop om möjligt." #: config/riscv/riscv.opt:521 -#, fuzzy, no-c-format -#| msgid "Use caller save register across calls if possible." +#, no-c-format msgid "Inline strncmp calls if possible." -msgstr "Använd anroparens sparregister mellan anrop om möjligt." +msgstr "Inline:a strncmp-anrop om möjligt." #: config/riscv/riscv.opt:525 -#, fuzzy, no-c-format -#| msgid "Reduce stack alignment on call sites if possible." +#, no-c-format msgid "Inline strlen calls if possible." -msgstr "Reducera stackjusteringen vid anropsplatsen om möjligt." +msgstr "Inline:a strlen-anrop om möjligt." #: config/riscv/riscv.opt:529 #, no-c-format @@ -6019,10 +5995,9 @@ msgid "Max number of bytes to compare as part of inlined strcmp/strncmp routines msgstr "Max antal byte att jämföra som en del av inline:ade strcmp/strncmp-rutiner (standard: 64)." #: config/riscv/riscv.opt:533 -#, fuzzy, no-c-format -#| msgid "Valid arguments to -mcode-readable=:" +#, no-c-format msgid "Valid arguments to -param=riscv-autovec-preference=:" -msgstr "Giltiga argument till -mcode-readable=:" +msgstr "Giltiga argument till -param=riscv-autovec-preference=:" #: config/riscv/riscv.opt:546 #, no-c-format @@ -6040,10 +6015,9 @@ msgid "-param=riscv-autovec-lmul=\tSet the RVV LMUL of auto-vectorizatio msgstr "-param=riscv-autovec-lmul=\tSätt RVV LMUL:en för autovektorisering i RISC-V-porteringen." #: config/riscv/riscv.opt:576 -#, fuzzy, no-c-format -#| msgid "Valid arguments to -mstringop-strategy=:" +#, no-c-format msgid "Valid arguments to -param=vsetvl-strategy=:" -msgstr "Giltiga argument till -mstringop-strategy=:" +msgstr "Giltiga argument till -param=vsetvl-strategy=:" #: config/riscv/riscv.opt:589 #, no-c-format @@ -6056,10 +6030,9 @@ msgid "Valid arguments to -mstringop-strategy=:" msgstr "Giltiga argument till -mstringop-strategy=:" #: config/riscv/riscv.opt:609 -#, fuzzy, no-c-format -#| msgid "Specify memset expansion strategy when expected size is known." +#, no-c-format msgid "Specify stringop expansion strategy." -msgstr "Ange strategi för expansion av memset när den förväntade storleken är känd." +msgstr "Ange strategi för expansion av stringop." #: config/m32c/m32c.opt:23 #, no-c-format @@ -6212,16 +6185,14 @@ msgid "Workaround for ARM Cortex-A53 Erratum number 843419." msgstr "Sätt att gå runt ARM Cortex-A53:s errata nummer 843419." #: config/aarch64/aarch64.opt:102 -#, fuzzy, no-c-format -#| msgid "Specify how to access the thread pointer." +#, no-c-format msgid "The register used to access the thread pointer:" -msgstr "Ange hur trådpekaren skall nås." +msgstr "Registret använt för att nå trådpekaren:" #: config/aarch64/aarch64.opt:133 -#, fuzzy, no-c-format -#| msgid "Specify thread pointer register number." +#, no-c-format msgid "Specify the thread pointer register." -msgstr "Ange registernumret för trådpekare." +msgstr "Ange trådpekarregistret." #: config/aarch64/aarch64.opt:137 #, no-c-format @@ -7105,10 +7076,9 @@ msgid "Branches are this expensive (arbitrary units)." msgstr "Hopp är så här dyra (godtyckliga enheter)." #: config/i386/i386.opt:300 -#, fuzzy, no-c-format -#| msgid "-mlarge-data-threshold=\tData greater than given threshold will go into .ldata section in x86-64 medium model." +#, no-c-format msgid "-mlarge-data-threshold=\tData greater than given threshold will go into a large data section in x86-64 medium and large code models." -msgstr "-mlarge-data-threshold=\tData större än den angivna gränsen kommer hamna i .ldata-sektionen i x86-64 medelmodell." +msgstr "-mlarge-data-threshold=\tData större än den angivna gränsen kommer hamna i en stor sektion i x86-64 medelstora och stora kodmodeller." #: config/i386/i386.opt:304 #, no-c-format @@ -8041,40 +8011,34 @@ msgid "Support AMX-COMPLEX built-in functions and code generation." msgstr "Stöd inbyggda AMX-COMPLEX-funktioner och -kodgenerering." #: config/i386/i386.opt:1303 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT8 built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT16 built-in functions and code generation." -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVXVNNIINT8-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVXVNNIINT16-funktioner och -kodgenerering." #: config/i386/i386.opt:1308 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM3 built-in functions and code generation." -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och FMA-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och SM3-funktioner och -kodgenerering." #: config/i386/i386.opt:1313 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SHA512 built-in functions and code generation." -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och AVX2-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och SHA512-funktioner och -kodgenerering." #: config/i386/i386.opt:1318 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM4 built-in functions and code generation." -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och FMA-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och SM4-funktioner och -kodgenerering." #: config/i386/i386.opt:1323 -#, fuzzy, no-c-format -#| msgid "Enable vectorization on trees." +#, no-c-format msgid "Enable vectorization for gather instruction." -msgstr "Aktivera vektorisering av träd." +msgstr "Aktivera vektorisering för samlingsinstruktion." #: config/i386/i386.opt:1327 -#, fuzzy, no-c-format -#| msgid "Enable vectorization on trees." +#, no-c-format msgid "Enable vectorization for scatter instruction." -msgstr "Aktivera vektorisering av träd." +msgstr "Aktivera vektorisering för spridningsinstruktion." #: config/i386/i386.opt:1331 #, no-c-format @@ -8087,28 +8051,24 @@ msgid "Enable GPR32 in inline asm when APX_F enabled." msgstr "Aktivera GPR32 i inline:ad asm när APX_F är aktiverat." #: config/i386/i386.opt:1364 -#, fuzzy, no-c-format -#| msgid "Support BMI2 built-in functions and code generation." +#, no-c-format msgid "Support 512 bit vector built-in functions and code generation." -msgstr "Stöd inbyggda BMI2-funktioner och -kodgenerering." +msgstr "Stöd inbyggda 512bitsvektorfunktioner och -kodgenerering." #: config/i386/i386.opt:1368 -#, fuzzy, no-c-format -#| msgid "Support AES built-in functions and code generation." +#, no-c-format msgid "Support USER_MSR built-in functions and code generation." -msgstr "Stöd inbyggda AES-funktioner och -kodgenerering." +msgstr "Stöd inbyggda USER_MSR-funktioner och -kodgenerering." #: config/i386/i386.opt:1372 config/i386/i386.opt:1382 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1 built-in functions and code generation." -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX10.1-funktioner och -kodgenerering." #: config/i386/i386.opt:1377 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-512 built-in functions and code generation." -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX10.1-512-funktioner och -kodgenerering." #: config/pa/pa64-hpux.opt:23 #, no-c-format @@ -10210,16 +10170,14 @@ msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bi msgstr "Tillåt flyttalsinstruktioner i hårdvara att omfatta både 32-bitars och 64-bitars operationer." #: config/loongarch/loongarch.opt:81 -#, fuzzy, no-c-format -#| msgid "FPU types of LoongArch:" +#, no-c-format msgid "SIMD extension levels of LoongArch:" -msgstr "FPU-typer hos LoongArch:" +msgstr "SIMD-utvidgningsnivåer för LoongArch:" #: config/loongarch/loongarch.opt:94 -#, fuzzy, no-c-format -#| msgid "-march=ISA\tGenerate code for the given ISA." +#, no-c-format msgid "-msimd=SIMD\tGenerate code for the given SIMD extension." -msgstr "-march=ISA\tGenerera kod för den angivna ISA:n." +msgstr "-march=SIMD\tGenerera kod för den angivna SIMD-utvidgningen." #: config/loongarch/loongarch.opt:98 #, no-c-format @@ -10287,10 +10245,9 @@ msgid "-mmax-inline-memcpy-size=SIZE\tSet the max size of memcpy to inline, defa msgstr "-mmax-inline-memcpy-size=STORLEK\tAnge den maximala storleken att inline:a memcpy, standard är 1024." #: config/loongarch/loongarch.opt:189 config/mips/mips.opt:150 -#, fuzzy, no-c-format -#| msgid "The code model option names for -mcmodel:" +#, no-c-format msgid "The code model option names for -mexplicit-relocs:" -msgstr "Namnen för flaggan för kodmodell för -mcmodel:" +msgstr "Namnen för flaggan för kodmodell för -mexplicit-relocs:" #: config/loongarch/loongarch.opt:202 config/mips/mips.opt:163 #, no-c-format @@ -10298,16 +10255,14 @@ msgid "Use %reloc() assembly operators." msgstr "Använd assembleroperatorer %reloc()." #: config/loongarch/loongarch.opt:206 config/mips/mips.opt:167 -#, fuzzy, no-c-format -#| msgid "Use %reloc() assembly operators." +#, no-c-format msgid "Use %reloc() assembly operators (for backward compatibility)." -msgstr "Använd assembleroperatorer %reloc()." +msgstr "Använd assembleroperatorer %reloc() (för bakåtkompatibilitet)." #: config/loongarch/loongarch.opt:210 -#, fuzzy, no-c-format -#| msgid "Generate software reciprocal divide and square root for better throughput." +#, no-c-format msgid "Generate approximate reciprocal divide and square root for better throughput." -msgstr "Generera inversdivision och kvadratrot i programvara för bättre genomströmning." +msgstr "Generera approximativ inversdivision och kvadratrot i programvara för bättre genomströmning." #: config/loongarch/loongarch.opt:245 #, no-c-format @@ -10315,22 +10270,19 @@ msgid "Avoid using the GOT to access external symbols." msgstr "Undvika att använda GOT för att komma åt externa symboler." #: config/loongarch/loongarch.opt:254 -#, fuzzy, no-c-format -#| msgid "Enable relaxing in the assembler." +#, no-c-format msgid "Pass -mrelax or -mno-relax option to the assembler." -msgstr "Aktivera lättnad i assemblern." +msgstr "Skicka flaggan -mrelax eller -mno-relax till assemblern." #: config/loongarch/loongarch.opt:258 -#, fuzzy, no-c-format -#| msgid "Used to limit unroll factor which indicates how much the autovectorizer may unroll a loop. The default value is 4." +#, no-c-format msgid "Used to limit unroll factor which indicates how much the autovectorizer may unroll a loop. The default value is 6." -msgstr "Används för att begränsa utrullningsfaktorn som indikerar hur mycket autovektoriseraren får rulla ut en slinga. Standardvärdet är 4." +msgstr "Används för att begränsa utrullningsfaktorn som indikerar hur mycket autovektoriseraren får rulla ut en slinga. Standardvärdet är 6." #: config/loongarch/loongarch.opt:276 -#, fuzzy, no-c-format -#| msgid "Support flag-preserving add-carry instructions." +#, no-c-format msgid "Support frecipe.{s/d} and frsqrte.{s/d} instructions." -msgstr "Stöd flaggbevarande add-carry-instruktioner." +msgstr "Stöd instruktionerna frecipe.{s/d} och frsqrte.{s/d}." #: config/loongarch/loongarch.opt:280 #, no-c-format @@ -10338,16 +10290,14 @@ msgid "Support div.w[u] and mod.w[u] instructions with inputs not sign-extended. msgstr "Stöd instruktionerna div.w[u] och mod.w[u] med indata som inte är teckenutvidgat." #: config/loongarch/loongarch.opt:284 -#, fuzzy, no-c-format -#| msgid "Support XSAVEC instructions." +#, no-c-format msgid "Support am{swap/add}[_db].{b/h} instructions." -msgstr "Stöd instruktionerna XSAVEC." +msgstr "Stöd instruktionerna am{swap/add}[_db].{b/h}." #: config/loongarch/loongarch.opt:288 -#, fuzzy, no-c-format -#| msgid "Support XSAVEC instructions." +#, no-c-format msgid "Support amcas[_db].{b/h/w/d} instructions." -msgstr "Stöd instruktionerna XSAVEC." +msgstr "Stöd instruktionerna amcas[_db].{b/h/w/d}." #: config/loongarch/loongarch.opt:292 #, no-c-format @@ -12530,16 +12480,14 @@ msgid "Warn about invalid OpenACC dimensions." msgstr "Varna för en felaktiga OpenACC-dimensioner." #: config/gcn/gcn.opt:92 -#, fuzzy, no-c-format -#| msgid "SRAM-ECC modes:" +#, no-c-format msgid "SRAM-ECC and XNACK modes:" -msgstr "SRAM-ECC-lägen:" +msgstr "SRAM-ECC- och XNACK-lägen:" #: config/gcn/gcn.opt:108 -#, fuzzy, no-c-format -#| msgid "Compile for devices requiring XNACK enabled. Default off." +#, no-c-format msgid "Compile for devices requiring XNACK enabled. Default \"any\" if USM is supported." -msgstr "Kompilera för enheter som kräver att XNACK är aktiverat. Standard är av." +msgstr "Kompilera för enheter som kräver att XNACK är aktiverat. Standard är ”any” om USM stödjs." #: config/gcn/gcn.opt:112 #, no-c-format @@ -12592,34 +12540,29 @@ msgid "Enable 32-bit jump instructions." msgstr "Använd 32-bitars hoppinstruktioner." #: config/bpf/bpf.opt:64 -#, fuzzy, no-c-format -#| msgid "Enable asan store operations protection." +#, no-c-format msgid "Enable general atomic operations introduced in v3 ISA." -msgstr "Aktivera asan-skydd av lagringsoperationer." +msgstr "Använd generella atomära operationer introducerade i v3 ISA." #: config/bpf/bpf.opt:68 -#, fuzzy, no-c-format -#| msgid "Enable 32-bit jump instructions." +#, no-c-format msgid "Enable byte swap instructions." -msgstr "Använd 32-bitars hoppinstruktioner." +msgstr "Använd byte-växlings-instruktioner." #: config/bpf/bpf.opt:72 -#, fuzzy, no-c-format -#| msgid "Enable divide and modulus instructions." +#, no-c-format msgid "Enable signed division and modulus instructions." -msgstr "Använd divisions- och modulusinstruktioner." +msgstr "Använd divisions- och modulusinstruktioner med tecken." #: config/bpf/bpf.opt:76 -#, fuzzy, no-c-format -#| msgid "Enable divide and modulus instructions." +#, no-c-format msgid "Enable signed move and memory load instructions." -msgstr "Använd divisions- och modulusinstruktioner." +msgstr "Använd flyttnings- och minnesladdningsinstruktioner med tecken." #: config/bpf/bpf.opt:102 -#, fuzzy, no-c-format -#| msgid "Known assembler dialects (for use with the -masm= option):" +#, no-c-format msgid "Known assembler dialects (for use with the -masm= option)" -msgstr "Kända assemblerdialekter (att användas med flaggan -masm=):" +msgstr "Kända assemblerdialekter (att användas med flaggan -masm=)" #: config/mips/mips.opt:32 #, no-c-format @@ -12702,10 +12645,9 @@ msgid "Use Enhanced Virtual Addressing instructions." msgstr "Använd instruktioner för förbättrad virtuell adressering." #: config/mips/mips.opt:171 -#, fuzzy, no-c-format -#| msgid "Does nothing. Preserved for backward compatibility." +#, no-c-format msgid "Don't use %reloc() assembly operators (for backward compatibility)." -msgstr "Gör ingenting. Bevarad för bakåtkompatibilitet." +msgstr "Använd inte assembleroperatorer %reloc() (för bakåtkompatibilitet)." #: config/mips/mips.opt:175 #, no-c-format @@ -12968,10 +12910,9 @@ msgid "Optimize lui/addiu address loads." msgstr "Optimera adressladdning lui/addiu." #: config/mips/mips.opt:406 -#, fuzzy, no-c-format -#| msgid "Enable MUL instructions." +#, no-c-format msgid "Enable the MIPS16e V2 instructions." -msgstr "Använd MUL-instruktioner." +msgstr "Använd instruktionerna MIPS16e V2." #: config/mips/mips.opt:410 #, no-c-format @@ -13849,10 +13790,9 @@ msgid "Warn about functions which might be candidates for __attribute__((malloc) msgstr "Varna för funktioner som är möjliga kandidater för __attribute__((malloc))." #: common.opt:790 -#, fuzzy, no-c-format -#| msgid "Warn about functions which might be candidates for __attribute__((noreturn))." +#, no-c-format msgid "Warn about functions which might be candidates for __attribute__((returns_nonnull))." -msgstr "Varna för funktioner som är möjliga kandidater för __attribute__((noreturn))." +msgstr "Varna för funktioner som är möjliga kandidater för __attribute__((returns_nonnull))." #: common.opt:794 #, no-c-format @@ -14305,10 +14245,9 @@ msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics." msgstr "-fdiagnostics-color=[never|always|auto]\tFärglägg felmeddelanden." #: common.opt:1394 -#, fuzzy, no-c-format -#| msgid "Enable verbose output." +#, no-c-format msgid "Enable formatting of JSON output." -msgstr "Aktivera utförlig utskrift." +msgstr "Aktivera formatering av JSON-utdata." #: common.opt:1398 #, no-c-format @@ -14661,16 +14600,14 @@ msgid "Harden conditional branches by checking reversed conditions." msgstr "Härda villkorsgrenar genom att kontrollera omvända villkor." #: common.opt:1846 -#, fuzzy, no-c-format -#| msgid "Harden conditionals not used in branches, checking reversed conditions." +#, no-c-format msgid "Harden control flow by recording and checking execution paths." -msgstr "Härda villkor som inte används i grenar, kontrollera omvända villkor." +msgstr "Härda styrflödet genom att spela in och kontroller körvägar." #: common.opt:1850 -#, fuzzy, no-c-format -#| msgid "disable pass %s for function %s" +#, no-c-format msgid "Disable CFR in leaf functions." -msgstr "avaktivera pass %s för funktionen %s" +msgstr "Avaktivera CFR i lövfunktioner." #: common.opt:1854 #, no-c-format @@ -15003,10 +14940,9 @@ msgid "-fmessage-length=\tLimit diagnostics to characters per l msgstr "-fmessage-length=\tBegränsa felmeddelandens längd till tecken per rad. 0 stänger av radbrytning." #: common.opt:2279 -#, fuzzy, no-c-format -#| msgid "Align the start of functions." +#, no-c-format msgid "Align the start of every function." -msgstr "Justera starten av funktioner." +msgstr "Justera starten av varje funktion." #: common.opt:2283 #, no-c-format @@ -15654,10 +15590,9 @@ msgid "Restore default strub mode: as per attributes, with relaxed checking." msgstr "Återställ strub-läget: enligt attribut, med lättare kontroller." #: common.opt:2948 -#, fuzzy, no-c-format -#| msgid "Enable hwasan instrumentation of builtin functions." +#, no-c-format msgid "Enable stack scrubbing for all viable functions." -msgstr "Aktivera hwasan-instrumentering av inbyggda funktioner." +msgstr "Aktivera stackskrubbning för alla möjliga funktioner." #: common.opt:2952 #, no-c-format @@ -15665,10 +15600,9 @@ msgid "Enable at-calls stack scrubbing for all viable functions." msgstr "Aktivera stackskrubbning vid anrop för alla möjliga funktioner." #: common.opt:2956 -#, fuzzy, no-c-format -#| msgid "Enable interrupt stack instructions." +#, no-c-format msgid "Enable internal stack scrubbing for all viable functions." -msgstr "Använd avbrottsstackinstruktioner." +msgstr "Aktivera intern stackskrubbning av alla möjliga funktioner." #: common.opt:2960 #, no-c-format @@ -16126,10 +16060,9 @@ msgid "Assume assembler support for view in (DWARF2+) .loc directives." msgstr "Anta att assemblern stödjer vyer i .loc-direktiv (DWARF2+)." #: common.opt:3483 -#, fuzzy, no-c-format -#| msgid "Generate debug information in VMS format." +#, no-c-format msgid "Generate debug information in CodeView format." -msgstr "Generera felsökningsinformation i VMS-format." +msgstr "Generera felsökningsinformation i CodeView-format." #: common.opt:3503 #, no-c-format @@ -17581,13 +17514,12 @@ msgstr "Det maximala antalet nästade anrop att söka i efter styrberoenden unde #: params.opt:1126 #, no-c-format msgid "Maximum number of predicates anded for each predicate ored in the normalized predicate chain." -msgstr "Maximalt antal predikat med \"and\" för varje predikat med \"or\" i den normaliserade predikatkedjan." +msgstr "Maximalt antal predikat med ”and” för varje predikat med ”or” i den normaliserade predikatkedjan." #: params.opt:1131 -#, fuzzy, no-c-format -#| msgid "Maximum number of bases stored in each modref tree." +#, no-c-format msgid "Maximum number of predicates ored in the normalized predicate chain." -msgstr "Maximalt antal baser som lagras i varje modref-träd." +msgstr "Maximalt antal predikat med ”or” i den normaliserade predikatkedjan." #: params.opt:1135 #, no-c-format @@ -17675,22 +17607,19 @@ msgid "Enable loop vectorization of floating point inductions." msgstr "Aktivera slingvektorisering av flyttalsinduktioner." #: params.opt:1203 -#, fuzzy, no-c-format -#| msgid "Maximum number of basic blocks before EVRP uses a sparse cache." +#, no-c-format msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache." -msgstr "Maximalt antal grundblock innan EVRP använder en gles cache." +msgstr "Maximalt antal grundblock innan VRP använder en gles bitkartecache." #: params.opt:1207 -#, fuzzy, no-c-format -#| msgid "Maximum number of outgoing edges in a switch before EVRP will not process it." +#, no-c-format msgid "Maximum number of outgoing edges in a switch before VRP will not process it." -msgstr "Maximalt antal utgående bågar i en switch före EVRP inte kommer bearbeta den." +msgstr "Maximalt antal utgående bågar i en switch innan VRP inte kommer bearbeta den." #: params.opt:1211 -#, fuzzy, no-c-format -#| msgid "Maximum number of basic blocks before EVRP uses a sparse cache." +#, no-c-format msgid "Maximum number of basic blocks for VRP to use a basic cache vector." -msgstr "Maximalt antal grundblock innan EVRP använder en gles cache." +msgstr "Maximalt antal grundblock till VRP att använda en grundläggande cachevektor." #: cfgrtl.cc:2822 msgid "flow control insn inside a basic block" @@ -18513,10 +18442,9 @@ msgstr "" "Fel på översättningen rapporteras till \n" #: gcov-tool.cc:595 -#, fuzzy, c-format -#| msgid "Copyright %s 2023 Free Software Foundation, Inc.\n" +#, c-format msgid "Copyright %s 2024 Free Software Foundation, Inc.\n" -msgstr "Copyright %s 2023 Free Software Foundation, Inc.\n" +msgstr "Copyright %s 2024 Free Software Foundation, Inc.\n" #: gcov.cc:927 #, c-format @@ -18690,10 +18618,9 @@ msgid "gcov %s%s\n" msgstr "gcov %s%s\n" #: gcov.cc:969 -#, fuzzy, c-format -#| msgid "collect2 version %s\n" +#, c-format msgid "JSON format version: %s\n" -msgstr "collect2 version %s\n" +msgstr "JSON-formatversion: %s\n" #: gcov.cc:1367 #, c-format @@ -19526,10 +19453,9 @@ msgid "incompatible floating point / vector register operand for '%%%c'" msgstr "inkompatibla flyttals-/vektorregisteroperander för ”%%%c”" #: config/aarch64/aarch64.cc:12061 -#, fuzzy, c-format -#| msgid "incompatible register operand for '%%%c'" +#, c-format msgid "incompatible operand for '%%%c'" -msgstr "inkompatibla registeroperander för ”%%%c”" +msgstr "inkompatibel operand för ”%%%c”" #: config/aarch64/aarch64.cc:12081 #, c-format @@ -19682,22 +19608,19 @@ msgid "invalid operand to %%p code" msgstr "ogiltig operand till %%p-kod" #: config/arc/arc.cc:4940 -#, fuzzy, c-format -#| msgid "invalid operand to %%s code" +#, c-format msgid "invalid operand for %%s code" msgstr "ogiltig operand till %%s-kod" #: config/arc/arc.cc:4958 -#, fuzzy, c-format -#| msgid "invalid operand to %%N code" +#, c-format msgid "invalid operand for %%N code" msgstr "ogiltig operand till %%N-kod" #: config/arc/arc.cc:4971 -#, fuzzy, c-format -#| msgid "invalid operand to %%N code" +#, c-format msgid "invalid operand for %%N or %%S code" -msgstr "ogiltig operand till %%N-kod" +msgstr "ogiltig operand till %%N- eller %%S-kod" #: config/arc/arc.cc:4993 config/m32r/m32r.cc:2080 #, c-format @@ -20264,40 +20187,28 @@ msgid "unknown insn mode" msgstr "okänt instruktionsläge" #: config/i386/i386.cc:23578 -#, fuzzy -#| msgid "invalid conversion from type %" msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>" -msgstr "ogiltig konvertering från typen %" +msgstr "ogiltig konvertering från typen %<__bf16%> utan flaggan %<-msse2%>" #: config/i386/i386.cc:23581 -#, fuzzy -#| msgid "invalid conversion from type %" msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>" -msgstr "ogiltig konvertering från typen %" +msgstr "ogiltig konvertering från typen %<_Float16%> utan flaggan %<-msse2%>" #: config/i386/i386.cc:23584 -#, fuzzy -#| msgid "invalid conversion to type %" msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>" -msgstr "ogiltig konvertering till typen %" +msgstr "ogiltig konvertering till typen %<__bf16%> utan flaggan %<-msse2%>" #: config/i386/i386.cc:23587 -#, fuzzy -#| msgid "invalid conversion to type %" msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>" -msgstr "ogiltig konvertering till typen %" +msgstr "ogiltig konvertering till typen %<_Float16%> utan flaggan %<-msse2%>" #: config/i386/i386.cc:23625 config/i386/i386.cc:23650 -#, fuzzy -#| msgid "operation not permitted on type %" msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>" -msgstr "operationen är inte tillåten på typen %" +msgstr "operationen är inte tillåten på typen % utan flaggan %<-msse2%>" #: config/i386/i386.cc:23628 config/i386/i386.cc:23654 -#, fuzzy -#| msgid "operation not permitted on type %" msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>" -msgstr "operationen är inte tillåten på typen %" +msgstr "operationen är inte tillåten på typen %<_Float16%> utan flaggan %<-msse2%>" #: config/ia64/ia64.cc:5470 #, c-format @@ -20930,10 +20841,9 @@ msgid "'o' operand is not constant" msgstr "”o”-operand är ej konstant" #: config/stormy16/stormy16.cc:1980 -#, fuzzy, c-format -#| msgid "'B' operand is not constant" +#, c-format msgid "'h' operand is not SImode register" -msgstr "”B”-operand är ej konstant" +msgstr "”h”-operand är ej ett SImode-register" #: config/stormy16/stormy16.cc:1988 #, c-format @@ -21390,10 +21300,8 @@ msgid "In lambda function" msgstr "I lambdafunktion" #: cp/error.cc:3712 -#, fuzzy -#| msgid "In static member function %qD" msgid "In explicit object member function %qD" -msgstr "I statisk medlemsfunktion %qD" +msgstr "I explicit objektmedlemsfunktion %qD" #: cp/error.cc:3714 msgid "In member function %qD" @@ -21592,16 +21500,12 @@ msgstr "" "\n" #: fortran/error.cc:1043 -#, fuzzy -#| msgid "new in Fortran 2003" msgid "Prohibited in Fortran 2023:" -msgstr "nytt i Fortran 2003" +msgstr "Förbjudet i Fortran 2023:" #: fortran/error.cc:1045 -#, fuzzy -#| msgid "Fortran 2018:" msgid "Fortran 2023:" -msgstr "Fortran 2018:" +msgstr "Fortran 2023:" #: fortran/error.cc:1047 msgid "Fortran 2018 deleted feature:" @@ -21697,10 +21601,8 @@ msgid "new in Fortran 2018" msgstr "nytt i Fortran 2018" #: fortran/intrinsic.cc:4896 -#, fuzzy -#| msgid "new in Fortran 2003" msgid "new in Fortran 2023" -msgstr "nytt i Fortran 2003" +msgstr "nytt i Fortran 2023" #: fortran/intrinsic.cc:4900 msgid "a GNU Fortran extension" @@ -22233,10 +22135,8 @@ msgid "value computed is not used" msgstr "beräknat värde används inte" #: go/gofrontend/expressions.cc:1986 -#, fuzzy -#| msgid "expected function name" msgid "unexpected reference to package" -msgstr "ett funktionsnamn förväntades" +msgstr "oväntad referens till ett paket" #: go/gofrontend/expressions.cc:3840 go/gofrontend/expressions.cc:3856 msgid "constant refers to itself" @@ -22429,22 +22329,16 @@ msgid "attempt to index object that is not array, slice, string, or map" msgstr "försök att indexera objekt som inte är en vektor, skiva, sträng eller avbildning" #: go/gofrontend/expressions.cc:14730 -#, fuzzy -#| msgid "expected integer expression" msgid "attempt to index type expression" -msgstr "heltalsuttryck förväntades" +msgstr "försök att indexera ett typuttryck" #: go/gofrontend/expressions.cc:14757 -#, fuzzy -#| msgid "invalid left hand side of assignment" msgid "invalid 3-index slice of string" -msgstr "ogiltig vänsterhandssida i tilldelning" +msgstr "felaktig 3-indexskiva av en sträng" #: go/gofrontend/expressions.cc:14770 -#, fuzzy -#| msgid "invalid use of type" msgid "invalid slice of map" -msgstr "ogiltig användning av typ" +msgstr "felaktig skiva av en avbildning" #: go/gofrontend/expressions.cc:14779 go/gofrontend/expressions.cc:15970 msgid "incompatible type for map index" @@ -22493,20 +22387,16 @@ msgid "cannot fallthrough final case in switch" msgstr "kan inte falla igenom sista fallet i en switch" #: go/gofrontend/statements.cc:1288 -#, fuzzy -#| msgid "cannot use %qs as a call-used register" msgid "cannot use %<_%> as value" -msgstr "det går inte att använda %qs som ett anropsanvänt register" +msgstr "det går inte att %<_%> som ett värde" #: go/gofrontend/statements.cc:1300 go/gofrontend/statements.cc:2528 msgid "invalid left hand side of assignment" msgstr "ogiltig vänsterhandssida i tilldelning" #: go/gofrontend/statements.cc:1309 -#, fuzzy -#| msgid "incompatible types in binary expression" msgid "incompatible type in binary expression" -msgstr "inkompatibla typer i binärt uttryck" +msgstr "inkompatibel typ i binärt uttryck" #: go/gofrontend/statements.cc:1555 msgid "use of untyped nil" @@ -22517,10 +22407,8 @@ msgid "expected map index on right hand side" msgstr "avbildningsindex förväntades på högersidan" #: go/gofrontend/statements.cc:2534 -#, fuzzy -#| msgid "no pre-increment operator for type" msgid "increment or decrement of non-numeric type" -msgstr "ingen pre-ökningsoperator för typen" +msgstr "ökning eller minskning av en icke-numerisk typ" #: go/gofrontend/statements.cc:3449 go/gofrontend/statements.cc:3464 msgid "not enough arguments to return" @@ -23008,7 +22896,7 @@ msgstr "okänd lårtyp (crate): ”%qs”" #: rust/lang.opt:118 #, gcc-internal-format msgid "unknown rust mangling option %qs" -msgstr "okänd rust-manglningsalternativ %qs" +msgstr "okänt rust-manglingsalternativ %qs" #: rust/lang.opt:135 #, gcc-internal-format @@ -23052,16 +22940,14 @@ msgid "missing makefile target after %qs" msgstr "makefile-mål saknas efter %qs" #: c-family/c.opt:260 -#, fuzzy, gcc-internal-format -#| msgid "missing path after %qs" +#, gcc-internal-format msgid "missing format after %qs" -msgstr "sökväg saknas efter %qs" +msgstr "format saknas efter %qs" #: c-family/c.opt:264 -#, fuzzy, gcc-internal-format -#| msgid "missing path after %qs" +#, gcc-internal-format msgid "missing output path after %qs" -msgstr "sökväg saknas efter %qs" +msgstr "utmatningssökväg saknas efter %qs" #: c-family/c.opt:311 #, gcc-internal-format @@ -23139,10 +23025,9 @@ msgid "unknown pointer size model %qs" msgstr "okänd pekarstorlekmodell %qs" #: config/aarch64/aarch64.opt:379 -#, fuzzy, gcc-internal-format -#| msgid "unknown TLS model %qs" +#, gcc-internal-format msgid "unknown LDP/STP policy %qs" -msgstr "okänd TLS-modell %qs" +msgstr "okänd LDP/STP-policy %qs" #: config/i386/i386.opt:340 #, gcc-internal-format @@ -23258,10 +23143,9 @@ msgid "unknown floating point contraction style %qs" msgstr "okänd stil för flyttalssammandragning %qs" #: common.opt:1865 -#, fuzzy, gcc-internal-format -#| msgid "unknown Live-Patching Level %qs" +#, gcc-internal-format msgid "unknown hardcfr noreturn checking level %qs" -msgstr "okänd live-patchnings-nivå %qs" +msgstr "okänd hardcfr noreturn-kontrollnivå %qs" #: common.opt:1900 #, gcc-internal-format @@ -23334,10 +23218,9 @@ msgid "unknown TLS model %qs" msgstr "okänd TLS-modell %qs" #: common.opt:3020 -#, fuzzy, gcc-internal-format -#| msgid "unknown rust mangling option %qs" +#, gcc-internal-format msgid "unknown trampoline implementation %qs" -msgstr "okänd rust-manglningsalternativ %qs" +msgstr "okänd trampolinimplementation %qs" #: common.opt:3342 #, gcc-internal-format @@ -24827,10 +24710,9 @@ msgid "% attribute ignored because function is defined" msgstr "attributet % ignorerat för att funktionen är definierad" #: cgraphunit.cc:921 -#, fuzzy, gcc-internal-format -#| msgid "% function might not be inlinable" +#, gcc-internal-format msgid "% function might not be inlinable unless also declared %" -msgstr "%-funktion kanske inte kan inline:as" +msgstr "%-funktionen kanske inte kan inline:as om den inte även deklareras %" #: cgraphunit.cc:947 #, gcc-internal-format @@ -25084,10 +24966,9 @@ msgid "pointer value used where a floating-point was expected" msgstr "pekarvärde använt där ett flyttalsvärde förväntades" #: convert.cc:338 -#, fuzzy, gcc-internal-format -#| msgid "pointer value used where a floating-point was expected" +#, gcc-internal-format msgid "vector value used where a floating-point was expected" -msgstr "pekarvärde använt där ett flyttalsvärde förväntades" +msgstr "vektorvärde använt där ett flyttalsvärde förväntades" #: convert.cc:342 #, gcc-internal-format @@ -25566,16 +25447,12 @@ msgid "cannot read spec file %qs: %m" msgstr "kan inte läsa spec-filen %qs: %m" #: gcc.cc:2412 gcc.cc:2432 -#, fuzzy -#| msgid "specs %%include syntax malformed after %ld characters" msgid "specs %%include syntax malformed after %td characters" -msgstr "specifikationers %%include-syntax felaktig efter %ld tecken" +msgstr "specifikationers %%include-syntax felaktig efter %td tecken" #: gcc.cc:2458 gcc.cc:2467 gcc.cc:2477 gcc.cc:2487 -#, fuzzy -#| msgid "specs %%rename syntax malformed after %ld characters" msgid "specs %%rename syntax malformed after %td characters" -msgstr "specifikationers %%rename-syntax felaktig efter %ld tecken" +msgstr "specifikationers %%rename-syntax felaktig efter %td tecken" #: gcc.cc:2497 #, gcc-internal-format, gfc-internal-format @@ -25588,16 +25465,12 @@ msgid "%s: attempt to rename spec %qs to already defined spec %qs" msgstr "%s: försök att byta namn på specifikation %qs till redan definierad specifikation %qs" #: gcc.cc:2527 -#, fuzzy -#| msgid "specs unknown %% command after %ld characters" msgid "specs unknown %% command after %td characters" -msgstr "specifikationer okänt %%-kommando efter %ld tecken" +msgstr "specifikationer okänt %%-kommando efter %td tecken" #: gcc.cc:2539 gcc.cc:2553 -#, fuzzy -#| msgid "specs file malformed after %ld characters" msgid "specs file malformed after %td characters" -msgstr "specifikationsfil felaktig efter %ld tecken" +msgstr "specifikationsfil felaktig efter %td tecken" #: gcc.cc:2608 #, gcc-internal-format @@ -27707,10 +27580,9 @@ msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" msgstr "gimple-kontroll: %s(%s) förväntades, har %s(%s) i %s, vid %s:%d" #: gimplify.cc:1399 -#, fuzzy, gcc-internal-format -#| msgid "% clause must specify an allocator here" +#, gcc-internal-format msgid "% directive for %qD inside a target region must specify an % clause" -msgstr "%-klausulen måste ange en allokerare här" +msgstr "direktivet % för %qD inuti en målregion måste ange en klausul %" #: gimplify.cc:2271 #, gcc-internal-format @@ -27810,16 +27682,14 @@ msgid "%qE not specified in enclosing OpenACC %qs construct" msgstr "%qE inte angiven i omgivande OpenACC %qs-konstruktion" #: gimplify.cc:8056 -#, fuzzy, gcc-internal-format -#| msgid "enclosing OpenACC %qs construct" +#, gcc-internal-format msgid "enclosing OpenACC %qs construct and" -msgstr "omgivande OpenACC %qs-konstruktion" +msgstr "omgivande OpenACC %qs-konstruktion och" #: gimplify.cc:8059 -#, fuzzy, gcc-internal-format -#| msgid "enclosing OpenACC %qs construct" +#, gcc-internal-format msgid "enclosing OpenACC %qs construct with %qs clause" -msgstr "omgivande OpenACC %qs-konstruktion" +msgstr "omgivande OpenACC %qs-konstruktion med %qs-klausul" #: gimplify.cc:8129 #, gcc-internal-format @@ -28559,10 +28429,9 @@ msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA msgstr "funktionen %qs, parameter %u, används men har inte någon säker IPA-SRA-åtkomst" #: ipa-strub.cc:620 -#, fuzzy, gcc-internal-format -#| msgid "pass %s does not support cloning" +#, gcc-internal-format msgid "at-calls % does not support call to %qD" -msgstr "pass %s stödjer inte kloning" +msgstr "at-anrop % stödjer inte anrop av %qD" #: ipa-strub.cc:654 #, gcc-internal-format @@ -28570,10 +28439,9 @@ msgid "%qD is not eligible for % on the target system" msgstr "%qD är inte berättigat till % på målsystemet" #: ipa-strub.cc:658 -#, fuzzy, gcc-internal-format -#| msgid "unsupported constant address:" +#, gcc-internal-format msgid "unsupported % call on the target system" -msgstr "ej stödd konstant adress:" +msgstr "ej stött %-anrop på målsystemet" #: ipa-strub.cc:684 #, gcc-internal-format @@ -28611,16 +28479,14 @@ msgid "%qD is not eligible for internal % because the address of a local msgstr "%qD är inte berättigat till internt % på grund av att det är adressen till en lokal etikett smiter" #: ipa-strub.cc:936 -#, fuzzy, gcc-internal-format -#| msgid "%s does not support force_nonfallthru" +#, gcc-internal-format msgid "internal % does not support forced labels" -msgstr "%s stödjer inte force_nonfallthru" +msgstr "internt % stödjer inte tvingande etiketter" #: ipa-strub.cc:950 -#, fuzzy, gcc-internal-format -#| msgid "too many arguments for format" +#, gcc-internal-format msgid "%qD has too many arguments for internal %" -msgstr "för många argument för formatsträng" +msgstr "%qD har för många argument för internt %" #: ipa-strub.cc:1227 #, gcc-internal-format @@ -28658,10 +28524,9 @@ msgid "calling %qD using non-% type %qT in % context %qD" msgstr "anropar %qD med icke-%-typen %qT i %-sammanhanget %qD" #: ipa-strub.cc:2834 -#, fuzzy, gcc-internal-format -#| msgid "failed to load pendings for %<%E%s%E%>" +#, gcc-internal-format msgid "failed to split %qD for %" -msgstr "misslyckades att ladda väntande för %<%E%s%E%>" +msgstr "misslyckades att dela %qD för %" #: ira.cc:2441 ira.cc:2463 #, gcc-internal-format @@ -28704,10 +28569,9 @@ msgid "maximum number of generated reload insns per insn achieved (%d)" msgstr "maximalt antal genererade omladdningsinstruktioner per instruktion uppnått (%d)" #: lra.cc:546 -#, fuzzy, gcc-internal-format -#| msgid "% operand has impossible constraints" +#, gcc-internal-format msgid "% operand has impossible constraints or there are not enough registers" -msgstr "%-operand har omöjliga begränsningar" +msgstr "%-operand har omöjliga begränsningar eller så finns det inte tillräckligt med register" #: lto-cgraph.cc:1171 #, gcc-internal-format @@ -29058,10 +28922,9 @@ msgid "invalid OpenMP non-rectangular loop step; %<(%E - %E) * %E%> is not a mul msgstr "felaktig OpenMP ickerektangulärt slingsteg; %<(%E - %E) * %E%> är inte en multipel av slinga %d steg %qE" #: omp-general.cc:1283 -#, fuzzy, gcc-internal-format -#| msgid "array size expression is not supported yet" +#, gcc-internal-format msgid "% selector set is not supported yet" -msgstr "vektorstorleksuttryck stödjs inte ännu" +msgstr "%-väljarmängd stödjs inte ännu" #: omp-general.cc:1288 #, gcc-internal-format @@ -29384,10 +29247,9 @@ msgid "OpenMP runtime API call %qD in a region with % clause" msgstr "OpenMP-körtids-API-anrop %qD i en region med en %-klausul" #: omp-low.cc:9791 -#, fuzzy, gcc-internal-format -#| msgid "ignoring sink clause with offset that is not a multiple of the loop step" +#, gcc-internal-format msgid "ignoring % clause with offset that is not a multiple of the loop step" -msgstr "ignorerar sink-klausul med ett avstånd som inte är en multipel av slingsteget" +msgstr "ignorerar %-klausul med ett avstånd som inte är en multipel av slingsteget" #: omp-low.cc:9814 #, gcc-internal-format @@ -30899,16 +30761,14 @@ msgid "global destructors not supported on this target" msgstr "globala destruerare stödjs inte på denna målarkitektur" #: targhooks.cc:1802 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute is not supported on this machine" -msgstr "målattribut stödjs inte på denna maskin" +msgstr "attributet % stödjs inte på denna maskin" #: targhooks.cc:1814 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute is not supported on this machine" -msgstr "målattribut stödjs inte på denna maskin" +msgstr "attributet % stödjs inte på denna maskin" #: targhooks.cc:1828 #, gcc-internal-format @@ -31056,10 +30916,9 @@ msgid "%<-fassociative-math%> disabled; other options take precedence" msgstr "%<-fassociative-math%> avslagen, andra flaggor går före" #: toplev.cc:1576 -#, fuzzy, gcc-internal-format -#| msgid "%<-fdata-sections%> not supported for this target" +#, gcc-internal-format msgid "%<-fhardened%> not supported for this target" -msgstr "%<-fdata-sections%> stödjs inte för denna målarkitektur" +msgstr "%<-fhardened%> stödjs inte för denna målarkitektur" #: toplev.cc:1585 #, gcc-internal-format @@ -31327,10 +31186,9 @@ msgid "%qs in gimple IL" msgstr "%qs i gimple IL" #: tree-cfg.cc:3357 -#, fuzzy, gcc-internal-format -#| msgid "used struct type value where scalar is required" +#, gcc-internal-format msgid "%qs as base where non-register is required" -msgstr "struct-typvärde använt där skalär krävs" +msgstr "%qs använt som bas där ett icke-register krävs" #: tree-cfg.cc:3372 #, gcc-internal-format @@ -31604,10 +31462,9 @@ msgid "invalid operand in %qs" msgstr "ogiltig operand till %qs" #: tree-cfg.cc:4676 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument in option %qs" +#, gcc-internal-format msgid "invalid %qs size argument in load" -msgstr "ogiltigt argument i flaggan %qs" +msgstr "ogiltigt storleksargument till %qs i laddning" #: tree-cfg.cc:4695 tree-cfg.cc:4721 #, gcc-internal-format @@ -31825,16 +31682,14 @@ msgid "fallthru to exit from bb %d" msgstr "fall igenom till utgång från gb %d" #: tree-cfg.cc:5707 -#, fuzzy, gcc-internal-format -#| msgid "extra brace group at end of initializer" +#, gcc-internal-format msgid "entry block count not initialized" -msgstr "extra klammergrupp vid slutet av initierare" +msgstr "ingångsblockantal inte initierat" #: tree-cfg.cc:5713 -#, fuzzy, gcc-internal-format -#| msgid "extra brace group at end of initializer" +#, gcc-internal-format msgid "exit block count not initialized" -msgstr "extra klammergrupp vid slutet av initierare" +msgstr "utgångsblockantal inte initierat" #: tree-cfg.cc:5720 #, gcc-internal-format @@ -31842,16 +31697,14 @@ msgid "probability of edge from entry block not initialized" msgstr "sannolikheten för bågen från ingångsblocket är inte initierad" #: tree-cfg.cc:5735 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qE is not initialized" +#, gcc-internal-format, gfc-internal-format msgid "count of bb %d not initialized" -msgstr "%qE är inte initierad" +msgstr "antal gb %d inte initierat" #: tree-cfg.cc:5741 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Uninitialized probability of edge %i->%i" +#, gcc-internal-format, gfc-internal-format msgid "probability of edge %d->%d not initialized" -msgstr "Oinitierad sannolikhet för båge %i→%i" +msgstr "sannolikheten för bågen %d→%d inte initierad" #: tree-cfg.cc:5761 #, gcc-internal-format @@ -33160,10 +33013,9 @@ msgid "initializer for floating value is not a floating constant" msgstr "initierare för flyttalsvärde är inte en flyttalskonstant" #: varasm.cc:5342 -#, fuzzy, gcc-internal-format -#| msgid "initializer for floating value is not a floating constant" +#, gcc-internal-format msgid "initializer for %<_BitInt(%d)%> value is not an integer constant" -msgstr "initierare för flyttalsvärde är inte en flyttalskonstant" +msgstr "initierare för %<_BitInt(%d)%>-värdet är inte en heltalskonstant" #: varasm.cc:5725 #, gcc-internal-format @@ -33357,28 +33209,24 @@ msgid "%qE attribute with unsupported boolean precision" msgstr "attributet %qE med boolesk precision som inte stödjs" #: c-family/c-attribs.cc:1059 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only supported on boolean types" +#, gcc-internal-format msgid "%qE attribute only supported in C" -msgstr "attributet %qE stödjs endast på booleska typer" +msgstr "attributet %qE stödjs endast i C" #: c-family/c-attribs.cc:1066 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only supported on boolean types" +#, gcc-internal-format msgid "%qE attribute only supported on integral types" -msgstr "attributet %qE stödjs endast på booleska typer" +msgstr "attributet %qE stödjs endast på heltalstyper" #: c-family/c-attribs.cc:1087 c-family/c-attribs.cc:1103 -#, fuzzy, gcc-internal-format -#| msgid "overflow in conversion from %qT to %qT changes value from %qE to %qE" +#, gcc-internal-format msgid "overflows in conversion from %qT to %qT changes value from %qE to %qE" msgstr "spill vid konvertering från %qT till %qT som ändrar värde från %qE till %qE" #: c-family/c-attribs.cc:1112 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute argument value %qE refers to parameter type %qT" +#, gcc-internal-format msgid "%qE attribute requires different values for % and % for type %qT" -msgstr "värdet %2$qE på argumentet till attributet %1$qE refererar till parametertypen %3$qT" +msgstr "attributet %qE kräver olika värden på % och % för typen %qT" #: c-family/c-attribs.cc:1152 #, gcc-internal-format @@ -33397,28 +33245,24 @@ msgid "%qE argument not a string" msgstr "argument %qE är inte en sträng" #: c-family/c-attribs.cc:1555 ada/gcc-interface/utils.cc:6793 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored on objects of type %qT" +#, gcc-internal-format msgid "%qE attribute ignored because of argument %qE" -msgstr "attributet %qE ignorerat på objekt av typen %qT" +msgstr "attributet %qE ignorerat på grund av argumentet %qE" #: c-family/c-attribs.cc:1576 ada/gcc-interface/utils.cc:6814 -#, fuzzy, gcc-internal-format -#| msgid "ignoring attribute %qE because it conflicts with attribute %qs" +#, gcc-internal-format msgid "ignoring attribute %qE because of excess arguments starting at %qE" -msgstr "ignorerar attributet %qE eftersom det står i konflikt med attributet %qs" +msgstr "ignorerar attributet %qE på grund av extra argument med början vid %qE" #: c-family/c-attribs.cc:1590 ada/gcc-interface/utils.cc:6828 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute does not apply to types" +#, gcc-internal-format msgid "attribute %qE does not apply to elements of non-scalar type %qT" -msgstr "attributet %qE är inte applicerbart på typer" +msgstr "attributet %qE är inte applicerbart på element av den icke-skalära typen %qT" #: c-family/c-attribs.cc:1595 ada/gcc-interface/utils.cc:6833 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute does not apply to types" +#, gcc-internal-format msgid "attribute %qE does not apply to fields of aggregate type %qT" -msgstr "attributet %qE är inte applicerbart på typer" +msgstr "attributet %qE är inte applicerbart på fält av aggregattypen %qT" #: c-family/c-attribs.cc:1661 #, gcc-internal-format @@ -34648,16 +34492,14 @@ msgid "argument %u in call to function %qE has pointer to %qs type (%qT)" msgstr "argument %u i anropet av funktionen %qE har typen pekare på %qs (%qT)" #: c-family/c-common.cc:6535 c-family/c-common.cc:6620 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument %u in call to function %qE has enumerated type" -msgstr "argument 3 i anrop av funktionen %qE har uppräkningstyp" +msgstr "argument %u i anrop av funktionen %qE har uppräkningstyp" #: c-family/c-common.cc:6541 c-family/c-common.cc:6626 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has boolean type" +#, gcc-internal-format msgid "argument %u in call to function %qE has boolean type" -msgstr "argument 3 i anrop av funktionen %qE har boolesk typ" +msgstr "argument %u i anrop av funktionen %qE har boolesk typ" #: c-family/c-common.cc:6554 #, gcc-internal-format @@ -34670,22 +34512,19 @@ msgid "argument %u in call to function %qE points to incomplete type" msgstr "argument %u i anropet av funktionen %qE har typen pekare på en ofullständig typ" #: c-family/c-common.cc:6604 -#, fuzzy, gcc-internal-format -#| msgid "argument %u in call to function %qE does not have pointer type" +#, gcc-internal-format msgid "argument %u in call to function %qE does not have % type" -msgstr "argument %u i anrop av funktionen %qE har inte pekartyp" +msgstr "argument %u i anrop av funktionen %qE har inte typen %" #: c-family/c-common.cc:6635 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument 1 in call to function %qE has unsigned type" -msgstr "argument 3 i anrop av funktionen %qE har uppräkningstyp" +msgstr "argument 1 i anrop av funktionen %qE har teckenlös typ" #: c-family/c-common.cc:6642 -#, fuzzy, gcc-internal-format -#| msgid "argument 3 in call to function %qE has enumerated type" +#, gcc-internal-format msgid "argument 1 in call to function %qE has signed type" -msgstr "argument 3 i anrop av funktionen %qE har uppräkningstyp" +msgstr "argument 1 i anrop av funktionen %qE har typ med tecken" #: c-family/c-common.cc:6905 rust/backend/rust-tree.cc:3601 #, gcc-internal-format @@ -35485,22 +35324,19 @@ msgid "stray %<\\%o%> in program" msgstr "överblivet %<\\%o%> i program" #: c-family/c-lex.cc:1014 -#, fuzzy, gcc-internal-format -#| msgid "integer constant is too large for % type" +#, gcc-internal-format msgid "integer constant is too large for % type" -msgstr "heltalskonstant är för stor för typen %" +msgstr "heltalskonstant är för stor för typen %" #: c-family/c-lex.cc:1017 -#, fuzzy, gcc-internal-format -#| msgid "integer constant is too large for % type" +#, gcc-internal-format msgid "integer constant is too large for %<_BitInt(%d)%> type" -msgstr "heltalskonstant är för stor för typen %" +msgstr "heltalskonstant är för stor för typen %<_BitInt(%d)%>" #: c-family/c-lex.cc:1025 c/c-decl.cc:12651 -#, fuzzy, gcc-internal-format -#| msgid "%<__int%d%> is not supported on this target" +#, gcc-internal-format msgid "%<_BitInt(%d)%> is not supported on this target" -msgstr "%<__int%d%> stödjs inte för denna målarkitektur" +msgstr "%<_BitInt(%d)%> stödjs inte för denna målarkitektur" #: c-family/c-lex.cc:1077 #, gcc-internal-format @@ -35538,10 +35374,9 @@ msgid "non-standard suffix on floating constant" msgstr "icke-standardsuffix på flyttalskonstant" #: c-family/c-lex.cc:1223 c-family/c-lex.cc:1227 c-family/c-lex.cc:1232 -#, fuzzy, gcc-internal-format -#| msgid "non-standard suffix on floating constant" +#, gcc-internal-format msgid "non-standard suffix on floating constant before C23" -msgstr "icke-standardsuffix på flyttalskonstant" +msgstr "icke-standardsuffix på flyttalskonstant före C23" #: c-family/c-lex.cc:1239 #, gcc-internal-format @@ -36222,16 +36057,14 @@ msgid "%<#pragma GCC optimize%> string is badly formed" msgstr "%<#pragma GCC optimize%>-sträng är felaktigt utformad" #: c-family/c-pragma.cc:1211 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of %<#pragma push_options%>" +#, gcc-internal-format msgid "junk at end of %<#pragma GCC push_options%>" -msgstr "skräp vid slutet av %<#pragma push_options%>" +msgstr "skräp vid slutet av %<#pragma GCC push_options%>" #: c-family/c-pragma.cc:1248 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of %<#pragma pop_options%>" +#, gcc-internal-format msgid "junk at end of %<#pragma GCC pop_options%>" -msgstr "skräp vid slutet av %<#pragma pop_options%>" +msgstr "skräp vid slutet av %<#pragma GCC pop_options%>" #: c-family/c-pragma.cc:1255 #, gcc-internal-format @@ -37024,10 +36857,9 @@ msgid "% used with length equal to number of elements without multiplic msgstr "% använt med en längd lika med antalet element utan att multiplicera med elementstorleken" #: c-family/c-warn.cc:2291 -#, fuzzy, gcc-internal-format -#| msgid "interrupt service routine can only have a pointer argument and an optional integer argument" +#, gcc-internal-format msgid "%qD sizes specified with % in the earlier argument and not in the later argument" -msgstr "avbrottshanteringrutiner kan endast ha ett pekarargument och ett valfritt heltalsargument" +msgstr "%qD storlekar angivna med % i det tidigare argumentet och inte i det senare argumentet" #: c-family/c-warn.cc:2293 #, gcc-internal-format @@ -37035,10 +36867,9 @@ msgid "earlier argument should specify number of elements, later size of each el msgstr "tidigare argument skulle ange antalet element, senare storlek på varje element" #: c-family/c-warn.cc:2332 -#, fuzzy, gcc-internal-format -#| msgid "floating point overflow in expression %qE of type %qT results in %qE" +#, gcc-internal-format msgid "allocation of insufficient size %qE for type %qT with size %qE" -msgstr "flyttalsspill i uttrycket %qE av typen %qT resulterar i %qE" +msgstr "allokering av otillräcklig storlek %qE för typen %qT med storlek %qE" #: c-family/c-warn.cc:2409 #, gcc-internal-format @@ -37313,10 +37144,9 @@ msgid "too many input files" msgstr "för många indatafiler" #: c-family/known-headers.cc:322 -#, fuzzy, gcc-internal-format -#| msgid "%qs is defined in header %qs; did you forget to %<#include %s%>?" +#, gcc-internal-format msgid "%qs is defined in header %qs; this is probably fixable by adding %<#include %s%>" -msgstr "%qs är definierad i huvudet %qs; glömde du %<#include %s%>?" +msgstr "%qs är definierad i huvudet %qs; detta kan förmodligen fixas genom att lägga till %<#include %s%>" #: common/config/aarch64/aarch64-common.cc:415 config/aarch64/aarch64.cc:18466 #, gcc-internal-format @@ -37513,16 +37343,14 @@ msgid "%<-march=%s%>: extension %qs appear more than one time" msgstr "%<-march=%s%>: utökningen %qs förekommer mer än en gång." #: common/config/riscv/riscv-common.cc:676 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs is unsupported standard single letter extension" -msgstr "%<-march=%s%>: utökningen %qs förekommer mer än en gång." +msgstr "%<-march=%s%>: utökningen %qs är en standard enkelbokstavsutökning som inte stödjs" #: common/config/riscv/riscv-common.cc:684 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 'z' but is unsupported standard extension" -msgstr "%<-march=%s%>: utökningen %qs förekommer mer än en gång." +msgstr "%<-march=%s%>: utökningen %qs börjar med ”z” men är en standardutökning som inte stödjs" #: common/config/riscv/riscv-common.cc:692 #, gcc-internal-format @@ -37530,10 +37358,9 @@ msgid "%<-march=%s%>: extension %qs starts with 's' but is unsupported standard msgstr "%<-march=%s%>: utvidgningen %qs börjar med ”s” men är en standardövervakarutvidgning som inte stöjds" #: common/config/riscv/riscv-common.cc:700 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: extension %qs starts with 'x' but is unsupported non-standard extension" -msgstr "%<-march=%s%>: utökningen %qs förekommer mer än en gång." +msgstr "%<-march=%s%>: utökningen %qs börjar med ”x” men är en icke-standardutökning som inte stödjs" #: common/config/riscv/riscv-common.cc:947 #, gcc-internal-format @@ -37566,16 +37393,14 @@ msgid "%<-march=%s%>: first ISA subset must be %, % or %" msgstr "%<-march=%s%>: första ISA-undergrupp måste vara %, % eller %" #: common/config/riscv/riscv-common.cc:1089 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: expect number after %<%dp%>" +#, gcc-internal-format msgid "%<-march=%s%>: Not single-letter extension. %<%c%>" -msgstr "%<-march=%s%>: ett tal förväntades efter %<%dp%>." +msgstr "%<-march=%s%>: Inte en enbokstavsutökning. %<%c%>" #: common/config/riscv/riscv-common.cc:1220 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: zcf extension supports in rv32 only" -msgstr "%<-march=%s%>: utökningen %qs förekommer mer än en gång." +msgstr "%<-march=%s%>: utökningen zcf stödjs bara i rv32" #: common/config/riscv/riscv-common.cc:1225 #, gcc-internal-format @@ -37583,28 +37408,24 @@ msgid "%<-march=%s%>: z*inx conflicts with floating-point extensions" msgstr "%<-march=%s%>: z*inx står i konflikt med flyttalsutökningar" #: common/config/riscv/riscv-common.cc:1231 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: extension %qs appear more than one time" +#, gcc-internal-format msgid "%<-march=%s%>: h extension requires i extension" -msgstr "%<-march=%s%>: utökningen %qs förekommer mer än en gång." +msgstr "%<-march=%s%>: utökningen h kräver utökningen i" #: common/config/riscv/riscv-common.cc:1236 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcpu=%s%> conflicts with %<-march=%s%>" +#, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmt" -msgstr "%<-mcpu=%s%> står i konflikt med %<-march=%s%>" +msgstr "%<-mcpu=%s%> zcd står i konflikt med zcmt" #: common/config/riscv/riscv-common.cc:1238 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcpu=%s%> conflicts with %<-march=%s%>" +#, gcc-internal-format msgid "%<-march=%s%>: zcd conflicts with zcmp" -msgstr "%<-mcpu=%s%> står i konflikt med %<-march=%s%>" +msgstr "%<-mcpu=%s%> zcd står i konflikt med zcmp" #: common/config/riscv/riscv-common.cc:1247 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: z*inx conflicts with floating-point extensions" +#, gcc-internal-format msgid "%<-march=%s%>: xtheadvector conflicts with vector extension or its sub-extensions" -msgstr "%<-march=%s%>: z*inx står i konflikt med flyttalsutökningar" +msgstr "%<-march=%s%>: xtheadvector står i konflikt med en vektorutökning eller des underutökning" #: common/config/riscv/riscv-common.cc:1344 #, gcc-internal-format @@ -37617,10 +37438,9 @@ msgid "%<-march=%s%>: %s must separate with %<_%>" msgstr "%<-march=%s%>: %s måste separeras med %<_%>" #: common/config/riscv/riscv-common.cc:1419 -#, fuzzy, gcc-internal-format -#| msgid "%<-march=%s%>: name of %s must be more than 1 letter" +#, gcc-internal-format msgid "%<-march=%s%>: i, e or g must be the first extension" -msgstr "%<-march=%s%>: namnet på %s måste vara mer än 1 bokstav" +msgstr "%<-march=%s%>: i, e eller g måste vara den första utökningen" #: common/config/riscv/riscv-common.cc:1758 #, gcc-internal-format @@ -37949,10 +37769,9 @@ msgid "PIC is only supported for RTPs" msgstr "PIC stödjs endast för RTP:er" #: config/aarch64/aarch64-builtins.cc:2122 -#, fuzzy, gcc-internal-format -#| msgid "argument %d must be an unsigned literal" +#, gcc-internal-format msgid "first argument to %qD must be a string literal" -msgstr "argument %d måste vara en litteral utan tecken" +msgstr "första argumentet till %qD måste vara en stränglitteral" #: config/aarch64/aarch64-builtins.cc:2253 #: config/aarch64/aarch64-builtins.cc:2487 config/arm/arm-builtins.cc:3146 @@ -37981,28 +37800,24 @@ msgid "128-bit system register support requires the % extension" msgstr "128-bitars systemregisterstöd kräver utvidgningen %" #: config/aarch64/aarch64-builtins.cc:2715 -#, fuzzy, gcc-internal-format -#| msgid "invalid register name for %q+D" +#, gcc-internal-format msgid "invalid system register name provided" -msgstr "ogiltig registernamn för %q+D" +msgstr "felaktig namn på systemregister angivet" #: config/aarch64/aarch64-builtins.cc:2729 -#, fuzzy, gcc-internal-format -#| msgid "invalid register name for %q+D" +#, gcc-internal-format msgid "invalid system register name %qs" -msgstr "ogiltig registernamn för %q+D" +msgstr "felaktigt namn på systemregister %qs" #: config/aarch64/aarch64-builtins.cc:2809 -#, fuzzy, gcc-internal-format -#| msgid "for statement expected" +#, gcc-internal-format msgid "Constant-type argument expected" -msgstr "for-sats förväntades" +msgstr "Konstanttypsargument förväntades" #: config/aarch64/aarch64-builtins.cc:2815 -#, fuzzy, gcc-internal-format -#| msgid "argument %d must be a constant immediate in range [0,15]" +#, gcc-internal-format msgid "argument %d must be a constant immediate in range [%wd,%wd]" -msgstr "argument %d måste vara en konstant omedelbar i intervallet [0,15]" +msgstr "argument %d måste vara en konstant omedelbar i intervallet [%wd,%wd]" #: config/aarch64/aarch64-builtins.cc:2894 #, gcc-internal-format @@ -38075,10 +37890,9 @@ msgid "argument %d of %qE must be an integer constant expression" msgstr "argument %d till %qE måste vara ett konstant heltalsuttryck" #: config/aarch64/aarch64-sve-builtins.cc:1167 -#, fuzzy, gcc-internal-format -#| msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd" +#, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects the value %wd" -msgstr "skickar %wd som argument %d till %qE, vilken förväntar sig %wd eller %wd" +msgstr "skickar %wd som argument %d till %qE, vilken förväntar sig värdet %wd" #: config/aarch64/aarch64-sve-builtins.cc:1170 #: config/arm/arm-mve-builtins.cc:583 @@ -38119,16 +37933,14 @@ msgstr[0] "%qT%d%qE%d" msgstr[1] "skickar en ensam vektor %qT till argument %d till %qE, vilken förväntar sig en tupel med %d vektorer" #: config/aarch64/aarch64-sve-builtins.cc:1767 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %d" +#, gcc-internal-format msgid "passing tuple %qT to argument %d of %qE after passing single vector %qT to argument %d" -msgstr "skickar %qT istället för det förväntade %qT som argument %d till %qE, efter att ha skickat %qT som argument %d" +msgstr "skickar tupeln %qT som argument %d till %qE, efter att ha skickat enkel vektor %qT som argument %d" #: config/aarch64/aarch64-sve-builtins.cc:1772 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %d" +#, gcc-internal-format msgid "passing single vector %qT to argument %d of %qE after passing tuple %qT to argument %d" -msgstr "skickar %qT istället för det förväntade %qT som argument %d till %qE, efter att ha skickat %qT som argument %d" +msgstr "skickar en enkel vektor %qT som argument %d till %qE efter att ha skickat %qT som argument %d" #: config/aarch64/aarch64-sve-builtins.cc:1777 #, gcc-internal-format @@ -38142,16 +37954,14 @@ msgid "%qE has no form that takes %qT arguments" msgstr "%qE har ingen form som tar %qT-argument" #: config/aarch64/aarch64-sve-builtins.cc:1849 -#, fuzzy, gcc-internal-format -#| msgid "%qE has no form that takes %qT arguments" +#, gcc-internal-format msgid "%qE has no form that takes %qT and %qT arguments" -msgstr "%qE har ingen form som tar %qT-argument" +msgstr "%qE har ingen form som tar argumenten %qT och %qT" #: config/aarch64/aarch64-sve-builtins.cc:1911 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects %qs or %qs" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an %qs or %qs" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig %qs eller %qs" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en %qs eller %qs" #: config/aarch64/aarch64-sve-builtins.cc:1942 #, gcc-internal-format @@ -38159,16 +37969,14 @@ msgid "passing %qT to argument %d of %qE, which expects a 32-bit or 64-bit integ msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig 32-bitars eller 64-bitars heltalstyp" #: config/aarch64/aarch64-sve-builtins.cc:1961 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit integers" +#, gcc-internal-format msgid "passing %qT and %qT to arguments %d and %d of %qE, which expects a pair of 64-bit integers" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en vektor av %d-bitars heltal" +msgstr "skickar %qT och %qT som argument %d och %d till %qE, vilken förväntar sig ett par av 64-bitars heltal" #: config/aarch64/aarch64-sve-builtins.cc:1985 -#, fuzzy, gcc-internal-format -#| msgid "size mismatch in argument %d of %qE" +#, gcc-internal-format msgid "passing mismatched integer types %qT and %qT to arguments %d and %d of %qE" -msgstr "storleken stämmer inte i argument %d till %qE" +msgstr "skickar heltalstyperna %qT och %qT som inte stämmer som argument %d och %qd till %qE" #: config/aarch64/aarch64-sve-builtins.cc:2006 #: config/arm/arm-mve-builtins.cc:1157 @@ -38192,16 +38000,14 @@ msgid "passing %qT to argument %d of %qE, which expects a pointer to 32-bit or 6 msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en pekare till 32-bitars eller 64-bitars element" #: config/aarch64/aarch64-sve-builtins.cc:2068 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuple" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an SVE type rather than a scalar type" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en ensam SVE-vektor snarare än en tupel" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en SVE-typ snarare än en skalär typ" #: config/aarch64/aarch64-sve-builtins.cc:2072 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE tuple type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an SVE type" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en SVE-tupeltyp" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en SVE-typ" #: config/aarch64/aarch64-sve-builtins.cc:2117 #, gcc-internal-format @@ -38209,10 +38015,9 @@ msgid "passing %qT to argument %d of %qE, which expects a vector of integers" msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en vektor av heltal" #: config/aarch64/aarch64-sve-builtins.cc:2147 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE vector type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a 128 bit NEON vector type" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en SVE-vektortyp" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en 128-bitars NEON-vektortyp" #: config/aarch64/aarch64-sve-builtins.cc:2164 #: config/aarch64/aarch64-sve-builtins.cc:2462 @@ -38257,10 +38062,9 @@ msgid "passing %qT to argument %d of %qE, but argument %d had type %qT" msgstr "skickar %qT som argument %d till %qE, men argument %d har typen %qT" #: config/aarch64/aarch64-sve-builtins.cc:2406 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but argument %d had type %qT" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but argument %d was a tuple of %qT" -msgstr "skickar %qT som argument %d till %qE, men argument %d har typen %qT" +msgstr "skickar %qT som argument %d till %qE, men argument %d var en tupel av typen %qT" #: config/aarch64/aarch64-sve-builtins.cc:2430 #: config/arm/arm-mve-builtins.cc:1384 @@ -38269,10 +38073,9 @@ msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit eleme msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en vektor av %d-bitars element" #: config/aarch64/aarch64-sve-builtins.cc:2435 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of %d-bit elements" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of %d-bit elements" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en vektor av %d-bitars element" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig vektorer av %d-bitars element" #: config/aarch64/aarch64-sve-builtins.cc:2448 #: config/arm/arm-mve-builtins.cc:1396 @@ -38283,18 +38086,16 @@ msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en vektor a #. Translation note: could also be written "expects a tuple of #. signed integer vectors". #: config/aarch64/aarch64-sve-builtins.cc:2454 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of signed integers" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of signed integers" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en vektor av heltal med tecken" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig vektorer av heltal med tecken" #. Translation note: could also be written "expects a tuple of #. unsigned integer vectors". #: config/aarch64/aarch64-sve-builtins.cc:2468 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a vector of unsigned integers" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects vectors of unsigned integers" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en vektor av teckenlösa heltal" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig vektorer av teckenlösa heltal" #: config/aarch64/aarch64-sve-builtins.cc:2488 #: config/arm/arm-mve-builtins.cc:1423 @@ -38321,10 +38122,9 @@ msgid "passing %qT to argument %d of %qE, which expects %qs" msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig %qs" #: config/aarch64/aarch64-sve-builtins.cc:2577 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a scalar pointer" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which does not accept scalars for this combination of arguments" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en skalär pekare" +msgstr "skickar %qT som argument %d till %qE, vilken inte tar skalärer till denna kombination av argument" #: config/aarch64/aarch64-sve-builtins.cc:2593 #: config/arm/arm-mve-builtins.cc:1556 @@ -38426,10 +38226,9 @@ msgid "passing %qT to argument %d of %qE, but its %qT form does not accept scala msgstr "skickar %qT som argument %d till %qE, men dess %qT-form tar inte skalärer" #: config/aarch64/aarch64-sve-builtins.cc:3127 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but its %qT form does not accept scalars" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but its %qT form does not accept single vectors" -msgstr "skickar %qT som argument %d till %qE, men dess %qT-form tar inte skalärer" +msgstr "skickar %qT som argument %d till %qE, men dess %qT-form tar inte enkla vektorer" #: config/aarch64/aarch64-sve-builtins.cc:4621 #: config/aarch64/aarch64-sve-builtins.cc:4683 @@ -38440,10 +38239,9 @@ msgid "duplicate definition of %qs" msgstr "dubblerad definition av %qs" #: config/aarch64/aarch64-sve-builtins.cc:4675 -#, fuzzy, gcc-internal-format -#| msgid "%qD is defined with tls model %s" +#, gcc-internal-format msgid "%qs defined without first defining %qs" -msgstr "%qD initieras med tls-modell %s" +msgstr "%qs definierat utan att först definiera %qs" #: config/aarch64/aarch64-sve-builtins.cc:4834 #, gcc-internal-format @@ -38527,16 +38325,14 @@ msgid "capture by copy of SVE type %qT" msgstr "fångst av kopia av SVE-typen %qT" #: config/aarch64/aarch64.cc:635 -#, fuzzy, gcc-internal-format -#| msgid "third argument to function %qE must be a constant integer" +#, gcc-internal-format msgid "the arguments to %qE must be constant strings" -msgstr "tredje argumentet till funktionen %qE måste vara ett konstant heltal" +msgstr "argumenten till %qE måste vara konstanta strängar" #: config/aarch64/aarch64.cc:643 -#, fuzzy, gcc-internal-format -#| msgid "unrecognized string escape" +#, gcc-internal-format msgid "unrecognized state string %qs" -msgstr "okänd stringflyktföljd" +msgstr "okänd tillståndssträng %qs" #: config/aarch64/aarch64.cc:727 #, gcc-internal-format @@ -38549,16 +38345,14 @@ msgid "cannot create a new %qs scope since %qs is shared with callers" msgstr "kan inte skapa en ny räckvidd %qs eftersom %qs delas med sin anropare" #: config/aarch64/aarch64.cc:770 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute applies only to functions" +#, gcc-internal-format msgid "%qE attribute applies only to function definitions" -msgstr "attributet %qE är bara tillämpligt på funktioner" +msgstr "attributet %qE är bara tillämpligt på funktionesdefinitioner" #: config/aarch64/aarch64.cc:816 -#, fuzzy, gcc-internal-format -#| msgid "inconsistent because %qs" +#, gcc-internal-format msgid "inconsistent attributes for state %qs" -msgstr "inkonsistent för att %qs" +msgstr "inkonsistenta attribut för tillståndet %qs" #: config/aarch64/aarch64.cc:1305 #, gcc-internal-format @@ -38610,10 +38404,9 @@ msgstr "parameterskickandet för argument av typen %qT ändrades i GCC 13.1" #: config/aarch64/aarch64.cc:6966 config/aarch64/aarch64.cc:7044 #: config/aarch64/aarch64.cc:21189 -#, fuzzy, gcc-internal-format -#| msgid "parameter passing for argument of type %qT changed in GCC 13.1" +#, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 14.1" -msgstr "parameterskickandet för argument av typen %qT ändrades i GCC 13.1" +msgstr "parameterskickandet för argument av typen %qT ändrades i GCC 14.1" #: config/aarch64/aarch64.cc:6976 config/aarch64/aarch64.cc:7053 #: config/aarch64/aarch64.cc:21195 config/arm/arm.cc:7301 @@ -38638,10 +38431,9 @@ msgid "stack probes for SVE frames" msgstr "stackprov för SVE-ramar" #: config/aarch64/aarch64.cc:11080 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "calling a streaming function requires the ISA extension %qs" -msgstr "ACLE-funktionen %qD behöver ISA-utökningen %qs" +msgstr "att anropa en strömningsfunktion behöver ISA-utökningen %qs" #: config/aarch64/aarch64.cc:11089 config/aarch64/aarch64.cc:11093 #, gcc-internal-format @@ -38721,16 +38513,14 @@ msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>" msgstr "%<-fsanitize=shadow-call-stack%> kräver %<-ffixed-x18%>" #: config/aarch64/aarch64.cc:18237 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "streaming functions require the ISA extension %qs" -msgstr "ACLE-funktionen %qD behöver ISA-utökningen %qs" +msgstr "strömningsfunktioner behöver ISA-utökningen %qs" #: config/aarch64/aarch64.cc:18239 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "functions with SME state require the ISA extension %qs" -msgstr "ACLE-funktionen %qD behöver ISA-utökningen %qs" +msgstr "funktioner med SME-tillstånd behöver ISA-utökningen %qs" #: config/aarch64/aarch64.cc:18333 #, gcc-internal-format @@ -38748,10 +38538,9 @@ msgid "missing cpu name in %<-mcpu=%s%>" msgstr "cpu-namn saknas i %<-mcpu=%s%>" #: config/aarch64/aarch64.cc:18473 -#, fuzzy, gcc-internal-format -#| msgid "did you mean %<-mcpu=%s%>?" +#, gcc-internal-format msgid "did you mean %<-march=%s%>?" -msgstr "menade du %<-mcpu=%s%>?" +msgstr "menade du %<-march=%s%>?" #: config/aarch64/aarch64.cc:18476 #, gcc-internal-format @@ -38804,10 +38593,9 @@ msgid "unknown value %qs for %<-mtune%>" msgstr "okänt värde %qs till %<-mtune%>" #: config/aarch64/aarch64.cc:18717 -#, fuzzy, gcc-internal-format -#| msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch" +#, gcc-internal-format msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %<%s%> being added" -msgstr "flaggan %<-mcpu=%s%> står i konflikt med flaggan %<-march=%s%>" +msgstr "flaggan %<-mcpu=%s%> står i konflikt med flaggan %<-march=%s%> och resulterade i att flaggan %<%s%> lades till" #: config/aarch64/aarch64.cc:18773 #, gcc-internal-format @@ -38830,10 +38618,9 @@ msgid "code model %qs not supported in ilp32 mode" msgstr "kodmodellen %qs stödjs inte i ilp32-läge" #: config/aarch64/aarch64.cc:18954 -#, fuzzy, gcc-internal-format -#| msgid "ACLE function %qD requires ISA extension %qs" +#, gcc-internal-format msgid "functions with %qs state require the ISA extension %qs" -msgstr "ACLE-funktionen %qD behöver ISA-utökningen %qs" +msgstr "funktioner med %qs-tillstånd behöver ISA-utökningen %qs" #: config/aarch64/aarch64.cc:19057 #, gcc-internal-format @@ -38918,34 +38705,29 @@ msgid "malformed % pragma or attribute" msgstr "felformaterat pragma eller attribut %" #: config/aarch64/aarch64.cc:19668 -#, fuzzy, gcc-internal-format -#| msgid "attribute % specified multiple times" +#, gcc-internal-format msgid "attribute % has multiple values" -msgstr "attributet % angivet flera gånger" +msgstr "attributet % har flera värden" #: config/aarch64/aarch64.cc:19676 -#, fuzzy, gcc-internal-format -#| msgid "attribute % argument not a string" +#, gcc-internal-format msgid "attribute % argument not a string" -msgstr "argument till attribut % är inte en sträng" +msgstr "argument till attributet % är inte en sträng" #: config/aarch64/aarch64.cc:19698 -#, fuzzy, gcc-internal-format -#| msgid "missing value in % pragma or attribute" +#, gcc-internal-format msgid "missing value in % attribute" -msgstr "värde saknas i pragmat eller attributet %" +msgstr "värde saknas i attributet %" #: config/aarch64/aarch64.cc:19702 -#, fuzzy, gcc-internal-format -#| msgid "invalid feature modifier %qs of value %qs in % pragma or attribute" +#, gcc-internal-format msgid "invalid feature modifier %qs of value %qs in % attribute" -msgstr "felaktig funktionsmodifierare %qs på värdet %qs i pragmat eller attributet %" +msgstr "felaktig funktionsmodifierare %qs på värdet %qs i attributet %" #: config/aarch64/aarch64.cc:19708 -#, fuzzy, gcc-internal-format -#| msgid "invalid feature modifier %qs of value %qs in % pragma or attribute" +#, gcc-internal-format msgid "duplicate feature modifier %qs of value %qs in % attribute" -msgstr "felaktig funktionsmodifierare %qs på värdet %qs i pragmat eller attributet %" +msgstr "dubblerade funktionsmodifierare %qs på värdet %qs i attributet %" #: config/aarch64/aarch64.cc:20285 config/i386/i386-features.cc:3531 #: config/i386/i386-features.cc:3800 @@ -38985,10 +38767,9 @@ msgid "unsupported simdlen %wd" msgstr "ej stödd simdlen %wd" #: config/aarch64/aarch64.cc:28605 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support return type %qT for % functions" +#, gcc-internal-format msgid "GCC does not currently support return type %qT for simd" -msgstr "GCC stödjer för närvarande inte returtypen %qT för %-funktioner" +msgstr "GCC stödjer för närvarande inte returtypen %qT för simd" #: config/aarch64/aarch64.cc:28609 config/i386/i386.cc:25115 #, gcc-internal-format @@ -38996,10 +38777,9 @@ msgid "unsupported return type %qT for simd" msgstr "returtyp %qT stödjs ej för simd" #: config/aarch64/aarch64.cc:28639 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support argument type %qT for % functions" +#, gcc-internal-format msgid "GCC does not currently support argument type %qT for simd" -msgstr "GCC stödjer för närvarande inte argumenttypen %qT för %-funktioner" +msgstr "GCC stödjer för närvarande inte argumenttypen %qT för simd" #: config/aarch64/aarch64.cc:28643 config/i386/i386.cc:25146 #, gcc-internal-format @@ -39012,22 +38792,19 @@ msgid "GCC does not currently support simdlen %wd for type %qT" msgstr "GCC stödjer för närvarande inte simdlen %wd för typen %qT" #: config/aarch64/aarch64.cc:28713 -#, fuzzy, gcc-internal-format -#| msgid "GCC does not currently support simdlen %wd for type %qT" +#, gcc-internal-format msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types." -msgstr "GCC stödjer för närvarande inte simdlen %wd för typen %qT" +msgstr "GCC stödjer för närvarande inte en simdclone med simdlen:ar %wd och %wd för dessa typer." #: config/aarch64/aarch64.cc:28803 -#, fuzzy, gcc-internal-format -#| msgid "type attributes ignored after type is already defined" +#, gcc-internal-format msgid "cannot apply attribute %qs to %q+D after the function has been defined" -msgstr "typattribut ignoreras efter att typen redan är definierad" +msgstr "kan inte använda attributet %qs på %q+D efter att funktionen redan har definierats" #: config/aarch64/aarch64.cc:28805 -#, fuzzy, gcc-internal-format -#| msgid "%qD defined here" +#, gcc-internal-format msgid "%q+D defined here" -msgstr "%qD definierades här" +msgstr "%q+D definierades här" #: config/aarch64/aarch64.cc:29263 #, gcc-internal-format @@ -39382,16 +39159,14 @@ msgid "invalid type for % flag output" msgstr "ogiltig typ för %-flaggutdata" #: config/arm/aarch-common.cc:765 -#, fuzzy, gcc-internal-format -#| msgid "missing filename after %qs" +#, gcc-internal-format msgid "missing feature or flag for %<%s%>" -msgstr "filnamn saknas efter %qs" +msgstr "funktion eller flagga för %<%s%> saknas" #: config/arm/aarch-common.cc:767 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument %<%s%> for %<-mharden-sls=%>" +#, gcc-internal-format msgid "invalid argument %<%s%> for %<%s%>" -msgstr "ogiltigt argument %<%s%> till %<-mharden-sls=%>" +msgstr "ogiltigt argument %<%s%> till %<%s%>" #: config/arm/aarch-common.cc:778 #, gcc-internal-format @@ -39511,10 +39286,9 @@ msgid "%<#pragma GCC arm%> requires a string parameter" msgstr "%<#pragma GCC arm%> kräver en strängparameter" #: config/arm/arm-c.cc:156 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma GCC arm%> requires a string parameter" +#, gcc-internal-format msgid "%<#pragma GCC arm \"arm_mve.h\"%> requires a boolean parameter" -msgstr "%<#pragma GCC arm%> kräver en strängparameter" +msgstr "%<#pragma GCC arm \"arm_mve.h\"%> kräver en strängparameter" #: config/arm/arm-c.cc:160 #, gcc-internal-format @@ -39527,34 +39301,29 @@ msgid "this definition requires the MVE ISA extension" msgstr "denna definition kräver ISA-utökningen MVE" #: config/arm/arm-mve-builtins.cc:560 -#, fuzzy, gcc-internal-format -#| msgid "you can enable %qs using the command-line option %<-march%>, or by using the % attribute or pragma" +#, gcc-internal-format msgid "you can enable mve.fp by using the command-line option %<-march%>, or by using the % attribute or pragma" -msgstr "man kan aktivera %qs genom att använda kommandoradsflaggan %<-march%>, eller genom att använda attributet eller pragmat %" +msgstr "man kan aktivera mve.fp genom att använda kommandoradsflaggan %<-march%>, eller genom att använda attributet eller pragmat %" #: config/arm/arm-mve-builtins.cc:1166 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, but %qT is not a valid SVE element type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but %qT is not a valid MVE element type" -msgstr "skickar %qT som argument %d till %qE, men %qT är inte en giltig SVE-elementtyp" +msgstr "skickar %qT som argument %d till %qE, men %qT är inte en giltig MVE-elementtyp" #: config/arm/arm-mve-builtins.cc:1200 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuple" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects a single MVE vector rather than a tuple" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en ensam SVE-vektor snarare än en tupel" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en ensam MVE-vektor snarare än en tupel" #: config/arm/arm-mve-builtins.cc:1220 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE vector type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an MVE vector type" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en SVE-vektortyp" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en MVE-vektortyp" #: config/arm/arm-mve-builtins.cc:1223 -#, fuzzy, gcc-internal-format -#| msgid "passing %qT to argument %d of %qE, which expects an SVE tuple type" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, which expects an MVE tuple type" -msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en SVE-tupeltyp" +msgstr "skickar %qT som argument %d till %qE, vilken förväntar sig en MVE-tupeltyp" #: config/arm/arm-mve-builtins.cc:1290 #, gcc-internal-format @@ -40025,10 +39794,9 @@ msgid "%qE attribute only supported for reduced Tiny cores" msgstr "attributet %qE stödjs bara för reducerade Tiny-kärnor" #: config/avr/avr.cc:10405 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute address out of range" +#, gcc-internal-format msgid "%qE attribute address out of range 0x%x%s0x%x" -msgstr "adressen till attributet %qE är utanför giltigt intervall" +msgstr "adressen till attributet %qE är utanför giltigt intervall 0x%x%s0x%x" #: config/avr/avr.cc:10419 #, gcc-internal-format @@ -40061,10 +39829,9 @@ msgid "pointer targeting address space %qs must be const in %s %q+D" msgstr "pekare med mål i adressrymden %qs måste vara konstanta i %s %q+D" #: config/avr/avr.cc:10717 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only applies to variables in static storage" +#, gcc-internal-format msgid "variable %q+D with attribute %qs must be located in static storage" -msgstr "attributet %qE är bara tillämpligt på variabler med statisk lagringsklass" +msgstr "variabeln %q+D med attributet %qs måste vara placerat i statisk lagring" #: config/avr/avr.cc:10769 #, gcc-internal-format @@ -40072,10 +39839,9 @@ msgid "variable %q+D must be const in order to be put into read-only section by msgstr "variabeln %q+D måste vara const för att kunna läggas i en endast läsbar sektion med hjälp av %qs" #: config/avr/avr.cc:10930 -#, fuzzy, gcc-internal-format -#| msgid "static IO declaration for %q+D needs an address" +#, gcc-internal-format msgid "static attribute %qs declaration for %q+D needs an address" -msgstr "statisk IO-deklaration för %q+D behöver en adress" +msgstr "deklarationen av det statiska attributet %qs för %q+D behöver en adress" #: config/avr/avr.cc:11019 #, gcc-internal-format @@ -40098,10 +39864,9 @@ msgstr "den oinitierade variabeln %q+D placerad i programminnesområdet" #. address attribute are determined by the attribute, not by #. some initializer. #: config/avr/avr.cc:11172 -#, fuzzy, gcc-internal-format -#| msgid "Allocatable %qs at %L cannot have an initializer" +#, gcc-internal-format msgid "variable %q+D with attribute %qs must not have an initializer" -msgstr "Allokerbar %qs vid %L kan inte ha en initierare" +msgstr "variabeln %q+D med attributet %qs får inte ha en initierare" #: config/avr/avr.cc:11225 #, gcc-internal-format @@ -40277,10 +40042,9 @@ msgid "invalid argument to built-in function" msgstr "ogiltigt argument inbyggd funktion" #: config/bpf/bpf.cc:1019 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument to built-in function %s" +#, gcc-internal-format msgid "invalid built-in function at expansion" -msgstr "ogiltigt argument till den inbyggda funktionen %s" +msgstr "ogiltig inbyggd funktion vid expansionen" #: config/c6x/c6x.cc:245 #, gcc-internal-format @@ -40494,10 +40258,9 @@ msgid "stack frame must be smaller than 64K" msgstr "stackramen måste vara mindre än 64 k" #: config/gcn/gcn.cc:170 -#, fuzzy, gcc-internal-format -#| msgid "%<-msmart%> is incompatible with %<-mhigh-registers%>" +#, gcc-internal-format msgid "%<-mxnack=on%> is incompatible with %<-march=%s%>" -msgstr "%<-msmart%> är inkompatibel med %<-mhigh-registers%>" +msgstr "%<-mxnack=on%> är inkompatibelt med %<-march=%s%>" #: config/gcn/gcn.cc:284 #, gcc-internal-format @@ -40575,28 +40338,24 @@ msgid "%d bytes of gang-private data-share memory exhausted (increase with %<-mg msgstr "%d byte med gang-private data-share-minne slut (öka med t.ex. %<-mgang-private-size=%d%>)" #: config/gcn/mkoffload.cc:160 -#, fuzzy, gcc-internal-format -#| msgid "deleting file %s: %m" +#, gcc-internal-format msgid "deleting file %qs: %m" -msgstr "raderar filen %s: %m" +msgstr "raderar filen %qs: %m" #: config/gcn/mkoffload.cc:862 -#, fuzzy, gcc-internal-format -#| msgid "COLLECT_GCC must be set." +#, gcc-internal-format msgid "% must be set" -msgstr "COLLECT_GCC måste vara satt." +msgstr "% måste vara satt" #: config/gcn/mkoffload.cc:908 -#, fuzzy, gcc-internal-format -#| msgid "offload compiler %s not found" +#, gcc-internal-format msgid "offload compiler %qs not found" -msgstr "avlastningskompilatorn %s finns inte" +msgstr "avlastningskompilatorn %qs finns inte" #: config/gcn/mkoffload.cc:930 -#, fuzzy, gcc-internal-format -#| msgid "unrecognizable argument of option " +#, gcc-internal-format msgid "unrecognizable argument of option %<" -msgstr "okänt argument till flaggan " +msgstr "okänt argument till flaggan %<" #: config/gcn/mkoffload.cc:994 config/nvptx/mkoffload.cc:751 #, gcc-internal-format @@ -40604,16 +40363,14 @@ msgid "either %<-fopenacc%> or %<-fopenmp%> must be set" msgstr "antingen %<-fopenacc%> eller %<-fopenmp%> måste vara satt" #: config/gcn/mkoffload.cc:1039 -#, fuzzy, gcc-internal-format -#| msgid "unhandled expression" +#, gcc-internal-format msgid "unhandled architecture" -msgstr "ohanterat uttryck" +msgstr "ohanterad arkitektur" #: config/gcn/mkoffload.cc:1079 config/gcn/mkoffload.cc:1231 -#, fuzzy, gcc-internal-format -#| msgid "cannot open %s" +#, gcc-internal-format msgid "cannot open %qs" -msgstr "kan inte öppna %s" +msgstr "kan inte öppna %qs" #: config/gcn/mkoffload.cc:1217 config/nvptx/mkoffload.cc:841 #, gcc-internal-format @@ -40970,16 +40727,14 @@ msgid "%<-mstringop-strategy=rep_8byte%> not supported for 32-bit code" msgstr "%<-mstringop-strategy=rep_8byte%> stödjs inte för 32-bitarskod" #: config/i386/i386-options.cc:2143 -#, fuzzy, gcc-internal-format -#| msgid "%<-muintr%> not supported for 32-bit code" +#, gcc-internal-format msgid "%<-mapxf%> is not supported for 32-bit code" -msgstr "%<-muintr%> stödjs inte för 32-bitarskod" +msgstr "%<-mapxf%> stödjs inte för 32-bitarskod" #: config/i386/i386-options.cc:2145 -#, fuzzy, gcc-internal-format -#| msgid "%<-mlam=%> option: [u48|u57] not supported for 32-bit code" +#, gcc-internal-format msgid "%<-mapx-features=%> option is not supported for 32-bit code" -msgstr "%<-mlam=%> flaggan: [u48|u57] stödjs inte för 32-bitarskod" +msgstr "flaggan %<-mapx-features=%>- stödjs inte för 32-bitarskod" #: config/i386/i386-options.cc:2148 #, gcc-internal-format @@ -41559,10 +41314,9 @@ msgid "the ABI of passing C structures with zero-width bit-fields has changed in msgstr "ABI:et för att skicka C-poster med bitfält med nollbredd har ändrats i GCC %{12.1%}" #: config/i386/i386.cc:2722 config/i386/i386.cc:4091 config/i386/i386.cc:4101 -#, fuzzy, gcc-internal-format -#| msgid "SSE register return with SSE disabled" +#, gcc-internal-format msgid "SSE register return with SSE2 disabled" -msgstr "SSE-registerretur med SSE avaktiverat" +msgstr "SSE-registerretur med SSE2 avaktiverat" #: config/i386/i386.cc:2724 #, gcc-internal-format @@ -41570,10 +41324,9 @@ msgid "SSE register return with SSE disabled" msgstr "SSE-registerretur med SSE avaktiverat" #: config/i386/i386.cc:2731 -#, fuzzy, gcc-internal-format -#| msgid "SSE register argument with SSE disabled" +#, gcc-internal-format msgid "SSE register argument with SSE2 disabled" -msgstr "SSE-registerargument med SSE avaktiverat" +msgstr "SSE-registerargument med SSE2 avaktiverat" #: config/i386/i386.cc:2733 #, gcc-internal-format @@ -41677,10 +41430,9 @@ msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}" msgstr "justeringen av %<_Atomic %T%>-fält ändrades i %{GCC 11.1%}" #: config/i386/i386.cc:22794 -#, fuzzy, gcc-internal-format -#| msgid "no low registers available for popping high registers" +#, gcc-internal-format msgid "no register available for profiling %<-mcmodel=large%s%>" -msgstr "inga låga register tillgängliga för att poppa höga register" +msgstr "inga register tillgängliga för profilering %<-mcmodel=large%s%>" #: config/i386/i386.cc:22890 #, gcc-internal-format @@ -41688,10 +41440,9 @@ msgid "profiling %<-mcmodel=large%> with PIC is not supported" msgstr "profileringen %<-mcmodel=large%> med PIC stödjs inte" #: config/i386/i386.cc:23603 -#, fuzzy, gcc-internal-format -#| msgid "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since GCC V13, be careful of implicit conversion between %<__bf16%> and %; a explicit bitcast may be needed here" +#, gcc-internal-format msgid "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %; an explicit bitcast may be needed here" -msgstr "%<__bfloat16%> är omdefinierat från typedef % till reell %<__bf16%> sedan GCC V13, var vaksam på implicita konverteringar mellan %<__bf16%> och %; en explicit bittypkonvertering kan behövas här" +msgstr "%<__bfloat16%> är omdefinierat från typedef % till reell %<__bf16%> sedan GCC 13.1, var vaksam på implicita konverteringar mellan %<__bf16%> och %; en explicit bittypkonvertering kan behövas här" #: config/i386/i386.cc:25052 #, gcc-internal-format @@ -41800,16 +41551,14 @@ msgid "unknown processor ID %<0x%x%>, some tuning parameters will fall back to d msgstr "okänd processor-ID %<0x%x%>, några trimningsparametrar kommer återställas till standardvärden" #: config/loongarch/loongarch-cpu.cc:141 -#, fuzzy, gcc-internal-format -#| msgid "unknown base architecture %<0x%x%>, %qs failed" +#, gcc-internal-format msgid "unknown native base architecture %<0x%x%>, %qs failed" -msgstr "okänd basarkitektur %<0x%x%>, %qs misslyckades" +msgstr "okänd nativ basarkitektur %<0x%x%>, %qs misslyckades" #: config/loongarch/loongarch-cpu.cc:170 -#, fuzzy, gcc-internal-format -#| msgid "unknown FPU type %<0x%x%>, %qs failed" +#, gcc-internal-format msgid "unknown native FPU type %<0x%x%>, %qs failed" -msgstr "okänd FPU-typ %<0x%x%>, %qs misslyckades" +msgstr "okänd nativ FPU-typ %<0x%x%>, %qs misslyckades" #: config/loongarch/loongarch-cpu.cc:177 #, gcc-internal-format @@ -41853,10 +41602,9 @@ msgid "%qs is disabled by %<-m%s%>, because it requires %<%s%s%>" msgstr "%qs avaktiveras av %<-m%s%> eftersom det kräver %<%s%s%>" #: config/loongarch/loongarch-opts.cc:389 -#, fuzzy, gcc-internal-format -#| msgid "switch %<-mcpu=%s%> conflicts with switch %<-march=%s%>" +#, gcc-internal-format msgid "%<-m%s=%s%> conflicts with %qs, which requires %<%s%s%>" -msgstr "flaggan %<-mcpu=%s%> står i konflikt med flaggan %<-march=%s%>" +msgstr "%<-m%s=%s%> står i konflikt med %qs, vilken kräver %<%s%s%>" #: config/loongarch/loongarch-opts.cc:433 #, gcc-internal-format @@ -42076,10 +41824,9 @@ msgid "%qE attribute requires a string argument" msgstr "attributet %qE behöver ett strängargument" #: config/mips/mips.cc:1340 -#, fuzzy, gcc-internal-format -#| msgid "argument to %qE attribute is neither zero, nor one" +#, gcc-internal-format msgid "argument to %qE attribute is neither no, pcrel nor yes" -msgstr "argumentet till attributet %qE är varken noll eller ett" +msgstr "argumentet till attributet %qE är varken no, pcrel eller yes" #: config/mips/mips.cc:1506 config/mips/mips.cc:1510 #, gcc-internal-format @@ -42174,10 +41921,9 @@ msgid "MSA MIPS16 code" msgstr "MSA MIPS16-kod" #: config/mips/mips.cc:20067 -#, fuzzy, gcc-internal-format -#| msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" +#, gcc-internal-format msgid "MIPS16 requires %<-mexplicit-relocs%>" -msgstr "%<-mno-gpopt%> behöver %<-mexplicit-relocs%>" +msgstr "MIPS16 behöver %<-mexplicit-relocs%>" #: config/mips/mips.cc:20258 config/mips/mips.cc:20263 #: config/mips/mips.cc:20353 config/mips/mips.cc:20355 @@ -43043,10 +42789,9 @@ msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-mi msgstr "PTX-version (%<-mptx%>) behöver vara åtminstone %s för att stödja vald %<-misa%> (sm_%s)" #: config/nvptx/nvptx.cc:340 -#, fuzzy, gcc-internal-format -#| msgid "multiple %<-mcpu=%> options specified" +#, gcc-internal-format msgid "%<-march=%> must be specified" -msgstr "flera %<-mcpu=%>-flaggor angivna" +msgstr "%<-march=%> måste anges" #: config/nvptx/nvptx.cc:363 #, gcc-internal-format @@ -43225,10 +42970,9 @@ msgid "%<#pragma riscv intrinsic%> requires a string parameter" msgstr "%<#pragma riscv intrinsic%> kräver en strängparameter" #: config/riscv/riscv-c.cc:203 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma riscv intrinsic%> option %qs needs 'V' extension enabled" +#, gcc-internal-format msgid "%<#pragma riscv intrinsic%> option %qs needs 'V' or 'XTHEADVECTOR' extension enabled" -msgstr "%<#pragma riscv intrinsic%>-alternativet %qs behöver ha utvidgningen ”V” aktiverad" +msgstr "%<#pragma riscv intrinsic%>-alternativet %qs behöver ha utvidgningen ”V” eller ”XTHEADVECTOR” aktiverad" #: config/riscv/riscv-c.cc:211 #, gcc-internal-format @@ -43261,10 +43005,9 @@ msgid "% attribute: unknown CPU %qs" msgstr "attributet %: okänd CPU %qs" #: config/riscv/riscv-target-attr.cc:195 -#, fuzzy, gcc-internal-format -#| msgid "target attribute is not supported on this machine" +#, gcc-internal-format msgid "% attribute: tune appears more than once" -msgstr "målattribut stödjs inte på denna maskin" +msgstr "attributet %: trimning förekommer mer än en gång" #: config/riscv/riscv-target-attr.cc:201 #, gcc-internal-format @@ -43272,34 +43015,29 @@ msgid "% attribute: unknown TUNE %qs" msgstr "attributet %: okänd TUNE %qs" #: config/riscv/riscv-target-attr.cc:240 -#, fuzzy, gcc-internal-format -#| msgid "malformed % pragma or attribute" +#, gcc-internal-format msgid "malformed % attribute" -msgstr "felformaterat pragma eller attribut %" +msgstr "felformaterat attribut %" #: config/riscv/riscv-target-attr.cc:254 -#, fuzzy, gcc-internal-format -#| msgid "pragma or attribute % does not accept an argument" +#, gcc-internal-format msgid "attribute % does not accept an argument" -msgstr "pragmat eller attributet % tar inte något argument" +msgstr "attributet % tar inte något argument" #: config/riscv/riscv-target-attr.cc:271 -#, fuzzy, gcc-internal-format -#| msgid "unknown attribute %qs" +#, gcc-internal-format msgid "Got unknown attribute %" -msgstr "okänt attribut %qs" +msgstr "Fick ett okänt attribut %" #: config/riscv/riscv-target-attr.cc:352 -#, fuzzy, gcc-internal-format -#| msgid "malformed % pragma or attribute" +#, gcc-internal-format msgid "malformed % attribute" -msgstr "felformaterat pragma eller attribut %" +msgstr "felformaterat attribut %" #: config/riscv/riscv-vector-builtins.cc:4239 -#, fuzzy, gcc-internal-format -#| msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]" +#, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd] or %wd" -msgstr "skickar %wd som argument %d till %qE, vilken förväntar sig ett värdet i intervallet [%wd, %wd]" +msgstr "skickar %wd som argument %d till %qE, vilken förväntar sig ett värdet i intervallet [%wd, %wd] eller %wd" #: config/riscv/riscv-vector-builtins.cc:4435 #, gcc-internal-format @@ -43352,10 +43090,9 @@ msgid "capture by copy of RVV type %qT" msgstr "fångst av kopia av RVV-typen %qT" #: config/riscv/riscv-vector-builtins.cc:4633 -#, fuzzy, gcc-internal-format -#| msgid "no matching function for call to %<%s(%A)%>" +#, gcc-internal-format msgid "no matching function call to %qE with empty arguments" -msgstr "ingen funktion som stämmer för anrop av %<%s(%A)%>" +msgstr "ingen funktion som stämmer för anrop av %qE med tomma argument" #: config/riscv/riscv.cc:647 #, gcc-internal-format @@ -43378,10 +43115,9 @@ msgid "ABI for flattened struct with zero-length bit-fields changed in GCC 10" msgstr "ABI:et för en tillplattad post med nollängds bitfält ändrades i GCC 10" #: config/riscv/riscv.cc:5237 -#, fuzzy, gcc-internal-format -#| msgid "SVE type %qT cannot be passed to an unprototyped function" +#, gcc-internal-format msgid "RVV type %qT cannot be passed to an unprototyped function" -msgstr "SVE-typen %qT kan inte skickas till en funktion utan prototyp" +msgstr "RVV-typen %qT kan inte skickas till en funktion utan prototyp" #: config/riscv/riscv.cc:5515 #, gcc-internal-format @@ -43399,16 +43135,14 @@ msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Ext msgstr "Aktuell RISC-V GCC stödjer inte VLEN större än 4096 bitar till utökningen ”V”" #: config/riscv/riscv.cc:8923 -#, fuzzy, gcc-internal-format -#| msgid "target CPU does not support ARM mode" +#, gcc-internal-format msgid "Current RISC-V GCC does not support RVV in big-endian mode" -msgstr "målprocessorn stödjer inte ARM-läge" +msgstr "Nuvarande RISC-V GCC stödjer inte RVV i läget rak byteordning" #: config/riscv/riscv.cc:8949 config/riscv/riscv.cc:8952 -#, fuzzy, gcc-internal-format -#| msgid "code model %qs with %<-f%s%>" +#, gcc-internal-format msgid "code model %qs with %qs" -msgstr "kodmodell %qs med %<-f%s%>" +msgstr "kodmodell %qs med %qs" #: config/riscv/riscv.cc:8981 #, gcc-internal-format @@ -43421,16 +43155,14 @@ msgid "rv32e requires ilp32e ABI" msgstr "rv32e kräver ABI:et ilp32e" #: config/riscv/riscv.cc:8990 -#, fuzzy, gcc-internal-format -#| msgid "rv32e requires ilp32e ABI" +#, gcc-internal-format msgid "rv64e requires lp64e ABI" -msgstr "rv32e kräver ABI:et ilp32e" +msgstr "rv64e kräver ABI:et lp64e" #: config/riscv/riscv.cc:8997 -#, fuzzy, gcc-internal-format -#| msgid "z*inx requires ABI ilp32, ilp32e or lp64" +#, gcc-internal-format msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e" -msgstr "z*inx kräver ABI ilp32, ilp32e eller lp64" +msgstr "z*inx kräver ABI:et ilp32, ilp32e, lp64 eller lp64" #: config/riscv/riscv.cc:9001 #, gcc-internal-format @@ -44345,28 +44077,24 @@ msgid "value %qs is not supported by attribute %" msgstr "värdet %qs stödjs inte av attributet %" #: config/s390/s390.cc:17531 -#, fuzzy, gcc-internal-format -#| msgid "invalid constraints" +#, gcc-internal-format msgid "invalid cc output constraint: %qs" -msgstr "ogiltiga begränsningar" +msgstr "ogiltig cc-utmatningsbegränsning: %qs" #: config/s390/s390.cc:17536 -#, fuzzy, gcc-internal-format -#| msgid "double constants not supported" +#, gcc-internal-format msgid "multiple cc output constraints not supported" -msgstr "double-konstanter stödjs inte" +msgstr "flera cc-utmatningsbegränsningar stödjs inte" #: config/s390/s390.cc:17541 -#, fuzzy, gcc-internal-format -#| msgid "% specifier for variable %qE conflicts with % clobber list" +#, gcc-internal-format msgid "% specifier for cc output conflicts with % clobber list" -msgstr "%-specificerare för variabeln %qE står i konflikt med %-överskrivningslista" +msgstr "%-specificerare för cc-utmatning står i konflikt med %-överskrivningslista" #: config/s390/s390.cc:17547 -#, fuzzy, gcc-internal-format -#| msgid "invalid type for make function" +#, gcc-internal-format msgid "invalid type for cc output constraint" -msgstr "ogiltig typ för make-funktion" +msgstr "ogiltig typ för cc-utmatningsbegränsning" #: config/sh/sh.cc:936 #, gcc-internal-format @@ -44933,10 +44661,9 @@ msgid "declaration of %q+D shadows a built-in function" msgstr "deklaration av %q+D skuggar en inbyggd funktion" #: c/c-decl.cc:2153 -#, fuzzy, gcc-internal-format -#| msgid "redeclaration of enumerator %q+D" +#, gcc-internal-format msgid "conflicting redeclaration of enumerator %q+D" -msgstr "omdeklaration av uppräkningstyp %q+D" +msgstr "omdeklaration av uppräkningstyp %q+D som står i konflikt" #: c/c-decl.cc:2160 #, gcc-internal-format @@ -45220,10 +44947,9 @@ msgid "traditional C lacks a separate namespace for labels, identifier %qE confl msgstr "traditionell C saknar en separat namnrymd för etiketter, identifierare %qE står i konflikt" #: c/c-decl.cc:4379 -#, fuzzy, gcc-internal-format -#| msgid "switch jumps over variable initialization" +#, gcc-internal-format msgid "switch jumps over OpenMP % allocation" -msgstr "switch hoppar över variabelinitieringar" +msgstr "switch hoppar över en OpenMP %-allokering" #: c/c-decl.cc:4385 #, gcc-internal-format @@ -45393,10 +45119,9 @@ msgid "%<[*]%> not allowed in other than function prototype scope" msgstr "%<[*]%> är inte tillåtet annat än inom en funktionsprototyp" #: c/c-decl.cc:5475 cp/decl2.cc:1852 cp/name-lookup.cc:8767 -#, fuzzy, gcc-internal-format -#| msgid "% not allowed to be specified in this context" +#, gcc-internal-format msgid "% not allowed to be specified in this context" -msgstr "% är inte tillåtet att anges i detta sammanhang" +msgstr "% är inte tillåtet att anges i detta sammanhang" #: c/c-decl.cc:5555 #, gcc-internal-format @@ -46021,10 +45746,9 @@ msgid "ISO C90 does not support %<_Noreturn%>" msgstr "ISO C90 stödjer inte %<_Noreturn%>" #: c/c-decl.cc:8204 -#, fuzzy, gcc-internal-format -#| msgid "variable previously declared % redeclared %" +#, gcc-internal-format msgid "function previously declared % redeclared %" -msgstr "variabel tidigare deklarerad % omdeklarerad som %" +msgstr "funktionen tidigare deklarerad % omdeklarerad som %" #: c/c-decl.cc:8222 #, gcc-internal-format @@ -46232,10 +45956,9 @@ msgid "flexible array member in a struct with no named members" msgstr "flexibel vektormedlem i struct utan namngivna medlemmar" #: c/c-decl.cc:9519 -#, fuzzy, gcc-internal-format -#| msgid "flexible array member not at end of struct" +#, gcc-internal-format msgid "structure containing a flexible array member is not at the end of another structure" -msgstr "flexibel vektormedlem inte vid slutet av post" +msgstr "posten som innehåller en flexibel vektormedlem inte vid slutet av annan post" #: c/c-decl.cc:9542 #, gcc-internal-format @@ -46253,16 +45976,14 @@ msgid "union cannot be made transparent" msgstr "unionen kan inte göras transparent" #: c/c-decl.cc:9686 -#, fuzzy, gcc-internal-format -#| msgid "redefinition of typedef %q+D with variably modified type" +#, gcc-internal-format msgid "redefinition of struct or union %qT with variably modified type" -msgstr "omdefinition av typedef %q+D med variabelt modifierad typ" +msgstr "omdefinition av posten eller unionen %qT med variabelt modifierad typ" #: c/c-decl.cc:9689 -#, fuzzy, gcc-internal-format -#| msgid "redefinition of %" +#, gcc-internal-format msgid "redefinition of struct or union %qT" -msgstr "omdefinition av %" +msgstr "omdefinition av posten eller unionen %qT" #: c/c-decl.cc:9852 #, gcc-internal-format @@ -46295,10 +46016,9 @@ msgid "enumeration values exceed range of %qs" msgstr "uppräkningsvärden överskrider gränsen på %qs" #: c/c-decl.cc:10133 -#, fuzzy, gcc-internal-format -#| msgid "nested redefinition of %" +#, gcc-internal-format msgid "conflicting redefinition of enum %qT" -msgstr "nästad omdefinition av %" +msgstr "omdefinition av enum %qT som står i konflikt" #: c/c-decl.cc:10165 c/c-decl.cc:10181 #, gcc-internal-format @@ -46326,10 +46046,9 @@ msgid "enumerator value outside the range of %qs" msgstr "uppräkningsvärdet är utanför intervallet för %qs" #: c/c-decl.cc:10241 -#, fuzzy, gcc-internal-format -#| msgid "ISO C restricts enumerator values to range of % before C2X" +#, gcc-internal-format msgid "ISO C restricts enumerator values to range of % before C23" -msgstr "ISO C begränsar uppräkningsvärden till intervallet hos % före C2X" +msgstr "ISO C begränsar uppräkningsvärden till intervallet hos % före C23" #: c/c-decl.cc:10442 cp/decl.cc:5981 cp/decl.cc:17785 #, gcc-internal-format @@ -46392,10 +46111,9 @@ msgid "traditional C rejects ISO C style function definitions" msgstr "traditionell C tillåter inte ISO C:s stil av funktionsdefinitioner" #: c/c-decl.cc:10696 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support omitting parameter names in function definitions before C2X" +#, gcc-internal-format msgid "ISO C does not support omitting parameter names in function definitions before C23" -msgstr "ISO C stödjer inte att utelämna parameternamn i funktionsdefinitioner före C2X" +msgstr "ISO C stödjer inte att utelämna parameternamn i funktionsdefinitioner före C23" #: c/c-decl.cc:10736 c/c-decl.cc:10740 #, gcc-internal-format @@ -46600,10 +46318,9 @@ msgid "ISO C90 does not support boolean types" msgstr "ISO C90 stödjer inte booleska typer" #: c/c-decl.cc:12451 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support the %<_Float%d%s%> type" +#, gcc-internal-format msgid "ISO C does not support the %<_Float%d%s%> type before C23" -msgstr "ISO C stödjer inte typen %<_Float%d%s%>" +msgstr "ISO C stödjer inte typen %<_Float%d%s%> före C23" #: c/c-decl.cc:12502 cp/parser.cc:20288 #, gcc-internal-format @@ -46611,10 +46328,9 @@ msgid "%<_Float%d%s%> is not supported on this target" msgstr "%<_Float%d%s%> stödjs inte för denna målarkitektur" #: c/c-decl.cc:12573 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support decimal floating-point before C2X" +#, gcc-internal-format msgid "ISO C does not support decimal floating-point before C23" -msgstr "ISO C stödjer inte decimala flyttal före C2X" +msgstr "ISO C stödjer inte decimala flyttal före C23" #: c/c-decl.cc:12597 c/c-decl.cc:12974 c/c-parser.cc:10628 #, gcc-internal-format @@ -46627,16 +46343,14 @@ msgid "ISO C does not support fixed-point types" msgstr "ISO C stödjer inte fixdecimaltyper" #: c/c-decl.cc:12628 -#, fuzzy, gcc-internal-format -#| msgid "case label is not an integer constant expression" +#, gcc-internal-format msgid "%<_BitInt%> argument is not an integer constant expression" -msgstr "case-etikett är inte ett konstant heltalsuttryck" +msgstr "argumentet till %<_BitInt%> är inte ett konstant heltalsuttryck" #: c/c-decl.cc:12634 -#, fuzzy, gcc-internal-format -#| msgid "enumerator value for %qE is not an integer constant expression" +#, gcc-internal-format msgid "%<_BitInt%> argument %qE is not a positive integer constant expression" -msgstr "uppräkningsvärde för %qE är inte ett konstant heltalsuttryck" +msgstr "argumentet %qE till %<_BitInt%> är inte ett konstant positivt heltalsuttryck" #: c/c-decl.cc:12641 #, gcc-internal-format @@ -46741,10 +46455,9 @@ msgid "ISO C does not support plain % meaning %" msgstr "ISO C stödjer inte bara % i meningen %" #: c/c-decl.cc:12997 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support % type deduction before C2X" +#, gcc-internal-format msgid "ISO C does not support % type deduction before C23" -msgstr "ISO C stödjer inte %-attribut före C2X" +msgstr "ISO C stödjer inte %-attribut före C23" #: c/c-decl.cc:13026 #, gcc-internal-format @@ -46757,16 +46470,14 @@ msgid "ISO C does not support complex integer types" msgstr "ISO C stödjer inte komplexa heltalstyper" #: c/c-decl.cc:13237 -#, fuzzy, gcc-internal-format -#| msgid "Fixed line length must be at least seven" +#, gcc-internal-format msgid "% argument must be at least 2" -msgstr "Fast radlängd måste vara minst sju" +msgstr "argumentet till % måste vara åtminstone 2" #: c/c-decl.cc:13246 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ does not support %<__int%d%> for %qs" +#, gcc-internal-format msgid "ISO C does not support %<%s_BitInt(%d)%> before C23" -msgstr "ISO C++ stödjer inte %<__int%d%> för %qs" +msgstr "ISO C stödjer inte %<%s_BitInt(%d)%> före C23" #: c/c-decl.cc:13545 cp/semantics.cc:6316 #, gcc-internal-format @@ -47053,10 +46764,9 @@ msgid "%<__GIMPLE%> only valid with %<-fgimple%>" msgstr "%<__GIMPLE%> är endast giltigt med %<-fgimple%>" #: c/c-parser.cc:3699 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support specifying % underlying types before C2X" +#, gcc-internal-format msgid "ISO C does not support specifying % underlying types before C23" -msgstr "ISO C stödjer inte att ange underliggande typer för % före C2X" +msgstr "ISO C stödjer inte att ange underliggande typer för % före C23" #: c/c-parser.cc:3708 #, gcc-internal-format @@ -47163,10 +46873,9 @@ msgid "expected identifier or %<(%>" msgstr "identifierare eller %<(%> förväntades" #: c/c-parser.cc:4920 -#, fuzzy, gcc-internal-format -#| msgid "ISO C requires a named argument before %<...%> before C2X" +#, gcc-internal-format msgid "ISO C requires a named argument before %<...%> before C23" -msgstr "ISO C kräver ett namngivet argument före %<...%> före C2X" +msgstr "ISO C kräver ett namngivet argument före %<...%> före C23" #: c/c-parser.cc:5045 #, gcc-internal-format @@ -47199,10 +46908,9 @@ msgid "%qE attribute does not take any arguments" msgstr "attributet %qE tar inga argument" #: c/c-parser.cc:5893 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support %<[[]]%> attributes before C2X" +#, gcc-internal-format msgid "ISO C does not support %<[[]]%> attributes before C23" -msgstr "ISO C stödjer inte %<[[]]%>-attribut före C2X" +msgstr "ISO C stödjer inte %<[[]]%>-attribut före C23" #: c/c-parser.cc:6106 c/c-parser.cc:6169 c/c-typeck.cc:8822 #, gcc-internal-format @@ -47210,10 +46918,9 @@ msgid "variable-sized object may not be initialized except with an empty initial msgstr "objekt med variabel storlek kan inte initieras utom med en tom initierare" #: c/c-parser.cc:6163 -#, fuzzy, gcc-internal-format -#| msgid "ISO C forbids empty initializer braces before C2X" +#, gcc-internal-format msgid "ISO C forbids empty initializer braces before C23" -msgstr "ISO C förbjuder tomma klamrar som initierare före C2X" +msgstr "ISO C förbjuder tomma klamrar som initierare före C23" #: c/c-parser.cc:6227 #, gcc-internal-format @@ -47236,22 +46943,19 @@ msgid "obsolete use of designated initializer without %<=%>" msgstr "föråldrad användning av designerade initierare utan %<=%>" #: c/c-parser.cc:6567 cp/parser.cc:13308 -#, fuzzy, gcc-internal-format -#| msgid "no valid clauses specified in %<#pragma acc declare%>" +#, gcc-internal-format msgid "inner loops must be perfectly nested in %<#pragma acc loop%>" -msgstr "inga giltiga klausuler angivna i %<#pragma acc declare%>" +msgstr "inre slingor måste vara perfekt nästade i %<#pragma acc loop%>" #: c/c-parser.cc:6574 cp/parser.cc:13315 -#, fuzzy, gcc-internal-format -#| msgid "% region must be closely nested inside a loop region with an % clause" +#, gcc-internal-format msgid "inner loops must be perfectly nested with % clause" -msgstr "en % region måste vara nära innesluten inuti en slingaregion med en %-klausul" +msgstr "inre slingor måste vara perfekt nästade med en %-klausul" #: c/c-parser.cc:6581 cp/parser.cc:13322 -#, fuzzy, gcc-internal-format -#| msgid "% clause must not be used together with % clause" +#, gcc-internal-format msgid "inner loops must be perfectly nested with % % clause" -msgstr "en %-klausul får inte användas tillsammans med en %-klausul" +msgstr "inre slingor måste vara perfekt nästade med en % %-klausul" #: c/c-parser.cc:6638 c/c-parser.cc:6793 cp/parser.cc:12240 cp/parser.cc:12390 #: cp/parser.cc:48555 @@ -47260,17 +46964,15 @@ msgid "mixing OpenMP directives with attribute and pragma syntax on the same sta msgstr "OpenMP-direktiv blandas med attribut- och pragma-syntax på samma sats" #: c/c-parser.cc:6646 cp/parser.cc:12248 -#, fuzzy, gcc-internal-format -#| msgid "% attribute requires argument" +#, gcc-internal-format msgid "OpenMP % attribute on a statement" -msgstr "attributet % behöver argument" +msgstr "OpenMP %-attribut på en sats" #: c/c-parser.cc:6670 c/c-parser.cc:6889 c/c-parser.cc:25015 cp/parser.cc:12272 #: cp/parser.cc:48535 cp/parser.cc:48675 -#, fuzzy, gcc-internal-format -#| msgid "unknown OpenMP directive name in %qs clause argument" +#, gcc-internal-format msgid "unknown OpenMP directive name in %qs attribute argument" -msgstr "okänt OpenMP-direktivnamn i attributargumentet %qs" +msgstr "okänt OpenMP-direktivnamn i klausulargumentet %qs" #: c/c-parser.cc:6762 cp/parser.cc:12359 #, gcc-internal-format @@ -47739,16 +47441,14 @@ msgid "wrong number of arguments to %<__builtin_shuffle%>" msgstr "fel antal argument till %<__builtin_shuffle%>" #: c/c-parser.cc:11851 -#, fuzzy, gcc-internal-format -#| msgid "wrong number of arguments" +#, gcc-internal-format msgid "wrong number of arguments to %qs" -msgstr "fel antal argument" +msgstr "fel antal argument till %qs" #: c/c-parser.cc:11860 -#, fuzzy, gcc-internal-format -#| msgid "%qD does not have integral type" +#, gcc-internal-format msgid "%qs operand not an integral type" -msgstr "%qD har inte heltalstyp" +msgstr "operanden %qs är inte en heltalstyp" #: c/c-parser.cc:12123 cp/parser.cc:6134 #, gcc-internal-format @@ -47756,10 +47456,9 @@ msgid "% may only be used in OpenMP % clause" msgstr "% kan bara användas i en OpenMP %-klausul" #: c/c-parser.cc:12133 -#, fuzzy, gcc-internal-format -#| msgid "ISO C does not support %qs before C2X" +#, gcc-internal-format msgid "ISO C does not support %qs before C23" -msgstr "ISO C stödjer inte %qs före C2X" +msgstr "ISO C stödjer inte %qs före C23" #: c/c-parser.cc:12221 #, gcc-internal-format @@ -47792,10 +47491,9 @@ msgid "ISO C90 forbids compound literals" msgstr "ISO C90 förbjuder sammansatta litteraler" #: c/c-parser.cc:12284 -#, fuzzy, gcc-internal-format -#| msgid "ISO C forbids storage class specifiers in compound literals before C2X" +#, gcc-internal-format msgid "ISO C forbids storage class specifiers in compound literals before C23" -msgstr "ISO C förbjuder lagringsklasspecificerare i sammansatta litteraler före C2X" +msgstr "ISO C förbjuder lagringsklasspecificerare i sammansatta litteraler före C23" #: c/c-parser.cc:12298 #, gcc-internal-format @@ -48036,10 +47734,9 @@ msgid "expected %, %, % or %" msgstr "%, %, % eller % förväntades" #: c/c-parser.cc:15925 cp/parser.cc:39100 -#, fuzzy, gcc-internal-format -#| msgid "expected goto expression" +#, gcc-internal-format msgid "expected constant logical expression" -msgstr "goto-uttryck förväntades" +msgstr "ett konstant logiskt uttryck förväntades" #: c/c-parser.cc:16002 cp/parser.cc:39182 #, gcc-internal-format @@ -48111,10 +47808,9 @@ msgid "expected %, %, %, %, %, %, %, %, %, %, % eller % förväntades" #: c/c-parser.cc:16552 -#, fuzzy, gcc-internal-format -#| msgid "expected %, % or %" +#, gcc-internal-format msgid "expected %, %, % or %" -msgstr "%, % eller % förväntades" +msgstr "%, %, % eller % förväntades" #: c/c-parser.cc:16629 cp/parser.cc:39718 #, gcc-internal-format @@ -48153,10 +47849,9 @@ msgid "% argument needs positive integral constant" msgstr "argumentet till % behöver en positiv heltalskonstant" #: c/c-parser.cc:17059 cp/parser.cc:41829 -#, fuzzy, gcc-internal-format -#| msgid "too many % clauses" +#, gcc-internal-format msgid "too many % clauses" -msgstr "för många %-klausuler" +msgstr "för många %-klausuler" #: c/c-parser.cc:17101 cp/parser.cc:39771 #, gcc-internal-format @@ -48300,16 +47995,14 @@ msgid "too many % modifiers" msgstr "för många %-modifierare" #: c/c-parser.cc:18792 cp/parser.cc:41456 -#, fuzzy, gcc-internal-format -#| msgid "too many % modifiers" +#, gcc-internal-format msgid "too many % modifiers" -msgstr "för många %-modifierare" +msgstr "för många %-modifierare" #: c/c-parser.cc:18800 cp/parser.cc:41467 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp target%> with modifier other than % or % on % clause" +#, gcc-internal-format msgid "% clause with map-type modifier other than %, % or %" -msgstr "%<#pragma omp target%> med en annan modifierare än en % eller % på en %-klausul" +msgstr "en klausul % med en annan avbildningstypsmodifierare än %, % eller %" #: c/c-parser.cc:18838 cp/parser.cc:41507 #, gcc-internal-format @@ -48352,10 +48045,9 @@ msgid "% clause event handle has type %qT rather than %-klausulens händelsehandtag har typen %qT istället för %" #: c/c-parser.cc:19391 cp/parser.cc:42045 -#, fuzzy, gcc-internal-format -#| msgid "expected assumption clause" +#, gcc-internal-format msgid "expected an OpenACC clause" -msgstr "assumption-klausul förväntades" +msgstr "en OpenACC-klausul förväntades" #: c/c-parser.cc:19402 c/c-parser.cc:19767 cp/parser.cc:42056 #: cp/parser.cc:42464 @@ -48374,10 +48066,9 @@ msgid "%qs must be the first clause of %qs" msgstr "%qs måste vara den första klausulen i %qs" #: c/c-parser.cc:19756 cp/parser.cc:42453 -#, fuzzy, gcc-internal-format -#| msgid "expected assumption clause" +#, gcc-internal-format msgid "expected an OpenMP clause" -msgstr "assumption-klausul förväntades" +msgstr "en OpenMP-klausul förväntades" #: c/c-parser.cc:19891 cp/parser.cc:47284 #, gcc-internal-format @@ -48475,16 +48166,14 @@ msgid "%<#pragma acc update%> must contain at least one % or % o msgstr "%<#pragma acc update%> måste innehålla åtminstone en %- eller %- eller %-klausul" #: c/c-parser.cc:20558 -#, fuzzy, gcc-internal-format -#| msgid "variables in %<__regio_symbol%> address space must be declared %" +#, gcc-internal-format msgid "variable %qD used in the % clause must be declared before %qD" -msgstr "variabler i adressrymden %<__regio_symbol%> måste deklareras %" +msgstr "variabeln %qD i %-klausulen måste deklareras före %qD" #: c/c-parser.cc:20562 c/c-parser.cc:20585 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "to be allocated variable declared here" -msgstr "mallparametern %qD deklarerad här" +msgstr "variabeln att allokera deklarerad här" #: c/c-parser.cc:20580 #, gcc-internal-format @@ -48492,10 +48181,9 @@ msgid "variable %qD used in the % clause must not be modified betwee msgstr "variabeln %qD använd i klausulen % får inte ändras mellan deklarationen av %qD och dess direktiv %" #: c/c-parser.cc:20583 -#, fuzzy, gcc-internal-format -#| msgid "defined here" +#, gcc-internal-format msgid "modified here" -msgstr "definierad här" +msgstr "modifierad här" #: c/c-parser.cc:20651 cp/parser.cc:42578 cp/parser.cc:42593 #, gcc-internal-format @@ -48508,22 +48196,19 @@ msgid "% clause allocator expression has type %qT rather than %-klausulens allokeraruttryck har typen %qT istället för %" #: c/c-parser.cc:20692 -#, fuzzy, gcc-internal-format -#| msgid "parameter %qD may not appear in this context" +#, gcc-internal-format msgid "function parameter %qD may not appear as list item in an % directive" -msgstr "parametern %qD får inte förekomma i detta sammanhang" +msgstr "funktionsparametern %qD får inte förekomma som listposter i ett %-direktiv" #: c/c-parser.cc:20699 -#, fuzzy, gcc-internal-format -#| msgid "deduction guide %qD must be declared in the same scope as %qT" +#, gcc-internal-format msgid "% directive must be in the same scope as %qD" -msgstr "härledningsguiden %qD måste deklareras med i samma räckvidd som %qT" +msgstr "direktivet % måste vara i samma räckvidd som %qD" #: c/c-parser.cc:20707 -#, fuzzy, gcc-internal-format -#| msgid "%qD appears more than once in % clauses" +#, gcc-internal-format msgid "%qD already appeared as list item in an % directive" -msgstr "%qD förekommer mer än en gång i %-klausuler" +msgstr "%qD förekom redan som ett listelement i ett %-direktiv" #: c/c-parser.cc:20714 #, gcc-internal-format @@ -48531,16 +48216,14 @@ msgid "% clause required for static variable %qD" msgstr "klausulen % krävs för den statiska variabeln %qD" #: c/c-parser.cc:20721 -#, fuzzy, gcc-internal-format -#| msgid "% clause must specify an allocator here" +#, gcc-internal-format msgid "% clause requires a predefined allocator as %qD is static" -msgstr "%-klausulen måste ange en allokerare här" +msgstr "%-klausulen kräver en fördefinierad allokerare eftersom %qD är statisk" #: c/c-parser.cc:20725 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp allocate%> not yet supported" +#, gcc-internal-format msgid "%<#pragma omp allocate%> for static variables like %qD not yet supported" -msgstr "%<#pragma omp allocate%> stödjs inte ännu" +msgstr "%<#pragma omp allocate%> för statiska variabler som %qD stödjs inte ännu" #: c/c-parser.cc:20876 cp/parser.cc:42758 #, gcc-internal-format @@ -48580,16 +48263,14 @@ msgid "%qs clause requires %qs clause" msgstr "en %qs-klausul behöver en %qs-klausul" #: c/c-parser.cc:21040 cp/parser.cc:42927 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic write%> incompatible with % clause" +#, gcc-internal-format msgid "%<#pragma omp atomic write%> incompatible with % clause implicitly provided by a % directive" -msgstr "%<#pragma omp atomic write%> är inkompatibelt en %-klausul" +msgstr "%<#pragma omp atomic write%> är inkompatibelt med en %-klausul implicit tillhandahållen av ett %-direktiv" #: c/c-parser.cc:21051 cp/parser.cc:42938 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic read%> incompatible with % clause" +#, gcc-internal-format msgid "%<#pragma omp atomic read%> incompatible with % clause implicitly provided by a % directive" -msgstr "%<#pragma omp atomic read%> är inkompatibelt med en %-klausul" +msgstr "%<#pragma omp atomic read%> är inkompatibelt med en %-klausul implicit tillhandahållen av ett %-direktiv" #: c/c-parser.cc:21083 cp/parser.cc:42970 #, gcc-internal-format @@ -48653,10 +48334,9 @@ msgid "% expression is not lvalue expression" msgstr "uttrycket % är inte ett l-värde-uttryck" #: c/c-parser.cc:21845 -#, fuzzy, gcc-internal-format -#| msgid "% expression is not lvalue expression" +#, gcc-internal-format msgid "% expression is not lvalue expression" -msgstr "uttrycket % är inte ett l-värde-uttryck" +msgstr "uttrycket % är inte ett l-värde-uttryck" #: c/c-parser.cc:21851 cp/parser.cc:43744 #, gcc-internal-format @@ -48694,10 +48374,9 @@ msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a stat msgstr "%<[[omp::directive(%s)]]%> måste vara det enda angivna attributet på en sats" #: c/c-parser.cc:22086 cp/parser.cc:44617 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp ordered%> with %qs clause may only be used in compound statements" +#, gcc-internal-format msgid "%<#pragma omp scan%> with zero preceding executable statements" -msgstr "%<#pragma omp ordered%> med %qs-klausul får bara användas i sammansatta satser" +msgstr "%<#pragma omp scan%> med noll föregående körbara satser" #: c/c-parser.cc:22120 cp/parser.cc:44650 #, gcc-internal-format @@ -48710,10 +48389,9 @@ msgid "expected %<#pragma omp scan%>" msgstr "%<#pragma omp scan%> förväntades" #: c/c-parser.cc:22134 cp/parser.cc:44665 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp ordered%> with %qs clause may only be used in compound statements" +#, gcc-internal-format msgid "%<#pragma omp scan%> with zero succeeding executable statements" -msgstr "%<#pragma omp ordered%> med %qs-klausul får bara användas i sammansatta satser" +msgstr "%<#pragma omp scan%> med noll flöljande körbara satser" #: c/c-parser.cc:22252 cp/semantics.cc:10734 cp/semantics.cc:10819 #, gcc-internal-format @@ -48722,10 +48400,9 @@ msgstr "iterationsdeklaration eller initiering förväntades" #: c/c-parser.cc:22340 c/c-parser.cc:22355 cp/parser.cc:45012 #: cp/parser.cc:45027 -#, fuzzy, gcc-internal-format -#| msgid "not enough perfectly nested loops" +#, gcc-internal-format msgid "not enough nested loops" -msgstr "för få perfekt nästade slingor" +msgstr "inte tillräckligt med nästade slingor" #: c/c-parser.cc:22455 cp/parser.cc:45299 #, gcc-internal-format @@ -48813,10 +48490,9 @@ msgid "expected trait selector name" msgstr "trait-väljarnamn förväntades" #: c/c-parser.cc:24542 cp/parser.cc:47860 -#, fuzzy, gcc-internal-format -#| msgid "selector %qs not allowed for context selector set %qs" +#, gcc-internal-format msgid "unknown selector %qs for context selector set %qs" -msgstr "selektorn %qs är inte tillåten för kontextselektormängd %qs" +msgstr "okänd selektor %qs för kontextselektormängden %qs" #: c/c-parser.cc:24570 cp/parser.cc:47889 #, gcc-internal-format @@ -48824,22 +48500,19 @@ msgid "selector %qs does not accept any properties" msgstr "väljaren %qs tar inte några egenskaper" #: c/c-parser.cc:24592 cp/parser.cc:47921 -#, fuzzy, gcc-internal-format -#| msgid "% can only be specified inside a class" +#, gcc-internal-format msgid "% cannot be specified in traits in the %qs trait-selector-set" -msgstr "% kan endast anges inuti en klass" +msgstr "% kan inte anges i egenskaper i trait-selector-set %qs" #: c/c-parser.cc:24601 cp/parser.cc:47931 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be constant integer expression" +#, gcc-internal-format msgid "% argument must be constant integer expression" -msgstr "värdesargument måste vara ett konstant heltalsuttryck" +msgstr "argumentet till % måste vara ett konstant heltalsuttryck" #: c/c-parser.cc:24604 cp/parser.cc:47934 -#, fuzzy, gcc-internal-format -#| msgid "score argument must be non-negative" +#, gcc-internal-format msgid "% argument must be non-negative" -msgstr "värdesargumentet måste vara ickenegativt" +msgstr "argumentet till % måste vara ickenegativt" #: c/c-parser.cc:24645 cp/parser.cc:47980 #, gcc-internal-format @@ -48860,16 +48533,14 @@ msgstr "egenskaper för %-väljare får inte anges i %" #. Currently only the now-deprecated syntax #. from OpenMP 5.0 is supported. #: c/c-parser.cc:24705 cp/parser.cc:48035 fortran/openmp.cc:5891 -#, fuzzy, gcc-internal-format -#| msgid "%<-fpie%> is not supported" +#, gcc-internal-format msgid "% selector is not supported yet" -msgstr "%<-fpie%> stödjs inte" +msgstr "selektorn % stödjs inte ännu" #: c/c-parser.cc:24764 cp/parser.cc:48098 -#, fuzzy, gcc-internal-format -#| msgid "expected trait selector name" +#, gcc-internal-format msgid "expected context selector set name" -msgstr "trait-väljarnamn förväntades" +msgstr "namn på kontextväljare förväntades" #: c/c-parser.cc:24841 cp/parser.cc:48413 #, gcc-internal-format @@ -48912,16 +48583,14 @@ msgid "%qD specified both in declare target % and % or % cla msgstr "%qD angivet både i deklarationsmålets %- och %- eller %-klausuler" #: c/c-parser.cc:25199 cp/parser.cc:48882 -#, fuzzy, gcc-internal-format -#| msgid "directive with only % clause" +#, gcc-internal-format msgid "directive with only % or % clauses" -msgstr "direktiv med endast %-klausul" +msgstr "direktiv med endast %- eller %-klausul" #: c/c-parser.cc:25202 cp/parser.cc:48885 -#, fuzzy, gcc-internal-format -#| msgid "% clause must not be used together with % clause" +#, gcc-internal-format msgid "% clause must specify 'any' when used with an % clause" -msgstr "en %-klausul får inte användas tillsammans med en %-klausul" +msgstr "klausulen % måste ange ”any” när den används med en %-klausul" #: c/c-parser.cc:25251 c/c-parser.cc:25293 cp/parser.cc:48940 #: cp/parser.cc:48987 @@ -49012,10 +48681,9 @@ msgid "expected %, %, % or %" msgstr "%, %, % eller % förväntades" #: c/c-parser.cc:25837 cp/parser.cc:49589 -#, fuzzy, gcc-internal-format -#| msgid "expected %, %, % or %" +#, gcc-internal-format msgid "expected %, %, %, % or %" -msgstr "%, %, % eller % förväntades" +msgstr "%, %, %, % eller % förväntades" #: c/c-parser.cc:25866 cp/parser.cc:49624 #, gcc-internal-format @@ -49219,10 +48887,9 @@ msgid "%<_Complex _BitInt(%d)%> unsupported" msgstr "%<_Complex _BitInt(%d)%> stödjs inte" #: c/c-typeck.cc:1472 -#, fuzzy, gcc-internal-format -#| msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C2X" +#, gcc-internal-format msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C23" -msgstr "otillåten användning av pekare till vektorer med olika kvalificerare i ISO C före C2X" +msgstr "otillåten användning av pekare till vektorer med olika kvalificerare i ISO C före C23" #: c/c-typeck.cc:1476 #, gcc-internal-format @@ -49240,10 +48907,9 @@ msgid "function return types not compatible due to %" msgstr "funktionsreturtyper är inte kompatibla på grund av %" #: c/c-typeck.cc:1905 -#, fuzzy, gcc-internal-format -#| msgid "converting an array compound literal to a pointer is ill-formed in C++" +#, gcc-internal-format msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++" -msgstr "konvertering av en sammansatt vektorlitteral till en pekare är felaktigt i C++" +msgstr "konvertering av en sammansatt vektorlitteral till en pekare medför en hängande pekare i C++" #: c/c-typeck.cc:2599 c/c-typeck.cc:9852 #, gcc-internal-format @@ -49619,10 +49285,9 @@ msgid "pointer to array loses qualifier in conditional expression" msgstr "pekare till vektor tappar kvalificerare i villkorsuttryck" #: c/c-typeck.cc:5665 -#, fuzzy, gcc-internal-format -#| msgid "pointer to array loses qualifier in conditional expression in ISO C before C2X" +#, gcc-internal-format msgid "pointer to array loses qualifier in conditional expression in ISO C before C23" -msgstr "pekare till vektor tappar kvalificerare i villkorsuttryck i ISO C före C2X" +msgstr "pekare till vektor tappar kvalificerare i villkorsuttryck i ISO C före C23" #: c/c-typeck.cc:5670 #, gcc-internal-format @@ -49635,16 +49300,14 @@ msgid "pointer type mismatch in conditional expression" msgstr "pekartyper stämmer inte i villkorsuttryck" #: c/c-typeck.cc:5695 -#, fuzzy, gcc-internal-format -#| msgid "Expected expression type" +#, gcc-internal-format msgid "first expression has type %qT" -msgstr "Uttryckstyp förväntades" +msgstr "första uttrycket har typen %qT" #: c/c-typeck.cc:5696 -#, fuzzy, gcc-internal-format -#| msgid "Expected expression type" +#, gcc-internal-format msgid "second expression has type %qT" -msgstr "Uttryckstyp förväntades" +msgstr "andra uttrycket har typen %qT" #: c/c-typeck.cc:5707 c/c-typeck.cc:5720 #, gcc-internal-format @@ -49720,10 +49383,9 @@ msgid "ISO C forbids casting nonscalar to the same type" msgstr "ISO C förbjuder typkonvertering av ickeskalärer till samma typ" #: c/c-typeck.cc:6199 -#, fuzzy, gcc-internal-format -#| msgid "useless cast to type %q#T" +#, gcc-internal-format msgid "useless cast to type %qT" -msgstr "oanvändbar konvertering till typen %q#T" +msgstr "oanvändbar konvertering till typen %qT" #: c/c-typeck.cc:6219 #, gcc-internal-format @@ -49983,10 +49645,9 @@ msgid "ISO C forbids return between function pointer and %" msgstr "ISO C förbjuder retur mellan funktionspekare och %" #: c/c-typeck.cc:7769 -#, fuzzy, gcc-internal-format -#| msgid "array with qualifier on the element is not qualified before C2X" +#, gcc-internal-format msgid "array with qualifier on the element is not qualified before C23" -msgstr "vektorer med kvalificerare på elementet är inte kvalificerat före C2X" +msgstr "vektorer med kvalificerare på elementet är inte kvalificerat före C23" #: c/c-typeck.cc:7786 #, gcc-internal-format @@ -50275,10 +49936,9 @@ msgid "enum conversion in initialization is invalid in C++" msgstr "enum-konvertering i initiering är ogiltigt i C++" #: c/c-typeck.cc:10834 -#, fuzzy, gcc-internal-format -#| msgid "excess elements in union initializer" +#, gcc-internal-format msgid "excess elements in %qT initializer" -msgstr "överflödiga element i unioninitierare" +msgstr "överflödiga element i initieraren %qT" #: c/c-typeck.cc:10846 c/c-typeck.cc:10923 #, gcc-internal-format @@ -50879,10 +50539,9 @@ msgstr "vektorsektionen har inte en avbildbar typ i %qs-klausulen" #: c/c-typeck.cc:15565 c/c-typeck.cc:15641 c/c-typeck.cc:15677 #: cp/semantics.cc:8326 cp/semantics.cc:8405 cp/semantics.cc:8441 -#, fuzzy, gcc-internal-format -#| msgid "unsupported memory expression:" +#, gcc-internal-format msgid "unsupported map expression %qE" -msgstr "ej stött minnesuttryck:" +msgstr "ej stött avbildningsuttryck %qE" #: c/c-typeck.cc:15605 c/c-typeck.cc:15782 cp/semantics.cc:8367 #: cp/semantics.cc:8585 @@ -51144,16 +50803,14 @@ msgid "invalid type of %<__MEM%> operand" msgstr "ogiltig typ av %<__MEM%>-operand" #: c/gimple-parser.cc:1563 -#, fuzzy, gcc-internal-format -#| msgid "expected constant offset" +#, gcc-internal-format msgid "expected constant offset for %<__MEM%> operand" -msgstr "ett konstant avstånd förväntades" +msgstr "ett konstant avstånd förväntades för operanden till %<__MEM%>" #: c/gimple-parser.cc:1574 -#, fuzzy, gcc-internal-format -#| msgid "invalid type of %<__MEM%> operand" +#, gcc-internal-format msgid "expected constant step for %<__MEM%> operand" -msgstr "ogiltig typ av %<__MEM%>-operand" +msgstr "ett konstant steg som operand till %<__MEM%> förväntades" #: c/gimple-parser.cc:1627 #, gcc-internal-format @@ -51290,10 +50947,9 @@ msgid "%s%#qD (near match)" msgstr "%s%#qD (nära träff)" #: cp/call.cc:3954 -#, fuzzy, gcc-internal-format -#| msgid "%s%#qD (reversed)" +#, gcc-internal-format msgid "%s%#qD (ignored)" -msgstr "%s%#qD (omvänd)" +msgstr "%s%#qD (ignorerad)" #: cp/call.cc:3956 #, gcc-internal-format @@ -51543,16 +51199,14 @@ msgid "enumerated mismatch in conditional expression: %qT vs %qT" msgstr "uppräkningsmissmatch i villkorsuttryck: %qT kontra %qT" #: cp/call.cc:6263 -#, fuzzy, gcc-internal-format -#| msgid "conditional expression between enumeration type %qT and floating-point type %qT is deprecated" +#, gcc-internal-format msgid "conditional expression between enumeration type %qT and floating-point type %qT" -msgstr "villkorsuttryck mellan uppräkningstypen %qT och flyttalstypen %qT bör undvikas" +msgstr "villkorsuttryck mellan uppräkningstypen %qT och flyttalstypen %qT" #: cp/call.cc:6267 -#, fuzzy, gcc-internal-format -#| msgid "conditional expression between floating-point type %qT and enumeration type %qT is deprecated" +#, gcc-internal-format msgid "conditional expression between floating-point type %qT and enumeration type %qT" -msgstr "villkorsuttryck mellan flyttalstypen %qT och uppräkningstypen %qT bör undvikas" +msgstr "villkorsuttryck mellan flyttalstypen %qT och uppräkningstypen %qT" #: cp/call.cc:6271 #, gcc-internal-format @@ -51710,16 +51364,12 @@ msgid "converting to %qH from %qI requires direct-initialization" msgstr "konvertering till %qH från %qI behöver en direktinitiering" #: cp/call.cc:8447 -#, fuzzy -#| msgid "converting to %qH from %qI with greater conversion rank" msgid "ISO C++ does not allow converting to %qH from %qI with greater conversion rank" -msgstr "konvertering till %qH från %qI med en större konverteringsordning" +msgstr "ISO C++ tillåter inte konvertering till %qH från %qI med en större konverteringsordning" #: cp/call.cc:8455 -#, fuzzy -#| msgid "converting to %qH from %qI with unordered conversion ranks" msgid "ISO C++ does not allow converting to %qH from %qI with unordered conversion rank" -msgstr "konvertering till %qH från %qI med oordnad konverteringsordningar" +msgstr "ISO C++ tillåter inte konvertering till %qH från %qI med oordnad konverteringsordningar" #: cp/call.cc:8471 msgid "invalid user-defined conversion from %qH to %qI" @@ -52649,16 +52299,14 @@ msgid "converting overloaded function %qD to type %q#T is ambiguous" msgstr "konvertering av överlagrad funktion %qD till typ %q#T är tvetydig" #: cp/class.cc:8979 -#, fuzzy, 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%>" +#, gcc-internal-format msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function." -msgstr "ISO C++ förbjuder att ta adressen till en okvalificerad eller parentetiserad icke-statisk medlemsfunktion för att skapa en pekare till en medlemsfunktion. Säg %<&%T::%D%>" +msgstr "ISO C++ förbjuder att ta adressen till en okvalificerad eller parentetiserad icke-statisk medlemsfunktion för att skapa en pekare till en explicit objektmedlemsfunktion." #: cp/class.cc:8984 -#, fuzzy, gcc-internal-format -#| msgid "(a pointer to member can only be formed with %<&%E%>)" +#, gcc-internal-format msgid "a pointer to explicit object member function can only be formed with %<&%E%>" -msgstr "(en pekare på medlem kan bara skapas med %<&%E%>)" +msgstr "en pekare på en explicit objektmedlemsfunktion kan bara skapas med %<&%E%>)" #: cp/class.cc:8994 #, gcc-internal-format @@ -52917,16 +52565,14 @@ msgid "% evaluation depth exceeds maximum of %d (use %<-fconstexpr-d msgstr "beräkning av % överskrider maxvärdet på %d (använd %<-fconstexpr-depth=%> för att öka maxvärdet)" #: cp/constexpr.cc:3538 -#, fuzzy, gcc-internal-format -#| msgid "expression %qE is not a constant expression" +#, gcc-internal-format msgid "reference to %qD is not a constant expression" -msgstr "uttrycket %qE är inte ett konstant uttryck" +msgstr "referensen till %qD är inte ett konstant uttryck" #: cp/constexpr.cc:3541 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not a constant expression" +#, gcc-internal-format msgid "pointer to %qD is not a constant expression" -msgstr "%qE är inte ett konstant uttryck" +msgstr "pekaren på %qD är inte ett konstant uttryck" #: cp/constexpr.cc:3547 #, gcc-internal-format @@ -53107,10 +52753,9 @@ msgid "allocated here" msgstr "allokerad här" #: cp/constexpr.cc:5981 -#, fuzzy, gcc-internal-format -#| msgid "Access terminates outside of its parent" +#, gcc-internal-format msgid "accessing %qE outside its lifetime" -msgstr "Åtkomsten slutar utanför sin förälder" +msgstr "åtkomst av %qE utanför sin livstid" #: cp/constexpr.cc:6001 #, gcc-internal-format @@ -53153,34 +52798,29 @@ msgid "%qD does not have integral or enumeration type" msgstr "%qD har inte heltals- eller uppräkningstyp" #: cp/constexpr.cc:6342 -#, fuzzy, gcc-internal-format -#| msgid "use of allocated storage after deallocation in a constant expression" +#, gcc-internal-format msgid "modification of allocated storage after deallocation is not a constant expression" -msgstr "användning av allokerad lagring efter deallokering i ett konstant uttryck" +msgstr "ändring av allokerad lagring efter deallokering är inte ett konstant uttryck" #: cp/constexpr.cc:6351 -#, fuzzy, gcc-internal-format -#| msgid "modification of %qE is not a constant expression" +#, gcc-internal-format msgid "modification of %qE outside its lifetime is not a constant expression" -msgstr "ändring av %qE är inte ett konstant uttryck" +msgstr "ändring av %qE utanför sin livstid är inte ett konstant uttryck" #: cp/constexpr.cc:6358 -#, fuzzy, gcc-internal-format -#| msgid "% is not a constant expression" +#, gcc-internal-format msgid "destroying %qE from outside current evaluation is not a constant expression" -msgstr "en % är inte ett konstant uttryck" +msgstr "att förstöra %qE utanför den nuvarande beräkningen är inte ett konstant uttryck" #: cp/constexpr.cc:6361 -#, fuzzy, gcc-internal-format -#| msgid "modification of %qE is not a constant expression" +#, gcc-internal-format msgid "modification of %qE from outside current evaluation is not a constant expression" -msgstr "ändring av %qE är inte ett konstant uttryck" +msgstr "ändring av %qE från utanför den nuvarande beräkningen är inte ett konstant uttryck" #: cp/constexpr.cc:6488 -#, fuzzy, gcc-internal-format -#| msgid "change of the active member of a union from %qD to %qD during initialization" +#, gcc-internal-format msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20" -msgstr "ändring av den aktiva medlemmen av en union %qD till %qD under initiering" +msgstr "ändring av den aktiva medlemmen av en union %qD till %qD är inte ett konstant uttryck före C++20" #: cp/constexpr.cc:6517 #, gcc-internal-format @@ -53280,28 +52920,24 @@ msgid "conversion from pointer type %qT to arithmetic type %qT in a constant exp msgstr "konvertering från pekartypen %qT till den aritmetiska typen %qT i ett konstant uttryck" #: cp/constexpr.cc:8153 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT" -msgstr "%qE är inte ett konstant uttryck eftersom det har referenser till muterbara delobjekt av %qT" +msgstr "typkonvertering från %qT är inte tillåtet i ett konstant uttryck eftersom den utpekade typen %qT inte liknar %qT" #: cp/constexpr.cc:8160 -#, fuzzy, gcc-internal-format -#| msgid "pointer member %q+D declared here" +#, gcc-internal-format msgid "pointed-to object declared here" -msgstr "pekarmedlemmen %q+D är deklarerad här" +msgstr "utpekat objekt är deklarerat här" #: cp/constexpr.cc:8165 -#, fuzzy, gcc-internal-format -#| msgid "%qs is not a constant expression because %qT is a pointer to member type" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression because %qE does not point to an object" -msgstr "%qs är inte ett konstant uttryck eftersom %qT är en pekare-till-medlem-typ" +msgstr "typkonvertering från %qT är inte tillåtet i ett konstant uttryck eftersom %qE inte pekar på ett objekt" #: cp/constexpr.cc:8177 -#, fuzzy, gcc-internal-format -#| msgid "modifying a const object %qE is not allowed in a constant expression" +#, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression before C++26" -msgstr "ändring av ett const-objekt %qE är inte tillåten i ett konstant uttryck" +msgstr "typkonvertering från %qT är inte tillåtet i ett konstant uttryck före C++26" #: cp/constexpr.cc:8191 #, gcc-internal-format @@ -53375,10 +53011,9 @@ msgid "immediate evaluation returns address of immediate function %qD" msgstr "omedelbar evaluering returnerar adressen till en omedelbar funktion %qD" #: cp/constexpr.cc:8913 -#, fuzzy, gcc-internal-format -#| msgid "immediate evaluation returns address of immediate function %qD" +#, gcc-internal-format msgid "constant evaluation returns address of immediate function %qD" -msgstr "omedelbar evaluering returnerar adressen till en omedelbar funktion %qD" +msgstr "konstantevaluering returnerar adressen till en omedelbar funktion %qD" #: cp/constexpr.cc:9551 rust/backend/rust-constexpr.cc:5667 #, gcc-internal-format @@ -53689,10 +53324,9 @@ msgid " %qT is not an aggregate" msgstr " %qT är inte ett aggregat" #: cp/constraint.cc:3755 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an aggregate" +#, gcc-internal-format msgid " %qT is not an array" -msgstr " %qT är inte ett aggregat" +msgstr " %qT är inte en vektor" #: cp/constraint.cc:3758 #, gcc-internal-format @@ -53705,10 +53339,9 @@ msgid " %qT is not a base of %qT" msgstr " %qT är inte en bas till %qT" #: cp/constraint.cc:3764 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an aggregate" +#, gcc-internal-format msgid " %qT is not a bounded array" -msgstr " %qT är inte ett aggregat" +msgstr " %qT är inte en begränsad vektor" #: cp/constraint.cc:3767 #, gcc-internal-format @@ -53746,10 +53379,9 @@ msgid " %qT is not a final class" msgstr " %qT är inte en slutlig klass" #: cp/constraint.cc:3788 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not a union" +#, gcc-internal-format msgid " %qT is not a function" -msgstr " %qT är inte en union" +msgstr " %qT är inte en funktion" #: cp/constraint.cc:3791 #, gcc-internal-format @@ -53762,22 +53394,19 @@ msgid " %qT is not a literal type" msgstr " %qT är inte en literal typ" #: cp/constraint.cc:3797 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a member template function" +#, gcc-internal-format msgid " %qT is not a member function pointer" -msgstr "%qD är inte en medlemsmallfunktion" +msgstr " %qT är inte en medlemsfunktionspekare" #: cp/constraint.cc:3800 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a member of %qT" +#, gcc-internal-format msgid " %qT is not a member object pointer" -msgstr "%qT är inte en medlem av %qT" +msgstr " %qT är inte en medlemsobjektspekare" #: cp/constraint.cc:3803 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a member of %qT" +#, gcc-internal-format msgid " %qT is not a member pointer" -msgstr "%qT är inte en medlem av %qT" +msgstr " %qT är inte en medlemspekare" #: cp/constraint.cc:3806 #, gcc-internal-format @@ -53795,10 +53424,9 @@ msgid " %qT is not nothrow convertible from %qE" msgstr " %qT är inte nothrow-konvertibel från %qE" #: cp/constraint.cc:3818 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not a POD type" +#, gcc-internal-format msgid " %qT is not an object type" -msgstr " %qT är inte en POD-typ" +msgstr " %qT är inte en objekttyp" #: cp/constraint.cc:3821 #, gcc-internal-format @@ -53816,10 +53444,9 @@ msgid " %qT is not a polymorphic type" msgstr " %qT är inte en polymorf typ" #: cp/constraint.cc:3831 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an enum" +#, gcc-internal-format msgid " %qT is not a reference" -msgstr " %qT är inte en uppräkningstyp" +msgstr " %qT är inte en referens" #: cp/constraint.cc:3834 #, gcc-internal-format @@ -53827,10 +53454,9 @@ msgid " %qT is not the same as %qT" msgstr " %qT är inte en detsamma som %qT" #: cp/constraint.cc:3837 -#, fuzzy, gcc-internal-format -#| msgid " %qT is not an enum" +#, gcc-internal-format msgid " %qT is not a scoped enum" -msgstr " %qT är inte en uppräkningstyp" +msgstr " %qT är inte en enum med räckvidd" #: cp/constraint.cc:3840 #, gcc-internal-format @@ -54242,10 +53868,9 @@ msgid "%qD was promoted to an immediate function because its body contains an im msgstr "%qD befordrades till en omedelbar funktion eftersom dess kropp innehåller ett uttryck %qE som omedelbareskalerar" #: cp/cp-gimplify.cc:539 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a template function" +#, gcc-internal-format msgid "%qD was promoted to an immediate function" -msgstr "%qD är inte en mallfunktion" +msgstr "%qD befordrades till en omedelbar funktion" #: cp/cp-gimplify.cc:1164 #, gcc-internal-format @@ -54253,10 +53878,9 @@ msgid "taking address of an immediate function %qD" msgstr "tar adressen till en omedelbar funktion %qD" #: cp/cp-gimplify.cc:1263 -#, fuzzy, gcc-internal-format -#| msgid "address of a call to %qs is not a constant expression" +#, gcc-internal-format msgid "call to consteval function %qE is not a constant expression" -msgstr "adressen för ett anrop av %qs är inte ett konstant uttryck" +msgstr "anrop av consteval-funktionen %qE är inte ett konstant uttryck" #: cp/cp-gimplify.cc:2002 #, gcc-internal-format @@ -54880,34 +54504,29 @@ msgid "%q#D previously declared here" msgstr "%q#D tidigare deklarerad här" #: cp/decl.cc:2097 -#, fuzzy, gcc-internal-format -#| msgid "method declaration not in @interface context" +#, gcc-internal-format msgid "parameter declaration is not name-independent" -msgstr "metoddeklaration som inte är i @interface-kontext" +msgstr "parameterdeklarationen är inte namnoberoende" #: cp/decl.cc:2102 -#, fuzzy, gcc-internal-format -#| msgid "structured binding declaration set but not used" +#, gcc-internal-format msgid "structured binding at namespace scope is not name-independent" -msgstr "strukturerad bindningsdeklaration satt men inte använd" +msgstr "strukturerad bindning vid namnrymdsräckvidd är inte namnoberoende" #: cp/decl.cc:2106 -#, fuzzy, gcc-internal-format -#| msgid "structured binding has incomplete type %qT" +#, gcc-internal-format msgid "static structured binding is not name-independent" -msgstr "strukturerad bindning har en ofullständig typ %qT" +msgstr "statisk strukturerad bindning är inte namnoberoende" #: cp/decl.cc:2110 -#, fuzzy, gcc-internal-format -#| msgid "structured binding has incomplete type %qT" +#, gcc-internal-format msgid "extern structured binding is not name-independent" -msgstr "strukturerad bindning har en ofullständig typ %qT" +msgstr "extern strukturerad bindning är inte namnoberoende" #: cp/decl.cc:2117 -#, fuzzy, gcc-internal-format -#| msgid "static data member %qD in unnamed class" +#, gcc-internal-format msgid "static data member is not name-independent" -msgstr "statisk datamedlem %qD i namnlös klass" +msgstr "statisk datamedlem är inte namnoberoende" #: cp/decl.cc:2120 #, gcc-internal-format @@ -54915,16 +54534,14 @@ msgid "variable at namespace scope is not name-independent" msgstr "en variabel i namnrymdsräckvidd är inte namnoberoende" #: cp/decl.cc:2123 -#, fuzzy, gcc-internal-format -#| msgid "%qs variable is not a pointer" +#, gcc-internal-format msgid "static variable is not name-independent" -msgstr "variabeln %qs är inte en pekare" +msgstr "statisk variabel är inte namnoberoende" #: cp/decl.cc:2126 -#, fuzzy, gcc-internal-format -#| msgid "environment variable %qs not defined" +#, gcc-internal-format msgid "extern variable is not name-independent" -msgstr "miljövariabeln %qs är inte definierad" +msgstr "extern variabel är inte namnoberoende" #: cp/decl.cc:2138 #, gcc-internal-format @@ -54972,16 +54589,14 @@ msgid "import declared %q#D here" msgstr "importdeklarerad %q#D här" #: cp/decl.cc:2306 cp/decl.cc:16628 -#, fuzzy, gcc-internal-format -#| msgid "conflicting exporting declaration %qD" +#, gcc-internal-format msgid "conflicting exporting for declaration %qD" -msgstr "motstridande exporterande deklaration av %qD" +msgstr "motstridande exporterande för deklaration av %qD" #: cp/decl.cc:2308 cp/decl.cc:16630 -#, fuzzy, gcc-internal-format -#| msgid "previously declared here" +#, gcc-internal-format msgid "previously declared here without exporting" -msgstr "tidigare deklarerad här" +msgstr "tidigare deklarerad här utan att exporteras" #: cp/decl.cc:2335 #, gcc-internal-format @@ -55164,16 +54779,14 @@ msgid " enters % statement" msgstr " går in i %-sats" #: cp/decl.cc:3829 cp/decl.cc:4003 -#, fuzzy, gcc-internal-format -#| msgid "ISO C99 does not support %qE" +#, gcc-internal-format msgid " does not destroy %qD" -msgstr "ISO C99 stödjer inte %qE" +msgstr " förstör inte %qD" #: cp/decl.cc:3831 cp/decl.cc:3986 -#, fuzzy, gcc-internal-format -#| msgid "%s does not take any feature options" +#, gcc-internal-format msgid " does not clean up handled exception" -msgstr "%s tar inte några funktionsflaggor" +msgstr " städar inte upp det hanterade undantaget" #: cp/decl.cc:3922 #, gcc-internal-format @@ -56014,10 +55627,9 @@ msgid "constraints on a non-templated function" msgstr "begränsning av en funktion som inte är en mall" #: cp/decl.cc:10590 -#, fuzzy, gcc-internal-format -#| msgid "friend declaration not in class definition" +#, gcc-internal-format msgid "constrained non-template friend declaration must be a definition" -msgstr "vändeklaration är inte i klassdefinition" +msgstr "begränsad vändeklaration som inte är en mall måste vara en definition" #: cp/decl.cc:10597 #, gcc-internal-format @@ -56080,10 +55692,9 @@ msgid "static member function %qD cannot have cv-qualifier" msgstr "statisk medlemsfunktion %qD kan inte ha cv-kvalificerare" #: cp/decl.cc:10818 -#, fuzzy, gcc-internal-format -#| msgid "static member function %qD cannot have cv-qualifier" +#, gcc-internal-format msgid "explicit object member function %qD cannot have cv-qualifier" -msgstr "statisk medlemsfunktion %qD kan inte ha cv-kvalificerare" +msgstr "explicit objektmedlemsfunktion %qD kan inte ha cv-kvalificerare" #: cp/decl.cc:10823 #, gcc-internal-format @@ -56096,16 +55707,14 @@ msgid "static member function %qD cannot have ref-qualifier" msgstr "statisk medlemsfunktion %qD kan inte ha ref-kvalificerare" #: cp/decl.cc:10826 -#, fuzzy, gcc-internal-format -#| msgid "static member function %qD cannot have ref-qualifier" +#, gcc-internal-format msgid "explicit object member function %qD cannot have ref-qualifier" -msgstr "statisk medlemsfunktion %qD kan inte ha ref-kvalificerare" +msgstr "explicit objektmedlemsfunktion %qD kan inte ha ref-kvalificerare" #: cp/decl.cc:10832 cp/decl.cc:13715 cp/decl.cc:13725 cp/parser.cc:11972 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "explicit object parameter declared here" -msgstr "mallparametern %qD deklarerad här" +msgstr "explicit objektparameter deklarerad här" #: cp/decl.cc:10844 #, gcc-internal-format @@ -56687,31 +56296,27 @@ msgstr "onödiga parenteser i deklaration av %qs" #: cp/decl.cc:13277 #, gcc-internal-format msgid "remove parentheses" -msgstr "ta port parenteser" +msgstr "ta bort parenteser" #: cp/decl.cc:13345 -#, fuzzy, gcc-internal-format -#| msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "explicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>" -msgstr "aliasmallhärledning är endast tillgängligt med %<-std=c++20%> eller %<-std=gnu++20%>" +msgstr "explicita objektmedlemsfunktioner är endast tillgängliga med %<-std=c++23%> eller %<-std=gnu++23%>" #: cp/decl.cc:13359 -#, fuzzy, gcc-internal-format -#| msgid "Function %qs at %L cannot have an initializer" +#, gcc-internal-format msgid "a function type cannot have an explicit object parameter" -msgstr "Funktion %qs vid %L kan inte ha en initierare" +msgstr "en funktionstyp kan inte ha en explicit objektparameter" #: cp/decl.cc:13365 -#, fuzzy, gcc-internal-format -#| msgid "a conversion function cannot have a trailing return type" +#, gcc-internal-format msgid "a pointer to function type cannot have an explicit object parameter" -msgstr "en konverteringsfunktion kan inte ha en avslutande returtyp" +msgstr "en pekare på en funktionstyp kan inte ha en explicit objektparameter" #: cp/decl.cc:13369 -#, fuzzy, gcc-internal-format -#| msgid " member function type %qT is not a valid template argument" +#, gcc-internal-format msgid "a pointer to member function type cannot have an explicit object parameter" -msgstr " medlemsfunktionstypen %qT är inte ett giltigt mallargument" +msgstr "en pekare på en medlemsfunktionstyp kan inte ha en explicit objektparameter" #: cp/decl.cc:13377 #, gcc-internal-format @@ -56719,10 +56324,9 @@ msgid "the type of a pointer to explicit object member function is a regular poi msgstr "typen på en pekare till en explicit objektmedlemsfunktion är en vanlig pekare på en funktionstyp" #: cp/decl.cc:13381 -#, fuzzy, gcc-internal-format -#| msgid "typedef may not be a member function definition" +#, gcc-internal-format msgid "the type of an explicit object member function is a regular function type" -msgstr "typedef får inte vara en medlemsfunktionsdefinition" +msgstr "type på en explicit objektmedlemsfunktion är en normal funktionstyp" #: cp/decl.cc:13402 #, gcc-internal-format @@ -56730,10 +56334,9 @@ msgid "only the first parameter of a member function can be declared as an expli msgstr "endast den första parametern till en medlemsfunktion kan deklareras som en explicit objektparameter" #: cp/decl.cc:13407 -#, fuzzy, gcc-internal-format -#| msgid "template parameter %qD declared here" +#, gcc-internal-format msgid "valid explicit object parameter declared here" -msgstr "mallparametern %qD deklarerad här" +msgstr "giltig explicit objektparameter deklarerad här" #: cp/decl.cc:13411 #, gcc-internal-format @@ -56881,16 +56484,14 @@ msgid "friend function definition %qs cannot have a name qualified with %<%D::%> msgstr "vänfunktionsdefinitionen %qs får inte ha ett namn kvalificerat med %<%D::%>" #: cp/decl.cc:13704 -#, fuzzy, gcc-internal-format -#| msgid "non-member function %qD cannot have cv-qualifier" +#, gcc-internal-format msgid "a non-member function cannot have an explicit object parameter" -msgstr "icke-medlemsfunktion %qD kan inte ha cv-kvalificerare" +msgstr "en icke-medlemsfunktion kan inte ha en explicit objektparameter" #: cp/decl.cc:13712 -#, fuzzy, gcc-internal-format -#| msgid "implicit templates may not be %" +#, gcc-internal-format msgid "an explicit object member function cannot be %" -msgstr "implicita mallar får inte vara %" +msgstr "en explicit objektmedlemsfunktion får inte vara %" #: cp/decl.cc:13722 #, gcc-internal-format @@ -57279,10 +56880,9 @@ msgid "storage class % invalid for function %qs" msgstr "lagringsklassen % är ogiltig för funktionen %qs" #: cp/decl.cc:15015 -#, fuzzy, gcc-internal-format -#| msgid "alignment specified for function %qE" +#, gcc-internal-format msgid "% specifier invalid for function %qs" -msgstr "minnesjustering angiven för funktionen %qE" +msgstr "specificeraren % är ogiltig för funktionen %qs" #: cp/decl.cc:15018 #, gcc-internal-format @@ -57660,8 +57260,7 @@ msgid "duplicate base type %qT invalid" msgstr "upprepat bastyp %qT ogiltig" #: cp/decl.cc:16969 -#, fuzzy, gcc-internal-format -#| msgid "cannot declare %qD in a different module" +#, gcc-internal-format msgid "cannot declare %qD in different module" msgstr "det går inte att deklarera %qD i en annan modul" @@ -59588,10 +59187,9 @@ msgid "unknown header kind %qs" msgstr "okänd huvudsort %qs" #: cp/name-lookup.cc:2856 cp/name-lookup.cc:3932 cp/name-lookup.cc:4029 -#, fuzzy, gcc-internal-format -#| msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "name-independent declarations only available with %<-std=c++2c%> or %<-std=gnu++2c%>" -msgstr "aliasmallhärledning är endast tillgängligt med %<-std=c++20%> eller %<-std=gnu++20%>" +msgstr "namnoberoende deklarationer är endast tillgängliga med %<-std=c++2c%> eller %<-std=gnu++2c%>" #: cp/name-lookup.cc:2887 #, gcc-internal-format @@ -59649,28 +59247,24 @@ msgid "%s %s %p %d" msgstr "%s %s %p %d" #: cp/name-lookup.cc:5101 -#, fuzzy, gcc-internal-format -#| msgid "%q#D does not have external linkage" +#, gcc-internal-format msgid "exporting %q#D that does not have external linkage" -msgstr "%q#D har inte extern länkning" +msgstr "exporterar %q#D som inte har extern länkning" #: cp/name-lookup.cc:5106 -#, fuzzy, gcc-internal-format -#| msgid "%q#D declared here" +#, gcc-internal-format msgid "%q#D declared here with no linkage" -msgstr "%q#D är deklarerad här" +msgstr "%q#D är deklarerad här utan någon länkning" #: cp/name-lookup.cc:5109 -#, fuzzy, gcc-internal-format -#| msgid "%q#D does not have external linkage" +#, gcc-internal-format msgid "%q#D declared here with internal linkage" -msgstr "%q#D har inte extern länkning" +msgstr "%q#D är deklarerad här med intern länkning" #: cp/name-lookup.cc:5112 -#, fuzzy, gcc-internal-format -#| msgid "%q#D declared here" +#, gcc-internal-format msgid "%q#D declared here with module linkage" -msgstr "%q#D är deklarerad här" +msgstr "%q#D är deklarerad här med modullänkning" #: cp/name-lookup.cc:5877 #, gcc-internal-format @@ -59795,10 +59389,9 @@ msgid " %qE" msgstr " %qE" #: cp/name-lookup.cc:7085 -#, fuzzy, gcc-internal-format -#| msgid "% is defined in header %qs; did you forget to %<#include %s%>?" +#, gcc-internal-format msgid "% is defined in header %qs; this is probably fixable by adding %<#include %s%>" -msgstr "% är definierad i huvudet %qs; glömde du %<#include %s%>?" +msgstr "% är definierad i huvudet %qs; detta går förmodligen att lösa genom att lägga till %<#include %s%>" #: cp/name-lookup.cc:7091 #, gcc-internal-format @@ -60378,16 +59971,15 @@ msgid "%<~auto%> only available with %<-std=c++14%> or %<-std=gnu++14%>" msgstr "%<~auto%> är endast tillgängligt med %<-std=c++14%> eller %<-std=gnu++14%>" #: cp/parser.cc:6729 cp/parser.cc:6733 -#, fuzzy, gcc-internal-format -#| msgid "template-id not allowed for destructor" +#, gcc-internal-format msgid "template-id not allowed for destructor in C++20" -msgstr "mall-id är inte tillåtet för destruerare" +msgstr "mall-id är inte tillåtet för destruerare i C++20" +# %qs blir den fixa strängen "< >" #: cp/parser.cc:6735 cp/parser.cc:32577 -#, fuzzy, gcc-internal-format -#| msgid "remove parentheses" +#, gcc-internal-format msgid "remove the %qs" -msgstr "ta port parenteser" +msgstr "ta bort %qs" #: cp/parser.cc:6843 #, gcc-internal-format @@ -60480,10 +60072,9 @@ msgid "two consecutive %<[%> shall only introduce an attribute" msgstr "två på varandra följande %<[%> får bara introducera ett attribut" #: cp/parser.cc:8017 -#, fuzzy, gcc-internal-format -#| msgid "types may not be defined within %<__builtin_offsetof%>" +#, gcc-internal-format msgid "types may not be defined in %<__builtin_classify_type%> calls" -msgstr "typer får inte definieras i %<__builtin_offsetof%>" +msgstr "typer får inte definieras inuti anrop av %<__builtin_classify_type%>" #: cp/parser.cc:8400 cp/parser.cc:8429 #, gcc-internal-format @@ -60712,10 +60303,9 @@ msgid "a lambda with captures may not have an explicit object parameter of an un msgstr "ett lambda med fångster kan inte ha en explicit objektparameter av en orelaterad typ" #: cp/parser.cc:11945 -#, fuzzy, gcc-internal-format -#| msgid "% lambda specifier with lambda capture" +#, gcc-internal-format msgid "% lambda specifier with explicit object parameter" -msgstr "lambdaspecificeraren % med lambdafångst" +msgstr "lambdaspecificeraren % med en explicit objektparameter" #: cp/parser.cc:11954 #, gcc-internal-format @@ -60733,10 +60323,9 @@ msgid "explicit object parameter is already a mutable reference" msgstr "explicit objektparameter är redan en muterbar referens" #: cp/parser.cc:11969 -#, fuzzy, gcc-internal-format -#| msgid "% lambda specifier with lambda capture" +#, gcc-internal-format msgid "% lambda specifier with explicit object parameter" -msgstr "lambdaspecificeraren % med lambdafångst" +msgstr "lambdaspecificeraren % med en explicit objektparameter" #: cp/parser.cc:11987 #, gcc-internal-format @@ -60927,10 +60516,9 @@ msgid "expected jump-statement" msgstr "hoppsats förväntades" #: cp/parser.cc:15090 -#, fuzzy, gcc-internal-format -#| msgid "expected module-name" +#, gcc-internal-format msgid "expected module-partition" -msgstr "modulnamn förväntades" +msgstr "modulpartition förväntades" #: cp/parser.cc:15092 #, gcc-internal-format @@ -61074,10 +60662,9 @@ msgid "invalid initializer for structured binding declaration" msgstr "ogiltig initierare för deklaration av strukturerad bindning" #: cp/parser.cc:16371 -#, fuzzy, gcc-internal-format -#| msgid "DATA array %qs at %L must be specified in a previous declaration" +#, gcc-internal-format msgid "% must be the first specifier in a parameter declaration" -msgstr "DATA-vektor %qs vid %L måste anges i en tidigare deklaration" +msgstr "% måste anges vara den första specificeraren i en parameterdeklaration" #: cp/parser.cc:16394 #, gcc-internal-format @@ -61165,10 +60752,9 @@ msgid "% without a message only available with %<-std=c++17%> or msgstr "% utan ett meddelande är endast tillgänglig med %<-std=c++17%> eller %<-std=gnu++17%>" #: cp/parser.cc:16974 -#, fuzzy, gcc-internal-format -#| msgid "% without a message only available with %<-std=c++17%> or %<-std=gnu++17%>" +#, gcc-internal-format msgid "% with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>" -msgstr "% utan ett meddelande är endast tillgänglig med %<-std=c++17%> eller %<-std=gnu++17%>" +msgstr "% med ett meddelande som inte är en sträng är endast tillgänglig med %<-std=c++2c%> eller %<-std=gnu++2c%>" #: cp/parser.cc:17172 #, gcc-internal-format @@ -61393,10 +60979,9 @@ msgid "use of % in lambda parameter declaration only available with %<-st msgstr "användning av % i lambdaparameterdeklarationer är endast tillgängligt med %<-std=c++14%> eller %<-std=gnu++14%>" #: cp/parser.cc:20356 -#, fuzzy, gcc-internal-format -#| msgid "use of % in parameter declaration only available with %<-std=c++20%> or %<-fconcepts%>" +#, gcc-internal-format msgid "use of % in template argument only available with %<-fconcepts-ts%>" -msgstr "användning av % i parameterdeklarationer är endast tillgängligt med %<-std=c++20%> eller %<-fconcepts%>" +msgstr "användning av % i mallargument är endast tillgängligt med %<-fconcepts-ts%>" #: cp/parser.cc:20360 #, gcc-internal-format @@ -61684,10 +61269,9 @@ msgid "% qualifier outside of function body" msgstr "%-kvalificerare utanför funktionskropp" #: cp/parser.cc:22948 -#, fuzzy, gcc-internal-format -#| msgid "attribute ignored in declaration of %q#T" +#, gcc-internal-format msgid "attributes ignored on % declaration" -msgstr "attribut ignoreras i deklaration av %q#T" +msgstr "attribut ignoreras på en %-deklaration" #: cp/parser.cc:23035 #, gcc-internal-format @@ -61882,16 +61466,14 @@ msgid "types may not be defined in parameter types" msgstr "typer får inte definieras i parametertyper" #: cp/parser.cc:25732 -#, fuzzy, gcc-internal-format -#| msgid "too few template parameter lists in declaration of %qD" +#, gcc-internal-format msgid "% specifier in template parameter declaration" -msgstr "för få mallparameterlistor i deklarationen av %qD" +msgstr "specificeraren % i en mallparameterdeklaration" #: cp/parser.cc:25746 -#, fuzzy, gcc-internal-format -#| msgid "non-parameter %qs cannot be a parameter pack" +#, gcc-internal-format msgid "an explicit object parameter cannot be a function parameter pack" -msgstr "icke-parameter %qs kan inte vara ett parameterpaket" +msgstr "en explicit objektparameter kan inte vara ett funktionsparameterpaket" #: cp/parser.cc:25838 #, gcc-internal-format @@ -61914,10 +61496,9 @@ msgid "parameter pack cannot have a default argument" msgstr "parameterpaket kan inte ha ett standardargument" #: cp/parser.cc:25887 -#, fuzzy, gcc-internal-format -#| msgid "template parameter pack cannot have a default argument" +#, gcc-internal-format msgid "an explicit object parameter may not have a default argument" -msgstr "mallparameterpaket kan inte ha ett standardargument" +msgstr "en explicit objektparameter får inte ha ett standardargument" #: cp/parser.cc:26011 #, gcc-internal-format @@ -62199,10 +61780,9 @@ msgid "expected attribute before %<...%>" msgstr "attribut förväntades före %<...%>" #: cp/parser.cc:30214 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute without arguments on a non-prototype" +#, gcc-internal-format msgid "attribute with no arguments contains no parameter packs" -msgstr "attributet %qE utan argument på en icke-prototyp" +msgstr "attribut utan några argument innehåller inga parameterpaket" #: cp/parser.cc:30260 #, gcc-internal-format @@ -62285,10 +61865,9 @@ msgid "too many template-parameter-lists" msgstr "för många mallparameterlistor" #: cp/parser.cc:32576 -#, fuzzy, gcc-internal-format -#| msgid "template-id not allowed for destructor" +#, gcc-internal-format msgid "template-id not allowed for constructor in C++20" -msgstr "mall-id är inte tillåtet för destruerare" +msgstr "mall-id är inte tillåtet för konstruerare i C++20" #: cp/parser.cc:32687 #, gcc-internal-format @@ -62702,10 +62281,9 @@ msgid "% expression must be integral" msgstr "%-uttryck måste vara heltal" #: cp/parser.cc:39638 -#, fuzzy, gcc-internal-format -#| msgid "expected %, % or %" +#, gcc-internal-format msgid "expected %, %, %" -msgstr "%, % eller % förväntades" +msgstr "%, %, % förväntades" #: cp/parser.cc:40029 #, gcc-internal-format @@ -76400,12 +75978,12 @@ msgstr "%s kan inte innehålla en slinga i mellanliggande kod vid %L" #: fortran/openmp.cc:10256 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP directive in intervening code at %L" -msgstr "" +msgstr "%s kan inte innehålla OpenMP-direktiv i mellanliggande kod vid %L" #: fortran/openmp.cc:10268 fortran/openmp.cc:10294 #, gcc-internal-format, gfc-internal-format msgid "%s cannot contain OpenMP API call in intervening code at %L" -msgstr "" +msgstr "%s kan inte innehålla OpenMP-API-anrop i mellanliggande kod vid %L" #: fortran/openmp.cc:10822 #, gcc-internal-format, gfc-internal-format @@ -76467,7 +76045,7 @@ msgstr "%s-slingans slututtryck är inte i kanonisk form vid %L" #: fortran/openmp.cc:10906 #, gcc-internal-format, gfc-internal-format msgid "%s loop end expression at %L uses variable bound in intervening code" -msgstr "" +msgstr "%s-slingans slututtryck vid %L använder variabel begränsning i mellanliggande kod" #: fortran/openmp.cc:10913 #, gcc-internal-format, gfc-internal-format @@ -76482,7 +76060,7 @@ msgstr "%s-slingeinkrementet är inte i kanonisk form vid %L" #: fortran/openmp.cc:10926 #, gcc-internal-format, gfc-internal-format msgid "%s loop increment expression at %L uses variable bound in intervening code" -msgstr "" +msgstr "%s-slingans ökningsuttryck vid %L använder variabel begränsning i mellanliggande kod" #. Parse error, can't recover from this. #: fortran/openmp.cc:10944 @@ -76500,7 +76078,7 @@ msgstr "%s !$ACC LOOP-slingor är inte perfekt nästade vid %L" #: fortran/openmp.cc:10963 #, gcc-internal-format, gfc-internal-format msgid "%s inner loops must be perfectly nested with REDUCTION INSCAN clause at %L" -msgstr "" +msgstr "%s intre slingor måste vara perfekt nästade med en REDUCTION INSCAN-klausul vid %L" #: fortran/openmp.cc:11190 fortran/openmp.cc:11203 #, gcc-internal-format, gfc-internal-format @@ -76565,12 +76143,12 @@ msgstr "NAME %qs är felaktigt i !ACC$ ROUTINE ( NAME ) vid %L" #: fortran/openmp.cc:11539 #, gcc-internal-format, gfc-internal-format msgid "!$OMP TARGET region at %L with a nested TEAMS at %L may not contain any other statement, declaration or directive outside of the single TEAMS construct" -msgstr "" +msgstr "!$OMP TARGET-regionen vid %L med en nästad TEAMS vid %L får inte innehålla någon annan sats, deklaration eller direktiv utanför den ensamma TEAMS-konstruktionen" #: fortran/openmp.cc:11543 #, gcc-internal-format, gfc-internal-format msgid "!$OMP TARGET region at %L with a nested TEAMS may not contain any other statement, declaration or directive outside of the single TEAMS construct" -msgstr "" +msgstr "!$OMP TARGET-regionen vid %L med en nästad TEAMS får inte innehålla någon annan sats, deklaration eller direktiv utanför den ensamma TEAMS-konstruktionen" #: fortran/openmp.cc:11637 #, gcc-internal-format, gfc-internal-format @@ -76750,17 +76328,17 @@ msgstr "Oklassificerbart OpenACC-direktiv vid %C" #: fortran/parse.cc:817 #, gcc-internal-format msgid "%qs directive at %L must either have a variable argument or, if associated with an ALLOCATE stmt, must be preceded by an executable statement or OpenMP construct" -msgstr "" +msgstr "direktivet %qs vid %L måste antingen ha ett variabelt argument eller, om det är associerat med en ALLOCATE-sats, måste föregås av en körbar sats eller OpenMP-konstruktion" #: fortran/parse.cc:829 #, gcc-internal-format msgid "Structure-component expression at %L in %qs directive not permitted in declarative directive; as directive associated with an ALLOCATE stmt it must be preceded by an executable statement or OpenMP construct" -msgstr "" +msgstr "Strukturkomponentuttrycket vid %L i %qs-direktivet är inte tillåtet i ett deklarativt direktiv; som ett diretiv associerat med en ALLOCATE-sats måste det föregås av en körbar sats eller OpenMP-konstruktion" #: fortran/parse.cc:855 #, gcc-internal-format msgid "%qs directive at %L associated with an ALLOCATE stmt must be preceded by an executable statement or OpenMP construct; note the variables in the list all have the allocatable or pointer attribute" -msgstr "" +msgstr "direktivet %qs vid %L associerat med en ALLOCATE-sats måste föregås av en körbar sats eller OpenMP-konstruktion; observera att variablerna i listan har alla attributet allokerbar eller pekare" #: fortran/parse.cc:1023 fortran/parse.cc:1325 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -76776,7 +76354,7 @@ msgstr "Oklassificerbart OpenMP-direktiv vid %C" #: fortran/parse.cc:1312 #, gcc-internal-format msgid "OpenMP ERROR directive at %L with % clause in a PURE procedure" -msgstr "" +msgstr "Ett direktiv OpenMP ERROR vid %L med klausulen % i en PURE-procedur" #: fortran/parse.cc:1440 #, gcc-internal-format, gfc-internal-format @@ -77186,7 +76764,7 @@ msgstr "Överflödig !$ACC END LOOP vid %C" #: fortran/parse.cc:5809 #, gcc-internal-format, gfc-internal-format msgid "%s statements at %L and %L have both no list item but only one may" -msgstr "" +msgstr "%s-satserna vid %L och %L har saknar båda listelement men bara en får det" #: fortran/parse.cc:5829 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -81450,7 +81028,7 @@ msgstr "Fördröjd typparameter stödjs inte ännu" #: fortran/trans-decl.cc:5224 #, gcc-internal-format msgid "Sorry, !$OMP allocate for COMMON block variable %qs at %L not supported" -msgstr "" +msgstr "Ledsen, !$OMP allocate för COMMON-blocksvariabeln %qs vid %L stödjs inte" #: fortran/trans-decl.cc:5231 #, fuzzy, gcc-internal-format @@ -81617,22 +81195,22 @@ msgstr "ohanterat uttryck" #: fortran/trans-openmp.cc:4100 #, gcc-internal-format msgid "% clause with traits and memory spaces" -msgstr "" +msgstr "klausulen % med egenskaper och minnesutrymmen" #: fortran/trans-openmp.cc:5024 #, gcc-internal-format msgid "% at %L requires %<-fopenmp-allocators%>" -msgstr "" +msgstr "% vid %L kräver %<-fopenmp-allocators%>" #: fortran/trans-openmp.cc:5027 #, gcc-internal-format msgid "All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>" -msgstr "" +msgstr "Alla filer som kan avallokera en sådan variabel måste kompileras med %<-fopenmp-allocators%>" #: fortran/trans-openmp.cc:5030 #, gcc-internal-format msgid "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator" -msgstr "" +msgstr "Detta inkluderar explicit DEALLOCATE, omallokering eller inbyggd tilldelning, INTENT(OUT) för allokerbara attrappargument och omallokering av allokerbara komponenter allokerade med en OpenMP-allokerare" #: fortran/trans-openmp.cc:5607 fortran/trans-openmp.cc:5627 #, fuzzy, gcc-internal-format @@ -81869,7 +81447,7 @@ msgstr "ogiltig hexadecimalsiffra" #: go/gofrontend/embed.cc:605 #, gcc-internal-format msgid "unrecognized string escape" -msgstr "okänd stringflyktföljd" +msgstr "okänd strängflyktföljd" #: go/gofrontend/embed.cc:626 #, gcc-internal-format @@ -82217,12 +81795,12 @@ msgstr "argumentet till CAP är inte en konstant eller variabel av typen CHAR" #: m2/gm2-gcc/m2expr.cc:4029 #, gcc-internal-format msgid "constant literal %qs exceeds internal ZTYPE range" -msgstr "" +msgstr "den konstanta literalen %qs överskrider det interna intervallet för ZTYPE" #: m2/gm2-gcc/m2expr.cc:3949 #, gcc-internal-format msgid "constant literal %qs contains %qc, expected 0 or 1" -msgstr "" +msgstr "den konstanta literalen %qs innehåller %qc, 0 eller 1 förväntades" #: m2/gm2-gcc/m2expr.cc:3964 m2/gm2-gcc/m2expr.cc:3976 #, fuzzy, gcc-internal-format @@ -83398,7 +82976,7 @@ msgstr "oanvänt namn %qE" #: rust/resolve/rust-ast-resolve-expr.cc:167 #, gcc-internal-format, gfc-internal-format msgid "are you trying to break %s? how dare you?" -msgstr "" +msgstr "försöker du göra sönder %s? hur vågar du?" #~ msgid "to generate dependencies you must specify '-fcpp' " #~ msgstr "för att generera beroenden måste man ange ”-fcpp” " diff --git a/gcc/predict.cc b/gcc/predict.cc index c1c48bf3df1e..43e3694cb420 100644 --- a/gcc/predict.cc +++ b/gcc/predict.cc @@ -4035,7 +4035,7 @@ estimate_bb_frequencies () /* Scaling frequencies up to maximal profile count may result in frequent overflows especially when inlining loops. - Small scalling results in unnecesary precision loss. Stay in + Small scaling results in unnecesary precision loss. Stay in the half of the (exponential) range. */ freq_max = (sreal (1) << (profile_count::n_bits / 2)) / freq_max; if (freq_max < 16) diff --git a/gcc/profile-count.h b/gcc/profile-count.h index b3d776475e2c..6bbd476cb7fe 100644 --- a/gcc/profile-count.h +++ b/gcc/profile-count.h @@ -910,7 +910,8 @@ struct GTY(()) profile_count profile_count ret; gcc_checking_assert (compatible_p (other)); - ret.m_val = m_val + other.m_val; + uint64_t ret_val = m_val + other.m_val; + ret.m_val = MIN (ret_val, max_count); ret.m_quality = MIN (m_quality, other.m_quality); return ret; } @@ -929,7 +930,8 @@ struct GTY(()) profile_count else { gcc_checking_assert (compatible_p (other)); - m_val += other.m_val; + uint64_t ret_val = m_val + other.m_val; + m_val = MIN (ret_val, max_count); m_quality = MIN (m_quality, other.m_quality); } return *this; @@ -957,7 +959,7 @@ struct GTY(()) profile_count else { gcc_checking_assert (compatible_p (other)); - m_val = m_val >= other.m_val ? m_val - other.m_val: 0; + m_val = m_val >= other.m_val ? m_val - other.m_val : 0; m_quality = MIN (m_quality, other.m_quality); } return *this; @@ -1127,7 +1129,9 @@ struct GTY(()) profile_count if (!initialized_p ()) return uninitialized (); profile_count ret; - ret.m_val = RDIV (m_val * prob, REG_BR_PROB_BASE); + uint64_t tmp; + safe_scale_64bit (m_val, prob, REG_BR_PROB_BASE, &tmp); + ret.m_val = tmp; ret.m_quality = MIN (m_quality, ADJUSTED); return ret; } diff --git a/gcc/profile.cc b/gcc/profile.cc index e256545252e6..2b90e6cc5105 100644 --- a/gcc/profile.cc +++ b/gcc/profile.cc @@ -69,6 +69,17 @@ along with GCC; see the file COPYING3. If not see #include "profile.h" +struct condcov; +struct condcov *find_conditions (struct function*); +size_t cov_length (const struct condcov*); +array_slice cov_blocks (struct condcov*, size_t); +array_slice cov_masks (struct condcov*, size_t); +array_slice cov_maps (struct condcov* cov, size_t n); +void cov_free (struct condcov*); +size_t instrument_decisions (array_slice, size_t, + array_slice, + array_slice); + /* Map from BBs/edges to gcov counters. */ vec bb_gcov_counts; hash_map *edge_gcov_counts; @@ -100,6 +111,7 @@ static int total_num_passes; static int total_num_times_called; static int total_hist_br_prob[20]; static int total_num_branches; +static int total_num_conds; /* Forward declarations. */ static void find_spanning_tree (struct edge_list *); @@ -1155,6 +1167,12 @@ read_thunk_profile (struct cgraph_node *node) the flow graph that are needed to reconstruct the dynamic behavior of the flow graph. This data is written to the gcno file for gcov. + When FLAG_PROFILE_CONDITIONS is nonzero, this functions instruments the + edges in the control flow graph to track what conditions are evaluated to in + order to determine what conditions are covered and have an independent + effect on the outcome (modified condition/decision coverage). This data is + written to the gcno file for gcov. + When FLAG_BRANCH_PROBABILITIES is nonzero, this function reads auxiliary information from the gcda file containing edge count information from previous executions of the function being compiled. In this case, the @@ -1173,6 +1191,7 @@ branch_prob (bool thunk) struct edge_list *el; histogram_values values = histogram_values (); unsigned cfg_checksum, lineno_checksum; + bool output_to_file; total_num_times_called++; @@ -1397,10 +1416,18 @@ branch_prob (bool thunk) /* Write the data from which gcov can reconstruct the basic block graph and function line numbers (the gcno file). */ + output_to_file = false; if (coverage_begin_function (lineno_checksum, cfg_checksum)) { gcov_position_t offset; + /* The condition coverage needs a deeper analysis to identify expressions + of conditions, which means it is not yet ready to write to the gcno + file. It will write its entries later, but needs to know if it do it + in the first place, which is controlled by the return value of + coverage_begin_function. */ + output_to_file = true; + /* Basic block flags */ offset = gcov_write_tag (GCOV_TAG_BLOCKS); gcov_write_unsigned (n_basic_blocks_for_fn (cfun)); @@ -1514,29 +1541,65 @@ branch_prob (bool thunk) remove_fake_edges (); + if (condition_coverage_flag || profile_arc_flag) + gimple_init_gcov_profiler (); + + if (condition_coverage_flag) + { + struct condcov *cov = find_conditions (cfun); + gcc_assert (cov); + const size_t nconds = cov_length (cov); + total_num_conds += nconds; + + if (coverage_counter_alloc (GCOV_COUNTER_CONDS, 2 * nconds)) + { + gcov_position_t offset {}; + if (output_to_file) + offset = gcov_write_tag (GCOV_TAG_CONDS); + + for (size_t i = 0; i != nconds; ++i) + { + array_slice expr = cov_blocks (cov, i); + array_slice masks = cov_masks (cov, i); + array_slice maps = cov_maps (cov, i); + gcc_assert (expr.is_valid ()); + gcc_assert (masks.is_valid ()); + gcc_assert (maps.is_valid ()); + + size_t terms = instrument_decisions (expr, i, maps, masks); + if (output_to_file) + { + gcov_write_unsigned (expr.front ()->index); + gcov_write_unsigned (terms); + } + } + if (output_to_file) + gcov_write_length (offset); + } + cov_free (cov); + } + /* For each edge not on the spanning tree, add counting code. */ if (profile_arc_flag && coverage_counter_alloc (GCOV_COUNTER_ARCS, num_instrumented)) { unsigned n_instrumented; - gimple_init_gcov_profiler (); - n_instrumented = instrument_edges (el); gcc_assert (n_instrumented == num_instrumented); if (flag_profile_values) instrument_values (values); - - /* Commit changes done by instrumentation. */ - gsi_commit_edge_inserts (); } free_aux_for_edges (); values.release (); free_edge_list (el); + /* Commit changes done by instrumentation. */ + gsi_commit_edge_inserts (); + coverage_end_function (lineno_checksum, cfg_checksum); if (flag_branch_probabilities && (profile_status_for_fn (cfun) == PROFILE_READ)) @@ -1669,6 +1732,7 @@ init_branch_prob (void) total_num_passes = 0; total_num_times_called = 0; total_num_branches = 0; + total_num_conds = 0; for (i = 0; i < 20; i++) total_hist_br_prob[i] = 0; } @@ -1708,5 +1772,7 @@ end_branch_prob (void) (total_hist_br_prob[i] + total_hist_br_prob[19-i]) * 100 / total_num_branches, 5*i, 5*i+5); } + fprintf (dump_file, "Total number of conditions: %d\n", + total_num_conds); } } diff --git a/gcc/rtl-ssa/accesses.h b/gcc/rtl-ssa/accesses.h index c57b8a8b7b52..7d2916d00c28 100644 --- a/gcc/rtl-ssa/accesses.h +++ b/gcc/rtl-ssa/accesses.h @@ -358,7 +358,7 @@ class use_info : public access_info use_info *next_any_insn_use () const; // Return the next use by a debug instruction, or null if none. - // This is only valid if if is_in_debug_insn (). + // This is only valid if is_in_debug_insn (). use_info *next_debug_insn_use () const; // Return the previous use by a phi node in the list, or null if none. diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog index b37ca0e56f43..c77fc4e57b40 100644 --- a/gcc/rust/ChangeLog +++ b/gcc/rust/ChangeLog @@ -1,3 +1,7 @@ +2024-04-09 Christophe Lyon + + * Make-lang.in (rust.install-dvi, rust.install-html): New rules. + 2024-03-04 Mark Wielaard * lang.opt.urls: Regenerate. diff --git a/gcc/rust/Make-lang.in b/gcc/rust/Make-lang.in index bb36063d1a73..75393d866dd2 100644 --- a/gcc/rust/Make-lang.in +++ b/gcc/rust/Make-lang.in @@ -382,6 +382,8 @@ selftest-rust-valgrind: $(RUST_SELFTEST_DEPS) # should have dependencies on info files that should be installed. rust.install-info: +rust.install-dvi: +rust.install-html: rust.install-pdf: # Install man pages for the front end. This target should ignore errors. diff --git a/gcc/sched-deps.cc b/gcc/sched-deps.cc index 5034e664e5ea..4c6682450491 100644 --- a/gcc/sched-deps.cc +++ b/gcc/sched-deps.cc @@ -1735,7 +1735,7 @@ add_insn_mem_dependence (class deps_desc *deps, bool read_p, insn_node = alloc_INSN_LIST (insn, *insn_list); *insn_list = insn_node; - if (sched_deps_info->use_cselib) + if (sched_deps_info->use_cselib && MEM_P (mem)) { mem = shallow_copy_rtx (mem); XEXP (mem, 0) = cselib_subst_to_values_from_insn (XEXP (mem, 0), @@ -2458,6 +2458,25 @@ sched_analyze_1 (class deps_desc *deps, rtx x, rtx_insn *insn) FIRST_STACK_REG); } #endif + if (!deps->readonly && regno == STACK_POINTER_REGNUM) + { + /* Please see PR114115. We have insn modifying memory on the stack + and not addressed by stack pointer and we have insn reserving the + stack space. If we move the insn modifying memory before insn + reserving the stack space, we can change memory out of the red + zone. Even worse, some optimizations (e.g. peephole) can add + insns using temporary stack slots before insn reserving the stack + space but after the insn modifying memory. This will corrupt the + modified memory. Therefore we treat insn changing the stack as + reading unknown memory. This will create anti-dependence. We + don't need to treat the insn as writing memory because GCC by + itself does not generate code reading undefined stack memory. */ + if ((deps->pending_read_list_length + deps->pending_write_list_length) + >= param_max_pending_list_length + && !DEBUG_INSN_P (insn)) + flush_pending_lists (deps, insn, true, true); + add_insn_mem_dependence (deps, true, insn, dest); + } } else if (MEM_P (dest)) { @@ -2498,10 +2517,11 @@ sched_analyze_1 (class deps_desc *deps, rtx x, rtx_insn *insn) pending_mem = deps->pending_read_mems; while (pending) { - if (anti_dependence (pending_mem->element (), t) - && ! sched_insns_conditions_mutex_p (insn, pending->insn ())) - note_mem_dep (t, pending_mem->element (), pending->insn (), - DEP_ANTI); + rtx mem = pending_mem->element (); + if (REG_P (mem) + || (anti_dependence (mem, t) + && ! sched_insns_conditions_mutex_p (insn, pending->insn ()))) + note_mem_dep (t, mem, pending->insn (), DEP_ANTI); pending = pending->next (); pending_mem = pending_mem->next (); @@ -2637,12 +2657,10 @@ sched_analyze_2 (class deps_desc *deps, rtx x, rtx_insn *insn) pending_mem = deps->pending_read_mems; while (pending) { - if (read_dependence (pending_mem->element (), t) - && ! sched_insns_conditions_mutex_p (insn, - pending->insn ())) - note_mem_dep (t, pending_mem->element (), - pending->insn (), - DEP_ANTI); + rtx mem = pending_mem->element (); + if (MEM_P (mem) && read_dependence (mem, t) + && ! sched_insns_conditions_mutex_p (insn, pending->insn ())) + note_mem_dep (t, mem, pending->insn (), DEP_ANTI); pending = pending->next (); pending_mem = pending_mem->next (); @@ -3026,8 +3044,7 @@ sched_analyze_insn (class deps_desc *deps, rtx x, rtx_insn *insn) while (pending) { if (! sched_insns_conditions_mutex_p (insn, pending->insn ())) - add_dependence (insn, pending->insn (), - REG_DEP_OUTPUT); + add_dependence (insn, pending->insn (), REG_DEP_OUTPUT); pending = pending->next (); pending_mem = pending_mem->next (); } @@ -3036,10 +3053,10 @@ sched_analyze_insn (class deps_desc *deps, rtx x, rtx_insn *insn) pending_mem = deps->pending_read_mems; while (pending) { - if (MEM_VOLATILE_P (pending_mem->element ()) + rtx mem = pending_mem->element (); + if (MEM_P (mem) && MEM_VOLATILE_P (mem) && ! sched_insns_conditions_mutex_p (insn, pending->insn ())) - add_dependence (insn, pending->insn (), - REG_DEP_OUTPUT); + add_dependence (insn, pending->insn (), REG_DEP_OUTPUT); pending = pending->next (); pending_mem = pending_mem->next (); } diff --git a/gcc/sched-int.h b/gcc/sched-int.h index 4df092013e91..85b1ddb13efc 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -471,7 +471,9 @@ class deps_desc /* An INSN_LIST containing all insns with pending read operations. */ rtx_insn_list *pending_read_insns; - /* An EXPR_LIST containing all MEM rtx's which are pending reads. */ + /* An EXPR_LIST containing all MEM rtx's which are pending reads. The list + can contain stack pointer instead of memory. This is a special case (see + sched-deps.cc::sched_analyze_1). */ rtx_expr_list *pending_read_mems; /* An INSN_LIST containing all insns with pending write operations. */ diff --git a/gcc/selftest.h b/gcc/selftest.h index 49fed5bebac9..3bddaf1c3228 100644 --- a/gcc/selftest.h +++ b/gcc/selftest.h @@ -371,6 +371,18 @@ extern int num_passes; ::selftest::fail (SELFTEST_LOCATION, desc_); \ SELFTEST_END_STMT +/* Like ASSERT_NE, but treat LOC as the effective location of the + selftest. */ + +#define ASSERT_NE_AT(LOC, VAL1, VAL2) \ + SELFTEST_BEGIN_STMT \ + const char *desc_ = "ASSERT_NE (" #VAL1 ", " #VAL2 ")"; \ + if ((VAL1) != (VAL2)) \ + ::selftest::pass ((LOC), desc_); \ + else \ + ::selftest::fail ((LOC), desc_); \ + SELFTEST_END_STMT + /* Evaluate VAL1 and VAL2 and compare them with maybe_ne, calling ::selftest::pass if they might be non-equal, ::selftest::fail if they are known to be equal. */ diff --git a/gcc/symtab.cc b/gcc/symtab.cc index 4c7e3c135caf..3b018ab3ea21 100644 --- a/gcc/symtab.cc +++ b/gcc/symtab.cc @@ -1369,6 +1369,98 @@ symtab_node::verify (void) timevar_pop (TV_CGRAPH_VERIFY); } +/* Return true and set *DATA to true if NODE is an ifunc resolver. */ + +static bool +check_ifunc_resolver (cgraph_node *node, void *data) +{ + if (node->ifunc_resolver) + { + bool *is_ifunc_resolver = (bool *) data; + *is_ifunc_resolver = true; + return true; + } + return false; +} + +static bitmap ifunc_ref_map; + +/* Return true if any caller of NODE is an ifunc resolver. */ + +static bool +is_caller_ifunc_resolver (cgraph_node *node) +{ + bool is_ifunc_resolver = false; + + for (cgraph_edge *e = node->callers; e; e = e->next_caller) + { + /* Return true if caller is known to be an IFUNC resolver. */ + if (e->caller->called_by_ifunc_resolver) + return true; + + /* Check for recursive call. */ + if (e->caller == node) + continue; + + /* Skip if it has been visited. */ + unsigned int uid = e->caller->get_uid (); + if (!bitmap_set_bit (ifunc_ref_map, uid)) + continue; + + if (is_caller_ifunc_resolver (e->caller)) + { + /* Return true if caller is an IFUNC resolver. */ + e->caller->called_by_ifunc_resolver = true; + return true; + } + + /* Check if caller's alias is an IFUNC resolver. */ + e->caller->call_for_symbol_and_aliases (check_ifunc_resolver, + &is_ifunc_resolver, + true); + if (is_ifunc_resolver) + { + /* Return true if caller's alias is an IFUNC resolver. */ + e->caller->called_by_ifunc_resolver = true; + return true; + } + } + + return false; +} + +/* Check symbol table for callees of IFUNC resolvers. */ + +void +symtab_node::check_ifunc_callee_symtab_nodes (void) +{ + symtab_node *node; + + bitmap_obstack_initialize (NULL); + ifunc_ref_map = BITMAP_ALLOC (NULL); + + FOR_EACH_SYMBOL (node) + { + cgraph_node *cnode = dyn_cast (node); + if (!cnode) + continue; + + unsigned int uid = cnode->get_uid (); + if (bitmap_bit_p (ifunc_ref_map, uid)) + continue; + bitmap_set_bit (ifunc_ref_map, uid); + + bool is_ifunc_resolver = false; + cnode->call_for_symbol_and_aliases (check_ifunc_resolver, + &is_ifunc_resolver, true); + if (is_ifunc_resolver || is_caller_ifunc_resolver (cnode)) + cnode->called_by_ifunc_resolver = true; + } + + BITMAP_FREE (ifunc_ref_map); + bitmap_obstack_release (NULL); +} + /* Verify symbol table for internal consistency. */ DEBUG_FUNCTION void diff --git a/gcc/system.h b/gcc/system.h index ab29fc197764..1028dcb1eb3c 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -1302,6 +1302,12 @@ void gcc_stablesort_r (void *, size_t, size_t, sort_r_cmp_fn *, void *data); #define NULL nullptr #endif +/* Workaround clang on PowerPC which has vec_step as reserved keyword + rather than function-like macro defined in . See PR114369. */ +#if defined(__clang__) && defined(__powerpc__) +#define vec_step vec_step_ +#endif + /* Return true if STR string starts with PREFIX. */ inline bool diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fce619c24d10..2fe3d61ace06 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,2447 @@ +2024-04-14 Nathaniel Shead + + PR c++/106820 + * g++.dg/modules/pr106820_a.H: New test. + * g++.dg/modules/pr106820_b.C: New test. + +2024-04-12 Andrew Carlotti + + * gcc.target/aarch64/cpunative/info_24: Include lrcpc and ilrcpc. + +2024-04-12 Marek Polacek + + PR c++/109966 + * g++.dg/cpp1y/nsdmi-aggr20.C: New test. + * g++.dg/cpp1y/nsdmi-aggr21.C: New test. + +2024-04-12 Will Schmidt + Peter Bergner + + PR target/101865 + * gcc.target/powerpc/predefine-p7-novsx.c: New test. + * gcc.target/powerpc/predefine-p8-noaltivec-novsx.c: New test. + * gcc.target/powerpc/predefine-p8-noaltivec.c: New test. + * gcc.target/powerpc/predefine-p8-novsx.c: New test. + * gcc.target/powerpc/predefine-p8-pragma-vsx.c: New test. + * gcc.target/powerpc/predefine-p9-novsx.c: New test. + +2024-04-12 Patrick Palka + + PR c++/99426 + * g++.dg/modules/merge-17.h: New test. + * g++.dg/modules/merge-17_a.H: New test. + * g++.dg/modules/merge-17_b.C: New test. + * g++.dg/modules/xtreme-header-7_a.H: New test. + * g++.dg/modules/xtreme-header-7_b.C: New test. + +2024-04-12 Jason Merrill + Patrick Palka + + PR c++/113141 + * g++.dg/conversion/ref12.C: New test. + +2024-04-12 Jason Merrill + Patrick Palka + + DR 1996 + PR c++/113141 + * g++.dg/cpp0x/initlist-ref1.C: New test. + * g++.dg/cpp0x/initlist-ref2.C: New test. + * g++.dg/cpp0x/initlist-ref3.C: New test. + +2024-04-12 Jakub Jelinek + + PR c++/114691 + * g++.dg/ext/pr114691.C: New test. + +2024-04-12 Patrick Palka + + PR c++/114393 + * g++.dg/cpp2a/lambda-targ2a.C: New test. + +2024-04-12 Jakub Jelinek + + PR c++/114426 + * g++.dg/cpp2a/pr114426.C: New test. + * g++.dg/cpp2a/constexpr-dtor16.C: New test. + +2024-04-12 Andrew Pinski + + PR tree-optimization/114666 + * gcc.c-torture/execute/bitfld-signed1-1.c: New test. + +2024-04-12 Richard Sandiford + + * gcc.target/aarch64/sme/acle-asm/zero_mask_za.c (zero_mask_za_ab) + (zero_mask_za_d7, zero_mask_za_bf): Expect a list of .d tiles instead + of a mixture. + +2024-04-12 Stefan Schulze Frielinghaus + + * gcc.dg/tree-ssa/range-sincos.c: Xfail for s390. + * gcc.dg/tree-ssa/vrp-float-abs-1.c: Dito. + +2024-04-12 Patrick Palka + + PR c++/114393 + PR c++/107457 + PR c++/93595 + * g++.dg/cpp2a/lambda-targ2.C: New test. + * g++.dg/cpp2a/lambda-targ3.C: New test. + * g++.dg/cpp2a/lambda-targ4.C: New test. + +2024-04-12 Jakub Jelinek + + PR sanitizer/114687 + * gcc.dg/asan/pr114687.c: New test. + +2024-04-12 Stefan Schulze Frielinghaus + + * gcc.dg/tree-ssa/loop-interchange-16.c: Prevent loop unrolling + of the innermost loop. + +2024-04-12 Pan Li + + PR target/114639 + * gcc.target/riscv/pr114639-1.c: New test. + * gcc.target/riscv/pr114639-2.c: New test. + * gcc.target/riscv/pr114639-3.c: New test. + * gcc.target/riscv/pr114639-4.c: New test. + +2024-04-11 David Faust + + * gcc.dg/debug/btf/btf-bitfields-4.c: Add two new checks. + +2024-04-11 Andre Vieira (lists) + + * gcc.target/aarch64/bitfield-bitint-abi-align16.c (g1, g8, g16, g1p, g8p, + g16p): Remove unnecessary sbfx. + * gcc.target/aarch64/bitfield-bitint-abi-align8.c (g1, g8, g16, g1p, g8p, + g16p): Likewise. + +2024-04-11 Andrew Carlotti + + * g++.target/aarch64/mv-1.C: New test. + +2024-04-11 Andrew Carlotti + + * gcc.target/aarch64/cpunative/native_cpu_21.c: Reorder features. + * gcc.target/aarch64/cpunative/native_cpu_22.c: Ditto. + +2024-04-11 Patrick Palka + + PR c++/114303 + * g++.dg/cpp1z/constexpr-if-lambda6.C: New test. + +2024-04-11 Jakub Jelinek + + PR middle-end/110027 + * gcc.dg/asan/pr110027.c: New test. + +2024-04-11 Richard Biener + + PR middle-end/114681 + * gcc.misc-tests/gcov-pr114681.c: New testcase. + +2024-04-11 Jakub Jelinek + + PR c++/114409 + * g++.dg/ext/pr114409-2.C: New test. + +2024-04-11 Pan Li + + * g++.target/riscv/rvv/base/pr109244.C: Remove deprecated + -Wno-psabi option. + * g++.target/riscv/rvv/base/pr109535.C: Ditto. + * gcc.target/riscv/rvv/autovec/fixed-vlmax-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress-6.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-6.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive_run-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive_run-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge-6.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge-7.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-6.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-7.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-6.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-7.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-6.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-7.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-1u.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-2u.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-3u.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-4u.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-run.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-runu.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-4.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-run.c: Ditto. + +2024-04-11 Pan Li + + PR target/114639 + * g++.target/riscv/rvv/base/pr114639-1.C: New test. + * gcc.target/riscv/rvv/base/pr114639-1.c: New test. + +2024-04-11 Indu Bhagat + + * gcc.dg/debug/btf/btf-bitfields-4.c: Update the vlen check. + * gcc.dg/debug/btf/btf-struct-2.c: Check that member named 'f' + with void data type is emitted. + +2024-04-11 Indu Bhagat + + PR debug/112878 + * gcc.dg/debug/ctf/ctf-bitfields-5.c: New test. + +2024-04-10 Hans-Peter Nilsson + + Revert: + 2024-04-05 Hans-Peter Nilsson + + * gcc.target/cris/pr93372-2.c: Tweak scan-assembler + checks to cover recent combine improvement. + +2024-04-10 Marek Polacek + + PR target/114606 + * gcc.target/i386/fhardened-1.c: New test. + * gcc.target/i386/fhardened-2.c: New test. + +2024-04-10 David Malcolm + + * c-c++-common/analyzer/out-of-bounds-pr114472.c: New test. + +2024-04-10 David Malcolm + + * c-c++-common/analyzer/memset-1.c: Clarify some comments. + +2024-04-10 David Malcolm + + * gcc.dg/plugin/copy_from_user-1.c: Add missing directives for an + analyzer test. + * gcc.dg/plugin/taint-CVE-2011-0521-1-fixed.c: Add missing + -fanalyzer to options. + * gcc.dg/plugin/taint-CVE-2011-0521-1.c: Likewise. + * gcc.dg/plugin/taint-CVE-2011-0521-2-fixed.c: Likewise. + (dvb_usercopy): Add default case to avoid complaints about NULL + derefs. + * gcc.dg/plugin/taint-CVE-2011-0521-2.c: Likewise. + * gcc.dg/plugin/taint-CVE-2011-0521-3-fixed.c: Add missing + -fanalyzer to options. + * gcc.dg/plugin/taint-CVE-2011-0521-3.c: Likewise. Drop + xfail. + +2024-04-10 Harald Anlauf + + PR fortran/106500 + * gfortran.dg/c_sizeof_6.f90: Remove wrong dg-error. + * gfortran.dg/sizeof_2.f90: Adjust pattern. + * gfortran.dg/c_f_pointer_tests_9.f90: New test. + * gfortran.dg/c_sizeof_7.f90: New test. + +2024-04-10 Richard Biener + + PR tree-optimization/114672 + * gcc.dg/torture/pr114672.c: New testcase. + +2024-04-10 Andre Vieira + + * gcc.target/aarch64/bitint-alignments.c: New test. + * gcc.target/aarch64/bitint-args.c: New test. + * gcc.target/aarch64/bitint-sizes.c: New test. + * gcc.target/aarch64/bitfield-bitint-abi.h: New header. + * gcc.target/aarch64/bitfield-bitint-abi-align16.c: New test. + * gcc.target/aarch64/bitfield-bitint-abi-align8.c: New test. + +2024-04-10 Jakub Jelinek + + PR c++/114462 + * g++.dg/cpp26/trivial-infinite-loop1.C: New test. + * g++.dg/cpp26/trivial-infinite-loop2.C: New test. + * g++.dg/cpp26/trivial-infinite-loop3.C: New test. + +2024-04-10 Kewen Lin + + PR testsuite/114662 + * gcc.dg/lto/pr113359-2_0.c: Use unsigned long long instead of + unsigned long. + * gcc.dg/lto/pr113359-2_1.c: Likewise. + +2024-04-10 Nathaniel Shead + + PR c++/104040 + * g++.dg/modules/pr104040_a.C: New test. + * g++.dg/modules/pr104040_b.C: New test. + +2024-04-10 Nathaniel Shead + + PR c++/99377 + * g++.dg/modules/pr99377-3_a.H: New test. + * g++.dg/modules/pr99377-3_b.C: New test. + * g++.dg/modules/pr99377-3_c.C: New test. + * g++.dg/modules/pr99377-3_d.C: New test. + +2024-04-09 David Faust + + PR testsuite/114642 + * gcc.dg/debug/btf/btf-datasec-3.c: Make test more robust on different + architectures. + +2024-04-09 Juergen Christ + + * gcc.target/s390/vector/vec-expand-replicate.c: New test. + +2024-04-09 David Faust + + PR debug/114608 + * gcc.dg/debug/btf/btf-datasec-1.c: Check bts_offset symbol references + only for BPF target. + * gcc.dg/debug/btf/btf-datasec-2.c: Likewise. + * gcc.dg/debug/btf/btf-pr106773.c: Likewise. + +2024-04-09 Paul Thomas + + PR fortran/114535 + * gfortran.dg/pr114535d.f90: New test. + * gfortran.dg/pr114535iv.f90: Additional source. + +2024-04-09 Paul Thomas + + PR fortran/113956 + * gfortran.dg/pr113956.f90: New test. + +2024-04-09 Jørgen Kvalsvik + + PR gcov-profile/114601 + * gcc.misc-tests/gcov-pr114601.c: New test. + +2024-04-09 Jakub Jelinek + + PR target/114576 + * gcc.target/i386/aes-pr114576.c: New test. + +2024-04-09 Yang Yujie + + PR target/113233 + * lib/target-supports.exp: Define condition loongarch_sx_as. + * gcc.dg/lto/pr113233_0.c: New test. + +2024-04-09 Jørgen Kvalsvik + + PR middle-end/114599 + * gcc.misc-tests/gcov-19.c: New test. + +2024-04-09 Jakub Jelinek + + PR c++/114580 + * g++.dg/cpp2a/is-constant-evaluated15.C: New test. + +2024-04-09 Jakub Jelinek + + PR middle-end/114628 + * gcc.dg/bitint-105.c: New test. + +2024-04-09 H.J. Lu + + PR target/114587 + * gcc.target/i386/apx-3.c: Likewise. + +2024-04-09 Kewen Lin + + PR testsuite/114614 + * gcc.misc-tests/gcov-20.c: Add effective target check + profile_update_atomic. + +2024-04-09 Kewen Lin + Andrew Pinski + + PR target/88309 + * gcc.target/powerpc/pr88309.c: New test. + +2024-04-09 Gaius Mulley + + PR modula2/114648 + * gm2/cpp/default/pass/AdvParse.def: New test. + * gm2/cpp/default/pass/AdvParse.mod: New test. + * gm2/cpp/default/pass/cpp-default-pass.exp: New test. + +2024-04-08 Thomas Schwinge + + * gcc.target/gcn/cond_fmaxnm_1.c: Specify + '--param=gcn-preferred-vectorization-factor=64'. + * gcc.target/gcn/cond_fmaxnm_2.c: Likewise. + * gcc.target/gcn/cond_fmaxnm_3.c: Likewise. + * gcc.target/gcn/cond_fmaxnm_4.c: Likewise. + * gcc.target/gcn/cond_fmaxnm_5.c: Likewise. + * gcc.target/gcn/cond_fmaxnm_6.c: Likewise. + * gcc.target/gcn/cond_fmaxnm_7.c: Likewise. + * gcc.target/gcn/cond_fmaxnm_8.c: Likewise. + * gcc.target/gcn/cond_fminnm_1.c: Likewise. + * gcc.target/gcn/cond_fminnm_2.c: Likewise. + * gcc.target/gcn/cond_fminnm_3.c: Likewise. + * gcc.target/gcn/cond_fminnm_4.c: Likewise. + * gcc.target/gcn/cond_fminnm_5.c: Likewise. + * gcc.target/gcn/cond_fminnm_6.c: Likewise. + * gcc.target/gcn/cond_fminnm_7.c: Likewise. + * gcc.target/gcn/cond_fminnm_8.c: Likewise. + * gcc.target/gcn/cond_shift_3.c: Likewise. + * gcc.target/gcn/cond_shift_4.c: Likewise. + * gcc.target/gcn/cond_shift_8.c: Likewise. + * gcc.target/gcn/cond_shift_9.c: Likewise. + * gcc.target/gcn/cond_smax_1.c: Likewise. + * gcc.target/gcn/cond_smin_1.c: Likewise. + * gcc.target/gcn/cond_umax_1.c: Likewise. + * gcc.target/gcn/cond_umin_1.c: Likewise. + * gcc.target/gcn/simd-math-1.c: Likewise. + * gcc.target/gcn/simd-math-5-char.c: Likewise. + * gcc.target/gcn/simd-math-5-long.c: Likewise. + * gcc.target/gcn/simd-math-5-short.c: Likewise. + * gcc.target/gcn/simd-math-5.c: Likewise. + * gcc.target/gcn/smax_1.c: Likewise. + * gcc.target/gcn/smin_1.c: Likewise. + * gcc.target/gcn/umax_1.c: Likewise. + * gcc.target/gcn/umin_1.c: Likewise. + +2024-04-08 Thomas Schwinge + + * lib/target-supports.exp (check_effective_target_lra): Add + comment. + (check_effective_target_asm_goto_with_outputs): New. + * gcc.c-torture/compile/asmgoto-2.c: Use it. + * gcc.c-torture/compile/asmgoto-5.c: Likewise. + * gcc.c-torture/compile/asmgoto-6.c: Likewise. + * gcc.c-torture/compile/pr98096.c: Likewise. + * gcc.dg/pr100590.c: Likewise. + * gcc.dg/pr107385.c: Likewise. + * gcc.dg/pr108095.c: Likewise. + * gcc.dg/pr97954.c: Likewise. + * gcc.dg/torture/pr100329.c: Likewise. + * gcc.dg/torture/pr100398.c: Likewise. + * gcc.dg/torture/pr100519.c: Likewise. + * gcc.dg/torture/pr110422.c: Likewise. + * gcc.dg/pr110079.c: Special-case nvptx target. + +2024-04-08 Tobias Burnus + + PR libfortran/114304 + * gfortran.dg/pr114304-2.f90: New test. + +2024-04-08 Martin Jambor + + PR ipa/113359 + * gcc.dg/lto/pr113359-1_0.c: New. + * gcc.dg/lto/pr113359-1_1.c: Likewise. + * gcc.dg/lto/pr113359-2_0.c: Likewise. + * gcc.dg/lto/pr113359-2_1.c: Likewise. + * gcc.dg/lto/pr113359-3_0.c: Likewise. + * gcc.dg/lto/pr113359-3_1.c: Likewise. + * gcc.dg/lto/pr113359-4_0.c: Likewise. + * gcc.dg/lto/pr113359-4_1.c: Likewise. + * gcc.dg/lto/pr113359-5_0.c: Likewise. + * gcc.dg/lto/pr113359-5_1.c: Likewise. + +2024-04-08 Martin Jambor + + PR ipa/113907 + * gcc.dg/lto/pr113907_0.c: New. + * gcc.dg/lto/pr113907_1.c: Likewise. + * gcc.dg/lto/pr113907_2.c: Likewise. + +2024-04-08 Richard Sandiford + + PR target/114607 + * gcc.target/aarch64/sve/acle/asm/sudot_s32.c: New test. + +2024-04-08 Tatsuyuki Ishi + + * gcc.target/riscv/tls_1.x: Add TLSDESC GD test case. + * gcc.target/riscv/tlsdesc.c: Same as above. + +2024-04-08 Jakub Jelinek + + PR target/114605 + * gcc.dg/pr114605.c: New test. + +2024-04-08 Swinney, Jonathan + + * gcc.target/aarch64/advsimd-intrinsics/vld1x4.c: Exit with a nonzero + code if the test fails. + +2024-04-08 Richard Biener + + PR tree-optimization/114624 + * gcc.dg/torture/pr114624.c: New testcase. + +2024-04-08 Pan Li + + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-7.c: Adjust + the error message for v extension. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-8.c: Ditto. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-1.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-10.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-2.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-3.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-4.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-5.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-6.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-7.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-8.c: New test. + * gcc.target/riscv/rvv/base/intrinsic_required_ext-9.c: New test. + +2024-04-08 Pan Li + + * gcc.target/riscv/rvv/base/pr109479-1.c: Adjust the existing test + scenarios and add new error check tests. + * gcc.target/riscv/rvv/base/pr109479-2.c: Ditto. + * gcc.target/riscv/rvv/base/pr109479-3.c: Ditto. + * gcc.target/riscv/rvv/base/pr109479-4.c: Diito. + * gcc.target/riscv/rvv/base/pr109479-5.c: Diito. + * gcc.target/riscv/rvv/base/pr109479-6.c: Diito. + * gcc.target/riscv/rvv/base/user-10.c: Ditto. + * gcc.target/riscv/rvv/base/user-12.c: Ditto. + * gcc.target/riscv/rvv/base/user-13.c: Ditto. + * gcc.target/riscv/rvv/base/user-14.c: Ditto. + * gcc.target/riscv/rvv/base/user-15.c: Ditto. + * gcc.target/riscv/rvv/base/user-2.c: Ditto. + * gcc.target/riscv/rvv/base/user-3.c: Ditto. + * gcc.target/riscv/rvv/base/user-5.c: Ditto. + * gcc.target/riscv/rvv/base/user-6.c: Ditto. + * gcc.target/riscv/rvv/base/user-9.c: Ditto. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-10.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-11.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-12.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-13.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-14.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-15.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-16.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-17.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-18.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-19.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-20.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-21.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-22.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-23.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-24.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-25.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-26.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-27.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-28.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-29.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-30.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-31.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-32.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-33.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-34.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-35.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-36.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-37.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-38.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-39.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-40.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-41.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-42.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-43.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-44.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-45.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-46.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-47.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-48.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-49.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-50.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-51.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-52.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-53.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-9.c: New test. + +2024-04-06 Gaius Mulley + + PR modula2/114617 + * gm2/iso/const/pass/iso-const-pass.exp: New test. + +2024-04-06 Jerry DeLisle + + PR libfortran/114304 + PR libfortran/105473 + * gfortran.dg/pr105473.f90: Modify to verify new error message. + * gfortran.dg/pr114304.f90: New test. + +2024-04-06 Jørgen Kvalsvik + + PR middle-end/114599 + * gcc.misc-tests/gcov-pr114599.c: New test. + +2024-04-06 Jørgen Kvalsvik + + * gcc.misc-tests/gcov-19.c: Remove test. + +2024-04-05 Iain Sandoe + + * lib/scanasm.exp: Add 'LB*' to the local labels that are + ignored for Darwin. + +2024-04-05 Marek Polacek + + PR c++/91079 + DR 1881 + * g++.dg/ext/is_std_layout5.C: New test. + +2024-04-05 Patrick O'Neill + Martin Jambor + + PR ipa/113964 + * gcc.dg/ipa/pr114247.c: New test. + +2024-04-05 Richard Sandiford + + PR target/114603 + * gcc.target/aarch64/sve/acle/general/cnot_1.c: New test. + +2024-04-05 Marek Polacek + + PR c++/111132 + * g++.dg/cpp0x/constexpr-redeclaration3.C: New test. + * g++.dg/cpp0x/constexpr-redeclaration4.C: New test. + +2024-04-05 Jakub Jelinek + + PR tree-optimization/114566 + * gcc.target/i386/avx512f-pr114566.c: New test. + +2024-04-05 Martin Uecker + + Revert: + 2024-04-02 Martin Uecker + + PR c/114361 + * gcc.dg/pr114361.c: New test. + * gcc.dg/c23-tag-incomplete-1.c: New test. + * gcc.dg/c23-tag-incomplete-2.c: New test. + +2024-04-05 Jakub Jelinek + + * gdc.dg/dg.exp: Prune gcov*.d from the list of tests to run. + * gdc.dg/gcov.exp: Update copyright years. + +2024-04-05 Hans-Peter Nilsson + + * gcc.target/cris/pr93372-2.c: Tweak scan-assembler + checks to cover recent combine improvement. + +2024-04-05 Hans-Peter Nilsson + + * gcc.dg/debug/btf/btf-datasec-1.c: Adjust pattern for targets with + symbols having a leading underscore. + +2024-04-04 centurion + + PR c++/114377 + * g++.dg/cpp2a/class-deduction-alias19.C: New test. + +2024-04-04 Martin Jambor + + PR ipa/111571 + * gcc.dg/ipa/pr111571.c: New test. + +2024-04-04 Vladimir N. Makarov + + PR rtl-optimization/114415 + * gcc.target/i386/pr114415.c: New test. + +2024-04-04 H.J. Lu + + PR target/114587 + * gcc.target/i386/apx-2.c: New test. + +2024-04-04 Jørgen Kvalsvik + + * gdc.dg/gcov.exp: New test. + * gdc.dg/gcov1.d: New test. + +2024-04-04 Jørgen Kvalsvik + + * lib/gcov.exp: Add condition coverage test function. + * g++.dg/gcov/gcov-18.C: New test. + * gcc.misc-tests/gcov-19.c: New test. + * gcc.misc-tests/gcov-20.c: New test. + * gcc.misc-tests/gcov-21.c: New test. + * gcc.misc-tests/gcov-22.c: New test. + * gcc.misc-tests/gcov-23.c: New test. + +2024-04-04 Richard Sandiford + + PR target/114577 + * gcc.target/aarch64/sve/acle/general/pr114577_1.c: New test. + * gcc.target/aarch64/sve/acle/general/pr114577_2.c: Likewise. + +2024-04-04 Richard Biener + + PR tree-optimization/114485 + * gcc.dg/vect/pr114485.c: New testcase. + +2024-04-04 Jakub Jelinek + + PR c++/114537 + * g++.dg/cpp2a/bit-cast16.C: New test. + +2024-04-04 Jakub Jelinek + + PR tree-optimization/114555 + * gcc.dg/bitint-103.c: New test. + * gcc.dg/bitint-104.c: New test. + +2024-04-04 Richard Biener + + PR tree-optimization/114551 + * gcc.dg/torture/pr114551.c: New testcase. + +2024-04-03 H.J. Lu + + PR tree-optimization/114115 + * gcc.dg/pr114115.c: New test. + +2024-04-03 Jakub Jelinek + + PR middle-end/114552 + * gcc.c-torture/execute/pr114552.c: New test. + +2024-04-03 Jiahao Xu + + * gcc.target/loongarch/vector/lsx/lsx-abs.c: New test. + +2024-04-02 Martin Uecker + + PR c/114361 + * gcc.dg/pr114361.c: New test. + * gcc.dg/c23-tag-incomplete-1.c: New test. + * gcc.dg/c23-tag-incomplete-2.c: New test. + +2024-04-02 Marek Polacek + + PR c++/114479 + * g++.dg/ext/is_array.C: Extend. + +2024-04-02 Marek Polacek + + PR c++/103825 + * g++.dg/cpp0x/enum44.C: New test. + +2024-04-02 Jason Merrill + + PR c++/114561 + PR c++/114562 + * g++.dg/conversion/ref10.C: New test. + * g++.dg/conversion/ref11.C: New test. + +2024-04-02 Paul Thomas + + PR fortran/106999 + * gfortran.dg/pr106999.f90: New test. + +2024-04-02 Paul Thomas + + PR fortran/112407 + * gfortran.dg/pr112407a.f90: New test. + * gfortran.dg/pr112407b.f90: New test. + +2024-04-02 Iain Sandoe + + PR testsuite/114034 + * g++.dg/gcov/gcov-dump-1.C: Remove extra -lgcov. + * g++.dg/gcov/gcov-dump-2.C: Likewise. + +2024-04-02 Iain Sandoe + + PR testsuite/114036 + * gcc.misc-tests/gcov-14.c: Allow for 'Foo' to be undefined + on Darwin link lines. + +2024-04-02 Iain Sandoe + + * g++.dg/modules/bad-mapper-1.C: Update expected test output + for earlier Darwin. + +2024-04-02 mengqinggang + Lulu Cheng + Xi Ruoyao + + * gcc.target/loongarch/cmodel-extreme-1.c: Add -mtls-dialect=trad. + * gcc.target/loongarch/cmodel-extreme-2.c: Ditto. + * gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c: Ditto. + * gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c: + Ditto. + * gcc.target/loongarch/func-call-medium-1.c: Ditto. + * gcc.target/loongarch/func-call-medium-2.c: Ditto. + * gcc.target/loongarch/func-call-medium-3.c: Ditto. + * gcc.target/loongarch/func-call-medium-4.c: Ditto. + * gcc.target/loongarch/tls-extreme-macro.c: Ditto. + * gcc.target/loongarch/tls-gd-noplt.c: Ditto. + * gcc.target/loongarch/explicit-relocs-auto-extreme-tls-desc.c: New test. + * gcc.target/loongarch/explicit-relocs-auto-tls-desc.c: New test. + * gcc.target/loongarch/explicit-relocs-extreme-tls-desc.c: New test. + * gcc.target/loongarch/explicit-relocs-tls-desc.c: New test. + +2024-04-01 Gaius Mulley + + PR modula2/114548 + * gm2/iso/const/fail/expression.mod: New test. + * gm2/iso/const/fail/iso-const-fail.exp: New test. + * gm2/iso/const/fail/testabs.mod: New test. + * gm2/iso/const/fail/testaddadr.mod: New test. + * gm2/iso/const/fail/testcap.mod: New test. + * gm2/iso/const/fail/testcap2.mod: New test. + * gm2/iso/const/fail/testchr.mod: New test. + * gm2/iso/const/fail/testchr2.mod: New test. + * gm2/iso/const/fail/testcmplx.mod: New test. + * gm2/iso/const/fail/testfloat.mod: New test. + * gm2/iso/const/fail/testim.mod: New test. + * gm2/iso/const/fail/testint.mod: New test. + * gm2/iso/const/fail/testlength.mod: New test. + * gm2/iso/const/fail/testodd.mod: New test. + * gm2/iso/const/fail/testord.mod: New test. + * gm2/iso/const/fail/testre.mod: New test. + * gm2/iso/const/fail/testtrunc.mod: New test. + * gm2/iso/const/fail/testval.mod: New test. + * gm2/iso/const/pass/constbool.mod: New test. + * gm2/iso/const/pass/constbool2.mod: New test. + * gm2/iso/const/pass/constbool3.mod: New test. + +2024-04-01 Jason Merrill + + * g++.dg/conversion/pr16333.C: Change dg-warning to dg-message. + * g++.dg/cpp0x/constexpr-48324.C + * g++.dg/other/pr94326.C + * g++.dg/warn/Wreturn-local-addr-2.C + * g++.old-deja/g++.jason/warning8.C: Likewise. + * g++.dg/cpp1y/auto-fn6.C: Check that others don't complain. + * g++.dg/warn/Wreturn-local-addr-5.C: Expect error in C++26. + +2024-03-31 Pan Li + + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-7.c: + Adjust test dg-error. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-8.c: + Ditto. + +2024-03-29 Guillaume Gomez + + * jit.dg/test-pointer_size.c: New file. + +2024-03-29 Christophe Lyon + + * gcc.target/aarch64/cpunative/native_cpu_24.c: Fix GCC_CPUINFO. + +2024-03-29 Thomas Schwinge + + * lib/target-supports.exp (check_effective_target_vect_long_mult): + Enable for GCN. + +2024-03-29 Thomas Schwinge + + * lib/target-supports.exp + (check_effective_target_vect_hw_misalign): Enable for GCN. + (check_effective_target_vect_element_align): Adjust. + +2024-03-29 Thomas Schwinge + + * lib/target-supports.exp + (check_effective_target_vect_early_break) + (check_effective_target_vect_early_break_hw): Enable for GCN. + +2024-03-29 Harald Anlauf + + PR fortran/50410 + * gfortran.dg/data_initialized_4.f90: New test. + +2024-03-29 Paul Thomas + + PR fortran/110987 + * gfortran.dg/finalize_56.f90: New test. + +2024-03-29 Paul Thomas + + PR fortran/113885 + * gfortran.dg/finalize_54.f90: New test. + * gfortran.dg/finalize_55.f90: New test. + +2024-03-29 Xi Ruoyao + + * gcc.dg/vect/vect-neg-zero.c: New test. + +2024-03-28 John David Anglin + + PR analyzer/111289 + * c-c++-common/analyzer/stdarg-pr111289-int.c: Don't include + . + +2024-03-28 Jason Merrill + + PR c++/100667 + * g++.dg/ext/is_constructible8.C: New test. + +2024-03-28 Harald Anlauf + + PR fortran/114474 + * gfortran.dg/data_pointer_3.f90: New test. + +2024-03-28 Vineet Gupta + + * gcc.target/riscv/rvv/vtype-call-clobbered.c: New Test. + +2024-03-28 Gaius Mulley <(no_default)> + + PR modula2/114517 + * gm2/cpp/fail/hashfirstcolumn2.mod: New test. + * gm2/imports/fail/imports-fail.exp: New test. + * gm2/imports/fail/localmodule2.mod: New test. + * gm2/imports/run/pass/localmodule.mod: New test. + +2024-03-28 Jakub Jelinek + + PR tree-optimization/112303 + * gcc.c-torture/compile/pr112303.c: New test. + +2024-03-28 Maxim Kuvyrkov + + PR testsuite/114307 + * gcc.dg/vect/vect-cond-reduc-in-order-2-signed-zero.c: Remove dg-run. + * gcc.dg/vect/complex/complex-operations-run.c: Likewise. + * gcc.dg/vect/pr113576.c: Remove dg-run. Use dg-additional-options for + test-specific flags. + * gcc.dg/vect/gimplefe-40.c: Use dg-additional-options for + test-specific flags. + * gcc.dg/vect/gimplefe-41.c: Likewise. + * gcc.dg/vect/pr101145inf.c: Likewise. + * gcc.dg/vect/pr101145inf_1.c: Likewise. + * gcc.dg/vect/pr108316.c: Likewise. + * gcc.dg/vect/pr109011-1.c: Likewise. + * gcc.dg/vect/pr109011-2.c: Likewise. + * gcc.dg/vect/pr109011-3.c: Likewise. + * gcc.dg/vect/pr109011-4.c: Likewise. + * gcc.dg/vect/pr109011-5.c: Likewise. + * gcc.dg/vect/pr111846.c: Likewise. + * gcc.dg/vect/pr111860-2.c: Likewise. + * gcc.dg/vect/pr111860-3.c: Likewise. + * gcc.dg/vect/pr113002.c: Likewise. + * gcc.dg/vect/pr84711.c: Likewise. + * gcc.dg/vect/pr85597.c: Likewise. + * gcc.dg/vect/pr88497-1.c: Likewise. + * gcc.dg/vect/pr88497-2.c: Likewise. + * gcc.dg/vect/pr88497-3.c: Likewise. + * gcc.dg/vect/pr88497-4.c: Likewise. + * gcc.dg/vect/pr88497-5.c: Likewise. + * gcc.dg/vect/pr88497-7.c: Likewise. + * gcc.dg/vect/pr92347.c: Likewise. + * gcc.dg/vect/pr93069.c: Likewise. + * gcc.dg/vect/pr97241.c: Likewise. + * gcc.dg/vect/pr99102.c: Likewise. + * gcc.dg/vect/vect-early-break_65.c: Likewise. + * gcc.dg/vect/vect-fold-1.c: Likewise. + * gcc.dg/vect/vect-ifcvt-19.c: Likewise. + * gcc.dg/vect/vect-ifcvt-20.c: Likewise. + * gcc.dg/vect/vect-reduc-epilogue-gaps.c: Likewise. + * gcc.dg/vect/vect-singleton_1.c: Likewise. + * g++.dg/vect/pr84556.cc: Likewise. + * gfortran.dg/vect/fast-math-mgrid-resid.f: Likewise. + * gfortran.dg/vect/pr77848.f: Likewise. + * gfortran.dg/vect/pr90913.f90: Likewise. + +2024-03-28 Jakub Jelinek + + PR tree-optimization/109925 + * gcc.c-torture/execute/pr109925.c: New test. + +2024-03-28 Mikael Morin + Harald Anlauf + + PR fortran/111781 + PR fortran/114475 + * gfortran.dg/spec_expr_10.f90: New test. + +2024-03-27 David Malcolm + + PR analyzer/114473 + * gcc.dg/analyzer/call-summaries-pr114473.c: New test. + +2024-03-27 Jakub Jelinek + + * gcc.dg/debug/btf/btf-cvr-quals-1.c: Use dg-additional-options + instead of multiple dg-options. + * gcc.dg/debug/btf/btf-datasec-1.c: Likewise. Accept all supported + unaligned 4 byte assembler directives rather than assuming it must + be .4byte. + +2024-03-27 Jakub Jelinek + + * lib/target-supports.exp (add_options_for_bfloat16): Add -msse2 on + i?86/x86_64. + * g++.dg/cpp23/ext-floating3.C: Add dg-add-options float16. + * g++.dg/cpp23/ext-floating12.C: Add dg-add-options float16 and + bfloat16. + +2024-03-27 Victor Do Nascimento + + * gcc.target/aarch64/cpunative/info_24: New. + * gcc.target/aarch64/cpunative/native_cpu_24.c: Likewise. + +2024-03-27 Victor Do Nascimento + + * gcc.target/aarch64/lse128-flag.c: New. + * gcc.target/aarch64/cpunative/info_23: Likewise. + * gcc.target/aarch64/cpunative/native_cpu_23.c: Likewise. + +2024-03-27 Stefan Schulze Frielinghaus + + * gcc.dg/tree-ssa/copy-headers-8.c: Set + LOGICAL_OP_NON_SHORT_CIRCUIT to true. + +2024-03-27 Jerry DeLisle + + PR libfortran/107031 + * gfortran.dg/endfile_5.f90: New test. + +2024-03-26 Cupertino Miranda + + * gcc.dg/debug/btf/btf-datasec-1.c: Correct for new + implementation. + * gcc.dg/debug/btf/btf-datasec-2.c: Likewise + * gcc.dg/debug/btf/btf-pr106773.c: Likewise + +2024-03-26 Jakub Jelinek + + PR middle-end/111151 + PR testsuite/114486 + * gcc.c-torture/execute/pr111151.c (main): Fix up expected value for + f. + +2024-03-26 Gaius Mulley + + PR modula2/114478 + * gm2/builtins/run/pass/builtins-run-pass.exp: New test. + * gm2/builtins/run/pass/testcomparisons.mod: New test. + * gm2/builtins/run/pass/testisnormal.mod: New test. + * gm2/pimlib/run/pass/testchar.mod: New test. + +2024-03-26 Marek Polacek + + PR c++/100557 + * g++.dg/cpp2a/concepts-pr100557.C: New test. + +2024-03-26 Patrick Palka + + * g++.dg/modules/decltype-1_a.C: Add missing } to dg-module-do + directive. + * g++.dg/modules/lambda-5_a.C: Likewise. + +2024-03-26 Jakub Jelinek + + * gcc.dg/torture/pr113126.c: Add -Wno-psabi as dg-additional-options. + +2024-03-26 Jakub Jelinek + + PR middle-end/111151 + * gcc.c-torture/execute/pr111151.c: New test. + +2024-03-26 Jakub Jelinek + + PR sanitizer/111736 + * gcc.dg/tsan/pr111736.c: New test. + +2024-03-26 Richard Biener + + PR tree-optimization/114471 + * gcc.dg/vect/pr114471.c: New testcase. + +2024-03-26 Richard Biener + + PR tree-optimization/114464 + * g++.dg/vect/pr114464.cc: New testcase. + +2024-03-26 Richard Biener + + PR tree-optimization/114027 + * gcc.dg/vect/pr114027.c: Fix iteration count. + +2024-03-25 Marek Polacek + + PR c++/114349 + * g++.dg/cpp0x/noexcept85.C: New test. + * g++.dg/cpp0x/noexcept86.C: New test. + +2024-03-25 Marek Polacek + + PR c++/114439 + * g++.dg/init/array65.C: New test. + +2024-03-25 Pan Li + + * gcc.target/riscv/rvv/base/pragma-1.c: Remove. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-1.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-2.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-3.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-4.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-5.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-6.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-7.c: New test. + * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-8.c: New test. + +2024-03-23 Gaius Mulley + + PR modula2/114443 + * gm2/pim/fail/missingquote.mod: New test. + +2024-03-23 David Malcolm + + PR analyzer/114408 + * c-c++-common/analyzer/deref-before-check-pr114408.c: New test. + * c-c++-common/ubsan/analyzer-ice-pr114408.c: New test. + +2024-03-23 Jakub Jelinek + + PR tree-optimization/114433 + * gcc.dg/torture/bitint-68.c: New test. + +2024-03-23 Jakub Jelinek + + PR tree-optimization/114425 + * gcc.dg/torture/bitint-67.c: New test. + +2024-03-23 Jakub Jelinek + + PR middle-end/111683 + * gcc.dg/pr111683-1.c: New test. + * gcc.dg/pr111683-2.c: New test. + +2024-03-22 Harald Anlauf + + PR fortran/55978 + * gfortran.dg/null_actual_5.f90: New test. + +2024-03-22 Patrick O'Neill + + * gcc.target/riscv/amo-table-ztso-amo-add-1.c: Add + dg_add_options riscv_a + * gcc.target/riscv/amo-table-ztso-amo-add-2.c: Ditto. + * gcc.target/riscv/amo-table-ztso-amo-add-3.c: Ditto. + * gcc.target/riscv/amo-table-ztso-amo-add-4.c: Ditto. + * gcc.target/riscv/amo-table-ztso-amo-add-5.c: Ditto. + * gcc.target/riscv/amo-table-ztso-compare-exchange-1.c: Ditto. + * gcc.target/riscv/amo-table-ztso-compare-exchange-2.c: Ditto. + * gcc.target/riscv/amo-table-ztso-compare-exchange-3.c: Ditto. + * gcc.target/riscv/amo-table-ztso-compare-exchange-4.c: Ditto. + * gcc.target/riscv/amo-table-ztso-compare-exchange-5.c: Ditto. + * gcc.target/riscv/amo-table-ztso-compare-exchange-6.c: Ditto. + * gcc.target/riscv/amo-table-ztso-compare-exchange-7.c: Ditto. + * gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c: Ditto. + * gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c: Ditto. + * gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c: Ditto. + * gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c: Ditto. + * gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c: Ditto. + +2024-03-22 David Malcolm + + PR analyzer/112974 + PR analyzer/112975 + * gcc.dg/plugin/plugin.exp (plugin_test_list): Add + taint-pr112974.c and taint-pr112975.c to analyzer_kernel_plugin.c. + * gcc.dg/plugin/taint-pr112974.c: New test. + * gcc.dg/plugin/taint-pr112975.c: New test. + +2024-03-22 Marek Polacek + + PR c++/59465 + * g++.dg/init/array62.C: New test. + * g++.dg/init/array63.C: New test. + * g++.dg/init/array64.C: New test. + +2024-03-22 Mikael Morin + + PR fortran/107426 + * gfortran.dg/pr89943_3.f90: Update error pattern. + * gfortran.dg/pr89943_4.f90: Likewise. + * gfortran.dg/use_31.f90: New test. + +2024-03-22 Mikael Morin + + PR fortran/111781 + * gfortran.dg/spec_expr_8.f90: New test. + * gfortran.dg/spec_expr_9.f90: New test. + +2024-03-22 Mikael Morin + + * gfortran.dg/graphite/pr107865.f90: Declare array bound variable(s) + as dummy argument(s). + * gfortran.dg/pr101267.f90: Likewise. + * gfortran.dg/pr112404.f90: Likewise. + * gfortran.dg/pr78061.f: Likewise. + * gfortran.dg/pr79315.f90: Likewise. + * gfortran.dg/vect/pr90681.f: Likewise. + * gfortran.dg/vect/pr97761.f90: Likewise. + * gfortran.dg/vect/pr99746.f90: Likewise. + +2024-03-22 Pan Li + + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-1.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-10.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-11.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-12.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-13.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-14.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-15.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-16.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-17.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-18.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-2.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-3.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-4.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-5.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-6.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-7.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-8.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits-9.c: New test. + * gcc.target/riscv/rvv/base/riscv_rvv_vector_bits.h: New test. + +2024-03-22 Stefan Schulze Frielinghaus + + * gcc.dg/tree-ssa/backprop-6.c: On s390 we also have a copysign + optab for long double. Thus, scan 3 instead of 2 times for it. + +2024-03-22 Jakub Jelinek + + PR c++/112724 + * c-c++-common/gomp/depobj-3.c: Add -fexcess-precision=fast as + dg-additional-options. + +2024-03-22 Andrew Pinski + + PR c/109619 + * gcc.dg/redecl-26.c: New test. + +2024-03-22 Rainer Orth + + PR tree-optimization/96147 + * gcc.dg/vect/bb-slp-32.c (dg-final): Remove. + +2024-03-22 Rainer Orth + + PR target/114150 + * gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c: Skip on + Solaris/x86 with as. + * gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c: Likewise. + +2024-03-22 Jakub Jelinek + + PR sanitizer/111736 + * gcc.dg/ubsan/pr111736.c: New test. + +2024-03-22 Jakub Jelinek + + PR tree-optimization/114405 + * gcc.dg/torture/bitint-66.c: New test. + +2024-03-22 Stefan Schulze Frielinghaus + + * gcc.dg/tree-ssa/abs-4.c: On s390 we also have a copysign optab + for long double. Thus, scan 3 instead of 2 times for it. + +2024-03-22 Christoph Müllner + + PR target/114194 + * gcc.target/riscv/rvv/xtheadvector/pr114194.c: New test. + +2024-03-22 Pan Li + + PR target/114352 + * gcc.target/riscv/rvv/base/pr114352-3.c: New test. + +2024-03-22 Pan Li + + PR target/114352 + * gcc.target/riscv/rvv/base/pr114352-1.c: New test. + * gcc.target/riscv/rvv/base/pr114352-2.c: New test. + +2024-03-22 liuhongt + + PR tree-optimization/114396 + * gcc.target/i386/pr114396.c: Move to... + * gcc.c-torture/execute/pr114396.c: ...here. + +2024-03-22 Gaius Mulley + + PR modula2/114422 + * gm2/iso/fail/badset.mod: New test. + * gm2/iso/fail/badset2.mod: New test. + * gm2/iso/fail/badset3.mod: New test. + +2024-03-21 David Malcolm + + PR analyzer/113619 + * c-c++-common/analyzer/taint-divisor-pr113619.c: New test. + +2024-03-21 Gaius Mulley + + PR modula2/114418 + * gm2/pim/fail/missingtsize.mod: New test. + * gm2/pim/fail/missingtsize2.mod: New test. + +2024-03-21 Harald Anlauf + + PR fortran/30802 + * gfortran.dg/bounds_check_17.f90: Adjust pattern. + * gfortran.dg/bounds_check_fail_8.f90: New test. + +2024-03-21 Marek Polacek + + PR c++/110323 + * g++.dg/template/explicit-instantiation6.C: New test. + * g++.dg/template/explicit-instantiation7.C: New test. + +2024-03-21 Jakub Jelinek + + PR libgcc/114397 + * gcc.dg/torture/bitint-65.c: New test. + +2024-03-21 liuhongt + + * gcc.target/i386/pr114396.c: New test. + +2024-03-21 Richard Biener + + PR tree-optimization/111736 + * gcc.target/i386/pr111736.c: New testcase. + +2024-03-21 Richard Biener + + PR tree-optimization/113727 + * gcc.dg/torture/pr113727.c: New testcase. + +2024-03-20 David Malcolm + + PR analyzer/109251 + * c-c++-common/analyzer/deref-before-check-pr109251-1.c: New test. + * c-c++-common/analyzer/deref-before-check-pr109251-2.c: New test. + +2024-03-20 Cupertino Miranda + + * gcc.target/bpf/core-builtin-fieldinfo-offset-1.c: Add + testcase for unnamed fields. + +2024-03-20 Cupertino Miranda + + * gcc.target/bpf/core-builtin-type-based.c: Correct. + * gcc.target/bpf/core-builtin-type-id.c: Correct. + +2024-03-20 Cupertino Miranda + + * gcc.target/bpf/core-attr-5.c: Correct. + * gcc.target/bpf/core-attr-6.c: Likewise. + * gcc.target/bpf/core-attr-struct-as-array.c: Add test case for + pointer arithmetics as array access use case. + +2024-03-20 Jakub Jelinek + + PR tree-optimization/114365 + * gcc.dg/bitint-102.c: New test. + +2024-03-20 Hao Liu + + PR tree-optimization/114322 + * gcc.dg/vect/pr114322.c: New testcase. + +2024-03-20 demin.han + + PR target/112651 + * g++.target/riscv/rvv/autovec/bug-2.C: Replace option + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul-ice-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul-ice-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul-ice-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul-mixed-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-4.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-5.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-6.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-4.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-5.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-6.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-7.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-10.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-11.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-12.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-5.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-6.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-7.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-8.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-9.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-10.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-11.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-12.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-13.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-14.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-4.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-5.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-6.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-7.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-8.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-9.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/no-dynamic-lmul-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr111317.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr111848.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113112-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113112-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113112-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113112-4.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113112-5.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113247-1.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113247-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113281-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113281-4.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr113281-5.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/pr114264.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-10.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-11.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-12.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-2.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-3.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-4.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-5.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-6.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-7.c: Ditto + * gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-9.c: Ditto + * gcc.target/riscv/rvv/autovec/bug-1.c: Ditto + * gcc.target/riscv/rvv/autovec/bug-2.c: Ditto + * gcc.target/riscv/rvv/autovec/bug-3.c: Ditto + * gcc.target/riscv/rvv/autovec/bug-4.c: Ditto + * gcc.target/riscv/rvv/autovec/bug-5.c: Ditto + * gcc.target/riscv/rvv/autovec/bug-8.c: Ditto + * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-3.c: Ditto + * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-4.c: Ditto + * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-7.c: Ditto + * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-8.c: Ditto + * gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc-1.c: Ditto + * gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc-2.c: Ditto + * gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc_run-1.c: Ditto + * gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc_run-2.c: Ditto + * gcc.target/riscv/rvv/autovec/fold-min-poly.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/gimple_fold-1.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/select_vl-2.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-1.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-16.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-17.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-18.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-19.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-2.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-3.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-4.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-5.c: Ditto + * gcc.target/riscv/rvv/autovec/partial/slp-6.c: Ditto + * gcc.target/riscv/rvv/autovec/pr112450.c: Ditto + * gcc.target/riscv/rvv/autovec/pr112598-1.c: Ditto + * gcc.target/riscv/rvv/autovec/pr112598-2.c: Ditto + * gcc.target/riscv/rvv/autovec/pr112694-1.c: Ditto + * gcc.target/riscv/rvv/autovec/pr112999.c: Ditto + * gcc.target/riscv/rvv/autovec/pr113393-2.c: Ditto + * gcc.target/riscv/rvv/autovec/series-1.c: Ditto + * gcc.target/riscv/rvv/autovec/series_run-1.c: Ditto + * gcc.target/riscv/rvv/autovec/slp-interleave-1.c: Ditto + * gcc.target/riscv/rvv/autovec/slp-interleave-2.c: Ditto + * gcc.target/riscv/rvv/autovec/slp-interleave-3.c: Ditto + * gcc.target/riscv/rvv/autovec/slp-interleave-4.c: Ditto + * gcc.target/riscv/rvv/autovec/unop/math-lroundf16-rv64-ice-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-10.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-12.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-13.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-14.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/trailing-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/trailing-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/trailing_run-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls-vlmax/trailing_run-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/abs-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/abs-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/and-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/and-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/and-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/avg-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/avg-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/avg-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/avg-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/avg-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/avg-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/bswap16-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cmp-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cmp-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cmp-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cmp-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cmp-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cmp-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/compress-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/compress-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/compress-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/compress-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/compress-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/compress-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_abs-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_add-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_add-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_and-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-10.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-11.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-12.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_convert-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_copysign-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_div-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_div-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_ext-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_ext-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_ext-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_ext-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_ext-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_fma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_fma-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_fms-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_fnma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_fnma-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_fnms-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_ior-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_max-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_max-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_min-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_min-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_mod-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_mul-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_mul-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_mulh-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_narrow-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_narrow-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_neg-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_neg-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_not-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_shift-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_shift-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_sqrt-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_sub-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_sub-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_trunc-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_trunc-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_trunc-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_trunc-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_trunc-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wadd-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wadd-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wadd-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wadd-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wfma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wfma-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wfms-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wfnma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wmul-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wmul-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wmul-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wsub-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wsub-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wsub-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_wsub-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cond_xor-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/consecutive-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/consecutive-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/const-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/const-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/const-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/const-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/const-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-10.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-11.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-12.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/convert-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/cvt-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/div-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/dup-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/dup-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/dup-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/dup-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/dup-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/dup-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/dup-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ext-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ext-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ext-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ext-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ext-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/extract-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/extract-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-add-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-div-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-div-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-div-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-max-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-max-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-max-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-max-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-max-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-min-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-min-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-min-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-mul-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-sgnj-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-sgnj-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-sub-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fma-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fma-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fma-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fma-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fma-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fma-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fms-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fms-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fms-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnma-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnma-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnma-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnma-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnma-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnma-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnms-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnms-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/fnms-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/init-repeat-sequence-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ior-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ior-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/ior-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mask-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mask-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mask-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-ceil-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-floor-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-iceil-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-iceil-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-ifloor-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-ifloor-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-irint-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-irint-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-iround-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-iround-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lceil-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lceil-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lceil-rv32-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lceilf-rv64-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lfloor-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lfloor-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lfloor-rv32-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lfloorf-rv64-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llceil-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llceilf-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llfloor-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llfloorf-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llrint-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llrintf-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llrintf16-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llround-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llroundf-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-llroundf16-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lrint-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lrint-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lrint-rv32-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lrintf-rv64-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lrintf16-rv32-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lrintf16-rv64-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lround-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lround-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lround-rv32-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lroundf-rv64-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lroundf16-rv32-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-lroundf16-rv64-0.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-nearbyint-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-rint-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-round-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-roundeven-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/math-trunc-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/max-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/merge-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/merge-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/merge-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/merge-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/merge-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/merge-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/merge-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/min-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/minus-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/minus-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/minus-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/misalign-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mod-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-10.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-11.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-12.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-13.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-14.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-15.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-16.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-17.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mov-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mulh-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/mult-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/narrow-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/narrow-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/narrow-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/neg-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/neg-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/not-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/perm-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/perm-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/perm-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/perm-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/perm-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/perm-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/perm-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/plus-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/plus-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/plus-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-10.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-11.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-12.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-13.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-14.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-15.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-16.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-17.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-18.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-19.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-20.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-21.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/reduc-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/repeat-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/series-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/series-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/series-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/series-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/shift-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/shift-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/shift-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/shift-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/shift-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/shift-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/spill-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/spill-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/spill-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/spill-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/spill-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/sqrt-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trailing-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trailing-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trailing-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trailing-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trailing-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trailing-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trailing-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trunc-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trunc-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trunc-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trunc-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/trunc-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-10.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-11.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-12.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-13.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-14.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-15.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-16.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-17.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-18.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-19.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-20.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-21.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-22.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-5.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-6.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-7.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-8.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/vec-set-9.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wadd-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wadd-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wadd-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wadd-4.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wfma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wfma-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wfma-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wfms-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wfnma-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wfnms-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wmul-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wmul-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wmul-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wred-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wred-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wred-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wsub-1.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wsub-2.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wsub-3.c: Ditto + * gcc.target/riscv/rvv/autovec/vls/wsub-4.c: Ditto + * gcc.target/riscv/rvv/autovec/widen/widen_reduc-1.c: Ditto + * gcc.target/riscv/rvv/autovec/widen/widen_reduc_order-2.c: Ditto + * gcc.target/riscv/rvv/autovec/zve32f-3.c: Ditto + * gcc.target/riscv/rvv/autovec/zve32x-3.c: Ditto + * gcc.target/riscv/rvv/autovec/zve64d-3.c: Ditto + * gcc.target/riscv/rvv/autovec/zve64f-3.c: Ditto + * gcc.target/riscv/rvv/autovec/zve64x-3.c: Ditto + * gcc.target/riscv/rvv/base/cpymem-1.c: Ditto + * gcc.target/riscv/rvv/base/cpymem-2.c: Ditto + * gcc.target/riscv/rvv/rvv.exp: Ditto + * gcc.target/riscv/rvv/vsetvl/pr111255.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vsetvl_bug-1.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vsetvl_bug-2.c: Ditto + +2024-03-20 Richard Biener + + PR middle-end/113396 + * gcc.dg/torture/pr113396.c: New testcase. + +2024-03-20 Lewis Hyatt + + PR c++/111918 + * g++.dg/cpp0x/Wnarrowing21a.C: New test. + * g++.dg/cpp0x/Wnarrowing21b.C: New test. + * g++.dg/cpp0x/Wnarrowing21c.C: New test. + * g++.dg/cpp0x/Wnarrowing21d.C: New test. + +2024-03-19 Martin Jambor + + PR ipa/108802 + PR ipa/114254 + * g++.dg/ipa/iinline-4.C: New test. + * g++.dg/ipa/pr108802.C: Likewise. + +2024-03-19 Marek Polacek + + * g++.dg/cpp2a/linkage-1.C: Use target c++14. + +2024-03-19 Jakub Jelinek + + PR analyzer/113505 + * gcc.dg/analyzer/pr113505.c: New test. + +2024-03-19 Edwin Lu + + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-6.c: Disable scheduling + * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-8.c: Ditto + * gcc.target/riscv/rvv/base/pr108185-1.c: Update test expectancies + * gcc.target/riscv/rvv/base/pr108185-2.c: Ditto + * gcc.target/riscv/rvv/base/pr108185-3.c: Ditto + * gcc.target/riscv/rvv/base/pr108185-4.c: Ditto + * gcc.target/riscv/rvv/base/pr108185-5.c: Ditto + * gcc.target/riscv/rvv/base/pr108185-6.c: Ditto + * gcc.target/riscv/rvv/base/pr108185-7.c: Ditto + * gcc.target/riscv/rvv/base/vcreate.c: Disable scheduling and update + test expectancies + * gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-30.c: Disable scheduling + * gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-31.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_single_block-17.c: Update test + expectancies + * gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-10.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-11.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-12.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-4.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-5.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-6.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-7.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-8.c: Ditto + * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-9.c: Ditto + +2024-03-19 David Malcolm + + PR analyzer/114286 + * c-c++-common/analyzer/atomic-builtins-pr114286.c: New test. + +2024-03-19 Iain Sandoe + + PR target/114049 + * gcc.dg/framework-1.c: Use an IOKit header instead of a + Kernel one. + +2024-03-19 Richard Biener + + PR tree-optimization/114151 + PR tree-optimization/114269 + PR tree-optimization/114322 + PR tree-optimization/114074 + * gcc.dg/pr68317.c: Revert last change. + +2024-03-19 Christophe Lyon + + PR target/114323 + * gcc.target/arm/mve/pr114323.c: New. + +2024-03-19 Jakub Jelinek + + PR target/114175 + * gcc.dg/c23-stdarg-9.c: New test. + +2024-03-19 Richard Biener + + PR tree-optimization/114375 + * gcc.dg/vect/vect-pr114375.c: New testcase. + +2024-03-19 Mary Bennett + + * gcc.target/riscv/cv-bi-beqimm-compile-1.c: New test. + * gcc.target/riscv/cv-bi-beqimm-compile-2.c: New test. + * gcc.target/riscv/cv-bi-bneimm-compile-1.c: New test. + * gcc.target/riscv/cv-bi-bneimm-compile-2.c: New test. + * lib/target-supports.exp: Add proc for XCVbi. + +2024-03-19 Chen Jiawei + + * gcc.target/riscv/mcpu-xiangshan-nanhu.c: New test. + Co-Authored by: Lin Jiawei + +2024-03-19 Nathaniel Shead + + * g++.dg/cpp2a/linkage-1.C: New test. + * g++.dg/modules/block-decl-3.h: New test. + * g++.dg/modules/block-decl-3_a.C: New test. + * g++.dg/modules/block-decl-3_b.C: New test. + * g++.dg/modules/block-decl-3_c.C: New test. + * g++.dg/modules/linkage-1_a.C: New test. + * g++.dg/modules/linkage-1_b.C: New test. + * g++.dg/modules/linkage-1_c.C: New test. + * g++.dg/modules/linkage-2.C: New test. + +2024-03-18 Jonathan Yong <10walls@gmail.com> + + * c-c++-common/Wrestrict.c: Fix typos in comments and + enable for LLP64 testing. + +2024-03-18 David Malcolm + + PR analyzer/110902 + PR analyzer/110928 + PR analyzer/111305 + PR analyzer/111441 + * c-c++-common/analyzer/out-of-bounds-const-fn.c: New test. + * c-c++-common/analyzer/out-of-bounds-diagram-11.c: Update + expected diagram output. + * c-c++-common/analyzer/out-of-bounds-diagram-pr110928.c: New test. + * c-c++-common/analyzer/out-of-bounds-diagram-pr111305.c: New test. + * c-c++-common/analyzer/out-of-bounds-diagram-pr111441.c: New test. + +2024-03-18 Uros Bizjak + + PR target/111822 + * g++.target/i386/pr111822.C (dg-do): Compile only for ia32 targets. + (dg-options): Add -march=x86-64. + +2024-03-18 Harald Anlauf + + PR fortran/103715 + * gfortran.dg/pr103715.f90: New test. + +2024-03-18 Thiago Jung Bauermann + + * gcc.target/arm/acle/cde-mve-error-2.c: Add -fpermissive. Use + relative offsets for line numbers. + +2024-03-18 Gaius Mulley + + PR modula2/114380 + * gm2/pim/fail/badset7.mod: New test. + +2024-03-18 Nathaniel Shead + + PR testsuite/114320 + * g++.dg/modules/target-powerpc-1_a.C: Suppress -Wpsabi. + * g++.dg/modules/target-powerpc-1_b.C: Likewise. + +2024-03-18 Jan Hubicka + Karthiban Anbazhagan + + * g++.target/i386/mv29.C: Handle znver5 arch. + * gcc.target/i386/funcspec-56.inc:Likewise. + +2024-03-18 Torbjörn SVENSSON + + * c-c++-common/analyzer/strndup-1.c: Define _POSIX_C_SOURCE. + +2024-03-18 liuhongt + + * gcc.target/i386/pr114334.c: New test. + +2024-03-17 Harald Anlauf + + PR fortran/101135 + * gfortran.dg/missing_optional_dummy_6a.f90: Adjust diagnostic pattern. + * gfortran.dg/ubsan/missing_optional_dummy_8.f90: New test. + +2024-03-17 Gaius Mulley + + PR modula2/114296 + * gm2/pim/fail/badtype2.mod: New test. + +2024-03-16 Jakub Jelinek + + PR target/114175 + * gcc.dg/c23-stdarg-7.c: New test. + * gcc.dg/c23-stdarg-8.c: New test. + +2024-03-16 Jakub Jelinek + + PR tree-optimization/114329 + * gcc.dg/bitint-101.c: New test. + +2024-03-16 Nathaniel Shead + + PR c++/112631 + * g++.dg/modules/block-decl-1_a.C: New test. + * g++.dg/modules/block-decl-1_b.C: New test. + * g++.dg/modules/block-decl-2.C: New test. + +2024-03-15 Jakub Jelinek + + PR libgcc/114327 + * gcc.dg/torture/bitint-63.c: New test. + +2024-03-15 Jakub Jelinek + + PR tree-optimization/113431 + * gcc.dg/vect/pr113431.c: Restrict scan-tree-dump-times to + vect_hw_misalign targets. + +2024-03-15 Jakub Jelinek + + PR target/114339 + * gcc.target/i386/pr114339.c: New test. + +2024-03-15 Joe Ramsay + + * gcc.target/aarch64/no_merge_trunc_signed_zero.c: New test. + +2024-03-15 Jakub Jelinek + + PR middle-end/114332 + * gcc.dg/torture/bitint-64.c: New file. + +2024-03-15 Jakub Jelinek + + * g++.dg/torture/pr104601.C: Add -Wno-unused-result to dg-options. + +2024-03-15 Jakub Jelinek + + PR tree-optimization/113466 + * gcc.dg/bitint-100.c: New test. + +2024-03-15 Paul Thomas + + PR fortran/87477 + PR fortran/89645 + PR fortran/99065 + PR fortran/114141 + PR fortran/114280 + * gfortran.dg/associate_64.f90 : New test + * gfortran.dg/associate_66.f90 : New test + * gfortran.dg/associate_67.f90 : New test + * gfortran.dg/associate_65.f90 : New test + * gfortran.dg/associate_68.f90 : New test + +2024-03-15 Tejas Belagod + + * gcc.dg/vect/pr114108.c: New test. + +2024-03-15 Chenghui Pan + + * gcc.target/loongarch/vector/lasx/lasx-xvpermi_q.c: + Reposition operand 3's value into instruction's defined accept range. + +2024-03-14 Gaius Mulley + + PR modula2/114294 + * gm2/pim/pass/log: Removed. + * gm2/pim/pass/highexp.mod: New test. + +2024-03-14 Jakub Jelinek + + PR middle-end/113907 + * gcc.dg/pr113907-1.c: New test. + +2024-03-14 Gaius Mulley + + PR modula2/114333 + * gm2/pim/fail/badset5.mod: New test. + * gm2/pim/fail/badset6.mod: New test. + +2024-03-14 Thomas Schwinge + + * c-c++-common/goacc/readonly-1.c: Add basic OpenACC 'declare' + testing. + * gfortran.dg/goacc/readonly-1.f90: Likewise. + +2024-03-14 Jakub Jelinek + + PR target/114310 + * gcc.dg/pr114310.c: New test. + +2024-03-14 Juergen Christ + + * gcc.target/s390/htm-builtins-1.c: Fix. + * gcc.target/s390/htm-builtins-2.c: Fix. + +2024-03-14 Lewis Hyatt + + PR preprocessor/110558 + * c-c++-common/cpp/has-include-2.c: New test. + * c-c++-common/cpp/has-include-2.h: New test. + +2024-03-14 Lewis Hyatt + + * lib/gcc-defs.exp (dg-additional-options): Make $srcdir usable in a + dg-additional-options directive. + * c-c++-common/cpp/has-include-next-2-dir/has-include-next-2.h: New test. + * c-c++-common/cpp/has-include-next-2.c: New test. + +2024-03-14 Gaius Mulley + + PR modula2/114333 + * gm2/cse/pass/testcse54.mod: New test. + * gm2/iso/run/pass/array9.mod: New test. + * gm2/iso/run/pass/strcons3.mod: New test. + * gm2/iso/run/pass/strcons4.mod: New test. + * gm2/pim/fail/badset1.mod: New test. + * gm2/pim/fail/badset2.mod: New test. + * gm2/pim/fail/badset3.mod: New test. + * gm2/pim/fail/badset4.mod: New test. + +2024-03-14 Chung-Lin Tang + + * c-c++-common/goacc/readonly-1.c: New test. + * gfortran.dg/goacc/readonly-1.f90: New test. + +2024-03-14 Andreas Krebbel + + * gcc.target/s390/aligned-1.c: Add weak and void variables + incorporating the cases from unaligned-2.c. + * gcc.target/s390/unaligned-1.c: Likewise. + * gcc.target/s390/unaligned-2.c: Removed. + +2024-03-14 liuhongt + + * g++.target/i386/pr111822.C: New test. + +2024-03-13 Harald Anlauf + + PR fortran/114001 + * gfortran.dg/is_contiguous_4.f90: New test. + +2024-03-13 Jakub Jelinek + + PR middle-end/114319 + * gcc.target/i386/pr114319.c: New test. + +2024-03-13 Torbjörn SVENSSON + + * c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early-O2.c: + Added dg-bogus with target on offending line for short_enums. + +2024-03-13 Stefan Schulze Frielinghaus + + * gcc.target/s390/md/rXsbg_mode_sXl.c: Fix tests rosbg_si_srl + and rxsbg_si_srl. + +2024-03-13 Jakub Jelinek + + PR middle-end/114313 + * gcc.dg/torture/bitint-62.c: New test. + +2024-03-13 Jakub Jelinek + + PR sanitizer/112709 + * gcc.dg/asan/pr112709-2.c: New test. + +2024-03-13 Jakub Jelinek + + PR sanitizer/112709 + * gcc.dg/ubsan/pr112709-1.c: New test. + * gcc.dg/ubsan/pr112709-2.c: New test. + +2024-03-12 Harald Anlauf + + PR fortran/110826 + * gfortran.dg/proc_ptr_comp_53.f90: New test. + +2024-03-12 Richard Biener + + PR tree-optimization/114121 + * gcc.dg/torture/pr114312.c: New testcase. + +2024-03-12 Nathaniel Shead + + PR c++/98645 + PR c++/98688 + PR c++/111224 + * g++.dg/modules/target-aarch64-1_a.C: New test. + * g++.dg/modules/target-aarch64-1_b.C: New test. + * g++.dg/modules/target-powerpc-1_a.C: New test. + * g++.dg/modules/target-powerpc-1_b.C: New test. + * g++.dg/modules/target-powerpc-2_a.C: New test. + * g++.dg/modules/target-powerpc-2_b.C: New test. + +2024-03-12 Jakub Jelinek + + PR sanitizer/112709 + * gcc.dg/asan/pr112709-1.c: New test. + * g++.dg/asan/pr69276.C: Adjust expected output for some targets. + +2024-03-12 Jakub Jelinek + + PR tree-optimization/114293 + * gcc.dg/pr114293.c: New test. + +2024-03-12 Richard Biener + + PR tree-optimization/114297 + * gcc.dg/vect/vect-early-break_123-pr114297.c: New testcase. + +2024-03-11 Jerry DeLisle + + PR libfortran/105437 + PR libfortran/114304 + * gfortran.dg/pr105473.f90: Add additional checks to address + the case of semicolon at the end of a line. + +2024-03-11 Richard Earnshaw + + PR testsuite/113428 + * gcc.dg/gomp/bad-array-section-c-3.c: Use signed char instead + of int. + +2024-03-11 Rainer Orth + + PR tree-optimization/98238 + * gcc.dg/vect/vect-cost-model-1.c (scan-tree-dump): Also require + vect_hw_misalign. + * gcc.dg/vect/vect-cost-model-3.c: Likewise. + * gcc.dg/vect/vect-cost-model-5.c: Likewise. + +2024-03-11 Rainer Orth + + PR tree-optimization/114071 + PR tree-optimization/113557 + PR testsuite/96109 + * gcc.dg/vect/pr37027.c: Require vect_perm. + * gcc.dg/vect/pr67790.c: Likewise. + * gcc.dg/vect/slp-reduc-1.c: Likewise. + * gcc.dg/vect/slp-reduc-2.c: Likewise. + * gcc.dg/vect/slp-reduc-7.c: Likewise. + * gcc.dg/vect/slp-reduc-8.c: Likewise. + * gcc.dg/vect/vect-multi-peel-gaps.c (scan-tree-dump): Also + require vect_perm. + * gcc.dg/vect/slp-47.c: Require vect_perm. + * gcc.dg/vect/slp-48.c: Likewise. + +2024-03-11 Richard Biener + + PR middle-end/114299 + * gcc.target/i386/pr114299.c: New testcase. + +2024-03-11 Jakub Jelinek + + PR tree-optimization/114278 + * gcc.dg/bitint-99.c: New test. + +2024-03-11 Eric Botcazou + + * gcc.dg/sso-20.c: New test. + * gcc.dg/sso-21.c: Likewise. + +2024-03-11 Andrew Pinski + + PR middle-end/95351 + * gcc.dg/float_opposite_arm-1.c: New test. + +2024-03-10 Iain Buclaw + + PR d/112285 + PR d/112290 + * gdc.dg/pr112285.d: New test. + * gdc.dg/pr112290.d: New test. + +2024-03-10 jlaw + + PR tree-optimization/110199 + * gcc.dg/tree-ssa/minmax-27.c: New test. + * gcc.dg/tree-ssa/minmax-28.c: New test. + +2024-03-10 Pan Li + + * gcc.target/riscv/rvv/base/pr114195-1.c: New test. + +2024-03-10 jlaw + + Revert: + 2024-01-22 Jeff Law + + * gcc.target/sh/pr59533-1.c: Adjust expected output. + +2024-03-10 jlaw + + PR target/111362 + * gcc.target/riscv/compare-debug-1.c: New test. + * gcc.target/riscv/compare-debug-2.c: New test. + +2024-03-09 Xi Ruoyao + + * gcc.target/loongarch/tls-ie-relax.c: New test. + * gcc.target/loongarch/tls-ie-norelax.c: New test. + * gcc.target/loongarch/tls-ie-extreme.c: New test. + +2024-03-09 Lulu Cheng + + * gcc.target/loongarch/regname-fp-s9.c: Add compilation option + '-Wno-pedantic -std=gnu90'. + +2024-03-09 Lulu Cheng + + * g++.target/loongarch/atomic-cas-int.C: New test. + 2024-03-08 Martin Jambor PR ipa/113757 diff --git a/gcc/testsuite/c-c++-common/Wrestrict.c b/gcc/testsuite/c-c++-common/Wrestrict.c index 4d005a618b36..57a3f67e21e5 100644 --- a/gcc/testsuite/c-c++-common/Wrestrict.c +++ b/gcc/testsuite/c-c++-common/Wrestrict.c @@ -381,14 +381,14 @@ void test_memcpy_range_exceed (char *d, const char *s) T (d + i, s + 1, 3); /* { dg-warning "accessing 3 bytes at offsets \\\[\[0-9\]+, \[0-9\]+] and 1 overlaps 1 byte" "memcpy" } */ #if __SIZEOF_SIZE_T__ == 8 - /* Verfiy the offset and size computation is correct. The overlap - offset mentioned in the warning plus sthe size of the access must + /* Verify the offset and size computation is correct. The overlap + offset mentioned in the warning plus the size of the access must not exceed DIFF_MAX. */ - T (d, d + i, 5); /* { dg-warning "accessing 5 bytes at offsets 0 and \\\[9223372036854775805, 9223372036854775807] overlaps 3 bytes at offset 9223372036854775802" "LP64" { target lp64 } } */ - T (d + i, d, 5); /* { dg-warning "accessing 5 bytes at offsets \\\[9223372036854775805, 9223372036854775807] and 0 overlaps 3 bytes at offset 9223372036854775802" "LP64" { target lp64 } } */ + T (d, d + i, 5); /* { dg-warning "accessing 5 bytes at offsets 0 and \\\[9223372036854775805, 9223372036854775807] overlaps 3 bytes at offset 9223372036854775802" "LP64" { target { lp64 || llp64 } } } */ + T (d + i, d, 5); /* { dg-warning "accessing 5 bytes at offsets \\\[9223372036854775805, 9223372036854775807] and 0 overlaps 3 bytes at offset 9223372036854775802" "LP64" { target { lp64 || llp64 } } } */ - T (d, s + i, 5); /* { dg-warning "accessing 5 bytes at offsets 0 and \\\[9223372036854775805, 9223372036854775807] overlaps 3 bytes at offset 9223372036854775802" "LP64" { target lp64 } } */ - T (d + i, s, 5); /* { dg-warning "accessing 5 bytes at offsets \\\[9223372036854775805, 9223372036854775807] and 0 overlaps 3 bytes at offset 9223372036854775802" "LP64" { target lp64 } } */ + T (d, s + i, 5); /* { dg-warning "accessing 5 bytes at offsets 0 and \\\[9223372036854775805, 9223372036854775807] overlaps 3 bytes at offset 9223372036854775802" "LP64" { target { lp64 || llp64 } } } */ + T (d + i, s, 5); /* { dg-warning "accessing 5 bytes at offsets \\\[9223372036854775805, 9223372036854775807] and 0 overlaps 3 bytes at offset 9223372036854775802" "LP64" { target { lp64 || llp64 } } } */ #elif __SIZEOF_SIZE_T__ == 4 T (d, d + i, 5); /* { dg-warning "accessing 5 bytes at offsets 0 and \\\[2147483645, 2147483647] overlaps 3 bytes at offset 2147483642" "ILP32" { target ilp32 } } */ T (d + i, d, 5); /* { dg-warning "accessing 5 bytes at offsets \\\[2147483645, 2147483647] and 0 overlaps 3 bytes at offset 2147483642" "ILP32" { target ilp32 } } */ diff --git a/gcc/testsuite/c-c++-common/analyzer/atomic-builtins-pr114286.c b/gcc/testsuite/c-c++-common/analyzer/atomic-builtins-pr114286.c new file mode 100644 index 000000000000..1ff47ffaec81 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/atomic-builtins-pr114286.c @@ -0,0 +1,48 @@ +#include "analyzer-decls.h" + +struct S { long long a[16]; } s; + +struct S +test_atomic_load (void) +{ + struct S r; + __atomic_load (&s, &r, __ATOMIC_RELAXED); + __analyzer_eval (r.a[0] == s.a[0]); /* { dg-warning "TRUE" } */ + __analyzer_eval (r.a[15] == s.a[15]); /* { dg-warning "TRUE" } */ + return r; +} + +void +test_atomic_store (struct S x) +{ + __atomic_store (&s, &x, __ATOMIC_RELAXED); + __analyzer_eval (s.a[0] == x.a[0]); /* { dg-warning "TRUE" } */ + __analyzer_eval (s.a[15] == x.a[15]); /* { dg-warning "TRUE" } */ +} + +struct S +test_atomic_exchange (struct S x) +{ + struct S init_x, init_s; + struct S r; + + /* Capture initial values of x and s for comparison below. */ + __atomic_load (&x, &init_x, __ATOMIC_RELAXED); + __atomic_load (&s, &init_s, __ATOMIC_RELAXED); + + __atomic_exchange (&s, &x, &r, __ATOMIC_RELAXED); + + __analyzer_eval (s.a[0] == init_x.a[0]); /* { dg-warning "TRUE" } */ + __analyzer_eval (s.a[15] == init_x.a[15]); /* { dg-warning "TRUE" } */ + __analyzer_eval (r.a[0] == init_s.a[0]); /* { dg-warning "TRUE" } */ + __analyzer_eval (r.a[15] == init_s.a[15]); /* { dg-warning "TRUE" } */ + + return r; +} + +int +test_atomic_compare_exchange (struct S *e, struct S *d) +{ + return __atomic_compare_exchange (&s, e, d, 0, + __ATOMIC_RELAXED, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr109251-1.c b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr109251-1.c new file mode 100644 index 000000000000..769cffae6d74 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr109251-1.c @@ -0,0 +1,60 @@ +/* Reduced from linux-5.10.162's kernel/sched/fair.c, + with !CONFIG_FAIR_GROUP_SCHED. */ + +#define NULL ((void*)0) + +struct load_weight +{ + unsigned long weight; + /* [...snip...] */ +}; + +struct sched_entity +{ + struct load_weight load; + /* [...snip...] */ + unsigned int on_rq; + /* [...snip...] */ +}; + +struct cfs_rq +{ + /* [...snip...] */ + unsigned int nr_running; + /* [...snip...] */ +}; + +extern int +__calc_delta(int delta_exec, unsigned long weight /* [...snip...] */); + +/* !CONFIG_FAIR_GROUP_SCHED */ +#define for_each_sched_entity(se) \ + for (; se; se = (struct sched_entity *)NULL) + +extern struct cfs_rq* +cfs_rq_of(struct sched_entity* se); + +extern int +__sched_period(unsigned long nr_running); + +int +sched_slice(struct cfs_rq* cfs_rq, struct sched_entity* se) +{ + unsigned int nr_running = cfs_rq->nr_running; + int slice; + + /* [...snip...] */ + + slice = __sched_period(nr_running + !se->on_rq); + + for_each_sched_entity(se) { + /* [...snip...] */ + cfs_rq = cfs_rq_of(se); + /* [...snip...] */ + slice = __calc_delta(slice, se->load.weight); + } + + /* [...snip...] */ + + return slice; +} diff --git a/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr109251-2.c b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr109251-2.c new file mode 100644 index 000000000000..8e85a47d315e --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr109251-2.c @@ -0,0 +1,37 @@ +struct node +{ + struct node *next; + int val; +}; + +int test_loop_1 (struct node *n) +{ + int total = 0; + if (n->val = 42) + return -1; + for (struct node *iter = n; iter; iter=iter->next) + total += iter->val; + return total; +} + +int test_loop_2 (struct node *n) +{ + int total = 0; + if (n->val = 42) + return -1; + for (; n; n=n->next) + total += n->val; + return total; +} + +#define FOR_EACH_NODE(ITER) for (; (ITER); (ITER)=(ITER)->next) + +int test_loop_3 (struct node *n) +{ + int total = 0; + if (n->val = 42) + return -1; + FOR_EACH_NODE (n) + total += n->val; + return total; +} diff --git a/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr114408.c b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr114408.c new file mode 100644 index 000000000000..d55720271d0f --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr114408.c @@ -0,0 +1,22 @@ +extern void unknown_returns (const char *p); +extern void unknown_noreturn (const char *p) __attribute__((__noreturn__)); + +void test_1 (const char *p) +{ + if (p) + unknown_returns (p); + __builtin_strcmp ("a", p); /* { dg-message "pointer 'p' is dereferenced here" "" { target c } } */ + if (p) /* { dg-warning "check of 'p' for NULL after already dereferencing it" "" { target c } } */ + unknown_returns (p); + __builtin_strcmp ("a", p); +} + +void test_2 (const char *p) +{ + if (p) + unknown_noreturn (p); + __builtin_strcmp ("a", p); + if (p) /* { dg-bogus "check of 'p' for NULL after already dereferencing it" } */ + unknown_noreturn (p); + __builtin_strcmp ("a", p); +} diff --git a/gcc/testsuite/c-c++-common/analyzer/memset-1.c b/gcc/testsuite/c-c++-common/analyzer/memset-1.c index 75aef53d3487..d6695d494111 100644 --- a/gcc/testsuite/c-c++-common/analyzer/memset-1.c +++ b/gcc/testsuite/c-c++-common/analyzer/memset-1.c @@ -58,7 +58,7 @@ void test_5 (int n) __analyzer_eval (buf[42] == 'A'); /* { dg-warning "TRUE" } */ memset (buf, 0, n); - /* We can't know if buf[42] was written to or not. */ + /* We can't know if buf[42] was overwritten by the memset or not. */ __analyzer_eval (buf[42] == 'A'); /* { dg-warning "UNKNOWN" } */ __analyzer_eval (buf[42] == '\0'); /* { dg-warning "UNKNOWN" } */ } @@ -72,7 +72,7 @@ void test_5a (int n) __analyzer_eval (buf[42] == 'A'); /* { dg-warning "TRUE" } */ __builtin___memset_chk (buf, 0, n, __builtin_object_size (buf, 0)); - /* We can't know if buf[42] was written to or not. */ + /* We can't know if buf[42] was overwritten by the memset or not. */ __analyzer_eval (buf[42] == 'A'); /* { dg-warning "UNKNOWN" } */ __analyzer_eval (buf[42] == '\0'); /* { dg-warning "UNKNOWN" } */ } diff --git a/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early-O2.c b/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early-O2.c index c1c8e6f6a39a..a37962f1d856 100644 --- a/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early-O2.c +++ b/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early-O2.c @@ -61,7 +61,7 @@ static inline enum obj_type obj_type(const enum obj_type *t) } static inline struct connection *__objt_conn(enum obj_type *t) { - return ((struct connection *)(((char *)(t)) - ((long)&((struct connection *)0)->obj_type))); + return ((struct connection *)(((char *)(t)) - ((long)&((struct connection *)0)->obj_type))); /* { dg-bogus "may result in an unaligned pointer value" "Fixed in r14-6517-gb7e4a4c626e" { target short_enums } } */ } static inline struct connection *objt_conn(enum obj_type *t) { diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-const-fn.c b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-const-fn.c new file mode 100644 index 000000000000..7cb8b5f53611 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-const-fn.c @@ -0,0 +1,48 @@ +/* Reduced from analyzer ICE seen with git-2.39.0's pack-bitmap.c + when bounds-checking the result of __builtin_ctzll. */ + +#include +#include + +typedef uint64_t eword_t; +struct ewah_bitmap; +struct ewah_iterator +{ + /* [...] */ +}; +struct bitmap; + +void ewah_iterator_init(struct ewah_iterator *it, struct ewah_bitmap *parent); +int ewah_iterator_next(eword_t *next, struct ewah_iterator *it); +void bitmap_set(struct bitmap *self, size_t pos); + +int rebuild_bitmap(const uint32_t *reposition, + struct ewah_bitmap *source, + struct bitmap *dest) +{ + uint32_t pos = 0; + struct ewah_iterator it; + eword_t word; + + ewah_iterator_init(&it, source); + + while (ewah_iterator_next(&word, &it)) { + uint32_t offset, bit_pos; + + for (offset = 0; offset < (sizeof(eword_t) * 8); ++offset) { + if ((word >> offset) == 0) + break; + + offset += __builtin_ctzll(word >> offset); + + bit_pos = reposition[pos + offset]; + if (bit_pos > 0) + bitmap_set(dest, bit_pos - 1); + else + return -1; + } + + pos += (sizeof(eword_t) * 8); + } + return 0; +} diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-11.c b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-11.c index d68ac8f25ba9..63ae08347aa7 100644 --- a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-11.c +++ b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-11.c @@ -30,9 +30,12 @@ void test6 (size_t size) │ │ ╭──────────┴─────────╮ │ │ │over-read of 4 bytes│ │ │ ╰────────────────────╯ - ╭───────────┴──────────╮ ╭────────┴────────╮ - │size: 'size * 4' bytes│ │'size * 12' bytes│ - ╰──────────────────────╯ ╰─────────────────╯ + │ ╭────────────────┴───────────────╮ + │ │'(size * 16) - (size * 4)' bytes│ + │ ╰────────────────────────────────╯ + ╭───────────┴──────────╮ + │size: 'size * 4' bytes│ + ╰──────────────────────╯ { dg-end-multiline-output "" } */ @@ -55,9 +58,9 @@ void test7 (size_t size) └──────────────────────────────────────────────────┘└──────────────────┘ ├────────────────────────┬─────────────────────────┤├────────┬─────────┤ │ │ - ╭───────────────┴──────────────╮ ╭─────────┴────────╮ - │capacity: 'size * 4 + 3' bytes│ │overflow of 1 byte│ - ╰──────────────────────────────╯ ╰──────────────────╯ + ╭────────────────┴───────────────╮ ╭─────────┴────────╮ + │capacity: '(size * 4) + 3' bytes│ │overflow of 1 byte│ + ╰────────────────────────────────╯ ╰──────────────────╯ { dg-end-multiline-output "" } */ diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr110928.c b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr110928.c new file mode 100644 index 000000000000..a0164c9d0465 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr110928.c @@ -0,0 +1,28 @@ +/* Verify we don't ICE generating out-of-bounds diagram. */ + +/* { dg-additional-options "-O0 -fdiagnostics-text-art-charset=unicode" } */ + +#include +#include + +uint64_t d(int32_t h) { + uint64_t j[2][6]; + int32_t k; + for (k = 1;;) { + printf("FLAG\n"); + if (h < 106 || j[k][h]) /* { dg-warning "stack-based buffer over-read" } */ + return 0; + } +} +int16_t e() { + int32_t f[5]; + for (f[2] = 3; f[2]; --f[2]) + d(0); +} + +int main() { e(); } + +/* We don't care about the exact diagram, just that we don't ICE. */ + +/* { dg-allow-blank-lines-in-output 1 } */ +/* { dg-prune-output ".*" } */ diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr111305.c b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr111305.c new file mode 100644 index 000000000000..9cb37a54ef99 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr111305.c @@ -0,0 +1,26 @@ +/* Verify we don't ICE generating out-of-bounds diagram. */ + +/* { dg-additional-options "-O0 -fdiagnostics-text-art-charset=unicode" } */ + +#include +#include + +struct a { + uint32_t b; +}; +union c { + int8_t b; +}; + +int32_t *d( int32_t *j, int32_t k, struct a l) { + int64_t m[1]= {0}; + for (l.b = 0; l.b <= 0; l.b++) { + printf("FLAG\n"); + l.b == 12 && m[l.b]; /* { dg-bogus "stack-based buffer over-read" } */ + } +} + +/* We don't care about the exact diagram, just that we don't ICE. */ + +/* { dg-allow-blank-lines-in-output 1 } */ +/* { dg-prune-output ".*" } */ diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr111441.c b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr111441.c new file mode 100644 index 000000000000..df7c71405d5b --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-pr111441.c @@ -0,0 +1,19 @@ +/* Verify we don't ICE generating out-of-bounds diagram. */ + +/* { dg-additional-options "-fdiagnostics-text-art-charset=unicode" } */ + +#include "analyzer-decls.h" + +void f() { + int a[] = {3, 0, 3, 3, 0, 3, 40883}; + for (int c = 6; c; c--) { + __analyzer_describe(0, a[c]); + 90 > c || a[c]; /* { dg-bogus "stack-based buffer over-read" } */ + } +} +int main() { f(); } + +/* We don't care about the exact diagram, just that we don't ICE. */ + +/* { dg-allow-blank-lines-in-output 1 } */ +/* { dg-prune-output ".*" } */ diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-pr114472.c b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-pr114472.c new file mode 100644 index 000000000000..ef9e7711a2e4 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-pr114472.c @@ -0,0 +1,17 @@ +/* Verify we don't ICE on cases involving very large values for size. */ + +char s, d; + +void +foo(void) +{ + __builtin_strncpy(&d, &s + 3, -1); /* { dg-warning "Wstringop-overflow" } */ + __builtin_strncpy(&d + 3, &s, -1); /* { dg-warning "Wstringop-overflow" } */ +} + +void +bar(void) +{ + __builtin_strncpy(&d, &s - 3, -1); /* { dg-warning "Wstringop-overflow" } */ + __builtin_strncpy(&d - 3, &s, -1); /* { dg-warning "Wstringop-overflow" } */ +} diff --git a/gcc/testsuite/c-c++-common/analyzer/stdarg-pr111289-int.c b/gcc/testsuite/c-c++-common/analyzer/stdarg-pr111289-int.c index 33d83169c3e0..8faa58c94805 100644 --- a/gcc/testsuite/c-c++-common/analyzer/stdarg-pr111289-int.c +++ b/gcc/testsuite/c-c++-common/analyzer/stdarg-pr111289-int.c @@ -1,6 +1,5 @@ #include #include -#include typedef unsigned int mode_t; diff --git a/gcc/testsuite/c-c++-common/analyzer/strndup-1.c b/gcc/testsuite/c-c++-common/analyzer/strndup-1.c index 85ccae85d832..577ece0cfbaa 100644 --- a/gcc/testsuite/c-c++-common/analyzer/strndup-1.c +++ b/gcc/testsuite/c-c++-common/analyzer/strndup-1.c @@ -1,4 +1,5 @@ /* { dg-skip-if "no strndup in libc" { *-*-darwin[789]* *-*-darwin10* hppa*-*-hpux* *-*-mingw* *-*-vxworks* } } */ +/* { dg-additional-options "-D_POSIX_C_SOURCE=200809L" } */ #include #include diff --git a/gcc/testsuite/c-c++-common/analyzer/taint-divisor-pr113619.c b/gcc/testsuite/c-c++-common/analyzer/taint-divisor-pr113619.c new file mode 100644 index 000000000000..15c881247ce7 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/taint-divisor-pr113619.c @@ -0,0 +1,29 @@ +/* Reduced from false positive in Linux kernel's fs/ceph/ioctl.c: */ + +__extension__ typedef unsigned long long __u64; + +struct ceph_ioctl_layout +{ + __u64 stripe_unit, object_size; +}; +static long +__validate_layout(struct ceph_ioctl_layout* l) +{ + if ((l->object_size & ~(~(((1UL) << 12) - 1))) || + (l->stripe_unit & ~(~(((1UL) << 12) - 1))) || + ((unsigned)l->stripe_unit != 0 && + ((unsigned)l->object_size % (unsigned)l->stripe_unit))) /* { dg-bogus "use of attacker-controlled value 'l.stripe_unit' as divisor without checking for zero" "PR analyzer/113619" } */ + return -22; + return 0; +} + +long +__attribute__((tainted_args)) +ceph_ioctl_set_layout_policy(struct ceph_ioctl_layout l) +{ + int err; + err = __validate_layout(&l); + if (err) + return err; + return err; +} diff --git a/gcc/testsuite/c-c++-common/cpp/has-include-2.c b/gcc/testsuite/c-c++-common/cpp/has-include-2.c new file mode 100644 index 000000000000..5cd00cb3fb5b --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/has-include-2.c @@ -0,0 +1,12 @@ +/* PR preprocessor/110558 */ +/* { dg-do preprocess } */ +#define STRINGIZE(x) #x +#define GET_INCLUDE(i) STRINGIZE(has-include-i.h) +/* Spaces surrounding the macro args previously caused a problem for __has_include(). */ +#if __has_include(GET_INCLUDE(2)) && __has_include(GET_INCLUDE( 2)) && __has_include(GET_INCLUDE( 2 )) +#include GET_INCLUDE(2) +#include GET_INCLUDE( 2) +#include GET_INCLUDE( 2 ) +#else +#error "__has_include did not handle padding properly" /* { dg-bogus "__has_include" } */ +#endif diff --git a/gcc/testsuite/c-c++-common/cpp/has-include-2.h b/gcc/testsuite/c-c++-common/cpp/has-include-2.h new file mode 100644 index 000000000000..57c402b32a86 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/has-include-2.h @@ -0,0 +1 @@ +/* PR preprocessor/110558 */ diff --git a/gcc/testsuite/c-c++-common/cpp/has-include-next-2-dir/has-include-next-2.h b/gcc/testsuite/c-c++-common/cpp/has-include-next-2-dir/has-include-next-2.h new file mode 100644 index 000000000000..1e4be6ce7a34 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/has-include-next-2-dir/has-include-next-2.h @@ -0,0 +1,3 @@ +#if __has_include_next() +/* This formerly led to an ICE when the current directory was the last one in the path. */ +#endif diff --git a/gcc/testsuite/c-c++-common/cpp/has-include-next-2.c b/gcc/testsuite/c-c++-common/cpp/has-include-next-2.c new file mode 100644 index 000000000000..4928d3e992c6 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/has-include-next-2.c @@ -0,0 +1,4 @@ +/* PR preprocessor/80755 */ +/* { dg-do preprocess } */ +/* { dg-additional-options "-idirafter $srcdir/c-c++-common/cpp/has-include-next-2-dir" } */ +#include diff --git a/gcc/testsuite/c-c++-common/goacc/readonly-1.c b/gcc/testsuite/c-c++-common/goacc/readonly-1.c new file mode 100644 index 000000000000..300464c92e3f --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/readonly-1.c @@ -0,0 +1,64 @@ +/* { dg-additional-options "-fdump-tree-original" } */ + +struct S +{ + int *ptr; + float f; +}; + +int a[32], b[32]; +#pragma acc declare copyin(readonly: a) copyin(b) +/* Not visible in 'original' dump; handled via 'offload_vars'. */ + +int main (void) +{ + int x[32], y[32]; + struct S s = {x, 0}; + + #pragma acc declare copyin(readonly: x/*[:32]*/, s/*.ptr[:16]*/) copyin(y/*[:32]*/) + + #pragma acc parallel copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32]) + { + #pragma acc cache (readonly: x[:32]) + #pragma acc cache (y[:32]) + } + + #pragma acc kernels copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32]) + { + #pragma acc cache (readonly: x[:32]) + #pragma acc cache (y[:32]) + } + + #pragma acc serial copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32]) + { + #pragma acc cache (readonly: x[:32]) + #pragma acc cache (y[:32]) + } + + #pragma acc data copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32]) + { + #pragma acc cache (readonly: x[:32]) + #pragma acc cache (y[:32]) + } + + #pragma acc enter data copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32]) + + return 0; +} + +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc declare map\\(to:y\\) map\\(readonly,to:s\\) map\\(readonly,to:x\\)" 1 "original" } } */ + +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc parallel map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:\\*s.ptr \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc kernels map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:\\*s.ptr \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc serial map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:\\*s.ptr \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc data map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) map\\(readonly,to:\\*s.ptr \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc enter data map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) map\\(readonly,to:\\*s.ptr \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c } } } } */ + +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc parallel map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:\\*NON_LVALUE_EXPR \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c++ } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc kernels map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:\\*NON_LVALUE_EXPR \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c++ } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc serial map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:\\*NON_LVALUE_EXPR \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c++ } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc data map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) map\\(readonly,to:\\*NON_LVALUE_EXPR \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c++ } } } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc enter data map\\(to:y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\) map\\(readonly,to:\\*NON_LVALUE_EXPR \\\[len: \[0-9\]+\\\]\\) .+ map\\(readonly,to:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\)" 1 "original" { target { c++ } } } } */ + +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc cache \\(readonly:x\\\[0\\\] \\\[len: \[0-9\]+\\\]\\);$" 4 "original" } } */ +/* { dg-final { scan-tree-dump-times "(?n)#pragma acc cache \\(y\\\[0\\\] \\\[len: \[0-9\]+\\\]\\);$" 4 "original" } } */ diff --git a/gcc/testsuite/c-c++-common/gomp/depobj-3.c b/gcc/testsuite/c-c++-common/gomp/depobj-3.c index a5017a40b47e..526c4293ed34 100644 --- a/gcc/testsuite/c-c++-common/gomp/depobj-3.c +++ b/gcc/testsuite/c-c++-common/gomp/depobj-3.c @@ -1,3 +1,5 @@ +/* { dg-additional-options "-fexcess-precision=fast" } */ + typedef struct __attribute__((__aligned__ (sizeof (void *)))) omp_depend_t { char __omp_depend_t__[2 * sizeof (void *)]; } omp_depend_t; diff --git a/gcc/testsuite/c-c++-common/ubsan/analyzer-ice-pr114408.c b/gcc/testsuite/c-c++-common/ubsan/analyzer-ice-pr114408.c new file mode 100644 index 000000000000..55f918726eed --- /dev/null +++ b/gcc/testsuite/c-c++-common/ubsan/analyzer-ice-pr114408.c @@ -0,0 +1,9 @@ +/* { dg-do run } */ +/* { dg-require-effective-target analyzer } */ +/* { dg-options "-fanalyzer -fsanitize=undefined" } */ + +int main(){} + +int HMAP_unset_copy(const char *key) { + return __builtin_strcmp("a", key) + __builtin_strcmp("a", key); +} diff --git a/gcc/testsuite/g++.dg/asan/pr69276.C b/gcc/testsuite/g++.dg/asan/pr69276.C index 1347fae78a68..aea710407e96 100644 --- a/gcc/testsuite/g++.dg/asan/pr69276.C +++ b/gcc/testsuite/g++.dg/asan/pr69276.C @@ -35,4 +35,5 @@ int main() } /* { dg-output "ERROR: AddressSanitizer: heap-buffer-overflow.*(\n|\r\n|\r)" } */ -/* { dg-output " #0 0x\[0-9a-f\]+ +in A::A()" } */ +/* { dg-output " #0 0x\[0-9a-f\]+ +in (A::A\\\(\\\)|vnull::operator vec\\\(\\\).*(\n|\r\n|\r)" } */ +/* { dg-output " #1 0x\[0-9a-f\]+ +in A::A\\\(\\\))" } */ diff --git a/gcc/testsuite/g++.dg/conversion/pr16333.C b/gcc/testsuite/g++.dg/conversion/pr16333.C index a00bc5c167c4..d00493047903 100644 --- a/gcc/testsuite/g++.dg/conversion/pr16333.C +++ b/gcc/testsuite/g++.dg/conversion/pr16333.C @@ -6,5 +6,5 @@ struct X { int a[3]; X foo1 () { return a; } -const X &foo2 () { return a; } // { dg-warning "returning reference to temporary" } +const X &foo2 () { return a; } // { dg-message "returning reference to temporary" } X &foo3 () { return a; } // { dg-error "cannot bind non-const lvalue ref" } diff --git a/gcc/testsuite/g++.dg/conversion/ref10.C b/gcc/testsuite/g++.dg/conversion/ref10.C new file mode 100644 index 000000000000..1913f733a6b4 --- /dev/null +++ b/gcc/testsuite/g++.dg/conversion/ref10.C @@ -0,0 +1,5 @@ +// PR c++/114561 + +void create(void* u) { + const void* const& r = ( (void)0, u ); +} diff --git a/gcc/testsuite/g++.dg/conversion/ref11.C b/gcc/testsuite/g++.dg/conversion/ref11.C new file mode 100644 index 000000000000..bb9b835034c7 --- /dev/null +++ b/gcc/testsuite/g++.dg/conversion/ref11.C @@ -0,0 +1,33 @@ +// PR c++/114562 +// { dg-do compile { target c++11 } } + +template +struct Optional { + Optional(T&&); +}; + +struct MyClass { + MyClass(Optional); +}; + +// const void* NONE = nullptr; // Correct Error +void* NONE = nullptr; // Crash + +void beforeParam(); + +template +struct Create { + template static T create(U &&) noexcept; +}; + + +template +template +T Create::create(U && u) noexcept { + return T( ( (beforeParam()), (u) ) ); // { dg-error "cannot bind rvalue reference" } + // return T( (u) ); // Correct Error +} + +void test_func() { + Create::create(NONE); +} diff --git a/gcc/testsuite/g++.dg/conversion/ref12.C b/gcc/testsuite/g++.dg/conversion/ref12.C new file mode 100644 index 000000000000..27ed91227694 --- /dev/null +++ b/gcc/testsuite/g++.dg/conversion/ref12.C @@ -0,0 +1,20 @@ +// PR c++/113141 + +struct Matrix { }; + +struct TPoint3 { private: operator const Matrix(); }; + +void f(Matrix&); + +int main() { + TPoint3 X; + Matrix& m = (Matrix &)X; // { dg-warning "does not use" } + f((Matrix &)X); // { dg-warning "does not use" } +} + +struct A { private: operator const int&(); } a; +int &r = (int&)a; // { dg-warning "does not use" } + +struct B { B(int); }; +int i; +B &br = (B&)i; // { dg-warning "does not use" } diff --git a/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21a.C b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21a.C new file mode 100644 index 000000000000..fa865987e5f6 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21a.C @@ -0,0 +1,14 @@ +/* PR c++/111918 */ +/* { dg-do compile { target c++11 } } */ +/* { dg-options "" } Suppress default -pedantic-errors so we can test permerror functionality. */ +extern int g (); +float f1{123456789}; /* { dg-error "-Wnarrowing" } */ +float f2{g ()}; /* { dg-warning "-Wnarrowing" } */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnarrowing" +float f3{123456789}; /* { dg-bogus "-Wnarrowing" } */ +float f4{g ()}; /* { dg-bogus "-Wnarrowing" } */ +#pragma GCC diagnostic pop +float f5{123456789}; /* { dg-bogus "warning" "warning in place of error" } */ + /* { dg-error "-Wnarrowing" "" { target *-*-* } .-1 } */ +float f6{g ()}; /* { dg-warning "-Wnarrowing" } */ diff --git a/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21b.C b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21b.C new file mode 100644 index 000000000000..b8049358acc4 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21b.C @@ -0,0 +1,9 @@ +/* PR c++/111918 */ +/* { dg-do compile { target c++11 } } */ +/* { dg-options "-Wno-error=narrowing" } */ +float f1{123456789}; /* { dg-warning "-Wnarrowing" } */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnarrowing" +float f2{123456789}; /* { dg-bogus "-Wnarrowing" } */ +#pragma GCC diagnostic pop +float f3{123456789}; /* { dg-warning "-Wnarrowing" } */ diff --git a/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21c.C b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21c.C new file mode 100644 index 000000000000..6a98dd081767 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21c.C @@ -0,0 +1,9 @@ +/* PR c++/111918 */ +/* { dg-do compile { target c++11 } } */ +/* { dg-options "-fpermissive" } */ +float f1{123456789}; /* { dg-warning "-Wnarrowing" } */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnarrowing" +float f2{123456789}; /* { dg-bogus "-Wnarrowing" } */ +#pragma GCC diagnostic pop +float f3{123456789}; /* { dg-warning "-Wnarrowing" } */ diff --git a/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21d.C b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21d.C new file mode 100644 index 000000000000..a371e0a964f9 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing21d.C @@ -0,0 +1,9 @@ +/* PR c++/111918 */ +/* { dg-do compile { target c++11 } } */ +/* { dg-options "-Wno-narrowing" } */ +float f1{123456789}; /* { dg-bogus "-Wnarrowing" } */ +#pragma GCC diagnostic push +#pragma GCC diagnostic warning "-Wnarrowing" +float f2{123456789}; /* { dg-warning "-Wnarrowing" } */ +#pragma GCC diagnostic pop +float f3{123456789}; /* { dg-bogus "-Wnarrowing" } */ diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C index 37ed0e1d163c..f53fd4ddbd3a 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C @@ -7,7 +7,7 @@ struct S { }; constexpr const int& to_ref(int i) { - return S(i).val; // { dg-warning "reference to temporary" } + return S(i).val; // { dg-message "reference to temporary" } } constexpr int ary[to_ref(98)] = { }; // { dg-error "25:size of array .ary. is not an integral" } diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration3.C new file mode 100644 index 000000000000..2b41b456fc34 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration3.C @@ -0,0 +1,13 @@ +// PR c++/111132 +// { dg-do compile { target c++11 } } + +constexpr bool bar(void) { + return true; +} + +constexpr bool foo() { + constexpr bool bar(void); + return bar(); +} + +static_assert(foo(), ""); diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration4.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration4.C new file mode 100644 index 000000000000..c58247218c67 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration4.C @@ -0,0 +1,14 @@ +// PR c++/111132 +// { dg-do compile { target c++11 } } + +constexpr bool bar(void) { + return true; +} + +constexpr bool bar(void); + +constexpr bool foo() { + return bar(); +} + +static_assert(foo(), ""); diff --git a/gcc/testsuite/g++.dg/cpp0x/enum44.C b/gcc/testsuite/g++.dg/cpp0x/enum44.C new file mode 100644 index 000000000000..92408c922171 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/enum44.C @@ -0,0 +1,30 @@ +// PR c++/103825 +// { dg-do compile { target c++11 } } + +enum class Type { Pawn }; +struct Piece { + Type type : 4; +}; + +void +foo () +{ + switch (Piece().type) + case Type::Pawn:; + + auto x = Piece().type; + switch (x) + case Type::Pawn:; +} + +enum class En {A}; +struct St {En field :1;}; + +void +bar () +{ + volatile St s = {En::A}; + switch(s.field) { + case En::A : break; + } +} diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-ref1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-ref1.C new file mode 100644 index 000000000000..f893f12dafa1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-ref1.C @@ -0,0 +1,16 @@ +// PR c++/113141 +// { dg-do compile { target c++11 } } + +struct ConvToRef { + operator int&(); +}; + +struct A { int& r; }; + +void f(A); + +int main() { + ConvToRef c; + A a{{c}}; + f({{c}}); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-ref2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-ref2.C new file mode 100644 index 000000000000..401d868d8206 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-ref2.C @@ -0,0 +1,10 @@ +// CWG1996 +// { dg-do compile { target c++11 } } + +struct S { operator struct D &(); } s; +D &d{s}; // OK, direct binding + +namespace N1 { + struct S { operator volatile struct D &(); } s; + const D &dr{s}; // { dg-error "invalid user-defined|discards qualifiers" } +} diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-ref3.C b/gcc/testsuite/g++.dg/cpp0x/initlist-ref3.C new file mode 100644 index 000000000000..e2cc1deace57 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-ref3.C @@ -0,0 +1,13 @@ +// CWG1996 +// { dg-do compile { target c++11 } } + +struct D { constexpr D() {} } d; +struct S { + template + constexpr operator T& () const { return d; } +}; +constexpr S s; +constexpr const D &dr1(s); +static_assert (&dr1 == &d, ""); +constexpr const D &dr2{s}; +static_assert (&dr2 == &d, ""); diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept85.C b/gcc/testsuite/g++.dg/cpp0x/noexcept85.C new file mode 100644 index 000000000000..b415bb46bc94 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/noexcept85.C @@ -0,0 +1,33 @@ +// PR c++/114349 +// { dg-do compile { target c++11 } } + +using A = struct {}; +template