Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 75a310dd6d6a8cfcd7519613d66d46756b5265f0
      
https://github.com/Perl/perl5/commit/75a310dd6d6a8cfcd7519613d66d46756b5265f0
  Author: Richard Leach <richardle...@users.noreply.github.com>
  Date:   2025-07-28 (Mon, 28 Jul 2025)

  Changed paths:
    M lib/B/Deparse.pm
    M lib/B/Deparse.t
    M op.c
    M peep.c
    M t/op/cond.t
    M t/perf/opcount.t

  Log Message:
  -----------
  op.c/peep.c - Optimise away empty else{} blocks

This is a replacement for https://github.com/Perl/perl5/pull/22745, which
aimed to prevent the associated `OP_STUB` from being created in
`Perl_newCONDOP` and subsequently removed in peep.c. However, doing that
turned out to be unavoidable, since it is not safe to omit the `OP_STUB`
if it is in scalar context, but `Perl_newCONDOP` runs before context is
applied.

This commit:
 * Re-adds the logic in `Perl_op_scope` to not wrap a bare `OP_STUB` in an
   `ENTER/LEAVE` pair.
 * Removes any relevant `OP_STUB`s in non-scalar context in `Perl_rpeep`.
 * Adds B::Deparse support
 * Adds a test based on the failures seen in 
https://github.com/Perl/perl5/issues/22866


  Commit: e7778069bc401e5729ab4da6d5fa9821098030bf
      
https://github.com/Perl/perl5/commit/e7778069bc401e5729ab4da6d5fa9821098030bf
  Author: Richard Leach <richardle...@users.noreply.github.com>
  Date:   2025-07-28 (Mon, 28 Jul 2025)

  Changed paths:
    M lib/B/Deparse.pm
    M lib/B/Deparse.t
    M op.h
    M peep.c
    M t/perf/opcount.t

  Log Message:
  -----------
  op.h/op.c/peep.c - Optimise away empty if{} blocks

This commit optimises away the OP_STUB associated with an empty `true`
branch of an `OP_COND_EXPR`.

The `OPf_SPECIAL` flag has been brought into use on the `OP_COND_EXPR`
to indicate that it is the `else`, not the `if`, block that has been
optimised away. This is purely for the benefit of B::Deparse.


Compare: https://github.com/Perl/perl5/compare/613101d7fb08...e7778069bc40

To unsubscribe from these emails, change your notification settings at 
https://github.com/Perl/perl5/settings/notifications

Reply via email to