| Commit message (Collapse) | Author | Age | Files | Lines | ||
|---|---|---|---|---|---|---|
| ... | ||||||
| * | Fix PR2536: a nasty spiller bug. If a two-address instruction uses a ↵ | Evan Cheng | 2008-07-12 | 1 | -0/+23 | |
| | | | | | | | | | | | | register but the use portion of its live range is not part of its liveinterval, it must be defined by an implicit_def. In that case, do not spill the use. e.g. 8 %reg1024<def> = IMPLICIT_DEF 12 %reg1024<def> = INSERT_SUBREG %reg1024<kill>, %reg1025, 2 The live range [12, 14) are not part of the r1024 live interval since it's defined by an implicit def. It will not conflicts with live interval of r1025. Now suppose both registers are spilled, you can easily see a situation where both registers are reloaded before the INSERT_SUBREG and both target registers that would overlap. llvm-svn: 53503 | |||||
| * | - Change the horrible N^2 isRegReDefinedByTwoAddr. Now callers must supply ↵ | Evan Cheng | 2008-07-10 | 1 | -4/+6 | |
| | | | | | | | | | the operand index of def machineoperand and at most one full scan of non-implicit operands is needed. - Change local register allocator to use the new isRegReDefinedByTwoAddr instead of reinventing the wheel. llvm-svn: 53394 | |||||
| * | Pool-allocation for MachineInstrs, MachineBasicBlocks, and | Dan Gohman | 2008-07-07 | 1 | -2/+2 | |
| | | | | | | | | | | | | MachineMemOperands. The pools are owned by MachineFunctions. This drastically reduces the number of calls to malloc/free made during the "Emit" phase of scheduling, as well as later phases in CodeGen. Combined with other changes, this speeds up the "instruction selection" phase of CodeGen by 10% in some cases. llvm-svn: 53212 | |||||
| * | - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, ↵ | Evan Cheng | 2008-07-03 | 1 | -8/+0 | |
| | | | | | | | | | propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc. - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list. llvm-svn: 53097 | |||||
| * | Remember which MachineOperand we were processing, so we don't have to scan ↵ | Owen Anderson | 2008-06-25 | 1 | -11/+15 | |
| | | | | | | | | | the list to find it again later. This speeds up live intervals from 0.37s to 0.30s on instcombine. llvm-svn: 52745 | |||||
| * | Undo spill weight tweak. Need to investigate the performance regressions. | Evan Cheng | 2008-06-21 | 1 | -8/+4 | |
| | | | | | llvm-svn: 52572 | |||||
| * | Revert my last patch, which was causing regression test failures. | Owen Anderson | 2008-06-19 | 1 | -78/+69 | |
| | | | | | llvm-svn: 52485 | |||||
| * | Minor spiller tweak to unfavor reload into load/store instructions. | Evan Cheng | 2008-06-19 | 1 | -4/+8 | |
| | | | | | llvm-svn: 52477 | |||||
| * | Insert empty slots into the instruction numbering in live intervals, so that ↵ | Owen Anderson | 2008-06-19 | 1 | -69/+78 | |
| | | | | | | | | | we can more easily add new instructions. llvm-svn: 52475 | |||||
| * | Live-through live interval is [mbb start, mbb end+1]. | Evan Cheng | 2008-06-17 | 1 | -1/+1 | |
| | | | | | llvm-svn: 52431 | |||||
| * | Remove special case handling of empty MBBs now that we assign indices to them. | Owen Anderson | 2008-06-16 | 1 | -8/+5 | |
| | | | | | llvm-svn: 52345 | |||||
| * | Re-enable empty block indexing by default, since it doesn't seem to have any | Owen Anderson | 2008-06-16 | 1 | -21/+9 | |
| | | | | | | | impact on code quality or compile time. llvm-svn: 52329 | |||||
| * | Make indexing empty basic blocks an option for the moment. | Owen Anderson | 2008-06-16 | 1 | -9/+21 | |
| | | | | | llvm-svn: 52306 | |||||
| * | Assign indices to empty basic blocks. This will be necessary for ↵ | Owen Anderson | 2008-06-16 | 1 | -4/+9 | |
| | | | | | | | StrongPHIElimination in the near future. llvm-svn: 52300 | |||||
| * | Refine stack slot interval weight computation. | Evan Cheng | 2008-06-06 | 1 | -15/+45 | |
| | | | | | llvm-svn: 52040 | |||||
| * | Add a helper for constructing new live ranges that ended from an instruction ↵ | Owen Anderson | 2008-06-05 | 1 | -0/+15 | |
| | | | | | | | to the end of its MBB. llvm-svn: 52012 | |||||
| * | Add a stack slot coloring pass. Not yet enabled. | Evan Cheng | 2008-06-04 | 1 | -14/+4 | |
| | | | | | llvm-svn: 51934 | |||||
| * | Correctly handle removed instructions at the beginning of MBBs when renumbering. | Owen Anderson | 2008-06-02 | 1 | -12/+8 | |
| | | | | | llvm-svn: 51876 | |||||
| * | Make the renumbering correct in the face of deleted instructions that have ↵ | Owen Anderson | 2008-05-29 | 1 | -7/+73 | |
| | | | | | | | been removed from the LiveIntervals maps. llvm-svn: 51714 | |||||
| * | Remove <iostream>. | Bill Wendling | 2008-05-29 | 1 | -2/+0 | |
| | | | | | llvm-svn: 51704 | |||||
| * | Revert part of my last patch that I didn't intend to commit yet. | Owen Anderson | 2008-05-29 | 1 | -0/+2 | |
| | | | | | llvm-svn: 51694 | |||||
| * | Renumbering needs to account for instruction slot offsets when performing ↵ | Owen Anderson | 2008-05-29 | 1 | -7/+20 | |
| | | | | | | | lookups in the index maps. llvm-svn: 51691 | |||||
| * | Remap VNInfo data as well when doing renumbering. | Owen Anderson | 2008-05-28 | 1 | -0/+6 | |
| | | | | | llvm-svn: 51658 | |||||
| * | Factor the numbering computation into a separate method, and add the ↵ | Owen Anderson | 2008-05-28 | 1 | -11/+29 | |
| | | | | | | | slightest attempt at some renumbering logic, which is currently unused. llvm-svn: 51652 | |||||
| * | Revert 51440 as it breaks a bunch of PIC tests. | Evan Cheng | 2008-05-23 | 1 | -3/+1 | |
| | | | | | llvm-svn: 51513 | |||||
| * | When rewriting defs and uses after spilling, don't set the weight of a | David Greene | 2008-05-22 | 1 | -1/+3 | |
| | | | | | | | | | live interval to infinity if the instruction being rewritten is an original remat def instruction. We were only checking against the clone of the remat def which doesn't actually appear in the IR at all. llvm-svn: 51440 | |||||
| * | Don't spill dead def. | Evan Cheng | 2008-05-20 | 1 | -1/+3 | |
| | | | | | llvm-svn: 51305 | |||||
| * | Clean up the use of static and anonymous namespaces. This turned up | Dan Gohman | 2008-05-13 | 1 | -27/+25 | |
| | | | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017 | |||||
| * | Make several variable declarations static. | Dan Gohman | 2008-05-06 | 1 | -6/+6 | |
| | | | | | llvm-svn: 50696 | |||||
| * | Empty basic block should have an empty range. | Evan Cheng | 2008-04-16 | 1 | -1/+3 | |
| | | | | | llvm-svn: 49800 | |||||
| * | Use of implicit_def is not part of live interval. Create empty intervals for ↵ | Evan Cheng | 2008-04-11 | 1 | -12/+30 | |
| | | | | | | | the uses when the live interval is being spilled. llvm-svn: 49542 | |||||
| * | - More aggressively coalescing away copies whose source is defined by an ↵ | Evan Cheng | 2008-04-09 | 1 | -2/+9 | |
| | | | | | | | | | implicit_def. - Added insert_subreg coalescing support. llvm-svn: 49448 | |||||
| * | - Treat a live range defined by an implicit_def as a zero-sized one. | Evan Cheng | 2008-04-03 | 1 | -2/+28 | |
| | | | | | | | - Eliminate an implicit_def when it's being spilled. llvm-svn: 49166 | |||||
| * | Re-materialization is for uses only. | Evan Cheng | 2008-04-01 | 1 | -4/+4 | |
| | | | | | llvm-svn: 49053 | |||||
| * | It's not safe to fold a load from GV stub or constantpool into a two-address ↵ | Evan Cheng | 2008-03-31 | 1 | -2/+3 | |
| | | | | | | | use. llvm-svn: 49002 | |||||
| * | The support for remat of instructions with a register operand is hackish, to ↵ | Evan Cheng | 2008-03-31 | 1 | -18/+7 | |
| | | | | | | | say the least. Since the register operand guaranteed to be PIC base and that it is already live at all uses, we are making sure it will not be spilled after its uses are rematerialized for both performance and correctness reasons. llvm-svn: 48976 | |||||
| * | Remove isImplicitDef TargetInstrDesc flag. | Evan Cheng | 2008-03-15 | 1 | -4/+3 | |
| | | | | | llvm-svn: 48381 | |||||
| * | Transfer physical register spill info when load / store folding happens. | Evan Cheng | 2008-03-11 | 1 | -0/+1 | |
| | | | | | llvm-svn: 48246 | |||||
| * | When the register allocator runs out of registers, spill a physical register ↵ | Evan Cheng | 2008-03-11 | 1 | -0/+78 | |
| | | | | | | | around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting. llvm-svn: 48218 | |||||
| * | Refactor code. Remove duplicated functions that basically do the same thing as | Evan Cheng | 2008-03-05 | 1 | -12/+13 | |
| | | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927 | |||||
| * | Spiller now remove unused spill slots. | Evan Cheng | 2008-02-27 | 1 | -0/+3 | |
| | | | | | llvm-svn: 47657 | |||||
| * | Rename PrintableName to Name. | Bill Wendling | 2008-02-26 | 1 | -1/+1 | |
| | | | | | llvm-svn: 47629 | |||||
| * | Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool | Bill Wendling | 2008-02-26 | 1 | -1/+1 | |
| | | | | | | | would have been a Godsend here! llvm-svn: 47625 | |||||
| * | All remat'ed loads cannot be folded into two-address code. Not just argument ↵ | Evan Cheng | 2008-02-25 | 1 | -4/+4 | |
| | | | | | | | loads. This change doesn't really have any impact on codegen. llvm-svn: 47557 | |||||
| * | Correctly determine whether a argument load can be folded into its uses. | Evan Cheng | 2008-02-25 | 1 | -45/+52 | |
| | | | | | llvm-svn: 47545 | |||||
| * | Rematerialization logic was overly conservative when it comes to loads from ↵ | Evan Cheng | 2008-02-23 | 1 | -20/+6 | |
| | | | | | | | fixed stack slots. llvm-svn: 47529 | |||||
| * | If remating a machine instr with virtual register operand, make sure the vr ↵ | Evan Cheng | 2008-02-23 | 1 | -2/+1 | |
| | | | | | | | is avaliable at all uses regardless of whether it would be folded. llvm-svn: 47526 | |||||
| * | Recognize loads of arguments as re-materializable first. Therefore if ↵ | Evan Cheng | 2008-02-23 | 1 | -24/+26 | |
| | | | | | | | isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction. llvm-svn: 47520 | |||||
| * | Fix spill weight updating bug. | Evan Cheng | 2008-02-23 | 1 | -15/+27 | |
| | | | | | llvm-svn: 47507 | |||||
| * | Enable re-materialization of instructions which have virtual register ↵ | Evan Cheng | 2008-02-22 | 1 | -28/+155 | |
| | | | | | | | | | operands if the definition of the operand also reaches its uses. llvm-svn: 47475 | |||||

