1. 12 Aug, 2016 13 commits
    • re PR tree-optimization/57326 (Piecewise folding of operations on PHI nodes) · e373dd06
      2016-08-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/57326
      	* tree-ssa-pre.c (fully_constant_expression): Handle simplification
      	returning an SSA name.
      	(phi_translate_1): When fully_constant_expression returns a NAME
      	make sure we have a leader for it.
      
      	* gcc.dg/tree-ssa/ssa-pre-32.c: New testcase.
      	* gcc.dg/tree-ssa/loadpre14.c: Adjust.
      	* gcc.dg/tree-ssa/pr35287.c: Likewise.
      	* gcc.target/i386/pr45685.c: Likewise.
      	* gcc.dg/tree-ssa/predcom-1.c: Disable PRE.
      	* gcc.dg/tree-ssa/predcom-2.c: Likewise.
      	* gcc.dg/tree-ssa/predcom-3.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-sink-10.c: Likewise.
      	* gfortran.dg/pr34163.f90: Likewise.
      
      From-SVN: r239414
      Richard Biener committed
    • Create x.gcov file for binary w/o x.gcda file (PR · 20d1af89
      	* g++.dg/gcov/gcov-16.C: New test.
      	* lib/gcov.exp: Support new argument for run-gcov function.
      	    Adam Fineman  <afineman@afineman.com>
      
      	* gcov.c (process_file): Create .gcov file when .gcda
      	file is missing.
      
      From-SVN: r239413
      Martin Liska committed
    • Add test coverage for PR gcov-profile/35590 · 5cacda56
      	PR gcov-profile/35590
      	* gcc.dg/tree-prof/val-prof-7.c: Improve test coverage.
      
      From-SVN: r239412
      Martin Liska committed
    • re PR c/7652 (-Wswitch-break : Warn if a switch case falls through) · 191816a3
      	PR c/7652
      gcc/
      	* alias.c (find_base_value): Adjust fall through comment.
      	* cfgexpand.c (expand_debug_expr): Likewise.
      	* combine.c (find_split_point): Likewise.
      	(expand_compound_operation): Likewise.  Add FALLTHRU.
      	(make_compound_operation): Adjust fall through comment.
      	(canon_reg_for_combine): Add FALLTHRU.
      	(force_to_mode): Adjust fall through comment.
      	(simplify_shift_const_1): Likewise.
      	(simplify_comparison): Likewise.
      	* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Add
      	FALLTHRU.
      	* config/aarch64/predicates.md: Likewise.
      	* config/i386/i386.c (function_arg_advance_32): Likewise.
      	(ix86_gimplify_va_arg): Likewise.
      	(print_reg): Likewise.
      	(ix86_print_operand): Likewise.
      	(ix86_build_const_vector): Likewise.
      	(ix86_expand_branch): Likewise.
      	(ix86_sched_init_global): Adjust fall through comment.
      	(ix86_expand_args_builtin): Add FALLTHRU.
      	(ix86_expand_builtin): Likewise.
      	(ix86_expand_vector_init_one_var): Likewise.
      	* config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise.
      	(rs6000_adjust_cost): Likewise.
      	(insn_must_be_first_in_group): Likewise.
      	* config/rs6000/rs6000.md: Likewise.  Adjust fall through comment.
      	* dbxout.c (dbxout_symbol): Adjust fall through comment.
      	* df-scan.c (df_uses_record): Likewise.
      	* dojump.c (do_jump): Add FALLTHRU.
      	* dwarf2out.c (mem_loc_descriptor): Likewise.  Adjust fall through
      	comment.
      	(resolve_args_picking_1): Adjust fall through comment.
      	(loc_list_from_tree_1): Likewise.
      	* expmed.c (make_tree): Likewise.
      	* expr.c (expand_expr_real_2): Add FALLTHRU.
      	(expand_expr_real_1): Likewise.  Adjust fall through comment.
      	* fold-const.c (const_binop): Adjust fall through comment.
      	(fold_truth_not_expr): Likewise.
      	(fold_cond_expr_with_comparison): Add FALLTHRU.
      	(fold_binary_loc): Likewise.
      	(contains_label_1): Adjust fall through comment.
      	(multiple_of_p): Likewise.
      	* gcov-tool.c (process_args): Add FALLTHRU.
      	* genattrtab.c (check_attr_test): Likewise.
      	(write_test_expr): Likewise.
      	* genconfig.c (walk_insn_part): Likewise.
      	* genpreds.c (validate_exp): Adjust fall through comment.
      	(needs_variable): Likewise.
      	* gensupport.c (get_alternatives_number): Add FALLTHRU.
      	(subst_dup): Likewise.
      	* gimple-pretty-print.c (dump_gimple_assign): Likewise.
      	* gimplify.c (gimplify_addr_expr): Adjust fall through comment.
      	(gimplify_scan_omp_clauses): Add FALLTHRU.
      	(goa_stabilize_expr): Likewise.
      	* graphite-isl-ast-to-gimple.c (substitute_ssa_name): Adjust fall
      	through comment.
      	* hsa-gen.c (get_address_from_value): Likewise.
      	* ipa-icf.c (sem_function::hash_stmt): Likewise.
      	* ira.c (ira_setup_alts): Add FALLTHRU.
      	* lra-eliminations.c (lra_eliminate_regs_1): Adjust fall through
      	comment.
      	* lto-streamer-out.c (lto_output_tree_ref): Add FALLTHRU.
      	* opts.c (common_handle_option): Likewise.
      	* read-rtl.c (read_rtx_code): Likewise.
      	* real.c (round_for_format): Likewise.
      	* recog.c (asm_operand_ok): Likewise.
      	* reginfo.c (reg_scan_mark_refs): Adjust fall through comment.
      	* reload1.c (set_label_offsets): Likewise.
      	(eliminate_regs_1): Likewise.
      	(reload_reg_reaches_end_p): Likewise.
      	* rtlanal.c (commutative_operand_precedence): Add FALLTHRU.
      	(rtx_cost): Likewise.
      	* sched-rgn.c (is_exception_free): Likewise.
      	* simplify-rtx.c (simplify_rtx): Adjust fall through comment.
      	* stor-layout.c (int_mode_for_mode): Likewise.
      	* toplev.c (print_to_asm_out_file): Likewise.
      	(print_to_stderr): Likewise.
      	* tree-cfg.c (gimple_verify_flow_info): Likewise.
      	* tree-chrec.c (chrec_fold_plus_1): Add FALLTHRU.
      	(chrec_fold_multiply): Likewise.
      	(evolution_function_is_invariant_rec_p): Likewise.
      	(for_each_scev_op): Likewise.
      	* tree-data-ref.c (siv_subscript_p): Likewise.
      	(get_references_in_stmt): Likewise.
      	* tree.c (find_placeholder_in_expr): Adjust fall through comment.
      	(substitute_in_expr): Likewise.
      	(type_cache_hasher::equal): Likewise.
      	(walk_type_fields): Likewise.
      	* var-tracking.c (adjust_mems): Add FALLTHRU.
      	(set_dv_changed): Adjust fall through comment.
      	* varasm.c (default_function_section): Add FALLTHRU.
      gcc/c-family/
      	* c-common.c (scalar_to_vector): Adjust fall through comment.
      	* c-opts.c (c_common_handle_option): Likewise.
      	* c-pragma.c (handle_pragma_pack): Add FALLTHRU.
      	* c-pretty-print.c (c_pretty_printer::postfix_expression): Adjust
      	fall through comment.
      	* cilk.c (extract_free_variables): Add FALLTHRU.
      gcc/c/
      	* c-parser.c (c_parser_external_declaration): Add FALLTHRU.
      	(c_parser_postfix_expression): Likewise.
      	* c-typeck.c (build_unary_op): Adjust fall through comment.
      	(c_mark_addressable): Likewise.
      gcc/cp/
      	* call.c (add_builtin_candidate): Add FALLTHRU.
      	(build_integral_nontype_arg_conv): Adjust fall through comment.
      	(build_new_op_1): Add FALLTHRU.
      	(convert_like_real): Adjust fall through comment.
      	* class.c (fixed_type_or_null): Likewise.
      	* constexpr.c (cxx_eval_constant_expression): Likewise.
      	(potential_constant_expression_1): Likewise.  Add FALLTHRU.
      	* cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
      	(cp_fold): Add FALLTHRU.
      	* cvt.c (build_expr_type_conversion): Adjust fall through comment.
      	* cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
      	(pp_cxx_qualified_id): Likewise.
      	(cxx_pretty_printer::constant): Adjust fall through comment.
      	(cxx_pretty_printer::primary_expression): Add FALLTHRU.
      	(pp_cxx_pm_expression): Adjust fall through comment.
      	(cxx_pretty_printer::expression): Add FALLTHRU.
      	(cxx_pretty_printer::declaration_specifiers): Reformat code.
      	(pp_cxx_type_specifier_seq): Adjust fall through comment.
      	(pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
      	* error.c (dump_type): Adjust fall through comment.
      	(dump_decl): Likewise.
      	* mangle.c (write_type): Likewise.
      	* method.c (synthesized_method_walk): Add FALLTHRU.
      	* name-lookup.c (arg_assoc_type): Likewise.
      	* parser.c (cp_lexer_print_token): Adjust fall through comment.
      	(cp_parser_primary_expression): Add FALLTHRU.
      	(cp_parser_operator): Likewise.
      	* pt.c (find_parameter_packs_r): Likewise.
      	(tsubst_aggr_type): Adjust fall through comment.
      	* semantics.c (finish_omp_clauses): Add FALLTHRU.
      	* tree.c (lvalue_kind): Likewise.
      gcc/fortran/
      	* decl.c (match_attr_spec): Add FALLTHRU.
      	* primary.c (match_arg_list_function): Likewise.
      	* resolve.c (resolve_operator): Adjust fall through comment.
      	(fixup_charlen): Add FALLTHRU.
      	(resolve_allocate_expr): Adjust fall through comment.
      	* trans-array.c (gfc_conv_ss_startstride): Add FALLTHRU.
      	* trans-intrinsic.c (gfc_conv_intrinsic_len): Adjust fall through
      	comment.
      gcc/java/
      	* expr.c (java_truthvalue_conversion): Adjust fall through comment.
      	* jcf-io.c (verify_constant_pool): Likewise.
      	* typeck.c (promote_type): Likewise.
      gcc/objc/
      	* objc-encoding.c (encode_type): Add FALLTHRU.
      libcpp/
      	* lex.c (search_line_fast): Add FALLTHRU.
      	(_cpp_lex_direct): Likewise.
      	(cpp_token_val_index): Adjust fall through comment.
      	* macro.c (parse_params): Add FALLTHRU.
      	* pch.c (count_defs): Adjust fall through comment.
      	(write_defs): Likewise.
      libiberty/
      	* cp-demangle.c (d_print_mod): Add FALLTHRU.
      
      From-SVN: r239410
      Marek Polacek committed
    • re PR c/7652 (-Wswitch-break : Warn if a switch case falls through) · 0c44e080
      	PR c/7652
      	* tree-complex.c (expand_complex_division): Add missing break.
      
      From-SVN: r239409
      Marek Polacek committed
    • re PR sanitizer/71042 (libtsan requires __pointer_chk_guard@GLIBC_PRIVATE (6)) · e23a7a99
      	PR sanitizer/71042
      	* tsan/tsan_platform_linux.cc: Cherry-pick upstream r278292.
      	* tsan/tsan_rtl_aarch64.S: Likewise.
      
      From-SVN: r239407
      Jakub Jelinek committed
    • passes.c (execute_todo): Do not push/pop TV_TODO. · 8df06bd0
      2016-08-12  Richard Biener  <rguenther@suse.de>
      
      	* passes.c (execute_todo): Do not push/pop TV_TODO.
      	(execute_one_ipa_transform_pass): Move timevar push/pop TODO execution.
      	(execute_one_pass): Likewise.
      	* common.opt (ftime-report-details): New switch.
      	* doc/invoke.texi (ftime-report-details): Document.
      	* timevar.h (timer::print_row): Adjust signature.
      	(timer::all_zero): New static helper.
      	(timer::child_map_t): New typedef.
      	(timer::time_var_def): Add children field.
      	* timevar.c (timer::named_items::print): Adjust.
      	(timer::~timer): Free timevar recorded children.
      	(timer::pop_internal): When -ftime-report-details record
      	time spent in sub-timevars.
      	(timer::print_row): Adjust.
      	(timer::print): Print sub-timevar stats, use all_zero.
      	* timevar.def (TV_TODO): Remove.
      
      From-SVN: r239406
      Richard Biener committed
    • re PR target/72851 (memory hog with -O3 on s390x-linux-gnu) · 663eecfd
      2016-08-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/72851
      	* tree-ssa-propagate.c: Include cfganal.h.  Rewrite block and stmt
      	worklists to use bitmaps indexed in execution order.
      	(executable_blocks, cfg_blocks_num, cfg_blocks_tail, cfg_blocks_head,
      	bb_in_list, interesting_ssa_edges, varying_ssa_edges): Remove.
      	(cfg_blocks): Make a bitmap.
      	(bb_to_cfg_order, cfg_order_to_bb, ssa_edge_worklist, uid_to_stmt):
      	New globals.
      	(cfg_blocks_empty_p): Adjust.
      	(cfg_blocks_add): Likewise.
      	(cfg_blocks_get): Likewise.
      	(add_ssa_edge): Likewise.
      	(add_control_edge): Likewise.
      	(simulate_stmt): Likewise.
      	(process_ssa_edge_worklist): Likewise.
      	(simulate_block): Likewise.
      	(ssa_prop_init): Compute PRE order and stmt UIDs.
      	(ssa_prop_fini): Adjust.
      	(ssa_propagate): Adjust.
      
      	* gcc.dg/torture/pr72851.c: New testcase.
      
      From-SVN: r239405
      Richard Biener committed
    • tree-vrp.c (vrp_visit_phi_node): Allow a last iteration if the currently… · 2650da88
      tree-vrp.c (vrp_visit_phi_node): Allow a last iteration if the currently executable edges have fixed ranges.
      
      2016-08-12  Richard Biener  <rguenther@suse.de>
      
      	* tree-vrp.c (vrp_visit_phi_node): Allow a last iteration if
      	the currently executable edges have fixed ranges.  Always
      	go through update_value_range.
      
      From-SVN: r239404
      Richard Biener committed
    • [PR63240] generate debug info for defaulted member functions · e366d7d8
      This implements <http://dwarfstd.org/ShowIssue.php?issue=141215.3>, a
      proposal already accepted for inclusion in DWARF-5, but using
      DW_AT_GNU_defaulted instead of DW_AT_defaulted as the attribute name,
      because the attribute id for DW_AT_defaulted is not yet publicly
      available.
      
      for  include/ChangeLog
      
      	PR debug/63240
      	* dwarf2.def (DW_AT_deleted, DW_AT_defaulted): New.
      	* dwarf2.h (enu dwarf_defaulted_attribute): New.
      
      for  gcc/ChangeLog
      
      	PR debug/63240
      	* langhooks-def.h
      	(LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Const_tree-ify.
      	(LANG_HOOKS_FUNCTION_DECL_DELETED_P): Likewise.
      	(LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Set default.
      	(LANG_HOOKS_DECLS): Add it.
      	* langhooks.h (struct lang_hooks_for_decls): Add
      	function_decl_defaulted.  Const_tree-ify
      	function_decl_explicit_p and function_decl_deleted_p.
      	* dwarf2out.c (gen_subprogram_die): Add DW_AT_defaulted
      	attribute.  Add DW_AT_deleted instead of DW_AT_GNU_deleted,
      	also at strict DWARF v5.
      
      for  gcc/cp/ChangeLog
      
      	PR debug/63240
      	* cp-objcp-common.c (cp_function_decl_defaulted): New.
      	(cp_function_decl_explicit_p): Const_tree-ify.
      	(cp_function_decl_deleted_p): Likewise.
      	* cp-objcp-common.h (cp_function_decl_defaulted): Declare.
      	(cp_function_decl_explicit_p): Const_tree-ify.
      	(cp_function_decl_deleted_p): Likewise.
      	(LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.
      
      for  gcc/testsuite/ChangeLog
      
      	PR debug/63240
      	* g++.dg/debug/dwarf2/defaulted-member-function-1.C: New.
      	* g++.dg/debug/dwarf2/defaulted-member-function-2.C: New.
      	* g++.dg/debug/dwarf2/defaulted-member-function-3.C: New.
      	* g++.dg/debug/dwarf2/deleted-member-function.C: Expect
      	DW_AT_deleted.
      
      From-SVN: r239403
      Alexandre Oliva committed
    • [PR55641] drop spurious const_type from reference_type variables · 71e1a6a4
      Although C++ reference types, denoted by DW_TAG_reference_type in
      DWARFv2+ debug info, are unchangeable, we output names of reference type
      with DW_TAG_const_type, because internally we mark such variables as
      TREE_READONLY.  That's an internal implementation detail that shouldn't
      leak to debug information.  This patch fixes this.
      
      for  gcc/ChangeLog
      
      	PR debug/55641
      	* dwarf2out.c (decl_quals): Don't map TREE_READONLY to
      	TYPE_QUAL_CONST in reference-typed decls.
      
      for  gcc/testsuite/ChangeLog
      
      	PR debug/55641
      	* g++.dg/debug/dwarf2/ref-1.C: New.
      
      From-SVN: r239402
      Alexandre Oliva committed
    • [PR49366] emit loc exprs for C++ non-virtual pmf template value parms · 8aaf799b
      We used to emit, in debug information, the values bound to pointer to
      member function template parameters only when they were NULL or
      virtual member functions, because those can be represented with
      DW_AT_const_value.
      
      In order to represent the symbolic pointer to member function
      constants for non-virtual member functions, we'd need to be able to
      emit relocations for part of DW_AT_const_value, which we don't.  The
      more viable alternative is to use DW_AT_location to represent such
      values, as slated for inclusion in DWARFv5, according to
      <URL:http://www.dwarfstd.org/ShowIssue.php?issue=130412.1>.
      
      With this patch, when we can't emit a DW_AT_const_value, we emit each
      "member" of the pointer to member function "record" as a
      DW_OP_stack_value DW_OP_piece, as long as the referenced member
      function is output in the same translation unit, otherwise we'd get
      relocations to external symbols, something to avoid in debug sections.
      
      
      for  gcc/ChangeLog
      
      	PR debug/49366
      	* dwarf2out.c (loc_list_from_tree_1): Expand some CONSTRUCTORs
      	in DW_OP_pieces, just enough to handle pointers to member
      	functions.
      	(gen_remaining_tmpl_value_param_die_attribute): Use a location
      	expression on DWARFv5 if a constant value doesn't work.
      
      for  gcc/testsuite/ChangeLog
      
      	PR debug/49366
      	* g++.dg/debug/dwarf2/template-params-12.H: New.
      	* g++.dg/debug/dwarf2/template-params-12f.C: New.
      	* g++.dg/debug/dwarf2/template-params-12g.C: New.
      	* g++.dg/debug/dwarf2/template-params-12n.C: New.
      	* g++.dg/debug/dwarf2/template-params-12s.C: New.
      	* g++.dg/debug/dwarf2/template-params-12u.C: New.
      	* g++.dg/debug/dwarf2/template-params-12v.C: New.
      	* g++.dg/debug/dwarf2/template-params-12w.C: New.
      
      From-SVN: r239401
      Alexandre Oliva committed
    • Daily bump. · df5b19dc
      From-SVN: r239400
      GCC Administrator committed
  2. 11 Aug, 2016 25 commits
  3. 10 Aug, 2016 2 commits
    • missed from last commit · 763a282e
      From-SVN: r239343
      Alan Modra committed
    • [LRA] Reload of slow mems · 2e186411
      pr71680.c -m64 -O1 -mlra, ira output showing two problem insns.
      (insn 7 5 26 3 (set (reg:SI 159 [ a ])
              (mem/c:SI (reg/f:DI 158) [1 a+0 S4 A8])) pr71680.c:13 464 {*movsi_internal1}
           (expr_list:REG_EQUIV (mem/c:SI (reg/f:DI 158) [1 a+0 S4 A8])
              (nil)))
      (insn 26 7 27 3 (set (reg:DI 162)
              (unspec:DI [
                      (fix:SI (subreg:SF (reg:SI 159 [ a ]) 0))
                  ] UNSPEC_FCTIWZ)) pr71680.c:13 372 {fctiwz_sf}
           (expr_list:REG_DEAD (reg:SI 159 [ a ])
              (nil)))
      Insn 26 requires that reg 159 be of class FLOAT_REGS.
      
      first lra action:
      deleting insn with uid = 7.
      Changing pseudo 159 in operand 1 of insn 26 on equiv [r158:DI]
            Creating newreg=164, assigning class ALL_REGS to subreg reg r164
         26: r162:DI=unspec[fix(r164:SI#0)] 7
            REG_DEAD r159:SI
          Inserting subreg reload before:
         30: r164:SI=[r158:DI]
      [snip]
            Change to class FLOAT_REGS for r164
      
      Well, that didn't do much.  lra tried the equiv mem, found that didn't
      work, and had to reload.  Effectively getting back to the two original
      insns but r159 replaced with r164.  simplify_operand_subreg did not do
      anything in this case because SLOW_UNALIGNED_ACCESS was true (wrongly
      for power8, but that's beside the point).  So now we have, using
      abbreviated rtl notation:
      r164:SI=[r158:DI]
      r162:DI=unspec[fix(r164:SI)]
      The problem here is that the first insn isn't valid, due to the rs6000
      backend not supporting SImode in fprs, and r164 must be an fpr to make
      the second insn valid.
      
      next lra action:
            Creating newreg=165 from oldreg=164, assigning class GENERAL_REGS to r165
         30: r165:SI=[r158:DI]
          Inserting insn reload after:
         31: r164:SI=r165:SI
      so now we have
      r165:SI=[r158:DI]
      r164:SI=r165:SI
      r162:DI=unspec[fix(r164:SI)]
      
      This ought to be good on power8, except for one little thing.
      r165 is GENERAL_REGS so the first insn is good, a gpr load from mem.
      r164 is FLOAT_REGS, making the last insn good, a fctiwz.
      The second insn ought to be a sldi, mtvsrd, xscvspdpn combination, but
      that is only supported for SFmode.  So lra continue on reloading the
      second insn, but in vain because it never tries anything other than
      SImode and as noted above, SImode is not valid in fprs.
      
      What this patch does is arrange to emit the two reloads needed for the
      SLOW_UNALIGNED_ACCESS case at once, moving the subreg to the second
      insn in order to switch modes, producing:
      
      r164:SI=[r158:DI]
      r165:SF=r164:SI#0
      r162:DI=unspec[fix(r165:SF)]
      
      I've also tidied a couple of other things:
      1) "old" is unnecessary as it duplicated "operand".
      2) Rejecting mem subregs due to SLOW_UNALIGNED_ACCESS only makes sense
      if the original mode was not slow.
      
      	PR target/71680
      	* lra-constraints.c (simplify_operand_subreg): Allow subreg
      	mode for mem when SLOW_UNALIGNED_ACCESS if inner mode is also
      	slow.  Emit two reloads for slow mem case, first loading in
      	fast innermode, then converting to required mode.
      testsuite/
      	* gcc.target/powerpc/pr71680.c: New.
      
      From-SVN: r239342
      Alan Modra committed