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
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
llvm.spec
llvm.spec.in
Makefile
Makefile.am Top level makefile for building LLVM with automake. 2004-10-10 19:13:03 +00:00
Makefile.common
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

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.