aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Update doco, make doxygen more, use standard dividers.Chris Lattner2004-10-131-19/+23
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16948 91177308-0d34-0410-b5e6-96231b3b80d8
* Save Reid's notes from bugzilla on the proper procedure to upgrade libtoolMisha Brukman2004-10-131-0/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16947 91177308-0d34-0410-b5e6-96231b3b80d8
* Resolution to PR451.Reid Spencer2004-10-131-133/+157
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16946 91177308-0d34-0410-b5e6-96231b3b80d8
* Changes for libtool 1.5.10Reid Spencer2004-10-131-63/+64
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16945 91177308-0d34-0410-b5e6-96231b3b80d8
* Update for libtool 1.5.10Reid Spencer2004-10-131-480/+592
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16944 91177308-0d34-0410-b5e6-96231b3b80d8
* Harden the version requirements to the set that actually works after threeReid Spencer2004-10-131-3/+3
| | | | | | | | | days of trying to figure it out. Despite some developer's penchant for relaxing the tool versions, this just isn't possible. Only certain versions work with certain other versions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16943 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix file comment headerMisha Brukman2004-10-121-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16942 91177308-0d34-0410-b5e6-96231b3b80d8
* On second thought, OpaqueType is not really a good first-class type.Misha Brukman2004-10-121-5/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16941 91177308-0d34-0410-b5e6-96231b3b80d8
* No space allowed between \ and end-of-lineMisha Brukman2004-10-121-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16940 91177308-0d34-0410-b5e6-96231b3b80d8
* Wrap lines at 80 colsMisha Brukman2004-10-122-5/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16939 91177308-0d34-0410-b5e6-96231b3b80d8
* Add commentChris Lattner2004-10-121-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16937 91177308-0d34-0410-b5e6-96231b3b80d8
* Opaque types are considered to be first-class.Misha Brukman2004-10-121-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16936 91177308-0d34-0410-b5e6-96231b3b80d8
* Minor cleanups:Chris Lattner2004-10-121-23/+20
| | | | | | | | | * fit in 80 lines * Eliminate extra namespaces * Drop llvm:: git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16935 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't emit the method into the llvm namespace, let the #includer decide ↵Chris Lattner2004-10-121-2/+0
| | | | | | where it goes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16934 91177308-0d34-0410-b5e6-96231b3b80d8
* Add std:: prefix for compilers without correct koenig lookup implemented.Chris Lattner2004-10-121-2/+2
| | | | | | | Patch contributed by Paolo Invernizzi git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16933 91177308-0d34-0410-b5e6-96231b3b80d8
* Transform memmove -> memcpy when the source is obviously constant memory.Chris Lattner2004-10-121-16/+33
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16932 91177308-0d34-0410-b5e6-96231b3b80d8
* New testcase for memmove -> memcpy transformChris Lattner2004-10-121-0/+23
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16931 91177308-0d34-0410-b5e6-96231b3b80d8
* Right, calls have Operand#0 == the called function, don't forget this.Chris Lattner2004-10-121-12/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16930 91177308-0d34-0410-b5e6-96231b3b80d8
* Minor tweaksChris Lattner2004-10-121-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16929 91177308-0d34-0410-b5e6-96231b3b80d8
* New header. Classes can be added as needed.Chris Lattner2004-10-121-0/+198
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16928 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement a new methodChris Lattner2004-10-121-3/+27
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16927 91177308-0d34-0410-b5e6-96231b3b80d8
* This nutty patch has been in my tree since before 1.3 went out, and it needsChris Lattner2004-10-121-20/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to go in. This patch allows us to compute the trip count of loops controlled by values loaded from constant arrays. The cannonnical example of this is strlen when passed a constant argument: for (int i = 0; "constantstring"[i]; ++i) ; return i; In this case, it will compute that the loop executes 14 times, which means that the exit value of i is 14. Because of this, the loop gets DCE'd and we are happy. This also applies to anything that does similar things, e.g. loops like this: const float Array[] = { 0.1, 2.1, 3.2, 23.21 }; for (int i = 0; Array[i] < 20; ++i) and is actually fairly general. The problem with this is that it almost never triggers. The reason is that we run indvars and the loop optimizer only at compile time, which is before things like strlen and strcpy have been inlined into the program from libc. Because of this, it almost never is used (it triggers twice in specint2k). I'm committing it because it DOES work, may be useful in the future, and doesn't slow us down at all. If/when we start running the loop optimizer at link-time (-O4?) this will be very nice indeed :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16926 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a REALLY obscure bug in my previous checkin, which was splicing the ENDChris Lattner2004-10-121-1/+1
| | | | | | | marker from one ilist into the middle of another basic block! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16925 91177308-0d34-0410-b5e6-96231b3b80d8
* Handle a common case more carefully. In particular, instead of transformingChris Lattner2004-10-111-4/+33
| | | | | | | | | | | | | | | | | | pointer recurrences into expressions from this: %P_addr.0.i.0 = phi sbyte* [ getelementptr ([8 x sbyte]* %.str_1, int 0, int 0), %entry ], [ %inc.0.i, %no_exit.i ] %inc.0.i = getelementptr sbyte* %P_addr.0.i.0, int 1 ; <sbyte*> [#uses=2] into this: %inc.0.i = getelementptr sbyte* getelementptr ([8 x sbyte]* %.str_1, int 0, int 0), int %inc.0.i.rec Actually create something nice, like this: %inc.0.i = getelementptr [8 x sbyte]* %.str_1, int 0, int %inc.0.i.rec git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16924 91177308-0d34-0410-b5e6-96231b3b80d8
* Allow creation of GEP constantexprs with a vector of value* operands asChris Lattner2004-10-115-29/+44
| | | | | | | | well as a vector of constant*'s. It turns out that this is more efficient and all of the clients want to do that, so we should cater to them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16923 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement remove/eraseFromParent methodsChris Lattner2004-10-114-2/+33
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16922 91177308-0d34-0410-b5e6-96231b3b80d8
* Add long overdue methodsChris Lattner2004-10-114-2/+45
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16921 91177308-0d34-0410-b5e6-96231b3b80d8
* Make this buildChris Lattner2004-10-111-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16919 91177308-0d34-0410-b5e6-96231b3b80d8
* Reenable the transform, turning X/-10 < 1 into X > -10Chris Lattner2004-10-111-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16918 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a warning that is emitted on the sunsChris Lattner2004-10-112-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16917 91177308-0d34-0410-b5e6-96231b3b80d8
* This patch implements two things (sorry).Chris Lattner2004-10-111-25/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First, it allows SRA of globals that have embedded arrays, implementing GlobalOpt/globalsra-partial.llx. This comes up infrequently, but does allow, for example, deleting several stores to dead parts of globals in dhrystone. Second, this implements GlobalOpt/malloc-promote-*.llx, which is the following nifty transformation: Basically if a global pointer is initialized with malloc, and we can tell that the program won't notice, we transform this: struct foo *FooPtr; ... FooPtr = malloc(sizeof(struct foo)); ... FooPtr->A FooPtr->B Into: struct foo FooPtrBody; ... FooPtrBody.A FooPtrBody.B This comes up occasionally, for example, the 'disp' global in 183.equake (where the xform speeds the CBE version of the program up from 56.16s to 52.40s (7%) on apoc), and the 'desired_accept', 'fixLRBT', 'macroArray', & 'key_queue' globals in 300.twolf (speeding it up from 22.29s to 21.55s (3.4%)). The nice thing about this xform is that it exposes the resulting global to global variable optimization and makes alias analysis easier in addition to eliminating a few loads. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16916 91177308-0d34-0410-b5e6-96231b3b80d8
* This testcase ensures that we can SRA a global even if part of the globalChris Lattner2004-10-111-0/+23
| | | | | | | cannot be SRA'd git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16915 91177308-0d34-0410-b5e6-96231b3b80d8
* These testcases check to see if we can promote malloc's to globals in someChris Lattner2004-10-112-0/+38
| | | | | | | cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16914 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't miss global optimizations because we run before the inlinerChris Lattner2004-10-111-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16913 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix SingleSource/Benchmarks/McGill/chompChris Lattner2004-10-111-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16912 91177308-0d34-0410-b5e6-96231b3b80d8
* If we are trying to create a ConstantExpr cast that is really a GEP to theChris Lattner2004-10-111-0/+11
| | | | | | | | | | | | | | first element of an array, return a GEP instead of a cast. This allows us to transparently fold this: int* getelementptr (int* cast ([100 x int]* %Gbody to int*), int 40) into this: int* getelementptr ([100 x int]* %Gbody, int 0, int 40) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16911 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix grammarMisha Brukman2004-10-111-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16910 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove exhuberant-style comments which remained from copying file from `sample'Misha Brukman2004-10-111-10/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16909 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix file header comment; remove sample project (extra-verbose) commentsMisha Brukman2004-10-111-11/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16908 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix file header commentMisha Brukman2004-10-111-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16907 91177308-0d34-0410-b5e6-96231b3b80d8
* ModuloScheduling has moved to lib/Target/SparcV9Misha Brukman2004-10-102-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16906 91177308-0d34-0410-b5e6-96231b3b80d8
* Add ModuloScheduling to the recursive build treeMisha Brukman2004-10-102-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16905 91177308-0d34-0410-b5e6-96231b3b80d8
* Adjust header file inclusion due to moveMisha Brukman2004-10-103-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16904 91177308-0d34-0410-b5e6-96231b3b80d8
* Adjust comment header and paths to refect moveMisha Brukman2004-10-101-4/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16903 91177308-0d34-0410-b5e6-96231b3b80d8
* ModuloScheduling moved to lib/Target/SparcV9 as it is SparcV9-specificMisha Brukman2004-10-108-3120/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16902 91177308-0d34-0410-b5e6-96231b3b80d8
* Just because we cannot completely eliminate all uses of a global, we canChris Lattner2004-10-101-27/+124
| | | | | | | | | | | | | | | | | still optimize away all of the indirect calls and loads, etc from it. This turns code like this: if (G != 0) G(); into if (G != 0) ActualCallee(); This triggers a couple of times in gcc and libstdc++. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16901 91177308-0d34-0410-b5e6-96231b3b80d8
* Another testcase. We should be able to devirtualize the call even thoughChris Lattner2004-10-101-0/+28
| | | | | | | we cannot completely eliminate the global. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16900 91177308-0d34-0410-b5e6-96231b3b80d8
* Reorganize FINDLIBS to make most comment libs searched first.Reid Spencer2004-10-101-15/+15
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16899 91177308-0d34-0410-b5e6-96231b3b80d8
* Initial version of automake Makefile.am file.Reid Spencer2004-10-102-0/+37
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16898 91177308-0d34-0410-b5e6-96231b3b80d8
* Add the new InstrSched directory.Reid Spencer2004-10-101-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16897 91177308-0d34-0410-b5e6-96231b3b80d8