Commit Graph

178041 Commits

Author SHA1 Message Date
Jason Merrill
e6321c4508 c++: Support C++20 virtual consteval functions. [PR88335]
Jakub's partial implementation of consteval virtual had trouble with the
current ABI requirement that we omit the vtable slot for a consteval virtual
function; it's difficult to use the normal code for constant evaluation and
also magically make the slots disappear if the vtables get written out.  I
notice that Clang trunk also doesn't implement that requirement, and it
seems unnecessary to me; I expect consteval virtual functions to be
extremely rare, so it should be fine to just give them a vtable slot as
normal but put zero in it if the vtable gets emitted.  I've commented as
much to the ABI committee.

One of Jakub's testcases points out that we weren't handling thunks in
our constexpr virtual handling; that is fixed here as well.

Incidentally, being able to use C++11 range-for definitely simplified
clear_consteval_vfns.

gcc/c-family/ChangeLog:

	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_consteval.

gcc/cp/ChangeLog:

	* decl.c (grokfndecl): Allow consteval virtual.
	* search.c (check_final_overrider): Check consteval mismatch.
	* constexpr.c (cxx_eval_thunk_call): New.
	(cxx_eval_call_expression): Call it.
	* cvt.c (cp_get_fndecl_from_callee): Handle FDESC_EXPR.
	* decl2.c (mark_vtable_entries): Track vtables with consteval.
	(maybe_emit_vtables): Pass consteval_vtables through.
	(clear_consteval_vfns): Replace consteval with nullptr.
	(c_parse_final_cleanups): Call it.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp2a/consteval-virtual1.C: New test.
	* g++.dg/cpp2a/consteval-virtual2.C: New test.
	* g++.dg/cpp2a/consteval-virtual3.C: New test.
	* g++.dg/cpp2a/consteval-virtual4.C: New test.
	* g++.dg/cpp2a/consteval-virtual5.C: New test.

Co-authored-by: Jakub Jelinek <jakub@redhat.com>
2020-07-02 13:20:23 -04:00
Richard Biener
105ecbea5f tree-optimization/96028 - fix bogus externalizing of SLP node
This guards externalizing a SLP node when it fails to code generate
to actually have scalar defs we can use.  It also makes failure
to do so not fell the whole SLP instance but instead try this again
on the parent.

2020-07-02  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/96028
	* tree-vect-slp.c (vect_slp_convert_to_external): Make sure
	we have scalar stmts to use.
	(vect_slp_analyze_node_operations): When analyzing a child
	failed try externalizing the parent node.
2020-07-02 14:38:28 +02:00
Martin Jambor
053c88093a ipa-sra: Prevent constructing debug info from wrong argument
The mechanism generating debug info for removed parameters did not
adjust index of the argument in the call statement to take into
account extra arguments IPA-SRA might have produced when splitting a
strucutre.  This patch addresses that omission and stops gdb from
showing incorrect value for the removed parameter and says "value
optimized out" instead.  The guality testcase will end up as
UNSUPPORTED in the results which is how Richi told me on IRC we deal
with this.

It is possible to generate debug info to actually show the value of
the removed parameter but so far my approaches to do just that seem
toocontroversial
(https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546705.html), so
before I come up with something better I'd like to push this to master
and the gcc-10 branch in time for the GCC 10.2 release.

gcc/ChangeLog:

2020-07-01  Martin Jambor  <mjambor@suse.cz>

	PR debug/95343
	* ipa-param-manipulation.c (ipa_param_adjustments::modify_call): Adjust
	argument index if necessary.

gcc/testsuite/ChangeLog:

2020-07-01  Martin Jambor  <mjambor@suse.cz>

	PR debug/95343
	* gcc.dg/guality/pr95343.c: New test.
2020-07-02 14:30:50 +02:00
Martin Liska
1ac9258cca
VEC_COND_EXPR: do not expand comparisons feeding it
gcc/ChangeLog:

	PR middle-end/95830
	* tree-vect-generic.c (expand_vector_condition): Forward declaration.
	(expand_vector_comparison): Do not expand a comparison if all
	uses are consumed by a VEC_COND_EXPR.
	(expand_vector_operation): Change void return type to bool.
	(expand_vector_operations_1): Pass dce_ssa_names.
2020-07-02 12:41:42 +02:00
Ilya Leoshkevich
d59a576b8b Redefine NULL to nullptr
Bootstrap with musl libc fails with numerous "missing sentinel in
function call" errors.  This is because musl defines NULL as 0L for C++,
but gcc requires sentinel value to be a pointer or __null.

Jonathan Wakely says:

    To be really safe during stage 1, GCC should not use NULL as a
    pointer sentinel in C++ code anyway.

    The bootstrap compiler could define it to 0 or 0u, neither of which
    is guaranteed to be OK to pass as a varargs sentinel where a null
    pointer is expected.  Any of (void*)0 or (void*)NULL or nullptr
    would be safe.

While it is possible to fix this by replacing NULL sentinels with
nullptrs, such approach would generate backporting conflicts, therefore
simply redefine NULL to nullptr at the end of system.h, where it would
not confuse system headers.

gcc/ChangeLog:

2020-06-30  Ilya Leoshkevich  <iii@linux.ibm.com>

	PR bootstrap/95700
	* system.h (NULL): Redefine to nullptr.
2020-07-02 12:38:18 +02:00
Mark Eggleston
d0e7c73c51 Fortran : portability fix for PR52279
Use of _() to enclose string literals assigned to arrays is not
portable.  Use pointer instead.

2020-07-02  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/fortran/

	PR fortran/52279
	* check.c (gfc_invalid_boz):  Change array declaration for
	hint into a pointer.
2020-07-02 11:04:40 +01:00
Jakub Jelinek
00f24f5673 tree-cfg: Fix ICE with switch stmt to unreachable opt and forced labels [PR95857]
The following testcase ICEs, because during the cfg cleanup, we see:
  switch (i$e_11) <default: <L12> [33.33%], case -3: <lab2> [33.33%], case 0: <L10> [33.33%], case 2: <lab2> [33.33%]>
...
lab2:
  __builtin_unreachable ();
where lab2 is FORCED_LABEL.  The way it works, we go through the case labels
and when we reach the first one that points to gimple_seq_unreachable*
basic block, we remove the edge (if any) from the switch bb to the bb
containing the label and bbs reachable only through that edge we've just
removed.  Once we do that, we must throw away all other cases that use
the same label (or some other labels from the same bb we've removed the edge
to and the bb).  To avoid quadratic behavior, this is not done by walking
all remaining cases immediately before removing, but only when processing
them later.
For normal labels this works, fine, if the label is in a deleted bb, it will
have NULL label_to_block and we handle that case, or, if the unreachable bb
has some other edge to it, only the edge will be removed and not the bb,
and again, find_edge will not find the edge and we only remove the case.
And if a label would be to some other block, that other block wouldn't have
been removed earlier because there would be still an edge from the switch
block.
Now, FORCED_LABEL (and I think DECL_NONLOCAL too) break this, because
those labels aren't removed, but instead moved to some surrounding basic
block.  So, when we later process those, when their gimple_seq_unreachable*
basic block is removed, label_to_block will return some unrelated block
(in the testcase the switch bb), so we decide to keep the case which doesn't
seem to be unreachable, but we don't really have an edge from the switch
block to the block the label got moved to.

I thought first about punting in gimple_seq_unreachable* on
FORCED_LABEL/DECL_NONLOCAL labels, but that might penalize even code that
doesn't care, so this instead just makes sure that for
FORCED_LABEL/DECL_NONLOCAL labels that are being removed (and thus moved
randomly) we remember in a hash_set the fact that those labels should be
treated as removed for the purpose of the optimization, and later on
handle those labels that way.

2020-07-02  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/95857
	* tree-cfg.c (group_case_labels_stmt): When removing an unreachable
	base_bb, remember all forced and non-local labels on it and later
	treat those as if they have NULL label_to_block.  Formatting fix.
	Fix a comment typo.

	* gcc.dg/pr95857.c: New test.
2020-07-02 11:38:20 +02:00
Richard Biener
d5d9f7834a tree-optimization/96022 - fix ICE with vectorized shift
This fixes lane extraction for internal def vectorized shifts
with an effective scalar shift operand by always using lane zero
of the first vector stmt.

It also fixes a SLP build issue noticed on the testcase where
we end up building unary vector ops with the only operand built
form scalars which isn't profitable by itself.  The exception
is for stores.

2020-07-02  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/96022
	* tree-vect-stmts.c (vectorizable_shift): Only use the
	first vector stmt when extracting the scalar shift amount.
	* tree-vect-slp.c (vect_build_slp_tree_2): Also build unary
	nodes with all-scalar children from scalars but not stores.
	(vect_analyze_slp_instance): Mark the node not failed.

	* g++.dg/vect/pr96022.cc: New testcase.
2020-07-02 11:18:09 +02:00
Fei Yang
5c9669a0e6 vect: Fix an ICE in exact_div [PR95961]
In the test case for PR95961, vectorization factor computed
by vect_determine_vectorization_factor is [8,8].  But this is
updated to [1,1] later by vect_update_vf_for_slp.  When we call
vect_get_num_vectors in vect_enhance_data_refs_alignment, the number
of scalars which is based on the vectorization factor is not a multiple
of the the number of elements in the vector type.  This leads to
the ICE.  This isn't a simple stream of contiguous vector accesses.
It's hard to predict from the available information how many vector
accesses we'll actually need per iteration.  As discussed, here we
should use the number of scalars instead of the number of vectors as
an upper bound for the loop saving info about DR in the hash table.

2020-07-02  Felix Yang  <felix.yang@huawei.com>

gcc/
	PR tree-optimization/95961
	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use the
	number of scalars instead of the number of vectors as an upper bound
	for the loop saving info about DR in the hash table.  Remove unused
	local variables.

gcc/testsuite/
	PR tree-optimization/95961
	* gcc.target/aarch64/sve/pr95961.c: New test.
2020-07-02 10:14:33 +01:00
Jakub Jelinek
9d50112acf openmp: Diagnose non-rectangular loops with invalid steps
THe OpenMP 5 standard requires that if some loop in OpenMP loop nest refers
to some outer loop's iterator variable, then the subtraction of the multiplication
factors for the outer iterator multiplied by the outer increment modulo the
inner increment is 0.  For loops with non-constants in any of these we can't
diagnose it, it would be a task for something like -fsanitize=openmp,
but if all these are constant, we can diagnose it.

2020-07-02  Jakub Jelinek  <jakub@redhat.com>

	* omp-expand.c (expand_omp_for): Diagnose non-rectangular loops with
	invalid steps - ((m2 - m1) * incr_outer) % incr must be 0 in valid
	OpenMP non-rectangular loops.  Use XALLOCAVEC.

	* c-c++-common/gomp/loop-7.c: New test.
2020-07-02 11:03:33 +02:00
Eric Botcazou
6153cfd7a3 Reject components in extensions overlapping with the parent
Such problematic components can be specified by means of a component
clause but they cannot be fully supported by the type system.  They
had initially been forbidden, then we decided to accept them by working
around the type system, but this is very fragile and, for example, any
static aggregate is guaranteed to trigger an ICE with the current
implementation.

We now reject them again, except if the -gnatd.K switch is passed.

gcc/ada/ChangeLog:
	* debug.adb (d.K): Document new usage.
	* fe.h (Debug_Flag_Dot_KK): Declare.
	* gcc-interface/decl.c (gnat_to_gnu_field): Give an error when the
	component overlaps with the parent subtype, except with -gnatd.K.
2020-07-02 10:29:34 +02:00
Martin Liska
ece21ff6ea
Do not stream all zeros for gcda files.
gcc/ChangeLog:

	PR gcov-profile/95348
	* coverage.c (read_counts_file): Read only COUNTERS that are
	not all-zero.
	* gcov-dump.c (tag_function): Change signature from unsigned to
	signed integer.
	(tag_blocks): Likewise.
	(tag_arcs): Likewise.
	(tag_lines): Likewise.
	(tag_counters): Likewise.
	(tag_summary): Likewise.
	* gcov.c (read_count_file): Read all non-zero counters
	sensitively.

libgcc/ChangeLog:

	PR gcov-profile/95348
	* libgcov-driver.c (merge_one_data): Merge only profiles
	that are not of non-zero type.
	(write_one_data): Write counters only if there's one non-zero
	value.
	* libgcov-util.c (tag_function): Change signature from unsigned
	to int.
	(tag_blocks): Likewise.
	(tag_arcs): Likewise.
	(tag_counters): Likewise.
	(tag_summary): Likewise.
	(tag_lines): Read only if COUNTERS is non-zero.
	(read_gcda_file): Handle negative length for COUNTERS type.
2020-07-02 10:16:02 +02:00
Mark Eggleston
8f8ea4a47f Fortran : ICE in generic_correspondence PR95584
Output an error for ambiguous interfaces in generic interface
instead of ICE.

2020-07-02  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95584
	* interface.c (generic_correspondence): Only use the pointer
	to a symbol if exists.

2020-07-02  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95584
	* gfortran.dg/pr95584.f90: New test.
2020-07-02 07:48:04 +01:00
Kewen Lin
224682ffa1 testsuite: Ignore line no. for BB vectorization message
The case g++.dg/vect/slp-pr56812.cc need to be fixed a bit with
line number neglection since the message for basic block vectorization
looks like:

  slp-pr56812.cc:19:1: optimized: basic block part vectorized using
  16 byte vectors

while for loop vectorization, it looks like:

  slp-pr56812.cc:17:18: optimized: loop vectorized using 16 byte
  vectors

gcc/testsuite/ChangeLog:

	* g++.dg/vect/slp-pr56812.cc: Ignore line number for basic block
	vectorization messages.
2020-07-02 00:58:18 -05:00
Kito Cheng
a4b531b213 RISC-V: Handle multi-letter extension for multilib-generator
- The order of multi-lib config could be wrong if multi-ltter are
   used, e.g. `./multilib-generator rv32izfh-ilp32--c`, would expect
   rv32ic_zfh/ilp32 reuse rv32i_zfh/ilp32, however the multi-ltter is not
   handled correctly, it will generate reuse rule for rv32izfhc/ilp32
   which is invalid arch configuration.

 - Remove re-use rule gen for g/imafd, because we canonicalize the -march at
   gcc driver too, so we don't need handle 'g' for multilib now.

gcc/ChangeLog:

	* config/riscv/multilib-generator (arch_canonicalize): Handle
	multi-letter extension.
	Using underline as separator between different extensions.
2020-07-02 10:38:31 +08:00
GCC Administrator
64f761e4ac Daily bump. 2020-07-02 00:16:26 +00:00
Pip Cet
34127f4ada The variant of editing distance we use doesn't satisfy the triangle inequality.
gcc

	* spellcheck.c (test_data): Add problematic strings.
	(test_metric_conditions): Don't test the triangle inequality
	condition, which our distance function does not satisfy.
2020-07-01 14:59:56 -06:00
Omar Tahir
be7c41a556 aarch64: Fix missing BTI instruction in trampolines
If two functions require trampolines, and the first has BTI enabled
while the second doesn't, the generated template will be lacking
a BTI instruction.  This patch fixes this by always adding a BTI
instruction, which is safe as BTI instructions are ignored on
unsupported architecture versions.

2020-07-01  Omar Tahir  <omar.tahir@arm.com>

gcc/
	* config/aarch64/aarch64.c (aarch64_asm_trampoline_template): Always
	generate a BTI instruction.

gcc/testsuite/
	* gcc.target/aarch64/bti-4.c: New test.
2020-07-01 21:56:16 +01:00
Jeff Law
553c657206 match.pd: (x & y) - (x | y) - 1 -> ~(x ^ y) simplification [PR94882]
gcc/
	PR tree-optimization/94882
	* match.pd (x & y) - (x | y) - 1 -> ~(x ^ y): New simplification.

gcc/testsuite/
	PR tree-optimization/94882
	* gcc.dg/tree-ssa/pr94882.c: New test.
	* gcc.dg/tree-ssa/pr94882-1.c: New test.
	* gcc.dg/tree-ssa/pr94882-2.c: New test.
	* gcc.dg/tree-ssa/pr94882-3.c: New test.
2020-07-01 14:49:30 -06:00
Jonathan Wakely
a1a0dc4548 libstdc++: Remove noexcept from match_results comparisons (PR 94627)
These functions can't be noexcept because the iterators stored in the
sub_match objects can throw on any operation.

libstdc++-v3/ChangeLog:

	PR libstdc++/94627
	* include/bits/regex.h (operator==, operator!=): Remove noexcept
	equality comparisons for match_results.
	* testsuite/28_regex/match_results/94627.cc: New test.
2020-07-01 21:06:42 +01:00
Jonathan Wakely
039a630d78 analyzer: Fix -Wanalyzer-possible-null-argument warning (PR 96014)
gcc/testsuite/ChangeLog:

	PR testsuite/96014
	* g++.dg/analyzer/pr94028.C: Make operator new non-throwing so
	that the compiler doesn't implicitly mark it as returning
	non-null.
2020-07-01 20:21:34 +01:00
David Edelsohn
1617fc4479 bootstrap: Don't translate assignment to hint[].
error array must be initialized with a brace-enclosed initializer

gcc/fortran/ChangeLog

2020-07-01  David Edelsohn  <dje.gcc@gmail.com>

	* check.c (gfc_invalid_boz): Fix bootstrap. Revert
	Mark hint for translation using _().
2020-07-01 15:20:08 -04:00
David Edelsohn
b260e9123e testsuite: Adjust gfortran.dg/pr95690.f90 line number.
gfortran produces associates a different line number for the same error
message depending on x86 versus other architectures.  This patch adjusts
the dg-error line number depending on the target.

gcc/testsuite/ChangeLog

2020-07-01  David Edelsohn  <dje.gcc@gmail.com>

	* gfortran.dg/pr95690.f90: Adjust dg-error line number.
2020-07-01 14:08:34 -04:00
David Edelsohn
cfdc729d3c testsuite: Restore lp64 for some gcc.target/powerpc testcases.
gcc/testsuite/ChangeLog

2020-07-01  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/direct-move-double1.c: Require lp64.
	* gcc.target/powerpc/direct-move-float1.c: Same.
	* gcc.target/powerpc/direct-move-float3.c: Same.
	* gcc.target/powerpc/direct-move-vint1.c: Same.
	* gcc.target/powerpc/vsx-vector-5.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p7.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p8.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p9.c: Same.
2020-07-01 12:46:06 -04:00
Jeff Law
fb43b41250 Fix bootstrap for m68k.
gcc/
	* config/m68k/m68k.c (m68k_output_btst): Drop "register" keyword.
	(emit_move_sequence, output_iorsi3, output_xorsi3): Likewise.
2020-07-01 10:09:48 -06:00
Mark Eggleston
0a7183f6d1 Fortran : Fortran translation issues PR52279
Mark strings for translation by enclosing in G_() and _().

2020-06-24  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/fortran/

	PR fortran/52279
	* arith.c (reduce_binary_aa): Mark for translation the string
	parameter to gfc_check_conformance with G_().
	* check.c (gfc_invalid_boz): Mark hint for translation using
	_().  (gfc_check_achar): Mark for translation the message
	parameter to gfc_invalid_boz using G_().  (gfc_check_char):
	Mark for translation the message parameter to gfc_invalid_boz
	using G_().  (gfc_check_complex): Mark for translation the
	message parameter to gfc_invalid_boz using G_().
	(gfc_check_float): Mark for translation the message
	parameter to gfc_invalid_boz using G_().  (check_rest): Mark
	for translation the string parameter to gfc_check_conformance
	with _().  (gfc_check_minloc_maxloc): Mark for translation
	the string parameter to gfc_check_conformance with _().
	(gfc_check_findloc): Mark for translation the string parameter
	to gfc_check_conformance with _().  (check_reduction): Mark
	for translation the string parameter to gfc_check_conformance
	with _().  (gfc_check_pack): Mark for translation the string
	parameter to gfc_check_conformance with _().
	* decl.c (match_old_style_init): Mark for translation the
	message parameter to gfc_invalid_boz using G_().
	* expr.c (gfc_check_assign): Mark for translation the string
	parameter to gfc_check_conformance with _().
	* intrinsic.c (check_specific): Mark for translation the string
	parameter to gfc_check_conformance with _().
	(gfc_check_intrinsic_standard): Mark symstd_msg strings for
	translation using G_(). No need to mark symstd_msg for
	translation in call to gfc_warning or when setting symstd.
	* io.c (check_open_constraints):  Mark strings for translation
	using G_() in all calls to warn_or_error.  (match_io_element):
	Mark for translation the message parameter to gfc_invalid_boz
	using G_().
	* primary.c (match_boz_constant): Mark for translation the
	message parameter to gfc_invalid_boz using G_().
	* resolve.c (resolve_elemental_actual):  Mark for translation
	the string parameter to gfc_check_conformance with _().
	(resolve_operator):  Mark for translation the string parameter
	to gfc_check_conformance with _().  Mark translation strings
	assigned to msg using G_() for use in a call to cfg_warning.
2020-07-01 17:07:51 +01:00
Nathan Sidwell
27aebb7d6c c++: Expose cloning form predicates
A further adjustment of the function cloning.  Rather than have
copy_fndecl_with_name deduce whether a particular cdtor needs a
vtt_parm and/or has inherited parms to drop, pass that information in
from the caller.  In particular build_cdtor_clones knows when its
building the particular cdtors that might need these.  On the modules
branch I need to clone cdtors before the underlying class information
is necessarily complete.  There build_cdtor_clones is externally
callable to facilitate that.

gcc/cp/
	* class.c (copy_fndecl_with_name): Add additional predicate args, do
	not deduce them locally.
	(copy_operator_fn): Adjust copy_fndecl_with_name call.
	(build_clone): Add vtt and inherited predicate args.  Pass through
	to copy_fndecl_with_name call.
	(build_cdtor_clones): Likewise, pass through to build_clone as
	needed.
	(build_cdtor): Determine vtt and inherited here.
	* cp-tree.h (DECL_NEEDS_CTT_PARM_P): Delete.
2020-07-01 09:00:34 -07:00
Andrea Corallo
0d7e5fa655 aarch64: Add 64 bit setter getter fpsr fpcr
gcc/ChangeLog

	* config/aarch64/aarch64-builtins.c (aarch64_builtins): Add enums
	for 64bits fpsr/fpcr getter setters builtin variants.
	(aarch64_init_fpsr_fpcr_builtins): New function.
	(aarch64_general_init_builtins): Modify to make use of the later.
	(aarch64_expand_fpsr_fpcr_setter): New function.
	(aarch64_general_expand_builtin): Modify to make use of the later.
	* config/aarch64/aarch64.md (@aarch64_set_<fpscr_name><GPI:mode>)
	(@aarch64_get_<fpscr_name><GPI:mode>): New patterns replacing and
	generalizing 'get_fpcr', 'set_fpsr'.
	* config/aarch64/iterators.md (GET_FPSCR, SET_FPSCR): New int
	iterators.
	(fpscr_name): New int attribute.
	* doc/extend.texi (__builtin_aarch64_get_fpcr64)
	(__builtin_aarch64_set_fpcr64, __builtin_aarch64_get_fpsr64)
	(__builtin_aarch64_set_fpsr64): Add into AArch64 Built-in
	Functions.

gcc/testsuite/ChangeLog

	* gcc.target/aarch64/get_fpcr64_1.c: New test.
	* gcc.target/aarch64/set_fpcr64_1.c: New test.
	* gcc.target/aarch64/get_fpsr64_1.c: New test.
	* gcc.target/aarch64/set_fpsr64_1.c: New test.
2020-07-01 17:31:07 +02:00
Mark Eggleston
685d8dafb4 Fortran : False positive for optional arguments PR95446
Check that there is non-optional argument of the same rank in the
list of actual arguments.  If there is the warning is not required.

2020-07-01  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95446
	* resolve.c (resolve_elemental_actual): Add code to check for
	non-optional argument of the same rank.  Revise warning message
	to refer to the Fortran 2018 standard.

2020-07-01  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95446
	* gfortran.dg/elemental_optional_args_6.f90: Remove check
	for warnings that were erroneously output.
	* gfortran.dg/pr95446.f90: New test.
2020-07-01 15:39:16 +01:00
Martin Sebor
8461191b82 Adjust text of expected warnings changed in PR c++/86568.
libstdc++-v3/ChangeLog:

	* testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: Adjust
	text of expected warning.
	* testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc: Same.
	* testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: Same.
	* testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: Same.
	* testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: Same.
2020-07-01 08:33:29 -06:00
Christophe Lyon
aa8b5ca0b5 arm: Fix handler-align.c testcase [PR target/94743]
This testcase triggers the new warning, so compile it with
-mgeneral-regs-only.

2020-07-01  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/94743

	gcc/testsuite/
	* gcc.target/arm/handler-align.c: Add -mgeneral-regs-only.
2020-07-01 12:28:07 +00:00
Martin Liska
8439b0818e
gcov: avoid trailing space.
gcc/ChangeLog:

	* gcov.c (print_usage): Avoid trailing space for -j option.
2020-07-01 13:51:37 +02:00
Richard Biener
7b3adfa7bb tree-optimization/95839 - teach SLP vectorization about vector inputs
This teaches SLP analysis about vector typed externals that are
fed into the SLP operations via lane extracting BIT_FIELD_REFs.
It shows that there's currently no good representation for
vector code on the SLP side so I went a half way and represent
such vector externals uses always using a SLP permutation node
with a single external SLP child which has a non-standard
representation of no scalar defs but only a vector def.  That
works best for shielding the rest of the vectorizer from it.

2020-06-26  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/95839
	* tree-vect-slp.c (vect_slp_tree_uniform_p): Pre-existing
	vectors are not uniform.
	(vect_build_slp_tree_1): Handle BIT_FIELD_REFs of
	vector registers.
	(vect_build_slp_tree_2): For groups of lane extracts
	from a vector register generate a permute node
	with a special child representing the pre-existing vector.
	(vect_prologue_cost_for_slp): Pre-existing vectors cost nothing.
	(vect_slp_analyze_node_operations): Use SLP_TREE_LANES.
	(vectorizable_slp_permutation): Do not generate or cost identity
	permutes.
	(vect_schedule_slp_instance): Handle pre-existing vector
	that are function arguments.

	* gcc.dg/vect/bb-slp-pr95839-2.c: New testcase.
2020-07-01 13:32:27 +02:00
Richard Biener
deda4625f1 move ILS include to system.h
This moves ISL system header includes to system.h.

	* system.h (INCLUDE_ISL): New guarded include.
	* graphite-dependences.c: Use it.
	* graphite-isl-ast-to-gimple.c: Likewise.
	* graphite-optimize-isl.c: Likewise.
	* graphite-poly.c: Likewise.
	* graphite-scop-detection.c: Likewise.
	* graphite-sese-to-poly.c: Likewise.
	* graphite.c: Likewise.
	* graphite.h: Drop the includes here.
2020-07-01 13:24:16 +02:00
Martin Liska
4222fd8e94
gcov: shorted one option help message
gcc/ChangeLog:

	* gcov.c (print_usage): Shorted option description for -j
	option.
2020-07-01 13:02:24 +02:00
Martin Liska
c4076255e6
gcov: rename 2 options.
gcc/ChangeLog:

	* doc/gcov.texi: Rename 2 options.
	* gcov.c (print_usage): Rename -i,--json-format to
	-j,--json-format and -j,--human-readable to -H,--human-readable.
	(process_args): Fix up parsing.  Document obsolete options and
	how are they changed.

gcc/testsuite/ChangeLog:

	* g++.dg/gcov/loop.C: Use -H option instead of -j option.
2020-07-01 13:00:04 +02:00
Mark Eggleston
624e60f080 Fortran : Bogus error with additional blanks in type(*) PR95829
Checking for "* ) " instead of "*)" clears the bogus error.

2020-07-01  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95829
	* decl.c (gfc_match_decl_type_spec): Compare with "* ) " instead
	of "*)".

2020-07-01  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95829
	* gfortran.dg/pr95829.f90: New test.
2020-07-01 10:14:06 +01:00
Christophe Lyon
2f3fd53220 arm: Fix typos in testcases [PR target/94743]
In my commit r11-1732, I updated the warning message to include
quotes, but I forgot to update the testcases.

2020-01-07  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/94743

	gcc/testsuite/
	* gcc.target/arm/pr94743-1-hard.c: Add missing quotes in expected
	warning.
	* gcc.target/arm/pr94743-1-softfp.c: Likewise.
2020-07-01 06:54:37 +00:00
Jeff Law
a580aca1b6 Fix bootstrap failure on PA
gcc/
	* config/pa/pa.c (pa_emit_move_sequence): Drop register keyword.
	(pa_output_ascii): Likewise.
2020-06-30 23:03:33 -06:00
Kito Cheng
83c25f27c4 RISC-V: Preserve arch version info during normalizing arch string
- Arch version should preserved if user explicitly specified the version.
  e.g.
    After normalize, -march=rv32if3d should be -march=rv32i_f3p0d
    instead of-march=rv32ifd.

gcc/ChangeLog:

	* common/config/riscv/riscv-common.c (riscv_subset_t): New field
	added.
	(riscv_subset_list::parsing_subset_version): Add parameter for
	indicate explicitly version, and handle explicitly version.
	(riscv_subset_list::handle_implied_ext): Ditto.
	(riscv_subset_list::add): Ditto.
	(riscv_subset_t::riscv_subset_t): Init new field.
	(riscv_subset_list::to_string): Always output version info if version
	explicitly specified.
	(riscv_subset_list::parsing_subset_version): Handle explicitly
	arch version.
	(riscv_subset_list::parse_std_ext): Ditto.
	(riscv_subset_list::parse_multiletter_ext): Ditto.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/attribute-13.c: New.
2020-07-01 11:30:02 +08:00
David Edelsohn
a2cc9b454d testsuite: enable gcc.target/powerpc direct move tests.
Remove unnecessary requirements for direct-move-* tests.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/direct-move-double1.c: Remove lp64 requirement.
	* gcc.target/powerpc/direct-move-double2.c: Same.
	* gcc.target/powerpc/direct-move-float1.c: Same.
	* gcc.target/powerpc/direct-move-float2.c: Same.
	* gcc.target/powerpc/direct-move-float3.c: Same.
	* gcc.target/powerpc/direct-move-vint1.c: Same.
	* gcc.target/powerpc/direct-move-vint2.c: Same.
	* gcc.target/powerpc/direct-move-long1.c: Remove linux requirement..
	* gcc.target/powerpc/direct-move-long2.c: Same.
2020-06-30 22:08:55 -04:00
David Edelsohn
bc561b0ed2 testsuite: Remove dg-skip SPE.
Remove testsuite directives to skip SPE and SPE specific tests.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/20030218-1.c: Delete.
	* gcc.target/powerpc/20030505.c: Delete.
	* gcc.target/powerpc/20081204-1.c: Delete.
	* gcc.target/powerpc/bcd-1.c: Remove dg-skip-if SPE.
	* gcc.target/powerpc/bcd-2.c: Same.
	* gcc.target/powerpc/bcd-3.c: Same.
	* gcc.target/powerpc/direct-move-double1.c: Same.
	* gcc.target/powerpc/direct-move-double2.c: Same.
	* gcc.target/powerpc/direct-move-float1.c: Same.
	* gcc.target/powerpc/direct-move-float2.c: Same.
	* gcc.target/powerpc/direct-move-float3.c: Same.
	* gcc.target/powerpc/direct-move-long1.c: Same.
	* gcc.target/powerpc/direct-move-long2.c: Same.
	* gcc.target/powerpc/direct-move-vint1.c: Same.
	* gcc.target/powerpc/direct-move-vint2.c: Same.
	* gcc.target/powerpc/extend-divide-1.c: Same.
	* gcc.target/powerpc/extend-divide-2.c: Same.
	* gcc.target/powerpc/pack01.c: Same.
	* gcc.target/powerpc/pack02.c: Same.
	* gcc.target/powerpc/pack03.c: Same.
	* gcc.target/powerpc/pr52457.c: Same.
	* gcc.target/powerpc/pr88845.c: Same.
	* gcc.target/powerpc/quad-atomic.c: Same.
	* gcc.target/powerpc/recip-6.c: Same.
	* gcc.target/powerpc/recip-7.c: Same.
2020-06-30 21:56:38 -04:00
David Edelsohn
34c8c2139f testsuite: p8vector-int128 require int128 not lp64.
Change testsuite requirements from lp64 to int128 support.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/p8vector-int128-1.c: Require int128 not lp64.
	* gcc.target/powerpc/p8vector-int128-2.c: Same.
2020-06-30 20:38:32 -04:00
David Edelsohn
f58cc0132d testsuite: Remove restrictions on VSX tests.
Some of the testcases in gcc.target/powerpc have unnecessarily strict
requirements and run correctly on more powerpc targets.  This patch
removes the restrictions and adds appropriate HW requirements.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/pr90763.c: Adjust requirements.
	* gcc.target/powerpc/vsx-vector-1.c: Same.
	* gcc.target/powerpc/vsx-vector-2.c: Same.
	* gcc.target/powerpc/vsx-vector-3.c: Same.
	* gcc.target/powerpc/vsx-vector-4.c: Same.
	* gcc.target/powerpc/vsx-vector-5.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p7.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p8.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p9.c: Same.
	* gcc.target/powerpc/vsx-vector-abss.c: Same.
	* gcc.target/powerpc/vsx-vectorize-1.c: Same.
	* gcc.target/powerpc/vsx-vectorize-2.c: Same.
	* gcc.target/powerpc/vsx-vectorize-3.c: Same.
	* gcc.target/powerpc/vsx-vectorize-4.c: Same.
	* gcc.target/powerpc/vsx-vectorize-5.c: Same.
	* gcc.target/powerpc/vsx-vectorize-6.c: Same.
	* gcc.target/powerpc/vsx-vectorize-7.c: Same.
	* gcc.target/powerpc/vsx-vectorize-8.c: Same.
2020-06-30 20:27:48 -04:00
David Edelsohn
1aa696678e testsuite: remove SPE tests.
SPE support was removed from the "rs6000" port.  This patch removes some
left-over SPE-specific testcases from the gcc.target/powerpc directory.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/ppc-spe.c: Delete.
	* gcc.target/powerpc/ppc-spe64-1.c: Delete.
	* gcc.target/powerpc/pr60102.c: Delete.
	* gcc.target/powerpc/pr60158.c: Delete.
	* gcc.target/powerpc/pr60735.c: Delete.
	* gcc.target/powerpc/pr78458.c: Delete.
	* gcc.target/powerpc/pr80343.c: Delete.
	* gcc.target/powerpc/spe-evmerge.c: Delete.
	* gcc.target/powerpc/spe-small-data-1.c: Delete.
	* gcc.target/powerpc/spe-small-data-2.c: Delete.
	* gcc.target/powerpc/spe-unwind-1.c: Delete.
	* gcc.target/powerpc/spe-vector-memcpy.c: Delete.
	* gcc.target/powerpc/spe-vector-memset.c: Delete.
	* gcc.target/powerpc/spe1.c: Delete.
2020-06-30 20:19:23 -04:00
GCC Administrator
46fbb6c682 Daily bump. 2020-07-01 00:16:26 +00:00
David Edelsohn
c415fbb097 testsuite: change gcc.target/powerpc builtins lp64 to int128 requirement.
Some of the builtins* tests check for lp64 as a proxy for int128 support.
This patch changes the requirements to int128.  It also removes
some redundant requirements from revb.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/builtins-2-p9-runnable.c: lp64 to int128.
	* gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-6-runnable.c: Same.
	* gcc.target/powerpc/builtins-revb-runnable.c: Same.
2020-06-30 18:39:09 -04:00
Harald Anlauf
267f84c603 PR fortran/88379 - ICE with allocatable coarray, class and associate
Catch NULL pointer dereference for ASSOCIATE on allocatable coarray variable.

gcc/fortran/
	PR fortran/88379
	* resolve.c (resolve_assoc_var): Avoid NULL pointer dereference.
2020-06-30 23:36:56 +02:00
Richard Sandiford
31427b974e aarch64: Treat GNU and Advanced SIMD vectors as distinct [PR92789, PR95726]
PR95726 is about template look-up for things like:

    foo<float vecf __attribute__((vector_size(16)))>
    foo<float32x4_t>

The immediate cause of the problem is that the hash function usually
returns different hashes for these types, yet the equality function
thinks they are equal.  This then raises the question of how the types
are supposed to be treated.

I think the answer is that the GNU vector type should be treated as
distinct from float32x4_t, not least because the two types mangle
differently.  However, each type should implicitly convert to the other.

This would mean that, as far as the PR is concerned, the hashing
function is right to (sometimes) treat the types differently and
the equality function is wrong to treat them as the same.

The most obvious way to enforce the type difference is to use a
target-specific type attribute.  That on its own is enough to fix
the PR.  The difficulty is deciding whether the knock-on effects
are acceptable.

One obvious effect is that GCC then rejects:

    typedef float vecf __attribute__((vector_size(16)));
    vecf x;
    float32x4_t &z = x;

on the basis that the types are no longer reference-compatible.
I think that's again the correct behaviour, and consistent with
current Clang.

A trickier question is whether:

    vecf x;
    float32x4_t y;
    … c ? x : y …

should be valid, and if so, what its type should be [PR92789].
As explained in the comment in the testcase, GCC and Clang both
accepted this, but GCC chose the “then” type while Clang chose
the “else” type.  This can lead to different mangling for (probably
artificial) corner cases, as seen for “sel1” and “sel2” in the
testcase.

Adding the attribute makes GCC reject the conditional expression
as ambiguous.  I think that too is the correct behaviour, for the
reasons described in the testcase.  However, it does seem to have
the potential to break existing code.

It looks like aarch64_comp_type_attributes is missing cases for
the SVE attributes, but I'll handle that in a separate patch.

2020-06-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR target/92789
	PR target/95726
	* config/aarch64/aarch64.c (aarch64_attribute_table): Add
	"Advanced SIMD type".
	(aarch64_comp_type_attributes): Check that the "Advanced SIMD type"
	attributes are equal.
	* config/aarch64/aarch64-builtins.c: Include stringpool.h and
	attribs.h.
	(aarch64_mangle_builtin_vector_type): Use the mangling recorded
	in the "Advanced SIMD type" attribute.
	(aarch64_init_simd_builtin_types): Add an "Advanced SIMD type"
	attribute to each Advanced SIMD type, using the mangled type
	as the attribute's single argument.

gcc/testsuite/
	PR target/92789
	PR target/95726
	* g++.target/aarch64/pr95726.C: New test.
2020-06-30 21:40:30 +01:00
David Edelsohn
67ef8cfc1c rs6000: Fix gcc.target/powerpc testsuite target requirements.
gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/builtins-1-p9-runnable.c: Fix target requirements.
	* gcc.target/powerpc/builtins-1.c: Same.
	* gcc.target/powerpc/builtins-2-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-2.c: Same.
	* gcc.target/powerpc/builtins-3-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-3-p9.c: Same.
	* gcc.target/powerpc/builtins-3-runnable-p8.c: Same.
	* gcc.target/powerpc/builtins-3.c: Same.
	* gcc.target/powerpc/builtins-4-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-4.c: Same.
	* gcc.target/powerpc/builtins-5-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-5.c: Same.
	* gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-6-runnable.c: Same.
	* gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-7-runnable.c: Same.
	* gcc.target/powerpc/builtins-8-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-8-runnable.c: Same.
	* gcc.target/powerpc/cpu-builtin-1.c: Same.
	* gcc.target/powerpc/float128-fma1.c: Same.
	* gcc.target/powerpc/float128-hw.c: Same.
	* gcc.target/powerpc/float128-hw10.c: Same.
	* gcc.target/powerpc/float128-hw11.c: Same.
	* gcc.target/powerpc/float128-hw2.c: Same.
	* gcc.target/powerpc/float128-hw3.c: Same.
	* gcc.target/powerpc/float128-hw4.c: Same.
	* gcc.target/powerpc/float128-hw5.c: Same.
	* gcc.target/powerpc/float128-hw6.c: Same.
	* gcc.target/powerpc/float128-hw7.c: Same.
	* gcc.target/powerpc/float128-hw8.c: Same.
	* gcc.target/powerpc/float128-hw9.c: Same.
	* gcc.target/powerpc/float128-minmax.c: Same.
	* gcc.target/powerpc/float128-odd.c: Same.
	* gcc.target/powerpc/float128-sqrt1.c: Same.
2020-06-30 14:52:01 -04:00