- Sep 27, 2004
-
-
Chris Lattner authored
where we folded (X & 254) -> X < 1 instead of X < 2. These problems were latent problems exposed by the latest patch. llvm-svn: 16528
-
Misha Brukman authored
llvm-svn: 16526
-
Chris Lattner authored
end of files, breaking the CFE build. As a gross hack around this, ignore any trailing garbage on bytecode files. Thanks to Brian for digging in and identifying the problem. llvm-svn: 16525
-
Chris Lattner authored
triggers often, for example: 6x in povray, 1x in gzip, 279x in gcc, 1x in crafty, 8x in eon, 11x in perlbmk, 362x in gap, 4x in vortex, 14 in m88ksim, 211x in 126.gcc, 1x in compress, 11x in ijpeg, and 4x in 147.vortex. llvm-svn: 16521
-
Nate Begeman authored
llvm-svn: 16519
-
- Sep 26, 2004
-
-
Misha Brukman authored
llvm-svn: 16518
-
- Sep 25, 2004
-
-
Reid Spencer authored
llvm-svn: 16515
-
Reid Spencer authored
llvm-svn: 16513
-
Reid Spencer authored
llvm-svn: 16512
-
Reid Spencer authored
llvm-svn: 16511
-
- Sep 24, 2004
-
-
Chris Lattner authored
These combinations trigger 4 times in povray, 7x in gcc, 4x in gap, and 2x in bzip2. llvm-svn: 16508
-
- Sep 23, 2004
-
-
Chris Lattner authored
No functionality changes here. llvm-svn: 16505
-
Chris Lattner authored
in perlbmk llvm-svn: 16504
-
Chris Lattner authored
llvm-svn: 16499
-
Reid Spencer authored
llvm-svn: 16495
-
Nate Begeman authored
the ISel to use indexed and non-zero immediate offsets for GEPs that have more than one use. This is common for instruction sequences such as a load followed by a modify and store to the same address. llvm-svn: 16493
-
- 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
-
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
-
- Sep 20, 2004
-
-
Chris Lattner authored
llvm-svn: 16447
-
Alkis Evlogimenos authored
list. llvm-svn: 16440
-
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
-
Chris Lattner authored
llvm-svn: 16432
-
Reid Spencer authored
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
-
- Sep 19, 2004
-
-
Chris Lattner authored
Regression/Transforms/InstCombine/CPP_min_max.llx llvm-svn: 16409
-
Chris Lattner authored
unfortunately is the cause of a bunch of failures from tonight, and the reason the tester is running so slow :( llvm-svn: 16407
-
Chris Lattner authored
whose addresses where used by trivial phi nodes and select instructions. This is now performed by the instcombine pass, which is more powerful, is much simpler, and is faster. This allows the deletion of a bunch of code, two FIXME's and two gotos. llvm-svn: 16406
-
Chris Lattner authored
loads, and implement two new transforms: InstCombine/load.ll:test[56]. llvm-svn: 16404
-