From patchwork Wed May 28 20:38:55 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 353588 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id D0AA614009F for ; Thu, 29 May 2014 06:39:21 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=FZvQD2r9vfuvy5HIvtUFOeATMZlHtv6zR04oW2LfJvKlMMvQkfvoK rGZyCYRMO3AarOdKT7ISj7Hz9nFCUJ4Cb0hJePFvDKmnO6Rp3uKu1kUHRICjgoO/ k0RwLQfCtTRT1LlOwM2ksNCIhBxga3Lsqsx5L2Ums+T7sCJA/7v8J4= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; s= default; bh=r8W60q0ijZBYmYLIip3k+BTJiBY=; b=bI5bOYfJ8WxeAtFnuExu +WA3jYXD7ixbATt7jeD+TtXJdc5wNsCTyfrOTbtBpNCKFJMKPwIm6xr+IUqasXII 2vbaZrnULorD5d807+PwJp3xqiyWZj6xYIei16jyOj8JLb3Nb2z1WnuYpFE8MEzB eteOoccoBnLxpNR2VJq2LIU= Received: (qmail 14444 invoked by alias); 28 May 2014 20:39:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14386 invoked by uid 89); 28 May 2014 20:39:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL, BAYES_00, FROM_12LTRDOM autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 28 May 2014 20:39:12 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1Wpkcs-0007P5-Aq from Thomas_Schwinge@mentor.com ; Wed, 28 May 2014 13:39:06 -0700 Received: from SVR-ORW-FEM-03.mgc.mentorg.com ([147.34.97.39]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 28 May 2014 13:39:06 -0700 Received: from tftp-cs (147.34.91.1) by svr-orw-fem-03.mgc.mentorg.com (147.34.97.39) with Microsoft SMTP Server id 14.2.247.3; Wed, 28 May 2014 13:39:05 -0700 Received: by tftp-cs (Postfix, from userid 49978) id 21230C2062; Wed, 28 May 2014 13:39:05 -0700 (PDT) From: Thomas Schwinge To: , Subject: OpenMP target update tests User-Agent: Notmuch/0.9-101-g81dad07 (http://notmuchmail.org) Emacs/24.3.1 (x86_64-pc-linux-gnu) Date: Wed, 28 May 2014 22:38:55 +0200 Message-ID: <87k3954p0g.fsf@schwinge.name> MIME-Version: 1.0 Hi! Does that look appropriate (for trunk)? gcc/c/c-parser.c | 2 +- gcc/c/c-typeck.c | 2 ++ gcc/cp/parser.c | 2 +- gcc/cp/semantics.c | 2 ++ gcc/testsuite/c-c++-common/gomp/target-update-1.c | 41 +++++++++++++++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) Grüße, Thomas diff --git gcc/c/c-parser.c gcc/c/c-parser.c index ae13b0a..d9c91f0 100644 --- gcc/c/c-parser.c +++ gcc/c/c-parser.c @@ -13530,7 +13530,7 @@ c_parser_omp_target_update (location_t loc, c_parser *parser, && find_omp_clause (clauses, OMP_CLAUSE_FROM) == NULL_TREE) { error_at (loc, - "%<#pragma omp target update must contain at least one " + "%<#pragma omp target update%> must contain at least one " "% or % clauses"); return false; } diff --git gcc/c/c-typeck.c gcc/c/c-typeck.c index b6db627..ab78f6d 100644 --- gcc/c/c-typeck.c +++ gcc/c/c-typeck.c @@ -12152,6 +12152,8 @@ c_finish_omp_clauses (tree clauses) remove = true; } } + /* Currently, we're not doing any further checking for array + sections. */ break; } if (t == error_mark_node) diff --git gcc/cp/parser.c gcc/cp/parser.c index e52edbb..6c88fe4 100644 --- gcc/cp/parser.c +++ gcc/cp/parser.c @@ -30288,7 +30288,7 @@ cp_parser_omp_target_update (cp_parser *parser, cp_token *pragma_tok, && find_omp_clause (clauses, OMP_CLAUSE_FROM) == NULL_TREE) { error_at (pragma_tok->location, - "%<#pragma omp target update must contain at least one " + "%<#pragma omp target update%> must contain at least one " "% or % clauses"); return false; } diff --git gcc/cp/semantics.c gcc/cp/semantics.c index 7f06f3f..5f29268 100644 --- gcc/cp/semantics.c +++ gcc/cp/semantics.c @@ -5648,6 +5648,8 @@ finish_omp_clauses (tree clauses) remove = true; } } + /* Currently, we're not doing any further checking for array + sections. */ break; } if (t == error_mark_node) diff --git gcc/testsuite/c-c++-common/gomp/target-update-1.c gcc/testsuite/c-c++-common/gomp/target-update-1.c new file mode 100644 index 0000000..8476314 --- /dev/null +++ gcc/testsuite/c-c++-common/gomp/target-update-1.c @@ -0,0 +1,41 @@ +void +f (int a[10], float b) +{ +#pragma omp target update from(a) +#pragma omp target update to(a) +#pragma omp target update from(b) +#pragma omp target update to(b) + +#pragma omp target update from(a, b) +#pragma omp target update from(a) to(b) +#pragma omp target update to(a, b) + +#pragma omp target update from(a, a, b) /* { dg-error "'a' appears more than once in motion clauses" } */ +#pragma omp target update to(a, a) to(b) /* { dg-error "'a' appears more than once in motion clauses" } */ +#pragma omp target update from(a) from(a, b) /* { dg-error "'a' appears more than once in motion clauses" } */ +#pragma omp target update from(a) to(a) from(b) /* { dg-error "'a' appears more than once in motion clauses" } */ +#pragma omp target update to(a) to(a) from(b) /* { dg-error "'a' appears more than once in motion clauses" } */ + +#pragma omp target update from(a, b, b) /* { dg-error "'b' appears more than once in motion clauses" } */ +#pragma omp target update to(a) to(b, b) /* { dg-error "'b' appears more than once in motion clauses" } */ +#pragma omp target update from(a, b) from(b) /* { dg-error "'b' appears more than once in motion clauses" } */ +#pragma omp target update from(a) to(b) from(b) /* { dg-error "'b' appears more than once in motion clauses" } */ +#pragma omp target update from(a) to(b) to(b) /* { dg-error "'b' appears more than once in motion clauses" } */ + +#pragma omp target update to(a) from(a[1:1]) /* { dg-error "'a' appears more than once in motion clauses" "not implemented" { xfail *-*-* } } */ +#pragma omp target update to(a[1:1]) from(a[1:1]) /* { dg-error "'a' appears more than once in motion clauses" "not implemented" { xfail *-*-* } } */ +#pragma omp target update to(a[1:1]) to(a[1:1]) /* { dg-error "'a' appears more than once in motion clauses" "not implemented" { xfail *-*-* } } */ +#pragma omp target update to(a[1:3]) from(a[2:1]) /* { dg-error "'a' appears more than once in motion clauses" "not implemented" { xfail *-*-* } } */ + +#pragma omp target update from(a) if(0) + +#pragma omp target update from(a) if(0) if(0) /* { dg-error "too many 'if' clauses" } */ + +#pragma omp target update from(a) device(0) + +#pragma omp target update from(a) device(0) device(0) /* { dg-error "too many 'device' clauses" } */ + +#pragma omp target update if(0) /* { dg-error "'#pragma omp target update' must contain at least one 'from' or 'to' clauses" } */ +#pragma omp target update device(0) /* { dg-error "'#pragma omp target update' must contain at least one 'from' or 'to' clauses" } */ +#pragma omp target update if(0) device(0) /* { dg-error "'#pragma omp target update' must contain at least one 'from' or 'to' clauses" } */ +}