This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
newMYSUB/Perl_newATTRSUB_x remove a goto
authorDavid Mitchell <davem@iabyn.com>
Mon, 5 Sep 2016 11:08:56 +0000 (12:08 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 5 Sep 2016 11:56:45 +0000 (12:56 +0100)
In both these functions there is code like:

    if (!block)
       goto attrs;
    ...
  attrs:

Change them to

    if (block) {
        ...
    }
  attrs:

Lets not use gotos if there's a better way.

Will re-indent in next commit.

op.c

diff --git a/op.c b/op.c
index 70d0da0..25cc39e 100644 (file)
--- a/op.c
+++ b/op.c
@@ -8290,9 +8290,7 @@ Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
         if ( ps_utf8 ) SvUTF8_on(MUTABLE_SV(cv));
     }
 
-    if (!block)
-       goto attrs;
-
+    if (block) {
     /* If we assign an optree to a PVCV, then we've defined a subroutine that
        the debugger could be able to set a breakpoint in, so signal to
        pp_entereval that it should not throw away any saved lines at scope
@@ -8317,6 +8315,7 @@ Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
     /* now that optimizer has done its work, adjust pad values */
 
     pad_tidy(CvCLONE(cv) ? padtidy_SUBCLONE : padtidy_SUB);
+    }
 
   attrs:
     if (attrs) {
@@ -8767,9 +8766,7 @@ Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs,
         if ( ps_utf8 ) SvUTF8_on(MUTABLE_SV(cv));
     }
 
-    if (!block)
-       goto attrs;
-
+    if (block) {
     /* If we assign an optree to a PVCV, then we've defined a subroutine that
        the debugger could be able to set a breakpoint in, so signal to
        pp_entereval that it should not throw away any saved lines at scope
@@ -8794,6 +8791,7 @@ Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs,
     /* now that optimizer has done its work, adjust pad values */
 
     pad_tidy(CvCLONE(cv) ? padtidy_SUBCLONE : padtidy_SUB);
+    }
 
   attrs:
     if (attrs) {