diff mbox

[gomp4] libgomp: Remove C-only XFAILs added in "Tune XFAILs" (was: openacc id builtin)

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

Commit Message

Thomas Schwinge July 7, 2015, 1:31 p.m. UTC
Hi!

On Fri, 26 Jun 2015 08:39:41 -0400, Nathan Sidwell <nathan@acm.org> wrote:
> I discovered a latent bug in the openacc thread id builtin and associated 
> unspec.  They should not be treated as constant functions, because that causes 
> the compiler to consider them constant across threads.  Which of course they are 
> not.
> 
> Applied to gomp4 branch

Apparently, your change:

> 	* config/nvptx/nvptx.md (UNSPEC_ID): Rename to ...
> 	(UNSPECV_ID): ... here.
> 	(oacc_id): Make volatile.
> 	* omp-builtins.def (BUILT_IN_GOACC_ID): Not a constant function.

> --- config/nvptx/nvptx.md	(revision 224987)
> +++ config/nvptx/nvptx.md	(working copy)
> @@ -50,7 +50,6 @@
>     UNSPEC_ALLOCA
>  
>     UNSPEC_NID
> -   UNSPEC_ID
>  
>     UNSPEC_SHARED_DATA
>  ])
> @@ -61,6 +60,7 @@
>     UNSPECV_XCHG
>     UNSPECV_WARP_BCAST
>     UNSPECV_BARSYNC
> +   UNSPECV_ID
>  ])
>  
>  (define_attr "subregs_ok" "false,true"
> @@ -1313,7 +1313,8 @@
>  
>  (define_insn "oacc_id"
>    [(set (match_operand:SI 0 "nvptx_register_operand" "")
> -	(unspec:SI [(match_operand:SI 1 "const_int_operand" "")] UNSPEC_ID))]
> +	(unspec_volatile:SI [(match_operand:SI 1 "const_int_operand" "")]
> +			UNSPECV_ID))]
>    ""
>  {
>    static const char *const asms[] =

> --- omp-builtins.def	(revision 224987)
> +++ omp-builtins.def	(working copy)
> @@ -62,7 +62,7 @@ DEF_GOACC_BUILTIN (BUILT_IN_GOACC_WAIT,
>  		   BT_FN_VOID_INT_INT_VAR,
>  		   ATTR_NOTHROW_LIST)
>  DEF_GOACC_BUILTIN (BUILT_IN_GOACC_ID, "GOACC_id",
> -		   BT_FN_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
> +		   BT_FN_UINT_UINT, ATTR_NOTHROW_LEAF_LIST)
>  DEF_GOACC_BUILTIN (BUILT_IN_GOACC_NID, "GOACC_nid",
>  		   BT_FN_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
>  DEF_GOACC_BUILTIN (BUILT_IN_GOACC_GET_GANGLOCAL_PTR, "GOACC_get_ganglocal_ptr",

... was not just to fix »a latent bug«, but instead I found your changes
to cure the C-only XFAILs that we had applied earlier,
<http://news.gmane.org/find-root.php?message_id=%3C87zj3xccqv.fsf%40kepler.schwinge.homeip.net%3E>,
so I removed the XFAILs in r225515 -- but I have not made an attempt to
understand why C and C++ did behave differently, what's (been) going
on...  :-/

commit 72e6113ce537cdaaf562b579becaada5e91f4fea
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Tue Jul 7 13:27:34 2015 +0000

    libgomp: Remove C-only XFAILs added in "Tune XFAILs"
    
    This removes the C-only XFAILs of r224614, which disappeared as of r225010.
    
    	libgomp/
    	* testsuite/libgomp.oacc-c++/c++.exp (check_effective_target_c):
    	Remove procedure.
    	* testsuite/libgomp.oacc-c/c.exp (check_effective_target_c):
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-1.c:
    	Remove/tune XFAILs.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-2.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-3.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-2.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-3.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-4.c:
    	Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/private-vars-par-gang-3.c:
    	Likewise.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@225515 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libgomp/ChangeLog.gomp                              | 21 +++++++++++++++++++++
 libgomp/testsuite/libgomp.oacc-c++/c++.exp          |  4 ----
 .../private-vars-local-worker-1.c                   |  2 --
 .../private-vars-local-worker-2.c                   |  2 --
 .../private-vars-local-worker-4.c                   |  1 -
 .../private-vars-loop-gang-3.c                      |  6 ------
 .../private-vars-loop-worker-2.c                    |  2 --
 .../private-vars-loop-worker-3.c                    |  2 --
 .../private-vars-loop-worker-4.c                    |  2 --
 .../private-vars-par-gang-3.c                       |  2 --
 libgomp/testsuite/libgomp.oacc-c/c.exp              |  4 ----
 11 files changed, 21 insertions(+), 27 deletions(-)



Grüße,
 Thomas
diff mbox

Patch

diff --git libgomp/ChangeLog.gomp libgomp/ChangeLog.gomp
index 5f3dfaf..418474d 100644
--- libgomp/ChangeLog.gomp
+++ libgomp/ChangeLog.gomp
@@ -1,5 +1,26 @@ 
 2015-07-07  Thomas Schwinge  <thomas@codesourcery.com>
 
+	* testsuite/libgomp.oacc-c++/c++.exp (check_effective_target_c):
+	Remove procedure.
+	* testsuite/libgomp.oacc-c/c.exp (check_effective_target_c):
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-1.c:
+	Remove/tune XFAILs.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-2.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-4.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-3.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-2.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-3.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-4.c:
+	Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/private-vars-par-gang-3.c:
+	Likewise.
+
 	* testsuite/libgomp.oacc-c-c++-common/reduction-4.c:
 	dg-xfail-run-if openacc_nvidia_accel_selected.
 
diff --git libgomp/testsuite/libgomp.oacc-c++/c++.exp libgomp/testsuite/libgomp.oacc-c++/c++.exp
index 80cb317..60f582b 100644
--- libgomp/testsuite/libgomp.oacc-c++/c++.exp
+++ libgomp/testsuite/libgomp.oacc-c++/c++.exp
@@ -14,10 +14,6 @@  if [info exists lang_include_flags] then {
     unset lang_include_flags
 }
 
-proc check_effective_target_c { } {
-    return 0
-}
-
 # If a testcase doesn't have special options, use these.
 if ![info exists DEFAULT_CFLAGS] then {
     set DEFAULT_CFLAGS "-O2"
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-1.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-1.c
index 957f827..67a1518 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-1.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-1.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { c && 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-2.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-2.c
index 5bf3e16..0ee87be 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-2.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-local-worker-2.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { c && 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 118dae8..4cec00e 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,4 +1,3 @@ 
-/* { dg-xfail-if "TODO" { c } } */
 /* { dg-xfail-run-if "TODO" { openacc_nvidia_accel_selected } { "*" } { "" } } */
 
 #include <assert.h>
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-3.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-3.c
index bc96f0d..0a77869 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-3.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-gang-3.c
@@ -1,9 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { c && openacc_nvidia_accel_selected } { "*" } { "" } } */
-/* Fails as of gomp-4_0-branch r224586, but for C only:
-
-   private-vars-loop-gang-3.exe: [...]/private-vars-loop-gang-3.c:28: main: Assertion `arr[i] == i + (i / 32) * 2' failed.
-*/
-
 #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-worker-2.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-2.c
index a5f16d8..3227700 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-2.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-2.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { c && 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-3.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-3.c
index 5c75f4d..65d5d4f 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-3.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-3.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { c && 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-4.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-4.c
index f0d1309..42a12b2 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-4.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-loop-worker-4.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { c && 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-par-gang-3.c libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-par-gang-3.c
index c580d68..e5cd6fa 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-par-gang-3.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/private-vars-par-gang-3.c
@@ -1,5 +1,3 @@ 
-/* { dg-xfail-run-if "TODO" { c && openacc_nvidia_accel_selected } { "*" } { "" } } */
-
 #include <assert.h>
 
 /* Test of gang-private array variable declared on the parallel directive.  */
diff --git libgomp/testsuite/libgomp.oacc-c/c.exp libgomp/testsuite/libgomp.oacc-c/c.exp
index 15e8f81..8d54815 100644
--- libgomp/testsuite/libgomp.oacc-c/c.exp
+++ libgomp/testsuite/libgomp.oacc-c/c.exp
@@ -19,10 +19,6 @@  if ![info exists DEFAULT_CFLAGS] then {
     set DEFAULT_CFLAGS "-O2"
 }
 
-proc check_effective_target_c { } {
-    return 1
-}
-
 # Initialize dg.
 dg-init