Project

General

Profile

« Previous | Next » 

Revision 06289734

Added by nagachika (Tomoyuki Chikanaga) over 5 years ago

merge revision(s) 63868,63870: [Backport #14897]

    Fix a bug of peephole optimization

    ```
      if   L1
    L0:
      jump L2
    L1:
      ...
    L2:
    ```

    was wrongly optimized to:

    ```
      unless L2
    L0:
    L1:
      ...
    L2:
    ```

    To make it conservative, this optimization is now disabled when there is
    any label between `if` and `jump` instructions.
    Fixes [Bug #14897].

    compile.c: remove unreachable jump only

    * compile.c (iseq_peephole_optimize): remove unreachable jump
      instruction only.  if it is labeled and referred from other
      instructions, it is reachable and must not be removed.
      [ruby-core:87830] [Bug #14897]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@64893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e