mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
Introduce expression::evaluate
This introduces a new method, expression::evaluate, and changes the top-level expression-evaluation functions to use it. Stack temporary handling is moved into this new method, which makes sense because that handling was only done when "*pos == 0". This patch avoids some temporary regressions related to stack temporary in the larger expression rewrite series. I've pulled it out separately because it seems like a reasonable change in its own right, and because it's better to avoid making that series even longer. Regression tested on x86-64 Fedora 32. gdb/ChangeLog 2021-02-18 Tom Tromey <tom@tromey.com> * expression.h (struct expression) <evaluate>: Declare method. * eval.c (evaluate_subexp): Simplify. (expression::evaluate): New method. (evaluate_expression, evaluate_type): Use expression::evaluate.
This commit is contained in:
@ -120,6 +120,11 @@ struct expression
|
||||
return elts[0].opcode;
|
||||
}
|
||||
|
||||
/* Evaluate the expression. EXPECT_TYPE is the context type of the
|
||||
expression; normally this should be nullptr. NOSIDE controls how
|
||||
evaluation is performed. */
|
||||
struct value *evaluate (struct type *expect_type, enum noside noside);
|
||||
|
||||
/* Language it was entered in. */
|
||||
const struct language_defn *language_defn;
|
||||
/* Architecture it was parsed in. */
|
||||
|
Reference in New Issue
Block a user