"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.