diff options
| author | Linus Torvalds <torvalds@home.osdl.org> | 2004-02-12 13:41:42 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-07 21:01:23 -0700 |
| commit | dcc3d37fdc742914668f4e37f17024a95466ed80 (patch) | |
| tree | 9b2a9c2cb59f439ac82b426cb7042bb41b39586d /show-parse.c | |
| parent | 80458cde49e9fe8ea090279f94713f6410d35032 (diff) | |
| download | sparse-dev-dcc3d37fdc742914668f4e37f17024a95466ed80.tar.gz | |
Add proper linearization of switch statements.
Diffstat (limited to 'show-parse.c')
| -rw-r--r-- | show-parse.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/show-parse.c b/show-parse.c index 4e5989b7..f58b046a 100644 --- a/show-parse.c +++ b/show-parse.c @@ -542,6 +542,23 @@ int show_statement(struct statement *stmt) break; } + case STMT_MULTIVALUE: { + int val = show_expression(stmt->expression); + printf("\tSWITCH\t\tv%d\n", val); + break; + } + + case STMT_MULTIJMP: { + long long from = 0, to = 0; + if (stmt->multi_from && stmt->multi_from->type == EXPR_VALUE) + from = stmt->multi_from->value; + to = from; + if (stmt->multi_to && stmt->multi_to->type == EXPR_VALUE) + to = stmt->multi_to->value; + printf("\tIF %lld..%lld goto .L%p\n", from, to, stmt->multi_target->bb_target); + break; + } + } return 0; } |
