Commit Graph

14742 Commits

Author SHA1 Message Date
Reid Spencer
36a7d906c3 Updates for changes in Makefile rules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16951 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 11:48:50 +00:00
Reid Spencer
d96cb6eaa0 Update to reflect changes in Makefile rules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16950 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 11:46:52 +00:00
Reid Spencer
4f2458912c Get rid of the horrendous FIND_PATH macro, have libs and progs linked into
a common directory for simplicity. Provide an easy way to relink some
objects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16949 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 11:39:51 +00:00
Chris Lattner
86e100bd9b Update doco, make doxygen more, use standard dividers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16948 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 04:44:53 +00:00
Misha Brukman
b3a734a534 Save Reid's notes from bugzilla on the proper procedure to upgrade libtool
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16947 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 01:07:55 +00:00
Reid Spencer
177dbe2b36 Resolution to PR451.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16946 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 01:01:03 +00:00
Reid Spencer
38bfee4ba1 Changes for libtool 1.5.10
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16945 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 00:51:45 +00:00
Reid Spencer
04c2144f90 Update for libtool 1.5.10
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16944 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 00:19:25 +00:00
Reid Spencer
6bc488beef Harden the version requirements to the set that actually works after three
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
2004-10-13 00:18:58 +00:00
Misha Brukman
c2ab5a2a63 Fix file comment header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16942 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 21:48:02 +00:00
Misha Brukman
481d56c5de On second thought, OpaqueType is not really a good first-class type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16941 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 20:35:04 +00:00
Misha Brukman
fc6723f659 No space allowed between \ and end-of-line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16940 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 19:17:11 +00:00
Misha Brukman
2c9039eb1a Wrap lines at 80 cols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16939 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 18:35:57 +00:00
Chris Lattner
e004fd005d Add comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16937 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 17:08:44 +00:00
Misha Brukman
207f2d4056 Opaque types are considered to be first-class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16936 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 17:06:17 +00:00
Chris Lattner
15d879e139 Minor cleanups:
* 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
2004-10-12 16:52:09 +00:00
Chris Lattner
9d990a01a9 Don't emit the method into the llvm namespace, let the #includer decide where it goes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16934 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 16:21:18 +00:00
Chris Lattner
5c3734e349 Add std:: prefix for compilers without correct koenig lookup implemented.
Patch contributed by Paolo Invernizzi


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16933 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 16:10:39 +00:00
Chris Lattner
35b9e48cfd Transform memmove -> memcpy when the source is obviously constant memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16932 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 04:52:52 +00:00
Chris Lattner
b18dfebb3a New testcase for memmove -> memcpy transform
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16931 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 04:51:55 +00:00
Chris Lattner
84e48b860d Right, calls have Operand#0 == the called function, don't forget this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16930 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 04:45:20 +00:00
Chris Lattner
a28809d1fd Minor tweaks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16929 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 04:32:37 +00:00
Chris Lattner
e80c8191c2 New header. Classes can be added as needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16928 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 04:20:46 +00:00
Chris Lattner
4ec82eb1de Implement a new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16927 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-12 04:20:25 +00:00
Chris Lattner
673e02b0c3 This nutty patch has been in my tree since before 1.3 went out, and it needs
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
2004-10-12 01:49:27 +00:00
Chris Lattner
989cbd58fb Fix a REALLY obscure bug in my previous checkin, which was splicing the END
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
2004-10-12 01:02:29 +00:00
Chris Lattner
a4b9c7841f Handle a common case more carefully. In particular, instead of transforming
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
2004-10-11 23:06:50 +00:00
Chris Lattner
7fa6e666ec Allow creation of GEP constantexprs with a vector of value* operands as
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
2004-10-11 22:52:25 +00:00
Chris Lattner
4b83380f33 Implement remove/eraseFromParent methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16922 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 22:21:39 +00:00
Chris Lattner
b92f50fe60 Add long overdue methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16921 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 22:21:13 +00:00
Chris Lattner
c9b938065a Make this build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16919 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 20:53:28 +00:00
Chris Lattner
6a9fdfaec8 Reenable the transform, turning X/-10 < 1 into X > -10
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16918 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 19:40:04 +00:00
Chris Lattner
c71ff4c34b Fix a warning that is emitted on the suns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16917 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 15:50:40 +00:00
Chris Lattner
30ba5690cf This patch implements two things (sorry).
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
2004-10-11 05:54:41 +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
e3ef9b5fe2 Don't miss global optimizations because we run before the inliner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16913 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 04:47:18 +00:00
Chris Lattner
4a2b23e189 Fix SingleSource/Benchmarks/McGill/chomp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16912 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 04:07:27 +00:00
Chris Lattner
f8d1097e9d If we are trying to create a ConstantExpr cast that is really a GEP to the
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
2004-10-11 03:57:30 +00:00
Misha Brukman
5e94a21907 Fix grammar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16910 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 02:06:40 +00:00
Misha Brukman
e1616bf0ca Remove exhuberant-style comments which remained from copying file from `sample'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16909 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 00:56:41 +00:00
Misha Brukman
2b8f30c459 Fix file header comment; remove sample project (extra-verbose) comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16908 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 00:55:47 +00:00
Misha Brukman
17e9acd059 Fix file header comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16907 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 00:54:59 +00:00
Misha Brukman
de2a9432f9 ModuloScheduling has moved to lib/Target/SparcV9
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16906 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:37:40 +00:00
Misha Brukman
b15d4c6072 Add ModuloScheduling to the recursive build tree
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16905 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:36:09 +00:00
Misha Brukman
7da1e6e27c Adjust header file inclusion due to move
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16904 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:34:50 +00:00
Misha Brukman
0a18934a23 Adjust comment header and paths to refect move
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16903 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:34:36 +00:00
Misha Brukman
f60a149df6 ModuloScheduling moved to lib/Target/SparcV9 as it is SparcV9-specific
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16902 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:33:20 +00:00
Chris Lattner
708148e41f Just because we cannot completely eliminate all uses of a global, we can
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
2004-10-10 23:14:11 +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