@@ -4517,12 +4517,6 @@ Perl_op_scope(pTHX_ OP *o)
45174517{
45184518 if (o) {
45194519 if (o->op_flags & OPf_PARENS || PERLDB_NOOPT || TAINTING_get) {
4520-
4521- /* There's no need to wrap an empty stub in an enter/leave.
4522- * This also makes eliding empty if/else blocks simpler. */
4523- if (OP_TYPE_IS(o, OP_STUB) && (o->op_flags & OPf_PARENS))
4524- return o;
4525-
45264520 o = op_prepend_elem(OP_LINESEQ,
45274521 newOP(OP_ENTER, (o->op_flags & OPf_WANT)), o);
45284522 OpTYPE_set(o, OP_LEAVE);
@@ -9274,6 +9268,7 @@ Perl_newCONDOP(pTHX_ I32 flags, OP *first, OP *trueop, OP *falseop)
92749268 logop = alloc_LOGOP(OP_COND_EXPR, first, LINKLIST(trueop));
92759269 logop->op_flags |= (U8)flags;
92769270 logop->op_private = (U8)(1 | (flags >> 8));
9271+ logop->op_next = LINKLIST(falseop);
92779272
92789273 CHECKOP(OP_COND_EXPR, /* that's logop->op_type */
92799274 logop);
@@ -9282,23 +9277,13 @@ Perl_newCONDOP(pTHX_ I32 flags, OP *first, OP *trueop, OP *falseop)
92829277 start = LINKLIST(first);
92839278 first->op_next = (OP*)logop;
92849279
9285- /* make first & trueop siblings */
9286- /* falseop may also be a sibling, if not optimised away */
9280+ /* make first, trueop, falseop siblings */
92879281 op_sibling_splice((OP*)logop, first, 0, trueop);
9282+ op_sibling_splice((OP*)logop, trueop, 0, falseop);
92889283
92899284 o = newUNOP(OP_NULL, 0, (OP*)logop);
92909285
9291- if (OP_TYPE_IS(falseop, OP_STUB) && (falseop->op_flags & OPf_PARENS)) {
9292- /* The `else` block is empty. Optimise it away. */
9293- logop->op_next = o;
9294- op_free(falseop);
9295- } else {
9296- op_sibling_splice((OP*)logop, trueop, 0, falseop);
9297- logop->op_next = LINKLIST(falseop);
9298- falseop->op_next = o;
9299- }
9300-
9301- trueop->op_next = o;
9286+ trueop->op_next = falseop->op_next = o;
93029287
93039288 o->op_next = start;
93049289 return o;
0 commit comments