On Wed, Sep 19, 2001 at 11:03:46AM -0400, Dan Sugalski wrote:
> Integer and float ops, *on integer and float registers* do undefined things 
> on over/underflow. No guarantees, no promises, no certainty. Price of speed.

Fair enough.  Attached is a patch removing the offending overflows.
It also beefs up the set_i_ic test to cover all registers.

                      - Damien
Index: t/op/integer.t
===================================================================
RCS file: /home/perlcvs/parrot/t/op/integer.t,v
retrieving revision 1.4
diff -u -r1.4 integer.t
--- t/op/integer.t      2001/09/19 22:57:04     1.4
+++ t/op/integer.t      2001/09/20 07:17:45
@@ -5,39 +5,148 @@
 output_is(<<CODE, <<OUTPUT, "set_i_ic");
        # XXX: Need a test for writing outside the set of available
        # registers.  Parrot doesn't check for this at the moment.
-       set     I0, 0x12345678
+       set     I0, 0
+       set     I1, 1
+       set     I2, 2
+       set     I3, 3
+       set     I4, 4
+       set     I5, 5
+       set     I6, 6
+       set     I7, 7
+       set     I8, 8
+       set     I9, 9
+       set     I10, 10
+       set     I11, 11
+       set     I12, 12
+       set     I13, 13
+       set     I14, 14
+       set     I15, 15
+       set     I16, 16
+       set     I17, 17
+       set     I18, 18
+       set     I19, 19
+       set     I20, 20
+       set     I21, 21
+       set     I22, 22
+       set     I23, 23
+       set     I24, 24
+       set     I25, 25
+       set     I26, 26
+       set     I27, 27
+       set     I28, 28
+       set     I29, 29
+       set     I30, 30
+       set     I31, 31
+
        print   I0
        print   "\\n"
-       set     I31, 0x9abcdef1
-       print   I31
-       print   "\\n"
-
-       set     I1, 2147483647
        print   I1
        print   "\\n"
-       set     I2, -2147483648
        print   I2
        print   "\\n"
-       set     I3, 4294967295
        print   I3
        print   "\\n"
+       print   I4
+       print   "\\n"
+       print   I5
+       print   "\\n"
+       print   I6
+       print   "\\n"
+       print   I7
+       print   "\\n"
+       print   I8
+       print   "\\n"
+       print   I9
+       print   "\\n"
+       print   I10
+       print   "\\n"
+       print   I11
+       print   "\\n"
+       print   I12
+       print   "\\n"
+       print   I13
+       print   "\\n"
+       print   I14
+       print   "\\n"
+       print   I15
+       print   "\\n"
+       print   I16
+       print   "\\n"
+       print   I17
+       print   "\\n"
+       print   I18
+       print   "\\n"
+       print   I19
+       print   "\\n"
+       print   I20
+       print   "\\n"
+       print   I21
+       print   "\\n"
+       print   I22
+       print   "\\n"
+       print   I23
+       print   "\\n"
+       print   I24
+       print   "\\n"
+       print   I25
+       print   "\\n"
+       print   I26
+       print   "\\n"
+       print   I27
+       print   "\\n"
+       print   I28
+       print   "\\n"
+       print   I29
+       print   "\\n"
+       print   I30
+       print   "\\n"
+       print   I31
+       print   "\\n"
         end
+       set     I0, 0
 CODE
-305419896
--1698898191
-2147483647
--2147483648
--1
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
 OUTPUT
 
 output_is(<<CODE, <<OUTPUT, "set_i");
-       set     I0, 0x77665544
+       set     I0, 42
        set     I1, I0
        print   I1
        print   "\\n"
         end
 CODE
-2003195204
+42
 OUTPUT
 
 output_is(<<CODE, <<OUTPUT, "add_i");
@@ -54,22 +163,11 @@
        print   I2
        print   "\\n"
 
-       set     I3, 2147483647
-       set     I4, 1
-       add     I5, I3, I4
-       print   I5
-       print   "\\n"
-       set     I6, -1
-       add     I7, I5, I6
-       print   I7
-       print   "\\n"
         end
 CODE
 574908040
 862362060
 1724724120
--2147483648
-2147483647
 OUTPUT
 
 output_is(<<CODE, <<OUTPUT, "sub_i");
@@ -565,16 +663,10 @@
        print   I0
        print   "\\n"
 
-       # Overflow
-       set     I1, 2147483647
-       inc     I1
-       print   I1
-       print   "\\n"
         end
 CODE
 1
 5
--2147483648
 OUTPUT
 
 output_is(<<CODE, <<OUTPUT, "inc_i_ic");
@@ -607,16 +699,10 @@
        print   I0
        print   "\\n"
 
-       # Overflow
-       set     I1, -2147483648
-       dec     I1
-       print   I1
-       print   "\\n"
         end
 CODE
 -1
 -5
-2147483647
 OUTPUT
 
 output_is(<<CODE, <<OUTPUT, "dec_i_ic");

Reply via email to