[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