* c-typeprint.c (c_print_type): Don't crash if varstring is null.

* expprint.c expression.h (dump_expression):  Rename to
	dump_prefix_expression.
	* Print out the expression in normal form.  Call print_longest
	instead of trying to do it ourselves.
	* (dump_postfix_expression):  New function, prints out the expression
	with indentation and better formatting and interpretation.
	* parse.c (parse_exp_1):  Put calls to dump expressions under ifdef
	MAINTENANCE_CMDS and expressiondebug variable.
This commit is contained in:
Stu Grossman 1998-08-12 15:50:59 +00:00
parent 902459f256
commit 433732f25e
4 changed files with 389 additions and 39 deletions

View file

@ -38,6 +38,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "command.h"
#include "language.h"
#include "parser-defs.h"
#include "gdbcmd.h"
#include "symfile.h" /* for overlay functions */
/* Global variables declared in parser-defs.h (and commented there). */
@ -54,6 +55,10 @@ char *namecopy;
int paren_depth;
int comma_terminates;
#ifdef MAINTENANCE_CMDS
static int expressiondebug = 0;
#endif
static void
free_funcalls PARAMS ((void));
@ -911,9 +916,19 @@ parse_exp_1 (stringptr, block, comma)
/* Convert expression from postfix form as generated by yacc
parser, to a prefix form. */
DUMP_EXPRESSION (expout, gdb_stdout, "before conversion to prefix form");
#ifdef MAINTENANCE_CMDS
if (expressiondebug)
dump_prefix_expression (expout, gdb_stdout,
"before conversion to prefix form");
#endif /* MAINTENANCE_CMDS */
prefixify_expression (expout);
DUMP_EXPRESSION (expout, gdb_stdout, "after conversion to prefix form");
#ifdef MAINTENANCE_CMDS
if (expressiondebug)
dump_postfix_expression (expout, gdb_stdout,
"after conversion to prefix form");
#endif /* MAINTENANCE_CMDS */
*stringptr = lexptr;
return expout;
@ -1043,4 +1058,14 @@ _initialize_parse ()
init_type (TYPE_CODE_INT, 1, 0,
"<variable (not text or data), no debug info>",
NULL);
#ifdef MAINTENANCE_CMDS
add_show_from_set (
add_set_cmd ("expressiondebug", class_maintenance, var_zinteger,
(char *)&expressiondebug,
"Set expression debugging.\n\
When non-zero, the internal representation of expressions will be printed.",
&setlist),
&showlist);
#endif
}