History log of /external/compiler-rt/SDKs/darwin/usr/include/stdlib.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7 23-May-2013 Bill Wendling <isanbard@gmail.com> Performance improvement.

Using fwrite and fread was very *very* slow. The resulting code was multiple
times slower than GCC's implementation of gcov. Replace the fwrite/fread system
with an mmap() version.

If the `.gcda' file doesn't exist, we (re)allocate a buffer that we write
into. That gets written to the `.gcda' file in one chunk. If the `.gcda' file
already exists, we simply mmap() the file, modify the mapped data, and use
msync() to write the contents out to disk. It's much easier than implementing
our own buffering scheme, and we don't have to use fwrite's and fread's

For those who are numbers-oriented, here are some timings:

GCC Verison

`.gcda' files don't exist: 23s
`.gcda' files do exist: 14s

LLVM Version (before this change)

`.gcda' files don't exist: 28s
`.gcda' files do exist: 28s

LLVM Version (with this change)

`.gcda' files don't exist: 18s
`.gcda' files do exist: 4s

It's a win-win-win-win-lose-win-win scenario!


git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@182563 91177308-0d34-0410-b5e6-96231b3b80d8
84b46d300c7a4f1c3ea4e452791de7733ce0d143 20-Mar-2013 Bill Wendling <isanbard@gmail.com> Create a coverage initialization function.

This function replaces the call of `atexit' from being generated in the compile
units. Basically, it registers the "writeout" and "flush" functions (if
present). It will generate calls to the `atexit' function for cleanups and final
writeout functions, but only once. This is better than checking for `main',
because a library may not have a `main' function in it.

git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177578 91177308-0d34-0410-b5e6-96231b3b80d8
84baff0561fe6ca2371e3273f8ed149260e104c1 28-May-2012 Bill Wendling <isanbard@gmail.com> Add stub for 'atoi'.

git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@157573 91177308-0d34-0410-b5e6-96231b3b80d8
6758892590ff3a56d800cb862d3b37f63ff941fa 16-Nov-2011 Daniel Dunbar <daniel@zuster.org> build/SDKs: Sketch a minimal stub SDK for Darwin.
- Motivation is explained in the README, but basically it is convenient to be
able to build compiler-rt free standing. Since our external dependencies are
so small, we can achieve this relatively easily by just stubbing out the
declarations of the external dependencies.
- This is in no way, shape, or form intended to be complete, it is just the
minimal stubs necessary to support the stuff we use.

git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@144843 91177308-0d34-0410-b5e6-96231b3b80d8