|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
d4ee603c |
| 21-Apr-2021 |
Duncan P. N. Exon Smith <[email protected]> |
Coverage: Document how to collect a profile without a filesystem
The profiling runtime was designed to work without static initializers or a a filesystem (see 117cf2bd1ff585f9754b5f30f5a4cfd65b230bb
Coverage: Document how to collect a profile without a filesystem
The profiling runtime was designed to work without static initializers or a a filesystem (see 117cf2bd1ff585f9754b5f30f5a4cfd65b230bbf and others). The no-static-initializers part was already documented but this part got missed before.
Differential Revision: https://reviews.llvm.org/D101000
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2 |
|
| #
0c4935bb |
| 12-Feb-2021 |
Vedant Kumar <[email protected]> |
[docs/Coverage] Document -show-region-summary
As a drive-by, fix the section in the clang docs about the number of statistics visible in a report.
|
| #
13bd6fb4 |
| 12-Feb-2021 |
Vedant Kumar <[email protected]> |
[docs/Coverage] Answer FAQ about optimization
|
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init |
|
| #
1e634f39 |
| 26-Jan-2021 |
Petr Hosek <[email protected]> |
Revert "Support for instrumenting only selected files or functions"
This reverts commit 4edf35f11a9e20bd5df3cb47283715f0ff38b751 because the test fails on Windows bots.
|
|
Revision tags: llvmorg-11.1.0-rc2 |
|
| #
4edf35f1 |
| 15-Jan-2021 |
Petr Hosek <[email protected]> |
Support for instrumenting only selected files or functions
This change implements support for applying profile instrumentation only to selected files or functions. The implementation uses the saniti
Support for instrumenting only selected files or functions
This change implements support for applying profile instrumentation only to selected files or functions. The implementation uses the sanitizer special case list format to select which files and functions to instrument, and relies on the new noprofile IR attribute to exclude functions from instrumentation.
Differential Revision: https://reviews.llvm.org/D94820
show more ...
|
|
Revision tags: llvmorg-11.1.0-rc1 |
|
| #
9f2967bc |
| 28-Dec-2020 |
Alan Phipps <[email protected]> |
[Coverage] Add support for Branch Coverage in LLVM Source-Based Code Coverage
This is an enhancement to LLVM Source-Based Code Coverage in clang to track how many times individual branch-generating
[Coverage] Add support for Branch Coverage in LLVM Source-Based Code Coverage
This is an enhancement to LLVM Source-Based Code Coverage in clang to track how many times individual branch-generating conditions are taken (evaluate to TRUE) and not taken (evaluate to FALSE). Individual conditions may comprise larger boolean expressions using boolean logical operators. This functionality is very similar to what is supported by GCOV except that it is very closely anchored to the ASTs.
Differential Revision: https://reviews.llvm.org/D84467
show more ...
|
|
Revision tags: llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
62c37277 |
| 08-Sep-2020 |
Vedant Kumar <[email protected]> |
[profile] Add %t LLVM_PROFILE_FILE option to substitute $TMPDIR
Add support for expanding the %t filename specifier in LLVM_PROFILE_FILE to the TMPDIR environment variable. This is supported on all
[profile] Add %t LLVM_PROFILE_FILE option to substitute $TMPDIR
Add support for expanding the %t filename specifier in LLVM_PROFILE_FILE to the TMPDIR environment variable. This is supported on all platforms.
On Darwin, TMPDIR is used to specify a temporary application-specific scratch directory. When testing apps on remote devices, it can be challenging for the host device to determine the correct TMPDIR, so it's helpful to have the runtime do this work.
rdar://68524185
Differential Revision: https://reviews.llvm.org/D87332
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2 |
|
| #
b50431de |
| 10-Feb-2020 |
Nico Weber <[email protected]> |
fix some typos to cycle bots
|
|
Revision tags: llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
d3db13af |
| 04-Oct-2019 |
Petr Hosek <[email protected]> |
[profile] Support counter relocation at runtime
This is an alternative to the continous mode that was implemented in D68351. This mode relies on padding and the ability to mmap a file over the exist
[profile] Support counter relocation at runtime
This is an alternative to the continous mode that was implemented in D68351. This mode relies on padding and the ability to mmap a file over the existing mapping which is generally only available on POSIX systems and isn't suitable for other platforms.
This change instead introduces the ability to relocate counters at runtime using a level of indirection. On every counter access, we add a bias to the counter address. This bias is stored in a symbol that's provided by the profile runtime and is initially set to zero, meaning no relocation. The runtime can mmap the profile into memory at abitrary location, and set bias to the offset between the original and the new counter location, at which point every subsequent counter access will be to the new location, which allows updating profile directly akin to the continous mode.
The advantage of this implementation is that doesn't require any special OS support. The disadvantage is the extra overhead due to additional instructions required for each counter access (overhead both in terms of binary size and performance) plus duplication of counters (i.e. one copy in the binary itself and another copy that's mmapped).
Differential Revision: https://reviews.llvm.org/D69740
show more ...
|
| #
859bf4d2 |
| 21-Nov-2019 |
Vedant Kumar <[email protected]> |
[Coverage] Emit a gap region to cover switch bodies
Emit a gap region beginning where the switch body begins. This sets line execution counts in the areas between non-overlapping cases to 0.
This a
[Coverage] Emit a gap region to cover switch bodies
Emit a gap region beginning where the switch body begins. This sets line execution counts in the areas between non-overlapping cases to 0.
This also removes some special handling of the first case in a switch: these are now treated like any other case.
This does not resolve an outstanding issue with case statement regions that do not end when a region is terminated. But it should address llvm.org/PR44011.
Differential Revision: https://reviews.llvm.org/D70571
show more ...
|
| #
2492b5a1 |
| 12-Nov-2019 |
Vedant Kumar <[email protected]> |
[profile] Support online merging with continuous sync mode
Make it possible to use online profile merging ("%m" mode) with continuous sync ("%c" mode).
To implement this, the merged profile is lock
[profile] Support online merging with continuous sync mode
Make it possible to use online profile merging ("%m" mode) with continuous sync ("%c" mode).
To implement this, the merged profile is locked in the runtime initialization step and either a) filled out for the first time or b) checked for compatibility. Then, the profile can simply be mmap()'d with MAP_SHARED set. With the mmap() in place, counter updates from every process which uses an image are mapped onto the same set of physical pages assigned by the filesystem cache. After the mmap() is set up, the profile is unlocked.
Differential Revision: https://reviews.llvm.org/D69586
show more ...
|
| #
d889d1ef |
| 19-Sep-2019 |
Vedant Kumar <[email protected]> |
[profile] Add a mode to continuously sync counter updates to a file
Add support for continuously syncing profile counter updates to a file.
The motivation for this is that programs do not always ex
[profile] Add a mode to continuously sync counter updates to a file
Add support for continuously syncing profile counter updates to a file.
The motivation for this is that programs do not always exit cleanly. On iOS, for example, programs are usually killed via a signal from the OS. Running atexit() handlers after catching a signal is unreliable, so some method for progressively writing out profile data is necessary.
The approach taken here is to mmap() the `__llvm_prf_cnts` section onto a raw profile. To do this, the linker must page-align the counter and data sections, and the runtime must ensure that counters are mapped to a page-aligned offset within a raw profile.
Continuous mode is (for the moment) incompatible with the online merging mode. This limitation is lifted in https://reviews.llvm.org/D69586.
Continuous mode is also (for the moment) incompatible with value profiling, as I'm not sure whether there is interest in this and the implementation may be tricky.
As I have not been able to test extensively on non-Darwin platforms, only Darwin support is included for the moment. However, continuous mode may "just work" without modification on Linux and some UNIX-likes. AIUI the default value for the GNU linker's `--section-alignment` flag is set to the page size on many systems. This appears to be true for LLD as well, as its `no_nmagic` option is on by default. Continuous mode will not "just work" on Fuchsia or Windows, as it's not possible to mmap() a section on these platforms. There is a proposal to add a layer of indirection to the profile instrumentation to support these platforms.
rdar://54210980
Differential Revision: https://reviews.llvm.org/D68351
show more ...
|
|
Revision tags: llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3, llvmorg-9.0.0-rc2, llvmorg-9.0.0-rc1, llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4, llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1, llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4, llvmorg-8.0.0-rc3, llvmorg-7.1.0, llvmorg-7.1.0-rc1, llvmorg-8.0.0-rc2, llvmorg-8.0.0-rc1, llvmorg-7.0.1, llvmorg-7.0.1-rc3 |
|
| #
bc5c3f57 |
| 04-Nov-2018 |
Sylvestre Ledru <[email protected]> |
Update our URLs in clang doc to use https
llvm-svn: 346101
|
|
Revision tags: llvmorg-7.0.1-rc2, llvmorg-7.0.1-rc1, llvmorg-7.0.0, llvmorg-7.0.0-rc3, llvmorg-7.0.0-rc2, llvmorg-7.0.0-rc1, llvmorg-6.0.1, llvmorg-6.0.1-rc3, llvmorg-6.0.1-rc2, llvmorg-6.0.1-rc1, llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1, llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2, llvmorg-6.0.0-rc1, llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2, llvmorg-5.0.1-rc1, llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1 |
|
| #
1c5f312c |
| 19-Jun-2017 |
Vedant Kumar <[email protected]> |
[docs] Coverage: Improve the wording a bit
llvm-svn: 305745
|
| #
82cd7709 |
| 19-Jun-2017 |
Vedant Kumar <[email protected]> |
[docs] Coverage: document issue with the BFD linker
llvm-svn: 305743
|
|
Revision tags: llvmorg-4.0.1, llvmorg-4.0.1-rc3, llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1, llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3 |
|
| #
6eed0d5b |
| 09-Feb-2017 |
Vedant Kumar <[email protected]> |
[docs] coverage: Clarify which flags enable gcov-style profiling (NFC)
Point out that --coverage and -ftest-coverage, which is what most people are used to, do not enable clang's frontend based cove
[docs] coverage: Clarify which flags enable gcov-style profiling (NFC)
Point out that --coverage and -ftest-coverage, which is what most people are used to, do not enable clang's frontend based coverage pass.
Suggested by Benn Bolay!
llvm-svn: 294626
show more ...
|
|
Revision tags: llvmorg-4.0.0-rc2 |
|
| #
b1706ca1 |
| 25-Jan-2017 |
Nico Weber <[email protected]> |
Clarify how to forward-declare __llvm_profile symbols.
llvm-svn: 293065
|
|
Revision tags: llvmorg-4.0.0-rc1, llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1 |
|
| #
74c3fd17 |
| 22-Sep-2016 |
Vedant Kumar <[email protected]> |
[docs] Touch up the coverage docs some more
llvm-svn: 282169
|
| #
6fe6eae7 |
| 20-Sep-2016 |
Vedant Kumar <[email protected]> |
[docs] Extend the code coverage docs some more
Flesh out the section on interpreting coverage reports, mention the coverage export feature, and add notes on how to build llvm with coverage turned on
[docs] Extend the code coverage docs some more
Flesh out the section on interpreting coverage reports, mention the coverage export feature, and add notes on how to build llvm with coverage turned on.
llvm-svn: 281988
show more ...
|
| #
9ed58026 |
| 19-Sep-2016 |
Vedant Kumar <[email protected]> |
[docs] Touch up the code coverage doc
llvm-svn: 281881
|
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1 |
|
| #
ae008851 |
| 28-Jul-2016 |
Vedant Kumar <[email protected]> |
[docs] Coverage: Reference the new -output-dir option
llvm-svn: 277081
|
| #
3f42b13c |
| 28-Jul-2016 |
Vedant Kumar <[email protected]> |
[docs] Mention some new options in llvm-cov
llvm-svn: 277080
|
| #
c0a3d717 |
| 02-Jul-2016 |
Sylvestre Ledru <[email protected]> |
fix two typos in the doc
llvm-svn: 274447
|
| #
bc8cc5ac |
| 21-Jun-2016 |
George Burgess IV <[email protected]> |
[Docs] More warning fixes to unbreak the docs buildbot.
A number of warnings still remain, but these were the last of the "unlexable code"-related ones (AFAICT).
I changed a few examples in docs/Us
[Docs] More warning fixes to unbreak the docs buildbot.
A number of warnings still remain, but these were the last of the "unlexable code"-related ones (AFAICT).
I changed a few examples in docs/UsersManual.rst to showcase -Wextra-tokens because it's already documented (-Wmultichar isn't), and the sphinx C lexer apparently can't handle char literals like 'ab'. It seemed like a better overall approach than just marking the code blocks as none or console.
llvm-svn: 273232
show more ...
|
| #
f3300c9f |
| 14-Jun-2016 |
Vedant Kumar <[email protected]> |
[docs] Coverage: Document the profile merge pool specifier
llvm-svn: 272604
|