@@ -22,116 +22,44 @@ void ThrustAPIRule::registerMatcher(ast_matchers::MatchFinder &MF) {
2222 // API register
2323 auto functionName = [&]() { return hasAnyName (" on" ); };
2424
25- // THRUST_200302___CUDA_ARCH_LIST___NS is newly imported inline
26- // namespace by thrust library in CUDA header file 12.4.
27- auto thrustFuncNameCuda124 = [&]() {
28- return hasAnyName (" THRUST_200302___CUDA_ARCH_LIST___NS" ,
29- " THRUST_200302___CUDA_ARCH_LIST___NS::detail" ,
30- " THRUST_200302___CUDA_ARCH_LIST___NS::system" );
31- };
32-
33- // THRUST_200400___CUDA_ARCH_LIST___NS is newly imported inline
34- // namespace by thrust library in CUDA header file 12.5.
35- auto thrustFuncNameCuda125 = [&]() {
36- return hasAnyName (" THRUST_200400___CUDA_ARCH_LIST___NS" ,
37- " THRUST_200400___CUDA_ARCH_LIST___NS::detail" ,
38- " THRUST_200400___CUDA_ARCH_LIST___NS::system" );
39- };
40-
41- // THRUST_200500___CUDA_ARCH_LIST___NS is newly imported inline
42- // namespace by thrust library in CUDA header file 12.6.
43- auto thrustFuncNameCuda126 = [&]() {
44- return hasAnyName (" THRUST_200500___CUDA_ARCH_LIST___NS" ,
45- " THRUST_200500___CUDA_ARCH_LIST___NS::detail" ,
46- " THRUST_200500___CUDA_ARCH_LIST___NS::system" );
47- };
48-
49- // THRUST_200700___CUDA_ARCH_LIST___NS is newly imported inline
50- // namespace by thrust library in CUDA header file 12.6.
51- auto thrustFuncNameCuda128 = [&]() {
52- return hasAnyName (" THRUST_200700___CUDA_ARCH_LIST___NS" ,
53- " THRUST_200700___CUDA_ARCH_LIST___NS::detail" ,
54- " THRUST_200700___CUDA_ARCH_LIST___NS::system" );
55- };
56-
57- auto thrustFuncNameCudaCommon = [&]() {
58- return hasAnyName (" thrust" , " thrust::detail" , " thrust::system" , " __4" );
59- };
60-
6125 int ThrustMajorVersion = ThrustVersion / 100000 ;
6226 int ThrustMinorVersion = ThrustVersion / 100 % 1000 ;
6327
64- if (ThrustMajorVersion == 2 && ThrustMinorVersion == 3 ) {
65- // For CUDA-12.4
66- MF .addMatcher (
67- callExpr (
68- anyOf (callee (functionDecl (anyOf (
69- hasDeclContext (namespaceDecl (thrustFuncNameCuda124 ())),
70- hasDeclContext (namespaceDecl (thrustFuncNameCudaCommon ())),
71- functionName ()))),
72- callee (unresolvedLookupExpr (
73- hasAnyDeclaration (namedDecl (hasDeclContext (namespaceDecl (
74- anyOf (thrustFuncNameCuda124 (),
75- thrustFuncNameCudaCommon ())))))))))
76- .bind (" thrustFuncCall" ),
77- this );
78-
79- } else if (ThrustMajorVersion == 2 && ThrustMinorVersion == 4 ) {
80- // For CUDA-12.5
81- MF .addMatcher (
82- callExpr (
83- anyOf (callee (functionDecl (anyOf (
84- hasDeclContext (namespaceDecl (thrustFuncNameCuda125 ())),
85- hasDeclContext (namespaceDecl (thrustFuncNameCudaCommon ())),
86- functionName ()))),
87- callee (unresolvedLookupExpr (
88- hasAnyDeclaration (namedDecl (hasDeclContext (namespaceDecl (
89- anyOf (thrustFuncNameCuda125 (),
90- thrustFuncNameCudaCommon ())))))))))
91- .bind (" thrustFuncCall" ),
92- this );
93- } else if (ThrustMajorVersion == 2 && ThrustMinorVersion == 5 ) {
94- // For CUDA-12.6
95- MF .addMatcher (
96- callExpr (
97- anyOf (callee (functionDecl (anyOf (
98- hasDeclContext (namespaceDecl (thrustFuncNameCuda126 ())),
99- hasDeclContext (namespaceDecl (thrustFuncNameCudaCommon ())),
100- functionName ()))),
101- callee (unresolvedLookupExpr (
102- hasAnyDeclaration (namedDecl (hasDeclContext (namespaceDecl (
103- anyOf (thrustFuncNameCuda126 (),
104- thrustFuncNameCudaCommon ())))))))))
105- .bind (" thrustFuncCall" ),
106- this );
107- } else if (ThrustMajorVersion == 2 && ThrustMinorVersion == 7 ) {
108- // For CUDA-12.8
109- MF .addMatcher (
110- callExpr (
111- anyOf (callee (functionDecl (anyOf (
112- hasDeclContext (namespaceDecl (thrustFuncNameCuda128 ())),
113- hasDeclContext (namespaceDecl (thrustFuncNameCudaCommon ())),
114- functionName ()))),
115- callee (unresolvedLookupExpr (
116- hasAnyDeclaration (namedDecl (hasDeclContext (namespaceDecl (
117- anyOf (thrustFuncNameCuda128 (),
118- thrustFuncNameCudaCommon ())))))))))
119- .bind (" thrustFuncCall" ),
120- this );
121- } else {
122- // For CUDA SDK versions before CUDA-12.4
123- MF .addMatcher (
124- callExpr (
125- anyOf (callee (functionDecl (anyOf (
126- hasDeclContext (namespaceDecl (thrustFuncNameCudaCommon ())),
127-
128- functionName ()))),
129- callee (unresolvedLookupExpr (
130- hasAnyDeclaration (namedDecl (hasDeclContext (
131- namespaceDecl (thrustFuncNameCudaCommon ()))))))))
132- .bind (" thrustFuncCall" ),
133- this );
134- }
28+ auto thrustFuncName = [&]() {
29+ #define COMMON " thrust" , " thrust::detail" , " thrust::system" , " __4"
30+ if (ThrustMajorVersion == 2 && ThrustMinorVersion == 3 )
31+ return hasAnyName (" THRUST_200302___CUDA_ARCH_LIST___NS" ,
32+ " THRUST_200302___CUDA_ARCH_LIST___NS::detail" ,
33+ " THRUST_200302___CUDA_ARCH_LIST___NS::system" , COMMON );
34+ if (ThrustMajorVersion == 2 && ThrustMinorVersion == 4 )
35+ return hasAnyName (" THRUST_200400___CUDA_ARCH_LIST___NS" ,
36+ " THRUST_200400___CUDA_ARCH_LIST___NS::detail" ,
37+ " THRUST_200400___CUDA_ARCH_LIST___NS::system" , COMMON );
38+ if (ThrustMajorVersion == 2 && ThrustMinorVersion == 5 )
39+ return hasAnyName (" THRUST_200500___CUDA_ARCH_LIST___NS" ,
40+ " THRUST_200500___CUDA_ARCH_LIST___NS::detail" ,
41+ " THRUST_200500___CUDA_ARCH_LIST___NS::system" , COMMON );
42+ if (ThrustMajorVersion == 2 && ThrustMinorVersion == 7 )
43+ return hasAnyName (" THRUST_200700___CUDA_ARCH_LIST___NS" ,
44+ " THRUST_200700___CUDA_ARCH_LIST___NS::detail" ,
45+ " THRUST_200700___CUDA_ARCH_LIST___NS::system" , COMMON );
46+ if (ThrustMajorVersion == 2 && ThrustMinorVersion == 8 )
47+ return hasAnyName (" THRUST_200802_SM___CUDA_ARCH_LIST___NS" ,
48+ " THRUST_200802_SM___CUDA_ARCH_LIST___NS::detail" ,
49+ " THRUST_200802_SM___CUDA_ARCH_LIST___NS::system" ,
50+ COMMON );
51+ return hasAnyName (COMMON );
52+ #undef COMMON
53+ };
54+
55+ MF .addMatcher (
56+ callExpr (anyOf (callee (functionDecl (
57+ anyOf (hasDeclContext (namespaceDecl (thrustFuncName ())),
58+ functionName ()))),
59+ callee (unresolvedLookupExpr (hasAnyDeclaration (namedDecl (
60+ hasDeclContext (namespaceDecl (thrustFuncName ()))))))))
61+ .bind (" thrustFuncCall" ),
62+ this );
13563
13664 // THRUST_STATIC_ASSERT macro register
13765 MF .addMatcher (staticAssertDecl (isExpandedFromMacro (" THRUST_STATIC_ASSERT" ))
0 commit comments