diff mbox

[gomp] Move openacc vector& worker single handling to RTL

Message ID 87a8v42xkh.fsf@kepler.schwinge.homeip.net
State New
Headers show

Commit Message

Thomas Schwinge July 10, 2015, 9:04 a.m. UTC
Hi!

On Thu, 09 Jul 2015 20:25:22 -0400, Nathan Sidwell <nathan@acm.org> wrote:
> This is the patch I committed.

:-) Whee!

From testing this, two things:

1. Can you please have a look at the following ICE?  I suppose you can
reproduce this in your non-checking build by just unconditionally
enabling that df_verify call?  Committed to gomp-4_0-branch in r225656:

commit 1aff96b721921f621642c0fab95359453bc01beb
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Jul 10 09:01:55 2015 +0000

    Work around nvptx offloading compiler --enable-checking=yes,df,fold,rtl breakage
    
    ... introduced in r225647.
    
        checking whether the GNU Fortran compiler is working... no
        configure: error: GNU Fortran is not working; please report a bug in http://gcc.gnu.org/bugzilla, attaching /home/thomas/tmp/source/gcc/openacc/openacc-gomp-4_0-branch-work_/build-gcc-accel-nvptx/nvptx-none/libgfortran/config.log
        make[1]: *** [configure-target-libgfortran] Error 1
    
        configure:4192: [...]/build-gcc-accel-nvptx/./gcc/xgcc -B[...]/build-gcc-accel-nvptx/./gcc/ -nostdinc -B[...]/build-gcc-accel-nvptx/nvptx-none/newlib/ -isystem [...]/build-gcc-accel-nvptx/nvptx-none/newlib/targ-include -isystem [...]/source-gcc/newlib/libc/include -B/nvptx-none/bin/ -B/nvptx-none/lib/ -isystem /nvptx-none/include -isystem /nvptx-none/sys-include --sysroot=[...]/install/nvptx-none   -c -g  conftest.c >&5
        conftest.c: In function 'main':
        conftest.c:16:1: internal compiler error: in df_live_verify_transfer_functions, at df-problems.c:1849
         }
         ^
        0x6d3d8e df_live_verify_transfer_functions()
                [...]/source-gcc/gcc/df-problems.c:1848
        0x6cb83a df_analyze_1
                [...]/source-gcc/gcc/df-core.c:1241
        0xd909a0 nvptx_reorg
                [...]/source-gcc/gcc/config/nvptx/nvptx.c:2946
        0xa50829 execute
                [...]/source-gcc/gcc/reorg.c:4034
        Please submit a full bug report,
        with preprocessed source if appropriate.
        Please include the complete backtrace with any bug report.
        See <http://gcc.gnu.org/bugs.html> for instructions.
        configure:4192: $? = 1
        configure: failed program was:
        | /* confdefs.h */
        | #define PACKAGE_NAME "GNU Fortran Runtime Library"
        | #define PACKAGE_TARNAME "libgfortran"
        | #define PACKAGE_VERSION "0.3"
        | #define PACKAGE_STRING "GNU Fortran Runtime Library 0.3"
        | #define PACKAGE_BUGREPORT ""
        | #define PACKAGE_URL "http://www.gnu.org/software/libgfortran/"
        | /* end confdefs.h.  */
        |
        | int
        | main ()
        | {
        |
        |   ;
        |   return 0;
        | }
    
    Reproduce:
    
        $ echo 'static void foo(void) {}' | build-gcc-accel-nvptx/gcc/xgcc -Bbuild-gcc-accel-nvptx/gcc/ -S -x c -
        <stdin>: In function 'foo':
        <stdin>:1:1: internal compiler error: in df_live_verify_transfer_functions, at df-problems.c:1849
        0x6d3d8e df_live_verify_transfer_functions()
                [...]/source-gcc/gcc/df-problems.c:1848
        0x6cb83a df_analyze_1
                [...]/source-gcc/gcc/df-core.c:1241
        0xd909a0 nvptx_reorg
                [...]/source-gcc/gcc/config/nvptx/nvptx.c:2946
        0xa50829 execute
                [...]/source-gcc/gcc/reorg.c:4034
    
    Workaround:
    
    	gcc/
    	* df-core.c (df_analyze_1): Disable df_verify call.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@225656 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog.gomp |    4 ++++
 gcc/df-core.c      |    2 ++
 2 files changed, 6 insertions(+)



Grüße,
 Thomas
diff mbox

Patch

diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp
index c71e396..535900c 100644
--- gcc/ChangeLog.gomp
+++ gcc/ChangeLog.gomp
@@ -1,3 +1,7 @@ 
+2015-07-10  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* df-core.c (df_analyze_1): Disable df_verify call.
+
 2015-07-09  Nathan Sidwell  <nathan@codesourcery.com>
 
 	Infrastructure:
diff --git gcc/df-core.c gcc/df-core.c
index 67040a1..52cca8e 100644
--- gcc/df-core.c
+++ gcc/df-core.c
@@ -1235,10 +1235,12 @@  df_analyze_1 (void)
   if (dump_file)
     fprintf (dump_file, "df_analyze called\n");
 
+#if /* TODO */ 0
 #ifndef ENABLE_DF_CHECKING
   if (df->changeable_flags & DF_VERIFY_SCHEDULED)
 #endif
     df_verify ();
+#endif
 
   /* Skip over the DF_SCAN problem. */
   for (i = 1; i < df->num_problems_defined; i++)


2. Don't be shy to remove a bunch of XFAILs, in fact all :-) of those
remaining from the test cases that Julian had added in
<http://news.gmane.org/find-root.php?message_id=%3C20150617151515.087aa93e%40octopus%3E>.

Unfortunately, there's also one regressions, but I'm seeing it only on
Nvidia K20 hardware, not on my laptop (but it may well be
hardware-dependent: according to a web search, CUDA error 716 translates
to CUDA_ERROR_MISALIGNED_ADDRESS).  Are you reproducing that one, and/or
do you have an idea where it's coming from?

Committed to gomp-4_0-branch in r225657:

commit bdecfaf444a5811e5ea2a942e7b98b160d737b7b
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Jul 10 09:02:02 2015 +0000

    libgomp: XFAILs update
    
    ... after r225647.
    
    	libgomp/
    	* testsuite/libgomp.oacc-c-c++-common/parallel-loop-1.c: Add
    	XFAIL.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-3.c:
    	Remove XFAIL.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-5.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-2.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-4.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-5.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-6.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-5.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-6.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-7.c:
    	Likewise.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@225657 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libgomp/ChangeLog.gomp                             |   25 ++++++++++++++++++++
 .../libgomp.oacc-c-c++-common/parallel-loop-1.c    |    1 +
 .../private-vars-local-worker-3.c                  |    2 --
 .../private-vars-local-worker-4.c                  |    2 --
 .../private-vars-local-worker-5.c                  |    2 --
 .../private-vars-loop-gang-2.c                     |    2 --
 .../private-vars-loop-gang-4.c                     |    3 ---
 .../private-vars-loop-gang-5.c                     |    2 --
 .../private-vars-loop-gang-6.c                     |    2 --
 .../private-vars-loop-worker-5.c                   |    3 ---
 .../private-vars-loop-worker-6.c                   |    2 --
 .../private-vars-loop-worker-7.c                   |    2 --
 12 files changed, 26 insertions(+), 22 deletions(-)

diff --git libgomp/ChangeLog.gomp libgomp/ChangeLog.gomp
index 1949d78..6d1c547 100644
--- libgomp/ChangeLog.gomp
+++ libgomp/ChangeLog.gomp
@@ -1,3 +1,28 @@ 
+2015-07-10  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* testsuite/libgomp.oacc-c-c++-common/parallel-loop-1.c: Add
+	XFAIL.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-3.c:
+	Remove XFAIL.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-5.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-2.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-4.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-5.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-6.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-5.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-6.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-7.c:
+	Likewise.
+
 2015-07-08  James Norris  <jnorris@codesourcery.com>
 
 	* oacc-parallel.c (GOACC_parallel GOACC_data_start): Handle Fortran
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-loop-1.c libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-loop-1.c
index a1f974d..23a9b23 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-loop-1.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-loop-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-do run } */
+/* { dg-xfail-run-if "cuStreamSynchronize error: unknown result code:   716" { openacc_nvidia_accel_selected } } */
 
 #include <stdlib.h>
 
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-3.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-3.c
index 6129523..1e67322 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-3.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-3.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of worker-private variables declared in a local scope, broadcasting
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c
index 4cec00e..120001b 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of worker-private variables declared in a local scope, broadcasting
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-5.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-5.c
index efc2206..f849f0c 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-5.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-5.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of worker-private variables declared in a local scope, broadcasting
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-2.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-2.c
index 9debf83..3898c0e 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-2.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-2.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of gang-private variables declared on loop directive, with broadcasting
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-4.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-4.c
index f0f0477..45714010 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-4.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-4.c
@@ -1,6 +1,3 @@ 
-/* { dg-xfail-if "TODO: ICE" { *-*-* } } */
-/* { dg-excess-errors "TODO" } */
-
 #include <assert.h>
 
 /* Test of gang-private addressable variable declared on loop directive, with
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-5.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-5.c
index b955303..b070773 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-5.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-5.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of gang-private array variable declared on loop directive, with
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-6.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-6.c
index 0c17eaa..ec74292 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-6.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-6.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of gang-private aggregate variable declared on loop directive, with
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-5.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-5.c
index 741795d..a28105c 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-5.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-5.c
@@ -1,6 +1,3 @@ 
-/* { dg-xfail-if "TODO: ICE" { *-*-* } } */
-/* { dg-excess-errors "TODO" } */
-
 #include <assert.h>
 
 /* Test of worker-private variables declared on a loop directive, broadcasting
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-6.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-6.c
index feba09e..5dde621 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-6.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-6.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of worker-private variables declared on a loop directive, broadcasting
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-7.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-7.c
index 5469c5d..e4d4ccf 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-7.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-7.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of worker-private variables declared on loop directive, broadcasting