Bug #74234 [Asn]: Op Code is generated on wrong line

From: Date: Fri, 17 Mar 2017 17:44:11 +0000
Subject: Bug #74234 [Asn]: Op Code is generated on wrong line
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-207902@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=74234&edit=1

 ID:                 74234
 Updated by:         nikic@php.net
 Reported by:        scott at exussum dot co dot uk
 Summary:            Op Code is generated on wrong line
 Status:             Assigned
 Type:               Bug
 Package:            *General Issues
 Operating System:   Linux (ubuntu 16.10)
 PHP Version:        7.1.2
 Assigned To:        nikic
 Block user comment: N
 Private report:     N

 New Comment:

Storing the end lineno will increase the size of most AST nodes by 64 bytes. Would have to measure
how much impact that has on total memory usage.


Previous Comments:
------------------------------------------------------------------------
[2017-03-14 04:42:24] laruence@php.net

I don't see how to get the last line no of a block in current AST..

@nikic, what do you think?

------------------------------------------------------------------------
[2017-03-10 17:42:10] scott at exussum dot co dot uk

Description:
------------
The op code for the jmp seems to be generated against the wrong line for the continue. (See script
below)

 6 9 > EXT_STMT 
        10 > JMPZ <false>, ->13
   7 11 > EXT_STMT 
        12 > JMP ->8
        13 > > JMP ->8
        14 > FE_FREE $3


Pasted from Derick
HP unfortunately doesn't reset the line numbers for some of the generated code:

   6 9 > EXT_STMT 
        10 > JMPZ <false>, ->13
   7 11 > EXT_STMT 
        12 > JMP ->8
        13 > > JMP ->8
        14 > FE_FREE $3

The JMP in line 12 (and line 13) is generated for line 7, and not 8. This is something that needs to
be fixed in PHP itself

See https://bugs.xdebug.org/view.php?id=1405#c4232
for more info



Test script:
---------------
foreach([1,2] as $value) {
    if (false) {
        continue;
    }
}





------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=74234&edit=1


Thread (6 messages)

« previous php.bugs (#207902) next »