- 10 Nov, 2019 7 commits
-
-
* profile-count.c (profile_count::to_sreal_scale): Short circuit case where profiles are same. From-SVN: r278022
Jan Hubicka committed -
From-SVN: r278021
Jan Hubicka committed -
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 -
www.hboehm.info
* doc/xml/manual/using.xml: Switch www.hboehm.info to https. From-SVN: r278019
Gerald Pfeifer committed -
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. (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 -
From-SVN: r278013
GCC Administrator committed
-
- 09 Nov, 2019 9 commits
-
-
* ipa-fnsummary.c (evaluate_properties_for_edge): Call IPA_NODE_REF on function symbol. * gcc.dg/tree-ssa/pr46076.c: Make tested code hot. From-SVN: r278009
Jan Hubicka committed -
tree.c (fld_incomplete_type_of): Clear TYPE_FINAL_P, TYPE_EMPTY_P, ENUM_IS_OPAQUE and ENUM_IS_SCOPED. * tree.c (fld_incomplete_type_of): Clear TYPE_FINAL_P, TYPE_EMPTY_P, ENUM_IS_OPAQUE and ENUM_IS_SCOPED. (free_lang_data_in_binfo): Clear TREE_PUBLIC in BINFO (free_lang_data_in_type): Clear ENUM_IS_OPAQUE and ENUM_IS_SCOPED. From-SVN: r278008
Jan Hubicka committed -
* ipa-inline-analysis.c (do_estimate_growth_1): Add support for capping the growth cumulated. (offline_size): Break out from ... (estimate_growth): ... here. (check_callers): Add N, OFFLINE and MIN_SIZE and KNOWN_EDGE parameters. (growth_likely_positive): Turn to ... (growth_positive_p): Re-implement. * ipa-inline.h (growth_likely_positive): Remove. (growth_positive_p): Declare. * ipa-inline.c (want_inline_small_function_p): Use growth_positive_p. (want_inline_function_to_all_callers_p): Likewise. From-SVN: r278007
Jan Hubicka committed -
* ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix calculation of min_size. (ipa_update_overall_fn_summary): Likewise. From-SVN: r278006
Jan Hubicka committed -
ipa-fnsummary.c (estimate_edge_size_and_time): Do not call estimate_edge_devirt_benefit when not computing hints... * ipa-fnsummary.c (estimate_edge_size_and_time): Do not call estimate_edge_devirt_benefit when not computing hints; do not compute time when not asked for. (estimate_calls_size_and_time): Pass NULL hints and time when these are not computed; do not evaluate hint predicates when these are not computed. (ipa_merge_fn_summary_after_inlining): Do not re-evaluate edge frequency. From-SVN: r278005
Jan Hubicka committed -
PR tree-optimization/92401 * gimple-match-head.c (gimple_resimplify1): Call const_unop only if res_op->code is an expression with code length 1. * gimple-match-head.c (gimple_resimplify2): Call const_binop only if res_op->code is an expression with code length 2. * gimple-match-head.c (gimple_resimplify3): Call fold_ternary only if res_op->code is an expression with code length 3. * g++.dg/opt/pr92401.C: New test. From-SVN: r278004
Jakub Jelinek committed -
2019-11-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92321 * frontend-passes.c (call_external_blas): Commit symbol for external BLAS routine. 2019-11-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92321 * gfortran.dg/matmul_blas_2.f90: New test. From-SVN: r278003
Thomas Koenig committed -
When a stub is used to call the mcount function, the code is already marking it as used unconditionally; This is the only use of the so- called validation outside darwin.{h,c}. This moves the 'validation' into darwin.c which is a step towards making validation routine local. gcc/ 2019-11-09 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.c (machopic_mcount_stub_name): Validate the symbol stub name when it is created. * config/i386/darwin.h (FUNCTION_PROFILER): Remove the symbol stub validation. From-SVN: r278000
Iain Sandoe committed -
From-SVN: r277999
GCC Administrator committed
-
- 08 Nov, 2019 24 commits
-
-
* 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 -
* 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 -
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 -
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 -
* g++.dg/cpp2a/constinit15.C: New test. From-SVN: r277990
Marek Polacek committed -
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 -
From-SVN: r277978
Jakub Jelinek committed -
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 -
* 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 -
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 -
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 -
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 -
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 -
* 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 -
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 -
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 -
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 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 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 -
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 -
2019-11-08 Martin Liska <mliska@suse.cz> * g++.dg/pr92339.C: Rename identifiers to something more readable. From-SVN: r277960
Martin Liska committed -
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 -
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 -
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
-