diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-02-12 03:21:44 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-02-17 11:07:15 +0100 |
| commit | 87d5acde0ae24d56524ffbc52a008f7a763fbcc8 (patch) | |
| tree | 70ba86b19d6c785771c3ce0dfbe7cd1070f5851c | |
| parent | ea23b16490c7c42cbf83cafde968ebbd78128ea4 (diff) | |
| download | sparse-dev-87d5acde0ae24d56524ffbc52a008f7a763fbcc8.tar.gz | |
use show_pseudo() for OP_SYMADDR's symbol
In show_instruction(), what is done to display OP_SYMADDR's
symbol is very close to what is done to display a PSEUDO_SYM.
In fact, what is done by show_pseudo() is more complete and
more informative.
So simply use show_pseudo() to display this part. This will
also avoid crashes caused by a NULL symbol.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
| -rw-r--r-- | linearize.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/linearize.c b/linearize.c index c174d631..4995d06e 100644 --- a/linearize.c +++ b/linearize.c @@ -342,24 +342,11 @@ const char *show_instruction(struct instruction *insn) buf += sprintf(buf, ".L%u", insn->bb_true->nr); break; - case OP_SYMADDR: { - struct symbol *sym = insn->symbol->sym; + case OP_SYMADDR: buf += sprintf(buf, "%s <- ", show_pseudo(insn->target)); - - if (!insn->bb && !sym) - break; - if (sym->bb_target) { - buf += sprintf(buf, ".L%u", sym->bb_target->nr); - break; - } - if (sym->ident) { - buf += sprintf(buf, "%s", show_ident(sym->ident)); - break; - } - buf += sprintf(buf, "<anon symbol:%p>", verbose ? sym : NULL); + buf += sprintf(buf, "%s", show_pseudo(insn->symbol)); break; - } - + case OP_SETVAL: { struct expression *expr = insn->val; struct symbol *sym; |
