1. 21 Oct, 2016 21 commits
    • adxintrin.h (_subborrow_u32, [...]): Formatting fixes. · 810cb191
      	* config/i386/adxintrin.h (_subborrow_u32, _addcarry_u32,
      	_addcarryx_u32, _subborrow_u64, _addcarry_u64, _addcarryx_u64):
      	Formatting fixes.
      	* config/i386/rdseedintrin.h (_rdseed16_step, _rdseed32_step,
      	_rdseed64_step): Likewise.
      	* config/i386/tbmintrin.h (__bextri_u32): Likewise.
      
      From-SVN: r241412
      Jakub Jelinek committed
    • re PR target/78057 (FAIL: gcc.target/i386/bmi-{4,5,6}.c) · 9c4c8b7b
      	PR target/78057
      	* config/i386/i386.c: Include fold-const-call.h, tree-vrp.h
      	and tree-ssanames.h.
      	(ix86_fold_builtin): Fold IX86_BUILTIN_[LT]ZCNT{16,32,64}
      	with INTEGER_CST argument.
      	(ix86_gimple_fold_builtin): New function.
      	(TARGET_GIMPLE_FOLD_BUILTIN): Define.
      
      	* gcc.target/i386/pr78057.c: New test.
      
      From-SVN: r241411
      Jakub Jelinek committed
    • Split <functional> into smaller pieces · c05986b9
      	* include/Makefile.am: Add <bits/refwrap.h> and <bits/std_function.h>.
      	Order alphabetically.
      	* include/Makefile.in: Regenerate.
      	* include/bits/refwrap.h: New header.
      	(_Maybe_get_result_type,_Weak_result_type_impl, _Weak_result_type)
      	(_Reference_wrapper_base_impl, _Reference_wrapper_base)
      	(reference_wrapper, ref, cref): Move here from <functional>.
      	* include/bits/shared_ptr_base.h: Include <bits/refwrap.h> and
      	<bits/stl_function.h> instead of <functional>.
      	* include/bits/std_function.h: New header.
      	(_Maybe_unary_or_binary_function, bad_function_call)
      	(__is_location_invariant, _Nocopy_types, _Any_data)
      	(_Simple_type_wrapper, _Function_base, _Function_handler, function):
      	Move here from <functional>.
      	* include/bits/unique_ptr.h: Include <bits/stl_function.h>.
      	* include/std/functional: Include new headers and move components to
      	them.
      	* include/std/future: Include <bits/std_function.h> instead of
      	<functional>.
      	* include/std/mutex: Likewise.
      	* include/std/regex: Likewise.
      	* src/c++11/compatibility-thread-c++0x.cc: Include <functional>.
      	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
      	* testsuite/20_util/default_delete/void_neg.cc: Likewise.
      	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust dg-error
      	lines.
      	* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
      	* testsuite/30_threads/packaged_task/49668.cc: Include <functional>.
      
      From-SVN: r241410
      Jonathan Wakely committed
    • dwarf2out.c (ranges_table): Change into vec<dw_ranges, va_gc> *. · 75a434a9
      	* dwarf2out.c (ranges_table): Change into vec<dw_ranges, va_gc> *.
      	(ranges_by_label): Change into vec<dw_ranges_by_label, va_gc> *.
      	(ranges_table_allocated, ranges_table_in_use,
      	ranges_by_label_allocated, ranges_by_label_in_use,
      	RANGES_TABLE_INCREMENT): Removed.
      	(add_ranges_num): Use vec_safe_push into ranges_table.
      	(add_ranges_by_labels): Use vec_safe_push into ranges_by_label.
      	(output_ranges): Adjust for ranges_table and ranges_by_label
      	conversion from arrays to vec.
      	(add_high_low_attributes, dwarf2out_finish): Adjust for range_table
      	conversion from arrays to vec.
      	(dwarf2out_c_finalize): Don't clear ranges_table_allocated,
      	ranges_table_in_use, ranges_by_label_allocated and
      	ranges_by_label_in_use.  Set ranges_by_label to NULL instead of 0.
      
      From-SVN: r241409
      Jakub Jelinek committed
    • dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute if needed. · 8e6982f7
      	* dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute
      	if needed.  Re-add origin_die variable and its initialization.
      cp/
      	* cp-objcp-common.c (cp_decl_dwarf_attribute): Handle
      	DW_AT_const_expr.
      testsuite/
      	* g++.dg/debug/dwarf2/constexpr-var-1.C: New test.
      
      From-SVN: r241408
      Jakub Jelinek committed
    • gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns even for… · f9faea37
      gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns even for -fstack-reuse=none, or for volatile vars etc.
      
      	* gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns
      	even for -fstack-reuse=none, or for volatile vars etc.
      
      From-SVN: r241407
      Jakub Jelinek committed
    • Start adding selftests for print_rtx · e2ce9e83
      gcc/ChangeLog:
      	* print-rtl-function.c (flag_compact): Move extern decl to...
      	* print-rtl.h (flag_compact): ...here.
      	* rtl-tests.c (selftests::assert_rtl_dump_eq): New function.
      	(ASSERT_RTL_DUMP_EQ): New macro.
      	(selftest::test_dumping_regs): New function.
      	(selftest::test_dumping_insns): New function.
      	(selftest::test_uncond_jump): Add uses of ASSERT_RTL_DUMP_EQ on
      	the insns.
      	(selftest::rtl_tests_c_tests): Call the new test functions.
      
      From-SVN: r241405
      David Malcolm committed
    • Use global operator new in std::make_exception_ptr · 6652a944
      	* libsupc++/exception_ptr.h (make_exception_ptr): Qualify new.
      	* testsuite/18_support/exception_ptr/make_exception_ptr_2.cc: New
      	test.
      
      From-SVN: r241404
      Jonathan Wakely committed
    • re PR fortran/69566 ([OOP] Failure of SELECT TYPE with unlimited polymorphic function result) · de514d40
      2016-10-21  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/69566
      	* resolve.c (fixup_array_ref): New function.
      	(resolve_select_type): Gather up the rank and array reference,
      	if any, from the selector. Fix up the 'associate name' and the
      	'associate entities' as necessary.
      	* trans-expr.c (gfc_conv_class_to_class): If the symbol backend
      	decl is a FUNCTION_DECL, use the 'fake_result_decl' instead.
      
      2016-10-21  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/69566
      	* gfortran.dg/select_type_37.f03: New test.
      
      From-SVN: r241403
      Paul Thomas committed
    • make tablejump_p return the label as a rtx_insn * · dfe08bc4
      gcc/ChangeLog:
      
      2016-10-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* cfgcleanup.c (merge_blocks_move_successor_nojumps): Adjust.
      	(outgoing_edges_match): Likewise.
      	(try_crossjump_to_edge): Likewise.
      	* cfgrtl.c (try_redirect_by_replacing_jump): Likewise.
      	(rtl_tidy_fallthru_edge): Likewise.
      	* rtl.h (tablejump_p): Adjust prototype.
      	* rtlanal.c (tablejump_p): Return the label as a rtx_insn *.
      
      From-SVN: r241402
      Trevor Saunders committed
    • make LABEL_REF_LABEL a rtx_insn * · 04a121a7
      While changing LABEL_REF_LABEL it might as well become an inline
      function, so that its clearer what types are involved.  Unfortunately
      because it is still possible to use XEXP and related macros on a
      LABEL_REF rtx you can still set the field to be a non insn rtx.  The
      other unfortunate thing is that the generators actually create LABEL_REF
      rtx that refer to MATCH_x rtx, so there we actually need to use XEXP to
      bypass the checking this patch adds.
      
      gcc/ChangeLog:
      
      2016-10-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* rtl.h (label_ref_label): New function.
      	(set_label_ref_label): New function.
      	(LABEL_REF_LABEL): Delete.
      	* alias.c (rtx_equal_for_memref_p): Adjust.
      	* cfgbuild.c (make_edges): Likewise.
      	(purge_dead_tablejump_edges): Likewise.
      	* cfgexpand.c (convert_debug_memory_address): Likewise.
      	* cfgrtl.c (patch_jump_insn): Likewise.
      	* combine.c (distribute_notes): Likewise.
      	* cse.c (hash_rtx_cb): Likewise.
      	(exp_equiv_p): Likewise.
      	(fold_rtx): Likewise.
      	(check_for_label_ref): Likewise.
      	* cselib.c (rtx_equal_for_cselib_1): Likewise.
      	(cselib_hash_rtx): Likewise.
      	* emit-rtl.c (mark_label_nuses): Likewise.
      	* explow.c (convert_memory_address_addr_space_1): Likewise.
      	* final.c (output_asm_label): Likewise.
      	(output_addr_const): Likewise.
      	* gcse.c (add_label_notes): Likewise.
      	* genconfig.c (walk_insn_part): Likewise.
      	* genrecog.c (validate_pattern): Likewise.
      	* ifcvt.c (cond_exec_get_condition): Likewise.
      	(noce_emit_store_flag): Likewise.
      	(noce_get_alt_condition): Likewise.
      	(noce_get_condition): Likewise.
      	* jump.c (maybe_propagate_label_ref): Likewise.
      	(mark_jump_label_1): Likewise.
      	(redirect_exp_1): Likewise.
      	(rtx_renumbered_equal_p): Likewise.
      	* lra-constraints.c (operands_match_p): Likewise.
      	* print-rtl.c (print_value): Likewise.
      	* reload.c (find_reloads): Likewise.
      	* reload1.c (set_label_offsets): Likewise.
      	* reorg.c (get_branch_condition): Likewise.
      	* rtl-tests.c (test_uncond_jump): Likewise.
      	* rtl.c (rtx_equal_p_cb): Likewise.
      	(rtx_equal_p): Likewise.
      	* rtlanal.c (reg_mentioned_p): Likewise.
      	(rtx_referenced_p): Likewise.
      	(get_condition): Likewise.
      	* varasm.c (const_hash_1): Likewise.
      	(compare_constant): Likewise.
      	(const_rtx_hash_1): Likewise.
      	(output_constant_pool_1): Likewise.
      
      From-SVN: r241401
      Trevor Saunders committed
    • Fix PR 71627 - unable to find a register to spill · 1d64ceb0
      Tweak find_valid_class_1 to consider a reg class if atleast one regno in
      that class is ok.
      
      Previously, even if no regno was in_hard_reg_set_p, the code goes ahead and
      considers rclass as valid. bad was set only if a regno was in the reg
      class *and* HARD_REGNO_MODE_OK was false - if both were false, bad wasn't
      set and the reload got a wrong rclass. If that happened to be the best
      one, this eventually lead to find_reg running out of registers to
      spill, because the chosen rclass wouldn't have enough regs.
      
      Also, it expected every regno in rclass to be valid for mode 
      i.e., if any regno fails HARD_REGNO_MODE_OK, it rejected the rclass. The
      comments in the original commit for find_valid_class_1 say atleast one
      regno is ok. This was updated to say "class which contains only
      registers" when in_hard_reg_set_p was introduced in place of just
      TEST_HARD_REG_BIT.
      
      This commit fixes both of the above problems by not breaking out of the loop
      on first unavailable regno. Instead, it computes the rclass size consisting
      of all regnos in that class valid for the current mode. 
      
      If that computed size is zero, the rclass would be skipped, as it won't 
      beat best_size. Otherwise, the computed size is used to choose the best 
      rclass, instead of the static size from reg_class_size.
      
      gcc/
      
      2016-10-21  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
      
      	PR target/71627
      	* reload.c (find_valid_class_1): Allow regclass if atleast one
      	regno in regclass is ok. Compute and use rclass size based on
      	actually available regnos for mode in rclass.
      
      gcc/testsuite/
      
      2016-10-21  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
      
      	PR target/71627
      	* gcc.target/avr/pr71627.c: New test
      
      From-SVN: r241400
      Senthil Kumar Selvaraj committed
    • MAINTAINERS: Update email address · 942c0db8
      	* MAINTAINERS: Update email address
      
      Co-Authored-By: Ulrich Weigand <uweigand@de.ibm.com>
      
      From-SVN: r241399
      Hartmut Penner committed
    • tree-ssa-loop-split.c: Remove trailing spaces. · 1c0a8806
      	* tree-ssa-loop-split.c: Remove trailing spaces.
      	* match.pd: Likewise.
      
      From-SVN: r241398
      Eric Botcazou committed
    • sparc-modes.def (CCV): New. · 85729229
      	* config/sparc/sparc-modes.def (CCV): New.
      	(CCXV): Likewise.
      	* config/sparc/predicates.md (v_comparison_operator): New.
      	(icc_comparison_operator): Add support for CCV/CCXV.
      	(xcc_comparison_operator): Likewise.
      	* config/sparc/sparc.c (output_cbranch): Likewise.
      	(sparc_print_operand): Likewise.
      	* config/sparc/sparc.md (UNSPEC_{ADD,SUB,NEG}V): New constants.
      	(uaddvdi4): New expander.
      	(addvdi4): Likewise.
      	(uaddvdi4_sp32): New instruction.
      	(addvdi4_sp32): Likewise.
      	(uaddvsi4): New expander.
      	(addvsi4): Likewise.
      	(cmp_ccc_plus_sltu_set): New instruction.
      	(cmp_ccv_plus): Likewise.
      	(cmp_ccxv_plus): Likewise.
      	(cmp_ccv_plus_set): Likewise.
      	(cmp_ccxv_plus_set): Likewise.
      	(cmp_ccv_plus_sltu_set): Likewise.
      	(uaddvdi4): New expander.
      	(subvdi4): Likewise.
      	(usubdi4_sp32): New instruction.
      	(subvdi4_sp32): Likewise.
      	(usubvsi4): New expander.
      	(subvsi4): Likewise.
      	(cmpsi_minus_sltu_set): New instruction.
      	(cmp_ccv_minus): Likewise.
      	(cmp_ccxv_minus): Likewise.
      	(cmp_ccv_minus_set): Likewise.
      	(cmp_ccxv_minus_set): Likewise.
      	(cmp_ccv_minus_sltu_set): Likewise.
      	(unegvdi3): New expander.
      	(negvdi3): Likewise.
      	(unegdi3_sp32): New instruction.
      	(negvdi3_sp32): Likewise.
      	(unegvsi3): New expander.
      	(negvsi3): Likewise.
      	(cmp_ccc_neg_sltu_set): New instruction.
      	(cmp_ccv_neg): Likewise.
      	(cmp_ccxv_neg): Likewise.
      	(cmp_ccv_neg_set): Likewise.
      	(cmp_ccxv_neg_set): Likewise.
      	(cmp_ccv_neg_sltu_set): Likewise.
      
      From-SVN: r241397
      Eric Botcazou committed
    • pure-code.exp: Require arm_cortex_m effective target. · d17f2c3b
      2016-10-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	* gcc.target/arm/pure-code/pure-code.exp: Require arm_cortex_m
      	effective target.
      
      From-SVN: r241396
      Andre Vieira committed
    • [ree] PR rtl-optimization/78038: Handle global register dataflow definitions in ree · 0d47cee6
      	PR rtl-optimization/78038
      	* ree.c (get_defs): Return NULL if a defining insn for REG cannot
      	be deduced to set REG through the RTL structure.
      	(make_defs_and_copies_lists): Return false on a failing get_defs call.
      
      	* gcc.target/aarch64/pr78038.c: New test.
      
      From-SVN: r241395
      Kyrylo Tkachov committed
    • re PR c++/78051 (error: dead STMT in EH table when using -O2) · a20d03c8
      2016-10-21  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78051
      	* tree-vrp.c (evrp_dom_walker::before_dom_children): Update stmt
      	and mark replaced if folding did something.
      
      	* g++.dg/torture/pr78051.C: New testcase.
      
      From-SVN: r241394
      Richard Biener committed
    • rs6000.c (rs6000_assemble_visibility): Swap "internal" and "protected" in visibility types. · 924fae46
      * config/rs6000/rs6000.c (rs6000_assemble_visibility): Swap "internal"
      and "protected" in visibility types.
      (rs6000_xcoff_declare_function_name): Fix formatting.
      (rs6000_xcoff_declare_object_name): Fix formatting.
      
      From-SVN: r241393
      David Edelsohn committed
    • transfer.c (finalize_transfer): Free format data in child procedures. · bdff7e51
      2016-10-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	* io/transfer.c (finalize_transfer): Free format data in child
      	procedures. (st_read_done, st_write_done): Don't free format
      	hash table.
      
      From-SVN: r241392
      Jerry DeLisle committed
    • Daily bump. · 2b1c4034
      From-SVN: r241391
      GCC Administrator committed
  2. 20 Oct, 2016 19 commits
    • array.c (gfc_match_array_constructor): Remove set, but unused variable. · 45f596d9
      2016-10-20  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* array.c (gfc_match_array_constructor): Remove set, but unused
      	variable.
      
      From-SVN: r241388
      Steven G. Kargl committed
    • i386.c (ix86_fold_builtin): Handle IX86_BUILTIN_INFQ and IX86_BUILTIN_HUGE_VALQ here ... · a7cfe836
      	* config/i386/i386.c (ix86_fold_builtin): Handle IX86_BUILTIN_INFQ
      	and IX86_BUILTIN_HUGE_VALQ here ...
      	(ix86_expand_builtin): ... not here.
      
      From-SVN: r241387
      Uros Bizjak committed
    • wdate-time.c: Restored test case. · f3ecd50f
      2016-10-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-c++-common/wdate-time.c: Restored test case.
              * g++.dg/warn/Wconversion-real.C: Deleted empty file.
      
      From-SVN: r241385
      Bernd Edlinger committed
    • runtime: rewrite interface code into Go · 6b752cfa
          
          I started to copy the Go 1.7 interface code, but the gc and gccgo
          representations of interfaces are too different.  So instead I rewrote
          the gccgo interface code from C to Go.  The code is largely the same as
          it was, but the names are more like those used in the gc runtime.
          
          I also copied over the string comparison functions, and tweaked the
          compiler to use eqstring when comparing strings for equality.
          
          Reviewed-on: https://go-review.googlesource.com/31591
      
      From-SVN: r241384
      Ian Lance Taylor committed
    • * g++.dg/cpp1z/inline-var1.C (w): Initialize to 64 + 2. · fceabe50
      From-SVN: r241383
      Jakub Jelinek committed
    • * doc/gty.texi (for_user): Use @item next to @findex. · 8e92bce9
      From-SVN: r241382
      Jakub Jelinek committed
    • re PR target/78037 (Incorrect code generated at optimization level -O2 for tzcnt and binary and) · f56ea76e
      	PR target/78037
      	* config/i386/bmiintrin.h (__tzcnt_u16): Call __builtin_ia32_tzcnt_u16.
      	(__tzcnt_u32, _tzcnt_u32): Call __builtin_ia32_tzcnt_u32.
      	(__tzcnt_u64, _tzcnt_u64): Call __builtin_ia32_tzcnt_u64.
      	* config/i386/lzcntintrin.h (__lzcnt_u16): Call
      	__builtin_ia32_lzcnt_u16.
      	(__lzcnt_u32, _lzcnt_u32): Call __builtin_ia32_lzcnt_u32.
      	(__lzcnt_u64, _lzcnt_u64): Call __builtin_ia32_lzcnt_u64.
      	* config/i386/i386.md (UNSPEC_LZCNT, UNSPEC_TZCNT): New unspecs.
      	(ctz<mode>2, *ctz<mode>2): Use SWI48 mode iterator.
      	(bmi_tzcnt_<mode>): New expander.
      	(*bmi_tzcnt_<mode>_falsedep_1): New define_insn_and_split pattern.
      	(*bmi_tzcnt_<mode>_falsedep, *bmi_tzcnt_<mode>): New insn patterns.
      	(clz<mode>2_lzcnt, *clz<mode>2_lzcnt): Use SWI48 mode iterator.
      	(lzcnt_<mode>): New expander.
      	(*lzcnt_<mode>_falsedep_1): New define_insn_and_split pattern.
      	(*lzcnt_<mode>_falsedep, *lzcnt_<mode>): New insn patterns.
      	* config/i386/i386-builtin-types.def (UINT_FTYPE_UINT): New.
      	(UINT64_FTYPE_UINT64): New.
      	* config/i386/i386-builtin.def (__builtin_clzs): Remove description.
      	(__builtin_ia32_lzcnt_u16): New description.
      	(__builtin_ia32_lzcnt_u32): Ditto.
      	(__builtin_ia32_lzcnt_u64): Ditto.
      	(__builtin_ctzs): Remove description.
      	(__builtin_ia32_tzcnt_u16): New description.
      	(__builtin_ia32_tzcnt_u32): Ditto.
      	(__builtin_ia32_tzcnt_u64): Ditto.
      	* config/i386/i386.c (ix86_expand_args_builtin): Handle
      	UINT_FTYPE_UINT and UINT64_FTYPE_UINT64.
      
      testsuite/ChangeLog:
      
      	PR target/78037
      	* gcc.target/i386/pr78037.c: New test.
      
      From-SVN: r241381
      Uros Bizjak committed
    • Do not fixup edges for a thunk in LTRANS (PR lto/78049) · 3e23d1bc
      	PR lto/78049
      	* lto-streamer-in.c (fixup_call_stmt_edges_1): Replace value
      	comparison with STMT_UID_NOT_IN_RANGE.
      	(fixup_call_stmt_edges): Do not fixup edges of a thunk in
      	LTRANS.
      
      From-SVN: r241380
      Martin Liska committed
    • compare-elim.c (conforming_compare): Accept UNSPECs. · 2c35bbe1
      	* compare-elim.c (conforming_compare): Accept UNSPECs.
      	(find_comparison_dom_walker::before_dom_children): Deal with
      	instructions both using and killing the flags register.
      	(equivalent_reg_at_start): New function extracted from...
      	(try_eliminate_compare): ...here.  Use it and add support for
      	registers and UNSPECs as second operand of the compare.
      	* config/visium/visium-modes.def (CCV): New.
      	* config/visium/predicates.md (visium_v_comparison_operator): New.
      	(visium_branch_operator): Deal with CCV mode.
      	* config/visium/visium.c (visium_select_cc_mode): Likewise.
      	(output_cbranch): Likewise.
      	* config/visium/visium.md (UNSPEC_{ADD,SUB,NEG}V): New constants.
      	(uaddv<mode>4): New expander.
      	(addv<mode>4): Likewise.
      	(add<mode>3_insn_set_carry): New instruction.
      	(add<mode>3_insn_set_overflow): Likewise.
      	(addsi3_insn_set_overflow): Likewise.
      	(usubv<mode>4): New expander.
      	(subv<mode>4): Likewise.
      	(sub<mode>3_insn_set_carry): New instruction.
      	(sub<mode>3_insn_set_overflow): Likewise.
      	(subsi3_insn_set_overflow): Likewise.
      	(unegv<mode>3): New expander.
      	(negv<mode>3): Likewise.
      	(neg<mode>2_insn_set_overflow): New instruction.
      	(addv_tst<mode>): Likewise.
      	(subv_tst<mode>): Likewise.
      	(negv_tst<mode>): Likewise.
      	(cbranch<mode>4_addv_insn): New splitter and instruction.
      	(cbranch<mode>4_subv_insn): Likewise.
      	(cbranch<mode>4_negv_insn): Likewise.
      
      From-SVN: r241379
      Eric Botcazou committed
    • tree-ssa-alias.c (ptrs_compare_unequal): Remove code duplication. · 40b8428e
      2016-10-20  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-alias.c (ptrs_compare_unequal): Remove code duplication.
      	Handle decls possibly not bound.
      	* tree-ssa-structalias.c (get_constraint_for_ssa_var): Add
      	nothing_id for decls that might not be bound if we are interested
      	for the address.
      	(get_constraint_for_component_ref): Deal with that.
      
      From-SVN: r241378
      Richard Biener committed
    • c-common.c (c_common_truthvalue_conversion): Fix the comment. · eff89e01
      2016-10-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-common.c (c_common_truthvalue_conversion): Fix the comment.
      
      From-SVN: r241377
      Bernd Edlinger committed
    • loop splitting · 28df8730
      (approved at https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00648.html )
      
      	* common.opt (-fsplit-loops): New flag.
      	* passes.def (pass_loop_split): Add.
      	* opts.c (default_options_table): Add OPT_fsplit_loops entry at -O3.
      	(enable_fdo_optimizations): Add loop splitting.
      	* timevar.def (TV_LOOP_SPLIT): Add.
      	* tree-pass.h (make_pass_loop_split): Declare.
      	* tree-ssa-loop-manip.h (rewrite_into_loop_closed_ssa_1): Declare.
      	* tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h,
      	* tree-ssa-loop-split.c: New file.
      	* Makefile.in (OBJS): Add tree-ssa-loop-split.o.
      	* doc/invoke.texi (fsplit-loops): Document.
      	* doc/passes.texi (Loop optimization): Add paragraph about loop
      	splitting.
      
      testsuite/
      	* gcc.dg/loop-split.c: New test.
      	* gcc.dg/tree-ssa/ifc-9.c: Update.
      	* gcc.dg/tree-ssa/ifc-10.c: Update.
      
      From-SVN: r241374
      Michael Matz committed
    • Prepare shared_ptr for array support · a2e0054e
      	* include/backward/auto_ptr.h (__shared_ptr(auto_ptr&&))
      	(shared_ptr(auto_ptr&&)): Adjust template parameter lists.
      	* include/bits/shared_ptr.h (__sp_compatible_with)
      	(__sp_is_constructible): New helper traits for shared_ptr.
      	(shared_ptr::_Convertible): Replace with _Constructible.
      	(shared_ptr::_Constructible, shared_ptr::_Assignable): Forward checks
      	to base class.
      	(shared_ptr::shared_ptr, shared_ptr::operator=): Constrain template
      	with _Constructible and _Assignable.
      	(shared_ptr::shared_ptr(shared_ptr<_Tp1>, _Tp*)): Use element_type
      	instead of _Tp.
      	(operator<): Likewise.
      	(operator>): Define in terms of operator<.
      	(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
      	element_type instead of _Tp.
      	(reinterpret_pointer_cast): Define for C++17.
      	(weak_ptr::_Convertible): Replace with _Constructible.
      	(weak_ptr::_Constructible, weak_ptr::_Assignable): Forward checks
      	to base class.
      	(weak_ptr::weak_ptr, weak_ptr::operator=): Constrain templates
      	with _Constructible and _Assignable.
      	* include/bits/shared_ptr_base.h (__shared_ptr::_Convertible): Replace
      	with _Compatible.
      	(__shared_ptr::_SafeConv): New constraint for incoming raw pointers.
      	(__shared_ptr::_Compatible): New constraint for converting from
      	other types of shared_ptr and weak_ptr.
      	(__shared_ptr::_Assignable): Define in terms of _Compatible.
      	(__shared_ptr::_UniqCompatible, __shared_ptr::_UniqAssignable): New
      	constraints for converting from unique_ptr.
      	(__shared_ptr::__shared_ptr, __shared_ptr::operator=): Constrain
      	template with _SaveConf, _Compatible and _Assignable. Remove
      	__glibcxx_function_requires concept checks. Add static assertion for
      	deleter expression being well-formed.
      	(__shared_ptr::__shared_ptr(__shared_ptr<_Tp1>, _Tp*))
      	(__shared_ptr::operator*, __shared_ptr::operator->)
      	(__shared_ptr::get, __shared_ptr::_M_ptr): Use element_type instead
      	of _Tp.
      	(operator<): Likewise.
      	(operator>): Define in terms of operator<.
      	(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
      	element_type instead of _Tp.
      	(reinterpret_pointer_cast): Define for C++17.
      	(weak_ptr::_Convertible): Replace with _Compatible.
      	(weak_ptr::_Compatible, weak_ptr::_Assignable): New constraints for
      	conversions from other types of weak_ptr and shared_ptr.
      	(__weak_ptr::__weak_ptr, __weak_ptr::operator=): Constrain templates
      	with _Constructible and _Assignable.
      	(__weak_ptr::_M_ptr): Use element_type instead of _Tp.
      	* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Adjust
      	dg-error pattern.
      	* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Test conversions.
      	* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
      	* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
      	* testsuite/20_util/shared_ptr/casts/reinterpret.cc: New test.
      
      From-SVN: r241373
      Jonathan Wakely committed
    • Do the operator= SFINAE in the return type for optional, · f320e6a0
      not in the template parameters.
      * include/std/optional (operator=(_Up&&)): Move SFINAE
      from template parameters to the return type.
      (operator=(const optional<_Up>&)): Likewise.
      (operator=(optional<_Up>&&)): Likewise.
      
      From-SVN: r241372
      Ville Voutilainen committed
    • Tweak whitespace in std::allocator files · 88b3e631
      	* include/bits/allocator.h: Remove trailing whitespace, tab-indent.
      	* include/ext/new_allocator.h: Likewise.
      
      From-SVN: r241371
      Jonathan Wakely committed
    • Makefile (x86-64/Linux): Restore missing pairs. · 2e20345f
      	* gcc-interface/Makefile (x86-64/Linux): Restore missing pairs.
      	(x86/Darwin): Likewise.
      
      From-SVN: r241369
      Nicolas Roche committed
    • class.c (gfc_build_class_symbol): Set the kind of _len to gfc_charlen_int_kind… · 40cc684d
      class.c (gfc_build_class_symbol): Set the kind of _len to gfc_charlen_int_kind to catch changes of the charlen kind.
      
      gcc/fortran/ChangeLog:
      
      2016-10-20  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	* class.c (gfc_build_class_symbol): Set the kind of _len to
      	gfc_charlen_int_kind to catch changes of the charlen kind.
      
      From-SVN: r241367
      Andre Vehreschild committed