1. 25 Apr, 2017 12 commits
    • S/390: PR80464: Split MEM->GPR vector moves · 854dbb3c
      We do this already for TImode values but it was missing for vector
      modes.
      
      gcc/ChangeLog:
      
      2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/80464
      	* config/s390/vector.md: Split MEM->GPR vector moves for
      	non-s_operand addresses.
      
      gcc/testsuite/ChangeLog:
      
      2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/80464
      	* gfortran.fortran-torture/compile/pr80464.f90: New test.
      
      From-SVN: r247134
      Andreas Krebbel committed
    • S/390: PR79895: Fix TImode constant handling · 3cb9ee2f
      The P constraint letter is supposed to match every constant which is
      acceptable during reload.  However, constraints do not appear to be
      able to handle const_wide_int yet.  It works with predicates so the
      alternative is modelled with a new predicate now.
      
      gcc/ChangeLog:
      
      2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/79895
      	* config/s390/predicates.md (reload_const_wide_int_operand): New
      	predicate.
      	* config/s390/s390.md ("movti"): Remove d/P alternative.
      	("movti_bigconst"): New pattern definition.
      
      gcc/testsuite/ChangeLog:
      
      2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/79895
      	* gcc.target/s390/pr79895.c: New test.
      
      From-SVN: r247133
      Andreas Krebbel committed
    • S/390: PR80080: Optimize atomic patterns. · 03db9ab5
      The attached patch optimizes the atomic_exchange and atomic_compare
      patterns on s390 and s390x (mostly limited to SImode and DImode).
      Among general optimizaation, the changes fix most of the problems
      reported in PR 80080:
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80080
      
      gcc/ChangeLog:
      
      2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
      
      	PR target/80080
      	* s390-protos.h (s390_expand_cs_hqi): Removed.
      	(s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
      	* config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
      	modes as well as CCZ1mode and CCZmode.
      	(s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
      	signature of s390_emit_compare_and_swap.
      	(s390_expand_cs_hqi): Likewise, make static.
      	(s390_expand_cs_tdsi): Generate an explicit compare before trying
      	compare-and-swap, in some cases.
      	(s390_expand_cs): Wrapper function.
      	(s390_expand_atomic_exchange_tdsi): New backend specific expander for
      	atomic_exchange.
      	(s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
      	* config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
      	patterns for small and large integers.  Forbid symref memory operands.
      	Move expander to s390.c.  Require cc register.
      	("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
      	("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
      	("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
      	("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
      	symref memory operands.  Remove CC mode and call s390_match_ccmode
      	instead.
      	("atomic_exchange<mode>"): Allow and implement all integer modes.
      
      gcc/testsuite/ChangeLog:
      
      2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
      
      	PR target/80080
      	* gcc.target/s390/md/atomic_compare_exchange-1.c: New test.
      	* gcc.target/s390/md/atomic_compare_exchange-1.inc: New test.
      	* gcc.target/s390/md/atomic_exchange-1.inc: New test.
      
      From-SVN: r247132
      Dominik Vogt committed
    • S/390: Load and test peephole. · 97160c9b
      gcc/ChangeLog:
      
      2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
      
      	* config/s390/s390.md (define_peephole2): New peephole to help
      	combining the load-and-test pattern with volatile memory.
      
      From-SVN: r247131
      Dominik Vogt committed
    • S/390: Use load-on-condition in cstorecc4 · 3ea685e7
      gcc/ChangeLog:
      
      2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
      
      	* config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
      	with CCZmode for TARGET_Z196.
      
      From-SVN: r247130
      Dominik Vogt committed
    • re PR rtl-optimization/80501 (Wrong code w/ a signed char, a shift, and a conversion to int) · ba5d69f3
      	PR rtl-optimization/80501
      	* combine.c (make_compound_operation_int): Set subreg_code to SET
      	even for AND with mask of the sign bit of mode.
      
      	* gcc.c-torture/execute/pr80501.c: New test.
      
      From-SVN: r247128
      Jakub Jelinek committed
    • re PR rtl-optimization/80500 (ICE: internal consistency failure (error: invalid… · 39259462
      re PR rtl-optimization/80500 (ICE: internal consistency failure (error: invalid rtl sharing found in the insn))
      
      	PR rtl-optimization/80500
      	* loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
      	sum's initial value.
      
      	* gcc.dg/pr80500.c: New test.
      
      From-SVN: r247126
      Jakub Jelinek committed
    • thunderx2t99.md (thunderx2t99_crc): New Reservation. · 904588d8
      
      	* config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.
      
      
      Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
      
      From-SVN: r247125
      Julian Brown committed
    • thunderx2t99.md (thunderx2t99_aes): New Reservation. · 424d5df0
      
      	* config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
      	(thunderx2t99_sha): New Reservation.
      
      
      Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
      
      From-SVN: r247124
      Julian Brown committed
    • Let tree_single_nonzero_warnv_p use range information · bb0249cb
      2017-04-25  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/cmpmul-1.c: New file.
      	* gcc.dg/Wstrict-overflow-18.c: Xfail.
      
      From-SVN: r247123
      Marc Glisse committed
    • aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix type for 1-element load. · 452e929a
      
      	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
      	type for 1-element load.
      
      
      Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
      
      From-SVN: r247122
      Julian Brown committed
    • Daily bump. · e1bd42b9
      From-SVN: r247121
      GCC Administrator committed
  2. 24 Apr, 2017 18 commits
    • re PR fortran/80121 (Memory leak with derived-type intent(out) argument) · be420eb8
      2017-04-22  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/80121
      	* gfortran.dg/intent_out_9.f90: Remove deprecated cleanup-tree-dump
      	directive.
      
      From-SVN: r247115
      Janus Weil committed
    • Regenerate .pot files. · c1c1c8ea
      gcc/po:
      	* gcc.pot: Regenerate.
      
      libcpp/po:
      	* cpplib.pot: Regenerate.
      
      From-SVN: r247113
      Joseph Myers committed
    • types.rst (gccjit::type::get_const): Remove comment. · 0ebd1f00
      gcc_jit_type_get_aligned
      
      gcc/jit/ChangeLog:
      	* docs/cp/topics/types.rst (gccjit::type::get_const): Remove
      	comment.
      	(gccjit::type::get_aligned): Add.
      	* docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_7.
      	* docs/topics/types.rst: Add gcc_jit_type_get_aligned.
      	* docs/_build/texinfo/libgccjit.texi: Regenerate.
      	* jit-playback.c (gcc::jit::playback::type::get_aligned): New
      	method.
      	* jit-playback.h (gcc::jit::playback::type::get_aligned): New
      	method.
      	* jit-recording.c: Within namespace gcc::jit::recording...
      	(type::get_aligned): New method.
      	(memento_of_get_aligned::replay_into): New method.
      	(memento_of_get_aligned::make_debug_string): New method.
      	(memento_of_get_aligned::write_reproducer): New method.
      	* jit-recording.h: Within namespace gcc::jit::recording...
      	(type::get_aligned): New method.
      	(type::accepts_writes_from): Strip off qualifications from
      	this when comparing pointer equality.
      	(decorated_type): New subclass of type, subsuming the
      	commonality between memento_of_get_const and
      	memento_of_get_volatile.
      	(memento_of_get_const): Make a subclass of decorated_type,
      	rather than type.
      	(memento_of_get_volatile): Likewise.
      	(memento_of_get_aligned): Likewise.
      	* libgccjit++.h: Within namespace gccjit...
      	(type::get_const): New method.
      	(type::get_aligned): New method.
      	* libgccjit.c (gcc_jit_type_get_aligned): New function.
      	* libgccjit.h (gcc_jit_type_get_aligned): New decl.
      	* libgccjit.map (LIBGCCJIT_ABI_7): New
      	(gcc_jit_type_get_aligned): Add.
      
      gcc/testsuite/ChangeLog:
      	* jit.dg/all-non-failing-tests.h: Add test-alignment.c.
      	* jit.dg/test-alignment.c: New test case.
      	* jit.dg/test-alignment.cc: New test case.
      	* jit.dg/test-error-gcc_jit_type_get_aligned-non-power-of-two.c:
      	New test case.
      
      From-SVN: r247111
      David Malcolm committed
    • decl.c (grokdeclarator): Use %qT instead of %<%T%> in · 761ad35c
              * decl.c (grokdeclarator): Use %qT instead of %<%T%> in
              * diagnostics.
              (start_enum): Likewise.
              (build_enumerator): Likewise. Use %qE instead of plain %E.
              * parser.c (cp_parser_mem_initializer_list): Use %qD instead of
              %<%D%> in diagnostics.
              (cp_parser_elaborated_type_specifier): Likewise.
              * pt.c (make_pack_expansion): Use %qT and %qE instead of
              %<%T%> and %<%E%> in diagnostics.
              (tsubst_pack_expansion): Likewise.
      
      From-SVN: r247110
      Volker Reichelt committed
    • Fix location of sizeof/alignof (PR c++/80016) · 412f61f0
      PR c++/80016 reports an issue with bizarre underlined range
      for a complicated expression.
      
      The root cause for the incorrect *starting* location of that range
      is that alignof and sizeof expressions currently have
      start == finish == caret at the opening parenthesis of the
      expression.
      
      This patch fixes this by generating appropriate start and finish
      locations for alignof and sizeof expressions.
      
      gcc/cp/ChangeLog:
      	PR c++/80016
      	* parser.c (cp_parser_unary_expression):  Generate a location
      	range for alignof and sizeof expressions.
      
      gcc/testsuite/ChangeLog:
      	PR c++/80016
      	* g++.dg/plugin/diagnostic-test-expressions-1.C (test_sizeof): New
      	test function.
      	(test_alignof): New test function.
      
      From-SVN: r247108
      David Malcolm committed
    • X /[ex] 4 < Y /[ex] 4 · a8492d5e
      2017-04-24  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* match.pd (X/[ex]C CMP Y/[ex]C): New transformation.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/cmpexactdiv-2.c: New file.
      
      From-SVN: r247107
      Marc Glisse committed
    • parser.c (cp_parser_cv_qualifier_seq_opt): Add fix-it info to error message. · ec856f5f
              * parser.c (cp_parser_cv_qualifier_seq_opt): Add fix-it info to
              error message.
              (cp_parser_virt_specifier_seq_opt): Likewise.
              (set_and_check_decl_spec_loc): Likewise twice.
      
              * g++.dg/diagnostic/duplicate1.C: New test.
              * g++.dg/cpp0x/duplicate1.C: New test.
      
      From-SVN: r247105
      Volker Reichelt committed
    • [PR 80293] Dont totally-scalarize char arrays · a753df11
      2017-04-24  Martin Jambor  <mjambor@suse.cz>
      
      	PR tree-optimization/80293
      	* tree-sra.c (scalarizable_type_p): New parameter const_decl, make
      	char arrays not totally scalarizable if it is false.
      	(analyze_all_variable_accesses): Pass correct value in the new
      	parameter.  Add a statistics counter.
      
      testsuite/
      	* g++.dg/tree-ssa/pr80293.C: New test.
      
      From-SVN: r247104
      Martin Jambor committed
    • PR libstdc++/80506 fix constant used in condition · 957221f5
      	PR libstdc++/80506
      	* include/bits/random.tcc (gamma_distribution::operator()): Fix magic
      	number used in loop condition.
      
      From-SVN: r247099
      Jonathan Wakely committed
    • Fix (PR middle-end/79931) · 3ebd8e62
      2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
      
      	PR middle-end/79931
      	* ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
      2017-04-24  Martin Liska  <mliska@suse.cz>
      
      	PR middle-end/79931
      	* g++.dg/ipa/pr79931.C: New test.
      
      From-SVN: r247097
      Martin Liska committed
    • re PR fortran/80494 (ICE in wide_int_to_tree) · f30a1190
      2017-04-24  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/80494
      	* tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
      	out for complex types.
      
      	* gfortran.dg/pr80494.f90: New testcase.
      
      From-SVN: r247095
      Richard Biener committed
    • PR libstdc++/80504 qualify calls to avoid ADL · 6e2e575a
      	PR libstdc++/80504
      	* include/bits/refwrap.h (ref, cref): Qualify calls.
      	* testsuite/20_util/reference_wrapper/80504.cc: New test.
      
      From-SVN: r247094
      Jonathan Wakely committed
    • PR libstdc++/80493 fix invalid exception specification · 71f257f7
      	PR libstdc++/80493
      	* include/experimental/optional (optional::swap): Fix exception
      	specification.
      
      From-SVN: r247093
      Jonathan Wakely committed
    • tree-ssa-sccvn.h (run_scc_vn): Adjust prototype. · 24c40f9a
      2017-04-24  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
      	* tree-ssa-sccvn.c (print_scc): Print SCC size.
      	(extract_and_process_scc_for_name): Never fail but drop SCC to varying.
      	(DFS): Adjust and never fail.
      	(sccvn_dom_walker::fail): Remove.
      	(sccvn_dom_walker::before_dom_children): Adjust.
      	(run_scc_vn): Likewise and never fail.
      	* tree-ssa-pre.c (pass_pre::execute): Adjust.
      	(pass_fre::execute): Likewise.
      
      From-SVN: r247092
      Richard Biener committed
    • re PR tree-optimization/79725 (Sinking opportunity missed if blocked by dead stmt) · 4c7c437c
      2017-04-24  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/79725
      	* tree-ssa-sink.c (statement_sink_location): Return whether
      	failure reason was zero uses.  Move that check later.
      	(sink_code_in_bb): Deal with zero uses by removing the stmt
      	if possible.
      
      	* gcc.dg/tree-ssa/ssa-sink-15.c: New testcase.
      
      From-SVN: r247091
      Richard Biener committed
    • re PR c++/2972 (-Wuninitialized could warn about uninitialized member variable… · d21a8e3b
      re PR c++/2972 (-Wuninitialized could warn about uninitialized member variable usage in constructors)
      
      2017-04-24  Richard Biener  <rguenther@suse.de>
      
      	PR c++/2972
      	* tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
      	pointer-based references.
      
      	* g++.dg/warn/Wuninitialized-10.C: New testcase.
      
      From-SVN: r247090
      Richard Biener committed
    • re PR bootstrap/79814 (pass-instances.def:36:14: error:… · 3c5b0ca4
      re PR bootstrap/79814 (pass-instances.def:36:14: error: ‘*<unknown>.gcc::pass_manager::pass_warn_unused_result_1’ is used uninitialized in this function)
      
      2017-04-24  Richard Biener  <rguenther@suse.de>
      
      	PR bootstrap/79814
      	* pass_manager.h (pass_manager::operator new): Remove.
      	(pass_manager::operator delete): Likewise.
      	* passes.c (pass_manager::operator new): Remove.
      	(pass_manager::operator delete): Likewise.
      	(pass_manager::pass_manager): Zero individual pass members.
      
      From-SVN: r247089
      Richard Biener committed
    • Daily bump. · 63829927
      From-SVN: r247088
      GCC Administrator committed
  3. 23 Apr, 2017 4 commits
    • re PR fortran/80484 (Three syntax errors involving derived-type I/O) · c7eb642e
      2017-04-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/80484
      	* io.c (format_lex): Check for '/' and set token to FMT_SLASH.
      	(check_format): Move FMT_DT checking code to data_desc section.
      	* module.c (gfc_match_use): Include the case of INTERFACE_DTIO.
      
      	PR fortran/80484
      	* gfortran.dg/dtio_29.f03: New test.
      
      From-SVN: r247084
      Jerry DeLisle committed
    • re PR fortran/80121 (Memory leak with derived-type intent(out) argument) · 60fc41bd
      2017-04-22  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/80121
      	* trans-types.c (gfc_conv_procedure_call): Deallocate the components
      	of allocatable intent(out) arguments.
      
      2017-04-22  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/80121
      	* gfortran.dg/intent_out_9.f90: New test case.
      
      From-SVN: r247083
      Janus Weil committed
    • re PR target/70799 (STV pass does not convert DImode shifts) · 2eb8a343
      	PR target/70799
      	* config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
      	<case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
      	Check "XEXP (src, 1)" operand here.
      	<case PLUS, case MINUS, case IOR, case XOR, case AND>:
      	Check "XEXP (src, 1)" operand here.
      	(dimode_scalar_chain::make_vector_copies): Detect count register
      	of a shift instruction.  Zero extend count register from QImode
      	to DImode to satisfy vector shift pattern count operand predicate.
      	Substitute vector shift count operand with a DImode copy.
      	(dimode_scalar_chain::convert_reg): Ditto, zero-extend from
      	vector register.
      
      testsuite/ChangeLog:
      
      	PR target/70799
      	* gcc.target/i186/pr70799-4.c: New test.
      
      From-SVN: r247082
      Uros Bizjak committed
    • Daily bump. · a1687c59
      From-SVN: r247081
      GCC Administrator committed
  4. 22 Apr, 2017 1 commit
  5. 21 Apr, 2017 5 commits
    • re PR fortran/80392 ([OOP] ICE with allocatable polymorphic function result in a… · fc23d35a
      re PR fortran/80392 ([OOP] ICE with allocatable polymorphic function result in a procedure pointer component)
      
      2017-04-21  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/80392
      	* trans-types.c (gfc_get_derived_type): Prevent an infinite loop when
      	building a derived type that includes a procedure pointer component
      	with a polymorphic result.
      
      2017-04-21  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/80392
      	* gfortran.dg/proc_ptr_comp_49.f90: New test case.
      
      From-SVN: r247069
      Janus Weil committed
    • PR c++/80179 - ICE with initialized flexible array member. · 176e79b5
      	* constexpr.c (verify_ctor_sanity): Handle flexible array members.
      
      From-SVN: r247067
      Jason Merrill committed
    • i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>. · f2f3e54d
      	* config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
      	Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
      	(*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
      	UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
      	(UNSPEC_NOREX_MEM): Remove definition.
      
      From-SVN: r247066
      Uros Bizjak committed
    • pr79804.c: Add additional dg-error directive. · 7b9efd03
      	* gcc.target/i386/pr79804.c: Add additional dg-error directive.
      
      From-SVN: r247065
      Uros Bizjak committed
    • PR libstdc++/80316 make promise::set_value throw no_state error · 946ecd6a
      	PR libstdc++/80316
      	* include/std/future (_State_baseV2::_Setter::operator()): Remove
      	_S_check calls that are done after the pointer to the shared state is
      	already dereferenced.
      	(_State_baseV2::_Setter<_Res, void>): Define specialization for void
      	as partial specialization so it can be defined within the definition
      	of _State_baseV2.
      	(_State_baseV2::__setter): Call _S_check.
      	(_State_baseV2::__setter(promise<void>*)): Add overload for use by
      	promise<void>::set_value and promise<void>::set_value_at_thread_exit.
      	(promise<T>, promise<T&>, promise<void>): Make _State a friend.
      	(_State_baseV2::_Setter<void, void>): Remove explicit specialization.
      	(promise<void>::set_value, promise<void>::set_value_at_thread_exit):
      	Use new __setter overload.
      	* testsuite/30_threads/promise/members/at_thread_exit2.cc: New test.
      	* testsuite/30_threads/promise/members/set_exception.cc: Test
      	promise<T&> and promise<void> specializations.
      	* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
      	Test for no_state error condition.
      	* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
      
      From-SVN: r247064
      Jonathan Wakely committed