Commit Graph

14665 Commits

Author SHA1 Message Date
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
9b34a61019 Eliminate global pointers that are only stored a single value and null if
we know that all uses of the global will trap if the pointer contained is
null.  In this case, we forward substitute the stored value to any uses.

This has the effect of devirtualizing trivial globals in trivial cases.  For
example, 164.gzip contains this:

gzip.h:extern   int (*read_buf) OF((char *buf, unsigned size));
bits.c: read_buf  = file_read;
deflate.c:    lookahead = read_buf((char*)window,
deflate.c:        n = read_buf((char*)window+strstart+lookahead, more);

Since read_buf has to point to file_read at every use, we just replace
the calls through read_buf with a direct call to file_read.

This occurs in several benchmarks, including 176.gcc and 164.gzip.  Direct
calls are good and stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16871 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 21:48:45 +00:00
Chris Lattner
83d72bcd11 Instead of silently breaking, print notification of why this doesn't work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16870 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 21:13:51 +00:00
Chris Lattner
ffd9cefc73 Fix grammaro
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16869 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 19:37:02 +00:00
Chris Lattner
dd27827733 Use DEBUG instead of DebugFlag directly, as DebugFlag does not respect
-debug-only!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16868 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 19:30:36 +00:00
Chris Lattner
9cfa0d95fa It looks like we're not releasing 1.4 with llvm.org as the official domain
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16867 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 19:19:57 +00:00
Brian Gaeke
03203b423f update according to tonight's info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16866 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 05:58:27 +00:00
Brian Gaeke
0e2d466ce9 Implement getModuleMatchQuality and getJITMatchQuality so that v8 will be the
default 32/BE target on sparc hosts, and ppc will continue to be the default
on other hosts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16865 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 05:57:01 +00:00
Chris Lattner
930f475604 Fix infinite loop due to iteration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16864 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 03:32:52 +00:00
Chris Lattner
a052f8297a Implement sub.ll:test17, -X/C -> X/-C
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16863 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 02:50:40 +00:00
Chris Lattner
23e2563226 New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16862 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 02:50:01 +00:00
Chris Lattner
1c1bb33534 Add a check to avoid an assertion on malformed input
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16861 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-09 02:18:58 +00:00
Chris Lattner
222b86f694 The person who was planning to add SSE support isn't anymore, so disable
the -sse* options (to avoid misleading people).

Also, the stack alignment of the target doesn't depend on whether SSE is
eventually implemented, so remove a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16860 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 22:41:46 +00:00
Chris Lattner
b0f4e389db Fix a major regression from the bugfix for 2004-10-08-SelectSetCCFold.llx,
which prevented setcc's from being folded into branches.  It appears that
conditional branchinst's CC operand is actually operand(2), not operand(0)
as we might expect. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16859 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 22:24:31 +00:00
Chris Lattner
8f57e9c083 If we found a dead global, we should at least delete it...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16858 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 22:05:31 +00:00
Chris Lattner
a4be1dc0a1 * Pull out the meat of runOnModule into another function for clarity.
* Do not lead dangling dead constants prevent optimization
* Iterate global optimization while we're making progress.

These changes allow us to be more aggressive, handling cases like
GlobalOpt/iterate.llx without a problem (turning it into 'ret int 0').


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16857 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 20:59:28 +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
e40e2d1a71 We might as well delete the known-dead global sooner rather than later since
we know it is dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16855 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 20:25:55 +00:00
Misha Brukman
6a134dedf6 Hyphenate target-(in)dependent for more tasty grammar goodness (tm)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16854 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 19:43:31 +00:00
Chris Lattner
340a05fb3a Temporarily disable a buggy transformation until it can be fixed. This fixes
254.gap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16853 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 19:15:44 +00:00
Misha Brukman
7ced638072 Adjust paths due to moving InstrSched to lib/Target/SparcV9
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16852 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:30:22 +00:00
Misha Brukman
41605ab6e7 Use the SparcV9-marked instr scheduling library
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16851 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:14:56 +00:00
Misha Brukman
6b68973617 InstrSched has been moved to lib/Target/SparcV9
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16850 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:12:53 +00:00
Misha Brukman
c8e049124e InstrSched is SparcV9-specific and so has been moved to lib/Target/SparcV9/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16849 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:12:14 +00:00
Misha Brukman
855ae5a8f7 Single-space instead of double-spacing in the Makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16848 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:11:14 +00:00
Misha Brukman
222c98bf82 Build InstrSched as well, and all three subdirs can be built independently
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16847 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:10:48 +00:00
Misha Brukman
13e4f6eb04 * Adjust for the move to lib/Target/SparcV9/InstrSched
* Rename library to mark it SparcV9-specific


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16846 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:10:01 +00:00
Misha Brukman
1481a5c4c7 Single-space instead of double-spacing in the Makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16845 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:05:25 +00:00
Reid Spencer
83e9193d37 Remove unused variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16844 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 18:01:31 +00:00
Reid Spencer
761e41b237 Make it so that positional parameters can have spaces in them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16843 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 17:59:29 +00:00
Chris Lattner
670c889ac9 Implement SRA for global variables. This allows the other global variable
optimizations to trigger much more often.  This allows the elimination of
several dozen more global variables in Programs/External.  Note that we only
do this for non-constant globals: constant globals will already be optimized
out if the accesses to them permit it.

This implements Transforms/GlobalOpt/globalsra.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16842 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 17:32:09 +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
d04cd55796 Fix bug: 2004-10-08-SelectSetCCFold.llx. Normally this is hidden by the
instcombine xform, which is why we didn't notice it before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16840 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 16:34:13 +00:00
Chris Lattner
d4bcae9031 New testcase. The setcc is only used by a select, but not as a condition:
it cannot be folded in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16839 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 16:33:40 +00:00
Misha Brukman
cf4f810372 Properly `quote' names, and don't forget to add the ending quote!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16838 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 14:59:05 +00:00
Reid Spencer
6843e38cb1 Add the --with-automake option to AutoRegen.sh and provide the automake
version of the configure script. This is an early commit of the automake
support so that automake support can be tested on multiple platforms. Many
additional Makefile.am need to be added to LLVM before this is of any use.
Please wait until automake support is announced on llvmdev list before
using the --with-automake option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16837 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 05:33:35 +00:00
Chris Lattner
b99d6b1cac Instcombine (X & FF00) + xx00 -> (X+xx00) & FF00, implementing and.ll:test27
This comes up when doing adds to bitfield elements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16836 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 05:07:56 +00:00
Chris Lattner
8797f59758 New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16835 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 05:03:25 +00:00
Chris Lattner
1f7e160f77 Little patch to turn (shl (add X, 123), 4) -> (add (shl X, 4), 123 << 4)
This triggers in cases of bitfield additions, opening opportunities for
future improvements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16834 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 03:46:20 +00:00
Chris Lattner
d74634a885 New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16833 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 03:41:59 +00:00
Nate Begeman
bdf69847a9 Implement logical and with an immediate that consists of a contiguous block
of one or more 1 bits (may wrap from least significant bit to most
significant bit) as the rlwinm rather than andi., andis., or some longer
instructons sequence.

int andn4(int z) { return z & -4; }
int clearhi(int z) { return z & 0x0000FFFF; }
int clearlo(int z) { return z & 0xFFFF0000; }
int clearmid(int z) { return z & 0x00FFFF00; }
int clearwrap(int z) { return z & 0xFF0000FF; }

_andn4:
        rlwinm r3, r3, 0, 0, 29
        blr

_clearhi:
        rlwinm r3, r3, 0, 16, 31
        blr

_clearlo:
        rlwinm r3, r3, 0, 0, 15
        blr

_clearmid:
        rlwinm r3, r3, 0, 8, 23
        blr

_clearwrap:
        rlwinm r3, r3, 0, 24, 7
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16832 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 02:49:24 +00:00
Misha Brukman
ef7dd4637b Fix usage description typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16831 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 01:11:15 +00:00
Misha Brukman
3326305f42 Make comment header span the entire line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16830 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 01:10:52 +00:00
Misha Brukman
0adfeed185 Describe how to configure tests to work with f2c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16829 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 00:55:43 +00:00
Misha Brukman
0904f09091 * Reformat to fit 80 cols
* Add missing <li> tags


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16828 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-08 00:41:27 +00:00
Nate Begeman
b816f0298d Several fixes and enhancements to the PPC32 backend.
1. Fix an illegal argument to getClassB when deciding whether or not to
   sign extend a byte load.

2. Initial addition of isLoad and isStore flags to the instruction .td file
   for eventual use in a scheduler.

3. Rewrite of how constants are handled in emitSimpleBinaryOperation so
   that we can emit the PowerPC shifted immediate instructions far more
   often.  This allows us to emit the following code:

int foo(int x) { return x | 0x00F0000; }

_foo:
.LBB_foo_0:     ; entry
        ; IMPLICIT_DEF
        oris r3, r3, 15
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16826 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-07 22:30:03 +00:00
Nate Begeman
cb90de37a7 Add ori reg, reg, 0 as a move instruction. This can be generated from
loading a 32bit constant into a register whose low halfword is all zeroes.

We now omit the ori after the lis for the following C code:

int bar(int y) { return y * 0x00F0000; }

_bar:
.LBB_bar_0:     ; entry
        ; IMPLICIT_DEF
        lis r2, 15
        mullw r3, r3, r2
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16825 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-07 22:26:12 +00:00
Nate Begeman
5a181c848b Remove unnecessary header include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16824 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-07 22:24:32 +00:00
Chris Lattner
cf4d2a5699 Improve comments, no functionality changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16814 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-07 21:30:30 +00:00
Chris Lattner
a1c972df7d Fix a nasty dangling pointer problem, due to a free'd pointer being left in
a map.  This caused problems if a later object happened to be allocated at
the free'd object's address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16813 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-07 20:01:31 +00:00