<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in InstrProfilingBuffer.c</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>11d30742 - [InstrProf] Add single byte coverage mode</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#11d30742</link>
        <description>[InstrProf] Add single byte coverage modeUse the llvm flag `-pgo-function-entry-coverage` to create single byte &quot;counters&quot; to track functions coverage. This mode has significantly less size overhead in both code and data because  * We mark a function as &quot;covered&quot; 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 blockThe 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/r03Z6JoN7d4Reviewed By: kyuleeDifferential Revision: https://reviews.llvm.org/D116180

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Thu, 27 Jan 2022 19:22:43 +0000</pubDate>
        <dc:creator>Ellis Hoag &lt;ellis.sparky.hoag@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f2147375 - [InstrProf][NFC] Do not assume size of counter type</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#f2147375</link>
        <description>[InstrProf][NFC] Do not assume size of counter typeExisting code tended to assume that counters had type `uint64_t` andcomputed size from the number of counters. Fix this code to directlycompute the counters size in number of bytes where possible. When thenumber of counters is needed, use `__llvm_profile_counter_entry_size()`or `getCounterTypeSize()`. In a later diff these functions will dependon 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: kyuleeDifferential Revision: https://reviews.llvm.org/D116179

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Wed, 29 Dec 2021 21:36:28 +0000</pubDate>
        <dc:creator>Ellis Hoag &lt;ellis.sparky.hoag@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>83302c84 - [profile] Fix profile merging with binary IDs</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#83302c84</link>
        <description>[profile] Fix profile merging with binary IDsThis fixes support for merging profiles which broke as a consequenceof e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missingadjustment in merge logic to account for the binary IDs which arenow included in the raw profile just after header.In addition, this change also:* Includes the version in module signature that&apos;s used for mergingto avoid accidental attempts to merge incompatible profiles.* Moves the binary IDs size field after version field in the headeras was suggested in the review.Differential Revision: https://reviews.llvm.org/D107143

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Fri, 30 Jul 2021 09:40:27 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>d3dd07e3 - Revert &quot;[profile] Fix profile merging with binary IDs&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#d3dd07e3</link>
        <description>Revert &quot;[profile] Fix profile merging with binary IDs&quot;This reverts commit dcadd64986b8a84dc244d4e7faa848fb4c18cea6.

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Sat, 31 Jul 2021 01:53:48 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>dcadd649 - [profile] Fix profile merging with binary IDs</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#dcadd649</link>
        <description>[profile] Fix profile merging with binary IDsThis fixes support for merging profiles which broke as a consequenceof e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missingadjustment in merge logic to account for the binary IDs which arenow included in the raw profile just after header.In addition, this change also:* Includes the version in module signature that&apos;s used for mergingto avoid accidental attempts to merge incompatible profiles.* Moves the binary IDs size field after version field in the headeras was suggested in the review.Differential Revision: https://reviews.llvm.org/D107143

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Fri, 30 Jul 2021 09:40:27 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>6ea2f31f - Revert &quot;[profile] Fix profile merging with binary IDs&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#6ea2f31f</link>
        <description>Revert &quot;[profile] Fix profile merging with binary IDs&quot;This reverts commit 89d6eb6f8c5d94093f30a5f37b193a2422491642, thisseemed to have break a few builders.

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Fri, 30 Jul 2021 21:32:15 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>89d6eb6f - [profile] Fix profile merging with binary IDs</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#89d6eb6f</link>
        <description>[profile] Fix profile merging with binary IDsThis fixes support for merging profiles which broke as a consequenceof e50a38840dc3db5813f74b1cd2e10e6d984d0e67. The issue was missingadjustment in merge logic to account for the binary IDs which arenow included in the raw profile just after header.In addition, this change also:* Includes the version in module signature that&apos;s used for mergingto avoid accidental attempts to merge incompatible profiles.* Moves the binary IDs size field after version field in the headeras was suggested in the review.Differential Revision: https://reviews.llvm.org/D107143

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Fri, 30 Jul 2021 09:40:27 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>54902e00 - [InstrProfiling] Use weak alias for bias variable</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#54902e00</link>
        <description>[InstrProfiling] Use weak alias for bias variableWe need the compiler generated variable to override the weak symbol ofthe same name inside the profile runtime, but using LinkOnceODRLinkageresults in weak symbol being emitted in which case the symbol selectedby the linker is going to depend on the order of inputs which can befragile.This change replaces the use of weak definition inside the runtime witha weak alias. We place the compiler generated symbol inside a COMDATgroup so dead definition can be garbage collected by the linker.We also disable the use of runtime counter relocation on Darwin sinceMach-O doesn&apos;t support weak external references, but Darwin already usesa different continous mode that relies on overmapping so runtime counterrelocation isn&apos;t needed there.Differential Revision: https://reviews.llvm.org/D105176

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Thu, 08 Jul 2021 20:44:05 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>896f797b - [profile] Remove dependence on getpagesize from InstrProfilingBuffer.c.o</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#896f797b</link>
        <description>[profile] Remove dependence on getpagesize from InstrProfilingBuffer.c.oInstrProfilingBuffer.c.o is generic code that must support compilationinto freestanding projects. This gets rid of its dependence on the_getpagesize symbol from libc, shifting it to InstrProfilingFile.c.o.This fixes a build failure seen in a firmware project.rdar://66249701

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Thu, 30 Jul 2020 23:19:05 +0000</pubDate>
        <dc:creator>Vedant Kumar &lt;vsk@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>618a0c0d - [profile] Add InstrProfilingInternal.c.o to Darwin kext builtins</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#618a0c0d</link>
        <description>[profile] Add InstrProfilingInternal.c.o to Darwin kext builtinsFixes a build failure in the Darwin kernel. Tested with:% nm -m ./lib/libclang_rt.cc_kext_x86_64_osx.a | grep lprofSetProfileDumpedrdar://66249602

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Thu, 30 Jul 2020 00:22:27 +0000</pubDate>
        <dc:creator>Vedant Kumar &lt;vsk@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>32bddad3 - [profile] Make atexit hook a no-op on Fuchsia</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#32bddad3</link>
        <description>[profile] Make atexit hook a no-op on FuchsiaOn Fuchsia, we always use the continuous mode with runtime counterrelocation, so there&apos;s no need for atexit hook or support for dumpingthe profile manually.Differential Revision: https://reviews.llvm.org/D76556

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Sat, 21 Mar 2020 23:41:00 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>d3db13af - [profile] Support counter relocation at runtime</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#d3db13af</link>
        <description>[profile] Support counter relocation at runtimeThis is an alternative to the continous mode that was implemented inD68351. This mode relies on padding and the ability to mmap a file overthe existing mapping which is generally only available on POSIX systemsand isn&apos;t suitable for other platforms.This change instead introduces the ability to relocate counters atruntime using a level of indirection. On every counter access, we add abias to the counter address. This bias is stored in a symbol that&apos;sprovided by the profile runtime and is initially set to zero, meaning norelocation. The runtime can mmap the profile into memory at abitrarylocation, and set bias to the offset between the original and the newcounter location, at which point every subsequent counter access will beto the new location, which allows updating profile directly akin to thecontinous mode.The advantage of this implementation is that doesn&apos;t require any specialOS support. The disadvantage is the extra overhead due to additionalinstructions required for each counter access (overhead both in terms ofbinary size and performance) plus duplication of counters (i.e. one copyin the binary itself and another copy that&apos;s mmapped).Differential Revision: https://reviews.llvm.org/D69740

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Fri, 04 Oct 2019 20:29:56 +0000</pubDate>
        <dc:creator>Petr Hosek &lt;phosek@google.com&gt;</dc:creator>
    </item>
<item>
        <title>2492b5a1 - [profile] Support online merging with continuous sync mode</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#2492b5a1</link>
        <description>[profile] Support online merging with continuous sync modeMake it possible to use online profile merging (&quot;%m&quot; mode) withcontinuous sync (&quot;%c&quot; mode).To implement this, the merged profile is locked in the runtimeinitialization step and either a) filled out for the first time or b)checked for compatibility. Then, the profile can simply be mmap()&apos;d withMAP_SHARED set. With the mmap() in place, counter updates from everyprocess which uses an image are mapped onto the same set of physicalpages assigned by the filesystem cache. After the mmap() is set up, theprofile is unlocked.Differential Revision: https://reviews.llvm.org/D69586

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Tue, 12 Nov 2019 18:24:23 +0000</pubDate>
        <dc:creator>Vedant Kumar &lt;vsk@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>d889d1ef - [profile] Add a mode to continuously sync counter updates to a file</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#d889d1ef</link>
        <description>[profile] Add a mode to continuously sync counter updates to a fileAdd support for continuously syncing profile counter updates to a file.The motivation for this is that programs do not always exit cleanly. OniOS, for example, programs are usually killed via a signal from the OS.Running atexit() handlers after catching a signal is unreliable, so somemethod for progressively writing out profile data is necessary.The approach taken here is to mmap() the `__llvm_prf_cnts` section ontoa raw profile. To do this, the linker must page-align the counter anddata sections, and the runtime must ensure that counters are mapped to apage-aligned offset within a raw profile.Continuous mode is (for the moment) incompatible with the online mergingmode. This limitation is lifted in https://reviews.llvm.org/D69586.Continuous mode is also (for the moment) incompatible with valueprofiling, as I&apos;m not sure whether there is interest in this and theimplementation 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 modemay &quot;just work&quot; without modification on Linux and some UNIX-likes. AIUIthe default value for the GNU linker&apos;s `--section-alignment` flag is setto the page size on many systems. This appears to be true for LLD aswell, as its `no_nmagic` option is on by default. Continuous mode willnot &quot;just work&quot; on Fuchsia or Windows, as it&apos;s not possible to mmap() asection on these platforms. There is a proposal to add a layer ofindirection to the profile instrumentation to support these platforms.rdar://54210980Differential Revision: https://reviews.llvm.org/D68351

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Thu, 19 Sep 2019 18:56:43 +0000</pubDate>
        <dc:creator>Vedant Kumar &lt;vsk@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>2946cd70 - Update the file headers across all of the LLVM projects in the monorepo</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#2946cd70</link>
        <description>Update the file headers across all of the LLVM projects in the monorepoto reflect the new license.We understand that people may be surprised that we&apos;re moving the headerentirely to discuss the new license. We checked this carefully with theFoundation&apos;s lawyer and we believe this is the correct approach.Essentially, all code in the project is now made available by the LLVMproject under our new license, so you will see that the license headersinclude that license only. Some of our contributors have contributedcode under our old license, and accordingly, we have retained a copy ofour old license notice in the top-level files in each project andrepository.llvm-svn: 351636

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Sat, 19 Jan 2019 08:50:56 +0000</pubDate>
        <dc:creator>Chandler Carruth &lt;chandlerc@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f50cc3ed - [PGO] Reduce IO in profile dumping with merging</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#f50cc3ed</link>
        <description>[PGO] Reduce IO in profile dumping with mergingDifferential Revision: http://reviews.llvm.org/D34709llvm-svn: 306561

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Wed, 28 Jun 2017 16:46:06 +0000</pubDate>
        <dc:creator>Xinliang David Li &lt;davidxl@google.com&gt;</dc:creator>
    </item>
<item>
        <title>967669f6 - [PGO] Refactor file/buffer writer callback interfaces /NFC</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#967669f6</link>
        <description>[PGO] Refactor file/buffer writer callback interfaces /NFCIntroduces a &apos;owner&apos; struct to include the overridable writemethod and the write context in C.This allows easy introdution of new member API to help reduceprofile merge time in the follow up patch.llvm-svn: 306432

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Tue, 27 Jun 2017 17:28:01 +0000</pubDate>
        <dc:creator>Xinliang David Li &lt;davidxl@google.com&gt;</dc:creator>
    </item>
<item>
        <title>e9a8574d - Reapply r268840: [profile] Simplify value profile writing</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#e9a8574d</link>
        <description>Reapply r268840: [profile] Simplify value profile writingRevert r268864 that reverted 268840 after underlying problemis fixed for arm bot.llvm-svn: 268992

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Tue, 10 May 2016 00:17:31 +0000</pubDate>
        <dc:creator>Xinliang David Li &lt;davidxl@google.com&gt;</dc:creator>
    </item>
<item>
        <title>26642b40 - Revert &quot;[profile] Simplify value profile writing&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#26642b40</link>
        <description>Revert &quot;[profile] Simplify value profile writing&quot;This reverts commit r268840, as it breaks Thumb2 self-hosting. There is somethingunstable in the profiling for Thumb2 that needs to be sorted out before we continueimplementing these changes to the profiler. See PR27667.llvm-svn: 268864

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Sat, 07 May 2016 20:07:09 +0000</pubDate>
        <dc:creator>Renato Golin &lt;renato.golin@linaro.org&gt;</dc:creator>
    </item>
<item>
        <title>4b30c797 - [profile] Simplify value profile writing</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c#4b30c797</link>
        <description>[profile] Simplify value profile writingWith this patch, value data are longer pre-collectedbefore writing. The code is simplified and requiresless heap space for dumping.llvm-svn: 268840

            List of files:
            /llvm-project-15.0.7/compiler-rt/lib/profile/InstrProfilingBuffer.c</description>
        <pubDate>Sat, 07 May 2016 02:50:11 +0000</pubDate>
        <dc:creator>Xinliang David Li &lt;davidxl@google.com&gt;</dc:creator>
    </item>
</channel>
</rss>
