Skip to content
resurrected LLVM "C Backend", with improvements
Branch: master
Clone or download
vtjnash Merge pull request #38 from snsmac/bugfix_function_ptr
Use Topological Sorting for function typedefs.
Latest commit 55d901d Apr 2, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
lib
test Merge branch 'master' into bugfix_function_ptr Mar 30, 2019
tools
unittests Add unit tests for some simple types and pointer types Jan 11, 2019
.gitignore
CMakeLists.txt
Dockerfile
LICENSE
README.md Add test instructions to README Jan 11, 2019
docker-compose.yml

README.md

llvm-cbe

resurrected LLVM "C Backend", with improvements

INSTALLATION INSTRUCTIONS

This version of the LLVM-CBE library works with LLVM 6.0 and 7.0. You will have to compile this version of LLVM before you try to use LLVM-CBE. This guide will walk you through the compilation and installation of both tools and show usage statements to verify that the LLVM-CBE library is compiled correctly.

The library is known to compile on various Linux versions (Redhat, Mageia, Ubuntu, Debian), Mac OS X, and Windows (Mingw-w64).

Step 1: Installing LLVM

LLVM-CBE relies on specific LLVM internals, and so it is best to use it with a specific revision of the LLVM development tree. Currently, llvm-cbe works with the LLVM 6.0 and 7.0 release versions and autotools.

Note: to convert C to LLVM IR to run the tests, you will also need a C compiler such as clang.

The first step is to compile LLVM on your machine (this assumes an in-tree build, but out-of-tree will also work):

 cd $HOME
 git clone https://github.com/llvm-mirror/llvm
 cd llvm
 git checkout release_70
 mkdir build
 cd build
 cmake ..
 make

Step 2: Compiling LLVM-CBE

Next, download and compile llvm-cbe from the same folder:

cd $HOME/llvm/projects
git clone https://github.com/JuliaComputing/llvm-cbe
cd ../build
make llvm-cbe

To run tests, you will also need to build lli:

    make lli

To run tests, you will also need to build lli:

    make lli

Step 3: Usage Examples

If llvm-cbe compiles, you should be able to run it with the following commands.

$ cd $HOME/llvm/projects/llvm-cbe/test/selectionsort
$ ls
main.c
$ clang -S -emit-llvm main.c
$ ls
main.c main.ll
$ $(HOME)/llvm/build/bin/llvm-cbe main.ll

Compile Generated C-Code and Run

$ gcc -o main.cbe main.cbe.c
$ ls
main.c  main.cbe  main.cbe.c  main.ll
$ ./main.cbe

Running tests

Unit tests:

    $ cd $HOME/llvm/build
    $ make CBEUnitTests && projects/llvm-cbe/unittests/CWriterTest

Other tests:

First, compile llvm-cbe, and install pytest. Then:

    $ cd $HOME/llvm/projects/llvm-cbe
    $ pytest
You can’t perform that action at this time.