| // RUN: not --crash %target-sil-opt -bug-reducer-tester %s -bug-reducer-tester-failure-kind=opt-crasher -bug-reducer-tester-target-func='target_func' |
| // RUN: %target-sil-opt -bug-reducer-tester %s -bug-reducer-tester-failure-kind=opt-crasher -bug-reducer-tester-target-func='target_func_2' | %FileCheck %s |
| // RUN: %target-sil-opt -bug-reducer-tester -bug-reducer-tester-failure-kind=opt-crasher %s | %FileCheck %s |
| |
| // Make sure that we do not crash on partial applies. This is important to |
| // enable testing if a suffix needing a prefix case. |
| // RUN: %target-sil-opt -bug-reducer-tester %s -bug-reducer-tester-failure-kind=opt-crasher -bug-reducer-tester-target-func='partial_apply_callee' |
| |
| // REQUIRES: asserts |
| |
| sil_stage canonical |
| |
| // CHECK-LABEL: sil @target_func : $@convention(thin) () -> () { |
| sil @target_func : $@convention(thin) () -> () { |
| bb0: |
| %9999 = tuple() |
| return %9999 : $() |
| } |
| |
| // CHECK-LABEL: sil @func_2 : $@convention(thin) () -> () { |
| // CHECK: [[FUNC:%.*]] = function_ref @target_func : $@convention(thin) () -> () |
| // CHECK: apply [[FUNC]]() |
| sil @func_2 : $@convention(thin) () -> () { |
| bb0: |
| %0 = function_ref @target_func : $@convention(thin) () -> () |
| apply %0() : $@convention(thin) () -> () |
| %9999 = tuple() |
| return %9999 : $() |
| } |
| |
| sil @partial_apply_callee : $@convention(thin) () -> () { |
| bb0: |
| %9999 = tuple() |
| return %9999 : $() |
| } |
| |
| sil @partial_apply_caller : $@convention(thin) () -> () { |
| bb0: |
| %0 = function_ref @partial_apply_callee : $@convention(thin) () -> () |
| %1 = partial_apply %0() : $@convention(thin) () -> () |
| %2 = apply %1() : $@callee_owned () -> () |
| %9999 = tuple() |
| return %9999 : $() |
| } |