summaryrefslogtreecommitdiffstats
path: root/llvm/test/Instrumentation
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove unused field in DISubprogramDavid Blaikie2013-03-211-1/+1
| | | | llvm-svn: 177661
* [asan] when creating string constants, set unnamed_attr and align 1 so that ↵Kostya Serebryany2013-03-181-2/+3
| | | | | | equal strings are merged by the linker. Observed up to 1% binary size reduction. Thanks to Anton Korobeynikov for the suggestion llvm-svn: 177264
* [asan] don't instrument functions with available_externally linkage. This ↵Kostya Serebryany2013-03-181-0/+12
| | | | | | saves a bit of compile time and reduces the number of redundant global strings generated by asan (https://code.google.com/p/address-sanitizer/issues/detail?id=167) llvm-svn: 177250
* Split out filename & directory from DIFile to start generalizing over DIScopesDavid Blaikie2013-03-171-1/+2
| | | | | | | | | | This is the first step to making all DIScopes have a common metadata prefix (so that things (using directives, for example) that can appear in any scope can be added to that common prefix). DIFile is itself a DIScope so the common prefix of all DIScopes cannot be a DIFile - instead it's the raw filename/directory name pair. llvm-svn: 177239
* [ASan] emit instrumentation for initialization order checking by defaultAlexey Samsonov2013-03-141-1/+1
| | | | llvm-svn: 177063
* Remove the unused 4th operand for DIFile debug info metadataDavid Blaikie2013-03-131-1/+1
| | | | llvm-svn: 176983
* [msan] Implement sanitize_memory attribute.Evgeniy Stepanov2013-02-281-35/+62
| | | | | | | | | | 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
* Unify clang/llvm attributes for asan/tsan/msan (LLVM part)Kostya Serebryany2013-02-2612-31/+31
| | | | | | | | | | | | | | | | | | | These are two related changes (one in llvm, one in clang). LLVM: - rename address_safety => sanitize_address (the enum value is the same, so we preserve binary compatibility with old bitcode) - rename thread_safety => sanitize_thread - rename no_uninitialized_checks -> sanitize_memory CLANG: - add __attribute__((no_sanitize_address)) as a synonym for __attribute__((no_address_safety_analysis)) - add __attribute__((no_sanitize_thread)) - add __attribute__((no_sanitize_memory)) for S in address thread memory If -fsanitize=S is present and __attribute__((no_sanitize_S)) is not set llvm attribute sanitize_S llvm-svn: 176075
* [asan] instrument invoke insns with noreturn attribute (as well as call insns)Kostya Serebryany2013-02-201-1/+22
| | | | llvm-svn: 175617
* [asan] instrument memory accesses with unusual sizesKostya Serebryany2013-02-191-1/+31
| | | | | | | | | | | | | | | | | This patch makes asan instrument memory accesses with unusual sizes (e.g. 5 bytes or 10 bytes), e.g. long double or packed structures. Instrumentation is done with two 1-byte checks (first and last bytes) and if the error is found __asan_report_load_n(addr, real_size) or __asan_report_store_n(addr, real_size) is called. Also, call these two new functions in memset/memcpy instrumentation. asan-rt part will follow. llvm-svn: 175507
* [asan] revert r175266 as it breaks code with packed structures. supporting ↵Kostya Serebryany2013-02-181-1/+1
| | | | | | long double will require a more general solution llvm-svn: 175442
* [asan] support long double on 64-bit. See ↵Kostya Serebryany2013-02-151-0/+9
| | | | | | https://code.google.com/p/address-sanitizer/issues/detail?id=151 llvm-svn: 175266
* [tsan] disable load widening in ThreadSanitizer modeKostya Serebryany2013-02-131-0/+26
| | | | llvm-svn: 175034
* [asan] fix tests for the new ABIKostya Serebryany2013-02-122-4/+4
| | | | llvm-svn: 174959
* [msan] Mostly disable msan-handle-icmp-exact.Evgeniy Stepanov2013-01-281-20/+11
| | | | | | | | 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
* [msan] Implement exact shadow propagation for relational ICmp.Evgeniy Stepanov2013-01-251-3/+31
| | | | | | | | 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
* [asan] adaptive redzones for globals (the larger the global the larger is ↵Kostya Serebryany2013-01-241-0/+57
| | | | | | the redzone) llvm-svn: 173335
* [msan] Do not insert check on volatile store.Evgeniy Stepanov2013-01-221-0/+14
| | | | | | Volatile bitfields can cause valid stores of uninitialized bits. llvm-svn: 173153
* ASan: wrap mapping scale and offset in a struct and make it a member of ASan ↵Alexey Samsonov2013-01-161-0/+41
| | | | | | passes. Add test for non-default mapping scale and offset. No functionality change llvm-svn: 172610
* [msan] Temporarily remove ICmpEQ tests.Evgeniy Stepanov2013-01-151-54/+0
| | | | | | They are failing on the bots. llvm-svn: 172540
* [msan] Fix handling of equality comparison of pointer vectors.Evgeniy Stepanov2013-01-151-0/+70
| | | | | | Also improve test coveration of the handling of relational comparisons. llvm-svn: 172539
* [msan] Change va_start/va_copy shadow memset alignment to 8.Peter Collingbourne2013-01-101-0/+13
| | | | | | | | | 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
* [ASan] Fix lifetime intrinsics handling. Now for each intrinsic we check if ↵Alexey Samsonov2012-12-271-1/+24
| | | | | | it describes one of 'interesting' allocas. Assume that allocas can go through casts and phi-nodes before apperaring as llvm.lifetime arguments llvm-svn: 171153
* [msan] Raise alignment of origin stores/loads when possible.Evgeniy Stepanov2012-12-261-2/+9
| | | | | | | Origin alignment is as high as the alignment of the corresponding application location, but never less than 4. llvm-svn: 171110
* [msan] Fix handling of vectors of pointers.Evgeniy Stepanov2012-12-251-0/+15
| | | | | | | VectorType::getInteger() can not be used with them, because pointer size depends on the target. llvm-svn: 171070
* [msan] Fix handling of select with vector condition.Evgeniy Stepanov2012-12-251-0/+17
| | | | llvm-svn: 171069
* [msan] Remove unreachable blocks before instrumenting a function.Evgeniy Stepanov2012-12-211-0/+23
| | | | llvm-svn: 170883
* [msan] Heuristically instrument unknown intrinsics.Evgeniy Stepanov2012-12-191-2/+74
| | | | | | | | | | | | 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
* [msan] Origin stores and loads do not need explicit alignment.Evgeniy Stepanov2012-12-141-0/+30
| | | | | | Origin address is always 4 byte aligned, and the access type is always i32. llvm-svn: 170199
* Improve debug info generated with enabled AddressSanitizer.Alexey Samsonov2012-12-121-0/+60
| | | | | | | | | | | | When ASan replaces <alloca instruction> with <offset into a common large alloca>, it should also patch llvm.dbg.declare calls and replace debug info descriptors to mark that we've replaced alloca with a value that stores an address of the user variable, not the user variable itself. See PR11818 for more context. llvm-svn: 169984
* [msan] Do not store origin for clean values.Evgeniy Stepanov2012-12-061-0/+26
| | | | | | | | | | | | | | | | | | 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
* [msan] Instrument bswap intrinsic.Evgeniy Stepanov2012-12-051-0/+16
| | | | llvm-svn: 169383
* [msan] Change linkage type of __msan_track_origins.Evgeniy Stepanov2012-12-051-0/+3
| | | | | | | LinkOnceODRLinkage globals may be removed in GlobalOpt if not used in the current module. llvm-svn: 169377
* Improve MSan tests.Evgeniy Stepanov2012-12-041-54/+60
| | | | llvm-svn: 169256
* ASan: add initial support for handling llvm.lifetime intrinsics in ASan - ↵Alexey Samsonov2012-12-041-0/+61
| | | | | | emit calls into runtime library that poison memory for local variables when their lifetime is over and unpoison memory when their lifetime begins. llvm-svn: 169200
* [msan] Tests for vector manipulation instructions.Evgeniy Stepanov2012-11-301-0/+37
| | | | llvm-svn: 168997
* [msan] Propagate shadow through (x<0) and (x>=0) comparisons.Evgeniy Stepanov2012-11-291-0/+47
| | | | | | | This is a special case of signed relational comparison where result only depends on the sign of x. llvm-svn: 168881
* [msan] Fix shadow & origin store & load alignment.Evgeniy Stepanov2012-11-291-0/+25
| | | | | | | This change ensures that shadow memory accesses have the same alignment as corresponding app memory accesses. llvm-svn: 168880
* [msan] Add a test for r168873.Evgeniy Stepanov2012-11-291-0/+2
| | | | llvm-svn: 168877
* [msan] Update tests (broken in r168873).Evgeniy Stepanov2012-11-291-5/+3
| | | | llvm-svn: 168874
* Initial commit of MemorySanitizer.Evgeniy Stepanov2012-11-292-0/+236
| | | | | | Compiler pass only. llvm-svn: 168866
* [asan] when checking the noreturn attribute on the call, also check it on ↵Kostya Serebryany2012-11-291-2/+13
| | | | | | the callee llvm-svn: 168861
* [asan] Split AddressSanitizer into two passes (FunctionPass, ModulePass), ↵Kostya Serebryany2012-11-282-2/+2
| | | | | | LLVM part. This requires a clang part which will follow. llvm-svn: 168781
* tsan: instrument atomic nand operationDmitry Vyukov2012-11-271-0/+200
| | | | llvm-svn: 168684
* [tsan] add fail order to compare_exchangeDmitry Vyukov2012-11-261-25/+25
| | | | llvm-svn: 168586
* [asan] don't instrument linker-initialized globals even with external ↵Kostya Serebryany2012-11-201-1/+23
| | | | | | linkage in -asan-initialization-order mode llvm-svn: 168367
* [asan] make sure that linker-initialized globals (non-extern) are not ↵Kostya Serebryany2012-11-201-1/+20
| | | | | | instrumented even in -asan-initialization-order mode. This time with a test llvm-svn: 168366
* tsan: switch to new memory_order constants (ABI compatible)Dmitry Vyukov2012-11-091-223/+223
| | | | llvm-svn: 167615
* tsan: instrument all atomics (including fetch_add, exchange, cas, etc)Dmitry Vyukov2012-11-091-0/+1464
| | | | llvm-svn: 167612
* [asan] don't instrument globals that we've created ourselves (reduces the ↵Kostya Serebryany2012-11-011-0/+19
| | | | | | binary size a bit) llvm-svn: 167230
OpenPOWER on IntegriCloud