/llilc

This repo contains LLILC, an LLVM based compiler for .NET Core. It includes a set of cross-platform .NET code generation tools that enables compilation of MSIL byte code to LLVM supported platforms.

Primary LanguageC++MIT LicenseMIT

LLILC Is Now Archived

LLILC was an experimental project to build a .NET compatible JIT from LLVM. It is no longer under active development.

For questions or concerns please open an issue on https://github.com/dotnet/core.

Welcome to LLILC

Join the chat at https://gitter.im/dotnet/llilc

Build Status

Windows Linux
Debug Build status Build Status
Release Build status Build Status

Introduction

LLILC is an LLVM based MSIL Compiler - we pronounce it 'lilac' - with a goal of producing a set of cross-platform .NET code generation tools. Today LLILC is being developed against dotnet/CoreCLR for use as a JIT, as well as an cross platform platform object emitter and disassembler that is used by CoreRT as well as other dotnet utilites.

See the documentation for more information. It has a more complete discussion of our background and goals as well as "getting started" details and developer information.

ObjectWriter for CoreRT: CoreRT project uses ObjectWriter that lives in its own branch in this repo, if you want to build it then follow instructions from getting started, but use the following branches:

  1. latest LLVM version and apply this patch or take the known working version from Microsoft/llvm/CoreRT_ObjectWriter branch;
  2. llilc/ObjectWriter branch;

libcoredistools: CoreCLR has a ongoing dependency on libcoredistools which is built out of this repo and placed into build/lib/libcoredistools.dylib|so|dll. To build coredistools follow the default workflow for building llilc/llvm on the master branch.

Supported Platforms

Our initial supported platform is Windows, but Linux and Mac OS X support are under development.

Contributions

Please see our issues or the contributing document for how to pitch in.