Request help about using clang-llvm to analyze source file

Hi, I would like to ask some knowledge about analysis in clang. I’ve searched the web for some information but didn’t get a complete answer, so I’d like to ask for the following.

  1. Is there any API in clang-llvm that can implement some data flow analysis such as range analysis?
  2. I used buildCFG in clang-tidy to get CFG, but I found that it is source level, not intermediate representation such as three address codes or other intermediate representation. Is there a way to convert the source level statements in each basic block to intermediate code?
    Thank you very much for your patience and help!