llvm-6502/lib
Chris Lattner 239738a162 Use target-specific nodes for calls. This allows the fastcc code to not have
to do ugly hackery to avoid emitting code like this:

   call foo
   mov vreg, EAX
   adjcallstackup ...

If foo is a fastcc call and if vreg gets spilled, we might end up with this:

   call foo
   mov [ESP+offset], EAX     ;; Offset doesn't consider the 12!
   sub ESP, 12

Which is bad.  The previous hacky code to deal with this was A) gross B) not
good enough.  In particular, it could miss cases and emit the bad code above.
Now we always emit this:

   call foo
   adjcallstackup ...
   mov vreg, EAX

directly.

This makes fastcc with callees poping the stack work much better.  Next
stop (finally!) really is tail calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22021 91177308-0d34-0410-b5e6-96231b3b80d8
2005-05-14 08:48:15 +00:00
..
Analysis By definition, 'tail' calls cannot access the stack frame of their caller. 2005-05-08 23:58:12 +00:00
Archive Remove vim settings from source code; people should use llvm/utils/vim/vimrc 2005-05-05 22:33:09 +00:00
AsmParser * Convert tabs to spaces, fix code alignment 2005-05-10 22:02:28 +00:00
Bytecode fix the assertion 2005-05-13 23:35:47 +00:00
CodeGen allow token chain at start or end of node 2005-05-14 08:34:53 +00:00
Debugger Remove trailing whitespace 2005-04-21 22:36:52 +00:00
ExecutionEngine Fix a really horrible problem that causes the JIT to miscompile any program 2005-05-12 06:01:28 +00:00
Linker Preserve CC's when linking modules 2005-05-09 01:09:39 +00:00
Support Capitalize 2005-05-13 19:49:09 +00:00
System Remove vim settings from source code; people should use llvm/utils/vim/vimrc 2005-05-05 22:33:09 +00:00
Target Use target-specific nodes for calls. This allows the fastcc code to not have 2005-05-14 08:48:15 +00:00
Transforms calling a function with the wrong CC is undefined, turn it into an unreachable 2005-05-13 07:09:09 +00:00
VMCore Verify that varargs functions all have ccc 2005-05-08 22:27:09 +00:00
Makefile