- Mar 31, 2011
-
-
Jakob Stoklund Olesen authored
The rematerialized instruction may require a more constrained register class than the register being spilled. In the test case, the spilled register has been inflated to the DPR register class, but we are rematerializing a load of the ssub_0 sub-register which only exists for DPR_VFP2 registers. The register class is reinflated after spilling, so the conservative choice is only temporary. llvm-svn: 128610
-
- Mar 30, 2011
-
-
Jakob Stoklund Olesen authored
The rewriter can keep track of multiple stack slots in the same register if they happen to have the same value. When an instruction modifies a stack slot by defining a register that is mapped to a stack slot, other stack slots in that register are no longer valid. This is a very rare problem, and I don't have a simple test case. I get the impression that VirtRegRewriter knows it is about to be deleted, inventing a last opaque problem. <rdar://problem/9204040> llvm-svn: 128562
-
Jakob Stoklund Olesen authored
llvm-svn: 128561
-
Jay Foad authored
PHINode::Create() giving the (known or expected) number of operands. llvm-svn: 128537
-
Jay Foad authored
llvm-svn: 128535
-
Jakob Stoklund Olesen authored
When DCE clones a live range because it separates into connected components, make sure that the clones enter the same register allocator stage as the register they were cloned from. For instance, clones may be split even when they where created during spilling. Other registers created during spilling are not candidates for splitting or even (re-)spilling. llvm-svn: 128524
-
Jim Grosbach authored
llvm-svn: 128504
-
- Mar 29, 2011
-
-
Jakob Stoklund Olesen authored
The spill weight is not recomputed for an unspillable register - it stays infinite. llvm-svn: 128490
-
Jakob Stoklund Olesen authored
llvm-svn: 128469
-
Jakob Stoklund Olesen authored
This may eliminate some uses of the spilled registers, and we don't want to insert reloads for that. llvm-svn: 128468
-
Bill Wendling authored
llvm-svn: 128465
-
Bill Wendling authored
the FailBB dominator is correctly calculated. Believe it or not, there isn't a functionality change here. llvm-svn: 128455
-
Bill Wendling authored
dominator information. llvm-svn: 128452
-
Jakob Stoklund Olesen authored
llvm-svn: 128450
-
Jakob Stoklund Olesen authored
The instruction to be rematerialized may not be the one defining the register that is being spilled. The traceSiblingValue() function sees through sibling copies to find the remat candidate. llvm-svn: 128449
-
Bill Wendling authored
becomes reachable when before it wasn't). Check to make sure that it's not null before trying to use it. llvm-svn: 128434
-
Daniel Dunbar authored
integrated-as. llvm-svn: 128431
-
- Mar 28, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 128398
-
Jakob Stoklund Olesen authored
The reassignment phase was able to move interference with a higher spill weight, but it didn't happen very often and it was fairly expensive. The existing interference eviction picks up the slack. llvm-svn: 128397
-
- Mar 26, 2011
-
-
Jakob Stoklund Olesen authored
The main register class may have been inflated by live range splitting, so that register class is not necessarily valid for the snippet instructions. Use the original register class for the stack slot interval. llvm-svn: 128351
-
Benjamin Kramer authored
It couldn't be used outside of the file because SDISelAsmOperandInfo is local to SelectionDAGBuilder.cpp. Making it a static function avoids a weird linkage dance. llvm-svn: 128342
-
Jakob Stoklund Olesen authored
Correctly terminate the range of register DBG_VALUEs when the register is clobbered or when the basic block ends. The code is now ready to deal with variables that are sometimes in a register and sometimes on the stack. We just need to teach emitDebugLoc to say 'stack slot'. llvm-svn: 128327
-
- Mar 25, 2011
-
-
Jakob Stoklund Olesen authored
The .dot directives don't need labels, that is a leftover from when we created line number info manually. Instructions following a DBG_VALUE can share its label since the DBG_VALUE doesn't produce any code. llvm-svn: 128284
-
Andrew Trick authored
Yet another case of unchecked NULL node (for physreg copy). May fix PR9509. llvm-svn: 128266
-
Nick Lewycky authored
printing a single character. llvm-svn: 128256
-
Jakob Stoklund Olesen authored
Add an assertion to linear scan to prevent it from allocating registers outside the register class. <rdar://problem/9183021> llvm-svn: 128254
-
- Mar 24, 2011
-
-
Devang Patel authored
A better approach would be to move source id handling inside MC. llvm-svn: 128233
-
- Mar 23, 2011
-
-
Eli Friedman authored
Also cleaning up some duplicated code while I'm here. llvm-svn: 128176
-
Andrew Trick authored
so the scheduler can't create new interferences on the copies themselves. Prior to this fix the scheduler could get stuck in a loop creating copies. Fixes PR9509. llvm-svn: 128164
-
Andrew Trick authored
llvm-svn: 128163
-
Jakob Stoklund Olesen authored
Each of these instructions may have a RegsClobberInsn entry that can't be ignored. Consecutive ranges are coalesced later when DwarfDebug::emitDebugLoc merges entries. llvm-svn: 128155
-
Jakob Stoklund Olesen authored
The register allocator needs to know when the range shrinks. llvm-svn: 128145
-
Jakob Stoklund Olesen authored
Empty ranges may represent undef values. llvm-svn: 128144
-
Jakob Stoklund Olesen authored
llvm-svn: 128143
-
Andrew Trick authored
I'm tired of doing this manually for each checkout. If anyone knows a better way debug isel for non-trivial tests feel free to revert and let me know how to do it. llvm-svn: 128132
-
- Mar 22, 2011
-
-
Jakob Stoklund Olesen authored
This will extend the ranges of debug info variables in registers until they are clobbered. Fix 1: Don't mistake DBG_VALUE instructions referring to incoming arguments on the stack with DBG_VALUE instructions referring to variables in the frame pointer. This fixes the gdb test-suite failure. Fix 2: Don't trace through copies to physical registers setting up call arguments. These registers are call clobbered, and the source register is more likely to be a callee-saved register that can be extended through the call instruction. llvm-svn: 128114
-
Andrew Trick authored
Temporarily reverting these to see if we can get llvm-objdump to link. Hopefully this is not the problem. llvm-svn: 128097
-
Jakob Stoklund Olesen authored
This is likely to fix the segfault in llvm-gcc-x86_64-darwin10-cross-mingw32. llvm-svn: 128051
-
Jakob Stoklund Olesen authored
These ranges get completely jumbled by the post-ra scheduler, and it is not really reasonable to expect it to make sense of them. Instead, teach DwarfDebug to notice when user variables in registers are clobbered, and terminate the ranges there. llvm-svn: 128045
-
- Mar 21, 2011
-
-
Eric Christopher authored
llvm-svn: 128004
-