1. 16 Jan, 2020 14 commits
    • [GCC][PATCH][AArch64]Add ACLE intrinsics for bfdot for ARMv8.6 Extension · f275d73a
      2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* config/aarch64/aarch64-simd-builtins.def (aarch64_bfdot,
      	aarch64_bfdot_lane, aarch64_bfdot_laneq): New.
      	* config/aarch64/aarch64-simd.md (aarch64_bfdot, aarch64_bfdot_lane,
      	aarch64_bfdot_laneq): New.
      	* config/aarch64/arm_bf16.h (vbfdot_f32, vbfdotq_f32,
      	vbfdot_lane_f32, vbfdotq_lane_f32, vbfdot_laneq_f32,
      	vbfdotq_laneq_f32): New.
      	* config/aarch64/iterators.md (UNSPEC_BFDOT, Vbfdottype,
      	VBFMLA_W, VBF): New.
      	(isquadop): Add V4BF, V8BF.
      
      2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* gcc.target/aarch64/advsimd-intrinsics/bfdot-1.c: New.
      	* gcc.target/aarch64/advsimd-intrinsics/bfdot-2.c: New.
      	* gcc.target/aarch64/advsimd-intrinsics/bfdot-3.c: New.
      Stam Markianos-Wright committed
    • libstdc++: Improve unordered containers == operator (PR 91263) · d9165389
      Avoid comparing elements with operator== multiple times by replacing
      uses of find and equal_range with equivalent inlined code that uses
      operator== instead of the container's equality comparison predicate.
      This is valid because the standard requires that operator== is a
      refinement of the equality predicate.
      
      Also replace the _S_is_permutation function with std::is_permutation,
      which wasn't yet implemented when this code was first written.
      
      	PR libstdc++/91263
      	* include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
      	* include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
      	(_Equality_base): Remove.
      	(_Equality<>::_M_equal): Review implementation. Use
      	std::is_permutation.
      	* testsuite/23_containers/unordered_multiset/operators/1.cc
      	(Hash, Equal, test02, test03): New.
      	* testsuite/23_containers/unordered_set/operators/1.cc
      	(Hash, Equal, test02, test03): New.
      François Dumont committed
    • [GCC][PATCH][AArch64]Add ACLE intrinsics for dot product (usdot - vector,… · 8c197c85
      [GCC][PATCH][AArch64]Add ACLE intrinsics for dot product (usdot - vector, <us/su>dot - by element) for AArch64 AdvSIMD ARMv8.6 Extension
      
      gcc/ChangeLog:
      
      2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* config/aarch64/aarch64-builtins.c: (enum aarch64_type_qualifiers):
      	New qualifier_lane_quadtup_index, TYPES_TERNOP_SSUS,
      	TYPES_QUADOPSSUS_LANE_QUADTUP, TYPES_QUADOPSSSU_LANE_QUADTUP.
      	(aarch64_simd_expand_args): Add case SIMD_ARG_LANE_QUADTUP_INDEX.
      	(aarch64_simd_expand_builtin): Add qualifier_lane_quadtup_index.
      	* config/aarch64/aarch64-simd-builtins.def (usdot, usdot_lane,
      	usdot_laneq, sudot_lane,sudot_laneq): New.
      	* config/aarch64/aarch64-simd.md (aarch64_usdot): New.
      	(aarch64_<sur>dot_lane): New.
      	* config/aarch64/arm_neon.h (vusdot_s32): New.
      	(vusdotq_s32): New.
      	(vusdot_lane_s32): New.
      	(vsudot_lane_s32): New.
      	* config/aarch64/iterators.md (DOTPROD_I8MM): New iterator.
      	(UNSPEC_USDOT, UNSPEC_SUDOT): New unspecs.
      
      gcc/testsuite/ChangeLog:
      
      2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-1.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-2.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-3.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-4.c: New test.
      Stam Markianos-Wright committed
    • contrib: Check and if needed set user.name and user.email in gcc-git-customization.sh · 545f5fad
      As discussed on IRC, this adds a couple more checks in the
      customization setup for git.  If the variables user.name and
      user.email are not set anywhere in the git config hierarchy, we set
      some local values.  We always ask about the values we detect and if
      the user gives an answer that is new, we save that in the local
      config: this gives the opportunity to use different values to those
      configured for the global space.
      
      Also cleaned up a couple of minor niggles, such as using $(cmd) rather
      than `cmd` for subshells and some quoting issues when using eval.
      
      	* gcc-git-customization.sh: Check that user.name and user.email
      	are set.  Use $(cmd) instead of `cmd`.  Fix variable quoting when
      	using eval.
      Richard Earnshaw committed
    • Fix spacing in a dump in value-prof.c. · 1c2755a6
      	* value-prof.c (dump_histogram_value): Fix
      	obvious spacing issue.
      Martin Liska committed
    • Fix value numbering dealing with reverse byte order · 2db99ef7
      Hi,
        While working on bit-field lowering pass, I came across this bug.
      The IR looks like:
        VIEW_CONVERT_EXPR<unsigned long>(var1) = _12;
        _1 = BIT_FIELD_REF <var1, 64, 0>;
      
      Where the BIT_FIELD_REF has REF_REVERSE_STORAGE_ORDER set on it
      and var1's type has TYPE_REVERSE_STORAGE_ORDER set on it.
      PRE/FRE would decided to prop _12 into the BFR statement
      which would produce wrong code.
      And yes _12 has the correct byte order already; bit-field lowering
      removes the implicit byte swaps in the IR and adds the explicity
      to make it easier optimize later on.
      
      This patch adds a check for storage_order_barrier_p on the lhs tree
      which returns true in the case where we had a reverse order with a VCE.
      
      ChangeLog:
      * tree-ssa-sccvn.c(vn_reference_lookup_3): Check lhs for
      !storage_order_barrier_p.
      Andrew Pinski committed
    • Uninitialized padding in struct _dep. · 7c6056d5
      In struct _dep, there is an implicit padding of 4bits.  This
      bit-field padding is uninitialized when init_dep_1 is being called.
      This means we access uninitialized memory but never use it for
      anything.  Adding an unused bit-field field and initializing it
      in init_dep_1 will improve code generation also as we initialize
      the whole 32bits now rather than just part of it.
      
      ChangeLog:
      * sched-int.h (_dep): Add unused bit-field field for the padding.
      * sched-deps.c (init_dep_1): Init unused field.
      Andrew Pinski committed
    • Fix uninitialized field in expand_operand. · 55c7ffae
      Commit g:f96bf49a added the target field to expand_operand.
      But it leaves it uninitialized when doing a full initialization
      inside create_expand_operand.  This fixes the problem and improves
      the code generation inside create_expand_operand too.
      
      ChangeLog:
      * optabs.h (create_expand_operand): Initialize target field also.
      Andrew Pinski committed
    • contrib: Verify the id to be printed is ancestor of the corresponding remote… · 2588197b
      contrib: Verify the id to be printed is ancestor of the corresponding remote release branch (or master), otherwise print nothing.
      
      The monotonically increasing revision ids need to be globally unique, so they should
      only identify commits that were committed to the upstream repo to its master or
      releases/gcc-N branches.  The alias could print something even for private branches
      or vendor branches etc., but if such an identifier is then used publicly, it will
      refer to something else.
      
      2020-01-16  Jakub Jelinek  <jakub@redhat.com>
      
      	* gcc-git-customization.sh: Verify the id to be printed is ancestor of
      	the corresponding remote release branch (or master), otherwise print
      	nothing.
      Jakub Jelinek committed
    • PR tree-optimization/92429 do not fold when updating epilogue statements · f7dff769
      This patch addresses the problem reported in PR92429.  When creating an
      epilogue for vectorization we have to replace the SSA_NAMEs in the
      PATTERN_DEF_SEQs and RELATED_STMTs of the epilogue's loop_vec_infos. When doing
      this we were using simplify_replace_tree which always folds the replacement.
      This may lead to a different tree-node than the one which was analyzed in
      vect_loop_analyze.  In turn the new tree-node may require a different
      vectorization than the one we had prepared for which caused the ICE in
      question.
      
      gcc/ChangeLog:
      2020-01-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	PR tree-optimization/92429
      	* tree-ssa-loop-niter.h (simplify_replace_tree): Add parameter.
      	* tree-ssa-loop-niter.c (simplify_replace_tree): Add parameter to
      	control folding.
      	* tree-vect-loop.c (update_epilogue_vinfo): Do not fold when replacing
      	tree.
      
      gcc/testsuite/ChangeLog:
      2020-01-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	PR tree-optimization/92429
      	* gcc.dg/vect/pr92429.c: New test.
      Andre Vieira committed
    • Work around array out of bounds warning in mkdeps · 3b5757ea
      This suppresses an array out of bounds warning in mkdeps.c as proposed
      by Martin Sebor in the bugzilla.
      
      array subscript 2 is outside array bounds of ‘const char [2]’
      
      Since this warning does occur during bootstrap it currently breaks
      werror builds on IBM Z.
      
      The problem can be reproduced also on x86_64 by changing the inlining
      threshold using: --param max-inline-insns-auto=80
      
      Bootstrapped and regression tested on x86_64 and IBM Z.
      
      libcpp/ChangeLog:
      
      2020-01-16  Andreas Krebbel  <krebbel@linux.ibm.com>
      
      	PR tree-optimization/92176
      	* mkdeps.c (deps_add_default_target): Avoid calling apply_vpath to
      	suppress an array out of bounds warning.
      Andreas Krebbel committed
    • aarch64: Fix BE SVE mode punning involving floats · 5c06093c
      The patterns used by aarch64_split_sve_subreg_move only support
      integer modes, so if the widest mode is a float, we should get
      its integer equivalent.
      
      Fixes gcc.target/aarch64/sel_3.c for big-endian targets.
      
      2020-01-16  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
      	aarch64_sve_int_mode to each mode.
      Richard Sandiford committed
    • PR93253 – Document BOZ changes, make it friendlier in legacy code · c35a3046
              PR fortran/93253
              * check.c (gfc_invalid_boz): Mention -fallow-invalid-boz
              in the error message.
              * gfortran.texi (BOZ literal constants): List another missing
              extension and refer to -fallow-invalid-boz.
              * lang.opt (fallow-invalid-boz): Also mention 'X' in the help text
              as it is not covered by the previous wording.
              * primary.c (match_boz_constant): Tweak wording such that it is
              clear how to fix the nonstandard use.
      
              PR fortran/93253
              * fortran.dg/boz_7.f90: Updated dg-error.
      Tobias Burnus committed
    • Daily bump. · 03647d2e
      GCC Administrator committed
  2. 15 Jan, 2020 26 commits
    • analyzer: add note about -fdump-ipa-analyzer to internal docs · 5b668120
      gcc/ChangeLog:
      	* doc/analyzer.texi (Overview): Add note about
      	-fdump-ipa-analyzer.
      David Malcolm committed
    • analyzer: fix comment · 49e9a999
      I rewrote class impl_region_model_context to avoid using multiple
      inheritance during patch review but forgot to update this comment.
      
      Fix it.
      
      gcc/analyzer/ChangeLog:
      	* engine.cc (class impl_region_model_context): Fix comment.
      David Malcolm committed
    • Fix "PR c++/91073 if constexpr no longer works directly with Concepts." · 83fe2b92
      This is a rather serious regression, filed in July 2019. Luckily the
      fix is simple: is localized to parser.c and cp-tree.h in cp and boils
      down to only a few lines.
      
      Testing OK on x86_64-linux. Approved off-line by Jason Merrill.
      
      	/cp
      	PR c++/91073
      	* cp-tree.h (is_constrained_auto): New.
      	* parser.c (cp_parser_maybe_commit_to_declaration): Correctly
      	handle concept-check expressions; take a cp_decl_specifier_seq*
      	instead of a bool.
      	(cp_parser_condition): Update call.
      	(cp_parser_simple_declaration): Likewise.
      	(cp_parser_placeholder_type_specifier): Correctly handle
      	concept-check expressions.
      
      	/testsuite
      	PR c++/91073
      	* g++.dg/concepts/pr91073-1.C: New.
      	* g++.dg/concepts/pr91073-2.C: Likewise.
      Paolo Carlini committed
    • Revert "PR c++/33799 - destroy return value if local cleanup throws." · 299ddc61
      This change was blocking the coroutines merge, so I'm backing it out for now
      to adjust my approach.
      
      This reverts commit 7c82dd6c.
      Jason Merrill committed
    • PR c++/93257 - consteval void function. · 596334fa
      A prvalue can have void type, and if it doesn't do anything prohibited in a
      constant expression, it's vacuously constant.
      
      	* constexpr.c (verify_constant): Allow void_node.
      Jason Merrill committed
    • PR c++/92871 - bad code with xvalue and GNU ?: extension. · 7192b1ec
      I steered Jakub wrong on the desired behavior for temp-extend1.C in the
      context of bug 92831; it doesn't make sense to try to extend the lifetime of
      a temporary that we've already materialized to evaluate the test.  So this
      patch munges the stabilized expression so that it won't be subject to
      lifetime extension.
      
      	* call.c (prevent_lifetime_extension): New.
      	(build_conditional_expr_1): Use it.
      Jason Merrill committed
    • Fix ctz issues (PR93231) · bc071d3a
      Further improve the ctz recognition: Avoid ICEing on negative shift
      counts or multiply constants.  Check the type is a char type for the
      string constant case to avoid accidentally matching a wide STRING_CST.
      Add a tree_expr_nonzero_p check to allow the optimization even if
      CTZ_DEFINED_VALUE_AT_ZERO returns 0 or 1.  Add extra test cases.
      
      Bootstrap OK on AArch64 and x64.
      
          gcc/
      	PR tree-optimization/93231
      	* tree-ssa-forwprop.c (optimize_count_trailing_zeroes): Check
      	input_type is unsigned.  Use tree_to_shwi for shift constant.
      	Check CST_STRING element size is CHAR_TYPE_SIZE bits.
      	(simplify_count_trailing_zeroes): Add test to handle known non-zero
      	inputs more efficiently.
      
          testsuite/
      	PR tree-optimization/93231
      	* gcc.dg/pr90838.c: New test.
      	* gcc.dg/pr93231.c: New test.
      	* gcc.target/aarch64/pr90838.c: Use #define u 0.
      Wilco Dijkstra committed
    • libstdc++: Fix weakly_incrementable to allow __int128 (PR 93267) · 2a0f6c61
      The __iota_diff_t alias can be the type __int128, but that does not
      satisfy the signed_integral and __is_signed_integer_like concepts when
      __STRICT_ANSI__ is defined (which is true for -std=c++2a).
      
      Because weakly_incrementable is defined in terms of signed_integral, it
      is not satisfied by __int128, which means iota_view's iterator doesn't
      always satisfy input_or_output_iterator and so iota_view is not always a
      range.
      
      The solution is to define __max_size_type and __max_diff_type using
      __int128, so that __is_signed_integer_like allows __int128, and then
      make weakly_incrementable use __is_signed_integer_like instead of
      signed_integral.
      
      	PR libstdc++/93267
      	* include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
      	Move here from <bits/range_access.h> and define using __int128 when
      	available.
      	(__is_integer_like, __is_signed_integer_like): Move here from
      	<bits/range_access.h>.
      	(weakly_incrementable): Use __is_signed_integer_like.
      	* include/bits/range_access.h (__max_diff_type, __max_size_type)
      	(__is_integer_like, __is_signed_integer_like): Move to
      	<bits/iterator_concepts.h>.
      	(__make_unsigned_like_t): Move here from <ranges>.
      	* include/std/ranges (__make_unsigned_like_t): Move to
      	<bits/range_access.h>.
      	(iota_view): Replace using-directive with using-declarations.
      	* testsuite/std/ranges/iota/93267.cc: New test.
      	* testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
      Jonathan Wakely committed
    • Remove invalid SSE2 ISA requirements in *movsf_internal. · ea1966e8
      	* config/i386/i386.md (*movsf_internal): Do not require
      	SSE2 ISA for alternatives 14 and 15.
      Uros Bizjak committed
    • [PR90916] Fix typo · 1918e70d
      Nathan Sidwell committed
    • middle-end/93273 - fix sinking clobbers across backedges · 37e27de4
      The previous work to fix PR93199 didn't take into account backedges
      when defering insertion.  The following simply avoids to defer in that
      case since we know we'll not take secondary opportunities there.
      
      2020-01-15  Richard Biener  <rguenther@suse.de>
      
              PR middle-end/93273
              * tree-eh.c (sink_clobbers): If we already visited the destination
              block do not defer insertion.
              (pass_lower_eh_dispatch::execute): Maintain BB_VISITED for
              the purpose of defered insertion.
      
      	* g++.dg/torture/pr93273.C: New testcase.
      Richard Biener committed
    • Bump gcc/BASE-VER to 10.0.1 now that we are in stage4. · a52d9321
      2020-01-15  Jakub Jelinek  <jakub@redhat.com>
      
      	* BASE-VER: Bump to 10.0.1.
      Jakub Jelinek committed
    • PR tree-optimization/93247 - ICE in get_load_store_type · 711421af
      My earlier update_epilogue_loop_vinfo patch introduced an ICE on these
      tests for AVX512.  If we use pattern stmts, STMT_VINFO_GATHER_SCATTER_P
      is valid for both the original stmt and the pattern stmt, but
      STMT_VINFO_MEMORY_ACCESS_TYPE is valid only for the latter.
      
      2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/93247
      	* tree-vect-loop.c (update_epilogue_loop_vinfo): Check the access
      	type of the stmt that we're going to vectorize.
      
      gcc/testsuite/
      	PR tree-optimization/93247
      	* gcc.dg/vect/pr93247-1.c: New test.
      	* gcc.dg/vect/pr93247-2.c: Likewise.
      Richard Sandiford committed
    • Fix type mismatch in SLPed constructors · 86c3a7d8
      Having the "same" vector types with different modes means that we can
      end up vectorising a constructor with a different mode from the lhs.
      This patch adds a VIEW_CONVERT_EXPR in that case.
      
      This showed up on existing tests when testing with fixed-length
      -msve-vector-bits=128.
      
      2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-slp.c (vectorize_slp_instance_root_stmt): Use a
      	VIEW_CONVERT_EXPR if the vectorized constructor has a diffeent
      	type from the lhs.
      Richard Sandiford committed
    • Add *.md diff=md. · affb7b66
      2020-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
      	    Jakub Jelinek  <jakub@redhat.com>
      
      	* .gitattributes: Add *.md diff=md.
      contrib/
      	* gcc-git-customization.sh: Change uses to use in comment.
      Jakub Jelinek committed
    • Do not call streamer_read_hwi in a function call. · 84a3effa
      	* ipa-profile.c (ipa_profile_read_edge_summary): Do not allow
      	2 calls of streamer_read_hwi in a function call.
      Martin Liska committed
    • contrib: Don't add push rules for personal and vendor spaces. · e6107422
      Originally, it seemed like a good idea to add automatic 'push' rules
      to the git configuration, so that personal- and vendor-space commits
      would automatically push to the right place.  Unfortunately, this
      changes git's behaviour and with these settings "git push" will try to
      push all branches in a local tree up to the corresponding location on
      the server (ignoring the push.default setting).  The only known
      mitigation for this is to ALWAYS use "git push <server> <branch>".
      
      So instead, we no-longer add those rules by default and will document
      the options on the wiki.  We don't automatically remove the push
      entries but do print out the command that will do so, if the user so
      wishes.
      
      	* gcc-git-customization.sh: Explain why we want the user's
      	upstream account name.  Don't add push rules.  Check if push rules
      	have been added and suggest that they should be removed.
      	* git-fetch-vendor.sh: Don't add push rules.
      Richard Earnshaw committed
    • gcc/testsuite/ChangeLog: · 8817bd75
      	* gcc.dg/Wstringop-overflow-17.c: Tweak test to avoid unrelated
      	failures due the absence of loop unrolling.
      Martin Sebor committed
    • Optimize alias subset recording · 6c577667
      When an alias-set is an already existing subset there is no need
      to re-record its children as childs of the parent.
      
      2020-01-15  Richard Biener  <rguenther@suse.de>
      
      	* alias.c (record_alias_subset): Avoid redundant work when
      	subset is already recorded.
      Richard Biener committed
    • Fix setting of DECL_CONTEXT in pushdecl (PR c/93072). · e2346a33
      Bug 93072 is a case where the C front end (a) wrongly interprets an
      inline declaration at block scope as indicating that DECL_CONTEXT
      should be set for an inline function and (b) this results in an ICE.
      This is a regression resulting from a previous fix of mine for other
      bugs involving such declarations being wrongly interpreted elsewhere
      as nested function declarations.  The fix is similar to the previous
      fix: use TREE_PUBLIC instead of DECL_EXTERNAL in another place as the
      relevant test to determine whether to set DECL_CONTEXT.  (When a
      variable reaches the code in question in pushdecl, the two are
      equivalent.)
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      	PR c/93072
      gcc/c:
      	* c-decl.c (pushdecl): Use TREE_PUBLIC, not DECL_EXTERNAL, to
      	determine whether to set DECL_CONTEXT.
      
      gcc/testsuite:
      	* gcc.dg/inline-42.c, gcc.dg/inline-43.c: New tests.
      Joseph Myers committed
    • invoke.texi: update -fdiagnostics-show-cwe for analyzer · ab7c7b46
      gcc/ChangeLog:
      	* doc/invoke.texi (-fdiagnostics-show-cwe): Add note that some of
      	the analyzer options provide CWE identifiers.
      David Malcolm committed
    • analyzer: fix ICE on METHOD_TYPE (PR 93212) · 32077b69
      PR analyzer/93212 reports an ICE when attempting to use -fanalyzer
      on a C++ source file.  That isn't supported yet, but the fix is
      trivial (handling METHOD_TYPE as well as FUNCTION_TYPE).
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/93212
      	* region-model.cc (make_region_for_type): Use
      	FUNC_OR_METHOD_TYPE_P rather than comparing against FUNCTION_TYPE.
      	* region-model.h (function_region::function_region): Likewise.
      David Malcolm committed
    • analyzer: fix global-sm-state issue affecting sm-signal · 7fb3669e
      sm-signal.cc was failing to warn about the use of an fprintf call in a
      signal handler when the signal handler function was non-static.
      
      The root cause was a failure to copy global sm-state within
      sm_state_map::clone_with_remapping as called by
      program_state::can_merge_with_p, which led to the exploded node for
      the entrypoint to the handler in the "normal" state being erroneously
      reused for the "in_signal_handler" state, thus losing the global state,
      and thus failing to warn.
      
      This patch fixes the above, so that non-equal global sm-state values
      prevent merger of program_state, thus requiring separate exploded nodes
      for the "normal" and "in signal handler" states, and thus triggering
      the warning for the reproducer.
      
      gcc/analyzer/ChangeLog:
      	* program-state.cc (sm_state_map::clone_with_remapping): Copy
      	m_global_state.
      	(selftest::test_program_state_merging_2): New selftest.
      	(selftest::analyzer_program_state_cc_tests): Call it.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/analyzer/signal-6.c: New test.
      David Malcolm committed
    • analyzer: cleanups to checker_path · e2a538b1
      This patch adds DISABLE_COPY_AND_ASSIGN to checker_path, and makes its
      fields private.
      
      gcc/analyzer/ChangeLog:
      	* checker-path.h (checker_path::get_checker_event): New function.
      	(checker_path): Add DISABLE_COPY_AND_ASSIGN; make fields private.
      	* diagnostic-manager.cc
      	(diagnostic_manager::prune_for_sm_diagnostic): Replace direct
      	access to checker_path::m_events with accessor functions.  Fix
      	overlong line.
      	(diagnostic_manager::prune_interproc_events): Replace direct
      	access to checker_path::m_events with accessor functions.
      	(diagnostic_manager::finish_pruning): Likewise.
      David Malcolm committed
    • analyzer: delete checker_event::clone · 94946989
      checker_event has a clone vfunc implemented by all the concrete
      subclasses, but this is never used (a holdover from a very early
      implementation).  This patch deletes it.
      
      gcc/analyzer/ChangeLog:
      	* checker-path.h (checker_event::clone): Delete vfunc decl.
      	(debug_event::clone): Delete vfunc impl.
      	(custom_event::clone): Delete vfunc impl.
      	(statement_event::clone): Delete vfunc impl.
      	(function_entry_event::clone): Delete vfunc impl.
      	(state_change_event::clone): Delete vfunc impl.
      	(start_cfg_edge_event::clone): Delete vfunc impl.
      	(end_cfg_edge_event::clone): Delete vfunc impl.
      	(call_event::clone): Delete vfunc impl.
      	(return_event::clone): Delete vfunc impl.
      	(setjmp_event::clone): Delete vfunc impl.
      	(rewind_from_longjmp_event::clone): Delete vfunc impl.
      	(rewind_to_setjmp_event::clone): Delete vfunc impl.
      	(warning_event::clone): Delete vfunc impl.
      David Malcolm committed