Revert "[CaptureTracking] Do not check domination"

This reverts commit 6b8b43e7af.

This causes clang test to fail (CodeGenObjC/synchronized.m).
Revert until I can figure out whether that's an expected change.
This commit is contained in:
Nikita Popov 2021-05-16 11:04:45 +02:00
parent 6b8b43e7af
commit 541c2845de
2 changed files with 9 additions and 3 deletions

View File

@ -143,8 +143,14 @@ namespace {
return !isPotentiallyReachableFromMany(Worklist, BB, nullptr, DT);
}
// If the value is defined in the same basic block as use and BeforeHere,
// there is no need to explore the use if BeforeHere dominates use.
// Check whether there is a path from I to BeforeHere.
return !isPotentiallyReachable(I, BeforeHere, nullptr, DT);
if (DT->dominates(BeforeHere, I) &&
!isPotentiallyReachable(I, BeforeHere, nullptr, DT))
return true;
return false;
}
bool captured(const Use *U) override {

View File

@ -252,8 +252,8 @@ define void @capture_nopath_call(i1 %cond) {
; CHECK-NEXT: call void @accept_ptr(i8* [[DEST_I8]])
; CHECK-NEXT: ret void
; CHECK: nocaptures:
; CHECK-NEXT: [[DEST1:%.*]] = bitcast [16 x i8]* [[DEST]] to i8*
; CHECK-NEXT: call void @accept_ptr(i8* [[DEST1]]) #[[ATTR3]]
; CHECK-NEXT: call void @accept_ptr(i8* [[SRC_I8]]) #[[ATTR3]]
; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DEST_I8]], i8* [[SRC_I8]], i64 16, i1 false)
; CHECK-NEXT: ret void
;
%dest = alloca [16 x i8]