* compile.c (sim_resume): Fix and simplify overflow and carry
authorJeff Law <law@redhat.com>
Fri, 12 Apr 1996 15:38:08 +0000 (15:38 +0000)
committerJeff Law <law@redhat.com>
Fri, 12 Apr 1996 15:38:08 +0000 (15:38 +0000)
        handling for 32bit ALU insns.

sim/h8300/ChangeLog
sim/h8300/compile.c

index ce54af3..04d5624 100644 (file)
@@ -1,3 +1,8 @@
+Fri Apr 12 09:39:56 1996  Jeffrey A Law  (law@cygnus.com)
+
+       * compile.c (sim_resume): Fix and simplify overflow and carry
+       handling for 32bit ALU insns.
+
 Mon Apr  8 23:58:49 1996  Jeffrey A Law  (law@cygnus.com)
 
        * compile.c (sim_resume): Fix overflow checks for ALU insns.
index 7892dc6..cf1e9bc 100644 (file)
@@ -1559,27 +1559,16 @@ sim_resume (step, siggnal)
        case O_ADD:
          v = ((rd & 0x80000000) == (ea & 0x80000000)
               && (rd & 0x80000000) != (res & 0x80000000));
+         c = ((unsigned) res < (unsigned) rd) || ((unsigned) res < (unsigned) ea);
          break;
        case O_SUB:
        case O_CMP:
          v = ((rd & 0x80000000) != (-ea & 0x80000000)
               && (rd & 0x80000000) != (res & 0x80000000));
-         break;
-       case O_NEG:
-         v = (rd == 0x80000000);
-         break;
-       }
-      goto next;
-      switch (code->opcode / 4)
-       {
-       case O_ADD:
-         c = ((unsigned) res < (unsigned) rd) || ((unsigned) res < (unsigned) ea);
-         break;
-       case O_SUB:
-       case O_CMP:
          c = (unsigned) rd < (unsigned) -ea;
          break;
        case O_NEG:
+         v = (rd == 0x80000000);
          c = res != 0;
          break;
        }