This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add CXp_FOR_PAD, CXp_FOR_GV flags
authorDavid Mitchell <davem@iabyn.com>
Thu, 27 Aug 2015 15:03:42 +0000 (16:03 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 3 Feb 2016 08:59:39 +0000 (08:59 +0000)
commit9af0df0b57d248c9c26f1464e1f1c18f24c642c2
tree54fbd226079afcfae2cddaa783f1ff1e8c32fa41
parent4ad63d708f405909d048160f3eaf32590132e3cb
add CXp_FOR_PAD, CXp_FOR_GV flags

These indicate that the loop is a for loop, with a lexical or package
iterator variable.

These flags make various tests simpler and more efficient.

This commit also fixes a bug introduced a couple of commits ago;
I was assuming that in POPLOOP, itersave being non-NULL indicated a
'for $lex' or 'for $pkg', but something like

    local *x;
    for $x (..) {}

leaves the loop with itersave set to NULL. Instead we can use the new
flags to indicate that itersave is valid.
cop.h
pp_ctl.c
t/op/for.t