[llvm-commits] [llvm] r157131 - in /llvm/trunk: lib/CodeGen/RegisterCoalescer.cpp test/CodeGen/X86/segmented-stacks-dynamic.ll
Jakob Stoklund Olesen
stoklund at 2pi.dk
Sat May 19 13:54:07 PDT 2012
Author: stoklund
Date: Sat May 19 15:54:07 2012
New Revision: 157131
URL: http://llvm.org/viewvc/llvm-project?rev=157131&view=rev
Log:
Erase joined copies immediately.
The late dead code elimination is no longer necessary.
The test changes are cause by a register hint that can be either %rdi or
%rax. The choice depends on the use list order, which this patch changes.
Modified:
llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp
llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll
Modified: llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?rev=157131&r1=157130&r2=157131&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp (original)
+++ llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp Sat May 19 15:54:07 2012
@@ -766,7 +766,9 @@
DEBUG(dbgs() << "\t\tnoop: " << DefIdx << '\t' << *UseMI);
assert(DVNI->def == DefIdx);
BValNo = IntB.MergeValueNumberInto(BValNo, DVNI);
- markAsJoined(UseMI);
+ ErasedInstrs.insert(UseMI);
+ LIS->RemoveMachineInstrFromMaps(UseMI);
+ UseMI->eraseFromParent();
}
// Extend BValNo by merging in IntA live ranges of AValNo. Val# definition
@@ -1127,7 +1129,8 @@
if (!CP.isPartial()) {
if (adjustCopiesBackFrom(CP, CopyMI) ||
removeCopyByCommutingDef(CP, CopyMI)) {
- markAsJoined(CopyMI);
+ LIS->RemoveMachineInstrFromMaps(CopyMI);
+ CopyMI->eraseFromParent();
DEBUG(dbgs() << "\tTrivial!\n");
return true;
}
@@ -1152,7 +1155,8 @@
InflateRegs.push_back(CP.getDstReg());
// Remember to delete the copy instruction.
- markAsJoined(CopyMI);
+ LIS->RemoveMachineInstrFromMaps(CopyMI);
+ CopyMI->eraseFromParent();
// Rewrite all SrcReg operands to DstReg.
// Also update DstReg operands to include DstIdx if it is set.
@@ -1518,13 +1522,11 @@
// was actually a copy from A. Now that we decided to coalesce A and B,
// transform the code into
// A = X
- // X = X
- // and mark the X as coalesced to keep the illusion.
unsigned Src = MI->getOperand(1).getReg();
SourceRegisters.push_back(Src);
- MI->getOperand(0).substVirtReg(Src, 0, *TRI);
-
- markAsJoined(MI);
+ ErasedInstrs.insert(MI);
+ LIS->RemoveMachineInstrFromMaps(MI);
+ MI->eraseFromParent();
}
// If B = X was the last use of X in a liverange, we have to shrink it now
Modified: llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll?rev=157131&r1=157130&r2=157131&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll (original)
+++ llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll Sat May 19 15:54:07 2012
@@ -51,14 +51,14 @@
; X64-NEXT: callq __morestack
; X64-NEXT: ret
-; X64: movq %rsp, %rdi
-; X64-NEXT: subq %rax, %rdi
-; X64-NEXT: cmpq %rdi, %fs:112
+; X64: movq %rsp, %[[RDI:rdi|rax]]
+; X64-NEXT: subq %{{.*}}, %[[RDI]]
+; X64-NEXT: cmpq %[[RDI]], %fs:112
-; X64: movq %rdi, %rsp
+; X64: movq %[[RDI]], %rsp
-; X64: movq %rax, %rdi
+; X64: movq %{{.*}}, %rdi
; X64-NEXT: callq __morestack_allocate_stack_space
-; X64-NEXT: movq %rax, %rdi
+; X64: movq %rax, %rdi
}
More information about the llvm-commits
mailing list