Commit Graph

173644 Commits

Author SHA1 Message Date
Richard Sandiford
ed0eca5e63 Don't mangle attributes that have a space in their name
The SVE port needs to maintain a different type identity for
GNU vectors and "SVE vectors" even during LTO, since the types
use different ABIs.  The easiest way of doing that seemed to be
to use type attributes.  However, these type attributes shouldn't
be user-facing; they're just a convenient way of representing the
types internally in GCC.

There are already several internal-only attributes, such as "fn spec"
and "omp declare simd".  They're distinguished from normal user-facing
attributes by having a space in their name, which means that it isn't
possible to write them directly in C or C++.

Taking the same approach mostly works well for SVE.  The only snag
I've hit so far is that the new attribute needs to (and only exists to)
affect type identity.  This means that it would normally get included
in mangled names, to distinguish it from types without the attribute.

However, the SVE ABI specifies a separate mangling for SVE vector types,
rather than using an attribute mangling + a normal vector mangling.
So we need some way of suppressing the attribute mangling for this case.

There are currently no other target-independent or target-specific
internal-only attributes that affect type identity, so this patch goes
for the simplest fix of skipping mangling for attributes whose names
contain a space.  Other options I thought about were:

(1) Also make sure that targetm.mangled_type returns nonnull.

(2) Check directly for the target-specific name.

(3) Add a new target hook.

(4) Add new information to attribute_spec.  This would be very invasive
    at this stage, but maybe we should consider replacing all the boolean
    fields with flags?  That should make the tables slightly easier to
    read and would make adding new flags much simpler in future.

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

gcc/cp/
	* mangle.c (write_CV_qualifiers_for_type): Don't mangle attributes
	that contain a space.

From-SVN: r279569
2019-12-19 13:21:54 +00:00
Jakub Jelinek
23cdc1e9b7 re PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526)
PR fortran/92977
	* frontend-passes.c (call_external_blas): Use || instead of |.

From-SVN: r279567
2019-12-19 11:08:06 +01:00
Jan Hubicka
40ebe1fc2f Fix symver attribute with LTO
* cgraph.c (cgraph_node_cannot_be_local_p_1): Prevent targets of
	symver attributes to be localized.
	* ipa-visibility.c (cgraph_externally_visible_p,
	varpool_node::externally_visible_p): Likewise.
	* symtab.c (symtab_node::verify_base): Check visibility of symbol
	versions.

	* lto-common.c (read_cgraph_and_symbols): Work around binutils
	PR25424


Co-Authored-By: Xi Ruoyao <xry111@mengyan1223.wang>

From-SVN: r279566
2019-12-19 10:03:48 +00:00
Jan Hubicka
44fca83228 ipa: duplicate ipa_size_summary for cloned nodes
* ipa-fnsummary.h (ipa_size_summary): Remove copy consturctor.
	(ipa_size_summary_t): Add duplicate method; move to heap.
	* ipa-fnsumary.c (ipa_fn_summary_alloc): Fix allocation.

From-SVN: r279563
2019-12-19 08:20:09 +00:00
Feng Xue
951e27f58c Handle aggregate pass-through for self-recursive call (PR ipa/92794)
2019-12-19  Feng Xue  <fxue@os.amperecomputing.com>

        PR ipa/92794
        * ipa-cp.c (self_recursive_agg_pass_through_p): New function.
        (intersect_with_plats): Use error_mark_node as place holder
        when aggregate jump function is simple pass-through for
        self-recursive call.
        (intersect_with_agg_replacements): Likewise.
        (intersect_aggregates_with_edge): Likewise.
        (find_aggregate_values_for_callers_subset): Likewise.

2019-12-19  Feng Xue  <fxue@os.amperecomputing.com>

        PR ipa/92794
        * gcc.dg/ipa/92794.c: New test.

From-SVN: r279561
2019-12-19 02:54:40 +00:00
GCC Administrator
1ed6330924 Daily bump.
From-SVN: r279560
2019-12-19 00:16:15 +00:00
Jason Merrill
db38a029ee PR c++/91165 follow-on tweak
I talked in the PR about possibly stripping the location from the args in
the hash table, since if we use the cache the locations would be wrong, but
didn't actually do anything about that.  Then I noticed that there's already
unshare_expr_without_location...

	* constexpr.c (cxx_eval_call_expression): Use
	unshare_expr_without_location.

From-SVN: r279557
2019-12-18 19:10:47 -05:00
David Malcolm
6d4a35ca57 Add diagnostic_metadata and CWE support
This patch adds support for associating a diagnostic message with an
optional diagnostic_metadata object, so that plugins can add extra data
to their diagnostics (e.g. mapping a diagnostic to a taxonomy or coding
standard such as from CERT or MISRA).

Currently this only supports associating a CWE identifier with a
diagnostic (which is what I'm using for the warnings in the analyzer
patch kit), but adding a diagnostic_metadata class allows for future
growth in this area without an explosion of further "warning_at"
overloads for all of the different kinds of custom data that a plugin
might want to add.

This version of the patch renames the overly-general
-fdiagnostics-show-metadata to -fdiagnostics-show-cwe and adds test
coverage for it via a plugin.

It also adds a note to the documentation that no GCC diagnostics
currently use this; it's a feature for plugins (and, at some point,
I hope, the analyzer).

gcc/ChangeLog:
	* common.opt (fdiagnostics-show-cwe): Add.
	* diagnostic-core.h (class diagnostic_metadata): New forward decl.
	(warning_at): Add overload taking a const diagnostic_metadata &.
	(emit_diagnostic_valist): Add overload taking a
	const diagnostic_metadata *.
	* diagnostic-format-json.cc: Include "diagnostic-metadata.h".
	(json_from_metadata): New function.
	(json_end_diagnostic): Call it to add "metadata" child for
	diagnostics with metadata.
	(diagnostic_output_format_init): Clear context->show_cwe.
	* diagnostic-metadata.h: New file.
	* diagnostic.c: Include "diagnostic-metadata.h".
	(diagnostic_impl): Add const diagnostic_metadata * param.
	(diagnostic_n_impl): Likewise.
	(diagnostic_initialize): Initialize context->show_cwe.
	(diagnostic_set_info_translated): Initialize diagnostic->metadata.
	(get_cwe_url): New function.
	(print_any_cwe): New function.
	(diagnostic_report_diagnostic): Call print_any_cwe if the
	diagnostic has non-NULL metadata.
	(emit_diagnostic): Pass NULL as the metadata in the call to
	diagnostic_impl.
	(emit_diagnostic_valist): Likewise.
	(emit_diagnostic_valist): New overload taking a
	const diagnostic_metadata *.
	(inform): Pass NULL as the metadata in the call to
	diagnostic_impl.
	(inform_n): Likewise for diagnostic_n_impl.
	(warning): Likewise.
	(warning_at): Likewise.  Add overload that takes a
	const diagnostic_metadata &.
	(warning_n): Pass NULL as the metadata in the call to
	diagnostic_n_impl.
	(pedwarn): Likewise for diagnostic_impl.
	(permerror): Likewise.
	(error): Likewise.
	(error_n): Likewise.
	(error_at): Likewise.
	(sorry): Likewise.
	(sorry_at): Likewise.
	(fatal_error): Likewise.
	(internal_error): Likewise.
	(internal_error_no_backtrace): Likewise.
	* diagnostic.h (diagnostic_info::metadata): New field.
	(diagnostic_context::show_cwe): New field.
	* doc/invoke.texi (-fno-diagnostics-show-cwe): New option.
	* opts.c (common_handle_option): Handle OPT_fdiagnostics_show_cwe.
	* toplev.c (general_init): Initialize global_dc->show_cwe.

gcc/testsuite/ChangeLog:
	* gcc.dg/plugin/diagnostic-test-metadata.c: New test.
	* gcc.dg/plugin/diagnostic_plugin_test_metadata.c: New test plugin.
	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add them.

From-SVN: r279556
2019-12-18 23:58:49 +00:00
Jakub Jelinek
a7a09efa24 re PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526)
PR fortran/92977
	* frontend-passes.c (in_omp_atomic): New variable.
	(cfe_expr_0, matmul_to_var_expr, matmul_temp_args,
	inline_matmul_assign, call_external_blas): Don't optimize in
	EXEC_OMP_ATOMIC.
	(optimize_namespace): Clear in_omp_atomic.
	(gfc_code_walker): Set in_omp_atomic for EXEC_OMP_ATOMIC, save/restore
	it around.

	* gfortran.dg/gomp/pr92977.f90: New test.

From-SVN: r279554
2019-12-19 00:33:54 +01:00
Jakub Jelinek
601399c0df re PR middle-end/86416 ([OpenMP] Offloading - better lto1 error message if mode not supported on offloading target)
PR middle-end/86416
	* testsuite/libgomp.c/pr86416-1.c (main): Use L suffixes rather than
	q or none.
	* testsuite/libgomp.c/pr86416-2.c (main): Use Q suffixes rather than
	L or none.

From-SVN: r279552
2019-12-19 00:27:28 +01:00
Julian Brown
a6163563f2 Add OpenACC 2.6's no_create
The clause makes any device code use the local memory address for each
of the variables specified unless the given variable is already present
on the current device.

2019-12-19  Julian Brown  <julian@codesourcery.com>
            Maciej W. Rozycki  <macro@codesourcery.com>
            Tobias Burnus  <tobias@codesourcery.com>
            Thomas Schwinge  <thomas@codesourcery.com>

        gcc/
        * omp-low.c (lower_omp_target): Support GOMP_MAP_NO_ALLOC.
        * tree-pretty-print.c (dump_omp_clause): Likewise.

        gcc/c-family/
        * c-pragma.h (pragma_omp_clause): Add
        PRAGMA_OACC_CLAUSE_NO_CREATE.

        gcc/c/
        * c-parser.c (c_parser_omp_clause_name): Support no_create.
        (c_parser_oacc_data_clause): Likewise.
        (c_parser_oacc_all_clauses): Likewise.
        (OACC_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
        (OACC_PARALLEL_CLAUSE_MASK, OACC_SERIAL_CLAUSE_MASK): Add
        PRAGMA_OACC_CLAUSE_NO_CREATE.
        * c-typeck.c (handle_omp_array_sections): Support
        GOMP_MAP_NO_ALLOC.

        gcc/cp/
        * parser.c (cp_parser_omp_clause_name): Support no_create.
        (cp_parser_oacc_data_clause): Likewise.
        (cp_parser_oacc_all_clauses): Likewise.
        (OACC_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
        (OACC_PARALLEL_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_NO_CREATE.
        * semantics.c (handle_omp_array_sections): Support no_create.

        gcc/fortran/
        * gfortran.h (gfc_omp_map_op): Add OMP_MAP_NO_ALLOC.
        * openmp.c (omp_mask2): Add OMP_CLAUSE_NO_CREATE.
        (gfc_match_omp_clauses): Support no_create.
        (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES)
        (OACC_DATA_CLAUSES): Add OMP_CLAUSE_NO_CREATE.
        * trans-openmp.c (gfc_trans_omp_clauses_1): Support
        OMP_MAP_NO_ALLOC.

        gcc/testsuite/
        * gfortran.dg/goacc/common-block-1.f90: Add no_create-clause tests.
        * gfortran.dg/goacc/common-block-1.f90: Likewise.
        * gfortran.dg/goacc/data-clauses.f95: Likewise.
        * gfortran.dg/goacc/data-tree.f95: Likewise.
        * gfortran.dg/goacc/kernels-tree.f95: Likewise.
        * gfortran.dg/goacc/parallel-tree.f95: Likewise.

        include/
        * gomp-constants.h (gomp_map_kind): Support GOMP_MAP_NO_ALLOC.

        libgomp/
        * target.c (gomp_map_vars_async): Support GOMP_MAP_NO_ALLOC.
        * testsuite/libgomp.oacc-c-c++-common/no_create-1.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-2.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-3.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-4.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-5.c: New test.
        * testsuite/libgomp.oacc-fortran/no_create-1.f90: New test.
        * testsuite/libgomp.oacc-fortran/no_create-2.f90: New test.
        * testsuite/libgomp.oacc-fortran/no_create-3.F90: New test.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

Co-Authored-By: Maciej W. Rozycki <macro@codesourcery.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
Co-Authored-By: Tobias Burnus <tobias@codesourcery.com>

From-SVN: r279551
2019-12-19 00:10:08 +01:00
Eric Botcazou
11b8091fb3 * ira.c (ira): Use simple LRA algorithm when not optimizing.
From-SVN: r279550
2019-12-18 23:03:23 +00:00
Paolo Carlini
d3769410c6 typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter and use it throughout.
/gcc/cp
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

	* typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter
	and use it throughout.
	(cxx_sizeof_expr): Likewise.
	(cxx_alignof_expr): Likewise.
	(cxx_sizeof_or_alignof_expr): Likewise.
	(cxx_alignas_expr): Update call.
	* decl.c (fold_sizeof_expr): Likewise.
	* pt.c (tsubst_copy): Likewise.
	(tsubst_copy_and_build): Likewise.
	* except.c (build_throw): Add location_t parameter and use it.
	(expand_end_catch_block): Update call.
	* parser.c (cp_parser_unary_expression): Update
	cxx_sizeof_or_alignof_type and cxx_sizeof_or_alignof_expr calls,
	pass the compound location.
	(cp_parser_throw_expression): Likewise pass the combined location
	to build_throw.
	* cp-tree.h: Update declarations.

	* semantics.c (finish_handler_parms): Use DECL_SOURCE_LOCATION.
	* decl2.c (check_classfn): Likewise.

	* except.c (is_admissible_throw_operand_or_catch_parameter):
	Exploit cp_expr_loc_or_input_loc in one place.

	* except.c (create_try_catch_expr): Remove, unused.

/libcc1
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

	* libcp1plugin.cc (plugin_build_unary_expr): Update build_throw
	and cxx_sizeof_or_alignof_expr calls.
	(plugin_build_unary_type_expr): Likewise for
	cxx_sizeof_or_alignof_type.

/gcc/testsuite
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/diagnostic/alignof2.C: New.
	* g++.dg/diagnostic/alignof3.C: Likewise.
	* g++.dg/diagnostic/incomplete-type-1.C: Likewise.
	* g++.dg/warn/Wcatch-value-3b.C: Likewise.
	* g++.dg/cpp0x/alignof3.C: Check location(s) too.
	* g++.dg/cpp1z/decomp-bitfield1.C: Likewise.
	* g++.dg/cpp1z/has-unique-obj-representations2.C: Likewise.
	* g++.dg/expr/sizeof3.C: Likewise.
	* g++.dg/ext/flexary6.C: Likewise.
	* g++.dg/ext/vla4.C: Likewise.
	* g++.dg/template/sizeof11.C: Likewise.
	* g++.dg/warn/Wcatch-value-1.C: Likewise.
	* g++.dg/warn/Wcatch-value-2.C: Likewise.
	* g++.dg/warn/Wcatch-value-3.C: Likewise.
	* g++.old-deja/g++.brendan/sizeof1.C: Likewise.
	* g++.old-deja/g++.brendan/sizeof3.C: Likewise.
	* g++.old-deja/g++.brendan/sizeof4.C: Likewise.
	* g++.old-deja/g++.eh/ctor1.C: Likewise.
	* g++.old-deja/g++.jason/ambig1.C: Likewise.
	* g++.old-deja/g++.other/sizeof4.C: Likewise.

From-SVN: r279543
2019-12-18 19:23:01 +00:00
Peter Bergner
a7389ce5d4 Fix POWER dfp test case target tests.
PR bootstrap/92661
	* gcc.target/powerpc/pr92661.c: New test.
	* gcc.target/powerpc/dfp-dd.c: Add dg-require-effective-target hard_dfp.
	Remove unneeded powerpc_fprs test.
	* gcc.target/powerpc/dfp-td.c: Likewise.
	* gcc.target/powerpc/dfp-dd-2.c: Add dg-require-effective-target dfp.
	* gcc.target/powerpc/dfp-td-2.c: Likewise.
	* gcc.target/powerpc/dfp-td-3.c: Likewise.
	* gcc.target/powerpc/dfp/dfp.exp: Remove rs6000-*-* and
	powerpc*-*-darwin* target tests.  Add check_effective_target_dfp test.
	* gcc.target/powerpc/dfp/dtstsfi-0.c: Remove unneeded target test.
	Remove unneeded dg-skip-if.
	* gcc.target/powerpc/dfp/dtstsfi-1.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-10.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-11.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-12.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-13.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-14.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-15.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-16.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-17.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-18.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-19.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-2.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-20.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-21.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-22.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-23.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-24.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-25.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-26.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-27.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-28.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-29.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-3.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-30.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-31.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-32.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-33.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-34.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-35.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-36.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-37.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-38.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-39.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-4.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-40.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-41.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-42.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-43.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-44.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-45.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-46.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-47.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-48.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-49.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-5.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-50.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-51.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-52.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-53.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-54.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-55.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-56.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-57.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-58.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-59.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-6.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-60.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-61.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-62.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-63.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-64.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-65.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-66.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-67.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-68.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-69.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-7.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-70.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-71.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-72.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-73.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-74.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-75.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-76.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-77.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-78.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-79.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-8.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-9.c: Likewise.

From-SVN: r279542
2019-12-18 12:46:05 -06:00
David Malcolm
6dd0c82021 Drop unused member from cpp_string_location_reader (PR preprocessor/92982)
libcpp/ChangeLog:
	PR preprocessor/92982
	* charset.c
	(cpp_string_location_reader::cpp_string_location_reader): Delete
	initialization of m_line_table.
	* include/cpplib.h (cpp_string_location_reader::m_line_table):
	Delete unused member.

From-SVN: r279541
2019-12-18 17:26:01 +00:00
Thomas Schwinge
77ce555548 [OpenACC] Refactor 'goacc_enter_data' so that it can be called from 'goacc_insert_pointer', "present" case, and simplify
No functional changes.

	libgomp/
	* oacc-mem.c (goacc_enter_data): Refactor, so that it can be
	called...
	(goacc_insert_pointer): ... from here, "present" case.
	(goacc_insert_pointer): Inline function into...
	(GOACC_enter_exit_data): ... here, and simplify.

From-SVN: r279540
2019-12-18 18:02:37 +01:00
Thomas Schwinge
9444a299fa [OpenACC] Refactor 'goacc_enter_data' so that it can be called from 'goacc_insert_pointer', "not present" case
No functional changes.

	libgomp/
	* oacc-mem.c (goacc_enter_data): Refactor, so that it can be
	called...
	(goacc_insert_pointer): ... from here, "not present" case.

From-SVN: r279539
2019-12-18 18:02:27 +01:00
Thomas Schwinge
5031b6199f [OpenACC] Refactor 'goacc_remove_pointer' interface
No functional changes.

	libgomp/
	* oacc-mem.c (goacc_remove_pointer): Refactor interface.  Adjust
	all users.

From-SVN: r279538
2019-12-18 18:02:18 +01:00
Thomas Schwinge
1a79b5788d [OpenACC] Refactor 'GOACC_enter_exit_data' to call 'goacc_enter_data', 'goacc_exit_data'
No functional changes.

	libgomp/
	* oacc-mem.c (GOACC_enter_exit_data): Refactor code to call
	'goacc_enter_data', 'goacc_exit_data'.

From-SVN: r279537
2019-12-18 18:02:10 +01:00
Thomas Schwinge
34cfe31e1d [OpenACC] Refactor 'delete_copyout' into 'goacc_exit_data'
Change 'FLAG_COPYOUT', 'FLAG_FINALIZE' into the usual map kind.

No functional changes.

	libgomp/
	* oacc-mem.c (delete_copyout): Refactor into...
	(goacc_exit_data): ... this.  Adjust all users.

From-SVN: r279536
2019-12-18 18:02:00 +01:00
Thomas Schwinge
aaf0e9d708 [OpenACC] Refactor 'present_create_copy' into 'goacc_enter_data'
Every caller passes in 'FLAG_PRESENT', 'FLAG_CREATE'.  Change the remaining
'FLAG_COPY' into the usual map kind.

No functional changes.

	libgomp/
	* oacc-mem.c (present_create_copy): Refactor into...
	(goacc_enter_data): ... this.  Adjust all users.

From-SVN: r279535
2019-12-18 18:01:51 +01:00
Thomas Schwinge
83d1d065df Assert in 'libgomp/target.c:gomp_unmap_vars_internal' that we're not unmapping 'tgt' while it's still in use
libgomp/
	* target.c (gomp_unmap_vars_internal): Add a safeguard to
	'gomp_remove_var'.

From-SVN: r279534
2019-12-18 18:01:33 +01:00
Thomas Schwinge
cc3f11f5f5 [OpenACC] In 'libgomp/target.c:gomp_to_device_kind_p', handle 'GOMP_MAP_FORCE_FROM' like 'GOMP_MAP_FROM'
Fix oversight from r254194 "Coalesce host to device transfers in libgomp".

	libgomp/
	* target.c (gomp_to_device_kind_p): Handle 'GOMP_MAP_FORCE_FROM'
	like 'GOMP_MAP_FROM'.

From-SVN: r279533
2019-12-18 18:01:22 +01:00
Thomas Schwinge
ddb25eb9ca [PR92726, PR92970, PR92984] [OpenACC] Clarify 'acc_delete' etc. for 'NULL'-in, non-present data, or size zero
PR92970 "OpenACC 2.5: 'acc_delete' etc. on non-present data is a no-op" is an
actual bug fix, and the other ones are fall-out, currently undefined behavior.

	libgomp/
	PR libgomp/92726
	PR libgomp/92970
	PR libgomp/92984
	* oacc-mem.c (delete_copyout): No-op behavior if 'lookup_host'
	fails.
	(GOACC_enter_exit_data): Simplify accordingly.
	* testsuite/libgomp.oacc-c-c++-common/pr92970-1.c: New file,
	subsuming...
	* testsuite/libgomp.oacc-c-c++-common/lib-17.c: ... this file...
	* testsuite/libgomp.oacc-c-c++-common/lib-18.c: ..., and this
	file.
	* testsuite/libgomp.oacc-c-c++-common/pr92984-1.c: New file,
	subsuming...
	* testsuite/libgomp.oacc-c-c++-common/lib-21.c: ... this file...
	* testsuite/libgomp.oacc-c-c++-common/lib-29.c: ..., and this
	file.
	* testsuite/libgomp.oacc-c-c++-common/pr92726-1.c: New file,
	subsuming...
	* testsuite/libgomp.oacc-c-c++-common/lib-28.c: ... this file.

From-SVN: r279532
2019-12-18 18:01:11 +01:00
Thomas Schwinge
32128577ae [OpenACC] Elaborate/simplify 'exit data' 'finalize' handling
No functional changes.

	gcc/
	* gimplify.c (gimplify_omp_target_update): Elaborate 'exit data'
	'finalize' handling.
	gcc/testsuite/
	* c-c++-common/goacc/finalize-1.c: Extend.
	* gfortran.dg/goacc/finalize-1.f: Likewise.
	libgomp/
	* oacc-mem.c (GOACC_enter_exit_data): Simplify 'exit data'
	'finalize' handling.

From-SVN: r279531
2019-12-18 18:00:51 +01:00
Thomas Schwinge
ba40277f6a [PR92848] [OpenACC] Use 'GOMP_MAP_VARS_ENTER_DATA' for dynamic data lifetimes
libgomp/
	PR libgomp/92848
	* oacc-mem.c (acc_map_data, present_create_copy)
	(goacc_insert_pointer): Use 'GOMP_MAP_VARS_ENTER_DATA'.
	(acc_unmap_data, delete_copyout, goacc_remove_pointer): Adjust.
	* testsuite/libgomp.oacc-c-c++-common/lib-50.c: Remove.
	* testsuite/libgomp.oacc-c-c++-common/pr92848-1-d-a.c: New file
	* testsuite/libgomp.oacc-c-c++-common/pr92848-1-d-p.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/pr92848-1-r-a.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/pr92848-1-r-p.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/subset-subarray-mappings-1-r-p.c:
	Remove "XFAIL"s.

From-SVN: r279530
2019-12-18 18:00:39 +01:00
Thomas Schwinge
6278b54922 Make 'libgomp/target.c:gomp_unmap_tgt' 'static' again
This got changed to 'attribute_hidden' in r271128, but it's not actually used
outside of 'libgomp/target.c'.

	libgomp/
	* target.c (gomp_unmap_tgt): Make it 'static'.
	* libgomp.h (gomp_unmap_tgt): Remove.

From-SVN: r279529
2019-12-18 18:00:28 +01:00
Tobias Burnus
c80c9e26de PR 86416 – improve lto1 diagnostic if a mode does not exist
PR middle-end/86416
        *  Makefile.in (CFLAGS-lto-streamer-in.o): Pass target_noncanonical on.
        * lto-streamer-in.c (lto_input_mode_table): Improve unsupported-mode
        diagnostic.

        PR middle-end/86416
        * testsuite/libgomp.c/pr86416-1.c: New.
        * testsuite/libgomp.c/pr86416-2.c: New.

From-SVN: r279528
2019-12-18 17:51:08 +01:00
Harald Anlauf
6573d760cd re PR fortran/70853 (ICE on pointing to null, in gfc_add_block_to_block, at fortran/trans.c:1599)
2019-12-18  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/70853
	* trans-expr.c (gfc_trans_pointer_assignment): Reject bounds
	remapping if pointer target is NULL().

	PR fortran/70853
	* gfortran.dg/pr70853.f90: New test.

From-SVN: r279527
2019-12-18 16:34:06 +00:00
Wilco Dijkstra
e986ce3bd6 [AArch64] Fixup core tunings
Several tuning settings in cores.def are not consistent.
Set the tuning for Cortex-A76AE and Cortex-A77 to neoversen1 so
it is the same as for Cortex-A76 and Neoverse N1.
Set the tuning for Neoverse E1 to cortexa73 so it's the same as for
Cortex-A65. Set the scheduler for Cortex-A65 and Cortex-A65AE to
cortexa53.

    gcc/
	* config/aarch64/aarch64-cores.def: 
	("cortex-a76ae"): Use neoversen1 tuning.
	("cortex-a77"): Likewise.
	("cortex-a65"): Use cortexa53 scheduler.
	("cortex-a65ae"): Likewise.
	("neoverse-e1"): Use cortexa73 tuning.

From-SVN: r279526
2019-12-18 16:11:52 +00:00
Martin Jambor
8bda7ce8ec IPA-CP: Remove bogus static keyword (PR 92971)
2019-12-18  Martin Jambor  <mjambor@suse.cz>

	PR ipa/92971
	* ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Fix
          definition of values, release memory on exit.

	testsuite/
	* gcc.dg/ipa/ipcp-agg-12.c: New test.

From-SVN: r279525
2019-12-18 17:08:09 +01:00
Georg-Johann Lay
15ef05444f * config/avr/avr-mcus.def: Typo.
From-SVN: r279524
2019-12-18 16:02:00 +00:00
Jan Hubicka
c7ac9a0c7e ipa-param-manipulation.h (get_original_index): Declare.
* ipa-param-manipulation.h (get_original_index): Declare.
	* ipa-param-manipulation.c (ipa_param_adjustments::get_original_index):
	New member function.
	* ipa-prop.c (ipcp_get_parm_bits): New function.
	* ipa-prop.h (ipcp_get_parm_bits): Declare.
	* tree-ssa-ccp.c: Include cgraph.h, alloc-pool.h, symbol-summary.h,
	ipa-utils.h and ipa-prop.h
	(get_default_value): Use ipcp_get_parm_bits.

	* gcc.dg/ipa/ipa-bit-cp.c: New testcase.
	* gcc.dg/ipa/ipa-bit-cp-1.c: New testcase.
	* gcc.dg/ipa/ipa-bit-cp-2.c: New testcase.

Co-Authored-By: Martin Jambor <mjambor@suse.cz>

From-SVN: r279523
2019-12-18 13:21:51 +00:00
Jason Merrill
1ad431f95c PR c++/12333 - X::~X() with implicit this->.
this->X::~X() is handled by finish_class_member_access_expr and its
lookup_destructor subroutine; let's use it in cp_parser_lookup_name for the
case where this-> is implicit.

I tried replacing the other destructor code here with just the call to
lookup_destructor, but that regressed handling of naming the destructor
outside a non-static member function.

	* parser.c (cp_parser_lookup_name): Use lookup_destructor.
	* typeck.c (lookup_destructor): No longer static.

From-SVN: r279522
2019-12-18 07:44:34 -05:00
Andrew Stubbs
542803c9ad Fix vect/pr65947-8.c testcase for amdgcn.
2019-12-18  Andrew Stubbs  <ams@codesourcery.com>

	gcc/testsuite/
	* gcc.dg/vect/pr65947-8.c: Change pass conditions for amdgcn.

From-SVN: r279521
2019-12-18 11:47:26 +00:00
Jakub Jelinek
5afa32b898 re PR lto/92972 (gcc/lto-wrapper.c:443: identical branches ?)
PR lto/92972
	* lto-wrapper.c (merge_and_complain): Use just "-fno-pie" instead of
	big ? "-fno-pie" : "-fno-pie".  Formatting fixes.  Fix comment typo.

From-SVN: r279520
2019-12-18 12:15:43 +01:00
Eric Botcazou
e3371908b3 trans.c (Pragma_to_gnu): Push a diagnostics state for pragma Warnings (Off) before turning off all the...
* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Warnings>: Push a
	diagnostics state for pragma Warnings (Off) before turning off all
	the warnings and only pop it for pragma Warnings (On).

From-SVN: r279519
2019-12-18 09:51:14 +00:00
Justin Squirek
d4a45898bc [Ada] Missing accessibility check on access discriminants
2019-12-18  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_ch6.adb (Analyze_Function_Return): Modify handling of
	extended return statements to check accessibility of access
	discriminants.
	(Check_Aggregate_Accessibility): Removed.
	(Check_Return_Obj_Accessibility): Added to centralize checking
	of return aggregates and subtype indications in the case of an
	extended return statement.

From-SVN: r279518
2019-12-18 07:16:22 +00:00
Arnaud Charlet
c7e3d0694b [Ada] Fix uninitialized out parameter in s-regpat.adb
2019-12-18  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/s-regpat.adb (Parse_Literal, Parse_Piece): Ensure
	Expr_Flags is always fully initialized.

From-SVN: r279517
2019-12-18 07:16:17 +00:00
Arnaud Charlet
19f0436b8f [Ada] Atomic aspect on formal generic params now supported in Ada 202x mode
2019-12-18  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/s-atopar.ads, libgnat/s-atopex.ads (Atomic_Type): Can
	now be marked Atomic. This requires marking the unit Ada 202x.

From-SVN: r279516
2019-12-18 07:16:12 +00:00
Arnaud Charlet
5815f92a08 [Ada] Simplify Big_Integer and Big_Real interface
2019-12-18  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb,
	libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb: Replace
	Optional_Big_* types by a simple check and exception raise in
	Get_Bignum.
	(Set_Bignum): Arg should be 'out' and not 'in out'.
	(Invalid_Big_Integer, No_Big_Real): Removed.
	(Is_Valid): Now convention Intrinsic.

From-SVN: r279515
2019-12-18 07:15:52 +00:00
Piotr Trojanek
16b5491430 [Ada] Fix three-letter typos like "sss" in comments and docs
2019-12-18  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/obsolescent_features.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst, exp_attr.adb,
	exp_ch9.adb, init.c, libgnat/s-valrea.adb, par-ch6.adb,
	sem_attr.adb, sem_ch4.adb, sem_util.ads: Fix trivial typos.
	* gnat_rm.texi, gnat_ugn.texi: Regenerate.

From-SVN: r279514
2019-12-18 07:15:22 +00:00
Gary Dismukes
a760d14246 [Ada] Missing accessibility actuals on calls to interface conversion functions
2019-12-18  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Type_Conversion): Add handling for access
	types with designated operand and target types that are
	referenced in places that have a limited view of an interface
	type by retrieving the nonlimited view when it exists.  Add ???
	comments related to missing limited_with_clause handling for
	Target (in the non-access case).

From-SVN: r279513
2019-12-18 07:14:59 +00:00
Ed Schonberg
64c6e3673a [Ada] AI12-0282: shared variable control aspects on formal types
2019-12-18  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* par-ch12.adb (P_Formal_Derived_Type_Definition): In Ada_2020
	the keyword WITH can indicate the start of aspect specifications
	and not a private type extension.
	* sem_ch12.adb (Analyze_Formal_Type): Indicate that it is a
	first subtype.
	(Instantiate_Type): New procedure
	Check_Shared_Variable_Control_Aspects to verify matching rules
	between formal and actual types. Note that an array type with
	aspect Atomic_Components is considered compatible with an array
	type whose component type is Atomic, even though the array types
	do not carry the same aspect.
	* sem_ch13.adb (Analyze_One_Aspect): Allow shared variable
	control aspects to appear on formal types.
	(Rep_Item_Too_Early): Exclude aspects on formal types.
	* sem_prag.adb (Mark_Type): Handle properly pragmas that come
	from aspects on formal types.
	(Analyze_Pragma, case Atomic_Components): Handle formal types.

From-SVN: r279512
2019-12-18 07:14:54 +00:00
Eric Botcazou
2b0451b772 [Ada] Minor housekeeping work in Create_Standard
2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* cstand.adb (Create_Standard): Remove duplicate line and
	adjust.

From-SVN: r279511
2019-12-18 07:14:49 +00:00
Javier Miranda
1198a9351f [Ada] Reserving switch d_K for known problem isssues detection
2019-12-18  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* debug.adb: Document -gnatd_K as a reserved switch for the
	detection of known problem issues of previous releases.

From-SVN: r279510
2019-12-18 07:14:44 +00:00
Ghjuvan Lacambre
fa1072e725 [Ada] Reject aspect specifications on number constants
2019-12-18  Ghjuvan Lacambre  <lacambre@adacore.com>

gcc/ada/

	* par-ch13.adb: Check if declarations allow aspect
	specifications.

From-SVN: r279509
2019-12-18 07:14:39 +00:00
Piotr Trojanek
057aa8d8b7 [Ada] Einfo: fix typo in comment
2019-12-18  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* einfo.ads (Is_Ghost_Entity): Fix typo in comment.

From-SVN: r279508
2019-12-18 07:14:28 +00:00
Eric Botcazou
3a4425fd9a [Ada] Do not propagate Object_Size onto Size for composite types
2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* layout.adb (Layout_Type): In the case of composite types, do
	not copy the Esize onto the RM_Size if the latter is not set.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>:
	Also cap the alignment if an Object_Size clause has been
	specified.  Pass VAR_DECL in the call to validate_size for the
	Esize of a type.
	(validate_size): Be prepared to give an error on an Object_Size
	clause.

From-SVN: r279507
2019-12-18 07:14:23 +00:00
Eric Botcazou
c846eedd56 [Ada] Document the introduction of the Object_Size attribute in Ada 2020
2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* einfo.ads (Handling of Type'Size Value): Add references to the
	introduction of Object_Size in Ada 2020.
	* sem_eval.adb (Subtypes_Statically_Match): Likewise.

From-SVN: r279506
2019-12-18 07:14:18 +00:00