1. 18 Dec, 2019 40 commits
    • Add diagnostic_metadata and CWE support · 6d4a35ca
      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
      David Malcolm committed
    • re PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526) · a7a09efa
      	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
      Jakub Jelinek committed
    • re PR middle-end/86416 ([OpenMP] Offloading - better lto1 error message if mode… · 601399c0
      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
      Jakub Jelinek committed
    • Add OpenACC 2.6's no_create · a6163563
      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
      Julian Brown committed
    • * ira.c (ira): Use simple LRA algorithm when not optimizing. · 11b8091f
      From-SVN: r279550
      Eric Botcazou committed
    • typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter and use it throughout. · d3769410
      /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
      Paolo Carlini committed
    • Fix POWER dfp test case target tests. · a7389ce5
      	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
      Peter Bergner committed
    • Drop unused member from cpp_string_location_reader (PR preprocessor/92982) · 6dd0c820
      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
      David Malcolm committed
    • [OpenACC] Refactor 'goacc_enter_data' so that it can be called from… · 77ce5555
      [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
      Thomas Schwinge committed
    • [OpenACC] Refactor 'goacc_enter_data' so that it can be called from… · 9444a299
      [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
      Thomas Schwinge committed
    • [OpenACC] Refactor 'goacc_remove_pointer' interface · 5031b619
      No functional changes.
      
      	libgomp/
      	* oacc-mem.c (goacc_remove_pointer): Refactor interface.  Adjust
      	all users.
      
      From-SVN: r279538
      Thomas Schwinge committed
    • [OpenACC] Refactor 'GOACC_enter_exit_data' to call 'goacc_enter_data', 'goacc_exit_data' · 1a79b578
      No functional changes.
      
      	libgomp/
      	* oacc-mem.c (GOACC_enter_exit_data): Refactor code to call
      	'goacc_enter_data', 'goacc_exit_data'.
      
      From-SVN: r279537
      Thomas Schwinge committed
    • [OpenACC] Refactor 'delete_copyout' into 'goacc_exit_data' · 34cfe31e
      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
      Thomas Schwinge committed
    • [OpenACC] Refactor 'present_create_copy' into 'goacc_enter_data' · aaf0e9d7
      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
      Thomas Schwinge committed
    • Assert in 'libgomp/target.c:gomp_unmap_vars_internal' that we're not unmapping… · 83d1d065
      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
      Thomas Schwinge committed
    • [OpenACC] In 'libgomp/target.c:gomp_to_device_kind_p', handle… · cc3f11f5
      [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
      Thomas Schwinge committed
    • [PR92726, PR92970, PR92984] [OpenACC] Clarify 'acc_delete' etc. for 'NULL'-in,… · ddb25eb9
      [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
      Thomas Schwinge committed
    • [OpenACC] Elaborate/simplify 'exit data' 'finalize' handling · 32128577
      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
      Thomas Schwinge committed
    • [PR92848] [OpenACC] Use 'GOMP_MAP_VARS_ENTER_DATA' for dynamic data lifetimes · ba40277f
      	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
      Thomas Schwinge committed
    • Make 'libgomp/target.c:gomp_unmap_tgt' 'static' again · 6278b549
      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
      Thomas Schwinge committed
    • PR 86416 – improve lto1 diagnostic if a mode does not exist · c80c9e26
              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
      Tobias Burnus committed
    • re PR fortran/70853 (ICE on pointing to null, in gfc_add_block_to_block, at fortran/trans.c:1599) · 6573d760
      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
      Harald Anlauf committed
    • [AArch64] Fixup core tunings · e986ce3b
      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
      Wilco Dijkstra committed
    • IPA-CP: Remove bogus static keyword (PR 92971) · 8bda7ce8
      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
      Martin Jambor committed
    • * config/avr/avr-mcus.def: Typo. · 15ef0544
      From-SVN: r279524
      Georg-Johann Lay committed
    • ipa-param-manipulation.h (get_original_index): Declare. · c7ac9a0c
      
      	* 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
      Jan Hubicka committed
    • PR c++/12333 - X::~X() with implicit this->. · 1ad431f9
      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
      Jason Merrill committed
    • Fix vect/pr65947-8.c testcase for amdgcn. · 542803c9
      2019-12-18  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/testsuite/
      	* gcc.dg/vect/pr65947-8.c: Change pass conditions for amdgcn.
      
      From-SVN: r279521
      Andrew Stubbs committed
    • re PR lto/92972 (gcc/lto-wrapper.c:443: identical branches ?) · 5afa32b8
      	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
      Jakub Jelinek committed
    • trans.c (Pragma_to_gnu): Push a diagnostics state for pragma Warnings (Off)… · e3371908
      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
      Eric Botcazou committed
    • [Ada] Missing accessibility check on access discriminants · d4a45898
      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
      Justin Squirek committed
    • [Ada] Fix uninitialized out parameter in s-regpat.adb · c7e3d069
      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
      Arnaud Charlet committed
    • [Ada] Atomic aspect on formal generic params now supported in Ada 202x mode · 19f0436b
      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
      Arnaud Charlet committed
    • [Ada] Simplify Big_Integer and Big_Real interface · 5815f92a
      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
      Arnaud Charlet committed
    • [Ada] Fix three-letter typos like "sss" in comments and docs · 16b54914
      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
      Piotr Trojanek committed
    • [Ada] Missing accessibility actuals on calls to interface conversion functions · a760d142
      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
      Gary Dismukes committed
    • [Ada] AI12-0282: shared variable control aspects on formal types · 64c6e367
      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
      Ed Schonberg committed
    • [Ada] Minor housekeeping work in Create_Standard · 2b0451b7
      2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* cstand.adb (Create_Standard): Remove duplicate line and
      	adjust.
      
      From-SVN: r279511
      Eric Botcazou committed
    • [Ada] Reserving switch d_K for known problem isssues detection · 1198a935
      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
      Javier Miranda committed
    • [Ada] Reject aspect specifications on number constants · fa1072e7
      2019-12-18  Ghjuvan Lacambre  <lacambre@adacore.com>
      
      gcc/ada/
      
      	* par-ch13.adb: Check if declarations allow aspect
      	specifications.
      
      From-SVN: r279509
      Ghjuvan Lacambre committed