This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
op.c: change Optype to I32 for cmpchain functions
authorYves Orton <demerphq@gmail.com>
Sat, 8 Feb 2020 09:51:48 +0000 (10:51 +0100)
committerKarl Williamson <khw@cpan.org>
Fri, 13 Mar 2020 04:34:26 +0000 (22:34 -0600)
commit6b32f57da89de094200b8259611c0f2c80aeeef2
tree7a4fc78778f900e069279744b74f86cfce5332e0
parent4bd78a4962edb4f91c34534af5ee89fe47594c18
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.
embed.fnc
op.c
proto.h