llvm-6502/lib/Target/IA64
Chris Lattner b8158acc23 Reapply my previous asmprinter changes now with more testing and two
additional bug fixes:

1. The bug that everyone hit was a problem in the asmprinter where it
   would remove $stub but keep the L prefix on a name when emitting the
   indirect symbol.  This is easy to fix by keeping the name of the stub
   and the name of the symbol in a StringMap instead of just keeping a
   StringSet and trying to reconstruct it late.

2. There was a problem printing the personality function.  The current
   logic to print out the personality function from the DWARF information
   is a bit of a cesspool right now that duplicates a bunch of other 
   logic in the asm printer.  The short version of it is that it depends
   on emitting both the L and _ prefix for symbols (at least on darwin)
   and until I can untangle it, it is best to switch the mangler back to
   emitting both prefixes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75646 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14 18:17:16 +00:00
..
AsmPrinter Reapply my previous asmprinter changes now with more testing and two 2009-07-14 18:17:16 +00:00
CMakeLists.txt CMake build fixes, from Xerxes Ranby 2009-07-02 18:53:52 +00:00
IA64.h Remove unused AsmPrinter OptLevel argument, and propogate. 2009-07-01 01:48:54 +00:00
IA64.td
IA64Bundling.cpp Remove non-DebugLoc versions of BuildMI from IA64, Mips. 2009-02-13 02:34:39 +00:00
IA64InstrBuilder.h
IA64InstrFormats.td
IA64InstrInfo.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
IA64InstrInfo.h
IA64InstrInfo.td
IA64ISelDAGToDAG.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
IA64ISelLowering.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
IA64ISelLowering.h Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call. 2009-07-03 06:44:53 +00:00
IA64MachineFunctionInfo.h Add explicit keywords. 2009-06-05 23:05:51 +00:00
IA64RegisterInfo.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
IA64RegisterInfo.h
IA64RegisterInfo.td
IA64Subtarget.cpp
IA64Subtarget.h
IA64TargetAsmInfo.cpp IA64 is as weird as Alpha wrt r/o relocs :) 2009-03-29 17:14:35 +00:00
IA64TargetAsmInfo.h IA64 is as weird as Alpha wrt r/o relocs :) 2009-03-29 17:14:35 +00:00
IA64TargetMachine.cpp Remove unused AsmPrinter OptLevel argument, and propogate. 2009-07-01 01:48:54 +00:00
IA64TargetMachine.h Remove unused AsmPrinter OptLevel argument, and propogate. 2009-07-01 01:48:54 +00:00
Makefile Move IA64 asmprinter to separate library 2009-04-03 10:38:51 +00:00
README

TODO:
  - Un-bitrot ISel
  - Hook up If-Conversion a la ARM target
  - Hook up all branch analysis functions
  - Instruction scheduling
  - Bundling
  - Dynamic Optimization
  - Testing and bugfixing
  - stop passing FP args in both FP *and* integer regs when not required
  - allocate low (nonstacked) registers more aggressively
  - clean up and thoroughly test the isel patterns.
  - fix stacked register allocation order: (for readability) we don't want
    the out? registers being the first ones used
  - fix up floating point
    (nb http://gcc.gnu.org/wiki?pagename=ia64%20floating%20point )
  - bundling!
    (we will avoid the mess that is:
     http://gcc.gnu.org/ml/gcc/2003-12/msg00832.html )
  - instruction scheduling (hmmmm! ;)
  - counted loop support
  - make integer + FP mul/div more clever (we have fixed pseudocode atm)
  - track and use comparison complements

INFO:
  - we are strictly LP64 here, no support for ILP32 on HP-UX. Linux users
    don't need to worry about this.
  - i have instruction scheduling/bundling pseudocode, that really works
    (has been tested, albeit at the perl-script level).
    so, before you go write your own, send me an email!

KNOWN DEFECTS AT THE CURRENT TIME:
  - C++ vtables contain naked function pointers, not function descriptors,
  which is bad. see http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=406
  - varargs are broken
  - alloca doesn't work (indeed, stack frame layout is bogus)
  - no support for big-endian environments
  - (not really the backend, but...) the CFE has some issues on IA64.
    these will probably be fixed soon.
  
ACKNOWLEDGEMENTS:
  - Chris Lattner (x100)
  - Other LLVM developers ("hey, that looks familiar")

CONTACT:
  - You can email me at duraid@octopus.com.au. If you find a small bug,
    just email me. If you find a big bug, please file a bug report
    in bugzilla! http://llvm.cs.uiuc.edu is your one stop shop for all
    things LLVM.