|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| | No functionality change. Just reduces the noise of an upcoming patch.
llvm-svn: 202087 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | I am really sorry for the noise, but the current state where some parts of the
code use TD (from the old name: TargetData) and other parts use DL makes it
hard to write a patch that changes where those variables come from and how
they are passed along.
llvm-svn: 201827 | 
| | 
| 
| 
| 
| 
| 
| | Sweep the codebase for common typos. Includes some changes to visible function
names that were misspelt.
llvm-svn: 200018 | 
| | 
| 
| 
| 
| 
| 
| 
| | Currently SplitBlockAndInsertIfThen requires that branch condition is an
Instruction itself, which is very inconvenient, because it is sometimes an
Operator, or even a Constant.
llvm-svn: 197677 | 
| | 
| 
| 
| | llvm-svn: 195349 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | MemorySanitizer.
Indirect call wrapping helps MSanDR (dynamic instrumentation companion tool
for MSan) to catch all cases where execution leaves a compiler-instrumented
module by allowing the tool to rewrite targets of indirect calls.
This change is an optimization that skips wrapping for calls when target is
inside the current module. This relies on the linker providing symbols at the
begin and end of the module code (or code + data, does not really matter).
Gold linker provides such symbols by default. GNU (BFD) linker needs a link
flag: -Wl,--defsym=__executable_start=0.
More info:
https://code.google.com/p/memory-sanitizer/wiki/MSanDR#Native_exec
llvm-svn: 194697 | 
| | 
| 
| 
| | llvm-svn: 194374 | 
| | 
| 
| 
| 
| 
| | Switch to sign-extension in r192575 caused 7% perf loss on 482.sphinx3.
llvm-svn: 192882 | 
| | 
| 
| 
| 
| 
| 
| 
| | Currently MSan checks that arguments of *cvt* intrinsics are fully initialized.
That's too much to ask: some of them only operate on lower half, or even
quarter, of the input register.
llvm-svn: 192599 | 
| | 
| 
| 
| | llvm-svn: 192575 | 
| | 
| 
| 
| | llvm-svn: 191361 | 
| | 
| 
| 
| | llvm-svn: 191287 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | Adds a flag to the MemorySanitizer pass that enables runtime rewriting of
indirect calls. This is part of MSanDR implementation and is needed to return
control to the DynamiRio-based helper tool on transition between instrumented
and non-instrumented modules. Disabled by default.
llvm-svn: 191006 | 
| | 
| 
| 
| | llvm-svn: 190782 | 
| | 
| 
| 
| 
| 
| | Compiler part.
llvm-svn: 190689 | 
| | 
| 
| 
| | llvm-svn: 189796 | 
| | 
| 
| 
| 
| 
| 
| | Select condition shadow was being ignored resulting in false negatives.
This change OR-s sign-extended condition shadow into the result shadow.
llvm-svn: 189785 | 
| | 
| 
| 
| 
| 
| 
| 
| | The code was erroneously reading overflow area shadow from the TLS slot,
bypassing the local copy. Reading shadow directly from TLS is wrong, because
it can be overwritten by a nested vararg call, if that happens before va_start.
llvm-svn: 189104 | 
| | 
| 
| 
| | llvm-svn: 188169 | 
| | 
| 
| 
| 
| 
| | Differential Revision: http://llvm-reviews.chandlerc.com/D1089
llvm-svn: 185975 | 
| | 
| 
| 
| 
| 
| 
| | This changes behavior of -msan-poison-stack=0 flag from not poisoning stack
allocations to actively unpoisoning them.
llvm-svn: 185538 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Before this change, each module defined a weak_odr global __msan_track_origins 
with a value of 1 if origin tracking is enabled, 0 if disabled. If there are 
modules with different values, any of them may win. If 0 wins, and there is at 
least one module with 1, the program will most likely crash.
With this change, __msan_track_origins is only emitted if origin tracking is 
on. Then runtime library detects if there is at least one module with origin 
tracking, and enables runtime support for it.
llvm-svn: 182997 | 
| | 
| 
| 
| | llvm-svn: 182771 | 
| | 
| 
| 
| 
| 
| 
| | This stuff is used on platforms where MSan does not have a proper VarArg
implementation (anything other than x86_64 at the moment).
llvm-svn: 182375 | 
| | 
| 
| 
| 
| 
| | They are always defined in the main executable.
llvm-svn: 181994 | 
| | 
| 
| 
| | llvm-svn: 181551 | 
| | 
| 
| 
| | llvm-svn: 177630 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| | llvm-svn: 176240 | 
| | 
| 
| 
| 
| 
| 
| | Fixed set-but-not-used warnings.
Reviewer: gribozavr
llvm-svn: 173810 | 
| | 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| | Broken tests.
llvm-svn: 173679 | 
| | 
| 
| 
| 
| 
| | 50% slowdown on one of the specs.
llvm-svn: 173678 | 
| | 
| 
| 
| | llvm-svn: 173453 | 
| | 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| | when removing one attribute. This further encapsulates the use of the attributes.
llvm-svn: 173214 | 
| | 
| 
| 
| | llvm-svn: 173156 | 
| | 
| 
| 
| 
| 
| | Volatile bitfields can cause valid stores of uninitialized bits.
llvm-svn: 173153 | 
| | 
| 
| 
| 
| 
| | includes.
llvm-svn: 172891 | 
| | 
| 
| 
| | llvm-svn: 172806 | 
| | 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | code that includes Intrinsics.gen directly.
This never showed up in my testing because the old Intrinsics.gen was
still kicking around in the make build system and was correct there. =[
Thankfully, some of the bots to clean rebuilds and that caught this.
llvm-svn: 171373 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.
There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.
The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.
I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).
I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.
llvm-svn: 171366 | 
| | 
| 
| 
| | llvm-svn: 171183 | 
| | 
| 
| 
| 
| 
| 
| | Origin alignment is as high as the alignment of the corresponding application
location, but never less than 4.
llvm-svn: 171110 | 
| | 
| 
| 
| | llvm-svn: 171109 | 
| | 
| 
| 
| 
| 
| 
| | VectorType::getInteger() can not be used with them, because pointer size
depends on the target.
llvm-svn: 171070 | 
| | 
| 
| 
| | llvm-svn: 171069 | 
| | 
| 
| 
| | llvm-svn: 170883 |