aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
authorLinus Torvalds <torvalds@penguin.transmeta.com>2003-03-20 18:01:46 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 20:59:33 -0700
commitf1d060b1cf8e9c46f7390c54d8eee9d4b51c028c (patch)
tree9256d58dd2359817ab66638cb30d69bff48a86a9
parent5a58f1f8e5cad7da27ecf0be9ad270aeb1fb8133 (diff)
downloadsparse-dev-f1d060b1cf8e9c46f7390c54d8eee9d4b51c028c.tar.gz
Show for/while/do statements in debugging. Make symbol type
debugging slightly less verbose.
-rw-r--r--parse.c33
-rw-r--r--symbol.c1
2 files changed, 28 insertions, 6 deletions
diff --git a/parse.c b/parse.c
index af34cea1..87464f8e 100644
--- a/parse.c
+++ b/parse.c
@@ -78,7 +78,33 @@ void show_statement(struct statement *stmt)
break;
case STMT_BREAK:
- printf("break");
+ printf("\tbreak");
+ break;
+
+ case STMT_WHILE:
+ printf("\twhile (");
+ show_expression(stmt->e1);
+ printf(")\n");
+ show_statement(stmt->iterate);
+ break;
+
+ case STMT_DO:
+ printf("\tdo");
+ show_statement(stmt->iterate);
+ printf("\nwhile (");
+ show_expression(stmt->e1);
+ printf(")\n");
+ break;
+
+ case STMT_FOR:
+ printf("\tfor (" );
+ show_expression(stmt->e1);
+ printf(" ; ");
+ show_expression(stmt->e2);
+ printf(" ; ");
+ show_expression(stmt->e3);
+ printf(")\n");
+ show_statement(stmt->iterate);
break;
default:
@@ -218,11 +244,8 @@ static struct token *primary_expression(struct token *token, struct expression *
break;
case TOKEN_IDENT: {
- struct symbol *sym = lookup_symbol(token->ident, NS_SYMBOL);
- if (!sym)
- warn(token, "undefined identifier '%s'", token->ident->name);
expr = alloc_expression(token, EXPR_SYMBOL);
- expr->symbol = sym;
+ expr->symbol = lookup_symbol(token->ident, NS_SYMBOL);
token = token->next;
break;
}
diff --git a/symbol.c b/symbol.c
index a27abfca..ba2096dc 100644
--- a/symbol.c
+++ b/symbol.c
@@ -95,7 +95,6 @@ void show_type(struct symbol *sym)
return;
}
- printf("[%04lx:%08lx]", ctype->modifiers, (unsigned long) ctype->base_type);
printf("%s", modifier_string(sym->ctype.modifiers));
switch (sym->type) {