Expressions without a type are the result of previous errors which left them unevaluated or only partially evaluated. Further processing, like here linearization, then produce nonsensical or erroneous results, with error messages unrelated to the cause of the error, like: "unknown expression (...)" or "call with no type!". Fix this by refusing to linearize an expressions without a type. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- linearize.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linearize.c b/linearize.c index ba76397ea..c36735cdd 100644 --- a/linearize.c +++ b/linearize.c @@ -1581,7 +1581,7 @@ static void linearize_argument(struct entrypoint *ep, struct symbol *arg, int nr pseudo_t linearize_expression(struct entrypoint *ep, struct expression *expr) { - if (!expr) + if (!expr || !expr->ctype) return VOID; current_pos = expr->pos; -- 2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html