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

The location of the gcc source and objects should be passed as options to a
configure script rather than being hardwired into the Makefile.

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

The plugin revision is created from the subversion revision.  What if people
are using git etc?  Maybe it should be calculated in a configure script, but
since that might not get run often perhaps the Makefile is the best place.

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".

Teach the build system that the plugin needs to be rebuilt if any of the bits of
LLVM/gcc it depends on changes.


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

After outputting global variables, maybe they can be deleted or marked somehow
(eg: TREE_ASM_WRITTEN) so that GCC does not output them (such output gets sent
to /dev/null, but it would be more efficient to teach GCC to not produce any in
the first place).  Investigate.

Consider using separate caches for types and globals.

Work out how to stop GCC from outputting debug info for global variables
when compiling with -g.  The output is all thrown away, so harmless, but it
would be more efficient not to produce any in the first place.

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

If an ssa name refers to a global (can this happen?), the SSANames map might
need to be updated if the target is altered by changeLLVMConstant.

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


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

Check the effect on code speed of having complex numbers be first class
structures, i.e. values rather than in-memory aggregates.


Features
--------

Output proper debug info rather than throwing most of it away.

Add support for exception handling.

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.
