Message ID | 20170706191950.81268-6-luc.vanoostenryck@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
This patch fixes a reproducible crash and have been ignored since it has been posted two weeks ago. Is there any reasons why? -- Luc -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Jul 6, 2017 at 3:19 PM, Luc Van Oostenryck <luc.vanoostenryck@gmail.com> wrote: > + sym = expr->symbol; > + if (sym->bb_target) > + buf += sprintf(buf, ".L%u", sym->bb_target->nr); You chould do: bb = expr->symbol->target; if (bb) buf += sprintf(buf, ".L%u", bb ? bb->nr); else buf += sprintf(buf, ".L<invalid>"); It is up to you. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Jul 20, 2017 at 12:57 PM, Christopher Li <sparse@chrisli.org> wrote: > On Thu, Jul 6, 2017 at 3:19 PM, Luc Van Oostenryck > <luc.vanoostenryck@gmail.com> wrote: >> + sym = expr->symbol; >> + if (sym->bb_target) >> + buf += sprintf(buf, ".L%u", sym->bb_target->nr); > You chould do: > bb = expr->symbol->target; > if (bb) > buf += sprintf(buf, ".L%u", bb ? bb->nr); > else > buf += sprintf(buf, ".L<invalid>"); > > It is up to you. Yes, it's more informative but I have a later series which convert all these to calls to a function show_label() which then do the right thing. So, I prefer to leave like this for the moment. -- Luc -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Jul 29, 2017 at 8:30 AM, Luc Van Oostenryck <luc.vanoostenryck@gmail.com> wrote: > > Yes, it's more informative but I have a later series which convert all these > to calls to a function show_label() which then do the right thing. > So, I prefer to leave like this for the moment. That is of course fine. Let me know if you have updated series to pull from. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/linearize.c b/linearize.c index b76e980dc..d868c4551 100644 --- a/linearize.c +++ b/linearize.c @@ -334,6 +334,7 @@ const char *show_instruction(struct instruction *insn) case OP_SETVAL: { struct expression *expr = insn->val; + struct symbol *sym; buf += sprintf(buf, "%s <- ", show_pseudo(insn->target)); if (!expr) { @@ -355,7 +356,9 @@ const char *show_instruction(struct instruction *insn) buf += sprintf(buf, "%s", show_ident(expr->symbol->ident)); break; case EXPR_LABEL: - buf += sprintf(buf, ".L%u", expr->symbol->bb_target->nr); + sym = expr->symbol; + if (sym->bb_target) + buf += sprintf(buf, ".L%u", sym->bb_target->nr); break; default: buf += sprintf(buf, "SETVAL EXPR TYPE %d", expr->type); diff --git a/validation/crash-bb_target.c b/validation/crash-bb_target.c new file mode 100644 index 000000000..bc5a3d354 --- /dev/null +++ b/validation/crash-bb_target.c @@ -0,0 +1,10 @@ +a() { + &&b + +/* + * check-name: crash bb_target + * check-command: test-linearize $file + * + * check-error-ignore + * check-output-ignore + */
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- linearize.c | 5 ++++- validation/crash-bb_target.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 validation/crash-bb_target.c