LLVM backend for 6502
Go to file
Chris Lattner 30ba5690cf This patch implements two things (sorry).
First, it allows SRA of globals that have embedded arrays, implementing
GlobalOpt/globalsra-partial.llx.  This comes up infrequently, but does allow,
for example, deleting several stores to dead parts of globals in dhrystone.

Second, this implements GlobalOpt/malloc-promote-*.llx, which is the
following nifty transformation:

Basically if a global pointer is initialized with malloc, and we can tell
that the program won't notice, we transform this:

struct foo *FooPtr;
...
  FooPtr = malloc(sizeof(struct foo));
...
  FooPtr->A   FooPtr->B

Into:

struct foo FooPtrBody;
...
   FooPtrBody.A  FooPtrBody.B

This comes up occasionally, for example, the 'disp' global in 183.equake (where
the xform speeds the CBE version of the program up from 56.16s to 52.40s (7%)
on apoc), and the 'desired_accept', 'fixLRBT', 'macroArray', & 'key_queue'
globals in 300.twolf (speeding it up from 22.29s to 21.55s (3.4%)).

The nice thing about this xform is that it exposes the resulting global to
global variable optimization and makes alias analysis easier in addition to
eliminating a few loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16916 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 05:54:41 +00:00
autoconf Directory changes 2004-10-10 22:17:02 +00:00
docs Fix grammaro 2004-10-09 19:37:02 +00:00
examples Build BFtoLLVM example front-end by default 2004-10-05 18:05:53 +00:00
include/llvm Get friendly with Type 2004-10-07 19:21:43 +00:00
lib This patch implements two things (sorry). 2004-10-11 05:54:41 +00:00
projects Remove exhuberant-style comments which remained from copying file from `sample' 2004-10-11 00:56:41 +00:00
runtime Don't call memset if malloc returns a null pointer 2004-10-06 23:08:03 +00:00
test This testcase ensures that we can SRA a global even if part of the global 2004-10-11 05:00:30 +00:00
tools Don't miss global optimizations because we run before the inliner 2004-10-11 04:47:18 +00:00
utils Initial version of automake Makefile.am file. 2004-10-10 22:07:57 +00:00
.cvsignore Ok, try #2, this time I'll not be stupid 2003-08-03 18:33:24 +00:00
configure Add checks for the ZLIB and BZIP2 header files, not just the libraries. 2004-10-04 22:05:53 +00:00
configure_am A configure script to configure LLVM for compilation with automake 2004-10-10 22:16:50 +00:00
CREDITS.TXT Update email address 2004-09-23 04:39:30 +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 Updated for 1.3. 2004-08-16 15:17:40 +00:00
llvm.spec.in Updated for 1.3. 2004-08-16 15:17:40 +00:00
Makefile Changed the distclean target to handle the new location of config.h. 2004-09-17 15:08:25 +00:00
Makefile.am Top level makefile for building LLVM with automake. 2004-10-10 19:13:03 +00:00
Makefile.common Standardize header comments of top-level Makefiles. 2004-04-24 00:10:56 +00:00
Makefile.config.in Fix typo in makefile variable name that prevents zlib from being recognized 2004-10-04 17:49:19 +00:00
Makefile.rules Fix grammar 2004-10-11 02:06:40 +00:00
Makefile.rules.am Reorganize FINDLIBS to make most comment libs searched first. 2004-10-10 22:54:46 +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.