Branch: refs/heads/zefram/cmpchain
  Home:   https://github.com/Perl/perl5
  Commit: 4dc9f8ac35b8b187c3cd071887b10824ee780f8c
      
https://github.com/Perl/perl5/commit/4dc9f8ac35b8b187c3cd071887b10824ee780f8c
  Author: Zefram <[email protected]>
  Date:   2020-02-08 (Sat, 08 Feb 2020)

  Changed paths:
    M MANIFEST
    M embed.fnc
    M embed.h
    M ext/Opcode/Opcode.pm
    M lib/B/Deparse.pm
    M lib/B/Deparse.t
    M lib/B/Op_private.pm
    M op.c
    M opcode.h
    M opnames.h
    M perly.act
    M perly.h
    M perly.tab
    M perly.y
    M pod/perlop.pod
    M pp.c
    M pp_proto.h
    M proto.h
    M regen/opcodes
    A t/op/cmpchain.t
    M toke.c

  Log Message:
  -----------
  chained comparisons


  Commit: cf3393a1f970a15f7c05ab5ca57279022008f1f2
      
https://github.com/Perl/perl5/commit/cf3393a1f970a15f7c05ab5ca57279022008f1f2
  Author: Zefram <[email protected]>
  Date:   2020-02-08 (Sat, 08 Feb 2020)

  Changed paths:
    M pod/perlop.pod

  Log Message:
  -----------
  pod/perlop.pod: expand doc on chained comparisons


  Commit: 93d70504e33f68b3874a5aae62095011f77db131
      
https://github.com/Perl/perl5/commit/93d70504e33f68b3874a5aae62095011f77db131
  Author: Zefram <[email protected]>
  Date:   2020-02-08 (Sat, 08 Feb 2020)

  Changed paths:
    M pod/perlop.pod

  Log Message:
  -----------
  pod/perlop.pod: cross-precedence chaining

Warn explicitly that chainable operators don't chain with operators of
different precedence.


  Commit: 2711648236d8aee1321419c887b5c96893fe019e
      
https://github.com/Perl/perl5/commit/2711648236d8aee1321419c887b5c96893fe019e
  Author: Yves Orton <[email protected]>
  Date:   2020-02-08 (Sat, 08 Feb 2020)

  Changed paths:
    M embed.fnc
    M op.c
    M proto.h

  Log Message:
  -----------
  op.c: change Optype to I32 for cmpchain functions

Optype appears to be almost completely unused, and on Win32 builds
we saw warnings from the cmpchain patches:

    perly.y(1063) : warning C4244: 'function' : conversion from 'I32' to 
'Optype', possible loss of data
    perly.y(1065) : warning C4244: 'function' : conversion from 'I32' to 
'Optype', possible loss of data
    perly.y(1079) : warning C4244: 'function' : conversion from 'I32' to 
'Optype', possible loss of data
    perly.y(1081) : warning C4244: 'function' : conversion from 'I32' to 
'Optype', possible loss of data

Reviewing the code I noticed that functions like Perl_newBINOP() have
an I32 type argument, and functions like OpTYPE_set() coerce such
arguments into type OPCODE:

        #define OpTYPE_set(o,type) \
        STMT_START {                                \
            o->op_type = (OPCODE)type;              \
            o->op_ppaddr = PL_ppaddr[type];         \
        } STMT_END

this patch changes the signature to the new cmpchain functions so that
they do they same, and change the type for storage for op_type values
to also use OPCODE like most of the other op.c code.


Compare: https://github.com/Perl/perl5/compare/e64cfa3c67ac...2711648236d8

Reply via email to