History log of /external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
619850cb3161733e9284ff3bf9a68d1a3b76f0b4 17-Jul-2013 Craig Topper <craig.topper@gmail.com> Mark a method 'const' and another 'static'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186485 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
d6d6a97c3c41395dfed46572b69fb6a5d67a5a8b 17-Jul-2013 Craig Topper <craig.topper@gmail.com> Make a few more static string pointers constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186484 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
c1b49b56d4132efa2e06deb8f23508d0de4c8800 16-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a wrapper for open.

This centralizes the handling of O_BINARY and opens the way for hiding more
differences (like how open behaves with directories).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186447 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
6227d5c690504c7ada5780c00a635b282c46e275 04-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185606 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
cbafae6d33031a72ba8219c28cb0e852511f79a3 28-Jun-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change.
It should suffice to check the type of a debug info metadata, instead of
calling Verify. For cases where we know the type of a DI metadata, use
assert.

Also update testing cases to make them conform to the format of DI classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
8479989ebe30f8fb9e14fbd5622fe0fd51988ff6 27-Jun-2013 Eric Christopher <echristo@gmail.com> Revert "Debug Info: clean up usage of Verify." as it's breaking bots.

This reverts commit r185020

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
02e75021d80bb068d0178f1e4fdd0a4fb36b9811 26-Jun-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change.
It should suffice to check the type of a debug info metadata, instead of
calling Verify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
c4e6b540f05932eea37ca10b6c1fded522777954 18-Jun-2013 Nick Lewycky <nicholas@mxc.ca> Fix nondeterminism in .gcno file generation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184174 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
a11c3e25015a62c817e60ec4f955a7f3f3bb6c67 12-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Move PathV2.h to Path.h

Most clients have already been moved from Path V1 to V2. The ones using V1
now include PathV1.h explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
f2a2806baf3763d551a9f361124b608b2eed66fa 28-Mar-2013 Bill Wendling <isanbard@gmail.com> Minor simplification.

Go ahead and use the full path for both the .gcno and .gcda files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178302 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
39c41c3c93e0d223792acb093adce21a714b01c6 26-Mar-2013 Bill Wendling <isanbard@gmail.com> Use the full path when outputting the `.gcda' file.

If we compile a single source program, the `.gcda' file will be generated where
the program was executed. This isn't desirable, because that place may be at an
unpredictable place (the program could call `chdir' for instance).

Instead, we will output the `.gcda' file in the same place we output the `.gcno'
file. I.e., the directory where the executable was generated. This matches GCC's
behavior.

<rdar://problem/13061072> & PR11809


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178084 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
8640c6a5227b75666e02424e2181289692138348 20-Mar-2013 Bill Wendling <isanbard@gmail.com> Call the new llvm_gcov_init function to register the environment.

Use the new `llvm_gcov_init' function to register the writeout and flush
functions. The initialization function will also call `atexit' for some cleanups
and final writout calls. But it does this only once. This is better than
checking for the `main' function, because in a library that function may not
exist.
<rdar://problem/12439551>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
18764716861243c58a711a92190624dc2f6aafc9 19-Mar-2013 Bill Wendling <isanbard@gmail.com> Register the GCOV writeout functions so that they're emitted serially.

We don't want to write out >1000 files at the same time. That could make things
prohibitively expensive. Instead, register the "writeout" function so that it's
emitted serially.
<rdar://problem/12439551>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177437 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
5d22d02fac5ef25414c0fdd843b0fabba4998d6e 19-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Emit the linkage name instead of the function name, when available. This means
that we'll prefer to emit the mangled C++ name (pending a clang change).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177371 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
d195eb6b83c2f3c70c9d1a59e26e8d6d2a3d38d3 19-Mar-2013 Bill Wendling <isanbard@gmail.com> Register the flush function for each compile unit.

For each compile unit, we want to register a function that will flush that
compile unit. Otherwise, __gcov_flush() would only flush the counters within the
current compile unit, and not any outside of it.

PR15191 & <rdar://problem/13167507>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177340 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
347e88bb229e6be16ce97badd6016889e84a46f6 14-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Remove accidentally committed debug line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177005 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
a204ef3168c8804808c716115ba915c89d8849b9 14-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Refactor GCOV's six constructor arguments into a struct with a getter that
constructs default arguments. It can now take default arguments from
cl::opt'ions. Add a new -default-gcov-version=... option, and actually test it!

Sink the reverse-order of the version into GCOVProfiling, hiding it from our
users.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
64a0a33307723957bf2f15e3181a290853c6f833 13-Mar-2013 Nick Lewycky <nicholas@mxc.ca> No functionality change. Rename emitGCNO() to the more sensible
emitProfileNotes(), similar to emitProfileArcs(). Also update its comment.

Also add a comment on Version[4] (there will be another comment in clang later),
and compress lines that exceeded 80 columns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
60d16a27da8607ae94b93a90e37bcd5f8290160d 09-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Use the correct index variable. This is the meat of what was supposed to be in
r176751. Also, learn a lesson about applying patches by hand/eyeball.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176764 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
8fa6dc431deb7a9aadc23ec0a7bdcb2d02330972 09-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Fix bug introduced in r176616 when making function identifier numbers stable.
Count the subprograms, not the compile units.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
17d2f776011cba33f7f5afb03c8066d35dbf8afc 09-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Don't emit the extra checksum into the .gcda file if the user hasn't asked for
it. Fortunately, versions of gcov that predate the extra checksum also ignore
any extra data, so this isn't a problem. There will be a matching commit in
compiler-rt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
d9686a98b8145010516c44a3a5b9b96bf934b9ac 07-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Switch from a version 4.2/4.4 switch to a four-byte version string to be put
into the actual gcov file.

Instead of using the bottom 4 bytes as the function identifier, use a counter.
This makes the identifier numbers stable across multiple runs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
52b4edf6a1b5d3a9f8a94a63c702d55ed446ecdb 27-Feb-2013 Nick Lewycky <nicholas@mxc.ca> In GCC 4.7, function names are now forbidden from .gcda files. Support this by
passing a null pointer to the function name in to GCDAProfiling, and add another
switch onto GCOVProfiling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176173 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
58591b1647e0f1f213e5acd7bfa87c226ced0033 27-Feb-2013 Nick Lewycky <nicholas@mxc.ca> Doh, fix behaviour change introduced in r176168 which is tested in clang,
not llvm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
bd2d1245e7db11b58b52c5b36fe76925683aaea5 27-Feb-2013 Nick Lewycky <nicholas@mxc.ca> IRBuilder has grown all sorts of useful utility functions. Make use of them to
clean up this code a tiny bit. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
034b94b17006f51722886b0f2283fb6fb19aca1f 19-Dec-2012 Bill Wendling <isanbard@gmail.com> Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
f209dea96a34f8c3c06e19710e9ff008d4f18c6c 18-Dec-2012 Rafael Espindola <rafael.espindola@gmail.com> Initialize NoRedZone and remove unused default values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170404 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
08e13e4488cde76fc51f942e773874627a88eeae 10-Dec-2012 Bill Wendling <isanbard@gmail.com> Don't use a red zone for code coverage if the user specified `-mno-red-zone'.

The `-mno-red-zone' flag wasn't being propagated to the functions that code
coverage generates. This allowed some of them to use the red zone when that
wasn't allowed.
<rdar://problem/12843084>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169754 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
9e6ee16b1814268897965b81e82a74ef39173ee1 17-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> Plug a memory leak in the GCOV profiling emitter, which never released the edge table memory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168259 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
b8bce928f4ffdf50eff69334f3e25b27848536b6 24-Oct-2012 Micah Villmow <villmow@gmail.com> Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166596 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
2f87640b86315beab8a5671cc23f524e59c58bd3 24-Oct-2012 Micah Villmow <villmow@gmail.com> Delete a directory that wasn't supposed to be checked in yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166591 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
f5e6d70f8c8f21e744a10fd463cdeddae31cbab5 10-Oct-2012 Bill Wendling <isanbard@gmail.com> Have 'addFnAttr' take the attribute enum value. Then have it build the attribute object and add it appropriately. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165595 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
2e879bcd52583335c753c005d203bf2ffe8b67b5 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Use the enum value of the attributes when adding them to the attributes builder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165494 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
8831c0605bbc0c82ce56c2fb85bd681d1c013925 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Convert to using the Attributes::Builder interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165465 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
78fff8ec487a7c16633c5795e38e297ce6ddafa4 17-Sep-2012 Bill Wendling <isanbard@gmail.com> s/__llvm_gcov_flush/__gcov_flush/g

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164040 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
ec3fc2eac0e9203dd1094b9ce458e8c1b42b832f 15-Sep-2012 Bill Wendling <isanbard@gmail.com> Remove comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163945 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
032dbee2a9d401ee05beb648465f21168e279bda 13-Sep-2012 Bill Wendling <isanbard@gmail.com> Use Nick's suggestion of storing a large NULL into the GV instead of memset, which requires TargetData.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
253353c9cf1ff16d9c30a89c2fb96160ac5a9d65 13-Sep-2012 Bill Wendling <isanbard@gmail.com> Introduce the __llvm_gcov_flush function.

This function writes out the current values of the counters and then resets
them. This can be used similarly to the __gcov_flush function to sync the
counters when need be. For instance, in a situation where the application
doesn't exit.
<rdar://problem/12185886>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
73996f44070df026e4d969b1b68461a70ebb3993 30-Aug-2012 Bill Wendling <isanbard@gmail.com> Pass by pointer and not std::string.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
6e5190c193f6267893daf6943af88e95039e739c 30-Aug-2012 Bill Wendling <isanbard@gmail.com> Revert r162855 in favor of changing clang to emit the absolute coverage file path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
0e76db9ad43383ca9aeff7001a98d6d6d8d5e736 29-Aug-2012 Bill Wendling <isanbard@gmail.com> Use the full path to output the .gcda file.

This lets the user run the program from a different directory and still have the
.gcda files show up in the correct place.
<rdar://problem/12179524>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
21b742ffce7bec3d71e09c7c6d901a756d55feb3 29-Aug-2012 Bill Wendling <isanbard@gmail.com> Use ArrayRef instead of SmallVector when passing vector into function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162851 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
c1b6ea7b6ce3a738accbacddf52480bf94354d2f 30-Jun-2012 Bill Wendling <isanbard@gmail.com> Don't reinsert the 'atexit' function if it already exists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
06cb8ed00696eb14d1b831921452e50ec0568ea2 29-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h

This was always part of the VMCore library out of necessity -- it deals
entirely in the IR. The .cpp file in fact was already part of the VMCore
library. This is just a mechanical move.

I've tried to go through and re-apply the coding standard's preferred
header sort, but at 40-ish files, I may have gotten some wrong. Please
let me know if so.

I'll be committing the corresponding updates to Clang and Polly, and
Duncan has DragonEgg.

Thanks to Bill and Eric for giving the green light for this bit of cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
0bcbd1df7a204e1e512f1a27066d725309de1b13 28-Jun-2012 Bill Wendling <isanbard@gmail.com> Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.

The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
ce718ff9f42c7da092eaa01dd0242e8d5ba84713 23-Jun-2012 Hans Wennborg <hans@hanshq.net> Extend the IL for selecting TLS models (PR9788)

This allows the user/front-end to specify a model that is better
than what LLVM would choose by default. For example, a variable
might be declared as

@x = thread_local(initialexec) global i32 42

if it will not be used in a shared library that is dlopen'ed.

If the specified model isn't supported by the target, or if LLVM can
make a better choice, a different model may be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159077 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
4a8fefaf8303f30514bc2a40d840a1709dae65cf 02-Jun-2012 Bill Wendling <isanbard@gmail.com> Register the gcov "writeout" at init time. Don't list this as a d'tor. Instead,
inject some code in that will run via the "__mod_init_func" method that
registers the gcov "writeout" function to execute at exit time.

The problem is that the "__mod_term_func" method of specifying d'tors is
deprecated on Darwin. And it can lead to some ambiguities when dealing with
multiple libraries.
<rdar://problem/11110106>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
77b19134104c3e96424dc010f2b69c3faf580e68 28-May-2012 Bill Wendling <isanbard@gmail.com> Implement the indirect counter increment code in a better way. Instead of
replicating the code for every place it's needed, we instead generate a function
that does that for us. This function is local to the executable, so there
shouldn't be any writing violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157564 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
c7a884040e4ec7795515978a94803894ad08c4ca 26-May-2012 Bill Wendling <isanbard@gmail.com> The llvm_gcda_increment_indirect_counter function writes to the arguments that
are passed in. However, those arguments may be in a write-protected area, as far
as the runtime library is concerned. For instance, the data could be placed into
a 'linkedit' section, which isn't writable. Emit the code from
llvm_gcda_increment_indirect_counter directly into the function instead.

Note: The code for this is ugly, and can lead to bloat. We should look into
simplifying this code instead of having all of these branches.

<rdar://problem/11181370>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157505 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
7c0674100443b4115d2fd6472e59cd8dcb9cc6d4 06-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Expose a switch for the new gcov format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145880 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
bba40db07234cef7867b45c67f50632e684cbb15 28-Nov-2011 Nick Lewycky <nicholas@mxc.ca> Place the "cfg checksum" around a test. This was recently added in April 2011 to
gcc, though I thought it was older (my gcc 4.4 has it as a local patch. Whoops!)
This fixes PR10589.

Also add some debugging statements.

Remove GcnoFiles, the mapping from CompilationUnit to raw_ostream. Now that we
start by iterating over each CU and descending into them, there's no need to
maintain a mapping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145208 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
680018ff8965610b3f1c976b0be1dfd45116b218 20-Sep-2011 Devang Patel <dpatel@apple.com> If simple ownership works then friendship is not required.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140169 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
16c19a155c65fd41865562fe4e678ef32728510b 20-Sep-2011 Devang Patel <dpatel@apple.com> Update GCOVLines to provide interfaces to write line table and calculate complete length.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
29d9610f2349676aa6a6e85449f4511812dafbcf 20-Sep-2011 Devang Patel <dpatel@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
68155d31cd0175be89e26ee68387cb411fca537b 20-Sep-2011 Devang Patel <dpatel@apple.com> Use StringRef instead of std::string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140154 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
865375ca7f68e60c0234916dd6bb365bb674bddb 20-Sep-2011 Devang Patel <dpatel@apple.com> Eliminate unnecessary copy of FileName from GCOVLines.
GCOVLines is always accessed through a StringMap where the key is FileName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140151 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
ec6f2559fe1e257d221c9b4ce6c32584f7cc99b2 20-Sep-2011 Devang Patel <dpatel@apple.com> There is no need to write a local utility routine to find subprogram info if the utility routine is already available in DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140145 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
58e2cdfabd7b7c9a780dc086add162262c671ac4 18-Aug-2011 Nick Lewycky <nicholas@mxc.ca> The edge from DISubprogram to DICompileUnit has been removed in recent versions
of debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137972 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
f6d3a4c7c4d14ad7a4e07e9f80f94f73651960d8 18-Aug-2011 Devang Patel <dpatel@apple.com> Do not use DebugInfoFinder. Extract debug info directly from llvm.dbg.cu named mdnode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137890 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
5b6f42f57e730c2d968c313a27fa505a3c3e5efa 16-Aug-2011 Bill Wendling <isanbard@gmail.com> Use the getFirstInsertionPt() method instead of getFirstNonPHI + an 'isa<>'
check for a LandingPadInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
05d0023a95a11cde1247920d61d26cc82216f566 16-Aug-2011 Bill Wendling <isanbard@gmail.com> A few places where we want to skip the landingpad instruction for insertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137712 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
726f1b90a9e9149227a9aa37a2219f167776f804 26-Jul-2011 Bill Wendling <isanbard@gmail.com> Use the correct for for the version. It's little endian and my brain is
obviously big endian. :-)
PR10502


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
0a2a60ace9b79164b71794ce7ff981171c61e442 22-Jul-2011 Jay Foad <jay.foad@gmail.com> Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to use
ArrayRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135761 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e 18-Jul-2011 Chris Lattner <sabre@nondot.org> land David Blaikie's patch to de-constify Type, with a few tweaks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
5fdd6c8793462549e3593890ec61573da06e3346 12-Jul-2011 Jay Foad <jay.foad@gmail.com> Second attempt at de-constifying LLVM Types in FunctionType::get(),
StructType::get() and TargetData::getIntPtrType().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
2280ebd61416b73d0b6137f275b25af82e268d1f 12-Jul-2011 Bill Wendling <isanbard@gmail.com> Revert r134893 and r134888 (and related patches in other trees). It was causing
an assert on Darwin llvm-gcc builds.

Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, li\
ne 2067.
etc.

http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354

--- Reverse-merging r134893 into '.':
U include/llvm/Target/TargetData.h
U include/llvm/DerivedTypes.h
U tools/bugpoint/ExtractFunction.cpp
U unittests/Support/TypeBuilderTest.cpp
U lib/Target/ARM/ARMGlobalMerge.cpp
U lib/Target/TargetData.cpp
U lib/VMCore/Constants.cpp
U lib/VMCore/Type.cpp
U lib/VMCore/Core.cpp
U lib/Transforms/Utils/CodeExtractor.cpp
U lib/Transforms/Instrumentation/ProfilingUtils.cpp
U lib/Transforms/IPO/DeadArgumentElimination.cpp
U lib/CodeGen/SjLjEHPrepare.cpp
--- Reverse-merging r134888 into '.':
G include/llvm/DerivedTypes.h
U include/llvm/Support/TypeBuilder.h
U include/llvm/Intrinsics.h
U unittests/Analysis/ScalarEvolutionTest.cpp
U unittests/ExecutionEngine/JIT/JITTest.cpp
U unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp
U unittests/VMCore/PassManagerTest.cpp
G unittests/Support/TypeBuilderTest.cpp
U lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp
U lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp
U lib/VMCore/IRBuilder.cpp
G lib/VMCore/Type.cpp
U lib/VMCore/Function.cpp
G lib/VMCore/Core.cpp
U lib/VMCore/Module.cpp
U lib/AsmParser/LLParser.cpp
U lib/Transforms/Utils/CloneFunction.cpp
G lib/Transforms/Utils/CodeExtractor.cpp
U lib/Transforms/Utils/InlineFunction.cpp
U lib/Transforms/Instrumentation/GCOVProfiling.cpp
U lib/Transforms/Scalar/ObjCARC.cpp
U lib/Transforms/Scalar/SimplifyLibCalls.cpp
U lib/Transforms/Scalar/MemCpyOptimizer.cpp
G lib/Transforms/IPO/DeadArgumentElimination.cpp
U lib/Transforms/IPO/ArgumentPromotion.cpp
U lib/Transforms/InstCombine/InstCombineCompares.cpp
U lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
U lib/Transforms/InstCombine/InstCombineCalls.cpp
U lib/CodeGen/DwarfEHPrepare.cpp
U lib/CodeGen/IntrinsicLowering.cpp
U lib/Bitcode/Reader/BitcodeReader.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134949 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
f362affa3a695164a94d275fb44d18f44ebb855a 11-Jul-2011 Jay Foad <jay.foad@gmail.com> De-constify Types in FunctionType::get().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
267010864e139781ef5949939e081c41f954de0a 22-Jun-2011 Jay Foad <jay.foad@gmail.com> Replace the existing forms of ConstantArray::get() with a single form
that takes an ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133615 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
f5c95b889f270f170ff4f6a24b082be5bb68296e 18-May-2011 Bill Wendling <isanbard@gmail.com> Conditionalize the format of the GCOV files by target type. Darwin uses the 4.2
format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
d363ff334d796c7f3df834d928a10d88ed758454 06-May-2011 Nick Lewycky <nicholas@mxc.ca> The computation of string length is not that complicated. Fix it, again. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
5409a188328d9de3755febc23558d4fc1797d04e 05-May-2011 Nick Lewycky <nicholas@mxc.ca> Update the gcov version used slightly, to make it stop causing modern gcov's to
crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130911 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
7a75a9ade80540e919027f15ac91c5406af8504b 05-May-2011 Nick Lewycky <nicholas@mxc.ca> Remove dead function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
fcf74ed5a2bc10570dec2084a2db1f6580b1210d 05-May-2011 Nick Lewycky <nicholas@mxc.ca> When the path wasn't emitted by the frontend, discard any path on the source
filename.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130897 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
269687fa350c1aa044bc063c64362a04ecabaa33 04-May-2011 Nick Lewycky <nicholas@mxc.ca> Emit gcov data files to the directory specified in the metadata produced by the
frontend, if applicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130835 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
7a2ba2fbe4b0ccaacc2cedbc1bfd2a3764170efe 28-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Only read *predecessor once so as to fix a theoretical issue where it changes
between two reads (threading).

Fix an off-by-one in the indirect counter table that I meant to revert after an
earlier experiment. Whoops!

Implement GCOV_PREFIX. Doesn't handle GCOV_PREFIX_STRIP yet.

Fix an off-by-one in string emission. Extra whoops!

Tolerate DISubprograms that have null Function*'s attached to them. I don't yet
understand what this means, but it happens when you have a global static with
a non-trivial constructor/destructor.

Fix a crash on switch statements with a single successor (default-only).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130443 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
1790c9cbb6714e81eab1412909a2320acaecc43b 26-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Rename everything to follow LLVM style ... I think.

Add support for switch and indirectbr edges. This works by densely numbering
all blocks which have such terminators, and then separately numbering the
possible successors. The predecessors write down a number, the successor knows
its own number (as a ConstantInt) and sends that and the pointer to the number
the predecessor wrote down to the runtime, who looks up the counter in a
per-function table.

Coverage data should now be functional, but I haven't tested it on anything
other than my 2-file synthetic test program for coverage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130186 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
a4c4c0e1298f4dd9791eff2bae857e7be6d0ab56 21-Apr-2011 Nick Lewycky <nicholas@mxc.ca> In gcov profiling, give all functions an extra unified return block. This is
necessary since gcov counts transitions between blocks. It can't see if you've
run every line in a straight-line function, so we add an edge for it to notice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
17df2c3240837b4382898ead8c3ead407a338520 21-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Fix think-o: emit all 8 bytes of the EOF marker. Also reflow a line in a
comment for 80 columns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
a61e52c9b7cf874b46cef687c1c4627a35952542 21-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Add independent controls for whether GCOV profiling should emit .gcno files or
instrument the program to emit .gcda.
TODO: we should emit slightly different .gcda files when .gcno emission is off.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
0c4de8a4eb5fd6437b571611794ef84427fc4755 16-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Move the re-stemming function up top and use it where it's currently inlined.
Break the arc-profile code out to a function like the notes emission code is,
and reorder the functions in the file.

The only functionality change is that we no longer modify the Module when the
Module has no debug info to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
b1928704201034c785a26296a49f69355eb56a05 16-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Rename LineProfiling to GCOVProfiling to more accurately represent what it
does. Also mostly implement it. Still a work-in-progress, but generates legal
output on crafted test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp