This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
op_private: Update note about targlex and trans
[perl5.git] / regen / op_private
index d8cf6e6..9cb1206 100644 (file)
@@ -204,6 +204,7 @@ use strict;
                         qw(reverse), # ck_fun(), but most bits stolen
                         grep !$maxarg{$_} && !$args0{$_},
                             ops_with_flag('1'), # UNOP
+                            ops_with_flag('+'), # UNOP_AUX
                             ops_with_flag('%'), # BASEOP/UNOP
                             ops_with_flag('|'), # LOGOP
                             ops_with_flag('-'), # FILESTATOP
@@ -298,7 +299,7 @@ for (qw(nextstate dbstate)) {
 addbits($_, 7 => qw(OPpLVAL_INTRO LVINTRO))
     for qw(gvsv rv2sv rv2hv rv2gv rv2av aelem helem aslice
            hslice delete padsv padav padhv enteriter entersub padrange
-           pushmark cond_expr refassign lvref lvrefslice lvavref),
+           pushmark cond_expr refassign lvref lvrefslice lvavref multideref),
            'list', # this gets set in my_attrs() for some reason
            ;
 
@@ -326,7 +327,7 @@ addbits($_, 7 => qw(OPpLVAL_INTRO LVINTRO))
 # Only the code paths that handle scalar rvalue context matter.  If dTARG
 # or RETPUSHNO occurs only in list or lvalue paths, T is safe.
 #
-# lt and friends do SETs (including ncmp, but not scmp)
+# lt and friends do SETs (including ncmp, but not scmp or i_ncmp)
 #
 # Additional mode of failure: the opcode can modify TARG before it "used"
 # all the arguments (or may call an external function which does the same).
@@ -334,7 +335,7 @@ addbits($_, 7 => qw(OPpLVAL_INTRO LVINTRO))
 #
 # pp.c pos substr each not OK (RETPUSHUNDEF)
 #      ref not OK (RETPUSHNO)
-#      trans not OK (dTARG; TARG = sv_newmortal();)
+#      trans not OK (target is used for lhs, not retval)
 #      ucfirst etc not OK: TMP arg processed inplace
 #      quotemeta not OK (unsafe when TARG == arg)
 #      pack - unknown whether it is safe
@@ -417,7 +418,7 @@ for (qw(rv2gv rv2sv padsv aelem helem entersub)) {
 
 
 # Defer creation of array/hash elem
-addbits($_, 6 => qw(OPpLVAL_DEFER LVDEFER)) for qw(aelem helem);
+addbits($_, 6 => qw(OPpLVAL_DEFER LVDEFER)) for qw(aelem helem multideref);
 
 
 
@@ -436,7 +437,7 @@ addbits($_, 6 => qw(OPpOUR_INTRO OURINTR)) # Variable was in an our()
 # We might be an lvalue to return
 addbits($_, 3 => qw(OPpMAYBE_LVSUB LVSUB))
     for qw(aassign rv2av rv2gv rv2hv padav padhv aelem helem aslice hslice
-           av2arylen keys rkeys kvaslice kvhslice substr pos vec);
+           av2arylen keys rkeys kvaslice kvhslice substr pos vec multideref);
 
 
 
@@ -449,7 +450,8 @@ for (qw(rv2hv padhv)) {
 
 
 
-addbits($_, 1 => qw(OPpHINT_STRICT_REFS STRICT)) for qw(rv2sv rv2av rv2hv rv2gv);
+addbits($_, 1 => qw(OPpHINT_STRICT_REFS STRICT))
+    for qw(rv2sv rv2av rv2hv rv2gv multideref);
 
 
 
@@ -733,6 +735,13 @@ addbits($_,
    #7 => qw(OPpLVAL_INTRO LVINTRO),
 ) for 'refassign', 'lvref';
 
+
+
+addbits('multideref',
+    4 => qw(OPpMULTIDEREF_EXISTS EXISTS), # deref is actually exists
+    5 => qw(OPpMULTIDEREF_DELETE DELETE), # deref is actually delete
+);
+
 1;
 
 # ex: set ts=8 sts=4 sw=4 et: