1. 22 Dec, 2019 7 commits
    • Add OpenACC 2.6 `acc_get_property' support · 6c84c8bf
      Add generic support for the OpenACC 2.6 `acc_get_property' and
      `acc_get_property_string' routines, as well as full handlers for the
      host and the NVPTX offload targets and minimal handlers for the HSA,
      Intel MIC, and AMD GCN offload targets.
      
      Included are C/C++ and Fortran tests that, in particular, print
      the property values for acc_property_vendor, acc_property_memory,
      acc_property_free_memory, acc_property_name, and acc_property_driver.
      The output looks as follows:
      
      Vendor: GNU
      Name: GOMP
      Total memory: 0
      Free memory: 0
      Driver: 1.0
      
      with the host driver (where the memory related properties are not
      supported for the host device and yield 0, conforming to the standard)
      and output like:
      
      Vendor: Nvidia
      Total memory: 12651462656
      Free memory: 12202737664
      Name: TITAN V
      Driver: CUDA Driver 9.1
      
      with the NVPTX driver.
      
      2019-12-22  Maciej W. Rozycki  <macro@codesourcery.com>
      	    Frederik Harwath  <frederik@codesourcery.com>
      	    Thomas Schwinge  <tschwinge@codesourcery.com>
      
      	include/
      	* gomp-constants.h (gomp_device_property): New enum.
      
      	libgomp/
      	* libgomp.h (gomp_device_descr): Add `get_property_func' member.
      	* libgomp-plugin.h (gomp_device_property_value): New union.
      	(gomp_device_property_value): New prototype.
      	* openacc.h (acc_device_t): Add `acc_device_current' enumeration
      	constant.
      	(acc_device_property_t): New enum.
      	(acc_get_property, acc_get_property_string): New prototypes.
      	* oacc-init.c (acc_get_device_type): Also assert that result
      	is not `acc_device_current'.
      	(get_property_any, acc_get_property, acc_get_property_string):
      	New functions.
      	* openacc.f90 (openacc_kinds): Add `acc_device_current' and
      	`acc_property_memory', `acc_property_free_memory',
      	`acc_property_name', `acc_property_vendor' and
      	`acc_property_driver' constants.  Add `acc_device_property' data
      	type.
      	(openacc_internal): Add `acc_get_property' and
      	`acc_get_property_string' interfaces.  Add `acc_get_property_h',
      	`acc_get_property_string_h', `acc_get_property_l' and
      	`acc_get_property_string_l'.
      	* oacc-host.c (host_get_property): New function.
      	(host_dispatch): Wire it.
      	* target.c (gomp_load_plugin_for_device): Handle `get_property'.
      	* libgomp.map (OACC_2.6): Add `acc_get_property', `acc_get_property_h_',
      	`acc_get_property_string' and `acc_get_property_string_h_' symbols.
      	* libgomp.texi (OpenACC Runtime Library Routines): Add
      	`acc_get_property'.
      	(acc_get_property): New node.
      	* plugin/plugin-gcn.c (GOMP_OFFLOAD_get_property): New
      	function (stub).
      	* plugin/plugin-hsa.c (GOMP_OFFLOAD_get_property): New function.
      	* plugin/plugin-nvptx.c (CUDA_CALLS): Add `cuDeviceGetName',
      	`cuDeviceTotalMem', `cuDriverGetVersion' and `cuMemGetInfo'
      	calls.
      	(GOMP_OFFLOAD_get_property): New function.
      	(struct ptx_device): Add new field "name".
      	(cuda_driver_version_s): Add new static variable ...
      	(nvptx_init): ... and init from here.
      
      	* testsuite/libgomp.oacc-c-c++-common/acc_get_property.c: New test.
      	* testsuite/libgomp.oacc-c-c++-common/acc_get_property-2.c: New test.
      	* testsuite/libgomp.oacc-c-c++-common/acc_get_property-3.c: New test.
      	* testsuite/libgomp.oacc-c-c++-common/acc_get_property-aux.c: New file
      	with test helper functions.
      
      	* testsuite/libgomp.oacc-fortran/acc_get_property.f90: New test.
      
      	liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property):
      	New function.
      
      Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      
      
      Co-Authored-By: Frederik Harwath <frederik@codesourcery.com>
      Co-Authored-By: Thomas Schwinge <tschwinge@codesourcery.com>
      
      From-SVN: r279710
      Maciej W. Rozycki committed
    • Restrict some aarch64 testcases to little-endian · edadb8ad
      
      2019-12-21  Andrew Pinski  <apinski@marvell.com>
      
              PR testsuite/92998
              * gcc.target/aarch64/sve/acle/general/dupq_1.c:
              Restrict to aarch64_little_endian only.
              * gcc.target/aarch64/torture/simd-abi-8.c:
              Likewise.
      
      From-SVN: r279709
      Andrew Pinski committed
    • libgomp/test: Fix compilation for build sysroot · c8e759b4
      Fix a problem with the libgomp testsuite using a method to determine
      the compiler to use resulting in the tool being different from one the
      library has been built with, and causing a catastrophic failure from the
      lack of a suitable `--sysroot=' option where the `--with-build-sysroot='
      configuration option has been used to build the compiler resulting in
      the inability to link executables.
      
      Address this problem by defining the compiler to use, via the
      GCC_UNDER_TEST TCL variable, set in the DejaGNU configuration file from
      $CC by autoconf, which will have all the required options set for the
      target compiler to build executables in the environment configured,
      removing failures like:
      
      .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
      .../bin/riscv64-linux-gnu-ld: cannot find -lm
      .../bin/riscv64-linux-gnu-ld: cannot find -lpthread
      .../bin/riscv64-linux-gnu-ld: cannot find -lc
      .../bin/riscv64-linux-gnu-ld: cannot find -latomic
      collect2: error: ld returned 1 exit status
      compiler exited with status 1
      FAIL: libgomp.c/../libgomp.c-c++-common/atomic-18.c (test for excess errors)
      Excess errors:
      .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
      .../bin/riscv64-linux-gnu-ld: cannot find -lm
      .../bin/riscv64-linux-gnu-ld: cannot find -lpthread
      .../bin/riscv64-linux-gnu-ld: cannot find -lc
      .../bin/riscv64-linux-gnu-ld: cannot find -latomic
      
      UNRESOLVED: libgomp.c/../libgomp.c-c++-common/atomic-18.c compilation failed to produce executable
      
      and bringing overall test results for the `riscv64-linux-gnu' target
      (here with the `x86_64-linux-gnu' host and RISC-V QEMU in the Linux user
      emulation mode as the target board) from:
      
      		=== libgomp Summary ===
      
      # of expected passes		44
      # of unexpected failures	3274
      # of unresolved testcases	3241
      # of unsupported tests		548
      
      to:
      
      		=== libgomp Summary ===
      
      # of expected passes		6834
      # of unexpected failures	4
      # of expected failures		4
      # of unsupported tests		518
      
      	libgomp/
      	* testsuite/libgomp-test-support.exp.in (GCC_UNDER_TEST): New
      	variable.
      
      From-SVN: r279708
      Maciej W. Rozycki committed
    • * doc/invoke.texi (-flto): Use "compile time" as a noun. · 20ff65f8
      From-SVN: r279707
      Gerald Pfeifer committed
    • testsuite: Fix run-time tracking down of `libgcc_s' · d42b84f4
      Fix a catastrophic libgo testsuite failure in cross-compilation where
      the shared `libgcc_s' library cannot be found by the loader at run time
      in build-tree testing and consequently all test cases fail the execution
      stage, giving output (here with the `x86_64-linux-gnu' host and the
      `riscv64-linux-gnu' target, with RISC-V QEMU in the Linux user emulation
      mode as the target board) like:
      
      spawn qemu-riscv64 -E LD_LIBRARY_PATH=.:.../riscv64-linux-gnu/lib64/lp64d/libgo/.libs ./a.exe
      ./a.exe: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
      FAIL: archive/tar
      
      To do so rework `gcc-set-multilib-library-path' so as not to rely on the
      `rootme' TCL variable to have been preset in testsuite invocation, which
      only works for the GCC test suites and not for library test suites, and
      also use `remote_exec host' rather than `exec' to invoke the compiler in
      determination of `libgcc_s' locations, so that the solution works in
      remote testing as well while also avoiding the hardcoded limit of the
      executable's path length imposed by `exec'.
      
      This is based on an observation that the multilib root directory can be
      determined by stripping out the multilib directory in effect as printed
      with the `-print-multi-directory' option from the path produced by the
      `-print-file-name=' option.  And then individual full multilib paths can
      be assembled for the other multilibs by appending their respective
      multilib directories to the multilib root directory.
      
      Unlike with the old solution the full multilib paths are not checked for
      the presence of the shared `libgcc_s' library there, but that is
      supposed to be harmless.  Also the full multilib path for the multilib
      used with the compiler used for testing will now come first, which
      should reduce run-time processing in the usual case.
      
      With this change in place test output instead looks like:
      
      spawn qemu-riscv64 -E LD_LIBRARY_PATH=.:.../riscv64-linux-gnu/lib64/lp64d/libgo/.libs:..././gcc/lib64/lp64d:..././gcc/.:..././gcc/lib32/ilp32:..././gcc/lib32/ilp32d:..././gcc/lib64/lp64 ./a.exe
      PASS
      PASS: archive/tar
      
      No summary comparison, because the libgo testsuite does not provide one
      in this configuration for some reason, however this change improves
      overall results from 0 PASSes and 159 FAILs to 133 PASSes and 26 FAILs.
      
      	gcc/testsuite/
      	* lib/gcc-defs.exp (gcc-set-multilib-library-path): Use
      	`-print-file-name=' to determine the multilib root directory.
      	Use `remote_exec host' rather than `exec' to invoke the
      	compiler.
      
      From-SVN: r279706
      Maciej W. Rozycki committed
    • Daily bump. · bcfcf777
      From-SVN: r279705
      GCC Administrator committed
    • libada: Fix shared library installation with `--disable-libada' · 5cb34da7
      Provide a default value of $(toolexeclibdir) for $(ADA_RTL_DSO_DIR), so
      that in a `--disable-libada' configuration `make install' places shared
      gnatlib libraries, built with `make -C gcc gnatlib-shared', in their
      intended version-specific location, fixing a commit r276424 ("libada:
      Respect `--enable-version-specific-runtime-libs'") regression.
      
      	gcc/ada/
      	* gcc-interface/Makefile.in (toolexeclibdir): New variable.
      
      From-SVN: r279702
      Maciej W. Rozycki committed
  2. 21 Dec, 2019 7 commits
  3. 20 Dec, 2019 26 commits
    • re PR middle-end/91512 (Fortran compile time regression.) · 907343e8
      	PR middle-end/91512
      	PR fortran/92738
      	* lang.opt (-finline-arg-packing): Add trailing dot to help text.
      
      From-SVN: r279687
      Jakub Jelinek committed
    • PR c++/92745 - bogus error when initializing array of vectors. · 14818f98
      In r268428 I changed reshape_init_r in such a way that when it sees
      a nested { } in a CONSTRUCTOR with missing braces, it just returns
      the initializer:
      +     else if (COMPOUND_LITERAL_P (stripped_init)
      ...
      +         ++d->cur;
      +         gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (stripped_init));
      +         return init;
      
      But as this test shows, that's incorrect: if TYPE is an array, we need
      to proceed to reshape_init_array_1 which will iterate over the array
      initializers:
       6006   /* Loop until there are no more initializers.  */
       6007   for (index = 0;
       6008        d->cur != d->end && (!sized_array_p || index <= max_index_cst);
       6009        ++index)
       6010     {
      and update d.cur accordingly.  In other words, when reshape_init gets
      
      {{col[0][0], col[1][0], col[2][0], col[3][0]},
       {col[0][1], col[1][1], col[2][1], col[3][1]},
       {col[0][2], col[1][2], col[2][2], col[3][2]},
       {col[0][3], col[1][3], col[2][3], col[3][3]}}
      
      we recurse on the first element:
        {col[0][0], col[1][0], col[2][0], col[3][0]}
      and we can't just move d.cur to point to
        {col[0][1], col[1][1], col[2][1], col[3][1]}
      and return; we need to iterate, so that d.cur ends up being properly
      updated, and after all initializers have been seen, points to d.end.
      Currently we skip the loop, wherefore we hit this:
      
       6502   /* Make sure all the element of the constructor were used. Otherwise,
       6503      issue an error about exceeding initializers.  */
       6504   if (d.cur != d.end)
       6505     {
       6506       if (complain & tf_error)
       6507         error ("too many initializers for %qT", type);
       6508       return error_mark_node;
       6509     }
      
      	* decl.c (reshape_init_r): For a nested compound literal, do
      	call reshape_init_{class,array,vector}.
      
      	* g++.dg/cpp0x/initlist118.C: New test.
      
      From-SVN: r279686
      Marek Polacek committed
    • PR c++/92974 - bogus location for enum and non-enum in ?: warning. · 97ba5b86
      build_min_non_dep wasn't setting any location so when we were emitting the
      warning in the following test while instantiating a template, its location
      was UNKNOWN_LOCATION.  Rather than adding a location_t parameter, let's use
      the location from the original expression.
      
      	* tree.c (build_min_non_dep): Use the location of NON_DEP when
      	building the expression.
      
      	* g++.dg/diagnostic/enum1.C: New test.
      	* g++.dg/gomp/loop-2.C: Adjust dg-error.
      	* g++.dg/gomp/for-21.C: Likewise.
      
      From-SVN: r279685
      Marek Polacek committed
    • re PR c++/92965 ("note: 'x' is not public" emitted even when no error is emitted) · 7731b8e6
      	PR c++/92965
      	* pt.c (invalid_nontype_parm_type_p): Call structural_type_p with
      	explain=true only if emitting error.
      
      	* g++.dg/cpp2a/nontype-class27.C: New test.
      
      From-SVN: r279684
      Jakub Jelinek committed
    • re PR c++/92966 (Segfault on defaulted operator== with wrong return type) · b804bd89
      	PR c++/92966
      	* method.c (early_check_defaulted_comparison): Don't set
      	DECL_MAYBE_DELETED when returning false.
      
      	* g++.dg/cpp2a/spaceship-eq8.C: New test.
      
      From-SVN: r279683
      Jakub Jelinek committed
    • re PR c++/92973 (Silently accepting defaulted comparison operators in C++11 .. 17) · 8aca5ebe
      	PR c++/92973
      	* method.c (early_check_defaulted_comparison): For C++17 and earlier
      	diagnose defaulted comparison operators.
      
      	* g++.dg/cpp0x/spaceship-eq1.C: New test.
      
      From-SVN: r279682
      Jakub Jelinek committed
    • re PR c++/92666 (bogus -Wunused-but-set-variable in gcov.c with -Wno-restrict) · 0bd002bf
      	PR c++/92666
      	* call.c (convert_arg_to_ellipsis): For floating point or
      	decltype(nullptr) arguments call mark_rvalue_use.
      
      	* g++.dg/warn/Wunused-var-36.C: New test.
      
      From-SVN: r279681
      Jakub Jelinek committed
    • re PR c++/92992 (Side-effects dropped when decltype(nullptr) typed expression is… · 6c7b8430
      re PR c++/92992 (Side-effects dropped when decltype(nullptr) typed expression is passed to ellipsis)
      
      	PR c++/92992
      	* call.c (convert_arg_to_ellipsis): For decltype(nullptr) arguments
      	that have side-effects use cp_build_compound_expr.
      
      	* g++.dg/cpp0x/nullptr45.C: New test.
      
      From-SVN: r279680
      Jakub Jelinek committed
    • Rename signed integer 16/34-bit macros. · 03e487e5
      2019-12-20   Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/predicates.md (cint34_operand): Use
      	SIGNED_INTEGER_34BIT_P macro.
      	* config/rs6000/rs6000.c (num_insns_constant_gpr): Use the
      	SIGNED_INTEGER_16BIT_P and SIGNED_INTEGER_34BIT_P macros.
      	(address_to_insn_form): Use the SIGNED_INTEGER_16BIT_P and
      	SIGNED_INTEGER_34BIT_P macros.
      	* config/rs6000/rs6000.h (SIGNED_INTEGER_NBIT_P): New macro.
      	(SIGNED_INTEGER_16BIT_P): Rename SIGNED_16BIT_OFFSET_P to be
      	SIGNED_INTEGER_34BIT_P.
      	(SIGNED_INTEGER_34BIT_P): Rename SIGNED_34BIT_OFFSET_P to be
      	SIGNED_INTEGER_34BIT_P.
      
      From-SVN: r279677
      Michael Meissner committed
    • c-ada-spec.h (decl_sloc): Delete. · 39292e25
      c-family/
      	* c-ada-spec.h (decl_sloc): Delete.
      	* c-ada-spec.c (decl_sloc): Make static.
      c/
      	* c-decl.c (collect_source_ref_cb): Delete.
      	(for_each_global_decl): Rename into...
      	(collect_source_refs): ...this.  Call collect_source_ref directly.
      	(c_parse_final_cleanups): Always call collect_source_ref on the main
      	input filename.
      cp/
      	* decl2.c (c_parse_final_cleanups): Always call collect_source_ref on
      	the main input filename.
      
      From-SVN: r279670
      Eric Botcazou committed
    • fortran: Fix PR number in comment of testcase for PR 69497 · 02e85427
      The testcase was originally committed with an incorrect changelog and PR
      number. The changelog was fixed later, but not the comment in the test.
      
      	PR fortran/69497
      	* gfortran.dg/pr69497.f90: Fix PR number in comment.
      
      From-SVN: r279657
      Jonathan Wakely committed
    • libstdc++: Add inline to maybe-constexpr functions (PR 92927) · 7770bd7e
      Originally these functions were always inline. I changed them in r277342
      to be always constexpr, then in r277588 changed them to be constexpr for
      C++14, but I didn't restore the 'inline' for C++11. That leads to linker
      errors when libstdc++.so is built unoptimized, because those functions
      don't get instantiated in src/c++11/string-inst.o
      
      	PR libstdc++/92927
      	* include/bits/alloc_traits.h (__alloc_on_copy, __alloc_on_move)
      	(__alloc_on_swap): Add inline specifier.
      
      From-SVN: r279656
      Jonathan Wakely committed
    • gcc/testsuite/ChangeLog: · 9260fb06
      2019-12-20  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* lib/target-supports.exp 
      	(check_effective_target_arm_v8_2a_i8mm_ok_nocache): New.
      	(check_effective_target_arm_v8_2a_i8mm_ok): New.
      	(add_options_for_arm_v8_2a_i8mm): New.
      	(check_effective_target_arm_v8_2a_bf16_neon_ok_nocache): New.
      	(check_effective_target_arm_v8_2a_bf16_neon_ok): New.
      	(add_options_for_arm_v8_2a_bf16_neon): New.
      
      gcc/Changelog:
      
      2019-12-20  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* doc/sourcebuild.texi
      	(arm_v8_2a_bf16_neon_ok): Document new target supports option.
      	(arm_v8_2a_i8mm_ok): Likewise.
      
      From-SVN: r279648
      Stam Markianos-Wright committed
    • Rename tests to reference the correct PR · 0f6a7c12
      2019-12-20  Roman Zhuykov  <zhroma@ispras.ru>
      
      	* gcc.dg/pr92951-1.c: Rename to ...
      	* gcc.dg/pr92591-1.c: ... this.
      	* gcc.dg/pr92951-2.c: Rename to ...
      	* gcc.dg/pr92591-2.c: ... this.
      
      From-SVN: r279645
      Roman Zhuykov committed
    • libstdc++: Test setrlimit with c++ in configure · 84de780d
      	* acinclude.m4 (GLIBCXX_CHECK_SETRLIMIT): Test with AC_LANG_CPLUSPLUS.
      	* configure: Regenerate.
      
      From-SVN: r279644
      Jerome Lambourg committed
    • libstdc++: Fix versioned namespace tests · 33bd8e5e
      	* testsuite/23_containers/map/48101_neg.cc: Add versioned namespace
      	pattern to tested error message.
      	* testsuite/23_containers/multimap/48101_neg.cc: Likewise.
      	* testsuite/30_threads/headers/stop_token/synopsis.cc: Add
      	dg-require-normal-namepace.
      
      From-SVN: r279641
      François Dumont committed
    • libstdc++: Fix pretty printers script and tests · e278e62f
      	* python/libstdcxx/v6/printers.py (lookup_node_type): Remove redundant
      	call to lookup_node_type.
      	* testsuite/libstdc++-prettyprinters/80276.cc: Define
      	_GLIBCXX_USE_CXX11_ABI to 0.
      	* testsuite/libstdc++-prettyprinters/91997.cc: Use regexp-test to check
      	'a' content.
      
      From-SVN: r279640
      François Dumont committed
    • Introduce -finline-arg-packing. · 95d27703
      2019-12-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
          PR middle-end/91512
          PR fortran/92738
          * invoke.texi: Document -finline-arg-packing.
          * lang.opt: Add -finline-arg-packing.
          * options.c (gfc_post_options): Handle -finline-arg-packing.
          * trans-array.c (gfc_conv_array_parameter): Use
          flag_inline_arg_packing instead of checking for optimize and
          optimize_size.
      
      2019-12-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
          PR middle-end/91512
          PR fortran/92738
          * gfortran.dg/inline_pack_25.f90: New test.
      
      From-SVN: r279639
      Thomas Koenig committed
    • Fortran] PR 92996 – fix rank resolution EXPR_ARRAY · de89b574
              PR fortran/92996
              gcc/fortran/
              * expr.c (simplify_parameter_variable): Call gfc_resolve_ref and
              gfc_expression_rank; fix location info.
              * gfortran.h (gfc_resolve_ref, gfc_expression_rank): Declare.
              * match.c (gfc_match_stopcode): Remove redundant setting of
              gfc_init_expr_flag; early return if gfc_simplify_expr has an error.
              * resolve.c (gfc_expression_rank): Renamed from expression_rank;
              minor cleanup.
              (gfc_resolve_ref): Removed static and renamed from resolve_ref.
              (resolve_variable, resolve_typebound_function,
              resolve_typebound_subroutine, resolve_ppc_call, resolve_expr_ppc,
              gfc_resolve_expr, resolve_procedure): Update calls.
      
              PR fortran/92996
              gcc/testsuite/
              * gfortran.dg/array_simplify_4.f90: New.
              * gfortran.dg/pr91565.f90: Update dg-error.
              * gfortran.dg/pr91801.f90: Likewise.
      
      From-SVN: r279638
      Tobias Burnus committed
    • Improve is-coindexed check for OpenACC/OpenMP · e565e49f
              gcc/fortran/
              * openmp.c (resolve_omp_clauses): Move is-coindexed check from here ...
              (gfc_match_omp_variable_list): ... to here.
      
              gcc/testsuite/
              * gfortran.dg/goacc/coindexed-1.f90: New.
      
      From-SVN: r279637
      Tobias Burnus committed
    • Add myself to MAINTAINERS · 74a7b87a
      From-SVN: r279636
      Jerome Lambourg committed
    • libstdc++: Strengthen the check for availability of pthread_rwlock_t · 7607ff49
              * acinclude.m4 (_GLIBCXX_USE_PTHREAD_RWLOCK_T): Checks that
              _PTHREADS is defined after including gthr.h.
              * configure: Regenerate.
      
      From-SVN: r279635
      Jerome Lambourg committed
    • Fix testsuite-fallout of OpenACC deep-copy patch · 211c667f
              gcc/testsuite/
              * gfortran.dg/goacc/data-clauses.f95: Remove now
              obsolete dg-error.
      
      From-SVN: r279634
      Tobias Burnus committed
    • re PR target/92841 (Optimize -fstack-protector-strong code generation a bit) · 3439487f
      	PR target/92841
      	* config/i386/i386.md (*stack_protect_set_3): For pic_32bit_operand
      	always use lea{q}, no matter what value which_alternative has.
      
      	* gcc.target/i386/pr92841-2.c: New test.
      
      From-SVN: r279633
      Jakub Jelinek committed
    • re PR target/93002 (while(i--) optimization) · 99675d5c
      	PR target/93002
      	* config/i386/i386.md (dec reg; cmp $-1, reg; jne lab): New
      	define_peephole2.
      
      	* gcc.target/i386/pr93002.c: New test.
      
      From-SVN: r279632
      Jakub Jelinek committed
    • Fortran polymorphic class-type support for OpenACC · 9be3ac5d
      	gcc/fortran/
      	* openmp.c (resolve_oacc_data_clauses): Don't disallow allocatable
      	polymorphic types for OpenACC.
      	* trans-openmp.c (gfc_trans_omp_clauses): Support polymorphic class
      	types.
      
      	libgomp/
      	* testsuite/libgomp.oacc-fortran/class-ptr-param.f95: New test.
      	* testsuite/libgomp.oacc-fortran/classtypes-1.f95: New test.
      	* testsuite/libgomp.oacc-fortran/classtypes-2.f95: New test.
      
      From-SVN: r279631
      Julian Brown committed