* ada-lang.c (ada_evaluate_subexp): Merge case BINOP_REM and
authorJoel Brobecker <brobecker@gnat.com>
Fri, 13 Mar 2009 02:30:55 +0000 (02:30 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 13 Mar 2009 02:30:55 +0000 (02:30 +0000)
        BINOP_MOD cases with the handling of case BINOP_DIV and BINOP_MUL.
        Remove useless op value checks when EVAL_AVOID_SIDE_EFFECTS.

gdb/ChangeLog
gdb/ada-lang.c

index 4307293898e4abfef78bf40360d5c2e4de7b6870..97f1396c87d58bc5cef40843b5c4624fa17f30cf 100644 (file)
@@ -1,3 +1,9 @@
+2009-03-12  Joel Brobecker  <brobecker@adacore.com>
+
+       * ada-lang.c (ada_evaluate_subexp): Merge case BINOP_REM and
+       BINOP_MOD cases with the handling of case BINOP_DIV and BINOP_MUL.
+       Remove useless op value checks when EVAL_AVOID_SIDE_EFFECTS.
+
 2009-03-12  Joel Brobecker  <brobecker@adacore.com>
 
        * ada-lang.c (ada_evaluate_subexp) <BINOP_DIV>: make sure to
index f1a42680fd9550b813fcac2df287e98ea8df90d4..b95a3031e11f9ef93ccc7c480d530e0eecaaa967 100644 (file)
@@ -8452,12 +8452,13 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
 
     case BINOP_MUL:
     case BINOP_DIV:
+    case BINOP_REM:
+    case BINOP_MOD:
       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS
-               && (op == BINOP_DIV || op == BINOP_REM || op == BINOP_MOD))
+      else if (noside == EVAL_AVOID_SIDE_EFFECTS)
         {
           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
           return value_zero (value_type (arg1), not_lval);
@@ -8473,21 +8474,6 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
           return ada_value_binop (arg1, arg2, op);
         }
 
-    case BINOP_REM:
-    case BINOP_MOD:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS
-               && (op == BINOP_DIV || op == BINOP_REM || op == BINOP_MOD))
-        return value_zero (value_type (arg1), not_lval);
-      else
-       {
-         binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
-         return ada_value_binop (arg1, arg2, op);
-       }
-
     case BINOP_EQUAL:
     case BINOP_NOTEQUAL:
       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);