aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/RegAllocLocal.cpp
AgeCommit message (Collapse)Author
2006-09-19Fix UnitTests/2005-05-12-Int64ToFP.c with llc-beta. In particular, do notChris Lattner
allow it to go into an infinite loop, filling up the disk! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30494 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-08Non-allocatable physregs can be killed and dead, but don't treat them asChris Lattner
safe for later allocation. This fixes McCat/18-imp with llc-beta. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30204 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-08This fixes Benchmarks/Prolangs-C/unix-smailChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30198 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-08Fix a bunch of llc-beta failures on x86 yesterday. Don't allow selectionChris Lattner
of unallocatable registers, just because an alias is allocatable. We were picking registers like SIL just because ESI was being used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30197 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-05Only call isUse/isDef on register operandsEvan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30122 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-03Fix Regression/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll on X86.Chris Lattner
Just because an alias of a register is available, it doesn't mean that we can arbitrarily evict the register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30064 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-03When deleting a machine instruction, make sure to remove it from theChris Lattner
livevariables information. This fixes several regalloc=local failures on x86 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30062 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-27s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29911 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-02Final polish on machine pass registries.Jim Laskey
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29471 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-01Introducing plugable register allocators and instruction schedulers.Jim Laskey
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29434 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-21Eliminate data relocations by using NULL instead of global empty list.Jim Laskey
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29250 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-2080 colsAndrew Lenharth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29221 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-20Reduce number of exported symbolsAndrew Lenharth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29220 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-28Use hidden visibility to make symbols in an anonymous namespace getChris Lattner
dropped. This shrinks libllvmgcc.dylib another 67K git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28975 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-15Teach the local allocator to know that live-in values (e.g. arguments) areChris Lattner
live at function entry. This prevents it from using arg registers for other purposes before the arguments are used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28809 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-04Move some methods out of MachineInstr into MachineOperandChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28102 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-22Add explicit #includes of <iostream>Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25515 91177308-0d34-0410-b5e6-96231b3b80d8
2005-11-09Nuke noop copies.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24258 91177308-0d34-0410-b5e6-96231b3b80d8
2005-11-09Disable some overly-aggressive checking code. This speeds up the localChris Lattner
allocator from 23s to 11s on kc++ in debug mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24255 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-30Change this code ot pass register classes into the stack slot spiller/reloaderChris Lattner
code. PrologEpilogInserter hasn't been updated yet though, so targets cannot use this info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23536 91177308-0d34-0410-b5e6-96231b3b80d8
2005-08-23adjust to new live variables interfaceChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22992 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-21Remove trailing whitespaceMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21420 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23Update this pass to set PhysRegsUsed info in MachineFunction.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19792 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-26Clean up the MachineBasicBlock.h file, percolating #includes into this file.Chris Lattner
Patch contributed by Morten Ofstad git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17251 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-01Changes For Bug 352Reid Spencer
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/. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-15Reduce usage of MRegisterInfo::getRegClassChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15784 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-15Nuke ifdef'd out codeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15777 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-15Stop using CreateStackObject(RegClass*)Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15775 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-15These methods no longer take a TargetRegisterClass* operand.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15774 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-21These files don't need to include <iostream> since they include ↵Brian Gaeke
"Support/Debug.h". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15089 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-16Fix a recent regression in Applications/sgefa that Alkis pointed out to me.Chris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14195 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-02Adjust to new TargetMachine interfaceChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13956 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-14Change MRegisterInfo::foldMemoryOperand to return the foldedAlkis Evlogimenos
instruction to make the API more flexible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12386 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-26Uncomment assertions that register# != 0 on calls toAlkis Evlogimenos
MRegisterInfo::is{Physical,Virtual}Register. Apply appropriate fixes to relevant files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11882 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-26No need to clear the map here, it will always be emptyChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11868 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-25Add DenseMap template and actually use it for for mapping virtual regsAlkis Evlogimenos
to objects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11840 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-23Refactor rewinding code for finding the first terminator of a basicAlkis Evlogimenos
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). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11748 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-22Another bug fix for empty MBB'sChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11716 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-22Fix a bug where we were implicitly assuming that there would be at leastChris Lattner
one terminator instruction in each basic block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11714 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-21Make 'fold' statistic's description the same in both allocators.Alkis Evlogimenos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11687 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-19Fix problem fusing spill code into instructions: we didn't update the liveChris Lattner
variable information to take into account the change of instruction address. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11628 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-19Rename reloads/spills to loads/stores.Alkis Evlogimenos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11619 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-17Remove the -disable-kill option. The register allocator is buggy with it,Chris Lattner
and it was only for debugging in the first place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11557 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-17Add support to the local allocator for fusing spill code into the instructionsChris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11542 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-17Fix a bug in my previous refactoring change... arg!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11535 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-17Once we have a way to fold spill code reloads into instructions, we have a ↵Chris Lattner
way to use it. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11517 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-17Refactor code a bit. No functionality changes, though the comment hints at ↵Chris Lattner
things to come. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11515 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-15Make dense maps keyed on physical registers smallerusingAlkis Evlogimenos
MRegisterInfo::getNumRegs() instead of MRegisterInfo::FirstVirtualRegister. Also use MRegisterInfo::is{Physical,Virtual}Register where appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11477 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-13Remove getAllocatedRegNum(). Use getReg() instead.Alkis Evlogimenos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11393 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-13Use getNumVirtualRegs().Alkis Evlogimenos
Whitespace cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11389 91177308-0d34-0410-b5e6-96231b3b80d8