aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2004-11-14This optimization makes MANY phi nodes that all have the same incoming value.Chris Lattner
If this happens, detect it early instead of relying on instcombine to notice it later. This can be a big speedup, because PHI nodes can have many incoming values. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17741 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Implement instcombine/phi.ll:test6 - pulling operations through PHI nodes.Chris Lattner
This exposes subsequent optimization possiblities and reduces code size. This triggers 1423 times in spec. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17740 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14New testcase: the phi can be eliminated if the casts are sucked into it.Chris Lattner
Note that this reduces code size anyway (as well as making further optimizations simpler) so it's always a win. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17739 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Fix typoChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17738 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14add a testcase, which we already handleChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17737 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Transform this:Chris Lattner
%X = alloca ... %Y = alloca ... X == Y into false. This allows us to simplify some stuff in eon (and probably many other C++ programs) where operator= was checking for self assignment. Folding this allows us to SROA several additional structs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17735 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Remove note to selfChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17734 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Fix problem with insertion point for ADJCALLSTACKDOWN.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17733 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Update lists of failing unit tests.Brian Gaeke
Exclude bigfib, so that we effectively exclude all C++ benchmarks. Update to-do list: mention va_start. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17732 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Oops, make this test the right thing.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17731 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14If a function always returns a constant, replace all calls sites with thatChris Lattner
constant value. This makes the return value dead and allows for simplification in the caller. This implements IPConstantProp/return-constant.ll This triggers several dozen times throughout SPEC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17730 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14New testcaseChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17729 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Fix NotTest - round up extraStack to the nearest doubleword, if it isBrian Gaeke
not zero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17728 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Teach SROA how to promote an array index that is variable, if the dimensionChris Lattner
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17727 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14New testcase, SROA with variable array indexChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17726 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Update failing Benchmarks; point out that I'm skipping Shootout-C++.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17725 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Rearrange some code, no functionality changes.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17724 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Update expected UnitTests failures.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17723 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Rewrite outgoing arg handling to handle more weird corner cases.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17722 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14Support UndefValue emission.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17721 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13setting path to prcontext.tcl script. Right now it searches for tclsh in ↵Tanya Lattner
your path, but this should be obtained from configure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17720 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Remove debugging codeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17719 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Argument promotion transforms functions to unconditionally load theirChris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17718 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Add a testcase we should continue to argpromoteChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17717 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Add a testcase for a function we cannot legally promote the argument of.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17716 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Add useful method, minor cleanupsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17715 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Don't print unneeded labelsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17714 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Run prcontext.tcl with tclsh and let it be found in the path. This should be ↵Tanya Lattner
found by configure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17713 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Adding subdirectory dg.exp files in order to be able to use dejagnu to only ↵Tanya Lattner
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-13Changed to use tcl script.Tanya Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17711 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Hack around stupidity in GCC, fixing Burg with the CBE andChris Lattner
CBackend/2004-11-13-FunctionPointerCast.llx git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17710 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13New testcaseChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17709 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Rewrote prcontext.py in tcl.Tanya Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17708 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13shld is a very high latency operation. Instead of emitting it for shifts ofChris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17707 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Add missing checkChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17706 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Compile:Chris Lattner
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17705 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Simplify handling of shifts to be the same as we do for adds. Add supportChris Lattner
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17704 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13New testcaseChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17703 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Add support for shiftsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17702 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Fold:Chris Lattner
(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] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17701 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Lazily create the abort message, so only translation units that use unwindChris Lattner
will actually get it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17700 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13Fix: CodeExtractor/2004-11-12-InvokeExtract.llChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17699 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13New testcaseChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17698 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12Fix a bug where the code extractor would get a bit confused handling invokeChris Lattner
instructions, setting DefBlock to a block it did not have dom info for. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17697 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12Simplify handling of constant initializersChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17696 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12Makefile for lib/LinkerReid Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17695 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12This file originated in lib/VMCore/Linker.cpp but now lives inReid Spencer
lib/Linker/LinkModules.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17694 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12This file originated in tools/gccld/Linker.cpp but now lives inReid Spencer
lib/Linker/LinkArchives.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17693 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12* Clean up all the shared library output on uninstallReid Spencer
* Provide the correct set of input directories to the TAGS target * Provide a CTAGS target for building Vi style ctags files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17688 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12Document the new llvm-ranlib command.Reid Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17687 91177308-0d34-0410-b5e6-96231b3b80d8