1. 20 Sep, 2018 14 commits
    • [PR87013] check for .loc is_stmt support in the assembler · 894f597f
      Back when we had the logic to output is_stmt but never exercised it,
      it didn't matter that we didn't test for assembler support for it.
      But there are still assemblers out there that do not support it, so
      now that we enable the formerly latent is_stmt logic, we'd better make
      sure the assembler can deal with it.
      
      for  gcc/ChangeLog
      
      	PR bootstrap/87013
      	* configure.ac: Check for .loc is_stmt support.
      	* configure, config.in: Rebuilt.
      	* dwarf2out.c (dwarf2out_source_line): Skip is_stmt
      	if not supported.
      
      From-SVN: r264449
      Alexandre Oliva committed
    • gfortran.h (gfc_str_startswith): New macro. · 2eb3745a
      2018-09-20  Janus Weil  <janus@gcc.gnu.org>
      
      	* gfortran.h (gfc_str_startswith): New macro.
      	* decl.c (variable_decl, gfc_match_end): Use it.
      	* iresolve.c (is_trig_resolved): Ditto.
      	* module.c (load_omp_udrs, read_module): Ditto.
      	* options.c (gfc_handle_runtime_check_option): Ditto.
      	* primary.c (match_arg_list_function): Ditto.
      	* trans-decl.c (gfc_get_symbol_decl): Ditto.
      	* trans-expr.c (gfc_conv_procedure_call): Ditto.
      	* interface.c (dtio_op): Replace strncmp by strcmp.
      	* resolve.c (resolve_actual_arglist, resolve_function): Ditto.
      	* trans-expr.c (conv_arglist_function): Ditto.
      	* trans-intrinsic.c (gfc_conv_ieee_arithmetic_function): Replace macro
      	STARTS_WITH by gfc_str_startswith.
      
      From-SVN: r264448
      Janus Weil committed
    • rs6000: Remove -misel={yes,no} · 5596651a
      These options have been deprecated for many years, supplanted by -misel
      and -mno-isel.  This patch finally removes them.
      
      
      	* config/rs6000/rs6000.opt (misel=no, misel=yes): Delete.
      	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -misel=yes and
      	-misel=no.
      
      From-SVN: r264447
      Segher Boessenkool committed
    • [OpenACC] handle missing OMP_LIST_ clauses in fortran's parse tree debugger · aecbc4ff
      	gcc/fortran/
      	* dump-parse-tree.c (show_omp_clauses): Add missing omp list_types
      	and reorder the switch cases to match the enum in gfortran.h.
      
      From-SVN: r264446
      Cesar Philippidis committed
    • rs6000: Delete VECTOR_OTHER · fbcf65f9
      It's never used.
      
      
      	* config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
      	VECTOR_OTHER.
      	* config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete
      	case VECTOR_OTHER.
      
      From-SVN: r264444
      Segher Boessenkool committed
    • hypot-long-double.cc: Skip on arm*. · eb3f7317
      2018-09-20  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	* testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
      	on arm*.
      
      From-SVN: r264443
      Christophe Lyon committed
    • PR c++/87075 - ICE with constexpr array initialization. · 3ee378fb
      My patch of 2016-08-26 to avoid calling a trivial default constructor
      introduced TARGET_EXPRs initialized with void_node to express trivial
      initialization.  But when this shows up in a VEC_INIT_EXPR, we weren't
      prepared to handle it.  Fixed by handling it explicitly in
      cxx_eval_vec_init_1.
      
      	* constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.
      
      From-SVN: r264442
      Jason Merrill committed
    • Fix PEELING_FOR_NITERS calculation (PR 87288) · 2d2ee186
      PEELING_FOR_GAPS now means "peel one iteration for the epilogue",
      in much the same way that PEELING_FOR_ALIGNMENT > 0 means
      "peel that number of iterations for the prologue".  We weren't
      taking this into account when deciding whether we needed to peel
      further scalar iterations beyond the iterations for "gaps" and
      "alignment".
      
      Only the first test failed before the patch.  The other two
      are just for completeness.
      
      2018-09-20  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/87288
      	* tree-vect-loop.c (vect_analyze_loop_2): Take PEELING_FOR_GAPS
      	into account when determining PEELING_FOR_NITERS.
      
      gcc/testsuite/
      	PR tree-optimization/87288
      	* gcc.dg/vect/pr87288-1.c: New test.
      	* gcc.dg/vect/pr87288-2.c: Likewise,
      	* gcc.dg/vect/pr87288-3.c: Likewise.
      
      From-SVN: r264440
      Richard Sandiford committed
    • Add missing alignment checks in epilogue loop vectorisation (PR 86877) · 508a909e
      Epilogue loop vectorisation skips vect_enhance_data_refs_alignment
      since it doesn't make sense to version or peel the epilogue loop
      (that will already have happened for the main loop).  But this means
      that it also fails to check whether the accesses are suitably aligned
      for the new vector subarch.
      
      We don't seem to carry alignment information from the (potentially
      peeled or versioned) main loop to the epilogue loop, which would be
      good to fix at some point.  I think we want this patch regardless,
      since there's no guarantee that the alignment requirements are the
      same for every subarch.
      
      2018-09-20  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/86877
      	* tree-vect-loop.c (vect_analyze_loop_2): Call
      	vect_verify_datarefs_alignment.
      
      gcc/testsuite/
      	PR tree-optimization/86877
      	* gfortran.dg/vect/vect-8-epilogue.F90: New test.
      
      From-SVN: r264439
      Richard Sandiford committed
    • Add -Wclass-conversion. · a599af84
      	* c.opt (Wclass-conversion): New.
      
      	* decl.c (grok_op_properties): Change a warning from -Wconversion to
      	-Wclass-conversion.  Make it print the types.
      
      	* doc/invoke.texi: Document -Wclass-conversion.
      
      	* g++.dg/conversion/op4.C: Add dg-warning.
      	* g++.dg/warn/Wclass-conversion1.C: New test.
      	* g++.dg/warn/Wclass-conversion2.C: New test.
      	* g++.dg/warn/Wconversion5.C: Remove file.
      	* g++.dg/warn/conversion-function-1.C: Use -Wno-class-converison.
      	* g++.old-deja/g++.bugs/900215_01.C: Adjust dg-warning.
      	* g++.old-deja/g++.jason/conversion5.C: Likewise.
      
      From-SVN: r264438
      Marek Polacek committed
    • pa.c (pa_adjust_priority): Delete. · cf16d179
      	* config/pa/pa.c (pa_adjust_priority): Delete.
      	(TARGET_SCHED_ADJUST_PRIORITY): Delete define.
      
      From-SVN: r264437
      John David Anglin committed
    • pa.md (atomic_storeqi): Restore deleted expander. · bad4408c
      	* config/pa/pa.md (atomic_storeqi): Restore deleted expander.
      	(atomic_storehi): Likewise.
      	(atomic_storesi): Likewise.
      	(atomic_loaddi): Restore compare and swap exchange loop code.
      
      From-SVN: r264433
      John David Anglin committed
    • Daily bump. · fa8332f1
      From-SVN: r264432
      GCC Administrator committed
  2. 19 Sep, 2018 12 commits
    • re PR c++/87324 (g++ ICE with overriding initializers: Segmentation fault) · ff5c3c9d
      /cp
      2018-09-19  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/87324
      	* parser.c (cp_parser_initializer_list): Assign error_mark_node
      	to the index upon error.
      
      /testsuite
      2018-09-19  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/87324
      	* g++.dg/cpp0x/desig5.C: New.
      
      From-SVN: r264428
      Paolo Carlini committed
    • re PR fortran/84109 (ICE in adjustl on allocatable array of strings) · ad9fe5f3
      2018-09-19  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/84109
      	* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
      	assignment of deferred character intrinsic elemental function
      	results to a realocatable lhs must not be added to the exterior
      	block if they are array valued but must go to the loop body.
      
      2018-09-19  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/84109
      	* gfortran.dg/elemental_function_3.f90 : New test.
      
      From-SVN: r264427
      Paul Thomas committed
    • combine: Use correct mode in new comparison (PR86902) · ebdf17cb
      This code in try_combine uses the wrong mode.  This fails (with RTL
      checking) in trunk, but not in any released branches.
      
      
      	PR rtl-optimization/86902
      	* combine.c (try_combine): When changing the CC mode used, don't change
      	an unrelated mode in other_insn to that new CC mode.
      
      From-SVN: r264426
      Segher Boessenkool committed
    • PR c++/87357 - missing -Wconversion warning · fce33808
      	PR c++/87357 - missing -Wconversion warning
      	* decl.c (grok_op_properties): Remove diagnostic parts mentioning
      	a conversion to a reference to void.  Use
      	same_type_ignoring_top_level_qualifiers_p rather than comparing types
      	directly.
      
      	* g++.dg/warn/Wconversion5.C: New test.
      
      From-SVN: r264425
      Marek Polacek committed
    • dump_printf: use %T and %G throughout · 3c2a8ed0
      As promised at Cauldron, this patch uses %T and %G with dump_printf and
      dump_printf_loc calls to eliminate calls to
      
        dump_generic_expr (MSG_*, arg, TDF_SLIM)  (via %T)
      
      and
      
        dump_gimple_stmt (MSG_*, TDF_SLIM, stmt, 0)  (via %G)
      
      throughout the middle-end, simplifying numerous dump callsites.
      
      A few calls to these functions didn't match the above pattern; I didn't
      touch these.  I wasn't able to use %E anywhere.
      
      gcc/ChangeLog:
      	* tree-data-ref.c (runtime_alias_check_p): Use formatted printing
      	with %T in place of calls to dump_generic_expr.
      	(prune_runtime_alias_test_list): Likewise.
      	(create_runtime_alias_checks): Likewise.
      	* tree-vect-data-refs.c (vect_check_nonzero_value): Likewise.
      	(vect_analyze_data_ref_dependence): Likewise.
      	(vect_slp_analyze_data_ref_dependence): Likewise.
      	(vect_record_base_alignment): Likewise.  Use %G in place of call
      	to dump_gimple_stmt.
      	(vect_compute_data_ref_alignment): Likewise.
      	(verify_data_ref_alignment): Likewise.
      	(vect_find_same_alignment_drs): Likewise.
      	(vect_analyze_group_access_1): Likewise.
      	(vect_analyze_data_ref_accesses): Likewise.
      	(dependence_distance_ge_vf): Likewise.
      	(dump_lower_bound): Likewise.
      	(vect_prune_runtime_alias_test_list): Likewise.
      	(vect_find_stmt_data_reference): Likewise.
      	(vect_analyze_data_refs): Likewise.
      	(vect_create_addr_base_for_vector_ref): Likewise.
      	(vect_create_data_ref_ptr): Likewise.
      	* tree-vect-loop-manip.c (vect_set_loop_condition): Likewise.
      	(vect_can_advance_ivs_p): Likewise.
      	(vect_update_ivs_after_vectorizer): Likewise.
      	(vect_gen_prolog_loop_niters): Likewise.
      	(vect_prepare_for_masked_peels): Likewise.
      	* tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
      	(vect_determine_vectorization_factor): Likewise.
      	(vect_is_simple_iv_evolution): Likewise.
      	(vect_analyze_scalar_cycles_1): Likewise.
      	(vect_analyze_loop_operations): Likewise.
      	(report_vect_op): Likewise.
      	(vect_is_slp_reduction): Likewise.
      	(check_reduction_path): Likewise.
      	(vect_is_simple_reduction): Likewise.
      	(vect_create_epilog_for_reduction): Likewise.
      	(vect_finalize_reduction:): Likewise.
      	(vectorizable_induction): Likewise.
      	(vect_transform_loop_stmt): Likewise.
      	(vect_transform_loop): Likewise.
      	(optimize_mask_stores): Likewise.
      	* tree-vect-patterns.c (vect_pattern_detected): Likewise.
      	(vect_split_statement): Likewise.
      	(vect_recog_over_widening_pattern): Likewise.
      	(vect_recog_average_pattern): Likewise.
      	(vect_determine_min_output_precision_1): Likewise.
      	(vect_determine_precisions_from_range): Likewise.
      	(vect_determine_precisions_from_users): Likewise.
      	(vect_mark_pattern_stmts): Likewise.
      	(vect_pattern_recog_1): Likewise.
      	* tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
      	(vect_record_max_nunits): Likewise.
      	(vect_build_slp_tree_1): Likewise.
      	(vect_build_slp_tree_2): Likewise.
      	(vect_print_slp_tree): Likewise.
      	(vect_analyze_slp_instance): Likewise.
      	(vect_detect_hybrid_slp_stmts): Likewise.
      	(vect_detect_hybrid_slp_1): Likewise.
      	(vect_slp_analyze_operations): Likewise.
      	(vect_slp_analyze_bb_1): Likewise.
      	(vect_transform_slp_perm_load): Likewise.
      	(vect_schedule_slp_instance): Likewise.
      	* tree-vect-stmts.c (vect_mark_relevant): Likewise.
      	(vect_mark_stmts_to_be_vectorized): Likewise.
      	(vect_init_vector_1): Likewise.
      	(vect_get_vec_def_for_operand): Likewise.
      	(vect_finish_stmt_generation_1): Likewise.
      	(vect_check_load_store_mask): Likewise.
      	(vectorizable_call): Likewise.
      	(vectorizable_conversion): Likewise.
      	(vectorizable_operation): Likewise.
      	(vectorizable_load): Likewise.
      	(vect_analyze_stmt): Likewise.
      	(vect_is_simple_use): Likewise.
      	(vect_get_vector_types_for_stmt): Likewise.
      	(vect_get_mask_type_for_stmt): Likewise.
      	* tree-vectorizer.c (increase_alignment): Likewise.
      
      From-SVN: r264424
      David Malcolm committed
    • Remove constant vec_select restriction. · 5bbb7115
      The vec_select operator is documented to require a const_int for the lane
      selector operand, but GCN has an instruction that can select the lane at
      runtime, so it seems reasonable to remove this restriction.
      
      This patch simply replaces assertions that the operand is constant with early
      exits from the optimizers.  I think it's reasonable that vec_select with a
      non-constant operand cannot be optimized, yet.
      
      Also included is the necessary documentation tweak.
      
      2018-09-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* doc/rtl.texi: Adjust vec_select description.
      	* simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use
      	non-constant selectors.
      
      From-SVN: r264423
      Andrew Stubbs committed
    • Don't use __glibcxx_assert to check class invariants · dc9acaa9
      Assertions should be used to check preconditions that users must meet,
      not to check whether the implementation is correct.
      
      	* include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
      	Remove __glibcxx_assert statements and use map::find instead of
      	map::operator[].
      
      From-SVN: r264422
      Jonathan Wakely committed
    • [AARCH64] Use STLUR for atomic_store · 3c5af608
      Use the STLUR instruction introduced in Armv8.4-a.
      This instruction has the store-release semantic like STLR but can take a
      9-bit unscaled signed immediate offset.
      
      Example test case:
      ```
      void
      foo ()
      {
          int32_t *atomic_vals = calloc (4, sizeof (int32_t));
          atomic_store_explicit (atomic_vals + 1, 2, memory_order_release);
      }
      ```
      
      Before patch generates
      ```
      foo:
      	stp	x29, x30, [sp, -16]!
      	mov	x1, 4
      	mov	x0, x1
      	mov	x29, sp
      	bl	calloc
      	mov	w1, 2
      	add	x0, x0, 4
      	stlr	w1, [x0]
      	ldp	x29, x30, [sp], 16
      	ret
      ```
      
      After patch generates
      ```
      foo:
      	stp	x29, x30, [sp, -16]!
      	mov	x1, 4
      	mov	x0, x1
      	mov	x29, sp
      	bl	calloc
      	mov	w1, 2
      	stlur	w1, [x0, 4]
      	ldp	x29, x30, [sp], 16
      	ret
      ```
      
      We introduce a new feature flag to indicate the presence of this instruction.
      The feature flag is called AARCH64_ISA_RCPC8_4 and is included when targeting
      armv8.4 architecture.
      
      We also introduce an "arch" attribute to be checked called "rcpc8_4" after this
      feature flag.
      
      gcc/
      
      2018-09-19  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* config/aarch64/aarch64-protos.h
      	(aarch64_offset_9bit_signed_unscaled_p): New declaration.
      	* config/aarch64/aarch64.md (arches): New "rcpc8_4" attribute value.
      	(arch_enabled): Add check for "rcpc8_4" attribute value of "arch".
      	* config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield.
      	(AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4.
      	(AARCH64_FL_PROFILE): Move index so flags are ordered.
      	(AARCH64_ISA_RCPC8_4): New flag.
      	* config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed
      	to aarch64_offset_9bit_signed_unscaled_p.
      	* config/aarch64/atomics.md (atomic_store<mode>): Allow offset
      	and use stlur.
      	* config/aarch64/constraints.md (Ust): New constraint.
      	* config/aarch64/predicates.md.
      	(aarch64_9bit_offset_memory_operand): New predicate.
      	(aarch64_rcpc_memory_operand): New predicate.
      
      gcc/testsuite/
      
      2018-09-19  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* gcc.target/aarch64/atomic-store.c: New.
      
      From-SVN: r264421
      Matthew Malcomson committed
    • re PR rtl-optimization/87361 (gcc.target/sparc/20161111-1.c FAILs) · 574f5885
      	PR rtl-optimization/87361
      	* rtlanal.c (nonzero_bits1): Revert accidental change.
      
      From-SVN: r264420
      Eric Botcazou committed
    • re PR tree-optimization/87349 (ICE: Segmentation fault (in… · d4eb08fe
      re PR tree-optimization/87349 (ICE: Segmentation fault (in useless_type_conversion_p or is_gimple_reg_type))
      
      2018-09-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87349
      	PR tree-optimization/87342
      	* tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation.
      
      	* gcc.dg/torture/pr87349-1.c: New testcase.
      	* gcc.dg/torture/pr87349-2.c: Likewise.
      	* gcc.dg/torture/pr87342.c: Likewise.
      
      From-SVN: r264419
      Richard Biener committed
    • libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, [...]): Backport changes from upstream gettext. · 90773931
      	* libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, gettext, dgettext,
      	dcgettext, ngettext, dngettext, dcngettext): Backport changes
      	from upstream gettext.
      
      From-SVN: r264418
      Simon Marchi committed
    • Daily bump. · 709f7ea1
      From-SVN: r264417
      GCC Administrator committed
  3. 18 Sep, 2018 14 commits
    • re PR libstdc++/87135 ([C++17] unordered containers violate iterator validity requirements) · a521e626
      2018-09-18  François Dumont  <fdumont@gcc.gnu.org>
      
      	PR libstdc++/87135
      	* src/c++11/hashtable_c++0x.cc:
      	(_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
      	requested size, but not necessarily greater.
      	(_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
      	strictly greater than next resize threshold.
      	* testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
      	to validate that there is no rehash as long as number of insertion is
      	lower or equal to the reserved number of elements.
      
      From-SVN: r264413
      François Dumont committed
    • re PR fortran/29550 (Optimize -fexternal-blas calls for conjg()) · 998511a6
      2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/29550
      	* gfortran.h (gfc_expr): Add external_blas flag.
      	* frontend-passes.c (matrix_case): Add case A2TB2T.
      	(optimize_namespace): Handle flag_external_blas by
      	calling call_external_blas.
      	(get_array_inq_function): Add argument okind. If
      	it is nonzero, use it as the kind of argument
      	to be used.
      	(inline_limit_check): Remove m_case argument, add
      	limit argument instead.  Remove assert about m_case.
      	Set the limit for inlining from the limit argument.
      	(matmul_lhs_realloc): Handle case A2TB2T.
      	(inline_matmul_assign): Handle inline limit for other cases with
      	two rank-two matrices.  Remove no-op calls to inline_limit_check.
      	(call_external_blas): New function.
      	* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add
      	argument to external BLAS if external_blas is already set.
      
      2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/29550
      	* gfortran.dg/inline_matmul_13.f90: Adjust count for
      	_gfortran_matmul.
      	* gfortran.dg/inline_matmul_16.f90: Likewise.
      	* gfortran.dg/promotion_2.f90: Add -fblas-matmul-limit=1.  Scan
      	for dgemm instead of dgemm_.  Add call to random_number to make
      	standard conforming.
      	* gfortran.dg/matmul_blas_1.f90: New test.
      	* gfortran.dg/matmul_bounds_14.f: New test.
      	* gfortran.dg/matmul_bounds_15.f: New test.
      	* gfortran.dg/matmul_bounds_16.f: New test.
      	* gfortran.dg/blas_gemm_routines.f: New test / additional file for
      	preceding tests.
      
      From-SVN: r264412
      Thomas Koenig committed
    • re PR fortran/29550 (Optimize -fexternal-blas calls for conjg()) · 5c470e0f
      2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/29550
      	* gfortran.h (gfc_expr): Add external_blas flag.
      	* frontend-passes.c (matrix_case): Add case A2TB2T.
      	(optimize_namespace): Handle flag_external_blas by
      	calling call_external_blas.
      	(get_array_inq_function): Add argument okind. If
      	it is nonzero, use it as the kind of argument
      	to be used.
      	(inline_limit_check): Remove m_case argument, add
      	limit argument instead.  Remove assert about m_case.
      	Set the limit for inlining from the limit argument.
      	(matmul_lhs_realloc): Handle case A2TB2T.
      	(inline_matmul_assign): Handle inline limit for other cases with
      	two rank-two matrices.  Remove no-op calls to inline_limit_check.
      	(call_external_blas): New function.
      	* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add
      	argument to external BLAS if external_blas is already set.
      
      2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/29550
      	* gfortran.dg/inline_matmul_13.f90: Adjust count for
      	_gfortran_matmul.
      	* gfortran.dg/inline_matmul_16.f90: Likewise.
      	* gfortran.dg/promotion_2.f90: Add -fblas-matmul-limit=1.  Scan
      	for dgemm instead of dgemm_.  Add call to random_number to make
      	standard conforming.
      	* gfortran.dg/matmul_blas_1.f90: New test.
      	* gfortran.dg/matmul_bounds_14.f: New test.
      	* gfortran.dg/matmul_bounds_15.f: New test.
      	* gfortran.dg/matmul_bounds_16.f: New test.
      	* gfortran.dg/blas_gemm_routines.f: New test / additional file for
      	preceding tests.
      
      From-SVN: r264411
      Thomas Koenig committed
    • re PR fortran/87239 (ICE in deferred-length string) · f435162f
      2018-09-18  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/87239
      	* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
      	assignment of deferred character elemental function results to
      	a realocatable lhs must not be added to the exterior block but
      	must go to the loop body.
      
      2018-09-18  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/87239
      	* gfortran.dg/elemental_function_2.f90 : New test.
      
      From-SVN: r264409
      Paul Thomas committed
    • P1064R0 - Allowing Virtual Function Calls in Constant Expressions · bf8d8309
      	P1064R0 - Allowing Virtual Function Calls in Constant Expressions
      	* call.c (build_over_call): No longer check if we're outside a template
      	function.
      	* class.c (build_vtbl_initializer): Build vtable's constructor with
      	indexes.
      	* constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
      	initializer.  Handle OBJ_TYPE_REF.
      	(potential_constant_expression_1): Handle OBJ_TYPE_REF.
      	* decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
      	(initialize_artificial_var): Mark the variable as constexpr.
      	(grokdeclarator): Change error to pedwarn.  Only warn when
      	pedantic and not C++2a.
      
      	* gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert.
      
      	* g++.dg/cpp0x/constexpr-virtual5.C: Adjust dg-error.
      	* g++.dg/cpp2a/constexpr-virtual1.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual2.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual3.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual4.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual5.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual6.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual7.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual8.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual9.C: New test.
      	* g++.dg/diagnostic/virtual-constexpr.C: Skip for C++2a.  Use
      	-pedantic-errors.  Adjust dg-error.
      
      From-SVN: r264408
      Marek Polacek committed
    • re PR fortran/87336 (wrong output for pointer dummy assiocated to target actual argument) · e8db6cd5
      2018-09-18  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/87336
      	* trans-array.c (gfc_get_array_span): Try to get the element
      	length of incomplete types. Return NULL_TREE otherwise.
      	(gfc_conv_expr_descriptor): Only set the 'span' field if the
      	above does not return NULL_TREE. Set 'span' field if possible
      	for all new descriptors.
      
      2018-09-18  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/87336
      	* gfortran.dg/pointer_array_10.f90 : New test.
      	* gfortran.dg/assign_10.f90 : Increase 'parm' count to 20.
      	* gfortran.dg/transpose_optimization_2.f90 : Increase 'parm'
      	count to 72.
      
      From-SVN: r264405
      Paul Thomas committed
    • rs6000: Remove old "Cygnus sibcall" comment · b819cc44
      This comment is quite cryptic and very out-of-date by now.  Committing.
      
      
      	* config/rs6000/rs6000.md: Remove old "Cygnus sibcall" comment.
      
      From-SVN: r264403
      Segher Boessenkool committed
    • re PR c++/85065 ([concepts] ICE with invalid use of a concept) · c99fcada
      /cp
      2018-09-18  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/85065
      	* cp-tree.h (NON_ERROR): New.
      	* pt.c (auto_hash::hash): Use it.
      	(do_auto_deduction): Likewise.
      
      /testsuite
      2018-09-18  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/85065
      	* g++.dg/concepts/pr85065.C: New.
      
      From-SVN: r264402
      Paolo Carlini committed
    • Handle CLOBBER in reg_overlap_mentioned_p (PR86882) · b7663a76
      Combine will put CLOBBER (with a non-void mode) anywhere in a pattern
      to poison it.  reg_overlap_mentioned_p did not handle this.  This patch
      fixes that.
      
      
      	PR rtl-optimization/86882
      	* rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER.
      
      From-SVN: r264400
      Segher Boessenkool committed
    • Fix location of invocable check for unique_ptr deleter · a12c16de
      The deleter only needs to be invocable when the unique_ptr destructor
      and reset member function are instantiated. In other contexts it might
      not be possible to pass unique_ptr<T, D>::pointer to the deleter, if
      that requires a derived-to-base conversion from T* and T is incomplete.
      
      	* include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
      	checking invocable condition.
      	(unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
      	here, where types must be complete. Pass pointer to deleter as an
      	rvalue.
      	* testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
      
      From-SVN: r264399
      Jonathan Wakely committed
    • i386.md (*<code>extend<mode>xf2): Macroize insn from *<code>extendsfxf2 and… · f96c8666
      i386.md (*<code>extend<mode>xf2): Macroize insn from *<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode...
      
      	* config/i386/i386.md (*<code>extend<mode>xf2): Macroize insn from
      	*<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode iterator.
      
      From-SVN: r264398
      Uros Bizjak committed
    • [nvptx] Remove use of CUDA unified memory in libgomp · 2049befd
      	libgomp/
      	* plugin/plugin-nvptx.c (struct cuda_map): New.
      	(struct ptx_stream): Replace d, h, h_begin, h_end, h_next, h_prev,
      	h_tail with (cuda_map *) map.
      	(cuda_map_create): New function.
      	(cuda_map_destroy): New function.
      	(map_init): Update to use a linked list of cuda_map objects.
      	(map_fini): Likewise.
      	(map_pop): Likewise.
      	(map_push): Likewise.  Return CUdeviceptr instead of void.
      	(init_streams_for_device): Remove stales references to ptx_stream
      	members.
      	(select_stream_for_async): Likewise.
      	(nvptx_exec): Update call to map_init.
      
      From-SVN: r264397
      Cesar Philippidis committed
    • PR other/87353 fix formatting and grammar in manual · 5e594075
      The changes to invoke.texi in r242433 left some unwanted spaces that
      texi2pod.pl interprets as verbatim formatting. There are also some
      grammatical errors due to the removal of references to GCJ, where the
      G++ driver is referred to in the plural.
      
      	PR other/87353
      	* doc/invoke.texi (Link Options): Fix formatting and grammar.
      
      From-SVN: r264395
      Jonathan Wakely committed
    • Fix dg-do target · 538d2d7e
      From-SVN: r264394
      Nathan Sidwell committed