1. 19 Dec, 2019 15 commits
    • PR c++/52320 - EH cleanups for partially constructed arrays. · 26a68e92
      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
      Jason Merrill committed
    • PR c++/66139 - EH cleanups for partially constructed aggregates. · 942d334e
      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
      Jason Merrill committed
    • Add changelog for commit r279573 (added myself to write-after-approval) · 39f8777c
      2019-12-19  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* MAINTAINERS (write_after_approval): Add myself.
      
      From-SVN: r279575
      Stam Markianos-Wright committed
    • Implement sub-dword add/sub on amdgcn · 77f7566e
      2019-12-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (addv64si3<exec_clobber>): Rename to ...
      	(add<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
      	(addv64si3_dup<exec_clobber>): Rename to ...
      	(add<mode>3_dup<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
      	(subv64si3<exec_clobber>): Rename to ...
      	(sub<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
      
      From-SVN: r279574
      Andrew Stubbs committed
    • Add myself to MAINTAINERS · 2b91bb48
      From-SVN: r279573
      Stam Markianos-Wright committed
    • [AArch64] Reject invalid subregs involving partial SVE modes · 76607e7e
      When adding partial SVE modes, I'd remembered to handle reloads
      in a similar way to full big-endian SVE vectors, but forgot the
      just-as-important mode-change rules.
      
      2019-12-19  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_can_change_mode_class):
      	Don't allow changes between partial SVE modes and other kinds
      	of mode.  Don't allow changes between two partial SVE modes
      	if they have different container or element sizes.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/mixed_size_8.c: New test.
      
      From-SVN: r279572
      Richard Sandiford committed
    • [AArch64] Handle arguments and return types with partial SVE modes · 6aa5370c
      Partial SVE modes can be picked up and used by the vector_size(N)
      attribute.[*] This means that we need to cope with arguments and return
      values with partial SVE modes, which previously triggered asserts like:
      
        /* Generic vectors that map to SVE modes with -msve-vector-bits=N are
           passed by reference, not by value.  */
        gcc_assert (!aarch64_sve_mode_p (mode));
      
      The ABI for these types is fixed from pre-SVE days, and must in any case
      be the same for all -msve-vector-bits=N values.  All we need to do is
      ensure that the vectors are passed and returned in the traditional way.
      
      [*] Advanced SIMD always wins for 64-bit and 128-bit vectors though.
      
      2019-12-19  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_function_value_1): New function,
      	split out from...
      	(aarch64_function_value): ...here.  Handle partial SVE modes by
      	pretending that they have the associated/traditional integer mode,
      	then wrap the result in the real mode.
      	(aarch64_layout_arg): Take an orig_mode argument and pass it to
      	aarch64_function_arg_alignment.  Handle partial SVE modes analogously
      	to aarch64_function_value.
      	(aarch64_function_arg): Update call accordingly.
      	(aarch64_function_arg_advance): Likewise.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/pcs/gnu_vectors_3.c: New test.
      
      From-SVN: r279571
      Richard Sandiford committed
    • Revert accidental commit · 022d11a3
      From-SVN: r279570
      Richard Sandiford committed
    • Don't mangle attributes that have a space in their name · ed0eca5e
      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
      Richard Sandiford committed
    • re PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526) · 23cdc1e9
      	PR fortran/92977
      	* frontend-passes.c (call_external_blas): Use || instead of |.
      
      From-SVN: r279567
      Jakub Jelinek committed
    • Fix symver attribute with LTO · 40ebe1fc
      	* 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
      Jan Hubicka committed
    • ipa: duplicate ipa_size_summary for cloned nodes · 44fca832
      	* 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
      Jan Hubicka committed
    • Handle aggregate pass-through for self-recursive call (PR ipa/92794) · 951e27f5
      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
      Feng Xue committed
    • Daily bump. · 1ed63309
      From-SVN: r279560
      GCC Administrator committed
    • PR c++/91165 follow-on tweak · db38a029
      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
      Jason Merrill committed
  2. 18 Dec, 2019 25 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