1. 08 Mar, 2018 12 commits
    • re PR tree-optimization/84178 (ICE in release_bb_predicate) · 7fea20f6
      2018-03-08  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/84178
      	* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
      	to caller.
      	(version_loop_for_if_conversion): Delay update_ssa call.
      	(tree_if_conversion): Delay update_ssa until after predicate
      	insertion.
      
      	* gcc.dg/torture/pr84178-2.c: New testcase.
      
      From-SVN: r258364
      Richard Biener committed
    • tree-if-conv.c: fix ICE seen with -fno-tree-forwprop (PR tree-optimization/84178) · 8b9a03d6
      PR tree-optimization/84178 reports a couple of source files that ICE inside
      ifcvt when compiled with -03 -fno-tree-forwprop (trunk and gcc 7).
      
      Both cases involve problems with ifcvt's per-BB gimplified predicates.
      
      Testcase 1 fails this assertion within release_bb_predicate during cleanup:
      
      283	      if (flag_checking)
      284		for (gimple_stmt_iterator i = gsi_start (stmts);
      285		     !gsi_end_p (i); gsi_next (&i))
      286		  gcc_assert (! gimple_use_ops (gsi_stmt (i)));
      
      The testcase contains a division in the loop, which leads to
      if_convertible_loop_p returning false (due to gimple_could_trap_p being true
      for the division).  This happens *after* the per-BB gimplified predicates
      have been created in predicate_bbs (loop).
      Hence tree_if_conversion bails out to "cleanup", but the gimplified predicates
      exist and make use of SSA names; for example this conjunction for two BB
      conditions:
      
        _4 = h4.1_112 != 0;
        _175 = (signed char) _117;
        _176 = _175 >= 0;
        _174 = _4 & _176;
      
      is using SSA names.
      
      This assertion was added in r236498 (aka c3deca2519d97c55876869c57cf11ae1e5c6cf8b):
      
          2016-05-20  Richard Biener  <rguenther@suse.de>
      
              * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Use
              gimple_seq_add_seq_without_update.
              (release_bb_predicate): Assert we have no operands to free.
              (if_convertible_loop_p_1): Calculate post dominators later.
              Do not free BB predicates here.
              (combine_blocks): Do not recompute BB predicates.
              (version_loop_for_if_conversion): Save BB predicates around
              loop versioning.
      
              * gcc.dg/tree-ssa/ifc-cd.c: Adjust.
      
      The following patch fixes this by adding a call to gimple_seq_discard
      to release_bb_predicate.  It also updates the assertion, so that
      instead of asserting the stmts have no imm uses, instead assert that
      they weren't added to a bb before discarding them (otherwise discarding
      them would be a bug).  We know this is the case because
      insert_gimplified_predicates has:
      
      	  /* Once the sequence is code generated, set it to NULL.  */
      	  set_bb_predicate_gimplified_stmts (bb, NULL);
      
      but asserting it seems appropriate as a double-check.
      
      The patch doesn't address the 2nd issue within PR tree-optimization/84178.
      
      gcc/ChangeLog:
      	PR tree-optimization/84178
      	* tree-if-conv.c (release_bb_predicate): Remove the
      	the assertion that the stmts have NULL use_ops.
      	Discard the statements, asserting that they haven't
      	yet been added to a BB.
      
      gcc/testsuite/ChangeLog:
      	PR tree-optimization/84178
      	* gcc.c-torture/compile/pr84178-1.c: New test.
      
      From-SVN: r258363
      David Malcolm committed
    • Fix ifunc detection in target-supports.exp file. · 24b830b6
      2018-03-08  Thomas Schwinge  <thomas@codesourcery.com>
      
      	* lib/target-supports.exp: Do not return zero from a ifunc
      	function.
      
      From-SVN: r258362
      Thomas Schwinge committed
    • re PR tree-optimization/84746 (ICE on valid code at -O2 and -O3: Segmentation fault) · de341bf0
      2018-03-08  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/84746
      	* tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
      	(phi_translate): Pass in destination ANTIC_OUT set.
      	(phi_translate_1): Likewise.  For a simplified result lookup
      	a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
      	(phi_translate_set): Adjust.
      	(do_pre_regular_insertion): Likewise.
      	(do_pre_partial_partial_insertion): Likewise.
      
      	* gcc.dg/torture/pr84746.c: New testcase.
      
      From-SVN: r258361
      Richard Biener committed
    • Document gcov-io (PR gcov-profile/84735). · 5223e95a
      2018-03-08  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84735
      	* doc/gcov.texi: Document usage of profile files.
      	* gcov-io.h: Document changes in the format.
      
      From-SVN: r258360
      Martin Liska committed
    • [LVU] reset view at function entry, omit views at line zero · bc7b0ffa
      Location views might be associated with locations that lack line
      number information (line number zero), but since we omit .loc
      directives that would have been issued with line number zero, we also
      omit the symbolic view numbers that would have been issued at such
      points.
      
      Resetting views at function entry points address some of these issues,
      and alleviate the huge chains of symbolic views that have burdened
      assemblers since we disabled -ginternal-reset-location-views by
      default, but other problems of undefined views remain when it's not
      the whole function that lacks line number info, just parts of it.
      
      So, when we encounter a request to output a view that may have been
      referenced, but we decide to omit the .loc because the line is zero,
      we will now omit the view as well, i.e., we will internally regard
      that view as zero-numbered.
      
      for  gcc/ChangeLog
      
      	PR debug/84404
      	PR debug/84408
      	* dwarf2out.c (struct dw_line_info_table): Update comments for
      	view == -1.
      	(FORCE_RESET_NEXT_VIEW): New.
      	(FORCE_RESETTING_VIEW_P): New.
      	(RESETTING_VIEW_P): Check for -1 too.
      	(ZERO_VIEW_P): Likewise.
      	(new_line_info_table): Force-reset next view.
      	(dwarf2out_begin_function): Likewise.
      	(dwarf2out_source_line): Simplify zero_view_p initialization.
      	Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
      	view directly.  Omit view when omitting .loc at line 0.
      
      for  gcc/testsuite/ChangeLog
      
      	PR debug/84404
      	PR debug/84408
      	* gcc.dg/graphite/pr84404.c: New.
      
      From-SVN: r258355
      Alexandre Oliva committed
    • re PR tree-optimization/84740 (ICE in build_constructors, at tree-switch-conversion.c:965) · ce8b1a1f
      	PR tree-optimization/84740
      	* tree-switch-conversion.c (process_switch): Call build_constructors
      	only if info.phi_count is non-zero.
      
      	* gcc.dg/torture/pr84740.c: New test.
      
      From-SVN: r258354
      Jakub Jelinek committed
    • re PR tree-optimization/84739 (ICE in get_value_for_expr, at tree-ssa-ccp.c:649) · 686faaec
      	PR tree-optimization/84739
      	* tree-tailcall.c (find_tail_calls): Check call arguments against
      	DECL_ARGUMENTS (current_function_decl) rather than
      	DECL_ARGUMENTS (func) when checking for tail recursion.
      
      	* gcc.dg/pr84739.c: New test.
      
      From-SVN: r258351
      Jakub Jelinek committed
    • printers.py (NodeIteratorPrinter): New. · fe6bd21a
      2018-03-08  François Dumont  <fdumont@gcc.gnu.org>
      
      	* python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
      	(StdListIteratorPrinter): Inherit from latter.
      	(StdFwdListIteratorPrinter): New, inherit from latter.
      	(StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
      	when iterator has no associated container.
      	(build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
      	__gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
      	registrations.
      	* testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
      	* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
      
      From-SVN: r258350
      François Dumont committed
    • PR tree-optimization/83519 - missing -Wrestrict on an overlapping strcpy to a non-member array · 1b1a1881
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/Wrestrict-13.c: New test.
      
      From-SVN: r258348
      Martin Sebor committed
    • re PR fortran/64124 ([F95] Valid constant expr rejected) · 00df7c36
      2018-03-07  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/64124
      	PR fortran/70409
      	* decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant.
      
      2018-03-07  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/64124
      	PR fortran/70409
      	* gfortran.dg/pr64124.f90: New tests.
      	* gfortran.dg/pr70409.f90: New tests.
      
      From-SVN: r258347
      Steven G. Kargl committed
    • Daily bump. · 4b7b455c
      From-SVN: r258345
      GCC Administrator committed
  2. 07 Mar, 2018 16 commits
  3. 06 Mar, 2018 12 commits
    • re PR fortran/84697 (minloc/maxloc not simplified with zero size) · 5867bb9a
      2017-03-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/84697
      	PR fortran/66128
      	* expr.c (simplify_parameter_variable): If p is a size zero array
      	and not an ARRAY_EXPR insert an empty array constructor and
      	return.
      	* gfortran.h: Add prototype for gfc_is_size_zero_array.
      	* simplify.c (is_size_zero_array): Make non-static and rename into
      	(gfc_is_size_zero_array):  Check for parameter arrays of zero
      	size by comparing shape and absence of constructor.
      	(gfc_simplify_all): Use gfc_is_size_zero_array instead of
      	is_size_zero_array.
      	(gfc_simplify_count): Likewise.
      	(gfc_simplify_iall): Likewise.
      	(gfc_simplify_iany): Likewise.
      	(gfc_simplify_iparity): Likewise.
      	(gfc_simplify_minval): Likewise.
      	(gfc_simplify_maxval): Likewise.
      	(gfc_simplify_product): Likewise.
      	(gfc_simplify_sum): Likewise.
      
      2017-03-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/84697
      	PR fortran/66128
      	* gfortran.dg/minmaxloc_zerosize_1.f90: New test.
      
      From-SVN: r258305
      Thomas Koenig committed
    • re PR libstdc++/84601 (std::optional<std::pair<int, int>> is not assignment copyable) · 447346e4
      PR libstdc++/84601
      * include/std/optional (_Optional_payload): Split into multiple
      specializations that can handle different cases of trivial or
      non-trivial assignment operators.
      * testsuite/20_util/optional/84601.cc: New.
      * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
      
      From-SVN: r258304
      Ville Voutilainen committed
    • re PR c++/84684 (inserting random code / flags produces wrong code) · 1dc23505
      	PR c++/84684
      	* constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
      	arguments.
      
      	* g++.dg/cpp1z/constexpr-84684.C: New test.
      
      From-SVN: r258303
      Marek Polacek committed
    • re PR c/84721 (ICE in c_push_function_context, at c-decl.c:9667) · 849bbdb9
      	PR c/84721
      	* c-parser.c (add_debug_begin_stmt): Don't add DEBUG_BEGIN_STMT if
      	!building_stmt_list_p ().
      
      	* gcc.dg/pr84721.c: New test.
      
      From-SVN: r258302
      Jakub Jelinek committed
    • re PR target/84710 (ICE: RTL check: expected code 'reg', have 'subreg' in… · 2728bf8f
      re PR target/84710 (ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1896 with -O -fno-forward-propagate)
      
      	PR target/84710
      	* combine.c (try_combine): Use reg_or_subregno instead of handling
      	just paradoxical SUBREGs and REGs.
      
      	* gcc.dg/pr84710.c: New test.
      
      From-SVN: r258301
      Jakub Jelinek committed
    • re PR fortran/56667 (Syntax error causes misleading message: "Expected PARAMETER… · 284ee475
      re PR fortran/56667 (Syntax error causes misleading message: "Expected PARAMETER symbol in complex constant")
      
      2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/56667
      	* primary.c (match_sym_complex_part): Give the matcher for an implied
      	do-loop a chance to run.
      
      2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/56667
      	* gfortran.dg/implied_do_2.f90: New test.
      	* gfortran.dg/coarray_8.f90: Update for new error message.
      
      From-SVN: r258281
      Steven G. Kargl committed
    • trans.c (convert_with_check): Fix typo in the condition guarding the overflow… · 21288963
      trans.c (convert_with_check): Fix typo in the condition guarding the overflow check emitted for the upper...
      
      	* gcc-interface/trans.c (convert_with_check): Fix typo in the condition
      	guarding the overflow check emitted for the upper bound of a floating-
      	point conversion.
      
      From-SVN: r258277
      Eric Botcazou committed
    • [ARC] Cleanup unused functions. · b51addd6
      Remove unused pieces of code.
      
      gcc/
      2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.c (arc_finalize_pic): Remove function.
      	(arc_must_save_register): We use single base PIC register, remove
      	checks to save/restore the PIC register.
      	(arc_expand_prologue): Likewise.
      	* config/arc/arc-protos.h (arc_set_default_type_attributes):
      	Remove.
      	(arc_verify_short): Likewise.
      	(arc_attr_type): Likewise.
      	* config/arc/arc.c (arc_set_default_type_attributes): Remove.
      	(walk_stores): Likewise.
      	(arc_address_cost): Make it static.
      	(arc_verify_short): Likewise.
      	(branch_dest): Likewise.
      	(arc_attr_type): Likewise.
      	* config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
      	(TARGET_INSN_LENGTH_PARAMETERS): Likewise.
      	(arc_final_prescan_insn): Remove inserting the nops due to
      	hardware hazards.  It is done in reorg step.
      	(insn_length_variant_t): Remove.
      	(insn_length_parameters_t): Likewise.
      	(arc_insn_length_parameters): Likewise.
      	(arc_get_insn_variants): Likewise.
      	* config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
      
      From-SVN: r258275
      Claudiu Zissulescu committed
    • re PR inline-asm/84683 (internal compiler error: in move_for_stack_reg, at reg-stack.c:1173) · 155958dd
      	PR inline-asm/84683
      	* reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
      	assertion failure.
      
      	* g++.dg/ext/pr84683.C: New test.
      
      From-SVN: r258273
      Jakub Jelinek committed
    • re PR tree-optimization/84687 (error: invalid conversion in gimple call with -O3 and -ffast-math) · 16ef0a8c
      	PR tree-optimization/84687
      	* omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
      	on new_node->decl.
      	* match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
      
      	* gcc.dg/pr84687.c: New test.
      
      From-SVN: r258272
      Jakub Jelinek committed
    • [C++] [PR84231] overload on cond_expr in template · 23d63b45
      A non-type-dependent COND_EXPR within a template is reconstructed with
      the original operands, after one with non-dependent proxies is built to
      determine its result type.  This is problematic because the operands of
      a COND_EXPR determined to be an rvalue may have been converted to denote
      their rvalue nature.  The reconstructed one, however, won't have such
      conversions, so lvalue_kind may not recognize it as an rvalue, which may
      lead to e.g. incorrect overload resolution decisions.
      
      If we mistake such a COND_EXPR for an lvalue, overload resolution might
      regard a conversion sequence that binds it to a non-const reference as
      viable, and then select that over one that binds it to a const
      reference.  Only after template substitution would we rebuild the
      COND_EXPR, realize it is an rvalue, and conclude the reference binding
      is ill-formed, but at that point we'd have long discarded any alternate
      candidates we could have used.
      
      This patch modifies the logic that determines whether a
      (non-type-dependent) COND_EXPR in a template is an lvalue, to rely on
      its type, more specifically, on the presence of a REFERENCE_TYPE
      wrapper.  In order to avoid a type bootstrapping problem, the
      REFERENCE_TYPE that wraps the type of some such COND_EXPRs is
      introduced earlier, so that we don't have to test for lvalueness of
      the expression using the very code that we wish to change.
      
      
      for  gcc/cp/ChangeLog
      
      	PR c++/84231
      	* tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
      	only while processing template decls.
      	* typeck.c (build_x_conditional_expr): Move wrapping of
      	reference type around type...
      	* call.c (build_conditional_expr_1): ... here.  Rename
      	is_lvalue to is_glvalue.
      	* parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
      	INDIRECT_REF of COND_EXPR too.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/84231
      	* g++.dg/pr84231.C: New.
      
      From-SVN: r258271
      Alexandre Oliva committed