Hi,

Here is a pure PIR example that doesn't depend on Rakudo at all.

.sub main :main
    $P0 = new 'Integer'
    $P0 = 2
    'f'($P0)
.end

.sub 'f'
    .param pmc l
    .lex "$l", l
    $P0 = find_lex "$l"
    if $P0 <= 0 goto ret

    print "entering "
    $P1 = find_lex "$l"
    say $P1

    $I0 = 1
  for:
    if $I0 > 3 goto for_end
    '_block1'()
    inc $I0
    goto for
  for_end:
  ret:
.end

.sub '_block1' :outer('f')
    $P2 = find_lex "$l"
    $P3 = new 'Integer'
    $P3 = $P2 - 1
    'f'($P3)
    print "looping in "
    $P4 = find_lex "$l"
    say $P4
.end

Gives the same erroneous output as the Rakudo program.

Jonathan

Reply via email to