Items marked with * are high priority.

Build system
------------

Determination of the target triple should be moved from the Makefile to a
configure script.

Target subdirectories should have their own Makefiles, instead of assuming
that there's only one source file and that it's called llvm-target.cpp.

Currently the target directory (eg: i386) is calculated from the target triple
(eg: x86_64-unknown-linux-gnu) using the "target" tool.  This should be done
from a configure script, rather from the Makefile.

Define LLVM_TARGET_NAME from the Makefile rather than being specified in
llvm-target.h.  Maybe LLVM_TARGET_INTRINSIC_PREFIX could go too.  An annoyance
is that the target tool returns "x86" while what is needed is "X86".

Optimizations
-------------

Consider using separate caches for types and globals.

Correctness
-----------

GCC now has per-function optimization levels.  Add support for this.

Unify the code that determines which LLVM linkage type to use.  Need to do
a bunch of experimenting to work out how the mapping should really be done.

* Stop hooking directly into target specific ABI code (which requires patching
gcc).  Instead, either try to get ABI info from the gcc hooks (which may mean
translating RTL) or reuse the clang code.

Testing
-------

Move the old FrontendXYZ tests from LLVM to dragonegg.

Code quality
------------

Consider not extending GEP indices to "pointer type" since GEP indices can have
any integer type now (except for struct GEP's - there the type must be i32).
Note that GEP indices are implicitly sign extended, so unsigned indices still
need to be explicitly zero extended to pointer size (is this always done now?).

Clarify and extend the distinction between gimple registers and "the rest",
the rest being mostly references.

BIT_FIELD_REF is used to extract (and presumably insert) vector elements.
Consider turning this directly into the corresponding vector operations.

Work in terms of units rather than octets (i8).  For example, if the target
has a 16 bit byte, then use i16 for byte addressing.

Convert GCC floating point register constants without "going through memory"
(see TreeToLLVM::EmitRealRegisterConstant).

Reduce the use of macros.

Features
--------

* Move debug info generation over to the latest LLVM system, since we are now
the only user of the old debug info system.

Output proper debug info rather than throwing most of it away.  Provide column
numbers in location info.

Many x86 specific builtins are not supported, even though it would be easy to
add support for some of them, for example the 256 bit versions of builtins we
do support.  Improve this.

The GCC builtin lowering outputs helpful warnings (for example,
20081109_0.c:3:35: warning: attempt to free a non-heap object ‘bar’,
see maybe_emit_free_warning), but we don't.  Improve this somehow.

Make LTO transparent.  One part of this working out how to write bitcode when
using -c, which runs into trouble because gcc insists on running the assembler
on compiler output.  Another part is looking into the possibility of encoding
bitcode in ELF sections like gcc does for gimple when doing LTO.

Add support for address spaces.

Add support for non-temporal stores.

Add type based alias analysis tags in more cases.  Extend LLVM's tbaa
representation so it can represent a DAG and generate tags for struct
types too.
