diff options
author | Xinliang David Li <davidxl@google.com> | 2016-02-08 18:13:49 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@google.com> | 2016-02-08 18:13:49 +0000 |
commit | a82d6c0a4b95177289d0d79d28382ad874b073c2 (patch) | |
tree | 05dad5b9812d035c123c2b2db3a25ab13c2f3eb5 /llvm/docs/CoverageMappingFormat.rst | |
parent | cbeb8b24305044e727d1a2c5cb30c9a7148aa495 (diff) | |
download | bcm5719-llvm-a82d6c0a4b95177289d0d79d28382ad874b073c2.tar.gz bcm5719-llvm-a82d6c0a4b95177289d0d79d28382ad874b073c2.zip |
[PGO] Enable compression in pgo instrumentation
This reduces sizes of instrumented object files, final binaries,
process images, and raw profile data.
The format of the indexed profile data remain the same.
Differential Revision: http://reviews.llvm.org/D16388
llvm-svn: 260117
Diffstat (limited to 'llvm/docs/CoverageMappingFormat.rst')
-rw-r--r-- | llvm/docs/CoverageMappingFormat.rst | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/llvm/docs/CoverageMappingFormat.rst b/llvm/docs/CoverageMappingFormat.rst index 97809d56290..47d84e37619 100644 --- a/llvm/docs/CoverageMappingFormat.rst +++ b/llvm/docs/CoverageMappingFormat.rst @@ -260,20 +260,31 @@ The coverage mapping variable generated by Clang has 3 fields: i32 20, ; The length of the string that contains the encoded coverage mapping data i32 0, ; Coverage mapping format version }, - [2 x { i8*, i32, i32, i64 }] [ ; Function records - { i8*, i32, i32, i64 } { i8* getelementptr inbounds ([3 x i8]* @__profn_foo, i32 0, i32 0), ; Function's name - i32 3, ; Function's name length + [2 x { i64, i32, i64 }] [ ; Function records + { i64, i32, i64 } { + i64 0x5cf8c24cdb18bdac, ; Function's name MD5 i32 9, ; Function's encoded coverage mapping data string length i64 0 ; Function's structural hash }, - { i8*, i32, i32, i64 } { i8* getelementptr inbounds ([3 x i8]* @__profn_bar, i32 0, i32 0), ; Function's name - i32 3, ; Function's name length + { i64, i32, i64 } { + i64 0xe413754a191db537, ; Function's name MD5 i32 9, ; Function's encoded coverage mapping data string length i64 0 ; Function's structural hash }], [40 x i8] c"..." ; Encoded data (dissected later) }, section "__llvm_covmap", align 8 +The function record layout has evolved since version 1. In version 1, the function record for *foo* is defined as follows: + +.. code-block:: llvm + + { i8*, i32, i32, i64 } { i8* getelementptr inbounds ([3 x i8]* @__profn_foo, i32 0, i32 0), ; Function's name + i32 3, ; Function's name length + i32 9, ; Function's encoded coverage mapping data string length + i64 0 ; Function's structural hash + } + + Coverage Mapping Header: ------------------------ @@ -296,11 +307,10 @@ A function record is a structure of the following type: .. code-block:: llvm - { i8*, i32, i32, i64 } + { i64, i32, i64 } -It contains the pointer to the function's name, function's name length, -the length of the encoded mapping data for that function, and function's -hash value. +It contains function name's MD5, the length of the encoded mapping data for that function, and function's +structural hash value. Encoded data: ------------- |