On 08/01/2014 12:48 AM, Jakub Jelinek wrote:
> On Wed, Jul 23, 2014 at 05:42:32PM -0700, Cesar Philippidis wrote:
>>>> Jakub, before your Fortran OpenMP 4 target changes, Ilmir had written the
>>>> test case gcc/testsuite/gfortran.dg/gomp/map-1.f90 (based on his
>>>> interpretation and implementation of OpenMP 4 target), which I have now
>>>> amended with XFAILs and changed error messages -- anything in there that
>>>> you'd like to see addressed for Fortran OpenMP 4 target?
>>>
>>>> + !$omp target map(j(5:4)) ! { dg-error "Lower bound of OpenMP array
>>>> section in greater than upper" "" { xfail *-*-* } }
>>>> + !$omp end target
>>>
>>> I think this isn't an error in Fortran, if low bound is above upper bound,
>>> then it is considered a zero size array section. Though supposedly for
>>> depend clause we might want to diagnose that.
>>>
>>>> + !$omp target map(aas) ! { dg-error "The upper bound in the last
>>>> dimension must appear" "" { xfail *-*-* } }
>>>> + !$omp end target
>>>
>>> Assumed-size in map without array section would be indeed nice thing to
>>> diagnose.
>>>
>>>> + !$omp target map(tt%i) ! { dg-error "Syntax error in OpenMP variable
>>>> list" }
>>>> + !$omp end target ! { dg-bogus "Unexpected !\\\$OMP END TARGET
>>>> statement" "" { xfail *-*-* } }
>>>
>>> Right now the parsing of !$omp directives in case of parsing error rejects
>>> the whole directive, perhaps it should be reconsidered unless it is a fatal
>>> error from which there is no easy way out.
>>>
>>>> + !$omp target map(tt%j(1)) ! { dg-bogus "Syntax error in OpenMP variable
>>>> list" "" { xfail *-*-* } }
>>>> + !$omp end target ! { dg-bogus "Unexpected !\\\$OMP END TARGET
>>>> statement" "" { xfail *-*-* } }
>>>> +
>>>> + !$omp target map(tt%j(1:)) ! { dg-bogus "Syntax error in OpenMP
>>>> variable list" "" { xfail *-*-* } }
>>>> + !$omp end target ! { dg-bogus "Unexpected !\\\$OMP END TARGET
>>>> statement" "" { xfail *-*-* } }
>>>
>>> These two are pending resolution on omp-lang, I had exchanged a few mails
>>> about it, I think we shouldn't support those for consistency with the C/C++
>>> support, where tt.j[1] or tt.j[1:] and similar is explicitly invalid.
>>
>> Jakub, should I drop the map-1.f90 test?
>
> Not the whole testcase, just the problematic parts (or, just remove the
> dg-error/xfail or replace dg-bogus xfail with dg-error), for the j(5:4)
> and tt%j(1)/tt%j(1:) cases?
Thank you for the feedback. I've committed those changes to gomp-4_0-branch.
Cesar
2014-08-01 Cesar Philippidis <[email protected]>
gcc/testsuite/
* gfortran.dg/gomp/map-1.f90 (test): Update error reporting.
diff --git a/gcc/testsuite/gfortran.dg/gomp/map-1.f90 b/gcc/testsuite/gfortran.dg/gomp/map-1.f90
index de96ed2..e4b8b86 100644
--- a/gcc/testsuite/gfortran.dg/gomp/map-1.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/map-1.f90
@@ -45,7 +45,7 @@ subroutine test(aas)
!$omp target map(j(0:)) ! { dg-warning "out of bounds" }
!$omp end target
- !$omp target map(j(5:4)) ! { dg-error "Lower bound of OpenMP array section in greater than upper" "" { xfail *-*-* } }
+ !$omp target map(j(5:4))
!$omp end target
!$omp target map(j(5:))
@@ -93,16 +93,17 @@ subroutine test(aas)
!$omp end target
!$omp target map(tt%i) ! { dg-error "Syntax error in OpenMP variable list" }
- !$omp end target ! { dg-bogus "Unexpected !\\\$OMP END TARGET statement" "" { xfail *-*-* } }
+ !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
!$omp target map(tt%j) ! { dg-error "Syntax error in OpenMP variable list" }
- !$omp end target ! { dg-bogus "Unexpected !\\\$OMP END TARGET statement" "" { xfail *-*-* } }
+ !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
- !$omp target map(tt%j(1)) ! { dg-bogus "Syntax error in OpenMP variable list" "" { xfail *-*-* } }
- !$omp end target ! { dg-bogus "Unexpected !\\\$OMP END TARGET statement" "" { xfail *-*-* } }
+ ! broken test
+ !$omp target map(tt%j(1)) ! { dg-error "Syntax error in OpenMP variable list" }
+ !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
- !$omp target map(tt%j(1:)) ! { dg-bogus "Syntax error in OpenMP variable list" "" { xfail *-*-* } }
- !$omp end target ! { dg-bogus "Unexpected !\\\$OMP END TARGET statement" "" { xfail *-*-* } }
+ !$omp target map(tt%j(1:)) ! { dg-error "Syntax error in OpenMP variable list" }
+ !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
!$omp target map(tp) ! { dg-error "THREADPRIVATE object 'tp' in MAP clause" }
!$omp end target