brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 4d16176 Raw
78 lines · c
1// RUN: %clang_cc1 %s -fopenacc -verify2 3short getS();4 5void Test() {6#pragma acc parallel vector_length(1)7  while(1);8#pragma acc kernels vector_length(1)9  while(1);10 11  // expected-error@+2{{OpenACC 'vector_length' clause cannot appear more than once on a 'kernels' directive}}12  // expected-note@+1{{previous 'vector_length' clause is here}}13#pragma acc kernels vector_length(1) vector_length(2)14  while(1);15 16  // expected-error@+2{{OpenACC 'vector_length' clause cannot appear more than once on a 'parallel' directive}}17  // expected-note@+1{{previous 'vector_length' clause is here}}18#pragma acc parallel vector_length(1) vector_length(2)19  while(1);20 21  // expected-error@+3{{OpenACC 'vector_length' clause cannot appear more than once in a 'device_type' region on a 'kernels' directive}}22  // expected-note@+2{{previous 'vector_length' clause is here}}23  // expected-note@+1{{active 'device_type' clause here}}24#pragma acc kernels vector_length(1) device_type(*) vector_length(1) vector_length(2)25  while(1);26 27  // expected-error@+3{{OpenACC 'vector_length' clause cannot appear more than once in a 'device_type' region on a 'parallel' directive}}28  // expected-note@+2{{previous 'vector_length' clause is here}}29  // expected-note@+1{{active 'device_type' clause here}}30#pragma acc parallel device_type(*) vector_length(1) vector_length(2)31  while(1);32 33#pragma acc parallel vector_length(1) device_type(*) vector_length(2)34  while(1);35 36  // expected-error@+1{{OpenACC 'vector_length' clause is not valid on 'serial' directive}}37#pragma acc serial vector_length(1)38  while(1);39 40  struct NotConvertible{} NC;41  // expected-error@+1{{OpenACC clause 'vector_length' requires expression of integer type ('struct NotConvertible' invalid)}}42#pragma acc parallel vector_length(NC)43  while(1);44 45#pragma acc kernels vector_length(getS())46  while(1);47 48  struct Incomplete *SomeIncomplete;49 50  // expected-error@+1{{OpenACC clause 'vector_length' requires expression of integer type ('struct Incomplete' invalid)}}51#pragma acc kernels vector_length(*SomeIncomplete)52  while(1);53 54  enum E{A} SomeE;55 56#pragma acc kernels vector_length(SomeE)57  while(1);58 59  // expected-error@+1{{OpenACC 'vector_length' clause is not valid on 'loop' directive}}60#pragma acc loop vector_length(1)61  for(int i = 5; i < 10;++i);62}63 64void no_dupes_since_last_device_type() {65  // expected-error@+4{{OpenACC 'vector_length' clause applies to 'device_type' 'radeon', which conflicts with previous 'vector_length' clause}}66  // expected-note@+3{{active 'device_type' clause here}}67  // expected-note@+2{{previous 'vector_length' clause is here}}68  // expected-note@+1{{which applies to 'device_type' clause here}}69#pragma acc parallel device_type(nvidia, radeon) vector_length(getS()) device_type(radeon) vector_length(getS())70  ;71  // expected-error@+4{{OpenACC 'vector_length' clause applies to 'device_type' 'nvidia', which conflicts with previous 'vector_length' clause}}72  // expected-note@+3{{active 'device_type' clause here}}73  // expected-note@+2{{previous 'vector_length' clause is here}}74  // expected-note@+1{{which applies to 'device_type' clause here}}75#pragma acc parallel device_type(nvidia) vector_length(getS()) device_type(nvidia, radeon) vector_length(getS())76  ;77}78