* 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.
This commit is contained in:
parent
383ace49f8
commit
e15780428b
|
@ -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>
|
2009-03-12 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* ada-lang.c (ada_evaluate_subexp) <BINOP_DIV>: make sure to
|
* ada-lang.c (ada_evaluate_subexp) <BINOP_DIV>: make sure to
|
||||||
|
|
|
@ -8452,12 +8452,13 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
|
||||||
|
|
||||||
case BINOP_MUL:
|
case BINOP_MUL:
|
||||||
case BINOP_DIV:
|
case BINOP_DIV:
|
||||||
|
case BINOP_REM:
|
||||||
|
case BINOP_MOD:
|
||||||
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
|
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
|
||||||
arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
|
arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
|
||||||
if (noside == EVAL_SKIP)
|
if (noside == EVAL_SKIP)
|
||||||
goto nosideret;
|
goto nosideret;
|
||||||
else if (noside == EVAL_AVOID_SIDE_EFFECTS
|
else if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
||||||
&& (op == BINOP_DIV || op == BINOP_REM || op == BINOP_MOD))
|
|
||||||
{
|
{
|
||||||
binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
|
binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
|
||||||
return value_zero (value_type (arg1), not_lval);
|
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);
|
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_EQUAL:
|
||||||
case BINOP_NOTEQUAL:
|
case BINOP_NOTEQUAL:
|
||||||
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
|
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
|
||||||
|
|
Loading…
Reference in New Issue