This is a gui to demonstrate the Compiler Analysis Description Language (CAnDL). Please refer to Philip Ginsbach, Lewis Crawford and Michael O’Boyle. CAnDL: A Domain Specific Language for Compiler Analysis. 27th ACM International Conference on Compiler Construction for details.
- Everything required to build llvm and clang
- Python 2.7 with GTK+3 bindings
- ninja
- ghc
- pypy
Please set up the gui directory as follows:
git clone https://github.com/cc18ginsbach/CAnDL-Demo
cd CAnDL-Demo
git clone https://github.com/cc18ginsbach/llvm
cd llvm/tools
git clone https://github.com/cc18ginsbach/clang
cd ../..
mkdir build
cd build
cmake ../llvm -DCMAKE_BUILD_TYPE=RELEASE -GNinja -DLLVM_PARALLEL_LINK_JOBS=1
ninja
On the left side, enter valid C++ code. Load existing files into the editor using File->Open. Selecting Compiler->Compile will run this code through a modified version of clang that implements compiler analyses using the CAnDL programming language. The progress can be observed in the message box at the bottom.
As a result of running Compiler->Compile, LLVM IR will appear in the compiler IR code tab and the detected instances will appear in the detection results tab. By default, the program will look for polyhedral SCoPs.
To run different analysis routines than SCoPs, modify the Experiment specification in the constraint specifications tab.
If you have further questions, please contact me at philip.ginsbach@ed.ac.uk.