Dan Gohman
5dd6f54a5f
Teach BasicAliasAnalysis to understand constant gep indices that fall
...
beyond their associated static array type.
I believe that this fixes a legitimate bug, because BasicAliasAnalysis
already has code to check for this condition that works for non-constant
indices, however it was missing the case of constant indices. With this
change, it checks for both.
This fixes PR4267, and miscompiles of SPEC 188.ammp and 464.h264.href.
llvm-svn: 72451
2009-05-27 01:48:27 +00:00
Chris Lattner
f8afc9ecda
change this to test for an alias result more directly.
...
llvm-svn: 67046
2009-03-16 18:28:27 +00:00
Nick Lewycky
d271c19fea
Add a replacement for 2009-02-12-GEPNoalias.ll that works without -debug.
...
llvm-svn: 67011
2009-03-14 19:40:09 +00:00
Chris Lattner
5972bc6234
remove a buggy test, it is not ok to use -debug in RUN line.
...
llvm-svn: 66918
2009-03-13 18:19:34 +00:00
Nick Lewycky
f6c8dc0825
BasicAA was making the assumption that a local allocation which hadn't escaped
...
couldn't ever be the return of call instruction. However, it's quite possible
that said local allocation is itself the return of a function call. That's
what malloc and calloc are for, actually.
llvm-svn: 64442
2009-02-13 07:06:27 +00:00
Owen Anderson
c418b82207
Finish making AliasAnalysis aware of the fact that most atomic intrinsics only dereference their arguments, and enhance
...
BasicAA to make use of this fact when computing ModRef info.
llvm-svn: 63718
2009-02-04 05:16:46 +00:00
Nick Lewycky
8f96b51785
Resubmit support for the 'nocapture' attribute.
...
The problematic part of this patch is that we were out of attribute bits,
requiring some fancy bit hacking to make it fit (by shrinking alignment)
without breaking existing users or the file format.
This change will require users to rebuild llvm-gcc to match llvm.
llvm-svn: 61239
2008-12-19 06:39:12 +00:00
Bill Wendling
905350a341
Remove empty test.
...
llvm-svn: 61095
2008-12-16 19:07:17 +00:00
Bill Wendling
f807a68f2e
Temporarily revert r61019, r61030, and r61040. These were breaking LLVM Release
...
builds.
llvm-svn: 61094
2008-12-16 19:06:48 +00:00
Chris Lattner
0e79aa6595
Teach basicaa to use the nocapture attribute when possible. When the
...
intrinsics are properly marked nocapture, the fixme should be addressed.
llvm-svn: 61040
2008-12-15 18:59:22 +00:00
Chris Lattner
e2b5854e41
Allow basicaa to walk through geps with identical indices in
...
parallel, allowing it to decide that P/Q must alias if A/B
must alias in things like:
P = gep A, 0, i, 1
Q = gep B, 0, i, 1
This allows GVN to delete 62 more instructions out of 403.gcc.
llvm-svn: 60820
2008-12-10 01:04:47 +00:00
Nick Lewycky
47fa9bd187
Extend the 'noalias' attribute to function return values. This is intended to
...
indicate functions that allocate, such as operator new, or list::insert. The
actual definition is slightly less strict (for now).
No changes to the bitcode reader/writer, asm printer or verifier were needed.
llvm-svn: 59934
2008-11-24 03:41:24 +00:00
Owen Anderson
42c1d6c7b9
Remove GCSE and LoadVN from the testsuite.
...
llvm-svn: 54832
2008-08-16 00:00:54 +00:00
Chris Lattner
e987a3bdd1
If we are checking to see if the result of a call aliases a
...
pointer derived from a local allocation, if the local allocation
never escapes, the pointers can't alias. This implements PR2436
llvm-svn: 52301
2008-06-16 06:19:11 +00:00
Matthijs Kooijman
82d762a948
Suppress the (stderr) output of -aa-eval, this fixes 5 tests.
...
llvm-svn: 52173
2008-06-10 12:39:15 +00:00
Wojciech Matyjewicz
06e4c8a420
Fixes PR2395. Looking for a constant in a GEP tail (when the first GEP
...
is longer than the second one) should stop after finding one. Added break
instruction guarantees it. It also changes difference between offsets to
absolute value of this difference in the condition.
llvm-svn: 51875
2008-06-02 17:26:12 +00:00
Gabor Greif
807c2df887
sabre brings to my attention that the 'tr' suffix is also obsolete
...
llvm-svn: 51349
2008-05-20 21:00:03 +00:00
Gabor Greif
d8a4dbb5da
Rename the last test with .llx extension to .ll, resolve duplicate test by renaming to isnan2. Now that no test has llx ending there is no need to search for them from dg.exp too.
...
llvm-svn: 51328
2008-05-20 19:52:04 +00:00
Owen Anderson
3e607df2f8
Fix this test. It was testing broken behavior in that it required ADCE to eliminate
...
a potentially infinite loop, which is undesirable. Instead, test the LICM behavior
that we're really interested in.
llvm-svn: 51177
2008-05-16 04:25:09 +00:00
Chris Lattner
a9d8d647ca
rename *.llx -> *.ll, last batch.
...
llvm-svn: 49971
2008-04-19 22:32:52 +00:00
Owen Anderson
cd1b9c4b43
Make GVN able to remove unnecessary calls to read-only functions again.
...
llvm-svn: 49842
2008-04-17 05:36:50 +00:00
Dale Johannesen
45e14f7753
Don't assume a tail call can't reference a byval
...
argument to the outer function, this isn't correct.
llvm-svn: 49731
2008-04-15 17:41:34 +00:00
Owen Anderson
a6d1d8dec2
The functionality being tested was removed because it was horribly unsafe.
...
llvm-svn: 49610
2008-04-13 09:51:06 +00:00
Gabor Greif
fd0fb616f8
Fix http://llvm.org/bugs/show_bug.cgi?id=2104 by ordering lexicographically what gets printed. Be const-correct in PrintResults and uninline it too
...
llvm-svn: 47712
2008-02-28 08:38:45 +00:00
Tanya Lattner
f37f44f9ec
Remove llvm-upgrade.
...
llvm-svn: 47110
2008-02-14 06:56:27 +00:00
Chris Lattner
cd5013eb2f
Teach basicaa that 'byval' arguments define a new memory location that
...
can't be aliased to other known objects. This allows us to know that byval
pointer args don't alias globals, etc.
llvm-svn: 46315
2008-01-24 18:00:32 +00:00
Nick Lewycky
e05651c6d7
Accept both %y, %x and %x, %y as valid answers.
...
llvm-svn: 45649
2008-01-06 03:12:44 +00:00
Chris Lattner
95f9743c43
Fix PR1782, patch by Wojtek Matyjewicz!
...
llvm-svn: 44733
2007-12-09 07:35:13 +00:00
Tanya Lattner
c33660d278
Fix bug in regression tests that ignored stderr output in RUN lines. Updated tests and fixed broken run lines.
...
XFAILed 3 arm regressions (will file bugs)
llvm-svn: 44389
2007-11-28 04:57:00 +00:00
Owen Anderson
05275b7b14
Allow GVN to eliminate read-only function calls when it can detect that they are redundant.
...
llvm-svn: 44323
2007-11-26 02:26:36 +00:00
Duncan Sands
703986d327
Teach alias analysis about readnone/readonly functions.
...
Based on a patch by Török Edwin.
llvm-svn: 44279
2007-11-22 21:43:27 +00:00
Chris Lattner
02a91dce21
Fix PR1774 and BasicAA/2007-11-05-SizeCrash.ll
...
llvm-svn: 43756
2007-11-06 05:58:42 +00:00
Owen Anderson
6cc4e90741
Fix for PR1741.
...
llvm-svn: 43326
2007-10-25 02:36:18 +00:00
Chandler Carruth
67d3119773
This resolves a regression of BasicAA which failed to find any memory information for overloaded intrinsics (PR1600). This resolves that issue, and improves the matching scheme to use a BitVector rather than a binary search.
...
llvm-svn: 40872
2007-08-06 20:57:16 +00:00
Christopher Lamb
9a2a58c818
Teach BasicAA about noalias parameter attributes, but do it correctly this time.
...
llvm-svn: 40711
2007-08-02 01:18:14 +00:00
Christopher Lamb
5487dd14b4
Revert overly aggressive interpretation of noalias
...
llvm-svn: 40635
2007-07-31 16:18:07 +00:00
Christopher Lamb
907892e47a
Teach BasicAA about noalias function parameters. Passes all of DejaGNU and test-suite.
...
llvm-svn: 40624
2007-07-31 07:04:51 +00:00
John Criswell
57e5ed4b5a
Convert .cvsignore files
...
llvm-svn: 37801
2007-06-29 16:35:07 +00:00
Reid Spencer
df17fa8ef9
For PR1319:
...
Remove && from the end of the lines to prevent tests from throwing run
lines into the background. Also, clean up places where the same command
is run multiple times by using a temporary file.
llvm-svn: 36142
2007-04-16 17:36:08 +00:00
Reid Spencer
43899915e9
For PR1319:
...
Fix syntax of tests to ensure grep pattern is properly quoted.
llvm-svn: 36134
2007-04-16 15:31:49 +00:00
Reid Spencer
d93b834b52
For PR1319:
...
Fix test syntax per new rules.
llvm-svn: 36133
2007-04-16 15:15:52 +00:00
Reid Spencer
cfa86314dd
Changes to fix problems with "make check". Apparently you can redefine
...
functions and Tcl's just tickled with that. The fix is to give the "new"
test system a different interface function name.
llvm-svn: 36022
2007-04-14 22:51:29 +00:00
Reid Spencer
6ac77d03a8
Convert test cases to new llvm.exp version of llvm_runtest and fix tests
...
that it found to be broken.
llvm-svn: 36009
2007-04-14 19:27:03 +00:00
Reid Spencer
56b310ae49
Make the llvm-runtest function much more amenable by eliminating all the
...
global variables that needed to be passed in. This makes it possible to
add new global variables with only a couple changes (Makefile and llvm-dg.exp)
instead of touching every single dg.exp file.
llvm-svn: 35918
2007-04-11 19:56:59 +00:00
Reid Spencer
50ee6b8557
Remove use of implementation keyword.
...
llvm-svn: 35412
2007-03-28 02:38:26 +00:00
Reid Spencer
6a31ec1259
For PR761:
...
Remove "target endian/pointersize" or add "target datalayout" to make
the test parse properly or set the datalayout because defaults changes.
For PR645:
Make global names use the @ prefix.
For llvm-upgrade changes:
Fix test cases or completely remove use of llvm-upgrade for test cases
that cannot survive the new renaming or upgrade capabilities.
llvm-svn: 33533
2007-01-26 08:25:06 +00:00
Reid Spencer
4572ce85b0
Regression is gone, don't try to find it on clean target.
...
llvm-svn: 33296
2007-01-17 07:59:14 +00:00