LLVM backend for 6502
Go to file
Chris Lattner bfd3e52701 Do not compute the predecessor list for a block unless we need it.
This speeds up simplifycfg on this program, from 44.87s to 0.29s (with
a profiled build):

 #define CL0(a) case a: goto c;
 #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \
 CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9)
 #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \
 CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9)
 #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \
 CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9)
 #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \
 CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9)

 void f();

 void a() {
     int b;
  c: switch (b) {
         CL4(1)
     }
 }

This testcase is contrived to expose N^2 behavior, but this patch should speedup
simplifycfg on any programs that use large switch statements.  This testcase
comes from GCC PR17895.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17389 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 06:53:58 +00:00
autoconf Added the poolalloc module to the list of projects to configure, if present. 2004-10-28 13:35:00 +00:00
docs Wrap to 80 cols 2004-10-31 23:24:31 +00:00
examples Change Library Names Not To Conflict With Others When Installed 2004-10-27 23:18:45 +00:00
include/llvm * Do not refer to ActualCallees in CBU, when we can do it locally. 2004-10-31 23:41:26 +00:00
lib Do not compute the predecessor list for a block unless we need it. 2004-11-01 06:53:58 +00:00
projects Change macro names per naming standard in Makefile.rules. 2004-10-30 09:26:22 +00:00
runtime Internalize variable names to prevent recursive assignment. Cleanup docs. 2004-10-30 09:19:36 +00:00
test Internalize variable names to prevent recursive assignment. Cleanup docs. 2004-10-30 09:19:36 +00:00
tools No, really, the library name is `LLVMexecve' 2004-10-31 17:30:52 +00:00
utils Fix patterns to match only one-char words. 2004-10-30 23:11:26 +00:00
.cvsignore
configure Added the poolalloc module to the list of projects to configure, if present. 2004-10-28 13:35:00 +00:00
CREDITS.TXT Give sumant credit too! 2004-10-27 15:54:23 +00:00
LICENSE.TXT Adjust the license files based on the actual content of llvm and llvm-test 2004-09-16 16:41:31 +00:00
llvm.spec
llvm.spec.in
Makefile Internalize variable names to prevent recursive assignment. Cleanup docs. 2004-10-30 09:19:36 +00:00
Makefile.common No really, this is LLVM! 2004-10-30 00:57:52 +00:00
Makefile.config.in Internalize variable names to prevent recursive assignment. Cleanup docs. 2004-10-30 09:19:36 +00:00
Makefile.rules When compiling a file, indicate what build it is for 2004-11-01 06:14:59 +00:00
README.txt Make the text of this file a little more useful. 2004-09-02 22:49:27 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level 
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments. 

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.