Files
swift-mirror/test/SILOptimizer/diagnostic_dead_function_elim.sil
Michael Gottesman 3236bc26fa [region-isolation] Refactor out the stubify dead function if no longer used functionality from move only checker into its own pass and put it before region based isolation.
I am doing this since region based isolation hit the same issue that the move
checker did. So it makes sense to refactor the functionality into its own pass
and move it into a helper pass that runs before both.

It is very conservative and only stubifies functions that the specialization
passes explicitly mark as this being ok to be done to.
2024-03-01 13:11:07 -08:00

65 lines
2.5 KiB
Plaintext

// RUN: %target-sil-opt -sil-diagnostic-dead-function-elim -sil-verify-all %s | %FileCheck %s
// CHECK-LABEL: sil @public_function_without_marker : $@convention(thin) () -> () {
// CHECK: tuple
// CHECK: } // end sil function 'public_function_without_marker'
sil public @public_function_without_marker : $@convention(thin) () -> () {
bb0:
%9999 = tuple ()
return %9999 : $()
}
// Possibly used externally... shouldn't eliminate this.
// CHECK-LABEL: sil [_semantics "sil.optimizer.delete_if_unused"] @public_function_with_marker : $@convention(thin) () -> () {
// CHECK: tuple
// CHECK: } // end sil function 'public_function_with_marker'
sil public [_semantics "sil.optimizer.delete_if_unused"] @public_function_with_marker : $@convention(thin) () -> () {
bb0:
%9999 = tuple ()
return %9999 : $()
}
// CHECK-LABEL: sil shared @shared_function_without_marker : $@convention(thin) () -> () {
// CHECK: tuple
// CHECK: } // end sil function 'shared_function_without_marker'
sil shared @shared_function_without_marker : $@convention(thin) () -> () {
bb0:
%9999 = tuple ()
return %9999 : $()
}
// CHECK-LABEL: sil private [_semantics "sil.optimizer.delete_if_unused"] @shared_function_with_marker : $@convention(thin) () -> () {
// CHECK: unreachable
// CHECK: } // end sil function 'shared_function_with_marker'
sil shared [_semantics "sil.optimizer.delete_if_unused"] @shared_function_with_marker : $@convention(thin) () -> () {
bb0:
%9999 = tuple ()
return %9999 : $()
}
// CHECK-LABEL: sil private @private_function_without_marker : $@convention(thin) () -> () {
// CHECK: tuple
// CHECK: } // end sil function 'private_function_without_marker'
sil private @private_function_without_marker : $@convention(thin) () -> () {
bb0:
%9999 = tuple ()
return %9999 : $()
}
// CHECK-LABEL: sil private [_semantics "sil.optimizer.delete_if_unused"] @private_function_with_marker : $@convention(thin) () -> () {
// CHECK: unreachable
// CHECK: } // end sil function 'private_function_with_marker'
sil private [_semantics "sil.optimizer.delete_if_unused"] @private_function_with_marker : $@convention(thin) () -> () {
bb0:
%9999 = tuple ()
return %9999 : $()
}
// CHECK: sil private [_semantics "sil.optimizer.delete_if_unused"] @serialized_shared_function_with_marker : $@convention(thin) () -> () {
// CHECK: unreachable
// CHECK: } // end sil function 'serialized_shared_function_with_marker'
sil shared [serialized] [_semantics "sil.optimizer.delete_if_unused"] @serialized_shared_function_with_marker : $@convention(thin) () -> () {
bb0:
%9999 = tuple ()
return %9999 : $()
}