Commit Graph

173405 Commits

Author SHA1 Message Date
Tobias Burnus a0221aeebd [OpenMP/OpenACC/Fortran] Fix mapping of optional (present|absent) arguments
* testsuite/libgomp.oacc-fortran/optional-cache.f95: Add 'dg-do run'.
        * testsuite/libgomp.oacc-fortran/optional-reduction.f90: Remove
        unnecessary 'dg-additional-options "-w"'.

From-SVN: r279217
2019-12-11 11:40:11 +01:00
Stam Markianos-Wright d5ffd47e9a Add ARM-specific Bfloat format support to middle-end
2019-12-11  Stam Markianos-Wright  <stam.markianos-wright@arm.com>

	* real.c (struct arm_bfloat_half_format,
	encode_arm_bfloat_half, decode_arm_bfloat_half): New.
	* real.h (arm_bfloat_half_format): New.

From-SVN: r279216
2019-12-11 10:27:30 +00:00
Frederik Harwath e6c90dba73 Fix PR92901: Change test expectation for C++ in OpenACC test clause-locations.c
The columns of the clause locations that are reported for C and C++ are
different and hence we need separate test expectations for both languages.

2019-12-11  Frederik Harwath  <frederik@codesourcery.com>

	PR other/92901
	/gcc/testsuite/
	* c-c++-common/clause-locations.c: Adjust test expectation for C++.

From-SVN: r279215
2019-12-11 08:26:18 +00:00
Hongtao Liu a8654147f1 Fix unrecognizable insn of pr92865.
gcc/
    PR target/92865
    * config/i386/i386-expand.c (ix86_valid_mask_cmp_mode): Enable
    integer mask cmov when available even with TARGET_XOP.

gcc/testsuite
    * gcc.target/i386/pr92865-1.c: New test.

From-SVN: r279214
2019-12-11 08:06:06 +00:00
Thomas Rodgers 2aae713bb4 Restore enable_if lost during original import of pstl
* include/pstl/glue_numeric_defs.h: Restore enable_if lost
        during original import of pstl.
        * include/pstl/glue_numeric_impl.h: Likewise.

From-SVN: r279212
2019-12-11 03:38:24 +00:00
GCC Administrator 03e5f213ee Daily bump.
From-SVN: r279210
2019-12-11 00:16:21 +00:00
Ian Lance Taylor 1e2b400bbb compiler: generate type descriptor for pointer to alias defined in another package
When a type descriptor is needed (for e.g. interface conversion),
    if the type is a pointer to a named type defined in another
    package, we don't generate the definition of the type descriptor
    because it is generated in the package where the type is defined.
    However, if the named type is an alias to an unnamed type, its
    descriptor is not generated in the other package, and we need to
    generate it.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210787

From-SVN: r279207
2019-12-11 00:15:53 +00:00
Jonathan Wakely cff87282f4 libstdc++: Correct noexcept-specifiers on span constructors
As discussed at https://github.com/cplusplus/draft/issues/3534 two
std::span constructors specify incorrect conditions for throwing
exceptions. This patch makes those constructors have correct
noexcept-specifiers that accurately reflect what can actually throw.

	(span(ContiguousIterator, Sentinel)): Add conditional noexcept.
	* include/std/span (span(ContiguousIterator, size_type)): Change
	noexcept to be unconditionally true.
	* testsuite/23_containers/span/nothrow_cons.cc: New test.

From-SVN: r279206
2019-12-10 23:50:26 +00:00
Jakub Jelinek a6ae300f9a re PR tree-optimization/92891 (ice in decompose, at wide-int.h:984)
PR tree-optimization/92891
	* builtins.c (gimple_call_alloc_size): Convert size to sizetype
	before returning it.

	* gcc.c-torture/compile/pr92891.c: New test.

From-SVN: r279205
2019-12-11 00:49:40 +01:00
Vladimir Makarov 7436a1c675 re PR rtl-optimization/92796 (ICE in lra_assign, at lra-assigns.c:1646 on powerpc64le-linux-gnu)
2019-12-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/92796
	* lra-int.h (lra_risky_transformations_p): Rename to
	check_and_force_assignment_correctness_p.
	* lra-assigns.c: Ditto.
	(lra_assign): Reset check_and_force_assignment_correctness_p.
	* lra-constraints.c (lra_risky_transformations_p): Rename to
	check_and_force_assignment_correctness_p.
	(lra_constraints): Set up check_and_force_assignment_correctness_p
	only for the 1st sub-pass.
	* lra-eliminations.c (process_insn_for_elimination): Set up
	check_and_force_assignment_correctness_p if the insn chnaged its
	code.

2019-12-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/92796
	* gcc.target/powerpc/pr92796.c: New test.

From-SVN: r279204
2019-12-10 22:07:57 +00:00
Thomas Koenig 0cc063af32 re PR fortran/91643 (ICE in gfc_trans_create_temp_array, at fortran/trans-array.c:1265)
2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/91643
    * trans-array.c (gfc_conv_array_parameter): Do not repack
    an assumed rank dummy argument.

2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/91643
    * gfortran.dg/assumed_rank_18.f90: New test.

From-SVN: r279203
2019-12-10 21:59:09 +00:00
François Dumont 6004c17b4d libstdc++: Rework std::copy/copy_backward/move/move_backward/fill/fill_n algos
Enhance those algos overloads to generalize existing optimization for
__gnu_debug::_Safe_iterator w/o _GLIBCXX_DEBUG mode and for std::deque
 iterators.

Also extend __copy_move_a2 ostreambuf_iterator overloads to std::vector and
std::deque iterators.

	* include/bits/stl_algobase.h
	(__copy_move_a1<>(_II, _II, _OI)): New.
	(__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
	(__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>,
	_Deque_iterator<>)): New.
	(__copy_move_a1<>(_II, _II, _Deque_iterator<>)): New.
	(__copy_move_a<>(_II, _II, _OI)): Adapt, call __copy_move_a1<>.
	(__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	_OI)): New.
	(__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	 const _Safe_iterator<>&)): New.
	(__copy_move_a<>(_II, _II, const _Safe_iterator<>&)): New.
	(copy, move): Adapt, call __copy_move_a.
	(__copy_move_backward_a1<>(_II, _II, _OI)): New,
	call __copy_move_backward_a2.
	(__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
	(__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>,
	_Deque_iterator<>)): New.
	(__copy_move_backward_a1<>(_II, _II, _Deque_iterator<>)): New.
	(__copy_move_backward_a<>(_II, _II, _OI)): Adapt, call
	__copy_move_backward_a1<>.
	(__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	_OI)): New.
	(__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	 const _Safe_iterator<>&)): New.
	(__copy_move_backward_a<>(_II, _II, const _Safe_iterator<>&)): New.
	(copy_backward, move_backward): Adapt, call __copy_move_backward_a<>.
	(__fill_a): Rename into...
	(__fill_a1): ... this.
	(__fill_a1(__normal_iterator<>, __normal_iterator<>, const _Tp&)): New.
	(__fill_a1(const _Deque_iterator<>&, const _Deque_iterator<>&, _VTp)):
	New.
	(__fill_a(_FIte, _FIte, const _Tp&)): New, call __fill_a1.
	(__fill_a(const _Safe_iterator<>&, const _Safe_iterator<>&,
	const _Tp&)): New.
	(fill): Adapt, remove __niter_base usage.
	(__fill_n_a): Rename into...
	(__fill_n_a1): ...this.
	(__fill_n_a(const _Safe_iterator<>&, _Size, const _Tp&,
	input_iterator_tag)): New.
	(__fill_n_a(_OI, _Size, const _Tp&, output_iterator_tag)): New, call
	__fill_n_a1.
	(__fill_n_a(_OI, _Size, const _Tp&, random_access_iterator_tag)): New,
	call __fill_a.
	(__equal_aux): Rename into...
	(__equal_aux1): ...this.
	(__equal_aux1(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
	(__equal_aux1(_Deque_iterator<>, _Deque_iterator<>,
	_Deque_iterator<>)): New.
	(__equal_aux1(_II, _II, _Deque_iterator<>)): New.
	(__equal_aux(_II1, _II1, _II2)): New, call __equal_aux1.
	(__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
	_OI)): New.
	(__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
	 const _Safe_iterator<>&)): New.
	(__equal_aux(_II, _II, const _Safe_iterator<>&)): New.
	(equal(_II1, _II1, _II2)): Adapt.
	* include/bits/stl_deque.h
	(fill, copy, copy_backward, move, move_backward): Remove.
	* include/bits/deque.tcc: Include <bits/stl_algobase.h>.
	(__fill_a1): New.
	(__copy_move_dit): New.
	(__copy_move_a1): New, use latter.
	(__copy_move_a1(_II, _II, _Deque_iterator<>)): New.
	(__copy_move_backward_dit): New.
	(__copy_move_backward_a1): New, use latter.
	(__copy_move_backward_a1(_II, _II, _Deque_iterator<>)): New.
	(__equal_dit): New.
	(__equal_aux1): New, use latter.
	(__equal_aux1(_II, _II, _Deque_iterator<>)): New.
	* include/std/numeric (__is_random_access_iter): Move...
	* include/bits/stl_iterator_base_types.h (__is_random_access_iter): ...
	here. Provide pre-C++11 definition.
	* include/debug/debug.h (_Safe_iterator<>): New declaration.
	* include/debug/safe_iterator.h (_Safe_iterator<>::_M_can_advance): Add
	__strict parameter.
	* include/debug/safe_iterator.tcc: Include <bits/stl_algobase.h>.
	(_Safe_iterator<>::_M_can_advance): Adapt.
	(std::__copy_move_a, std::__copy_move_backward_a, __fill_a): New.
	(__fill_n_a, __equal_aux): New.
	* include/debug/stl_iterator.h (__niter_base): Remove.
	* include/debug/vector (__niter_base): Remove.
	* testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc:
	Include <vector> and <list>. Add benches.
	* testsuite/performance/25_algorithms/copy_deque_iterators.cc: Likewise.
	* testsuite/performance/25_algorithms/equal_deque_iterators.cc: Likewise.
	* testsuite/25_algorithms/copy/debug/1_neg.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/2.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/31.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/32.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/33.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/41.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/42.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/43.cc: New.
	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc (test02):
	New.
	* testsuite/25_algorithms/copy_backward/deque_iterators/2.cc: New.
	* testsuite/25_algorithms/equal/deque_iterators/1.cc: New.
	* testsuite/25_algorithms/fill/deque_iterators/1.cc: New.
	* testsuite/25_algorithms/move/deque_iterators/2.cc: New.
	* testsuite/25_algorithms/move_backward/deque_iterators/2.cc: New.

From-SVN: r279201
2019-12-10 21:49:55 +00:00
Jakub Jelinek 5e72bcc1dd re PR rtl-optimization/92882 (ICE in regstat_bb_compute_calls_crossed, at regstat.c:327 since r279124)
PR rtl-optimization/92882
	* regstat.c (regstat_bb_compute_calls_crossed): Don't check
	INSN_UID against DF_INSN_SIZE or use DF_INSN_INFO_GET unless
	NONDEBUG_INSN_P.

	* gfortran.dg/pr92882.f: New test.

From-SVN: r279196
2019-12-10 22:05:59 +01:00
Jakub Jelinek 27f418b8ec re PR ipa/92883 (ICE in compare_values_warnv)
PR ipa/92883
	* ipa-cp.c (propagate_vr_across_jump_function): Pass jvr rather
	than *jfunc->m_vr to intersect.  Formatting fix.

	* gcc.dg/ipa/pr92883.c: New test.

From-SVN: r279194
2019-12-10 22:04:57 +01:00
Jakub Jelinek 6b24e342cb re PR middle-end/92825 (Unnecesary stack protection in Firefox's LightPixel.)
PR middle-end/92825
	* cfgexpand.c (add_stack_protection_conflicts): Change return type
	from void to bool, return true if at least one stack_vars[i].decl
	is addressable.
	(record_or_union_type_has_array_p, stack_protect_decl_p): Remove.
	(expand_used_vars): Don't call stack_protect_decl_p, instead for
	-fstack-protector-strong set gen_stack_protect_signal to true
	if add_stack_protection_conflicts returned true.  Formatting fixes.
	* doc/invoke.texi (-fstack-protector-strong): Clarify that optimized
	out variables or variables not living on the stack don't count.
	(-fstack-protector): Likewise.  Clarify it affects >= 8 byte arrays
	rather than > 8 byte.

	* gcc.target/i386/pr92825.c: New test.

From-SVN: r279193
2019-12-10 22:04:08 +01:00
Jakub Jelinek 6b6a80654c * ipa-param-manipulation.c
(ipa_param_body_adjustments::register_replacement): Fix comment typo
	- accross -> across.
	* ipa-sra.c (propagate_used_across_scc_edge, ipa_sra_analysis):
	Likewise.
	(param_splitting_across_edge): Fix typo in dump message - accross
	-> across.

From-SVN: r279188
2019-12-10 21:35:30 +01:00
Jason Merrill eff66cd2aa PR c++/92847 - C++20 comparison ambiguity with class template.
This testcase demonstrates that looking at cand->template_decl is not a good
starting place for finding the most general template, as it is only set for
primary templates.

	* call.c (cand_parms_match): Handle all templated functions.

From-SVN: r279185
2019-12-10 15:12:50 -05:00
Jason Merrill 09b661cea1 Fix C++20 structural type vs. private base.
In my patch to implement C++20 "structural type" I tried to set the access
flags on the artificial base fields appropriately, but failed.  I was
copying TREE_PRIVATE from the binfo, but TREE_PRIVATE on binfo is just a
temporary cache for dfs_access_in_type; we really need to get the
inheritance access information from BINFO_BASE_ACCESSES.

	* class.c (build_base_field_1): Take access parameter.
	(build_base_field): Likewise.
	(build_base_fields, layout_virtual_bases): Pass it.
	* tree.c (structural_type_p): Improve private base diagnostic.

From-SVN: r279184
2019-12-10 15:10:59 -05:00
Jason Merrill 1fb81d83a8 PR c++/92560 - ICE with decltype and rewritten operator.
A call as the immediate operand of decltype is handled differently; we don't
create an object of the return type as we do normally.  But in the case of a
rewritten operator, we're adding another call as a wrapper, so the inner
call doesn't get the special handling.

	* call.c (build_new_op_1): Clear tf_decltype on inner call.

From-SVN: r279183
2019-12-10 15:06:58 -05:00
Martin Liska 42aed35797 Bail out in gfc_dep_compare_expr for a NULL argument.
2019-12-10  Martin Liska  <mliska@suse.cz>

	PR fortran/92874
	* dependency.c (gfc_dep_compare_expr): Bail out
	when one of the arguments is null.
2019-12-10  Martin Liska  <mliska@suse.cz>

	PR fortran/92874
	* gfortran.dg/pr92874.f90: New test.

From-SVN: r279181
2019-12-10 18:57:30 +00:00
Thomas Koenig f812dfe8e0 re PR fortran/92863 (ICE in gfc_typename)
2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92863
    * misc.c (gfc_typename): If derived component is NULL for
    derived or class, return "invalid type" or "invalid class",
    respectively.

2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92863
    * gfortran.dg/interface_45.f90: New test.

From-SVN: r279180
2019-12-10 18:31:33 +00:00
Jan Hubicka 940317b75c cgraph.c (cgraph_node::verify_node): Verify tp_first_run.
* cgraph.c (cgraph_node::verify_node): Verify tp_first_run.
	* cgraph.h (cgrpah_node): Turn tp_first_run back to int.
	* cgraphunit.c (tp_first_run_node_cmp): Do not watch for overflows.
	(expand_all_functions): First expand ordered section and then
	unordered.
	* profile.c (compute_value_histograms): Error on out of range
	tp_first_runs.

From-SVN: r279179
2019-12-10 17:59:43 +00:00
Jan Hubicka 59c7b29e9a Turn tp_first_run counts back to 32bit values.
* cgraph.c (cgraph_node::verify_node): Verify tp_first_run.
	* cgraph.h (cgrpah_node): Turn tp_first_run back to int.
	* cgraphunit.c (tp_first_run_node_cmp): Do not watch for overflows.
	(expand_all_functions): First expand ordered section and then
	unordered.
	* lto-partition.c (lto_balanced_map): Fix printing of tp_first_run.
	* profile.c (compute_value_histograms): Error on out of range
	tp_first_runs.

From-SVN: r279178
2019-12-10 17:54:41 +00:00
Jan Hubicka 0665642700 predict.c (compute_function_frequency): Check for presence of IPA profile.
* predict.c (compute_function_frequency): Check for presence of IPA
	profile.

From-SVN: r279177
2019-12-10 17:47:28 +00:00
Jan Hubicka 12651dc6dc varasm.c (default_function_section): Fix confused tests for tp_first_run reordering.
* varasm.c (default_function_section): Fix confused tests for
	tp_first_run reordering.

From-SVN: r279176
2019-12-10 17:46:33 +00:00
Jonathan Wakely 91fd16a7bd libstdc++: Fix description of std::ios::trunc (PR 92886)
PR libstdc++/92886
	* include/bits/ios_base.h (std::ios_base::trunc): Fix comment.

From-SVN: r279175
2019-12-10 17:35:42 +00:00
Richard Sandiford aa1a27950a [AArch64] Don't allow partial SVE modes in GPRs
With -msve-vector-bits=N, the payload of some partial SVE modes can
be 16 bytes or smaller, which makes them small enough to fit in a
pair of GPRs.  We specifically don't want that, because the payload
is distributed evenly across the SVE register rather than collected
at one end.  Marshalling it into a GPR via register operations would
be expensive.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Don't
	allow SVE modes in GPRs.

gcc/testsuite/
	* gcc.target/aarch64/sve/mixed_size_7.c: New test.

From-SVN: r279174
2019-12-10 16:46:05 +00:00
Richard Sandiford 30f8bf3d6c [AArch64] Fix INDEX patterns for partial VNx2 modes
The INDEX patterns handle partial modes by choosing the container
size rather than the element size, so that the number of lanes
(and thus number of additions) matches the mode.  This means that
all VNx4 modes use .s and all VNx2 modes use .d, etc.

When adding this, I'd forgotten that the choice between Wn and Xn
registers would need to be updated to use the container size too.
For partial VNx2s, we were using .d containers with Wn rather than
Xn source registers.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/iterators.md (vccore): New iterator.
	* config/aarch64/aarch64-sve.md (vec_series<mode>): Use it instead
	of vwcore.
	(*vec_series<mode>_plus): Likewise.

gcc/testsuite/
	* gcc.target/aarch64/sve/mixed_size_6.c: New test.

From-SVN: r279173
2019-12-10 16:32:40 +00:00
Jonathan Wakely 393283b8ef libstdc++: Define __cpp_lib_constexpr_complex macro
This is LWG issue 3349.

	* include/std/complex (__cpp_lib_constexpr_complex): Define.
	* include/std/version (__cpp_lib_constexpr_complex): Likewise.
	* testsuite/26_numerics/complex/1.cc: New test.
	* testsuite/26_numerics/complex/2.cc: New test.

From-SVN: r279172
2019-12-10 16:15:59 +00:00
Jonathan Wakely b65bdd27fd libstdc++: Reduce header dependencies in <span>
* include/std/span: Do not include <tuple> and <utility>.
	(tuple_size, tuple_element): Declare.

From-SVN: r279171
2019-12-10 16:15:55 +00:00
Jonathan Wakely 990a09e486 libstdc++: Fix bug in std::indirect_result_t
The alias template wasn't working because it applied iter_reference_t to
the pack of iterators before and after passing the pack to the
__indeirect_result helper.

	* include/bits/iterator_concepts.h (indirect_result_t): Do not apply
	iter_reference_t to parameter pack.
	* testsuite/24_iterators/indirect_callable/projected.cc: New test.

From-SVN: r279170
2019-12-10 16:15:49 +00:00
Frederik Harwath d0d0ba20f2 Add tests to verify OpenACC clause locations
Check that the column information for OpenACC clauses is communicated correctly
to the middle-end, in particular by the Fortran front-end (cf. PR 92793).

2019-12-10  Frederik Harwath  <frederik@codesourcery.com>

gcc/testsuite/
	* c-c++-common/goacc/clause-locations.c: New test.
	* gfortran.dg/goacc/clause-locations.f90: New test.

From-SVN: r279169
2019-12-10 16:12:58 +00:00
Frederik Harwath 64c5157f6d Use clause locations in OpenACC nested reduction warnings
Since the Fortran front-end now sets the clause locations correctly, we can
emit warnings with more precise locations if we encounter conflicting
operations for a variable in reduction clauses.

2019-12-10  Frederik Harwath  <frederik@codesourcery.com>

gcc/
	* omp-low.c (scan_omp_for): Use clause location in warning.

From-SVN: r279168
2019-12-10 16:06:12 +00:00
Lewis Hyatt 53eb0cb3a1 Add myself to MAINTAINERS file.
2019-12-10  Lewis Hyatt  <lhyatt@gmail.com>

        * MAINTAINERS (Write After Approval): Add myself.

From-SVN: r279167
2019-12-10 14:21:22 +00:00
Richard Sandiford b78d005e8f Make dwarf2out punt for MODE_VECTOR_BOOL
The dwarf2 handling of vector constants currently divides the vector
into a length (number of elements) and byte element size.  This doesn't
work well for MODE_VECTOR_BOOL, where several elements are packed into
the same byte.

We should probably add a way of encoding this in future, but for now
the safest thing is to punt, like we already do for variable-length
vectors.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* dwarf2out.c (loc_descriptor): Punt for MODE_VECTOR_BOOL.
	(add_const_value_attribute): Likewise.

gcc/testsuite/
	* gcc.target/aarch64/sve/acle/general/debug_4.c: New test.

From-SVN: r279165
2019-12-10 12:20:20 +00:00
Richard Sandiford b78500ecb8 Add missing conversion in vect_create_epilog_for_reduction
The direct_slp_reduc code in vect_create_epilog_for_reduction was
still assuming that all types involved in a reduction are the same
(up to types_compatible_p), whereas we now support differences in
sign.  This was causing an ICE in gcc.dg/vect/pr92324-4.c for SVE.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vect_create_epilog_for_reduction): When
	handling direct_slp_reduc, allow the PHI arguments to have
	a different type from the vector elements.

From-SVN: r279164
2019-12-10 12:20:12 +00:00
Richard Sandiford f1c13d6dde Record the loop masks needed for EXTRACT_LAST_REDUCTIONs
The analysis phase of vectorizable_condition wasn't recording the
loop masks needed by the transform phase.  This meant that the masks
wouldn't be created in the (rare) case that no other statement needed
them.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-stmts.c (vectorizable_condition): Record the loop
	masks required for extract-last reductions.

gcc/testsuite/
	* gcc.target/aarch64/sve/clastb_9.c: New test.

From-SVN: r279163
2019-12-10 12:20:07 +00:00
Richard Sandiford 9ec35478cc Fix EXTRACT_LAST_REDUCTION handling of pattern stmts
Unlike most vector ops, extract-last reductions replace the original
scalar code in-situ rather than adding an adjacent vector implementation.
I.e.:

   dest_1 = COND_EXPR <...>;

becomes:

   dest_1 = .EXTRACT_LAST (...);

gcc.dg/vect/vect-cond-reduc-4.c was ICEing for SVE because we tried
to replace the pattern statement in this way, rather than replacing
the original scalar statement.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-stmts.c (vect_finish_replace_stmt): Always use the
	original scalar statement rather than a pattern statement.
	(vectorizable_condition): Likewise, in the handling of extract-last
	reductions.

From-SVN: r279162
2019-12-10 12:20:02 +00:00
Richard Sandiford ca49c831ca Disallow EXTRACT_LAST_REDUCTION for reduction chains
gcc.dg/vect/vect-cond-reduc-5.c was ICEing for SVE because we
tried to use an extract-last reduction for a chain of COND_EXPRs.
Adding support for the chained case would be too invasive for stage 3
so this patch explicitly forbids it instead.  I've filed PR92884 for
the possible future work.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vectorizable_reduction): Don't use
	EXTRACT_LAST_REDUCTION for chained reductions.

From-SVN: r279161
2019-12-10 11:30:49 +00:00
Tobias Burnus 9995ce07f1 Fortran] PR 92872 – Fix get_CFI_desc
PR fortran/92872
        * trans-array.c (get_CFI_desc): Fix cond whether saved desc exists.

        PR fortran/92872
        * gfortran.dg/bind_c_optional-1.f90: New.

From-SVN: r279160
2019-12-10 11:32:12 +01:00
Richard Sandiford c175aa77aa Check for TYPE_DECL in get_odr_name_for_type
Make get_odr_name_for_type check for TYPE_DECL in the way that
its caller warn_types_mismatch previously did.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* ipa-utils.h (get_odr_name_for_type): Check for a TYPE_DECL.
	* ipa-devirt.c (warn_types_mismatch): Don't call xstrdup for the
	second demangled name.

gcc/testsuite/
	* gcc.dg/lto/tag-1_0.c, gcc.dg/lto/tag-1_1.c: New test.

From-SVN: r279159
2019-12-10 09:17:34 +00:00
Jakub Jelinek 8cf23a6f80 avx512f-vmovntpd-2.c: Ensure res is 64-byte aligned.
* gcc.target/i386/avx512f-vmovntpd-2.c: Ensure res is 64-byte aligned.
	* gcc.target/i386/avx512f-vmovntps-2.c: Likewise.

From-SVN: r279158
2019-12-10 10:02:15 +01:00
Jakub Jelinek 2eb0506194 * config/i386/i386.c (IX86_LEA_PRIORITY): Fix comment typos.
From-SVN: r279157
2019-12-10 10:01:39 +01:00
Martin Liska 52dc9c3231 Fix typos in 2 functions.
2019-12-10  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/92862
	* predict.c (predict_paths_leading_to_edge): Fix typo from e to e2.
	* tree-ssa-loop-niter.c (loop_only_exit_p): Return false
	instead of true;

From-SVN: r279156
2019-12-10 08:36:56 +00:00
Ian Lance Taylor 4b3fc18803 libbacktrace: remove duplicate low_pc/high_pc/range handling
* dwarf.c (struct pcrange): Define.
	(update_pcrange, add_ranges): New static functions.
	(add_unit_addr): Change signature to work with add_ranges.  Don't
	add base_address here.
	(add_unit_ranges): Remove.
	(find_address_ranges): Replace str/ranges parameters with
	dwarf_sections.  Use update_pcrange and add_ranges.  Change all
	callers.
	(add_function_range): Change signature to work with add_ranges.
	Don't add base_address here.
	(add_function_ranges): Remove.
	(read_function_entry): Use update_pcrange and add_ranges.

From-SVN: r279154
2019-12-10 03:41:49 +00:00
David Malcolm d68f5d458d Replace label_text ctor with "borrow" and "take"
libcpp's label_text class wraps a text buffer, along with a flag to
determine if it "owns" the buffer.

The existing ctor exposed this directly, but I found it difficult
to remember the sense of flag, so this patch hides the ctor, in
favor of static member functions "borrow" and "take", to make
the effect on ownership explicit in the name.

gcc/c-family/ChangeLog:
	* c-format.c (range_label_for_format_type_mismatch::get_text):
	Replace label_text ctor called with true with label_text::take.

gcc/c/ChangeLog:
	* c-objc-common.c (range_label_for_type_mismatch::get_text):
	Replace label_text ctor calls.

gcc/cp/ChangeLog:
	* error.c (range_label_for_type_mismatch::get_text): Replace
	label_text ctor calls with label_text::borrow.

gcc/ChangeLog:
	* gcc-rich-location.c
	(maybe_range_label_for_tree_type_mismatch::get_text): Replace
	label_text ctor call with label_text::borrow.
	* gcc-rich-location.h (text_range_label::get_text): Replace
	label_text ctor called with false with label_text::borrow.

libcpp/ChangeLog:
	* include/line-map.h (label_text::label_text): Make private.
	(label_text::borrow): New.
	(label_text::take): New.
	(label_text::take_or_copy): New.

From-SVN: r279153
2019-12-10 02:02:38 +00:00
David Malcolm d3e28653fa diagnostic_show_locus: move initial newline to callers
diagnostic_show_locus adds a newline before doing anything (including
the do-nothing-else case).

This patch removes this initial newline, adding it to all callers
of diagnostic_show_locus instead.

Doing so makes diagnostic_show_locus more flexible, allowing it to be
used in my analyzer patch kit for printing diagnostic paths.

gcc/c-family/ChangeLog:
	* c-format.c (selftest::test_type_mismatch_range_labels): Remove
	initial newline from expected outputs.
	* c-opts.c (c_diagnostic_finalizer): Add pp_newline call before
	call to diagnostic_show_locus.

gcc/ChangeLog:
	* diagnostic-show-locus.c (diagnostic_show_locus): Remove initial
	newline.
	(selftest::test_diagnostic_show_locus_unknown_location): Remove
	initial newline from expected outputs.
	(selftest::test_one_liner_simple_caret): Likewise.
	(selftest::test_one_liner_caret_and_range): Likewise.
	(selftest::test_one_liner_multiple_carets_and_ranges): Likewise.
	(selftest::test_one_liner_fixit_insert_before): Likewise.
	(selftest::test_one_liner_fixit_insert_after): Likewise.
	(selftest::test_one_liner_fixit_remove): Likewise.
	(selftest::test_one_liner_fixit_replace): Likewise.
	(selftest::test_one_liner_fixit_replace_non_equal_range):
	Likewise.
	(selftest::test_one_liner_fixit_replace_equal_secondary_range):
	Likewise.
	(selftest::test_one_liner_fixit_validation_adhoc_locations):
	Likewise.
	(selftest::test_one_liner_many_fixits_1): Likewise.
	(selftest::test_one_liner_many_fixits_2): Likewise.
	(selftest::test_one_liner_labels): Likewise.
	(selftest::test_one_liner_simple_caret_utf8): Likewise.
	(selftest::test_one_liner_caret_and_range_utf8): Likewise.
	(selftest::test_one_liner_multiple_carets_and_ranges_utf8):
	Likewise.
	(selftest::test_one_liner_fixit_insert_before_utf8): Likewise.
	(selftest::test_one_liner_fixit_insert_after_utf8): Likewise.
	(selftest::test_one_liner_fixit_remove_utf8): Likewise.
	(selftest::test_one_liner_fixit_replace_utf8): Likewise.
	(selftest::test_one_liner_fixit_replace_non_equal_range_utf8):
	Likewise.
	(selftest::test_one_liner_fixit_replace_equal_secondary_range_utf8):
	Likewise.
	(selftest::test_one_liner_fixit_validation_adhoc_locations_utf8):
	Likewise.
	(selftest::test_one_liner_many_fixits_1_utf8): Likewise.
	(selftest::test_one_liner_many_fixits_2_utf8): Likewise.
	(selftest::test_one_liner_labels_utf8): Likewise.
	(selftest::test_add_location_if_nearby): Likewise.
	(selftest::test_diagnostic_show_locus_fixit_lines): Likewise.
	(selftest::test_overlapped_fixit_printing): Likewise.
	(selftest::test_overlapped_fixit_printing_utf8): Likewise.
	(selftest::test_overlapped_fixit_printing_2): Likewise.
	(selftest::test_fixit_insert_containing_newline): Likewise.
	(selftest::test_fixit_insert_containing_newline_2): Likewise.
	(selftest::test_fixit_replace_containing_newline): Likewise.
	(selftest::test_fixit_deletion_affecting_newline): Likewise.
	(selftest::test_line_numbers_multiline_range): Likewise.
	* diagnostic.c (default_diagnostic_finalizer): Add pp_newline call
	before call to diagnostic_show_locus.
	(diagnostic_append_note): Likewise.

gcc/fortran/ChangeLog:
	* error.c (gfc_diagnostic_starter): Add pp_newline call before
	call to diagnostic_show_locus.

gcc/testsuite/ChangeLog:
	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
	(custom_diagnostic_finalizer): Add pp_newline call before call to
	diagnostic_show_locus.

From-SVN: r279152
2019-12-10 01:48:42 +00:00
GCC Administrator 41aeca8d1b Daily bump.
From-SVN: r279150
2019-12-10 00:16:19 +00:00
Thomas Schwinge 47afc7b4dd [PR92116, PR92877] [OpenACC] Replace 'openacc.data_environ' by standard libgomp mechanics
libgomp/
	PR libgomp/92116
	PR libgomp/92877
	* oacc-mem.c (lookup_dev): Reimplement.  Adjust all users.
	* libgomp.h (struct acc_dispatch_t): Remove 'data_environ' member.
	Adjust all users.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4-2.c:
	Remove XFAIL.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/pr92877-1.c: New file.

Co-Authored-By: Julian Brown <julian@codesourcery.com>

From-SVN: r279147
2019-12-09 23:52:56 +01:00
Thomas Schwinge cec41816c1 [PR92503] [OpenACC] Don't silently 'acc_unmap_data' in 'acc_free'
libgomp/
	PR libgomp/92503
	* oacc-mem.c (acc_free): Error out instead of 'acc_unmap_data'.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-1.c: New
	file.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-3-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-3.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/clauses-1.c: Adjust.
	* testsuite/libgomp.oacc-c-c++-common/context-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/context-2.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/context-3.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/context-4.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-13.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-14.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-18.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-91.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/nested-1.c: Likewise.

From-SVN: r279146
2019-12-09 23:52:47 +01:00