// RUN: %target-sil-opt -access-enforcement-dom %s -enable-sil-verify-all | %FileCheck %s
//
// Test AccessEnforcementDom in the presence of overlapping access scopes.

sil_stage canonical

import Builtin
import Swift
import SwiftShims

@_hasInitialValue @_hasStorage var globalInt: Int64 { get set }

// globalInt
sil_global hidden @globalInt : $Int64


// -----------------------------------------------------------------------------
// (read, read), read

// Yes, can optimize if the dominating access is nested outside another dynamic.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDRD_RD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [read] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDRD_RD'
sil hidden [noinline] @testDominatingOverlapRDRD_RD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// Yes, can optimize if the dominating access is nested inside.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRSRD_RD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [static] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [read] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRSRD_RD'
sil hidden [noinline] @testDominatingOverlapRSRD_RD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [static] %ga : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// Yes, can optimize if the dominating access is nested outside.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDRS_RD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [static] [[GA]] : $*Int64
// CHECK: begin_access [read] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDRS_RD'
sil hidden [noinline] @testDominatingOverlapRDRS_RD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [read] [static] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// (read, read), modify

// No, cannot promote nested read to write.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDRD_MD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDRD_MD'
sil hidden [noinline] @testDominatingOverlapRDRD_MD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot promote nested read to write.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRSRD_MD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [static] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRSRD_MD'
sil hidden [noinline] @testDominatingOverlapRSRD_MD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [static] %ga : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot promote nested read to write.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDRS_MD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [static] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDRS_MD'
sil hidden [noinline] @testDominatingOverlapRDRS_MD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [read] [static] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// (read, modify), read

// Yes, can optimize if the dominating access is nested outside.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDMD_RD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [read] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDMD_RD'
sil hidden [noinline] @testDominatingOverlapRDMD_RD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// Yes, can optimize if the dominating access is nested inside.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRSMD_RD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [static] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [read] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRSMD_RD'
sil hidden [noinline] @testDominatingOverlapRSMD_RD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [static] %ga : $*Int64
  %a2 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// Yes, can optimize if the dominating access is nested outside.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDMS_RD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [static] [[GA]] : $*Int64
// CHECK: begin_access [read] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDMS_RD'
sil hidden [noinline] @testDominatingOverlapRDMS_RD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [modify] [static] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// (read, modify), modify

// Yes, can promote if the nested access is a modify.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDMD_MD : $@convention(thin) () -> () {
// CHECK: begin_access [modify] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [modify] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDMD_MD'
sil hidden [noinline] @testDominatingOverlapRDMD_MD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// Yes, can optimize if the dominating access is nested inside.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRSMD_MD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [static] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [modify] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRSMD_MD'
sil hidden [noinline] @testDominatingOverlapRSMD_MD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [static] %ga : $*Int64
  %a2 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// Yes, can promote if the nested access is a modify.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRDMS_MD : $@convention(thin) () -> () {
// CHECK: begin_access [modify] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [static] [[GA]] : $*Int64
// CHECK: begin_access [modify] [static] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRDMS_MD'
sil hidden [noinline] @testDominatingOverlapRDMS_MD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  %a2 = begin_access [modify] [static] %ga : $*Int64
  end_access %a2 : $*Int64
  end_access %a1 : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// read, (read, read)

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_RDRD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [read] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_RDRD'
sil hidden [noinline] @testDominatingOverlapRD_RDRD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_RSRD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [static] [[GA]] : $*Int64
// CHECK: begin_access [read] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_RSRD'
sil hidden [noinline] @testDominatingOverlapRD_RSRD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [static] %ga : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// read, (read, modify)

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_RDMD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_RDMD'
sil hidden [noinline] @testDominatingOverlapRD_RDMD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_RSMD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [static] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_RSMD'
sil hidden [noinline] @testDominatingOverlapRD_RSMD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [static] %ga : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// read, (modify, read)

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_MDRD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [read] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_MDRD'
sil hidden [noinline] @testDominatingOverlapRD_MDRD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [modify] [dynamic] %ga : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_MSRD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [static] [[GA]] : $*Int64
// CHECK: begin_access [read] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_MSRD'
sil hidden [noinline] @testDominatingOverlapRD_MSRD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [modify] [static] %ga : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// read, (modify, modify)

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_MDMD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_MDMD'
sil hidden [noinline] @testDominatingOverlapRD_MDMD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [modify] [dynamic] %ga : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapRD_MSMD : $@convention(thin) () -> () {
// CHECK: begin_access [read] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [modify] [static] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapRD_MSMD'
sil hidden [noinline] @testDominatingOverlapRD_MSMD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [read] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [modify] [static] %ga : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// modify, (read, read)

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapMD_RDRD : $@convention(thin) () -> () {
// CHECK: begin_access [modify] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [read] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapMD_RDRD'
sil hidden [noinline] @testDominatingOverlapMD_RDRD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapMD_RSRD : $@convention(thin) () -> () {
// CHECK: begin_access [modify] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [static] [[GA]] : $*Int64
// CHECK: begin_access [read] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapMD_RSRD'
sil hidden [noinline] @testDominatingOverlapMD_RSRD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [static] %ga : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// modify, (read, modify)

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapMD_RDMD : $@convention(thin) () -> () {
// CHECK: begin_access [modify] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [dynamic] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapMD_RDMD'
sil hidden [noinline] @testDominatingOverlapMD_RDMD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [dynamic] %ga : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// No, cannot optimize a nested access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapMD_RSMD : $@convention(thin) () -> () {
// CHECK: begin_access [modify] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [static] [[GA]] : $*Int64
// CHECK: begin_access [modify] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapMD_RSMD'
sil hidden [noinline] @testDominatingOverlapMD_RSMD : $@convention(thin) () -> () {
bb0:
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [static] %ga : $*Int64
  %a3 = begin_access [modify] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}

// -----------------------------------------------------------------------------
// Unidentifiable access

// No, cannot optimized nest access inside an non-uniquely identified access.
// CHECK-LABEL: sil hidden [noinline] @testDominatingOverlapUnidentifiable : $@convention(thin) (@inout Int64) -> () {
// CHECK: begin_access [modify] [dynamic] [[GA:%.*]] : $*Int64
// CHECK: begin_access [read] [static] %0 : $*Int64
// CHECK: begin_access [read] [dynamic] [no_nested_conflict] [[GA]] : $*Int64
// CHECK-LABEL: } // end sil function 'testDominatingOverlapUnidentifiable'
sil hidden [noinline] @testDominatingOverlapUnidentifiable : $@convention(thin) (@inout Int64) -> () {
bb0(%0 : $*Int64):
  %ga = global_addr @globalInt : $*Int64
  %a1 = begin_access [modify] [dynamic] %ga : $*Int64
  end_access %a1 : $*Int64
  %a2 = begin_access [read] [static] %0 : $*Int64
  %a3 = begin_access [read] [dynamic] [no_nested_conflict] %ga : $*Int64
  end_access %a3 : $*Int64
  end_access %a2 : $*Int64
  %z = tuple ()
  return %z : $()
}
