... until we have initializer. Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> --- evaluate.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/evaluate.c b/evaluate.c index 60a11ff..e3b4940 100644 --- a/evaluate.c +++ b/evaluate.c @@ -2433,7 +2433,7 @@ out: static struct symbol *evaluate_cast(struct expression *expr) { struct expression *target = expr->cast_expression; - struct symbol *ctype = examine_symbol_type(expr->cast_type); + struct symbol *ctype; struct symbol *t1, *t2; int class1, class2; int as1, as2; @@ -2441,9 +2441,6 @@ static struct symbol *evaluate_cast(struct expression *expr) if (!target) return NULL; - expr->ctype = ctype; - expr->cast_type = ctype; - /* * Special case: a cast can be followed by an * initializer, in which case we need to pass @@ -2458,7 +2455,7 @@ static struct symbol *evaluate_cast(struct expression *expr) struct symbol *sym = expr->cast_type; struct expression *addr = alloc_expression(expr->pos, EXPR_SYMBOL); - sym->initializer = expr->cast_expression; + sym->initializer = target; evaluate_symbol(sym); addr->ctype = &lazy_ptr_ctype; /* Lazy eval */ @@ -2472,6 +2469,10 @@ static struct symbol *evaluate_cast(struct expression *expr) return sym; } + ctype = examine_symbol_type(expr->cast_type); + expr->ctype = ctype; + expr->cast_type = ctype; + evaluate_expression(target); degenerate(target); -- 1.5.0-rc2.GIT - 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