|
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 |
|
| #
bdbfaf0c |
| 09-Apr-2022 |
Aaron Ballman <[email protected]> |
Giving a lot more functions prototypes; NFC
This should address https://lab.llvm.org/buildbot/#/builders/37/builds/12315 and speculatively fix other similar diagnostics.
|
|
Revision tags: 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 |
|
| #
11d30742 |
| 27-Jan-2022 |
Ellis Hoag <[email protected]> |
[InstrProf] Add single byte coverage mode
Use the llvm flag `-pgo-function-entry-coverage` to create single byte "counters" to track functions coverage. This mode has significantly less size overhea
[InstrProf] Add single byte coverage mode
Use the llvm flag `-pgo-function-entry-coverage` to create single byte "counters" to track functions coverage. This mode has significantly less size overhead in both code and data because * We mark a function as "covered" with a store instead of an increment which generally requires fewer assembly instructions * We use a single byte per function rather than 8 bytes per block
The trade off of course is that this mode only tells you if a function has been covered. This is useful, for example, to detect dead code.
When combined with debug info correlation [0] we are able to create an instrumented Clang binary that is only 150M (the vanilla Clang binary is 143M). That is an overhead of 7M (4.9%) compared to the default instrumentation (without value profiling) which has an overhead of 31M (21.7%).
[0] https://groups.google.com/g/llvm-dev/c/r03Z6JoN7d4
Reviewed By: kyulee
Differential Revision: https://reviews.llvm.org/D116180
show more ...
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3 |
|
| #
88d81770 |
| 19-Jan-2022 |
Ellis Hoag <[email protected]> |
[InstrProf] Restore InstrProfData.inc to fix Fuchsia builds
https://reviews.llvm.org/D116179 introduced some changes to `InstrProfData.inc` which broke some downstream builds. This commit reverts th
[InstrProf] Restore InstrProfData.inc to fix Fuchsia builds
https://reviews.llvm.org/D116179 introduced some changes to `InstrProfData.inc` which broke some downstream builds. This commit reverts those changes since they only changes two field names.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D117631
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc2 |
|
| #
f2147375 |
| 29-Dec-2021 |
Ellis Hoag <[email protected]> |
[InstrProf][NFC] Do not assume size of counter type
Existing code tended to assume that counters had type `uint64_t` and computed size from the number of counters. Fix this code to directly compute
[InstrProf][NFC] Do not assume size of counter type
Existing code tended to assume that counters had type `uint64_t` and computed size from the number of counters. Fix this code to directly compute the counters size in number of bytes where possible. When the number of counters is needed, use `__llvm_profile_counter_entry_size()` or `getCounterTypeSize()`. In a later diff these functions will depend on the profile mode.
Change the meaning of `DataSize` and `CountersSize` to make them more clear. * `DataSize` (`CountersSize`) - the size of the data (counter) section in bytes. * `NumData` (`NumCounters`) - the number of data (counter) entries.
Reviewed By: kyulee
Differential Revision: https://reviews.llvm.org/D116179
show more ...
|
| #
ac719d7c |
| 20-Dec-2021 |
Ellis Hoag <[email protected]> |
[InstrProf] Don't profile merge by default in lightweight mode
Profile merging is not supported when using debug info profile correlation because the data section won't be in the binary at runtime.
[InstrProf] Don't profile merge by default in lightweight mode
Profile merging is not supported when using debug info profile correlation because the data section won't be in the binary at runtime. Change the default profile name in this mode to `default_%p.proflite` so we don't use profile merging.
Reviewed By: kyulee
Differential Revision: https://reviews.llvm.org/D115979
show more ...
|
| #
58d9c1ae |
| 16-Dec-2021 |
Ellis Hoag <[email protected]> |
[Try2][InstrProf] Attach debug info to counters
Add the llvm flag `-debug-info-correlate` to attach debug info to instrumentation counters so we can correlate raw profile data to their functions. Ra
[Try2][InstrProf] Attach debug info to counters
Add the llvm flag `-debug-info-correlate` to attach debug info to instrumentation counters so we can correlate raw profile data to their functions. Raw profiles are dumped as `.proflite` files. The next diff enables `llvm-profdata` to consume `.proflite` and debug info files to produce a normal `.profdata` profile.
Part of the "lightweight instrumentation" work: https://groups.google.com/g/llvm-dev/c/r03Z6JoN7d4
The original diff https://reviews.llvm.org/D114565 was reverted because of the `Instrumentation/InstrProfiling/debug-info-correlate.ll` test, which is fixed in this commit.
Reviewed By: kyulee
Differential Revision: https://reviews.llvm.org/D115693
show more ...
|
| #
c809da7d |
| 14-Dec-2021 |
Ellis Hoag <[email protected]> |
Revert "[InstrProf] Attach debug info to counters"
This reverts commit 800bf8ed29fbcaa9436540e83bc119ec92e7d40f.
The `Instrumentation/InstrProfiling/debug-info-correlate.ll` test was failing becaus
Revert "[InstrProf] Attach debug info to counters"
This reverts commit 800bf8ed29fbcaa9436540e83bc119ec92e7d40f.
The `Instrumentation/InstrProfiling/debug-info-correlate.ll` test was failing because I forgot the `llc` commands are architecture specific. I'll follow up with a fix.
Differential Revision: https://reviews.llvm.org/D115689
show more ...
|
| #
800bf8ed |
| 14-Dec-2021 |
Ellis Hoag <[email protected]> |
[InstrProf] Attach debug info to counters
Add the llvm flag `-debug-info-correlate` to attach debug info to instrumentation counters so we can correlate raw profile data to their functions. Raw prof
[InstrProf] Attach debug info to counters
Add the llvm flag `-debug-info-correlate` to attach debug info to instrumentation counters so we can correlate raw profile data to their functions. Raw profiles are dumped as `.proflite` files. The next diff enables `llvm-profdata` to consume `.proflite` and debug info files to produce a normal `.profdata` profile.
Part of the "lightweight instrumentation" work: https://groups.google.com/g/llvm-dev/c/r03Z6JoN7d4
Reviewed By: kyulee
Differential Revision: https://reviews.llvm.org/D114565
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
1df7289a |
| 23-Nov-2021 |
Pirama Arumuga Nainar <[email protected]> |
[compiler-rt/profile] Include __llvm_profile_get_magic in module signature
The INSTR_PROF_RAW_MAGIC_* number in profraw files should match during profile merging. This causes an error with 32-bit a
[compiler-rt/profile] Include __llvm_profile_get_magic in module signature
The INSTR_PROF_RAW_MAGIC_* number in profraw files should match during profile merging. This causes an error with 32-bit and 64-bit variants of the same code. The module signatures for the two binaries are identical but they use different INSTR_PROF_RAW_MAGIC_* causing a failure when profile-merging is used. Including it when computing the module signature yields different signatures for the 32-bit and 64-bit profiles.
Differential Revision: https://reviews.llvm.org/D114054
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1 |
|
| #
83302c84 |
| 30-Jul-2021 |
Petr Hosek <[email protected]> |
[profile] Fix profile merging with binary IDs
This fixes support for merging profiles which broke as a consequence of e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missing adjustment in me
[profile] Fix profile merging with binary IDs
This fixes support for merging profiles which broke as a consequence of e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missing adjustment in merge logic to account for the binary IDs which are now included in the raw profile just after header.
In addition, this change also: * Includes the version in module signature that's used for merging to avoid accidental attempts to merge incompatible profiles. * Moves the binary IDs size field after version field in the header as was suggested in the review.
Differential Revision: https://reviews.llvm.org/D107143
show more ...
|
| #
d3dd07e3 |
| 31-Jul-2021 |
Petr Hosek <[email protected]> |
Revert "[profile] Fix profile merging with binary IDs"
This reverts commit dcadd64986b8a84dc244d4e7faa848fb4c18cea6.
|
| #
dcadd649 |
| 30-Jul-2021 |
Petr Hosek <[email protected]> |
[profile] Fix profile merging with binary IDs
This fixes support for merging profiles which broke as a consequence of e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missing adjustment in me
[profile] Fix profile merging with binary IDs
This fixes support for merging profiles which broke as a consequence of e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missing adjustment in merge logic to account for the binary IDs which are now included in the raw profile just after header.
In addition, this change also: * Includes the version in module signature that's used for merging to avoid accidental attempts to merge incompatible profiles. * Moves the binary IDs size field after version field in the header as was suggested in the review.
Differential Revision: https://reviews.llvm.org/D107143
show more ...
|
| #
6ea2f31f |
| 30-Jul-2021 |
Petr Hosek <[email protected]> |
Revert "[profile] Fix profile merging with binary IDs"
This reverts commit 89d6eb6f8c5d94093f30a5f37b193a2422491642, this seemed to have break a few builders.
|
| #
89d6eb6f |
| 30-Jul-2021 |
Petr Hosek <[email protected]> |
[profile] Fix profile merging with binary IDs
This fixes support for merging profiles which broke as a consequence of e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missing adjustment in me
[profile] Fix profile merging with binary IDs
This fixes support for merging profiles which broke as a consequence of e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missing adjustment in merge logic to account for the binary IDs which are now included in the raw profile just after header.
In addition, this change also: * Includes the version in module signature that's used for merging to avoid accidental attempts to merge incompatible profiles. * Moves the binary IDs size field after version field in the header as was suggested in the review.
Differential Revision: https://reviews.llvm.org/D107143
show more ...
|
| #
a1532ed2 |
| 30-Jul-2021 |
Fangrui Song <[email protected]> |
[InstrProfiling] Make CountersPtr in __profd_ relative
Change `CountersPtr` in `__profd_` to a label difference, which is a link-time constant. On ELF, when linking a shared object, this requires th
[InstrProfiling] Make CountersPtr in __profd_ relative
Change `CountersPtr` in `__profd_` to a label difference, which is a link-time constant. On ELF, when linking a shared object, this requires that `__profc_` is either private or linkonce/linkonce_odr hidden. On COFF, we need D104564 so that `.quad a-b` (64-bit label difference) can lower to a 32-bit PC-relative relocation.
``` # ELF: R_X86_64_PC64 (PC-relative) .quad .L__profc_foo-.L__profd_foo
# Mach-O: a pair of 8-byte X86_64_RELOC_UNSIGNED and X86_64_RELOC_SUBTRACTOR .quad l___profc_foo-l___profd_foo
# COFF: we actually use IMAGE_REL_AMD64_REL32/IMAGE_REL_ARM64_REL32 so # the high 32-bit value is zero even if .L__profc_foo < .L__profd_foo # As compensation, we truncate CountersDelta in the header so that # __llvm_profile_merge_from_buffer and llvm-profdata reader keep working. .quad .L__profc_foo-.L__profd_foo ```
(Note: link.exe sorts `.lprfc` before `.lprfd` even if the object writer has `.lprfd` before `.lprfc`, so we cannot work around by reordering `.lprfc` and `.lprfd`.)
With this change, a stage 2 (`-DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_INSTRUMENTED=IR`) `ld -pie` linked clang is 1.74% smaller due to fewer R_X86_64_RELATIVE relocations. ``` % readelf -r pie | awk '$3~/R.*/{s[$3]++} END {for (k in s) print k, s[k]}' R_X86_64_JUMP_SLO 331 R_X86_64_TPOFF64 2 R_X86_64_RELATIVE 476059 # was: 607712 R_X86_64_64 2616 R_X86_64_GLOB_DAT 31 ```
The absolute function address (used by llvm-profdata to collect indirect call targets) can be converted to relative as well, but is not done in this patch.
Differential Revision: https://reviews.llvm.org/D104556
show more ...
|
|
Revision tags: llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
b73742bc |
| 10-Jun-2021 |
Arthur Eubanks <[email protected]> |
[Profile] Remove redundant check
This is already checked outside the loop.
Followup to D104050.
|
| #
189428c8 |
| 10-Jun-2021 |
Arthur Eubanks <[email protected]> |
[Profile] Handle invalid profile data
This mostly follows LLVM's InstrProfReader.cpp error handling. Previously, attempting to merge corrupted profile data would result in crashes. See https://crbug
[Profile] Handle invalid profile data
This mostly follows LLVM's InstrProfReader.cpp error handling. Previously, attempting to merge corrupted profile data would result in crashes. See https://crbug.com/1216811#c4.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D104050
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, 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, 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, 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 |
|
| #
f35032e0 |
| 22-Nov-2019 |
Petr Hosek <[email protected]> |
Reland "[CMake] Support installation of InstrProfData.inc"
This header fragment is useful on its own for any consumer that wants to use custom instruction profile runtime with the LLVM instrumentati
Reland "[CMake] Support installation of InstrProfData.inc"
This header fragment is useful on its own for any consumer that wants to use custom instruction profile runtime with the LLVM instrumentation. The concrete use case is in Fuchsia's kernel where we want to use instruction profile instrumentation, but we cannot use the compiler-rt runtime because it's not designed for use in the kernel environment. This change allows installing this header as part of compiler-rt.
Differential Revision: https://reviews.llvm.org/D64532
show more ...
|
| #
262b10ba |
| 22-Nov-2019 |
Petr Hosek <[email protected]> |
Revert "[CMake] Support installation of InstrProfData.inc"
This reverts commit f11bc1776fd2815b60e0b1ed97be00b517348162 since it's failing to build on some bots.
|
| #
f11bc177 |
| 22-Nov-2019 |
Petr Hosek <[email protected]> |
[CMake] Support installation of InstrProfData.inc
This header fragment is useful on its own for any consumer that wants to use custom instruction profile runtime with the LLVM instrumentation. The c
[CMake] Support installation of InstrProfData.inc
This header fragment is useful on its own for any consumer that wants to use custom instruction profile runtime with the LLVM instrumentation. The concrete use case is in Fuchsia's kernel where we want to use instruction profile instrumentation, but we cannot use the compiler-rt runtime because it's not designed for use in the kernel environment. This change allows installing this header as part of compiler-rt.
Differential Revision: https://reviews.llvm.org/D64532
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 |
|
| #
2946cd70 |
| 19-Jan-2019 |
Chandler Carruth <[email protected]> |
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the ne
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository.
llvm-svn: 351636
show more ...
|
|
Revision tags: llvmorg-7.0.1, llvmorg-7.0.1-rc3, 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 |
|
| #
95ab7582 |
| 02-Apr-2018 |
Rong Xu <[email protected]> |
[profile] Fix value profile runtime merging issues
This patch fixes the following issues: (1) The strong definition of the merge hook function was not working which breaks the online value profile m
[profile] Fix value profile runtime merging issues
This patch fixes the following issues: (1) The strong definition of the merge hook function was not working which breaks the online value profile merging. This patch removes the weak attribute of VPMergeHook and assigns the value dynamically. (2) Truncate the proifle file so that we don't have garbage data at the end of the file. (3) Add new __llvm_profile_instrument_target_value() interface to do the value profile update in batch. This is needed as the original incremental by 1 in __llvm_profile_instrument_target() is too slow for online merge.
Differential Revision: https://reviews.llvm.org/D44847
llvm-svn: 328987
show more ...
|
|
Revision tags: 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, 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, llvmorg-4.0.0-rc2, llvmorg-4.0.0-rc1, llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1, llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1 |
|
| #
e2ce2e00 |
| 08-Jun-2016 |
Xinliang David Li <[email protected]> |
[profile] in-process merging support part-3
Differential Revision: http://reviews.llvm.org/D21056
llvm-svn: 272227
|
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
| #
ac96ea42 |
| 06-May-2016 |
Xinliang David Li <[email protected]> |
[profile] Remove another unneeded field in raw profile reader
DataValueSize is now removed. The change is consolidated with previous raw version bump.
llvm-svn: 268704
|
| #
5f58c27d |
| 09-Mar-2016 |
Xinliang David Li <[email protected]> |
Fix test failure on darwin-i386
llvm-svn: 263065
|