llvm-6502/include/llvm
Arnold Schwaighofer 30e62c098b Tail call optimization improvements:
Move platform independent code (lowering of possibly overwritten
arguments, check for tail call optimization eligibility) from
target X86ISelectionLowering.cpp to TargetLowering.h and
SelectionDAGISel.cpp.

Initial PowerPC tail call implementation:

Support ppc32 implemented and tested (passes my tests and
test-suite llvm-test).  
Support ppc64 implemented and half tested (passes my tests).
On ppc tail call optimization is performed if 
  caller and callee are fastcc
  call is a tail call (in tail call position, call followed by ret)
  no variable argument lists or byval arguments
  option -tailcallopt is enabled
Supported:
 * non pic tail calls on linux/darwin
 * module-local tail calls on linux(PIC/GOT)/darwin(PIC)
 * inter-module tail calls on darwin(PIC)
If constraints are not met a normal call will be emitted.

A test checking the argument lowering behaviour on x86-64 was added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50477 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-30 09:16:33 +00:00
..
ADT Remove the SmallVector ctor that converts from a SmallVectorImpl. This 2008-04-28 06:44:42 +00:00
Analysis Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989 2008-04-25 16:53:59 +00:00
Assembly
Bitcode Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989 2008-04-25 16:53:59 +00:00
CodeGen Use std::set instead of std::priority_queue for the RegReductionPriorityQueue. 2008-04-29 09:07:59 +00:00
Config Use C-style comments :) 2008-03-23 13:44:17 +00:00
Debugger rewrite SourceFile to be in terms of MemoryBuffer, not MappedFile. 2008-04-01 03:59:34 +00:00
ExecutionEngine Cosmetic changes, as suggested by Evan. No functionality changes. 2008-04-20 17:44:19 +00:00
Support Add more alignment enums. 2008-04-28 17:58:20 +00:00
System Add "empty()" method to sys::Path and remove unnecessary whitespace. 2008-04-16 18:27:02 +00:00
Target Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
Transforms Rename DeadLoopElimination to LoopDeletion, part 2. 2008-04-29 20:06:54 +00:00
AbstractTypeUser.h
Argument.h Expose parameter attributes via C bindings. 2008-04-28 17:37:06 +00:00
AutoUpgrade.h
BasicBlock.h Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989 2008-04-25 16:53:59 +00:00
CallGraphSCCPass.h PassInfo keep tracks whether a pass is an analysis pass or not. 2008-03-19 21:56:59 +00:00
CallingConv.h
Constant.h
Constants.h Don't try to convert PPC long double. 2008-04-28 19:46:58 +00:00
DerivedTypes.h Enforce that multiple return values have to have at least one result. 2008-04-23 05:36:34 +00:00
Function.h Convenience method for setting the nounwind 2008-04-08 07:23:58 +00:00
GlobalAlias.h API changes for class Use size reduction, wave 1. 2008-04-06 20:25:17 +00:00
GlobalValue.h
GlobalVariable.h API changes for class Use size reduction, wave 1. 2008-04-06 20:25:17 +00:00
InlineAsm.h
InstrTypes.h API changes for class Use size reduction, wave 1. 2008-04-06 20:25:17 +00:00
Instruction.def
Instruction.h add a handy helper method to instruction, useful for determining 2008-04-20 22:11:30 +00:00
Instructions.h API changes for class Use size reduction, wave 1. 2008-04-06 20:25:17 +00:00
IntrinsicInst.h
Intrinsics.h add missing #include 2008-04-30 04:56:14 +00:00
Intrinsics.td Fix 80 column violations. 2008-03-04 03:19:19 +00:00
IntrinsicsARM.td
IntrinsicsCellSPU.td
IntrinsicsPowerPC.td
IntrinsicsX86.td Undo 48570. Correctly match mmx shift instructions with an immediate operand. 2008-03-21 00:40:09 +00:00
LinkAllPasses.h Rename DeadLoopElimination to LoopDeletion, part 2. 2008-04-29 20:06:54 +00:00
LinkAllVMCore.h prune unneeded #includes 2008-04-01 04:00:45 +00:00
Linker.h
LinkTimeOptimizer.h
Module.h Fix comment. 2008-04-16 20:45:31 +00:00
ModuleProvider.h Add explicit keywords. 2008-03-25 22:06:05 +00:00
ParameterAttributes.h Various improvements suggested by Duncan 2008-03-13 04:33:03 +00:00
Pass.h Don't include <map> in Pass.h, which doesn't need it. This requires 2008-03-21 23:51:57 +00:00
PassAnalysisSupport.h
PassManager.h Give PassManager and FunctionPassManager a common base class, with 2008-03-11 16:41:42 +00:00
PassManagers.h Don't include <map> in Pass.h, which doesn't need it. This requires 2008-03-21 23:51:57 +00:00
PassSupport.h PassInfo keep tracks whether a pass is an analysis pass or not. 2008-03-19 21:56:59 +00:00
SymbolTableListTraits.h
Type.h
TypeSymbolTable.h
Use.h Fix a copy+paste error in a comment. 2008-04-16 21:57:29 +00:00
User.h API changes for class Use size reduction, wave 1. 2008-04-06 20:25:17 +00:00
Value.h add a method for comparing to see if a value has a specified name. 2008-04-30 03:55:40 +00:00
ValueSymbolTable.h