llvm/lib
Chris Lattner 3221ad0db7 Add the ability to compute exit values for complex loop using unanalyzable
operations.  This allows us to compile this testcase:

int main() {
        int h = 1;
         do h = 3 * h + 1; while (h <= 256);
        printf("%d\n", h);
        return 0;
}

into this:

int %main() {
entry:
        call void %__main( )
        %tmp.6 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([4 x sbyte]*  %.str_1, long 0, long 0), int 364 )        ; <int> [#uses=0]
        ret int 0
}

This testcase was taken directly from 256.bzip2, believe it or not.

This code is not as general as I would like.  Next up is to refactor it
a bit to handle more cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13019 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-17 22:58:41 +00:00
..
Analysis Add the ability to compute exit values for complex loop using unanalyzable 2004-04-17 22:58:41 +00:00
Archive Use the true, decoded name of the archive member in getObjectType. 2004-03-31 19:51:00 +00:00
AsmParser Support getelementptr instructions which use uint's to index into structure 2004-04-05 01:30:04 +00:00
Bytecode Implement support for a new LLVM 1.3 bytecode format, which uses uint's 2004-04-05 01:27:26 +00:00
CodeGen Fix bug introduced in previous commit. 2004-04-12 20:26:39 +00:00
Debugger "fix" a nasty race condition 2004-01-14 21:18:03 +00:00
ExecutionEngine Add a TargetData to the PassManager regardless of the TargetMachine. 2004-04-14 17:45:52 +00:00
Linker Don't use invalid HTML in a doxygen comment. 2004-04-15 15:23:45 +00:00
Support Bugpoint was not correctly capturing stderr! This caused it to "find" bugs 2004-04-16 05:35:58 +00:00
Target Give SparcV9CodeEmitter a head-of-file comment and a PassName. 2004-04-15 20:23:13 +00:00
Transforms If the loop executes a constant number of times, try a bit harder to replace 2004-04-17 18:44:09 +00:00
VMCore Fix retriving parent Function. 2004-04-16 17:37:12 +00:00
Makefile CBackend is no longer here 2004-02-13 23:29:37 +00:00