| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 177713
|
|
|
|
|
|
|
|
|
|
| |
Shadow checks are disabled and memory loads always produce fully initialized
values in functions that don't have a sanitize_memory attribute. Value and
argument shadow is propagated as usual.
This change also updates blacklist behaviour to match the above.
llvm-svn: 176247
|
|
|
|
|
|
|
|
| |
It is way too slow. Change the default option value to 0.
Always do exact shadow propagation for unsigned ICmp with constants, it is
cheap (under 1% cpu time) and required for correctness.
llvm-svn: 173682
|
|
|
|
|
|
|
|
| |
Only for integers, pointers, and vectors of those. No floats.
Instrumentation seems very heavy, and may need to be replaced
with some approximation in the future.
llvm-svn: 173452
|
|
|
|
|
|
| |
Volatile bitfields can cause valid stores of uninitialized bits.
llvm-svn: 173153
|
|
|
|
|
|
| |
They are failing on the bots.
llvm-svn: 172540
|
|
|
|
|
|
| |
Also improve test coveration of the handling of relational comparisons.
llvm-svn: 172539
|
|
|
|
|
|
|
|
|
| |
This fixes va_start/va_copy of a va_list field which happens to not
be laid out at a 16-byte boundary.
Differential Revision: http://llvm-reviews.chandlerc.com/D276
llvm-svn: 172128
|
|
|
|
|
|
|
| |
Origin alignment is as high as the alignment of the corresponding application
location, but never less than 4.
llvm-svn: 171110
|
|
|
|
|
|
|
| |
VectorType::getInteger() can not be used with them, because pointer size
depends on the target.
llvm-svn: 171070
|
|
|
|
| |
llvm-svn: 171069
|
|
|
|
| |
llvm-svn: 170883
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes adds shadow and origin propagation for unknown intrinsics
by examining the arguments and ModRef behaviour. For now, only 3 classes
of intrinsics are handled:
- those that look like simple SIMD store
- those that look like simple SIMD load
- those that don't have memory effects and look like arithmetic/logic/whatever
operation on simple types.
llvm-svn: 170530
|
|
|
|
|
|
| |
Origin address is always 4 byte aligned, and the access type is always i32.
llvm-svn: 170199
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 169490
|
|
|
|
| |
llvm-svn: 169383
|
|
|
|
|
|
|
| |
LinkOnceODRLinkage globals may be removed in GlobalOpt if not used in the
current module.
llvm-svn: 169377
|
|
|
|
| |
llvm-svn: 169256
|
|
|
|
| |
llvm-svn: 168997
|
|
|
|
|
|
|
| |
This is a special case of signed relational comparison where result
only depends on the sign of x.
llvm-svn: 168881
|
|
|
|
|
|
|
| |
This change ensures that shadow memory accesses have the same alignment
as corresponding app memory accesses.
llvm-svn: 168880
|
|
|
|
| |
llvm-svn: 168877
|
|
|
|
| |
llvm-svn: 168874
|
|
Compiler pass only.
llvm-svn: 168866
|