Nuno Lopes
de8c6fb24f
BoundsChecking: attach debug info to traps to make my life a bit more sane
...
llvm-svn: 159055
2012-06-23 00:12:34 +00:00
Nuno Lopes
0e967e0186
port the BoundsChecking patch to the new MemoryBuiltin API (i.e., remove most of the code from here).
...
Remove the alloc_size.ll test until we settle on a metadata format that makes everyone happy..
llvm-svn: 158920
2012-06-21 15:59:53 +00:00
Nuno Lopes
4b68c1da54
BoundsChecking: add support for ConstantPointerNull. fixes a bunch of instrumentation failures in loops with reallocs
...
llvm-svn: 158210
2012-06-08 16:31:42 +00:00
Nuno Lopes
adf1c859dd
BoundsChecking: fix a bug when the handling of recursive PHIs failed and could leave dangling references in the cache
...
add regression tests for this problem.
Can already compile & run: PHP, PCRE, and ICU (i.e., all the software I tried)
llvm-svn: 157822
2012-06-01 17:43:31 +00:00
Nuno Lopes
288e86ff6b
add -bounds-checking-multiple-traps option to make one trap BB per check
...
disabled by default for now; we can discusse the default value (& name) later
llvm-svn: 157777
2012-05-31 22:58:48 +00:00
Nuno Lopes
7d00061d87
revamp BoundsChecking considerably:
...
- compute size & offset at the same time. The side-effects of this are that we now support negative GEPs. It's now approaching a phase that it can be reused by other passes (e.g., lowering of the objectsize intrinsic)
- use APInt throughout to handle wrap-arounds
- add support for PHI instrumentation
- add a cache (required for recursive PHIs anyway)
- remove hoisting support for now, since it was wrong in a few cases
sorry for the churn here.. tests will follow soon.
llvm-svn: 157775
2012-05-31 22:45:40 +00:00
Nuno Lopes
8bd45f8ecd
bounds checking:
...
- hoist checks out of loops where SCEV is smart enough
- add additional statistics to measure how much we loose for not supporting interprocedural and pointers loaded from memory
llvm-svn: 157649
2012-05-29 22:32:51 +00:00
Nuno Lopes
e9b0bdf804
bounds checking: add support for byval arguments
...
llvm-svn: 157498
2012-05-25 21:15:17 +00:00
Nuno Lopes
a6da3ff896
boundschecking:
...
add support for select
add experimental support for alloc_size metadata
llvm-svn: 157481
2012-05-25 16:54:04 +00:00
Nuno Lopes
10287d839f
BoundsChecking: add a couple of simple tests and fix a bug in branch emition
...
llvm-svn: 157329
2012-05-23 16:24:52 +00:00
Nuno Lopes
59e9df773a
address some of John Criswell's comments
...
teach computeAllocSize about realloc, reallocf, and valloc
llvm-svn: 157298
2012-05-22 22:02:19 +00:00
Nuno Lopes
a2f6cecb6d
add a new pass to instrument loads and stores for run-time bounds checking
...
move EmitGEPOffset from InstCombine to Transforms/Utils/Local.h
(a draft of this) patch reviewed by Andrew, thanks.
llvm-svn: 157261
2012-05-22 17:19:09 +00:00