Chris Lattner
37d2cd7cd6
New testcase
...
llvm-svn: 17729
2004-11-14 06:02:46 +00:00
Brian Gaeke
347a000be6
Fix NotTest - round up extraStack to the nearest doubleword, if it is
...
not zero.
llvm-svn: 17728
2004-11-14 05:19:00 +00:00
Chris Lattner
fe3f4e6ebd
Teach SROA how to promote an array index that is variable, if the dimension
...
of the array is just two. This occurs 8 times in gcc, 6 times in crafty, and
12 times in 099.go.
This implements ScalarRepl/sroa_two.ll
llvm-svn: 17727
2004-11-14 05:00:19 +00:00
Chris Lattner
8076a5de30
New testcase, SROA with variable array index
...
llvm-svn: 17726
2004-11-14 04:58:40 +00:00
Brian Gaeke
e90176e171
Update failing Benchmarks; point out that I'm skipping Shootout-C++.
...
llvm-svn: 17725
2004-11-14 04:43:12 +00:00
Chris Lattner
8881912d71
Rearrange some code, no functionality changes.
...
llvm-svn: 17724
2004-11-14 04:24:28 +00:00
Brian Gaeke
18b6015b11
Update expected UnitTests failures.
...
llvm-svn: 17723
2004-11-14 03:22:08 +00:00
Brian Gaeke
e6b47514a3
Rewrite outgoing arg handling to handle more weird corner cases.
...
llvm-svn: 17722
2004-11-14 03:22:07 +00:00
Brian Gaeke
07097e12d5
Support UndefValue emission.
...
llvm-svn: 17721
2004-11-14 03:22:05 +00:00
Tanya Lattner
0fbc9c8350
setting path to prcontext.tcl script. Right now it searches for tclsh in your path, but this should be obtained from configure.
...
llvm-svn: 17720
2004-11-13 23:36:18 +00:00
Chris Lattner
9fa7f0ae0a
Remove debugging code
...
llvm-svn: 17719
2004-11-13 23:32:53 +00:00
Chris Lattner
244031d306
Argument promotion transforms functions to unconditionally load their
...
argument pointers. This is only valid to do if the function already
unconditionally loaded an argument or if the pointer passed in is known
to be valid. Make sure to do the required checks.
This fixed ArgumentPromotion/control-flow.ll and the Burg program.
llvm-svn: 17718
2004-11-13 23:31:34 +00:00
Chris Lattner
0a205ead8b
Add a testcase we should continue to argpromote
...
llvm-svn: 17717
2004-11-13 23:30:22 +00:00
Chris Lattner
70496c1728
Add a testcase for a function we cannot legally promote the argument of.
...
llvm-svn: 17716
2004-11-13 23:28:39 +00:00
Chris Lattner
7024d6b23e
Add useful method, minor cleanups
...
llvm-svn: 17715
2004-11-13 23:28:10 +00:00
Chris Lattner
56c4c99cca
Don't print unneeded labels
...
llvm-svn: 17714
2004-11-13 23:27:11 +00:00
Tanya Lattner
79d046ba70
Run prcontext.tcl with tclsh and let it be found in the path. This should be found by configure.
...
llvm-svn: 17713
2004-11-13 23:16:17 +00:00
Tanya Lattner
4afaf40a28
Adding subdirectory dg.exp files in order to be able to use dejagnu to only run specific tests (located in some subdirectory of Regression)
...
llvm-svn: 17712
2004-11-13 23:00:45 +00:00
Tanya Lattner
bb05cd7f85
Changed to use tcl script.
...
llvm-svn: 17711
2004-11-13 22:55:51 +00:00
Chris Lattner
073f6ca344
Hack around stupidity in GCC, fixing Burg with the CBE and
...
CBackend/2004-11-13-FunctionPointerCast.llx
llvm-svn: 17710
2004-11-13 22:21:56 +00:00
Chris Lattner
a259bd9d67
New testcase
...
llvm-svn: 17709
2004-11-13 22:21:15 +00:00
Tanya Lattner
b947fb3e95
Rewrote prcontext.py in tcl.
...
llvm-svn: 17708
2004-11-13 21:03:22 +00:00
Chris Lattner
049d33a717
shld is a very high latency operation. Instead of emitting it for shifts of
...
two or three, open code the equivalent operation which is faster on athlon
and P4 (by a substantial margin).
For example, instead of compiling this:
long long X2(long long Y) { return Y << 2; }
to:
X3_2:
movl 4(%esp), %eax
movl 8(%esp), %edx
shldl $2, %eax, %edx
shll $2, %eax
ret
Compile it to:
X2:
movl 4(%esp), %eax
movl 8(%esp), %ecx
movl %eax, %edx
shrl $30, %edx
leal (%edx,%ecx,4), %edx
shll $2, %eax
ret
Likewise, for << 3, compile to:
X3:
movl 4(%esp), %eax
movl 8(%esp), %ecx
movl %eax, %edx
shrl $29, %edx
leal (%edx,%ecx,8), %edx
shll $3, %eax
ret
This matches icc, except that icc open codes the shifts as adds on the P4.
llvm-svn: 17707
2004-11-13 20:48:57 +00:00
Chris Lattner
ef6bd92a8c
Add missing check
...
llvm-svn: 17706
2004-11-13 20:04:38 +00:00
Chris Lattner
8d521bb16e
Compile:
...
long long X3_2(long long Y) { return Y+Y; }
int X(int Y) { return Y+Y; }
into:
X3_2:
movl 4(%esp), %eax
movl 8(%esp), %edx
addl %eax, %eax
adcl %edx, %edx
ret
X:
movl 4(%esp), %eax
addl %eax, %eax
ret
instead of:
X3_2:
movl 4(%esp), %eax
movl 8(%esp), %edx
shldl $1, %eax, %edx
shll $1, %eax
ret
X:
movl 4(%esp), %eax
shll $1, %eax
ret
llvm-svn: 17705
2004-11-13 20:03:48 +00:00
Chris Lattner
8c3e7b92af
Simplify handling of shifts to be the same as we do for adds. Add support
...
for (X * C1) + (X * C2) (where * can be mul or shl), allowing us to fold:
Y+Y+Y+Y+Y+Y+Y+Y
into
%tmp.8 = shl long %Y, ubyte 3 ; <long> [#uses=1]
instead of
%tmp.4 = shl long %Y, ubyte 2 ; <long> [#uses=1]
%tmp.12 = shl long %Y, ubyte 2 ; <long> [#uses=1]
%tmp.8 = add long %tmp.4, %tmp.12 ; <long> [#uses=1]
This implements add.ll:test25
Also add support for (X*C1)-(X*C2) -> X*(C1-C2), implementing sub.ll:test18
llvm-svn: 17704
2004-11-13 19:50:12 +00:00
Chris Lattner
f6392b4616
New testcase
...
llvm-svn: 17703
2004-11-13 19:49:39 +00:00
Chris Lattner
6912370a78
Add support for shifts
...
llvm-svn: 17702
2004-11-13 19:32:45 +00:00
Chris Lattner
4efe20a103
Fold:
...
(X + (X << C2)) --> X * ((1 << C2) + 1)
((X << C2) + X) --> X * ((1 << C2) + 1)
This means that we now canonicalize "Y+Y+Y" into:
%tmp.2 = mul long %Y, 3 ; <long> [#uses=1]
instead of:
%tmp.10 = shl long %Y, ubyte 1 ; <long> [#uses=1]
%tmp.6 = add long %Y, %tmp.10 ; <long> [#uses=1]
llvm-svn: 17701
2004-11-13 19:31:40 +00:00
Chris Lattner
2858e17538
Lazily create the abort message, so only translation units that use unwind
...
will actually get it.
llvm-svn: 17700
2004-11-13 19:07:32 +00:00
Chris Lattner
9b0291b18d
Fix: CodeExtractor/2004-11-12-InvokeExtract.ll
...
llvm-svn: 17699
2004-11-13 00:06:45 +00:00
Chris Lattner
8cc98850f9
New testcase
...
llvm-svn: 17698
2004-11-13 00:06:32 +00:00
Chris Lattner
5bcca6058a
Fix a bug where the code extractor would get a bit confused handling invoke
...
instructions, setting DefBlock to a block it did not have dom info for.
llvm-svn: 17697
2004-11-12 23:50:44 +00:00
Chris Lattner
5c1d84c769
Simplify handling of constant initializers
...
llvm-svn: 17696
2004-11-12 22:42:57 +00:00
Reid Spencer
a81f8197eb
Makefile for lib/Linker
...
llvm-svn: 17695
2004-11-12 20:38:45 +00:00
Reid Spencer
361e513db0
This file originated in lib/VMCore/Linker.cpp but now lives in
...
lib/Linker/LinkModules.cpp
llvm-svn: 17694
2004-11-12 20:37:43 +00:00
Reid Spencer
1cfa8d60f8
This file originated in tools/gccld/Linker.cpp but now lives in
...
lib/Linker/LinkArchives.cpp
llvm-svn: 17693
2004-11-12 20:34:32 +00:00
Reid Spencer
aee67e6547
* Clean up all the shared library output on uninstall
...
* Provide the correct set of input directories to the TAGS target
* Provide a CTAGS target for building Vi style ctags files.
llvm-svn: 17688
2004-11-12 02:27:36 +00:00
Reid Spencer
2ea5ae618c
Document the new llvm-ranlib command.
...
llvm-svn: 17687
2004-11-12 00:18:35 +00:00
Reid Spencer
ffb9f06135
Correctly terminate a list.
...
llvm-svn: 17686
2004-11-12 00:16:51 +00:00
Reid Spencer
2e34034d80
Document the modifiers and the file format.
...
llvm-svn: 17685
2004-11-12 00:15:43 +00:00
Reid Spencer
e448500e6d
Add llvm-ar to the index.
...
llvm-svn: 17682
2004-11-11 09:30:00 +00:00
Reid Spencer
8beeb49594
First attempt at llvm-ar documentation. Modifiers need a little more
...
explanation.
llvm-svn: 17681
2004-11-11 09:21:18 +00:00
Chris Lattner
9621dfab3f
Actually, leave the check in. This prevents us from counting dead arguments
...
as IPCP opportunities.
llvm-svn: 17680
2004-11-11 07:47:54 +00:00
Chris Lattner
5fa696f8e4
Fix bug: IPConstantProp/deadarg.ll
...
llvm-svn: 17679
2004-11-11 07:46:29 +00:00
Chris Lattner
ba582f0d11
new testcase
...
llvm-svn: 17678
2004-11-11 07:46:11 +00:00
Reid Spencer
45dc1394cd
Fix documentation for Makefile target name change. install-bytecode is now
...
just "install" in the runtime directory.
llvm-svn: 17677
2004-11-11 07:30:27 +00:00
Chris Lattner
c1d24cd859
Make IP Constant prop more aggressive about handling self recursive calls.
...
This implements IPConstantProp/recursion.ll
llvm-svn: 17666
2004-11-10 19:43:59 +00:00
Chris Lattner
59e5462557
New testcase
...
llvm-svn: 17665
2004-11-10 19:43:31 +00:00
John Criswell
04570265a5
Correct the name of stosd for the AT&T syntax:
...
It's stosl (l for long == 32 bit).
llvm-svn: 17658
2004-11-10 04:48:15 +00:00