From ee1d5a02561482e1f3215c486d85f37a089c2cc3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 1 Nov 2013 13:25:16 +0100 Subject: [PATCH] c-typeck.c (c_finish_omp_clauses): Go to check_dup_generic at the end, unless remove is true. * c-typeck.c (c_finish_omp_clauses) : Go to check_dup_generic at the end, unless remove is true. (c_finish_omp_clauses) : Add break; after remove = true;. (c_finish_omp_clauses) : Likewise. * semantics.c (finish_omp_clauses) : Go to check_dup_generic at the end, unless remove is true. (finish_omp_clauses) : Add break; after remove = true;. * gcc.dg/gomp/declare-simd-2.c (f12, f13, f14, f15, f16, f17): New tests. * g++.dg/gomp/declare-simd-2.C (f15, f16, f17, f18, f19, f20): New tests. From-SVN: r204294 --- gcc/c/ChangeLog | 8 ++++++++ gcc/c/c-typeck.c | 6 +++++- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/semantics.c | 14 +++++++++++--- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/g++.dg/gomp/declare-simd-2.C | 13 +++++++++++++ gcc/testsuite/gcc.dg/gomp/declare-simd-2.c | 13 +++++++++++++ 7 files changed, 64 insertions(+), 4 deletions(-) diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 8f8a245edcf5..f009ee9af1e2 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,11 @@ +2013-11-01 Jakub Jelinek + + * c-typeck.c (c_finish_omp_clauses) : Go to + check_dup_generic at the end, unless remove is true. + (c_finish_omp_clauses) : Add break; after + remove = true;. + (c_finish_omp_clauses) : Likewise. + 2013-10-31 Jakub Jelinek * c-typeck.c (c_finish_omp_clauses): Diagnose aligned clause diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 5a23c8432956..8f1d3a4837aa 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -11316,6 +11316,7 @@ c_finish_omp_clauses (tree clauses) "%qE has invalid type for %", t, r_name); remove = true; + break; } } else if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c) == error_mark_node) @@ -11323,6 +11324,7 @@ c_finish_omp_clauses (tree clauses) error_at (OMP_CLAUSE_LOCATION (c), "user defined reduction not found for %qD", t); remove = true; + break; } else if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c)) { @@ -11406,6 +11408,7 @@ c_finish_omp_clauses (tree clauses) error_at (OMP_CLAUSE_LOCATION (c), "%qE must be % for %", t); remove = true; + break; } goto check_dup_generic; @@ -11615,8 +11618,9 @@ c_finish_omp_clauses (tree clauses) error_at (OMP_CLAUSE_LOCATION (c), "%qE is not an argument in % clause", t); remove = true; + break; } - break; + goto check_dup_generic; case OMP_CLAUSE_NOWAIT: if (copyprivate_seen) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e7b1e2543185..66ef9e3576f0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2013-11-01 Jakub Jelinek + + * semantics.c (finish_omp_clauses) : Go to + check_dup_generic at the end, unless remove is true. + (finish_omp_clauses) : Add break; after + remove = true;. + 2013-10-31 Jakub Jelinek * semantics.c (finish_omp_clauses): Diagnose aligned clause diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 49097f7f1b33..6c560c660a9d 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5188,12 +5188,16 @@ finish_omp_clauses (tree clauses) if (t == NULL_TREE) t = integer_one_node; if (t == error_mark_node) - remove = true; + { + remove = true; + break; + } else if (!type_dependent_expression_p (t) && !INTEGRAL_TYPE_P (TREE_TYPE (t))) { error ("linear step expression must be integral"); remove = true; + break; } else { @@ -5210,7 +5214,10 @@ finish_omp_clauses (tree clauses) MINUS_EXPR, sizetype, t, OMP_CLAUSE_DECL (c)); if (t == error_mark_node) - remove = true; + { + remove = true; + break; + } } } OMP_CLAUSE_LINEAR_STEP (c) = t; @@ -5626,8 +5633,9 @@ finish_omp_clauses (tree clauses) else error ("%qE is not an argument in % clause", t); remove = true; + break; } - break; + goto check_dup_generic; case OMP_CLAUSE_NOWAIT: case OMP_CLAUSE_ORDERED: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 03ad579ad318..03eb1b3c909f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2013-11-01 Jakub Jelinek + + * gcc.dg/gomp/declare-simd-2.c (f12, f13, f14, f15, f16, f17): New + tests. + * g++.dg/gomp/declare-simd-2.C (f15, f16, f17, f18, f19, f20): New + tests. + 2013-11-01 Paul Thomas PR fortran/57893 diff --git a/gcc/testsuite/g++.dg/gomp/declare-simd-2.C b/gcc/testsuite/g++.dg/gomp/declare-simd-2.C index e450a0241c75..a6151015bae8 100644 --- a/gcc/testsuite/g++.dg/gomp/declare-simd-2.C +++ b/gcc/testsuite/g++.dg/gomp/declare-simd-2.C @@ -82,4 +82,17 @@ int fn14 (double &d); #pragma omp declare simd aligned (e) // { dg-error "neither a pointer nor an array" } int fn14 (D e); +#pragma omp declare simd linear(a:7) uniform(a) // { dg-error "appears more than once" } +int f15 (int a); +#pragma omp declare simd linear(a) linear(a) // { dg-error "appears more than once" } +int f16 (int a); +#pragma omp declare simd linear(a) linear(a:7) // { dg-error "appears more than once" } +int f17 (int a); +#pragma omp declare simd linear(a:6) linear(a:6)// { dg-error "appears more than once" } +int f18 (int a); +#pragma omp declare simd uniform(a) uniform(a) // { dg-error "appears more than once" } +int f19 (int a); +#pragma omp declare simd uniform(a) aligned (a: 32) +int f20 (int *a); + // { dg-error "has no member" "" { target *-*-* } 61 } diff --git a/gcc/testsuite/gcc.dg/gomp/declare-simd-2.c b/gcc/testsuite/gcc.dg/gomp/declare-simd-2.c index 6c7de8b73f9f..c0a42a2ef465 100644 --- a/gcc/testsuite/gcc.dg/gomp/declare-simd-2.c +++ b/gcc/testsuite/gcc.dg/gomp/declare-simd-2.c @@ -39,3 +39,16 @@ struct D { int d; }; #pragma omp declare simd aligned (e) /* { dg-error "neither a pointer nor an array" } */ int fn11 (struct D e); + +#pragma omp declare simd linear(a:7) uniform(a) /* { dg-error "appears more than once" } */ +int f12 (int a); +#pragma omp declare simd linear(a) linear(a) /* { dg-error "appears more than once" } */ +int f13 (int a); +#pragma omp declare simd linear(a) linear(a:7) /* { dg-error "appears more than once" } */ +int f14 (int a); +#pragma omp declare simd linear(a:6) linear(a:6)/* { dg-error "appears more than once" } */ +int f15 (int a); +#pragma omp declare simd uniform(a) uniform(a) /* { dg-error "appears more than once" } */ +int f16 (int a); +#pragma omp declare simd uniform(a) aligned (a: 32) +int f17 (int *a); -- 2.47.3