aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2004-07-31 22:11:29 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:02:28 -0700
commit8f776eb5f8939ccbe9e9824d6e57b0fd04c18a5a (patch)
tree878809f38fd14de72292e79e3053051127354295 /parse.h
parentHandle preprocessor "# <nr> <file>" the same as #line <nr> <file>". (diff)
downloadsparse-8f776eb5f8939ccbe9e9824d6e57b0fd04c18a5a.tar.gz
sparse-8f776eb5f8939ccbe9e9824d6e57b0fd04c18a5a.tar.bz2
sparse-8f776eb5f8939ccbe9e9824d6e57b0fd04c18a5a.zip
Keep track of computed target label lists per-function.
Associate them with each computed goto, and copy them properly when inlining.
Diffstat (limited to 'parse.h')
-rw-r--r--parse.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/parse.h b/parse.h
index 8d894df..cb1b7a3 100644
--- a/parse.h
+++ b/parse.h
@@ -77,7 +77,10 @@ struct statement {
};
struct /* goto_struct */ {
struct symbol *goto_label;
+
+ /* computed gotos have these: */
struct expression *goto_expression;
+ struct symbol_list *target_list;
};
struct /* goto_bb */ {
struct expression *bb_conditional;
@@ -91,6 +94,9 @@ struct statement {
};
};
+extern struct symbol_list *function_computed_target_list;
+extern struct statement_list *function_computed_goto_list;
+
extern struct token *parse_expression(struct token *, struct expression **);
extern struct token *statement_list(struct token *, struct statement_list **);
extern struct symbol *label_symbol(struct token *token);