Commit Graph

126 Commits

Author SHA1 Message Date
Devang Patel
f70bda2f81 Do not let debug info prevert globalopt from shriking a global vars to boolean.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66224 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-06 00:21:00 +00:00
Devang Patel
5049600672 GlobalOpt only process non constant local GVs while optimizing global vars.
If non constant local GV named A is used by a constant local GV named B (e.g. llvm.dbg.variable) and B is not used by anyone else then eliminate A as well as B.

In other words, debug info should not interfere in removal of unused GV.
--This life, and those below, will be ignored--

M    test/Transforms/GlobalOpt/2009-03-03-dbg.ll
M    lib/Transforms/IPO/GlobalOpt.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66167 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-05 18:12:02 +00:00
Bill Wendling
85435046ac Should have XFAILed this test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66086 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04 22:29:34 +00:00
Bill Wendling
380c3ca093 Temporarily revert r65994. It was causing rdar://6646455.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66083 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04 22:02:09 +00:00
Devang Patel
7f6179d1d8 If a global constant is dead then global's debug info should not prevent the optimizer in deleting the global. And while deleting global, delete global's debug info also.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65994 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04 01:22:23 +00:00
Duncan Sands
4782b305c2 If the target of an alias has internal linkage, then the
alias can be morphed into the target.  Implement this
transform, and fix a crash in the existing transform at
the same time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64583 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-15 09:56:08 +00:00
Chris Lattner
92c6bd2c45 rewrite OptimizeAwayTrappingUsesOfLoads to 1) avoid a temporary
vector and extraneous loop over it, 2) not delete globals used by
phis/selects etc which could actually be useful.  This fixes PR3321.
Many thanks to Duncan for narrowing this down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62201 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-14 00:12:58 +00:00
Chris Lattner
df98617b23 Reimplement the old and horrible bison parser for .ll files with a nice
and clean recursive descent parser.

This change has a couple of ramifications:
1. The parser code is about 400 lines shorter (in what we maintain, not
   including what is autogenerated).
2. The code should be significantly faster than the old code because we 
   don't have to work around bison's poor handling of datatypes with 
   ctors/dtors.  This also makes the code much more resistant to memory 
   leaks.
3. We now get caret diagnostics from the .ll parser, woo.
4. The actual diagnostics emited from the parser are completely different
   so a bunch of testcases had to be updated.
5. I now disallow "%ty = type opaque %ty = type i32".  There was no good
   reason to support this, it was just an accident of the old 
   implementation.  I have no reason to think that anyone is actually using
   this.
6. The syntax for sticking a global variable has changed to make it 
   unambiguous.  I don't think anyone is depending on this since only clang
   supports this and it is not solid yet, so I'm not worried about anything
   breaking.
7. This gets rid of the last use of bison, and along with it the .cvs files.
   I'll prune this from the makefiles as a subsequent commit.

There are a few minor cleanups that can be done after this commit (suggestions
welcome!) but this passes dejagnu testing and is ready for its time in the
limelight.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61558 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-02 07:01:27 +00:00
Chris Lattner
bce4afe839 Enhance heap sra to be substantially more aggressive w.r.t PHI
nodes.  This allows it to do fairly general phi insertion if a 
load from a pointer global wants to be SRAd but the load is used
by (recursive) phi nodes.  This fixes a pessimization on ppc
introduced by Load PRE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61123 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-17 05:28:49 +00:00
Chris Lattner
85d3d4f35d Fix another crash found by inspection. If we have a PHI node merging
the load multiple times, make sure the check the uses of the PHI to 
ensure they are transformable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61102 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-16 21:24:51 +00:00
Chris Lattner
542dc1a0de fix a crash found by inspection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61101 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-16 21:04:51 +00:00
Chris Lattner
657084a8ea add testcase for r61051
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61052 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-15 21:46:23 +00:00
Chris Lattner
ca17422158 add a basic test for heap-sra
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61041 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-15 19:42:05 +00:00
Anton Korobeynikov
e4c6b61ebd Resolve aliases, when possible
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56001 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 19:04:59 +00:00
Matthijs Kooijman
bc1f989e3c Make GlobalOpt preserve address spaces when scalar replacing aggregate globals.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53716 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 11:59:53 +00:00
Gabor Greif
f6cadc440c sabre brings to my attention that the 'tr' suffix is also obsolete
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51349 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-20 21:00:03 +00:00
Gabor Greif
722243bd40 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51328 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-20 19:52:04 +00:00
Chris Lattner
998182b380 When SRoA'ing a global variable, make sure the new globals get the
appropriate alignment.  This fixes a miscompilation of 252.eon on
x86-64 (rdar://5891920).

Bill, please pull this into Tak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50308 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-26 07:40:11 +00:00
Chris Lattner
5ae21fb23a rename *.llx -> *.ll, last batch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49971 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-19 22:32:52 +00:00
Tanya Lattner
ec9a35a6f9 Remove llvm-upgrade and update test cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47793 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-01 09:15:35 +00:00
Duncan Sands
3d5378ff8e Remove any 'nest' parameter attributes if the function
is not passed as an argument to a trampoline intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47220 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-16 20:56:04 +00:00
Chris Lattner
c69d3c9442 Don't let globalopt hack on volatile loads or stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46523 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29 19:01:37 +00:00
Chris Lattner
941db495b8 Fix the miscompilation of MiBench/consumer-lame that was exposed by Evan's
byval work.  This miscompilation is due to the program indexing an array out
of range and us doing a transformation that broke this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45949 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-14 02:09:12 +00:00
Chris Lattner
9027b3cc7f Fix PR1896
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45568 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 05:04:53 +00:00
Chris Lattner
59ab338882 upgrade test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44067 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-13 21:42:48 +00:00
Chris Lattner
7b52fe7272 Tighten up a check for folding away loads from (newly constant) globals. This
fixes a crash on Transforms/GlobalOpt/2007-11-09-GEP-GEP-Crash.ll and 
rdar://5585488.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43949 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09 17:33:02 +00:00
Reid Spencer
9445e9aaa0 For PR1553:
Change the keywords for the zext and sext parameter attributes to be 
zeroext and signext so they don't conflict with the keywords for the
instructions of the same name. This gets around the ambiguity.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40069 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 23:13:04 +00:00
John Criswell
e644ef7b09 Convert .cvsignore files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37801 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-29 16:35:07 +00:00
Chris Lattner
f3bee46792 new testcase for PR1491
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37422 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-04 22:23:17 +00:00
Chris Lattner
d2abaf55d9 this crashes globalopt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37021 91177308-0d34-0410-b5e6-96231b3b80d8
2007-05-13 21:28:25 +00:00
Reid Spencer
eb1d74e0c8 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36142 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 17:36:08 +00:00
Reid Spencer
1cd9d77a7d For PR1336:
Correct this test case. It was passing a uint where a ubyte was expected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36101 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 02:09:24 +00:00
Reid Spencer
4575ab2186 For PR1336:
XFAIL tests covered by the PR. These will be un-XFAILed as they are fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36093 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-15 23:00:46 +00:00
Reid Spencer
2aabd0722d For PR1319:
Upgrade to use new Tcl exec based test harness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36062 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-15 08:30:33 +00:00
Reid Spencer
0f5aed5648 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35918 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-11 19:56:59 +00:00
Chris Lattner
65fe9124e3 new testcase that crashes globalopt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35688 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-05 21:09:29 +00:00
Chris Lattner
2aef09a06b new testcase. @foo should be marked fastcc by globalopt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34607 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 21:04:39 +00:00
Reid Spencer
e3ff5ada8a 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33533 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-26 08:25:06 +00:00
Reid Spencer
737ec5130e For PR1043:
Bye, Bye Booly. Remove the use of the bool type from non-upgraded test
cases and from grep expressions. The parser doesn't accept it and the
asm writer doesn't produce it any more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33183 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-13 05:06:52 +00:00
Reid Spencer
e5fe98cbb0 Global variables are not renamed by llvm-upgrade any more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32925 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-05 18:37:18 +00:00
Reid Spencer
f6dc65f672 Update test cases that grepped for register names that have now changed
as a result of llvm-upgrade handling collapsed type planes better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32849 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-03 23:47:29 +00:00
Reid Spencer
f2315900fd For PR950:
Upgrade this test in preparation for the SETCC patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32669 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-19 02:14:08 +00:00
Reid Spencer
2e7e4f2e01 Upgrade intrinsic function calls manually.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32137 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-02 20:41:53 +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
22c8648b8a new testcase that crashes global opt, reduced from chomp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31351 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-01 18:02:53 +00:00
Chris Lattner
e89121be21 Testcase for PR820
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29070 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-07 21:36:42 +00:00
Tanya Lattner
9727555859 Added the ability to xfail based on llvmgcc version
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27635 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-12 21:57:40 +00:00
Reid Spencer
2676f83776 Tired of wading through cvs's list ? files that are generated when building
with srcdir = objdir to see what's okay and what's cruft. So, in goes a
bunch of .cvsignore files to shut cvs up about known output from running
"make check".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27009 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-23 23:41:57 +00:00
Chris Lattner
ee35a4f958 Testcase for PR632
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23483 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27 22:27:19 +00:00
Chris Lattner
dbe298571f add a new testcase for constant foldable calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23464 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27 05:02:03 +00:00
Chris Lattner
93a900111f Add a more difficult testcase which uses a call to a helper function to do
the initialization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23461 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27 04:44:04 +00:00
Chris Lattner
33c36f399f Testcase that uses an alloca
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23451 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26 17:06:32 +00:00
Chris Lattner
43898ef0ae add another case, this one that uses getelementptr instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23448 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26 06:51:50 +00:00
Chris Lattner
d44b0ff038 add a test for load
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23440 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26 05:14:48 +00:00
Chris Lattner
44b19f2bcb add another testcase with simple control flow
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23438 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26 04:57:10 +00:00
Chris Lattner
1fcfe32e51 make this harder: put some code into it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23436 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26 04:43:01 +00:00
Chris Lattner
09eec56af0 new testcase for static ctor list optimizations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23432 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26 01:42:03 +00:00
Chris Lattner
364651395c new testcase for PR579
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22218 91177308-0d34-0410-b5e6-96231b3b80d8
2005-06-15 21:11:18 +00:00
Chris Lattner
b503cc4363 new testcase globalopt should handle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20351 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-27 18:48:19 +00:00
Chris Lattner
5926ca209e new testcase globalopt should implement
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20350 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-27 18:47:17 +00:00
Chris Lattner
ef07cc5e48 New testcase. Shrinking the variable to a bool allows instcombine to delete
the condition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18816 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 05:52:12 +00:00
Tanya Lattner
c8c1f12778 Adding srcdir arg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18020 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 22:45:25 +00:00
Chris Lattner
826c47ea5b New testcase. Believe it or not, this happens a LOT in vortex
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17745 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 20:41:39 +00:00
Tanya Lattner
28b372f1d3 Adding subdirectory dg.exp files in order to be able to use dejagnu to only run specific tests (located in some subdirectory of Regression)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17712 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 23:00:45 +00:00
Chris Lattner
40e08082a0 New testcase. Check for the ability to promote a malloc whose initialzed state is checked by the program
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17160 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-22 06:43:07 +00:00
Chris Lattner
6542a46e6f New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17061 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 18:28:01 +00:00
Chris Lattner
c58cf5b921 This testcase ensures that we can SRA a global even if part of the global
cannot be SRA'd


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16915 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 05:00:30 +00:00
Chris Lattner
95d0bbfda6 These testcases check to see if we can promote malloc's to globals in some
cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16914 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 05:00:12 +00:00
Chris Lattner
e3f27e66e5 Another testcase. We should be able to devirtualize the call even though
we cannot completely eliminate the global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16900 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:12:33 +00:00
Chris Lattner
b3deddcf25 New testcase that crashes -globalopt. I found this through inspection, not
actually in the wild :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16877 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 17:06:09 +00:00
Chris Lattner
ba31f8098f New testcase we were not handling before.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16875 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 16:46:48 +00:00
Chris Lattner
3de9848330 A testcase that globalopt now handles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16872 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 21:50:05 +00:00
Chris Lattner
508540321b New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16856 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 20:57:46 +00:00
Chris Lattner
bb99fc42e3 New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16841 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 17:29:47 +00:00
Chris Lattner
904697e591 Move these files from Transforms/GlobalConstifier
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16808 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-07 19:16:26 +00:00