| // RUN: %target-sil-opt -enable-sil-ownership -enable-sil-verify-all=0 -module-name Swift -o /dev/null 2>&1 %s |
| // REQUIRES: asserts |
| |
| // This file is meant to contain tests that previously the verifier treated |
| // incorrectly. This is important to ensure that the verifier does not |
| // regress. It should only deal with dataflow over consuming failures. |
| |
| sil_stage canonical |
| |
| import Builtin |
| |
| enum FakeOptional<T> { |
| case some(T) |
| case none |
| } |
| |
| class Klass { |
| } |
| |
| sil [ossa] @klass_user : $@convention(thin) (@guaranteed FakeOptional<Klass>) -> () |
| |
| sil [ossa] @guaranteed_is_not_owned_use : $@convention(thin) (@guaranteed Klass) -> () { |
| bb0(%0 : @guaranteed $Klass): |
| %1 = copy_value %0 : $Klass |
| %2 = function_ref @klass_user : $@convention(thin) (@guaranteed FakeOptional<Klass>) -> () |
| %3 = enum $FakeOptional<Klass>, #FakeOptional.some!enumelt.1, %1 : $Klass |
| %4 = apply %2(%3) : $@convention(thin) (@guaranteed FakeOptional<Klass>) -> () |
| destroy_value %3 : $FakeOptional<Klass> |
| %9999 = tuple() |
| return %9999 : $() |
| } |