Skip to content
Snippets Groups Projects
  1. Nov 06, 2020
    • Richard Sandiford's avatar
      aarch64: Support permutes on unpacked SVE vectors · 6c3ce63b
      Richard Sandiford authored
      This patch adds support for permuting unpacked SVE vectors using:
      
      - DUP
      - EXT
      - REV[BHW]
      - REV
      - TRN[12]
      - UZP[12]
      - ZIP[12]
      
      This involves rewriting the REV[BHW] permute code so that the inputs
      and outputs of the insn pattern have the same mode as the vectors
      being permuted.  This is different from the ACLE form, where the
      reversal happens within individual elements rather than within
      groups of multiple elements.
      
      The patch does not add a conditional version of REV[BHW].  I'll come
      back to that once we have partial-vector comparisons and selects.
      
      The patch is really just enablement, adding an extra tool to the
      toolbox.  It doesn't bring any significant vectorisation opportunities
      on its own.  However, the patch does have one artificial example that
      is now vectorised in a better way than before.
      
      gcc/
      	* config/aarch64/aarch64-modes.def (VNx2BF, VNx4BF): Adjust nunits
      	and alignment based on the current VG.
      	* config/aarch64/iterators.md (SVE_ALL, SVE_24, SVE_2, SVE_4): Add
      	partial SVE BF modes.
      	(UNSPEC_REVBHW): New unspec.
      	(Vetype, Vesize, Vctype, VEL, Vel, vwcore, V_INT_CONTAINER)
      	(v_int_container, VPRED, vpred): Handle partial SVE BF modes.
      	(container_bits, Vcwtype): New mode attributes.
      	* config/aarch64/aarch64-sve.md
      	(@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>): New pattern.
      	(@aarch64_sve_dup_lane<mode>): Extended from SVE_FULL to SVE_ALL.
      	(@aarch64_sve_rev<mode>, @aarch64_sve_<perm_insn><mode>): Likewise.
      	(@aarch64_sve_ext<mode>): Likewise.
      	* config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
      	E_VNx2BFmode and E_VNx4BFmode.
      	(aarch64_evpc_rev_local): Base the analysis on the container size
      	instead of the element size.  Use the new aarch64_sve_revbhw
      	patterns for SVE.
      	(aarch64_evpc_dup): Handle partial SVE data modes.  Use the
      	container size instead of the element size when applying the
      	SVE immediate limit.  Fix a previously incorrect bounds check.
      	(aarch64_expand_vec_perm_const_1): Handle partial SVE data modes.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/dup_lane_2.c: New test.
      	* gcc.target/aarch64/sve/dup_lane_3.c: Likewise.
      	* gcc.target/aarch64/sve/ext_4.c: Likewise.
      	* gcc.target/aarch64/sve/rev_2.c: Likewise.
      	* gcc.target/aarch64/sve/revhw_1.c: Likewise.
      	* gcc.target/aarch64/sve/revhw_2.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_8.c: Likewise.
      	* gcc.target/aarch64/sve/trn1_2.c: Likewise.
      	* gcc.target/aarch64/sve/trn2_2.c: Likewise.
      	* gcc.target/aarch64/sve/uzp1_2.c: Likewise.
      	* gcc.target/aarch64/sve/uzp2_2.c: Likewise.
      	* gcc.target/aarch64/sve/zip1_2.c: Likewise.
      	* gcc.target/aarch64/sve/zip2_2.c: Likewise.
      6c3ce63b
    • Martin Liska's avatar
      Add -fbit-tests option. · 9b11203e
      Martin Liska authored
      gcc/ChangeLog:
      
      	* common.opt: Add new -fbit-tests option.
      	* doc/invoke.texi: Document the option.
      	* tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
      	Use the option.
      	* tree-switch-conversion.h (is_enabled): New function.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/tree-ssa/switch-4.c: New test.
      9b11203e
    • Richard Biener's avatar
      make PRE constant value IDs negative · d3989492
      Richard Biener authored
      This separates constant and non-constant value-ids to allow for
      a more efficient constant_value_id_p and for more efficient bit-packing
      inside the bitmap sets which never contain any constant values.
      
      There's further optimization opportunities but at this stage
      I'll do small refactorings.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.h (get_max_constant_value_id): Declare.
      	(get_next_constant_value_id): Likewise.
      	(value_id_constant_p): Inline and simplify.
      	* tree-ssa-sccvn.c (constant_value_ids): Remove.
      	(next_constant_value_id): Add.
      	(get_or_alloc_constant_value_id): Adjust.
      	(value_id_constant_p): Remove definition.
      	(get_max_constant_value_id): Define.
      	(get_next_value_id): Add assert for overflow.
      	(get_next_constant_value_id): Define.
      	(run_rpo_vn): Adjust.
      	(free_rpo_vn): Likewise.
      	(do_rpo_vn): Initialize next_constant_value_id.
      	* tree-ssa-pre.c (constant_value_expressions): New.
      	(add_to_value): Split into constant/non-constant value
      	handling.  Avoid exact re-allocation.
      	(vn_valnum_from_value_id): Adjust.
      	(phi_translate_1): Remove spurious exact re-allocation.
      	(bitmap_find_leader): Adjust.  Make sure we return
      	a CONSTANT value for a constant value id.
      	(do_pre_regular_insertion): Use 2 auto-elements for avail.
      	(do_pre_partial_partial_insertion): Likewise.
      	(init_pre): Allocate constant_value_expressions.
      	(fini_pre): Release constant_value_expressions.
      d3989492
    • Richard Biener's avatar
      tree-optimization/97706 - handle PHIs in pattern recog mask precison · 22175d0d
      Richard Biener authored
      This adds handling of PHIs to mask precision compute which is
      eventually needed to detect a bool pattern when the def chain
      contains such a PHI node.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97706
      	* tree-vect-patterns.c (possible_vector_mask_operation_p):
      	PHIs are possible mask operations.
      	(vect_determine_mask_precision): Handle PHIs.
      	(vect_determine_precisions): Walk PHIs in BB analysis.
      
      	* gcc.dg/vect/bb-slp-pr97706.c: New testcase.
      22175d0d
    • Nathan Sidwell's avatar
      c++: Parser tweaks · 1db815f4
      Nathan Sidwell authored
      We need to adjust the wording for 'export'.  Between c++11 and c++20
      it is deprecated.  Outside those ranges it is unsupported (at the
      moment).  While here, there's also an unneeded setting of a bool --
      it's inside an if block that just checked it was true.
      
      	gcc/cp/
      	* parser.c (cp_parser_template_declaration): Adjust 'export' warning.
      	(cp_parser_explicit_specialization): Remove unneeded bool setting.
      1db815f4
    • Kewen Lin's avatar
      testsuite: fix malloc alignment in test · 15bcd01a
      Kewen Lin authored
      gcc/testsuite/ChangeLog:
      
      	PR gcov-profile/97461
      	* gcc.dg/tree-prof/pr97461.c: Return aligned memory.
      15bcd01a
    • Thomas Schwinge's avatar
      [Fortran] Remove OpenACC 'loop' inside 'parallel' special-case code · 4c27f900
      Thomas Schwinge authored
      Instead, use the generic middle-end code, like already used for Fortran OpenACC
      'loop' inside other compute constructs, orphaned 'loop' constructs, and C, C++
      generally.
      
      	gcc/fortran/
      	* openmp.c (oacc_is_parallel, resolve_oacc_params_in_parallel):
      	Remove.
      	(resolve_oacc_loop_blocks): Don't call the former.
      	gcc/testsuite/
      	* gfortran.dg/goacc/loop-2-parallel-3.f95: Adjust.
      4c27f900
    • Thomas Schwinge's avatar
      Remove 'gfortran.dg/goacc/loop-6.f95' · 52b74462
      Thomas Schwinge authored
      What it's testing is adequately covered in other
      'gfortran.dg/goacc/loop-2-parallel-*.f95' testcases.
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/loop-6.f95: Remove.
      52b74462
    • Thomas Schwinge's avatar
      Remove 'gfortran.dg/goacc/loop-5.f95' · 4dfa1789
      Thomas Schwinge authored
      What it's testing is adequately covered in other
      'gfortran.dg/goacc/loop-2-*-tile.f95' testcases.
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/loop-5.f95: Remove.
      4dfa1789
    • Martin Liska's avatar
      gcc-changelog: prevent double cherry-pick line · f176773b
      Martin Liska authored
      contrib/ChangeLog:
      
      	* gcc-changelog/git_commit.py: Add new check.
      	* gcc-changelog/test_email.py: Test it.
      	* gcc-changelog/test_patches.txt: Add new patch.
      f176773b
    • Richard Biener's avatar
      refactor SLP analysis · b88fdcc1
      Richard Biener authored
      This passes down the graph entry kind down to vect_analyze_slp_instance
      which simplifies it and makes it a shallow wrapper around
      vect_build_slp_instance.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-slp.c (vect_analyze_slp): Pass down the
      	SLP graph entry kind.
      	(vect_analyze_slp_instance): Simplify.
      	(vect_build_slp_instance): Adjust.
      	(vect_slp_check_for_constructors): Perform more
      	eligibility checks here.
      b88fdcc1
    • Jan Hubicka's avatar
      Move ipa-refs from ggc to heap. · 7144270e
      Jan Hubicka authored
      gcc/ChangeLog:
      
      	* ipa-ref.h (enum ipa_ref_use): Remove GTY marker.
      	(struct ipa_ref): Remove GTY marker; reorder for better packing.
      	(struct ipa_ref_list): Remove GTY marker; turn references
      	nad referring to va_heap, vl_ptr vectors; update accesors.
      	* cgraph.h (symtab_node::iterate_reference): Update.
      	* ipa-ref.c (ipa_ref::remove_reference): Update.
      	* symtab.c (symtab_node::create_reference): Update.
      	(symtab_node::remove_all_references): Update.
      	(symtab_node::resolve_alias): Update.
      
      gcc/cp/ChangeLog:
      
      	* tree.c (cp_fix_function_decl_p): Do not access ipa_ref_list dirrectly.
      7144270e
    • Jakub Jelinek's avatar
      ipa-modref: Fix comment typos · 8a2fd716
      Jakub Jelinek authored
      2020-11-06  Jakub Jelinek  <jakub@redhat.com>
      
      	* ipa-modref-tree.h: Fix comment typos.
      	* ipa-modref.c: Likewise.
      8a2fd716
    • Andreas Krebbel's avatar
      IBM Z: Remove override of inline params · b92e4be3
      Andreas Krebbel authored
      We have pretty aggressive values for inline-min-speedup and
      max-inline-insns-auto. This unfortunately made more maybe
      uninitialized warnings to appear when building on Z.
      
      With the patch we go back to the default values.
      
      gcc/ChangeLog:
      
      	* config/s390/s390.c (s390_option_override_internal): Remove
      	override of inline params.
      b92e4be3
    • Richard Biener's avatar
      tree-optimization/97706 - part one, refactor vect_determine_mask_precision · 7307d8e1
      Richard Biener authored
      This computes vect_determine_mask_precision in a RPO forward walk
      rather than in a backward walk and using a worklist.  It will make
      fixing PR97706 easier but for bisecting I wanted it to be separate.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97706
      	* tree-vect-patterns.c (vect_determine_mask_precision):
      	Remove worklist operation.
      	(vect_determine_stmt_precisions): Do not call
      	vect_determine_mask_precision here.
      	(vect_determine_precisions): Compute mask precision
      	in a forward walk.
      7307d8e1
    • Tobias Burnus's avatar
      OpenACC/Fortran: Reject '!$acc atomic update capture' · c2e9f586
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* openmp.c (gfc_match_oacc_atomic): No longer accept 'update capture'.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/goacc-gomp/goacc-gomp.exp: New.
      	* gfortran.dg/goacc-gomp/atomic.f90: New test.
      	* gfortran.dg/goacc/atomic.f90: New test.
      c2e9f586
    • Tobias Burnus's avatar
      OpenACC (C/C++): Fix 'acc atomic' parsing · a2c11935
      Tobias Burnus authored
      gcc/c/ChangeLog:
      
      	* c-parser.c (c_parser_omp_atomic): Add openacc parameter and update
      	OpenACC matching.
      	(c_parser_omp_construct): Update call.
      
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_omp_atomic): Add openacc parameter and update
      	OpenACC matching.
      	(cp_parser_omp_construct): Update call.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/goacc-gomp/atomic.c: New test.
      	* c-c++-common/goacc/atomic.c: New test.
      a2c11935
    • Richard Biener's avatar
      tree-optimization/97732 - fix init of SLP induction vectorization · 8ebedfcd
      Richard Biener authored
      This PR exposes two issues - one that the vector builder treats
      &x as eligible for VECTOR_CST elements and one that SLP induction
      vectorization forgets to convert init elements to the vector
      component type which makes a difference for pointer vs. integer.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97732
      	* tree-vect-loop.c (vectorizable_induction): Convert the
      	init elements to the vector component type.
      	* gimple-fold.c (gimple_build_vector): Use CONSTANT_CLASS_P
      	rather than TREE_CONSTANT to determine if elements are
      	eligible for VECTOR_CSTs.
      
      	* gcc.dg/vect/bb-slp-pr97732.c: New testcase.
      8ebedfcd
    • Olivier Hainque's avatar
      Add dg-require-profiling directives to gcc.target/i386 tests · f11b1f9d
      Olivier Hainque authored
      This patch adds /* { dg-require-profiling "-pg" } */
      to a few tests in gcc.target/i386 that use -pg explicitly, to
      prevent them from failing during runs for VxWorks targets.
      
      2020-10-29  Olivier Hainque  <hainque@adacore.com>
      
      gcc/testsuite/
      	* gcc.target/i386/fentryname1.c: Add dg-require-profiling.
      	* gcc.target/i386/fentryname2.c: Likewise.
      	* gcc.target/i386/fentryname3.c: Likewise.
      	* gcc.target/i386/returninst1.c: Likewise.
      	* gcc.target/i386/returninst2.c: Likewise.
      	* gcc.target/i386/returninst3.c: Likewise.
      f11b1f9d
    • Olivier Hainque's avatar
      Add dg-require-effective-target fpic to g++ tests · ff47c61f
      Olivier Hainque authored
      Add missing dg-require-effective-target fpic to few
      g++.dg tests.
      
      2020-11-02  Olivier Hainque  <hainque@adacore.com>
      
      gcc/testsuite/
      	* g++.dg/pr57878.C: Add dg-require-effective-target fpic.
      	* g++.dg/pr65032.C: Likewise.
      	* g++.dg/pr84279.C: Likewise.
      	* g++.dg/inherit/thunk8.C: Likewise.
      	* g++.dg/opt/pr64411.C: Likewise.
      ff47c61f
    • Jan Hubicka's avatar
      Add fnspec handling to ipa mode of ipa-modef. · 6cef01c3
      Jan Hubicka authored
      gcc/:
      
      	* attr-fnspec.h (attr_fnspec::get_str): New accessor
      	* ipa-fnsummary.c (read_ipa_call_summary): Store also parm info
      	for builtins.
      	* ipa-modref.c (class fnspec_summary): New type.
      	(class fnspec_summaries_t): New type.
      	(modref_summary::modref_summary): Initialize writes_errno.
      	(struct modref_summary_lto): Add writes_errno.
      	(modref_summary_lto::modref_summary_lto): Initialize writes_errno.
      	(modref_summary::dump): Check for NULL pointers.
      	(modref_summary_lto::dump): Dump writes_errno.
      	(collapse_loads): Move up in source file.
      	(collapse_stores): New function.
      	(process_fnspec): Handle also internal calls.
      	(analyze_call): Likewise.
      	(analyze_stmt): Store fnspec string if needed.
      	(analyze_function): Initialize fnspec_sumarries.
      	(modref_summaries_lto::duplicate): Copy writes_errno.
      	(modref_write): Store writes_errno and fnspec summaries.
      	(read_section): Read writes_errno and fnspec summaries.
      	(modref_read): Initialize fnspec summaries.
      	(update_signature): Fix formating.
      	(compute_parm_map): Return true if sucessful.
      	(get_parm_type): New function.
      	(get_access_for_fnspec): New function.
      	(propagate_unknown_call): New function.
      	(modref_propagate_in_scc): Use it.
      	(pass_ipa_modref::execute): Delete fnspec_summaries.
      	(ipa_modref_c_finalize): Delete fnspec_summaries.
      	* ipa-prop.c: Include attr-fnspec.h.
      	(ipa_compute_jump_functions_for_bb):  Also compute jump functions
      	for functions with fnspecs.
      	(ipa_read_edge_info): Read jump functions for builtins.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/ipa/modref-2.c: New test.
      	* gcc.dg/lto/modref-2_0.c: New test.
      6cef01c3
    • Jan Hubicka's avatar
      Move size time tables from GGC to heap · 366099ff
      Jan Hubicka authored
      this patch moves size time tables out of ggc allocated memory.  This makes
      sources bit cleaner and saves about 60MB of GGC memory that turns to about 45MB
      of heap memory for cc1plus LTO build.
      
      	* ipa-fnsummary.h (class size_time_entry): Do not GTY annotate.
      	(class ipa_fnsummary): Turn size_time_table to auto_vec and
      	call_size_time_table to effecient vec; update constructors.
      	* ipa-fnsummary.c (ipa_fn_summary::account_size_time): Update.
      	(ipa_fn_summary::~ipa_fn_summary): Update.
      	(ipa_fn_summary_t::duplicate): Update.
      	(ipa_dump_fn_summary): Update.
      	(set_switch_stmt_execution_predicate): Update.
      	(analyze_function_body): Update.
      	(estimate_calls_size_and_time): Update.
      	(ipa_call_context::estimate_size_and_time): Update.
      	(ipa_merge_fn_summary_after_inlining): Update.
      	(ipa_update_overall_fn_summary): Update.
      	(inline_read_section): Update.
      	(ipa_fn_summary_write): Update.
      366099ff
    • Jakub Jelinek's avatar
      c-common: Remove DEBUG_FUNCTION from verify_sequence_points · 344106a9
      Jakub Jelinek authored
      While perhaps the function name might suggest that it is a verification/debugging
      only routine, it is actually implementation of the -Wsequence-point warning
      and so doesn't need the DEBUG_FUNCTION macro on it.
      
      2020-11-06  Jakub Jelinek  <jakub@redhat.com>
      
      	* c-common.c (verify_sequence_points): Remove DEBUG_FUNCTION.
      344106a9
    • Richard Biener's avatar
      tree-optimization/97733 - fix SLP of reductions with zero relevant · 2210bf6d
      Richard Biener authored
      This adds a missing check.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97733
      	* tree-vect-slp.c (vect_analyze_slp_instance): If less
      	than two reductions were relevant or live do nothing.
      2210bf6d
    • Tobias Burnus's avatar
      Fortran: Fix type-decl for PDT / wrong-code pdt_14.f03 issue [PR97652] · c283a711
      Tobias Burnus authored
      Parameterized derived types are handled in a special way and start with 'Pdt'.
      If the 'P' is not uppercase, gfc_get_derived_type (which calls
      gfc_get_module_backend_decl) does not find the existing declaration and
      builds a new type. The middle end then sees those types as being different
      and nonalising, creating an endless loop for pdt_14.f03.
      
      gcc/fortran/ChangeLog:
      
      	PR fortran/97652
      	* module.c (mio_symbol): Fix symbol name for pdt_type.
      c283a711
    • Jeff Law's avatar
      Improve overflow check · 32ee4728
      Jeff Law authored
      Convert
      x < (short) ((unsigned short)x + const)
      to
      x <= SHORT_MAX – const
      (and similarly for other integral types) if const is not 0.
      
      gcc/
      	PR tree-optimization/97223
      	* match.pd (overflow detection and optimization): Handle conversions.
      
      gcc/testsuite/
      
      	* gcc.dg/no-strict-overflow-4.c: Adjust expected output.
      32ee4728
    • Eugene Rozenfeld's avatar
      Simplify x >> x to 0. This fixes PR96701. · 6483f059
      Eugene Rozenfeld authored
      gcc/
      	* match.pd (x >> x): New pattern.
      
      gcc/testsuite
      
      	* gcc.dg/self-right-shift.c: New test.
      6483f059
    • Kito Cheng's avatar
      RISC-V: Mark non-export symbol static and const in riscv-common.c · 56ecdc2f
      Kito Cheng authored
      gcc/ChangeLog:
      
      	* common/config/riscv/riscv-common.c (riscv_implied_info):
      	Add static and const.
      	(riscv_subset_list::handle_implied_ext): Add const due to
      	riscv_implied_info changed to const.
      56ecdc2f
    • Kito Cheng's avatar
      PR target/96307: Fix KASAN option checking. · 65e82636
      Kito Cheng authored
       - Disable kasan if target is unsupported and -fasan-shadow-offset= is not
         given, no matter `--param asan-stack=1` is given or not.
      
       - Moving KASAN option checking testcase to gcc.dg, those testcase could be
         useful for all other target which not support asan.
      
       - Verifed on riscv and x86.
      
      gcc/ChangeLog:
      
      	PR target/96307
      	* toplev.c (process_options): Remove param_asan_stack checking for kasan
      	option checking.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/96307
      	* gcc.dg/pr96307.c: New.
      	* gcc.target/riscv/pr96260.c: Move this test case from here to ...
      	* gcc.dg/pr96260.c: ... here.
      	* gcc.target/riscv/pr91441.c: Move this test case from here to ...
      	* gcc.dg/pr91441.c: ... here.
      	* lib/target-supports.exp (check_effective_target_no_fsanitize_address):
      	New proc.
      65e82636
    • liuhongt's avatar
      MAINTAINERS: Add myself for write after approval. · f72af3af
      liuhongt authored
      ChangeLog:
      
      2019-03-17  Hongtao Liu  <hongtao.liu@intel.com>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      f72af3af
    • GCC Administrator's avatar
      Daily bump. · 0cfd9109
      GCC Administrator authored
      0cfd9109
  2. Nov 05, 2020
    • Marek Polacek's avatar
      c++: Add auto_diagnostic_group to check_handlers_1. · 44e1f63e
      Marek Polacek authored
      This was missing.
      
      gcc/cp/ChangeLog:
      
      	* except.c (check_handlers_1): Add auto_diagnostic_group.
      44e1f63e
    • Marek Polacek's avatar
      c++: Fix decltype(auto) deduction with rvalue ref [PR78209] · e6fd02cc
      Marek Polacek authored
      Here's a small deficiency in decltype(auto).  [dcl.type.auto.deduct]/5:
      If the placeholder-type-specifier is of the form decltype(auto), [...]
      the type deduced for T is determined [...] as though E had been the operand
      of the decltype.  So:
      
        int &&i = 0;
        decltype(auto) j = i; // should behave like int &&j = i; error
      
      We deduce j's type in do_auto_deduction via finish_decltype_type which
      takes an 'id' argument.  Currently we compute 'id' as false, because
      stripped_init is *i (a REFERENCE_REF_P).  But it seems to me we should
      rather set 'id' to true here, by looking through the REFERENCE_REF_P,
      so that finish_decltype_type DTRT.
      
      gcc/cp/ChangeLog:
      
      	PR c++/78209
      	* pt.c (do_auto_deduction): If init is REFERENCE_REF_P, use its
      	first operand.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/78209
      	* g++.dg/cpp1y/decltype-auto1.C: New test.
      e6fd02cc
    • Marek Polacek's avatar
      c++: Add -Wexceptions warning option [PR97675] · 1d87302a
      Marek Polacek authored
      This PR asks that we add a warning option for an existing (very old)
      warning, so that it can be disabled selectively.  clang++ uses
      -Wexceptions for this, so I added this new option rather than using
      e.g. -Wnoexcept.
      
      gcc/c-family/ChangeLog:
      
      	PR c++/97675
      	* c.opt (Wexceptions): New option.
      
      gcc/cp/ChangeLog:
      
      	PR c++/97675
      	* except.c (check_handlers_1): Use OPT_Wexceptions for the
      	warning.  Use inform for the second part of the warning.
      
      gcc/ChangeLog:
      
      	PR c++/97675
      	* doc/invoke.texi: Document -Wexceptions.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/97675
      	* g++.old-deja/g++.eh/catch10.C: Adjust dg-warning.
      	* g++.dg/warn/Wexceptions1.C: New test.
      	* g++.dg/warn/Wexceptions2.C: New test.
      1d87302a
    • Marek Polacek's avatar
      c++: Implement -Wvexing-parse [PR25814] · 5b200310
      Marek Polacek authored
      This patch implements the -Wvexing-parse warning to warn about the
      sneaky most vexing parse rule in C++: the cases when a declaration
      looks like a variable definition, but the C++ language requires it
      to be interpreted as a function declaration.  This warning is on by
      default (like clang++).  From the docs:
      
        void f(double a) {
          int i();        // extern int i (void);
          int n(int(a));  // extern int n (int);
        }
      
        Another example:
      
        struct S { S(int); };
        void f(double a) {
          S x(int(a));   // extern struct S x (int);
          S y(int());    // extern struct S y (int (*) (void));
          S z();         // extern struct S z (void);
        }
      
      You can find more on this in [dcl.ambig.res].
      
      I spent a fair amount of time on fix-it hints so that GCC can recommend
      various ways to resolve such an ambiguity.  Sometimes that's tricky.
      E.g., suggesting default-initialization when the class doesn't have
      a default constructor would not be optimal.  Suggesting {}-init is also
      not trivial because it can use an initializer-list constructor if no
      default constructor is available (which ()-init wouldn't do).  And of
      course, pre-C++11, we shouldn't be recommending {}-init at all.
      
      I also uncovered a bug in cp_parser_declarator, where we were setting
      *parenthesized_p to true despite the comment saying the exact opposite.
      
      gcc/c-family/ChangeLog:
      
      	PR c++/25814
      	* c.opt (Wvexing-parse): New option.
      
      gcc/cp/ChangeLog:
      
      	PR c++/25814
      	* cp-tree.h (enum cp_tree_index): Add CPTI_EXPLICIT_VOID_LIST.
      	(explicit_void_list_node): Define.
      	(PARENTHESIZED_LIST_P): New macro.
      	(struct cp_declarator): Add function::parens_loc.
      	* decl.c (cxx_init_decl_processing): Initialize explicit_void_list_node.
      	(grokparms): Also break when explicit_void_list_node.
      	* parser.c (make_call_declarator): New location_t parameter.  Use it
      	to set declarator->u.function.parens_loc.
      	(cp_parser_lambda_declarator_opt): Pass UNKNOWN_LOCATION to
      	make_call_declarator.
      	(warn_about_ambiguous_parse): New function.
      	(cp_parser_init_declarator): Call warn_about_ambiguous_parse.
      	(cp_parser_declarator): Set *parenthesized_p to false rather than to
      	true.
      	(cp_parser_direct_declarator): Create a location for the function's
      	parentheses and pass it to make_call_declarator.
      	(cp_parser_parameter_declaration_clause): Return explicit_void_list_node
      	for (void).
      	(cp_parser_parameter_declaration_list): Set PARENTHESIZED_LIST_P
      	in the parameters tree.
      
      gcc/ChangeLog:
      
      	PR c++/25814
      	* doc/invoke.texi: Document -Wvexing-parse.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/25814
      	* g++.dg/cpp2a/fn-template16.C: Add a dg-warning.
      	* g++.dg/cpp2a/fn-template7.C: Likewise.
      	* g++.dg/lookup/pr80891-5.C: Likewise.
      	* g++.dg/lto/pr79050_0.C: Add extern.
      	* g++.dg/lto/pr84805_0.C: Likewise.
      	* g++.dg/parse/pr58898.C: Add a dg-warning.
      	* g++.dg/template/scope5.C: Likewise.
      	* g++.old-deja/g++.brendan/recurse.C: Likewise.
      	* g++.old-deja/g++.jason/template4.C: Likewise.
      	* g++.old-deja/g++.law/arm4.C: Likewise.
      	* g++.old-deja/g++.mike/for2.C: Likewise.
      	* g++.old-deja/g++.other/local4.C: Likewise.
      	* g++.old-deja/g++.pt/crash3.C: Likewise.
      	* g++.dg/warn/Wvexing-parse.C: New test.
      	* g++.dg/warn/Wvexing-parse2.C: New test.
      	* g++.dg/warn/Wvexing-parse3.C: New test.
      	* g++.dg/warn/Wvexing-parse4.C: New test.
      	* g++.dg/warn/Wvexing-parse5.C: New test.
      	* g++.dg/warn/Wvexing-parse6.C: New test.
      	* g++.dg/warn/Wvexing-parse7.C: New test.
      
      libstdc++-v3/ChangeLog:
      
      	PR c++/25814
      	* testsuite/20_util/reference_wrapper/lwg2993.cc: Add a dg-warning.
      	* testsuite/25_algorithms/generate_n/87982_neg.cc: Likewise.
      5b200310
    • Andrew MacLeod's avatar
      Pass multi-range from range_query::value_* routines · 22984f3f
      Andrew MacLeod authored
      fix range-ops equal/not_equal to not reuse the result range as intermediary.
      value_query::value routines should pasa multi-range in as some other rangeop
      routines build into this result, so we may need better precision.
      
      	gcc/
      	PR tree-optimization/97725
      	* range-op.cc (operator_equal::fold_range): Use new tmp value.
      	(operator_not_equal::fold_range): Ditto.
      	* value-query.cc (range_query::value_of_expr): Use int_range_max
      	not a value_range.
      	(range_query::value_on_edge): Ditto.
      	(range_query::value_of_stmt): Ditto.
      	gcc/testsuite/
      	* gcc.dg/pr97725.c: New.
      22984f3f
    • Jonathan Wakely's avatar
      libstdc++: Fix typo in ChangeLog entry · d16d4565
      Jonathan Wakely authored
      d16d4565
    • Jonathan Wakely's avatar
      libstdc++: Fix constraints on std::optional comparisons [PR 96269] · cdd2d448
      Jonathan Wakely authored
      The relational operators for std::optional were using the wrong types
      in the declval expressions used to constrain them. Instead of using
      const lvalues they were using non-const rvalues, which meant that a type
      might satisfy the constraints but then give an error when the function
      body was instantiated.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/96269
      	* include/std/optional (operator==, operator!=, operator<)
      	(operator>, operator<=, operator>=): Fix types used in
      	SFINAE constraints.
      	* testsuite/20_util/optional/relops/96269.cc: New test.
      cdd2d448
    • Kwok Cheung Yeung's avatar
      openmp: Mark deprecated symbols in OpenMP 5.0 · 10508db8
      Kwok Cheung Yeung authored
      2020-11-05  Ulrich Drepper  <drepper@redhat.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	libgomp/
      	* Makefile.am (%.mod): Add -cpp and -fopenmp to compile flags.
      	* Makefile.in: Regenerate.
      	* fortran.c: Wrap uses of omp_set_nested and omp_get_nested with
      	pragmas to ignore -Wdeprecated-declarations warnings.
      	* icv.c: Likewise.
      	* omp.h.in (__GOMP_DEPRECATED_5_0): Define.
      	Mark omp_lock_hint_* enum values, omp_lock_hint_t, omp_set_nested,
      	and omp_get_nested with __GOMP_DEPRECATED_5_0.
      	* omp_lib.f90.in: Mark omp_get_nested and omp_set_nested as
      	deprecated.
      	* testsuite/libgomp.c++/affinity-1.C: Add -Wno-deprecated-declarations
      	to test options.
      	* testsuite/libgomp.c/affinity-1.c: Likewise.
      	* testsuite/libgomp.c/affinity-2.c: Likewise.
      	* testsuite/libgomp.c/appendix-a/a.15.1.c: Likewise.
      	* testsuite/libgomp.c/lib-1.c: Likewise.
      	* testsuite/libgomp.c/nested-1.c: Likewise.
      	* testsuite/libgomp.c/nested-2.c: Likewise.
      	* testsuite/libgomp.c/nested-3.c: Likewise.
      	* testsuite/libgomp.c/pr32362-1.c: Likewise.
      	* testsuite/libgomp.c/pr32362-2.c: Likewise.
      	* testsuite/libgomp.c/pr32362-3.c: Likewise.
      	* testsuite/libgomp.c/pr35549.c: Likewise.
      	* testsuite/libgomp.c/pr42942.c: Likewise.
      	* testsuite/libgomp.c/pr61200.c: Likewise.
      	* testsuite/libgomp.c/sort-1.c: Likewise.
      	* testsuite/libgomp.c/target-5.c: Likewise.
      	* testsuite/libgomp.c/target-6.c: Likewise.
      	* testsuite/libgomp.c/teams-1.c: Likewise.
      	* testsuite/libgomp.c/thread-limit-1.c: Likewise.
      	* testsuite/libgomp.c/thread-limit-2.c: Likewise.
      	* testsuite/libgomp.c/thread-limit-4.c: Likewise.
      	* testsuite/libgomp.fortran/affinity1.f90: Likewise.
      	* testsuite/libgomp.fortran/lib1.f90: Likewise.
      	* testsuite/libgomp.fortran/lib2.f: Likewise.
      	* testsuite/libgomp.fortran/nested1.f90: Likewise.
      	* testsuite/libgomp.fortran/teams1.f90: Likewise.
      10508db8
    • Olivier Hainque's avatar
      Handle use of r18 as a TCB pointer on aarch64-vxworks · 7fa1b2c8
      Olivier Hainque authored
      Pick an alternate static chain regnum and document that
      the port needs to be configured to issue -ffixed-r18 by
      default.  The current definition of TARGET_OS_USES_R18 is
      not honored by the common part of the back-end.
      
      2020-11-04  Olivier Hainque  <hainque@adacore.com>
      
      gcc/
      	* config/aarch64/aarch64-vxworks.h (TARGET_OS_USES_R18):
      	Remove definition.
      	(STATIC_CHAIN_REGNUM): Redefine to 9.
      7fa1b2c8
Loading