kc-ml2 / llvm-flow

An open-source interactive visualization tool for comparing IR CFGs

Home Page:https://llvmflow.kc-ml2.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PyPi license

Visualize the LLVM CFG interactively !

LLVM-FLOW is an open-source project that provides interactive visualization of LLVM IR Control Flow Graphs (CFG). With LLVM-FLOW , users can easily compare the CFG before and after optimization.
The tool can be accessed either through the LLVM-FLOW website or by running it directly on your local environment via Docker.


βœ… Get started: LLVM-FLOW website

πŸ‘‰ visit https://llvmflow.kc-ml2.com/

example

βœ… Get started: Docker

To run this project with Docker, first, you'll need to install Docker on your machine. Once you've installed Docker, follow these steps:

  1. Clone the repository:
git clone https://github.com/kc-ml2/llvm-flow.git
  1. Build the Docker image:
docker build -t llvm-flow .
  1. Run the Docker container:
docker run -p 8000:8000 -p 3000:3000 llvm-flow

This will start the application on http://localhost:3000


βœ… Features

  1. Detect the same Basic Block between IR modules
  2. Switch the mode of CFG
  3. Switch modes only for certain nodes
  4. Move the node
  5. Find the target&source node of the edge
  6. Resize the div
  7. Change the direction of CFG
  8. Zoom in / Zoom out
  9. Download .ll files
  10. Query uploaded history from board page

βœ… Architecture

β”Œβ”€β”€ llvm-flow-backend
β”‚   β”œβ”€β”€ backend
|   	   β”” backend		# settings, urls
|   	   β”” llvmcfg		# main fetures
|
β”œβ”€β”€ llvm-flow-frontend
β”‚   β”œβ”€β”€ src
|   	   β”” components
|   	  	 β”” modules	# common components
|   	  	 β”” pages	# page components
|
└── Dockerfile


βœ… Contribution

  • Please make a new branch instead of the current basic branch (ex. main) and work on it.
  • If there is an additional commit after the review, please proceed with the Re-request review!

About

An open-source interactive visualization tool for comparing IR CFGs

https://llvmflow.kc-ml2.com/

License:MIT License


Languages

Language:JavaScript 38.8%Language:CSS 22.9%Language:TypeScript 21.4%Language:LLVM 6.9%Language:Python 5.2%Language:SCSS 4.2%Language:HTML 0.4%Language:Dockerfile 0.3%