-
Notifications
You must be signed in to change notification settings - Fork 0
Make a mirror for llvm-tv
License
panglong/llvm-tv-mirror
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
LLVM-TV: LLVM Transformation Visualizer Written by: Misha Brukman, Tanya Brethour, and Brian Gaeke LLVM-TV is a tool that can be used to visualize the effects of transformations written in the LLVM framework. Compilation units in LLVM have a simple, hierarchical structure: a Module contains Functions, which contain BasicBlocks, which contain Instructions. At the lowest level of this hierarchy, Instructions may reference other BasicBlocks (with branches) or Functions (with calls), making the control-flow graphs and call graphs explicit. Our first task is to develop an interactive browser for these graphs and hierarchies. Our target audience is compiler developers working within the LLVM framework, who are trying to understand and debug transformations. Currently, the visualization tool will not reflect dynamic updates to the code; rather, it reflects the state of a compilation unit at a single instant in time, between transformations. Future work should extend this tool to reflect a dynamically updating view of the program as a transformation is modifying the code. How to compile: 1. You must have wxWidgets installed on your system, and wx-config has to be in your path. Make absolutely sure that wxWidgets' configure picks up the same C++ compiler that you're using for llvm. Otherwise, you may get weird link errors when trying to link the llvm-tv tool. 2. Check out LLVM: # We're checking out this version and not trunk since poolalloc doesn't build # with top of trunk LLVM. % svn -q co -r 78786 http://llvm.org/svn/llvm-project/llvm/trunk llvm 3. Configure and build LLVM: % cd path/to/llvm-obj % ~/llvm/configure [configure opts] % make 4. Check out PoolAlloc (we need it for the DataStructure library): % svn -q co http://llvm.org/svn/llvm-project/poolalloc/trunk poolalloc 5. Configure and build PoolAlloc: % cd path/to/poolalloc-obj % ~/poolalloc/configure --with-llvmsrc=[path] \ --with-llvmobj=[path] % make 2. Configure and compile llvm-tv: % cd path/to/llvm-tv-obj # If you're building in llvm/projects/llvm-tv, then you don't need # to specify the --with-llvm-* options. % ~/llvm-tv/configure --with-llvm-src=[path] --with-llvm-obj=[path] \ --with-poolalloc-src=[path] --with-poolalloc-obj=[path] % make Note: the llvm-tv.exe and opt-snap scripts will be placed into LLVM's binary directory, not the LLVM-TV binary directory. Example of usage: % llvm-tv.exe & The .exe is not a typo; this command starts up the visualizer in the background using its wrapper script. % opt-snap -debug -licm -snapshot -gcse -snapshot < bytecode-file.bc > /dev/null This runs the llvm optimizer driver with the snapshot pass loaded, using another wrapper script, and makes two snapshots, which should appear in your visualizer.
About
Make a mirror for llvm-tv
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published