Commit Graph

163912 Commits

Author SHA1 Message Date
Kito Cheng 229a033dac [NDS32] Add t-nds32-glibc file.
libgcc/
	* config/nds32/t-nds32-glibc: New file.

From-SVN: r264460
2018-09-21 08:11:40 +00:00
Monk Chiang ac703a6f95 [NDS32] Turn off default option -mtlsdesc-trampoline.
gcc/
	* config.gcc (nds32*-*-*): Set TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0.

From-SVN: r264459
2018-09-21 07:35:49 +00:00
Eric Botcazou 1f060238d5 re PR tree-optimization/86990 (wrong code at -O2 on x86_64-linux-gnu in 64-bit mode)
PR tree-optimization/86990
	* gimple-ssa-store-merging.c (imm_store_chain_info:coalesce_immediate):
	Check that the entire merged store group is made of constants only for
	overlapping stores.

From-SVN: r264458
2018-09-21 07:28:42 +00:00
GCC Administrator 74f3101859 Daily bump.
From-SVN: r264456
2018-09-21 00:17:01 +00:00
Marek Polacek 17b20aa993 PR c++/87109 - wrong ctor with maybe-rvalue semantics.
* call.c (build_user_type_conversion_1): Refine the maybe-rvalue
	check to only return if we're converting the return value to a base
	class.

	* g++.dg/cpp0x/ref-qual19.C: Adjust the expected results.
	* g++.dg/cpp0x/ref-qual20.C: New test.

From-SVN: r264452
2018-09-20 23:20:19 +00:00
Allan Sandfeld Jensen 0b7fb27b69 Fix and document -r option
The option has existed and been working for years,
make sure it implies the right extra options, and list
it in the documentation.

2018-09-20  Allan Sandfeld Jensen  <allan.jensen@qt.io>

gcc/
	* gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib.
	(VTABLE_VERIFICATION_SPEC): Likewise.
	(SANITIZER_EARLY_SPEC): Likewise.
	(SANITIZER_SPEC): Likewise.
	* config/darwin.h (LINK_COMMAND_SPEC): Likewise.
	* doc/invoke.texi (Link Options): Document -r.

gcc/cp/
	* g++spec.c (lang_specific_driver): Handle -r like -nostdlib.

gcc/fortran/
	* gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib.

gcc/go/
	* gospec.c (lang_specific_driver): Handle -r like -nostdlib.

gcc/testsuite/
	* g++.dg/ipa/pr64059.C: Removed now redundant -nostdlib.
	* g++.dg/lto/20081109-1_0.C: Likewise.
	* g++.dg/lto/20090302_0.C: Likewise.
	* g++.dg/lto/pr45621_0.C: Likewise.
	* g++.dg/lto/pr60567_0.C: Likewise.
	* g++.dg/lto/pr62026.C: Likewise.
	* gcc.dg/lto/pr45736_0.c: Likewise.
	* gcc.dg/lto/pr52634_0.c: Likewise.
	* gfortran.dg/lto/20091016-1_0.f90: Likewise.
	* gfortran.dg/lto/pr79108_0.f90: Likewise.

From-SVN: r264451
2018-09-20 20:38:24 +01:00
Alexandre Oliva 468e1ef4be [PR87054] fix unaligned access
Building an ADDR_EXPR uses the canonical type to build the pointer
type, but then, as we dereference it, we lose track of lax alignment
known to apply to the dereferenced object.  This might not be a
problem in general, but it is when the compiler implicitly introduces
address taking and dereferencing, as it does for asm statements, and
as it may do in some loop optimizations.

From: Richard Biener <rguenther@suse.de>
for  gcc/ChangeLog

	PR middle-end/87054
	* gimplify.c (gimplify_expr): Retain alignment of
	addressable lvalue in dereference.

From: Alexandre Oliva <oliva@adacore.com>
for  gcc/testsuite/ChangeLog

	PR middle-end/87054
	* gcc.dg/pr87054.c: New.

From-SVN: r264450
2018-09-20 19:34:44 +00:00
Alexandre Oliva 894f597f8f [PR87013] check for .loc is_stmt support in the assembler
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
2018-09-20 19:34:30 +00:00
Janus Weil 2eb3745a7b gfortran.h (gfc_str_startswith): New macro.
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
2018-09-20 21:33:05 +02:00
Segher Boessenkool 5596651acd rs6000: Remove -misel={yes,no}
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
2018-09-20 21:04:42 +02:00
Cesar Philippidis aecbc4ff0d [OpenACC] handle missing OMP_LIST_ clauses in fortran's parse tree debugger
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
2018-09-20 11:42:57 -07:00
Segher Boessenkool fbcf65f914 rs6000: Delete VECTOR_OTHER
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
2018-09-20 19:21:54 +02:00
Christophe Lyon eb3f731774 hypot-long-double.cc: Skip on arm*.
2018-09-20  Christophe Lyon  <christophe.lyon@linaro.org>

	* testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
	on arm*.

From-SVN: r264443
2018-09-20 19:09:31 +02:00
Jason Merrill 3ee378fb55 PR c++/87075 - ICE with constexpr array initialization.
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
2018-09-20 13:09:19 -04:00
Marek Polacek 8850966e26 * doc/invoke.texi: Add -Wno-init-list-lifetime to C++ Language Options.
From-SVN: r264441
2018-09-20 13:52:25 +00:00
Richard Sandiford 2d2ee18641 Fix PEELING_FOR_NITERS calculation (PR 87288)
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
2018-09-20 12:58:23 +00:00
Richard Sandiford 508a909eca Add missing alignment checks in epilogue loop vectorisation (PR 86877)
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
2018-09-20 12:58:16 +00:00
Marek Polacek a599af84b2 Add -Wclass-conversion.
* 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
2018-09-20 01:56:58 +00:00
John David Anglin cf16d179d5 pa.c (pa_adjust_priority): Delete.
* config/pa/pa.c (pa_adjust_priority): Delete.
	(TARGET_SCHED_ADJUST_PRIORITY): Delete define.

From-SVN: r264437
2018-09-20 01:46:28 +00:00
John David Anglin bad4408cad pa.md (atomic_storeqi): Restore deleted expander.
* 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
2018-09-20 01:04:34 +00:00
GCC Administrator fa8332f13f Daily bump.
From-SVN: r264432
2018-09-20 00:16:38 +00:00
Paolo Carlini ff5c3c9d38 re PR c++/87324 (g++ ICE with overriding initializers: Segmentation fault)
/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
2018-09-19 19:35:19 +00:00
Paul Thomas ad9fe5f344 re PR fortran/84109 (ICE in adjustl on allocatable array of strings)
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
2018-09-19 17:44:36 +00:00
Segher Boessenkool ebdf17cb73 combine: Use correct mode in new comparison (PR86902)
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
2018-09-19 19:38:11 +02:00
Marek Polacek fce3380867 PR c++/87357 - missing -Wconversion warning
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
2018-09-19 16:59:51 +00:00
David Malcolm 3c2a8ed0d9 dump_printf: use %T and %G throughout
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
2018-09-19 16:18:06 +00:00
Andrew Stubbs 5bbb71154e Remove constant vec_select restriction.
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
2018-09-19 13:25:42 +00:00
Jonathan Wakely dc9acaa99b Don't use __glibcxx_assert to check class invariants
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
2018-09-19 12:20:51 +01:00
Matthew Malcomson 3c5af60836 [AARCH64] Use STLUR for atomic_store
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
2018-09-19 10:24:59 +00:00
Eric Botcazou 574f5885f7 re PR rtl-optimization/87361 (gcc.target/sparc/20161111-1.c FAILs)
PR rtl-optimization/87361
	* rtlanal.c (nonzero_bits1): Revert accidental change.

From-SVN: r264420
2018-09-19 10:12:04 +00:00
Richard Biener d4eb08fe02 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
2018-09-19 07:10:42 +00:00
Simon Marchi 907739318d libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, [...]): Backport changes from upstream gettext.
* libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, gettext, dgettext,
	dcgettext, ngettext, dngettext, dcngettext): Backport changes
	from upstream gettext.

From-SVN: r264418
2018-09-18 22:08:49 -06:00
GCC Administrator 709f7ea13d Daily bump.
From-SVN: r264417
2018-09-19 00:16:46 +00:00
François Dumont a521e62615 re PR libstdc++/87135 ([C++17] unordered containers violate iterator validity requirements)
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
2018-09-18 20:36:16 +00:00
Thomas Koenig 998511a610 re PR fortran/29550 (Optimize -fexternal-blas calls for conjg())
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
2018-09-18 20:18:09 +00:00
Thomas Koenig 5c470e0f07 re PR fortran/29550 (Optimize -fexternal-blas calls for conjg())
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
2018-09-18 19:59:46 +00:00
Paul Thomas f435162f88 re PR fortran/87239 (ICE in deferred-length string)
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
2018-09-18 19:35:53 +00:00
Marek Polacek bf8d83098f P1064R0 - Allowing Virtual Function Calls in Constant Expressions
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
2018-09-18 19:16:28 +00:00
Paul Thomas e8db6cd5fb re PR fortran/87336 (wrong output for pointer dummy assiocated to target actual argument)
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
2018-09-18 17:58:20 +00:00
Segher Boessenkool b819cc44a1 rs6000: Remove old "Cygnus sibcall" comment
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
2018-09-18 19:37:40 +02:00
Paolo Carlini c99fcadae8 re PR c++/85065 ([concepts] ICE with invalid use of a concept)
/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
2018-09-18 16:35:27 +00:00
Segher Boessenkool b7663a763f Handle CLOBBER in reg_overlap_mentioned_p (PR86882)
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
2018-09-18 18:19:56 +02:00
Jonathan Wakely a12c16de52 Fix location of invocable check for unique_ptr deleter
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
2018-09-18 17:05:36 +01:00
Uros Bizjak f96c8666f5 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
2018-09-18 17:51:54 +02:00
Cesar Philippidis 2049befdd0 [nvptx] Remove use of CUDA unified memory in libgomp
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
2018-09-18 08:41:54 -07:00
Jonathan Wakely 5e594075c8 PR other/87353 fix formatting and grammar in manual
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
2018-09-18 15:19:55 +01:00
Nathan Sidwell 538d2d7e7f Fix dg-do target
From-SVN: r264394
2018-09-18 14:14:57 +00:00
Kyrylo Tkachov 89e1963a20 Add PR marker to previous commit
From-SVN: r264393
2018-09-18 14:09:54 +00:00
Kyrylo Tkachov 6902e3a01d Fix gcc.dg/warn-abs-1.c for arm and aarch64-none-elf
This new test has some difficulties on the fabsl function.
On arm this is because we don't support the _Float128 type which the test uses.
This is handled in the patch by requiring a float128 target selector.

On aarch64-none-elf, a Newlib target, it fails because fabsl is not available.
long double support is known to be incomplete in newlib, and the fabsl function is not available
for targets where long double is larger than a double.
Therefore this patch skips the test on such targets.


	* gcc.dg/warn-abs-1.c: Require float128 target.
	Skip if large_long_double newlib target.

From-SVN: r264392
2018-09-18 13:54:36 +00:00
Nathan Sidwell 3897f13410 [PATCH c++/86881] -Wshadow-local-compatible ICE
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00984.html
	PR c++/86881
	cp/
	* name-lookup.c (check_local_shadow): Ignore auto types.

	testsuite/
	* g++.dg/warn/pr86881.C: New.

From-SVN: r264391
2018-09-18 13:52:30 +00:00