From: Richard Smith Date: Mon, 16 Sep 2013 21:17:44 +0000 (+0000) Subject: Add some missing ProhibitAttributes calls to some declaration-like #pragmas. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=175d417134124df3abba8d874e51f04d5b4b9ee6;p=clang Add some missing ProhibitAttributes calls to some declaration-like #pragmas. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190806 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Parse/ParseStmt.cpp b/lib/Parse/ParseStmt.cpp index b74ab25569..8084a8fa5e 100644 --- a/lib/Parse/ParseStmt.cpp +++ b/lib/Parse/ParseStmt.cpp @@ -303,9 +303,11 @@ Retry: return StmtEmpty(); case tok::annot_pragma_captured: + ProhibitAttributes(Attrs); return HandlePragmaCaptured(); case tok::annot_pragma_openmp: + ProhibitAttributes(Attrs); return ParseOpenMPDeclarativeOrExecutableDirective(); } diff --git a/test/OpenMP/parallel_messages.cpp b/test/OpenMP/parallel_messages.cpp index c046f873d1..d991ccfc38 100644 --- a/test/OpenMP/parallel_messages.cpp +++ b/test/OpenMP/parallel_messages.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -o - %s +// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++11 -o - %s void foo() { } @@ -44,6 +44,10 @@ int main(int argc, char **argv) { return 1; // expected-error {{cannot return from OpenMP region}} } + [[]] // expected-error {{an attribute list cannot appear here}} + #pragma omp parallel + for (int n = 0; n < 100; ++n) {} + return 0; } diff --git a/test/SemaCXX/captured-statements.cpp b/test/SemaCXX/captured-statements.cpp index dbb18a7b67..5fb686c3c9 100644 --- a/test/SemaCXX/captured-statements.cpp +++ b/test/SemaCXX/captured-statements.cpp @@ -164,3 +164,10 @@ void test_capture_variadic() { (void)captured_sum(1, 2, 3); // OK (void)captured_sum(1, 2, 3, 4, 5); // OK } + +void test_capture_with_attributes() { + [[]] // expected-error {{an attribute list cannot appear here}} + #pragma clang __debug captured + { + } +}