@@ -63,23 +63,47 @@ def is_fortran(lang: Language) -> bool:
63
63
return isinstance (lang , Fortran )
64
64
65
65
66
- def line_contains_openacc_pragma (line : str , lang : Language ) -> bool :
67
- """Check if line contains OpenACC pragma or not"""
66
+ def line_contains_openacc_directive (line : str , lang : Language ) -> bool :
67
+ """Check if line contains an OpenACC pragma or not"""
68
68
if is_cxx (lang ):
69
- return line_contains_openacc_pragma_cxx (line )
69
+ return line_contains_openacc_directive_cxx (line )
70
70
elif is_fortran (lang ):
71
- return line_contains_openacc_pragma_fortran (line )
71
+ return line_contains_openacc_directive_fortran (line )
72
72
return False
73
73
74
74
75
- def line_contains_openacc_pragma_cxx (line : str ) -> bool :
76
- """Check if a line of code contains a C++ OpenACC pragma or not"""
77
- return "#pragma acc" in line
75
+ def line_contains_openacc_directive_cxx (line : str ) -> bool :
76
+ """Check if a line of code contains a C++ OpenACC directive or not"""
77
+ return line_contains ( line , "#pragma acc" )
78
78
79
79
80
- def line_contains_openacc_pragma_fortran (line : str ) -> bool :
81
- """Check if a line of code contains a Fortran OpenACC pragma or not"""
82
- return "!$acc" in line
80
+ def line_contains_openacc_directive_fortran (line : str ) -> bool :
81
+ """Check if a line of code contains a Fortran OpenACC directive or not"""
82
+ return line_contains (line , "!$acc" )
83
+
84
+
85
+ def line_contains_openacc_parallel_directive (line : str , lang : Language ) -> bool :
86
+ """Check if line contains an OpenACC parallel directive or not"""
87
+ if is_cxx (lang ):
88
+ return line_contains_openacc_parallel_directive_cxx (line )
89
+ elif is_fortran (lang ):
90
+ return line_contains_openacc_parallel_directive_fortran (line )
91
+ return False
92
+
93
+
94
+ def line_contains_openacc_parallel_directive_cxx (line : str ) -> bool :
95
+ """Check if a line of code contains a C++ OpenACC parallel directive or not"""
96
+ return line_contains (line , "#pragma acc parallel" )
97
+
98
+
99
+ def line_contains_openacc_parallel_directive_fortran (line : str ) -> bool :
100
+ """Check if a line of code contains a Fortran OpenACC parallel directive or not"""
101
+ return line_contains (line , "!$acc parallel" )
102
+
103
+
104
+ def line_contains (line : str , target : str ) -> bool :
105
+ """Generic helper to check if a line contains the target"""
106
+ return target in line
83
107
84
108
85
109
def openacc_pragma_contains_clause (line : str , clauses : list ) -> bool :
@@ -518,7 +542,7 @@ def add_present_openacc(
518
542
"""Add the present clause to OpenACC directive"""
519
543
new_body = ""
520
544
for line in code .replace ("\\ \n " , "" ).split ("\n " ):
521
- if not line_contains_openacc_pragma (line , langs .language ):
545
+ if not line_contains_openacc_parallel_directive (line , langs .language ):
522
546
new_body += line
523
547
else :
524
548
# The line contains an OpenACC directive
0 commit comments