|  | 
|  | 1 | +// RUN: %clang_cc1 %s -verify -fopenacc | 
|  | 2 | +// RUN: not %clang_cc1 %s -fopenacc -ast-dump | FileCheck %s | 
|  | 3 | + | 
|  | 4 | +void foo(int Var) { | 
|  | 5 | +  // expected-warning@+1{{unsupported OpenACC extension clause '__extension'}} | 
|  | 6 | +#pragma acc parallel copy(Var) __extension copyin(Var) | 
|  | 7 | +  ; | 
|  | 8 | +  // CHECK: OpenACCComputeConstruct | 
|  | 9 | +  // CHECK-NEXT: copy clause | 
|  | 10 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 11 | +  // CHECK-NEXT: copyin clause | 
|  | 12 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 13 | +  // CHECK-NEXT: NullStmt | 
|  | 14 | + | 
|  | 15 | +  // expected-warning@+1{{unsupported OpenACC extension clause '__extension'}} | 
|  | 16 | +#pragma acc parallel copy(Var) __extension(stuff) copyin(Var) | 
|  | 17 | +  ; | 
|  | 18 | +  // CHECK: OpenACCComputeConstruct | 
|  | 19 | +  // CHECK-NEXT: copy clause | 
|  | 20 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 21 | +  // CHECK-NEXT: copyin clause | 
|  | 22 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 23 | +  // CHECK-NEXT: NullStmt | 
|  | 24 | + | 
|  | 25 | +  // expected-warning@+1{{unsupported OpenACC extension clause '__extension'}} | 
|  | 26 | +#pragma acc parallel copy(Var) __extension(")") copyin(Var) | 
|  | 27 | +  ; | 
|  | 28 | +  // CHECK: OpenACCComputeConstruct | 
|  | 29 | +  // CHECK-NEXT: copy clause | 
|  | 30 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 31 | +  // CHECK-NEXT: copyin clause | 
|  | 32 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 33 | +  // CHECK-NEXT: NullStmt | 
|  | 34 | + | 
|  | 35 | +  // expected-warning@+1{{unsupported OpenACC extension clause '__extension'}} | 
|  | 36 | +#pragma acc parallel copy(Var) __extension(()) copyin(Var) | 
|  | 37 | +  ; | 
|  | 38 | +  // CHECK: OpenACCComputeConstruct | 
|  | 39 | +  // CHECK-NEXT: copy clause | 
|  | 40 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 41 | +  // CHECK-NEXT: copyin clause | 
|  | 42 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 43 | +  // CHECK-NEXT: NullStmt | 
|  | 44 | + | 
|  | 45 | +  // expected-warning@+2{{unsupported OpenACC extension clause '__extension'}} | 
|  | 46 | +  // expected-error@+1{{expected identifier}} | 
|  | 47 | +#pragma acc parallel copy(Var) __extension()) copyin(Var) | 
|  | 48 | +  ; | 
|  | 49 | +  // CHECK: OpenACCComputeConstruct | 
|  | 50 | +  // CHECK-NEXT: copy clause | 
|  | 51 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 52 | +  // Cannot recover from a bad paren, so we give up here. | 
|  | 53 | +  // CHECK-NEXT: NullStmt | 
|  | 54 | + | 
|  | 55 | +  // expected-warning@+3{{unsupported OpenACC extension clause '__extension'}} | 
|  | 56 | +  // expected-error@+2{{expected ')'}} | 
|  | 57 | +  // expected-note@+1{{to match this '('}} | 
|  | 58 | +#pragma acc parallel copy(Var) __extension(() copyin(Var) | 
|  | 59 | +  ; | 
|  | 60 | +  // CHECK: OpenACCComputeConstruct | 
|  | 61 | +  // CHECK-NEXT: copy clause | 
|  | 62 | +  // CHECK-NEXT: DeclRefExpr | 
|  | 63 | +  // Cannot recover from a bad paren, so we give up here. | 
|  | 64 | +  // CHECK-NEXT: NullStmt | 
|  | 65 | + | 
|  | 66 | +} | 
0 commit comments