1. 10 Nov, 2019 7 commits
    • Short circuit case where profiles are same. · 65eaab18
              * profile-count.c (profile_count::to_sreal_scale): Short circuit
      	case where profiles are same.
      
      From-SVN: r278022
      Jan Hubicka committed
    • ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipa edge args summaries… · d40e2362
      ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipa edge args summaries of inlined edge unless...
      
      	* ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipa edge
      	args summaries of inlined edge unless it holds info about
      	described reference.
      
      From-SVN: r278020
      Jan Hubicka committed
    • Switch www.hboehm.info to https · 7901a85f
      	* doc/xml/manual/using.xml: Switch www.hboehm.info to https.
      
      From-SVN: r278019
      Gerald Pfeifer committed
    • rs6000: Allow any CC mode in movcc · 7964e40d
      Sometimes combine wants to do a move in CCFPmode, but we don't currently
      handle moves in any CC mode other than CCmode.  Fix that oversight.
      
      
      	* config/rs6000/rs6000.md (CC_any): New mode iterator.
      	(*movcc_internal1): Rename to...
      	(*movcc_<mode> for CC_any): ... this.  Support moves of all CC modes.
      
      From-SVN: r278017
      Segher Boessenkool committed
    • cgraph.h (struct cgraph_node): Add ipcp_clone flag. · 6cf67b62
      
      	* cgraph.h (struct cgraph_node): Add ipcp_clone flag.
      	(cgraph_node::create_virtual_clone): Copy it.
      	* ipa-cp.c (ipcp_versionable_function_p): Watch for missing
      	summaries.
      	(ignore_edge_p): If caller has ipa-cp disabled, skip the edge, too.
      	(ipcp_verify_propagated_values): Do not verify nodes where ipcp
      	is disabled.
      	(propagate_constants_across_call): If callee is not analyzed, give up.
      	(propagate_constants_topo): Lower to bottom latties of all callees of
      	functions with ipa-cp disabled.
      	(ipcp_propagate_stage): Skip functions with ipa-cp disabled.
      	(cgraph_edge_brings_value_p): Check for availability first.
      	(create_specialized_node): Set ipcp_clone.
      	(ipcp_store_bits_results): Check that info is present.
      	* ipa-fnsummary.c (evaluate_properties_for_edge): Do not analyze
      	thunks.
      	(ipa_call_context::duplicate_from, ipa_call_context::equal_to): Be
      	conservative when callee summary is missing.
      	(remap_edge_summaries): Lookup call summary only when needed.
      	* ipa-icf.c (sem_function::param_used_p): Be ready for missing summary.
      	* ipa-prpo.c (ipa_alloc_node_params, ipa_initialize_node_params):
      	Use get_create.
      	(ipa_analyze_node): Use get_create.
      	(propagate_controlled_uses): Do not propagate when function is not
      	analyzed.
      	(ipa_propagate_indirect_call_infos): Remove summary of inline clone.
      	(ipa_read_node_info): Use get_create.
      	* ipa-prop.h (IPA_NODE_REF): Use get.
      	(IPA_NODE_REF_GET_CREATE): New.
      
      From-SVN: r278016
      Jan Hubicka committed
    • Daily bump. · 64166bf0
      From-SVN: r278013
      GCC Administrator committed
  2. 09 Nov, 2019 9 commits
  3. 08 Nov, 2019 24 commits
    • symtab.c: Fix comment typos. · dfea3d6f
      	* symtab.c: Fix comment typos.
      	* cgraphunit.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphclones.c: Likewise.
      	* cgraph.c: Likewise.
      	* varpool.c: Likewise.
      	* tree-ssa-strlen.c: Likewise.
      	* ipa-sra.c: Likewise.
      	(scan_expr_access, check_all_callers_for_issues): Fix typo
      	in a dump message.
      
      From-SVN: r277995
      Jakub Jelinek committed
    • dec_char_conversion_in_assignment_4.f90: Use dg-do compile instead of dg-do run. · a63d6356
      	* gfortran.dg/dec_char_conversion_in_assignment_4.f90: Use
      	dg-do compile instead of dg-do run.
      	* gfortran.dg/dec_char_conversion_in_data_3.f90: Likewise.
      
      From-SVN: r277994
      Jakub Jelinek committed
    • [Darwin] Add include guard to darwin-protos.h · 9342ec4d
      The Darwin protos header is missing an include guard, this adds one.
      
      gcc/ChangeLog:
      
      2019-11-08  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin-protos.h: Add include quard.
      
      From-SVN: r277993
      Iain Sandoe committed
    • PR c++/92215 - flawed diagnostic for bit-field with non-integral type. · 65471f09
      I noticed that for code like
      
        struct S {
          int *foo : 3;
        };
      
      we generate nonsensical
      
        r.C:2:8: error: function definition does not declare parameters
            2 |   int *foo : 3;
      
      It talks about a function because after parsing the declspecs of 'foo' we don't
      see either ':' or "name :", so we think it's not a bit-field decl.  So we parse
      the declarator and since a ctor-initializer begins with a ':', we try to parse
      it as a function body, generating the awful diagnostic.  With this patch, we
      issue:
      
        r.C:2:8: error: bit-field ‘foo’ has non-integral type ‘int*’
            2 |   int *foo : 3;
      
      	* parser.c (cp_parser_member_declaration): Add a diagnostic for
      	bit-fields with non-integral types.
      
      	* g++.dg/diagnostic/bitfld4.C: New test.
      
      From-SVN: r277991
      Marek Polacek committed
    • PR c++/92058 - constinit malfunction in static data member. · a2dbbda8
      	* g++.dg/cpp2a/constinit15.C: New test.
      
      From-SVN: r277990
      Marek Polacek committed
    • Modify range_operator::fold_range() and wi_fold () to return via reference. · bb74ef9e
      2019-11-08  Andrew MacLeod <amacleod@redhat.com>
      
      	* range-op.h (range_operator::fold_range): Return result in a
      	reference parameter instead of by value.
      	(range_operator::wi_fold): Same.
      	* range-op.cc (range_operator::wi_fold): Return result in a reference
      	parameter instead of by value.
      	(range_operator::fold_range): Same.
      	(value_range_from_overflowed_bounds): Same.
      	(value_range_with_overflow): Same
      	(create_possibly_reversed_range): Same.
      	(operator_equal::fold_range): Same.
      	(operator_not_equal::fold_range): Same.
      	(operator_lt::fold_range): Same.
      	(operator_le::fold_range): Same.
      	(operator_gt::fold_range): Same.
      	(operator_ge::fold_range): Same.
      	(operator_plus::wi_fold): Same.
      	(operator_plus::op1_range): Change call to fold_range.
      	(operator_plus::op2_range): Change call to fold_range.
      	(operator_minus::wi_fold): Return result via reference parameter.
      	(operator_minus::op1_range): Change call to fold_range.
      	(operator_minus::op2_range): Change call to fold_range.
      	(operator_min::wi_fold): Return result via reference parameter.
      	(operator_max::wi_fold): Same.
      	(cross_product_operator::wi_cross_product): Same.
      	(operator_mult::wi_fold): Same.
      	(operator_div::wi_fold): Same.
      	(operator_div op_floor_div): Fix whitespace.
      	(operator_exact_divide::op1_range): Change call to fold_range.
      	(operator_lshift::fold_range): Return result via reference parameter.
      	(operator_lshift::wi_fold): Same.
      	(operator_rshift::fold_range): Same.
      	(operator_rshift::wi_fold): Same.
      	(operator_cast::fold_range): Same.
      	(operator_cast::op1_range): Change calls to fold_range.
      	(operator_logical_and::fold_range): Return result via reference.
      	(wi_optimize_and_or): Adjust call to value_range_with_overflow.
      	(operator_bitwise_and::wi_fold): Return result via reference.
      	(operator_logical_or::fold_range): Same.
      	(operator_bitwise_or::wi_fold): Same.
      	(operator_bitwise_xor::wi_fold): Same.
      	(operator_trunc_mod::wi_fold): Same.
      	(operator_logical_not::fold_range): Same.
      	(operator_bitwise_not::fold_range): Same.
      	(operator_bitwise_not::op1_range): Change call to fold_range.
      	(operator_cst::fold_range): Return result via reference.
      	(operator_identity::fold_range): Same.
      	(operator_abs::wi_fold): Same.
      	(operator_absu::wi_fold): Same.
      	(operator_negate::fold_range): Same.
      	(operator_negate::op1_range): Change call to fold_range.
      	(operator_addr_expr::fold_range): Return result via reference.
      	(operator_addr_expr::op1_range): Change call to fold_range.
      	(operator_pointer_plus::wi_fold): Return result via reference.
      	(operator_pointer_min_max::wi_fold): Same.
      	(operator_pointer_and::wi_fold): Same.
      	(operator_pointer_or::wi_fold): Same.
      	(range_op_handler): Change call to fold_range.
      	(range_cast): Same.
      	* tree-vrp.c (range_fold_binary_symbolics_p): Change call to
      	fold_range.
      	(range_fold_unary_symbolics_p): Same.
      	(range_fold_binary_expr): Same.
      	(range_fold_unary_expr): Same.
      
      From-SVN: r277979
      Andrew MacLeod committed
    • Use correct vector type in neutral_op_for_slp_reduction · d308ca27
      With the new reduction vectype handling, neutral_op_for_slp_reduction
      needs to know whether the caller is using STMT_VINFO_REDUC_VECTYPE
      (for an epilogue value) or STMT_VINFO_VECTYPE (for a PHI argument).
      
      This fixes various gcc.target/aarch64/sve/slp_* tests.
      
      2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (neutral_op_for_slp_reduction): Take the
      	vector type as an argument rather than reading it from the
      	stmt_vec_info.
      	(vect_create_epilog_for_reduction): Update accordingly.
      	(vectorizable_reduction): Likewise.
      	(vect_transform_cycle_phi): Likewise.
      
      From-SVN: r277977
      Richard Sandiford committed
    • rs6000: Fix branch_comparison_operator · fd14d6cb
      
      	* config/rs6000/predicates.md (branch_comparison_operator): Allow only
      	the comparison codes that make sense for the mode used, and only the
      	codes that can be done with a single branch instruction.
      
      From-SVN: r277976
      Segher Boessenkool committed
    • Allow CHARACTER literals in assignments and data statements. · 2afeb1ca
      Allows character literals to used to assign values to non-character variables
      in the same way that Hollerith constants are used. In addition character
      literals can be used in data statements just like Hollerith constants.
      
      Warnings of such use are output to discourage this usage as it is a non-standard
      legacy feature and must be explicitly enabled.
       
      Enabled by -fdec and -fdec-char-conversions.
      
      
      Co-Authored-By: Jim MacArthur <jim.macarthur@codethink.co.uk>
      
      From-SVN: r277975
      Mark Eggleston committed
    • [vect] PR 92351: When peeling for alignment make alignment of epilogues unknown · 4e9d58d1
      gcc/ChangeLog:
      2019-11-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	PR tree-optimization/92351
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): When we are
      	peeling the main loop for alignment, make sure to set the misalignment
      	of the epilogue's data references to DR_MISALIGNMENT_UNKNOWN.
      
      gcc/testsuite/ChangeLog:
      2019-11-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	PR tree-optimization/92351
      	* gcc.dg/vect/vect-peel-2.c: Disable epilogue vectorization and
      	split the source of this test to...
      	* gcc.dg/vect/vect-peel-2-src.c: ... This.
      	* gcc.dg/vect/vect-peel-2-epilogues.c: New test.
      
      From-SVN: r277974
      Andre Vieira committed
    • dbgcnt.def (ivopts_loop): Add. · 14df3a17
      2019-11-08  Richard Biener  <rguenther@suse.de>
      
      	* dbgcnt.def (ivopts_loop): Add.
      	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Check
      	ivopts_loop before optimizing a loop.
      
      From-SVN: r277973
      Richard Biener committed
    • re PR ipa/92409 (r277920 causes ICE in gcc.dg/cast-function-1.c) · e7399b54
      2019-11-08  Richard Biener  <rguenther@suse.de>
      
      	PR ipa/92409
      	* tree-inline.c (declare_return_variable): Properly handle
      	type mismatches for the return slot.
      
      From-SVN: r277972
      Richard Biener committed
    • overflow-1.c: Add -fno-pie to the options. · 03a05fd3
      	* gcc.target/sparc/overflow-1.c: Add -fno-pie to the options.
      	* gcc.target/sparc/overflow-2.c: Likewise.
      
      From-SVN: r277969
      Eric Botcazou committed
    • re PR target/92095 (internal error with -O1 -mcpu=niagara2 -fPIE) · 0a83f1a4
      	PR target/92095
      	* config/sparc/sparc-protos.h (output_load_pcrel_sym): Declare.
      	* config/sparc/sparc.c (sparc_cannot_force_const_mem): Revert latest
       	change.
      	(got_helper_needed): New static variable.
      	(output_load_pcrel_sym): New function.
      	(get_pc_thunk_name): Remove after inlining...
      	(load_got_register): ...here.  Rework the initialization of the GOT
      	register and of the GOT helper.
      	(save_local_or_in_reg_p): Test the REGNO of the GOT register.
      	(sparc_file_end): Test got_helper_needed to decide whether the GOT
      	helper must be emitted.  Use output_asm_insn instead of fprintf.
      	(sparc_init_pic_reg): In PIC mode, always initialize the PIC register
      	if optimization is enabled.
      	* config/sparc/sparc.md (load_pcrel_sym<P:mode>): Emit the assembly
      	by calling output_load_pcrel_sym.
      
      From-SVN: r277966
      Eric Botcazou committed
    • Fix code order in tree-sra.c:create_access · 93ace3af
      If get_ref_base_and_extent returns poly_int offsets or sizes,
      tree-sra.c:create_access prevents SRA from being applied to the base.
      However, we haven't verified by that point that we have a valid base
      to disqualify.
      
      This originally led to an ICE on the attached testcase, but it
      no longer triggers there after the introduction of IPA SRA.
      
      2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-sra.c (create_access): Delay disqualifying the base
      	for poly_int values until we know we have a base.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/acle/general/inline_2.c: New test.
      
      From-SVN: r277965
      Richard Sandiford committed
    • [vect] Disable vectorization of epilogues for loops with SIMDUID set · b602712b
      gcc/ChangeLog:
      2019-11-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	* tree-vect-loop.c (vect_analyze_loop): Disable epilogue vectorization
      	for loops with SIMDUID set.  Enable epilogue vectorization for loops
      	with SIMDLEN set after finding a main loop with a VF that matches it.
      
      From-SVN: r277964
      Andre Vieira committed
    • re PR target/92038 (Extremely inefficient x86_64 code for trivally copyable… · 5384a802
      re PR target/92038 (Extremely inefficient x86_64 code for trivally copyable types passed in registers.)
      
      	PR target/92038
      	* gimple-ssa-store-merging.c (find_constituent_stores): For return
      	value only, return non-NULL if there is a single non-clobber
      	constituent store even if there are constituent clobbers and return
      	one of clobber constituent stores if all constituent stores are
      	clobbers.
      	(split_group): Handle clobbers.
      	(imm_store_chain_info::output_merged_store): When computing
      	bzero_first, look after all clobbers at the start.  Don't count
      	clobber stmts in orig_num_stmts, except if the first orig store is
      	a clobber covering the whole area and split_stores cover the whole
      	area, consider equal number of stmts ok.  Punt if split_stores
      	contains only ->orig stores and their number plus number of original
      	clobbers is equal to original number of stmts.  For ->orig, look past
      	clobbers in the constituent stores.
      	(imm_store_chain_info::output_merged_stores): Don't remove clobber
      	stmts.
      	(rhs_valid_for_store_merging_p): Don't return false for clobber stmt
      	rhs.
      	(store_valid_for_store_merging_p): Allow clobber stmts.
      	(verify_clear_bit_region_be): Fix up a thinko in function comment.
      
      	* g++.dg/opt/store-merging-1.C: New test.
      	* g++.dg/opt/store-merging-2.C: New test.
      	* g++.dg/opt/store-merging-3.C: New test.
      
      From-SVN: r277963
      Jakub Jelinek committed
    • re PR middle-end/92384 (Empty class instances have different equal testing… · aea86742
      re PR middle-end/92384 (Empty class instances have different equal testing result among GCC versions)
      
      	PR c++/92384
      	* function.c (assign_parm_setup_block, assign_parm_setup_stack): Don't
      	copy TYPE_EMPTY_P arguments from data->entry_parm to data->stack_parm
      	slot.
      	(assign_parms): For TREE_ADDRESSABLE parms with TYPE_EMPTY_P type
      	force creation of a unique data.stack_parm slot.
      
      	* g++.dg/torture/pr92384.C: New test.
      
      From-SVN: r277962
      Jakub Jelinek committed
    • genmatch.c (expr::gen_transform): Use the resimplify member function instead of hard-coding the... · d8a4ce12
      2019-11-08  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (expr::gen_transform): Use the resimplify
      	member function instead of hard-coding the gimple_resimplifyN variant.
      	(dt_simplify::gen_1): Likewise.
      
      From-SVN: r277961
      Richard Biener committed
    • Rename identifiers in a test-case. · 7e5db637
      2019-11-08  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/pr92339.C: Rename identifiers to something
      	more readable.
      
      From-SVN: r277960
      Martin Liska committed
    • Handle POLY_INT_CST in copy_reference_ops_from_ref · 74266b00
      2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
      	POLY_INT_CST.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/acle/general/deref_2.c: New test.
      	* gcc.target/aarch64/sve/acle/general/whilele_8.c: Likewise.
      	* gcc.target/aarch64/sve/acle/general/whilelt_4.c: Likewise.
      
      From-SVN: r277959
      Richard Sandiford committed
    • re PR tree-optimization/92324 (ICE in expand_direct_optab_fn, at internal-fn.c:2890) · 714fc568
      2019-11-08  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92324
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
      	STMT_VINFO_REDUC_VECTYPE for all computations, inserting
      	sign-conversions as necessary.
      	(vectorizable_reduction): Reject conversions in the chain
      	that are not sign-conversions, base analysis on a non-converting
      	stmt and its operation sign.  Set STMT_VINFO_REDUC_VECTYPE.
      	* tree-vect-stmts.c (vect_stmt_relevant_p): Don't dump anything
      	for debug stmts.
      	* tree-vectorizer.h (_stmt_vec_info::reduc_vectype): New.
      	(STMT_VINFO_REDUC_VECTYPE): Likewise.
      
      	* gcc.dg/vect/pr92205.c: XFAIL.
      	* gcc.dg/vect/pr92324-1.c: New testcase.
      	* gcc.dg/vect/pr92324-2.c: Likewise.
      
      From-SVN: r277958
      Richard Biener committed
    • Handle POLY_INT_CSTs in declare_return_value · be5f7ecc
      SVE allows variable-length vectors to be returned by value,
      which tripped the assert in declare_return_variable.
      
      2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-inline.c (declare_return_variable): Check for poly_int_tree_p
      	instead of INTEGER_CST.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/acle/general/inline_1.c: New test.
      
      From-SVN: r277956
      Richard Sandiford committed