void switch_destruct(int z) {
  // CHECK: call void @_ZN16ConvertibleToIntC1Ev
  switch (ConvertibleToInt conv = ConvertibleToInt()) {
  case 0:
    break;

  default:
    // CHECK: store i32 19
    z = 19;
    break;
  }
  // CHECK: call void @_ZN16ConvertibleToIntD1Ev
  // CHECK: store i32 20
  z = 20;

  // CHECK: call void @_Z12getConvToIntv
  // CHECK: call i32 @_ZN16ConvertibleToIntcviEv
  // CHECK: call void @_ZN16ConvertibleToIntD1Ev
  switch(getConvToInt()) {
  case 0:
    break;
  }
  // CHECK: store i32 27
  z = 27;
  // CHECK: ret
}
void switch_destruct(int z) {
  // CHECK: call void @_ZN16ConvertibleToIntC1Ev
  switch (ConvertibleToInt conv = ConvertibleToInt()) {
  case 0:
    break;

  default:
    // CHECK: {{sw.default:|:3}}
    // CHECK: store i32 19
    z = 19;
    break;
  }
  // CHECK: {{sw.epilog:|:5}}
  // CHECK: call void @_ZN16ConvertibleToIntD1Ev
  // CHECK: store i32 20
  z = 20;
}