diff mbox

[4/4,GOMP4,Fortran] OpenACC 1.0+ support in fortran front-end

Message ID 87lhw5f9to.fsf@schwinge.name
State New
Headers show

Commit Message

Thomas Schwinge March 20, 2014, 10:22 a.m. UTC
Hi Ilmir!

On Fri, 7 Mar 2014 14:47:14 +0400, Ilmir Usmanov <i.usmanov@samsung.com> wrote:
>      OpenACC 1.0 fortran FE support -- tests.

> --- /dev/null
> +++ b/gcc/testsuite/gfortran.dg/goacc/coarray.f95
> @@ -0,0 +1,35 @@
> +! { dg-do compile } 

> +! { dg-excess-errors "Unimplemented" }
> +! { dg-excess-errors "ACC LOOP" }
> \ No newline at end of file

As in
<http://news.gmane.org/find-root.php?message_id=%3C87mwglf9vq.fsf%40schwinge.name%3E>,
this is wrong usage of the dg-excess-errors directive, for this one will
absorb *all* remaining errors, whereas you just wanted to mask out any
»sorry, unimplemented: [...]« ones.

OK to fix as follows?

commit 6d27a0605bd914a1b51e467e340221c5b018e129
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Thu Mar 20 11:04:30 2014 +0100

    Replace dg-excess-errors usage with dg-prune-output.
    
    	gcc/testsuite/
    	* gfortran.dg/goacc/cache-1.f95: Replace dg-excess-errors usage
    	with dg-prune-output.
    	* gfortran.dg/goacc/coarray.f95: Likewise.
    	* gfortran.dg/goacc/cray.f95: Likewise.
    	* gfortran.dg/goacc/data-tree.f95: Likewise.
    	* gfortran.dg/goacc/declare-1.f95: Likewise.
    	* gfortran.dg/goacc/host_data-tree.f95: Likewise.
    	* gfortran.dg/goacc/kernels-tree.f95: Likewise.
    	* gfortran.dg/goacc/loop-1.f95: Likewise.
    	* gfortran.dg/goacc/parallel-kernels-regions.f95: Likewise.
    	* gfortran.dg/goacc/parallel-tree.f95: Likewise.
    	* gfortran.dg/goacc/parameter.f95: Likewise.



This changes the test results as follows:

    @@ -30,8 +30,8 @@ PASS: gfortran.dg/goacc/branch.f95  -O   (test for errors, line 16)
     PASS: gfortran.dg/goacc/branch.f95  -O   (test for errors, line 22)
     PASS: gfortran.dg/goacc/branch.f95  -O   (test for errors, line 28)
     PASS: gfortran.dg/goacc/branch.f95  -O  (test for excess errors)
    -XFAIL: gfortran.dg/goacc/cache-1.f95  -O  (test for excess errors)
    -XFAIL: gfortran.dg/goacc/coarray.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/cache-1.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/coarray.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/continuation-free-form.f95  -O   (test for errors, line 19)
     PASS: gfortran.dg/goacc/continuation-free-form.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/cray.f95  -O   (test for errors, line 13)
    @@ -44,7 +44,7 @@ PASS: gfortran.dg/goacc/cray.f95  -O   (test for errors, line 32)
     PASS: gfortran.dg/goacc/cray.f95  -O   (test for errors, line 35)
     PASS: gfortran.dg/goacc/cray.f95  -O   (test for errors, line 39)
     PASS: gfortran.dg/goacc/cray.f95  -O   (test for errors, line 41)
    -XFAIL: gfortran.dg/goacc/cray.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/cray.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/critical.f95  -O   (test for errors, line 11)
     PASS: gfortran.dg/goacc/critical.f95  -O   (test for errors, line 22)
     PASS: gfortran.dg/goacc/critical.f95  -O  (test for excess errors)
    @@ -115,7 +115,7 @@ PASS: gfortran.dg/goacc/data-clauses.f95  -O   (test for errors, line 244)
     PASS: gfortran.dg/goacc/data-clauses.f95  -O   (test for errors, line 246)
     PASS: gfortran.dg/goacc/data-clauses.f95  -O   (test for errors, line 248)
     PASS: gfortran.dg/goacc/data-clauses.f95  -O  (test for excess errors)
    -XFAIL: gfortran.dg/goacc/data-tree.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/data-tree.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/data-tree.f95  -O   scan-tree-dump-times original "pragma acc data" 1
     PASS: gfortran.dg/goacc/data-tree.f95  -O   scan-tree-dump-times original "if" 1
     PASS: gfortran.dg/goacc/data-tree.f95  -O   scan-tree-dump-times original "map\\(force_tofrom:i\\)" 1
    @@ -128,7 +128,7 @@ PASS: gfortran.dg/goacc/data-tree.f95  -O   scan-tree-dump-times original "map\\
     PASS: gfortran.dg/goacc/data-tree.f95  -O   scan-tree-dump-times original "map\\(from:s\\)" 1
     PASS: gfortran.dg/goacc/data-tree.f95  -O   scan-tree-dump-times original "map\\(alloc:t\\)" 1
     PASS: gfortran.dg/goacc/data-tree.f95  -O   scan-tree-dump-times original "map\\(force_deviceptr:u\\)" 1
    -XFAIL: gfortran.dg/goacc/declare-1.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/declare-1.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/declare-1.f95  -O   scan-tree-dump-times original "pragma acc declare map\\(force_tofrom:i\\)" 2
     PASS: gfortran.dg/goacc/enter-exit-data.f95  -O   (test for errors, line 31)
     PASS: gfortran.dg/goacc/enter-exit-data.f95  -O   (test for errors, line 32)
    @@ -176,7 +176,7 @@ PASS: gfortran.dg/goacc/enter-exit-data.f95  -O   (test for errors, line 84)
     PASS: gfortran.dg/goacc/enter-exit-data.f95  -O   (test for errors, line 85)
     PASS: gfortran.dg/goacc/enter-exit-data.f95  -O   (test for errors, line 86)
     PASS: gfortran.dg/goacc/enter-exit-data.f95  -O  (test for excess errors)
    -XFAIL: gfortran.dg/goacc/host_data-tree.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/host_data-tree.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/host_data-tree.f95  -O   scan-tree-dump-times original "pragma acc host_data use_device\\(i\\)" 1
     PASS: gfortran.dg/goacc/if.f95  -O   (test for errors, line 9)
     PASS: gfortran.dg/goacc/if.f95  -O   (test for errors, line 10)
    @@ -194,7 +194,7 @@ PASS: gfortran.dg/goacc/if.f95  -O   (test for errors, line 29)
     PASS: gfortran.dg/goacc/if.f95  -O   (test for errors, line 30)
     PASS: gfortran.dg/goacc/if.f95  -O   (test for errors, line 31)
     PASS: gfortran.dg/goacc/if.f95  -O  (test for excess errors)
    -XFAIL: gfortran.dg/goacc/kernels-tree.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/kernels-tree.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/kernels-tree.f95  -O   scan-tree-dump-times original "pragma acc kernels" 1
     PASS: gfortran.dg/goacc/kernels-tree.f95  -O   scan-tree-dump-times original "if" 1
     PASS: gfortran.dg/goacc/kernels-tree.f95  -O   scan-tree-dump-times original "async" 1
    @@ -264,7 +264,7 @@ PASS: gfortran.dg/goacc/loop-1.f95  -O   (test for errors, line 142)
     PASS: gfortran.dg/goacc/loop-1.f95  -O   (test for errors, line 147)
     PASS: gfortran.dg/goacc/loop-1.f95  -O   (test for errors, line 152)
     PASS: gfortran.dg/goacc/loop-1.f95  -O   (test for errors, line 157)
    -XFAIL: gfortran.dg/goacc/loop-1.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/loop-1.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/loop-2.f95  -O   (test for errors, line 37)
     PASS: gfortran.dg/goacc/loop-2.f95  -O   (test for errors, line 41)
     PASS: gfortran.dg/goacc/loop-2.f95  -O   (test for errors, line 59)
    @@ -393,8 +393,8 @@ PASS: gfortran.dg/goacc/parallel-kernels-clauses.f95  -O  (test for excess error
     PASS: gfortran.dg/goacc/parallel-kernels-regions.f95  -O   (test for errors, line 17)
     PASS: gfortran.dg/goacc/parallel-kernels-regions.f95  -O   (test for errors, line 22)
     PASS: gfortran.dg/goacc/parallel-kernels-regions.f95  -O   (test for errors, line 46)
    -XFAIL: gfortran.dg/goacc/parallel-kernels-regions.f95  -O  (test for excess errors)
    -XFAIL: gfortran.dg/goacc/parallel-tree.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/parallel-kernels-regions.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/parallel-tree.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/parallel-tree.f95  -O   scan-tree-dump-times original "pragma acc parallel" 1
     PASS: gfortran.dg/goacc/parallel-tree.f95  -O   scan-tree-dump-times original "if" 1
     PASS: gfortran.dg/goacc/parallel-tree.f95  -O   scan-tree-dump-times original "async" 1
    @@ -422,7 +422,7 @@ PASS: gfortran.dg/goacc/parameter.f95  -O   (test for errors, line 16)
     PASS: gfortran.dg/goacc/parameter.f95  -O   (test for errors, line 18)
     PASS: gfortran.dg/goacc/parameter.f95  -O   (test for errors, line 27)
     PASS: gfortran.dg/goacc/parameter.f95  -O   (test for errors, line 28)
    -XFAIL: gfortran.dg/goacc/parameter.f95  -O  (test for excess errors)
    +PASS: gfortran.dg/goacc/parameter.f95  -O  (test for excess errors)
     PASS: gfortran.dg/goacc/pure-elemental-procedures.f95  -O   (test for errors, line 8)
     PASS: gfortran.dg/goacc/pure-elemental-procedures.f95  -O   (test for errors, line 12)
     PASS: gfortran.dg/goacc/pure-elemental-procedures.f95  -O   (test for errors, line 18)


Grüße,
 Thomas

Comments

Jakub Jelinek March 20, 2014, 10:25 a.m. UTC | #1
On Thu, Mar 20, 2014 at 11:22:59AM +0100, Thomas Schwinge wrote:
> > --- /dev/null
> > +++ b/gcc/testsuite/gfortran.dg/goacc/coarray.f95
> > @@ -0,0 +1,35 @@
> > +! { dg-do compile } 
> 
> > +! { dg-excess-errors "Unimplemented" }
> > +! { dg-excess-errors "ACC LOOP" }
> > \ No newline at end of file

Note, in any case, please avoid files without trailing newline unless
strictly necessary (primarily, testing that compiler handles those).

	Jakub
Ilmir Usmanov March 20, 2014, 12:35 p.m. UTC | #2
Hi Thomas!

On 20.03.2014 14:22, Thomas Schwinge wrote:
>
> As in
> <http://news.gmane.org/find-root.php?message_id=%3C87mwglf9vq.fsf%40schwinge.name%3E>,
> this is wrong usage of the dg-excess-errors directive, for this one will
> absorb *all* remaining errors, whereas you just wanted to mask out any
> »sorry, unimplemented: [...]« ones.
>
> OK to fix as follows?
>
Sure. Thanks!
diff mbox

Patch

diff --git gcc/testsuite/gfortran.dg/goacc/cache-1.f95 gcc/testsuite/gfortran.dg/goacc/cache-1.f95
index 6d7f60a..746cf02 100644
--- gcc/testsuite/gfortran.dg/goacc/cache-1.f95
+++ gcc/testsuite/gfortran.dg/goacc/cache-1.f95
@@ -9,4 +9,4 @@  program test
     !$acc cache (d)
   enddo
 end
-! { dg-excess-errors "unimplemented" }
\ No newline at end of file
+! { dg-prune-output "unimplemented" }
diff --git gcc/testsuite/gfortran.dg/goacc/coarray.f95 gcc/testsuite/gfortran.dg/goacc/coarray.f95
index 7afb4bc..ab13157 100644
--- gcc/testsuite/gfortran.dg/goacc/coarray.f95
+++ gcc/testsuite/gfortran.dg/goacc/coarray.f95
@@ -31,5 +31,4 @@  contains
     !$acc update device (a)
   end subroutine oacc1
 end module test
-! { dg-excess-errors "Unimplemented" }
-! { dg-excess-errors "ACC LOOP" }
\ No newline at end of file
+! { dg-prune-output "ACC cache unimplemented" }
diff --git gcc/testsuite/gfortran.dg/goacc/cray.f95 gcc/testsuite/gfortran.dg/goacc/cray.f95
index 509f61b..3225b28 100644
--- gcc/testsuite/gfortran.dg/goacc/cray.f95
+++ gcc/testsuite/gfortran.dg/goacc/cray.f95
@@ -51,4 +51,4 @@  contains
     !$acc update device (ptr)
   end subroutine oacc1
 end module test
-! { dg-excess-errors "unimplemented" }
\ No newline at end of file
+! { dg-prune-output "unimplemented" }
diff --git gcc/testsuite/gfortran.dg/goacc/data-tree.f95 gcc/testsuite/gfortran.dg/goacc/data-tree.f95
index d29c060..a5c012a 100644
--- gcc/testsuite/gfortran.dg/goacc/data-tree.f95
+++ gcc/testsuite/gfortran.dg/goacc/data-tree.f95
@@ -12,7 +12,7 @@  program test
   !$acc end data
 
 end program test
-! { dg-excess-errors "unimplemented" }
+! { dg-prune-output "unimplemented" }
 ! { dg-final { scan-tree-dump-times "pragma acc data" 1 "original" } } 
 
 ! { dg-final { scan-tree-dump-times "if" 1 "original" } }
@@ -28,4 +28,4 @@  end program test
 ! { dg-final { scan-tree-dump-times "map\\(alloc:t\\)" 1 "original" } } 
 
 ! { dg-final { scan-tree-dump-times "map\\(force_deviceptr:u\\)" 1 "original" } } 
-! { dg-final { cleanup-tree-dump "original" } } 
\ No newline at end of file
+! { dg-final { cleanup-tree-dump "original" } } 
diff --git gcc/testsuite/gfortran.dg/goacc/declare-1.f95 gcc/testsuite/gfortran.dg/goacc/declare-1.f95
index aec3ae8..03540f1 100644
--- gcc/testsuite/gfortran.dg/goacc/declare-1.f95
+++ gcc/testsuite/gfortran.dg/goacc/declare-1.f95
@@ -15,6 +15,6 @@  contains
     END BLOCK
   end function foo
 end program test
-! { dg-excess-errors "unimplemented" }
+! { dg-prune-output "unimplemented" }
 ! { dg-final { scan-tree-dump-times "pragma acc declare map\\(force_tofrom:i\\)" 2 "original" } } 
 ! { dg-final { cleanup-tree-dump "original" } } 
diff --git gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95 gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
index 1c24fe7..19e7411 100644
--- gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
+++ gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
@@ -8,6 +8,6 @@  program test
   !$acc host_data use_device(i)
   !$acc end host_data
 end program test
-! { dg-excess-errors "unimplemented" }
+! { dg-prune-output "unimplemented" }
 ! { dg-final { scan-tree-dump-times "pragma acc host_data use_device\\(i\\)" 1 "original" } } 
 ! { dg-final { cleanup-tree-dump "original" } } 
diff --git gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
index 5c65d2a..73f172c 100644
--- gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
+++ gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
@@ -12,7 +12,7 @@  program test
   !$acc end kernels
 
 end program test
-! { dg-excess-errors "unimplemented" }
+! { dg-prune-output "unimplemented" }
 ! { dg-final { scan-tree-dump-times "pragma acc kernels" 1 "original" } } 
 
 ! { dg-final { scan-tree-dump-times "if" 1 "original" } }
diff --git gcc/testsuite/gfortran.dg/goacc/loop-1.f95 gcc/testsuite/gfortran.dg/goacc/loop-1.f95
index af4f537..e1b2dfd 100644
--- gcc/testsuite/gfortran.dg/goacc/loop-1.f95
+++ gcc/testsuite/gfortran.dg/goacc/loop-1.f95
@@ -167,4 +167,5 @@  subroutine test1
 
 end subroutine test1
 end module test
-! { dg-excess-errors "Deleted" }
+! { dg-prune-output "Deleted" }
+! { dg-prune-output "ACC cache unimplemented" }
diff --git gcc/testsuite/gfortran.dg/goacc/parallel-kernels-regions.f95 gcc/testsuite/gfortran.dg/goacc/parallel-kernels-regions.f95
index 5cd4d6c..f31aa54 100644
--- gcc/testsuite/gfortran.dg/goacc/parallel-kernels-regions.f95
+++ gcc/testsuite/gfortran.dg/goacc/parallel-kernels-regions.f95
@@ -53,4 +53,4 @@  program test
   !$acc end kernels
   
 end program test
-! { dg-excess-errors "unimplemented" }
\ No newline at end of file
+! { dg-prune-output "error: may not be nested" }
diff --git gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95 gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95
index a92de4e..f004702 100644
--- gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95
+++ gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95
@@ -15,7 +15,7 @@  program test
   !$acc end parallel
 
 end program test
-! { dg-excess-errors "unimplemented" }
+! { dg-prune-output "unimplemented" }
 ! { dg-final { scan-tree-dump-times "pragma acc parallel" 1 "original" } } 
 
 ! { dg-final { scan-tree-dump-times "if" 1 "original" } }
diff --git gcc/testsuite/gfortran.dg/goacc/parameter.f95 gcc/testsuite/gfortran.dg/goacc/parameter.f95
index 917f772..785d7f9 100644
--- gcc/testsuite/gfortran.dg/goacc/parameter.f95
+++ gcc/testsuite/gfortran.dg/goacc/parameter.f95
@@ -28,4 +28,4 @@  contains
     !$acc update device (a) ! { dg-error "not a variable" }
   end subroutine oacc1
 end module test
-! { dg-excess-errors "unimplemented" }
\ No newline at end of file
+! { dg-prune-output "unimplemented" }