Commit Graph

14505 Commits

Author SHA1 Message Date
Misha Brukman 009aaf9968 Prettify formatting of the file, adjust paths to making V8 a subdir of Sparc
llvm-svn: 16482
2004-09-22 20:09:29 +00:00
Misha Brukman d55f854a5d V8 is now a subdirectory of Sparc; adjust paths accordingly
llvm-svn: 16481
2004-09-22 20:08:52 +00:00
Reid Spencer 3c20f4b59f Update to add the HAVE_UINT64_T test and the STACK_DIRECTION indicator.
llvm-svn: 16480
2004-09-22 15:32:08 +00:00
Reid Spencer c4eb57c525 The alloca function, strangely enough, is found in the malloc.h header file
on MINGW platform. Provide an #elseif case to #include malloc.h for this
platform if malloc.h is found.

Patch provided by Henrik Bach. Thanks Henrik!

llvm-svn: 16479
2004-09-22 15:28:32 +00:00
Nate Begeman 033b816171 add optimized code sequences for setcc x, 0
llvm-svn: 16478
2004-09-22 04:40:25 +00:00
Chris Lattner b121ae1cec Do not fold (X + C1 != C2) if there are other users of the add. Doing
this transformation used to take a loop like this:

int Array[1000];
void test(int X) {
  int i;
  for (i = 0; i < 1000; ++i)
    Array[i] += X;
}

Compiled to LLVM is:

no_exit:                ; preds = %entry, %no_exit
        %indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ]            ; <uint> [#uses=2]
        %tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar                ; <int*> [#uses=2]
        %tmp.7 = load int* %tmp.4               ; <int> [#uses=1]
        %tmp.9 = add int %tmp.7, %X             ; <int> [#uses=1]
        store int %tmp.9, int* %tmp.4
***     %indvar.next = add uint %indvar, 1              ; <uint> [#uses=2]
***     %exitcond = seteq uint %indvar.next, 1000               ; <bool> [#uses=1]
        br bool %exitcond, label %return, label %no_exit

and turn it into a loop like this:

no_exit:                ; preds = %entry, %no_exit
        %indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ]            ; <uint> [#uses=3]
        %tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar                ; <int*> [#uses=2]
        %tmp.7 = load int* %tmp.4               ; <int> [#uses=1]
        %tmp.9 = add int %tmp.7, %X             ; <int> [#uses=1]
        store int %tmp.9, int* %tmp.4
***     %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
***     %exitcond = seteq uint %indvar, 999             ; <bool> [#uses=1]
        br bool %exitcond, label %return, label %no_exit

Note that indvar.next and indvar can no longer be coallesced.  In machine
code terms, this patch changes this code:

.LBBtest_1:     # no_exit
        mov %EDX, OFFSET Array
        mov %ESI, %EAX
        add %ESI, DWORD PTR [%EDX + 4*%ECX]
        mov %EDX, OFFSET Array
        mov DWORD PTR [%EDX + 4*%ECX], %ESI
        mov %EDX, %ECX
        inc %EDX
        cmp %ECX, 999
        mov %ECX, %EDX
        jne .LBBtest_1  # no_exit

into this:

.LBBtest_1:     # no_exit
        mov %EDX, OFFSET Array
        mov %ESI, %EAX
        add %ESI, DWORD PTR [%EDX + 4*%ECX]
        mov %EDX, OFFSET Array
        mov DWORD PTR [%EDX + 4*%ECX], %ESI
        inc %ECX
        cmp %ECX, 1000
        jne .LBBtest_1  # no_exit

We need better instruction selection to get this:

.LBBtest_1:     # no_exit
        add DWORD PTR [Array + 4*%ECX], EAX
        inc %ECX
        cmp %ECX, 1000
        jne .LBBtest_1  # no_exit

... but at least there is less register juggling

llvm-svn: 16473
2004-09-21 21:35:23 +00:00
Alkis Evlogimenos 89dd63733a The real x87 floating point registers should not be allocatable. They
are only used by the stackifier when transforming FPn register
allocations to the real stack file x87 registers.

llvm-svn: 16472
2004-09-21 21:22:11 +00:00
Misha Brukman 6b17bf7193 s/ISel/PPC64ISel/ to have unique class names for debugging via gdb because the
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly.

llvm-svn: 16471
2004-09-21 18:22:33 +00:00
Misha Brukman 87201ce8f9 s/ISel/PPC32ISel/ to have unique class names for debugging via gdb because the
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly.

llvm-svn: 16470
2004-09-21 18:22:19 +00:00
Misha Brukman 43bd39e04e s/ISel/X86ISel/ to have unique class names for debugging via gdb because the C++
front-end in gcc does not mangle classes in anonymous namespaces correctly.

llvm-svn: 16469
2004-09-21 18:21:21 +00:00
Chris Lattner 0f28cce60c Make sure to set the operand list
llvm-svn: 16466
2004-09-21 17:30:54 +00:00
Reid Spencer 5a6815d332 Fix a problem where the mmap_file test was generating an incorrect test
program that always failed (wouldn't compile).

llvm-svn: 16465
2004-09-21 17:14:44 +00:00
Reid Spencer d057f2bc56 Change the warning text so that NO warnings are permitted. This is now the
case since the AC_CONFIG_SUBDIRS problem has been fixed.

llvm-svn: 16464
2004-09-21 17:13:23 +00:00
Reid Spencer c6f9e0f512 Don't attempt to (illegally) configure a subdir if we don't recognize it.
Instead just create a warning message that says the directory cannot be
configured because it isn't recognized. This also gets rid of a bunch of
warning messages from the auto* tools.

llvm-svn: 16463
2004-09-21 17:12:35 +00:00
Reid Spencer 7c3d8c0af8 Fix the program passed to AC_LANG_PROGRAM to be only the BODY of the main
function, not the whole main function. This problem resulted during
conversion of scripts to the new autoconf standard. The effect was that
the mmap_file test would fail and if it does there is currently an
#ifdef'd #error that causes compilation to fail. Bad, bad, bad.

llvm-svn: 16462
2004-09-21 17:10:52 +00:00
Misha Brukman 62041800ed Thanks to Brad Jones for packed type support!
llvm-svn: 16461
2004-09-21 16:54:37 +00:00
Misha Brukman ca9062016e Thanks to Brad for documentation on adding a DerivedType
llvm-svn: 16460
2004-09-21 16:53:29 +00:00
Chris Lattner 13d909c401 This is an empty directory
llvm-svn: 16459
2004-09-21 16:26:13 +00:00
Chris Lattner 6a229fcaca This is a dead directory now
llvm-svn: 16458
2004-09-21 16:25:41 +00:00
Reid Spencer efbe0ce909 Change the name of the "known" module for Java from llvm-java to Java.
llvm-svn: 16453
2004-09-20 22:14:56 +00:00
Alkis Evlogimenos dc62cada7d Use the right directory for the Java frontend
llvm-svn: 16448
2004-09-20 15:45:36 +00:00
Chris Lattner 42618551d5 Fix potential miscompilations: InstCombine/2004-09-20-BadLoadCombine*.llx
llvm-svn: 16447
2004-09-20 10:15:10 +00:00
Chris Lattner 803fb3c2c3 Two testcases for invalid transformations that instcombine is doing
llvm-svn: 16446
2004-09-20 10:14:27 +00:00
Reid Spencer 5ef171a5b1 Documentation upgrade.
llvm-svn: 16445
2004-09-20 08:09:36 +00:00
Reid Spencer e380f931db Finish the documentation.
llvm-svn: 16444
2004-09-20 08:04:13 +00:00
Reid Spencer 0889f95c02 Tighten up the specification of what counts as a code file. The previous
specification was too liberal in some areas and missing things in others.
This specification is based on the actual extensions found in the source
tree.

llvm-svn: 16443
2004-09-20 08:00:09 +00:00
Reid Spencer 08941821f3 Base the implementation on the llvmdo script so that we only have to
maintain the logic for "what counts as a source file" in one place.

llvm-svn: 16442
2004-09-20 07:22:23 +00:00
Reid Spencer 6707342ff6 Fixed to actually work correctly and be the basis for other tools by
allowing the set of directories searched to be specified either by the
LLVMDO_DIRS env var or by the -dirs "dirs..." command line option.

llvm-svn: 16441
2004-09-20 07:21:19 +00:00
Alkis Evlogimenos d59cebf87a Fix loop condition so that we don't decrement off the beginning of the
list.

llvm-svn: 16440
2004-09-20 06:42:58 +00:00
Chris Lattner 91006d8e2c Don't count .lo files :)
llvm-svn: 16439
2004-09-20 05:01:04 +00:00
Chris Lattner 4f2cf030e8 'Pass' should now not be derived from by clients. Instead, they should derive
from ModulePass.  Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.

llvm-svn: 16436
2004-09-20 04:48:05 +00:00
Chris Lattner 79e523de04 'Pass' should now not be derived from by clients. Instead, they should derive
from ModulePass.  Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.

Also, fix some undefined behavior, expecting | on booleans to evaluate
left-to-right.

llvm-svn: 16435
2004-09-20 04:47:19 +00:00
Chris Lattner 135419193e Finegrainify namespacification
'Pass' should now not be derived from by clients.  Instead, they should derive
from ModulePass.  Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.

llvm-svn: 16434
2004-09-20 04:44:31 +00:00
Chris Lattner cd671065be Prototype more accurately
llvm-svn: 16433
2004-09-20 04:43:57 +00:00
Chris Lattner 3e86084641 Prototype these functions more accurately
llvm-svn: 16432
2004-09-20 04:43:15 +00:00
Chris Lattner 1556b2722d Do not prototype any of these passes as returning Pass*. Instead, be specific
llvm-svn: 16431
2004-09-20 04:41:39 +00:00
Chris Lattner 3c11c04d43 'Pass' should now not be derived from by clients. Instead, they should derive
from ModulePass.  Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.

llvm-svn: 16430
2004-09-20 04:36:29 +00:00
Chris Lattner cd93da1939 Adjust to API changes
llvm-svn: 16429
2004-09-20 04:35:27 +00:00
Reid Spencer 45101043ef Put in a #error in the event that we don't have an mmap that can map a file
into memor. This is just a reminder that the ReadFileIntoAddressSpace
function needs to be properly converted to lib/System and implemented via
read/write if there's no mmap of file support.

llvm-svn: 16428
2004-09-20 04:13:43 +00:00
Reid Spencer ac16ea98de Fix problems with AC_FUNC_MMAP_FILE and AC_LINK_USE_R that caused problems
with correctly recognizing mmap of files and the linker's support of -r.

llvm-svn: 16427
2004-09-20 04:09:56 +00:00
Reid Spencer 57f1c0e0a6 Correct the use AC_RUN_IFELSE to ensure it builds programs correctly by
using the AC_LANG_PROGRAM macro.

llvm-svn: 16426
2004-09-20 04:08:22 +00:00
Reid Spencer ef538ef635 Allow the suffix for shared libraries to be obtained correctly so we can
build them again.

llvm-svn: 16425
2004-09-20 03:06:28 +00:00
Reid Spencer a9317d68b6 The problem with depending on the internal implementation of third party
tools is that you break when they change. This is a case in point.

llvm-svn: 16424
2004-09-20 03:05:46 +00:00
Reid Spencer 3f2f555690 libtool's name is now back to mklib.
llvm-svn: 16423
2004-09-20 01:43:00 +00:00
Reid Spencer 7bf145cb95 Change to support creation of "mklib" instead of "libtool" in builddir.
llvm-svn: 16422
2004-09-20 01:42:32 +00:00
Reid Spencer 3ed4d9f7e9 Update the script to generate mklib instead of libtool.
llvm-svn: 16421
2004-09-20 01:41:24 +00:00
Reid Spencer f184a86f05 Adjust the libtool macros so that libtool's name is "mklib". Also, tidy up
the use of obsolete macros, hopefully making us more compliant on more sys.

llvm-svn: 16420
2004-09-19 23:53:36 +00:00
Reid Spencer 2024d0ed5a Various minor cleanups and replacement of obsoleted macro names.
llvm-svn: 16419
2004-09-19 23:43:52 +00:00
Reid Spencer 200dcd9e68 Numerous fixes to convert ~ into ; that (probably) occurred during data
transmission.

llvm-svn: 16418
2004-09-19 23:42:55 +00:00
Chris Lattner 85927a6730 The lexicon doc is more of a user guide than programming dox
llvm-svn: 16417
2004-09-19 23:15:47 +00:00