Commit Graph

173700 Commits

Author SHA1 Message Date
GCC Administrator
7ef6cab9b5 Daily bump.
From-SVN: r279690
2019-12-21 00:16:17 +00:00
Jakub Jelinek
907343e8d0 re PR middle-end/91512 (Fortran compile time regression.)
PR middle-end/91512
	PR fortran/92738
	* lang.opt (-finline-arg-packing): Add trailing dot to help text.

From-SVN: r279687
2019-12-21 00:51:15 +01:00
Marek Polacek
14818f987a PR c++/92745 - bogus error when initializing array of vectors.
In r268428 I changed reshape_init_r in such a way that when it sees
a nested { } in a CONSTRUCTOR with missing braces, it just returns
the initializer:
+     else if (COMPOUND_LITERAL_P (stripped_init)
...
+         ++d->cur;
+         gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (stripped_init));
+         return init;

But as this test shows, that's incorrect: if TYPE is an array, we need
to proceed to reshape_init_array_1 which will iterate over the array
initializers:
 6006   /* Loop until there are no more initializers.  */
 6007   for (index = 0;
 6008        d->cur != d->end && (!sized_array_p || index <= max_index_cst);
 6009        ++index)
 6010     {
and update d.cur accordingly.  In other words, when reshape_init gets

{{col[0][0], col[1][0], col[2][0], col[3][0]},
 {col[0][1], col[1][1], col[2][1], col[3][1]},
 {col[0][2], col[1][2], col[2][2], col[3][2]},
 {col[0][3], col[1][3], col[2][3], col[3][3]}}

we recurse on the first element:
  {col[0][0], col[1][0], col[2][0], col[3][0]}
and we can't just move d.cur to point to
  {col[0][1], col[1][1], col[2][1], col[3][1]}
and return; we need to iterate, so that d.cur ends up being properly
updated, and after all initializers have been seen, points to d.end.
Currently we skip the loop, wherefore we hit this:

 6502   /* Make sure all the element of the constructor were used. Otherwise,
 6503      issue an error about exceeding initializers.  */
 6504   if (d.cur != d.end)
 6505     {
 6506       if (complain & tf_error)
 6507         error ("too many initializers for %qT", type);
 6508       return error_mark_node;
 6509     }

	* decl.c (reshape_init_r): For a nested compound literal, do
	call reshape_init_{class,array,vector}.

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

From-SVN: r279686
2019-12-20 23:30:04 +00:00
Marek Polacek
97ba5b86a3 PR c++/92974 - bogus location for enum and non-enum in ?: warning.
build_min_non_dep wasn't setting any location so when we were emitting the
warning in the following test while instantiating a template, its location
was UNKNOWN_LOCATION.  Rather than adding a location_t parameter, let's use
the location from the original expression.

	* tree.c (build_min_non_dep): Use the location of NON_DEP when
	building the expression.

	* g++.dg/diagnostic/enum1.C: New test.
	* g++.dg/gomp/loop-2.C: Adjust dg-error.
	* g++.dg/gomp/for-21.C: Likewise.

From-SVN: r279685
2019-12-20 23:25:44 +00:00
Jakub Jelinek
7731b8e6f4 re PR c++/92965 ("note: 'x' is not public" emitted even when no error is emitted)
PR c++/92965
	* pt.c (invalid_nontype_parm_type_p): Call structural_type_p with
	explain=true only if emitting error.

	* g++.dg/cpp2a/nontype-class27.C: New test.

From-SVN: r279684
2019-12-21 00:21:21 +01:00
Jakub Jelinek
b804bd89d3 re PR c++/92966 (Segfault on defaulted operator== with wrong return type)
PR c++/92966
	* method.c (early_check_defaulted_comparison): Don't set
	DECL_MAYBE_DELETED when returning false.

	* g++.dg/cpp2a/spaceship-eq8.C: New test.

From-SVN: r279683
2019-12-21 00:19:23 +01:00
Jakub Jelinek
8aca5ebe07 re PR c++/92973 (Silently accepting defaulted comparison operators in C++11 .. 17)
PR c++/92973
	* method.c (early_check_defaulted_comparison): For C++17 and earlier
	diagnose defaulted comparison operators.

	* g++.dg/cpp0x/spaceship-eq1.C: New test.

From-SVN: r279682
2019-12-21 00:18:09 +01:00
Jakub Jelinek
0bd002bf2e re PR c++/92666 (bogus -Wunused-but-set-variable in gcov.c with -Wno-restrict)
PR c++/92666
	* call.c (convert_arg_to_ellipsis): For floating point or
	decltype(nullptr) arguments call mark_rvalue_use.

	* g++.dg/warn/Wunused-var-36.C: New test.

From-SVN: r279681
2019-12-21 00:16:58 +01:00
Jakub Jelinek
6c7b84305a re PR c++/92992 (Side-effects dropped when decltype(nullptr) typed expression is passed to ellipsis)
PR c++/92992
	* call.c (convert_arg_to_ellipsis): For decltype(nullptr) arguments
	that have side-effects use cp_build_compound_expr.

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

From-SVN: r279680
2019-12-21 00:15:52 +01:00
Michael Meissner
03e487e541 Rename signed integer 16/34-bit macros.
2019-12-20   Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (cint34_operand): Use
	SIGNED_INTEGER_34BIT_P macro.
	* config/rs6000/rs6000.c (num_insns_constant_gpr): Use the
	SIGNED_INTEGER_16BIT_P and SIGNED_INTEGER_34BIT_P macros.
	(address_to_insn_form): Use the SIGNED_INTEGER_16BIT_P and
	SIGNED_INTEGER_34BIT_P macros.
	* config/rs6000/rs6000.h (SIGNED_INTEGER_NBIT_P): New macro.
	(SIGNED_INTEGER_16BIT_P): Rename SIGNED_16BIT_OFFSET_P to be
	SIGNED_INTEGER_34BIT_P.
	(SIGNED_INTEGER_34BIT_P): Rename SIGNED_34BIT_OFFSET_P to be
	SIGNED_INTEGER_34BIT_P.

From-SVN: r279677
2019-12-20 19:27:47 +00:00
Eric Botcazou
39292e2507 c-ada-spec.h (decl_sloc): Delete.
c-family/
	* c-ada-spec.h (decl_sloc): Delete.
	* c-ada-spec.c (decl_sloc): Make static.
c/
	* c-decl.c (collect_source_ref_cb): Delete.
	(for_each_global_decl): Rename into...
	(collect_source_refs): ...this.  Call collect_source_ref directly.
	(c_parse_final_cleanups): Always call collect_source_ref on the main
	input filename.
cp/
	* decl2.c (c_parse_final_cleanups): Always call collect_source_ref on
	the main input filename.

From-SVN: r279670
2019-12-20 17:41:06 +00:00
Jonathan Wakely
02e8542795 fortran: Fix PR number in comment of testcase for PR 69497
The testcase was originally committed with an incorrect changelog and PR
number. The changelog was fixed later, but not the comment in the test.

	PR fortran/69497
	* gfortran.dg/pr69497.f90: Fix PR number in comment.

From-SVN: r279657
2019-12-20 17:10:22 +00:00
Jonathan Wakely
7770bd7e9a libstdc++: Add inline to maybe-constexpr functions (PR 92927)
Originally these functions were always inline. I changed them in r277342
to be always constexpr, then in r277588 changed them to be constexpr for
C++14, but I didn't restore the 'inline' for C++11. That leads to linker
errors when libstdc++.so is built unoptimized, because those functions
don't get instantiated in src/c++11/string-inst.o

	PR libstdc++/92927
	* include/bits/alloc_traits.h (__alloc_on_copy, __alloc_on_move)
	(__alloc_on_swap): Add inline specifier.

From-SVN: r279656
2019-12-20 17:10:18 +00:00
Stam Markianos-Wright
9260fb066b gcc/testsuite/ChangeLog:
2019-12-20  Stam Markianos-Wright  <stam.markianos-wright@arm.com>

	* lib/target-supports.exp 
	(check_effective_target_arm_v8_2a_i8mm_ok_nocache): New.
	(check_effective_target_arm_v8_2a_i8mm_ok): New.
	(add_options_for_arm_v8_2a_i8mm): New.
	(check_effective_target_arm_v8_2a_bf16_neon_ok_nocache): New.
	(check_effective_target_arm_v8_2a_bf16_neon_ok): New.
	(add_options_for_arm_v8_2a_bf16_neon): New.

gcc/Changelog:

2019-12-20  Stam Markianos-Wright  <stam.markianos-wright@arm.com>

	* doc/sourcebuild.texi
	(arm_v8_2a_bf16_neon_ok): Document new target supports option.
	(arm_v8_2a_i8mm_ok): Likewise.

From-SVN: r279648
2019-12-20 15:52:39 +00:00
Roman Zhuykov
0f6a7c1271 Rename tests to reference the correct PR
2019-12-20  Roman Zhuykov  <zhroma@ispras.ru>

	* gcc.dg/pr92951-1.c: Rename to ...
	* gcc.dg/pr92591-1.c: ... this.
	* gcc.dg/pr92951-2.c: Rename to ...
	* gcc.dg/pr92591-2.c: ... this.

From-SVN: r279645
2019-12-20 15:40:46 +00:00
Jerome Lambourg
84de780d46 libstdc++: Test setrlimit with c++ in configure
* acinclude.m4 (GLIBCXX_CHECK_SETRLIMIT): Test with AC_LANG_CPLUSPLUS.
	* configure: Regenerate.

From-SVN: r279644
2019-12-20 15:30:41 +00:00
François Dumont
33bd8e5e22 libstdc++: Fix versioned namespace tests
* testsuite/23_containers/map/48101_neg.cc: Add versioned namespace
	pattern to tested error message.
	* testsuite/23_containers/multimap/48101_neg.cc: Likewise.
	* testsuite/30_threads/headers/stop_token/synopsis.cc: Add
	dg-require-normal-namepace.

From-SVN: r279641
2019-12-20 13:24:52 +00:00
François Dumont
e278e62f91 libstdc++: Fix pretty printers script and tests
* python/libstdcxx/v6/printers.py (lookup_node_type): Remove redundant
	call to lookup_node_type.
	* testsuite/libstdc++-prettyprinters/80276.cc: Define
	_GLIBCXX_USE_CXX11_ABI to 0.
	* testsuite/libstdc++-prettyprinters/91997.cc: Use regexp-test to check
	'a' content.

From-SVN: r279640
2019-12-20 12:42:50 +00:00
Thomas Koenig
95d27703bc Introduce -finline-arg-packing.
2019-12-20  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR middle-end/91512
    PR fortran/92738
    * invoke.texi: Document -finline-arg-packing.
    * lang.opt: Add -finline-arg-packing.
    * options.c (gfc_post_options): Handle -finline-arg-packing.
    * trans-array.c (gfc_conv_array_parameter): Use
    flag_inline_arg_packing instead of checking for optimize and
    optimize_size.

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

    PR middle-end/91512
    PR fortran/92738
    * gfortran.dg/inline_pack_25.f90: New test.

From-SVN: r279639
2019-12-20 11:51:05 +00:00
Tobias Burnus
de89b5748d Fortran] PR 92996 – fix rank resolution EXPR_ARRAY
PR fortran/92996
        gcc/fortran/
        * expr.c (simplify_parameter_variable): Call gfc_resolve_ref and
        gfc_expression_rank; fix location info.
        * gfortran.h (gfc_resolve_ref, gfc_expression_rank): Declare.
        * match.c (gfc_match_stopcode): Remove redundant setting of
        gfc_init_expr_flag; early return if gfc_simplify_expr has an error.
        * resolve.c (gfc_expression_rank): Renamed from expression_rank;
        minor cleanup.
        (gfc_resolve_ref): Removed static and renamed from resolve_ref.
        (resolve_variable, resolve_typebound_function,
        resolve_typebound_subroutine, resolve_ppc_call, resolve_expr_ppc,
        gfc_resolve_expr, resolve_procedure): Update calls.

        PR fortran/92996
        gcc/testsuite/
        * gfortran.dg/array_simplify_4.f90: New.
        * gfortran.dg/pr91565.f90: Update dg-error.
        * gfortran.dg/pr91801.f90: Likewise.

From-SVN: r279638
2019-12-20 12:35:20 +01:00
Tobias Burnus
e565e49fb2 Improve is-coindexed check for OpenACC/OpenMP
gcc/fortran/
        * openmp.c (resolve_omp_clauses): Move is-coindexed check from here ...
        (gfc_match_omp_variable_list): ... to here.

        gcc/testsuite/
        * gfortran.dg/goacc/coindexed-1.f90: New.

From-SVN: r279637
2019-12-20 12:22:52 +01:00
Jerome Lambourg
74a7b87a00 Add myself to MAINTAINERS
From-SVN: r279636
2019-12-20 10:43:47 +00:00
Jerome Lambourg
7607ff49af libstdc++: Strengthen the check for availability of pthread_rwlock_t
* acinclude.m4 (_GLIBCXX_USE_PTHREAD_RWLOCK_T): Checks that
        _PTHREADS is defined after including gthr.h.
        * configure: Regenerate.

From-SVN: r279635
2019-12-20 09:30:48 +00:00
Tobias Burnus
211c667faf Fix testsuite-fallout of OpenACC deep-copy patch
gcc/testsuite/
        * gfortran.dg/goacc/data-clauses.f95: Remove now
        obsolete dg-error.

From-SVN: r279634
2019-12-20 10:30:24 +01:00
Jakub Jelinek
3439487f01 re PR target/92841 (Optimize -fstack-protector-strong code generation a bit)
PR target/92841
	* config/i386/i386.md (*stack_protect_set_3): For pic_32bit_operand
	always use lea{q}, no matter what value which_alternative has.

	* gcc.target/i386/pr92841-2.c: New test.

From-SVN: r279633
2019-12-20 09:23:42 +01:00
Jakub Jelinek
99675d5c45 re PR target/93002 (while(i--) optimization)
PR target/93002
	* config/i386/i386.md (dec reg; cmp $-1, reg; jne lab): New
	define_peephole2.

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

From-SVN: r279632
2019-12-20 09:22:46 +01:00
Julian Brown
9be3ac5d63 Fortran polymorphic class-type support for OpenACC
gcc/fortran/
	* openmp.c (resolve_oacc_data_clauses): Don't disallow allocatable
	polymorphic types for OpenACC.
	* trans-openmp.c (gfc_trans_omp_clauses): Support polymorphic class
	types.

	libgomp/
	* testsuite/libgomp.oacc-fortran/class-ptr-param.f95: New test.
	* testsuite/libgomp.oacc-fortran/classtypes-1.f95: New test.
	* testsuite/libgomp.oacc-fortran/classtypes-2.f95: New test.

From-SVN: r279631
2019-12-20 01:39:49 +00:00
Julian Brown
02817027ca OpenACC 2.6 deep copy: Fortran execution tests
libgomp/
	* testsuite/libgomp.oacc-fortran/deep-copy-1.f90: New test.
	* testsuite/libgomp.oacc-fortran/deep-copy-2.f90: New test.
	* testsuite/libgomp.oacc-fortran/deep-copy-3.f90: New test.
	* testsuite/libgomp.oacc-fortran/deep-copy-4.f90: New test.
	* testsuite/libgomp.oacc-fortran/deep-copy-5.f90: New test.
	* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: New test.
	* testsuite/libgomp.oacc-fortran/deep-copy-7.f90: New test.
	* testsuite/libgomp.oacc-fortran/deep-copy-8.f90: New test.
	* testsuite/libgomp.oacc-fortran/derived-type-1.f90: New test.
	* testsuite/libgomp.oacc-fortran/derivedtype-1.f95: New test.
	* testsuite/libgomp.oacc-fortran/derivedtype-2.f95: New test.
	* testsuite/libgomp.oacc-fortran/multidim-slice.f95: New test.
	* testsuite/libgomp.oacc-fortran/update-2.f90: New test.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>

From-SVN: r279630
2019-12-20 01:39:46 +00:00
Julian Brown
c2eb021fd2 OpenACC 2.6 deep copy: C and C++ execution tests
libgomp/
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-2.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-9.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-10.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-11.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-14.c: New test.
	* testsuite/libgomp.oacc-c++/deep-copy-12.C: New test.
	* testsuite/libgomp.oacc-c++/deep-copy-13.C: New test.

From-SVN: r279629
2019-12-20 01:39:42 +00:00
Julian Brown
549188ea10 OpenACC 2.6 deep copy: Fortran front-end parts
gcc/fortran/
        * gfortran.h (gfc_omp_map_op): Add OMP_MAP_ATTACH, OMP_MAP_DETACH.
        * openmp.c (gfc_match_omp_variable_list): Add allow_derived parameter.
        Parse derived-type member accesses if true.
        (omp_mask2): Add OMP_CLAUSE_ATTACH and OMP_CLAUSE_DETACH.
        (gfc_match_omp_map_clause): Add allow_derived parameter.  Pass to
        gfc_match_omp_variable_list.
        (gfc_match_omp_clauses): Support attach and detach.  Support derived
        types for appropriate OpenACC directives.
        (OACC_PARALLEL_CLAUSES, OACC_SERIAL_CLAUSES, OACC_KERNELS_CLAUSES,
        OACC_DATA_CLAUSES, OACC_ENTER_DATA_CLAUSES): Add OMP_CLAUSE_ATTACH.
        (OACC_EXIT_DATA_CLAUSES): Add OMP_CLAUSE_DETACH.
        (check_symbol_not_pointer): Don't disallow pointer objects of derived
        type.
        (resolve_oacc_data_clauses): Don't disallow allocatable derived types.
        (resolve_omp_clauses): Perform duplicate checking only for non-derived
        type component accesses (plain variables and arrays or array sections).
        Support component refs.
        * trans-expr.c (gfc_conv_component_ref,
        conv_parent_component_references): Make global.
        (gfc_maybe_dereference_var): New function, broken out of...
        (gfc_conv_variable): ...here.  Call above function.
        * trans-openmp.c (gfc_omp_privatize_by_reference): Support component
        refs.
        (gfc_trans_omp_array_section): New function, broken out of...
        (gfc_trans_omp_clauses): ...here.  Support component refs/derived
        types, attach and detach clauses.
        * trans.h (gfc_conv_component_ref, conv_parent_component_references,
        gfc_maybe_dereference_var): Add prototypes.

        gcc/testsuite/
        * gfortran.dg/goacc/derived-types.f90: New test.
        * gfortran.dg/goacc/derived-types-2.f90: New test.
        * gfortran.dg/goacc/derived-types-3.f90: New test.
        * gfortran.dg/goacc/data-clauses.f95: Adjust for expected errors.
        * gfortran.dg/goacc/enter-exit-data.f95: Likewise.

From-SVN: r279628
2019-12-20 01:20:42 +00:00
Julian Brown
519d7496be OpenACC 2.6 deep copy: C and C++ front-end parts
gcc/c-family/
	* c-common.h (c_omp_map_clause_name): Add prototype.
	* c-omp.c (c_omp_map_clause_name): New function.
	* c-pragma.h (pragma_omp_clause): Add PRAGMA_OACC_CLAUSE_ATTACH and
	PRAGMA_OACC_CLAUSE_DETACH.

	gcc/c/
	* c-parser.c (c_parser_omp_clause_name): Add parsing of attach and
	detach clauses.
	(c_parser_omp_variable_list): Add ALLOW_DEREF optional parameter.
	Allow deref (->) in variable lists if true.
	(c_parser_omp_var_list_parens): Add ALLOW_DEREF optional parameter.
	Pass to c_parser_omp_variable_list.
	(c_parser_oacc_data_clause): Support attach and detach clauses.  Update
	call to c_parser_omp_variable_list.
	(c_parser_oacc_all_clauses): Support attach and detach clauses.
	(OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK,
	OACC_KERNELS_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK,
	OACC_SERIAL_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_ATTACH.
	(OACC_EXIT_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DETACH.
	* c-typeck.c (handle_omp_array_sections_1): Reject subarrays for attach
	and detach.  Support deref.
	(handle_omp_array_sections): Use GOMP_MAP_ATTACH_DETACH instead of
	GOMP_MAP_ALWAYS_POINTER for OpenACC.
	(c_oacc_check_attachments): New function.
	(c_finish_omp_clauses): Check attach/detach arguments for being
	pointers using above.  Support deref.

	gcc/cp/
	* parser.c (cp_parser_omp_clause_name): Support attach and detach
	clauses.
	(cp_parser_omp_var_list_no_open): Add ALLOW_DEREF optional parameter.
	Parse deref if true.
	(cp_parser_omp_var_list): Add ALLOW_DEREF optional parameter.  Pass to
	cp_parser_omp_var_list_no_open.
	(cp_parser_oacc_data_clause): Support attach and detach clauses.
	Update call to cp_parser_omp_var_list_no_open.
	(cp_parser_oacc_all_clauses): Support attach and detach.
	(OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK,
	OACC_KERNELS_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK,
	OACC_SERIAL_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_ATTACH.
	(OACC_EXIT_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DETACH.
	* semantics.c (handle_omp_array_sections_1): Reject subarrays for
	attach and detach.
	(handle_omp_array_sections): Use GOMP_MAP_ATTACH_DETACH instead of
	GOMP_MAP_ALWAYS_POINTER for OpenACC.
	(cp_oacc_check_attachments): New function.
	(finish_omp_clauses): Use above function.  Allow structure fields and
	class members to appear in OpenACC data clauses.  Support
	GOMP_MAP_ATTACH_DETACH.  Support deref.

	gcc/testsuite/
	* c-c++-common/goacc/deep-copy-arrayofstruct.c: New test.
	* c-c++-common/goacc/mdc-1.c: New test.
	* c-c++-common/goacc/mdc-2.c: New test.
	* gcc.dg/goacc/mdc.C: New test.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>

From-SVN: r279627
2019-12-20 01:20:38 +00:00
Julian Brown
4fd872bc0c OpenACC 2.6 deep copy: middle-end parts
gcc/
	* gimplify.c (gimplify_omp_var_data): Add GOVD_MAP_HAS_ATTACHMENTS.
	(insert_struct_comp_map): Support derived-type member mappings
	for arrays with descriptors which use GOMP_MAP_TO_PSET.  Support
	GOMP_MAP_ATTACH_DETACH.
	(gimplify_scan_omp_clauses): Tidy up OACC_ENTER_DATA/OACC_EXIT_DATA
	mappings.  Handle attach/detach clauses and component references.
	(gimplify_adjust_omp_clauses_1): Skip adjustments for explicit
	attach/detach clauses.
	(gimplify_omp_target_update): Handle struct mappings and finalize for
	detach operations.
	* omp-low.c (lower_omp_target): Support GOMP_MAP_ATTACH,
	GOMP_MAP_DETACH, GOMP_MAP_FORCE_DETACH.
	* tree-pretty-print.c (dump_omp_clause): Likewise, plus
	GOMP_MAP_ATTACH_DETACH.

	include/
	* gomp-constants.h (gomp_map_kind): Add GOMP_MAP_ATTACH_DETACH.

From-SVN: r279626
2019-12-20 01:20:33 +00:00
Julian Brown
8e7e71ff24 OpenACC 2.6 deep copy: libgomp parts
include/
	* gomp-constants.h (GOMP_MAP_FLAG_SPECIAL_4, GOMP_MAP_DEEP_COPY):
	Define.
	(gomp_map_kind): Add GOMP_MAP_ATTACH, GOMP_MAP_DETACH,
	GOMP_MAP_FORCE_DETACH.

	libgomp/
	* libgomp.h (struct target_var_desc): Add do_detach flag.
	* oacc-init.c (acc_shutdown_1): Free aux block if present.
	* oacc-mem.c (find_group_last): Add SIZES parameter. Support
	struct components.  Tidy up and add some new checks.
	(goacc_enter_data_internal): Update call to find_group_last.
	(goacc_exit_data_internal): Support detach operations and
	GOMP_MAP_STRUCT.
	(GOACC_enter_exit_data): Handle initial GOMP_MAP_STRUCT or
	GOMP_MAP_FORCE_PRESENT in finalization detection code.  Handle
	attach/detach in enter/exit data detection code.
	* target.c (gomp_map_vars_existing): Initialise do_detach field of
	tgt_var_desc.
	(gomp_map_vars_internal): Support attach.
	(gomp_unmap_vars_internal): Support detach.

From-SVN: r279625
2019-12-20 01:20:30 +00:00
Julian Brown
5d5be7bfb5 OpenACC 2.6 deep copy: attach/detach API routines
libgomp/
	* libgomp.h (struct splay_tree_aux): Add attach_count field.
	(gomp_attach_pointer, gomp_detach_pointer): Add prototypes.
	* libgomp.map (OACC_2.6): New section. Add acc_attach,
	acc_attach_async, acc_detach, acc_detach_async, acc_detach_finalize,
	acc_detach_finalize_async.
	* oacc-mem.c (acc_attach_async, acc_attach, goacc_detach_internal,
	acc_detach, acc_detach_async, acc_detach_finalize,
	acc_detach_finalize_async): New functions.
	* openacc.h (acc_attach, acc_attach_async, acc_detach,
	(acc_detach_async, acc_detach_finalize, acc_detach_finalize_async): Add
	prototypes.
	* target.c (gomp_attach_pointer, gomp_detach_pointer): New functions.
	(gomp_remove_var_internal): Free attachment counts if present.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c: New test.

Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r279624
2019-12-20 01:20:27 +00:00
Julian Brown
4d83edf7ef Factor out duplicate code in gimplify_scan_omp_clauses
gcc/
	* gimplify.c (insert_struct_comp_map, extract_base_bit_offset): New.
	(gimplify_scan_omp_clauses): Outline duplicated code into calls to
	above two functions.

From-SVN: r279623
2019-12-20 01:20:23 +00:00
Julian Brown
5bcd470bf0 Use gomp_map_val for OpenACC host-to-device address translation
libgomp/
	* libgomp.h (gomp_map_val): Add prototype.
	* oacc-parallel.c (GOACC_parallel_keyed): Use gomp_map_val instead of
	open-coding device-address calculation.
	* target.c (gomp_map_val): Make global. Use OFFSET_POINTER in
	non-present case.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>

From-SVN: r279622
2019-12-20 01:20:19 +00:00
Julian Brown
378da98fcc OpenACC reference count overhaul
libgomp/
	* libgomp.h (struct splay_tree_key_s): Substitute dynamic_refcount
	field for virtual_refcount.
	(enum gomp_map_vars_kind): Add GOMP_MAP_VARS_OPENACC_ENTER_DATA.
	(gomp_free_memmap): Remove prototype.
	* oacc-init.c (acc_shutdown_1): Iteratively call gomp_remove_var
	instead of calling gomp_free_memmap.
	* oacc-mem.c (acc_map_data): Use virtual_refcount instead of
	dynamic_refcount.
	(acc_unmap_data): Open code instead of forcing target_mem_desc's
	to_free field to NULL then calling gomp_unmap_vars.  Handle
	REFCOUNT_INFINITY on target blocks.
	(goacc_enter_data): Rename to...
	(goacc_enter_datum): ...this.  Remove MAPNUM parameter and special
	handling for mapping groups.  Use virtual_refcount instead of
	dynamic_refcount.  Use GOMP_MAP_VARS_OPENACC_ENTER_DATA for
	map_map_vars_async call.  Re-do lookup for target pointer return value.
	(acc_create, acc_create_async, acc_copyin, acc_copyin_async): Call
	renamed goacc_enter_datum function.
	(goacc_exit_data): Rename to...
	(goacc_exit_datum): ...this.  Update for virtual_refcount semantics.
	(acc_delete, acc_delete_async, acc_delete_finalize,
	acc_delete_finalize_async, acc_copyout, acc_copyout_async,
	acc_copyout_finalize, acc_copyout_finalize_async): Call renamed
	goacc_exit_datum function.
	(gomp_acc_remove_pointer, find_pointer): Remove functions.
	(find_group_last, goacc_enter_data_internal, goacc_exit_data_internal):
	New functions.
	(GOACC_enter_exit_data): Use goacc_enter_data_internal and
	goacc_exit_data_internal helper functions.
	* target.c (gomp_map_vars_internal): Handle
	GOMP_MAP_VARS_OPENACC_ENTER_DATA.  Update for virtual_refcount
	semantics.
	(gomp_unmap_vars_internal): Update for virtual_refcount semantics.
	(gomp_load_image_to_device, omp_target_associate_ptr): Zero-initialise
	virtual_refcount field instead of dynamic_refcount.
	(gomp_free_memmap): Remove function.
	* testsuite/libgomp.oacc-c-c++-common/unmap-infinity-1.c: New test.
	* testsuite/libgomp.c-c++-common/unmap-infinity-2.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/pr92843-1.c: Add XFAIL.

From-SVN: r279621
2019-12-20 01:20:16 +00:00
Julian Brown
2a656a9359 Use aux struct in libgomp for infrequently-used/API-specific data
libgomp/
	* libgomp.h (struct splay_tree_aux): New.
	(struct splay_tree_key_s): Replace link_key field with aux pointer.
	* target.c (gomp_map_vars_internal): Adjust for link_key being moved
	to aux struct.
	(gomp_remove_var_internal): Free aux block if present.
	(gomp_load_image_to_device): Zero-initialise aux field instead of
	link_key field.
	(omp_target_associate_pointer): Zero-initialise aux field.

Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r279620
2019-12-20 01:20:13 +00:00
GCC Administrator
8cce8b8504 Daily bump.
From-SVN: r279619
2019-12-20 00:16:28 +00:00
Vladimir Makarov
a8a728aac2 re PR target/92905 (Spills float-int union to memory)
2019-12-19  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/92905
	* lra-constraints.c (process_alt_operands): Check offmemok when
	processing preferred_reload_class.

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

	PR target/92905
	* gcc.target/i386/pr92905.c: New test.

From-SVN: r279596
2019-12-19 21:59:47 +00:00
Richard Sandiford
38830e506c Update g++.dg/ext/sve-sizeless-2.C after r279471
2019-12-19  Richard Sandiford  <richard.sandiford@arm.com>

gcc/testsuite/
	* g++.dg/ext/sve-sizeless-2.C: Don't expect an error for
	alias templates.

From-SVN: r279588
2019-12-19 17:23:44 +00:00
Andrew Stubbs
82975c743e Allow constants in amdgcn extends and truncates
2019-12-19  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md
	(<convop><VEC_ALL1REG_INT_ALT:mode><VEC_ALL1REG_INT_MODE:mode>2<exec>):
	Change input predcate to gcn_alu_operand.
	(extend<VEC_ALL1REG_INT_ALT:mode><VEC_ALL1REG_INT_MODE:mode>2<exec>):
	Likewise.
	(truncv64di<mode>2): Likewise.
	(truncv64di<mode>2_exec): Likewise.
	(<convop><mode>v64di2): Likewise.
	(<convop><mode>v64di2_exec): Likewise.

From-SVN: r279587
2019-12-19 17:00:54 +00:00
Andrew Stubbs
3a4d2bbc39 Use V64SI for all amdgcn add-with-carry insns
2019-12-19  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (*plus_carry_dpp_shr_<mode>): Rename to ...
	(*plus_carry_dpp_shr_v64si): ... this, and replace all
	VEC_1REG_INT_MODE with V64SI.

From-SVN: r279584
2019-12-19 16:14:50 +00:00
Mark Eggleston
8405874a0e Prevent conversion of character data in array constructors.
Fix for PR fortran/92896 [10 Regression] [DEC] ICE in reduce_unary, at
fortran/arith.c:1283.
    
This was caused by an unintended side affect of "Allow CHARACTER literals
in assignments and data statements" (revision 277975). If the conversion
occurs in a array constructor it is rejected.

From-SVN: r279583
2019-12-19 15:13:25 +00:00
David Malcolm
aa0e90e7bf hash-map-tests.c: add a selftest involving int_hash
gcc/ChangeLog:
	* hash-map-tests.c (selftest::test_map_of_int_to_strings): New
	selftest.
	(selftest::hash_map_tests_c_tests): Call it.

From-SVN: r279582
2019-12-19 15:01:49 +00:00
David Malcolm
0e7b6a51df gimple const-correctness fixes
This patch converts various "gimple *" to "const gimple *" and similar
fixes for gimple subclasses, adding is_a_helper for gimple subclasses
to support the const form of as_a, and adding a few "const" overloads
of accessors.

This is enough to make pp_gimple_stmt_1's stmt const.

gcc/ChangeLog:
	* gimple-predict.h (gimple_predict_predictor): Make "gs" param
	const.
	(gimple_predict_outcome): Likewise.
	* gimple-pretty-print.c (do_niy): Likewise.
	(dump_unary_rhs): Likewise.
	(dump_binary_rhs): Likewise.
	(dump_ternary_rhs): Likewise.
	(dump_gimple_assign): Likewise.
	(dump_gimple_return): Likewise.
	(dump_gimple_call_args): Likewise.
	(pp_points_to_solution): Make "pt" param const.
	(dump_gimple_call): Make "gs" param const.
	(dump_gimple_switch): Likewise.
	(dump_gimple_cond): Likewise.
	(dump_gimple_label): Likewise.
	(dump_gimple_goto): Likewise.
	(dump_gimple_bind): Likewise.
	(dump_gimple_try): Likewise.
	(dump_gimple_catch): Likewise.
	(dump_gimple_eh_filter): Likewise.
	(dump_gimple_eh_must_not_throw): Likewise.
	(dump_gimple_eh_else): Likewise.
	(dump_gimple_resx): Likewise.
	(dump_gimple_eh_dispatch): Likewise.
	(dump_gimple_debug): Likewise.
	(dump_gimple_omp_for): Likewise.
	(dump_gimple_omp_continue): Likewise.
	(dump_gimple_omp_single): Likewise.
	(dump_gimple_omp_taskgroup): Likewise.
	(dump_gimple_omp_target): Likewise.
	(dump_gimple_omp_teams): Likewise.
	(dump_gimple_omp_sections): Likewise.
	(dump_gimple_omp_block): Likewise.
	(dump_gimple_omp_critical): Likewise.
	(dump_gimple_omp_ordered): Likewise.
	(dump_gimple_omp_scan): Likewise.
	(dump_gimple_omp_return): Likewise.
	(dump_gimple_transaction): Likewise.
	(dump_gimple_asm): Likewise.
	(dump_gimple_phi): Make "phi" param const.
	(dump_gimple_omp_parallel): Make "gs" param const.
	(dump_gimple_omp_task): Likewise.
	(dump_gimple_omp_atomic_load): Likewise.
	(dump_gimple_omp_atomic_store): Likewise.
	(dump_gimple_mem_ops): Likewise.
	(pp_gimple_stmt_1): Likewise.  Add "const" to the various as_a <>
	casts throughout.
	* gimple-pretty-print.h (gimple_stmt_1): Make gimple * param const.
	* gimple.h (is_a_helper <const gdebug *>::test): New.
	(is_a_helper <const ggoto *>::test): New.
	(is_a_helper <const glabel *>::test): New.
	(is_a_helper <const geh_else *>::test): New.
	(is_a_helper <const geh_mnt *>::test): New.
	(is_a_helper <const gswitch *>::test): New.
	(is_a_helper <const gtry *>::test): New.
	(is_a_helper <const greturn *>::test): New.
	(gimple_call_tail_p): Make param const.
	(gimple_call_return_slot_opt_p): Likewise.
	(gimple_call_va_arg_pack_p): Likewise.
	(gimple_call_use_set): Add const overload.
	(gimple_call_clobber_set): Likewise.
	(gimple_has_lhs): Make param const.
	(gimple_bind_body): Likewise.
	(gimple_catch_handler): Likewise.
	(gimple_eh_filter_failure): Likewise.
	(gimple_eh_must_not_throw_fndecl): Likewise.
	(gimple_eh_else_n_body): Likewise.
	(gimple_eh_else_e_body): Likewise.
	(gimple_try_eval): Likewise.
	(gimple_try_cleanup): Likewise.
	(gimple_phi_arg): Add const overload.
	(gimple_phi_arg_def): Make param const.
	(gimple_phi_arg_edge): Likewise.
	(gimple_phi_arg_location): Likewise.
	(gimple_phi_arg_has_location): Likewise.
	(gimple_debug_bind_get_var): Likewise.
	(gimple_debug_bind_get_value): Likewise.
	(gimple_debug_source_bind_get_var): Likewise.
	(gimple_debug_source_bind_get_value): Likewise.
	(gimple_omp_body): Likewise.
	(gimple_omp_for_collapse): Likewise.
	(gimple_omp_for_pre_body): Likewise.
	(gimple_transaction_body): Likewise.
	* tree-eh.c (lookup_stmt_eh_lp_fn): Make param "t" const.
	(lookup_stmt_eh_lp): Likewise.
	* tree-eh.h (lookup_stmt_eh_lp_fn): Make param const.
	(lookup_stmt_eh_lp): Likewise.
	* tree-ssa-alias.h (pt_solution_empty_p): Make param const.
	* tree-ssa-structalias.c (pt_solution_empty_p): Likewise.

From-SVN: r279581
2019-12-19 14:59:14 +00:00
Richard Sandiford
b23c6a2c60 [AArch64] Fix handling of npatterns>1 constants for partial SVE modes
For partial SVE vectors of element X, we want to treat duplicates
of single X elements in the same way as for full vectors of X.
But if a constant instead contains a repeating pattern of X elements,
the transition from one value to the next must happen at container
boundaries rather than element boundaries.  E.g. a VNx4HI should
in that case contain the same number of constants as a VNx4SI.

Fixing this means that we need a reinterpret from the container-based
mode to the partial mode; e.g. in the above example we need a
reinterpret from VNx4SI to VNx4HI.  We can't use subregs for that
because they're forbidden by aarch64_can_change_class_mode; we should
handle them in the same way as for big-endian instead.

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

gcc/
	* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): When
	handling partial SVE vectors, use the container mode rather than
	the element mode if the constant isn't a single-element duplicate.
	* config/aarch64/aarch64-sve.md (@aarch64_sve_reinterpret<mode>):
	Check targetm.can_change_mode_class instead of BYTES_BIG_ENDIAN.

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

From-SVN: r279580
2019-12-19 14:52:46 +00:00
Jason Merrill
3561caa298 comment tweak
From-SVN: r279579
2019-12-19 09:32:43 -05:00
Jason Merrill
26a68e9221 PR c++/52320 - EH cleanups for partially constructed arrays.
This testcase wasn't fixed by the 66139 patch; split_nonconstant_init_1 was
failing to add a cleanup for an array member of a class (e.g. e1) that will
run if initializing a later member (e.g. e2) throws.

	* typeck2.c (split_nonconstant_init_1): Add nested parm.
	Add cleanup for whole array if true.

From-SVN: r279577
2019-12-19 09:07:22 -05:00
Jason Merrill
942d334ec3 PR c++/66139 - EH cleanups for partially constructed aggregates.
There were several overlapping PRs about failure to clean up fully
constructed subobjects when an exception is thrown during aggregate
initialization of a temporary.  I fixed this for non-temporaries in the
context of 57510, but that fix didn't handle temporaries.  So this patch
does split_nonconstant_init at gimplification time, which is much smaller
than alternatives I tried.

	PR c++/57510
	* cp-gimplify.c (cp_gimplify_init_expr): Use split_nonconstant_init.
	* typeck2.c (split_nonconstant_init): Handle non-variable dest.
	(split_nonconstant_init_1): Clear TREE_SIDE_EFFECTS.
	* tree.c (is_local_temp): New.

From-SVN: r279576
2019-12-19 09:06:45 -05:00