- 28 Nov, 2019 14 commits
-
-
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. From-SVN: r278809
Jan Hubicka committed -
From-SVN: r278808
Jan Hubicka committed -
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 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 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 -
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 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 -
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 -
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 -
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 -
* gcc/config/i386/sse.md (avx512f_maskcmp<mode>3): Refine VF to VF_AVX512VL. From-SVN: r278799
Hongtao Liu committed -
From-SVN: r278794
GCC Administrator committed -
2019-11-26 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.md (movdi_internal64): Reformat. From-SVN: r278788
Michael Meissner committed
-
- 27 Nov, 2019 26 commits
-
-
2019-11-27 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.md (movsi_internal): Reformat. From-SVN: r278787
Michael Meissner committed -
This patch implements C++20 class template argument deduction for alias templates, which works by a moderately arcane transformation of the deduction guides for the underlying class template. When implementing it, it seemed that I could simplify the rules in the draft a bit and get essentially the same effect; I'll be emailing the committee to that effect soon. gcc/cp/ * pt.c (rewrite_tparm_list): Factor out of build_deduction_guide. (maybe_aggr_guide): Check for copy-init here. (alias_ctad_tweaks, deduction_guides_for): New. (ctor_deduction_guides_for): Factor out of do_class_deduction. (ctad_template_p): New. * parser.c (cp_parser_simple_type_specifier): Use it. * constraint.cc (append_constraint): New. gcc/c-family/ * c-cppbuiltin.c (c_cpp_builtins): Update __cpp_deduction_guides. From-SVN: r278786
Jason Merrill committed -
A constrained alias template can't be treated as equivalent to its underlying template/type for much the same reason that an alias template like void_t can't; we're relying on checking during substitution. * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle alias template-id. * pt.c (complex_alias_template_p): True if constraints. (get_underlying_template, tsubst): Check alias constraints. (push_template_decl_real): Set alias constraints here. * parser.c (cp_parser_alias_declaration): Not here. * constraint.cc (get_constraints): Take const_tree. From-SVN: r278785
Jason Merrill committed -
rsandifo's patch for 92206 demonstrated a problem with the existing checking for alias template specializations: they were returning false for a typedef to an alias template specialization. Which is sometimes what the caller wants, and sometimes not: Sometimes we're interested in whether the type was written as an alias template-id, and sometimes whether it represents one. The testcase illustrates a case that remained wrong with the earlier patch: if the typedef is itself an alias template specialization, we can't strip an underlying dependent alias. * pt.c (dependent_alias_template_spec_p) (alias_template_specialization_p): Add transparent_typedefs parameter. (iterative_hash_template_arg, any_template_parm_r) (primary_template_specialization_p, tsubst, dependent_type_p_r): Adjust. * decl.c (check_elaborated_type_specifier): Adjust. * error.c (dump_template_bindings, dump_aggr_type): Adjust. From-SVN: r278784
Jason Merrill committed -
PR bootstrap/92661 * config/rs6000/rs6000-call.c: (def_builtin): Do not define the builtin if we don't have an actual type. (builtin_function_type): If the builtin function uses a DFP type and decimal float has been disabled, then return NULL_TREE. From-SVN: r278783
Peter Bergner committed -
Fix 'libgomp.fortran/target-print-1.f90', 'libgomp.oacc-fortran/print-1.f90' for offload target nvptx libgomp/ * testsuite/lib/libgomp.exp (check_effective_target_offload_target_nvptx): New proc. * testsuite/libgomp.fortran/target-print-1.f90: Use it with 'dg-skip-if'. * testsuite/libgomp.oacc-fortran/print-1.f90: Likewise. * testsuite/libgomp.fortran/target-print-1-nvptx.f90: New file. * testsuite/libgomp.oacc-fortran/print-1-nvptx.f90: Likewise. From-SVN: r278779
Thomas Schwinge committed -
PR rtl-optimization/92510 * combine.c (gen_lowpart_for_combine): Only transform lowpart subreg of comparison into a comparison with different mode if both imode and omode are scalar integral modes. * gcc.dg/pr92510.c: New test. From-SVN: r278777
Jakub Jelinek committed -
2019-11-27 Andrew Sutton <asutton@lock3software.com> PR c++/92236 Defer evaluation of concept checks so that static assertions can emit more detailed diagnostics. gcc/cp/ * constexpr.c (cxx_eval_call_expression): Handle concept checks. (cxx_eval_constant_expression): Diagnose misuse of function concepts as template-id expressions. Follow the usual return path for results. (cxx_eval_outermost_constant_expr): Avoid calling cp_get_callee_fndecl_nofold for function concepts. * constraint.cc (build_function_check): Fully type the concept check so that we don't ICE in conversions. * cp-gimplify.c (cp_genericize_r) [CALL_EXPR]: Handle concept checks. [TEMPLATE_ID_EXPR] Likewise. * cvt.c (convert_to_void): Always evaluate concept checks so we don't accidentally ignore them. Substitution during satisfaction can make a program ill-formed (example in g++.dg/cpp2a/concepts6.C). * pt.c (tsubst_copy_and_build): [CALL_EXPR]: Don't evaluate concepts. [TEMPLATE_ID_EXPR]: Likewise. * semantics.c (finish_call_expr): Don't evaluate concepts. (finish_id_expression_1): Likewise. (finish_static_assert): Preserve the original condition so we can diagnose concept errors when a check returns false. gcc/testsuite/ * g++.dg/cpp2a/concepts-iconv1.C: Update diagnostics. * g++.dg/cpp2a/concepts-requires5.C: Likewise. * g++.dg/cpp2a/concepts6.C: New test. From-SVN: r278775
Andrew Sutton committed -
2019-11-27 Andrew Sutton <asutton@lock3software.com> PR c++/92439 Improve quality of diagnostics for subexpressions that need parens. gcc/cp/ * parser.c (cp_parser_requires_clause_opt): Add a flag to indicate when parsing a requires-clause before lambda parameters, and... (cp_parser_lambda_declarator_opt): ... use that here ... (cp_parser_type_parameter): ... and here ... (cp_parser_late_return_type_opt): ... and here ... (cp_parser_explicit_template_declaration): ... and here. (cp_parser_diagnose_ungrouped_constraint_plain): Adjust the message because this can apply to subexpressions that are not immediately after a requires-clause. (cp_parser_diagnose_ungrouped_constraint_rich): Likewise. (primary_constraint_error): New. (cp_parser_constraint_requires_parens): New. (cp_parser_unary_constraint_requires_parens): New. (cp_parser_constraint_primary_expression): Check for unary expressions before parsing the primary expression. Also check for binary and postfix operators after a successful parse of the primary expression. Force a re-parse if the result would form a lower-precedence string. (cp_parser_constraint_logical_and_expression): Propagate lambda flag; move checks for ill-formed constraints into the constraint primary expression. (cp_parser_constraint_logical_or_expression): Likewise. (cp_parser_requires_clause_expression): Propagate lambda flag. gcc/testsuite/ * g++.dg/cpp2a/concepts-requires20.C: New. From-SVN: r278774
Andrew Sutton committed -
re PR c++/88395 (ICE: Segmentation fault signal terminated program cc1plus, with -std=c++2a -fconcepts) 2019-11-27 Andrew Sutton <asutton@lock3software.com> PR c++/88395 Prevent recursive satisfaction by adding requests to the instantiation stack. gcc/cp/ * constraint.cc (satisfy_declaration_constraints): Push tinst levels around satisfaction. gcc/testsuite/ * g++.dg/cpp2a/concepts-pr88395.C: New. * g++.dg/cpp2a/concepts-recursive-sat1.C: New. * g++.dg/cpp2a/concepts-recursive-sat2.C: New. * g++.dg/cpp2a/concepts-recursive-sat3.C: New. From-SVN: r278773
Andrew Sutton committed -
2019-11-27 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/90007 * recog.c (constrain_operands): Permit hard registers too for memory when LRA is used. 2019-11-27 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/90007 * gcc.target/i386/pr90007.c: New test. From-SVN: r278770
Vladimir Makarov committed -
Diagnose certain constraint errors as hard errors, but otherwise treat them the same as normal SFINAE-type errors. 2019-11-27 Andrew Sutton <asutton@lock3software.com> Diagnose certain constraint errors as hard errors, but otherwise treat them the same as normal SFINAE-type errors. Also, generally clean up the satisfaction functions. gcc/cp/ * constexpr.c (cxx_eval_constant_expression): Use evaluate_concept_check. * constraint.cc (normalize_concept_definition): Accept a diagnostic flag and only cache when not diagnosing errors. (decl_satisfied_cache): Map to trees instead of bools. (satisfy_atom): Guarantee a location for the errors, propagate complain flags to force_rvalue, and emit errors for non-boolean constraints. (get_normalized_constraints_and_args): New overloads. Factored out of satisfy_constraint_expression and satisfy_declaration_constraints. (satisfy_constraint_expression): Propagate diagnostic info to normalization. (satisfy_declaration_constraints): New. Factored out of constraints_satisfied_p. (constraint_satisfaction_value): New. Calls satisfy_constraint_expression or satisfy_declaration_constraints. (constraints_satisfied_p): Call constraint_satisfaction_value. (evaluate_concept_check): Don't take tsubst_falgs_t. Replay satisfaction if an error is encountered. (current_failed_constraint): Moved from pt.c. (diagnose_constraints): Call constraint_satisfaction_value. * cp-tree.h: Update declarations. * pt.c (current_failed_constraint): Moved to constraint.cc. * semantics.c (finish_id_expression_1): Remove a duplicate case. gcc/testsuite/ * g++.dg/concepts/pr84330.C: Update diagnostics. * g++.dg/cpp2a/concepts-requires2.C: Likewise. From-SVN: r278768
Andrew Sutton committed -
* config/m68k/m68k.c (m68k_output_compare_fp): Restore differences between Coldfire and regular m68k. * config/m68k/m68k.md (cmp1_cf_constraints): Disallow constants. From-SVN: r278767
Bernd Schmidt committed -
2019-11-27 Richard Biener <rguenther@suse.de> * target.def (TARGET_VECTORIZE_BUILTIN_CONVERSION): Remove. * targhooks.c (default_builtin_vectorized_conversion): Likewise. * targhooks.h (default_builtin_vectorized_conversion): Likewise. * optabs-tree.c (supportable_convert_operation): Do not call targetm.vectorize.builtin_conversion. Remove unused decl parameter. * optabs-tree.h (supportable_convert_operation): Adjust. * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_CONVERSION): Remove. * doc/tm.texi: Regenerate. * tree-ssa-forwprop.c (simplify_vector_constructor): Adjust. * tree-vect-generic.c (expand_vector_conversion): Likewise. * tree-vect-stmts.c (vect_gen_widened_results_half): Remove unused decl parameter and adjust. (vect_create_vectorized_promotion_stmts): Likewise. (vectorizable_conversion): Adjust. From-SVN: r278765
Richard Biener committed -
2019-11-27 Richard Biener <rguenther@suse.de> PR tree-optimization/92690 * tree-ssa-forwprop.c (simplify_vector_constructor): Avoid converting elements not originally converted. * gcc.dg/torture/pr92690.c: New testcase. * gcc.dg/tree-ssa/forwprop-35.c: Adjust. From-SVN: r278764
Richard Biener committed -
PR fortran/91944 * simplify.c (gfc_simplify_spread): Check gfc_init_expr_flag instead of gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER. * gfortran.dg/spread_size_limit_2.f90: New test. From-SVN: r278762
Jakub Jelinek committed -
PR middle-end/92463 * configure.ac: Use MPFR_RNDN instead of GMP's MP_RNDN. * configure: Regenerate gcc/ PR middle-end/92463 * builtins.c (do_mpfr_ckconv, do_mpc_ckconv, do_mpfr_remquo, do_mpfr_lgamma_r, do_mpc_arg2): Use MPFR_RNDx instead of GMP_RNDx, mpfr_rnd_t instead of mp_rnd_t. * fold-const-call.c (do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_sincos, do_mpfr_arg2, do_mpfr_arg3, do_mpc_arg1, do_mpc_arg2): Likewise. * gimple-ssa-sprintf.c (format_floating_max, format_floating): Use mpfr_exp_t instead of mp_exp_t. * real.c (real_from_string, dconst_e_ptr, dconst_sqrt2_ptr): Use MPFR_RNDx instead of GMP_RNDx. * realmpfr.c (real_from_mpfr, mpfr_from_real): Use mpfr_rnd_t and mpfr_exp_t instead mp_rnd_t and mp_exp_t, respectively. * realmpfr.h (real_from_mpfr, mpfr_from_real): Use mpfr_rnd_t instead of mp_rnd_t and remove MPFR_RNDx poisoning. * ubsan.c (ubsan_instrument_float_cast): MPFR_RNDx instead of GMP_RNDx. fortran/ PR middle-end/92463 * arith.c (gfc_check_real_range): Replace mp_exp_t by mpfr_exp_t. From-SVN: r278761
Tobias Burnus committed -
As PR91790 exposed, when we have one slp node whose first_stmt_info_for_drptr is different from first_stmt_info, it's possible that the first_stmt DR isn't initialized yet before stmt SLP_TREE_SCALAR_STMTS[0] of slp node. So we shouldn't use first_stmt_info for vect_setup_realignment, instead we can use the one based on first_stmt_info_for_drptr DR with additional adjustment by bumping the distance from first_stmt DR. gcc/ChangeLog 2019-11-27 Kewen Lin <linkw@gcc.gnu.org> PR tree-optimization/91790 * gcc/tree-vect-stmts.c (vectorizable_load): Use the adjusted DR for vect_setup_realignment when first_stmt_info is different from first_stmt_info_for_drptr. From-SVN: r278760
Kewen Lin committed -
PR c++/92524 * tree.c (replace_placeholders_r): Don't walk constructor elts with RANGE_EXPR indexes. * g++.dg/cpp0x/pr92524.C: New test. From-SVN: r278759
Jakub Jelinek committed -
re PR tree-optimization/92645 (Hand written vector code is 450 times slower when compiled with GCC compared to Clang) 2019-11-27 Richard Biener <rguenther@suse.de> PR tree-optimization/92645 * tree-ssa-forwprop.c (simplify_vector_constructor): Handle CTORs with just a subset of the original vectors. * gcc.target/i386/pr92645-2.c: New testcase. * gcc.target/i386/pr92645-3.c: Likewise. From-SVN: r278758
Richard Biener committed -
2019-11-27 Richard Biener <rguenther@suse.de> PR middle-end/92674 * tree-inline.c (expand_call_inline): Delay purging EH/abnormal edges and instead record blocks in bitmap. (gimple_expand_calls_inline): Adjust. (fold_marked_statements): Delay EH cleanup until all folding is done. (optimize_inline_calls): Do EH/abnormal cleanup for calls after inlining finished. From-SVN: r278757
Richard Biener committed -
* auto-inc-dec.c (merge_in_block): Allow autoinc in jumps unless LRA is enabled. * combine.c (can_combine_p): Disallow autoinc in jumps unless LRA is disabled. From-SVN: r278756
Bernd Schmidt committed -
I noticed that tsubst of a TEMPLATE_ID_EXPR was losing the location information from its EXPR_LOCATION. Then I noticed that cxx_eval_constant_expression was also throwing away location information for variable references. * pt.c (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: Remember the location of a variable template-id. * constexpr.c (cxx_eval_constant_expression): Get expr location before stripping location wrappers. (non_const_var_error): Take location argument. From-SVN: r278755
Jason Merrill committed -
PR debug/92664 * dwarf2out.c (lookup_filename): Use "<stdin>" instead of "". From-SVN: r278752
Jakub Jelinek committed -
From-SVN: r278751
GCC Administrator committed -
typeck.c (cp_build_unary_op): Consistently use the accurate location in seven additional diagnostic messages. /cp 2019-11-26 Paolo Carlini <paolo.carlini@oracle.com> * typeck.c (cp_build_unary_op): Consistently use the accurate location in seven additional diagnostic messages. (cp_build_compound_expr): Use cp_expr_loc_or_input_loc in one place. /testsuite 2019-11-26 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/cpp1z/bool-increment1.C: Test location(s) too. * g++.dg/expr/bitfield3.C: Likewise. * g++.dg/expr/bitfield4.C: Likewise. * g++.dg/expr/bitfield5.C: Likewise. * g++.dg/expr/bitfield6.C: Likewise. * g++.dg/expr/bool1.C: Likewise. * g++.dg/expr/bool2.C: Likewise. * g++.dg/expr/bool3.C: Likewise. * g++.dg/expr/bool4.C: Likewise. * g++.dg/expr/lval3.C: Likewise. * g++.dg/other/error18.C: Likewise. * g++.dg/warn/Wpointer-arith-1.C: Likewise. * g++.old-deja/g++.bugs/900212_01.C: Likewise. * g++.old-deja/g++.bugs/900428_02.C: Likewise. * g++.old-deja/g++.jason/rfg14.C: Likewise. * g++.old-deja/g++.other/overload11.C: Likewise. From-SVN: r278743
Paolo Carlini committed
-