mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-23 12:11:58 +00:00
Do not try to optimize a copy that has already been marked for deletion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102027 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
708e474c2f
commit
e3dd8550c6
@ -804,7 +804,8 @@ SimpleRegisterCoalescing::UpdateRegDefsUses(unsigned SrcReg, unsigned DstReg,
|
||||
CopySrcReg == SrcReg && CopyDstReg != UseDstReg) {
|
||||
// If the use is a copy and it won't be coalesced away, and its source
|
||||
// is defined by a trivial computation, try to rematerialize it instead.
|
||||
if (ReMaterializeTrivialDef(li_->getInterval(SrcReg), CopyDstReg,
|
||||
if (!JoinedCopies.count(UseMI) &&
|
||||
ReMaterializeTrivialDef(li_->getInterval(SrcReg), CopyDstReg,
|
||||
CopyDstSubIdx, UseMI))
|
||||
continue;
|
||||
}
|
||||
|
15
test/CodeGen/X86/2010-04-21-CoalescerBug.ll
Normal file
15
test/CodeGen/X86/2010-04-21-CoalescerBug.ll
Normal file
@ -0,0 +1,15 @@
|
||||
; RUN: llc < %s -mtriple=x86_64-apple-darwin
|
||||
; rdar://7886733
|
||||
|
||||
%struct.CMTime = type <{ i64, i32, i32, i64 }>
|
||||
%struct.CMTimeMapping = type { %struct.CMTimeRange, %struct.CMTimeRange }
|
||||
%struct.CMTimeRange = type { %struct.CMTime, %struct.CMTime }
|
||||
|
||||
define void @t(%struct.CMTimeMapping* noalias nocapture sret %agg.result) nounwind optsize ssp {
|
||||
entry:
|
||||
%agg.result1 = bitcast %struct.CMTimeMapping* %agg.result to i8* ; <i8*> [#uses=1]
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %agg.result1, i8* null, i64 96, i32 4, i1 false)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
|
Loading…
x
Reference in New Issue
Block a user