Create IR (Intermediate Representation) from C source code.
Create Control Flow Graph (CFG).
Perform Reaching Definition Analysis. (GEN/KILL and IN/OUT)
Find Dominators from CFG.
Find Natural Loops in the program.
LLVM
Clang
Install LLVM and Clang on your system (LLVM-11 if possible).
Run commands.sh file
This will create a shared object and intermediate representation of hello.c file.
Last command in the file will run a function pass on the given code.
Follow report for more information