Skip to content

Commit 6609de6

Browse files
committed
Fix diagnostics/add tests as requested by corentin
1 parent 0e11977 commit 6609de6

File tree

7 files changed

+59
-49
lines changed

7 files changed

+59
-49
lines changed

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12990,6 +12990,13 @@ def err_acc_duplicate_clause_disallowed
1299012990
: Error<"OpenACC '%1' clause cannot appear more than once on a '%0' "
1299112991
"directive">;
1299212992
def note_acc_previous_clause_here : Note<"previous clause is here">;
12993+
// TODO(OpenACC): Combine these with the one above, and decide between a
12994+
// 'select' to split between showing the clause name, or just always printing
12995+
// the name.
12996+
def note_acc_previous_named_clause_here : Note<"previous '%0' clause is here">;
12997+
def note_acc_device_type_here
12998+
: Note<"%enum_select<ACCDeviceTypeApp>{%Active{active}|%Applies{which "
12999+
"applies to}}0 'device_type' clause here">;
1299313000
def note_acc_previous_expr_here : Note<"previous expression is here">;
1299413001
def note_acc_previous_reference : Note<"previous reference is here">;
1299513002
def err_acc_branch_in_out_compute_construct
@@ -13077,7 +13084,7 @@ def err_acc_clause_since_last_device_type
1307713084
"'device_type' region}2 on a '%1' directive">;
1307813085
def err_acc_clause_conflicts_prev_dev_type
1307913086
: Error<"OpenACC '%0' clause applies to 'device_type' '%1', which "
13080-
"conflicts with previous clause">;
13087+
"conflicts with previous '%0' clause">;
1308113088

1308213089
def err_acc_reduction_num_gangs_conflict
1308313090
: Error<"OpenACC '%1' clause %select{|with more than 1 argument }0may not "

clang/lib/Sema/SemaOpenACCClause.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -417,13 +417,16 @@ class SemaOpenACCClauseVisitor {
417417
: "*");
418418
// mention the active device type.
419419
SemaRef.Diag(ActiveDeviceTypeClause.getBeginLoc(),
420-
diag::note_acc_previous_clause_here);
420+
diag::note_acc_device_type_here)
421+
<< diag::ACCDeviceTypeApp::Active;
421422
// mention the previous clause.
422423
SemaRef.Diag((*CurClauseKindItr)->getBeginLoc(),
423-
diag::note_acc_previous_clause_here);
424+
diag::note_acc_previous_named_clause_here)
425+
<< (*CurClauseKindItr)->getClauseKind();
424426
// mention the previous device type.
425427
SemaRef.Diag(CurDeviceTypeClause.getBeginLoc(),
426-
diag::note_acc_previous_clause_here);
428+
diag::note_acc_device_type_here)
429+
<< diag::ACCDeviceTypeApp::Applies;
427430
return true;
428431
}
429432
}

clang/test/SemaOpenACC/compute-construct-num_gangs-clause.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,16 @@ void Test() {
7373
}
7474

7575
void no_dupes_since_last_device_type() {
76-
// expected-error@+4{{OpenACC 'num_gangs' clause applies to 'device_type' 'radeon', which conflicts with previous clause}}
77-
// expected-note@+3{{previous clause is here}}
78-
// expected-note@+2{{previous clause is here}}
79-
// expected-note@+1{{previous clause is here}}
76+
// expected-error@+4{{OpenACC 'num_gangs' clause applies to 'device_type' 'radeon', which conflicts with previous 'num_gangs' clause}}
77+
// expected-note@+3{{active 'device_type' clause here}}
78+
// expected-note@+2{{previous 'num_gangs' clause is here}}
79+
// expected-note@+1{{which applies to 'device_type' clause here}}
8080
#pragma acc parallel device_type(nvidia, radeon) num_gangs(getS()) device_type(radeon) num_gangs(getS())
8181
;
82-
// expected-error@+4{{OpenACC 'num_gangs' clause applies to 'device_type' 'nvidia', which conflicts with previous clause}}
83-
// expected-note@+3{{previous clause is here}}
84-
// expected-note@+2{{previous clause is here}}
85-
// expected-note@+1{{previous clause is here}}
82+
// expected-error@+4{{OpenACC 'num_gangs' clause applies to 'device_type' 'nvidia', which conflicts with previous 'num_gangs' clause}}
83+
// expected-note@+3{{active 'device_type' clause here}}
84+
// expected-note@+2{{previous 'num_gangs' clause is here}}
85+
// expected-note@+1{{which applies to 'device_type' clause here}}
8686
#pragma acc parallel device_type(nvidia) num_gangs(getS()) device_type(nvidia, radeon) num_gangs(getS())
8787
;
8888
}

clang/test/SemaOpenACC/compute-construct-num_workers-clause.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,16 @@ void Test() {
6262
}
6363

6464
void no_dupes_since_last_device_type() {
65-
// expected-error@+4{{OpenACC 'num_workers' clause applies to 'device_type' 'radEon', which conflicts with previous clause}}
66-
// expected-note@+3{{previous clause is here}}
67-
// expected-note@+2{{previous clause is here}}
68-
// expected-note@+1{{previous clause is here}}
65+
// expected-error@+4{{OpenACC 'num_workers' clause applies to 'device_type' 'radEon', which conflicts with previous 'num_workers' clause}}
66+
// expected-note@+3{{active 'device_type' clause here}}
67+
// expected-note@+2{{previous 'num_workers' clause is here}}
68+
// expected-note@+1{{which applies to 'device_type' clause here}}
6969
#pragma acc parallel device_type(nvidia, radeon) num_workers(getS()) device_type(radEon) num_workers(getS())
7070
;
71-
// expected-error@+4{{OpenACC 'num_workers' clause applies to 'device_type' 'nvidia', which conflicts with previous clause}}
72-
// expected-note@+3{{previous clause is here}}
73-
// expected-note@+2{{previous clause is here}}
74-
// expected-note@+1{{previous clause is here}}
71+
// expected-error@+4{{OpenACC 'num_workers' clause applies to 'device_type' 'nvidia', which conflicts with previous 'num_workers' clause}}
72+
// expected-note@+3{{active 'device_type' clause here}}
73+
// expected-note@+2{{previous 'num_workers' clause is here}}
74+
// expected-note@+1{{which applies to 'device_type' clause here}}
7575
#pragma acc parallel device_type(nvidia) num_workers(getS()) device_type(nvidia, radeon) num_workers(getS())
7676
;
7777
}

clang/test/SemaOpenACC/compute-construct-vector_length-clause.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,16 @@ void Test() {
6262
}
6363

6464
void no_dupes_since_last_device_type() {
65-
// expected-error@+4{{OpenACC 'vector_length' clause applies to 'device_type' 'radeon', which conflicts with previous clause}}
66-
// expected-note@+3{{previous clause is here}}
67-
// expected-note@+2{{previous clause is here}}
68-
// expected-note@+1{{previous clause is here}}
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}}
6969
#pragma acc parallel device_type(nvidia, radeon) vector_length(getS()) device_type(radeon) vector_length(getS())
7070
;
71-
// expected-error@+4{{OpenACC 'vector_length' clause applies to 'device_type' 'nvidia', which conflicts with previous clause}}
72-
// expected-note@+3{{previous clause is here}}
73-
// expected-note@+2{{previous clause is here}}
74-
// expected-note@+1{{previous clause is here}}
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}}
7575
#pragma acc parallel device_type(nvidia) vector_length(getS()) device_type(nvidia, radeon) vector_length(getS())
7676
;
7777
}

clang/test/SemaOpenACC/loop-construct-collapse-clause.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -548,27 +548,27 @@ void no_dupes_since_last_device_type() {
548548
#pragma acc loop device_type(nvidia) collapse(1) device_type(*) collapse(2)
549549
for(unsigned i = 0; i < 5; ++i)
550550
for(unsigned j = 0; j < 5; ++j);
551-
552-
// expected-error@+4{{OpenACC 'collapse' clause applies to 'device_type' '*', which conflicts with previous clause}}
553-
// expected-note@+3{{previous clause is here}}
554-
// expected-note@+2{{previous clause is here}}
555-
// expected-note@+1{{previous clause is here}}
551+
552+
// expected-error@+4{{OpenACC 'collapse' clause applies to 'device_type' '*', which conflicts with previous 'collapse' clause}}
553+
// expected-note@+3{{active 'device_type' clause here}}
554+
// expected-note@+2{{previous 'collapse' clause is here}}
555+
// expected-note@+1{{which applies to 'device_type' clause here}}
556556
#pragma acc loop device_type(*) collapse(1) device_type(*) collapse(2)
557557
for(unsigned i = 0; i < 5; ++i)
558558
for(unsigned j = 0; j < 5; ++j);
559559

560-
// expected-error@+4{{OpenACC 'collapse' clause applies to 'device_type' 'nvidia', which conflicts with previous clause}}
561-
// expected-note@+3{{previous clause is here}}
562-
// expected-note@+2{{previous clause is here}}
563-
// expected-note@+1{{previous clause is here}}
560+
// expected-error@+4{{OpenACC 'collapse' clause applies to 'device_type' 'nvidia', which conflicts with previous 'collapse' clause}}
561+
// expected-note@+3{{active 'device_type' clause here}}
562+
// expected-note@+2{{previous 'collapse' clause is here}}
563+
// expected-note@+1{{which applies to 'device_type' clause here}}
564564
#pragma acc loop device_type(nviDia, radeon) collapse(1) device_type(nvidia) collapse(2)
565565
for(unsigned i = 0; i < 5; ++i)
566566
for(unsigned j = 0; j < 5; ++j);
567567

568-
// expected-error@+4{{OpenACC 'collapse' clause applies to 'device_type' 'radeon', which conflicts with previous clause}}
569-
// expected-note@+3{{previous clause is here}}
570-
// expected-note@+2{{previous clause is here}}
571-
// expected-note@+1{{previous clause is here}}
568+
// expected-error@+4{{OpenACC 'collapse' clause applies to 'device_type' 'radeon', which conflicts with previous 'collapse' clause}}
569+
// expected-note@+3{{active 'device_type' clause here}}
570+
// expected-note@+2{{previous 'collapse' clause is here}}
571+
// expected-note@+1{{which applies to 'device_type' clause here}}
572572
#pragma acc loop device_type(radeon) collapse(1) device_type(nvidia, radeon) collapse(2)
573573
for(unsigned i = 0; i < 5; ++i)
574574
for(unsigned j = 0; j < 5; ++j);

clang/test/SemaOpenACC/loop-construct-tile-clause.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -420,18 +420,18 @@ void no_dupes_since_last_device_type() {
420420
for(unsigned i = 0; i < 5; ++i)
421421
for(unsigned j = 0; j < 5; ++j);
422422

423-
// expected-error@+4{{OpenACC 'tile' clause applies to 'device_type' 'nvidiA', which conflicts with previous clause}}
424-
// expected-note@+3{{previous clause is here}}
425-
// expected-note@+2{{previous clause is here}}
426-
// expected-note@+1{{previous clause is here}}
423+
// expected-error@+4{{OpenACC 'tile' clause applies to 'device_type' 'nvidiA', which conflicts with previous 'tile' clause}}
424+
// expected-note@+3{{active 'device_type' clause here}}
425+
// expected-note@+2{{previous 'tile' clause is here}}
426+
// expected-note@+1{{which applies to 'device_type' clause here}}
427427
#pragma acc loop device_type(nvidia, radeon) tile(1) device_type(nvidiA) tile(2)
428428
for(unsigned i = 0; i < 5; ++i)
429429
for(unsigned j = 0; j < 5; ++j);
430430

431-
// expected-error@+4{{OpenACC 'tile' clause applies to 'device_type' 'radeon', which conflicts with previous clause}}
432-
// expected-note@+3{{previous clause is here}}
433-
// expected-note@+2{{previous clause is here}}
434-
// expected-note@+1{{previous clause is here}}
431+
// expected-error@+4{{OpenACC 'tile' clause applies to 'device_type' 'radeon', which conflicts with previous 'tile' clause}}
432+
// expected-note@+3{{active 'device_type' clause here}}
433+
// expected-note@+2{{previous 'tile' clause is here}}
434+
// expected-note@+1{{which applies to 'device_type' clause here}}
435435
#pragma acc loop device_type(radeon) tile(1) device_type(nvidia, radeon) tile(2)
436436
for(unsigned i = 0; i < 5; ++i)
437437
for(unsigned j = 0; j < 5; ++j);

0 commit comments

Comments
 (0)