summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Move CallingConvLower.cpp out of the SelectionDAG directory.Dan Gohman2010-07-071-214/+0
| | | | llvm-svn: 107781
* Add versions of OutputArgReg, AnalyzeReturn, and AnalyzeCallOperandsDan Gohman2010-07-061-0/+35
| | | | | | which do not depend on SelectionDAG. llvm-svn: 107666
* Change errs() to dbgs().David Greene2010-01-051-6/+7
| | | | llvm-svn: 92574
* Add code to check at SelectionDAGISel::LowerArguments time to see if return ↵Kenneth Uildriks2009-11-071-0/+15
| | | | | | values can be lowered to registers. Coming soon, code to perform sret-demotion if return values cannot be lowered to registers llvm-svn: 86324
* Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.Sandeep Patel2009-09-021-1/+1
| | | | llvm-svn: 80773
* Change Pass::print to take a raw ostream instead of std::ostream,Chris Lattner2009-08-231-12/+12
| | | | | | update all code that this affects. llvm-svn: 79830
* Rename MVT to EVT, in preparation for splitting SimpleValueType out into its ↵Owen Anderson2009-08-101-15/+15
| | | | | | own struct type. llvm-svn: 78610
* Major calling convention code refactoring.Dan Gohman2009-08-051-26/+27
| | | | | | | | | | | | | | | | | | | Instead of awkwardly encoding calling-convention information with ISD::CALL, ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering provides three virtual functions for targets to override: LowerFormalArguments, LowerCall, and LowerRet, which replace the custom lowering done on the special nodes. They provide the same information, but in a more immediately usable format. This also reworks much of the target-independent tail call logic. The decision of whether or not to perform a tail call is now cleanly split between target-independent portions, and the target dependent portion in IsEligibleForTailCallOptimization. This also synchronizes all in-tree targets, to help enable future refactoring and feature work. llvm-svn: 78142
* Get rid of the Pass+Context magic.Owen Anderson2009-07-221-1/+1
| | | | llvm-svn: 76702
* llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.Torok Edwin2009-07-141-25/+25
| | | | | | | | | This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
* Convert more assert(0)+abort() -> LLVM_UNREACHABLE,Torok Edwin2009-07-111-18/+32
| | | | | | and abort()/exit() -> llvm_report_error(). llvm-svn: 75363
* Thread LLVMContext through MVT and related parts of SDISel.Owen Anderson2009-07-091-2/+2
| | | | llvm-svn: 75153
* Minor top-level comment fix.Dan Gohman2009-03-311-1/+1
| | | | llvm-svn: 68113
* Add "inreg" field to CallSDNode (doesn't increaseDale Johannesen2008-09-261-1/+4
| | | | | | | | | its size). Adjust various lowering functions to pass this info through from CallInst. Use it to implement sseregparm returns on X86. Remove X86_ssecall calling convention. llvm-svn: 56677
* Define CallSDNode, an SDNode subclass for use with ISD::CALL.Dan Gohman2008-09-131-8/+7
| | | | | | | | | | | | | Currently it just holds the calling convention and flags for isVarArgs and isTailCall. And it has several utility methods, which eliminate magic 5+2*i and similar index computations in several places. CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle nodes that are not CSE'd gracefully. llvm-svn: 56183
* - Doh. Pass vector by value is bad.Evan Cheng2008-09-071-1/+11
| | | | | | - Add a AnalyzeCallResult specialized for calls which produce a single value. This is used by fastisel. llvm-svn: 55879
* Add a variant of AnalyzeCallOperands that can be used by fast isel.Evan Cheng2008-09-051-0/+17
| | | | llvm-svn: 55838
* Trim unnecessary #includes.Dan Gohman2008-07-111-1/+0
| | | | llvm-svn: 53471
* Correct the allocation size for CCState's UsedRegs member, whichDan Gohman2008-06-301-1/+1
| | | | | | | | only needs one bit for each register. UsedRegs is a SmallVector sized at 16, so this eliminates a heap allocation/free for every call and return processed by Legalize on most targets. llvm-svn: 52915
* Wrap MVT::ValueType in a struct to get type safetyDuncan Sands2008-06-061-10/+10
| | | | | | | | | | | | | | | | and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
* Introduce a new node for holding call argumentDuncan Sands2008-03-211-14/+11
| | | | | | | | | | | | | | | | | flags. This is needed by the new legalize types infrastructure which wants to expand the 64 bit constants previously used to hold the flags on 32 bit machines. There are two functional changes: (1) in LowerArguments, if a parameter has the zext attribute set then that is marked in the flags; before it was being ignored; (2) PPC had some bogus code for handling two word arguments when using the ELF 32 ABI, which was hard to convert because of the bogusness. As suggested by the original author (Nicolas Geoffray), I've disabled it for the moment. Tested with "make check" and the Ada ACATS testsuite. llvm-svn: 48640
* Increase ISD::ParamFlags to 64 bits. Increase the ByValSizeDale Johannesen2008-03-101-3/+5
| | | | | | | | | | field to 32 bits, thus enabling correct handling of ByVal structs bigger than 0x1ffff. Abstract interface a bit. Fixes gcc.c-torture/execute/pr23135.c and gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing on ppc32, quietly producing wrong code on x86-32.) llvm-svn: 48122
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-4/+4
| | | | llvm-svn: 46930
* Oops. Forgot to commit this.Evan Cheng2008-01-151-5/+12
| | | | llvm-svn: 46002
* ByVal stack slot alignment should be at least as large as pointer ABI alignment.Evan Cheng2008-01-151-1/+3
| | | | llvm-svn: 45995
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* propagate struct size and alignment of byval arguments to the DAGRafael Espindola2007-08-101-1/+11
| | | | llvm-svn: 40986
* add isVarArg to CCStateChris Lattner2007-06-191-2/+3
| | | | llvm-svn: 37640
* add methods for analysis of call results and return nodes.Chris Lattner2007-02-281-12/+42
| | | | llvm-svn: 34738
* add methods to analyze calls and formals.Chris Lattner2007-02-281-0/+34
| | | | llvm-svn: 34736
* Minor refactoring of CC Lowering interfacesChris Lattner2007-02-271-1/+4
| | | | llvm-svn: 34656
* move CC Lowering stuff to its own public interfaceChris Lattner2007-02-271-0/+34
llvm-svn: 34655
OpenPOWER on IntegriCloud