- Sep 23, 2004
-
-
Chris Lattner authored
llvm-svn: 16491
-
Chris Lattner authored
llvm-svn: 16490
-
Reid Spencer authored
llvm-svn: 16489
-
- Sep 22, 2004
-
-
Misha Brukman authored
llvm-svn: 16485
-
Misha Brukman authored
llvm-svn: 16484
-
Misha Brukman authored
llvm-svn: 16483
-
Misha Brukman authored
llvm-svn: 16482
-
Misha Brukman authored
llvm-svn: 16481
-
Reid Spencer authored
llvm-svn: 16480
-
Reid Spencer authored
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
-
Nate Begeman authored
llvm-svn: 16478
-
- Sep 21, 2004
-
-
Chris Lattner authored
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
-
Alkis Evlogimenos authored
are only used by the stackifier when transforming FPn register allocations to the real stack file x87 registers. llvm-svn: 16472
-
Misha Brukman authored
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly. llvm-svn: 16471
-
Misha Brukman authored
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly. llvm-svn: 16470
-
Misha Brukman authored
front-end in gcc does not mangle classes in anonymous namespaces correctly. llvm-svn: 16469
-
Chris Lattner authored
llvm-svn: 16466
-
Reid Spencer authored
program that always failed (wouldn't compile). llvm-svn: 16465
-
Reid Spencer authored
case since the AC_CONFIG_SUBDIRS problem has been fixed. llvm-svn: 16464
-
Reid Spencer authored
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
-
Reid Spencer authored
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
-
Misha Brukman authored
llvm-svn: 16461
-
Misha Brukman authored
llvm-svn: 16460
-
Chris Lattner authored
llvm-svn: 16459
-
Chris Lattner authored
llvm-svn: 16458
-
Reid Spencer authored
llvm-svn: 16453
-
- Sep 20, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 16448
-
Chris Lattner authored
llvm-svn: 16447
-
Chris Lattner authored
llvm-svn: 16446
-
Reid Spencer authored
llvm-svn: 16445
-
Reid Spencer authored
llvm-svn: 16444
-
Reid Spencer authored
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
-
Reid Spencer authored
maintain the logic for "what counts as a source file" in one place. llvm-svn: 16442
-
Reid Spencer authored
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
-
Alkis Evlogimenos authored
list. llvm-svn: 16440
-
Chris Lattner authored
llvm-svn: 16439
-
Chris Lattner authored
from ModulePass. Instead of implementing Pass::run, then should implement ModulePass::runOnModule. llvm-svn: 16436
-
Chris Lattner authored
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
-
Chris Lattner authored
'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
-
Chris Lattner authored
llvm-svn: 16433
-