[PATCH] D120952: [clang][AST matchers] adding submatchers under cudaKernelCallExpr to match kernel launch config
Alister Johnson via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 14 18:35:20 PDT 2022
ajohnson-uoregon added a comment.
I still need to write tests but: I do have a use case for these over here: https://github.com/ajohnson-uoregon/llvm-project/blob/feature-ajohnson/clang-tools-extra/clang-rewrite/ConstructMatchers.cpp#L472
tl;dr, we'd like to match the kernel launch arguments (i.e., the arguments to `__cudaPushCallConfiguration()`) and these matchers made writing the code to generate those AST matchers much easier.
Without at least the `hasKernelConfig()` matcher, it's actually currently impossible to match the kernel launch args. (I wasn't able to find a way after quite a while poking at the AST, at least.) As for the others, it's not clear how to match the kernel launch args without exposing the fact that there's a second CallExpr inside the CUDAKernelCallExpr to the user and writing a pretty messy matcher, along the lines of `cudaKernelCallExpr(hasKernelConfig(callExpr(hasArgument(0, expr()))))` for the grid dim. `cudaKernelCallExpr(cudaGridDim())` is a lot cleaner and easier to understand.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D120952/new/
https://reviews.llvm.org/D120952
More information about the cfe-commits
mailing list