summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of theOwen Anderson2007-12-311-2/+1
| | | | | | Machine-level API cleanup instigated by Chris. llvm-svn: 45470
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-311-2/+2
| | | | | | | | | | | | | | that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* As Chris and Evan pointed out, BreakCriticalMachineEdges doesn't really needOwen Anderson2007-11-121-1/+0
| | | | | | to be a pass of its own. Instead, move it out into a helper method. llvm-svn: 44002
* This preserves critical edge breaking.Owen Anderson2007-11-081-0/+1
| | | | llvm-svn: 43911
* Bring UsedBlocks back. StrongPHIElimination needs this information.Owen Anderson2007-11-081-0/+4
| | | | llvm-svn: 43866
* It's possible to commute instrctions with more than 3 operands.Evan Cheng2007-10-231-1/+1
| | | | llvm-svn: 43256
* Added missing curly braces which renders the if clause useless in debug build.Evan Cheng2007-10-201-1/+2
| | | | llvm-svn: 43196
* Allow copyRegToReg to emit cross register classes copies.Evan Cheng2007-09-261-1/+1
| | | | | | Tested with "make check"! llvm-svn: 42346
* Fix typo in comment.Nick Lewycky2007-05-061-1/+1
| | | | llvm-svn: 36873
* Drop 'const'Devang Patel2007-05-031-2/+2
| | | | llvm-svn: 36662
* Use 'static const char' instead of 'static const int'.Devang Patel2007-05-021-2/+2
| | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
* Do not use typeinfo to identify pass in pass manager.Devang Patel2007-05-011-0/+4
| | | | llvm-svn: 36632
* VarInfo::UsedBlocks is no longer used. Remove.Evan Cheng2007-04-181-4/+0
| | | | llvm-svn: 36250
* Keep UsedBlocks info accurate.Evan Cheng2007-03-181-0/+3
| | | | llvm-svn: 35140
* Eliminate static ctors from StatisticsChris Lattner2006-12-191-7/+4
| | | | llvm-svn: 32698
* Removed more <iostream> includesBill Wendling2006-12-071-4/+3
| | | | llvm-svn: 32321
* Detemplatize the Statistic class. The only type it is instantiated withChris Lattner2006-12-061-3/+3
| | | | | | is 'unsigned'. llvm-svn: 32279
* Match TargetInstrInfo changes.Evan Cheng2006-12-011-14/+9
| | | | llvm-svn: 32098
* Use llvm streams instead of <iostream>Bill Wendling2006-11-281-12/+11
| | | | llvm-svn: 31985
* Remove M_2_ADDR_FLAG.Evan Cheng2006-11-091-2/+0
| | | | llvm-svn: 31583
* Two-address instructions no longer have to be A := A op C. Now any pair of ↵Evan Cheng2006-11-011-100/+119
| | | | | | dest / src operands can be tied together. llvm-svn: 31363
* Fix a long-standing wart in the code generator: two-address instruction loweringChris Lattner2006-09-051-3/+2
| | | | | | | | | | | | | | | actually *removes* one of the operands, instead of just assigning both operands the same register. This make reasoning about instructions unnecessarily complex, because you need to know if you are before or after register allocation to match up operand #'s with the target description file. Changing this also gets rid of a bunch of hacky code in various places. This patch also includes changes to fold loads into cmp/test instructions in the X86 backend, along with a significant simplification to the X86 spill folding code. llvm-svn: 30108
* s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29911
* Reduce number of exported symbolsAndrew Lenharth2006-07-201-3/+3
| | | | llvm-svn: 29220
* Shave another 27K off libllvmgcc.dylib with visibility hiddenChris Lattner2006-06-281-1/+3
| | | | llvm-svn: 28973
* Patches to make the LLVM sources more -pedantic clean. Patch providedChris Lattner2006-05-241-1/+1
| | | | | | by Anton Korobeynikov! This is a step towards closing PR786. llvm-svn: 28447
* Move some methods out of MachineInstr into MachineOperandChris Lattner2006-05-041-1/+1
| | | | llvm-svn: 28102
* Add explicit #includes of <iostream>Chris Lattner2006-01-221-0/+1
| | | | llvm-svn: 25515
* Fix some spello's pointed out by Gabor GreifChris Lattner2005-10-261-2/+2
| | | | llvm-svn: 24019
* Remove trailing whitespaceMisha Brukman2005-04-211-4/+4
| | | | llvm-svn: 21420
* Use the TargetInstrInfo::commuteInstruction method to commute instructionsChris Lattner2005-01-191-6/+17
| | | | | | instead of doing it manually. llvm-svn: 19685
* Make the 2-address instruction lowering pass smarter in two ways:Chris Lattner2005-01-021-17/+61
| | | | | | | | | | | | | | | | | 1. If we are two-addressing a commutable instruction and the LHS is not the last use of the variable, see if the instruction is the last use of the RHS. If so, commute the instruction, allowing us to avoid a register-register copy in many cases for common instructions like ADD, OR, AND, etc on X86. 2. If #1 doesn't hold, and if this is an instruction that also existing in 3-address form, promote the instruction to a 3-address instruction to avoid the register-register copy. We can do this for several common instructions in X86, including ADDrr, INC, DEC, etc. This patch implements test/Regression/CodeGen/X86/commute-two-addr.ll, overlap-add.ll, and overlap-shift.ll when I check in the X86 support for it. llvm-svn: 19245
* Changes For Bug 352Reid Spencer2004-09-011-3/+3
| | | | | | | | Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
* The insertion method returns void nowChris Lattner2004-08-151-5/+1
| | | | llvm-svn: 15779
* Fix indentation and wrap code at 80 colsMisha Brukman2004-07-221-110/+100
| | | | llvm-svn: 15107
* Remove extraneous punctuationChris Lattner2004-07-221-2/+2
| | | | llvm-svn: 15098
* Minor cleanupsChris Lattner2004-07-211-8/+6
| | | | llvm-svn: 15091
* These files don't need to include <iostream> since they include ↵Brian Gaeke2004-07-211-1/+0
| | | | | | "Support/Debug.h". llvm-svn: 15089
* Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)Chris Lattner2004-07-191-2/+2
| | | | llvm-svn: 14997
* Made a fix so that you can print out MachineInstrs that belong to a ↵Tanya Lattner2004-06-251-3/+3
| | | | | | MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function. llvm-svn: 14389
* Adjust to new TargetMachine interfaceChris Lattner2004-06-021-1/+1
| | | | llvm-svn: 13956
* Beautify debug output.Alkis Evlogimenos2004-02-181-3/+8
| | | | llvm-svn: 11573
* This pass should not require phi elimination or live variableAlkis Evlogimenos2004-02-151-13/+13
| | | | | | | analysis. It should only preserve them and update LiveVariables if it already ran. llvm-svn: 11479
* Use newly added next() and prior() utility functions.Alkis Evlogimenos2004-02-141-2/+2
| | | | llvm-svn: 11430
* Remove getAllocatedRegNum(). Use getReg() instead.Alkis Evlogimenos2004-02-131-6/+6
| | | | llvm-svn: 11393
* Change MachineBasicBlock's vector of MachineInstr pointers into anAlkis Evlogimenos2004-02-121-5/+5
| | | | | | | | | ilist of MachineInstr objects. This allows constant time removal and insertion of MachineInstr instances from anywhere in each MachineBasicBlock. It also allows for constant time splicing of MachineInstrs into or out of MachineBasicBlocks. llvm-svn: 11340
* Added missing include.Tanya Lattner2004-02-051-0/+1
| | | | llvm-svn: 11129
* Modify the two address instruction pass to remove the duplicateAlkis Evlogimenos2004-02-041-57/+67
| | | | | | operand of the instruction and thus simplify the register allocation. llvm-svn: 11124
* Revert changes. Will implement this using a different set of primitivesAlkis Evlogimenos2004-02-021-9/+3
| | | | llvm-svn: 11091
OpenPOWER on IntegriCloud