mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 11:00:01 +08:00
Split out eval_op_rust_complement
This splits UNOP_COMPLEMENT into a new function for future use. gdb/ChangeLog 2021-03-08 Tom Tromey <tom@tromey.com> * rust-lang.c (eval_op_rust_complement): New function. (rust_evaluate_subexp): Use it.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2021-03-08 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* rust-lang.c (eval_op_rust_complement): New function.
|
||||||
|
(rust_evaluate_subexp): Use it.
|
||||||
|
|
||||||
2021-03-08 Tom Tromey <tom@tromey.com>
|
2021-03-08 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* rust-lang.c (eval_op_rust_ind): New function.
|
* rust-lang.c (eval_op_rust_ind): New function.
|
||||||
|
@ -1337,6 +1337,23 @@ eval_op_rust_ind (struct type *expect_type, struct expression *exp,
|
|||||||
return value_ind (value);
|
return value_ind (value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* A helper function for UNOP_COMPLEMENT. */
|
||||||
|
|
||||||
|
static struct value *
|
||||||
|
eval_op_rust_complement (struct type *expect_type, struct expression *exp,
|
||||||
|
enum noside noside,
|
||||||
|
struct value *value)
|
||||||
|
{
|
||||||
|
if (noside == EVAL_SKIP)
|
||||||
|
{
|
||||||
|
/* Preserving the type is enough. */
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
if (value_type (value)->code () == TYPE_CODE_BOOL)
|
||||||
|
return value_from_longest (value_type (value), value_logical_not (value));
|
||||||
|
return value_complement (value);
|
||||||
|
}
|
||||||
|
|
||||||
/* evaluate_exp implementation for Rust. */
|
/* evaluate_exp implementation for Rust. */
|
||||||
|
|
||||||
static struct value *
|
static struct value *
|
||||||
@ -1367,16 +1384,7 @@ rust_evaluate_subexp (struct type *expect_type, struct expression *exp,
|
|||||||
|
|
||||||
++*pos;
|
++*pos;
|
||||||
value = evaluate_subexp (nullptr, exp, pos, noside);
|
value = evaluate_subexp (nullptr, exp, pos, noside);
|
||||||
if (noside == EVAL_SKIP)
|
result = eval_op_rust_complement (expect_type, exp, noside, value);
|
||||||
{
|
|
||||||
/* Preserving the type is enough. */
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
if (value_type (value)->code () == TYPE_CODE_BOOL)
|
|
||||||
result = value_from_longest (value_type (value),
|
|
||||||
value_logical_not (value));
|
|
||||||
else
|
|
||||||
result = value_complement (value);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user