diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2012-12-06 11:41:03 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2012-12-06 11:41:03 +0000 |
commit | 4031b194acd50f35b75658f66ee3bb1b4afcfd25 (patch) | |
tree | bbcccc2a3fe47d96d3c8d974da061ca8c2f8acc2 /lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
parent | 6afe478e005bf9f112b32b7ec25879475adc1915 (diff) |
[msan] Do not store origin for clean values.
Instead of unconditionally storing origin with every application store,
only do this when the shadow of the stored value is != 0.
This change also delays instrumentation of stores until after the walk over
function's instructions, because adding new basic blocks confuses InstVisitor.
We only keep 1 origin value per 4 bytes of application memory. This change
fixes the bug when a store of a single clean byte wiped the origin for the
whole 4-byte area.
Since stores of uninitialized values are relatively uncommon, this change
improves performance of track-origins mode by 5% median and by up to 47% on
specs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169490 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
0 files changed, 0 insertions, 0 deletions