1. 29 Nov, 2019 17 commits
    • tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Bail out early for too large objects. · fb08a53b
      2019-11-29  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Bail
      	out early for too large objects.
      
      From-SVN: r278844
      Richard Biener committed
    • Fortran] OpenACC – permit common blocks in some clauses · af814dfa
              * fortran.dg/goacc/common-block-3.f90: Check that unused common-block
              variables do not get mapped.
      
      Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      
      From-SVN: r278843
      Tobias Burnus committed
    • Add an x86_64 test for PR 92476 · e1b58033
      2019-11-29  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/92476
              * g++.dg/lto/pr92476_[01].C: New test.
      
      From-SVN: r278842
      Martin Jambor committed
    • ipa-cp: Avoid ICEs when looking at expanded thunks and unoptimized functions · 68188fff
      2019-11-29  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/92476
      	* ipa-cp.c (set_single_call_flag): Set node_calling_single_call in
      	the summary only if the summary exists.
      	(find_more_scalar_values_for_callers_subset): Check node_dead in
      	the summary only if the summary exists.
      	(ipcp_store_bits_results): Ignore nodes without lattices.
      	(ipcp_store_vr_results): Likewise.
      	* cgraphclones.c: Include ipa-fnsummary.h and ipa-prop.h and the
      	header files required by them.
      	(cgraph_node::expand_all_artificial_thunks): Analyze expanded thunks.
      
      From-SVN: r278841
      Martin Jambor committed
    • Don't pass booleans as mask types to simd clones (PR 92710) · 3edaed39
      In this PR we assigned a vector mask type to the result of a comparison
      and then tried to pass that mask type to a simd clone, which expected
      a normal (non-mask) type instead.
      
      This patch simply punts on call arguments that have a mask type.
      A better fix would be to pattern-match the comparison to a COND_EXPR,
      like we would if the comparison was stored to memory, but doing that
      isn't gcc 9 or 10 material.
      
      Note that this doesn't affect x86_64-linux-gnu because the ABI promotes
      bool arguments to ints.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/92710
      	* tree-vect-stmts.c (vectorizable_simd_clone_call): Reject
      	vector mask arguments.
      
      gcc/testsuite/
      	PR tree-optimization/92710
      	* gcc.dg/vect/pr92710.c: New test.
      
      From-SVN: r278839
      Richard Sandiford committed
    • gcc/testsuite/ChangeLog - fix date in date line · 337b04a4
      From-SVN: r278837
      Tobias Burnus committed
    • Fix testcase - was missing -fopenacc · 18279486
              PR ipa/84963
              * gfortran.dg/goacc/pr84963.f90: Use dg-additional-options not
              dg-options as otherwise -fopenacc is not used.
      
      From-SVN: r278836
      Tobias Burnus committed
    • profile-count.c (profile_count::to_cgraph_frequency, [...]): Check for compaibility of counts. · db51f624
      
      	* profile-count.c (profile_count::to_cgraph_frequency,
      	profile_count::to_sreal_scale): Check for compaibility of counts.
      	* profile-count.h (compatible_p): Make public; add checking for
      	global0 versus global types.
      	* cgraph.c (cgraph_node::verify_node): Verify count compatibility.
      
      From-SVN: r278835
      Jan Hubicka committed
    • Testsuite: Turn off vect-epilogue-nomask for slp-rect-3 · 60178a32
      Without epiloque no mask it would only try HI modes, but thanks to the
      epiloques nomask It tries QI mode as well which succeeds.  The xfail
      then generates an xpass since the condition on it checks for HI to SI
      and not QI.
      
      So I disabled the epiloque mask since it seems to violate the conditions
      the test actually wanted to test for.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/vect/slp-reduc-3.c: Turn off epilogue-nomask.
      
      From-SVN: r278834
      Tamar Christina committed
    • re PR tree-optimization/92715 (error: position plus size exceeds size of… · 438d9c4a
      re PR tree-optimization/92715 (error: position plus size exceeds size of referenced object in  ‘bit_field_ref’)
      
      2019-11-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92715
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Bail
      	out for uniform vectors and source vectors with less elements
      	than the destination.
      
      	* gcc.dg/torture/pr92715.c: New testcase.
      
      From-SVN: r278833
      Richard Biener committed
    • re PR c++/60228 (ICE using lambda in #pragma omp declare reduction) · 52702016
      	PR c++/60228
      	* parser.c (cp_parser_omp_declare_reduction_exprs): If
      	processing_template_decl, wrap the combiner or initializer
      	into EXPR_STMT.
      	* decl.c (start_preparsed_function): Don't start a lambda scope
      	for DECL_OMP_DECLARE_REDUCTION_P functions.
      	(finish_function): Don't finish a lambda scope for
      	DECL_OMP_DECLARE_REDUCTION_P functions, nor cp_fold_function
      	them nor cp_genericize them.
      	* mangle.c (decl_mangling_context): Look through
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      	* semantics.c (expand_or_defer_fn_1): For DECL_OMP_DECLARE_REDUCTION_P
      	functions, use tentative linkage, don't keep their bodies with
      	-fkeep-inline-functions and return false at the end.
      
      	* g++.dg/gomp/openmp-simd-2.C: Don't expect bodies for
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      
      	* testsuite/libgomp.c++/udr-20.C: New test.
      	* testsuite/libgomp.c++/udr-21.C: New test.
      
      From-SVN: r278832
      Jakub Jelinek committed
    • re PR c++/60228 (ICE using lambda in #pragma omp declare reduction) · b3f44388
      	PR c++/60228
      	* parser.c (cp_parser_omp_declare_reduction_exprs): If
      	processing_template_decl, wrap the combiner or initializer
      	into EXPR_STMT.
      	* decl.c (start_preparsed_function): Don't start a lambda scope
      	for DECL_OMP_DECLARE_REDUCTION_P functions.
      	(finish_function): Don't finish a lambda scope for
      	DECL_OMP_DECLARE_REDUCTION_P functions, nor cp_fold_function
      	them nor cp_genericize them.
      	* mangle.c (decl_mangling_context): Look through
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      	* semantics.c (expand_or_defer_fn_1): For DECL_OMP_DECLARE_REDUCTION_P
      	functions, use tentative linkage, don't keep their bodies with
      	-fkeep-inline-functions and return false at the end.
      
      	* g++.dg/gomp/openmp-simd-2.C: Don't expect bodies for
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      
      	* testsuite/libgomp.c++/udr-20.C: New test.
      	* testsuite/libgomp.c++/udr-21.C: New test.
      
      From-SVN: r278831
      Jakub Jelinek committed
    • Check for TYPE_NAME in type_with_linkage_p. · efeeda75
      2019-11-29  Martin Liska  <mliska@suse.cz>
      
      	PR lto/91574
      	* ipa-devirt.c (types_same_for_odr): Check for existence
      	of TYPE_NAMEs first.
      2019-11-29  Martin Liska  <mliska@suse.cz>
      
      	PR lto/91574
      	* g++.dg/lto/pr91574_0.C: New test.
      
      From-SVN: r278829
      Martin Liska committed
    • re PR tree-optimization/92704 (ICE: Segmentation fault (in process_bb)) · d5e82c9f
      2019-11-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92704
      	* tree-if-conv.c (combine_blocks): Deal with virtual PHIs
      	in loops performing only loads.
      
      	* gcc.dg/torture/pr92704.c: New testcase.
      
      From-SVN: r278828
      Richard Biener committed
    • Handle C2x attributes in Objective-C. · 34b43828
      When adding the initial support for C2x attributes, I deferred the
      unbounded lookahead support required to support such attributes in
      Objective-C (except for the changes to string literal handling, which
      were the riskier piece of preparation for such lookahead support).
      This patch adds that remaining ObjC support.
      
      For C, the parser continues to work exactly as it did before.  For
      ObjC, however, when checking for whether '[[' starts attributes, it
      lexes however many tokens are needed to check for a matching ']]', but
      in a raw mode that omits all the context-sensitive processing that
      c_lex_with_flags normally does, so that that processing can be done
      later when the right context-sensitive flags are set.  Those tokens
      are saved in a separate raw_tokens vector in the parser, and normal
      c_lex_one_token calls will get tokens from there and perform the
      remaining processing on them, if any tokens are found there, so all
      parsing not using the new interfaces gets the same tokens as it did
      before.  (For C, this raw lexing never occurs and the vector of raw
      tokens is always NULL.)
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc/c:
      	* c-parser.c (struct c_parser): Add members raw_tokens and
      	raw_tokens_used.
      	(c_lex_one_token): Add argument raw.  Handle lexing raw tokens and
      	using previously-lexed raw tokens.
      	(c_parser_peek_nth_token_raw)
      	(c_parser_check_balanced_raw_token_sequence): New functions.
      	(c_parser_nth_token_starts_std_attributes): Use
      	c_parser_check_balanced_raw_token_sequence for Objective-C.
      
      gcc/testsuite:
      	* objc.dg/attributes/gnu2x-attr-syntax-1.m: New test.
      
      From-SVN: r278827
      Joseph Myers committed
    • Remove unused decimal floating-point pointer types · 70ce1ab9
      	gcc/
      	* builtin-types.def (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR,
      	BT_DFLOAT128_PTR) Remove.
      	* tree-core.h (TI_DFLOAT32_PTR_TYPE, TI_DFLOAT64_PTR_TYPE,
      	TI_DFLOAT128_PTR_TYPE): Remove.
      	* tree.c (build_common_type_nodes): Remove dfloat32_ptr_type_node,
      	dfloat64_ptr_type_node and dfloat128_ptr_type_node initialisation.
      	* tree.h (dfloat32_ptr_type_node, dfloat64_ptr_type_node,
      	dfloat128_ptr_type_node): Remove macros.
      
      	gcc/jit/
      	* jit-builtins.c (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR, BT_DFLOAT128_PTR):
      	Remove commented-out cases.
      
      Reviewed-by: Joseph Myers <joseph@codesourcery.com>
      
      From-SVN: r278826
      Julian Brown committed
    • Daily bump. · 19f9ca88
      From-SVN: r278825
      GCC Administrator committed
  2. 28 Nov, 2019 23 commits
    • rs6000: Fix formatting of *mov{si,di}_internal.* · 3049ccbb
      
      	* config/rs6000/rs6000.md (*movsi_internal1): Fix formatting.  Improve
      	formatting.
      	(*movdi_internal64): Ditto.
      
      From-SVN: r278822
      Segher Boessenkool committed
    • rs6000: Use memory_operand for all simple {l,st}*brx instructions · 2538ff0d
      We run fwprop before combine, very early even in the case of fwprop1;
      and fwprop1 will change memory addressing to what it considers cheaper.
      After the "common" change, it now changes the indexed store instruction
      in the testcase to be to a constant address.  But that is not an
      improvement at all: the byte reverse instructions only exist in the
      indexed form, so they will not match anymore.
      
      This patch changes the patterns for the byte reverse instructions to
      allow plain memory_operand, letting reload fix this up.
      
      
      	PR target/92602
      	* config/rs6000/rs6000.md (bswap<mode>2_load for HSI): Change the
      	indexed_or_indirect_operand to be memory_operand.
      	(bswap<mode>2_store for HSI): Ditto.
      	(bswapdi2_load): Ditto.
      	(bswapdi2_store): Ditto.
      
      From-SVN: r278821
      Segher Boessenkool committed
    • Translate header for -fdbg-cnt-list. · 03df119d
      2019-11-28  Martin Liska  <mliska@suse.cz>
      
      	PR debug/46558
      	* dbgcnt.c (dbg_cnt_list_all_counters): Mark table
      	headers for translation.
      
      From-SVN: r278820
      Martin Liska committed
    • Properly use TYPE_MAIN_VARIANT in warn_types_mismatch. · 2fb2966c
      2019-11-28  Martin Liska  <mliska@suse.cz>
      
      	PR lto/92609
      	* ipa-devirt.c (warn_types_mismatch): Use TYPE_MAIN_VARIANT
      	consistently.
      2019-11-28  Martin Liska  <mliska@suse.cz>
      
      	PR lto/92609
      	* g++.dg/lto/pr92609_0.C: New test.
      	* g++.dg/lto/pr92609_1.C: New test.
      
      From-SVN: r278819
      Martin Liska committed
    • [Darwin, X86, testsuite] Update tests for common section use. · 3a95e31b
      The switch to default of no-common means that we no longer
      indirect the accesses to 'xxx' in this test.  Adjust the scan-
      assembler tests to reflect this.
      
      gcc/testsuite/ChangeLog:
      
      2019-11-28  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* gcc.target/i386/pr32219-2.c: Adjust scan-assembler entries
      	for revised common default.
      
      From-SVN: r278818
      Iain Sandoe committed
    • re PR libfortran/90374 (Fortran 2018: Support d0.d, e0.d, es0.d, en0.d, g0.d and… · 68c28e37
      re PR libfortran/90374 (Fortran 2018: Support d0.d, e0.d, es0.d, en0.d, g0.d and ew.d e0 edit descriptors for output)
      
      	PR fortran/90374
      	* io.c (check_format): Allow zero width expoenent with e0.
      
      	* io/format.c (parse_format_list): Relax format checking to allow
      	e0 exponent specifier.
      
      	* gfortran.dg/fmt_zero_width.f90: Update test.
      
      From-SVN: r278817
      Jerry DeLisle committed
    • Remove leftover optimize checks. · 9c28689a
      	* ipa-inline.c (want_early_inline_function_p): Remove leftover optimize
      	checks.
      
      From-SVN: r278816
      Jan Hubicka committed
    • profile-count.c (profile_count::combine_with_ipa_count): Return uninitialized… · b225a29b
      profile-count.c (profile_count::combine_with_ipa_count): Return uninitialized count if called on ininitialized count.
      
      	* profile-count.c (profile_count::combine_with_ipa_count): Return
      	uninitialized count if called on ininitialized count.
      
      From-SVN: r278815
      Jan Hubicka committed
    • Prevent inconsistent profiles to be created in inlin_transform · c3f1ae8a
      	* ipa-inline-transform.c (inline_transform): Scale profile before
      	redirecting.
      
      From-SVN: r278814
      Jan Hubicka committed
    • profile-count.h (profile_count::max): Work on profiles of different type. · 97dd1ee8
      	* profile-count.h (profile_count::max): Work on profiles of different
      	type.
      	(profile_count::apply_scale): Be sure that ret is not local or global0
      	type if num is global.
      
      From-SVN: r278813
      Jan Hubicka committed
    • cgraph: ifunc resolvers cannot be made local (PR 92697) · 2dfd63de
      2019-11-28  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/92697
      	* cgraph.c (cgraph_node_cannot_be_local_p_1): Return true for
      	ifunc_resolvers.
      	* symtab.c (symtab_node::dump_base): Dump ifunc_resolver flag.
      	Removed trailig whitespace.
      
      	testsuite/
      	* g++.dg/ipa/pr92697.C: New.
      
      From-SVN: r278812
      Martin Jambor committed
    • Fix previous commit (that included unrelated changes) · e0185719
      This patch fixes profile updates while cloning.  When new clone is produced
      its global profile is subtracted from the original function.  If the original
      function profile drops to 0 we want to switch from global profiles to global0
      profiles which is implemented by combine_with_ipa_count_within.
      
      However this is done on all edges independnetly and it may happen that we end
      up combining global and globa0 profiles in one functions which is not a good
      idea.
      
      This implements profile_count::combine_with_ipa_count_within which is able
      to take into account that the counter is inside function with a given count.
      
      	* profile-count.h (profile_count::combine_with_ipa_count_within):
      	Declare.
      	* profile-count.c (profile_count::combine_with_ipa_count_within):
      	New.
      	* cgraphclones.c (cgraph_edge::clone, cgraph_node::create_clone): Use
      	it.
      
      From-SVN: r278811
      Jan Hubicka committed
    • Fix profile adjusments while cloning · b49d29d7
      This patch fixes profile updates while cloning.  When new clone is produced
      its global profile is subtracted from the original function.  If the original
      function profile drops to 0 we want to switch from global profiles to global0
      profiles which is implemented by combine_with_ipa_count_within.
      
      However this is done on all edges independnetly and it may happen that we end
      up combining global and globa0 profiles in one functions which is not a good
      idea.
      
      This implements profile_count::combine_with_ipa_count_within which is able
      to take into account that the counter is inside function with a given count.
      
      	* profile-count.h (profile_count::combine_with_ipa_count_within):
      	Declare.
      	* profile-count.c (profile_count::combine_with_ipa_count_within):
      	New.
      	* cgraphclones.c (cgraph_edge::clone, cgraph_node::create_clone): Use
      	it.
      
      From-SVN: r278810
      Jan Hubicka committed
    • ipa-utils.c (ipa_merge_profiles): Be sure that all type transtions of counters are done same way. · eb081fd0
      	* ipa-utils.c (ipa_merge_profiles): Be sure that all type transtions
      	of counters are done same way.
      
      From-SVN: r278809
      Jan Hubicka committed
    • * ipa-cp.c (update_profiling_info): Fix scaling. · 2e7fd867
      From-SVN: r278808
      Jan Hubicka committed
    • re PR tree-optimization/92645 (Hand written vector code is 450 times slower when… · 68578d6e
      re PR tree-optimization/92645 (Hand written vector code is 450 times slower when compiled with GCC compared to Clang)
      
      2019-11-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92645
      	* tree-inline.c (remap_gimple_stmt): When the return value
      	is not wanted, elide GIMPLE_RETURN.
      
      	* gcc.dg/tree-ssa/inline-12.c: New testcase.
      
      From-SVN: r278807
      Richard Biener committed
    • re PR tree-optimization/92645 (Hand written vector code is 450 times slower when… · 78307657
      re PR tree-optimization/92645 (Hand written vector code is 450 times slower when compiled with GCC compared to Clang)
      
      2019-11-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92645
      	* tree-ssa-forwprop.c (get_bit_field_ref_def): Also handle
      	conversions inside a mode class.  Remove restriction on
      	preserving the element size.
      	(simplify_vector_constructor): Deal with the above and for
      	identity permutes also try using VEC_UNPACK_[FLOAT_]LO_EXPR
      	and VEC_PACK_TRUNC_EXPR.
      
      	* gcc.target/i386/pr92645-4.c: New testcase.
      
      From-SVN: r278806
      Richard Biener committed
    • Must use push insn to pass varargs arguments of DFmode because otherwise the… · 09f8027c
      Must use push insn to pass varargs arguments of DFmode because otherwise the middle-end generates wrong code.
      
      	Must use push insn to pass varargs arguments of DFmode because
      	otherwise the middle-end generates wrong code.
      	PR target/92055
      	* config/avr/avr.md (MPUSH) [DF, DC]: Add modes to mode iterator.
      
      From-SVN: r278805
      Georg-Johann Lay committed
    • [testsuite][arm] Force use of -mfloat-abi=softfp in asm-flag-4.c · d68f5edf
      The asm-flag-4.c test forces the generation of Thumb code for armv4t,
      which is not supported when using the 'hard' FP ABI. This patch
      ensures the test uses -mfloat-abi=softfp safely, to avoid irrelevant
      failures.
      
      2019-11-28  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	* gcc.target/arm/asm-flag-4.c: Use -mfloat-abi=softfp.
      
      From-SVN: r278804
      Christophe Lyon committed
    • re PR tree-optimization/92691 (ICE in strlen_dom_walker::before_dom_children at… · 79d2e614
      re PR tree-optimization/92691 (ICE in strlen_dom_walker::before_dom_children at gcc/tree-ssa-strlen.c:5177 since r274933)
      
      	PR tree-optimization/92691
      	* tree-ssa-strlen.c (handle_store): Clarify return value meaning
      	in function comment.
      	(strlen_check_and_optimize_call): Likewise.  For handle_printf_call
      	calls, return !handle_printf_call rather than always returning true.
      	(check_and_optimize_stmt): Describe return value meaning in function
      	comment.  Formatting fix.
      
      	* gcc.dg/tree-ssa/builtin-snprintf-10.c: New test.
      
      From-SVN: r278803
      Jakub Jelinek committed
    • re PR c++/92695 (P1064R0 - virtual constexpr fails if object taken from array) · 99150b05
      	PR c++/92695
      	* decl2.c (mark_used): Don't call note_vague_linkage_fn for pure
      	virtual functions, even if they are declared inline.
      
      	* g++.dg/warn/inline3.C: New test.
      
      From-SVN: r278802
      Jakub Jelinek committed
    • Handle correctly global0 and global counters in profile_count::to_sreal_scale · f160cd13
      This patch fixes problem in profile_count::to_sreal_scale.  We our porfile
      counters can be function local, global (ipa) or function local but globally 0.
      The last is used to hold static estimates for functions executed 0 times in
      profile.  Now only one 64bit value is stored and if we compute frequency
      of global0 counter in global counter we mix them up and return non-zero value
      incorrectly.
      
      I also implemented unit test, but will commit sanity checking separately from
      fixes: there are multiple bugs in this area I tracked down.
      
      	* profile-count.c (profile_count::to_sreal_scale): Handle correctly
      	combination of globa0 and global counters..
      
      From-SVN: r278801
      Jan Hubicka committed
    • [rs6000] Fix PR92566 by checking VECTOR_UNIT_NONE_P · 34b7ae1d
      As Segher pointed out in PR92566, we shouldn't offer some vector modes which
      aren't supported under current setting.  This patch is to make it check by
      VECTOR_UNIT_NONE_P which is initialized as current architecture masks.
      
      2019-11-28  Kewen Lin  <linkw@gcc.gnu.org>
      
          PR target/92566
          * gcc/config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Check by
          VECTOR_UNIT_NONE_P instead.
      
      From-SVN: r278800
      Kewen Lin committed