VAST is an experimental compiler pipeline designed for program analysis of C and C++. It provides a tower of IRs as MLIR dialects to choose the best fit representations for a program analysis or further program abstraction.
Care needs to be taken in the representation, I think. For example, because aliases go down to the symbol level, they are not required to respect the types/prototypes.
https://godbolt.org/z/nPs46EEre https://godbolt.org/z/nTK5E6bYd