summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/RegAllocLocal.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix UnitTests/2005-05-12-Int64ToFP.c with llc-beta. In particular, do notChris Lattner2006-09-191-7/+10
| | | | | | allow it to go into an infinite loop, filling up the disk! llvm-svn: 30494
* Non-allocatable physregs can be killed and dead, but don't treat them asChris Lattner2006-09-081-0/+6
| | | | | | safe for later allocation. This fixes McCat/18-imp with llc-beta. llvm-svn: 30204
* This fixes Benchmarks/Prolangs-C/unix-smailChris Lattner2006-09-081-0/+2
| | | | llvm-svn: 30198
* Fix a bunch of llc-beta failures on x86 yesterday. Don't allow selectionChris Lattner2006-09-081-17/+42
| | | | | | | of unallocatable registers, just because an alias is allocatable. We were picking registers like SIL just because ESI was being used. llvm-svn: 30197
* Only call isUse/isDef on register operandsEvan Cheng2006-09-051-3/+3
| | | | llvm-svn: 30122
* Fix Regression/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll on X86.Chris Lattner2006-09-031-6/+11
| | | | | | | Just because an alias of a register is available, it doesn't mean that we can arbitrarily evict the register. llvm-svn: 30064
* When deleting a machine instruction, make sure to remove it from theChris Lattner2006-09-031-1/+4
| | | | | | livevariables information. This fixes several regalloc=local failures on x86 llvm-svn: 30062
* s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29911
* Final polish on machine pass registries.Jim Laskey2006-08-021-1/+1
| | | | llvm-svn: 29471
* Introducing plugable register allocators and instruction schedulers.Jim Laskey2006-08-011-0/+7
| | | | llvm-svn: 29434
* Eliminate data relocations by using NULL instead of global empty list.Jim Laskey2006-07-211-15/+19
| | | | llvm-svn: 29250
* 80 colsAndrew Lenharth2006-07-201-2/+2
| | | | llvm-svn: 29221
* Reduce number of exported symbolsAndrew Lenharth2006-07-201-4/+4
| | | | llvm-svn: 29220
* Use hidden visibility to make symbols in an anonymous namespace getChris Lattner2006-06-281-1/+2
| | | | | | dropped. This shrinks libllvmgcc.dylib another 67K llvm-svn: 28975
* Teach the local allocator to know that live-in values (e.g. arguments) areChris Lattner2006-06-151-0/+20
| | | | | | | live at function entry. This prevents it from using arg registers for other purposes before the arguments are used. llvm-svn: 28809
* Move some methods out of MachineInstr into MachineOperandChris Lattner2006-05-041-3/+3
| | | | llvm-svn: 28102
* Add explicit #includes of <iostream>Chris Lattner2006-01-221-0/+1
| | | | llvm-svn: 25515
* Nuke noop copies.Chris Lattner2005-11-091-4/+11
| | | | llvm-svn: 24258
* Disable some overly-aggressive checking code. This speeds up the localChris Lattner2005-11-091-1/+2
| | | | | | allocator from 23s to 11s on kc++ in debug mode. llvm-svn: 24255
* Change this code ot pass register classes into the stack slot spiller/reloaderChris Lattner2005-09-301-2/+2
| | | | | | | code. PrologEpilogInserter hasn't been updated yet though, so targets cannot use this info. llvm-svn: 23536
* adjust to new live variables interfaceChris Lattner2005-08-231-2/+2
| | | | llvm-svn: 22992
* Remove trailing whitespaceMisha Brukman2005-04-211-1/+1
| | | | llvm-svn: 21420
* Update this pass to set PhysRegsUsed info in MachineFunction.Chris Lattner2005-01-231-1/+13
| | | | llvm-svn: 19792
* Clean up the MachineBasicBlock.h file, percolating #includes into this file.Chris Lattner2004-10-261-0/+1
| | | | | | Patch contributed by Morten Ofstad llvm-svn: 17251
* Changes For Bug 352Reid Spencer2004-09-011-4/+4
| | | | | | | | 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
* Reduce usage of MRegisterInfo::getRegClassChris Lattner2004-08-151-2/+2
| | | | llvm-svn: 15784
* Nuke ifdef'd out codeChris Lattner2004-08-151-33/+0
| | | | llvm-svn: 15777
* Stop using CreateStackObject(RegClass*)Chris Lattner2004-08-151-1/+2
| | | | llvm-svn: 15775
* These methods no longer take a TargetRegisterClass* operand.Chris Lattner2004-08-151-2/+2
| | | | llvm-svn: 15774
* These files don't need to include <iostream> since they include ↵Brian Gaeke2004-07-211-1/+0
| | | | | | "Support/Debug.h". llvm-svn: 15089
* Fix a recent regression in Applications/sgefa that Alkis pointed out to me.Chris Lattner2004-06-161-2/+2
| | | | | | | | The vector may actually be empty if the register that we are marking as recently used is not actually allocatable. This happens for physical registers that are not allocatable, like the ST(x) registers on X86. llvm-svn: 14195
* Adjust to new TargetMachine interfaceChris Lattner2004-06-021-1/+1
| | | | llvm-svn: 13956
* Change MRegisterInfo::foldMemoryOperand to return the foldedAlkis Evlogimenos2004-03-141-4/+3
| | | | | | instruction to make the API more flexible. llvm-svn: 12386
* Uncomment assertions that register# != 0 on calls toAlkis Evlogimenos2004-02-261-12/+18
| | | | | | | MRegisterInfo::is{Physical,Virtual}Register. Apply appropriate fixes to relevant files. llvm-svn: 11882
* No need to clear the map here, it will always be emptyChris Lattner2004-02-261-1/+0
| | | | llvm-svn: 11868
* Add DenseMap template and actually use it for for mapping virtual regsAlkis Evlogimenos2004-02-251-13/+8
| | | | | | to objects. llvm-svn: 11840
* Refactor rewinding code for finding the first terminator of a basicAlkis Evlogimenos2004-02-231-5/+1
| | | | | | | | | | | | block into MachineBasicBlock::getFirstTerminator(). This also fixes a bug in the implementation of the above in both RegAllocLocal and InstrSched, where instructions where added after the terminator if the basic block's only instruction was a terminator (it shouldn't matter for RegAllocLocal since this case never occurs in practice). llvm-svn: 11748
* Another bug fix for empty MBB'sChris Lattner2004-02-221-1/+1
| | | | llvm-svn: 11716
* Fix a bug where we were implicitly assuming that there would be at leastChris Lattner2004-02-221-2/+2
| | | | | | one terminator instruction in each basic block. llvm-svn: 11714
* Make 'fold' statistic's description the same in both allocators.Alkis Evlogimenos2004-02-211-2/+3
| | | | llvm-svn: 11687
* Fix problem fusing spill code into instructions: we didn't update the liveChris Lattner2004-02-191-0/+3
| | | | | | | variable information to take into account the change of instruction address. llvm-svn: 11628
* Rename reloads/spills to loads/stores.Alkis Evlogimenos2004-02-191-5/+5
| | | | llvm-svn: 11619
* Remove the -disable-kill option. The register allocator is buggy with it,Chris Lattner2004-02-171-50/+39
| | | | | | and it was only for debugging in the first place. llvm-svn: 11557
* Add support to the local allocator for fusing spill code into the instructionsChris Lattner2004-02-171-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that need them. This is very useful on CISCy targets like the X86 because it reduces the total spill pressure, and makes better use of it's (large) instruction set. Though the X86 backend doesn't know how to rewrite many instructions yet, this already makes a substantial difference on 176.gcc for example: Before: Time: 8.0099 ( 31.2%) 0.0100 ( 12.5%) 8.0199 ( 31.2%) 7.7186 ( 30.0%) Local Register Allocator Code quality: 734559 asm-printer - Number of machine instrs printed 111395 ra-local - Number of registers reloaded 79902 ra-local - Number of registers spilled 231554 x86-peephole - Number of peephole optimization performed After: Time: 7.8700 ( 30.6%) 0.0099 ( 19.9%) 7.8800 ( 30.6%) 7.7892 ( 30.2%) Local Register Allocator Code quality: 733083 asm-printer - Number of machine instrs printed 2379 ra-local - Number of reloads fused into instructions 109046 ra-local - Number of registers reloaded 79881 ra-local - Number of registers spilled 230658 x86-peephole - Number of peephole optimization performed So by fusing 2300 instructions, we reduced the static number of instructions by 1500, and reduces the number of peepholes (and thus the work) by about 900. This also clearly reduces the number of reload/spill instructions that are emitted. llvm-svn: 11542
* Fix a bug in my previous refactoring change... arg!Chris Lattner2004-02-171-1/+3
| | | | llvm-svn: 11535
* Once we have a way to fold spill code reloads into instructions, we have a ↵Chris Lattner2004-02-171-2/+17
| | | | | | way to use it. :) llvm-svn: 11517
* Refactor code a bit. No functionality changes, though the comment hints at ↵Chris Lattner2004-02-171-30/+46
| | | | | | things to come. llvm-svn: 11515
* Make dense maps keyed on physical registers smallerusingAlkis Evlogimenos2004-02-151-1/+1
| | | | | | | | | | MRegisterInfo::getNumRegs() instead of MRegisterInfo::FirstVirtualRegister. Also use MRegisterInfo::is{Physical,Virtual}Register where appropriate. llvm-svn: 11477
* Remove getAllocatedRegNum(). Use getReg() instead.Alkis Evlogimenos2004-02-131-3/+3
| | | | llvm-svn: 11393
* Use getNumVirtualRegs().Alkis Evlogimenos2004-02-131-41/+34
| | | | | | Whitespace cleanups. llvm-svn: 11389
OpenPOWER on IntegriCloud