# "compiler-rt" Runtime Library

The compiler-rt project is a simple library that provides an implementation of the low-level target-specific hooks required by code generation and other runtime components. For example, when compiling for a 32-bit target, converting a double to a 64-bit unsigned integer is compiling into a runtime call to the "__fixunsdfdi" function. The compiler-rt library provides optimized implementations of this and other low-level routines.

All of the code in the compiler-rt project is available under the standard LLVM License, a "BSD-style" license.

## Goals

Different targets require different routines. The compiler-rt project aims to implement these routines in both target-independent C form as well as providing heavily optimized assembly versions of the routines in some cases. It should be very easy to bring compiler-rt to support a new target by adding the new routines needed by that target.

Where it make sense, the compiler-rt project aims to implement interfaces that are drop-in compatible with the libgcc interfaces.

## Features

The current feature set of compiler-rt is:

- Full support for the libgcc interfaces required by these targets:
  - Darwin i386
  - Darwin X86-64
  - Darwin PowerPC
  - Darwin PowerPC 64
- High performance hand tuned implementations of commonly used functions like __floatundidf in assembly that are dramatically faster than the libgcc implementations.
- A target-independent implementation of the Apple "Blocks" runtime interfaces.

## Get it and get involved!

To check out the code, use:

- svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
- cd compiler-rt
- make

Note that the library will probably only build out of the box on Darwin, but patches to improve portability are definitely welcome.

compiler-rt doesn't have its own mailing list, if you have questions please email the llvmdev mailing list. Commits to the compiler-rt SVN module are automatically sent to the llvm-commits mailing list.