blob: 6d486c28d0cc58c83b99a4b0eff2a1d668e1491c [file] [log] [blame]
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.