 func plusOneCP1() -> CP1 {}
 
 // CHECK-LABEL: sil hidden @_TF19protocol_extensions37test_open_existential_semantics_classFTPS_3CP1_PS0___T_
-// GUARANTEED-LABEL: sil hidden @_TF19protocol_extensions37test_open_existential_semantics_classFTPS_3CP1_PS0___T_
 func test_open_existential_semantics_class(guaranteed: CP1,
                                            var immediate: CP1) {
   // CHECK: [[IMMEDIATE_BOX:%.*]] = alloc_box $CP1
-  // GUARANTEED: [[IMMEDIATE_BOX:%.*]] = alloc_box $CP1
 
   // CHECK-NOT: strong_retain %0
   // CHECK: [[VALUE:%.*]] = open_existential_ref %0

func plusOneP1() -> P1 {}

// CHECK-LABEL: sil hidden @_TF19protocol_extensions38test_open_existential_semantics_opaqueFTPS_2P1_PS0___T_
// GUARANTEED-LABEL: sil hidden @_TF19protocol_extensions38test_open_existential_semantics_opaqueFTPS_2P1_PS0___T_
func test_open_existential_semantics_opaque(guaranteed: P1,
                                            var immediate: P1) {
  // CHECK: [[IMMEDIATE_BOX:%.*]] = alloc_box $P1
  // GUARANTEED: [[IMMEDIATE_BOX:%.*]] = alloc_box $P1

  // CHECK: [[VALUE:%.*]] = open_existential_addr %0
  // CHECK: [[METHOD:%.*]] = function_ref
  // CHECK: apply [[METHOD]]<{{.*}}>([[VALUE]])

  // GUARANTEED: [[VALUE:%.*]] = open_existential_addr %0
  // GUARANTEED: [[METHOD:%.*]] = function_ref
  // GUARANTEED: apply [[METHOD]]<{{.*}}>([[VALUE]])
  guaranteed.f1()
  
  // -- Need a guaranteed copy because it's immutable

  // CHECK: apply [[METHOD]]<{{.*}}>([[VALUE]])
  // CHECK-NOT: strong_release [[VALUE]]
  // CHECK-NOT: strong_release %0
  guaranteed.f1()

  // CHECK: [[IMMEDIATE:%.*]] = load [[IMMEDIATE_BOX]]
