1. 06 Nov, 2019 18 commits
    • Fix parser to recognize operator?: · 6394a341
      This change lets grok_op_properties print its useful "ISO C++ prohibits
      overloading operator ?:" message instead of the cryptic error message about
      a missing type-specifier before '?' token.
      
      2019-11-06  Matthias Kretz  <m.kretz@gsi.de>
      
      	* parser.c (cp_parser_operator): Parse operator?: as an
      	attempt to overload the conditional operator.
      
      From-SVN: r277887
      Matthias Kretz committed
    • Don't vectorise single-iteration epilogues · 4b205bf8
      With a later patch I saw a case in which we peeled a single iteration
      for gaps but didn't need to peel further iterations to make up a full
      vector.  We then tried to vectorise the single-iteration epilogue.
      
      2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vect_analyze_loop): Only try to vectorize
      	the epilogue if there are peeled iterations for it to handle.
      
      From-SVN: r277886
      Richard Sandiford committed
    • [ARC] Don't split ior/mov predicated insns. · 4653da0b
      Do not split long immediate constants for predicated instructions.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.c (arc_split_ior): Add asserts.
      	(arc_split_mov_const): Likewise.
      	(arc_check_ior_const): Do not match known short immediate values.
      	* config/arc/arc.md (movsi): Don't split predicated instructions.
      	(iorsi): Likewise.
      
      testsuite/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      	Sahahb Vahedi  <shahab@synopsys.com>
      	Cupertino Miranda  <cmiranda@synopsys.com>
      
      	* gcc.target/arc/or-cnst-size2.c: New test.
      
      Co-Authored-By: Sahahb Vahedi <shahab@synopsys.com>
      
      From-SVN: r277885
      Claudiu Zissulescu committed
    • [ARC] Update mea option documentation · 4d932965
      Update -mea option documentation.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.opt (mea): Update help string.
      	* doc/invoke.texi(ARC): Update mea option info.
      
      From-SVN: r277884
      Claudiu Zissulescu committed
    • [ARC] Cleanup sign/zero extend patterns · cca18f3b
      Clean up sign/zero extend patterns.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.md (zero_extendqihi2_i): Cleanup pattern.
      	(zero_extendqisi2_ac): Likewise.
      	(zero_extendhisi2_i): Likewise.
      	(extendqihi2_i): Likewise.
      	(extendqisi2_ac): Likewise.
      	(extendhisi2_i): Likewise.
      
      From-SVN: r277883
      Claudiu Zissulescu committed
    • tree-vect-loop.c (vectorizable_reduction): Remember reduction PHI. · 06af1f1a
      2019-11-06  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-loop.c (vectorizable_reduction): Remember reduction
      	PHI.  Use STMT_VINFO_REDUC_IDX to skip the reduction operand.
      	Simplify single_defuse_cycle condition.
      
      From-SVN: r277882
      Richard Biener committed
    • Use scan-tree-dump instead of scan-tree-dump-times for some vect tests · feba3d88
      With later patches, we're able to vectorise the epilogues of these tests
      on AArch64 and so get two instances of "vectorizing stmts using SLP".
      Although it would be possible with a bit of effort to predict when
      this happens, it doesn't seem important whether we get 1 vs. 2
      occurrences.  All that matters is zero vs. nonzero.
      
      2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* gcc.dg/vect/slp-9.c: Use scan-tree-dump rather than
      	scan-tree-dump-times.
      	* gcc.dg/vect/slp-widen-mult-s16.c: Likewise.
      	* gcc.dg/vect/slp-widen-mult-u8.c: Likewise.
      
      From-SVN: r277881
      Richard Sandiford committed
    • Check the VF is small enough for an epilogue loop · 8ec5b16a
      The number of iterations of an epilogue loop is always smaller than the
      VF of the main loop.  vect_analyze_loop_costing was taking this into
      account when deciding whether the loop is cheap enough to vectorise,
      but that has no effect with the unlimited cost model.  We need to use
      a separate check for correctness as well.
      
      This can happen if the sizes returned by autovectorize_vector_sizes
      happen to be out of order, e.g. because the target prefers smaller
      vectors.  It can also happen with later patches if two vectorisation
      attempts happen to end up with the same VF.
      
      2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vect_analyze_loop_2): When vectorizing an
      	epilogue loop, make sure that the VF is small enough or that
      	the epilogue loop can be fully-masked.
      
      From-SVN: r277880
      Richard Sandiford committed
    • Restructure vect_analyze_loop · 72d6aeec
      Once vect_analyze_loop has found a valid loop_vec_info X, we carry
      on searching for alternatives if (1) X doesn't satisfy simdlen or
      (2) we want to vectorize the epilogue of X.  I have a patch that
      optionally adds a third reason: we want to see if there are cheaper
      alternatives to X.
      
      This patch restructures vect_analyze_loop so that it's easier
      to add more reasons for continuing.  There's supposed to be no
      behavioural change.
      
      If we wanted to, we could allow vectorisation of epilogues once
      loop->simdlen has been reached by changing "loop->simdlen" to
      "simdlen" in the new vect_epilogues condition.  That should be
      a separate change though.
      
      2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vect_analyze_loop): Break out of the main
      	loop when we've finished, rather than returning directly from
      	the loop.  Use a local variable to track whether we're still
      	searching for the preferred simdlen.  Make vect_epilogues
      	record whether the next iteration should try to treat the
      	loop as an epilogue.
      
      From-SVN: r277879
      Richard Sandiford committed
    • [PATCH] [ARC] Add builtins for identifying floating point support · 756b23a8
      Currently for hard float we need to check for
       __ARC_FPU_SP__ || __ARC_FPU_DP__ and for soft float inverse of that.
      So define single convenience macros for either cases.
      
      gcc/
      xxxx-xx-xx  Vineet Gupta  <vgupta@synopsyscom>
      
      	* config/arc/arc-c.c (arc_cpu_cpp_builtins): Add
                __arc_hard_float__, __ARC_HARD_FLOAT__,
                __arc_soft_float__, __ARC_SOFT_FLOAT__
      
      From-SVN: r277878
      Vineet Gupta committed
    • [vect] PR92317: fix skip_epilogue creation for epilogues · 2e7a4f57
      gcc/ChangeLog:
      2019-11-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	PR tree-optimization/92317
      	* tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard2): Also
      	update phi's with constant phi arguments.
      
      gcc/testsuite/ChangeLog:
      2019-11-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	PR tree-optimization/92317
      	* gcc/testsuite/g++.dg/opt/pr92317.C: New test.
      
      From-SVN: r277877
      Andre Vieira committed
    • introduce -fcallgraph-info option · 3cf3da88
      This was first submitted many years ago
      https://gcc.gnu.org/ml/gcc-patches/2010-10/msg02468.html
      
      The command line option -fcallgraph-info is added and makes the
      compiler generate another output file (xxx.ci) for each compilation
      unit (or LTO partitoin), which is a valid VCG file (you can launch
      your favorite VCG viewer on it unmodified) and contains the "final"
      callgraph of the unit.  "final" is a bit of a misnomer as this is
      actually the callgraph at RTL expansion time, but since most
      high-level optimizations are done at the Tree level and RTL doesn't
      usually fiddle with calls, it's final in almost all cases.  Moreover,
      the nodes can be decorated with additional info: -fcallgraph-info=su
      adds stack usage info and -fcallgraph-info=da dynamic allocation info.
      
      
      for  gcc/ChangeLog
      From  Eric Botcazou  <ebotcazou@adacore.com>, Alexandre Oliva  <oliva@adacore.com>
      
      	* common.opt (-fcallgraph-info[=]): New option.
      	* doc/invoke.texi (Developer options): Document it.
      	* opts.c (common_handle_option): Handle it.
      	* builtins.c (expand_builtin_alloca): Record allocation if
      	-fcallgraph-info=da.
      	* calls.c (expand_call): If -fcallgraph-info, record the call.
      	(emit_library_call_value_1): Likewise.
      	* flag-types.h (enum callgraph_info_type): New type.
      	* explow.c: Include stringpool.h.
      	(set_stack_check_libfunc): Set SET_SYMBOL_REF_DECL on the symbol.
      	* function.c (allocate_stack_usage_info): New.
      	(allocate_struct_function): Call it for -fcallgraph-info.
      	(prepare_function_start): Call it otherwise.
      	(record_final_call, record_dynamic_alloc): New.
      	* function.h (struct callinfo_callee): New.
      	(CALLEE_FROM_CGRAPH_P): New.
      	(struct callinfo_dalloc): New.
      	(struct stack_usage): Add callees and dallocs.
      	(record_final_call, record_dynamic_alloc): Declare.
      	* gimplify.c (gimplify_decl_expr): Record dynamically-allocated
      	object if -fcallgraph-info=da.
      	* optabs-libfuncs.c (build_libfunc_function): Keep SYMBOL_REF_DECL.
      	* print-tree.h (print_decl_identifier): Declare.
      	(PRINT_DECL_ORIGIN, PRINT_DECL_NAME, PRINT_DECL_UNIQUE_NAME): New.
      	* print-tree.c: Include print-tree.h.
      	(print_decl_identifier): New function.
      	* toplev.c: Include print-tree.h.
      	(callgraph_info_file): New global variable.
      	(callgraph_info_external_printed): Likewise.
      	(output_stack_usage): Rename to...
      	(output_stack_usage_1): ... this.  Make it static, add cf
      	parameter.  If -fcallgraph-info=su, print stack usage to cf.
      	If -fstack-usage, use print_decl_identifier for
      	pretty-printing.
      	(INDIRECT_CALL_NAME): New.
      	(dump_final_node_vcg_start): New.
      	(dump_final_callee_vcg, dump_final_node_vcg): New.
      	(output_stack_usage): New.
      	(lang_dependent_init): Open and start file if
      	-fcallgraph-info.  Allocated callgraph_info_external_printed.
      	(finalize): If callgraph_info_file is not null, finish it,
      	close it, and release callgraph_info_external_printed.
      
      for  gcc/ada/ChangeLog
      
      	* gcc-interface/misc.c (callgraph_info_file): Delete.
      
      Co-Authored-By: Alexandre Oliva <oliva@adacore.com>
      
      From-SVN: r277876
      Eric Botcazou committed
    • Warn about inconsistent OpenACC nested reduction clauses · 5d183d17
      	OpenACC (cf. OpenACC 2.7, section 2.9.11. "reduction clause";
      	this was first clarified by OpenACC 2.6) requires that, if a
      	variable is used in reduction clauses on two nested loops, then
      	there must be reduction clauses for that variable on all loops
      	that are nested in between the two loops and all these reduction
      	clauses must use the same operator.
      	This commit introduces a check for that property which reports
      	warnings if it is violated.
      
      	2019-11-06  Gergö Barany  <gergo@codesourcery.com>
      	            Frederik Harwath  <frederik@codesourcery.com>
      	            Thomas Schwinge  <thomas@codesourcery.com>
      
      	gcc/
      	* omp-low.c (struct omp_context): New fields
      	local_reduction_clauses, outer_reduction_clauses.
      	(new_omp_context): Initialize these.
      	(scan_sharing_clauses): Record reduction clauses on OpenACC constructs.
      	(scan_omp_for): Check reduction clauses for incorrect nesting.
      	gcc/testsuite/
      	* c-c++-common/goacc/nested-reductions-warn.c: New test.
      	* c-c++-common/goacc/nested-reductions.c: New test.
      	* gfortran.dg/goacc/nested-reductions-warn.f90: New test.
      	* gfortran.dg/goacc/nested-reductions.f90: New test.
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c:
      	Add expected warnings about missing reduction clauses.
      	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c:
      	Likewise.
      
      	Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      
      From-SVN: r277875
      Frederik Harwath committed
    • re PR inline-asm/92352 (ICE in force_constant_size) · 5f6705b7
      	PR inline-asm/92352
      	* gimplify.c (gimplify_asm_expr): Reject VLA in output or input
      	operands with non-memory constraints.
      
      	* c-c++-common/pr92352.c: New test.
      
      From-SVN: r277873
      Jakub Jelinek committed
    • PR92090: Fix part of testcase failures by r276469 · 8adf3cc4
      -finline-functions is enabled by default for O2 since r276469, update the
      test cases with -fno-inline-functions.
      c11-atomic-exec-5.c stills hit ICE of LRA on BE systems in PR92090.
      This commit is NOT a fix for the bug and so it must NOT be closed.
      
      gcc/testsuite/ChangeLog:
      
      	2019-11-06  Xiong Hu Luo  <luoxhu@linux.ibm.com>
      
      	PR92090
      	* gcc.target/powerpc/pr72804.c: Add -fno-inline-functions --param
      	max-inline-insns-single-O2=200.
      	* gcc.target/powerpc/pr79439-1.c: Add -fno-inline-functions.
      	* gcc.target/powerpc/vsx-builtin-7.c: Likewise.
      
      From-SVN: r277872
      Xiong Hu Luo committed
    • PR tree-optimization/92373 - ICE in -Warray-bounds on access to member array in… · 91eb5fa8
      PR tree-optimization/92373 - ICE in -Warray-bounds on access to member array in an initialized char buffer
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/92373
      	* gcc.dg/Warray-bounds-55.c: New test.
      	* gcc.dg/Wzero-length-array-bounds-2.c: New test.
      
      gcc/ChangeLog:
      
      	PR tree-optimization/92373
      	* tree.c (component_ref_size): Only consider initializers of objects
      	of matching struct types.
      	Return null for instances of interior zero-length arrays.
      
      From-SVN: r277871
      Martin Sebor committed
    • Daily bump. · eebabc49
      From-SVN: r277870
      GCC Administrator committed
    • doc: Insn splitting by combine · 8cb0906b
      The combine pass is perfectly happy if a splitter splits to just one
      instruction (instead of two).
      
      
      	* doc/md.texi (Insn Splitting): Fix combiner documentation.
      
      From-SVN: r277866
      Segher Boessenkool committed
  2. 05 Nov, 2019 22 commits
    • Implement C++20 operator<=>. · b7689b96
      There are three major pieces to this support: scalar operator<=>,
      synthesis of comparison operators, and rewritten/reversed overload
      resolution (e.g. a < b becomes 0 > b <=> a).
      
      Unlike other defaulted functions, where we use synthesized_method_walk to
      semi-simulate what the definition of the function will be like, this patch
      determines the characteristics of a comparison operator by trying to define
      it.
      
      My handling of non-dependent rewritten operators in templates can still use
      some work: build_min_non_dep_op_overload can't understand the rewrites and
      crashes, so I'm avoiding it for now by clearing *overload.  This means we'll
      do name lookup again at instantiation time, which can incorrectly mean a
      different result.  I'll poke at this more in stage 3.
      
      I'm leaving out a fourth section ("strong structural equality") even though
      I've implemented it, because it seems likely to change radically tomorrow.
      
      Thanks to Tim van Deurzen and Jakub for implementing lexing of the <=>
      operator, and Jonathan for the initial <compare> header.
      
      gcc/cp/
      	* cp-tree.h (struct lang_decl_fn): Add maybe_deleted bitfield.
      	(DECL_MAYBE_DELETED): New.
      	(enum special_function_kind): Add sfk_comparison.
      	(LOOKUP_REWRITTEN, LOOKUP_REVERSED): New.
      	* call.c (struct z_candidate): Add rewritten and reversed methods.
      	(add_builtin_candidate): Handle SPACESHIP_EXPR.
      	(add_builtin_candidates): Likewise.
      	(add_candidates): Don't add a reversed candidate if the parms are
      	the same.
      	(add_operator_candidates): Split out from build_new_op_1.  Handle
      	rewritten and reversed candidates.
      	(add_candidate): Swap conversions of reversed candidate.
      	(build_new_op_1): Swap them back.  Build a second operation for
      	rewritten candidates.
      	(extract_call_expr): Handle rewritten calls.
      	(same_fn_or_template): New.
      	(joust): Handle rewritten and reversed candidates.
      	* class.c (add_implicitly_declared_members): Add implicit op==.
      	(classtype_has_op, classtype_has_defaulted_op): New.
      	* constexpr.c (cxx_eval_binary_expression): Handle SPACESHIP_EXPR.
      	(cxx_eval_constant_expression, potential_constant_expression_1):
      	Likewise.
      	* cp-gimplify.c (genericize_spaceship): New.
      	(cp_genericize_r): Use it.
      	* cp-objcp-common.c (cp_common_init_ts): Handle SPACESHIP_EXPR.
      	* decl.c (finish_function): Handle deleted function.
      	* decl2.c (grokfield): SET_DECL_FRIEND_CONTEXT on defaulted friend.
      	(mark_used): Check DECL_MAYBE_DELETED.  Remove assumption that
      	defaulted functions are non-static members.
      	* error.c (dump_expr): Handle SPACESHIP_EXPR.
      	* method.c (type_has_trivial_fn): False for sfk_comparison.
      	(enum comp_cat_tag, struct comp_cat_info_t): New types.
      	(comp_cat_cache): New array variable.
      	(lookup_comparison_result, lookup_comparison_category)
      	(is_cat, cat_tag_for, spaceship_comp_cat)
      	(spaceship_type, genericize_spaceship)
      	(common_comparison_type, early_check_defaulted_comparison)
      	(comp_info, build_comparison_op): New.
      	(synthesize_method): Handle sfk_comparison.  Handle deleted.
      	(get_defaulted_eh_spec, maybe_explain_implicit_delete)
      	(explain_implicit_non_constexpr, implicitly_declare_fn)
      	(defaulted_late_check, defaultable_fn_check): Handle sfk_comparison.
      	* name-lookup.c (get_std_name_hint): Add comparison categories.
      	* tree.c (special_function_p): Add sfk_comparison.
      	* typeck.c (cp_build_binary_op): Handle SPACESHIP_EXPR.
      
      2019-11-05  Tim van Deurzen  <tim@kompiler.org>
      
      	Add new tree code for the spaceship operator.
      gcc/cp/
      	* cp-tree.def: Add new tree code.
      	* operators.def: New binary operator.
      	* parser.c: Add new token and tree code.
      libcpp/
      	* cpplib.h: Add spaceship operator for C++.
      	* lex.c: Implement conditional lexing of spaceship operator for C++20.
      
      2019-11-05  Jonathan Wakely  <jwakely@redhat.com>
      
      libstdc++-v3/
      	* libsupc++/compare: New header.
      	* libsupc++/Makefile.am (std_HEADERS): Add compare.
      	* include/std/version: Define __cpp_lib_three_way_comparison.
      	* include/std/functional: #include <compare>.
      
      From-SVN: r277865
      Jason Merrill committed
    • Fix conversions for built-in operator overloading candidates. · b63566a4
      While working on C++20 operator<=>, I noticed that build_new_op_1 was doing
      too much conversion when a built-in candidate was selected; the standard
      says it should only perform user-defined conversions, and then leave the
      normal operator semantics to handle any standard conversions.  This is
      important for operator<=> because a comparison of two different unscoped
      enums is ill-formed; if we promote the enums to int here, cp_build_binary_op
      never gets to see the original operand types, so we can't give the error.
      
      I'm also disabling -Wmaybe-uninitialized for expmed.c to avoid the bootstrap
      failure from the last time I applied this patch.
      
      	* call.c (build_new_op_1): Don't apply any standard conversions to
      	the operands of a built-in operator.  Don't suppress conversions in
      	cp_build_unary_op.
      	* typeck.c (cp_build_unary_op): Do integral promotions for enums.
      
      	PR tree-optimization/91825
      	* expmed.c: Reduce -Wmaybe-uninitialized to warning.
      
      From-SVN: r277864
      Jason Merrill committed
    • Use vec instead of raw array for built-in candidates. · 6fda5f49
      My operator<=> patch wants to split up build_new_op_1, which makes using a
      tree array as well as the vec inconvenient.  build_new_op_1 already has a
      vec, and build_conditional_expr_1 can release its vec right away, so this
      doesn't increase garbage at all.
      
      	* call.c (build_builtin_candidate): Take args in a vec.
      	(add_builtin_candidate, add_builtin_candidates): Likewise.
      	(build_conditional_expr_1, build_new_op_1): Adjust.
      
      From-SVN: r277863
      Jason Merrill committed
    • Various small C++ changes. · f22f817c
      Wrappers for lookup_qualified_name and build_x_binary_op to make calling
      them more convenient in places, and a function named contextual_conv_bool
      for places that want contextual conversion to bool.
      
      I noticed that we weren't showing the declaration location when we complain
      about a call to a non-constexpr function where a constant expression is
      required.
      
      If maybe_instantiate_noexcept doesn't actually instantiate, there's no
      reason for it to mess with clones.
      
      	* constexpr.c (explain_invalid_constexpr_fn): Show location of fn.
      
      	* pt.c (maybe_instantiate_noexcept): Only update clones if we
      	instantiated.
      
      	* typeck.c (contextual_conv_bool): New.
      
      	* name-lookup.c (lookup_qualified_name): Add wrapper overload taking
      	C string rather than identifier.
      	* parser.c (cp_parser_userdef_numeric_literal): Use it.
      	* rtti.c (emit_support_tinfos): Use it.
      	* cp-tree.h (ovl_op_identifier): Change to inline functions.
      	(build_x_binary_op): Add wrapper with fewer parms.
      
      From-SVN: r277862
      Jason Merrill committed
    • Allow libcalls for complex memcpy when optimizing for size. · a81ffd93
      The RISC-V backend wants to use a libcall when optimizing for size if
      more than 6 instructions are needed.  Emit_move_complex asks for no
      libcalls.  This case requires 8 insns for rv64 and 16 insns for rv32,
      so we get fallback code that emits a loop.  Commit_one_edge_insertion
      doesn't allow code inserted for a phi node on an edge to end with a
      branch, and so this triggers an assertion.  This problem goes away if
      we allow libcalls when optimizing for size, which gives the code the
      RISC-V backend wants, and avoids triggering the assert.
      
      	gcc/
      	PR middle-end/92263
      	* expr.c (emit_move_complex): Only use BLOCK_OP_NO_LIBCALL when
      	optimize_insn_for_speed_p is true.
      
      	gcc/testsuite/
      	PR middle-end/92263
      	* gcc.dg/pr92263.c: New.
      
      From-SVN: r277861
      Jim Wilson committed
    • Catch missed uses of function with unsatisfied constraints. · 8aa76bb7
      While looking at CA378 I noticed that we weren't properly diagnosing two of
      the three erroneous lines in the example.
      
      	* decl2.c (mark_used): Diagnose use of a function with unsatisfied
      	constraints here.
      	* typeck.c (cp_build_function_call_vec): Not here.
      
      From-SVN: r277860
      Jason Merrill committed
    • Make -fconcepts-ts imply -fconcepts. · 0df65305
      	* c-opts.c (c_common_post_options): -fconcepts-ts implies
      	-fconcepts.
      
      From-SVN: r277859
      Jason Merrill committed
    • PR middle-end/92333 - missing variable name referencing VLA in warnings · 8299dfae
      PR middle-end/92333 - missing variable name referencing VLA in warnings
      PR middle-end/82608 - missing -Warray-bounds on an out-of-bounds VLA index
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/92333
      	PR middle-end/82608
      	* gcc.dg/Warray-bounds-51.c: New test.
      
      gcc/ChangeLog:
      
      	PR middle-end/92333
      	PR middle-end/82608
      	* tree-vrp.c (vrp_prop::check_array_ref): Handle VLAs with constant
      	size.
      	* tree-ssa-ccp.c (fold_builtin_alloca_with_align): Use a meaninful
      	name and location for a temporary variable.
      
      From-SVN: r277854
      Martin Sebor committed
    • [PR c++/92370] ICE with VC marker · 3fd4f924
      https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00323.html
      	cp/
      	PR c++/92370
      	* parser.c (cp_parser_error_1): Check EOF and UNKNOWN_LOCATION
      	when skipping over version control marker.
      
      	testsuite/
      	PR c++/92370
      	* g++.dg/pr92370.C: New.
      
      From-SVN: r277853
      Nathan Sidwell committed
    • PR middle-end/92341 - missing -Warray-bounds indexing past the end of a compound literal · 361d4a9e
      PR middle-end/92341 - missing -Warray-bounds indexing past the end of a compound literal
      PR middle-end/82612 - missing -Warray-bounds on a non-zero offset from the address of a non-array object
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/92341
      	PR middle-end/82612
      	* g++.dg/warn/Warray-bounds-4.C: Adjust text of expected warning.
      	* gcc.dg/Warray-bounds-53.c: New test.
      	* gcc.dg/Warray-bounds-54.c: New test.
      
      gcc/ChangeLog:
      
      	PR middle-end/92341
      	PR middle-end/82612
      	* tree-sra.c (get_access_for_expr): Fail for out-of-bounds offsets.
      	* tree-vrp.c (vrp_prop::check_array_ref): Correct index and text
      	of message printed in a warning for empty arrays.
      	(vrp_prop::check_mem_ref): Also handle function parameters and
      	empty arrays.
      
      From-SVN: r277851
      Martin Sebor committed
    • re PR tree-optimization/92371 (ICE in info_for_reduction, at tree-vect-loop.c:4106) · 02bf7e6f
      2019-11-05  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92371
      	* tree-vect-loop.c (vectorizable_reduction): Set STMT_VINFO_REDUC_DEF
      	on the original stmt of live stmts in the chain.
      	(vectorizable_live_operation): Look at the original stmt when
      	checking STMT_VINFO_REDUC_DEF.
      
      	* gcc.dg/torture/pr92371.c: New testcase.
      
      From-SVN: r277850
      Richard Biener committed
    • Fix <version> header for freestanding · c6a7be9b
      	* include/std/version [!_GLIBCXX_HOSTED]: Do not define feature test
      	macros for features that are only present in hosted builds.
      
      From-SVN: r277849
      Jonathan Wakely committed
    • Remove incorrect comment · 6762b658
      The negative concept is required for subsumption to work, it's not a
      bug.
      
      	* include/bits/iterator_concepts.h (__iter_without_nested_types):
      	Remove incorrect comment.
      
      From-SVN: r277848
      Jonathan Wakely committed
    • The base class for ranges is currently value_range_base, which is rather long and cumbersome. · 028d81b1
      The base class for ranges is currently value_range_base, which is
      rather long and cumbersome.  It also occurs more often than the derived
      class of value_range.  To avoid confusion, and save typing, this
      patch does a global rename from value_range to value_range_equiv,
      and from value_range_base to value_range.
      
      This way, the base class is simply value_range, and the derived
      class is value_range_equiv which explicitly states what it does.
      
      From-SVN: r277847
      Aldy Hernandez committed
    • [mid-end] Fix declared type of personality functions · 3619076a
      
      `build_personality_function` generates a declaration for a personality
      function.  The type it declares for these functions doesn't match the
      type of the actual personality functions that are defined by the C++
      unwinding ABI.
      
      This doesn't cause any crashes since the compiler never generates a call
      to these decl's, and hence the type of the function is never used.
      Nonetheless, for the sake of consistency and readability we update the
      type of this declaration.
      
      gcc/ChangeLog:
      
      2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* expr.c (build_personality_function): Fix generated type to
      	match actual personality functions.
      
      From-SVN: r277846
      Matthew Malcomson committed
    • [aarch64] Allocate space for err_str in aarch64_handle_attr_branch_protection · 81e40f3a
      
      -fsanitize=hwaddress found a one-byte overwrite when running the
      testsuite here.  aarch64_handle_attr_branch_protection allocates
      `strlen(str)` bytes for an error string, which is populated by
      `strcpy(..., str)` in the case where the branch protection string is
      completely invalid.
      
      Not tested -- I don't want to re-build and it seems obvious.
      
      gcc/ChangeLog:
      
      2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* config/aarch64/aarch64.c (aarch64_handle_attr_cpu): Allocate
      	enough bytes for the NULL character.
      
      From-SVN: r277845
      Matthew Malcomson committed
    • Update LOCAL_PATCHES. · 4330d1c4
      From-SVN: r277839
      Martin Liska committed
    • Update scanned patterns in a test-case. · f2f48cae
      2019-11-05  Martin Liska  <mliska@suse.cz>
      
      	* c-c++-common/ubsan/ptr-overflow-2.c: Update based on changed
      	run-time reporting format.
      
      From-SVN: r277838
      Martin Liska committed
    • Set print_summary for UBSAN. · 1c48938e
      2019-11-05  Martin Liska  <mliska@suse.cz>
      
      	* ubsan/ubsan_flags.cpp (InitializeFlags): Trunk decided to print
      	summary for all sanitizers, but we want to have UBSAN without it.
      
      From-SVN: r277837
      Martin Liska committed
    • Reapply all revisions mentioned in LOCAL_PATCHES. · acd700fd
      2019-11-05  Martin Liska  <mliska@suse.cz>
      
      	* asan/asan_globals.cpp (CheckODRViolationViaIndicator): Reapply from
      	LOCAL_PATCHES.
      	(CheckODRViolationViaPoisoning): Likewise.
      	(RegisterGlobal): Likewise.
      	* asan/asan_interceptors.h (ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION): Likewise.
      	(defined): Likewise.
      	* asan/asan_mapping.h: Likewise.
      	* sanitizer_common/sanitizer_linux_libcdep.cpp (defined): Likewise.
      	* sanitizer_common/sanitizer_mac.cpp (defined): Likewise.
      	* sanitizer_common/sanitizer_platform_limits_linux.cpp (defined): Likewise.
      	* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
      	* sanitizer_common/sanitizer_stacktrace.cpp (GetCanonicFrame): Likewise.
      	* tsan/tsan_rtl_ppc64.S: Likewise.
      	* ubsan/ubsan_handlers.cpp (__ubsan::__ubsan_handle_cfi_bad_icall): Likewise.
      	(__ubsan::__ubsan_handle_cfi_bad_icall_abort): Likewise.
      	* ubsan/ubsan_handlers.h (struct CFIBadIcallData): Likewise.
      	(struct CFICheckFailData): Likewise.
      	(RECOVERABLE): Likewise.
      	* ubsan/ubsan_platform.h: Likewise.
      
      From-SVN: r277836
      Martin Liska committed
    • Update Makefile.am. · 617be04a
      2019-11-05  Martin Liska  <mliska@suse.cz>
      
      	* tsan/Makefile.am: Rename tsan_interceptors.cpp to
      	tsan_interceptors_posix.
      	* tsan/Makefile.in: Regenerate.
      
      From-SVN: r277835
      Martin Liska committed