summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Convert INSERT_SUBREG to COPY in TwoAddressInstructionPass.Jakob Stoklund Olesen2010-07-063-2/+35
| | | | | | | | | INSERT_SUBREG will now only appear in SSA machine instructions. Fix the handling of partial redefs in ProcessImplicitDefs. This is now relevant since partial redef COPY instructions appear. llvm-svn: 107726
* CanLowerReturn doesn't need a SelectionDAG; it just needs an LLVMContext.Dan Gohman2010-07-062-5/+5
| | | | | | SelectBasicBlock doesn't needs its BasicBlock argument. llvm-svn: 107712
* Propagate debug loc.Devang Patel2010-07-064-8/+10
| | | | llvm-svn: 107710
* One more case assuming that subregs have live ranges.Jakob Stoklund Olesen2010-07-061-2/+2
| | | | llvm-svn: 107700
* Fix buildbot breakage where a def is missing.Jakob Stoklund Olesen2010-07-061-0/+2
| | | | llvm-svn: 107698
* Be more forgiving when calculating alias interference for physreg coalescing.Jakob Stoklund Olesen2010-07-063-105/+59
| | | | | | | | | | | | It is OK for an alias live range to overlap if there is a copy to or from the physical register. CoalescerPair can work out if the copy is coalescable independently of the alias. This means that we can join with the actual destination interval instead of using the getOrigDstReg() hack. It is no longer necessary to merge clobber ranges into subregisters. llvm-svn: 107695
* Reapply r107655 with fixes; insert the pseudo instruction intoDan Gohman2010-07-062-7/+30
| | | | | | | the block before calling the expansion hook. And don't put EFLAGS in a mbb's live-in list twice. llvm-svn: 107691
* Fix to 80-col.Eric Christopher2010-07-061-21/+21
| | | | llvm-svn: 107684
* tighten up this code.Chris Lattner2010-07-061-12/+7
| | | | llvm-svn: 107670
* Revert r107655.Dan Gohman2010-07-061-25/+5
| | | | llvm-svn: 107668
* Add versions of OutputArgReg, AnalyzeReturn, and AnalyzeCallOperandsDan Gohman2010-07-061-0/+35
| | | | | | which do not depend on SelectionDAG. llvm-svn: 107666
* Fix a major regression on COFF targets introduced by r103267: 'discardable' ↵Anton Korobeynikov2010-07-061-1/+1
| | | | | | | | section means that it is used only during the program load and can be discarded afterwards. This way *only* debug sections can be discarded, but not the opposite. Seems like the copy-and-pasto from ELF code, since there it contains the reverse flag ('alloc'). llvm-svn: 107658
* Fix a bunch of custom-inserter functions to handle the case whereDan Gohman2010-07-061-5/+25
| | | | | | the pseudo instruction is not at the end of the block. llvm-svn: 107655
* Fix up -fstack-protector on linux to use the segmentEric Christopher2010-07-061-2/+15
| | | | | | | | | registers. Split out testcases per architecture and os now. Patch from Nelson Elhage. llvm-svn: 107640
* more tidying.Chris Lattner2010-07-051-8/+4
| | | | llvm-svn: 107615
* random tidyingChris Lattner2010-07-052-41/+43
| | | | llvm-svn: 107612
* Print symbolic subreg indices on REG_SEQUENCE and INSERT_SUBREG.Jakob Stoklund Olesen2010-07-041-0/+2
| | | | llvm-svn: 107602
* Infer alignments of fixed frame objects when they are constructed. This ↵Evan Cheng2010-07-042-18/+7
| | | | | | ensures remat'ed loads from fixed slots have the right alignments. llvm-svn: 107591
* Proper indentation.Bill Wendling2010-07-041-1/+1
| | | | llvm-svn: 107581
* Fix typo.Eric Christopher2010-07-031-1/+1
| | | | llvm-svn: 107556
* Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill ↵Evan Cheng2010-07-032-4/+3
| | | | | | slots so it's always false. llvm-svn: 107550
* Detect and handle COPY in many places.Jakob Stoklund Olesen2010-07-039-40/+67
| | | | | | | This code is transitional, it will soon be possible to eliminate isExtractSubreg, isInsertSubreg, and isMoveInstr in most places. llvm-svn: 107547
* 80-col fixup.Eric Christopher2010-07-021-1/+2
| | | | llvm-svn: 107537
* Add a new target independent COPY instruction and code to lower it.Jakob Stoklund Olesen2010-07-021-0/+49
| | | | | | | | | | | The COPY instruction is intended to replace the target specific copy instructions for virtual registers as well as the EXTRACT_SUBREG and INSERT_SUBREG instructions in MachineFunctions. It won't we used in a selection DAG. COPY is lowered to native register copies by LowerSubregs. llvm-svn: 107529
* Custom inserters (e.g., conditional moves in Thumb1 can introduceJim Grosbach2010-07-021-1/+14
| | | | | | | | | | | | new basic blocks, and if used as a function argument, that can cause call frame setup / destroy pairs to be split across a basic block boundary. That prevents us from doing a simple assertion to check that the pairs match and alloc/ dealloc the same amount of space. Modify the assertion to only check the amount allocated when there are matching pairs in the same basic block. rdar://8022442 llvm-svn: 107517
* - Two-address pass should not assume unfolding is always successful.Evan Cheng2010-07-021-8/+6
| | | | | | | | | - X86 unfolding should check if the instructions being unfolded has memoperands. If there is no memoperands, then it must assume conservative alignment. If this would introduce an expensive sse unaligned load / store, then unfoldMemoryOperand etc. should not unfold the instruction. llvm-svn: 107509
* Propagate the AlignStack bit in InlineAsm's to the Dale Johannesen2010-07-026-12/+23
| | | | | | | | | | | | | | | | | | | PrologEpilog code, and use it to determine whether the asm forces stack alignment or not. gcc consistently does not do this for GCC-style asms; Apple gcc inconsistently sometimes does it for asm blocks. There is no convenient place to put a bit in either the SDNode or the MachineInstr form, so I've added an extra operand to each; unlovely, but it does allow for expansion for more bits, should we need it. PR 5125. Some existing testcases are affected. The operand lists of the SDNode and MachineInstr forms are indexed with awesome mnemonics, like "2"; I may fix this someday, but not now. I'm not making it any worse. If anyone is inspired I think you can find all the right places from this patch. llvm-svn: 107506
* Remove invalid assertJakob Stoklund Olesen2010-07-021-1/+0
| | | | llvm-svn: 107505
* Properly handle debug values during inline spilling.Jakob Stoklund Olesen2010-07-021-13/+32
| | | | llvm-svn: 107503
* Rematerialize as much as possible before inserting spills and reloads.Jakob Stoklund Olesen2010-07-021-60/+179
| | | | | | | | | | This allows us to recognize the common case where all uses could be rematerialized, and no stack slot allocation is necessary. If some values could be fully rematerialized, remove them from the live range before allocating a stack slot for the rest. llvm-svn: 107492
* 80-column and trailing whitespace cleanup.Jim Grosbach2010-07-021-28/+33
| | | | llvm-svn: 107490
* grammar tweaksJim Grosbach2010-07-021-3/+3
| | | | llvm-svn: 107489
* Rename CreateReg to CreateRegs, and MakeReg to CreateReg.Dan Gohman2010-07-025-14/+15
| | | | llvm-svn: 107451
* Make the "linker_private" linkage type emit a non-weak symbol to the file. ItBill Wendling2010-07-011-1/+1
| | | | | | will still be stripped by the linker when it generates the final image. llvm-svn: 107440
* Implement the "linker_private_weak" linkage type. This will be used forBill Wendling2010-07-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | Objective-C metadata types which should be marked as "weak", but which the linker will remove upon final linkage. However, this linkage isn't specific to Objective-C. For example, the "objc_msgSend_fixup_alloc" symbol is defined like this: .globl l_objc_msgSend_fixup_alloc .weak_definition l_objc_msgSend_fixup_alloc .section __DATA, __objc_msgrefs, coalesced .align 3 l_objc_msgSend_fixup_alloc: .quad _objc_msgSend_fixup .quad L_OBJC_METH_VAR_NAME_1 This is different from the "linker_private" linkage type, because it can't have the metadata defined with ".weak_definition". Currently only supported on Darwin platforms. llvm-svn: 107433
* Do not require line number entry for undefined local variable.Devang Patel2010-07-011-2/+4
| | | | | | This is a regression caused by r106792 and caught by gdb testsuite. llvm-svn: 107430
* MC: Pass the target instance to the AsmParser constructor.Daniel Dunbar2010-07-011-1/+1
| | | | llvm-svn: 107426
* MC: Move COFF enumeration constants to llvm/Support/COFF.h, patch by MichaelDaniel Dunbar2010-07-011-55/+55
| | | | | | Spencer! llvm-svn: 107418
* Temporarily disable on-demand fast-isel.Dan Gohman2010-07-012-8/+14
| | | | llvm-svn: 107393
* Use FuncInfo's isExportedInst accessor method instead ofDan Gohman2010-07-011-1/+1
| | | | | | doing the work manually. llvm-svn: 107384
* Rename CreateRegForValue to CreateReg, and change its argumentDan Gohman2010-07-015-11/+11
| | | | | | | from a Value to a Type, because it doesn't actually care about the Value. llvm-svn: 107383
* Fast isel no longer needs DeadMachineInstrElim to clean up after it.Dan Gohman2010-07-011-12/+8
| | | | llvm-svn: 107381
* Teach fast-isel to avoid loading a value from memory when it's alreadyDan Gohman2010-07-011-0/+24
| | | | | | | available in a register. This is pretty primitive, but it reduces the number of instructions in common testcases by 4%. llvm-svn: 107380
* Enable on-demand fast-isel.Dan Gohman2010-07-012-1/+10
| | | | llvm-svn: 107377
* Reapply r106422, splitting the code for materializing a value out ofDan Gohman2010-07-012-11/+55
| | | | | | | SelectionDAGBuilder::getValue into a helper function, with fixes to use DenseMaps safely. llvm-svn: 107371
* Don't use operator[] here, because it's not desirable to insert a defaultDan Gohman2010-07-011-2/+5
| | | | | | value if the search fails. llvm-svn: 107368
* Trailing whitespace.Mikhail Glushenkov2010-07-011-3/+3
| | | | llvm-svn: 107360
* Add memory operand folding support to InlineSpiller.Jakob Stoklund Olesen2010-07-011-0/+37
| | | | llvm-svn: 107355
* Add support for rematerialization to InlineSpiller.Jakob Stoklund Olesen2010-06-302-33/+130
| | | | llvm-svn: 107351
* Use the catch-all selectors we already found when converting them to use theBill Wendling2010-06-301-16/+23
| | | | | | | correct catch-all value. This saves having to iterate through all of the selectors in the program again. llvm-svn: 107345
OpenPOWER on IntegriCloud