Following the resolution of DR481, the controlling expression of a generic selection must be array-to-pointer converted and function-to-pointer converted. Do this by adding a call to degenerate(). Reported-by: Marco Elver <elver@xxxxxxxxxx> Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- evaluate.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/evaluate.c b/evaluate.c index d8615a894c0d..491dfa3c6b89 100644 --- a/evaluate.c +++ b/evaluate.c @@ -3290,7 +3290,9 @@ static struct symbol *evaluate_generic_selection(struct expression *expr) struct symbol source; struct symbol *ctrl; - if (!(ctrl = evaluate_expression(expr->control))) + if (!evaluate_expression(expr->control)) + return NULL; + if (!(ctrl = degenerate(expr->control))) return NULL; source = *ctrl; -- 2.27.0