CFA: additional jumps to catch / finally generated in the end of try / before exits from try #KT-5469 Fixed

Also #KT-13612 Fixed
(cherry picked from commit 7c188b3)
This commit is contained in:
Mikhail Glukhikh
2016-04-20 17:34:19 +03:00
committed by Mikhail Glukhikh
parent 43954699a7
commit f8039249c6
28 changed files with 638 additions and 89 deletions
@@ -21,10 +21,11 @@ L0:
3 mark({ i = 1 })
r(1) -> <v1>
w(i|<v1>)
2 jmp(L3) NEXT:[mark({ fun bar() {} return i })]
2 jmp?(L2) NEXT:[mark({ fun bar() {} return i }), jmp(L3)]
jmp(L3) NEXT:[mark({ fun bar() {} return i })]
L2 [onExceptionToFinallyBlock]:
L4 [start finally]:
3 mark({ fun bar() {} return i }) PREV:[jmp?(L2)]
3 mark({ fun bar() {} return i }) PREV:[jmp?(L2), jmp?(L2)]
jmp?(L5) NEXT:[r(i) -> <v3>, d(fun bar() {})]
d(fun bar() {}) NEXT:[<SINK>]
L5 [after local declaration]: