# New Ticket Created by Patrick R. Michaud # Please include the string: [perl #59374] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=59374 >
Summary: pmc2c produces incorrect code for returning negative integer constants, as in RETURN(INTVAL -1) Longer description: In the set_readline_interactive method of the ParrotIO PMC line 200 reads RETURN(INTVAL -1); This is supposed to return a value of -1 when the method is called and the readline library is not present. However, when run this is actually returning 1 (readline is not present in the example below): $ cat z.pir .sub main :main .local pmc stdin stdin = getstdin $I0 = stdin.'set_readline_interactive'(1) say $I0 .end $ ./parrot z.pir 1 Looking at the code generated in src/pmc/parrotio.c (line 775 on my system), we see: /*BEGIN RETURN INTVAL -1 */ /*BEGIN GENERATED ACCESSORS */ #line 777 "./src/pmc/parrotio.pmc" CTX_REG_INT(_ctx, 0) = 1; I think somewhere the minus sign is being lost when the code is being generated. This also occurs earlier in the method for a couple of instances of RETURN(INTVAL -2): /*BEGIN RETURN INTVAL -2 */ /*BEGIN GENERATED ACCESSORS */ #line 722 "./src/pmc/parrotio.pmc" CTX_REG_INT(_ctx, 0) = 2; Pm