aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@penguin.transmeta.com>2003-05-23 17:41:39 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:00:45 -0700
commita10932174ca47672bc8f62a5b98fbcfb34ee534b (patch)
tree7365f1793fd1f1f23db7de1704aeb0dbce372da1 /expression.h
parentFix include path ordering - check for local paths when given (diff)
downloadsparse-a10932174ca47672bc8f62a5b98fbcfb34ee534b.tar.gz
sparse-a10932174ca47672bc8f62a5b98fbcfb34ee534b.tar.bz2
sparse-a10932174ca47672bc8f62a5b98fbcfb34ee534b.zip
Parse and evaluate gcc computed goto extensions: label addressing
(&&label) and computed goto (goto *expr). Add label ctype for __label__ identifier. This is still quite broken (it should create a block-symbol in the NS_LABEL namespace, right now it creates a regular symbol).
Diffstat (limited to 'expression.h')
-rw-r--r--expression.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/expression.h b/expression.h
index 529578a..27b85c0 100644
--- a/expression.h
+++ b/expression.h
@@ -30,6 +30,7 @@ enum expression_type {
EXPR_COMMA,
EXPR_COMPARE,
EXPR_BITFIELD,
+ EXPR_LABEL,
EXPR_INITIALIZER, // initializer list
EXPR_IDENTIFIER, // identifier in initializer
EXPR_INDEX, // index in initializer
@@ -88,6 +89,10 @@ struct expression {
unsigned char bitpos, nrbits;
struct expression *address;
};
+ // EXPR_LABEL
+ struct label_expr {
+ struct symbol *label_symbol;
+ };
// EXPR_INITIALIZER
struct expression_list *expr_list;
// EXPR_IDENTIFIER