This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit/Ada] minor code cleanup in ada_evaluate_subexp


This is another code cleanup that's a fallout of a discussion
with Pierre Muller where he remarked that there were some unnecessary
checks in a condition. This patches cleans this up, while at the same
time pushing the cleanup a little further. No behavior change.

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.

Tested on amd64-linux. Checked in.

-- 
Joel
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index f1a4268..b95a303 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -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);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]