diff options
author | Thomas Schwinge <tschwinge@baylibre.com> | 2024-03-22 09:49:13 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@baylibre.com> | 2024-03-22 09:49:13 +0100 |
commit | 4c445f0015b9779d17d0ca7e8a6fc62cb5cf9e5a (patch) | |
tree | 712603f483cb781c846928c2aa769af75c247251 | |
parent | 83c5b0292a9af1362f8b56bf495405d30a262131 (diff) | |
parent | 4ded42c2c5a5c977dbf67b71c5d78f8a6dca7cbb (diff) | |
download | gcc-4c445f0015b9779d17d0ca7e8a6fc62cb5cf9e5a.zip gcc-4c445f0015b9779d17d0ca7e8a6fc62cb5cf9e5a.tar.gz gcc-4c445f0015b9779d17d0ca7e8a6fc62cb5cf9e5a.tar.bz2 |
Merge commit '00dea7e8c41b672730d6e2c891b6012a83d8842c^' into HEAD
207 files changed, 10490 insertions, 1320 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog index e3b7a4d..02de42f 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * update-copyright.py (GenericFilter): Skip gpl_v3_without_node.texi. + (GCCFilter): Skip GmcOptions.cc. + 2023-12-21 Alexandre Oliva <oliva@adacore.com> * compare_tests: Add tool to test lines. Match tabs besides diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a935ce0..4b0e6c6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,45 @@ +2024-01-03 Kwok Cheung Yeung <kcy@codesourcery.com> + + * tree-core.h (enum omp_clause_code): Move OMP_CLAUSE_INDIRECT to before + OMP_CLAUSE__SIMDUID_. + * tree.cc (omp_clause_num_ops): Update position of entry for + OMP_CLAUSE_INDIRECT to correspond with omp_clause_code. + (omp_clause_code_name): Likewise. + +2024-01-03 Kwok Cheung Yeung <kcy@codesourcery.com> + + * config/nvptx/nvptx.cc (nvptx_record_offload_symbol): Restucture + printing of FUNC_MAP/IND_FUNC_MAP labels. + +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * gcc.cc (process_command): Update copyright notice dates. + * gcov-dump.cc (print_version): Ditto. + * gcov.cc (print_version): Ditto. + * gcov-tool.cc (print_version): Ditto. + * gengtype.cc (create_file): Ditto. + * doc/cpp.texi: Bump @copying's copyright year. + * doc/cppinternals.texi: Ditto. + * doc/gcc.texi: Ditto. + * doc/gccint.texi: Ditto. + * doc/gcov.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + +2024-01-03 Xi Ruoyao <xry111@xry111.site> + + * config/loongarch/simd.md (fmax<mode>3): New define_insn. + (fmin<mode>3): Likewise. + (reduc_fmax_scal_<mode>3): New define_expand. + (reduc_fmin_scal_<mode>3): Likewise. + +2024-01-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> + + PR target/113112 + * config/riscv/riscv-vector-costs.cc (compute_nregs_for_mode): Add rgroup info. + (max_number_of_live_regs): Ditto. + (has_unexpected_spills_p): Ditto. + 2024-01-02 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com> Jin Ma <jinma@linux.alibaba.com> Xianmiao Qu <cooper.qu@linux.alibaba.com> diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 53df001..e5d3623 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20240103 +20240104 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 8a8bc73..deb12e1 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1273,6 +1273,8 @@ FLAGS_TO_PASS = \ # All option source files ALL_OPT_FILES=$(lang_opt_files) $(extra_opt_files) +ALL_OPT_URL_FILES=$(patsubst %, %.urls, $(ALL_OPT_FILES)) + # Target specific, C specific object file C_TARGET_OBJS=@c_target_objs@ @@ -1289,7 +1291,7 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@ RUST_TARGET_OBJS=@rust_target_objs@ # Object files for gcc many-languages driver. -GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o +GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o c-family-warn = $(STRICT_WARN) @@ -1612,6 +1614,7 @@ OBJS = \ optinfo.o \ optinfo-emit-json.o \ options-save.o \ + options-urls.o \ opts-global.o \ ordered-hash-map-tests.o \ passes.o \ @@ -1838,7 +1841,8 @@ OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \ # compiler and containing target-dependent code. OBJS-libcommon-target = $(common_out_object_file) prefix.o \ opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \ - hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o + hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o \ + options-urls.o # This lists all host objects for the front ends. ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS)) @@ -2441,9 +2445,9 @@ s-specs : Makefile $(STAMP) s-specs optionlist: s-options ; @true -s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk +s-options: $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) Makefile $(srcdir)/opt-gather.awk LC_ALL=C ; export LC_ALL ; \ - $(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist + $(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) > tmp-optionlist $(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist $(STAMP) s-options @@ -2459,6 +2463,12 @@ options-save.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \ -f $(srcdir)/optc-save-gen.awk \ -v header_name="config.h system.h coretypes.h tm.h" < $< > $@ +options-urls.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \ + $(srcdir)/options-urls-cc-gen.awk + $(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opt-read.awk \ + -f $(srcdir)/options-urls-cc-gen.awk \ + -v header_name="config.h system.h coretypes.h tm.h" < $< > $@ + options.h: s-options-h ; @true s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \ $(srcdir)/opth-gen.awk @@ -3612,6 +3622,22 @@ $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES) DESTDIR=$(@D) \ $(SHELL) $(srcdir)/doc/install.texi2html +# Regenerate the .opt.urls files from the generated html, and from the .opt +# files. Doing so requires all languages that have their own HTML manuals +# to be enabled. +.PHONY: regenerate-opt-urls +OPT_URLS_HTML_DEPS = $(build_htmldir)/gcc/Option-Index.html \ + $(build_htmldir)/gdc/Option-Index.html \ + $(build_htmldir)/gfortran/Option-Index.html + +regenerate-opt-urls: $(srcdir)/regenerate-opt-urls.py $(OPT_URLS_HTML_DEPS) + $(srcdir)/regenerate-opt-urls.py $(build_htmldir) $(shell dirname $(srcdir)) + +# Run the unit tests for regenerate-opt-urls.py +.PHONY: regenerate-opt-urls-unit-test +regenerate-opt-urls-unit-test: $(OPT_URLS_HTML_DEPS) + $(srcdir)/regenerate-opt-urls.py $(build_htmldir) $(shell dirname $(srcdir)) --unit-test + MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 \ doc/fsf-funding.7 doc/gcov-tool.1 doc/gcov-dump.1 \ $(if $(filter yes,@enable_lto@),doc/lto-dump.1) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index dc0c0df..0446fa0 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. + Copyright (C) 2024 Free Software Foundation, Inc. diff --git a/gcc/ada/gcc-interface/lang.opt.urls b/gcc/ada/gcc-interface/lang.opt.urls new file mode 100644 index 0000000..7913bcb --- /dev/null +++ b/gcc/ada/gcc-interface/lang.opt.urls @@ -0,0 +1,30 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/ada/gcc-interface/lang.opt and generated HTML + +I +UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) + +; skipping UrlSuffix for 'Wall' due to multiple URLs: +; duplicate: 'gcc/Standard-Libraries.html#index-Wall-1' +; duplicate: 'gcc/Warning-Options.html#index-Wall' +Wall +LangUrlSuffix_D(gdc/Warnings.html#index-Wall) + +nostdinc +UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc) + +nostdlib +UrlSuffix(gcc/Link-Options.html#index-nostdlib) + +; skipping UrlSuffix for 'fshort-enums' due to multiple URLs: +; duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums' +; duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3' +; duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1' + +; skipping UrlSuffix for 'fsigned-char' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char' +; duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1' + +; skipping UrlSuffix for 'funsigned-char' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char' +; duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1' + diff --git a/gcc/analyzer/access-diagram.cc b/gcc/analyzer/access-diagram.cc index 25e6c92..9555ee8 100644 --- a/gcc/analyzer/access-diagram.cc +++ b/gcc/analyzer/access-diagram.cc @@ -1334,7 +1334,7 @@ public: logger->log ("showing first and final element in array type"); region_model_manager *mgr = m_op.m_model.get_manager (); tree domain = TYPE_DOMAIN (base_type); - if (TYPE_MIN_VALUE (domain) && TYPE_MAX_VALUE (domain)) + if (domain && TYPE_MIN_VALUE (domain) && TYPE_MAX_VALUE (domain)) { const svalue *min_idx_sval = mgr->get_or_create_constant_svalue (TYPE_MIN_VALUE (domain)); @@ -1364,7 +1364,7 @@ public: gcc_assert (m_boundaries != nullptr); tree domain = TYPE_DOMAIN (base_type); - if (!(TYPE_MIN_VALUE (domain) && TYPE_MAX_VALUE (domain))) + if (!(domain && TYPE_MIN_VALUE (domain) && TYPE_MAX_VALUE (domain))) return; const int table_y = 0; diff --git a/gcc/analyzer/analyzer.opt.urls b/gcc/analyzer/analyzer.opt.urls new file mode 100644 index 0000000..5fcab72 --- /dev/null +++ b/gcc/analyzer/analyzer.opt.urls @@ -0,0 +1,215 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/analyzer/analyzer.opt and generated HTML + +Wanalyzer-allocation-size +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-allocation-size) + +Wanalyzer-deref-before-check +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-deref-before-check) + +Wanalyzer-double-fclose +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-fclose) + +Wanalyzer-double-free +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free) + +Wanalyzer-exposure-through-output-file +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-output-file) + +Wanalyzer-exposure-through-uninit-copy +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-uninit-copy) + +Wanalyzer-fd-access-mode-mismatch +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-access-mode-mismatch) + +Wanalyzer-fd-double-close +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-double-close) + +Wanalyzer-fd-leak +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-leak) + +Wanalyzer-fd-phase-mismatch +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-phase-mismatch) + +Wanalyzer-fd-type-mismatch +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-type-mismatch) + +Wanalyzer-fd-use-after-close +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-after-close) + +Wanalyzer-fd-use-without-check +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-without-check) + +Wanalyzer-file-leak +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-file-leak) + +Wanalyzer-free-of-non-heap +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-free-of-non-heap) + +Wanalyzer-imprecise-fp-arithmetic +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-imprecise-fp-arithmetic) + +Wanalyzer-infinite-loop +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-loop) + +Wanalyzer-infinite-recursion +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-recursion) + +Wanalyzer-jump-through-null +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-jump-through-null) + +Wanalyzer-malloc-leak +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-malloc-leak) + +Wanalyzer-mismatching-deallocation +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-mismatching-deallocation) + +Wanalyzer-out-of-bounds +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-out-of-bounds) + +Wanalyzer-overlapping-buffers +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-overlapping-buffers) + +Wanalyzer-possible-null-argument +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-argument) + +Wanalyzer-possible-null-dereference +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-dereference) + +Wanalyzer-unsafe-call-within-signal-handler +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-unsafe-call-within-signal-handler) + +Wanalyzer-null-argument +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-argument) + +Wanalyzer-null-dereference +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-dereference) + +Wanalyzer-putenv-of-auto-var +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-putenv-of-auto-var) + +Wanalyzer-shift-count-negative +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-negative) + +Wanalyzer-shift-count-overflow +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-overflow) + +Wanalyzer-stale-setjmp-buffer +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-stale-setjmp-buffer) + +Wanalyzer-tainted-allocation-size +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-allocation-size) + +Wanalyzer-tainted-array-index +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-array-index) + +Wanalyzer-tainted-assertion +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-assertion) + +Wanalyzer-tainted-divisor +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-divisor) + +Wanalyzer-tainted-offset +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset) + +Wanalyzer-tainted-size +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size) + +Wanalyzer-undefined-behavior-strtok +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-undefined-behavior-strtok) + +Wanalyzer-use-after-free +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-after-free) + +Wanalyzer-use-of-pointer-in-stale-stack-frame +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-pointer-in-stale-stack-frame) + +Wanalyzer-va-arg-type-mismatch +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-arg-type-mismatch) + +Wanalyzer-va-list-exhausted +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-exhausted) + +Wanalyzer-va-list-leak +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-leak) + +Wanalyzer-va-list-use-after-va-end +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-use-after-va-end) + +Wanalyzer-write-to-const +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const) + +Wanalyzer-write-to-string-literal +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal) + +Wanalyzer-use-of-uninitialized-value +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value) + +Wanalyzer-symbol-too-complex +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-symbol-too-complex) + +Wanalyzer-too-complex +UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-too-complex) + +fanalyzer-checker= +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-checker) + +fanalyzer-debug-text-art +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-debug-text-art) + +fanalyzer-fine-grained +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-fine-grained) + +fanalyzer-feasibility +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-feasibility) + +fanalyzer-show-duplicate-count +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-duplicate-count) + +fanalyzer-state-purge +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-purge) + +fanalyzer-state-merge +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-merge) + +fanalyzer-suppress-followups +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-suppress-followups) + +fanalyzer-transitivity +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-transitivity) + +fanalyzer-show-events-in-system-headers +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-events-in-system-headers) + +fanalyzer-call-summaries +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-call-summaries) + +fanalyzer-undo-inlining +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-undo-inlining) + +fdump-analyzer +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer) + +fdump-analyzer-stderr +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-stderr) + +fdump-analyzer-callgraph +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-callgraph) + +fdump-analyzer-exploded-graph +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-graph) + +fdump-analyzer-exploded-paths +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-paths) + +fdump-analyzer-json +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-json) + +fdump-analyzer-state-purge +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-state-purge) + +fdump-analyzer-supergraph +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-supergraph) + +fdump-analyzer-untracked +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-untracked) + diff --git a/gcc/analyzer/checker-event.cc b/gcc/analyzer/checker-event.cc index c9c07b3c..3ff3aea 100644 --- a/gcc/analyzer/checker-event.cc +++ b/gcc/analyzer/checker-event.cc @@ -55,6 +55,8 @@ along with GCC; see the file COPYING3. If not see #include "analyzer/constraint-manager.h" #include "analyzer/checker-event.h" #include "analyzer/exploded-graph.h" +#include "diagnostic-format-sarif.h" +#include "tree-logical-location.h" #if ENABLE_ANALYZER @@ -106,46 +108,6 @@ event_kind_to_string (enum event_kind ek) } } -/* A class for fixing up fndecls and stack depths in checker_event, based - on inlining records. - - The early inliner runs before the analyzer, which can lead to confusing - output. - - Tne base fndecl and depth within a checker_event are from call strings - in program_points, which reflect the call strings after inlining. - This class lets us offset the depth and fix up the reported fndecl and - stack depth to better reflect the user's original code. */ - -class inlining_info -{ -public: - inlining_info (location_t loc) - { - inlining_iterator iter (loc); - m_inner_fndecl = iter.get_fndecl (); - int num_frames = 0; - while (!iter.done_p ()) - { - m_outer_fndecl = iter.get_fndecl (); - num_frames++; - iter.next (); - } - if (num_frames > 1) - m_extra_frames = num_frames - 1; - else - m_extra_frames = 0; - } - - tree get_inner_fndecl () const { return m_inner_fndecl; } - int get_extra_frames () const { return m_extra_frames; } - -private: - tree m_outer_fndecl; - tree m_inner_fndecl; - int m_extra_frames; -}; - /* class checker_event : public diagnostic_event. */ /* checker_event's ctor. */ @@ -182,6 +144,30 @@ checker_event::get_meaning () const return meaning (); } +/* Implementation of diagnostic_event::maybe_add_sarif_properties + for checker_event. */ + +void +checker_event:: +maybe_add_sarif_properties (sarif_object &thread_flow_loc_obj) const +{ + sarif_property_bag &props = thread_flow_loc_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/checker_event/" + props.set (PROPERTY_PREFIX "emission_id", + diagnostic_event_id_to_json (m_emission_id)); + props.set_string (PROPERTY_PREFIX "kind", event_kind_to_string (m_kind)); + + if (m_original_fndecl != m_effective_fndecl) + { + tree_logical_location logical_loc (m_original_fndecl); + props.set (PROPERTY_PREFIX "original_fndecl", + make_sarif_logical_location_object (logical_loc)); + } + if (m_original_depth != m_effective_depth) + props.set_integer (PROPERTY_PREFIX "original_depth", m_original_depth); +#undef PROPERTY_PREFIX +} + /* Dump this event to PP (for debugging/logging purposes). */ void @@ -538,6 +524,21 @@ state_change_event::get_meaning () const /* class superedge_event : public checker_event. */ +/* Implementation of diagnostic_event::maybe_add_sarif_properties + for superedge_event. */ + +void +superedge_event::maybe_add_sarif_properties (sarif_object &thread_flow_loc_obj) + const +{ + checker_event::maybe_add_sarif_properties (thread_flow_loc_obj); + sarif_property_bag &props = thread_flow_loc_obj.get_or_create_properties (); +#define PROPERTY_PREFIX "gcc/analyzer/superedge_event/" + if (m_sedge) + props.set (PROPERTY_PREFIX "superedge", m_sedge->to_json ()); +#undef PROPERTY_PREFIX +} + /* Get the callgraph_superedge for this superedge_event, which must be for an interprocedural edge, rather than a CFG edge. */ @@ -588,6 +589,8 @@ superedge_event::superedge_event (enum event_kind kind, m_eedge (eedge), m_sedge (eedge.m_sedge), m_var (NULL_TREE), m_critical_state (0) { + /* Note that m_sedge can be nullptr for e.g. jumps through + function pointers. */ } /* class cfg_edge_event : public superedge_event. */ diff --git a/gcc/analyzer/checker-event.h b/gcc/analyzer/checker-event.h index 01300ef..7d8915c 100644 --- a/gcc/analyzer/checker-event.h +++ b/gcc/analyzer/checker-event.h @@ -118,6 +118,9 @@ public: return 0; } + void + maybe_add_sarif_properties (sarif_object &thread_flow_loc_obj) const override; + /* Additional functionality. */ int get_original_stack_depth () const { return m_original_depth; } @@ -391,6 +394,9 @@ public: class superedge_event : public checker_event { public: + void maybe_add_sarif_properties (sarif_object &thread_flow_loc_obj) + const override; + /* Mark this edge event as being either an interprocedural call or return in which VAR is in STATE, and that this is critical to the diagnostic (so that get_desc can attempt to get a better description diff --git a/gcc/analyzer/inlining-iterator.h b/gcc/analyzer/inlining-iterator.h index d6314d0..e65caa4 100644 --- a/gcc/analyzer/inlining-iterator.h +++ b/gcc/analyzer/inlining-iterator.h @@ -106,4 +106,44 @@ private: tree m_next_abstract_origin; }; +/* A class for fixing up fndecls and stack depths in checker_event, based + on inlining records. + + The early inliner runs before the analyzer, which can lead to confusing + output. + + Tne base fndecl and depth within a checker_event are from call strings + in program_points, which reflect the call strings after inlining. + This class lets us offset the depth and fix up the reported fndecl and + stack depth to better reflect the user's original code. */ + +class inlining_info +{ +public: + inlining_info (location_t loc) + { + inlining_iterator iter (loc); + m_inner_fndecl = iter.get_fndecl (); + int num_frames = 0; + while (!iter.done_p ()) + { + m_outer_fndecl = iter.get_fndecl (); + num_frames++; + iter.next (); + } + if (num_frames > 1) + m_extra_frames = num_frames - 1; + else + m_extra_frames = 0; + } + + tree get_inner_fndecl () const { return m_inner_fndecl; } + int get_extra_frames () const { return m_extra_frames; } + +private: + tree m_outer_fndecl; + tree m_inner_fndecl; + int m_extra_frames; +}; + #endif /* GCC_ANALYZER_INLINING_ITERATOR_H */ diff --git a/gcc/analyzer/sm-malloc.cc b/gcc/analyzer/sm-malloc.cc index 8da2e7c..2e0cf8a 100644 --- a/gcc/analyzer/sm-malloc.cc +++ b/gcc/analyzer/sm-malloc.cc @@ -46,6 +46,7 @@ along with GCC; see the file COPYING3. If not see #include "analyzer/program-state.h" #include "analyzer/checker-event.h" #include "analyzer/exploded-graph.h" +#include "analyzer/inlining-iterator.h" #if ENABLE_ANALYZER @@ -2168,6 +2169,15 @@ maybe_complain_about_deref_before_check (sm_context *sm_ctxt, if (checked_in_frame->get_index () > assumed_nonnull_in_frame->get_index ()) return; + /* Don't complain if STMT was inlined from another function, to avoid + similar false positives involving shared helper functions. */ + if (stmt->location) + { + inlining_info info (stmt->location); + if (info.get_extra_frames () > 0) + return; + } + tree diag_ptr = sm_ctxt->get_diagnostic_tree (ptr); if (diag_ptr) sm_ctxt->warn diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls new file mode 100644 index 0000000..5365c8e --- /dev/null +++ b/gcc/c-family/c.opt.urls @@ -0,0 +1,1433 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/c-family/c.opt and generated HTML + +A +UrlSuffix(gcc/Preprocessor-Options.html#index-A) + +C +UrlSuffix(gcc/Preprocessor-Options.html#index-C) + +CC +UrlSuffix(gcc/Preprocessor-Options.html#index-CC) + +D +UrlSuffix(gcc/Preprocessor-Options.html#index-D-1) + +; skipping UrlSuffix for 'E' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-E-1' +; duplicate: 'gcc/Overall-Options.html#index-E' + +F +UrlSuffix(gcc/Darwin-Options.html#index-F) + +fgimple +UrlSuffix(gcc/C-Dialect-Options.html#index-fgimple) + +H +UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H) + +I +UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) + +M +UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M) + +MD +UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD) + +MF +UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF) + +MG +UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG) + +MM +UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM) + +MMD +UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD) + +Mno-modules +UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules) + +MP +UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP) + +MQ +UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ) + +MT +UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT) + +fdeps-format= +UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-format) + +fdeps-file= +UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-file) + +fdeps-target= +UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-target) + +P +UrlSuffix(gcc/Preprocessor-Options.html#index-P) + +U +UrlSuffix(gcc/Preprocessor-Options.html#index-U) + +Wabi +UrlSuffix(gcc/Warning-Options.html#index-Wabi) + +Wabi= +UrlSuffix(gcc/Warning-Options.html#index-Wabi) + +Wabi-tag +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag) + +Wabsolute-value +UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value) + +Waddress +UrlSuffix(gcc/Warning-Options.html#index-Waddress) + +Waligned-new +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new) + +Waligned-new= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new) + +; skipping UrlSuffix for 'Wall' due to multiple URLs: +; duplicate: 'gcc/Standard-Libraries.html#index-Wall-1' +; duplicate: 'gcc/Warning-Options.html#index-Wall' +Wall +LangUrlSuffix_D(gdc/Warnings.html#index-Wall) + +Walloca +UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca) + +Walloc-size +UrlSuffix(gcc/Warning-Options.html#index-Walloc-size) + +Walloc-size-larger-than= +UrlSuffix(gcc/Warning-Options.html#index-Walloc-size-larger-than_003d) + +Walloc-zero +UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero) + +Walloca-larger-than= +UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than) + +Warray-bounds= +UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds) + +Warray-compare +UrlSuffix(gcc/Warning-Options.html#index-Warray-compare) + +Warray-parameter +UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter) + +Warray-parameter= +UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter) + +Wzero-length-bounds +UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds) + +Wassign-intercept +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept) + +Wbad-function-cast +UrlSuffix(gcc/Warning-Options.html#index-Wbad-function-cast) + +Wbidi-chars +UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars) + +Wbidi-chars= +UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars) + +Wbool-compare +UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare) + +Wbool-operation +UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation) + +Wframe-address +UrlSuffix(gcc/Warning-Options.html#index-Wframe-address) + +Wbuiltin-declaration-mismatch +UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch) + +Wbuiltin-macro-redefined +UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-macro-redefined) + +Wc11-c23-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc11-c23-compat) + +Wc90-c99-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc90-c99-compat) + +Wc99-c11-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc99-c11-compat) + +Wc++-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b-compat) + +Wc++11-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-compat) + +Wc++14-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-compat) + +Wc++17-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-compat) + +Wc++20-compat +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-compat) + +Wc++11-extensions +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-extensions) + +Wc++14-extensions +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-extensions) + +Wc++17-extensions +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-extensions) + +Wc++20-extensions +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-extensions) + +Wc++23-extensions +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b23-extensions) + +Wc++26-extensions +UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b26-extensions) + +Wcalloc-transposed-args +UrlSuffix(gcc/Warning-Options.html#index-Wcalloc-transposed-args) + +Wcast-function-type +UrlSuffix(gcc/Warning-Options.html#index-Wcast-function-type) + +Wcast-qual +UrlSuffix(gcc/Warning-Options.html#index-Wcast-qual) + +Wcatch-value +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value) + +Wcatch-value= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value) + +Wchar-subscripts +UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts) + +Wclobbered +UrlSuffix(gcc/Warning-Options.html#index-Wclobbered) + +Wcomma-subscript +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcomma-subscript) + +Wcomment +UrlSuffix(gcc/Warning-Options.html#index-Wcomment) + +Wcomments +UrlSuffix(gcc/Warning-Options.html#index-Wcomments) + +Wconditionally-supported +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconditionally-supported) + +Wconversion +UrlSuffix(gcc/Warning-Options.html#index-Wconversion) + +Wconversion-null +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconversion-null) + +Wcpp +UrlSuffix(gcc/Warning-Options.html#index-Wcpp) + +Wctad-maybe-unsupported +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported) + +Wctor-dtor-privacy +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctor-dtor-privacy) + +Wdangling-else +UrlSuffix(gcc/Warning-Options.html#index-Wdangling-else) + +Wdangling-pointer +UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer) + +Wdangling-pointer= +UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer) + +Wdangling-reference +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference) + +Wdate-time +UrlSuffix(gcc/Warning-Options.html#index-Wdate-time) + +Wdeclaration-after-statement +UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-after-statement) + +Wdeclaration-missing-parameter-type +UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-missing-parameter-type) + +Wdelete-incomplete +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-incomplete) + +Wdelete-non-virtual-dtor +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-non-virtual-dtor) + +Wdeprecated +UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated) + +Wdeprecated-copy +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-copy) + +Wdeprecated-enum-enum-conversion +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conversion) + +Wdeprecated-enum-float-conversion +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-float-conversion) + +Wdesignated-init +UrlSuffix(gcc/Warning-Options.html#index-Wdesignated-init) + +Wdiscarded-array-qualifiers +UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-array-qualifiers) + +Wdiscarded-qualifiers +UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers) + +Wdiv-by-zero +UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero) + +Wduplicated-branches +UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches) + +Wduplicated-cond +UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond) + +Weffc++ +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b) + +Wempty-body +UrlSuffix(gcc/Warning-Options.html#index-Wempty-body) + +Wendif-labels +UrlSuffix(gcc/Warning-Options.html#index-Wendif-labels) + +Wenum-compare +UrlSuffix(gcc/Warning-Options.html#index-Wenum-compare) + +Wenum-conversion +UrlSuffix(gcc/Warning-Options.html#index-Wenum-conversion) + +Wenum-int-mismatch +UrlSuffix(gcc/Warning-Options.html#index-Wenum-int-mismatch) + +Werror +UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror) + +Wexceptions +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions) + +Wextra +UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) + +Wextra-semi +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi) + +Wfloat-conversion +UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion) + +Wfloat-equal +UrlSuffix(gcc/Warning-Options.html#index-Wfloat-equal) + +Wformat +UrlSuffix(gcc/Warning-Options.html#index-Wformat) + +Wformat-contains-nul +UrlSuffix(gcc/Warning-Options.html#index-Wformat-contains-nul) + +Wformat-extra-args +UrlSuffix(gcc/Warning-Options.html#index-Wformat-extra-args) + +Wformat-nonliteral +UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral) + +Wformat-overflow +UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow) + +Wformat-security +UrlSuffix(gcc/Warning-Options.html#index-Wformat-security) + +Wformat-signedness +UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness) + +Wformat-truncation +UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation) + +Wformat-y2k +UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k) + +Wformat-zero-length +UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length) + +Wformat= +UrlSuffix(gcc/Warning-Options.html#index-Wformat) + +Wformat-overflow= +UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow) + +Wformat-truncation= +UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation) + +Wflex-array-member-not-at-end +UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end) + +Wif-not-aligned +UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned) + +Wignored-qualifiers +UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers) + +Wignored-attributes +UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes) + +Winaccessible-base +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base) + +Wincompatible-pointer-types +UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types) + +Winfinite-recursion +UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion) + +Waddress-of-packed-member +UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member) + +Winit-self +UrlSuffix(gcc/Warning-Options.html#index-Winit-self) + +Winit-list-lifetime +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime) + +Winterference-size +UrlSuffix(gcc/Warning-Options.html#index-Winterference-size) + +Wimplicit +UrlSuffix(gcc/Warning-Options.html#index-Wimplicit) + +Wimplicit-fallthrough= +UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough) + +Wdouble-promotion +UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion) + +Wexpansion-to-defined +UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined) + +Wimplicit-function-declaration +UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration) + +Wimplicit-int +UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int) + +Winherited-variadic-ctor +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor) + +Wint-conversion +UrlSuffix(gcc/Warning-Options.html#index-Wint-conversion) + +Wint-in-bool-context +UrlSuffix(gcc/Warning-Options.html#index-Wint-in-bool-context) + +Wint-to-pointer-cast +UrlSuffix(gcc/Warning-Options.html#index-Wint-to-pointer-cast) + +Winvalid-constexpr +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-constexpr) + +Winvalid-offsetof +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-offsetof) + +Winvalid-pch +UrlSuffix(gcc/Warning-Options.html#index-Winvalid-pch) + +Winvalid-utf8 +UrlSuffix(gcc/Warning-Options.html#index-Winvalid-utf8) + +Wjump-misses-init +UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init) + +Wliteral-suffix +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix) + +Wlogical-op +UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op) + +Wlogical-not-parentheses +UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses) + +Wlong-long +UrlSuffix(gcc/Warning-Options.html#index-Wlong-long) + +Wmain +UrlSuffix(gcc/Warning-Options.html#index-Wmain) + +Wmain +UrlSuffix(gcc/Warning-Options.html#index-Wmain) + +Wmemset-transposed-args +UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args) + +Wmemset-elt-size +UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size) + +Wmisleading-indentation +UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation) + +Wmismatched-dealloc +UrlSuffix(gcc/Warning-Options.html#index-Wmismatched-dealloc) + +Wmismatched-new-delete +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete) + +Wmismatched-tags +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags) + +Wmissing-braces +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces) + +Wmissing-declarations +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations) + +Wmissing-field-initializers +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers) + +Wmissing-requires +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires) + +Wmissing-template-keyword +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword) + +Wmultistatement-macros +UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros) + +Wmultiple-inheritance +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance) + +Wnamespaces +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces) + +Wnrvo +UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo) + +Wpacked-not-aligned +UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned) + +Wrange-loop-construct +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct) + +Wredundant-tags +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags) + +Wsized-deallocation +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation) + +Wsizeof-pointer-div +UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div) + +Wsizeof-array-div +UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div) + +Wsizeof-pointer-memaccess +UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess) + +Wsizeof-array-argument +UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument) + +Wstring-compare +UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare) + +Wstringop-overflow +UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow) + +Wstringop-overflow= +UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow) + +Wstringop-overread +UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread) + +Wstringop-truncation +UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation) + +Wstrict-flex-arrays +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays) + +Wsuggest-attribute=format +UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat) + +Wsuggest-override +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override) + +Wswitch +UrlSuffix(gcc/Warning-Options.html#index-Wno-switch) + +Wswitch-default +UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default) + +Wswitch-enum +UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum) + +Wswitch-bool +UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool) + +Wswitch-outside-range +UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range) + +Wtemplates +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates) + +Wmissing-attributes +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes) + +Wmissing-format-attribute +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute) + +Wmissing-include-dirs +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs) + +Wmissing-parameter-type +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type) + +Wmissing-prototypes +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes) + +Wmissing-variable-declarations +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations) + +Wmultichar +UrlSuffix(gcc/Warning-Options.html#index-Wmultichar) + +Wnarrowing +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing) + +Wnested-externs +UrlSuffix(gcc/Warning-Options.html#index-Wnested-externs) + +Wnoexcept +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept) + +Wnoexcept-type +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type) + +Wnon-template-friend +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend) + +Wclass-conversion +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion) + +Wclass-memaccess +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess) + +Wnon-virtual-dtor +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor) + +Wnonnull +UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull) + +Wnonnull +UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull) + +Wnonnull-compare +UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare) + +Wnormalized +UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized) + +Wnormalized= +UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized) + +Wobjc-root-class +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wobjc-root-class) + +Wold-style-cast +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-old-style-cast) + +Wold-style-declaration +UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-declaration) + +Wold-style-definition +UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-definition) + +Wopenacc-parallelism +UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism) + +Wopenmp +UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp) + +Wopenmp-simd +UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd) + +Woverlength-strings +UrlSuffix(gcc/Warning-Options.html#index-Wno-overlength-strings) + +Woverloaded-virtual +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual) + +Woverloaded-virtual= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual) + +Woverride-init +UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init) + +Woverride-init-side-effects +UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects) + +Wpacked-bitfield-compat +UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat) + +Wparentheses +UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses) + +Wpedantic +UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic) + +Wpessimizing-move +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move) + +; skipping UrlSuffix for 'Wpmf-conversions' due to multiple URLs: +; duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1' +; duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions' + +; skipping UrlSuffix for 'Wpointer-arith' due to multiple URLs: +; duplicate: 'gcc/Pointer-Arith.html#index-Wpointer-arith-1' +; duplicate: 'gcc/Warning-Options.html#index-Wno-pointer-arith' + +Wpointer-sign +UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-sign) + +Wpointer-compare +UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-compare) + +Wpointer-to-int-cast +UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-to-int-cast) + +Wpragmas +UrlSuffix(gcc/Warning-Options.html#index-Wno-pragmas) + +Wprio-ctor-dtor +UrlSuffix(gcc/Warning-Options.html#index-Wno-prio-ctor-dtor) + +Wproperty-assign-default +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-property-assign-default) + +Wprotocol +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol) + +Wplacement-new +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new) + +Wplacement-new= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new) + +Wredundant-decls +UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls) + +Wredundant-move +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move) + +Wregister +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register) + +Wreorder +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder) + +Wreturn-mismatch +UrlSuffix(gcc/Warning-Options.html#index-Wno-return-mismatch) + +Wreturn-type +UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type) + +Wscalar-storage-order +UrlSuffix(gcc/Warning-Options.html#index-Wno-scalar-storage-order) + +Wselector +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-selector) + +Wself-move +UrlSuffix(gcc/Warning-Options.html#index-Wno-self-move) + +Wsequence-point +UrlSuffix(gcc/Warning-Options.html#index-Wno-sequence-point) + +Wshadow-ivar +UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow-ivar) + +Wshift-overflow +UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow) + +Wshift-overflow= +UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow) + +Wshift-count-negative +UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-negative) + +Wshift-count-overflow +UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow) + +Wshift-negative-value +UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value) + +Warith-conversion +UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion) + +Wsign-compare +UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare) + +Wsign-compare +UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare) + +Wsign-conversion +UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion) + +Wsign-promo +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo) + +Wstrict-null-sentinel +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel) + +Wstrict-prototypes +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes) + +Wstrict-aliasing= +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing) + +Wstrict-overflow= +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow) + +Wstrict-selector-match +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match) + +Wsync-nand +UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand) + +Wsystem-headers +UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers) + +Wtautological-compare +UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare) + +Wterminate +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate) + +Wtraditional +UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional) + +Wtraditional-conversion +UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional-conversion) + +Wtrigraphs +UrlSuffix(gcc/Warning-Options.html#index-Wtrigraphs) + +Wundeclared-selector +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-undeclared-selector) + +Wundef +UrlSuffix(gcc/Warning-Options.html#index-Wno-undef) + +Wunicode +UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode) + +Wuninitialized +UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized) + +Wmaybe-uninitialized +UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized) + +Wunknown-pragmas +UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas) + +Wunsuffixed-float-constants +UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants) + +Wunused +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused) + +Wunused-local-typedefs +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs) + +Wunused-macros +UrlSuffix(gcc/Warning-Options.html#index-Wunused-macros) + +Wunused-result +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result) + +Wunused-variable +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable) + +Wunused-const-variable +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable) + +Wunused-const-variable= +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable) + +Wuse-after-free= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free) + +Wvariadic-macros +UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros) + +Wvarargs +UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs) + +Wvexing-parse +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse) + +Wvla +UrlSuffix(gcc/Warning-Options.html#index-Wno-vla) + +Wvla-larger-than= +UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-larger-than) + +Wvla-parameter +UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-parameter) + +Wvolatile +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-volatile) + +Wvolatile-register-var +UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var) + +Wvirtual-inheritance +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance) + +Wvirtual-move-assign +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign) + +Wwrite-strings +UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings) + +Wxor-used-as-pow +UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow) + +Wzero-as-null-pointer-constant +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant) + +Wuseless-cast +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast) + +Wsubobject-linkage +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage) + +Welaborated-enum-base +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base) + +Wduplicate-decl-specifier +UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier) + +Wrestrict +UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict) + +; skipping UrlSuffix for 'ansi' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1' +; duplicate: 'gcc/Non-bugs.html#index-ansi-3' +; duplicate: 'gcc/Other-Builtins.html#index-ansi-2' +; duplicate: 'gcc/Standards.html#index-ansi' + +; skipping UrlSuffix for 'd' due to multiple URLs: +; duplicate: 'gcc/Developer-Options.html#index-d-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-d' + +fabi-compat-version= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-compat-version) + +faccess-control +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faccess-control) + +fada-spec-parent= +UrlSuffix(gcc/Overall-Options.html#index-fada-spec-parent) + +faligned-new +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new) + +faligned-new= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new) + +fasm +UrlSuffix(gcc/C-Dialect-Options.html#index-fasm) + +; skipping UrlSuffix for 'fbuiltin' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin' +; duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3' +; duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1' +; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs: +; duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1' +; duplicate: 'gdc/Runtime-Options.html#index-fbuiltin' + +fcanonical-system-headers +UrlSuffix(gcc/Preprocessor-Options.html#index-fno-canonical-system-headers) + +fchar8_t +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fchar8_005ft) + +fconcepts +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts) + +fconcepts-ts +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts-ts) + +fcond-mismatch +UrlSuffix(gcc/C-Dialect-Options.html#index-fcond-mismatch) + +fconstant-string-class= +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fconstant-string-class) + +fconstexpr-depth= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-depth) + +fconstexpr-cache-depth= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-cache-depth) + +fconstexpr-fp-except +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-fp-except) + +fconstexpr-loop-limit= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-loop-limit) + +fconstexpr-ops-limit= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-ops-limit) + +fcontracts +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontracts) + +fcontract-assumption-mode= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-assumption-mode) + +fcontract-build-level= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-build-level) + +fcontract-strict-declarations= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-strict-declarations) + +fcontract-mode= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-mode) + +fcontract-continuation-mode= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-continuation-mode) + +fcontract-role= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-role) + +fcoroutines +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcoroutines) + +fdebug-cpp +UrlSuffix(gcc/Preprocessor-Options.html#index-fdebug-cpp) + +fdeclone-ctor-dtor +UrlSuffix(gcc/Optimize-Options.html#index-fdeclone-ctor-dtor) + +fdefault-inline +UrlSuffix(gcc/Inline.html#index-fno-default-inline) + +fdiagnostics-show-template-tree +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-template-tree) + +fdiagnostics-all-candidates +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fdiagnostics-all-candidates) + +fdirectives-only +UrlSuffix(gcc/Preprocessor-Options.html#index-fdirectives-only) + +; skipping UrlSuffix for 'fdollars-in-identifiers' due to multiple URLs: +; duplicate: 'gcc/Interoperation.html#index-fdollars-in-identifiers-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-fdollars-in-identifiers' + +fmacro-prefix-map= +UrlSuffix(gcc/Preprocessor-Options.html#index-fmacro-prefix-map) + +fdump-ada-spec +UrlSuffix(gcc/Overall-Options.html#index-fdump-ada-spec) + +felide-constructors +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-felide-constructors) + +felide-type +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-felide-type) + +fenforce-eh-specs +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fenforce-eh-specs) + +fexec-charset= +UrlSuffix(gcc/Preprocessor-Options.html#index-fexec-charset) + +fextended-identifiers +UrlSuffix(gcc/Preprocessor-Options.html#index-fextended-identifiers) + +finput-charset= +UrlSuffix(gcc/Preprocessor-Options.html#index-finput-charset) + +fextern-tls-init +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fextern-tls-init) + +ffold-simple-inlines +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ffold-simple-inlines) + +; skipping UrlSuffix for 'ffreestanding' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-ffreestanding-1' +; duplicate: 'gcc/Standards.html#index-ffreestanding' +; duplicate: 'gcc/Warning-Options.html#index-ffreestanding-2' + +fgnu-keywords +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fgnu-keywords) + +fgnu-runtime +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fgnu-runtime) + +fgnu89-inline +UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu89-inline) + +fhosted +UrlSuffix(gcc/C-Dialect-Options.html#index-fhosted) + +fimmediate-escalation +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimmediate-escalation) + +; skipping UrlSuffix for 'fimplement-inlines' due to multiple URLs: +; duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplement-inlines' +; duplicate: 'gcc/C_002b_002b-Interface.html#index-fno-implement-inlines-1' + +fimplicit-constexpr +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-constexpr) + +fimplicit-inline-templates +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-inline-templates) + +; skipping UrlSuffix for 'fimplicit-templates' due to multiple URLs: +; duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-templates' +; duplicate: 'gcc/Template-Instantiation.html#index-fno-implicit-templates-1' + +fnew-inheriting-ctors +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-inheriting-ctors) + +fkeep-inline-dllexport +UrlSuffix(gcc/Optimize-Options.html#index-fkeep-inline-dllexport) + +flax-vector-conversions +UrlSuffix(gcc/C-Dialect-Options.html#index-flax-vector-conversions) + +fmodules-ts +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodules-ts) + +fmodule-header +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header) + +fmodule-header= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header) + +fmodule-implicit-inline +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-implicit-inline) + +fmodule-only +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-only) + +fmodule-mapper= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-mapper) + +fmodule-lazy +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-lazy) + +Winvalid-imported-macros +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-imported-macros) + +Wcompare-distinct-pointer-types +UrlSuffix(gcc/Warning-Options.html#index-Wcompare-distinct-pointer-types) + +flang-info-include-translate +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate) + +flang-info-include-translate-not +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate-not) + +flang-info-include-translate= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate) + +flang-info-module-cmi +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi) + +flang-info-module-cmi= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi) + +fmax-include-depth= +UrlSuffix(gcc/Preprocessor-Options.html#index-fmax-include-depth) + +; skipping UrlSuffix for 'fms-extensions' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fms-extensions' +; duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fms-extensions-1' +; duplicate: 'gcc/Unnamed-Fields.html#index-fms-extensions-2' + +fnew-ttp-matching +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-ttp-matching) + +fnext-runtime +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnext-runtime) + +fnil-receivers +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnil-receivers) + +flocal-ivars +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-flocal-ivars) + +fivar-visibility= +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fivar-visibility) + +fnonansi-builtins +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-nonansi-builtins) + +fnothrow-opt +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnothrow-opt) + +fobjc-abi-version= +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-abi-version) + +fobjc-call-cxx-cdtors +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-call-cxx-cdtors) + +fobjc-direct-dispatch +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-direct-dispatch) + +fobjc-exceptions +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-exceptions) + +fobjc-gc +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-gc) + +fobjc-nilcheck +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-nilcheck) + +fopenacc +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenacc) + +fopenacc-dim= +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim) + +fopenmp +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp) + +fopenmp-simd +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-simd) + +foperator-names +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-operator-names) + +foptional-diags +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-optional-diags) + +fpch-deps +UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-deps) + +fpch-preprocess +UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-preprocess) + +fpermissive +UrlSuffix(gcc/Warning-Options.html#index-fpermissive) + +; skipping UrlSuffix for 'fplan9-extensions' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fplan9-extensions' +; duplicate: 'gcc/Unnamed-Fields.html#index-fplan9-extensions-1' + +fpreprocessed +UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed) + +ftrack-macro-expansion +UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion) + +ftrack-macro-expansion= +UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion) + +fpretty-templates +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-pretty-templates) + +fprintf-return-value +UrlSuffix(gcc/Optimize-Options.html#index-fno-printf-return-value) + +freplace-objc-classes +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-freplace-objc-classes) + +frtti +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti) + +; skipping UrlSuffix for 'fshort-enums' due to multiple URLs: +; duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums' +; duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3' +; duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1' + +fshort-wchar +UrlSuffix(gcc/Code-Gen-Options.html#index-fshort-wchar) + +; skipping UrlSuffix for 'fsigned-bitfields' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fno-signed-bitfields' +; duplicate: 'gcc/Non-bugs.html#index-fsigned-bitfields-1' + +; skipping UrlSuffix for 'fsigned-char' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char' +; duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1' + +fsized-deallocation +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fsized-deallocation) + +fstrict-flex-arrays +UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays) + +fstrict-flex-arrays= +UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays) + +fsso-struct= +UrlSuffix(gcc/C-Dialect-Options.html#index-fsso-struct) + +fstats +UrlSuffix(gcc/Developer-Options.html#index-fstats) + +fstrict-enums +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrict-enums) + +fstrong-eval-order +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order) + +fstrong-eval-order= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order) + +ftemplate-backtrace-limit= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-backtrace-limit) + +ftemplate-depth= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-depth) + +fthreadsafe-statics +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-threadsafe-statics) + +; skipping UrlSuffix for 'funsigned-bitfields' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fno-unsigned-bitfields' +; duplicate: 'gcc/Non-bugs.html#index-funsigned-bitfields-2' +; duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-funsigned-bitfields-1' + +; skipping UrlSuffix for 'funsigned-char' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char' +; duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1' + +fuse-cxa-atexit +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fuse-cxa-atexit) + +fuse-cxa-get-exception-ptr +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-use-cxa-get-exception-ptr) + +fvisibility-inlines-hidden +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-inlines-hidden) + +fvisibility-ms-compat +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-ms-compat) + +fweak +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-weak) + +fwide-exec-charset= +UrlSuffix(gcc/Preprocessor-Options.html#index-fwide-exec-charset) + +fworking-directory +UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory) + +fzero-link +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fzero-link) + +gen-decls +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-gen-decls) + +femit-struct-debug-baseonly +UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-baseonly) + +femit-struct-debug-reduced +UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-reduced) + +femit-struct-debug-detailed= +UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-detailed) + +fext-numeric-literals +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fext-numeric-literals) + +idirafter +UrlSuffix(gcc/Directory-Options.html#index-idirafter) + +imacros +UrlSuffix(gcc/Preprocessor-Options.html#index-imacros) + +imultilib +UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib) + +include +UrlSuffix(gcc/Preprocessor-Options.html#index-include) + +iprefix +UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix) + +isysroot +UrlSuffix(gcc/Directory-Options.html#index-isysroot) + +isystem +UrlSuffix(gcc/Directory-Options.html#index-isystem) + +iquote +UrlSuffix(gcc/Directory-Options.html#index-iquote) + +iwithprefix +UrlSuffix(gcc/Directory-Options.html#index-iwithprefix) + +iwithprefixbefore +UrlSuffix(gcc/Directory-Options.html#index-iwithprefixbefore) + +no-integrated-cpp +UrlSuffix(gcc/Preprocessor-Options.html#index-no-integrated-cpp) + +nostdinc +UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc) + +; skipping UrlSuffix for 'nostdinc++' due to multiple URLs: +; duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-nostdinc_002b_002b' +; duplicate: 'gcc/Directory-Options.html#index-nostdinc_002b_002b-1' + +o +UrlSuffix(gcc/Overall-Options.html#index-o) + +; skipping UrlSuffix for 'pedantic' due to multiple URLs: +; duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3' +; duplicate: 'gcc/C-Extensions.html#index-pedantic-2' +; duplicate: 'gcc/Standards.html#index-pedantic' +; duplicate: 'gcc/Warning-Options.html#index-pedantic-1' +; duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4' + +print-objc-runtime-info +UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-print-objc-runtime-info) + +remap +UrlSuffix(gcc/Preprocessor-Options.html#index-remap) + +stdlib= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-stdlib) + +; skipping UrlSuffix for 'traditional' due to multiple URLs: +; duplicate: 'gcc/Incompatibilities.html#index-traditional-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-traditional' + +traditional-cpp +UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp) + +trigraphs +UrlSuffix(gcc/Preprocessor-Options.html#index-trigraphs) + +undef +UrlSuffix(gcc/Preprocessor-Options.html#index-undef) + +v +UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v) + +w +UrlSuffix(gcc/Warning-Options.html#index-w) + diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 7670dea..3e2b5b2 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2024-01-03 Kwok Cheung Yeung <kcy@codesourcery.com> + + * c-parser.cc (c_parser_omp_clause_name): Move handling of indirect + clause to correspond to alphabetical order. + 2023-12-30 Martin Uecker <uecker@tugraz.at> * c-typeck.cc (tagged_types_tu_compatible_p): Revise. diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index 64e4360..e7b74fb 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -14899,10 +14899,10 @@ c_parser_omp_clause_name (c_parser *parser) result = PRAGMA_OMP_CLAUSE_IN_REDUCTION; else if (!strcmp ("inbranch", p)) result = PRAGMA_OMP_CLAUSE_INBRANCH; - else if (!strcmp ("indirect", p)) - result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("independent", p)) result = PRAGMA_OACC_CLAUSE_INDEPENDENT; + else if (!strcmp ("indirect", p)) + result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("is_device_ptr", p)) result = PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR; break; diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls new file mode 100644 index 0000000..4cb2d7d --- /dev/null +++ b/gcc/common.opt.urls @@ -0,0 +1,1862 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/common.opt and generated HTML + +### +UrlSuffix(gcc/Overall-Options.html#index-_0023_0023_0023) + +fversion +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion) + +B +UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B) + +; skipping UrlSuffix for 'E' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-E-1' +; duplicate: 'gcc/Overall-Options.html#index-E' + +L +UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L) + +O +UrlSuffix(gcc/Optimize-Options.html#index-O) + +Os +UrlSuffix(gcc/Optimize-Options.html#index-Os) + +Ofast +UrlSuffix(gcc/Optimize-Options.html#index-Ofast) + +Og +UrlSuffix(gcc/Optimize-Options.html#index-Og) + +Oz +UrlSuffix(gcc/Optimize-Options.html#index-Oz) + +Q +UrlSuffix(gcc/Developer-Options.html#index-Q) + +Qn +UrlSuffix(gcc/System-V-Options.html#index-Qn) + +Qy +UrlSuffix(gcc/System-V-Options.html#index-Qy) + +; skipping UrlSuffix for 'S' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-S-1' +; duplicate: 'gcc/Overall-Options.html#index-S' + +T +UrlSuffix(gcc/Link-Options.html#index-T) + +; skipping UrlSuffix for 'W' due to multiple URLs: +; duplicate: 'gcc/Incompatibilities.html#index-W-3' +; duplicate: 'gcc/Warning-Options.html#index-W' + +Waggregate-return +UrlSuffix(gcc/Warning-Options.html#index-Waggregate-return) + +Waggressive-loop-optimizations +UrlSuffix(gcc/Warning-Options.html#index-Waggressive-loop-optimizations) + +Warray-bounds +UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds) + +Warray-bounds= +UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds) + +Wuse-after-free +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free) + +Wuse-after-free= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free) + +Wattributes +UrlSuffix(gcc/Warning-Options.html#index-Wattributes) + +Wattributes= +UrlSuffix(gcc/Warning-Options.html#index-Wattributes) + +Wattribute-alias +UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias) + +Wattribute-alias= +UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias) + +Wcast-align +UrlSuffix(gcc/Warning-Options.html#index-Wcast-align) + +Wcast-align=strict +UrlSuffix(gcc/Warning-Options.html#index-Wcast-align_003dstrict) + +Wcomplain-wrong-lang +UrlSuffix(gcc/Warning-Options.html#index-Wcomplain-wrong-lang) + +Wcpp +UrlSuffix(gcc/Warning-Options.html#index-Wcpp) + +Wattribute-warning +UrlSuffix(gcc/Warning-Options.html#index-Wattribute-warning) + +Wdeprecated +UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated) + +Wdeprecated-declarations +UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated-declarations) + +Wdisabled-optimization +UrlSuffix(gcc/Warning-Options.html#index-Wdisabled-optimization) + +Werror +UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror) + +Werror= +UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror) + +Wextra +UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) + +Wfatal-errors +UrlSuffix(gcc/Warning-Options.html#index-Wfatal-errors) + +Wframe-larger-than= +UrlSuffix(gcc/Warning-Options.html#index-Wframe-larger-than_003d) + +Wfree-nonheap-object +UrlSuffix(gcc/Warning-Options.html#index-Wfree-nonheap-object) + +Whardened +UrlSuffix(gcc/Warning-Options.html#index-Whardened) + +Wimplicit-fallthrough +UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough) + +Wimplicit-fallthrough= +UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough) + +Winfinite-recursion +UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion) + +; skipping UrlSuffix for 'Winline' due to multiple URLs: +; duplicate: 'gcc/Inline.html#index-Winline-1' +; duplicate: 'gcc/Warning-Options.html#index-Winline' + +Winvalid-memory-model +UrlSuffix(gcc/Warning-Options.html#index-Winvalid-memory-model) + +Wlarger-than= +UrlSuffix(gcc/Warning-Options.html#index-Wlarger-than_003d) + +Wnonnull-compare +UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare) + +Wnull-dereference +UrlSuffix(gcc/Warning-Options.html#index-Wno-null-dereference) + +Wunsafe-loop-optimizations +UrlSuffix(gcc/Warning-Options.html#index-Wno-unsafe-loop-optimizations) + +Wmissing-noreturn +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-noreturn) + +Wodr +UrlSuffix(gcc/Warning-Options.html#index-Wno-odr) + +Woverflow +UrlSuffix(gcc/Warning-Options.html#index-Wno-overflow) + +Wlto-type-mismatch +UrlSuffix(gcc/Warning-Options.html#index-Wlto-type-mismatch) + +Wpacked +UrlSuffix(gcc/Warning-Options.html#index-Wno-packed) + +Wpadded +UrlSuffix(gcc/Warning-Options.html#index-Wno-padded) + +Wpedantic +UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic) + +Wreturn-local-addr +UrlSuffix(gcc/Warning-Options.html#index-Wno-return-local-addr) + +Wshadow +UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow) + +Wshadow=global +UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dglobal) + +Wshadow=local +UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dlocal) + +Wshadow=compatible-local +UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dcompatible-local) + +Wstack-protector +UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-protector) + +Wstack-usage= +UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-usage) + +Wstrict-aliasing +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing) + +Wstrict-aliasing= +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing) + +Wstrict-overflow +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow) + +Wstrict-overflow= +UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow) + +Wsuggest-attribute=cold +UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dcold) + +Wsuggest-attribute=const +UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dconst) + +Wsuggest-attribute=pure +UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dpure) + +Wsuggest-attribute=noreturn +UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dnoreturn) + +Wsuggest-attribute=malloc +UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dmalloc) + +Wsuggest-final-types +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-types) + +Wsuggest-final-methods +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-methods) + +Wswitch-unreachable +UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-unreachable) + +Wsystem-headers +UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers) + +Wtrampolines +UrlSuffix(gcc/Warning-Options.html#index-Wno-trampolines) + +Wtrivial-auto-var-init +UrlSuffix(gcc/Warning-Options.html#index-Wno-trivial-auto-var-init) + +Wtype-limits +UrlSuffix(gcc/Warning-Options.html#index-Wno-type-limits) + +Wuninitialized +UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized) + +Wmaybe-uninitialized +UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized) + +Wunused +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused) + +Wunused-but-set-parameter +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-parameter) + +Wunused-but-set-variable +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-variable) + +Wunused-function +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-function) + +Wunused-label +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-label) + +Wunused-parameter +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter) + +Wunused-value +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-value) + +Wunused-variable +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable) + +Wcoverage-mismatch +UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-mismatch) + +Wcoverage-invalid-line-number +UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-invalid-line-number) + +Wmissing-profile +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-profile) + +Wvector-operation-performance +UrlSuffix(gcc/Warning-Options.html#index-Wno-vector-operation-performance) + +Wtsan +UrlSuffix(gcc/Warning-Options.html#index-Wno-tsan) + +Xassembler +UrlSuffix(gcc/Assembler-Options.html#index-Xassembler) + +Xlinker +UrlSuffix(gcc/Link-Options.html#index-Xlinker) + +Xpreprocessor +UrlSuffix(gcc/Preprocessor-Options.html#index-Xpreprocessor) + +aux-info +UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info) + +aux-info= +UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info) + +coverage +UrlSuffix(gcc/Instrumentation-Options.html#index-coverage) + +; skipping UrlSuffix for 'c' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-c-1' +; duplicate: 'gcc/Overall-Options.html#index-c' + +; skipping UrlSuffix for 'd' due to multiple URLs: +; duplicate: 'gcc/Developer-Options.html#index-d-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-d' + +dumpbase +UrlSuffix(gcc/Overall-Options.html#index-dumpbase) + +dumpbase-ext +UrlSuffix(gcc/Overall-Options.html#index-dumpbase-ext) + +dumpdir +UrlSuffix(gcc/Overall-Options.html#index-dumpdir) + +dumpmachine +UrlSuffix(gcc/Developer-Options.html#index-dumpmachine) + +dumpspecs +UrlSuffix(gcc/Developer-Options.html#index-dumpspecs) + +dumpversion +UrlSuffix(gcc/Developer-Options.html#index-dumpversion) + +dumpfullversion +UrlSuffix(gcc/Developer-Options.html#index-dumpfullversion) + +e +UrlSuffix(gcc/Link-Options.html#index-e) + +fabi-version= +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-version) + +faggressive-loop-optimizations +UrlSuffix(gcc/Optimize-Options.html#index-faggressive-loop-optimizations) + +falign-functions +UrlSuffix(gcc/Optimize-Options.html#index-falign-functions) + +falign-functions= +UrlSuffix(gcc/Optimize-Options.html#index-falign-functions) + +falign-jumps +UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps) + +falign-jumps= +UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps) + +falign-labels +UrlSuffix(gcc/Optimize-Options.html#index-falign-labels) + +falign-labels= +UrlSuffix(gcc/Optimize-Options.html#index-falign-labels) + +falign-loops +UrlSuffix(gcc/Optimize-Options.html#index-falign-loops) + +falign-loops= +UrlSuffix(gcc/Optimize-Options.html#index-falign-loops) + +fallow-store-data-races +UrlSuffix(gcc/Optimize-Options.html#index-fallow-store-data-races) + +fanalyzer +UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer) + +fasan-shadow-offset= +UrlSuffix(gcc/Instrumentation-Options.html#index-fasan-shadow-offset) + +fsanitize-sections= +UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-sections) + +fsanitize-recover= +UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover) + +fsanitize-recover +UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover) + +fsanitize-trap= +UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap) + +fsanitize-trap +UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap) + +fsanitize-address-use-after-scope +UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-address-use-after-scope) + +fsanitize-undefined-trap-on-error +UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-undefined-trap-on-error) + +fasynchronous-unwind-tables +UrlSuffix(gcc/Code-Gen-Options.html#index-fasynchronous-unwind-tables) + +fauto-inc-dec +UrlSuffix(gcc/Optimize-Options.html#index-fauto-inc-dec) + +fauto-profile +UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile) + +fauto-profile= +UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile) + +fbounds-check +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check) + +fbranch-count-reg +UrlSuffix(gcc/Optimize-Options.html#index-fbranch-count-reg) + +fbranch-probabilities +UrlSuffix(gcc/Optimize-Options.html#index-fbranch-probabilities) + +fcallgraph-info +UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info) + +fcallgraph-info= +UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info) + +fcaller-saves +UrlSuffix(gcc/Optimize-Options.html#index-fcaller-saves) + +fcheck-new +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcheck-new) + +fchecking +UrlSuffix(gcc/Developer-Options.html#index-fchecking) + +fchecking= +UrlSuffix(gcc/Developer-Options.html#index-fchecking) + +fcanon-prefix-map +UrlSuffix(gcc/Overall-Options.html#index-fcanon-prefix-map) + +fcode-hoisting +UrlSuffix(gcc/Optimize-Options.html#index-fcode-hoisting) + +fcombine-stack-adjustments +UrlSuffix(gcc/Optimize-Options.html#index-fcombine-stack-adjustments) + +fcommon +UrlSuffix(gcc/Code-Gen-Options.html#index-fcommon) + +fcompare-debug +UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug) + +fcompare-debug= +UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug) + +fcompare-debug-second +UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug-second) + +fcompare-elim +UrlSuffix(gcc/Optimize-Options.html#index-fcompare-elim) + +fconserve-stack +UrlSuffix(gcc/Optimize-Options.html#index-fconserve-stack) + +fcprop-registers +UrlSuffix(gcc/Optimize-Options.html#index-fcprop-registers) + +ffold-mem-offsets +UrlSuffix(gcc/Optimize-Options.html#index-ffold-mem-offsets) + +fcrossjumping +UrlSuffix(gcc/Optimize-Options.html#index-fcrossjumping) + +fcse-follow-jumps +UrlSuffix(gcc/Optimize-Options.html#index-fcse-follow-jumps) + +fcse-skip-blocks +UrlSuffix(gcc/Optimize-Options.html#index-fcse-skip-blocks) + +fcx-limited-range +UrlSuffix(gcc/Optimize-Options.html#index-fcx-limited-range) + +fcx-fortran-rules +UrlSuffix(gcc/Optimize-Options.html#index-fcx-fortran-rules) + +fdata-sections +UrlSuffix(gcc/Optimize-Options.html#index-fdata-sections) + +fdbg-cnt-list +UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt-list) + +fdbg-cnt= +UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt) + +fdebug-prefix-map= +UrlSuffix(gcc/Debugging-Options.html#index-fdebug-prefix-map) + +ffile-prefix-map= +UrlSuffix(gcc/Overall-Options.html#index-ffile-prefix-map) + +fdebug-types-section +UrlSuffix(gcc/Debugging-Options.html#index-fdebug-types-section) + +fdefer-pop +UrlSuffix(gcc/Optimize-Options.html#index-fdefer-pop) + +fdelayed-branch +UrlSuffix(gcc/Optimize-Options.html#index-fdelayed-branch) + +fdelete-dead-exceptions +UrlSuffix(gcc/Code-Gen-Options.html#index-fdelete-dead-exceptions) + +fdelete-null-pointer-checks +UrlSuffix(gcc/Optimize-Options.html#index-fdelete-null-pointer-checks) + +fdevirtualize-at-ltrans +UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-at-ltrans) + +fdevirtualize-speculatively +UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-speculatively) + +fdevirtualize +UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize) + +fdiagnostics-show-location= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-location) + +fdiagnostics-show-caret +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-caret) + +fdiagnostics-show-labels +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-labels) + +fdiagnostics-show-line-numbers +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-line-numbers) + +fdiagnostics-color +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color) + +fdiagnostics-color= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color) + +fdiagnostics-json-formatting +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-json-formatting) + +fdiagnostics-urls= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-urls) + +fdiagnostics-column-unit= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-unit) + +fdiagnostics-column-origin= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-origin) + +fdiagnostics-format= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format) + +fdiagnostics-escape-format= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-escape-format) + +fdiagnostics-parseable-fixits +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-parseable-fixits) + +fdiagnostics-generate-patch +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-generate-patch) + +fdiagnostics-show-option +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-option) + +fdiagnostics-show-cwe +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-cwe) + +fdiagnostics-show-rules +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-rules) + +fdiagnostics-path-format= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-path-format) + +ftabstop= +UrlSuffix(gcc/Preprocessor-Options.html#index-ftabstop) + +fdiagnostics-show-path-depths +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-path-depths) + +fdiagnostics-text-art-charset= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-text-art-charset) + +fdiagnostics-minimum-margin-width= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-minimum-margin-width) + +fdisable- +UrlSuffix(gcc/Developer-Options.html#index-fdisable-) + +fenable- +UrlSuffix(gcc/Developer-Options.html#index-fenable-) + +fdump-final-insns +UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns) + +fdump-final-insns= +UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns) + +fdump-go-spec= +UrlSuffix(gcc/Overall-Options.html#index-fdump-go-spec) + +fdump-noaddr +UrlSuffix(gcc/Developer-Options.html#index-fdump-noaddr) + +freport-bug +UrlSuffix(gcc/Developer-Options.html#index-freport-bug) + +fdump-passes +UrlSuffix(gcc/Developer-Options.html#index-fdump-passes) + +fdump-unnumbered +UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered) + +fdump-unnumbered-links +UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered-links) + +fdwarf2-cfi-asm +UrlSuffix(gcc/Debugging-Options.html#index-fdwarf2-cfi-asm) + +fearly-inlining +UrlSuffix(gcc/Optimize-Options.html#index-fearly-inlining) + +fipa-sra +UrlSuffix(gcc/Optimize-Options.html#index-fipa-sra) + +feliminate-unused-debug-symbols +UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-symbols) + +feliminate-unused-debug-types +UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-types) + +femit-class-debug-always +UrlSuffix(gcc/Debugging-Options.html#index-femit-class-debug-always) + +fexceptions +UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions) + +fexpensive-optimizations +UrlSuffix(gcc/Optimize-Options.html#index-fexpensive-optimizations) + +fexcess-precision= +UrlSuffix(gcc/Optimize-Options.html#index-fexcess-precision) + +fpermitted-flt-eval-methods= +UrlSuffix(gcc/C-Dialect-Options.html#index-fpermitted-flt-eval-methods) + +ffast-math +UrlSuffix(gcc/Optimize-Options.html#index-ffast-math) + +ffat-lto-objects +UrlSuffix(gcc/Optimize-Options.html#index-ffat-lto-objects) + +ffinite-math-only +UrlSuffix(gcc/Optimize-Options.html#index-ffinite-math-only) + +ffinite-loops +UrlSuffix(gcc/Optimize-Options.html#index-ffinite-loops) + +; skipping UrlSuffix for 'ffloat-store' due to multiple URLs: +; duplicate: 'gcc/Disappointments.html#index-ffloat-store-1' +; duplicate: 'gcc/Optimize-Options.html#index-ffloat-store' + +fforward-propagate +UrlSuffix(gcc/Optimize-Options.html#index-fforward-propagate) + +ffp-contract= +UrlSuffix(gcc/Optimize-Options.html#index-ffp-contract) + +ffp-int-builtin-inexact +UrlSuffix(gcc/Optimize-Options.html#index-ffp-int-builtin-inexact) + +ffunction-cse +UrlSuffix(gcc/Optimize-Options.html#index-ffunction-cse) + +ffunction-sections +UrlSuffix(gcc/Optimize-Options.html#index-ffunction-sections) + +fgcse +UrlSuffix(gcc/Optimize-Options.html#index-fgcse) + +fgcse-lm +UrlSuffix(gcc/Optimize-Options.html#index-fgcse-lm) + +fgcse-sm +UrlSuffix(gcc/Optimize-Options.html#index-fgcse-sm) + +fgcse-las +UrlSuffix(gcc/Optimize-Options.html#index-fgcse-las) + +fgcse-after-reload +UrlSuffix(gcc/Optimize-Options.html#index-fgcse-after-reload) + +fgraphite-identity +UrlSuffix(gcc/Optimize-Options.html#index-fgraphite-identity) + +fhoist-adjacent-loads +UrlSuffix(gcc/Optimize-Options.html#index-fhoist-adjacent-loads) + +flarge-source-files +UrlSuffix(gcc/Preprocessor-Options.html#index-flarge-source-files) + +floop-parallelize-all +UrlSuffix(gcc/Optimize-Options.html#index-floop-parallelize-all) + +floop-strip-mine +UrlSuffix(gcc/Optimize-Options.html#index-floop-strip-mine) + +floop-interchange +UrlSuffix(gcc/Optimize-Options.html#index-floop-interchange) + +floop-block +UrlSuffix(gcc/Optimize-Options.html#index-floop-block) + +floop-unroll-and-jam +UrlSuffix(gcc/Optimize-Options.html#index-floop-unroll-and-jam) + +fgnu-tm +UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu-tm) + +fgnu-unique +UrlSuffix(gcc/Code-Gen-Options.html#index-fgnu-unique) + +floop-nest-optimize +UrlSuffix(gcc/Optimize-Options.html#index-floop-nest-optimize) + +fstrict-volatile-bitfields +UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-volatile-bitfields) + +fstore-merging +UrlSuffix(gcc/Optimize-Options.html#index-fstore-merging) + +fguess-branch-probability +UrlSuffix(gcc/Optimize-Options.html#index-fguess-branch-probability) + +fhardened +UrlSuffix(gcc/Instrumentation-Options.html#index-fhardened) + +fharden-compares +UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-compares) + +fharden-conditional-branches +UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-conditional-branches) + +fharden-control-flow-redundancy +UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-control-flow-redundancy) + +fhardcfr-skip-leaf +UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-skip-leaf) + +fhardcfr-check-returning-calls +UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-returning-calls) + +fhardcfr-check-exceptions +UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-exceptions) + +fhardcfr-check-noreturn-calls= +UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-noreturn-calls) + +fident +UrlSuffix(gcc/Code-Gen-Options.html#index-fident) + +fif-conversion +UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion) + +fif-conversion2 +UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion2) + +ftree-loop-if-convert +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-if-convert) + +finhibit-size-directive +UrlSuffix(gcc/Code-Gen-Options.html#index-finhibit-size-directive) + +findirect-inlining +UrlSuffix(gcc/Optimize-Options.html#index-findirect-inlining) + +finline +UrlSuffix(gcc/Optimize-Options.html#index-finline) + +finline-small-functions +UrlSuffix(gcc/Optimize-Options.html#index-finline-small-functions) + +finline-functions +UrlSuffix(gcc/Optimize-Options.html#index-finline-functions) + +finline-functions-called-once +UrlSuffix(gcc/Optimize-Options.html#index-finline-functions-called-once) + +finline-limit= +UrlSuffix(gcc/Optimize-Options.html#index-finline-limit) + +finline-stringops +UrlSuffix(gcc/Optimize-Options.html#index-finline-stringops) + +finline-stringops= +UrlSuffix(gcc/Optimize-Options.html#index-finline-stringops) + +fcf-protection +UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection) + +fcf-protection= +UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection) + +finstrument-functions +UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions) + +finstrument-functions-once +UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-once) + +finstrument-functions-exclude-function-list= +UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-function-list) + +finstrument-functions-exclude-file-list= +UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-file-list) + +fipa-cp +UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp) + +fipa-cp-clone +UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp-clone) + +fipa-bit-cp +UrlSuffix(gcc/Optimize-Options.html#index-fipa-bit-cp) + +fipa-modref +UrlSuffix(gcc/Optimize-Options.html#index-fipa-modref) + +fipa-profile +UrlSuffix(gcc/Optimize-Options.html#index-fipa-profile) + +fipa-pta +UrlSuffix(gcc/Optimize-Options.html#index-fipa-pta) + +fipa-pure-const +UrlSuffix(gcc/Optimize-Options.html#index-fipa-pure-const) + +fipa-icf +UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf) + +fipa-reference +UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference) + +fipa-reference-addressable +UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference-addressable) + +fipa-stack-alignment +UrlSuffix(gcc/Optimize-Options.html#index-fipa-stack-alignment) + +fipa-vrp +UrlSuffix(gcc/Optimize-Options.html#index-fipa-vrp) + +fira-algorithm= +UrlSuffix(gcc/Optimize-Options.html#index-fira-algorithm) + +fipa-strict-aliasing +UrlSuffix(gcc/Optimize-Options.html#index-fipa-strict-aliasing) + +fira-region= +UrlSuffix(gcc/Optimize-Options.html#index-fira-region) + +fira-hoist-pressure +UrlSuffix(gcc/Optimize-Options.html#index-fira-hoist-pressure) + +fira-loop-pressure +UrlSuffix(gcc/Optimize-Options.html#index-fira-loop-pressure) + +fira-share-save-slots +UrlSuffix(gcc/Optimize-Options.html#index-fira-share-save-slots) + +fira-share-spill-slots +UrlSuffix(gcc/Optimize-Options.html#index-fira-share-spill-slots) + +fira-verbose= +UrlSuffix(gcc/Developer-Options.html#index-fira-verbose) + +fivopts +UrlSuffix(gcc/Optimize-Options.html#index-fivopts) + +fjump-tables +UrlSuffix(gcc/Code-Gen-Options.html#index-fjump-tables) + +fbit-tests +UrlSuffix(gcc/Code-Gen-Options.html#index-fbit-tests) + +; skipping UrlSuffix for 'fkeep-inline-functions' due to multiple URLs: +; duplicate: 'gcc/Inline.html#index-fkeep-inline-functions-1' +; duplicate: 'gcc/Optimize-Options.html#index-fkeep-inline-functions' + +fkeep-static-functions +UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-functions) + +fkeep-static-consts +UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-consts) + +fleading-underscore +UrlSuffix(gcc/Code-Gen-Options.html#index-fleading-underscore) + +flra-remat +UrlSuffix(gcc/Optimize-Options.html#index-flra-remat) + +flto +UrlSuffix(gcc/Optimize-Options.html#index-flto) + +flto= +UrlSuffix(gcc/Optimize-Options.html#index-flto) + +flto-partition= +UrlSuffix(gcc/Optimize-Options.html#index-flto-partition) + +flto-compression-level= +UrlSuffix(gcc/Optimize-Options.html#index-flto-compression-level) + +flto-report +UrlSuffix(gcc/Developer-Options.html#index-flto-report) + +flto-report-wpa +UrlSuffix(gcc/Developer-Options.html#index-flto-report-wpa) + +fmath-errno +UrlSuffix(gcc/Optimize-Options.html#index-fmath-errno) + +fmax-errors= +UrlSuffix(gcc/Warning-Options.html#index-fmax-errors) LangUrlSuffix_D(gdc/Warnings.html#index-fmax-errors) + +fmem-report +UrlSuffix(gcc/Developer-Options.html#index-fmem-report) + +fmem-report-wpa +UrlSuffix(gcc/Developer-Options.html#index-fmem-report-wpa) + +fmerge-all-constants +UrlSuffix(gcc/Optimize-Options.html#index-fmerge-all-constants) + +fmerge-constants +UrlSuffix(gcc/Optimize-Options.html#index-fmerge-constants) + +fmerge-debug-strings +UrlSuffix(gcc/Debugging-Options.html#index-fmerge-debug-strings) + +fmessage-length= +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fmessage-length) + +fmodulo-sched +UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched) + +fmodulo-sched-allow-regmoves +UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched-allow-regmoves) + +fmove-loop-invariants +UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-invariants) + +fmove-loop-stores +UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-stores) + +fmultiflags +UrlSuffix(gcc/Developer-Options.html#index-fmultiflags) + +fdce +UrlSuffix(gcc/Optimize-Options.html#index-fdce) + +fdse +UrlSuffix(gcc/Optimize-Options.html#index-fdse) + +freschedule-modulo-scheduled-loops +UrlSuffix(gcc/Optimize-Options.html#index-freschedule-modulo-scheduled-loops) + +fnon-call-exceptions +UrlSuffix(gcc/Code-Gen-Options.html#index-fnon-call-exceptions) + +foffload= +UrlSuffix(gcc/C-Dialect-Options.html#index-foffload) + +foffload-options= +UrlSuffix(gcc/C-Dialect-Options.html#index-foffload-options) + +fomit-frame-pointer +UrlSuffix(gcc/Optimize-Options.html#index-fomit-frame-pointer) + +fopenmp-target-simd-clone +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone) + +fopenmp-target-simd-clone= +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone) + +fopt-info +UrlSuffix(gcc/Developer-Options.html#index-fopt-info) + +fsave-optimization-record +UrlSuffix(gcc/Developer-Options.html#index-fsave-optimization-record) + +foptimize-sibling-calls +UrlSuffix(gcc/Optimize-Options.html#index-foptimize-sibling-calls) + +fpartial-inlining +UrlSuffix(gcc/Optimize-Options.html#index-fpartial-inlining) + +fpre-ipa-mem-report +UrlSuffix(gcc/Developer-Options.html#index-fpre-ipa-mem-report) + +fpost-ipa-mem-report +UrlSuffix(gcc/Developer-Options.html#index-fpost-ipa-mem-report) + +fpack-struct +UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct) + +fpack-struct= +UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct) + +; skipping UrlSuffix for 'fpcc-struct-return' due to multiple URLs: +; duplicate: 'gcc/Code-Gen-Options.html#index-fpcc-struct-return' +; duplicate: 'gcc/Incompatibilities.html#index-fpcc-struct-return-1' + +fpeel-loops +UrlSuffix(gcc/Optimize-Options.html#index-fpeel-loops) + +fpeephole +UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole) + +fpeephole2 +UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole2) + +fPIC +UrlSuffix(gcc/Code-Gen-Options.html#index-fPIC) + +fPIE +UrlSuffix(gcc/Code-Gen-Options.html#index-fPIE) + +fpic +UrlSuffix(gcc/Code-Gen-Options.html#index-fpic) + +fpie +UrlSuffix(gcc/Code-Gen-Options.html#index-fpie) + +fplt +UrlSuffix(gcc/Code-Gen-Options.html#index-fno-plt) + +fplugin= +UrlSuffix(gcc/Overall-Options.html#index-fplugin) + +fpredictive-commoning +UrlSuffix(gcc/Optimize-Options.html#index-fpredictive-commoning) + +fprefetch-loop-arrays +UrlSuffix(gcc/Optimize-Options.html#index-fprefetch-loop-arrays) + +fprofile-abs-path +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-abs-path) + +; skipping UrlSuffix for 'fprofile-arcs' due to multiple URLs: +; duplicate: 'gcc/Instrumentation-Options.html#index-fprofile-arcs' +; duplicate: 'gcc/Other-Builtins.html#index-fprofile-arcs-1' + +fprofile-dir= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-dir) + +fprofile-note= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-note) + +fprofile-correction +UrlSuffix(gcc/Optimize-Options.html#index-fprofile-correction) + +fprofile-update= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-update) + +fprofile-filter-files= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-filter-files) + +fprofile-exclude-files= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-exclude-files) + +fprofile-reproducible= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-reproducible) + +fprofile-prefix-path= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-path) + +fprofile-prefix-map= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-map) + +fprofile-generate +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate) + +fprofile-generate= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate) + +fprofile-info-section +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section) + +fprofile-info-section= +UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section) + +fprofile-partial-training +UrlSuffix(gcc/Optimize-Options.html#index-fprofile-partial-training) + +fprofile-use +UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use) + +fprofile-use= +UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use) + +fprofile-values +UrlSuffix(gcc/Optimize-Options.html#index-fprofile-values) + +fprofile-report +UrlSuffix(gcc/Developer-Options.html#index-fprofile-report) + +fprofile-reorder-functions +UrlSuffix(gcc/Optimize-Options.html#index-fprofile-reorder-functions) + +fpatchable-function-entry= +UrlSuffix(gcc/Instrumentation-Options.html#index-fpatchable-function-entry) + +frandom-seed +UrlSuffix(gcc/Developer-Options.html#index-frandom-seed) + +frandom-seed= +UrlSuffix(gcc/Developer-Options.html#index-frandom-seed) + +frecord-gcc-switches +UrlSuffix(gcc/Code-Gen-Options.html#index-frecord-gcc-switches) + +freg-struct-return +UrlSuffix(gcc/Code-Gen-Options.html#index-freg-struct-return) + +flifetime-dse +UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse) + +flifetime-dse= +UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse) + +flive-patching +UrlSuffix(gcc/Optimize-Options.html#index-flive-patching) + +flive-patching= +UrlSuffix(gcc/Optimize-Options.html#index-flive-patching) + +fallocation-dce +UrlSuffix(gcc/Optimize-Options.html#index-fno-allocation-dce) + +flive-range-shrinkage +UrlSuffix(gcc/Optimize-Options.html#index-flive-range-shrinkage) + +frename-registers +UrlSuffix(gcc/Optimize-Options.html#index-frename-registers) + +fschedule-fusion +UrlSuffix(gcc/Optimize-Options.html#index-fschedule-fusion) + +freorder-blocks +UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks) + +freorder-blocks-algorithm= +UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-algorithm) + +freorder-blocks-and-partition +UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-and-partition) + +freorder-functions +UrlSuffix(gcc/Optimize-Options.html#index-freorder-functions) + +frerun-cse-after-loop +UrlSuffix(gcc/Optimize-Options.html#index-frerun-cse-after-loop) + +frounding-math +UrlSuffix(gcc/Optimize-Options.html#index-frounding-math) + +fsched-interblock +UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-interblock) + +fsched-pressure +UrlSuffix(gcc/Optimize-Options.html#index-fsched-pressure) + +fsched-spec +UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-spec) + +fsched-spec-load +UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load) + +fsched-spec-load-dangerous +UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load-dangerous) + +fsched-verbose= +UrlSuffix(gcc/Developer-Options.html#index-fsched-verbose) + +fsched2-use-superblocks +UrlSuffix(gcc/Optimize-Options.html#index-fsched2-use-superblocks) + +fschedule-insns +UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns) + +fschedule-insns2 +UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns2) + +fselective-scheduling +UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling) + +fselective-scheduling2 +UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling2) + +fsel-sched-pipelining +UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining) + +fsel-sched-pipelining-outer-loops +UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining-outer-loops) + +fsemantic-interposition +UrlSuffix(gcc/Optimize-Options.html#index-fsemantic-interposition) + +fsched-stalled-insns +UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns) + +fsched-stalled-insns= +UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns) + +fsched-stalled-insns-dep +UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep) + +fsched-stalled-insns-dep= +UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep) + +fsched-group-heuristic +UrlSuffix(gcc/Optimize-Options.html#index-fsched-group-heuristic) + +fsched-critical-path-heuristic +UrlSuffix(gcc/Optimize-Options.html#index-fsched-critical-path-heuristic) + +fsched-spec-insn-heuristic +UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-insn-heuristic) + +fsched-rank-heuristic +UrlSuffix(gcc/Optimize-Options.html#index-fsched-rank-heuristic) + +fsched-last-insn-heuristic +UrlSuffix(gcc/Optimize-Options.html#index-fsched-last-insn-heuristic) + +fsched-dep-count-heuristic +UrlSuffix(gcc/Optimize-Options.html#index-fsched-dep-count-heuristic) + +fsection-anchors +UrlSuffix(gcc/Optimize-Options.html#index-fsection-anchors) + +free +UrlSuffix(gcc/Optimize-Options.html#index-free-1) + +fshow-column +UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fno-show-column) + +fshrink-wrap +UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap) + +fshrink-wrap-separate +UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap-separate) + +fsignaling-nans +UrlSuffix(gcc/Optimize-Options.html#index-fsignaling-nans) + +fsigned-zeros +UrlSuffix(gcc/Optimize-Options.html#index-fno-signed-zeros) + +fsingle-precision-constant +UrlSuffix(gcc/Optimize-Options.html#index-fsingle-precision-constant) + +fsplit-ivs-in-unroller +UrlSuffix(gcc/Optimize-Options.html#index-fsplit-ivs-in-unroller) + +fsplit-stack +UrlSuffix(gcc/Instrumentation-Options.html#index-fsplit-stack) + +fsplit-wide-types +UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types) + +fsplit-wide-types-early +UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types-early) + +fssa-backprop +UrlSuffix(gcc/Optimize-Options.html#index-fssa-backprop) + +fssa-phiopt +UrlSuffix(gcc/Optimize-Options.html#index-fssa-phiopt) + +fstdarg-opt +UrlSuffix(gcc/Optimize-Options.html#index-fstdarg-opt) + +fvariable-expansion-in-unroller +UrlSuffix(gcc/Optimize-Options.html#index-fvariable-expansion-in-unroller) + +fstack-check= +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check) + +fstack-check +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check) + +fstack-clash-protection +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-clash-protection) + +fstack-limit +UrlSuffix(gcc/Instrumentation-Options.html#index-fno-stack-limit) + +fstack-limit-register= +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-register) + +fstack-limit-symbol= +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-symbol) + +fstack-protector +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector) + +fstack-protector-all +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-all) + +fstack-protector-strong +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-strong) + +fstack-protector-explicit +UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-explicit) + +fstack-usage +UrlSuffix(gcc/Developer-Options.html#index-fstack-usage) + +fstrict-aliasing +UrlSuffix(gcc/Optimize-Options.html#index-fstrict-aliasing) + +fstrict-overflow +UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-overflow) + +fstrub=strict +UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dstrict) + +fstrub=relaxed +UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003drelaxed) + +fstrub=all +UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dall) + +fstrub=at-calls +UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dat-calls) + +fstrub=internal +UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dinternal) + +fsync-libcalls +UrlSuffix(gcc/Code-Gen-Options.html#index-fsync-libcalls) + +fsyntax-only +UrlSuffix(gcc/Warning-Options.html#index-fsyntax-only) LangUrlSuffix_D(gdc/Warnings.html#index-fno-syntax-only) + +ftest-coverage +UrlSuffix(gcc/Instrumentation-Options.html#index-ftest-coverage) + +fthread-jumps +UrlSuffix(gcc/Optimize-Options.html#index-fthread-jumps) + +ftime-report +UrlSuffix(gcc/Developer-Options.html#index-ftime-report) + +ftime-report-details +UrlSuffix(gcc/Developer-Options.html#index-ftime-report-details) + +ftls-model= +UrlSuffix(gcc/Code-Gen-Options.html#index-ftls-model) + +ftoplevel-reorder +UrlSuffix(gcc/Optimize-Options.html#index-fno-toplevel-reorder) + +ftracer +UrlSuffix(gcc/Optimize-Options.html#index-ftracer) + +ftrampolines +UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampolines) + +ftrampoline-impl= +UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampoline-impl) + +ftrapping-math +UrlSuffix(gcc/Optimize-Options.html#index-fno-trapping-math) + +ftrapv +UrlSuffix(gcc/Code-Gen-Options.html#index-ftrapv) + +ftree-ccp +UrlSuffix(gcc/Optimize-Options.html#index-ftree-ccp) + +ftree-bit-ccp +UrlSuffix(gcc/Optimize-Options.html#index-ftree-bit-ccp) + +ftree-ch +UrlSuffix(gcc/Optimize-Options.html#index-ftree-ch) + +ftree-coalesce-vars +UrlSuffix(gcc/Optimize-Options.html#index-ftree-coalesce-vars) + +ftree-copy-prop +UrlSuffix(gcc/Optimize-Options.html#index-ftree-copy-prop) + +ftree-switch-conversion +UrlSuffix(gcc/Optimize-Options.html#index-ftree-switch-conversion) + +ftree-dce +UrlSuffix(gcc/Optimize-Options.html#index-ftree-dce) + +ftree-dominator-opts +UrlSuffix(gcc/Optimize-Options.html#index-ftree-dominator-opts) + +ftree-tail-merge +UrlSuffix(gcc/Optimize-Options.html#index-ftree-tail-merge) + +ftree-dse +UrlSuffix(gcc/Optimize-Options.html#index-ftree-dse) + +ftree-forwprop +UrlSuffix(gcc/Optimize-Options.html#index-ftree-forwprop) + +ftree-fre +UrlSuffix(gcc/Optimize-Options.html#index-ftree-fre) + +foptimize-strlen +UrlSuffix(gcc/Optimize-Options.html#index-foptimize-strlen) + +fisolate-erroneous-paths-dereference +UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-dereference) + +fisolate-erroneous-paths-attribute +UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-attribute) + +ftree-loop-distribution +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribution) + +ftree-loop-distribute-patterns +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribute-patterns) + +ftree-loop-im +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-im) + +ftree-loop-linear +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-linear) + +ftree-loop-ivcanon +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-ivcanon) + +ftree-loop-optimize +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-optimize) + +ftree-parallelize-loops= +UrlSuffix(gcc/Optimize-Options.html#index-ftree-parallelize-loops) + +ftree-phiprop +UrlSuffix(gcc/Optimize-Options.html#index-ftree-phiprop) + +ftree-pre +UrlSuffix(gcc/Optimize-Options.html#index-ftree-pre) + +ftree-partial-pre +UrlSuffix(gcc/Optimize-Options.html#index-ftree-partial-pre) + +ftree-pta +UrlSuffix(gcc/Optimize-Options.html#index-ftree-pta) + +ftree-reassoc +UrlSuffix(gcc/Optimize-Options.html#index-ftree-reassoc) + +ftree-sink +UrlSuffix(gcc/Optimize-Options.html#index-ftree-sink) + +ftree-slsr +UrlSuffix(gcc/Optimize-Options.html#index-ftree-slsr) + +ftree-sra +UrlSuffix(gcc/Optimize-Options.html#index-ftree-sra) + +ftree-ter +UrlSuffix(gcc/Optimize-Options.html#index-ftree-ter) + +ftree-vrp +UrlSuffix(gcc/Optimize-Options.html#index-ftree-vrp) + +fsplit-paths +UrlSuffix(gcc/Optimize-Options.html#index-fsplit-paths) + +funconstrained-commons +UrlSuffix(gcc/Optimize-Options.html#index-funconstrained-commons) + +funit-at-a-time +UrlSuffix(gcc/Optimize-Options.html#index-funit-at-a-time) + +funreachable-traps +UrlSuffix(gcc/Optimize-Options.html#index-funreachable-traps) + +funroll-loops +UrlSuffix(gcc/Optimize-Options.html#index-funroll-loops) + +funroll-all-loops +UrlSuffix(gcc/Optimize-Options.html#index-funroll-all-loops) + +fassociative-math +UrlSuffix(gcc/Optimize-Options.html#index-fassociative-math) + +freciprocal-math +UrlSuffix(gcc/Optimize-Options.html#index-freciprocal-math) + +funsafe-math-optimizations +UrlSuffix(gcc/Optimize-Options.html#index-funsafe-math-optimizations) + +funswitch-loops +UrlSuffix(gcc/Optimize-Options.html#index-funswitch-loops) + +fsplit-loops +UrlSuffix(gcc/Optimize-Options.html#index-fsplit-loops) + +fversion-loops-for-strides +UrlSuffix(gcc/Optimize-Options.html#index-fversion-loops-for-strides) + +funwind-tables +UrlSuffix(gcc/Code-Gen-Options.html#index-funwind-tables) + +fuse-ld=bfd +UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dbfd) + +fuse-ld=gold +UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dgold) + +fuse-ld=lld +UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dlld) + +fuse-ld=mold +UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dmold) + +fuse-linker-plugin +UrlSuffix(gcc/Optimize-Options.html#index-fuse-linker-plugin) + +fvar-tracking +UrlSuffix(gcc/Debugging-Options.html#index-fvar-tracking) + +fvar-tracking-assignments +UrlSuffix(gcc/Debugging-Options.html#index-fno-var-tracking-assignments) + +fvar-tracking-assignments-toggle +UrlSuffix(gcc/Developer-Options.html#index-fno-var-tracking-assignments-toggle) + +ftree-vectorize +UrlSuffix(gcc/Optimize-Options.html#index-ftree-vectorize) + +ftree-loop-vectorize +UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-vectorize) + +ftree-slp-vectorize +UrlSuffix(gcc/Optimize-Options.html#index-ftree-slp-vectorize) + +fvect-cost-model= +UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model) + +fsimd-cost-model= +UrlSuffix(gcc/Optimize-Options.html#index-fsimd-cost-model) + +fvect-cost-model +UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model) + +ftree-scev-cprop +UrlSuffix(gcc/Optimize-Options.html#index-ftree-scev-cprop) + +ftrivial-auto-var-init= +UrlSuffix(gcc/Optimize-Options.html#index-ftrivial-auto-var-init) + +fverbose-asm +UrlSuffix(gcc/Code-Gen-Options.html#index-fverbose-asm) + +fvisibility= +UrlSuffix(gcc/Code-Gen-Options.html#index-fvisibility) + +fvtable-verify= +UrlSuffix(gcc/Instrumentation-Options.html#index-fvtable-verify) + +fvtv-counts +UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-counts) + +fvtv-debug +UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-debug) + +fvpt +UrlSuffix(gcc/Optimize-Options.html#index-fvpt) + +fweb +UrlSuffix(gcc/Optimize-Options.html#index-fweb) + +ftree-builtin-call-dce +UrlSuffix(gcc/Optimize-Options.html#index-ftree-builtin-call-dce) + +fwhole-program +UrlSuffix(gcc/Optimize-Options.html#index-fwhole-program) + +fwrapv-pointer +UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv-pointer) + +fwrapv +UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv) + +fzero-initialized-in-bss +UrlSuffix(gcc/Optimize-Options.html#index-fno-zero-initialized-in-bss) + +fzero-call-used-regs= +UrlSuffix(gcc/Optimize-Options.html#index-fzero-call-used-regs) + +g +UrlSuffix(gcc/Debugging-Options.html#index-g) + +gas-loc-support +UrlSuffix(gcc/Debugging-Options.html#index-gas-loc-support) + +gas-locview-support +UrlSuffix(gcc/Debugging-Options.html#index-gas-locview-support) + +gcodeview +UrlSuffix(gcc/Debugging-Options.html#index-gcodeview) + +gcolumn-info +UrlSuffix(gcc/Debugging-Options.html#index-gcolumn-info) + +gctf +UrlSuffix(gcc/Debugging-Options.html#index-gctf) + +gbtf +UrlSuffix(gcc/Debugging-Options.html#index-gbtf) + +gdwarf +UrlSuffix(gcc/Debugging-Options.html#index-gdwarf) + +gdwarf32 +UrlSuffix(gcc/Debugging-Options.html#index-gdwarf32) + +gdwarf64 +UrlSuffix(gcc/Debugging-Options.html#index-gdwarf64) + +ggdb +UrlSuffix(gcc/Debugging-Options.html#index-ggdb) + +ginline-points +UrlSuffix(gcc/Debugging-Options.html#index-ginline-points) + +ginternal-reset-location-views +UrlSuffix(gcc/Debugging-Options.html#index-ginternal-reset-location-views) + +gpubnames +UrlSuffix(gcc/Debugging-Options.html#index-gpubnames) + +ggnu-pubnames +UrlSuffix(gcc/Debugging-Options.html#index-ggnu-pubnames) + +grecord-gcc-switches +UrlSuffix(gcc/Debugging-Options.html#index-grecord-gcc-switches) + +gsplit-dwarf +UrlSuffix(gcc/Debugging-Options.html#index-gsplit-dwarf) + +gstatement-frontiers +UrlSuffix(gcc/Debugging-Options.html#index-gstatement-frontiers) + +gstrict-dwarf +UrlSuffix(gcc/Debugging-Options.html#index-gstrict-dwarf) + +gdescribe-dies +UrlSuffix(gcc/Debugging-Options.html#index-gdescribe-dies) + +gtoggle +UrlSuffix(gcc/Developer-Options.html#index-gtoggle) + +gvariable-location-views +UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views) + +gvariable-location-views=incompat5 +UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views_003dincompat5) + +gvms +UrlSuffix(gcc/Debugging-Options.html#index-gvms) + +gz +UrlSuffix(gcc/Debugging-Options.html#index-gz) + +gz= +UrlSuffix(gcc/Debugging-Options.html#index-gz) + +iplugindir= +UrlSuffix(gcc/Directory-Options.html#index-iplugindir_003d) + +l +UrlSuffix(gcc/Link-Options.html#index-l) + +no-canonical-prefixes +UrlSuffix(gcc/Directory-Options.html#index-no-canonical-prefixes) + +nodefaultlibs +UrlSuffix(gcc/Link-Options.html#index-nodefaultlibs) + +nostartfiles +UrlSuffix(gcc/Link-Options.html#index-nostartfiles) + +nolibc +UrlSuffix(gcc/Link-Options.html#index-nolibc) + +nostdlib +UrlSuffix(gcc/Link-Options.html#index-nostdlib) + +nostdlib++ +UrlSuffix(gcc/Link-Options.html#index-nostdlib_002b_002b) + +o +UrlSuffix(gcc/Overall-Options.html#index-o) + +p +UrlSuffix(gcc/Instrumentation-Options.html#index-p) + +pass-exit-codes +UrlSuffix(gcc/Overall-Options.html#index-pass-exit-codes) + +; skipping UrlSuffix for 'pedantic' due to multiple URLs: +; duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3' +; duplicate: 'gcc/C-Extensions.html#index-pedantic-2' +; duplicate: 'gcc/Standards.html#index-pedantic' +; duplicate: 'gcc/Warning-Options.html#index-pedantic-1' +; duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4' + +; skipping UrlSuffix for 'pedantic-errors' due to multiple URLs: +; duplicate: 'gcc/Non-bugs.html#index-pedantic-errors-2' +; duplicate: 'gcc/Standards.html#index-pedantic-errors' +; duplicate: 'gcc/Warning-Options.html#index-pedantic-errors-1' +; duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-errors-3' + +pg +UrlSuffix(gcc/Instrumentation-Options.html#index-pg) + +pipe +UrlSuffix(gcc/Overall-Options.html#index-pipe) + +print-file-name= +UrlSuffix(gcc/Developer-Options.html#index-print-file-name) + +print-libgcc-file-name +UrlSuffix(gcc/Developer-Options.html#index-print-libgcc-file-name) + +print-multi-directory +UrlSuffix(gcc/Developer-Options.html#index-print-multi-directory) + +print-multi-lib +UrlSuffix(gcc/Developer-Options.html#index-print-multi-lib) + +print-multi-os-directory +UrlSuffix(gcc/Developer-Options.html#index-print-multi-os-directory) + +print-multiarch +UrlSuffix(gcc/Developer-Options.html#index-print-multiarch) + +print-prog-name= +UrlSuffix(gcc/Developer-Options.html#index-print-prog-name) + +print-search-dirs +UrlSuffix(gcc/Developer-Options.html#index-print-search-dirs) + +print-sysroot +UrlSuffix(gcc/Developer-Options.html#index-print-sysroot) + +print-sysroot-headers-suffix +UrlSuffix(gcc/Developer-Options.html#index-print-sysroot-headers-suffix) + +r +UrlSuffix(gcc/Link-Options.html#index-r) + +s +UrlSuffix(gcc/Link-Options.html#index-s) + +save-temps +UrlSuffix(gcc/Developer-Options.html#index-save-temps) + +save-temps= +UrlSuffix(gcc/Developer-Options.html#index-save-temps) + +time +UrlSuffix(gcc/Developer-Options.html#index-time) + +time= +UrlSuffix(gcc/Developer-Options.html#index-time) + +u +UrlSuffix(gcc/Link-Options.html#index-u) + +undef +UrlSuffix(gcc/Preprocessor-Options.html#index-undef) + +v +UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v) + +version +UrlSuffix(gcc/Overall-Options.html#index-version) + +w +UrlSuffix(gcc/Warning-Options.html#index-w) + +wrapper +UrlSuffix(gcc/Overall-Options.html#index-wrapper) + +x +UrlSuffix(gcc/Overall-Options.html#index-x) + +shared +UrlSuffix(gcc/Link-Options.html#index-shared) + +shared-libgcc +UrlSuffix(gcc/Link-Options.html#index-shared-libgcc) + +specs +UrlSuffix(gcc/Overall-Options.html#index-specs) + +specs= +UrlSuffix(gcc/Overall-Options.html#index-specs) + +; skipping UrlSuffix for 'static' due to multiple URLs: +; duplicate: 'gcc/Darwin-Options.html#index-static-1' +; duplicate: 'gcc/Link-Options.html#index-static' + +static-libgcc +UrlSuffix(gcc/Link-Options.html#index-static-libgcc) + +static-libphobos +LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos) + +static-libstdc++ +UrlSuffix(gcc/Link-Options.html#index-static-libstdc_002b_002b) + +static-libasan +UrlSuffix(gcc/Link-Options.html#index-static-libasan) + +static-libtsan +UrlSuffix(gcc/Link-Options.html#index-static-libtsan) + +static-liblsan +UrlSuffix(gcc/Link-Options.html#index-static-liblsan) + +static-libubsan +UrlSuffix(gcc/Link-Options.html#index-static-libubsan) + +symbolic +UrlSuffix(gcc/Link-Options.html#index-symbolic) + +no-pie +UrlSuffix(gcc/Link-Options.html#index-no-pie) + +pie +UrlSuffix(gcc/Link-Options.html#index-pie) + +static-pie +UrlSuffix(gcc/Link-Options.html#index-static-pie) + +z +UrlSuffix(gcc/Link-Options.html#index-z) + +fipa-ra +UrlSuffix(gcc/Optimize-Options.html#index-fipa-ra) + diff --git a/gcc/config/aarch64/aarch64.opt.urls b/gcc/config/aarch64/aarch64.opt.urls new file mode 100644 index 0000000..993634c --- /dev/null +++ b/gcc/config/aarch64/aarch64.opt.urls @@ -0,0 +1,93 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/aarch64/aarch64.opt and generated HTML + +mbig-endian +UrlSuffix(gcc/AArch64-Options.html#index-mbig-endian) + +mgeneral-regs-only +UrlSuffix(gcc/AArch64-Options.html#index-mgeneral-regs-only) + +mharden-sls= +UrlSuffix(gcc/AArch64-Options.html#index-mharden-sls) + +mfix-cortex-a53-835769 +UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-835769) + +mfix-cortex-a53-843419 +UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-843419) + +mlittle-endian +UrlSuffix(gcc/AArch64-Options.html#index-mlittle-endian) + +; skipping UrlSuffix for 'mcmodel=' due to finding no URLs + +mtp= +UrlSuffix(gcc/AArch64-Options.html#index-mtp) + +mstrict-align +UrlSuffix(gcc/AArch64-Options.html#index-mstrict-align) + +momit-leaf-frame-pointer +UrlSuffix(gcc/AArch64-Options.html#index-momit-leaf-frame-pointer) + +; skipping UrlSuffix for 'mtls-dialect=' due to finding no URLs + +mtls-size= +UrlSuffix(gcc/AArch64-Options.html#index-mtls-size) + +march= +UrlSuffix(gcc/AArch64-Options.html#index-march) + +mcpu= +UrlSuffix(gcc/AArch64-Options.html#index-mcpu) + +mtune= +UrlSuffix(gcc/AArch64-Options.html#index-mtune) + +mabi= +UrlSuffix(gcc/AArch64-Options.html#index-mabi) + +moverride= +UrlSuffix(gcc/AArch64-Options.html#index-moverride) + +mpc-relative-literal-loads +UrlSuffix(gcc/AArch64-Options.html#index-mpc-relative-literal-loads) + +mbranch-protection= +UrlSuffix(gcc/AArch64-Options.html#index-mbranch-protection) + +msign-return-address= +UrlSuffix(gcc/AArch64-Options.html#index-msign-return-address) + +mlow-precision-recip-sqrt +UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-recip-sqrt) + +mlow-precision-sqrt +UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-sqrt) + +mlow-precision-div +UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-div) + +mearly-ra= +UrlSuffix(gcc/AArch64-Options.html#index-mearly-ra) + +msve-vector-bits= +UrlSuffix(gcc/AArch64-Options.html#index-msve-vector-bits) + +mverbose-cost-dump +UrlSuffix(gcc/AArch64-Options.html#index-mverbose-cost-dump) + +mearly-ldp-fusion +UrlSuffix(gcc/AArch64-Options.html#index-mearly-ldp-fusion) + +mlate-ldp-fusion +UrlSuffix(gcc/AArch64-Options.html#index-mlate-ldp-fusion) + +mstack-protector-guard= +UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard) + +mstack-protector-guard-reg= +UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-reg) + +mstack-protector-guard-offset= +UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-offset) + diff --git a/gcc/config/alpha/alpha.opt.urls b/gcc/config/alpha/alpha.opt.urls new file mode 100644 index 0000000..a55c083 --- /dev/null +++ b/gcc/config/alpha/alpha.opt.urls @@ -0,0 +1,76 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/alpha.opt and generated HTML + +msoft-float +UrlSuffix(gcc/DEC-Alpha-Options.html#index-msoft-float-2) + +; skipping UrlSuffix for 'mgas' due to finding no URLs + +mieee-conformant +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-conformant) + +mieee +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee) + +mieee-with-inexact +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-with-inexact) + +mbuild-constants +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbuild-constants) + +mfloat-vax +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-vax) + +mfloat-ieee +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-ieee) + +mbwx +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbwx) + +mmax +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmax) + +mfix +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfix) + +mcix +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcix) + +mexplicit-relocs +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mexplicit-relocs) + +msmall-data +UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-data) + +mlarge-data +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-data) + +msmall-text +UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-text) + +mlarge-text +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-text) + +; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs + +; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs + +mcpu= +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcpu-4) + +mtune= +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtune-6) + +mfp-rounding-mode= +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-rounding-mode) + +mfp-trap-mode= +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-trap-mode) + +mtrap-precision= +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtrap-precision) + +mmemory-latency= +UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmemory-latency) + +; skipping UrlSuffix for 'mtls-size=' due to finding no URLs + diff --git a/gcc/config/alpha/elf.opt.urls b/gcc/config/alpha/elf.opt.urls new file mode 100644 index 0000000..d97d0fe --- /dev/null +++ b/gcc/config/alpha/elf.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/elf.opt and generated HTML + diff --git a/gcc/config/arc/arc-tables.opt.urls b/gcc/config/arc/arc-tables.opt.urls new file mode 100644 index 0000000..1e177e8 --- /dev/null +++ b/gcc/config/arc/arc-tables.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc-tables.opt and generated HTML + diff --git a/gcc/config/arc/arc.opt.urls b/gcc/config/arc/arc.opt.urls new file mode 100644 index 0000000..bb9a8eb --- /dev/null +++ b/gcc/config/arc/arc.opt.urls @@ -0,0 +1,260 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc.opt and generated HTML + +mbig-endian +UrlSuffix(gcc/ARC-Options.html#index-mbig-endian-1) + +mlittle-endian +UrlSuffix(gcc/ARC-Options.html#index-mlittle-endian-1) + +mno-cond-exec +UrlSuffix(gcc/ARC-Options.html#index-mno-cond-exec) + +mA6 +UrlSuffix(gcc/ARC-Options.html#index-mA6) + +mARC600 +UrlSuffix(gcc/ARC-Options.html#index-mARC600) + +mARC601 +UrlSuffix(gcc/ARC-Options.html#index-mARC601) + +mA7 +UrlSuffix(gcc/ARC-Options.html#index-mA7) + +mARC700 +UrlSuffix(gcc/ARC-Options.html#index-mARC700) + +mjli-always +UrlSuffix(gcc/ARC-Options.html#index-mjli-always) + +mmpy-option= +UrlSuffix(gcc/ARC-Options.html#index-mmpy-option) + +mdiv-rem +UrlSuffix(gcc/ARC-Options.html#index-mdiv-rem) + +mcode-density +UrlSuffix(gcc/ARC-Options.html#index-mcode-density) + +mmixed-code +UrlSuffix(gcc/ARC-Options.html#index-mmixed-code) + +mvolatile-cache +UrlSuffix(gcc/ARC-Options.html#index-mvolatile-cache) + +mno-volatile-cache +UrlSuffix(gcc/ARC-Options.html#index-mno-volatile-cache) + +mbarrel-shifter +UrlSuffix(gcc/ARC-Options.html#index-mbarrel-shifter) + +mnorm +UrlSuffix(gcc/ARC-Options.html#index-mnorm) + +mswap +UrlSuffix(gcc/ARC-Options.html#index-mswap) + +mmul64 +UrlSuffix(gcc/ARC-Options.html#index-mmul64) + +mno-mpy +UrlSuffix(gcc/ARC-Options.html#index-mno-mpy) + +mea +UrlSuffix(gcc/ARC-Options.html#index-mea) + +msoft-float +UrlSuffix(gcc/ARC-Options.html#index-msoft-float) + +mlong-calls +UrlSuffix(gcc/ARC-Options.html#index-mlong-calls-1) + +mno-brcc +UrlSuffix(gcc/ARC-Options.html#index-mno-brcc) + +msdata +UrlSuffix(gcc/ARC-Options.html#index-msdata) + +mmillicode +UrlSuffix(gcc/ARC-Options.html#index-mmillicode) + +mspfp +UrlSuffix(gcc/ARC-Options.html#index-mspfp) + +mspfp-compact +UrlSuffix(gcc/ARC-Options.html#index-mspfp-compact) + +mspfp-fast +UrlSuffix(gcc/ARC-Options.html#index-mspfp-fast) + +margonaut +UrlSuffix(gcc/ARC-Options.html#index-margonaut) + +mdpfp +UrlSuffix(gcc/ARC-Options.html#index-mdpfp) + +mdpfp-compact +UrlSuffix(gcc/ARC-Options.html#index-mdpfp-compact) + +mdpfp-fast +UrlSuffix(gcc/ARC-Options.html#index-mdpfp-fast) + +mno-dpfp-lrsr +UrlSuffix(gcc/ARC-Options.html#index-mno-dpfp-lrsr) + +msimd +UrlSuffix(gcc/ARC-Options.html#index-msimd) + +mcpu= +UrlSuffix(gcc/ARC-Options.html#index-mcpu-1) + +msize-level= +UrlSuffix(gcc/ARC-Options.html#index-msize-level) + +misize +UrlSuffix(gcc/ARC-Options.html#index-misize) + +mmultcost= +UrlSuffix(gcc/ARC-Options.html#index-mmultcost) + +mtune= +UrlSuffix(gcc/ARC-Options.html#index-mtune-2) + +mindexed-loads +UrlSuffix(gcc/ARC-Options.html#index-mindexed-loads) + +mauto-modify-reg +UrlSuffix(gcc/ARC-Options.html#index-mauto-modify-reg) + +mmul32x16 +UrlSuffix(gcc/ARC-Options.html#index-mmul32x16) + +munalign-prob-threshold= +UrlSuffix(gcc/ARC-Options.html#index-munalign-prob-threshold) + +mmedium-calls +UrlSuffix(gcc/ARC-Options.html#index-mmedium-calls) + +mannotate-align +UrlSuffix(gcc/ARC-Options.html#index-mannotate-align) + +malign-call +UrlSuffix(gcc/ARC-Options.html#index-malign-call) + +mRcq +UrlSuffix(gcc/ARC-Options.html#index-mRcq) + +mRcw +UrlSuffix(gcc/ARC-Options.html#index-mRcw) + +mearly-cbranchsi +UrlSuffix(gcc/ARC-Options.html#index-mearly-cbranchsi) + +mbbit-peephole +UrlSuffix(gcc/ARC-Options.html#index-mbbit-peephole) + +mcase-vector-pcrel +UrlSuffix(gcc/ARC-Options.html#index-mcase-vector-pcrel) + +mcompact-casesi +UrlSuffix(gcc/ARC-Options.html#index-mcompact-casesi) + +mq-class +UrlSuffix(gcc/ARC-Options.html#index-mq-class) + +mexpand-adddi +UrlSuffix(gcc/ARC-Options.html#index-mexpand-adddi) + +; skipping UrlSuffix for 'mcrc' due to finding no URLs + +mdsp-packa +UrlSuffix(gcc/ARC-Options.html#index-mdsp-packa) + +mdvbf +UrlSuffix(gcc/ARC-Options.html#index-mdvbf) + +mmac-d16 +UrlSuffix(gcc/ARC-Options.html#index-mmac-d16) + +mmac-24 +UrlSuffix(gcc/ARC-Options.html#index-mmac-24) + +mtelephony +UrlSuffix(gcc/ARC-Options.html#index-mtelephony) + +mxy +UrlSuffix(gcc/ARC-Options.html#index-mxy) + +mlock +UrlSuffix(gcc/ARC-Options.html#index-mlock) + +mswape +UrlSuffix(gcc/ARC-Options.html#index-mswape) + +mrtsc +UrlSuffix(gcc/ARC-Options.html#index-mrtsc) + +EB +UrlSuffix(gcc/ARC-Options.html#index-EB) + +EL +UrlSuffix(gcc/ARC-Options.html#index-EL) + +marclinux +UrlSuffix(gcc/ARC-Options.html#index-marclinux) + +marclinux_prof +UrlSuffix(gcc/ARC-Options.html#index-marclinux_005fprof) + +mlra +UrlSuffix(gcc/ARC-Options.html#index-mlra) + +mlra-priority-none +UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-none) + +mlra-priority-compact +UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-compact) + +mlra-priority-noncompact +UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-noncompact) + +mEA +UrlSuffix(gcc/ARC-Options.html#index-mEA) + +multcost= +UrlSuffix(gcc/ARC-Options.html#index-multcost) + +matomic +UrlSuffix(gcc/ARC-Options.html#index-matomic) + +mll64 +UrlSuffix(gcc/ARC-Options.html#index-mll64) + +mfpu= +UrlSuffix(gcc/ARC-Options.html#index-mfpu) + +mtp-regno= +UrlSuffix(gcc/ARC-Options.html#index-mtp-regno) + +; skipping UrlSuffix for 'mbitops' due to finding no URLs + +; skipping UrlSuffix for 'munaligned-access' due to finding no URLs + +mirq-ctrl-saved= +UrlSuffix(gcc/ARC-Options.html#index-mirq-ctrl-saved) + +mrgf-banked-regs= +UrlSuffix(gcc/ARC-Options.html#index-mrgf-banked-regs) + +mlpc-width= +UrlSuffix(gcc/ARC-Options.html#index-mlpc-width) + +mrf16 +UrlSuffix(gcc/ARC-Options.html#index-mrf16) + +mbranch-index +UrlSuffix(gcc/ARC-Options.html#index-mbranch-index) + +mcode-density-frame +UrlSuffix(gcc/ARC-Options.html#index-mcode-density-frame) + diff --git a/gcc/config/arm/arm-tables.opt.urls b/gcc/config/arm/arm-tables.opt.urls new file mode 100644 index 0000000..f0a6f8e --- /dev/null +++ b/gcc/config/arm/arm-tables.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm-tables.opt and generated HTML + diff --git a/gcc/config/arm/arm.opt.urls b/gcc/config/arm/arm.opt.urls new file mode 100644 index 0000000..b3696f7 --- /dev/null +++ b/gcc/config/arm/arm.opt.urls @@ -0,0 +1,149 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm.opt and generated HTML + +mabi= +UrlSuffix(gcc/ARM-Options.html#index-mabi-1) + +mabort-on-noreturn +UrlSuffix(gcc/ARM-Options.html#index-mabort-on-noreturn) + +mapcs +UrlSuffix(gcc/ARM-Options.html#index-mapcs) + +mapcs-frame +UrlSuffix(gcc/ARM-Options.html#index-mapcs-frame) + +march= +UrlSuffix(gcc/ARM-Options.html#index-march-2) + +marm +UrlSuffix(gcc/ARM-Options.html#index-marm) + +mbig-endian +UrlSuffix(gcc/ARM-Options.html#index-mbig-endian-2) + +mcallee-super-interworking +UrlSuffix(gcc/ARM-Options.html#index-mcallee-super-interworking) + +mcaller-super-interworking +UrlSuffix(gcc/ARM-Options.html#index-mcaller-super-interworking) + +mcpu= +UrlSuffix(gcc/ARM-Options.html#index-mcpu-2) + +mfloat-abi= +UrlSuffix(gcc/ARM-Options.html#index-mfloat-abi) + +mcmse +UrlSuffix(gcc/ARM-Options.html#index-mcmse) + +mflip-thumb +UrlSuffix(gcc/ARM-Options.html#index-mflip-thumb) + +mfp16-format= +UrlSuffix(gcc/ARM-Options.html#index-mfp16-format) + +mfpu= +UrlSuffix(gcc/ARM-Options.html#index-mfpu-1) + +; skipping UrlSuffix for 'mhard-float' due to finding no URLs + +mlittle-endian +UrlSuffix(gcc/ARM-Options.html#index-mlittle-endian-2) + +mlong-calls +UrlSuffix(gcc/ARM-Options.html#index-mlong-calls-2) + +mpic-data-is-text-relative +UrlSuffix(gcc/ARM-Options.html#index-mpic-data-is-text-relative) + +mpic-register= +UrlSuffix(gcc/ARM-Options.html#index-mpic-register) + +mpoke-function-name +UrlSuffix(gcc/ARM-Options.html#index-mpoke-function-name) + +msched-prolog +UrlSuffix(gcc/ARM-Options.html#index-msched-prolog) + +msingle-pic-base +UrlSuffix(gcc/ARM-Options.html#index-msingle-pic-base) + +; skipping UrlSuffix for 'msoft-float' due to finding no URLs + +mstructure-size-boundary= +UrlSuffix(gcc/ARM-Options.html#index-mstructure-size-boundary) + +mthumb +UrlSuffix(gcc/ARM-Options.html#index-mthumb) + +mthumb-interwork +UrlSuffix(gcc/ARM-Options.html#index-mthumb-interwork) + +mtls-dialect= +UrlSuffix(gcc/ARM-Options.html#index-mtls-dialect) + +mtp= +UrlSuffix(gcc/ARM-Options.html#index-mtp-1) + +mtpcs-frame +UrlSuffix(gcc/ARM-Options.html#index-mtpcs-frame) + +mtpcs-leaf-frame +UrlSuffix(gcc/ARM-Options.html#index-mtpcs-leaf-frame) + +mtune= +UrlSuffix(gcc/ARM-Options.html#index-mtune-4) + +mprint-tune-info +UrlSuffix(gcc/ARM-Options.html#index-mprint-tune-info) + +mverbose-cost-dump +UrlSuffix(gcc/ARM-Options.html#index-mverbose-cost-dump-1) + +mword-relocations +UrlSuffix(gcc/ARM-Options.html#index-mword-relocations) + +mrestrict-it +UrlSuffix(gcc/ARM-Options.html#index-mrestrict-it) + +mfix-cortex-m3-ldrd +UrlSuffix(gcc/ARM-Options.html#index-mfix-cortex-m3-ldrd) + +mfix-cmse-cve-2021-35465 +UrlSuffix(gcc/ARM-Options.html#index-mfix-cmse-cve-2021-35465) + +munaligned-access +UrlSuffix(gcc/ARM-Options.html#index-munaligned-access) + +mneon-for-64bits +UrlSuffix(gcc/ARM-Options.html#index-mneon-for-64bits) + +mslow-flash-data +UrlSuffix(gcc/ARM-Options.html#index-mslow-flash-data) + +masm-syntax-unified +UrlSuffix(gcc/ARM-Options.html#index-masm-syntax-unified) + +mpure-code +UrlSuffix(gcc/ARM-Options.html#index-mpure-code) + +mbe8 +UrlSuffix(gcc/ARM-Options.html#index-mbe8) + +; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs + +mbranch-protection= +UrlSuffix(gcc/ARM-Options.html#index-mbranch-protection-1) + +mgeneral-regs-only +UrlSuffix(gcc/ARM-Options.html#index-mgeneral-regs-only-1) + +mfdpic +UrlSuffix(gcc/ARM-Options.html#index-mfdpic) + +mstack-protector-guard= +UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-1) + +mstack-protector-guard-offset= +UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-offset-1) + diff --git a/gcc/config/arm/vxworks.opt.urls b/gcc/config/arm/vxworks.opt.urls new file mode 100644 index 0000000..8fe7eec --- /dev/null +++ b/gcc/config/arm/vxworks.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/vxworks.opt and generated HTML + diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls new file mode 100644 index 0000000..7af6771 --- /dev/null +++ b/gcc/config/avr/avr.opt.urls @@ -0,0 +1,71 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/avr/avr.opt and generated HTML + +mcall-prologues +UrlSuffix(gcc/AVR-Options.html#index-mcall-prologues) + +mmcu= +UrlSuffix(gcc/AVR-Options.html#index-mmcu) + +mgas-isr-prologues +UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues) + +mn-flash= +UrlSuffix(gcc/AVR-Options.html#index-mn-flash) + +mrmw +UrlSuffix(gcc/AVR-Options.html#index-mrmw) + +mshort-calls +UrlSuffix(gcc/AVR-Options.html#index-mshort-calls) + +mint8 +UrlSuffix(gcc/AVR-Options.html#index-mint8) + +mno-interrupts +UrlSuffix(gcc/AVR-Options.html#index-mno-interrupts) + +mbranch-cost= +UrlSuffix(gcc/AVR-Options.html#index-mbranch-cost-1) + +mmain-is-OS_task +UrlSuffix(gcc/AVR-Options.html#index-mmain-is-OS_005ftask) + +mtiny-stack +UrlSuffix(gcc/AVR-Options.html#index-mtiny-stack) + +mrelax +UrlSuffix(gcc/AVR-Options.html#index-mrelax) + +maccumulate-args +UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args) + +mstrict-X +UrlSuffix(gcc/AVR-Options.html#index-mstrict-X) + +msp8 +UrlSuffix(gcc/AVR-Options.html#index-msp8) + +Waddr-space-convert +UrlSuffix(gcc/AVR-Options.html#index-Waddr-space-convert) + +Wmisspelled-isr +UrlSuffix(gcc/AVR-Options.html#index-Wmisspelled-isr) + +mfract-convert-truncate +UrlSuffix(gcc/AVR-Options.html#index-mfract-convert-truncate) + +mabsdata +UrlSuffix(gcc/AVR-Options.html#index-mabsdata) + +mdouble= +UrlSuffix(gcc/AVR-Options.html#index-mdouble) + +mlong-double= +UrlSuffix(gcc/AVR-Options.html#index-mlong-double) + +nodevicelib +UrlSuffix(gcc/AVR-Options.html#index-nodevicelib) + +nodevicespecs +UrlSuffix(gcc/AVR-Options.html#index-nodevicespecs) + diff --git a/gcc/config/bfin/bfin.opt.urls b/gcc/config/bfin/bfin.opt.urls new file mode 100644 index 0000000..8210fee --- /dev/null +++ b/gcc/config/bfin/bfin.opt.urls @@ -0,0 +1,61 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/bfin/bfin.opt and generated HTML + +msim +UrlSuffix(gcc/Blackfin-Options.html#index-msim) + +mcpu= +UrlSuffix(gcc/Blackfin-Options.html#index-mcpu_003d) + +momit-leaf-frame-pointer +UrlSuffix(gcc/Blackfin-Options.html#index-momit-leaf-frame-pointer-1) + +mlow64k +UrlSuffix(gcc/Blackfin-Options.html#index-mlow64k) + +mcsync-anomaly +UrlSuffix(gcc/Blackfin-Options.html#index-mcsync-anomaly) + +mspecld-anomaly +UrlSuffix(gcc/Blackfin-Options.html#index-mspecld-anomaly) + +mid-shared-library +UrlSuffix(gcc/Blackfin-Options.html#index-mid-shared-library) + +mleaf-id-shared-library +UrlSuffix(gcc/Blackfin-Options.html#index-mleaf-id-shared-library) + +mshared-library-id= +UrlSuffix(gcc/Blackfin-Options.html#index-mshared-library-id) + +msep-data +UrlSuffix(gcc/Blackfin-Options.html#index-msep-data) + +mlong-calls +UrlSuffix(gcc/Blackfin-Options.html#index-mlong-calls-3) + +mfast-fp +UrlSuffix(gcc/Blackfin-Options.html#index-mfast-fp) + +; skipping UrlSuffix for 'mfdpic' due to finding no URLs + +minline-plt +UrlSuffix(gcc/Blackfin-Options.html#index-minline-plt) + +mstack-check-l1 +UrlSuffix(gcc/Blackfin-Options.html#index-mstack-check-l1) + +mmulticore +UrlSuffix(gcc/Blackfin-Options.html#index-mmulticore) + +mcorea +UrlSuffix(gcc/Blackfin-Options.html#index-mcorea) + +mcoreb +UrlSuffix(gcc/Blackfin-Options.html#index-mcoreb) + +msdram +UrlSuffix(gcc/Blackfin-Options.html#index-msdram) + +micplb +UrlSuffix(gcc/Blackfin-Options.html#index-micplb) + diff --git a/gcc/config/bpf/bpf.opt.urls b/gcc/config/bpf/bpf.opt.urls new file mode 100644 index 0000000..8c1e5f8 --- /dev/null +++ b/gcc/config/bpf/bpf.opt.urls @@ -0,0 +1,35 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/bpf/bpf.opt and generated HTML + +mbig-endian +UrlSuffix(gcc/eBPF-Options.html#index-mbig-endian-5) + +mlittle-endian +UrlSuffix(gcc/eBPF-Options.html#index-mlittle-endian-5) + +mco-re +UrlSuffix(gcc/eBPF-Options.html#index-mco-re) + +mjmpext +UrlSuffix(gcc/eBPF-Options.html#index-mjmpext) + +malu32 +UrlSuffix(gcc/eBPF-Options.html#index-malu32) + +mjmp32 +UrlSuffix(gcc/eBPF-Options.html#index-mjmp32) + +mv3-atomics +UrlSuffix(gcc/eBPF-Options.html#index-mv3-atomics) + +mbswap +UrlSuffix(gcc/eBPF-Options.html#index-mbswap) + +msdiv +UrlSuffix(gcc/eBPF-Options.html#index-msdiv) + +msmov +UrlSuffix(gcc/eBPF-Options.html#index-msmov) + +mcpu= +UrlSuffix(gcc/eBPF-Options.html#index-mcpu-5) + diff --git a/gcc/config/c6x/c6x-tables.opt.urls b/gcc/config/c6x/c6x-tables.opt.urls new file mode 100644 index 0000000..35d14c7 --- /dev/null +++ b/gcc/config/c6x/c6x-tables.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x-tables.opt and generated HTML + diff --git a/gcc/config/c6x/c6x.opt.urls b/gcc/config/c6x/c6x.opt.urls new file mode 100644 index 0000000..5b1c103 --- /dev/null +++ b/gcc/config/c6x/c6x.opt.urls @@ -0,0 +1,18 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x.opt and generated HTML + +mbig-endian +UrlSuffix(gcc/C6X-Options.html#index-mbig-endian-3) + +mlittle-endian +UrlSuffix(gcc/C6X-Options.html#index-mlittle-endian-3) + +msim +UrlSuffix(gcc/C6X-Options.html#index-msim-1) + +; skipping UrlSuffix for 'msdata=' due to finding no URLs + +; skipping UrlSuffix for 'mlong-calls' due to finding no URLs + +march= +UrlSuffix(gcc/C6X-Options.html#index-march-3) + diff --git a/gcc/config/cris/cris.opt.urls b/gcc/config/cris/cris.opt.urls new file mode 100644 index 0000000..56eeaa2 --- /dev/null +++ b/gcc/config/cris/cris.opt.urls @@ -0,0 +1,65 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/cris.opt and generated HTML + +mmul-bug-workaround +UrlSuffix(gcc/CRIS-Options.html#index-mmul-bug-workaround) + +metrax4 +UrlSuffix(gcc/CRIS-Options.html#index-metrax4) + +metrax100 +UrlSuffix(gcc/CRIS-Options.html#index-metrax100) + +mpdebug +UrlSuffix(gcc/CRIS-Options.html#index-mpdebug) + +mcc-init +UrlSuffix(gcc/CRIS-Options.html#index-mcc-init) + +mside-effects +UrlSuffix(gcc/CRIS-Options.html#index-mside-effects) + +mno-side-effects +UrlSuffix(gcc/CRIS-Options.html#index-mno-side-effects) + +mstack-align +UrlSuffix(gcc/CRIS-Options.html#index-mstack-align) + +mno-stack-align +UrlSuffix(gcc/CRIS-Options.html#index-mno-stack-align) + +mdata-align +UrlSuffix(gcc/CRIS-Options.html#index-mdata-align) + +mno-data-align +UrlSuffix(gcc/CRIS-Options.html#index-mno-data-align) + +mconst-align +UrlSuffix(gcc/CRIS-Options.html#index-mconst-align) + +mno-const-align +UrlSuffix(gcc/CRIS-Options.html#index-mno-const-align) + +m32-bit +UrlSuffix(gcc/CRIS-Options.html#index-m32-bit) + +m16-bit +UrlSuffix(gcc/CRIS-Options.html#index-m16-bit) + +m8-bit +UrlSuffix(gcc/CRIS-Options.html#index-m8-bit) + +mprologue-epilogue +UrlSuffix(gcc/CRIS-Options.html#index-mprologue-epilogue) + +mno-prologue-epilogue +UrlSuffix(gcc/CRIS-Options.html#index-mno-prologue-epilogue) + +mcpu= +UrlSuffix(gcc/CRIS-Options.html#index-mcpu-3) + +march= +UrlSuffix(gcc/CRIS-Options.html#index-march-4) + +mtune= +UrlSuffix(gcc/CRIS-Options.html#index-mtune-5) + diff --git a/gcc/config/cris/elf.opt.urls b/gcc/config/cris/elf.opt.urls new file mode 100644 index 0000000..bdfa01e --- /dev/null +++ b/gcc/config/cris/elf.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/elf.opt and generated HTML + +melf +UrlSuffix(gcc/CRIS-Options.html#index-melf) + +sim +UrlSuffix(gcc/CRIS-Options.html#index-sim) + diff --git a/gcc/config/csky/csky.opt.urls b/gcc/config/csky/csky.opt.urls new file mode 100644 index 0000000..96b0b17 --- /dev/null +++ b/gcc/config/csky/csky.opt.urls @@ -0,0 +1,104 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky.opt and generated HTML + +march= +UrlSuffix(gcc/C-SKY-Options.html#index-march_003d) + +mcpu= +UrlSuffix(gcc/C-SKY-Options.html#index-mcpu_003d-1) + +mbig-endian +UrlSuffix(gcc/C-SKY-Options.html#index-mbig-endian-4) + +EB +UrlSuffix(gcc/C-SKY-Options.html#index-EB-1) + +mlittle-endian +UrlSuffix(gcc/C-SKY-Options.html#index-mlittle-endian-4) + +EL +UrlSuffix(gcc/C-SKY-Options.html#index-EL-1) + +mhard-float +UrlSuffix(gcc/C-SKY-Options.html#index-mhard-float) + +msoft-float +UrlSuffix(gcc/C-SKY-Options.html#index-msoft-float-1) + +mfloat-abi= +UrlSuffix(gcc/C-SKY-Options.html#index-mfloat-abi-1) + +mfpu= +UrlSuffix(gcc/C-SKY-Options.html#index-mfpu_003d) + +mdouble-float +UrlSuffix(gcc/C-SKY-Options.html#index-mdouble-float) + +mfdivdu +UrlSuffix(gcc/C-SKY-Options.html#index-mfdivdu) + +melrw +UrlSuffix(gcc/C-SKY-Options.html#index-melrw) + +mistack +UrlSuffix(gcc/C-SKY-Options.html#index-mistack) + +mmp +UrlSuffix(gcc/C-SKY-Options.html#index-mmp) + +mcp +UrlSuffix(gcc/C-SKY-Options.html#index-mcp) + +mcache +UrlSuffix(gcc/C-SKY-Options.html#index-mcache) + +msecurity +UrlSuffix(gcc/C-SKY-Options.html#index-msecurity) + +mtrust +UrlSuffix(gcc/C-SKY-Options.html#index-mtrust) + +mdsp +UrlSuffix(gcc/C-SKY-Options.html#index-mdsp) + +medsp +UrlSuffix(gcc/C-SKY-Options.html#index-medsp) + +mvdsp +UrlSuffix(gcc/C-SKY-Options.html#index-mvdsp) + +mdiv +UrlSuffix(gcc/C-SKY-Options.html#index-mdiv) + +msmart +UrlSuffix(gcc/C-SKY-Options.html#index-msmart) + +mhigh-registers +UrlSuffix(gcc/C-SKY-Options.html#index-mhigh-registers) + +manchor +UrlSuffix(gcc/C-SKY-Options.html#index-manchor) + +mpushpop +UrlSuffix(gcc/C-SKY-Options.html#index-mpushpop) + +mmultiple-stld +UrlSuffix(gcc/C-SKY-Options.html#index-mmultiple-stld) + +mconstpool +UrlSuffix(gcc/C-SKY-Options.html#index-mconstpool) + +mstack-size +UrlSuffix(gcc/C-SKY-Options.html#index-mstack-size-1) + +mccrt +UrlSuffix(gcc/C-SKY-Options.html#index-mccrt) + +mbranch-cost= +UrlSuffix(gcc/C-SKY-Options.html#index-mbranch-cost_003d) + +msched-prolog +UrlSuffix(gcc/C-SKY-Options.html#index-msched-prolog-1) + +msim +UrlSuffix(gcc/C-SKY-Options.html#index-msim-2) + diff --git a/gcc/config/csky/csky_tables.opt.urls b/gcc/config/csky/csky_tables.opt.urls new file mode 100644 index 0000000..eaa247bc --- /dev/null +++ b/gcc/config/csky/csky_tables.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky_tables.opt and generated HTML + diff --git a/gcc/config/darwin.opt.urls b/gcc/config/darwin.opt.urls new file mode 100644 index 0000000..e83d183 --- /dev/null +++ b/gcc/config/darwin.opt.urls @@ -0,0 +1,224 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/darwin.opt and generated HTML + +dependency-file +UrlSuffix(gcc/Darwin-Options.html#index-dependency-file) + +fconstant-cfstrings +UrlSuffix(gcc/Darwin-Options.html#index-fconstant-cfstrings) + +iframework +UrlSuffix(gcc/Darwin-Options.html#index-iframework) + +mconstant-cfstrings +UrlSuffix(gcc/Darwin-Options.html#index-mconstant-cfstrings) + +; skipping UrlSuffix for 'mdynamic-no-pic' due to finding no URLs + +mfix-and-continue +UrlSuffix(gcc/Darwin-Options.html#index-mfix-and-continue) + +mkernel +UrlSuffix(gcc/Darwin-Options.html#index-mkernel) + +mmacosx-version-min= +UrlSuffix(gcc/Darwin-Options.html#index-mmacosx-version-min) + +mone-byte-bool +UrlSuffix(gcc/Darwin-Options.html#index-mone-byte-bool) + +all_load +UrlSuffix(gcc/Darwin-Options.html#index-all_005fload) + +allowable_client +UrlSuffix(gcc/Darwin-Options.html#index-allowable_005fclient) + +arch_errors_fatal +UrlSuffix(gcc/Darwin-Options.html#index-arch_005ferrors_005ffatal) + +bind_at_load +UrlSuffix(gcc/Darwin-Options.html#index-bind_005fat_005fload) + +bundle +UrlSuffix(gcc/Darwin-Options.html#index-bundle) + +bundle_loader +UrlSuffix(gcc/Darwin-Options.html#index-bundle_005floader) + +client_name +UrlSuffix(gcc/Darwin-Options.html#index-client_005fname) + +compatibility_version +UrlSuffix(gcc/Darwin-Options.html#index-compatibility_005fversion) + +current_version +UrlSuffix(gcc/Darwin-Options.html#index-current_005fversion) + +dead_strip +UrlSuffix(gcc/Darwin-Options.html#index-dead_005fstrip) + +dylib_file +UrlSuffix(gcc/Darwin-Options.html#index-dylib_005ffile) + +dylinker_install_name +UrlSuffix(gcc/Darwin-Options.html#index-dylinker_005finstall_005fname) + +dynamic +UrlSuffix(gcc/Darwin-Options.html#index-dynamic) + +dynamiclib +UrlSuffix(gcc/Darwin-Options.html#index-dynamiclib) + +exported_symbols_list +UrlSuffix(gcc/Darwin-Options.html#index-exported_005fsymbols_005flist) + +filelist +UrlSuffix(gcc/Darwin-Options.html#index-filelist) + +flat_namespace +UrlSuffix(gcc/Darwin-Options.html#index-flat_005fnamespace) + +force_cpusubtype_ALL +UrlSuffix(gcc/Darwin-Options.html#index-force_005fcpusubtype_005fALL) + +force_flat_namespace +UrlSuffix(gcc/Darwin-Options.html#index-force_005fflat_005fnamespace) + +gfull +UrlSuffix(gcc/Darwin-Options.html#index-gfull) + +gused +UrlSuffix(gcc/Darwin-Options.html#index-gused) + +headerpad_max_install_names +UrlSuffix(gcc/Darwin-Options.html#index-headerpad_005fmax_005finstall_005fnames) + +image_base +UrlSuffix(gcc/Darwin-Options.html#index-image_005fbase) + +init +UrlSuffix(gcc/Darwin-Options.html#index-init) + +install_name +UrlSuffix(gcc/Darwin-Options.html#index-install_005fname) + +keep_private_externs +UrlSuffix(gcc/Darwin-Options.html#index-keep_005fprivate_005fexterns) + +multi_module +UrlSuffix(gcc/Darwin-Options.html#index-multi_005fmodule) + +multiply_defined +UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined) + +multiply_defined_unused +UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined_005funused) + +no_dead_strip_inits_and_terms +UrlSuffix(gcc/Darwin-Options.html#index-no_005fdead_005fstrip_005finits_005fand_005fterms) + +nodefaultrpaths +UrlSuffix(gcc/Darwin-Options.html#index-nodefaultrpaths) + +nofixprebinding +UrlSuffix(gcc/Darwin-Options.html#index-nofixprebinding) + +nomultidefs +UrlSuffix(gcc/Darwin-Options.html#index-nomultidefs) + +noprebind +UrlSuffix(gcc/Darwin-Options.html#index-noprebind) + +noseglinkedit +UrlSuffix(gcc/Darwin-Options.html#index-noseglinkedit) + +pagezero_size +UrlSuffix(gcc/Darwin-Options.html#index-pagezero_005fsize) + +prebind +UrlSuffix(gcc/Darwin-Options.html#index-prebind) + +prebind_all_twolevel_modules +UrlSuffix(gcc/Darwin-Options.html#index-prebind_005fall_005ftwolevel_005fmodules) + +private_bundle +UrlSuffix(gcc/Darwin-Options.html#index-private_005fbundle) + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + +read_only_relocs +UrlSuffix(gcc/Darwin-Options.html#index-read_005fonly_005frelocs) + +sectalign +UrlSuffix(gcc/Darwin-Options.html#index-sectalign) + +sectcreate +UrlSuffix(gcc/Darwin-Options.html#index-sectcreate) + +sectobjectsymbols +UrlSuffix(gcc/Darwin-Options.html#index-sectobjectsymbols) + +sectorder +UrlSuffix(gcc/Darwin-Options.html#index-sectorder) + +seg_addr_table +UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable) + +seg_addr_table_filename +UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable_005ffilename) + +seg1addr +UrlSuffix(gcc/Darwin-Options.html#index-seg1addr) + +segaddr +UrlSuffix(gcc/Darwin-Options.html#index-segaddr) + +seglinkedit +UrlSuffix(gcc/Darwin-Options.html#index-seglinkedit) + +segprot +UrlSuffix(gcc/Darwin-Options.html#index-segprot) + +segs_read_only_addr +UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fonly_005faddr) + +segs_read_write_addr +UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fwrite_005faddr) + +single_module +UrlSuffix(gcc/Darwin-Options.html#index-single_005fmodule) + +sub_library +UrlSuffix(gcc/Darwin-Options.html#index-sub_005flibrary) + +sub_umbrella +UrlSuffix(gcc/Darwin-Options.html#index-sub_005fumbrella) + +twolevel_namespace +UrlSuffix(gcc/Darwin-Options.html#index-twolevel_005fnamespace) + +umbrella +UrlSuffix(gcc/Darwin-Options.html#index-umbrella) + +undefined +UrlSuffix(gcc/Darwin-Options.html#index-undefined) + +unexported_symbols_list +UrlSuffix(gcc/Darwin-Options.html#index-unexported_005fsymbols_005flist) + +weak_reference_mismatches +UrlSuffix(gcc/Darwin-Options.html#index-weak_005freference_005fmismatches) + +whatsloaded +UrlSuffix(gcc/Darwin-Options.html#index-whatsloaded) + +whyload +UrlSuffix(gcc/Darwin-Options.html#index-whyload) + +X +LangUrlSuffix_D(gdc/Code-Generation.html#index-X) + diff --git a/gcc/config/dragonfly.opt.urls b/gcc/config/dragonfly.opt.urls new file mode 100644 index 0000000..62e2e21 --- /dev/null +++ b/gcc/config/dragonfly.opt.urls @@ -0,0 +1,9 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/dragonfly.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + diff --git a/gcc/config/epiphany/epiphany.opt.urls b/gcc/config/epiphany/epiphany.opt.urls new file mode 100644 index 0000000..a8e28c4 --- /dev/null +++ b/gcc/config/epiphany/epiphany.opt.urls @@ -0,0 +1,52 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/epiphany/epiphany.opt and generated HTML + +mhalf-reg-file +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mhalf-reg-file) + +mprefer-short-insn-regs +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mprefer-short-insn-regs) + +mbranch-cost= +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mbranch-cost) + +mcmove +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mcmove) + +mnops= +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mnops) + +msoft-cmpsf +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msoft-cmpsf) + +msplit-lohi +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-lohi) + +mstack-offset= +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mstack-offset) + +mround-nearest +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mround-nearest) + +mlong-calls +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mlong-calls) + +; skipping UrlSuffix for 'mshort-calls' due to finding no URLs + +msmall16 +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msmall16) + +mfp-mode= +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mfp-mode) + +mvect-double +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mvect-double) + +max-vect-align= +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-max-vect-align) + +msplit-vecmove-early +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-vecmove-early) + +m1reg- +UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-m1reg-) + diff --git a/gcc/config/fr30/fr30.opt.urls b/gcc/config/fr30/fr30.opt.urls new file mode 100644 index 0000000..eabbfbf --- /dev/null +++ b/gcc/config/fr30/fr30.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/fr30/fr30.opt and generated HTML + +msmall-model +UrlSuffix(gcc/FR30-Options.html#index-msmall-model) + +mno-lsim +UrlSuffix(gcc/FR30-Options.html#index-mno-lsim) + diff --git a/gcc/config/freebsd.opt.urls b/gcc/config/freebsd.opt.urls new file mode 100644 index 0000000..3be69e4 --- /dev/null +++ b/gcc/config/freebsd.opt.urls @@ -0,0 +1,9 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/freebsd.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + diff --git a/gcc/config/frv/frv.opt.urls b/gcc/config/frv/frv.opt.urls new file mode 100644 index 0000000..d3d3757 --- /dev/null +++ b/gcc/config/frv/frv.opt.urls @@ -0,0 +1,111 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/frv/frv.opt and generated HTML + +macc-4 +UrlSuffix(gcc/FRV-Options.html#index-macc-4) + +macc-8 +UrlSuffix(gcc/FRV-Options.html#index-macc-8) + +malign-labels +UrlSuffix(gcc/FRV-Options.html#index-malign-labels) + +malloc-cc +UrlSuffix(gcc/FRV-Options.html#index-malloc-cc) + +; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs + +mcond-exec +UrlSuffix(gcc/FRV-Options.html#index-mcond-exec) + +mcond-move +UrlSuffix(gcc/FRV-Options.html#index-mcond-move) + +mcpu= +UrlSuffix(gcc/FRV-Options.html#index-mcpu-6) + +; skipping UrlSuffix for 'mdebug' due to finding no URLs + +mdouble +UrlSuffix(gcc/FRV-Options.html#index-mdouble-1) + +mdword +UrlSuffix(gcc/FRV-Options.html#index-mdword) + +mfdpic +UrlSuffix(gcc/FRV-Options.html#index-mfdpic-1) + +mfixed-cc +UrlSuffix(gcc/FRV-Options.html#index-mfixed-cc) + +mfpr-32 +UrlSuffix(gcc/FRV-Options.html#index-mfpr-32) + +mfpr-64 +UrlSuffix(gcc/FRV-Options.html#index-mfpr-64) + +mgpr-32 +UrlSuffix(gcc/FRV-Options.html#index-mgpr-32) + +mgpr-64 +UrlSuffix(gcc/FRV-Options.html#index-mgpr-64) + +mgprel-ro +UrlSuffix(gcc/FRV-Options.html#index-mgprel-ro) + +mhard-float +UrlSuffix(gcc/FRV-Options.html#index-mhard-float-1) + +minline-plt +UrlSuffix(gcc/FRV-Options.html#index-minline-plt-1) + +mlibrary-pic +UrlSuffix(gcc/FRV-Options.html#index-mlibrary-pic) + +mlinked-fp +UrlSuffix(gcc/FRV-Options.html#index-mlinked-fp) + +mlong-calls +UrlSuffix(gcc/FRV-Options.html#index-mlong-calls-4) + +mmedia +UrlSuffix(gcc/FRV-Options.html#index-mmedia) + +mmuladd +UrlSuffix(gcc/FRV-Options.html#index-mmuladd) + +mmulti-cond-exec +UrlSuffix(gcc/FRV-Options.html#index-mmulti-cond-exec) + +mnested-cond-exec +UrlSuffix(gcc/FRV-Options.html#index-mnested-cond-exec) + +mno-eflags +UrlSuffix(gcc/FRV-Options.html#index-mno-eflags) + +moptimize-membar +UrlSuffix(gcc/FRV-Options.html#index-moptimize-membar) + +mpack +UrlSuffix(gcc/FRV-Options.html#index-mpack) + +mscc +UrlSuffix(gcc/FRV-Options.html#index-mscc) + +msoft-float +UrlSuffix(gcc/FRV-Options.html#index-msoft-float-3) + +mTLS +UrlSuffix(gcc/FRV-Options.html#index-mTLS) + +mtls +UrlSuffix(gcc/FRV-Options.html#index-mtls) + +mtomcat-stats +UrlSuffix(gcc/FRV-Options.html#index-mtomcat-stats) + +multilib-library-pic +UrlSuffix(gcc/FRV-Options.html#index-multilib-library-pic) + +mvliw-branch +UrlSuffix(gcc/FRV-Options.html#index-mvliw-branch) + diff --git a/gcc/config/ft32/ft32.opt.urls b/gcc/config/ft32/ft32.opt.urls new file mode 100644 index 0000000..707cb83 --- /dev/null +++ b/gcc/config/ft32/ft32.opt.urls @@ -0,0 +1,20 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/ft32/ft32.opt and generated HTML + +msim +UrlSuffix(gcc/FT32-Options.html#index-msim-3) + +mlra +UrlSuffix(gcc/FT32-Options.html#index-mlra-1) + +mnodiv +UrlSuffix(gcc/FT32-Options.html#index-mnodiv) + +mft32b +UrlSuffix(gcc/FT32-Options.html#index-mft32b) + +mcompress +UrlSuffix(gcc/FT32-Options.html#index-mcompress) + +mnopm +UrlSuffix(gcc/FT32-Options.html#index-mnopm) + diff --git a/gcc/config/fused-madd.opt.urls b/gcc/config/fused-madd.opt.urls new file mode 100644 index 0000000..0bd906c --- /dev/null +++ b/gcc/config/fused-madd.opt.urls @@ -0,0 +1,4 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/fused-madd.opt and generated HTML + +; skipping UrlSuffix for 'mfused-madd' due to finding no URLs + diff --git a/gcc/config/g.opt.urls b/gcc/config/g.opt.urls new file mode 100644 index 0000000..4ffd5cb --- /dev/null +++ b/gcc/config/g.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/g.opt and generated HTML + +G +UrlSuffix(gcc/System-V-Options.html#index-G-5) + diff --git a/gcc/config/gcn/gcn.opt.urls b/gcc/config/gcn/gcn.opt.urls new file mode 100644 index 0000000..7bc0ef4 --- /dev/null +++ b/gcc/config/gcn/gcn.opt.urls @@ -0,0 +1,23 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/gcn/gcn.opt and generated HTML + +march= +UrlSuffix(gcc/AMD-GCN-Options.html#index-march-1) + +mtune= +UrlSuffix(gcc/AMD-GCN-Options.html#index-mtune-1) + +; skipping UrlSuffix for 'm32' due to finding no URLs + +; skipping UrlSuffix for 'm64' due to finding no URLs + +; skipping UrlSuffix for 'mgomp' due to finding no URLs + +mstack-size= +UrlSuffix(gcc/AMD-GCN-Options.html#index-mstack-size) + +mxnack= +UrlSuffix(gcc/AMD-GCN-Options.html#index-mxnack) + +msram-ecc= +UrlSuffix(gcc/AMD-GCN-Options.html#index-msram-ecc) + diff --git a/gcc/config/gnu-user.opt.urls b/gcc/config/gnu-user.opt.urls new file mode 100644 index 0000000..42021e1 --- /dev/null +++ b/gcc/config/gnu-user.opt.urls @@ -0,0 +1,9 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/gnu-user.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + diff --git a/gcc/config/h8300/h8300.opt.urls b/gcc/config/h8300/h8300.opt.urls new file mode 100644 index 0000000..8cbd7c3 --- /dev/null +++ b/gcc/config/h8300/h8300.opt.urls @@ -0,0 +1,29 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/h8300/h8300.opt and generated HTML + +ms +UrlSuffix(gcc/H8_002f300-Options.html#index-ms) + +ms2600 +UrlSuffix(gcc/H8_002f300-Options.html#index-ms2600) + +mint32 +UrlSuffix(gcc/H8_002f300-Options.html#index-mint32) + +mrelax +UrlSuffix(gcc/H8_002f300-Options.html#index-mrelax-1) + +mh +UrlSuffix(gcc/H8_002f300-Options.html#index-mh) + +mn +UrlSuffix(gcc/H8_002f300-Options.html#index-mn) + +malign-300 +UrlSuffix(gcc/H8_002f300-Options.html#index-malign-300) + +mexr +UrlSuffix(gcc/H8_002f300-Options.html#index-mexr) + +mno-exr +UrlSuffix(gcc/H8_002f300-Options.html#index-mno-exr) + diff --git a/gcc/config/hpux11.opt.urls b/gcc/config/hpux11.opt.urls new file mode 100644 index 0000000..84fef2e --- /dev/null +++ b/gcc/config/hpux11.opt.urls @@ -0,0 +1,6 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/hpux11.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + diff --git a/gcc/config/i386/cygming.opt.urls b/gcc/config/i386/cygming.opt.urls new file mode 100644 index 0000000..87799be --- /dev/null +++ b/gcc/config/i386/cygming.opt.urls @@ -0,0 +1,30 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygming.opt and generated HTML + +mconsole +UrlSuffix(gcc/x86-Windows-Options.html#index-mconsole) + +mdll +UrlSuffix(gcc/x86-Windows-Options.html#index-mdll) + +mnop-fun-dllimport +UrlSuffix(gcc/x86-Windows-Options.html#index-mnop-fun-dllimport) + +; skipping UrlSuffix for 'mthreads' due to multiple URLs: +; duplicate: 'gcc/x86-Options.html#index-mthreads' +; duplicate: 'gcc/x86-Windows-Options.html#index-mthreads-1' + +mwin32 +UrlSuffix(gcc/x86-Windows-Options.html#index-mwin32) + +mwindows +UrlSuffix(gcc/x86-Windows-Options.html#index-mwindows) + +mpe-aligned-commons +UrlSuffix(gcc/x86-Windows-Options.html#index-mpe-aligned-commons) + +fset-stack-executable +UrlSuffix(gcc/x86-Windows-Options.html#index-fno-set-stack-executable) + +fwritable-relocated-rdata +UrlSuffix(gcc/x86-Windows-Options.html#index-fno-writable-relocated-rdata) + diff --git a/gcc/config/i386/cygwin.opt.urls b/gcc/config/i386/cygwin.opt.urls new file mode 100644 index 0000000..c484efc --- /dev/null +++ b/gcc/config/i386/cygwin.opt.urls @@ -0,0 +1,6 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygwin.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + diff --git a/gcc/config/i386/djgpp.opt.urls b/gcc/config/i386/djgpp.opt.urls new file mode 100644 index 0000000..8a723ab0 --- /dev/null +++ b/gcc/config/i386/djgpp.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/djgpp.opt and generated HTML + diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls new file mode 100644 index 0000000..9b988fd --- /dev/null +++ b/gcc/config/i386/i386.opt.urls @@ -0,0 +1,611 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/i386.opt and generated HTML + +m128bit-long-double +UrlSuffix(gcc/x86-Options.html#index-m128bit-long-double) + +m80387 +UrlSuffix(gcc/x86-Options.html#index-m80387) + +m96bit-long-double +UrlSuffix(gcc/x86-Options.html#index-m96bit-long-double) + +mlong-double-80 +UrlSuffix(gcc/x86-Options.html#index-mlong-double-80) + +mlong-double-64 +UrlSuffix(gcc/x86-Options.html#index-mlong-double-64-1) + +mlong-double-128 +UrlSuffix(gcc/x86-Options.html#index-mlong-double-128-1) + +maccumulate-outgoing-args +UrlSuffix(gcc/x86-Options.html#index-maccumulate-outgoing-args-1) + +malign-double +UrlSuffix(gcc/x86-Options.html#index-malign-double) + +; skipping UrlSuffix for 'malign-loops=' due to finding no URLs + +malign-stringops +UrlSuffix(gcc/x86-Options.html#index-malign-stringops) + +malign-data= +UrlSuffix(gcc/x86-Options.html#index-malign-data-1) + +march= +UrlSuffix(gcc/x86-Options.html#index-march-16) + +; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs + +mlarge-data-threshold= +UrlSuffix(gcc/x86-Options.html#index-mlarge-data-threshold) + +; skipping UrlSuffix for 'mcmodel=' due to finding no URLs + +mcpu= +UrlSuffix(gcc/x86-Options.html#index-mcpu-14) + +mfancy-math-387 +UrlSuffix(gcc/x86-Options.html#index-mfancy-math-387) + +mfp-ret-in-387 +UrlSuffix(gcc/x86-Options.html#index-mfp-ret-in-387) + +; skipping UrlSuffix for 'mfpmath=' due to multiple URLs: +; duplicate: 'gcc/Optimize-Options.html#index-mfpmath' +; duplicate: 'gcc/x86-Options.html#index-mfpmath-1' + +mhard-float +UrlSuffix(gcc/x86-Options.html#index-mhard-float-11) + +mieee-fp +UrlSuffix(gcc/x86-Options.html#index-mieee-fp) + +minline-all-stringops +UrlSuffix(gcc/x86-Options.html#index-minline-all-stringops) + +minline-stringops-dynamically +UrlSuffix(gcc/x86-Options.html#index-minline-stringops-dynamically) + +mms-bitfields +UrlSuffix(gcc/x86-Options.html#index-mms-bitfields) + +mno-align-stringops +UrlSuffix(gcc/x86-Options.html#index-mno-align-stringops) + +mno-fancy-math-387 +UrlSuffix(gcc/x86-Options.html#index-mno-fancy-math-387) + +mno-push-args +UrlSuffix(gcc/x86-Options.html#index-mno-push-args) + +mno-red-zone +UrlSuffix(gcc/x86-Options.html#index-mno-red-zone) + +momit-leaf-frame-pointer +UrlSuffix(gcc/x86-Options.html#index-momit-leaf-frame-pointer-2) + +mrelax-cmpxchg-loop +UrlSuffix(gcc/x86-Options.html#index-mrelax-cmpxchg-loop) + +mpc32 +UrlSuffix(gcc/x86-Options.html#index-mpc32) + +mpc64 +UrlSuffix(gcc/x86-Options.html#index-mpc64) + +mpc80 +UrlSuffix(gcc/x86-Options.html#index-mpc80) + +mdaz-ftz +UrlSuffix(gcc/x86-Options.html#index-mdaz-ftz) + +mpreferred-stack-boundary= +UrlSuffix(gcc/x86-Options.html#index-mpreferred-stack-boundary-1) + +mincoming-stack-boundary= +UrlSuffix(gcc/x86-Options.html#index-mincoming-stack-boundary) + +mpush-args +UrlSuffix(gcc/x86-Options.html#index-mpush-args) + +mred-zone +UrlSuffix(gcc/x86-Options.html#index-mred-zone) + +mregparm= +UrlSuffix(gcc/x86-Options.html#index-mregparm) + +mrtd +UrlSuffix(gcc/x86-Options.html#index-mrtd-1) + +msoft-float +UrlSuffix(gcc/x86-Options.html#index-msoft-float-16) + +msseregparm +UrlSuffix(gcc/x86-Options.html#index-msseregparm) + +mstackrealign +UrlSuffix(gcc/x86-Options.html#index-mstackrealign) + +mtls-dialect= +UrlSuffix(gcc/x86-Options.html#index-mtls-dialect-1) + +mtls-direct-seg-refs +UrlSuffix(gcc/x86-Options.html#index-mtls-direct-seg-refs) + +mtune= +UrlSuffix(gcc/x86-Options.html#index-mtune-17) + +mno-default +UrlSuffix(gcc/x86-Options.html#index-mno-default) + +mdump-tune-features +UrlSuffix(gcc/x86-Options.html#index-mdump-tune-features) + +miamcu +UrlSuffix(gcc/x86-Options.html#index-miamcu) + +mabi= +UrlSuffix(gcc/x86-Options.html#index-mabi-6) + +mcall-ms2sysv-xlogues +UrlSuffix(gcc/x86-Options.html#index-mcall-ms2sysv-xlogues) + +mveclibabi= +UrlSuffix(gcc/x86-Options.html#index-mveclibabi-1) + +mvect8-ret-in-mem +UrlSuffix(gcc/x86-Options.html#index-mvect8-ret-in-mem) + +mrecip +UrlSuffix(gcc/x86-Options.html#index-mrecip-2) + +mrecip= +UrlSuffix(gcc/x86-Options.html#index-mrecip-2) + +mcld +UrlSuffix(gcc/x86-Options.html#index-mcld) + +mvzeroupper +UrlSuffix(gcc/x86-Options.html#index-mvzeroupper) + +mprefer-avx128 +UrlSuffix(gcc/x86-Options.html#index-mprefer-avx128) + +mprefer-vector-width= +UrlSuffix(gcc/x86-Options.html#index-mprefer-vector-width) + +mpartial-vector-fp-math +UrlSuffix(gcc/x86-Options.html#index-mpartial-vector-fp-math) + +mmove-max= +UrlSuffix(gcc/x86-Options.html#index-mmove-max) + +mstore-max= +UrlSuffix(gcc/x86-Options.html#index-mstore-max) + +m32 +UrlSuffix(gcc/x86-Options.html#index-m32-2) + +m64 +UrlSuffix(gcc/x86-Options.html#index-m64-4) + +mx32 +UrlSuffix(gcc/x86-Options.html#index-mx32) + +m16 +UrlSuffix(gcc/x86-Options.html#index-m16) + +mmmx +UrlSuffix(gcc/x86-Options.html#index-mmmx) + +m3dnow +UrlSuffix(gcc/x86-Options.html#index-m3dnow) + +m3dnowa +UrlSuffix(gcc/x86-Options.html#index-m3dnowa) + +msse +UrlSuffix(gcc/x86-Options.html#index-msse) + +msse2 +UrlSuffix(gcc/x86-Options.html#index-msse2) + +msse3 +UrlSuffix(gcc/x86-Options.html#index-msse3) + +mssse3 +UrlSuffix(gcc/x86-Options.html#index-mssse3) + +msse4.1 +UrlSuffix(gcc/x86-Options.html#index-msse4_002e1) + +msse4.2 +UrlSuffix(gcc/x86-Options.html#index-msse4_002e2) + +msse4 +UrlSuffix(gcc/x86-Options.html#index-msse4) + +mavx +UrlSuffix(gcc/x86-Options.html#index-mavx) + +mavx2 +UrlSuffix(gcc/x86-Options.html#index-mavx2) + +mavx512f +UrlSuffix(gcc/x86-Options.html#index-mavx512f) + +mavx512pf +UrlSuffix(gcc/x86-Options.html#index-mavx512pf) + +mavx512er +UrlSuffix(gcc/x86-Options.html#index-mavx512er) + +mavx512cd +UrlSuffix(gcc/x86-Options.html#index-mavx512cd) + +mavx512dq +UrlSuffix(gcc/x86-Options.html#index-mavx512dq) + +mavx512bw +UrlSuffix(gcc/x86-Options.html#index-mavx512bw) + +mavx512vl +UrlSuffix(gcc/x86-Options.html#index-mavx512vl) + +mavx512ifma +UrlSuffix(gcc/x86-Options.html#index-mavx512ifma) + +mavx512vbmi +UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi) + +mavx5124fmaps +UrlSuffix(gcc/x86-Options.html#index-mavx5124fmaps) + +mavx5124vnniw +UrlSuffix(gcc/x86-Options.html#index-mavx5124vnniw) + +mavx512vpopcntdq +UrlSuffix(gcc/x86-Options.html#index-mavx512vpopcntdq) + +mavx512vbmi2 +UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi2) + +mavx512vnni +UrlSuffix(gcc/x86-Options.html#index-mavx512vnni) + +mavx512bitalg +UrlSuffix(gcc/x86-Options.html#index-mavx512bitalg) + +mavx512vp2intersect +UrlSuffix(gcc/x86-Options.html#index-mavx512vp2intersect) + +mfma +UrlSuffix(gcc/x86-Options.html#index-mfma) + +msse4a +UrlSuffix(gcc/x86-Options.html#index-msse4a) + +mfma4 +UrlSuffix(gcc/x86-Options.html#index-mfma4) + +mxop +UrlSuffix(gcc/x86-Options.html#index-mxop) + +mlwp +UrlSuffix(gcc/x86-Options.html#index-mlwp) + +mabm +UrlSuffix(gcc/x86-Options.html#index-mabm) + +mpopcnt +UrlSuffix(gcc/x86-Options.html#index-mpopcnt) + +mpconfig +UrlSuffix(gcc/x86-Options.html#index-mpconfig) + +mwbnoinvd +UrlSuffix(gcc/x86-Options.html#index-mwbnoinvd) + +mptwrite +UrlSuffix(gcc/x86-Options.html#index-mptwrite) + +muintr +UrlSuffix(gcc/x86-Options.html#index-muintr) + +msgx +UrlSuffix(gcc/x86-Options.html#index-msgx) + +mrdpid +UrlSuffix(gcc/x86-Options.html#index-mrdpid) + +mgfni +UrlSuffix(gcc/x86-Options.html#index-mgfni) + +mvaes +UrlSuffix(gcc/x86-Options.html#index-mvaes) + +mvpclmulqdq +UrlSuffix(gcc/x86-Options.html#index-mvpclmulqdq) + +mbmi +UrlSuffix(gcc/x86-Options.html#index-mbmi) + +mbmi2 +UrlSuffix(gcc/x86-Options.html#index-mbmi2) + +mlzcnt +UrlSuffix(gcc/x86-Options.html#index-mlzcnt) + +mhle +UrlSuffix(gcc/x86-Options.html#index-mhle) + +mrdseed +UrlSuffix(gcc/x86-Options.html#index-mrdseed) + +mprfchw +UrlSuffix(gcc/x86-Options.html#index-mprfchw) + +madx +UrlSuffix(gcc/x86-Options.html#index-madx) + +mclflushopt +UrlSuffix(gcc/x86-Options.html#index-mclflushopt) + +mclwb +UrlSuffix(gcc/x86-Options.html#index-mclwb) + +mfxsr +UrlSuffix(gcc/x86-Options.html#index-mfxsr) + +mxsave +UrlSuffix(gcc/x86-Options.html#index-mxsave) + +mxsaveopt +UrlSuffix(gcc/x86-Options.html#index-mxsaveopt) + +mxsavec +UrlSuffix(gcc/x86-Options.html#index-mxsavec) + +mxsaves +UrlSuffix(gcc/x86-Options.html#index-mxsaves) + +mtbm +UrlSuffix(gcc/x86-Options.html#index-mtbm) + +mcx16 +UrlSuffix(gcc/x86-Options.html#index-mcx16) + +msahf +UrlSuffix(gcc/x86-Options.html#index-msahf) + +mmovbe +UrlSuffix(gcc/x86-Options.html#index-mmovbe) + +mcrc32 +UrlSuffix(gcc/x86-Options.html#index-mcrc32) + +maes +UrlSuffix(gcc/x86-Options.html#index-maes) + +msha +UrlSuffix(gcc/x86-Options.html#index-msha) + +mpclmul +UrlSuffix(gcc/x86-Options.html#index-mpclmul) + +msse2avx +UrlSuffix(gcc/x86-Options.html#index-msse2avx) + +mfsgsbase +UrlSuffix(gcc/x86-Options.html#index-mfsgsbase) + +mrdrnd +UrlSuffix(gcc/x86-Options.html#index-mrdrnd) + +mf16c +UrlSuffix(gcc/x86-Options.html#index-mf16c) + +mprefetchwt1 +UrlSuffix(gcc/x86-Options.html#index-mprefetchwt1) + +mfentry +UrlSuffix(gcc/x86-Options.html#index-mfentry) + +mrecord-mcount +UrlSuffix(gcc/x86-Options.html#index-mrecord-mcount) + +mnop-mcount +UrlSuffix(gcc/x86-Options.html#index-mnop-mcount) + +mfentry-name= +UrlSuffix(gcc/x86-Options.html#index-mfentry-name) + +mfentry-section= +UrlSuffix(gcc/x86-Options.html#index-mfentry-section) + +mskip-rax-setup +UrlSuffix(gcc/x86-Options.html#index-mskip-rax-setup) + +m8bit-idiv +UrlSuffix(gcc/x86-Options.html#index-m8bit-idiv) + +mavx256-split-unaligned-load +UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-load) + +mavx256-split-unaligned-store +UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-store) + +mrtm +UrlSuffix(gcc/x86-Options.html#index-mrtm) + +mmwaitx +UrlSuffix(gcc/x86-Options.html#index-mmwaitx) + +mclzero +UrlSuffix(gcc/x86-Options.html#index-mclzero) + +mpku +UrlSuffix(gcc/x86-Options.html#index-mpku) + +mstack-protector-guard= +UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-4) + +mstack-protector-guard-reg= +UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-reg-3) + +mstack-protector-guard-offset= +UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-offset-4) + +; skipping UrlSuffix for 'mstack-protector-guard-symbol=' due to finding no URLs + +mgeneral-regs-only +UrlSuffix(gcc/x86-Options.html#index-mgeneral-regs-only-2) + +mshstk +UrlSuffix(gcc/x86-Options.html#index-mshstk) + +mcet-switch +UrlSuffix(gcc/x86-Options.html#index-mcet-switch) + +mmanual-endbr +UrlSuffix(gcc/x86-Options.html#index-mmanual-endbr) + +mforce-indirect-call +UrlSuffix(gcc/x86-Options.html#index-mforce-indirect-call) + +mindirect-branch= +UrlSuffix(gcc/x86-Options.html#index-mindirect-branch) + +mfunction-return= +UrlSuffix(gcc/x86-Options.html#index-mfunction-return) + +mindirect-branch-cs-prefix +UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-cs-prefix) + +mindirect-branch-register +UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-register) + +mmovdiri +UrlSuffix(gcc/x86-Options.html#index-mmovdiri) + +mmovdir64b +UrlSuffix(gcc/x86-Options.html#index-mmovdir64b) + +mwaitpkg +UrlSuffix(gcc/x86-Options.html#index-mwaitpkg) + +mcldemote +UrlSuffix(gcc/x86-Options.html#index-mcldemote) + +minstrument-return= +UrlSuffix(gcc/x86-Options.html#index-minstrument-return) + +mrecord-return +UrlSuffix(gcc/x86-Options.html#index-mrecord-return) + +mharden-sls= +UrlSuffix(gcc/x86-Options.html#index-mharden-sls-1) + +mavx512bf16 +UrlSuffix(gcc/x86-Options.html#index-mavx512bf16) + +menqcmd +UrlSuffix(gcc/x86-Options.html#index-menqcmd) + +mserialize +UrlSuffix(gcc/x86-Options.html#index-mserialize) + +mtsxldtrk +UrlSuffix(gcc/x86-Options.html#index-mtsxldtrk) + +mamx-tile +UrlSuffix(gcc/x86-Options.html#index-mamx-tile) + +mamx-int8 +UrlSuffix(gcc/x86-Options.html#index-mamx-int8) + +mamx-bf16 +UrlSuffix(gcc/x86-Options.html#index-mamx-bf16) + +mhreset +UrlSuffix(gcc/x86-Options.html#index-mhreset) + +mkl +UrlSuffix(gcc/x86-Options.html#index-mkl) + +mwidekl +UrlSuffix(gcc/x86-Options.html#index-mwidekl) + +mavxvnni +UrlSuffix(gcc/x86-Options.html#index-mavxvnni) + +mneeded +UrlSuffix(gcc/x86-Options.html#index-mneeded) + +mmwait +UrlSuffix(gcc/x86-Options.html#index-mmwait) + +mavx512fp16 +UrlSuffix(gcc/x86-Options.html#index-mavx512fp16) + +mdirect-extern-access +UrlSuffix(gcc/x86-Options.html#index-mdirect-extern-access-1) + +mavxifma +UrlSuffix(gcc/x86-Options.html#index-mavxifma) + +mavxvnniint8 +UrlSuffix(gcc/x86-Options.html#index-mavxvnniint8) + +mavxneconvert +UrlSuffix(gcc/x86-Options.html#index-mavxneconvert) + +mcmpccxadd +UrlSuffix(gcc/x86-Options.html#index-mcmpccxadd) + +mamx-fp16 +UrlSuffix(gcc/x86-Options.html#index-mamx-fp16) + +mprefetchi +UrlSuffix(gcc/x86-Options.html#index-mprefetchi) + +mraoint +UrlSuffix(gcc/x86-Options.html#index-mraoint) + +munroll-only-small-loops +UrlSuffix(gcc/x86-Options.html#index-munroll-only-small-loops) + +mlam= +UrlSuffix(gcc/x86-Options.html#index-mlam) + +mamx-complex +UrlSuffix(gcc/x86-Options.html#index-mamx-complex) + +mavxvnniint16 +UrlSuffix(gcc/x86-Options.html#index-mavxvnniint16) + +msm3 +UrlSuffix(gcc/x86-Options.html#index-msm3) + +msha512 +UrlSuffix(gcc/x86-Options.html#index-msha512) + +msm4 +UrlSuffix(gcc/x86-Options.html#index-msm4) + +mapxf +UrlSuffix(gcc/x86-Options.html#index-mapxf) + +musermsr +UrlSuffix(gcc/x86-Options.html#index-musermsr) + +mavx10.1-256 +UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1-256) + +mavx10.1-512 +UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1-512) + +mavx10.1 +UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1) + diff --git a/gcc/config/i386/mingw-w64.opt.urls b/gcc/config/i386/mingw-w64.opt.urls new file mode 100644 index 0000000..6bb53ef --- /dev/null +++ b/gcc/config/i386/mingw-w64.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw-w64.opt and generated HTML + +municode +UrlSuffix(gcc/x86-Windows-Options.html#index-municode) + diff --git a/gcc/config/i386/mingw.opt.urls b/gcc/config/i386/mingw.opt.urls new file mode 100644 index 0000000..2cbbaad --- /dev/null +++ b/gcc/config/i386/mingw.opt.urls @@ -0,0 +1,12 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw.opt and generated HTML + +mcrtdll= +UrlSuffix(gcc/x86-Windows-Options.html#index-mcrtdll) + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + +Wpedantic-ms-format +UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic-ms-format) + diff --git a/gcc/config/i386/nto.opt.urls b/gcc/config/i386/nto.opt.urls new file mode 100644 index 0000000..37c07a5 --- /dev/null +++ b/gcc/config/i386/nto.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/nto.opt and generated HTML + +G +UrlSuffix(gcc/System-V-Options.html#index-G-5) + diff --git a/gcc/config/ia64/ia64.opt.urls b/gcc/config/ia64/ia64.opt.urls new file mode 100644 index 0000000..1e1d063 --- /dev/null +++ b/gcc/config/ia64/ia64.opt.urls @@ -0,0 +1,122 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ia64.opt and generated HTML + +mbig-endian +UrlSuffix(gcc/IA-64-Options.html#index-mbig-endian-6) + +mlittle-endian +UrlSuffix(gcc/IA-64-Options.html#index-mlittle-endian-6) + +mgnu-as +UrlSuffix(gcc/IA-64-Options.html#index-mgnu-as) + +mgnu-ld +UrlSuffix(gcc/IA-64-Options.html#index-mgnu-ld-1) + +mvolatile-asm-stop +UrlSuffix(gcc/IA-64-Options.html#index-mvolatile-asm-stop) + +mregister-names +UrlSuffix(gcc/IA-64-Options.html#index-mregister-names) + +mno-sdata +UrlSuffix(gcc/IA-64-Options.html#index-mno-sdata-1) + +msdata +UrlSuffix(gcc/IA-64-Options.html#index-msdata-1) + +mno-pic +UrlSuffix(gcc/IA-64-Options.html#index-mno-pic) + +mconstant-gp +UrlSuffix(gcc/IA-64-Options.html#index-mconstant-gp) + +mauto-pic +UrlSuffix(gcc/IA-64-Options.html#index-mauto-pic) + +minline-float-divide-min-latency +UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-min-latency) + +minline-float-divide-max-throughput +UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-max-throughput) + +mno-inline-float-divide +UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-float-divide) + +minline-int-divide-min-latency +UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-min-latency) + +minline-int-divide-max-throughput +UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-max-throughput) + +mno-inline-int-divide +UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-int-divide) + +minline-sqrt-min-latency +UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-min-latency) + +minline-sqrt-max-throughput +UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-max-throughput) + +mno-inline-sqrt +UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-sqrt) + +mdwarf2-asm +UrlSuffix(gcc/IA-64-Options.html#index-mdwarf2-asm) + +mearly-stop-bits +UrlSuffix(gcc/IA-64-Options.html#index-mearly-stop-bits) + +mfixed-range= +UrlSuffix(gcc/IA-64-Options.html#index-mfixed-range-1) + +mtls-size= +UrlSuffix(gcc/IA-64-Options.html#index-mtls-size-1) + +mtune= +UrlSuffix(gcc/IA-64-Options.html#index-mtune-7) + +msched-br-data-spec +UrlSuffix(gcc/IA-64-Options.html#index-msched-br-data-spec) + +msched-ar-data-spec +UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-data-spec) + +msched-control-spec +UrlSuffix(gcc/IA-64-Options.html#index-msched-control-spec) + +msched-br-in-data-spec +UrlSuffix(gcc/IA-64-Options.html#index-msched-br-in-data-spec) + +msched-ar-in-data-spec +UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-in-data-spec) + +msched-in-control-spec +UrlSuffix(gcc/IA-64-Options.html#index-msched-in-control-spec) + +msched-spec-ldc +UrlSuffix(gcc/IA-64-Options.html#index-msched-spec-ldc) + +msched-prefer-non-data-spec-insns +UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-data-spec-insns) + +msched-prefer-non-control-spec-insns +UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-control-spec-insns) + +msched-count-spec-in-critical-path +UrlSuffix(gcc/IA-64-Options.html#index-msched-count-spec-in-critical-path) + +msched-stop-bits-after-every-cycle +UrlSuffix(gcc/IA-64-Options.html#index-msched-stop-bits-after-every-cycle) + +msched-fp-mem-deps-zero-cost +UrlSuffix(gcc/IA-64-Options.html#index-msched-fp-mem-deps-zero-cost) + +msched-max-memory-insns= +UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns) + +msched-max-memory-insns-hard-limit +UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns-hard-limit) + +msel-sched-dont-check-control-spec +UrlSuffix(gcc/IA-64-Options.html#index-msel-sched-dont-check-control-spec) + diff --git a/gcc/config/ia64/ilp32.opt.urls b/gcc/config/ia64/ilp32.opt.urls new file mode 100644 index 0000000..07bd47d --- /dev/null +++ b/gcc/config/ia64/ilp32.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ilp32.opt and generated HTML + +milp32 +UrlSuffix(gcc/IA-64-Options.html#index-milp32) + +mlp64 +UrlSuffix(gcc/IA-64-Options.html#index-mlp64) + diff --git a/gcc/config/ia64/vms.opt.urls b/gcc/config/ia64/vms.opt.urls new file mode 100644 index 0000000..e7797d9 --- /dev/null +++ b/gcc/config/ia64/vms.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/vms.opt and generated HTML + diff --git a/gcc/config/iq2000/iq2000.opt.urls b/gcc/config/iq2000/iq2000.opt.urls new file mode 100644 index 0000000..6aadab6 --- /dev/null +++ b/gcc/config/iq2000/iq2000.opt.urls @@ -0,0 +1,14 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/iq2000/iq2000.opt and generated HTML + +; skipping UrlSuffix for 'march=' due to finding no URLs + +; skipping UrlSuffix for 'mcpu=' due to finding no URLs + +; skipping UrlSuffix for 'membedded-data' due to finding no URLs + +; skipping UrlSuffix for 'mgpopt' due to finding no URLs + +; skipping UrlSuffix for 'mno-crt0' due to finding no URLs + +; skipping UrlSuffix for 'muninit-const-in-rodata' due to finding no URLs + diff --git a/gcc/config/linux-android.opt.urls b/gcc/config/linux-android.opt.urls new file mode 100644 index 0000000..48d38e9 --- /dev/null +++ b/gcc/config/linux-android.opt.urls @@ -0,0 +1,11 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/linux-android.opt and generated HTML + +mandroid +UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mandroid) + +tno-android-cc +UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-cc) + +tno-android-ld +UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-ld) + diff --git a/gcc/config/linux.opt.urls b/gcc/config/linux.opt.urls new file mode 100644 index 0000000..792a73f --- /dev/null +++ b/gcc/config/linux.opt.urls @@ -0,0 +1,14 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/linux.opt and generated HTML + +mbionic +UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mbionic) + +mglibc +UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mglibc) + +muclibc +UrlSuffix(gcc/GNU_002fLinux-Options.html#index-muclibc) + +mmusl +UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mmusl) + diff --git a/gcc/config/lm32/lm32.opt.urls b/gcc/config/lm32/lm32.opt.urls new file mode 100644 index 0000000..89c8c47 --- /dev/null +++ b/gcc/config/lm32/lm32.opt.urls @@ -0,0 +1,14 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/lm32/lm32.opt and generated HTML + +mdivide-enabled +UrlSuffix(gcc/LM32-Options.html#index-mdivide-enabled) + +mbarrel-shift-enabled +UrlSuffix(gcc/LM32-Options.html#index-mbarrel-shift-enabled) + +msign-extend-enabled +UrlSuffix(gcc/LM32-Options.html#index-msign-extend-enabled) + +muser-enabled +UrlSuffix(gcc/LM32-Options.html#index-muser-enabled) + diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc index 91e6bb3..28d6413 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -8825,143 +8825,6 @@ loongarch_expand_vec_perm (rtx target, rtx op0, rtx op1, rtx sel) } } -static bool -loongarch_is_odd_extraction (struct expand_vec_perm_d *); - -static bool -loongarch_is_even_extraction (struct expand_vec_perm_d *); - -static bool -loongarch_try_expand_lsx_vshuf_const (struct expand_vec_perm_d *d) -{ - int i; - rtx target, op0, op1, sel, tmp; - rtx rperm[MAX_VECT_LEN]; - - if (d->vmode == E_V2DImode || d->vmode == E_V2DFmode - || d->vmode == E_V4SImode || d->vmode == E_V4SFmode - || d->vmode == E_V8HImode || d->vmode == E_V16QImode) - { - target = d->target; - op0 = d->op0; - op1 = d->one_vector_p ? d->op0 : d->op1; - - if (GET_MODE (op0) != GET_MODE (op1) - || GET_MODE (op0) != GET_MODE (target)) - return false; - - if (d->testing_p) - return true; - - /* If match extract-even and extract-odd permutations pattern, use - * vselect much better than vshuf. */ - if (loongarch_is_odd_extraction (d) - || loongarch_is_even_extraction (d)) - { - if (loongarch_expand_vselect_vconcat (d->target, d->op0, d->op1, - d->perm, d->nelt)) - return true; - - unsigned char perm2[MAX_VECT_LEN]; - for (i = 0; i < d->nelt; ++i) - perm2[i] = (d->perm[i] + d->nelt) & (2 * d->nelt - 1); - - if (loongarch_expand_vselect_vconcat (d->target, d->op1, d->op0, - perm2, d->nelt)) - return true; - } - - for (i = 0; i < d->nelt; i += 1) - { - rperm[i] = GEN_INT (d->perm[i]); - } - - if (d->vmode == E_V2DFmode) - { - sel = gen_rtx_CONST_VECTOR (E_V2DImode, gen_rtvec_v (d->nelt, rperm)); - tmp = simplify_gen_subreg (E_V2DImode, d->target, d->vmode, 0); - emit_move_insn (tmp, sel); - } - else if (d->vmode == E_V4SFmode) - { - sel = gen_rtx_CONST_VECTOR (E_V4SImode, gen_rtvec_v (d->nelt, rperm)); - tmp = simplify_gen_subreg (E_V4SImode, d->target, d->vmode, 0); - emit_move_insn (tmp, sel); - } - else - { - sel = gen_rtx_CONST_VECTOR (d->vmode, gen_rtvec_v (d->nelt, rperm)); - emit_move_insn (d->target, sel); - } - - switch (d->vmode) - { - case E_V2DFmode: - emit_insn (gen_lsx_vshuf_d_f (target, target, op1, op0)); - break; - case E_V2DImode: - emit_insn (gen_lsx_vshuf_d (target, target, op1, op0)); - break; - case E_V4SFmode: - emit_insn (gen_lsx_vshuf_w_f (target, target, op1, op0)); - break; - case E_V4SImode: - emit_insn (gen_lsx_vshuf_w (target, target, op1, op0)); - break; - case E_V8HImode: - emit_insn (gen_lsx_vshuf_h (target, target, op1, op0)); - break; - case E_V16QImode: - emit_insn (gen_lsx_vshuf_b (target, op1, op0, target)); - break; - default: - break; - } - - return true; - } - return false; -} - -static bool -loongarch_expand_vec_perm_const_1 (struct expand_vec_perm_d *d) -{ - unsigned int i, nelt = d->nelt; - unsigned char perm2[MAX_VECT_LEN]; - - if (d->one_vector_p) - { - /* Try interleave with alternating operands. */ - memcpy (perm2, d->perm, sizeof (perm2)); - for (i = 1; i < nelt; i += 2) - perm2[i] += nelt; - if (loongarch_expand_vselect_vconcat (d->target, d->op0, d->op1, perm2, - nelt)) - return true; - } - else - { - if (loongarch_expand_vselect_vconcat (d->target, d->op0, d->op1, - d->perm, nelt)) - return true; - - /* Try again with swapped operands. */ - for (i = 0; i < nelt; ++i) - perm2[i] = (d->perm[i] + nelt) & (2 * nelt - 1); - if (loongarch_expand_vselect_vconcat (d->target, d->op1, d->op0, perm2, - nelt)) - return true; - } - - if (loongarch_expand_lsx_shuffle (d)) - return true; - if (loongarch_expand_vec_perm_even_odd (d)) - return true; - if (loongarch_expand_vec_perm_interleave (d)) - return true; - return false; -} - /* Following are the assist function for const vector permutation support. */ static bool loongarch_is_quad_duplicate (struct expand_vec_perm_d *d) @@ -8994,36 +8857,6 @@ loongarch_is_quad_duplicate (struct expand_vec_perm_d *d) } static bool -loongarch_is_double_duplicate (struct expand_vec_perm_d *d) -{ - if (!d->one_vector_p) - return false; - - if (d->nelt < 8) - return false; - - bool result = true; - unsigned char buf = d->perm[0]; - - for (int i = 1; i < d->nelt; i += 2) - { - if (d->perm[i] != buf) - { - result = false; - break; - } - if (d->perm[i - 1] != d->perm[i]) - { - result = false; - break; - } - buf += d->nelt / 4; - } - - return result; -} - -static bool loongarch_is_odd_extraction (struct expand_vec_perm_d *d) { bool result = true; @@ -9084,110 +8917,6 @@ loongarch_is_extraction_permutation (struct expand_vec_perm_d *d) } static bool -loongarch_is_center_extraction (struct expand_vec_perm_d *d) -{ - bool result = true; - unsigned buf = d->nelt / 2; - - for (int i = 0; i < d->nelt; i += 1) - { - if (buf != d->perm[i]) - { - result = false; - break; - } - buf += 1; - } - - return result; -} - -static bool -loongarch_is_reversing_permutation (struct expand_vec_perm_d *d) -{ - if (!d->one_vector_p) - return false; - - bool result = true; - unsigned char buf = d->nelt - 1; - - for (int i = 0; i < d->nelt; i += 1) - { - if (d->perm[i] != buf) - { - result = false; - break; - } - - buf -= 1; - } - - return result; -} - -static bool -loongarch_is_di_misalign_extract (struct expand_vec_perm_d *d) -{ - if (d->nelt != 4 && d->nelt != 8) - return false; - - bool result = true; - unsigned char buf; - - if (d->nelt == 4) - { - buf = 1; - for (int i = 0; i < d->nelt; i += 1) - { - if (buf != d->perm[i]) - { - result = false; - break; - } - - buf += 1; - } - } - else if (d->nelt == 8) - { - buf = 2; - for (int i = 0; i < d->nelt; i += 1) - { - if (buf != d->perm[i]) - { - result = false; - break; - } - - buf += 1; - } - } - - return result; -} - -static bool -loongarch_is_si_misalign_extract (struct expand_vec_perm_d *d) -{ - if (d->vmode != E_V8SImode && d->vmode != E_V8SFmode) - return false; - bool result = true; - unsigned char buf = 1; - - for (int i = 0; i < d->nelt; i += 1) - { - if (buf != d->perm[i]) - { - result = false; - break; - } - buf += 1; - } - - return result; -} - -static bool loongarch_is_lasx_lowpart_interleave (struct expand_vec_perm_d *d) { bool result = true; @@ -9250,39 +8979,6 @@ loongarch_is_lasx_lowpart_interleave_2 (struct expand_vec_perm_d *d) } static bool -loongarch_is_lasx_lowpart_extract (struct expand_vec_perm_d *d) -{ - bool result = true; - unsigned char buf = 0; - - for (int i = 0; i < d->nelt / 2; i += 1) - { - if (buf != d->perm[i]) - { - result = false; - break; - } - buf += 1; - } - - if (result) - { - buf = d->nelt; - for (int i = d->nelt / 2; i < d->nelt; i += 1) - { - if (buf != d->perm[i]) - { - result = false; - break; - } - buf += 1; - } - } - - return result; -} - -static bool loongarch_is_lasx_highpart_interleave (expand_vec_perm_d *d) { bool result = true; @@ -9363,538 +9059,195 @@ loongarch_is_elem_duplicate (struct expand_vec_perm_d *d) return result; } -inline bool -loongarch_is_op_reverse_perm (struct expand_vec_perm_d *d) -{ - return (d->vmode == E_V4DFmode) - && d->perm[0] == 2 && d->perm[1] == 3 - && d->perm[2] == 0 && d->perm[3] == 1; -} - -static bool -loongarch_is_single_op_perm (struct expand_vec_perm_d *d) -{ - bool result = true; - - for (int i = 0; i < d->nelt; i += 1) - { - if (d->perm[i] >= d->nelt) - { - result = false; - break; - } - } - - return result; -} - -static bool -loongarch_is_divisible_perm (struct expand_vec_perm_d *d) -{ - bool result = true; - - for (int i = 0; i < d->nelt / 2; i += 1) - { - if (d->perm[i] >= d->nelt) - { - result = false; - break; - } - } - - if (result) - { - for (int i = d->nelt / 2; i < d->nelt; i += 1) - { - if (d->perm[i] < d->nelt) - { - result = false; - break; - } - } - } - - return result; -} - -inline bool -loongarch_is_triple_stride_extract (struct expand_vec_perm_d *d) -{ - return (d->vmode == E_V4DImode || d->vmode == E_V4DFmode) - && d->perm[0] == 1 && d->perm[1] == 4 - && d->perm[2] == 7 && d->perm[3] == 0; -} - /* In LASX, some permutation insn does not have the behavior that gcc expects - * when compiler wants to emit a vector permutation. - * - * 1. What GCC provides via vectorize_vec_perm_const ()'s paramater: - * When GCC wants to performs a vector permutation, it provides two op - * reigster, one target register, and a selector. - * In const vector permutation case, GCC provides selector as a char array - * that contains original value; in variable vector permuatation - * (performs via vec_perm<mode> insn template), it provides a vector register. - * We assume that nelt is the elements numbers inside single vector in current - * 256bit vector mode. - * - * 2. What GCC expects to perform: - * Two op registers (op0, op1) will "combine" into a 512bit temp vector storage - * that has 2*nelt elements inside it; the low 256bit is op0, and high 256bit - * is op1, then the elements are indexed as below: - * 0 ~ nelt - 1 nelt ~ 2 * nelt - 1 - * |-------------------------|-------------------------| - * Low 256bit (op0) High 256bit (op1) - * For example, the second element in op1 (V8SImode) will be indexed with 9. - * Selector is a vector that has the same mode and number of elements with - * op0,op1 and target, it's look like this: - * 0 ~ nelt - 1 - * |-------------------------| - * 256bit (selector) - * It describes which element from 512bit temp vector storage will fit into - * target's every element slot. - * GCC expects that every element in selector can be ANY indices of 512bit - * vector storage (Selector can pick literally any element from op0 and op1, and - * then fits into any place of target register). This is also what LSX 128bit - * vshuf.* instruction do similarly, so we can handle 128bit vector permutation - * by single instruction easily. - * - * 3. What LASX permutation instruction does: - * In short, it just execute two independent 128bit vector permuatation, and - * it's the reason that we need to do the jobs below. We will explain it. - * op0, op1, target, and selector will be separate into high 128bit and low - * 128bit, and do permutation as the description below: - * - * a) op0's low 128bit and op1's low 128bit "combines" into a 256bit temp - * vector storage (TVS1), elements are indexed as below: - * 0 ~ nelt / 2 - 1 nelt / 2 ~ nelt - 1 - * |---------------------|---------------------| TVS1 - * op0's low 128bit op1's low 128bit - * op0's high 128bit and op1's high 128bit are "combined" into TVS2 in the - * same way. - * 0 ~ nelt / 2 - 1 nelt / 2 ~ nelt - 1 - * |---------------------|---------------------| TVS2 - * op0's high 128bit op1's high 128bit - * b) Selector's low 128bit describes which elements from TVS1 will fit into - * target vector's low 128bit. No TVS2 elements are allowed. - * c) Selector's high 128bit describes which elements from TVS2 will fit into - * target vector's high 128bit. No TVS1 elements are allowed. - * - * As we can see, if we want to handle vector permutation correctly, we can - * achieve it in three ways: - * a) Modify selector's elements, to make sure that every elements can inform - * correct value that will put into target vector. - b) Generate extra instruction before/after permutation instruction, for - adjusting op vector or target vector, to make sure target vector's value is - what GCC expects. - c) Use other instructions to process op and put correct result into target. - */ + when compiler wants to emit a vector permutation. + + 1. What GCC provides via vectorize_vec_perm_const ()'s paramater: + When GCC wants to performs a vector permutation, it provides two op + reigster, one target register, and a selector. + In const vector permutation case, GCC provides selector as a char array + that contains original value; in variable vector permuatation + (performs via vec_perm<mode> insn template), it provides a vector register. + We assume that nelt is the elements numbers inside single vector in current + 256bit vector mode. + + 2. What GCC expects to perform: + Two op registers (op0, op1) will "combine" into a 512bit temp vector storage + that has 2*nelt elements inside it; the low 256bit is op0, and high 256bit + is op1, then the elements are indexed as below: + 0 ~ nelt - 1 nelt ~ 2 * nelt - 1 + |-------------------------|-------------------------| + Low 256bit (op0) High 256bit (op1) + For example, the second element in op1 (V8SImode) will be indexed with 9. + Selector is a vector that has the same mode and number of elements with + op0,op1 and target, it's look like this: + 0 ~ nelt - 1 + |-------------------------| + 256bit (selector) + It describes which element from 512bit temp vector storage will fit into + target's every element slot. + GCC expects that every element in selector can be ANY indices of 512bit + vector storage (Selector can pick literally any element from op0 and op1, and + then fits into any place of target register). This is also what LSX 128bit + vshuf.* instruction do similarly, so we can handle 128bit vector permutation + by single instruction easily. + + 3. What LASX permutation instruction does: + In short, it just execute two independent 128bit vector permuatation, and + it's the reason that we need to do the jobs below. We will explain it. + op0, op1, target, and selector will be separate into high 128bit and low + 128bit, and do permutation as the description below: + + a) op0's low 128bit and op1's low 128bit "combines" into a 256bit temp + vector storage (TVS1), elements are indexed as below: + 0 ~ nelt / 2 - 1 nelt / 2 ~ nelt - 1 + |---------------------|---------------------| TVS1 + op0's low 128bit op1's low 128bit + op0's high 128bit and op1's high 128bit are "combined" into TVS2 in the + same way. + 0 ~ nelt / 2 - 1 nelt / 2 ~ nelt - 1 + |---------------------|---------------------| TVS2 + op0's high 128bit op1's high 128bit + b) Selector's low 128bit describes which elements from TVS1 will fit into + target vector's low 128bit. No TVS2 elements are allowed. + c) Selector's high 128bit describes which elements from TVS2 will fit into + target vector's high 128bit. No TVS1 elements are allowed. + + As we can see, if we want to handle vector permutation correctly, we can + achieve it in three ways: + a) Modify selector's elements, to make sure that every elements can inform + correct value that will put into target vector. + b) Generate extra instruction before/after permutation instruction, for + adjusting op vector or target vector, to make sure target vector's value is + what GCC expects. + c) Use other instructions to process op and put correct result into target. + */ /* Implementation of constant vector permuatation. This function identifies - * recognized pattern of permuation selector argument, and use one or more - * instruction(s) to finish the permutation job correctly. For unsupported - * patterns, it will return false. */ + recognized pattern of permuation selector argument, and use one or more + instruction (s) to finish the permutation job correctly. For unsupported + patterns, it will return false. */ static bool -loongarch_expand_vec_perm_const_2 (struct expand_vec_perm_d *d) +loongarch_expand_vec_perm_const (struct expand_vec_perm_d *d) { - /* Although we have the LSX vec_perm<mode> template, there's still some - 128bit vector permuatation operations send to vectorize_vec_perm_const. - In this case, we just simpliy wrap them by single vshuf.* instruction, - because LSX vshuf.* instruction just have the same behavior that GCC - expects. */ - if (GET_MODE_SIZE (d->vmode) == 16) - return loongarch_try_expand_lsx_vshuf_const (d); - else - return false; - - bool ok = false, reverse_hi_lo = false, extract_ev_od = false, - use_alt_op = false; + bool flag = false; + unsigned int i; unsigned char idx; - int i; rtx target, op0, op1, sel, tmp; - rtx op0_alt = NULL_RTX, op1_alt = NULL_RTX; rtx rperm[MAX_VECT_LEN]; unsigned int remapped[MAX_VECT_LEN]; + unsigned char perm2[MAX_VECT_LEN]; - /* Try to figure out whether is a recognized permutation selector pattern, if - yes, we will reassign some elements with new value in selector argument, - and in some cases we will generate some assist insn to complete the - permutation. (Even in some cases, we use other insn to impl permutation - instead of xvshuf!) - - Make sure to check d->testing_p is false everytime if you want to emit new - insn, unless you want to crash into ICE directly. */ - if (loongarch_is_quad_duplicate (d)) + if (GET_MODE_SIZE (d->vmode) == 16) + return loongarch_expand_lsx_shuffle (d); + else { - /* Selector example: E_V8SImode, { 0, 0, 0, 0, 4, 4, 4, 4 } - copy first elem from original selector to all elem in new selector. */ - idx = d->perm[0]; - for (i = 0; i < d->nelt; i += 1) + if (d->one_vector_p) { - remapped[i] = idx; + /* Try interleave with alternating operands. */ + memcpy (perm2, d->perm, sizeof (perm2)); + for (i = 1; i < d->nelt; i += 2) + perm2[i] += d->nelt; + if (loongarch_expand_vselect_vconcat (d->target, d->op0, d->op1, + perm2, d->nelt)) + return true; } - /* Selector after: { 0, 0, 0, 0, 0, 0, 0, 0 }. */ - } - else if (loongarch_is_double_duplicate (d)) - { - /* Selector example: E_V8SImode, { 1, 1, 3, 3, 5, 5, 7, 7 } - one_vector_p == true. */ - for (i = 0; i < d->nelt / 2; i += 1) + else { - idx = d->perm[i]; - remapped[i] = idx; - remapped[i + d->nelt / 2] = idx; + if (loongarch_expand_vselect_vconcat (d->target, d->op0, d->op1, + d->perm, d->nelt)) + return true; + + /* Try again with swapped operands. */ + for (i = 0; i < d->nelt; ++i) + perm2[i] = (d->perm[i] + d->nelt) & (2 * d->nelt - 1); + if (loongarch_expand_vselect_vconcat (d->target, d->op1, d->op0, + perm2, d->nelt)) + return true; } - /* Selector after: { 1, 1, 3, 3, 1, 1, 3, 3 }. */ - } - else if (loongarch_is_odd_extraction (d) - || loongarch_is_even_extraction (d)) - { - /* Odd extraction selector sample: E_V4DImode, { 1, 3, 5, 7 } - Selector after: { 1, 3, 1, 3 }. - Even extraction selector sample: E_V4DImode, { 0, 2, 4, 6 } - Selector after: { 0, 2, 0, 2 }. */ - /* Better implement of extract-even and extract-odd permutations. */ - if (loongarch_expand_vec_perm_even_odd (d)) + if (loongarch_expand_lsx_shuffle (d)) return true; - for (i = 0; i < d->nelt / 2; i += 1) + if (loongarch_is_odd_extraction (d) + || loongarch_is_even_extraction (d)) { - idx = d->perm[i]; - remapped[i] = idx; - remapped[i + d->nelt / 2] = idx; + if (loongarch_expand_vec_perm_even_odd (d)) + return true; } - /* Additional insn is required for correct result. See codes below. */ - extract_ev_od = true; - } - else if (loongarch_is_extraction_permutation (d)) - { - /* Selector sample: E_V8SImode, { 0, 1, 2, 3, 4, 5, 6, 7 }. */ - if (d->perm[0] == 0) + + if (loongarch_is_lasx_lowpart_interleave (d) + || loongarch_is_lasx_lowpart_interleave_2 (d) + || loongarch_is_lasx_highpart_interleave (d) + || loongarch_is_lasx_highpart_interleave_2 (d)) { - for (i = 0; i < d->nelt / 2; i += 1) - { - remapped[i] = i; - remapped[i + d->nelt / 2] = i; - } + if (loongarch_expand_vec_perm_interleave (d)) + return true; } - else + + if (loongarch_is_quad_duplicate (d)) { - /* { 8, 9, 10, 11, 12, 13, 14, 15 }. */ - for (i = 0; i < d->nelt / 2; i += 1) + if (d->testing_p) + return true; + /* Selector example: E_V8SImode, { 0, 0, 0, 0, 4, 4, 4, 4 }. */ + for (i = 0; i < d->nelt; i += 1) { - idx = i + d->nelt / 2; - remapped[i] = idx; - remapped[i + d->nelt / 2] = idx; + rperm[i] = GEN_INT (d->perm[0]); } + /* Selector after: { 0, 0, 0, 0, 0, 0, 0, 0 }. */ + flag = true; + goto expand_perm_const_end; } - /* Selector after: { 0, 1, 2, 3, 0, 1, 2, 3 } - { 8, 9, 10, 11, 8, 9, 10, 11 } */ - } - else if (loongarch_is_center_extraction (d)) - { - /* sample: E_V4DImode, { 2, 3, 4, 5 } - In this condition, we can just copy high 128bit of op0 and low 128bit - of op1 to the target register by using xvpermi.q insn. */ - if (!d->testing_p) - { - emit_move_insn (d->target, d->op1); - switch (d->vmode) - { - case E_V4DImode: - emit_insn (gen_lasx_xvpermi_q_v4di (d->target, d->target, - d->op0, GEN_INT (0x21))); - break; - case E_V4DFmode: - emit_insn (gen_lasx_xvpermi_q_v4df (d->target, d->target, - d->op0, GEN_INT (0x21))); - break; - case E_V8SImode: - emit_insn (gen_lasx_xvpermi_q_v8si (d->target, d->target, - d->op0, GEN_INT (0x21))); - break; - case E_V8SFmode: - emit_insn (gen_lasx_xvpermi_q_v8sf (d->target, d->target, - d->op0, GEN_INT (0x21))); - break; - case E_V16HImode: - emit_insn (gen_lasx_xvpermi_q_v16hi (d->target, d->target, - d->op0, GEN_INT (0x21))); - break; - case E_V32QImode: - emit_insn (gen_lasx_xvpermi_q_v32qi (d->target, d->target, - d->op0, GEN_INT (0x21))); - break; - default: - break; - } - } - ok = true; - /* Finish the funtion directly. */ - goto expand_perm_const_2_end; - } - else if (loongarch_is_reversing_permutation (d)) - { - /* Selector sample: E_V8SImode, { 7, 6, 5, 4, 3, 2, 1, 0 } - one_vector_p == true */ - idx = d->nelt / 2 - 1; - for (i = 0; i < d->nelt / 2; i += 1) - { - remapped[i] = idx; - remapped[i + d->nelt / 2] = idx; - idx -= 1; - } - /* Selector after: { 3, 2, 1, 0, 3, 2, 1, 0 } - Additional insn will be generated to swap hi and lo 128bit of target - register. */ - reverse_hi_lo = true; - } - else if (loongarch_is_di_misalign_extract (d) - || loongarch_is_si_misalign_extract (d)) - { - /* Selector Sample: - DI misalign: E_V4DImode, { 1, 2, 3, 4 } - SI misalign: E_V8SImode, { 1, 2, 3, 4, 5, 6, 7, 8 } */ - if (!d->testing_p) - { - /* Copy original op0/op1 value to new temp register. - In some cases, operand register may be used in multiple place, so - we need new regiter instead modify original one, to avoid runtime - crashing or wrong value after execution. */ - use_alt_op = true; - op1_alt = gen_reg_rtx (d->vmode); - emit_move_insn (op1_alt, d->op1); - /* Adjust op1 for selecting correct value in high 128bit of target - register. - op1: E_V4DImode, { 4, 5, 6, 7 } -> { 2, 3, 4, 5 }. */ - rtx conv_op1 = simplify_gen_subreg (E_V4DImode, op1_alt, d->vmode, 0); - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, d->op0, d->vmode, 0); - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op1, conv_op1, - conv_op0, GEN_INT (0x21))); - - for (i = 0; i < d->nelt / 2; i += 1) - { - remapped[i] = d->perm[i]; - remapped[i + d->nelt / 2] = d->perm[i]; - } - /* Selector after: - DI misalign: { 1, 2, 1, 2 } - SI misalign: { 1, 2, 3, 4, 1, 2, 3, 4 } */ - } - } - else if (loongarch_is_lasx_lowpart_interleave (d)) - { - /* Elements from op0's low 18bit and op1's 128bit are inserted into - target register alternately. - sample: E_V4DImode, { 0, 4, 1, 5 } */ - if (!d->testing_p) - { - /* Prepare temp register instead of modify original op. */ - use_alt_op = true; - op1_alt = gen_reg_rtx (d->vmode); - op0_alt = gen_reg_rtx (d->vmode); - emit_move_insn (op1_alt, d->op1); - emit_move_insn (op0_alt, d->op0); - - /* Generate subreg for fitting into insn gen function. */ - rtx conv_op1 = simplify_gen_subreg (E_V4DImode, op1_alt, d->vmode, 0); - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, op0_alt, d->vmode, 0); - - /* Adjust op value in temp register. - op0 = {0,1,2,3}, op1 = {4,5,0,1} */ - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op1, conv_op1, - conv_op0, GEN_INT (0x02))); - /* op0 = {0,1,4,5}, op1 = {4,5,0,1} */ - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op0, conv_op0, - conv_op1, GEN_INT (0x01))); - - /* Remap indices in selector based on the location of index inside - selector, and vector element numbers in current vector mode. */ - - /* Filling low 128bit of new selector. */ - for (i = 0; i < d->nelt / 2; i += 1) - { - /* value in odd-indexed slot of low 128bit part of selector - vector. */ - remapped[i] = i % 2 != 0 ? d->perm[i] - d->nelt / 2 : d->perm[i]; - } - /* Then filling the high 128bit. */ - for (i = d->nelt / 2; i < d->nelt; i += 1) + if (loongarch_is_extraction_permutation (d)) + { + if (d->testing_p) + return true; + /* Selector sample: E_V8SImode, { 0, 1, 2, 3, 4, 5, 6, 7 }. */ + if (d->perm[0] == 0) { - /* value in even-indexed slot of high 128bit part of - selector vector. */ - remapped[i] = i % 2 == 0 - ? d->perm[i] + (d->nelt / 2) * 3 : d->perm[i]; + for (i = 0; i < d->nelt / 2; i += 1) + { + remapped[i] = i; + remapped[i + d->nelt / 2] = i; + } } - } - } - else if (loongarch_is_lasx_lowpart_interleave_2 (d)) - { - /* Special lowpart interleave case in V32QI vector mode. It does the same - thing as we can see in if branch that above this line. - Selector sample: E_V32QImode, - {0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39, 8, - 9, 10, 11, 12, 13, 14, 15, 40, 41, 42, 43, 44, 45, 46, 47} */ - if (!d->testing_p) - { - /* Solution for this case in very simple - covert op into V4DI mode, - and do same thing as previous if branch. */ - op1_alt = gen_reg_rtx (d->vmode); - op0_alt = gen_reg_rtx (d->vmode); - emit_move_insn (op1_alt, d->op1); - emit_move_insn (op0_alt, d->op0); - - rtx conv_op1 = simplify_gen_subreg (E_V4DImode, op1_alt, d->vmode, 0); - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, op0_alt, d->vmode, 0); - rtx conv_target = simplify_gen_subreg (E_V4DImode, d->target, - d->vmode, 0); - - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op1, conv_op1, - conv_op0, GEN_INT (0x02))); - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op0, conv_op0, - conv_op1, GEN_INT (0x01))); - remapped[0] = 0; - remapped[1] = 4; - remapped[2] = 1; - remapped[3] = 5; - - for (i = 0; i < d->nelt; i += 1) + else { - rperm[i] = GEN_INT (remapped[i]); + /* { 8, 9, 10, 11, 12, 13, 14, 15 }. */ + for (i = 0; i < d->nelt / 2; i += 1) + { + idx = i + d->nelt / 2; + remapped[i] = idx; + remapped[i + d->nelt / 2] = idx; + } } + /* Selector after: { 0, 1, 2, 3, 0, 1, 2, 3 } + { 8, 9, 10, 11, 8, 9, 10, 11 } */ - sel = gen_rtx_CONST_VECTOR (E_V4DImode, gen_rtvec_v (4, rperm)); - sel = force_reg (E_V4DImode, sel); - emit_insn (gen_lasx_xvshuf_d (conv_target, sel, - conv_op1, conv_op0)); - } - - ok = true; - goto expand_perm_const_2_end; - } - else if (loongarch_is_lasx_lowpart_extract (d)) - { - /* Copy op0's low 128bit to target's low 128bit, and copy op1's low - 128bit to target's high 128bit. - Selector sample: E_V4DImode, { 0, 1, 4 ,5 } */ - if (!d->testing_p) - { - rtx conv_op1 = simplify_gen_subreg (E_V4DImode, d->op1, d->vmode, 0); - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, d->op0, d->vmode, 0); - rtx conv_target = simplify_gen_subreg (E_V4DImode, d->target, - d->vmode, 0); - - /* We can achieve the expectation by using sinple xvpermi.q insn. */ - emit_move_insn (conv_target, conv_op1); - emit_insn (gen_lasx_xvpermi_q_v4di (conv_target, conv_target, - conv_op0, GEN_INT (0x20))); - } - - ok = true; - goto expand_perm_const_2_end; - } - else if (loongarch_is_lasx_highpart_interleave (d)) - { - /* Similar to lowpart interleave, elements from op0's high 128bit and - op1's high 128bit are inserted into target regiter alternately. - Selector sample: E_V8SImode, { 4, 12, 5, 13, 6, 14, 7, 15 } */ - if (!d->testing_p) - { - /* Prepare temp op register. */ - use_alt_op = true; - op1_alt = gen_reg_rtx (d->vmode); - op0_alt = gen_reg_rtx (d->vmode); - emit_move_insn (op1_alt, d->op1); - emit_move_insn (op0_alt, d->op0); - - rtx conv_op1 = simplify_gen_subreg (E_V4DImode, op1_alt, d->vmode, 0); - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, op0_alt, d->vmode, 0); - /* Adjust op value in temp regiter. - op0 = { 0, 1, 2, 3 }, op1 = { 6, 7, 2, 3 } */ - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op1, conv_op1, - conv_op0, GEN_INT (0x13))); - /* op0 = { 2, 3, 6, 7 }, op1 = { 6, 7, 2, 3 } */ - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op0, conv_op0, - conv_op1, GEN_INT (0x01))); - /* Remap indices in selector based on the location of index inside - selector, and vector element numbers in current vector mode. */ - - /* Filling low 128bit of new selector. */ - for (i = 0; i < d->nelt / 2; i += 1) - { - /* value in even-indexed slot of low 128bit part of selector - vector. */ - remapped[i] = i % 2 == 0 ? d->perm[i] - d->nelt / 2 : d->perm[i]; - } - /* Then filling the high 128bit. */ - for (i = d->nelt / 2; i < d->nelt; i += 1) - { - /* value in odd-indexed slot of high 128bit part of selector - vector. */ - remapped[i] = i % 2 != 0 - ? d->perm[i] - (d->nelt / 2) * 3 : d->perm[i]; - } - } - } - else if (loongarch_is_lasx_highpart_interleave_2 (d)) - { - /* Special highpart interleave case in V32QI vector mode. It does the - same thing as the normal version above. - Selector sample: E_V32QImode, - {16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55, - 24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63} - */ - if (!d->testing_p) - { - /* Convert op into V4DImode and do the things. */ - op1_alt = gen_reg_rtx (d->vmode); - op0_alt = gen_reg_rtx (d->vmode); - emit_move_insn (op1_alt, d->op1); - emit_move_insn (op0_alt, d->op0); - - rtx conv_op1 = simplify_gen_subreg (E_V4DImode, op1_alt, d->vmode, 0); - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, op0_alt, d->vmode, 0); - rtx conv_target = simplify_gen_subreg (E_V4DImode, d->target, - d->vmode, 0); - - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op1, conv_op1, - conv_op0, GEN_INT (0x13))); - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op0, conv_op0, - conv_op1, GEN_INT (0x01))); - remapped[0] = 2; - remapped[1] = 6; - remapped[2] = 3; - remapped[3] = 7; - + /* Convert remapped selector array to RTL array. */ for (i = 0; i < d->nelt; i += 1) { rperm[i] = GEN_INT (remapped[i]); } - sel = gen_rtx_CONST_VECTOR (E_V4DImode, gen_rtvec_v (4, rperm)); - sel = force_reg (E_V4DImode, sel); - emit_insn (gen_lasx_xvshuf_d (conv_target, sel, - conv_op1, conv_op0)); + flag = true; + goto expand_perm_const_end; } - ok = true; - goto expand_perm_const_2_end; - } - else if (loongarch_is_elem_duplicate (d)) - { - /* Brocast single element (from op0 or op1) to all slot of target - register. - Selector sample:E_V8SImode, { 2, 2, 2, 2, 2, 2, 2, 2 } */ - if (!d->testing_p) + if (loongarch_is_elem_duplicate (d)) { + if (d->testing_p) + return true; + /* Brocast single element (from op0 or op1) to all slot of target + register. + Selector sample:E_V8SImode, { 2, 2, 2, 2, 2, 2, 2, 2 } */ rtx conv_op1 = simplify_gen_subreg (E_V4DImode, d->op1, d->vmode, 0); rtx conv_op0 = simplify_gen_subreg (E_V4DImode, d->op0, d->vmode, 0); rtx temp_reg = gen_reg_rtx (d->vmode); rtx conv_temp = simplify_gen_subreg (E_V4DImode, temp_reg, d->vmode, 0); - emit_move_insn (temp_reg, d->op0); idx = d->perm[0]; @@ -9903,7 +9256,7 @@ loongarch_expand_vec_perm_const_2 (struct expand_vec_perm_d *d) value that we need to broardcast, because xvrepl128vei does the broardcast job from every 128bit of source register to corresponded part of target register! (A deep sigh.) */ - if (/*idx >= 0 &&*/ idx < d->nelt / 2) + if (idx < d->nelt / 2) { emit_insn (gen_lasx_xvpermi_q_v4di (conv_temp, conv_temp, conv_op0, GEN_INT (0x0))); @@ -9958,310 +9311,75 @@ loongarch_expand_vec_perm_const_2 (struct expand_vec_perm_d *d) break; } - /* finish func directly. */ - ok = true; - goto expand_perm_const_2_end; - } - } - else if (loongarch_is_op_reverse_perm (d)) - { - /* reverse high 128bit and low 128bit in op0. - Selector sample: E_V4DFmode, { 2, 3, 0, 1 } - Use xvpermi.q for doing this job. */ - if (!d->testing_p) - { - if (d->vmode == E_V4DImode) - { - emit_insn (gen_lasx_xvpermi_q_v4di (d->target, d->target, d->op0, - GEN_INT (0x01))); - } - else if (d->vmode == E_V4DFmode) - { - emit_insn (gen_lasx_xvpermi_q_v4df (d->target, d->target, d->op0, - GEN_INT (0x01))); - } - else - { - gcc_unreachable (); - } - } - - ok = true; - goto expand_perm_const_2_end; - } - else if (loongarch_is_single_op_perm (d)) - { - /* Permutation that only select elements from op0. */ - if (!d->testing_p) - { - /* Prepare temp register instead of modify original op. */ - use_alt_op = true; - op0_alt = gen_reg_rtx (d->vmode); - op1_alt = gen_reg_rtx (d->vmode); - - emit_move_insn (op0_alt, d->op0); - emit_move_insn (op1_alt, d->op1); - - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, d->op0, d->vmode, 0); - rtx conv_op0a = simplify_gen_subreg (E_V4DImode, op0_alt, - d->vmode, 0); - rtx conv_op1a = simplify_gen_subreg (E_V4DImode, op1_alt, - d->vmode, 0); - - /* Duplicate op0's low 128bit in op0, then duplicate high 128bit - in op1. After this, xvshuf.* insn's selector argument can - access all elements we need for correct permutation result. */ - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op0a, conv_op0a, conv_op0, - GEN_INT (0x00))); - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op1a, conv_op1a, conv_op0, - GEN_INT (0x11))); - - /* In this case, there's no need to remap selector's indices. */ - for (i = 0; i < d->nelt; i += 1) - { - remapped[i] = d->perm[i]; - } + return true; } - } - else if (loongarch_is_divisible_perm (d)) - { - /* Divisible perm: - Low 128bit of selector only selects elements of op0, - and high 128bit of selector only selects elements of op1. */ - if (!d->testing_p) +expand_perm_const_end: + if (flag) { - /* Prepare temp register instead of modify original op. */ - use_alt_op = true; - op0_alt = gen_reg_rtx (d->vmode); - op1_alt = gen_reg_rtx (d->vmode); - - emit_move_insn (op0_alt, d->op0); - emit_move_insn (op1_alt, d->op1); - - rtx conv_op0a = simplify_gen_subreg (E_V4DImode, op0_alt, - d->vmode, 0); - rtx conv_op1a = simplify_gen_subreg (E_V4DImode, op1_alt, - d->vmode, 0); - rtx conv_op0 = simplify_gen_subreg (E_V4DImode, d->op0, d->vmode, 0); - rtx conv_op1 = simplify_gen_subreg (E_V4DImode, d->op1, d->vmode, 0); - - /* Reorganize op0's hi/lo 128bit and op1's hi/lo 128bit, to make sure - that selector's low 128bit can access all op0's elements, and - selector's high 128bit can access all op1's elements. */ - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op0a, conv_op0a, conv_op1, - GEN_INT (0x02))); - emit_insn (gen_lasx_xvpermi_q_v4di (conv_op1a, conv_op1a, conv_op0, - GEN_INT (0x31))); - - /* No need to modify indices. */ - for (i = 0; i < d->nelt;i += 1) + /* Copy selector vector from memory to vector register for later insn + gen function. + If vector's element in floating point value, we cannot fit + selector argument into insn gen function directly, because of the + insn template definition. As a solution, generate a integral mode + subreg of target, then copy selector vector (that is in integral + mode) to this subreg. */ + switch (d->vmode) { - remapped[i] = d->perm[i]; + case E_V4DFmode: + sel = gen_rtx_CONST_VECTOR (E_V4DImode, gen_rtvec_v (d->nelt, + rperm)); + tmp = simplify_gen_subreg (E_V4DImode, d->target, d->vmode, 0); + emit_move_insn (tmp, sel); + break; + case E_V8SFmode: + sel = gen_rtx_CONST_VECTOR (E_V8SImode, gen_rtvec_v (d->nelt, + rperm)); + tmp = simplify_gen_subreg (E_V8SImode, d->target, d->vmode, 0); + emit_move_insn (tmp, sel); + break; + default: + sel = gen_rtx_CONST_VECTOR (d->vmode, gen_rtvec_v (d->nelt, + rperm)); + emit_move_insn (d->target, sel); + break; } - } - } - else if (loongarch_is_triple_stride_extract (d)) - { - /* Selector sample: E_V4DFmode, { 1, 4, 7, 0 }. */ - if (!d->testing_p) - { - /* Resolve it with brute force modification. */ - remapped[0] = 1; - remapped[1] = 2; - remapped[2] = 3; - remapped[3] = 0; - } - } - else - { - /* When all of the detections above are failed, we will try last - strategy. - The for loop tries to detect following rules based on indices' value, - its position inside of selector vector ,and strange behavior of - xvshuf.* insn; Then we take corresponding action. (Replace with new - value, or give up whole permutation expansion.) */ - for (i = 0; i < d->nelt; i += 1) - { - /* % (2 * d->nelt) */ - idx = d->perm[i]; - /* if index is located in low 128bit of selector vector. */ - if (i < d->nelt / 2) - { - /* Fail case 1: index tries to reach element that located in op0's - high 128bit. */ - if (idx >= d->nelt / 2 && idx < d->nelt) - { - goto expand_perm_const_2_end; - } - /* Fail case 2: index tries to reach element that located in - op1's high 128bit. */ - if (idx >= (d->nelt + d->nelt / 2)) - { - goto expand_perm_const_2_end; - } + target = d->target; + op0 = d->op0; + op1 = d->one_vector_p ? d->op0 : d->op1; - /* Success case: index tries to reach elements that located in - op1's low 128bit. Apply - (nelt / 2) offset to original - value. */ - if (idx >= d->nelt && idx < (d->nelt + d->nelt / 2)) - { - idx -= d->nelt / 2; - } - } - /* if index is located in high 128bit of selector vector. */ - else + /* We FINALLY can generate xvshuf.* insn. */ + switch (d->vmode) { - /* Fail case 1: index tries to reach element that located in - op1's low 128bit. */ - if (idx >= d->nelt && idx < (d->nelt + d->nelt / 2)) - { - goto expand_perm_const_2_end; - } - /* Fail case 2: index tries to reach element that located in - op0's low 128bit. */ - if (idx < (d->nelt / 2)) - { - goto expand_perm_const_2_end; - } - /* Success case: index tries to reach element that located in - op0's high 128bit. */ - if (idx >= d->nelt / 2 && idx < d->nelt) - { - idx -= d->nelt / 2; - } + case E_V4DFmode: + emit_insn (gen_lasx_xvshuf_d_f (target, target, op1, op0)); + break; + case E_V4DImode: + emit_insn (gen_lasx_xvshuf_d (target, target, op1, op0)); + break; + case E_V8SFmode: + emit_insn (gen_lasx_xvshuf_w_f (target, target, op1, op0)); + break; + case E_V8SImode: + emit_insn (gen_lasx_xvshuf_w (target, target, op1, op0)); + break; + case E_V16HImode: + emit_insn (gen_lasx_xvshuf_h (target, target, op1, op0)); + break; + case E_V32QImode: + emit_insn (gen_lasx_xvshuf_b (target, op1, op0, target)); + break; + default: + gcc_unreachable (); + break; } - /* No need to process other case that we did not mentioned. */ - - /* Assign with original or processed value. */ - remapped[i] = idx; - } - } - ok = true; - /* If testing_p is true, compiler is trying to figure out that backend can - handle this permutation, but doesn't want to generate actual insn. So - if true, exit directly. */ - if (d->testing_p) - { - goto expand_perm_const_2_end; - } - - /* Convert remapped selector array to RTL array. */ - for (i = 0; i < d->nelt; i += 1) - { - rperm[i] = GEN_INT (remapped[i]); - } - - /* Copy selector vector from memory to vector regiter for later insn gen - function. - If vector's element in floating point value, we cannot fit selector - argument into insn gen function directly, because of the insn template - definition. As a solution, generate a integral mode subreg of target, - then copy selector vector (that is in integral mode) to this subreg. */ - switch (d->vmode) - { - case E_V4DFmode: - sel = gen_rtx_CONST_VECTOR (E_V4DImode, gen_rtvec_v (d->nelt, rperm)); - tmp = simplify_gen_subreg (E_V4DImode, d->target, d->vmode, 0); - emit_move_insn (tmp, sel); - break; - case E_V8SFmode: - sel = gen_rtx_CONST_VECTOR (E_V8SImode, gen_rtvec_v (d->nelt, rperm)); - tmp = simplify_gen_subreg (E_V8SImode, d->target, d->vmode, 0); - emit_move_insn (tmp, sel); - break; - default: - sel = gen_rtx_CONST_VECTOR (d->vmode, gen_rtvec_v (d->nelt, rperm)); - emit_move_insn (d->target, sel); - break; - } - - target = d->target; - /* If temp op registers are requested in previous if branch, then use temp - register intead of original one. */ - if (use_alt_op) - { - op0 = op0_alt != NULL_RTX ? op0_alt : d->op0; - op1 = op1_alt != NULL_RTX ? op1_alt : d->op1; - } - else - { - op0 = d->op0; - op1 = d->one_vector_p ? d->op0 : d->op1; - } - - /* We FINALLY can generate xvshuf.* insn. */ - switch (d->vmode) - { - case E_V4DFmode: - emit_insn (gen_lasx_xvshuf_d_f (target, target, op1, op0)); - break; - case E_V4DImode: - emit_insn (gen_lasx_xvshuf_d (target, target, op1, op0)); - break; - case E_V8SFmode: - emit_insn (gen_lasx_xvshuf_w_f (target, target, op1, op0)); - break; - case E_V8SImode: - emit_insn (gen_lasx_xvshuf_w (target, target, op1, op0)); - break; - case E_V16HImode: - emit_insn (gen_lasx_xvshuf_h (target, target, op1, op0)); - break; - case E_V32QImode: - emit_insn (gen_lasx_xvshuf_b (target, op1, op0, target)); - break; - default: - gcc_unreachable (); - break; - } - - /* Extra insn for swapping the hi/lo 128bit of target vector register. */ - if (reverse_hi_lo) - { - switch (d->vmode) - { - case E_V4DFmode: - emit_insn (gen_lasx_xvpermi_q_v4df (d->target, d->target, - d->target, GEN_INT (0x1))); - break; - case E_V4DImode: - emit_insn (gen_lasx_xvpermi_q_v4di (d->target, d->target, - d->target, GEN_INT (0x1))); - break; - case E_V8SFmode: - emit_insn (gen_lasx_xvpermi_q_v8sf (d->target, d->target, - d->target, GEN_INT (0x1))); - break; - case E_V8SImode: - emit_insn (gen_lasx_xvpermi_q_v8si (d->target, d->target, - d->target, GEN_INT (0x1))); - break; - case E_V16HImode: - emit_insn (gen_lasx_xvpermi_q_v16hi (d->target, d->target, - d->target, GEN_INT (0x1))); - break; - case E_V32QImode: - emit_insn (gen_lasx_xvpermi_q_v32qi (d->target, d->target, - d->target, GEN_INT (0x1))); - break; - default: - break; + return true; } } - /* Extra insn required by odd/even extraction. Swapping the second and third - 64bit in target vector register. */ - else if (extract_ev_od) - { - rtx converted = simplify_gen_subreg (E_V4DImode, d->target, d->vmode, 0); - emit_insn (gen_lasx_xvpermi_d_v4di (converted, converted, - GEN_INT (0xD8))); - } -expand_perm_const_2_end: - return ok; + return false; } /* Implement TARGET_VECTORIZE_VEC_PERM_CONST. */ @@ -10345,25 +9463,19 @@ loongarch_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode, if (!d.one_vector_p) d.op1 = gen_raw_REG (d.vmode, LAST_VIRTUAL_REGISTER + 3); - ok = loongarch_expand_vec_perm_const_2 (&d); - if (ok) - return ok; - start_sequence (); - ok = loongarch_expand_vec_perm_const_1 (&d); + ok = loongarch_expand_vec_perm_const (&d); end_sequence (); return ok; } - ok = loongarch_expand_vec_perm_const_2 (&d); - if (!ok) - ok = loongarch_expand_vec_perm_const_1 (&d); + ok = loongarch_expand_vec_perm_const (&d); /* If we were given a two-vector permutation which just happened to have both input vectors equal, we folded this into a one-vector permutation. There are several loongson patterns that are matched via direct vec_select+vec_concat expansion, but we do not have - support in loongarch_expand_vec_perm_const_1 to guess the adjustment + support in loongarch_expand_vec_perm_const to guess the adjustment that should be made for a single operand. Just try again with the original permutation. */ if (!ok && which == 3) @@ -10372,7 +9484,7 @@ loongarch_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode, d.op1 = op1; d.one_vector_p = false; memcpy (d.perm, orig_perm, MAX_VECT_LEN); - ok = loongarch_expand_vec_perm_const_1 (&d); + ok = loongarch_expand_vec_perm_const (&d); } return ok; diff --git a/gcc/config/loongarch/loongarch.opt.urls b/gcc/config/loongarch/loongarch.opt.urls new file mode 100644 index 0000000..c78bbfe --- /dev/null +++ b/gcc/config/loongarch/loongarch.opt.urls @@ -0,0 +1,66 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/loongarch/loongarch.opt and generated HTML + +mfpu= +UrlSuffix(gcc/LoongArch-Options.html#index-mfpu-2) + +msoft-float +UrlSuffix(gcc/LoongArch-Options.html#index-msoft-float-5) + +msingle-float +UrlSuffix(gcc/LoongArch-Options.html#index-msingle-float) + +mdouble-float +UrlSuffix(gcc/LoongArch-Options.html#index-mdouble-float-1) + +msimd= +UrlSuffix(gcc/LoongArch-Options.html#index-msimd-1) + +march= +UrlSuffix(gcc/LoongArch-Options.html#index-march-7) + +mtune= +UrlSuffix(gcc/LoongArch-Options.html#index-mtune-8) + +mabi= +UrlSuffix(gcc/LoongArch-Options.html#index-mabi-2) + +mbranch-cost= +UrlSuffix(gcc/LoongArch-Options.html#index-mbranch-cost-2) + +mcheck-zero-division +UrlSuffix(gcc/LoongArch-Options.html#index-mcheck-zero-division) + +mcond-move-int +UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-int) + +mcond-move-float +UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-float) + +mmemcpy +UrlSuffix(gcc/LoongArch-Options.html#index-mmemcpy) + +mstrict-align +UrlSuffix(gcc/LoongArch-Options.html#index-mstrict-align-1) + +mmax-inline-memcpy-size= +UrlSuffix(gcc/LoongArch-Options.html#index-mmax-inline-memcpy-size) + +mexplicit-relocs= +UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1) + +mexplicit-relocs +UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1) + +mrecip +UrlSuffix(gcc/LoongArch-Options.html#index-mrecip) + +mrecip= +UrlSuffix(gcc/LoongArch-Options.html#index-mrecip) + +; skipping UrlSuffix for 'mcmodel=' due to finding no URLs + +mdirect-extern-access +UrlSuffix(gcc/LoongArch-Options.html#index-mdirect-extern-access) + +; skipping UrlSuffix for 'mrelax' due to finding no URLs + diff --git a/gcc/config/lynx.opt.urls b/gcc/config/lynx.opt.urls new file mode 100644 index 0000000..63e7b9c --- /dev/null +++ b/gcc/config/lynx.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/lynx.opt and generated HTML + +mthreads +UrlSuffix(gcc/x86-Windows-Options.html#index-mthreads-1) + diff --git a/gcc/config/m32c/m32c.opt.urls b/gcc/config/m32c/m32c.opt.urls new file mode 100644 index 0000000..da1bc02 --- /dev/null +++ b/gcc/config/m32c/m32c.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/m32c/m32c.opt and generated HTML + +msim +UrlSuffix(gcc/M32C-Options.html#index-msim-4) + +memregs= +UrlSuffix(gcc/M32C-Options.html#index-memregs_003d) + diff --git a/gcc/config/m32r/m32r.opt.urls b/gcc/config/m32r/m32r.opt.urls new file mode 100644 index 0000000..ca33866 --- /dev/null +++ b/gcc/config/m32r/m32r.opt.urls @@ -0,0 +1,27 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/m32r/m32r.opt and generated HTML + +m32rx +UrlSuffix(gcc/M32R_002fD-Options.html#index-m32rx) + +m32r2 +UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r2) + +m32r +UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r) + +malign-loops +UrlSuffix(gcc/M32R_002fD-Options.html#index-malign-loops) + +mdebug +UrlSuffix(gcc/M32R_002fD-Options.html#index-mdebug) + +; skipping UrlSuffix for 'mflush-func=' due to finding no URLs + +mno-flush-func +UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-func) + +mno-flush-trap +UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-trap) + +; skipping UrlSuffix for 'msdata=' due to finding no URLs + diff --git a/gcc/config/m68k/ieee.opt.urls b/gcc/config/m68k/ieee.opt.urls new file mode 100644 index 0000000..9c0c0f9 --- /dev/null +++ b/gcc/config/m68k/ieee.opt.urls @@ -0,0 +1,4 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/ieee.opt and generated HTML + +; skipping UrlSuffix for 'mieee-fp' due to finding no URLs + diff --git a/gcc/config/m68k/m68k-tables.opt.urls b/gcc/config/m68k/m68k-tables.opt.urls new file mode 100644 index 0000000..380dc43 --- /dev/null +++ b/gcc/config/m68k/m68k-tables.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k-tables.opt and generated HTML + diff --git a/gcc/config/m68k/m68k.opt.urls b/gcc/config/m68k/m68k.opt.urls new file mode 100644 index 0000000..079fbf4 --- /dev/null +++ b/gcc/config/m68k/m68k.opt.urls @@ -0,0 +1,107 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k.opt and generated HTML + +m5200 +UrlSuffix(gcc/M680x0-Options.html#index-m5200) + +m5206e +UrlSuffix(gcc/M680x0-Options.html#index-m5206e) + +m528x +UrlSuffix(gcc/M680x0-Options.html#index-m528x) + +m5307 +UrlSuffix(gcc/M680x0-Options.html#index-m5307) + +m5407 +UrlSuffix(gcc/M680x0-Options.html#index-m5407) + +m68000 +UrlSuffix(gcc/M680x0-Options.html#index-m68000) + +m68010 +UrlSuffix(gcc/M680x0-Options.html#index-m68010) + +m68020 +UrlSuffix(gcc/M680x0-Options.html#index-m68020) + +m68020-40 +UrlSuffix(gcc/M680x0-Options.html#index-m68020-40) + +m68020-60 +UrlSuffix(gcc/M680x0-Options.html#index-m68020-60) + +m68030 +UrlSuffix(gcc/M680x0-Options.html#index-m68030) + +m68040 +UrlSuffix(gcc/M680x0-Options.html#index-m68040) + +m68060 +UrlSuffix(gcc/M680x0-Options.html#index-m68060) + +m68881 +UrlSuffix(gcc/M680x0-Options.html#index-m68881) + +malign-int +UrlSuffix(gcc/M680x0-Options.html#index-malign-int) + +march= +UrlSuffix(gcc/M680x0-Options.html#index-march-8) + +mbitfield +UrlSuffix(gcc/M680x0-Options.html#index-mbitfield) + +mc68000 +UrlSuffix(gcc/M680x0-Options.html#index-mc68000) + +mc68020 +UrlSuffix(gcc/M680x0-Options.html#index-mc68020) + +mcfv4e +UrlSuffix(gcc/M680x0-Options.html#index-mcfv4e) + +mcpu= +UrlSuffix(gcc/M680x0-Options.html#index-mcpu-7) + +mcpu32 +UrlSuffix(gcc/M680x0-Options.html#index-mcpu32) + +mdiv +UrlSuffix(gcc/M680x0-Options.html#index-mdiv-1) + +mhard-float +UrlSuffix(gcc/M680x0-Options.html#index-mhard-float-2) + +; skipping UrlSuffix for 'mid-shared-library' due to finding no URLs + +mlong-jump-table-offsets +UrlSuffix(gcc/M680x0-Options.html#index-mlong-jump-table-offsets) + +mnobitfield +UrlSuffix(gcc/M680x0-Options.html#index-mnobitfield) + +mpcrel +UrlSuffix(gcc/M680x0-Options.html#index-mpcrel) + +mrtd +UrlSuffix(gcc/M680x0-Options.html#index-mrtd) + +; skipping UrlSuffix for 'msep-data' due to finding no URLs + +; skipping UrlSuffix for 'mshared-library-id=' due to finding no URLs + +mshort +UrlSuffix(gcc/M680x0-Options.html#index-mshort) + +msoft-float +UrlSuffix(gcc/M680x0-Options.html#index-msoft-float-6) + +mstrict-align +UrlSuffix(gcc/M680x0-Options.html#index-mstrict-align-2) + +mtune= +UrlSuffix(gcc/M680x0-Options.html#index-mtune-9) + +mxgot +UrlSuffix(gcc/M680x0-Options.html#index-mxgot) + diff --git a/gcc/config/m68k/uclinux.opt.urls b/gcc/config/m68k/uclinux.opt.urls new file mode 100644 index 0000000..3fd1392 --- /dev/null +++ b/gcc/config/m68k/uclinux.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/uclinux.opt and generated HTML + diff --git a/gcc/config/mcore/mcore.opt.urls b/gcc/config/mcore/mcore.opt.urls new file mode 100644 index 0000000..a876c8c --- /dev/null +++ b/gcc/config/mcore/mcore.opt.urls @@ -0,0 +1,38 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/mcore/mcore.opt and generated HTML + +m210 +UrlSuffix(gcc/MCore-Options.html#index-m210) + +m340 +UrlSuffix(gcc/MCore-Options.html#index-m340) + +m4byte-functions +UrlSuffix(gcc/MCore-Options.html#index-m4byte-functions) + +mbig-endian +UrlSuffix(gcc/MCore-Options.html#index-mbig-endian-7) + +mcallgraph-data +UrlSuffix(gcc/MCore-Options.html#index-mcallgraph-data) + +mdiv +UrlSuffix(gcc/MCore-Options.html#index-mdiv-2) + +mhardlit +UrlSuffix(gcc/MCore-Options.html#index-mhardlit) + +mlittle-endian +UrlSuffix(gcc/MCore-Options.html#index-mlittle-endian-7) + +mno-lsim +UrlSuffix(gcc/MCore-Options.html#index-mno-lsim-1) + +mslow-bytes +UrlSuffix(gcc/MCore-Options.html#index-mslow-bytes) + +mstack-increment= +UrlSuffix(gcc/MCore-Options.html#index-mstack-increment) + +mwide-bitfields +UrlSuffix(gcc/MCore-Options.html#index-mwide-bitfields) + diff --git a/gcc/config/microblaze/microblaze.opt.urls b/gcc/config/microblaze/microblaze.opt.urls new file mode 100644 index 0000000..33b13b8 --- /dev/null +++ b/gcc/config/microblaze/microblaze.opt.urls @@ -0,0 +1,59 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/microblaze/microblaze.opt and generated HTML + +msoft-float +UrlSuffix(gcc/MicroBlaze-Options.html#index-msoft-float-7) + +mhard-float +UrlSuffix(gcc/MicroBlaze-Options.html#index-mhard-float-3) + +msmall-divides +UrlSuffix(gcc/MicroBlaze-Options.html#index-msmall-divides) + +mcpu= +UrlSuffix(gcc/MicroBlaze-Options.html#index-mcpu_003d-3) + +mmemcpy +UrlSuffix(gcc/MicroBlaze-Options.html#index-mmemcpy-1) + +mbig-endian +UrlSuffix(gcc/MicroBlaze-Options.html#index-mbig-endian-8) + +mlittle-endian +UrlSuffix(gcc/MicroBlaze-Options.html#index-mlittle-endian-8) + +mxl-soft-mul +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-mul) + +mxl-reorder +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-reorder) + +mxl-soft-div +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-div) + +mxl-barrel-shift +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-barrel-shift) + +mxl-pattern-compare +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-pattern-compare) + +mxl-stack-check +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-stack-check) + +mxl-gp-opt +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-gp-opt) + +mno-clearbss +UrlSuffix(gcc/MicroBlaze-Options.html#index-mno-clearbss) + +mxl-multiply-high +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-multiply-high) + +mxl-float-convert +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-convert) + +mxl-float-sqrt +UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-sqrt) + +mpic-data-is-text-relative +UrlSuffix(gcc/MicroBlaze-Options.html#index-mpic-data-is-text-relative-1) + diff --git a/gcc/config/mips/mips-tables.opt.urls b/gcc/config/mips/mips-tables.opt.urls new file mode 100644 index 0000000..3b2a77f --- /dev/null +++ b/gcc/config/mips/mips-tables.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips-tables.opt and generated HTML + diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc index 3131749..46b7d9b 100644 --- a/gcc/config/mips/mips.cc +++ b/gcc/config/mips/mips.cc @@ -4170,6 +4170,37 @@ mips_set_reg_reg_cost (machine_mode mode) } } +/* Implement TARGET_INSN_COSTS. */ + +static int +mips_insn_cost (rtx_insn *x, bool speed) +{ + int cost; + int count; + int ratio; + + if (recog_memoized (x) < 0 + && GET_CODE (PATTERN (x)) != ASM_INPUT + && asm_noperands (PATTERN (x)) < 0) + goto pattern_cost; + + /* FIXME: return get_attr_length? More tests may be needed. */ + if (!speed) + goto pattern_cost; + + count = get_attr_insn_count (x); + ratio = get_attr_perf_ratio (x); + cost = count * ratio; + if (cost > 0) + return cost; + +pattern_cost: + cost = pattern_cost (PATTERN (x), speed); + /* If the cost is zero, then it's likely a complex insn. + FIXME: Return COSTS_N_INSNS (2)? More tests are needed. */ + return cost; +} + /* Implement TARGET_RTX_COSTS. */ static bool @@ -23069,6 +23100,8 @@ mips_bit_clear_p (enum machine_mode mode, unsigned HOST_WIDE_INT m) #define TARGET_RTX_COSTS mips_rtx_costs #undef TARGET_ADDRESS_COST #define TARGET_ADDRESS_COST mips_address_cost +#undef TARGET_INSN_COST +#define TARGET_INSN_COST mips_insn_cost #undef TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P #define TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P mips_no_speculation_in_delay_slots_p diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 6d47241..17dfcbd 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -312,6 +312,10 @@ ;; "11" specifies MEMMODEL_ACQUIRE. (define_attr "sync_memmodel" "" (const_int 10)) +;; Performance ratio. Add this attr to the slow INSNs. +;; Used by mips_insn_cost. +(define_attr "perf_ratio" "" (const_int 0)) + ;; Accumulator operand for madd patterns. (define_attr "accum_in" "none,0,1,2,3,4,5" (const_string "none")) @@ -4415,6 +4419,30 @@ [(set_attr "type" "arith") (set_attr "mode" "SI")]) +(define_insn "*insqisi_extended" + [(set (match_operand:DI 0 "register_operand" "=d") + (sign_extend:DI + (ior:SI (and:SI (subreg:SI (match_dup 0) 0) + (const_int 16777215)) + (ashift:SI + (subreg:SI (match_operand:QI 1 "register_operand" "d") 0) + (const_int 24)))))] + "TARGET_64BIT && !TARGET_MIPS16 && ISA_HAS_EXT_INS" + "ins\t%0,%1,24,8" + [(set_attr "mode" "SI") + (set_attr "perf_ratio" "1")]) + +(define_insn "*inshisi_extended" + [(set (match_operand:DI 0 "register_operand" "=d") + (sign_extend:DI + (ior:SI + (ashift:SI (subreg:SI (match_operand:HI 1 "register_operand" "d") 0) + (const_int 16)) + (zero_extend:SI (subreg:HI (match_dup 0) 0)))))] + "TARGET_64BIT && !TARGET_MIPS16 && ISA_HAS_EXT_INS" + "ins\t%0,%1,16,16" + [(set_attr "mode" "SI") + (set_attr "perf_ratio" "1")]) (define_expand "insvmisalign<mode>" [(set (zero_extract:GPR (match_operand:BLK 0 "memory_operand") diff --git a/gcc/config/mips/mips.opt.urls b/gcc/config/mips/mips.opt.urls new file mode 100644 index 0000000..ff2f0ae --- /dev/null +++ b/gcc/config/mips/mips.opt.urls @@ -0,0 +1,269 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips.opt and generated HTML + +EB +UrlSuffix(gcc/MIPS-Options.html#index-EB-2) + +EL +UrlSuffix(gcc/MIPS-Options.html#index-EL-2) + +; skipping UrlSuffix for 'mabi=' due to finding no URLs + +mabicalls +UrlSuffix(gcc/MIPS-Options.html#index-mabicalls) + +mmad +UrlSuffix(gcc/MIPS-Options.html#index-mmad) + +mimadd +UrlSuffix(gcc/MIPS-Options.html#index-mimadd) + +march= +UrlSuffix(gcc/MIPS-Options.html#index-march-9) + +mbranch-cost= +UrlSuffix(gcc/MIPS-Options.html#index-mbranch-cost-3) + +mbranch-likely +UrlSuffix(gcc/MIPS-Options.html#index-mbranch-likely) + +mflip-mips16 +UrlSuffix(gcc/MIPS-Options.html#index-mflip-mips16) + +mcheck-zero-division +UrlSuffix(gcc/MIPS-Options.html#index-mcheck-zero-division-1) + +mcode-readable= +UrlSuffix(gcc/MIPS-Options.html#index-mcode-readable) + +mdivide-breaks +UrlSuffix(gcc/MIPS-Options.html#index-mdivide-breaks) + +mdivide-traps +UrlSuffix(gcc/MIPS-Options.html#index-mdivide-traps) + +mdmx +UrlSuffix(gcc/MIPS-Options.html#index-mdmx) + +mdouble-float +UrlSuffix(gcc/MIPS-Options.html#index-mdouble-float-2) + +mdsp +UrlSuffix(gcc/MIPS-Options.html#index-mdsp-1) + +mdspr2 +UrlSuffix(gcc/MIPS-Options.html#index-mdspr2) + +; skipping UrlSuffix for 'mdebug' due to finding no URLs + +; skipping UrlSuffix for 'meb' due to finding no URLs + +; skipping UrlSuffix for 'mel' due to finding no URLs + +membedded-data +UrlSuffix(gcc/MIPS-Options.html#index-membedded-data) + +meva +UrlSuffix(gcc/MIPS-Options.html#index-meva) + +mexplicit-relocs +UrlSuffix(gcc/MIPS-Options.html#index-mexplicit-relocs-2) + +mextern-sdata +UrlSuffix(gcc/MIPS-Options.html#index-mextern-sdata) + +mfix-24k +UrlSuffix(gcc/MIPS-Options.html#index-mfix-24k) + +mfix-r4000 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4000) + +mfix-r4400 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4400) + +mfix-r5900 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-r5900) + +mfix-rm7000 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-rm7000) + +mfix-r10000 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-r10000) + +mfix-sb1 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-sb1) + +mfix-vr4120 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4120) + +mfix-vr4130 +UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4130) + +mfp-exceptions +UrlSuffix(gcc/MIPS-Options.html#index-mfp-exceptions) + +mfp32 +UrlSuffix(gcc/MIPS-Options.html#index-mfp32) + +mfpxx +UrlSuffix(gcc/MIPS-Options.html#index-mfpxx) + +mfp64 +UrlSuffix(gcc/MIPS-Options.html#index-mfp64) + +mflush-func= +UrlSuffix(gcc/MIPS-Options.html#index-mflush-func) + +mgp32 +UrlSuffix(gcc/MIPS-Options.html#index-mgp32) + +mgp64 +UrlSuffix(gcc/MIPS-Options.html#index-mgp64) + +mgpopt +UrlSuffix(gcc/MIPS-Options.html#index-mgpopt) + +mplt +UrlSuffix(gcc/MIPS-Options.html#index-mplt) + +mhard-float +UrlSuffix(gcc/MIPS-Options.html#index-mhard-float-4) + +minterlink-compressed +UrlSuffix(gcc/MIPS-Options.html#index-minterlink-compressed) + +minterlink-mips16 +UrlSuffix(gcc/MIPS-Options.html#index-minterlink-mips16) + +mips16 +UrlSuffix(gcc/MIPS-Options.html#index-mips16) + +mips3d +UrlSuffix(gcc/MIPS-Options.html#index-mips3d) + +mllsc +UrlSuffix(gcc/MIPS-Options.html#index-mllsc) + +mlocal-sdata +UrlSuffix(gcc/MIPS-Options.html#index-mlocal-sdata) + +mlong-calls +UrlSuffix(gcc/MIPS-Options.html#index-mlong-calls-6) + +mlong32 +UrlSuffix(gcc/MIPS-Options.html#index-mlong32) + +mlong64 +UrlSuffix(gcc/MIPS-Options.html#index-mlong64) + +mmcount-ra-address +UrlSuffix(gcc/MIPS-Options.html#index-mmcount-ra-address) + +mmemcpy +UrlSuffix(gcc/MIPS-Options.html#index-mmemcpy-2) + +mmicromips +UrlSuffix(gcc/MIPS-Options.html#index-mmicromips) + +mmt +UrlSuffix(gcc/MIPS-Options.html#index-mmt) + +mno-float +UrlSuffix(gcc/MIPS-Options.html#index-mno-float) + +mmcu +UrlSuffix(gcc/MIPS-Options.html#index-mmcu-1) + +; skipping UrlSuffix for 'mno-flush-func' due to finding no URLs + +mno-mdmx +UrlSuffix(gcc/MIPS-Options.html#index-mno-mdmx) + +mno-mips16 +UrlSuffix(gcc/MIPS-Options.html#index-mno-mips16) + +mno-mips3d +UrlSuffix(gcc/MIPS-Options.html#index-mno-mips3d) + +mpaired-single +UrlSuffix(gcc/MIPS-Options.html#index-mpaired-single) + +mr10k-cache-barrier= +UrlSuffix(gcc/MIPS-Options.html#index-mr10k-cache-barrier) + +mrelax-pic-calls +UrlSuffix(gcc/MIPS-Options.html#index-mrelax-pic-calls) + +msingle-float +UrlSuffix(gcc/MIPS-Options.html#index-msingle-float-1) + +msmartmips +UrlSuffix(gcc/MIPS-Options.html#index-msmartmips) + +msoft-float +UrlSuffix(gcc/MIPS-Options.html#index-msoft-float-8) + +msplit-addresses +UrlSuffix(gcc/MIPS-Options.html#index-msplit-addresses) + +mmips16e2 +UrlSuffix(gcc/MIPS-Options.html#index-mmips16e2) + +msym32 +UrlSuffix(gcc/MIPS-Options.html#index-msym32) + +msynci +UrlSuffix(gcc/MIPS-Options.html#index-msynci) + +; skipping UrlSuffix for 'mlra' due to finding no URLs + +mlxc1-sxc1 +UrlSuffix(gcc/MIPS-Options.html#index-mlxc1-sxc1) + +mmadd4 +UrlSuffix(gcc/MIPS-Options.html#index-mmadd4) + +mtune= +UrlSuffix(gcc/MIPS-Options.html#index-mtune-10) + +munaligned-access +UrlSuffix(gcc/MIPS-Options.html#index-munaligned-access-1) + +muninit-const-in-rodata +UrlSuffix(gcc/MIPS-Options.html#index-muninit-const-in-rodata) + +mvirt +UrlSuffix(gcc/MIPS-Options.html#index-mvirt) + +mxpa +UrlSuffix(gcc/MIPS-Options.html#index-mxpa) + +mcrc +UrlSuffix(gcc/MIPS-Options.html#index-mcrc) + +mginv +UrlSuffix(gcc/MIPS-Options.html#index-mginv) + +mvr4130-align +UrlSuffix(gcc/MIPS-Options.html#index-mvr4130-align) + +mxgot +UrlSuffix(gcc/MIPS-Options.html#index-mxgot-1) + +modd-spreg +UrlSuffix(gcc/MIPS-Options.html#index-modd-spreg) + +mframe-header-opt +UrlSuffix(gcc/MIPS-Options.html#index-mframe-header-opt) + +mload-store-pairs +UrlSuffix(gcc/MIPS-Options.html#index-mload-store-pairs) + +mloongson-mmi +UrlSuffix(gcc/MIPS-Options.html#index-mloongson-mmi) + +mloongson-ext +UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext) + +mloongson-ext2 +UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext2) + diff --git a/gcc/config/mips/sde.opt.urls b/gcc/config/mips/sde.opt.urls new file mode 100644 index 0000000..2a3d290 --- /dev/null +++ b/gcc/config/mips/sde.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/sde.opt and generated HTML + diff --git a/gcc/config/mmix/mmix.opt.urls b/gcc/config/mmix/mmix.opt.urls new file mode 100644 index 0000000..6722f9e --- /dev/null +++ b/gcc/config/mmix/mmix.opt.urls @@ -0,0 +1,44 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/mmix/mmix.opt and generated HTML + +mlibfuncs +UrlSuffix(gcc/MMIX-Options.html#index-mlibfuncs) + +mabi=mmixware +UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dmmixware) + +mabi=gnu +UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dgnu) + +mepsilon +UrlSuffix(gcc/MMIX-Options.html#index-mepsilon) + +mzero-extend +UrlSuffix(gcc/MMIX-Options.html#index-mzero-extend) + +mknuthdiv +UrlSuffix(gcc/MMIX-Options.html#index-mknuthdiv) + +mtoplevel-symbols +UrlSuffix(gcc/MMIX-Options.html#index-mtoplevel-symbols) + +melf +UrlSuffix(gcc/MMIX-Options.html#index-melf-1) + +mbranch-predict +UrlSuffix(gcc/MMIX-Options.html#index-mbranch-predict) + +mno-branch-predict +UrlSuffix(gcc/MMIX-Options.html#index-mno-branch-predict) + +mbase-addresses +UrlSuffix(gcc/MMIX-Options.html#index-mbase-addresses) + +mno-base-addresses +UrlSuffix(gcc/MMIX-Options.html#index-mno-base-addresses) + +msingle-exit +UrlSuffix(gcc/MMIX-Options.html#index-msingle-exit) + +mno-single-exit +UrlSuffix(gcc/MMIX-Options.html#index-mno-single-exit) + diff --git a/gcc/config/mn10300/mn10300.opt.urls b/gcc/config/mn10300/mn10300.opt.urls new file mode 100644 index 0000000..396ca4a --- /dev/null +++ b/gcc/config/mn10300/mn10300.opt.urls @@ -0,0 +1,32 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/mn10300/mn10300.opt and generated HTML + +mam33 +UrlSuffix(gcc/MN10300-Options.html#index-mam33) + +mam33-2 +UrlSuffix(gcc/MN10300-Options.html#index-mam33-2) + +mam34 +UrlSuffix(gcc/MN10300-Options.html#index-mam34) + +mtune= +UrlSuffix(gcc/MN10300-Options.html#index-mtune-11) + +mmult-bug +UrlSuffix(gcc/MN10300-Options.html#index-mmult-bug) + +mno-crt0 +UrlSuffix(gcc/MN10300-Options.html#index-mno-crt0) + +mrelax +UrlSuffix(gcc/MN10300-Options.html#index-mrelax-2) + +mreturn-pointer-on-d0 +UrlSuffix(gcc/MN10300-Options.html#index-mreturn-pointer-on-d0) + +mliw +UrlSuffix(gcc/MN10300-Options.html#index-mliw) + +msetlb +UrlSuffix(gcc/MN10300-Options.html#index-msetlb) + diff --git a/gcc/config/moxie/moxie.opt.urls b/gcc/config/moxie/moxie.opt.urls new file mode 100644 index 0000000..a1b8b8a --- /dev/null +++ b/gcc/config/moxie/moxie.opt.urls @@ -0,0 +1,14 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/moxie/moxie.opt and generated HTML + +meb +UrlSuffix(gcc/Moxie-Options.html#index-meb) + +mel +UrlSuffix(gcc/Moxie-Options.html#index-mel) + +mmul.x +UrlSuffix(gcc/Moxie-Options.html#index-mmul_002ex) + +mno-crt0 +UrlSuffix(gcc/Moxie-Options.html#index-mno-crt0-1) + diff --git a/gcc/config/msp430/msp430.opt.urls b/gcc/config/msp430/msp430.opt.urls new file mode 100644 index 0000000..420c1c5 --- /dev/null +++ b/gcc/config/msp430/msp430.opt.urls @@ -0,0 +1,53 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/msp430/msp430.opt and generated HTML + +msim +UrlSuffix(gcc/MSP430-Options.html#index-msim-5) + +mtiny-printf +UrlSuffix(gcc/MSP430-Options.html#index-mtiny-printf) + +masm-hex +UrlSuffix(gcc/MSP430-Options.html#index-masm-hex) + +mmcu= +UrlSuffix(gcc/MSP430-Options.html#index-mmcu_003d) + +mwarn-mcu +UrlSuffix(gcc/MSP430-Options.html#index-mwarn-mcu) + +mwarn-devices-csv +UrlSuffix(gcc/MSP430-Options.html#index-mwarn-devices-csv) + +mcpu= +UrlSuffix(gcc/MSP430-Options.html#index-mcpu_003d-4) + +mlarge +UrlSuffix(gcc/MSP430-Options.html#index-mlarge) + +msmall +UrlSuffix(gcc/MSP430-Options.html#index-msmall) + +mrelax +UrlSuffix(gcc/MSP430-Options.html#index-mrelax-3) + +minrt +UrlSuffix(gcc/MSP430-Options.html#index-minrt) + +mhwmult= +UrlSuffix(gcc/MSP430-Options.html#index-mhwmult_003d) + +mcode-region= +UrlSuffix(gcc/MSP430-Options.html#index-mcode-region) + +mdata-region= +UrlSuffix(gcc/MSP430-Options.html#index-mdata-region) + +msilicon-errata= +UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata) + +msilicon-errata-warn= +UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata-warn) + +mmax-inline-shift= +UrlSuffix(gcc/MSP430-Options.html#index-mmax-inline-shift_003d) + diff --git a/gcc/config/nds32/nds32-elf.opt.urls b/gcc/config/nds32/nds32-elf.opt.urls new file mode 100644 index 0000000..5399afb --- /dev/null +++ b/gcc/config/nds32/nds32-elf.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-elf.opt and generated HTML + +mcmodel= +UrlSuffix(gcc/NDS32-Options.html#index-mcmodel) + diff --git a/gcc/config/nds32/nds32-linux.opt.urls b/gcc/config/nds32/nds32-linux.opt.urls new file mode 100644 index 0000000..27d39f0 --- /dev/null +++ b/gcc/config/nds32/nds32-linux.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-linux.opt and generated HTML + +mcmodel= +UrlSuffix(gcc/NDS32-Options.html#index-mcmodel) + diff --git a/gcc/config/nds32/nds32.opt.urls b/gcc/config/nds32/nds32.opt.urls new file mode 100644 index 0000000..e34512d --- /dev/null +++ b/gcc/config/nds32/nds32.opt.urls @@ -0,0 +1,57 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32.opt and generated HTML + +; skipping UrlSuffix for 'EB' due to finding no URLs + +; skipping UrlSuffix for 'EL' due to finding no URLs + +; skipping UrlSuffix for 'mabi=' due to finding no URLs + +mreduced-regs +UrlSuffix(gcc/NDS32-Options.html#index-mreduced-regs) + +mfull-regs +UrlSuffix(gcc/NDS32-Options.html#index-mfull-regs) + +mbig-endian +UrlSuffix(gcc/NDS32-Options.html#index-mbig-endian-9) + +mlittle-endian +UrlSuffix(gcc/NDS32-Options.html#index-mlittle-endian-9) + +mcmov +UrlSuffix(gcc/NDS32-Options.html#index-mcmov) + +mext-perf +UrlSuffix(gcc/NDS32-Options.html#index-mext-perf) + +mext-perf2 +UrlSuffix(gcc/NDS32-Options.html#index-mext-perf2) + +mext-string +UrlSuffix(gcc/NDS32-Options.html#index-mext-string) + +mv3push +UrlSuffix(gcc/NDS32-Options.html#index-mv3push) + +m16-bit +UrlSuffix(gcc/NDS32-Options.html#index-m16-bit-1) + +misr-vector-size= +UrlSuffix(gcc/NDS32-Options.html#index-misr-vector-size) + +mcache-block-size= +UrlSuffix(gcc/NDS32-Options.html#index-mcache-block-size) + +march= +UrlSuffix(gcc/NDS32-Options.html#index-march-10) + +; skipping UrlSuffix for 'mcpu=' due to finding no URLs + +mctor-dtor +UrlSuffix(gcc/NDS32-Options.html#index-mctor-dtor) + +mrelax +UrlSuffix(gcc/NDS32-Options.html#index-mrelax-4) + +; skipping UrlSuffix for 'munaligned-access' due to finding no URLs + diff --git a/gcc/config/netbsd-elf.opt.urls b/gcc/config/netbsd-elf.opt.urls new file mode 100644 index 0000000..c0e791c --- /dev/null +++ b/gcc/config/netbsd-elf.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd-elf.opt and generated HTML + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + diff --git a/gcc/config/netbsd.opt.urls b/gcc/config/netbsd.opt.urls new file mode 100644 index 0000000..513bf9b --- /dev/null +++ b/gcc/config/netbsd.opt.urls @@ -0,0 +1,6 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + diff --git a/gcc/config/nios2/elf.opt.urls b/gcc/config/nios2/elf.opt.urls new file mode 100644 index 0000000..1367c6b --- /dev/null +++ b/gcc/config/nios2/elf.opt.urls @@ -0,0 +1,14 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/elf.opt and generated HTML + +msmallc +UrlSuffix(gcc/Nios-II-Options.html#index-msmallc) + +msys-lib= +UrlSuffix(gcc/Nios-II-Options.html#index-msys-lib) + +msys-crt0= +UrlSuffix(gcc/Nios-II-Options.html#index-msys-crt0) + +mhal +UrlSuffix(gcc/Nios-II-Options.html#index-mhal) + diff --git a/gcc/config/nios2/nios2.opt.urls b/gcc/config/nios2/nios2.opt.urls new file mode 100644 index 0000000..a38ea28 --- /dev/null +++ b/gcc/config/nios2/nios2.opt.urls @@ -0,0 +1,50 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/nios2.opt and generated HTML + +mhw-div +UrlSuffix(gcc/Nios-II-Options.html#index-mhw-div) + +mhw-mul +UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mul) + +mhw-mulx +UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mulx) + +mfast-sw-div +UrlSuffix(gcc/Nios-II-Options.html#index-mfast-sw-div) + +mbypass-cache +UrlSuffix(gcc/Nios-II-Options.html#index-mbypass-cache) + +mno-cache-volatile +UrlSuffix(gcc/Nios-II-Options.html#index-mno-cache-volatile) + +mcache-volatile +UrlSuffix(gcc/Nios-II-Options.html#index-mcache-volatile) + +mgpopt= +UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1) + +mgpopt +UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1) + +mno-gpopt +UrlSuffix(gcc/Nios-II-Options.html#index-mno-gpopt-1) + +meb +UrlSuffix(gcc/Nios-II-Options.html#index-meb-1) + +mel +UrlSuffix(gcc/Nios-II-Options.html#index-mel-1) + +mcustom-fpu-cfg= +UrlSuffix(gcc/Nios-II-Options.html#index-mcustom-fpu-cfg) + +march= +UrlSuffix(gcc/Nios-II-Options.html#index-march-11) + +mgprel-sec= +UrlSuffix(gcc/Nios-II-Options.html#index-mgprel-sec) + +mr0rel-sec= +UrlSuffix(gcc/Nios-II-Options.html#index-mr0rel-sec) + diff --git a/gcc/config/nvptx/nvptx-gen.opt.urls b/gcc/config/nvptx/nvptx-gen.opt.urls new file mode 100644 index 0000000..7ea1324 --- /dev/null +++ b/gcc/config/nvptx/nvptx-gen.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx-gen.opt and generated HTML + diff --git a/gcc/config/nvptx/nvptx.cc b/gcc/config/nvptx/nvptx.cc index 724e403..9363d3e 100644 --- a/gcc/config/nvptx/nvptx.cc +++ b/gcc/config/nvptx/nvptx.cc @@ -5921,8 +5921,10 @@ nvptx_record_offload_symbol (tree decl) fprintf (asm_out_file, "//:"); if (lookup_attribute ("omp declare target indirect", DECL_ATTRIBUTES (decl))) - fprintf (asm_out_file, "IND_"); - fprintf (asm_out_file, "FUNC_MAP \"%s\"", + fprintf (asm_out_file, "IND_FUNC_MAP"); + else + fprintf (asm_out_file, "FUNC_MAP"); + fprintf (asm_out_file, " \"%s\"", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))); for (; dims; dims = TREE_CHAIN (dims)) diff --git a/gcc/config/nvptx/nvptx.opt.urls b/gcc/config/nvptx/nvptx.opt.urls new file mode 100644 index 0000000..5c8942c --- /dev/null +++ b/gcc/config/nvptx/nvptx.opt.urls @@ -0,0 +1,29 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx.opt and generated HTML + +m64 +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-m64) + +mmainkernel +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mmainkernel) + +moptimize +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-moptimize) + +msoft-stack +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-msoft-stack) + +muniform-simt +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-muniform-simt) + +mgomp +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mgomp) + +misa= +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-misa) + +march= +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-march-12) + +mptx= +UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mptx) + diff --git a/gcc/config/openbsd.opt.urls b/gcc/config/openbsd.opt.urls new file mode 100644 index 0000000..d7ea1ae --- /dev/null +++ b/gcc/config/openbsd.opt.urls @@ -0,0 +1,6 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/openbsd.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + diff --git a/gcc/config/or1k/elf.opt.urls b/gcc/config/or1k/elf.opt.urls new file mode 100644 index 0000000..ea3d5d7 --- /dev/null +++ b/gcc/config/or1k/elf.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/elf.opt and generated HTML + +mboard= +UrlSuffix(gcc/OpenRISC-Options.html#index-mboard) + +mnewlib +UrlSuffix(gcc/OpenRISC-Options.html#index-mnewlib) + diff --git a/gcc/config/or1k/or1k.opt.urls b/gcc/config/or1k/or1k.opt.urls new file mode 100644 index 0000000..2016ea6 --- /dev/null +++ b/gcc/config/or1k/or1k.opt.urls @@ -0,0 +1,46 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/or1k.opt and generated HTML + +mhard-div +UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-div) + +msoft-div +UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-div) + +mhard-mul +UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-mul) + +msoft-mul +UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-mul) + +msoft-float +UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-float-9) + +mhard-float +UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-float-5) + +mdouble-float +UrlSuffix(gcc/OpenRISC-Options.html#index-mdouble-float-3) + +munordered-float +UrlSuffix(gcc/OpenRISC-Options.html#index-munordered-float) + +; skipping UrlSuffix for 'mcmodel=' due to finding no URLs + +mcmov +UrlSuffix(gcc/OpenRISC-Options.html#index-mcmov-1) + +mror +UrlSuffix(gcc/OpenRISC-Options.html#index-mror) + +mrori +UrlSuffix(gcc/OpenRISC-Options.html#index-mrori) + +msext +UrlSuffix(gcc/OpenRISC-Options.html#index-msext) + +msfimm +UrlSuffix(gcc/OpenRISC-Options.html#index-msfimm) + +mshftimm +UrlSuffix(gcc/OpenRISC-Options.html#index-mshftimm) + diff --git a/gcc/config/pa/pa-hpux.opt.urls b/gcc/config/pa/pa-hpux.opt.urls new file mode 100644 index 0000000..6a52dd0 --- /dev/null +++ b/gcc/config/pa/pa-hpux.opt.urls @@ -0,0 +1,11 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux.opt and generated HTML + +msio +UrlSuffix(gcc/HPPA-Options.html#index-msio) + +nolibdld +UrlSuffix(gcc/HPPA-Options.html#index-nolibdld) + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + diff --git a/gcc/config/pa/pa-hpux1010.opt.urls b/gcc/config/pa/pa-hpux1010.opt.urls new file mode 100644 index 0000000..9b96caf --- /dev/null +++ b/gcc/config/pa/pa-hpux1010.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1010.opt and generated HTML + diff --git a/gcc/config/pa/pa-hpux1111.opt.urls b/gcc/config/pa/pa-hpux1111.opt.urls new file mode 100644 index 0000000..706e63c --- /dev/null +++ b/gcc/config/pa/pa-hpux1111.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1111.opt and generated HTML + diff --git a/gcc/config/pa/pa-hpux1131.opt.urls b/gcc/config/pa/pa-hpux1131.opt.urls new file mode 100644 index 0000000..497c49d --- /dev/null +++ b/gcc/config/pa/pa-hpux1131.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1131.opt and generated HTML + diff --git a/gcc/config/pa/pa.opt.urls b/gcc/config/pa/pa.opt.urls new file mode 100644 index 0000000..5b8bceb --- /dev/null +++ b/gcc/config/pa/pa.opt.urls @@ -0,0 +1,71 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa.opt and generated HTML + +matomic-libcalls +UrlSuffix(gcc/HPPA-Options.html#index-matomic-libcalls) + +mbig-switch +UrlSuffix(gcc/HPPA-Options.html#index-mbig-switch) + +mcaller-copies +UrlSuffix(gcc/HPPA-Options.html#index-mcaller-copies) + +mcoherent-ldcw +UrlSuffix(gcc/HPPA-Options.html#index-mcoherent-ldcw) + +mdisable-fpregs +UrlSuffix(gcc/HPPA-Options.html#index-mdisable-fpregs) + +mdisable-indexing +UrlSuffix(gcc/HPPA-Options.html#index-mdisable-indexing) + +mfast-indirect-calls +UrlSuffix(gcc/HPPA-Options.html#index-mfast-indirect-calls) + +mfixed-range= +UrlSuffix(gcc/HPPA-Options.html#index-mfixed-range) + +mgas +UrlSuffix(gcc/HPPA-Options.html#index-mgas) + +mjump-in-delay +UrlSuffix(gcc/HPPA-Options.html#index-mjump-in-delay) + +mlinker-opt +UrlSuffix(gcc/HPPA-Options.html#index-mlinker-opt) + +mlong-calls +UrlSuffix(gcc/HPPA-Options.html#index-mlong-calls-5) + +mlong-load-store +UrlSuffix(gcc/HPPA-Options.html#index-mlong-load-store) + +mno-space-regs +UrlSuffix(gcc/HPPA-Options.html#index-mno-space-regs) + +mordered +UrlSuffix(gcc/HPPA-Options.html#index-mordered) + +mpa-risc-1-0 +UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-0) + +mpa-risc-1-1 +UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-1) + +mpa-risc-2-0 +UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-2-0) + +mportable-runtime +UrlSuffix(gcc/HPPA-Options.html#index-mportable-runtime) + +mschedule= +UrlSuffix(gcc/HPPA-Options.html#index-mschedule) + +msoft-float +UrlSuffix(gcc/HPPA-Options.html#index-msoft-float-4) + +msoft-mult +UrlSuffix(gcc/HPPA-Options.html#index-msoft-mult) + +mspace-regs +UrlSuffix(gcc/HPPA-Options.html#index-mspace-regs) + diff --git a/gcc/config/pa/pa64-hpux.opt.urls b/gcc/config/pa/pa64-hpux.opt.urls new file mode 100644 index 0000000..9ebf027 --- /dev/null +++ b/gcc/config/pa/pa64-hpux.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa64-hpux.opt and generated HTML + +mgnu-ld +UrlSuffix(gcc/HPPA-Options.html#index-mgnu-ld) + +mhp-ld +UrlSuffix(gcc/HPPA-Options.html#index-mhp-ld) + diff --git a/gcc/config/pdp11/pdp11.opt.urls b/gcc/config/pdp11/pdp11.opt.urls new file mode 100644 index 0000000..f0544ca --- /dev/null +++ b/gcc/config/pdp11/pdp11.opt.urls @@ -0,0 +1,41 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pdp11/pdp11.opt and generated HTML + +m10 +UrlSuffix(gcc/PDP-11-Options.html#index-m10) + +m40 +UrlSuffix(gcc/PDP-11-Options.html#index-m40) + +m45 +UrlSuffix(gcc/PDP-11-Options.html#index-m45) + +mac0 +UrlSuffix(gcc/PDP-11-Options.html#index-mac0) + +mdec-asm +UrlSuffix(gcc/PDP-11-Options.html#index-mdec-asm) + +mgnu-asm +UrlSuffix(gcc/PDP-11-Options.html#index-mgnu-asm) + +mfpu +UrlSuffix(gcc/PDP-11-Options.html#index-mfpu-3) + +mint16 +UrlSuffix(gcc/PDP-11-Options.html#index-mint16) + +mint32 +UrlSuffix(gcc/PDP-11-Options.html#index-mint32-1) + +msoft-float +UrlSuffix(gcc/PDP-11-Options.html#index-msoft-float-10) + +msplit +UrlSuffix(gcc/PDP-11-Options.html#index-msplit) + +munix-asm +UrlSuffix(gcc/PDP-11-Options.html#index-munix-asm) + +mlra +UrlSuffix(gcc/PDP-11-Options.html#index-mlra-2) + diff --git a/gcc/config/pru/pru.opt.urls b/gcc/config/pru/pru.opt.urls new file mode 100644 index 0000000..373b02d --- /dev/null +++ b/gcc/config/pru/pru.opt.urls @@ -0,0 +1,17 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/pru/pru.opt and generated HTML + +minrt +UrlSuffix(gcc/PRU-Options.html#index-minrt-1) + +mmcu= +UrlSuffix(gcc/PRU-Options.html#index-mmcu-2) + +mno-relax +UrlSuffix(gcc/PRU-Options.html#index-mno-relax) + +mloop +UrlSuffix(gcc/PRU-Options.html#index-mloop) + +mabi= +UrlSuffix(gcc/PRU-Options.html#index-mabi-3) + diff --git a/gcc/config/riscv/riscv-vector-costs.cc b/gcc/config/riscv/riscv-vector-costs.cc index b9fdfdc..21f8a81 100644 --- a/gcc/config/riscv/riscv-vector-costs.cc +++ b/gcc/config/riscv/riscv-vector-costs.cc @@ -230,6 +230,42 @@ get_biggest_mode (machine_mode mode1, machine_mode mode2) return mode1_size >= mode2_size ? mode1 : mode2; } +/* Return true if the variable should be counted into liveness. */ +static bool +variable_vectorized_p (stmt_vec_info stmt_info, tree var, bool lhs_p) +{ + if (!var) + return false; + gimple *stmt = STMT_VINFO_STMT (stmt_info); + enum stmt_vec_info_type type + = STMT_VINFO_TYPE (vect_stmt_to_vectorize (stmt_info)); + if (is_gimple_call (stmt) && gimple_call_internal_p (stmt)) + { + if (gimple_call_internal_fn (stmt) == IFN_MASK_STORE + || gimple_call_internal_fn (stmt) == IFN_MASK_LOAD) + { + /* .MASK_LOAD (_5, 32B, _33) + ^ ^ ^ + Only the 3rd argument will be vectorized and consume + a vector register. */ + if (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE + || (is_gimple_reg (var) && !POINTER_TYPE_P (TREE_TYPE (var)))) + return true; + else + return false; + } + } + if (lhs_p) + return is_gimple_reg (var) + && (!POINTER_TYPE_P (TREE_TYPE (var)) + || type != store_vec_info_type); + else + return poly_int_tree_p (var) + || (is_gimple_val (var) + && (!POINTER_TYPE_P (TREE_TYPE (var)) + || type != load_vec_info_type)); +} + /* Compute local live ranges of each vectorized variable. Note that we only compute local live ranges (within a block) since local live ranges information is accurate enough for us to determine @@ -277,13 +313,8 @@ compute_local_live_ranges ( { unsigned int point = program_point.point; gimple *stmt = program_point.stmt; - stmt_vec_info stmt_info = program_point.stmt_info; tree lhs = gimple_get_lhs (stmt); - enum stmt_vec_info_type type - = STMT_VINFO_TYPE (vect_stmt_to_vectorize (stmt_info)); - if (lhs != NULL_TREE && is_gimple_reg (lhs) - && (!POINTER_TYPE_P (TREE_TYPE (lhs)) - || type != store_vec_info_type)) + if (variable_vectorized_p (program_point.stmt_info, lhs, true)) { biggest_mode = get_biggest_mode (biggest_mode, TYPE_MODE (TREE_TYPE (lhs))); @@ -307,10 +338,8 @@ compute_local_live_ranges ( TODO: We may elide the cases that the unnecessary IMM in the future. */ - if (poly_int_tree_p (var) - || (is_gimple_val (var) - && (!POINTER_TYPE_P (TREE_TYPE (var)) - || type != load_vec_info_type))) + if (variable_vectorized_p (program_point.stmt_info, var, + false)) { biggest_mode = get_biggest_mode (biggest_mode, @@ -383,7 +412,9 @@ compute_nregs_for_mode (loop_vec_info loop_vinfo, machine_mode mode, unsigned int biggest_size = GET_MODE_SIZE (biggest_mode).to_constant (); gcc_assert (biggest_size >= mode_size); unsigned int ratio = biggest_size / mode_size; - return MAX (lmul / ratio, 1) * rgroup_size; + /* RVV mask bool modes always consume 1 vector register regardless LMUL. */ + unsigned int nregs = mode == BImode ? 1 : lmul / ratio; + return MAX (nregs, 1) * rgroup_size; } /* This function helps to determine whether current LMUL will cause @@ -414,7 +445,9 @@ max_number_of_live_regs (loop_vec_info loop_vinfo, const basic_block bb, pair live_range = (*iter).second; for (i = live_range.first + 1; i <= live_range.second; i++) { - machine_mode mode = TYPE_MODE (TREE_TYPE (var)); + machine_mode mode = TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE + ? BImode + : TYPE_MODE (TREE_TYPE (var)); unsigned int nregs = compute_nregs_for_mode (loop_vinfo, mode, biggest_mode, lmul); live_vars_vec[i] += nregs; @@ -508,8 +541,12 @@ compute_estimated_lmul (loop_vec_info loop_vinfo, machine_mode mode) else if (known_eq (LOOP_VINFO_SLP_UNROLLING_FACTOR (loop_vinfo), 1U)) { int estimated_vf = vect_vf_for_cost (loop_vinfo); - return estimated_vf * GET_MODE_BITSIZE (mode).to_constant () - / TARGET_MIN_VLEN; + int estimated_lmul = estimated_vf * GET_MODE_BITSIZE (mode).to_constant () + / TARGET_MIN_VLEN; + if (estimated_lmul > RVV_M8) + return regno_alignment; + else + return estimated_lmul; } else { @@ -733,6 +770,7 @@ has_unexpected_spills_p (loop_vec_info loop_vinfo) live_ranges_per_bb, &biggest_mode); int lmul = compute_estimated_lmul (loop_vinfo, biggest_mode); + gcc_assert (lmul <= RVV_M8); /* TODO: We calculate the maximum live vars base on current STMTS sequence. We can support live range shrink if it can give us big improvement in the future. */ diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc index 2e350b8..3a2ea9a 100644 --- a/gcc/config/riscv/riscv-vsetvl.cc +++ b/gcc/config/riscv/riscv-vsetvl.cc @@ -85,6 +85,7 @@ along with GCC; see the file COPYING3. If not see #include "predict.h" #include "profile-count.h" #include "gcse.h" +#include "cfgloop.h" using namespace rtl_ssa; using namespace riscv_vector; @@ -648,6 +649,27 @@ has_no_uses (basic_block cfg_bb, rtx_insn *rinsn, int regno) return true; } +/* Return true for the special block that we can't apply LCM optimization. */ +static bool +invalid_opt_bb_p (basic_block cfg_bb) +{ + edge e; + edge_iterator ei; + + /* We don't do LCM optimizations on complex edges. */ + FOR_EACH_EDGE (e, ei, cfg_bb->preds) + if (e->flags & EDGE_COMPLEX) + return true; + + /* We only do LCM optimizations on blocks that are post dominated by + EXIT block, that is, we don't do LCM optimizations on infinite loop. */ + FOR_EACH_EDGE (e, ei, cfg_bb->succs) + if (e->flags & EDGE_FAKE) + return true; + + return false; +} + /* This flags indicates the minimum demand of the vl and vtype values by the RVV instruction. For example, DEMAND_RATIO_P indicates that this RVV instruction only needs the SEW/LMUL ratio to remain the same, and does not @@ -2261,6 +2283,9 @@ public: { /* Initialization of RTL_SSA. */ calculate_dominance_info (CDI_DOMINATORS); + loop_optimizer_init (LOOPS_NORMAL); + /* Create FAKE edges for infinite loops. */ + connect_infinite_loops_to_exit (); df_analyze (); crtl->ssa = new function_info (cfun); m_vector_block_infos.safe_grow_cleared (last_basic_block_for_fn (cfun)); @@ -2271,6 +2296,7 @@ public: void finish () { free_dominance_info (CDI_DOMINATORS); + loop_optimizer_finalize (); if (crtl->ssa->perform_pending_updates ()) cleanup_cfg (0); delete crtl->ssa; @@ -2785,14 +2811,11 @@ pre_vsetvl::compute_lcm_local_properties () for (const bb_info *bb : crtl->ssa->bbs ()) { unsigned bb_index = bb->index (); - edge e; - edge_iterator ei; - FOR_EACH_EDGE (e, ei, bb->cfg_bb ()->preds) - if (e->flags & EDGE_COMPLEX) - { - bitmap_clear (m_antloc[bb_index]); - bitmap_clear (m_transp[bb_index]); - } + if (invalid_opt_bb_p (bb->cfg_bb ())) + { + bitmap_clear (m_antloc[bb_index]); + bitmap_clear (m_transp[bb_index]); + } } } @@ -3305,6 +3328,10 @@ pre_vsetvl::emit_vsetvl () { bool need_commit = false; + /* Fake edge is created by connect infinite loops to exit function. + We should commit vsetvl edge after fake edges removes, otherwise, + it will cause ICE. */ + remove_fake_exit_edges (); for (const bb_info *bb : crtl->ssa->bbs ()) { for (const auto &curr_info : get_block_info (bb).local_infos) diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index c4bc9d1..6bd2236 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -2807,6 +2807,37 @@ riscv_legitimize_move (machine_mode mode, rtx dest, rtx src) return true; } + /* In order to fit NaN boxing, expand + (set FP_REG (reg:HF src)) + to + (set (reg:SI/DI mask) (const_int -65536) + (set (reg:SI/DI temp) (zero_extend:SI/DI (subreg:HI (reg:HF src) 0))) + (set (reg:SI/DI temp) (ior:SI/DI (reg:SI/DI mask) (reg:SI/DI temp))) + (set (reg:HF dest) (unspec:HF [ (reg:SI/DI temp) ] UNSPEC_FMV_SFP16_X)) + */ + + if (TARGET_HARD_FLOAT + && !TARGET_ZFHMIN && mode == HFmode + && REG_P (dest) && FP_REG_P (REGNO (dest)) + && REG_P (src) && !FP_REG_P (REGNO (src)) + && can_create_pseudo_p ()) + { + rtx mask = force_reg (word_mode, gen_int_mode (-65536, word_mode)); + rtx temp = gen_reg_rtx (word_mode); + emit_insn (gen_extend_insn (temp, + simplify_gen_subreg (HImode, src, mode, 0), + word_mode, HImode, 1)); + if (word_mode == SImode) + emit_insn (gen_iorsi3 (temp, mask, temp)); + else + emit_insn (gen_iordi3 (temp, mask, temp)); + + riscv_emit_move (dest, gen_rtx_UNSPEC (HFmode, gen_rtvec (1, temp), + UNSPEC_FMV_SFP16_X)); + + return true; + } + /* We need to deal with constants that would be legitimate immediate_operands but aren't legitimate move_operands. */ if (CONSTANT_P (src) && !move_operand (src, mode)) @@ -6718,7 +6749,9 @@ riscv_for_each_saved_reg (poly_int64 sp_offset, riscv_save_restore_fn fn, || (TARGET_ZFINX && (cfun->machine->frame.mask & ~(1 << RISCV_PROLOGUE_TEMP_REGNUM))))) { - unsigned int fcsr_size = GET_MODE_SIZE (SImode); + /* Always assume FCSR occupy UNITS_PER_WORD to prevent stack + offset misaligned later. */ + unsigned int fcsr_size = UNITS_PER_WORD; if (!epilogue) { riscv_save_restore_reg (word_mode, regno, offset, fn); diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index 0e89138..8421243 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -86,6 +86,9 @@ ;; String unspecs UNSPEC_STRLEN + + ;; Workaround for HFmode without hardware extension + UNSPEC_FMV_SFP16_X ]) (define_c_enum "unspecv" [ @@ -1924,6 +1927,14 @@ (set_attr "type" "fmove") (set_attr "mode" "HF")]) +(define_insn "*movhf_softfloat_boxing" + [(set (match_operand:HF 0 "register_operand" "=f") + (unspec:HF [(match_operand:X 1 "register_operand" " r")] UNSPEC_FMV_SFP16_X))] + "!TARGET_ZFHMIN" + "fmv.w.x\t%0,%1" + [(set_attr "type" "fmove") + (set_attr "mode" "SF")]) + ;; ;; .................... ;; diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls new file mode 100644 index 0000000..e1ab966 --- /dev/null +++ b/gcc/config/riscv/riscv.opt.urls @@ -0,0 +1,91 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/riscv/riscv.opt and generated HTML + +mbig-endian +UrlSuffix(gcc/RISC-V-Options.html#index-mbig-endian-10) + +mlittle-endian +UrlSuffix(gcc/RISC-V-Options.html#index-mlittle-endian-10) + +mbranch-cost= +UrlSuffix(gcc/RISC-V-Options.html#index-mbranch-cost-4) + +; skipping UrlSuffix for 'mplt' due to finding no URLs + +mabi= +UrlSuffix(gcc/RISC-V-Options.html#index-mabi-4) + +mpreferred-stack-boundary= +UrlSuffix(gcc/RISC-V-Options.html#index-mpreferred-stack-boundary) + +mfdiv +UrlSuffix(gcc/RISC-V-Options.html#index-mfdiv) + +mdiv +UrlSuffix(gcc/RISC-V-Options.html#index-mdiv-3) + +march= +UrlSuffix(gcc/RISC-V-Options.html#index-march-14) + +mtune= +UrlSuffix(gcc/RISC-V-Options.html#index-mtune-12) + +mcpu= +UrlSuffix(gcc/RISC-V-Options.html#index-mcpu-8) + +msmall-data-limit= +UrlSuffix(gcc/RISC-V-Options.html#index-msmall-data-limit-1) + +msave-restore +UrlSuffix(gcc/RISC-V-Options.html#index-msave-restore) + +mshorten-memrefs +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) + +; skipping UrlSuffix for 'mexplicit-relocs' due to finding no URLs + +mrelax +UrlSuffix(gcc/RISC-V-Options.html#index-mrelax-5) + +mcsr-check +UrlSuffix(gcc/RISC-V-Options.html#index-mcsr-check) + +; skipping UrlSuffix for 'momit-leaf-frame-pointer' due to finding no URLs + +mriscv-attribute +UrlSuffix(gcc/RISC-V-Options.html#index-mriscv-attribute) + +malign-data= +UrlSuffix(gcc/RISC-V-Options.html#index-malign-data) + +mstack-protector-guard= +UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-2) + +mstack-protector-guard-reg= +UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-reg-1) + +mstack-protector-guard-offset= +UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-offset-2) + +misa-spec= +UrlSuffix(gcc/RISC-V-Options.html#index-misa-spec) + +mmovcc +UrlSuffix(gcc/RISC-V-Options.html#index-mmovcc) + +minline-atomics +UrlSuffix(gcc/RISC-V-Options.html#index-minline-atomics) + +minline-strcmp +UrlSuffix(gcc/RISC-V-Options.html#index-minline-strcmp) + +minline-strncmp +UrlSuffix(gcc/RISC-V-Options.html#index-minline-strncmp) + +minline-strlen +UrlSuffix(gcc/RISC-V-Options.html#index-minline-strlen) + diff --git a/gcc/config/riscv/t-riscv b/gcc/config/riscv/t-riscv index 067771e..32de6b8 100644 --- a/gcc/config/riscv/t-riscv +++ b/gcc/config/riscv/t-riscv @@ -64,7 +64,7 @@ riscv-vsetvl.o: $(srcdir)/config/riscv/riscv-vsetvl.cc \ $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \ $(TARGET_H) tree-pass.h df.h rtl-ssa.h cfgcleanup.h insn-config.h \ insn-attr.h insn-opinit.h tm-constrs.h cfgrtl.h cfganal.h lcm.h \ - predict.h profile-count.h \ + predict.h profile-count.h cfgloop.h \ $(srcdir)/config/riscv/riscv-vsetvl.def $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/riscv/riscv-vsetvl.cc diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md index ae39a9d..3d2c1c3 100644 --- a/gcc/config/riscv/vector.md +++ b/gcc/config/riscv/vector.md @@ -53,8 +53,8 @@ vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\ vgather,vcompress,vlsegde,vssegte,vlsegds,vssegts,vlsegdux,vlsegdox,\ vssegtux,vssegtox,vlsegdff,vandn,vbrev,vbrev8,vrev8,vclz,vctz,vrol,\ - vror,vwsll,vclmul,vclmulh,vghsh,vgmul,vaesef,vaesem,vaesdf,vaesdm,\ - vaeskf1,vaeskf2,vaesz,vsha2ms,vsha2ch,vsha2cl,vsm4k,vsm4r,vsm3me,vsm3c") + vror,vwsll,vclmul,vclmulh,vghsh,vgmul,vaesef,vaesem,vaesdf,vaesdm,\ + vaeskf1,vaeskf2,vaesz,vsha2ms,vsha2ch,vsha2cl,vsm4k,vsm4r,vsm3me,vsm3c") (const_string "true")] (const_string "false"))) @@ -77,8 +77,8 @@ vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\ vgather,vcompress,vlsegde,vssegte,vlsegds,vssegts,vlsegdux,vlsegdox,\ vssegtux,vssegtox,vlsegdff,vandn,vbrev,vbrev8,vrev8,vclz,vctz,vrol,\ - vror,vwsll,vclmul,vclmulh,vghsh,vgmul,vaesef,vaesem,vaesdf,vaesdm,\ - vaeskf1,vaeskf2,vaesz,vsha2ms,vsha2ch,vsha2cl,vsm4k,vsm4r,vsm3me,vsm3c") + vror,vwsll,vclmul,vclmulh,vghsh,vgmul,vaesef,vaesem,vaesdf,vaesdm,\ + vaeskf1,vaeskf2,vaesz,vsha2ms,vsha2ch,vsha2cl,vsm4k,vsm4r,vsm3me,vsm3c") (const_string "true")] (const_string "false"))) @@ -707,7 +707,7 @@ vired,viwred,vfredu,vfredo,vfwredu,vfwredo,vimovxv,vfmovfv,\ vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\ vgather,vldff,viwmuladd,vfwmuladd,vlsegde,vlsegds,vlsegdux,vlsegdox,vlsegdff,\ - vandn,vbrev,vbrev8,vrev8,vrol,vror,vwsll,vclmul,vclmulh") + vandn,vbrev,vbrev8,vrev8,vrol,vror,vwsll,vclmul,vclmulh") (const_int 2) (eq_attr "type" "vimerge,vfmerge,vcompress,vghsh,vgmul,vaesef,vaesem,vaesdf,vaesdm,\ diff --git a/gcc/config/rl78/rl78.opt.urls b/gcc/config/rl78/rl78.opt.urls new file mode 100644 index 0000000..96eff5f --- /dev/null +++ b/gcc/config/rl78/rl78.opt.urls @@ -0,0 +1,31 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rl78/rl78.opt and generated HTML + +msim +UrlSuffix(gcc/RL78-Options.html#index-msim-6) + +mmul= +UrlSuffix(gcc/RL78-Options.html#index-mmul) + +mallregs +UrlSuffix(gcc/RL78-Options.html#index-mallregs) + +; skipping UrlSuffix for 'mrelax' due to finding no URLs + +mcpu= +UrlSuffix(gcc/RL78-Options.html#index-mcpu-9) + +mg10 +UrlSuffix(gcc/RL78-Options.html#index-mg10) + +mg13 +UrlSuffix(gcc/RL78-Options.html#index-mg13) + +mg14 +UrlSuffix(gcc/RL78-Options.html#index-mg14) + +mrl78 +UrlSuffix(gcc/RL78-Options.html#index-mrl78) + +msave-mduc-in-interrupts +UrlSuffix(gcc/RL78-Options.html#index-msave-mduc-in-interrupts) + diff --git a/gcc/config/rpath.opt.urls b/gcc/config/rpath.opt.urls new file mode 100644 index 0000000..249dfdf --- /dev/null +++ b/gcc/config/rpath.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rpath.opt and generated HTML + diff --git a/gcc/config/rs6000/476.opt.urls b/gcc/config/rs6000/476.opt.urls new file mode 100644 index 0000000..cecf722 --- /dev/null +++ b/gcc/config/rs6000/476.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/476.opt and generated HTML + diff --git a/gcc/config/rs6000/aix64.opt.urls b/gcc/config/rs6000/aix64.opt.urls new file mode 100644 index 0000000..89600bb --- /dev/null +++ b/gcc/config/rs6000/aix64.opt.urls @@ -0,0 +1,23 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/aix64.opt and generated HTML + +maix64 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix64) + +maix32 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix32) + +; skipping UrlSuffix for 'mcmodel=' due to finding no URLs + +mpe +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpe) + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + +m64 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1) + +m32 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32) + diff --git a/gcc/config/rs6000/darwin.opt.urls b/gcc/config/rs6000/darwin.opt.urls new file mode 100644 index 0000000..3b7fa1a --- /dev/null +++ b/gcc/config/rs6000/darwin.opt.urls @@ -0,0 +1,14 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/darwin.opt and generated HTML + +ffix-and-continue +UrlSuffix(gcc/Darwin-Options.html#index-ffix-and-continue) + +findirect-data +UrlSuffix(gcc/Darwin-Options.html#index-findirect-data) + +m64 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1) + +m32 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32) + diff --git a/gcc/config/rs6000/linux64.opt.urls b/gcc/config/rs6000/linux64.opt.urls new file mode 100644 index 0000000..eb81aa1 --- /dev/null +++ b/gcc/config/rs6000/linux64.opt.urls @@ -0,0 +1,4 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/linux64.opt and generated HTML + +; skipping UrlSuffix for 'mcmodel=' due to finding no URLs + diff --git a/gcc/config/rs6000/rs6000-tables.opt.urls b/gcc/config/rs6000/rs6000-tables.opt.urls new file mode 100644 index 0000000..a44ce0d --- /dev/null +++ b/gcc/config/rs6000/rs6000-tables.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000-tables.opt and generated HTML + diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls new file mode 100644 index 0000000..28bf073 --- /dev/null +++ b/gcc/config/rs6000/rs6000.opt.urls @@ -0,0 +1,214 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000.opt and generated HTML + +mpowerpc64 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc64) + +mpowerpc-gpopt +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gpopt) + +mpowerpc-gfxopt +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gfxopt) + +mmfcrf +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmfcrf) + +mpopcntb +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntb) + +mfprnd +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfprnd) + +mcmpb +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcmpb) + +maltivec +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maltivec) + +mhard-dfp +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-dfp) + +mmulhw +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmulhw) + +mdlmzb +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mdlmzb) + +mmultiple +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmultiple) + +msoft-float +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msoft-float-11) + +mhard-float +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-float-6) + +mpopcntd +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntd) + +mfriz +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfriz) + +mveclibabi= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mveclibabi) + +mvsx +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvsx) + +mno-update +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-update) + +mupdate +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mupdate) + +msingle-pic-base +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msingle-pic-base-1) + +mavoid-indexed-addresses +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mavoid-indexed-addresses) + +; skipping UrlSuffix for 'msched-prolog' due to finding no URLs + +maix-struct-return +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix-struct-return) + +msvr4-struct-return +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msvr4-struct-return) + +mxl-compat +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mxl-compat) + +mrecip +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-1) + +mrecip= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-1) + +mrecip-precision +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-precision) + +mno-fp-in-toc +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-fp-in-toc) + +mno-sum-in-toc +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-sum-in-toc) + +mminimal-toc +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mminimal-toc) + +mfull-toc +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfull-toc) + +mvrsave +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvrsave) + +mblock-move-inline-limit= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-move-inline-limit) + +mblock-compare-inline-limit= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-limit) + +mblock-compare-inline-loop-limit= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-loop-limit) + +mstring-compare-inline-limit= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstring-compare-inline-limit) + +misel +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-misel) + +; skipping UrlSuffix for 'mdebug=' due to finding no URLs + +mabi=elfv1 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv1) + +mabi=elfv2 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv2) + +mabi=ieeelongdouble +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dieeelongdouble) + +mabi=ibmlongdouble +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dibmlongdouble) + +mcpu= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcpu-10) + +mtune= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtune-13) + +mtraceback= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtraceback) + +mlongcall +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlongcall) + +; skipping UrlSuffix for 'mlra' due to finding no URLs + +msched-costly-dep= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msched-costly-dep) + +minsert-sched-nops= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-minsert-sched-nops) + +mprioritize-restricted-insns= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprioritize-restricted-insns) + +mpointers-to-nested-functions +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpointers-to-nested-functions) + +msave-toc-indirect +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msave-toc-indirect) + +mpower8-fusion +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-fusion) + +mpower8-vector +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-vector) + +mcrypto +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcrypto) + +mhtm +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhtm) + +mquad-memory +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory) + +mquad-memory-atomic +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory-atomic) + +mcompat-align-parm +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcompat-align-parm) + +; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs + +mfloat128 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128) + +mfloat128-hardware +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128-hardware) + +mstack-protector-guard= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-3) + +mstack-protector-guard-reg= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-reg-2) + +mstack-protector-guard-offset= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-offset-3) + +mprefixed +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprefixed) + +mpcrel +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpcrel-1) + +mmma +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmma) + +mrop-protect +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrop-protect) + +mprivileged +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprivileged) + diff --git a/gcc/config/rs6000/sysv4.opt.urls b/gcc/config/rs6000/sysv4.opt.urls new file mode 100644 index 0000000..f8d58d6 --- /dev/null +++ b/gcc/config/rs6000/sysv4.opt.urls @@ -0,0 +1,87 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/sysv4.opt and generated HTML + +msdata= +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2) + +mreadonly-in-sdata +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mreadonly-in-sdata) + +; skipping UrlSuffix for 'mtls-size=' due to finding no URLs + +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) + +mrelocatable +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable) + +mrelocatable-lib +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable-lib) + +mlittle-endian +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle-endian-11) + +mlittle +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle) + +mbig-endian +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig-endian-11) + +mbig +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig) + +mno-toc +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-toc) + +mtoc +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtoc) + +mprototype +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprototype) + +meabi +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-meabi) + +mregnames +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mregnames) + +msdata +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2) + +msim +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msim-7) + +mads +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mads) + +myellowknife +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-myellowknife) + +mmvme +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmvme) + +memb +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-memb) + +m64 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1) + +m32 +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32) + +; skipping UrlSuffix for 'mnewlib' due to finding no URLs + +msecure-plt +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msecure-plt) + +mbss-plt +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbss-plt) + +mpltseq +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpltseq) + +mgnu-attribute +UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mgnu-attribute) + diff --git a/gcc/config/rtems.opt.urls b/gcc/config/rtems.opt.urls new file mode 100644 index 0000000..211a70d --- /dev/null +++ b/gcc/config/rtems.opt.urls @@ -0,0 +1,6 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rtems.opt and generated HTML + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + diff --git a/gcc/config/rx/elf.opt.urls b/gcc/config/rx/elf.opt.urls new file mode 100644 index 0000000..c43973a --- /dev/null +++ b/gcc/config/rx/elf.opt.urls @@ -0,0 +1,14 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/elf.opt and generated HTML + +msim +UrlSuffix(gcc/RX-Options.html#index-msim-8) + +mas100-syntax +UrlSuffix(gcc/RX-Options.html#index-mas100-syntax) + +mint-register= +UrlSuffix(gcc/RX-Options.html#index-mint-register) + +msave-acc-in-interrupts +UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts) + diff --git a/gcc/config/rx/rx.opt.urls b/gcc/config/rx/rx.opt.urls new file mode 100644 index 0000000..4cb0373 --- /dev/null +++ b/gcc/config/rx/rx.opt.urls @@ -0,0 +1,54 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/rx.opt and generated HTML + +m64bit-doubles +UrlSuffix(gcc/RX-Options.html#index-m64bit-doubles-1) + +m32bit-doubles +UrlSuffix(gcc/RX-Options.html#index-m32bit-doubles-1) + +nofpu +UrlSuffix(gcc/RX-Options.html#index-nofpu) + +fpu +UrlSuffix(gcc/RX-Options.html#index-fpu) + +mcpu= +UrlSuffix(gcc/RX-Options.html#index-mcpu-11) + +mbig-endian-data +UrlSuffix(gcc/RX-Options.html#index-mbig-endian-data) + +mlittle-endian-data +UrlSuffix(gcc/RX-Options.html#index-mlittle-endian-data) + +msmall-data-limit= +UrlSuffix(gcc/RX-Options.html#index-msmall-data-limit-2) + +mrelax +UrlSuffix(gcc/RX-Options.html#index-mrelax-6) + +mmax-constant-size= +UrlSuffix(gcc/RX-Options.html#index-mmax-constant-size) + +mint-register= +UrlSuffix(gcc/RX-Options.html#index-mint-register) + +msave-acc-in-interrupts +UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts) + +mpid +UrlSuffix(gcc/RX-Options.html#index-mpid) + +mwarn-multiple-fast-interrupts +UrlSuffix(gcc/RX-Options.html#index-mwarn-multiple-fast-interrupts) + +; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs + +; skipping UrlSuffix for 'mlra' due to finding no URLs + +mallow-string-insns +UrlSuffix(gcc/RX-Options.html#index-mallow-string-insns) + +mjsr +UrlSuffix(gcc/RX-Options.html#index-mjsr) + diff --git a/gcc/config/s390/s390.opt.urls b/gcc/config/s390/s390.opt.urls new file mode 100644 index 0000000..ab1e761 --- /dev/null +++ b/gcc/config/s390/s390.opt.urls @@ -0,0 +1,92 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/s390.opt and generated HTML + +m31 +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m31) + +m64 +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m64-2) + +march= +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-march-15) + +mbackchain +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mbackchain) + +mdebug +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mdebug-1) + +mesa +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mesa) + +mhard-dfp +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-dfp-1) + +mhard-float +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-float-7) + +mhotpatch= +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhotpatch) + +mlong-double-128 +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-128) + +mlong-double-64 +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-64) + +mhtm +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhtm-1) + +mvx +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mvx) + +mpacked-stack +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mpacked-stack) + +msmall-exec +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msmall-exec) + +msoft-float +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msoft-float-12) + +mstack-guard= +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-guard) + +mstack-size= +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-size-2) + +mtune= +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtune-14) + +mmvcle +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mmvcle) + +mzvector +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzvector) + +mwarn-dynamicstack +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-dynamicstack) + +mwarn-framesize= +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-framesize) + +mzarch +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzarch) + +; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs + +; skipping UrlSuffix for 'mlra' due to finding no URLs + +; skipping UrlSuffix for 'mpic-data-is-text-relative' due to finding no URLs + +; skipping UrlSuffix for 'mindirect-branch=' due to finding no URLs + +; skipping UrlSuffix for 'mfunction-return=' due to finding no URLs + +; skipping UrlSuffix for 'mfentry' due to finding no URLs + +; skipping UrlSuffix for 'mrecord-mcount' due to finding no URLs + +; skipping UrlSuffix for 'mnop-mcount' due to finding no URLs + +; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs + diff --git a/gcc/config/s390/tpf.opt.urls b/gcc/config/s390/tpf.opt.urls new file mode 100644 index 0000000..8322d7e --- /dev/null +++ b/gcc/config/s390/tpf.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/tpf.opt and generated HTML + +mtpf-trace +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace) + +mtpf-trace-skip +UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace-skip) + diff --git a/gcc/config/sh/sh.opt.urls b/gcc/config/sh/sh.opt.urls new file mode 100644 index 0000000..2c3bc06 --- /dev/null +++ b/gcc/config/sh/sh.opt.urls @@ -0,0 +1,174 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/sh.opt and generated HTML + +m1 +UrlSuffix(gcc/SH-Options.html#index-m1) + +m2 +UrlSuffix(gcc/SH-Options.html#index-m2) + +m2a +UrlSuffix(gcc/SH-Options.html#index-m2a) + +m2a-nofpu +UrlSuffix(gcc/SH-Options.html#index-m2a-nofpu) + +m2a-single +UrlSuffix(gcc/SH-Options.html#index-m2a-single) + +m2a-single-only +UrlSuffix(gcc/SH-Options.html#index-m2a-single-only) + +m3 +UrlSuffix(gcc/SH-Options.html#index-m3) + +m3e +UrlSuffix(gcc/SH-Options.html#index-m3e) + +m4 +UrlSuffix(gcc/SH-Options.html#index-m4) + +m4-100 +UrlSuffix(gcc/SH-Options.html#index-m4-100) + +m4-200 +UrlSuffix(gcc/SH-Options.html#index-m4-200) + +m4-300 +UrlSuffix(gcc/SH-Options.html#index-m4-300) + +m4-nofpu +UrlSuffix(gcc/SH-Options.html#index-m4-nofpu) + +m4-100-nofpu +UrlSuffix(gcc/SH-Options.html#index-m4-100-nofpu) + +m4-200-nofpu +UrlSuffix(gcc/SH-Options.html#index-m4-200-nofpu) + +m4-300-nofpu +UrlSuffix(gcc/SH-Options.html#index-m4-300-nofpu) + +m4-340 +UrlSuffix(gcc/SH-Options.html#index-m4-340) + +m4-500 +UrlSuffix(gcc/SH-Options.html#index-m4-500) + +m4-single +UrlSuffix(gcc/SH-Options.html#index-m4-single) + +m4-100-single +UrlSuffix(gcc/SH-Options.html#index-m4-100-single) + +m4-200-single +UrlSuffix(gcc/SH-Options.html#index-m4-200-single) + +m4-300-single +UrlSuffix(gcc/SH-Options.html#index-m4-300-single) + +m4-single-only +UrlSuffix(gcc/SH-Options.html#index-m4-single-only) + +m4-100-single-only +UrlSuffix(gcc/SH-Options.html#index-m4-100-single-only) + +m4-200-single-only +UrlSuffix(gcc/SH-Options.html#index-m4-200-single-only) + +m4-300-single-only +UrlSuffix(gcc/SH-Options.html#index-m4-300-single-only) + +m4a +UrlSuffix(gcc/SH-Options.html#index-m4a) + +m4a-nofpu +UrlSuffix(gcc/SH-Options.html#index-m4a-nofpu) + +m4a-single +UrlSuffix(gcc/SH-Options.html#index-m4a-single) + +m4a-single-only +UrlSuffix(gcc/SH-Options.html#index-m4a-single-only) + +m4al +UrlSuffix(gcc/SH-Options.html#index-m4al) + +maccumulate-outgoing-args +UrlSuffix(gcc/SH-Options.html#index-maccumulate-outgoing-args) + +mb +UrlSuffix(gcc/SH-Options.html#index-mb) + +mbigtable +UrlSuffix(gcc/SH-Options.html#index-mbigtable) + +mbitops +UrlSuffix(gcc/SH-Options.html#index-mbitops) + +; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs + +mzdcbranch +UrlSuffix(gcc/SH-Options.html#index-mzdcbranch) + +mcbranch-force-delay-slot +UrlSuffix(gcc/SH-Options.html#index-mcbranch-force-delay-slot) + +mdalign +UrlSuffix(gcc/SH-Options.html#index-mdalign) + +; skipping UrlSuffix for 'mdiv=' due to finding no URLs + +; skipping UrlSuffix for 'mfdpic' due to finding no URLs + +mfmovd +UrlSuffix(gcc/SH-Options.html#index-mfmovd) + +mfixed-range= +UrlSuffix(gcc/SH-Options.html#index-mfixed-range-2) + +mieee +UrlSuffix(gcc/SH-Options.html#index-mieee-1) + +minline-ic_invalidate +UrlSuffix(gcc/SH-Options.html#index-minline-ic_005finvalidate) + +misize +UrlSuffix(gcc/SH-Options.html#index-misize-1) + +ml +UrlSuffix(gcc/SH-Options.html#index-ml) + +mnomacsave +UrlSuffix(gcc/SH-Options.html#index-mnomacsave) + +mpadstruct +UrlSuffix(gcc/SH-Options.html#index-mpadstruct) + +mprefergot +UrlSuffix(gcc/SH-Options.html#index-mprefergot) + +mrelax +UrlSuffix(gcc/SH-Options.html#index-mrelax-7) + +mrenesas +UrlSuffix(gcc/SH-Options.html#index-mrenesas) + +mtas +UrlSuffix(gcc/SH-Options.html#index-mtas) + +; skipping UrlSuffix for 'multcost=' due to finding no URLs + +musermode +UrlSuffix(gcc/SH-Options.html#index-musermode) + +mpretend-cmove +UrlSuffix(gcc/SH-Options.html#index-mpretend-cmove) + +mfsca +UrlSuffix(gcc/SH-Options.html#index-mfsca) + +mfsrra +UrlSuffix(gcc/SH-Options.html#index-mfsrra) + +; skipping UrlSuffix for 'mlra' due to finding no URLs + diff --git a/gcc/config/sh/superh.opt.urls b/gcc/config/sh/superh.opt.urls new file mode 100644 index 0000000..c098ec1 --- /dev/null +++ b/gcc/config/sh/superh.opt.urls @@ -0,0 +1,4 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/superh.opt and generated HTML + +; skipping UrlSuffix for 'mboard=' due to finding no URLs + diff --git a/gcc/config/sol2.opt.urls b/gcc/config/sol2.opt.urls new file mode 100644 index 0000000..ef64d47 --- /dev/null +++ b/gcc/config/sol2.opt.urls @@ -0,0 +1,21 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/sol2.opt and generated HTML + +G +UrlSuffix(gcc/System-V-Options.html#index-G-5) + +mclear-hwcap +UrlSuffix(gcc/Solaris-2-Options.html#index-mclear-hwcap) + +mimpure-text +UrlSuffix(gcc/Solaris-2-Options.html#index-mimpure-text) + +; skipping UrlSuffix for 'pthread' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-pthread-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-pthread' + +pthreads +UrlSuffix(gcc/Solaris-2-Options.html#index-pthreads) + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + diff --git a/gcc/config/sparc/long-double-switch.opt.urls b/gcc/config/sparc/long-double-switch.opt.urls new file mode 100644 index 0000000..62f5738 --- /dev/null +++ b/gcc/config/sparc/long-double-switch.opt.urls @@ -0,0 +1,6 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/long-double-switch.opt and generated HTML + +; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs + +; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs + diff --git a/gcc/config/sparc/sparc.opt.urls b/gcc/config/sparc/sparc.opt.urls new file mode 100644 index 0000000..7977467 --- /dev/null +++ b/gcc/config/sparc/sparc.opt.urls @@ -0,0 +1,108 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/sparc.opt and generated HTML + +mfpu +UrlSuffix(gcc/SPARC-Options.html#index-mfpu-4) + +mhard-float +UrlSuffix(gcc/SPARC-Options.html#index-mhard-float-8) + +msoft-float +UrlSuffix(gcc/SPARC-Options.html#index-msoft-float-13) + +mflat +UrlSuffix(gcc/SPARC-Options.html#index-mflat) + +munaligned-doubles +UrlSuffix(gcc/SPARC-Options.html#index-munaligned-doubles) + +mapp-regs +UrlSuffix(gcc/SPARC-Options.html#index-mapp-regs) + +mhard-quad-float +UrlSuffix(gcc/SPARC-Options.html#index-mhard-quad-float) + +msoft-quad-float +UrlSuffix(gcc/SPARC-Options.html#index-msoft-quad-float) + +mlra +UrlSuffix(gcc/SPARC-Options.html#index-mlra-3) + +mv8plus +UrlSuffix(gcc/SPARC-Options.html#index-mv8plus) + +mvis +UrlSuffix(gcc/SPARC-Options.html#index-mvis) + +mvis2 +UrlSuffix(gcc/SPARC-Options.html#index-mvis2) + +mvis3 +UrlSuffix(gcc/SPARC-Options.html#index-mvis3) + +mvis4 +UrlSuffix(gcc/SPARC-Options.html#index-mvis4) + +mvis4b +UrlSuffix(gcc/SPARC-Options.html#index-mvis4b) + +mcbcond +UrlSuffix(gcc/SPARC-Options.html#index-mcbcond) + +mfmaf +UrlSuffix(gcc/SPARC-Options.html#index-mfmaf) + +mfsmuld +UrlSuffix(gcc/SPARC-Options.html#index-mfsmuld) + +mpopc +UrlSuffix(gcc/SPARC-Options.html#index-mpopc) + +msubxc +UrlSuffix(gcc/SPARC-Options.html#index-msubxc) + +m64 +UrlSuffix(gcc/SPARC-Options.html#index-m64-3) + +m32 +UrlSuffix(gcc/SPARC-Options.html#index-m32-1) + +mstack-bias +UrlSuffix(gcc/SPARC-Options.html#index-mstack-bias) + +mfaster-structs +UrlSuffix(gcc/SPARC-Options.html#index-mfaster-structs) + +; skipping UrlSuffix for 'mrelax' due to finding no URLs + +muser-mode +UrlSuffix(gcc/SPARC-Options.html#index-muser-mode) + +mcpu= +UrlSuffix(gcc/SPARC-Options.html#index-mcpu-12) + +mtune= +UrlSuffix(gcc/SPARC-Options.html#index-mtune-15) + +mcmodel= +UrlSuffix(gcc/SPARC-Options.html#index-mcmodel-1) + +; skipping UrlSuffix for 'mdebug=' due to finding no URLs + +mstd-struct-return +UrlSuffix(gcc/SPARC-Options.html#index-mstd-struct-return) + +mfix-at697f +UrlSuffix(gcc/SPARC-Options.html#index-mfix-at697f) + +mfix-ut699 +UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut699) + +mfix-ut700 +UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut700) + +mfix-gr712rc +UrlSuffix(gcc/SPARC-Options.html#index-mfix-gr712rc) + +mmemory-model= +UrlSuffix(gcc/SPARC-Options.html#index-mmemory-model) + diff --git a/gcc/config/stormy16/stormy16.opt.urls b/gcc/config/stormy16/stormy16.opt.urls new file mode 100644 index 0000000..6f47d4c --- /dev/null +++ b/gcc/config/stormy16/stormy16.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/stormy16/stormy16.opt and generated HTML + +msim +UrlSuffix(gcc/Xstormy16-Options.html#index-msim-10) + diff --git a/gcc/config/v850/v850.opt.urls b/gcc/config/v850/v850.opt.urls new file mode 100644 index 0000000..dc5a831 --- /dev/null +++ b/gcc/config/v850/v850.opt.urls @@ -0,0 +1,60 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/v850/v850.opt and generated HTML + +; skipping UrlSuffix for 'mapp-regs' due to finding no URLs + +; skipping UrlSuffix for 'mbig-switch' due to finding no URLs + +; skipping UrlSuffix for 'mdebug' due to finding no URLs + +; skipping UrlSuffix for 'mdisable-callt' due to finding no URLs + +; skipping UrlSuffix for 'mep' due to finding no URLs + +; skipping UrlSuffix for 'mghs' due to finding no URLs + +; skipping UrlSuffix for 'mlong-calls' due to finding no URLs + +; skipping UrlSuffix for 'mprolog-function' due to finding no URLs + +; skipping UrlSuffix for 'msda=' due to finding no URLs + +; skipping UrlSuffix for 'mspace' due to finding no URLs + +; skipping UrlSuffix for 'mtda=' due to finding no URLs + +; skipping UrlSuffix for 'mno-strict-align' due to finding no URLs + +; skipping UrlSuffix for 'mv850' due to finding no URLs + +; skipping UrlSuffix for 'mv850e' due to finding no URLs + +; skipping UrlSuffix for 'mv850e1' due to finding no URLs + +; skipping UrlSuffix for 'mv850es' due to finding no URLs + +; skipping UrlSuffix for 'mv850e2' due to finding no URLs + +; skipping UrlSuffix for 'mv850e2v3' due to finding no URLs + +; skipping UrlSuffix for 'mv850e3v5' due to finding no URLs + +; skipping UrlSuffix for 'mv850e2v4' due to finding no URLs + +; skipping UrlSuffix for 'mloop' due to finding no URLs + +; skipping UrlSuffix for 'mzda=' due to finding no URLs + +; skipping UrlSuffix for 'mrelax' due to finding no URLs + +; skipping UrlSuffix for 'mlong-jumps' due to finding no URLs + +; skipping UrlSuffix for 'msoft-float' due to finding no URLs + +; skipping UrlSuffix for 'mhard-float' due to finding no URLs + +; skipping UrlSuffix for 'mrh850-abi' due to finding no URLs + +; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs + +; skipping UrlSuffix for 'm8byte-align' due to finding no URLs + diff --git a/gcc/config/vax/elf.opt.urls b/gcc/config/vax/elf.opt.urls new file mode 100644 index 0000000..0903513 --- /dev/null +++ b/gcc/config/vax/elf.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/elf.opt and generated HTML + diff --git a/gcc/config/vax/vax.opt.urls b/gcc/config/vax/vax.opt.urls new file mode 100644 index 0000000..c6b1c41 --- /dev/null +++ b/gcc/config/vax/vax.opt.urls @@ -0,0 +1,10 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/vax.opt and generated HTML + +; skipping UrlSuffix for 'mg' due to finding no URLs + +; skipping UrlSuffix for 'mgnu' due to finding no URLs + +; skipping UrlSuffix for 'munix' due to finding no URLs + +; skipping UrlSuffix for 'mlra' due to finding no URLs + diff --git a/gcc/config/visium/visium.opt.urls b/gcc/config/visium/visium.opt.urls new file mode 100644 index 0000000..38ba88d --- /dev/null +++ b/gcc/config/visium/visium.opt.urls @@ -0,0 +1,29 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/visium/visium.opt and generated HTML + +mdebug +UrlSuffix(gcc/Visium-Options.html#index-mdebug-2) + +msim +UrlSuffix(gcc/Visium-Options.html#index-msim-9) + +mfpu +UrlSuffix(gcc/Visium-Options.html#index-mfpu-5) + +mhard-float +UrlSuffix(gcc/Visium-Options.html#index-mhard-float-10) + +msoft-float +UrlSuffix(gcc/Visium-Options.html#index-msoft-float-15) + +mcpu= +UrlSuffix(gcc/Visium-Options.html#index-mcpu-13) + +mtune= +UrlSuffix(gcc/Visium-Options.html#index-mtune-16) + +msv-mode +UrlSuffix(gcc/Visium-Options.html#index-msv-mode) + +muser-mode +UrlSuffix(gcc/Visium-Options.html#index-muser-mode-1) + diff --git a/gcc/config/vms/vms.opt.urls b/gcc/config/vms/vms.opt.urls new file mode 100644 index 0000000..177b281 --- /dev/null +++ b/gcc/config/vms/vms.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/vms/vms.opt and generated HTML + +mmalloc64 +UrlSuffix(gcc/VMS-Options.html#index-mmalloc64) + +mvms-return-codes +UrlSuffix(gcc/VMS-Options.html#index-mvms-return-codes) + diff --git a/gcc/config/vxworks-smp.opt.urls b/gcc/config/vxworks-smp.opt.urls new file mode 100644 index 0000000..0a91011 --- /dev/null +++ b/gcc/config/vxworks-smp.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks-smp.opt and generated HTML + +msmp +UrlSuffix(gcc/VxWorks-Options.html#index-msmp) + diff --git a/gcc/config/vxworks.opt.urls b/gcc/config/vxworks.opt.urls new file mode 100644 index 0000000..52888d0 --- /dev/null +++ b/gcc/config/vxworks.opt.urls @@ -0,0 +1,20 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks.opt and generated HTML + +Bdynamic +UrlSuffix(gcc/VxWorks-Options.html#index-Bdynamic) + +Bstatic +UrlSuffix(gcc/VxWorks-Options.html#index-Bstatic) + +Xbind-lazy +UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-lazy) + +Xbind-now +UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-now) + +mrtp +UrlSuffix(gcc/VxWorks-Options.html#index-mrtp) + +non-static +UrlSuffix(gcc/VxWorks-Options.html#index-non-static) + diff --git a/gcc/config/xtensa/elf.opt.urls b/gcc/config/xtensa/elf.opt.urls new file mode 100644 index 0000000..6774ada --- /dev/null +++ b/gcc/config/xtensa/elf.opt.urls @@ -0,0 +1,5 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/elf.opt and generated HTML + +rdynamic +UrlSuffix(gcc/Link-Options.html#index-rdynamic) + diff --git a/gcc/config/xtensa/uclinux.opt.urls b/gcc/config/xtensa/uclinux.opt.urls new file mode 100644 index 0000000..bd69ce5 --- /dev/null +++ b/gcc/config/xtensa/uclinux.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/uclinux.opt and generated HTML + diff --git a/gcc/config/xtensa/xtensa.opt.urls b/gcc/config/xtensa/xtensa.opt.urls new file mode 100644 index 0000000..146db23 --- /dev/null +++ b/gcc/config/xtensa/xtensa.opt.urls @@ -0,0 +1,37 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/xtensa.opt and generated HTML + +mconst16 +UrlSuffix(gcc/Xtensa-Options.html#index-mconst16) + +mforce-no-pic +UrlSuffix(gcc/Xtensa-Options.html#index-mforce-no-pic) + +mlongcalls +UrlSuffix(gcc/Xtensa-Options.html#index-mlongcalls) + +mextra-l32r-costs= +UrlSuffix(gcc/Xtensa-Options.html#index-mextra-l32r-costs) + +; skipping UrlSuffix for 'mlra' due to finding no URLs + +mtarget-align +UrlSuffix(gcc/Xtensa-Options.html#index-mtarget-align) + +mtext-section-literals +UrlSuffix(gcc/Xtensa-Options.html#index-mtext-section-literals) + +mauto-litpools +UrlSuffix(gcc/Xtensa-Options.html#index-mauto-litpools) + +mserialize-volatile +UrlSuffix(gcc/Xtensa-Options.html#index-mserialize-volatile) + +mabi=call0 +UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dcall0) + +mabi=windowed +UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dwindowed) + +mstrict-align +UrlSuffix(gcc/Xtensa-Options.html#index-mstrict-align-5) + diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index dc0c0df..8bc7b09 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2024-01-03 Patrick Palka <ppalka@redhat.com> + + PR c++/113064 + * call.cc (reference_binding): Still try a conversion via a + temporary if a direct conversion was bad. + +2024-01-03 Kwok Cheung Yeung <kcy@codesourcery.com> + + * parser.cc (cp_parser_omp_clause_name): Move handling of indirect + clause to correspond to alphabetical order. + Copyright (C) 2024 Free Software Foundation, Inc. diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc index d9ddd36..1c67572 100644 --- a/gcc/cp/call.cc +++ b/gcc/cp/call.cc @@ -1739,6 +1739,7 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, tsubst_flags_t complain) { conversion *conv = NULL; + conversion *bad_direct_conv = nullptr; tree to = TREE_TYPE (rto); tree from = rfrom; tree tfrom; @@ -1925,13 +1926,23 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, z_candidate *cand = build_user_type_conversion_1 (rto, expr, flags, complain); if (cand) - return cand->second_conv; + { + if (!cand->second_conv->bad_p) + return cand->second_conv; + + /* Direct reference binding wasn't successful and yielded a bad + conversion. Proceed with trying to go through a temporary + instead, and if that also fails then we'll return this bad + conversion rather than no conversion for sake of better + diagnostics. */ + bad_direct_conv = cand->second_conv; + } } /* From this point on, we conceptually need temporaries, even if we elide them. Only the cases above are "direct bindings". */ if (flags & LOOKUP_NO_TEMP_BIND) - return NULL; + return bad_direct_conv ? bad_direct_conv : nullptr; /* [over.ics.rank] @@ -1972,6 +1983,9 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, there's no strictly viable candidate. */ if (!maybe_valid_p && (flags & LOOKUP_SHORTCUT_BAD_CONVS)) { + if (bad_direct_conv) + return bad_direct_conv; + conv = alloc_conversion (ck_deferred_bad); conv->bad_p = true; return conv; @@ -1995,7 +2009,7 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, conv = implicit_conversion (to, from, expr, c_cast_p, flags, complain); if (!conv) - return NULL; + return bad_direct_conv ? bad_direct_conv : nullptr; if (conv->user_conv_p) { @@ -2018,7 +2032,7 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, = reference_binding (rto, ftype, NULL_TREE, c_cast_p, sflags, complain); if (!new_second) - return NULL; + return bad_direct_conv ? bad_direct_conv : nullptr; conv = merge_conversion_sequences (t, new_second); gcc_assert (maybe_valid_p || conv->bad_p); return conv; diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 1a6b539..37536fa 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -37645,10 +37645,10 @@ cp_parser_omp_clause_name (cp_parser *parser) result = PRAGMA_OMP_CLAUSE_IN_REDUCTION; else if (!strcmp ("inbranch", p)) result = PRAGMA_OMP_CLAUSE_INBRANCH; - else if (!strcmp ("indirect", p)) - result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("independent", p)) result = PRAGMA_OACC_CLAUSE_INDEPENDENT; + else if (!strcmp ("indirect", p)) + result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("is_device_ptr", p)) result = PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR; break; diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index dc0c0df..20365ea 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,7 @@ +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * gdc.texi: Bump @copyrights-d year. + Copyright (C) 2024 Free Software Foundation, Inc. diff --git a/gcc/d/lang.opt.urls b/gcc/d/lang.opt.urls new file mode 100644 index 0000000..09b2a26 --- /dev/null +++ b/gcc/d/lang.opt.urls @@ -0,0 +1,223 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/d/lang.opt and generated HTML + +H +UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H) + +Hd +LangUrlSuffix_D(gdc/Code-Generation.html#index-Hd) + +Hf +LangUrlSuffix_D(gdc/Code-Generation.html#index-Hf) + +I +UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) + +J +LangUrlSuffix_D(gdc/Directory-Options.html#index-J) + +M +UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M) + +MD +UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD) + +MF +UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF) + +MG +UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG) + +MM +UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM) + +MMD +UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD) + +MP +UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP) + +MT +UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT) + +MQ +UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ) + +Waddress +UrlSuffix(gcc/Warning-Options.html#index-Waddress) + +; skipping UrlSuffix for 'Wall' due to multiple URLs: +; duplicate: 'gcc/Standard-Libraries.html#index-Wall-1' +; duplicate: 'gcc/Warning-Options.html#index-Wall' +Wall +LangUrlSuffix_D(gdc/Warnings.html#index-Wall) + +Walloca +UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca) + +Walloca-larger-than= +UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than) + +Wbuiltin-declaration-mismatch +UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch) + +Wcast-result +LangUrlSuffix_D(gdc/Warnings.html#index-Wcast-result) + +Wdeprecated +UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated) + +Werror +UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror) + +Wextra +UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) + +Wmismatched-special-enum +LangUrlSuffix_D(gdc/Warnings.html#index-Wmismatched-special-enum) + +Wspeculative +LangUrlSuffix_D(gdc/Warnings.html#index-Wno-speculative) + +Wunknown-pragmas +UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas) + +Wvarargs +UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs) + +X +LangUrlSuffix_D(gdc/Code-Generation.html#index-X) + +Xf +LangUrlSuffix_D(gdc/Code-Generation.html#index-Xf) + +debuglib= +LangUrlSuffix_D(gdc/Linking.html#index-debuglib_003d) + +defaultlib= +LangUrlSuffix_D(gdc/Linking.html#index-defaultlib_003d) + +fall-instantiations +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fall-instantiations) + +fassert +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fassert) + +fbounds-check +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check) + +fbounds-check= +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check) + +; skipping UrlSuffix for 'fbuiltin' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin' +; duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3' +; duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1' +; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs: +; duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1' +; duplicate: 'gdc/Runtime-Options.html#index-fbuiltin' + +fcheckaction= +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fcheckaction) + +fdebug +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug) + +fdebug= +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug) + +fdoc +LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc) + +fdoc-dir= +LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-dir) + +fdoc-file= +LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-file) + +fdoc-inc= +LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-inc) + +fdruntime +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdruntime) + +fdump-d-original +LangUrlSuffix_D(gdc/Developer-Options.html#index-fdump-d-original) + +fexceptions +UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions) + +fextern-std= +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fextern-std) + +fignore-unknown-pragmas +LangUrlSuffix_D(gdc/Warnings.html#index-fignore-unknown-pragmas) + +finvariants +LangUrlSuffix_D(gdc/Runtime-Options.html#index-finvariants) + +fmain +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmain) + +fmodule-file= +LangUrlSuffix_D(gdc/Directory-Options.html#index-fmodule-file) + +fmoduleinfo +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmoduleinfo) + +fonly= +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fonly) + +fpostconditions +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-postconditions) + +fpreconditions +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-preconditions) + +frelease +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-release) + +frtti +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti) + +fsave-mixins= +LangUrlSuffix_D(gdc/Code-Generation.html#index-fsave-mixins) + +fswitch-errors +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-switch-errors) + +funittest +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-unittest) + +fversion= +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion) + +fweak-templates +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-weak-templates) + +imultilib +UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib) + +iprefix +UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix) + +isysroot +UrlSuffix(gcc/Directory-Options.html#index-isysroot) + +isystem +UrlSuffix(gcc/Directory-Options.html#index-isystem) + +nophoboslib +LangUrlSuffix_D(gdc/Linking.html#index-nophoboslib) + +nostdinc +UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc) + +static-libphobos +LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos) + +shared-libphobos +LangUrlSuffix_D(gdc/Linking.html#index-shared-libphobos) + +v +UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v) + diff --git a/gcc/diagnostic-format-sarif.cc b/gcc/diagnostic-format-sarif.cc index 161a6b7..307b2f5 100644 --- a/gcc/diagnostic-format-sarif.cc +++ b/gcc/diagnostic-format-sarif.cc @@ -184,8 +184,6 @@ private: void set_any_logical_locs_arr (json::object *location_obj, const logical_location *logical_loc); json::object *make_location_object (const diagnostic_event &event); - json::object * - make_logical_location_object (const logical_location &logical_loc) const; json::object *make_code_flow_object (const diagnostic_path &path); json::object * make_thread_flow_location_object (const diagnostic_event &event, @@ -754,7 +752,7 @@ set_any_logical_locs_arr (json::object *location_obj, { if (!logical_loc) return; - json::object *logical_loc_obj = make_logical_location_object (*logical_loc); + json::object *logical_loc_obj = make_sarif_logical_location_object (*logical_loc); json::array *location_locs_arr = new json::array (); location_locs_arr->append (logical_loc_obj); location_obj->set ("logicalLocations", location_locs_arr); @@ -1092,8 +1090,7 @@ maybe_get_sarif_kind (enum logical_location_kind kind) or return NULL. */ json::object * -sarif_builder:: -make_logical_location_object (const logical_location &logical_loc) const +make_sarif_logical_location_object (const logical_location &logical_loc) { json::object *logical_loc_obj = new json::object (); @@ -1163,7 +1160,11 @@ json::object * sarif_builder::make_thread_flow_location_object (const diagnostic_event &ev, int path_event_idx) { - json::object *thread_flow_loc_obj = new json::object (); + sarif_object *thread_flow_loc_obj = new sarif_object (); + + /* Give diagnostic_event subclasses a chance to add custom properties + via a property bag. */ + ev.maybe_add_sarif_properties (*thread_flow_loc_obj); /* "location" property (SARIF v2.1.0 section 3.38.3). */ json::object *location_obj = make_location_object (ev); diff --git a/gcc/diagnostic-format-sarif.h b/gcc/diagnostic-format-sarif.h index 1ee49d4..fdbbd93 100644 --- a/gcc/diagnostic-format-sarif.h +++ b/gcc/diagnostic-format-sarif.h @@ -23,6 +23,8 @@ along with GCC; see the file COPYING3. If not see #include "json.h" +class logical_location; + /* Concrete subclass of json::object for SARIF property bags (SARIF v2.1.0 section 3.8). */ @@ -42,4 +44,7 @@ public: sarif_property_bag &get_or_create_properties (); }; +extern json::object * +make_sarif_logical_location_object (const logical_location &logical_loc); + #endif /* ! GCC_DIAGNOSTIC_FORMAT_SARIF_H */ diff --git a/gcc/diagnostic-path.h b/gcc/diagnostic-path.h index 7f271ef..fb7abe8 100644 --- a/gcc/diagnostic-path.h +++ b/gcc/diagnostic-path.h @@ -24,6 +24,8 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic.h" /* for ATTRIBUTE_GCC_DIAG. */ #include "diagnostic-event-id.h" +class sarif_object; + /* A diagnostic_path is an optional additional piece of metadata associated with a diagnostic (via its rich_location). @@ -157,6 +159,13 @@ class diagnostic_event virtual meaning get_meaning () const = 0; virtual diagnostic_thread_id_t get_thread_id () const = 0; + + /* Hook for SARIF output to allow for adding diagnostic-specific + properties to the threadFlowLocation object's property bag. */ + virtual void + maybe_add_sarif_properties (sarif_object &/*thread_flow_loc_obj*/) const + { + } }; /* Abstract base class representing a thread of execution within diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h index 566772c..0a7c7e0 100644 --- a/gcc/diagnostic.h +++ b/gcc/diagnostic.h @@ -186,7 +186,8 @@ typedef char *(*diagnostic_make_option_name_cb) (const diagnostic_context *, diagnostic_t, diagnostic_t); typedef char *(*diagnostic_make_option_url_cb) (const diagnostic_context *, - int); + int, + unsigned); class edit_context; namespace json { class value; } @@ -526,7 +527,8 @@ public: { if (!m_option_callbacks.m_make_option_url_cb) return nullptr; - return m_option_callbacks.m_make_option_url_cb (this, option_index); + return m_option_callbacks.m_make_option_url_cb (this, option_index, + get_lang_mask ()); } void diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index ca0e96c..01f3acf 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -597,4 +597,30 @@ This warning option corresponds to @code{cpplib.h} warning reason code @var{CPP_W_Enum}. This should only be used for warning options of the C-family front-ends. +@item UrlSuffix(@var{url_suffix}) +Adjacent to each human-written @code{.opt} file in the source tree is +a corresponding file with a @code{.opt.urls} extension. These files +contain @code{UrlSuffix} directives giving the ending part of the URL +for the documentation of the option, such as: + +@smallexample +Wabi-tag +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag) +@end smallexample + +These URL suffixes are relative to @code{DOCUMENTATION_ROOT_URL}. + +There files are generated from the @code{.opt} files and the generated +HTML documentation by @code{regenerate-opt-urls.py}, and should be +regenerated when adding new options, via manually invoking +@code{make regenerate-opt-urls}. + +@item LangUrlSuffix_@var{lang}(@var{url_suffix}) +In addition to @code{UrlSuffix} directives, @code{regenerate-opt-urls.py} +can generate language-specific URLs, such as: + +@smallexample +LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD) +@end smallexample + @end table diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 152b0397..3a394e7 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -585,6 +585,11 @@ The front end's manuals should be mentioned in and the online manuals should be linked to from @file{onlinedocs/index.html}. @item +If the front end has its own manual with its own index of options, the +generated @file{Option-Index.html} should be added to +@code{PER_LANGUAGE_OPTION_INDEXES} in @file{gcc/regenerate-opt-urls.py} +and to @code{OPT_URLS_HTML_DEPS} in @file{gcc/Makefile.in}. +@item Any old releases or CVS repositories of the front end, before its inclusion in GCC, should be made available on the GCC web site at @uref{https://gcc.gnu.org/pub/gcc/old-releases/}. @@ -813,6 +818,10 @@ options supported by this target (@pxref{Run-time Target, , Run-time Target Specification}). This means both entries in the summary table of options and details of the individual options. @item +An entry in @file{gcc/regenerate-opt-urls.py}'s TARGET_SPECIFIC_PAGES +dictionary mapping from target-specific HTML documentation pages +to the target specific source directory. +@item Documentation in @file{gcc/doc/extend.texi} for any target-specific attributes supported (@pxref{Target Attributes, , Defining target-specific uses of @code{__attribute__}}), including where the diff --git a/gcc/expr.cc b/gcc/expr.cc index 4f42c0f..dc816bc 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -6272,19 +6272,32 @@ expand_assignment (tree to, tree from, bool nontemporal) && known_eq (bitpos, 0) && known_eq (bitsize, GET_MODE_BITSIZE (GET_MODE (to_rtx)))) result = store_expr (from, to_rtx, 0, nontemporal, false); - else + /* Check if the field overlaps the MSB, requiring extension. */ + else if (maybe_eq (bitpos + bitsize, + GET_MODE_BITSIZE (GET_MODE (to_rtx)))) { - rtx to_rtx1 - = lowpart_subreg (subreg_unpromoted_mode (to_rtx), - SUBREG_REG (to_rtx), - subreg_promoted_mode (to_rtx)); + scalar_int_mode imode = subreg_unpromoted_mode (to_rtx); + scalar_int_mode omode = subreg_promoted_mode (to_rtx); + rtx to_rtx1 = lowpart_subreg (imode, SUBREG_REG (to_rtx), + omode); result = store_field (to_rtx1, bitsize, bitpos, bitregion_start, bitregion_end, mode1, from, get_alias_set (to), nontemporal, reversep); + /* If the target usually keeps IMODE appropriately + extended in OMODE it's unsafe to refer to it using + a SUBREG whilst this invariant doesn't hold. */ + if (targetm.mode_rep_extended (imode, omode) != UNKNOWN) + to_rtx1 = simplify_gen_unary (TRUNCATE, imode, + SUBREG_REG (to_rtx), omode); convert_move (SUBREG_REG (to_rtx), to_rtx1, SUBREG_PROMOTED_SIGN (to_rtx)); } + else + result = store_field (to_rtx, bitsize, bitpos, + bitregion_start, bitregion_end, + mode1, from, get_alias_set (to), + nontemporal, reversep); } else result = store_field (to_rtx, bitsize, bitpos, diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index dc0c0df..6c2f890 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,17 @@ +2024-01-03 Harald Anlauf <anlauf@gmx.de> + + * trans-types.cc (gfc_get_nodesc_array_type): Clear used gmp + variables. + +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * gfortranspec.cc (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + Copyright (C) 2024 Free Software Foundation, Inc. diff --git a/gcc/fortran/lang.opt.urls b/gcc/fortran/lang.opt.urls new file mode 100644 index 0000000..e335b42 --- /dev/null +++ b/gcc/fortran/lang.opt.urls @@ -0,0 +1,167 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/fortran/lang.opt and generated HTML + +A +UrlSuffix(gcc/Preprocessor-Options.html#index-A) + +C +UrlSuffix(gcc/Preprocessor-Options.html#index-C) + +CC +UrlSuffix(gcc/Preprocessor-Options.html#index-CC) + +D +UrlSuffix(gcc/Preprocessor-Options.html#index-D-1) + +; skipping UrlSuffix for 'E' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-E-1' +; duplicate: 'gcc/Overall-Options.html#index-E' + +H +UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H) + +I +UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) + +J +LangUrlSuffix_D(gdc/Directory-Options.html#index-J) + +M +UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M) + +MD +UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD) + +MF +UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF) + +MG +UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG) + +MM +UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM) + +MMD +UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD) + +MP +UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP) + +MT +UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT) + +MQ +UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ) + +P +UrlSuffix(gcc/Preprocessor-Options.html#index-P) + +U +UrlSuffix(gcc/Preprocessor-Options.html#index-U) + +; skipping UrlSuffix for 'Wall' due to multiple URLs: +; duplicate: 'gcc/Standard-Libraries.html#index-Wall-1' +; duplicate: 'gcc/Warning-Options.html#index-Wall' +Wall +LangUrlSuffix_D(gdc/Warnings.html#index-Wall) + +Wdate-time +UrlSuffix(gcc/Warning-Options.html#index-Wdate-time) + +Wconversion +UrlSuffix(gcc/Warning-Options.html#index-Wconversion) + +Wextra +UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) + +Wmaybe-uninitialized +UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized) + +Wmissing-include-dirs +UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs) + +Wopenacc-parallelism +UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism) + +Wopenmp +UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp) + +Wopenmp-simd +UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd) + +Wpedantic +UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic) + +Wreturn-type +UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type) + +Wuninitialized +UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized) + +Wunused +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused) + +; skipping UrlSuffix for 'nocpp' due to finding no URLs + +; skipping UrlSuffix for 'd' due to multiple URLs: +; duplicate: 'gcc/Developer-Options.html#index-d-1' +; duplicate: 'gcc/Preprocessor-Options.html#index-d' + +ff2c +LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-ff2c) + +fopenacc +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenacc) + +fopenacc-dim= +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim) + +fopenmp +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp) + +fopenmp-simd +UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-simd) + +fopenmp-allocators +LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-allocators) + +fpreprocessed +UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed) + +; skipping UrlSuffix for 'fshort-enums' due to multiple URLs: +; duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums' +; duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3' +; duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1' + +fworking-directory +UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory) + +idirafter +UrlSuffix(gcc/Directory-Options.html#index-idirafter) + +imultilib +UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib) + +iprefix +UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix) + +iquote +UrlSuffix(gcc/Directory-Options.html#index-iquote) + +isysroot +UrlSuffix(gcc/Directory-Options.html#index-isysroot) + +isystem +UrlSuffix(gcc/Directory-Options.html#index-isystem) + +nostdinc +UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc) + +o +UrlSuffix(gcc/Overall-Options.html#index-o) + +undef +UrlSuffix(gcc/Preprocessor-Options.html#index-undef) + +v +UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v) + diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc index e6db1c9..676014e 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -1795,7 +1795,7 @@ gfc_get_nodesc_array_type (tree etype, gfc_array_spec * as, gfc_packed packed, TYPE_LANG_SPECIFIC (type) = TYPE_LANG_SPECIFIC (TREE_TYPE (type)); } - return type; + goto array_type_done; } if (known_stride) @@ -1814,10 +1814,6 @@ gfc_get_nodesc_array_type (tree etype, gfc_array_spec * as, gfc_packed packed, layout_type (type); - mpz_clear (offset); - mpz_clear (stride); - mpz_clear (delta); - /* Represent packed arrays as multi-dimensional if they have rank > 1 and with proper bounds, instead of flat arrays. This makes for better debug info. */ @@ -1848,6 +1844,12 @@ gfc_get_nodesc_array_type (tree etype, gfc_array_spec * as, gfc_packed packed, GFC_ARRAY_TYPE_P (type) = 1; TYPE_LANG_SPECIFIC (type) = TYPE_LANG_SPECIFIC (TREE_TYPE (type)); } + +array_type_done: + mpz_clear (offset); + mpz_clear (stride); + mpz_clear (delta); + return type; } diff --git a/gcc/gcc-urlifier.cc b/gcc/gcc-urlifier.cc index 877445c..6bd176f 100644 --- a/gcc/gcc-urlifier.cc +++ b/gcc/gcc-urlifier.cc @@ -24,6 +24,8 @@ along with GCC; see the file COPYING3. If not see #include "pretty-print.h" #include "pretty-print-urlifier.h" #include "gcc-urlifier.h" +#include "opts.h" +#include "options.h" #include "selftest.h" namespace { @@ -34,23 +36,34 @@ namespace { class gcc_urlifier : public urlifier { public: + gcc_urlifier (unsigned int lang_mask) + : m_lang_mask (lang_mask) + {} + char *get_url_for_quoted_text (const char *p, size_t sz) const final override; - const char *get_url_suffix_for_quoted_text (const char *p, size_t sz) const; + label_text get_url_suffix_for_quoted_text (const char *p, size_t sz) const; /* We use ATTRIBUTE_UNUSED as this helper is called only from ASSERTs. */ - const char *get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED; + label_text get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED; private: + label_text get_url_suffix_for_option (const char *p, size_t sz) const; + static char * make_doc_url (const char *doc_url_suffix); + + unsigned int m_lang_mask; }; /* class gcc_urlifier : public urlifier. */ +/* Manage a hard-coded mapping from quoted string to URL suffixes + in gcc-urlifier.def */ + #define DOC_URL(QUOTED_TEXT, URL_SUFFIX) \ { (QUOTED_TEXT), (URL_SUFFIX) } -const struct +static const struct { const char *quoted_text; const char *url_suffix; @@ -60,32 +73,53 @@ const struct }; +/* Implementation of urlifier::get_url_for_quoted_text vfunc for GCC + diagnostics. */ + char * gcc_urlifier::get_url_for_quoted_text (const char *p, size_t sz) const { - if (const char *url_suffix = get_url_suffix_for_quoted_text (p, sz)) - return make_doc_url (url_suffix); + label_text url_suffix = get_url_suffix_for_quoted_text (p, sz); + if (url_suffix.get ()) + return make_doc_url (url_suffix.get ()); return nullptr; } -const char * +/* Look for a URL for the quoted string (P, SZ). + Return the url suffix if found, or nullptr otherwise. */ + +label_text gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const { - /* Binary search. This assumes that the quoted_text fields of doc_urls + if (sz == 0) + return label_text (); + + /* If this is an option, look up the option and see if we have + a URL for it. */ + if (p[0] == '-') + { + label_text suffix = get_url_suffix_for_option (p, sz); + if (suffix.get ()) + return suffix; + } + + /* Otherwise, look within the hard-coded data table in gcc-urlifier.def. + + Binary search. This assumes that the quoted_text fields of doc_urls are in sorted order. */ int min = 0; int max = ARRAY_SIZE (doc_urls) - 1; while (true) { if (min > max) - return nullptr; + return label_text (); int midpoint = (min + max) / 2; gcc_assert ((size_t)midpoint < ARRAY_SIZE (doc_urls)); int cmp = strncmp (p, doc_urls[midpoint].quoted_text, sz); if (cmp == 0) { if (doc_urls[midpoint].quoted_text[sz] == '\0') - return doc_urls[midpoint].url_suffix; + return label_text::borrow (doc_urls[midpoint].url_suffix); else max = midpoint - 1; } @@ -94,15 +128,45 @@ gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const else min = midpoint + 1; } - return nullptr; + + /* Not found. */ + return label_text (); } -const char * +/* For use in selftests. */ + +label_text gcc_urlifier::get_url_suffix_for_quoted_text (const char *p) const { return get_url_suffix_for_quoted_text (p, strlen (p)); } +/* Look for a URL for the quoted string (P, SZ) that appears to be + an option. + Return the url suffix if found, or nullptr otherwise. */ + +label_text +gcc_urlifier::get_url_suffix_for_option (const char *p, size_t sz) const +{ + /* Look up this option + + find_opt does a binary search, taking a 0-terminated string, + and skipping the leading '-'. + + We have a (pointer,size) pair that doesn't necessarily have a + terminator, so create a 0-terminated clone of the string. */ + gcc_assert (sz > 0); + char *tmp = xstrndup (p + 1, sz - 1); // skip the leading '-' + size_t opt = find_opt (tmp, m_lang_mask); + free (tmp); + + if (opt >= N_OPTS) + /* Option not recognized. */ + return label_text (); + + return get_option_url_suffix (opt, m_lang_mask); +} + char * gcc_urlifier::make_doc_url (const char *doc_url_suffix) { @@ -115,9 +179,9 @@ gcc_urlifier::make_doc_url (const char *doc_url_suffix) } // anonymous namespace urlifier * -make_gcc_urlifier () +make_gcc_urlifier (unsigned int lang_mask) { - return new gcc_urlifier (); + return new gcc_urlifier (lang_mask); } #if CHECKING_P @@ -137,22 +201,26 @@ gcc_urlifier_cc_tests () doc_urls[idx].quoted_text) < 0); - gcc_urlifier u; + gcc_urlifier u (0); - ASSERT_EQ (u.get_url_suffix_for_quoted_text (""), nullptr); - ASSERT_EQ (u.get_url_suffix_for_quoted_text (")"), nullptr); + ASSERT_EQ (u.get_url_suffix_for_quoted_text ("").get (), nullptr); + ASSERT_EQ (u.get_url_suffix_for_quoted_text (")").get (), nullptr); - ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message"), + ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message").get (), "gcc/Diagnostic-Pragmas.html"); // Incomplete prefix of a quoted_text - ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess"), nullptr); + ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess").get (), nullptr); /* Check that every element is findable. */ for (size_t idx = 0; idx < ARRAY_SIZE (doc_urls); idx++) ASSERT_STREQ - (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text), + (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text).get (), doc_urls[idx].url_suffix); + + /* Check an option. */ + ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("-fpack-struct").get (), + "gcc/Code-Gen-Options.html#index-fpack-struct"); } } // namespace selftest diff --git a/gcc/gcc-urlifier.def b/gcc/gcc-urlifier.def index 360de93..de6d9a3 100644 --- a/gcc/gcc-urlifier.def +++ b/gcc/gcc-urlifier.def @@ -16,5 +16,3 @@ DOC_URL ("#pragma pack", "gcc/Structure-Layout-Pragmas.html"), DOC_URL ("#pragma redefine_extname", "gcc/Symbol-Renaming-Pragmas.html"), DOC_URL ("#pragma scalar_storage_order", "gcc/Structure-Layout-Pragmas.html"), DOC_URL ("#pragma weak", "gcc/Weak-Pragmas.html"), -DOC_URL ("--version", "gcc/Overall-Options.html#index-version"), -DOC_URL ("-fpack-struct", "gcc/Code-Gen-Options.html#index-fpack-struct"), diff --git a/gcc/gcc-urlifier.h b/gcc/gcc-urlifier.h index 601cea5..660d4f8 100644 --- a/gcc/gcc-urlifier.h +++ b/gcc/gcc-urlifier.h @@ -21,6 +21,6 @@ along with GCC; see the file COPYING3. If not see #ifndef GCC_GCC_URLIFIER_H #define GCC_GCC_URLIFIER_H -extern urlifier *make_gcc_urlifier (); +extern urlifier *make_gcc_urlifier (unsigned int lang_mask); #endif /* GCC_GCC_URLIFIER_H */ @@ -8340,7 +8340,7 @@ driver::global_initializations () diagnostic_initialize (global_dc, 0); diagnostic_color_init (global_dc); diagnostic_urls_init (global_dc); - global_dc->set_urlifier (make_gcc_urlifier ()); + global_dc->set_urlifier (make_gcc_urlifier (0)); #ifdef GCC_DRIVER_HOST_INITIALIZATION /* Perform host dependent initialization when needed. */ diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 4696273..9edc3fa 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * gccgo.texi: Bump @copyrights-go year. + 2023-07-05 Robin Dapp <rdapp@ventanamicro.com> Juzhe-Zhong <juzhe.zhong@rivai.ai> diff --git a/gcc/go/lang.opt.urls b/gcc/go/lang.opt.urls new file mode 100644 index 0000000..34d3154 --- /dev/null +++ b/gcc/go/lang.opt.urls @@ -0,0 +1,17 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/go/lang.opt and generated HTML + +I +UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) + +L +UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L) + +; skipping UrlSuffix for 'Wall' due to multiple URLs: +; duplicate: 'gcc/Standard-Libraries.html#index-Wall-1' +; duplicate: 'gcc/Warning-Options.html#index-Wall' +Wall +LangUrlSuffix_D(gdc/Warnings.html#index-Wall) + +o +UrlSuffix(gcc/Overall-Options.html#index-o) + diff --git a/gcc/lto/lang.opt.urls b/gcc/lto/lang.opt.urls new file mode 100644 index 0000000..f7509c8 --- /dev/null +++ b/gcc/lto/lang.opt.urls @@ -0,0 +1,8 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/lto/lang.opt and generated HTML + +flinker-output= +UrlSuffix(gcc/Link-Options.html#index-flinker-output) + +help +UrlSuffix(gcc/Overall-Options.html#index-help) + diff --git a/gcc/m2/lang.opt.urls b/gcc/m2/lang.opt.urls new file mode 100644 index 0000000..e9028f96 --- /dev/null +++ b/gcc/m2/lang.opt.urls @@ -0,0 +1,118 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/m2/lang.opt and generated HTML + +fversion +LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion) + +; skipping UrlSuffix for 'Wall' due to multiple URLs: +; duplicate: 'gcc/Standard-Libraries.html#index-Wall-1' +; duplicate: 'gcc/Warning-Options.html#index-Wall' +Wall +LangUrlSuffix_D(gdc/Warnings.html#index-Wall) + +Wpedantic +UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic) + +Wreturn-type +UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type) + +Wunused-variable +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable) + +Wunused-parameter +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter) + +B +UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B) + +D +UrlSuffix(gcc/Preprocessor-Options.html#index-D-1) + +; skipping UrlSuffix for 'E' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-E-1' +; duplicate: 'gcc/Overall-Options.html#index-E' + +I +UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) + +L +UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L) + +M +UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M) + +MD +UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD) + +MF +UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF) + +MG +UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG) + +MM +UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM) + +MMD +UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD) + +Mno-modules +UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules) + +MP +UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP) + +MQ +UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ) + +MT +UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT) + +P +UrlSuffix(gcc/Preprocessor-Options.html#index-P) + +; skipping UrlSuffix for 'ansi' due to multiple URLs: +; duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1' +; duplicate: 'gcc/Non-bugs.html#index-ansi-3' +; duplicate: 'gcc/Other-Builtins.html#index-ansi-2' +; duplicate: 'gcc/Standards.html#index-ansi' + +; skipping UrlSuffix for 'c' due to multiple URLs: +; duplicate: 'gcc/Link-Options.html#index-c-1' +; duplicate: 'gcc/Overall-Options.html#index-c' + +fexceptions +UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions) + +fpreprocessed +UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed) + +fworking-directory +UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory) + +iprefix +UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix) + +iquote +UrlSuffix(gcc/Directory-Options.html#index-iquote) + +isysroot +UrlSuffix(gcc/Directory-Options.html#index-isysroot) + +isystem +UrlSuffix(gcc/Directory-Options.html#index-isystem) + +idirafter +UrlSuffix(gcc/Directory-Options.html#index-idirafter) + +imultilib +UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib) + +save-temps +UrlSuffix(gcc/Developer-Options.html#index-save-temps) + +save-temps= +UrlSuffix(gcc/Developer-Options.html#index-save-temps) + +traditional-cpp +UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp) + diff --git a/gcc/omp-general.cc b/gcc/omp-general.cc index 264fbc0..bd4648f 100644 --- a/gcc/omp-general.cc +++ b/gcc/omp-general.cc @@ -1,5 +1,5 @@ -/* General types and functions that are uselful for processing of OpenMP, - OpenACC and similar directivers at various stages of compilation. +/* General types and functions that are useful for processing of OpenMP, + OpenACC and similar directives at various stages of compilation. Copyright (C) 2005-2024 Free Software Foundation, Inc. @@ -19,8 +19,6 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -/* Find an OMP clause of type KIND within CLAUSES. */ - #include "config.h" #include "system.h" #include "coretypes.h" @@ -45,11 +43,11 @@ along with GCC; see the file COPYING3. If not see #include "data-streamer.h" #include "streamer-hooks.h" #include "opts.h" -#include "omp-general.h" #include "tree-pretty-print.h" enum omp_requires omp_requires_mask; +/* Find an OMP clause of type KIND within CLAUSES. */ tree omp_find_clause (tree clauses, enum omp_clause_code kind) { @@ -2874,9 +2872,8 @@ oacc_launch_pack (unsigned code, tree device, unsigned op) return res; } -/* FIXME: What is the following comment for? */ -/* Look for compute grid dimension clauses and convert to an attribute - attached to FN. This permits the target-side code to (a) massage +/* Openacc compute grid dimension clauses are converted to an attribute + attached to the function. This permits the target-side code to (a) massage the dimensions, (b) emit that data and (c) optimize. Non-constant dimensions are pushed onto ARGS. @@ -2890,9 +2887,8 @@ oacc_launch_pack (unsigned code, tree device, unsigned op) dimensions, keyed by the device type. The first entry will be the default. Well, that's the plan. */ -/* Replace any existing oacc fn attribute with updated dimensions. */ - -/* Variant working on a list of attributes. */ +/* Replace any existing oacc fn attribute in ATTRIBS with updated + dimensions. */ tree oacc_replace_fn_attrib_attr (tree attribs, tree dims) @@ -2905,7 +2901,8 @@ oacc_replace_fn_attrib_attr (tree attribs, tree dims) return tree_cons (ident, dims, attribs); } -/* Variant working on a function decl. */ +/* Replace any existing oacc fn attribute on FN with updated + dimensions. */ void oacc_replace_fn_attrib (tree fn, tree dims) diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk index 8f6578b..2f5616a 100644 --- a/gcc/opt-functions.awk +++ b/gcc/opt-functions.awk @@ -193,6 +193,21 @@ function var_name(flags) return nth_arg(0, opt_args("Var", flags)) } +# If FLAGS includes a UrlSuffix flag, return the value it specifies. +# Return the empty string otherwise. +function url_suffix(flags) +{ + return nth_arg(0, opt_args("UrlSuffix", flags)) +} + +# If FLAGS includes a LangUrlSuffix_LANG flag, return the +# value it specifies. +# Return the empty string otherwise. +function lang_url_suffix(flags, lang) +{ + return nth_arg(0, opt_args("LangUrlSuffix_" lang, flags)) +} + # Return the name of the variable if FLAGS has a HOST_WIDE_INT variable. # Return the empty string otherwise. function host_wide_int_var_name(flags) diff --git a/gcc/options-urls-cc-gen.awk b/gcc/options-urls-cc-gen.awk new file mode 100644 index 0000000..e021e7c --- /dev/null +++ b/gcc/options-urls-cc-gen.awk @@ -0,0 +1,105 @@ +# Copyright (C) 2023 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3, or (at your option) any +# later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# This Awk script reads in the option records generated from +# opt-gather.awk, and generates a C++ file containing an array +# of URL suffixes (possibly NULL), one per option. + +# This program uses functions from opt-functions.awk and code from +# opt-read.awk. +# +# Usage: awk -f opt-functions.awk -f opt-read.awk -f options-urls-cc-gen.awk \ +# [-v header_name=header.h] < inputfile > options-urls.cc + +END { + + +print "/* This file is auto-generated by options-urls-cc-gen.awk. */" +print "" +n_headers = split(header_name, headers, " ") +for (i = 1; i <= n_headers; i++) + print "#include " quote headers[i] quote +print "#include " quote "opts.h" quote +print "#include " quote "intl.h" quote +print "#include " quote "insn-attr-common.h" quote +print "" + +if (n_extra_c_includes > 0) { + for (i = 0; i < n_extra_c_includes; i++) { + print "#include " quote extra_c_includes[i] quote + } + print "" +} + +print "const char *" +print "get_opt_url_suffix (int option_index, unsigned lang_mask)" +print "{" +print " switch (option_index)" +print " {" + + +optindex = 0 +for (i = 0; i < n_opts; i++) { + # Combine the flags of identical switches. Switches + # appear many times if they are handled by many front + # ends, for example. + while( i + 1 != n_opts && opts[i] == opts[i + 1] ) { + flags[i + 1] = flags[i] " " flags[i + 1]; + i++; + } + + len = length (opts[i]); + enum = opt_enum(opts[i]) + + # Aliases do not get enumeration names. + if ((flag_set_p("Alias.*", flags[i]) \ + && !flag_set_p("SeparateAlias", flags[i])) \ + || flag_set_p("Ignore", flags[i])) { + show_case = 0; + } else { + show_case = 1; + } + + if (show_case) { + printf(" case %s:\n", opt_enum(opts[i])) + + # Handle any lang-specific LangUrlSuffix directives: + for (lang_idx = 0; lang_idx < n_langs; lang_idx++) { + lang_name = lang_sanitized_name(langs[lang_idx]) + u = lang_url_suffix(flags[i], lang_name) + if (u != "") { + printf(" if (lang_mask & CL_%s)\n", lang_name) + printf(" return \"%s\";\n", u) + } + } + + # Use any language-independent UrlSuffix directive: + u = url_suffix(flags[i]) + if (u != "") { + printf(" return \"%s\";\n", u) + } else { + printf(" break;\n") + } + } + + # Bump up the informational option index. + ++optindex + } + +print " }" +print " return nullptr;" +print "}" +} diff --git a/gcc/opts-diagnostic.h b/gcc/opts-diagnostic.h index e8bb77e..a18c4c1 100644 --- a/gcc/opts-diagnostic.h +++ b/gcc/opts-diagnostic.h @@ -24,6 +24,7 @@ extern char *option_name (const diagnostic_context *context, int option_index, diagnostic_t orig_diag_kind, diagnostic_t diag_kind); extern char *get_option_url (const diagnostic_context *context, - int option_index); + int option_index, + unsigned lang_mask); #endif diff --git a/gcc/opts.cc b/gcc/opts.cc index da6d634..3333600 100644 --- a/gcc/opts.cc +++ b/gcc/opts.cc @@ -3710,14 +3710,6 @@ get_option_html_page (int option_index) { const cl_option *cl_opt = &cl_options[option_index]; - /* Analyzer options are on their own page. */ - if (strstr (cl_opt->opt_text, "analyzer-")) - return "gcc/Static-Analyzer-Options.html"; - - /* Handle -flto= option. */ - if (strstr (cl_opt->opt_text, "flto")) - return "gcc/Optimize-Options.html"; - #ifdef CL_Fortran if ((cl_opt->flags & CL_Fortran) != 0 /* If it is option common to both C/C++ and Fortran, it is documented @@ -3730,32 +3722,49 @@ get_option_html_page (int option_index) return "gfortran/Error-and-Warning-Options.html"; #endif - return "gcc/Warning-Options.html"; + return nullptr; +} + +/* Get the url within the documentation for this option, or NULL. */ + +label_text +get_option_url_suffix (int option_index, unsigned lang_mask) +{ + if (const char *url = get_opt_url_suffix (option_index, lang_mask)) + + return label_text::borrow (url); + + /* Fallback code for some options that aren't handled byt opt_url_suffixes + e.g. links below "gfortran/". */ + if (const char *html_page = get_option_html_page (option_index)) + return label_text::take + (concat (html_page, + /* Expect an anchor of the form "index-Wfoo" e.g. + <a name="index-Wformat"></a>, and thus an id within + the page of "#index-Wformat". */ + "#index", + cl_options[option_index].opt_text, + NULL)); + + return label_text (); } /* Return malloced memory for a URL describing the option OPTION_INDEX which enabled a diagnostic (context CONTEXT). */ char * -get_option_url (const diagnostic_context *, int option_index) +get_option_url (const diagnostic_context *, + int option_index, + unsigned lang_mask) { if (option_index) - return concat (/* DOCUMENTATION_ROOT_URL should be supplied via - #include "config.h" (see --with-documentation-root-url), - and should have a trailing slash. */ - DOCUMENTATION_ROOT_URL, - - /* get_option_html_page will return something like - "gcc/Warning-Options.html". */ - get_option_html_page (option_index), - - /* Expect an anchor of the form "index-Wfoo" e.g. - <a name="index-Wformat"></a>, and thus an id within - the URL of "#index-Wformat". */ - "#index", cl_options[option_index].opt_text, - NULL); - else - return NULL; + { + label_text url_suffix = get_option_url_suffix (option_index, lang_mask); + if (url_suffix.get ()) + return concat (DOCUMENTATION_ROOT_URL, url_suffix.get (), nullptr); + } + + return nullptr; } /* Return a heap allocated producer with command line options. */ @@ -3886,17 +3895,35 @@ gen_producer_string (const char *language_string, cl_decoded_option *options, namespace selftest { -/* Verify that get_option_html_page works as expected. */ +/* Verify that get_option_url_suffix works as expected. */ static void -test_get_option_html_page () +test_get_option_url_suffix () { - ASSERT_STREQ (get_option_html_page (OPT_Wcpp), "gcc/Warning-Options.html"); - ASSERT_STREQ (get_option_html_page (OPT_Wanalyzer_double_free), - "gcc/Static-Analyzer-Options.html"); + ASSERT_STREQ (get_option_url_suffix (OPT_Wcpp, 0).get (), + "gcc/Warning-Options.html#index-Wcpp"); + ASSERT_STREQ (get_option_url_suffix (OPT_Wanalyzer_double_free, 0).get (), + "gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free"); + + /* Test of a D-specific option. */ +#ifdef CL_D + ASSERT_EQ (get_option_url_suffix (OPT_fbounds_check_, 0).get (), nullptr); + ASSERT_STREQ (get_option_url_suffix (OPT_fbounds_check_, CL_D).get (), + "gdc/Runtime-Options.html#index-fbounds-check"); + + /* Test of a D-specific override to an option URL. */ + /* Generic URL. */ + ASSERT_STREQ (get_option_url_suffix (OPT_fmax_errors_, 0).get (), + "gcc/Warning-Options.html#index-fmax-errors"); + /* D-specific URL. */ + ASSERT_STREQ (get_option_url_suffix (OPT_fmax_errors_, CL_D).get (), + "gdc/Warnings.html#index-fmax-errors"); +#endif + #ifdef CL_Fortran - ASSERT_STREQ (get_option_html_page (OPT_Wline_truncation), - "gfortran/Error-and-Warning-Options.html"); + ASSERT_STREQ + (get_option_url_suffix (OPT_Wline_truncation, CL_Fortran).get (), + "gfortran/Error-and-Warning-Options.html#index-Wline-truncation"); #endif } @@ -3959,7 +3986,7 @@ test_enum_sets () void opts_cc_tests () { - test_get_option_html_page (); + test_get_option_url_suffix (); test_enum_sets (); } @@ -20,6 +20,7 @@ along with GCC; see the file COPYING3. If not see #ifndef GCC_OPTS_H #define GCC_OPTS_H +#include "rich-location.h" #include "obstack.h" /* Specifies how a switch's VAR_VALUE relates to its FLAG_VAR. */ @@ -152,6 +153,10 @@ struct cl_option_state { extern const struct cl_option cl_options[]; extern const unsigned int cl_options_count; + +extern const char * +get_opt_url_suffix (int option_index, unsigned lang_mask); + #ifdef ENABLE_PLUGIN extern const struct cl_var cl_vars[]; #endif @@ -565,4 +570,7 @@ struct switchstr bool ordering; }; +extern label_text +get_option_url_suffix (int option_index, unsigned lang_mask); + #endif diff --git a/gcc/params.opt.urls b/gcc/params.opt.urls new file mode 100644 index 0000000..e76310c --- /dev/null +++ b/gcc/params.opt.urls @@ -0,0 +1,2 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/params.opt and generated HTML + diff --git a/gcc/regenerate-opt-urls.py b/gcc/regenerate-opt-urls.py new file mode 100755 index 0000000..edce265 --- /dev/null +++ b/gcc/regenerate-opt-urls.py @@ -0,0 +1,397 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2023 Free Software Foundation, Inc. +# +# Script to regenerate FOO.opt.urls files for each FOO.opt in the +# source tree. +# +# 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 +# <http://www.gnu.org/licenses/>. */ + +DESCRIPTION = """ +Parses the generated HTML (from "make html") to locate anchors +for options, then parses the .opt files within the source tree, +and generates a .opt.urls in the source tree for each .opt file, +giving URLs for each option, where it can. + +Usage (from build/gcc subdirectory): + ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src + +To run unit tests: + ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src --unit-test +""" + +import argparse +import json +import os +from pathlib import Path +from pprint import pprint +import sys +import re +import unittest + +def canonicalize_option_name(option_name): + if option_name.endswith('='): + option_name = option_name[0:-1] + return option_name + + +def canonicalize_url_suffix(url_suffix): + """ + Various options have anchors for both the positive and + negative form. For example -Wcpp has both: + 'gcc/Warning-Options.html#index-Wno-cpp' + 'gcc/Warning-Options.html#index-Wcpp' + + Return a canonicalized version of the url_suffix that + strips out any "no-" prefixes, for use in deduplication. + Note that the resulting url suffix might not correspond to + an actual anchor in the HTML. + """ + url_suffix = re.sub('index-Wno-', 'index-W', url_suffix) + url_suffix = re.sub('index-fno-', 'index-f', url_suffix) + url_suffix = re.sub('_003d$', '', url_suffix) + url_suffix = re.sub('-([0-9]+)$', '', url_suffix) + return url_suffix + + +class Index: + def __init__(self): + # Map from language (or None) to map from option name to set of URL suffixes + self.entries = {} + + def add_entry(self, matched_text, url_suffix, language, verbose=False): + if 'Attributes.html' in url_suffix: + return + matched_text = canonicalize_option_name(matched_text) + if language not in self.entries: + self.entries[language] = {} + per_lang_entries = self.entries[language] + if matched_text in per_lang_entries: + # Partition by canonicalized url_suffixes; add the + # first url_suffix in each such partition. + c_new = canonicalize_url_suffix(url_suffix) + for entry in per_lang_entries[matched_text]: + c_entry = canonicalize_url_suffix(entry) + if c_new == c_entry: + return + per_lang_entries[matched_text].add(url_suffix) + else: + per_lang_entries[matched_text] = set([url_suffix]) + + def get_languages(self): + return self.entries.keys() + + def get_url_suffixes(self, text, language=None): + text = canonicalize_option_name(text) + per_lang_entries = self.entries.get(language) + if per_lang_entries: + return per_lang_entries.get(text) + + def parse_option_index(self, input_filename, language, verbose=False): + with open(input_filename) as f: + dirname = input_filename.parent.name + for line in f: + self.parse_html_line_option_index(dirname, line, language, verbose) + + def parse_html_line_option_index(self, dirname, line, language, verbose=False): + if verbose: + print(repr(line)) + + # Update for this in the GCC website's bin/preprocess process_html_file: + # | sed -e 's/_002d/-/g' -e 's/_002a/*/g' \ + line = line.replace('_002d', '-') + line = line.replace('_002a', '*') + + # e.g. <a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a> + m = re.search(r'<a href="([\S]+)"><code>([\S]+)</code></a>', line) + if not m: + return + if verbose: + print(m.groups()) + url_suffix, index_text = m.groups() + option = '-' + index_text + + # Strip off "no-" prefixes from options + if option[:5] == '-Wno-': + option = '-W' + option[5:] + if option[:5] == '-fno-': + option = '-f' + option[5:] + + url_suffix = dirname + '/' + url_suffix + self.add_entry(option, url_suffix, language, verbose) + + +class TestParsingIndex(unittest.TestCase): + def test_parse_line(self): + index = Index() + index.parse_html_line_option_index('gcc', + '<a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a>', + None) + self.assertEqual(index.get_url_suffixes('-fmodulo-sched'), + {'gcc/Optimize-Options.html#index-fmodulo-sched'}) + + def test_negated_flag(self): + index = Index() + index.parse_html_line_option_index('gcc', + '<tr><td></td><td valign="top"><a href="Static-Analyzer-Options.html#index-fno_002danalyzer"><code>fno-analyzer</code></a>:</td><td> </td><td valign="top"><a href="Static-Analyzer-Options.html">Static Analyzer Options</a></td></tr>\n', + None) + self.assertEqual(index.get_url_suffixes('-fno-analyzer'), None) + self.assertEqual(index.get_url_suffixes('-fanalyzer'), + {'gcc/Static-Analyzer-Options.html#index-fno-analyzer'}) + + def test_negated_warning(self): + index = Index() + index.parse_html_line_option_index('gcc', + '<tr><td></td><td valign="top"><a href="Warning-Options.html#index-Wno_002dalloca"><code>Wno-alloca</code></a>:</td><td> </td><td valign="top"><a href="Warning-Options.html">Warning Options</a></td></tr>\n', + None) + self.assertEqual(index.get_url_suffixes('-Wno-alloca'), + None) + self.assertEqual(index.get_url_suffixes('-Walloca'), + {'gcc/Warning-Options.html#index-Wno-alloca'}) + + def test_parse_option_index(self): + index = Index() + index.parse_option_index(INPUT_HTML_PATH / 'gcc/Option-Index.html', + language=None) + self.assertEqual(index.get_url_suffixes('-fmodulo-sched'), + {'gcc/Optimize-Options.html#index-fmodulo-sched'}) + self.assertEqual(index.get_url_suffixes('-O'), + {'gcc/Optimize-Options.html#index-O'}) + self.assertEqual(index.get_url_suffixes('-O0'), + {'gcc/Optimize-Options.html#index-O0'}) + self.assertEqual(index.get_url_suffixes('-Wframe-larger-than='), + {'gcc/Warning-Options.html#index-Wframe-larger-than_003d'}) + + # Check an option with duplicates: '-march' + # The url_suffixes will be of the form + # 'gcc/HPPA-Options.html#index-march-5', + # 'gcc/LoongArch-Options.html#index-march-7', + # etc, where the trailing number is, unfortunately, likely to + # change from release to release. + # Replace them with 'NN' for the purpose of this test: + em_arch_url_suffixes = [re.sub('(-[0-9]+)', '-NN', s) + for s in index.get_url_suffixes('-march')] + self.assertIn('gcc/ARM-Options.html#index-march-NN', em_arch_url_suffixes) + self.assertIn('gcc/x86-Options.html#index-march-NN', em_arch_url_suffixes) + + self.assertEqual(index.get_url_suffixes('-Wcpp'), + {'gcc/Warning-Options.html#index-Wcpp'}) + + self.assertNotEqual(index.get_url_suffixes('-march'), None) + self.assertNotEqual(index.get_url_suffixes('-march='), None) + +class OptFile: + def __init__(self, opt_path, rel_path): + """ + Parse a .opt file. Similar to opt-gather.awk. + """ + self.rel_path = rel_path + assert rel_path.startswith('gcc') + self.records = [] + with open(opt_path) as f: + flag = 0 + for line in f: + if re.match(r'[ \t]*(;|$)', line): + flag = 0 + else: + if flag == 0: + self.records.append([line]) + flag = 1 + else: + self.records[-1].append(line) + +# Mapping from target-specific page to subdirectory containing .opt files +# documented on that page. + +TARGET_SPECIFIC_PAGES = { + 'gcc/AArch64-Options.html' : 'gcc/config/aarch64/', + 'gcc/AMD-GCN-Options.html' : 'gcc/config/gcn/', + 'gcc/ARC-Options.html' : 'gcc/config/arc/', + 'gcc/ARC-Options.html' : 'gcc/config/arc/', + 'gcc/ARM-Options.html' : 'gcc/config/arm/', + 'gcc/AVR-Options.html' : 'gcc/config/avr/', + 'gcc/Adapteva-Epiphany-Options.html' : 'gcc/config/epiphany/', + 'gcc/Blackfin-Options.html' : 'gcc/config/bfin/', + 'gcc/C-SKY-Options.html' : 'gcc/config/csky/', + 'gcc/C6X-Options.html' : 'gcc/config/c6x/', + 'gcc/CRIS-Options.html' : 'gcc/config/cris/', + 'gcc/DEC-Alpha-Options.html' : 'gcc/config/alpha/', + 'gcc/FR30-Options.html' : 'gcc/config/fr30/', + 'gcc/FRV-Options.html' : 'gcc/config/frv/', + 'gcc/FT32-Options.html' : 'gcc/config/ft32/', + 'gcc/H8_002f300-Options.html' : 'gcc/config/h8300/', + 'gcc/HPPA-Options.html' : 'gcc/config/pa/', + 'gcc/IA-64-Options.html' : 'gcc/config/ia64/', + 'gcc/LoongArch-Options.html' : 'gcc/config/loongarch/', + 'gcc/M32C-Options.html' : 'gcc/config/m32c/', + 'gcc/M32R_002fD-Options.html' : 'gcc/config/m32r/', + 'gcc/M680x0-Options.html' : 'gcc/config/m68k/', + 'gcc/MCore-Options.html' : 'gcc/config/mcore/', + 'gcc/MIPS-Options.html' : 'gcc/config/mips/', + 'gcc/MMIX-Options.html' : 'gcc/config/mmix/', + 'gcc/MN10300-Options.html' : 'gcc/config/mn10300/', + 'gcc/MSP430-Options.html' : 'gcc/config/msp430/', + 'gcc/MicroBlaze-Options.html' : 'gcc/config/microblaze/', + 'gcc/Moxie-Options.html' : 'gcc/config/moxie/', + 'gcc/NDS32-Options.html' : 'gcc/config/nds32/', + 'gcc/Nios-II-Options.html' : 'gcc/config/nios2/', + 'gcc/Nvidia-PTX-Options.html' : 'gcc/config/nvptx/', + 'gcc/OpenRISC-Options.html' : 'gcc/config/or1k/', + 'gcc/PDP-11-Options.html' : 'gcc/config/pdp11', + 'gcc/PRU-Options.html' : 'gcc/config/pru/', + 'gcc/RISC-V-Options.html' : 'gcc/config/riscv/', + 'gcc/RL78-Options.html' : 'gcc/config/rl78/', + 'gcc/RS_002f6000-and-PowerPC-Options.html' : 'gcc/config/rs6000/', + 'gcc/RX-Options.html' : 'gcc/config/rx/', + 'gcc/SH-Options.html' : 'gcc/config/sh/', + 'gcc/SPARC-Options.html' : 'gcc/config/sparc/', + 'gcc/S_002f390-and-zSeries-Options.html' : 'gcc/config/s390', + 'gcc/V850-Options.html' : 'gcc/config/vax/', + 'gcc/VAX-Options.html' : 'gcc/config/v850/', + 'gcc/Visium-Options.html' : 'gcc/config/visium/', + 'gcc/Xstormy16-Options.html' : 'gcc/config/stormy16/', + 'gcc/Xtensa-Options.html' : 'gcc/config/xtensa/', + 'gcc/eBPF-Options.html' : 'gcc/config/bpf/', + 'gcc/x86-Options.html' : 'gcc/config/i386/', +} + +def target_specific(url_suffix): + for page_prefix, subdir in TARGET_SPECIFIC_PAGES.items(): + if url_suffix.startswith(page_prefix): + return subdir + +def filter_urlsuffixes_for_optfile(optfile, url_suffixes): + """ + Filter out target-specific options for the wrong target. + """ + result = set() + for url_suffix in url_suffixes: + subdir = target_specific(url_suffix) + if subdir: + if not optfile.rel_path.startswith(subdir): + # Skip this + continue + result.add(url_suffix) + return result + + +class TestFiltering(unittest.TestCase): + def test_target_specific(self): + self.assertEqual(target_specific('gcc/Preprocessor-Options.html#index-A'), + None) + self.assertEqual(target_specific('gcc/MMIX-Options.html#index-mknuthdiv'), + 'gcc/config/mmix/') + + def test_filter(self): + s = {'gcc/MIPS-Options.html#index-munaligned-access-1', + 'gcc/ARM-Options.html#index-munaligned-access'} + arm_optfile = OptFile('/dev/null', 'gcc/config/arm/arm.opt') + mips_optfile = OptFile('/dev/null', 'gcc/config/mips/mips.opt') + self.assertEqual( + filter_urlsuffixes_for_optfile(arm_optfile, s), + {'gcc/ARM-Options.html#index-munaligned-access'}) + self.assertEqual( + filter_urlsuffixes_for_optfile(mips_optfile, s), + {'gcc/MIPS-Options.html#index-munaligned-access-1'}) + + +def write_url_file(index, optfile, dstfile): + dstfile.write('; Autogenerated by regenerate-opt-urls.py from %s' + ' and generated HTML\n\n' + % optfile.rel_path) + for record in optfile.records: + opt = '-' + record[0].strip() + url_suffixes_per_lang = {} + count = 0 + for lang in index.get_languages(): + this_lang_suffixes = index.get_url_suffixes(opt, language=lang) + url_suffixes_per_lang[lang] = this_lang_suffixes + if this_lang_suffixes: + count += len(this_lang_suffixes) + if not count: + continue + directives = [] + for lang in index.get_languages(): + if lang: + directive = 'LangUrlSuffix_%s for %r' % (lang, opt[1:]) + else: + directive = 'UrlSuffix for %r' % opt[1:] + url_suffixes = url_suffixes_per_lang[lang] + if url_suffixes: + url_suffixes = filter_urlsuffixes_for_optfile(optfile, url_suffixes) + if url_suffixes: + if len(url_suffixes) == 1: + if lang: + directives.append('LangUrlSuffix_%s(%s)' % (lang, list(url_suffixes)[0])) + else: + directives.append('UrlSuffix(%s)' % list(url_suffixes)[0]) + else: + dstfile.write('; skipping %s due to multiple URLs:\n' + % directive) + for u in sorted(url_suffixes): + dstfile.write('; duplicate: %r\n' % u) + else: + dstfile.write('; skipping %s due to finding no URLs\n' + % directive) + if directives: + dstfile.write('%s\n' % opt[1:]) + dstfile.write(' '.join(directives) + '\n') + dstfile.write('\n') + +# A list of (REL_PATH, LANG) pairs, where +# - REL_PATH is the relative path to a generated Option-Index.html file +# for a specific frontend, and +# - LANG is the name of the language (as specified in the "Language" record +# within the lang.opt file), or None for the language-independent +# documentation. + +PER_LANGUAGE_OPTION_INDEXES = [ + ('gcc/Option-Index.html', None), + ('gdc/Option-Index.html', 'D'), + ('gfortran/Option-Index.html', 'Fortran') +] + +def main(args): + index = Index() + for option_index_rel_path, lang in PER_LANGUAGE_OPTION_INDEXES: + index.parse_option_index(args.base_html_dir / option_index_rel_path, + language=lang) + for root, dirs, files in os.walk(args.src_gcc_dir): + for f in files: + if f.endswith('.opt'): + opt_path = os.path.join(root, f) + rel_path = os.path.relpath(opt_path, args.src_gcc_dir) + optfile = OptFile(opt_path, rel_path) + dstname = f + '.urls' + urlfile = os.path.join(root, dstname) + with open(urlfile, 'w') as dstfile: + write_url_file(index, optfile, dstfile) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=DESCRIPTION, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('base_html_dir', type=Path) + parser.add_argument('src_gcc_dir', type=Path) + parser.add_argument('--unit-test', action='store_true') + args = parser.parse_args() + + if args.unit_test: + INPUT_HTML_PATH = args.base_html_dir + unittest.main(argv=[sys.argv[0], '-v']) + else: + main(args) diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls new file mode 100644 index 0000000..9cf8987 --- /dev/null +++ b/gcc/rust/lang.opt.urls @@ -0,0 +1,29 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/rust/lang.opt and generated HTML + +I +UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) + +L +UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L) + +; skipping UrlSuffix for 'Wall' due to multiple URLs: +; duplicate: 'gcc/Standard-Libraries.html#index-Wall-1' +; duplicate: 'gcc/Warning-Options.html#index-Wall' +Wall +LangUrlSuffix_D(gdc/Warnings.html#index-Wall) + +Wunused-variable +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable) + +Wunused-const-variable +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable) + +Wunused-const-variable= +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable) + +Wunused-result +UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result) + +o +UrlSuffix(gcc/Overall-Options.html#index-o) + diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 47b1e67..da5593a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,18 @@ +2024-01-03 Patrick Palka <ppalka@redhat.com> + + PR c++/113064 + * g++.dg/cpp0x/rv-conv4.C: New test. + * g++.dg/cpp0x/rv-conv5.C: New test. + +2024-01-03 Xi Ruoyao <xry111@xry111.site> + + * gcc.target/loongarch/vfmax-vfmin.c: New test. + +2024-01-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> + + PR target/113112 + * gcc.dg/vect/costmodel/riscv/rvv/pr113112-5.c: New test. + 2024-01-02 Szabolcs Nagy <szabolcs.nagy@arm.com> * gfortran.dg/vect/vect-8.f90: Accept more vectorized loops. diff --git a/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr112790.c b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr112790.c new file mode 100644 index 0000000..8f74468 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/deref-before-check-pr112790.c @@ -0,0 +1,27 @@ +/* Reproducer for false positive from -Wanalyzer-deref-before-check + seen on Linux kernel's block/bdev.c due to -fanalyzer mishandling + inlined functions. */ + +/* { dg-additional-options "-O2 -g -fno-delete-null-pointer-checks" } */ + +typedef unsigned char u8; +struct inode { + void *i_mapping; + u8 i_blkbits; +}; +struct block_device { + struct inode *bd_inode; +}; +int sync_blockdev(struct block_device *bdev); +int set_blocksize(struct block_device *bdev, u8 size) { + if (bdev->bd_inode->i_blkbits != size) { /* { dg-bogus "pointer 'bdev' is dereferenced here" } */ + sync_blockdev(bdev); + } + return 0; +} +extern int filemap_write_and_wait(void *); +int sync_blockdev(struct block_device *bdev) { + if (!bdev) /* { dg-bogus "check of 'bdev' for NULL after already dereferencing it" } */ + return 0; + return filemap_write_and_wait(bdev->bd_inode->i_mapping); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-conv4.C b/gcc/testsuite/g++.dg/cpp0x/rv-conv4.C new file mode 100644 index 0000000..7ecd2dc --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/rv-conv4.C @@ -0,0 +1,16 @@ +// PR c++/113064 +// { dg-do compile { target c++11 } } + +struct B { }; + +struct A { + operator B() &; + operator B&&() &&; +}; + +void f(B&&); + +int main() { + A a; + f(a); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-conv5.C b/gcc/testsuite/g++.dg/cpp0x/rv-conv5.C new file mode 100644 index 0000000..dcb6fc6 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/rv-conv5.C @@ -0,0 +1,23 @@ +// PR c++/113064 +// { dg-do compile { target c++11 } } + +struct no_copy { + no_copy() = default; + + no_copy(const no_copy&) = delete; + no_copy(no_copy&&); + + no_copy& operator=(const no_copy&) = delete; + no_copy& operator=(no_copy&&); +}; + +struct A { + operator no_copy() &; + operator no_copy&&() && = delete; +}; + +int main() { + no_copy nc; + A a; + nc = a; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/mipscop-1.c b/gcc/testsuite/gcc.c-torture/compile/mipscop-1.c index 8a40ba1..2ba0ee7 100644 --- a/gcc/testsuite/gcc.c-torture/compile/mipscop-1.c +++ b/gcc/testsuite/gcc.c-torture/compile/mipscop-1.c @@ -1,5 +1,6 @@ /* { dg-do compile { target mips*-*-* } } */ +#include <stdio.h> register unsigned int cp0count asm ("$c0r1"); int __attribute__ ((nomips16)) diff --git a/gcc/testsuite/gcc.c-torture/compile/mipscop-2.c b/gcc/testsuite/gcc.c-torture/compile/mipscop-2.c index 94df41d..6fffc8e 100644 --- a/gcc/testsuite/gcc.c-torture/compile/mipscop-2.c +++ b/gcc/testsuite/gcc.c-torture/compile/mipscop-2.c @@ -1,5 +1,6 @@ /* { dg-do compile { target mips*-*-* } } */ +#include <stdio.h> register unsigned int c3r1 asm ("$c3r1"); extern unsigned int b, c; diff --git a/gcc/testsuite/gcc.c-torture/compile/mipscop-3.c b/gcc/testsuite/gcc.c-torture/compile/mipscop-3.c index cb4bd4d..03e3011 100644 --- a/gcc/testsuite/gcc.c-torture/compile/mipscop-3.c +++ b/gcc/testsuite/gcc.c-torture/compile/mipscop-3.c @@ -1,5 +1,6 @@ /* { dg-do compile { target mips*-*-* } } */ +#include <stdio.h> register unsigned int c3r1 asm ("$c3r1"), c3r2 asm ("$c3r2"); extern unsigned int b, c; diff --git a/gcc/testsuite/gcc.c-torture/compile/mipscop-4.c b/gcc/testsuite/gcc.c-torture/compile/mipscop-4.c index 263fc5c..7e000c1 100644 --- a/gcc/testsuite/gcc.c-torture/compile/mipscop-4.c +++ b/gcc/testsuite/gcc.c-torture/compile/mipscop-4.c @@ -1,5 +1,6 @@ /* { dg-do compile { target mips*-*-* } } */ +#include <stdio.h> register unsigned long c3r1 asm ("$c3r1"), c3r2 asm ("$c3r2"); extern unsigned long b, c; diff --git a/gcc/testsuite/gcc.dg/analyzer/out-of-bounds-diagram-pr113222.c b/gcc/testsuite/gcc.dg/analyzer/out-of-bounds-diagram-pr113222.c new file mode 100644 index 0000000..4446766 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/out-of-bounds-diagram-pr113222.c @@ -0,0 +1,26 @@ +/* Verify that we don't ICE when generating an out-of-bounds diagram + when the size of an array is unknown. */ + +/* { dg-do compile } */ +/* { dg-additional-options "-fdiagnostics-text-art-charset=unicode" } */ + +#include <stdint.h> + +struct sched_class +{ + int64_t f; +}; +extern struct sched_class __end_sched_classes[]; + +int +test () +{ + const struct sched_class* class = ((__end_sched_classes - 1)); + return class->f; /* { dg-warning "buffer under-read" } */ +} + +/* We don't care about the content of the diagram, just that we don't + ICE creating it. */ + +/* { dg-allow-blank-lines-in-output 1 } */ +/* { dg-prune-output ".*" } */ diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-11.c b/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-11.c new file mode 100644 index 0000000..48b2427 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-11.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize --param riscv-autovec-lmul=dynamic -fdump-tree-vect-details" } */ + +void +foo (int *__restrict a, int *__restrict b, int *__restrict c, int *__restrict d, + int *__restrict e, int *__restrict f, int n) +{ + for (int i = 0; i < n; i++) + a[i] = b[i] != f[i] ? c[i] * d[i] : e[i]; +} + +/* { dg-final { scan-assembler {e32,m4} } } */ +/* { dg-final { scan-assembler-not {jr} } } */ +/* { dg-final { scan-assembler-times {ret} 1 } } */ +/* { dg-final { scan-tree-dump-times "Preferring smaller LMUL loop because it has unexpected spills" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-not "Maximum lmul = 16" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/slp-26.c b/gcc/testsuite/gcc.dg/vect/slp-26.c index c964635..cfb763b 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-26.c +++ b/gcc/testsuite/gcc.dg/vect/slp-26.c @@ -47,7 +47,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { mips_msa || { amdgcn-*-* || riscv_v } } } } } } */ -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { mips_msa || { amdgcn-*-* || riscv_v } } } } } */ -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { mips_msa || { amdgcn-*-* || riscv_v } } } } } } */ -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { mips_msa || { amdgcn-*-* || riscv_v } } } } } */ +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { mips_msa || { amdgcn-*-* || { riscv_v || loongarch_sx } } } } } } } */ +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { mips_msa || { amdgcn-*-* || { riscv_v || loongarch_sx } } } } } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { mips_msa || { amdgcn-*-* || { riscv_v || loongarch_sx } } } } } } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { mips_msa || { amdgcn-*-* || { riscv_v || loongarch_sx } } } } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvstelm.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvstelm.c index 1a7b0e8..4b84620 100644 --- a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvstelm.c +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvstelm.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ +/* { dg-options "-O3 -mlasx -fno-vect-cost-model" } */ /* { dg-final { scan-assembler-times "xvstelm.w" 8} } */ #define LEN 256 diff --git a/gcc/testsuite/gcc.target/mips/data-sym-multi-pool.c b/gcc/testsuite/gcc.target/mips/data-sym-multi-pool.c index 3cf2d4f..8643095 100644 --- a/gcc/testsuite/gcc.target/mips/data-sym-multi-pool.c +++ b/gcc/testsuite/gcc.target/mips/data-sym-multi-pool.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mips16 -mcode-readable=yes -fno-tree-vrp -fno-tree-dominator-opts" } */ -/* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" } { "" } } */ +/* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" "-O0" "-Os" } { "" } } */ /* This testcase generates multiple constant pools within a function body. */ diff --git a/gcc/testsuite/gcc.target/mips/pr104914.c b/gcc/testsuite/gcc.target/mips/pr104914.c new file mode 100644 index 0000000..5dd10e8 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/pr104914.c @@ -0,0 +1,25 @@ +/* { dg-do run } */ +/* { dg-options "-mabi=64" } */ + +extern void abort (void); +extern void exit (int); + +NOMIPS16 int test (const unsigned char *buf) +{ + int val; + ((unsigned char*)&val)[0] = *buf++; + ((unsigned char*)&val)[1] = *buf++; + ((unsigned char*)&val)[2] = *buf++; + ((unsigned char*)&val)[3] = *buf++; + if(val > 0) + return 1; + else + return 0; +} + +int main () +{ + if (test("\xff\xff\xff\xff") != 0) + abort(); + exit(0); +} diff --git a/gcc/testsuite/gcc.target/riscv/_Float16-nanboxing.c b/gcc/testsuite/gcc.target/riscv/_Float16-nanboxing.c new file mode 100644 index 0000000..c99c069 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/_Float16-nanboxing.c @@ -0,0 +1,36 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64ifd -mabi=lp64d -O" } */ + +_Float16 gvar = 9.87654; + +union U { + unsigned short i16; + _Float16 f16; +}; + +_Float16 test1(unsigned short input) +{ + union U tmp; + tmp.i16 = input; + + return tmp.f16; +} + +_Float16 test2() +{ + return 1.234f; +} + +_Float16 test3() +{ + return gvar; +} + +_Float16 test() +{ + return 0.0f; +} + +/* { dg-final { scan-assembler-times "li\[ \t\]" 4 } } */ +/* { dg-final { scan-assembler-times "fmv\.w\.x\[ \t\]" 4 } } */ + diff --git a/gcc/testsuite/gcc.target/riscv/interrupt-misaligned.c b/gcc/testsuite/gcc.target/riscv/interrupt-misaligned.c new file mode 100644 index 0000000..b5f8e6c --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/interrupt-misaligned.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=rv64gc -mabi=lp64d -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-skip-if "" { *-*-* } { "-flto -fno-fat-lto-objects" } } */ + +/* Make sure no stack offset are misaligned. +** interrupt: +** ... +** sd\tt0,40\(sp\) +** frcsr\tt0 +** sw\tt0,32\(sp\) +** sd\tt1,24\(sp\) +** fsd\tft0,8\(sp\) +** ... +** lw\tt0,32\(sp\) +** fscsr\tt0 +** ld\tt0,40\(sp\) +** ld\tt1,24\(sp\) +** fld\tft0,8\(sp\) +** ... +*/ + + +void interrupt(void) __attribute__((interrupt)); +void interrupt(void) +{ + asm volatile ("# clobber!":::"t0", "t1", "ft0"); +} + +/* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113206-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113206-1.c new file mode 100644 index 0000000..ef92c6f --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113206-1.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */ + +signed char e; +short f = 8; +signed d; +int(g)(int o, int r) { return o & (o ^ -1) < 0 ? o : o - r; } +#pragma pack(1) +struct { + short h; + unsigned : 18; + short i; + long j; + int k; + char l; + long m; + int n; +} a, b, s, c, *p = &b, *u = &s, q = {1}; +void t() { + *p = a; + for (; e > -7; e = g(e, 8)) + ; + q = *u = c; + for (; d - 3; d = 3) + ; +} + +/* { dg-final { scan-assembler-times {li\s+[a-x0-9]+,\s*32} 2 } } */ +/* { dg-final { scan-assembler-times {vsetvli} 2 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113206-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113206-2.c new file mode 100644 index 0000000..cfce889 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113206-2.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -frename-registers" } */ + +signed char e; +short f = 8; +signed d; +int(g)(int o, int r) { return o & (o ^ -1) < 0 ? o : o - r; } +#pragma pack(1) +struct { + short h; + unsigned : 18; + short i; + long j; + int k; + char l; + long m; + int n; +} a, b, s, c, *p = &b, *u = &s, q = {1}; +void t() { + *p = a; + for (; e > -7; e = g(e, 8)) + ; + q = *u = c; + for (; d - 3; d = 3) + ; +} + +/* { dg-final { scan-assembler-times {li\s+[a-x0-9]+,\s*32} 1 } } */ +/* { dg-final { scan-assembler-times {vsetvli} 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113209.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113209.c new file mode 100644 index 0000000..081ee36 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113209.c @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -O3" } */ + +int b, c, d, f, i, a; +int e[1] = {0}; +int *g = e; +int *k = e; +int *z; +long h; +int j[5] = {0,0,0,0,0}; +void n() { + if (c) { + int **l = &z; + *l = e; + while (d) + ; + } +} +void o() { + for (; b < 5; b += a) { + n(); + for (h = 0; h < 5; h++) + j[h] = 1; + int m = *e != *g; + a |= i <= m; + f = -12; + for (; f; f++) + if (*k) + break; + } +} + +/* { dg-final { scan-assembler-times {vsetvli} 1 } } */ +/* { dg-final { scan-assembler-times {vsetivli} 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-23.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-23.c index 6f8e714..eacebe3 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-23.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-23.c @@ -29,7 +29,6 @@ void f (int8_t * restrict in, int8_t * restrict out, int n, int m, int cond) /* { dg-final { scan-assembler {vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*mf8,\s*t[au],\s*m[au]} { target { no-opts "-O0" no-opts "-g" no-opts "-funroll-loops" } } } } */ /* { dg-final { scan-assembler {vsetvli\s+zero,\s*[a-x0-9]+,\s*e32,\s*mf2,\s*tu,\s*mu} { target { no-opts "-O0" no-opts "-g" no-opts "-funroll-loops" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli} 4 { target { { any-opts "-O1" } && { no-opts "-g" "-funroll-loops" } } } } } */ /* { dg-final { scan-assembler-times {vsetvli} 3 { target { { any-opts "-Os" "-O2" } && { no-opts "-g" "-funroll-loops" } } } } } */ /* { dg-final { scan-assembler-times {li\s+[a-x0-9]+,101} 1 { target { no-opts "-O0" no-opts "-g" no-opts "-funroll-loops" } } } } */ /* { dg-final { scan-assembler-times {li\s+[a-x0-9]+,102} 1 { target { no-opts "-O0" no-opts "-g" no-opts "-funroll-loops" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-1.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-1.c index 1dae707..25fc05c 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-1.c @@ -223,17 +223,16 @@ int f7 (int8_t * restrict in, int8_t * restrict out, int n) } /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9][0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 4 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-2.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-2.c index 1e72f61..cc4fbba 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-2.c @@ -192,16 +192,16 @@ void f6 (int8_t * restrict in, int8_t * restrict out, int n) } /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle32\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c index 62d087d..ebbaafc 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c @@ -192,16 +192,16 @@ void f6 (int8_t * restrict in, int8_t * restrict out, int n) } /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle32\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c index 5a3e05e..cd94fda 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c @@ -26,7 +26,6 @@ void f (int32_t * restrict in, int32_t * restrict out, size_t n, size_t cond, si /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9]:+} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli} 7 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli} 4 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-1.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-1.c index f6ecebe..adb14e5 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-1.c @@ -69,13 +69,13 @@ void foo7 (void * restrict in, void * restrict out, int n) } } -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-2.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-2.c index 39576c1..d3a060f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-2.c @@ -33,9 +33,9 @@ void foo3 (void * restrict in, void * restrict out, int n) } } -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-3.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-3.c index f5fb770..bd1d9b2 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-3.c @@ -33,6 +33,6 @@ void foo3 (void * restrict in, void * restrict out, int n) } } -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-4.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-4.c index 63282f4..1ef0bf8 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-4.c @@ -24,8 +24,8 @@ void foo3 (void * restrict in, void * restrict out, int n) } } -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-5.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-5.c index d9cdb11..518c747 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-5.c @@ -24,8 +24,8 @@ void foo3 (void * restrict in, void * restrict out, int n) } } -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ -/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 1 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */ diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index d072d66..228c21d 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -46,6 +46,12 @@ if { [ishost "*-*-cygwin*"] } { setenv LANG C.ASCII } +# Set TERM to xterm to ensure that URL escapes are disabled. +# This avoids issues where a diagnostic which could embed a URL +# is emitted before -fdiagnostics-plain-output is handled, where +# otherwise the output could be affected by the environment. +setenv TERM xterm + # Avoid sporadic data-losses with expect match_max -d 10000 diff --git a/gcc/toplev.cc b/gcc/toplev.cc index 8bc1b69..0c2994e 100644 --- a/gcc/toplev.cc +++ b/gcc/toplev.cc @@ -1044,12 +1044,13 @@ general_init (const char *argv0, bool init_signals) global_dc->m_show_column = global_options_init.x_flag_show_column; global_dc->m_internal_error = internal_error_function; + const unsigned lang_mask = lang_hooks.option_lang_mask (); global_dc->set_option_hooks (option_enabled, &global_options, option_name, get_option_url, - lang_hooks.option_lang_mask ()); - global_dc->set_urlifier (make_gcc_urlifier ()); + lang_mask); + global_dc->set_urlifier (make_gcc_urlifier (lang_mask)); if (init_signals) { diff --git a/gcc/tree-core.h b/gcc/tree-core.h index d1c7136..8a89462 100644 --- a/gcc/tree-core.h +++ b/gcc/tree-core.h @@ -350,9 +350,6 @@ enum omp_clause_code { /* OpenMP clause: doacross ({source,sink}:vec). */ OMP_CLAUSE_DOACROSS, - /* OpenMP clause: indirect [(constant-integer-expression)]. */ - OMP_CLAUSE_INDIRECT, - /* Internal structure to hold OpenACC cache directive's variable-list. #pragma acc cache (variable-list). */ OMP_CLAUSE__CACHE_, @@ -497,6 +494,9 @@ enum omp_clause_code { /* OpenMP clause: filter (integer-expression). */ OMP_CLAUSE_FILTER, + /* OpenMP clause: indirect [(constant-integer-expression)]. */ + OMP_CLAUSE_INDIRECT, + /* Internally used only clause, holding SIMD uid. */ OMP_CLAUSE__SIMDUID_, diff --git a/gcc/tree.cc b/gcc/tree.cc index 82eff2b..8aee3ef 100644 --- a/gcc/tree.cc +++ b/gcc/tree.cc @@ -269,7 +269,6 @@ unsigned const char omp_clause_num_ops[] = 2, /* OMP_CLAUSE_MAP */ 1, /* OMP_CLAUSE_HAS_DEVICE_ADDR */ 1, /* OMP_CLAUSE_DOACROSS */ - 1, /* OMP_CLAUSE_INDIRECT */ 2, /* OMP_CLAUSE__CACHE_ */ 2, /* OMP_CLAUSE_GANG */ 1, /* OMP_CLAUSE_ASYNC */ @@ -316,6 +315,7 @@ unsigned const char omp_clause_num_ops[] = 0, /* OMP_CLAUSE_ORDER */ 0, /* OMP_CLAUSE_BIND */ 1, /* OMP_CLAUSE_FILTER */ + 1, /* OMP_CLAUSE_INDIRECT */ 1, /* OMP_CLAUSE__SIMDUID_ */ 0, /* OMP_CLAUSE__SIMT_ */ 0, /* OMP_CLAUSE_INDEPENDENT */ @@ -362,7 +362,6 @@ const char * const omp_clause_code_name[] = "map", "has_device_addr", "doacross", - "indirect", "_cache_", "gang", "async", @@ -409,6 +408,7 @@ const char * const omp_clause_code_name[] = "order", "bind", "filter", + "indirect", "_simduid_", "_simt_", "independent", diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 473299f..d0d9674 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,7 @@ +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * libgomp.texi: Bump @copying's copyright year. + 2023-12-21 Julian Brown <julian@codesourcery.com> * testsuite/libgomp.fortran/target-enter-data-6.f90: Remove XFAIL. diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 1494030..83aadd1 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,7 @@ +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * libitm.texi: Bump @copying's copyright year. + 2023-10-22 Iain Sandoe <iain@sandoe.co.uk> * testsuite/lib/libitm.exp: Likewise. diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog index f34e13c..43ad9df 100644 --- a/libquadmath/ChangeLog +++ b/libquadmath/ChangeLog @@ -1,3 +1,7 @@ +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * libquadmath.texi: Bump @copying's copyright year. + 2023-12-22 Christophe Lyon <christophe.lyon@linaro.org> * Makefile.am: Allow overriding EXEPCT. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index dc0c0df..768b9e7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2024-01-03 Patrick Palka <ppalka@redhat.com> + + PR testsuite/113175 + * testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce + 'limit' to 100 from 1000 and adjust 'log2_limit' accordingly. + (test03): Likewise. + Copyright (C) 2024 Free Software Foundation, Inc. |