Skip to content

Commit

Permalink
[OpenACC] Add dependent test for break/continue compute construct diag
Browse files Browse the repository at this point in the history
I discovered while debugging something else that this could possibly
cause an assert if I'm not careful with followup patches, so add the
tests.
  • Loading branch information
erichkeane committed Feb 29, 2024
1 parent 6afda56 commit 2d61979
Showing 1 changed file with 97 additions and 0 deletions.
97 changes: 97 additions & 0 deletions clang/test/SemaOpenACC/no-branch-in-out.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,100 @@ void ReturnTest() {
}
}
}

template<typename T>
void BreakContinue() {

#pragma acc parallel
for(int i =0; i < 5; ++i) {
switch(i) {
case 0:
break; // leaves switch, not 'for'.
default:
i +=2;
break;
}
if (i == 2)
continue;

break; // expected-error{{invalid branch out of OpenACC Compute Construct}}
}

int j;
switch(j) {
case 0:
#pragma acc parallel
{
break; // expected-error{{invalid branch out of OpenACC Compute Construct}}
}
case 1:
#pragma acc parallel
{
}
break;
}

#pragma acc parallel
for(int i = 0; i < 5; ++i) {
if (i > 1)
break; // expected-error{{invalid branch out of OpenACC Compute Construct}}
}

#pragma acc parallel
switch(j) {
case 1:
break;
}

#pragma acc parallel
{
for(int i = 1; i < 100; i++) {
if (i > 4)
break;
}
}

for (int i =0; i < 5; ++i) {
#pragma acc parallel
{
continue; // expected-error{{invalid branch out of OpenACC Compute Construct}}
}
}

#pragma acc parallel
for (int i =0; i < 5; ++i) {
continue;
}

#pragma acc parallel
for (int i =0; i < 5; ++i) {
{
continue;
}
}

for (int i =0; i < 5; ++i) {
#pragma acc parallel
{
break; // expected-error{{invalid branch out of OpenACC Compute Construct}}
}
}

#pragma acc parallel
while (j) {
--j;
if (j > 4)
break; // expected-error{{invalid branch out of OpenACC Compute Construct}}
}

#pragma acc parallel
do {
--j;
if (j > 4)
break; // expected-error{{invalid branch out of OpenACC Compute Construct}}
} while (j );
}

void Instantiate() {
BreakContinue<int>();
}

0 comments on commit 2d61979

Please sign in to comment.