26 Commits

Author SHA1 Message Date
Chandler Carruth
3ac929c473 Fix a miscompile introduced in r220178.
The original code had an implicit assumption that if the test for
allocas or globals was reached, the two pointers were not equal. With my
changes to make the pointer analysis more powerful here, I also had to
guard against circumstances where the results weren't useful. That in
turn violated the assumption and gave rise to a circumstance in which we
could have a store with both the queried pointer and stored pointer
rooted at *the same* alloca. Clearly, we cannot ignore such a store.
There are other things we might do in this code to better handle the
case of both pointers ending up at the same alloca or global, but it
seems best to at least make the test explicit in what it intends to
check.

I've added tests for both the alloca and global case here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220190 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-20 10:03:01 +00:00
Chandler Carruth
908d4514f6 Fix a long-standing miscompile in the load analysis that was uncovered
by my refactoring of this code.

The method isSafeToLoadUnconditionally assumes that the load will
proceed with the preferred type alignment. Given that, it has to ensure
that the alloca or global is at least that aligned. It has always done
this historically when a datalayout is present, but has never checked it
when the datalayout is absent. When I refactored the code in r220156,
I exposed this path when datalayout was present and that turned the
latent bug into a patent bug.

This fixes the issue by just removing the special case which allows
folding things without datalayout. This isn't worth the complexity of
trying to tease apart when it is or isn't safe without actually knowing
the preferred alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220161 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-19 08:17:50 +00:00
Matt Arsenault
2639f77252 Convert test to FileCheck.
Check the individual test functions for more useful failure errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213021 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-15 00:07:27 +00:00
Chris Lattner
243a73d0e6 merge two tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108111 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 00:19:47 +00:00
Chris Lattner
a8f3ebbf5c clean up tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92776 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-05 21:32:59 +00:00
Dan Gohman
3e054fe9ef Use opt -S instead of piping bitcode output through llvm-dis.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81257 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08 22:34:10 +00:00
Dan Gohman
b1e1e82c54 Change these tests to feed the assembly files to opt directly, instead
of using llvm-as, now that opt supports this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81226 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08 16:50:01 +00:00
Dan Gohman
2276a7bc8e Teach instcombine's visitLoad to scan back several instructions
to find opportunities for store-to-load forwarding or load CSE,
in the same way that visitStore scans back to do DSE. Also, define
a new helper function for testing whether the addresses of two
memory accesses are known to have the same value, and use it in
both visitStore and visitLoad.

These two changes allow instcombine to eliminate loads in code
produced by front-ends that frequently emit obviously redundant
addressing for memory references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57608 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-15 23:19:35 +00:00
Tanya Lattner
6f729d601c Byebye llvm-upgrade!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48762 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 04:26:08 +00:00
Dale Johannesen
c2ec2baf3d Change all floating constants that are not exactly
representable to use hex format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41722 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05 17:50:36 +00:00
Chris Lattner
ce7c40cf4b oops, forgot to commit this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41034 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-12 16:55:14 +00:00
Reid Spencer
2b544beda3 For PR1319:
Upgrade tests to work with new llvm.exp version of llvm_runtest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36013 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-14 20:13:02 +00:00
Reid Spencer
69ccadd753 Use the llvm-upgrade program to upgrade llvm assembly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32115 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-02 04:23:10 +00:00
Reid Spencer
e5d4efa63e Promote GEP ubyte indices to uint. Backwards compatibility for 1.2 and
older features will be dropped soon and these test cases must not rely
on the upgrade capability.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31896 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-23 15:14:52 +00:00
Chris Lattner
2c884fdaa3 remove a testcase for a marginal feature
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31345 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-01 07:15:44 +00:00
Chris Lattner
15cc608a8f new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23323 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-12 23:22:17 +00:00
Chris Lattner
128a0032a2 new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23321 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-12 22:19:46 +00:00
Chris Lattner
598fbf756f new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23319 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-12 21:59:22 +00:00
Chris Lattner
45c2bdd2f9 add a new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21644 91177308-0d34-0410-b5e6-96231b3b80d8
2005-05-01 04:24:15 +00:00
Chris Lattner
b4f5c68e5a Add two new testcases that instcombine should handle
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16403 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-19 18:43:01 +00:00
Chris Lattner
8152f5f41d Add back a test I accidentally removed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13835 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-27 17:43:33 +00:00
Chris Lattner
3ba3097516 Add another testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13833 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-27 17:28:55 +00:00
Misha Brukman
e78760e179 Renamed as' => llvm-as', dis' => llvm-dis', link' => llvm-link'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8558 91177308-0d34-0410-b5e6-96231b3b80d8
2003-09-16 15:29:54 +00:00
Chris Lattner
060c1f816c Remove usage of grep-not script
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6966 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-28 23:32:04 +00:00
Chris Lattner
c6cab24151 Convert scripts from using explicit control flow to use the new grep-not script
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6955 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-28 22:44:42 +00:00
Chris Lattner
b75e1e79d7 add tests for elimination of loads
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6911 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-26 05:05:51 +00:00