1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/lib
Chris Lattner 774b9718dc Add a hack to avoid some horrible code in some cases by always emitting
token chains first.  For this C function:

int test() {
  int i;
  for (i = 0; i < 100000; ++i)
    foo();
}

Instead of emitting this (condition before call)

.LBB_test_1:    ; no_exit
        addi r30, r30, 1
        lis r2, 1
        ori r2, r2, 34464
        cmpw cr2, r30, r2
        bl L_foo$stub
        bne cr2, .LBB_test_1    ; no_exit

Emit this:

.LBB_test_1:    ; no_exit
        bl L_foo$stub
        addi r30, r30, 1
        lis r2, 1
        ori r2, r2, 34464
        cmpw cr0, r30, r2
        bne cr0, .LBB_test_1    ; no_exit

Which makes it so we don't have to save/restore cr2 in the prolog/epilog of
the function.

This also makes the code much more similar to what the pattern isel produces.

llvm-svn: 23135
2005-08-29 23:21:29 +00:00
..
Analysis floor/ceil don't read/write memory. This allows gcse to eliminate 6 calls 2005-08-24 16:58:56 +00:00
AsmParser Implement PR614: 2005-08-27 18:50:39 +00:00
Bytecode Culling out use of unions for converting FP to bits and vice versa. 2005-08-17 19:34:49 +00:00
CodeGen Add a hack to avoid some horrible code in some cases by always emitting 2005-08-29 23:21:29 +00:00
Debugger For PR495: 2005-07-07 23:21:43 +00:00
ExecutionEngine one cannot allocate a global, until one is done initializing the global pointers 2005-08-01 17:35:40 +00:00
Linker For PR495: 2005-07-07 23:21:43 +00:00
Support Allow bugpoint+PPC codegen to use fsqrt 2005-08-29 13:14:24 +00:00
System For PR616: 2005-08-24 10:07:20 +00:00
Target Fix a dumb bug of mine where we were mishandling the PPC ABI (undef handling). 2005-08-29 22:22:57 +00:00
Transforms Fix Regression/Transforms/Reassociate/2005-08-24-Crash.ll 2005-08-24 17:55:32 +00:00
VMCore Move code dependency for MathExtras.h out of Constants.h. 2005-08-17 20:06:22 +00:00
Makefile Add the Linker library 2004-11-14 21:54:41 +00:00