summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86RegisterInfo.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* The form of BuildMI used for TAILJMPr was changing the registerDale Johannesen2010-06-151-2/+4
| | | | | | | | containing the target address, an input, into an output. I don't think this actually broke anything on x86 (it does on ARM), but it's wrong. llvm-svn: 105986
* Remove unused function.Rafael Espindola2010-06-021-50/+0
| | | | llvm-svn: 105325
* Fix the use of x86 control and debug registers so that the assertion failure inKevin Enderby2010-05-281-0/+28
| | | | | | getX86RegNum() does not happen. Patch by Shantonu Sen! llvm-svn: 104994
* Fix the x86 move to/from segment register instructions.Kevin Enderby2010-05-261-0/+13
| | | | llvm-svn: 104731
* Separate unrelated cases that once shared a numeric valueJakob Stoklund Olesen2010-05-251-9/+12
| | | | llvm-svn: 104629
* Ignore NumberHack and give each SubRegIndex instance a unique enum value ↵Jakob Stoklund Olesen2010-05-251-3/+3
| | | | | | | | | | | instead. This passes lit tests, but I'll give it a go through the buildbots to smoke out any remaining places that depend on the old SubRegIndex numbering. Then I'll remove NumberHack entirely. llvm-svn: 104615
* Use enums instead of literals for X86 subregisters.Jakob Stoklund Olesen2010-05-251-8/+7
| | | | | | | The cases in getMatchingSuperRegClass cannot be broken up until the enums have unique values. llvm-svn: 104611
* Factor out the code for picking integer arithmetic with immediateDan Gohman2010-05-191-15/+32
| | | | | | | opcodes into a helper function. This fixes a few places in the code which were not properly selecting the 8-bit-immediate opcodes. llvm-svn: 104091
* Several tail call tests apparently rely upon this being "adjusts stack" insteadBill Wendling2010-05-141-1/+1
| | | | | | | of "has calls". That's probably wrong, but it needs further investigation. Revert to the original behavior until this is settled. llvm-svn: 103824
* This should happen if there are no calls, not if it just doesn't adjust theBill Wendling2010-05-141-1/+1
| | | | | | stack. llvm-svn: 103813
* Revert r103804. The comment is correct.Bill Wendling2010-05-141-1/+1
| | | | llvm-svn: 103808
* Fix comment.Bill Wendling2010-05-141-1/+1
| | | | llvm-svn: 103804
* Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe whatBill Wendling2010-05-141-1/+1
| | | | | | | | | the variable actually tracks. N.B., several back-ends are using "HasCalls" as being synonymous for something that adjusts the stack. This isn't 100% correct and should be looked into. llvm-svn: 103802
* Re-apply 103156 and 103157. 103156 didn't break anything. 10315 exposed a ↵Evan Cheng2010-05-061-1/+1
| | | | | | coalescer bug that's fixed by 103170. llvm-svn: 103172
* Revert r103156 since it was breaking the build bots.Eric Christopher2010-05-061-1/+1
| | | | | | | | | | | Reverse-merging r103156 into '.': U lib/Target/ARM/ARMInstrNEON.td U lib/Target/ARM/ARMRegisterInfo.h U lib/Target/ARM/ARMBaseRegisterInfo.cpp U lib/Target/ARM/ARMBaseInstrInfo.cpp U lib/Target/ARM/ARMRegisterInfo.td llvm-svn: 103159
* Trim include.Evan Cheng2010-05-051-1/+0
| | | | llvm-svn: 103103
* Update comment.Eric Christopher2010-05-041-1/+1
| | | | llvm-svn: 103057
* Load folding tail call should not use ebp / rbp after it's popped. PEIEvan Cheng2010-04-291-5/+15
| | | | | | should use esp / rsp to reference frame instead. llvm-svn: 102596
* Implement -disable-non-leaf-fp-elim which disable frame pointer eliminationEvan Cheng2010-04-211-1/+1
| | | | | | | optimization for non-leaf functions. This will be hooked up to gcc's -momit-leaf-frame-pointer option. rdar://7886181 llvm-svn: 101984
* rename llvm::llvm_report_error -> llvm::report_fatal_errorChris Lattner2010-04-071-1/+1
| | | | llvm-svn: 100709
* Fix PR6696 and PR6663Jim Grosbach2010-04-061-0/+43
| | | | | | | | | | | | | | | | | When a frame pointer is not otherwise required, and dynamic stack alignment is necessary solely due to the spilling of a register with larger alignment requirements than the default stack alignment, the frame pointer can be both used as a general purpose register and a frame pointer. That goes poorly, for obvious reasons. This patch brings back a bit of old logic for identifying the use of such registers and conservatively reserves the frame pointer during register allocation in such cases. For now, implement for X86 only since it's 32-bit linux which is hitting this, and we want a targeted fix for 2.7. As a follow-on, this will be expanded to handle other targets, as theoretically the problem could arise elsewhere as well. llvm-svn: 100559
* remove the MMI pointer from MachineFrameInfo.Chris Lattner2010-04-051-21/+14
| | | | llvm-svn: 100415
* get MMI out of the label uniquing business, just go to MCContextChris Lattner2010-03-141-4/+4
| | | | | | to get unique assembler temporary labels. llvm-svn: 98489
* Now that DBG_LABEL is updated, we can finally make MachineMove Chris Lattner2010-03-141-22/+18
| | | | | | contain an MCSymbol instead of a label index. llvm-svn: 98482
* change the DBG_LABEL MachineInstr to always be createdChris Lattner2010-03-141-4/+8
| | | | | | with an MCSymbol instead of an immediate. llvm-svn: 98481
* Do not force indirect tailcall through fixed registers: eax, r11. Add ↵Evan Cheng2010-03-141-8/+17
| | | | | | support to allow loads to be folded to tail call instructions. llvm-svn: 98465
* simplify some overly general code. The stack always grows down on x86.Chris Lattner2010-03-131-6/+2
| | | | llvm-svn: 98431
* add support, testcases, and dox for the new GHC callingChris Lattner2010-03-111-1/+10
| | | | | | convention. Patch by David Terei! llvm-svn: 98212
* Change the Value argument to eliminateFrameIndex to a type-tagged value. ThisJim Grosbach2010-03-091-1/+1
| | | | | | | | | | is preparatory to having PEI's scavenged frame index value reuse logic properly distinguish types of frame values (e.g., whether the value is stack-pointer relative or frame-pointer relative). No functionality change. llvm-svn: 98086
* Lower dynamic stack allocation on mingw32 to separate instruction.Anton Korobeynikov2010-03-061-2/+4
| | | | | | | We cannot use a normal call here since it has extra unmodelled side effects (it changes stack pointer). This should fix PR5292. llvm-svn: 97884
* Implement XMM subregs.Dan Gohman2010-02-281-0/+6
| | | | | | | | | | | Extracting the low element of a vector is now done with EXTRACT_SUBREG, and the zero-extension performed by load movss is now modeled with SUBREG_TO_REG, and so on. Register-to-register movss and movsd are no longer considered copies; they are two-address instructions which insert a scalar into a vector. llvm-svn: 97354
* Add support for the 'alignstack' attribute to the x86 backend. Fixes PR5254.Charles Davis2010-02-191-1/+3
| | | | | | Also, FileCheck'ize a test. llvm-svn: 96686
* Teach MachineFrameInfo to track maximum alignment while stack objects are beingEvan Cheng2010-02-131-5/+1
| | | | | | | | | | created. This ensures it's updated at all time. It means targets which perform dynamic stack alignment would know whether it is required and whether frame pointer register cannot be made available register allocation. This is a fix for rdar://7625239. Sorry, I can't create a reasonably sized test case. llvm-svn: 96069
* Change TAILJMP's to be varargs and transfer implicit uses over from ↵Evan Cheng2010-01-311-3/+8
| | | | | | TCRETURN's. Otherwise the missing uses can make post-regalloc scheduling do bad things. This fixes 403.gcc. llvm-svn: 94950
* Don't forget to transfer target flag when inserting a tailcall instruction.Evan Cheng2010-01-301-1/+2
| | | | llvm-svn: 94872
* constify a method argument.Chris Lattner2010-01-261-3/+3
| | | | llvm-svn: 94612
* make findDebugLoc a class methodDale Johannesen2010-01-201-2/+2
| | | | llvm-svn: 94032
* Move findDebugLoc somewhere more central. FixDale Johannesen2010-01-201-17/+0
| | | | | | | more cases where debug declarations affect debug line info. llvm-svn: 93953
* Fix a case where debug_value was perturbing theDale Johannesen2010-01-191-4/+19
| | | | | | line number info. llvm-svn: 93937
* For aligned load/store instructions, it's only required to know whether aJim Grosbach2010-01-191-0/+6
| | | | | | | | | | | function can support dynamic stack realignment. That's a much easier question to answer at instruction selection stage than whether the function actually will have dynamic alignment prologue. This allows the removal of the stack alignment heuristic pass, and improves code quality for cases where the heuristic would result in dynamic alignment code being generated when it was not strictly necessary. llvm-svn: 93885
* Revert 93499. After discussion with Chris we agreedDale Johannesen2010-01-151-9/+0
| | | | | | | | | FrameIndexes should be lowered, but the same way as everything else (target dependent) rather than in a special hacked way. The lowering needs to be done for eventual purposes of Dwarf generation. llvm-svn: 93530
* Lower FrameIndex operand of DEBUG_VALUE (specially) andDale Johannesen2010-01-151-0/+9
| | | | | | print it as a comment on X86. llvm-svn: 93499
* improve portability to avoid conflicting with std::next in c++'0x.Chris Lattner2009-12-031-3/+3
| | | | | | Patch by Howard Hinnant! llvm-svn: 90365
* Factor the stack alignment calculations out into a target independent pass.Jim Grosbach2009-12-021-61/+1
| | | | | | No functionality change. llvm-svn: 90336
* Minor whitespace fixes.Dan Gohman2009-11-301-1/+1
| | | | llvm-svn: 90166
* Temporary disable the error - it seems to be too conservative.Anton Korobeynikov2009-11-141-3/+4
| | | | llvm-svn: 88800
* The instruction pointer %RIP is a reserved register on x86_64.Jakob Stoklund Olesen2009-11-131-0/+5
| | | | llvm-svn: 88705
* Add a bool flag to StackObjects telling whether they reference spillDavid Greene2009-11-121-5/+7
| | | | | | | | | | | | | slots. The AsmPrinter will use this information to determine whether to print a spill/reload comment. Remove default argument values. It's too easy to pass a wrong argument value when multiple arguments have default values. Make everything explicit to trap bugs early. Update all targets to adhere to the new interfaces.. llvm-svn: 87022
* Throw an error when stack realignment stuff fails instead of silentAnton Korobeynikov2009-11-081-3/+7
| | | | | | code miscompilation llvm-svn: 86463
* Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky2009-10-251-1/+0
| | | | | | VISIBILITY_HIDDEN removal. llvm-svn: 85043
OpenPOWER on IntegriCloud