From 7ebaa5f7821682c40e79ee1fdfe43528b7d87376 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 26 Aug 2021 18:17:40 -0600 Subject: Move value_true to value.h I noticed that value_true is declared in language.h and defined in language.c. However, as part of the value API, I think it would be better in one of those files. And, because it is very short, I changed it to be an inline function in value.h. I've also removed a comment from the implementation, on the basis that it seems obsolete -- if the change it suggests was needed, it probably would have been done by now; and if it is needed in the future, odds are it would be done differently anyway. Finally, this patch also changes value_true and value_logical_not to return a bool, and updates some uses. --- gdb/ada-lang.c | 10 +++++----- gdb/cli/cli-script.c | 3 +-- gdb/eval.c | 4 ++-- gdb/language.c | 17 ----------------- gdb/language.h | 4 ---- gdb/opencl-lang.c | 2 +- gdb/valarith.c | 4 ++-- gdb/value.h | 10 +++++++++- 8 files changed, 20 insertions(+), 34 deletions(-) (limited to 'gdb') diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 487d92b..a00fa14 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -11765,13 +11765,13 @@ re_set_exception (struct breakpoint *b) user specified a specific exception, we only want to cause a stop if the program thrown that exception. */ -static int +static bool should_stop_exception (const struct bp_location *bl) { struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner; const struct ada_catchpoint_location *ada_loc = (const struct ada_catchpoint_location *) bl; - int stop; + bool stop; struct internalvar *var = lookup_internalvar ("_ada_exception"); if (c->m_kind == ada_catch_assert) @@ -11799,16 +11799,16 @@ should_stop_exception (const struct bp_location *bl) /* With no specific exception, should always stop. */ if (c->excep_string.empty ()) - return 1; + return true; if (ada_loc->excep_cond_expr == NULL) { /* We will have a NULL expression if back when we were creating the expressions, this location's had failed to parse. */ - return 1; + return true; } - stop = 1; + stop = true; try { struct value *mark; diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index 9846367..0aaa59e 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -19,7 +19,6 @@ #include "defs.h" #include "value.h" -#include "language.h" /* For value_true */ #include #include "ui-out.h" @@ -579,7 +578,7 @@ execute_control_command_1 (struct command_line *cmd, int from_tty) /* Keep iterating so long as the expression is true. */ while (loop == 1) { - int cond_result; + bool cond_result; QUIT; diff --git a/gdb/eval.c b/gdb/eval.c index 1c5c8cf..bfab6d8 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -2204,7 +2204,7 @@ logical_and_operation::evaluate (struct type *expect_type, } else { - int tem = value_logical_not (arg1); + bool tem = value_logical_not (arg1); if (!tem) { arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside); @@ -2233,7 +2233,7 @@ logical_or_operation::evaluate (struct type *expect_type, } else { - int tem = value_logical_not (arg1); + bool tem = value_logical_not (arg1); if (tem) { arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside); diff --git a/gdb/language.c b/gdb/language.c index 0354fb8..cb28e63 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -387,23 +387,6 @@ language_info () show_language_command (NULL, 1, NULL, NULL); } - -/* This page contains functions that return info about - (struct value) values used in GDB. */ - -/* Returns non-zero if the value VAL represents a true value. */ -int -value_true (struct value *val) -{ - /* It is possible that we should have some sort of error if a non-boolean - value is used in this context. Possibly dependent on some kind of - "boolean-checking" option like range checking. But it should probably - not depend on the language except insofar as is necessary to identify - a "boolean" value (i.e. in C using a float, pointer, etc., as a boolean - should be an error, probably). */ - return !value_logical_not (val); -} - /* This page contains functions for the printing out of error messages that occur during type- and range- checking. */ diff --git a/gdb/language.h b/gdb/language.h index 63d64b5..cec3ab0 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -778,10 +778,6 @@ extern enum language set_language (enum language); extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2); -/* Data: Does this value represent "truth" to the current language? */ - -extern int value_true (struct value *); - /* Misc: The string representing a particular enum language. */ extern enum language language_enum (const char *str); diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c index 136969e..b877de4 100644 --- a/gdb/opencl-lang.c +++ b/gdb/opencl-lang.c @@ -748,7 +748,7 @@ opencl_logical_binop_operation::evaluate (struct type *expect_type, /* For scalar built-in types, only evaluate the right hand operand if the left hand operand compares unequal(&&)/equal(||) to 0. */ - int tmp = value_logical_not (arg1); + bool tmp = value_logical_not (arg1); if (op == BINOP_LOGICAL_OR) tmp = !tmp; diff --git a/gdb/valarith.c b/gdb/valarith.c index 9ebad64..07472ef 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -1653,9 +1653,9 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) return val; } -/* Simulate the C operator ! -- return 1 if ARG1 contains zero. */ +/* See value.h. */ -int +bool value_logical_not (struct value *arg1) { int len; diff --git a/gdb/value.h b/gdb/value.h index e1c6aab..3f00444 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -1022,7 +1022,15 @@ extern int value_equal_contents (struct value *arg1, struct value *arg2); extern int value_less (struct value *arg1, struct value *arg2); -extern int value_logical_not (struct value *arg1); +/* Simulate the C operator ! -- return true if ARG1 contains zero. */ +extern bool value_logical_not (struct value *arg1); + +/* Returns true if the value VAL represents a true value. */ +static inline bool +value_true (struct value *val) +{ + return !value_logical_not (val); +} /* C++ */ -- cgit v1.1