Skip to content

Commit 0dd3c7c

Browse files
authored
Merge pull request #30156 from eeckstein/global-opt-fix
GlobalOpt: handle access markers correctly.
2 parents e83f58f + 370082b commit 0dd3c7c

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

lib/SILOptimizer/IPO/GlobalOpt.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,7 @@ bool SILGlobalOpt::tryRemoveUnusedGlobal(SILGlobalVariable *global) {
730730
static bool isPotentialStore(SILInstruction *inst) {
731731
switch (inst->getKind()) {
732732
case SILInstructionKind::LoadInst:
733+
case SILInstructionKind::EndAccessInst:
733734
return false;
734735
case SILInstructionKind::StructElementAddrInst:
735736
case SILInstructionKind::TupleElementAddrInst:

test/SILOptimizer/globalopt_global_propagation.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// RUN: %target-swift-frontend -O -emit-sil -enforce-exclusivity=unchecked %s | %FileCheck %s
2-
// RUN: %target-swift-frontend -O -wmo -emit-sil -enforce-exclusivity=unchecked %s | %FileCheck -check-prefix=CHECK-WMO %s
3-
// RUN: %target-swift-frontend -parse-as-library -O -emit-sil -enforce-exclusivity=unchecked %s | %FileCheck %s
4-
// RUN: %target-swift-frontend -parse-as-library -O -wmo -emit-sil -enforce-exclusivity=unchecked %s | %FileCheck -check-prefix=CHECK-WMO %s
1+
// RUN: %target-swift-frontend -O -emit-sil %s | %FileCheck %s
2+
// RUN: %target-swift-frontend -O -wmo -emit-sil %s | %FileCheck -check-prefix=CHECK-WMO %s
3+
// RUN: %target-swift-frontend -parse-as-library -O -emit-sil %s | %FileCheck %s
4+
// RUN: %target-swift-frontend -parse-as-library -O -wmo -emit-sil %s | %FileCheck -check-prefix=CHECK-WMO %s
55

66
// Check that values of internal and private global variables, which are provably assigned only
77
// once, are propagated into their uses and enable further optimizations like constant
@@ -93,6 +93,7 @@ public func test_internal_global_var_int() -> Int {
9393
// CHECK-WMO-LABEL: sil [noinline] @$s28globalopt_global_propagation012test_public_B11_var_doubleSdyF
9494
// CHECK-WMO: bb0:
9595
// CHECK-WMO-NEXT: global_addr
96+
// CHECK-WMO-NEXT: begin_access [read] [dynamic]
9697
// CHECK-WMO-NEXT: struct_element_addr
9798
// CHECK-WMO-NEXT: load
9899
@inline(never)
@@ -105,6 +106,7 @@ public func test_public_global_var_double() -> Double {
105106
// CHECK-LABEL: sil [noinline] @$s28globalopt_global_propagation012test_public_B8_var_intSiyF
106107
// CHECK: bb0:
107108
// CHECK-NEXT: global_addr
109+
// CHECK-NEXT: begin_access [read] [dynamic]
108110
// CHECK-NEXT: struct_element_addr
109111
// CHECK-NEXT: load
110112
@inline(never)

0 commit comments

Comments
 (0)