Commit Graph

173529 Commits

Author SHA1 Message Date
Prathamesh Kulkarni
8e03b21e84 re PR tree-optimization/89007 ([SVE] Implement generic vector average expansion)
2019-12-09  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	PR tree-optimization/89007
	* tree-vect-patterns.c (vect_recog_average_pattern): If there is no
	target support available, generate code to distribute rshift over plus
	and add a carry.

testsuite/
	* gcc.target/aarch64/sve/pr89007-1.c: New test.
	* gcc.target/aarch64/sve/pr89007-2.c: Likewise.

From-SVN: r279112
2019-12-09 09:59:42 +00:00
Jonathan Wakely
1d214c3f83 libstdc++: Improve testing for path::operator+=(const string&)
* testsuite/27_io/filesystem/path/concat/strings.cc: Test more cases.

From-SVN: r279111
2019-12-09 09:59:00 +00:00
Jonathan Wakely
023a3fb491 libstdc++: fix buffer overflow in path::operator+= (PR92853)
When concatenating a path ending in a root-directory onto another path,
we added an empty filename to the end of the path twice, but only
reserved space for one. That meant the second write went past the end of
the allocated buffer.

	PR libstdc++/92853
	* src/c++17/fs_path.cc (filesystem::path::operator+=(const path&)):
	Do not process a trailing directory separator twice.
	* testsuite/27_io/filesystem/path/concat/92853.cc: New test.
	* testsuite/27_io/filesystem/path/concat/path.cc: Test more cases.

From-SVN: r279110
2019-12-09 09:58:56 +00:00
Martin Liska
a65d584dc1 Come up with constructors of symtab_node, cgraph_node and varpool_node.
2019-12-09  Martin Liska  <mliska@suse.cz>

	PR ipa/92737
	* cgraph.c (symbol_table_test::symbol_table_test): Fix
	coding style.
	* cgraph.h (symtab_node::symtab_node): New constructor.
	(cgraph_node::cgraph_node): Likewise.
	(varpool_node::varpool_node): Likewise.
	(symbol_table::allocate_cgraph_symbol): Use newly
	created constructor.
	(symbol_table::allocate_cgraph_symbol): Remove.
	* cgraphunit.c (symtab_terminator): Likewise.
	* varpool.c (varpool_node::create_empty): Use newly
	created constructor.

From-SVN: r279109
2019-12-09 09:00:42 +00:00
François Dumont
4383959047 libstdc++: Add C++20 P1032 constexpr to _GLIBCXX_DEBUG array
* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
	Fix static_assert line number.
	* testsuite/23_containers/array/tuple_interface/
	tuple_element_debug_neg.cc: Likewise.

From-SVN: r279108
2019-12-09 08:44:15 +00:00
Hongtao Liu
8b905e9b0c Enable mask movement for VCOND_EXPR under avx512f for
128/256-bit vector when integer mask is available.

Changelog
gcc/
	PR target/92686
	* config/i386/sse.md
	(*<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>,
	*<avx512>_cmp<mode>3<mask_scalar_merge_name>,
	*<avx512>_ucmp<mode>3<mask_scalar_merge_name>,
	*<avx512>_ucmp<mode>3<mask_scalar_merge_name>): New.
	* config/i386/i386.c (ix86_print_operand): New operand substitution.
	* config/i386/i386-expand.c (ix86_valid_mask_cmp_mode):
	New function.
	(ix86_expand_sse_cmp): Relax condition for integer mask from
	512-bit vector to all 128/256/512-bit vector. Delete code gen
	for avx512f compare patterns since we have generic pattern now.
	(ix86_expand_sse_movcc): Adjust condition and codegen for
	maskcmp.
	(ix86_expand_int_sse_cmp): Don't canonicalize the comparison
	when corresponding vector compare is available.

gcc/testsuite/
	* gcc.target/i386/pr92686.inc: New file.
	* gcc.target/i386/avx512bw-pr92686-vpcmp-1.c: New test.
	* gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Ditto.
	* gcc.target/i386/avx512bw-pr92686-vpcmp-2.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-vpcmp-1.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-vpcmp-2.c: Ditto.
	* gcc.target/i386/avx512bw-pr92686-movcc-1.c: Ditto.
	* gcc.target/i386/avx512bw-pr92686-movcc-2.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-movcc-1.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-movcc-2.c: Ditto.
	* gcc.target/i386/avx512vl-pr88547-1.c: Adjust testcase.
	* gcc.target/i386/pr88547-1.c: Ditto.

From-SVN: r279107
2019-12-09 04:16:24 +00:00
Ian Lance Taylor
9135a6ffc5 re PR go/92861 (Passes relative time to sem_timedwait on GNU/Hurd)
PR go/92861
    runtime: use absolute time for sem_timedwait
    
    Patch by Samuel Thibault.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210457

From-SVN: r279106
2019-12-09 03:43:33 +00:00
GCC Administrator
77cc6ae6d6 Daily bump.
From-SVN: r279104
2019-12-09 00:16:21 +00:00
Jakub Jelinek
5544dbeb1c cvt.c (maybe_warn_nodiscard): Add workaround for GCC 3.4-4.4 - cast msg to (const char *) in conditional...
* cvt.c (maybe_warn_nodiscard): Add workaround for GCC 3.4-4.4 - cast
	msg to (const char *) in conditional expressions.  Formatting fixes.

From-SVN: r279101
2019-12-09 00:22:45 +01:00
Andrew Pinski
a0d169d17a New bswap testcase.
2019-12-08  Andrew Pinski  <apinski@marvell.com>

        * gcc.c-torture/execute/bswap-3.c: New test.

From-SVN: r279100
2019-12-08 13:59:25 -08:00
Sandra Loosemore
58ccb8ec7c Revert commit r279023.
2019-12-08  Sandra Loosemore  <sandra@codesourcery.com>

	Revert commit r279023.

	2019-12-05  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* config/nios2/linux.h (LINK_EH_SPEC): Define.

	gcc/testsuite/
	* g++.target/nios2/hello-pie.C: New.
	* g++.target/nios2/nios2.exp: New.

From-SVN: r279094
2019-12-08 12:12:50 -05:00
Jan Hubicka
6d8fd122c4 Fix overflows in -fprofile-reorder-functions
This patch fixes three sissues with -fprofile-reorder-functions:
1) First is that tp_first_run is stored as 32bit integer while it can easily
   overflow (and does so during Firefox profiling).
2) Second problem is that flag_profile_functions can
   not be tested w/o function context.
   The changes to expand_all_functions makes it to work on mixed units by
   first outputting all functions w/o -fprofile-reorder-function (or with no
   profile info) and then outputting in first_run order
3) LTO partitioner was mixing up order by tp_first_run and by order.
   for no_reorder we definitly want to order via first, while for everything
   else we want to roder by second.

I have also merged duplicated comparators since they are bit fragile into
tp_first_run_node_cmp.

I originaly started to look into this because of undefined symbols with
Firefox PGO builds.  These symbols went away with fixing these bug but I am not
quite sure how. it is possible that there is another problem in lto_blanced_map
but even after reading the noreorder code few times carefuly I did not find it.
Other explanation would be that our new qsort with broken comparator due to
overflow can actualy remove some entries in the array, but that sounds bit
crazy.

Bootstrapped/regested x86_64-linux.

	* cgraph.c (cgraph_node::dump): Make tp_first_run 64bit.
	* cgraph.h (cgrpah_node): Likewise.
	(tp_first_run_node_cmp): Deeclare.
	* cgraphunit.c (node_cmp): Rename to ...
	(tp_first_run_node_cmp): ... this; export; watch for 64bit overflows;
	clear tp_first_run for no_reorder and !flag_profile_reorder_functions.
	(expand_all_functions): Collect tp_first_run and normal functions to
	two vectors so the other functions remain sorted. Do not check for
	flag_profile_reorder_functions it is function local flag.
	* profile.c (compute_value_histograms): Update tp_first_run printing.

	* lto-partition.c (node_cmp): Turn into simple order comparsions.
	(varpool_node_cmp): Remove.
	(add_sorted_nodes): Use node_cmp.
	(lto_balanced_map): Use tp_first_run_node_cmp.

From-SVN: r279093
2019-12-08 17:02:30 +00:00
Jan Hubicka
a8d9d6649e opts.c (common_handle_option): Do not clear ipa_reference for -fprofile-use.
* opts.c (common_handle_option): Do not clear ipa_reference for
	-fprofile-use.

From-SVN: r279092
2019-12-08 17:00:42 +00:00
Jan Hubicka
f514d0199a Fix tp_first_run update in split_function.
The value 0 in tp_first_run is special meaing that profile is unknown.  We
should not set it to 1.

	* ipa-split.c (split_function): Preserve 0 tp_first_run.

From-SVN: r279091
2019-12-08 16:57:20 +00:00
Jan Hubicka
a63574d7ed Silence overactive sanity check with -fpartial-profile-training
do_estimate_edge_time tests that cached and real values matches. This test
is not working precisely for global profiles because of roundoff issues when
profile of clones is subtracted from profile of offline body.  This is checked
by presence of ipa counter. This breaks with partial profile training because
we turn IPA profiles to local when they drop to 0.

	* ipa-inline-analysis.c (do_estimate_edge_time): Silence overactive
	sanity check.

From-SVN: r279090
2019-12-08 14:02:43 +00:00
Jan Hubicka
ad74bc8ca4 re PR tree-optimization/92860 (Global flags affected by -O settings are clobbered by optimize attribute)
PR tree-optimization/92860
	* common.opt (fprofile-reorder-functions, ftoplevel-reorder): Add
	Optimization flag.

From-SVN: r279089
2019-12-08 13:50:32 +00:00
Thomas Koenig
c212316b4a Error on Associate with a program.
2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92780
    * resolve.c (resolve_assoc_var): Issue error if the associating
    entity is a program.

2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92780
    * gfortran.dg/associate_50.f90: New test.

From-SVN: r279088
2019-12-08 13:42:42 +00:00
Thomas Koenig
f477062c2e re PR fortran/92764 (ICE in gfc_procedure_use)
2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92764
    * interface.c (gfc_procedure_use): Check for existence of derived
    component before using (twice).

2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92764
    * gfortran.dg/interface_44.f90: New test.

From-SVN: r279087
2019-12-08 13:02:54 +00:00
Thomas Koenig
c9942e5fae re PR fortran/92755 (ICE in gfc_dep_resolver, at fortran/dependency.c:2123)
2019-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/92755
	* dependency.c (gfc_dep_resolver):  Move skipping of _data ref
	into the loop.

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

	PR fortran/92755
	* gfortran.dg/dependency_57.f90: New test.

From-SVN: r279086
2019-12-08 12:25:15 +00:00
Rainer Orth
9f5836a692 Fix ia32 testsuite failures from C2x attributes on types
* g++.dg/cpp0x/gen-attrs-36.C: Update expected diagnostics.
	* g++.dg/cpp0x/gen-attrs-37.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-8.C: Likewise.

From-SVN: r279085
2019-12-08 10:51:58 +00:00
GCC Administrator
241224b65e Daily bump.
From-SVN: r279084
2019-12-08 00:16:24 +00:00
Andrew Pinski
c44e87ac7c Fix libstdc++ compiling for an aarch64 multilib with big-endian.
2019-12-07  Andrew Pinski  <apinski@marvell.com>

        * config/cpu/aarch64/opt/ext/opt_random.h: Wrap around with check
        for little-endian like ext/random is done.

From-SVN: r279081
2019-12-07 16:08:55 -08:00
Marek Polacek
bfbe98c7e0 PR c++/91678 - wrong error with decltype and location wrapper.
Compiling this testcase results in a bogus "invalid cast" error; this occurs
since the introduction of location wrappers in finish_id_expression.

Here we are parsing the decltype expression via cp_parser_decltype_expr which
can lead to calling various fold_* and c-family routines.  They use
non_lvalue_loc, but that won't create a NON_LVALUE_EXPR wrapper around a location
wrapper.

So before the location wrappers addition cp_parser_decltype_expr would return
NON_LVALUE_EXPR <c>.  Now it returns VIEW_CONVERT_EXPR<float *>(c), but the
STRIP_ANY_LOCATION_WRAPPER immediately following it strips the location wrapper,
and suddenly we don't know whether we have an lvalue anymore.  And that's sad
because then decltype produces the wrong type, causing nonsense errors.

	* fold-const.c (maybe_lvalue_p): Handle VIEW_CONVERT_EXPR.

	* g++.dg/cpp0x/decltype73.C: New test.

From-SVN: r279077
2019-12-07 17:35:54 +00:00
Eric Botcazou
ea37206dec re PR middle-end/90840 (ICE in simplify_subreg, at simplify-rtx.c:6441)
PR middle-end/90840
	* expr.c (expand_assignment): In the case of a CONCAT on the LHS, make
	sure to pass a valid inner mode in calls to simplify_gen_subreg.

From-SVN: r279076
2019-12-07 12:20:44 +00:00
Tobias Burnus
9c81750c5b Fortran] PR 92793 - fix column used for error diagnostic
PR fortran/92793
        * trans.c (gfc_get_location): Declare.
        * trans.c (gfc_get_location): Define; returns column-corrected location.
        (trans_runtime_error_vararg, gfc_trans_runtime_check,
        gfc_generate_module_code): Use new function.
        * trans-array.c (gfc_trans_auto_array_allocation): Likewise.
        * trans-common.c (build_field, get_init_field, create_common): Likewise.
        * trans-decl.c (gfc_build_label_decl, gfc_get_symbol_decl): Likewise.
        * trans-openmp.c (gfc_trans_omp_reduction_list, gfc_trans_omp_clauses):
        Likewise.
        * trans-stmt.c (gfc_trans_if_1): Likewise.

From-SVN: r279075
2019-12-07 12:07:07 +01:00
Richard Sandiford
b01d215df1 Fix @multitable handling in texi2pod.pl
While trying out Dennis's Armv8.6-A patch, I noticed that texi2pod.pl
didn't handle the new @multitable correctly.  There were two problems:

(1) @multitables nested in other @tables inherited the @item type from
    the enclosing @table.  Since the new @multitable is in a @table @samp,
    we applied @samp markup to the @multitable @items.  This in turn
    meant that it captured the @tab separator in the @item markup.

    Fixed by pushing an empty item code onto the stack.

(2) We didn't handle @headitem.  Fixed by enclosing it in italics,
    like we do for section headings.  This causes it to be underlined
    in the man output.

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

contrib/
	* texi2pod.pl: Handle @headitems in @multitables, printing them
	in italics.  Push an empty item code onto the stack.

From-SVN: r279074
2019-12-07 09:57:04 +00:00
Tobias Burnus
ae169f9e4c re PR c/87488 (hyperlink filenames in diagnostics)
PR c/87488
	* pretty-print.c (pp_begin_url, pp_end_url, test_urls): Use BEL
	instead of ST sequence to terminate OSC 8 strings.

Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r279073
2019-12-07 09:24:14 +01:00
GCC Administrator
b69877c60d Daily bump.
From-SVN: r279072
2019-12-07 00:16:19 +00:00
Jakub Jelinek
beefe639b2 re PR c++/92831 (CWG1299 extend_ref_init_temps_1 punts on COND_EXPRs)
PR c++/92831
	* call.c (build_conditional_expr_1): For ?: with omitted middle
	operand use cp_stabilize_reference if arg1 is glvalue_p rather than
	just if it is lvalue_p.

	* g++.dg/ext/temp-extend1.C: New test.

From-SVN: r279069
2019-12-07 00:43:45 +01:00
Tim Ruehsen
1cd4fe3d43 Fix read buffer overflow in split_directories
* make-relative-prefix.c (split_directories):
        Return early on empty 'name'

From-SVN: r279068
2019-12-06 15:20:06 -07:00
Marek Polacek
070455950d Add test for c++/92451.
This was ICEing from r277865 to r278786.

	* g++.dg/overload/error4.C: New test.

From-SVN: r279067
2019-12-06 22:12:51 +00:00
Jakub Jelinek
94a0f396ea parser.c (cp_parser_diagnose_invalid_type_name): Mention that concept is also available with -std=c++2a.
* parser.c (cp_parser_diagnose_invalid_type_name): Mention
	that concept is also available with -std=c++2a.

From-SVN: r279066
2019-12-06 22:18:58 +01:00
Jakub Jelinek
abd6d8cc4f c-cppbuiltin.c (c_cpp_builtins): Don't define __cpp_consteval for now.
* c-cppbuiltin.c (c_cpp_builtins): Don't define __cpp_consteval for
	now.

	* g++.dg/cpp2a/feat-cxx2a.C: Don't test __cpp_consteval for now.

From-SVN: r279065
2019-12-06 22:18:10 +01:00
Jakub Jelinek
2ee63d048e PR c++/92831 - CWG 1299, not extending temporary lifetime for ?:
* cp-tree.h (extend_ref_init_temps): Add a new argument with NULL
	default arg.
	* call.c (set_up_extended_ref_temp): Add COND_GUARD argument, pass it
	down to extend_ref_init_temps.  Before pushing cleanup, if COND_GUARD
	is non-NULL, create a bool temporary if needed, initialize to false
	and guard the cleanup with the temporary being true.
	(extend_ref_init_temps_1): Add COND_GUARD argument, pass it down
	to recursive calls and set_up_extended_ref_temp.  Handle COND_EXPR.
	(extend_ref_init_temps): Add COND_GUARD argument, pass it down to
	recursive calls and to extend_ref_init_temps_1.

	* g++.dg/cpp0x/temp-extend2.C: New test.

From-SVN: r279064
2019-12-06 21:16:27 +01:00
Ian Lance Taylor
eff6af8e0e re PR go/92820 (libgo.so.15 has executable stack)
PR go/92820
    runtime: only build go-context for x86 GNU/Linux
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210258

From-SVN: r279063
2019-12-06 19:52:46 +00:00
Ian Lance Taylor
5ec7a413d1 re PR other/29842 ([meta-bug] outstanding patches / issues from STMicroelectronics)
PR go/29842
    runtime: update HURD support for mOS now being embedded
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210285

From-SVN: r279062
2019-12-06 19:37:39 +00:00
Andreas Krebbel
1a880ef211 re PR rtl-optimization/92176 (LRA problem with reloads for subreg operands)
2019-12-06  Andreas Krebbel  <krebbel@linux.ibm.com>
	    Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/92176
	* lra.c (simplify_subreg_regno): Don't permit unconditional
	changing mode for LRA too.

2019-12-06  Andreas Krebbel  <krebbel@linux.ibm.com>
	    Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/92176
	* gcc.target/s390/pr92176.c: New test.


Co-Authored-By: Vladimir Makarov <vmakarov@redhat.com>

From-SVN: r279061
2019-12-06 19:30:37 +00:00
Kwok Cheung Yeung
3ad4a03ac6 Fix Fortran linker errors on AMD GCN
2019-12-06  Kwok Cheung Yeung  <kcy@codesourcery.com>

	libgomp/
	* config/accel/proc.c (omp_get_num_procs): Apply ialias macro.

From-SVN: r279060
2019-12-06 18:33:19 +00:00
Martin Sebor
0882133399 Avoid -Wincompatible-pointer-types on targets like arm-eabi.
gcc/testsuite/ChangeLog:

	* gcc.dg/Wstringop-overflow-23.c: Use the correct argument type.
	* gcc.dg/Wstringop-overflow-24.c: Same.

From-SVN: r279059
2019-12-06 11:23:41 -07:00
Richard Sandiford
02a32ab4a6 [C++] Pass type uses through the verify_type_context hook
This patch makes the C++ frontend work with the verify_type_context hook.
We need some new type contexts for features that don't exist in C, but
otherwise the patch is very similar to the C one.

TCTX_CAPTURE_BY_COPY could really be treated as an instance of
TCTX_FIELD, but the error message is better if we split it out.

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

gcc/
	* target.h (TCTX_ALLOCATION, TCTX_DEALLOCATION, TCTX_EXCEPTIONS)
	(TCTX_CAPTURE_BY_COPY): New type_context_kinds.
	* config/aarch64/aarch64-sve-builtins.cc (verify_type_context):
	Handle them.

gcc/cp/
	* decl.c (start_decl_1): Use verify_type_context to check whether
	the target allows variables of a particular type to have static
	or thread-local storage duration.
	(check_array_initializer): Use verify_type_context to check whether
	the target allows a particular type to be used as an array element.
	(create_array_type_for_decl): Likewise.
	(cp_finish_decl): Use verify_type_context to check whether
	the target allows static member variables of a particular type.
	(grokdeclarator): Likewise.  Also use verify_type_context to check
	whether the target allows non-static member variables of a particular
	type.
	* except.c: Include target.h.
	(is_admissible_throw_operand_or_catch_parameter): Use
	verify_type_context to check whether the target allows particular
	types to be thrown and caught.
	* typeck2.c (add_exception_specifier): Likewise.
	* init.c (build_new_1): Use verify_type_context to check whether
	the target allows particular types to be dynamically allocated.
	(build_vec_delete_1, build_delete): Use verify_type_context to check
	whether the target allows particular types to be deleted.
	* lambda.c (add_capture): Use verify_type_context to check
	whether the target allows particular types to be captured by copy.
	* pt.c: Include target.h.
	(instantiate_class_template_1): Use verify_type_context to check
	whether the target allows non-static member variables of a particular
	type.
	* typeck.c (cxx_alignof_expr): Use verify_type_context to check
	whether the target allows the alignment of a particular type
	to be measured.
	(pointer_diff, cp_build_unary_op): Use verify_type_context to check
	whether the target allows arithmetic involving pointers to particular
	types.

gcc/testsuite/
	* g++.dg/ext/sve-sizeless-1.C: New test.
	* g++.dg/ext/sve-sizeless-2.C: Likewise.

From-SVN: r279058
2019-12-06 18:22:24 +00:00
Andrew Stubbs
1e8f5d49d7 Fix unrecognised GCN instruction.
2019-12-06  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (gather<mode>_insn_1offset<exec>): Use %o
	in the asm output.

From-SVN: r279055
2019-12-06 17:49:47 +00:00
Andrew Stubbs
2b99bed844 Enable QI/HImode vector moves
2019-12-06  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (VEC_1REG_MODE): Remove V64QI and V64HI.
	(VEC_1REG_ALT): Likewise.
	(VEC_ALL1REG_MODE): New mode iterator.
	(VEC_1REG_INT_MODE): Remove V64QI and V64HI.
	(VEC_1REG_INT_ALT): Likewise.
	(VEC_ALL1REG_INT_MODE): New mode interator.
	(VEC_ALL1REG_INT_ALT): Likewise.
	(VEC_REG_MODE): Remove V64QI and V64HI.
	(VEC_ALLREG_MODE): New mode interator.
	(vec_merge): Change to VEC_ALLREG_MODE.
	(vec_merge_with_clobber): Likewise.
	(vec_merge_with_vcc): Likewise.
	(mov<mode>): Likewise.
	(mov<mode>_unspec): Likewise.
	(*mov<mode>): Change to VEC_ALL1REG_MODE.
	(mov<mode>_exec): Likewise.
	(*mov<mode>_exec_match): Likewise.
	(mov<mode>_sgprbase): Likewise.
	(reload_in<mode>): Change to VEC_ALLREG_MODE.
	(reload_out<mode>): Likewise.
	(scalar address splits): Likewise.
	(*vec_set<mode>): Change to VEC_ALL1REG_MODE.
	(vec_set<mode>): Change to VEC_ALLREG_MODE.
	(*vec_set<mode>_1): Change to VEC_ALL1REG_MODE.
	(vec_duplicate<mode><exec>): Likewise.
	(vec_extract<mode><scalar_mode>): Likewise.
	(vec_init<mode><scalar_mode>): Change to VEC_ALLREG_MODE.
	(gather_load<mode>): Likewise.
	(gather<mode>_exec): Likewise.
	(gather<mode>_expr<exec>): Likewise.
	(gather<mode>_insn_1offset<exec>): Likewise.
	(gather<mode>_insn_1offset_ds<exec>): Likewise.
	(gather<mode>_insn_2offsets<exec>): Likewise.
	(ds_bpermute<mode>): Change to VEC_ALL1REG_MODE.
	(VEC_INT_MODE): Remove V64QI and V64HI.
	(vcond_mask_<mode>di): Change to VEC_ALLREG_MODE.
	(vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>): Change to
	VEC_ALL1REG_MODE.
	(vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Likewise.
	(vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Likewise.
	(vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Likewise.
	(maskload<mode>di): Change to VEC_ALL1REG_MODE.
	(maskstore<mode>di): Likewise.
	(mask_gather_load<mode>): Likewise.
	(mov_from_lane63_<mode>): Likewise.
	* config/gcn/gcn.c (gcn_vector_mode_supported_p): Renable V64QImode
	and V64HImode vectorization.
	(gcn_related_vector_mode): New function.
	(TARGET_VECTORIZE_RELATED_MODE): New define.

From-SVN: r279053
2019-12-06 17:28:28 +00:00
Jakub Jelinek
2297a38e0c re PR fortran/92775 (Incorrect expression in DW_AT_byte_stride on an array)
PR fortran/92775
	* trans.h (struct lang_type, struct lang_decl): Remove span member.
	(GFC_DECL_SPAN, GFC_TYPE_ARRAY_SPAN): Remove macros.
	* trans-array.h (gfc_get_descriptor_offsets_for_info): Add another
	argument.
	* trans-array.c (gfc_get_descriptor_offsets_for_info): Add SPAN_OFF
	argument and initialize *SPAN_OFF to the offset of span field.
	* trans-types.c (gfc_get_array_descr_info): Adjust
	gfc_get_descriptor_offsets_for_info caller.  Compute elem_size
	as base->span instead of TYPE_SIZE_UNIT (etype) constant.

From-SVN: r279045
2019-12-06 14:28:59 +01:00
Tobias Burnus
6e4d01d61f [OpenMP/OpenACC/Fortran] Fix mapping of optional (present|absent) arguments
2019-12-06  Tobias Burnus  <tobias@codesourcery.com>
            Kwok Cheung Yeung <kcy@codesourcery.com>

        gcc/fortran/
        * trans-openmp.c (gfc_build_conditional_assign,
        gfc_build_conditional_assign_expr): New static functions.
        (gfc_omp_finish_clause, gfc_trans_omp_clauses): Handle mapping of
        absent optional arguments and fix mapping of present optional args.

        gcc/
        * omp-low.c (lower_omp_target): For optional arguments, deref once
        more to obtain the type.

        libgomp/
        * oacc-mem.c (update_dev_host, gomp_acc_insert_pointer): Just return
        if input it a NULL pointer.
        * testsuite/libgomp.oacc-c-c++-common/lib-43.c: Remove; dependent on
        diagnostic of NULL pointer.
        * testsuite/libgomp.oacc-c-c++-common/lib-47.c: Ditto.
        * testsuite/libgomp.fortran/optional-map.f90: New.
        * testsuite/libgomp.fortran/use_device_addr-1.f90
        (test_dummy_opt_callee_1_absent): New.
        (test_dummy_opt_call_1): Call it.
        * testsuite/libgomp.fortran/use_device_addr-2.f90: Likewise.
        * testsuite/libgomp.fortran/use_device_addr-3.f90: Likewise.
        * testsuite/libgomp.fortran/use_device_addr-4.f90: Likewise.
        * testsuite/libgomp.oacc-fortran/optional-cache.f95: New.
        * testsuite/libgomp.oacc-fortran/optional-data-copyin-by-value.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-data-copyin.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-data-copyout.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-data-enter-exit.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-declare.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-firstprivate.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-host_data.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-nested-calls.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-private.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-reduction.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-update-device.f90: New.
        * testsuite/libgomp.oacc-fortran/optional-update-host.f90: New.


Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>

From-SVN: r279043
2019-12-06 14:06:53 +01:00
Richard Biener
e150da3833 match.pd (nop_convert): Remove empty match.
2019-12-06  Richard Biener  <rguenther@suse.de>

	* match.pd (nop_convert): Remove empty match.  Use nop_convert?
	everywhere.

From-SVN: r279040
2019-12-06 11:44:27 +00:00
Christophe Lyon
998d6381ac [testsuite][aarch64] type_redef_11.c: Update expected diagnostics.
After the fix for PR c/36941 and PR c/88827 (r278976), this test emits
a different error message and needs an update.

2019-12-06  Christophe Lyon  <christophe.lyon@linaro.org>

	PR c/36941
	PR c/88827
	* gcc.target/aarch64/sve/acle/general-c/type_redef_11.c: Update
	expected diagnostics.

From-SVN: r279039
2019-12-06 11:54:46 +01:00
Richard Sandiford
ea1ff9e46c Avoid quadratic behaviour in prune_runtime_alias_test_list
prune_runtime_alias_test_list used ordered_remove to remove a merged
alias pair, which made the function quadratic when many aliases could
be removed.

I had a testcase in which these memmoves accounted for an impressive
85% of compile time.  The fact that we had so many probably shows
a deeper problem, but still, it's easy to remove as we go.

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

gcc/
	* tree-data-ref.c (prune_runtime_alias_test_list): Exit early
	for empty vectors.  Avoid using ordered_remove and instead
	shuffle the vector as we go.

From-SVN: r279038
2019-12-06 10:31:44 +00:00
Richard Biener
28fabd43d9 genmatch.c (enum tree_code): Remove CONVERT{0,1,2} and VIEW_CONVERT{0,1,2}.
2019-12-06  Richard Biener  <rguenther@suse.de>

	* genmatch.c (enum tree_code): Remove CONVERT{0,1,2} and
	VIEW_CONVERT{0,1,2}.
	(expr::opt_grp): Add and initialize.
	(lower_opt_convert): Rename to ...
	(lower_opt): ... and work on opt_grp, simply switching operations
	from being optional to being present or not.
	(has_opt_convert): Rename to ...
	(has_opt): ... and adjust.
	(parser::parse_operation): Return the optional opt_grp,
	remove special-casing of conditional operations and more generally
	parse [digit]'?'.
	(parser::parse_expr): Stick on the parsed opt_grp and perform
	rough verification.
	(parser::parse_for): Remove now unnecessary code.
	(main): Likewise.
	* doc/match-and-simplify.texi: Mention ? now works on all
	unary operations and also match predicates.

From-SVN: r279037
2019-12-06 10:25:08 +00:00
Jan Hubicka
f7f6be76ba cgraphclones.c (cgraph_node::create_clone): Only localize toplevel functions, not inline clones.
* cgraphclones.c (cgraph_node::create_clone): Only localize toplevel
	functions, not inline clones.

From-SVN: r279036
2019-12-06 08:51:43 +00:00
Jan Hubicka
b51200e26f * cfgexpand.c (expand_debug_expr): Do not ICE on SAD_EXPR.
From-SVN: r279035
2019-12-06 08:50:36 +00:00