@@ -127,6 +127,8 @@ namespace {
127127 void PrintOMPExecutableDirective (OMPExecutableDirective *S,
128128 bool ForceNoStmt = false );
129129 void PrintFPPragmas (CompoundStmt *S);
130+ void PrintOpenACCClauseList (OpenACCConstructStmt *S);
131+ void PrintOpenACCConstruct (OpenACCConstructStmt *S);
130132
131133 void PrintExpr (Expr *E) {
132134 if (E)
@@ -1155,87 +1157,52 @@ void StmtPrinter::VisitOMPTargetParallelGenericLoopDirective(
11551157// ===----------------------------------------------------------------------===//
11561158// OpenACC construct printing methods
11571159// ===----------------------------------------------------------------------===//
1158- void StmtPrinter::VisitOpenACCComputeConstruct (OpenACCComputeConstruct *S) {
1159- Indent () << " #pragma acc " << S->getDirectiveKind ();
1160-
1160+ void StmtPrinter::PrintOpenACCClauseList (OpenACCConstructStmt *S) {
11611161 if (!S->clauses ().empty ()) {
11621162 OS << ' ' ;
11631163 OpenACCClausePrinter Printer (OS, Policy);
11641164 Printer.VisitClauseList (S->clauses ());
11651165 }
1166+ }
1167+ void StmtPrinter::PrintOpenACCConstruct (OpenACCConstructStmt *S) {
1168+ Indent () << " #pragma acc " << S->getDirectiveKind ();
1169+ PrintOpenACCClauseList (S);
11661170 OS << ' \n ' ;
1167-
1171+ }
1172+ void StmtPrinter::VisitOpenACCComputeConstruct (OpenACCComputeConstruct *S) {
1173+ PrintOpenACCConstruct (S);
11681174 PrintStmt (S->getStructuredBlock ());
11691175}
11701176
11711177void StmtPrinter::VisitOpenACCLoopConstruct (OpenACCLoopConstruct *S) {
1172- Indent () << " #pragma acc loop" ;
1173-
1174- if (!S->clauses ().empty ()) {
1175- OS << ' ' ;
1176- OpenACCClausePrinter Printer (OS, Policy);
1177- Printer.VisitClauseList (S->clauses ());
1178- }
1179- OS << ' \n ' ;
1180-
1178+ PrintOpenACCConstruct (S);
11811179 PrintStmt (S->getLoop ());
11821180}
11831181
11841182void StmtPrinter::VisitOpenACCCombinedConstruct (OpenACCCombinedConstruct *S) {
1185- Indent () << " #pragma acc " << S->getDirectiveKind ();
1186- if (!S->clauses ().empty ()) {
1187- OS << ' ' ;
1188- OpenACCClausePrinter Printer (OS, Policy);
1189- Printer.VisitClauseList (S->clauses ());
1190- }
1191- OS << ' \n ' ;
1192-
1183+ PrintOpenACCConstruct (S);
11931184 PrintStmt (S->getLoop ());
11941185}
11951186
11961187void StmtPrinter::VisitOpenACCDataConstruct (OpenACCDataConstruct *S) {
1197- Indent () << " #pragma acc data" ;
1198-
1199- if (!S->clauses ().empty ()) {
1200- OS << ' ' ;
1201- OpenACCClausePrinter Printer (OS, Policy);
1202- Printer.VisitClauseList (S->clauses ());
1203- }
1204- OS << ' \n ' ;
1205-
1188+ PrintOpenACCConstruct (S);
1189+ PrintStmt (S->getStructuredBlock ());
1190+ }
1191+ void StmtPrinter::VisitOpenACCHostDataConstruct (OpenACCHostDataConstruct *S) {
1192+ PrintOpenACCConstruct (S);
12061193 PrintStmt (S->getStructuredBlock ());
12071194}
12081195void StmtPrinter::VisitOpenACCEnterDataConstruct (OpenACCEnterDataConstruct *S) {
1209- Indent () << " #pragma acc enter data" ;
1210-
1211- if (!S->clauses ().empty ()) {
1212- OS << ' ' ;
1213- OpenACCClausePrinter Printer (OS, Policy);
1214- Printer.VisitClauseList (S->clauses ());
1215- }
1216- OS << ' \n ' ;
1196+ PrintOpenACCConstruct (S);
12171197}
12181198void StmtPrinter::VisitOpenACCExitDataConstruct (OpenACCExitDataConstruct *S) {
1219- Indent () << " #pragma acc exit data" ;
1220-
1221- if (!S->clauses ().empty ()) {
1222- OS << ' ' ;
1223- OpenACCClausePrinter Printer (OS, Policy);
1224- Printer.VisitClauseList (S->clauses ());
1225- }
1226- OS << ' \n ' ;
1199+ PrintOpenACCConstruct (S);
12271200}
1228- void StmtPrinter::VisitOpenACCHostDataConstruct (OpenACCHostDataConstruct *S) {
1229- Indent () << " #pragma acc host_data" ;
1230-
1231- if (!S->clauses ().empty ()) {
1232- OS << ' ' ;
1233- OpenACCClausePrinter Printer (OS, Policy);
1234- Printer.VisitClauseList (S->clauses ());
1235- }
1236- OS << ' \n ' ;
1237-
1238- PrintStmt (S->getStructuredBlock ());
1201+ void StmtPrinter::VisitOpenACCInitConstruct (OpenACCInitConstruct *S) {
1202+ PrintOpenACCConstruct (S);
1203+ }
1204+ void StmtPrinter::VisitOpenACCShutdownConstruct (OpenACCShutdownConstruct *S) {
1205+ PrintOpenACCConstruct (S);
12391206}
12401207
12411208void StmtPrinter::VisitOpenACCWaitConstruct (OpenACCWaitConstruct *S) {
@@ -1258,11 +1225,7 @@ void StmtPrinter::VisitOpenACCWaitConstruct(OpenACCWaitConstruct *S) {
12581225 OS << " )" ;
12591226 }
12601227
1261- if (!S->clauses ().empty ()) {
1262- OS << ' ' ;
1263- OpenACCClausePrinter Printer (OS, Policy);
1264- Printer.VisitClauseList (S->clauses ());
1265- }
1228+ PrintOpenACCClauseList (S);
12661229 OS << ' \n ' ;
12671230}
12681231
0 commit comments