| # Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file | 
 | # for details. All rights reserved. Use of this source code is governed by a | 
 | # BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | .class LTest; | 
 | .super Ljava/lang/Object; | 
 |  | 
 | # Fall through to catch block. | 
 | .method public test1()V | 
 |     .registers 1 | 
 |     :try_start | 
 |     monitor-enter p0 | 
 |     monitor-exit  p0 | 
 |     :try_end | 
 |     return-void | 
 |     .catchall {:try_start .. :try_end} :try_end | 
 | .end method | 
 |  | 
 | .method public static test2()I | 
 |     .locals 1 | 
 |     const v0, 0 | 
 |     :try_start | 
 |     const v0, 1 | 
 |     goto :return | 
 |     :try_end | 
 |     .catch Ljava/lang/Exception; {:try_start .. :try_end} :return | 
 |     .catch Ljava/lang/Throwable; {:try_start .. :try_end} :error | 
 |     :error | 
 |     move-exception v0 | 
 |     const v0, 2 | 
 |     :return | 
 |     return v0 | 
 | .end method | 
 |  | 
 | .method public static test2_throw()I | 
 |     .locals 1 | 
 |     const v0, 1 | 
 |     :try_start | 
 |     invoke-static {}, Ltest/X;->f()V | 
 |     const v0, 0 | 
 |     goto :return | 
 |     :try_end | 
 |     .catch Ljava/lang/Exception; {:try_start .. :try_end} :return | 
 |     .catch Ljava/lang/Throwable; {:try_start .. :try_end} :error | 
 |     :error | 
 |     move-exception v0 | 
 |     throw v0 | 
 |     :return | 
 |     return v0 | 
 | .end method | 
 |  | 
 | # Dead catch block. | 
 | .method public test3()I | 
 |     .locals 1 | 
 |     const v0, 0 | 
 |     return v0 | 
 |     :start | 
 |     nop | 
 |     :end | 
 |     .catchall {:start .. :end} :catch | 
 |     nop | 
 |     :catch | 
 |     nop | 
 | .end method | 
 |  | 
 | .method public static main([Ljava/lang/String;)V | 
 |     .locals 0 | 
 |     return-void | 
 | .end method | 
 |  | 
 | .method public test4(I)V | 
 |     .locals 1 | 
 |     const/4 v0, 0 | 
 |     if-nez p0, :not_zero | 
 |     const/4 v0, 1 | 
 |     goto :try_end | 
 |     :not_zero | 
 |     const/4 v0, 2 | 
 |     :try_start | 
 |     invoke-static {}, Ltest/X;->f()V | 
 |     const/4 v0, 3 | 
 |     :try_end | 
 |     return-void | 
 |     .catchall {:try_start .. :try_end} :try_end | 
 | .end method | 
 |  | 
 | .method public f()V | 
 |     .locals 0 | 
 |     return-void | 
 | .end method |