cvsuser 03/03/15 13:51:22
Modified: languages/imcc/t/imcpasm sub.t
Log:
Added a few tests
Revision Changes Path
1.2 +57 -1 parrot/languages/imcc/t/imcpasm/sub.t
Index: sub.t
===================================================================
RCS file: /cvs/public/parrot/languages/imcc/t/imcpasm/sub.t,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -w -r1.1 -r1.2
--- sub.t 10 Dec 2002 08:55:12 -0000 1.1
+++ sub.t 15 Mar 2003 21:51:22 -0000 1.2
@@ -1,6 +1,6 @@
#!perl
use strict;
-use TestCompiler tests => 1;
+use TestCompiler tests => 3;
use Test::More qw(skip);
##############################
@@ -42,3 +42,59 @@
ret
OUT
+output_like(<<'CODE', <<'OUT', "non-constant dest bsr, invoke");
+.sub _main
+ .local PerlUndef _SV_r23
+ _SV_r23 = new PerlUndef
+ $P26 = new Sub
+ $I15 = addr _sub1
+ $P26 = $I15
+ _SV_r23 = clone $P26
+ invoke _SV_r23
+ bsr $I15
+ ret
+_sub1:
+ ret
+.end
+CODE
+/^_main:
+ new P0, \d+ # .PerlUndef
+ new P1, \d+ # .Sub
+ set_addr I0, _sub1
+ set P1, I0
+ clone P0, P1
+ invoke P0
+ bsr I0
+ ret
+_sub1:
+ ret/
+OUT
+
+output_like(<<'CODE', <<'OUT', "nonlocal bsr");
+.sub _main
+ .local PerlUndef _SV_r23
+ _SV_r23 = new PerlUndef
+ $P26 = new Sub
+ $I15 = addr _f
+ $P26 = $I15
+ _SV_r23 = clone $P26
+ invoke _SV_r23
+ bsr $I15
+ ret
+.end
+.sub _f
+ ret
+.end
+CODE
+/^_main:
+ new P0, \d+ # .PerlUndef
+ new P1, \d+ # .Sub
+ set_addr I0, _f
+ set P1, I0
+ clone P0, P1
+ invoke P0
+ bsr I0
+ ret
+_f:
+ ret/
+OUT