Skip to content

Commit 1bdb51e

Browse files
authored
Merge pull request #78318 from eeckstein/fix-access-enforcement-opts
AccessEnforcementOpts: fix a SIL verifier error caused by a wrong bail-out condition
2 parents 55189ba + 413c78e commit 1bdb51e

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

lib/SILOptimizer/Transforms/AccessEnforcementOpts.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1082,7 +1082,7 @@ mergeAccesses(SILFunction *F, PostDominanceInfo *postDomTree,
10821082
continue;
10831083

10841084
if (!extendOwnership(parentIns, childIns, deleter, deBlocks))
1085-
return false;
1085+
continue;
10861086

10871087
LLVM_DEBUG(llvm::dbgs()
10881088
<< "Merging " << *childIns << " into " << *parentIns << "\n");

test/SILOptimizer/access_enforcement_opts_ossa.sil

+25
Original file line numberDiff line numberDiff line change
@@ -1905,3 +1905,28 @@ bb0(%0 : $UnsafeRawPointer):
19051905
return %9 : $()
19061906
}
19071907

1908+
1909+
// CHECK-LABEL: sil [ossa] @merge_3_pairs_and_escaping_pointer :
1910+
// CHECK: ref_element_addr
1911+
// CHECK-NEXT: begin_access
1912+
// CHECK-NEXT: end_access
1913+
// CHECK-NEXT: ref_element_addr
1914+
// CHECK-NEXT: begin_access
1915+
// CHECK-NEXT: address_to_pointer
1916+
// CHECK-NEXT: end_access
1917+
// CHECK-NEXT: tuple
1918+
// CHECK-LABEL: } // end sil function 'merge_3_pairs_and_escaping_pointer'
1919+
sil [ossa] @merge_3_pairs_and_escaping_pointer : $@convention(thin) (@guaranteed RefElemClass) -> () {
1920+
bb0(%1 : @guaranteed $RefElemClass):
1921+
%2 = ref_element_addr %1, #RefElemClass.x
1922+
%3 = begin_access [modify] [dynamic] %2
1923+
end_access %3
1924+
%5 = begin_access [modify] [dynamic] %2
1925+
end_access %5
1926+
%7 = ref_element_addr %1, #RefElemClass.x
1927+
%8 = begin_access [modify] [dynamic] %7
1928+
%9 = address_to_pointer %8 to $Builtin.RawPointer
1929+
end_access %8
1930+
%11 = tuple ()
1931+
return %11
1932+
}

0 commit comments

Comments
 (0)