While analysing this bug we arrived to the following code at tree.c:145 (lvalue_kind):
case VAR_DECL: if (TREE_READONLY (ref) && ! TREE_STATIC (ref) && DECL_LANG_SPECIFIC (ref) && DECL_IN_AGGR_P (ref)) return clk_none; That condition fails so a fall-through to the next case labels causes to return clk_ordinary, whereas this is about a constexpr value (rather than a reference). As an experiment, we forced the condition above to return clk_none and the bug is not reproduced. We are suspecting either that the condition is too restrictive or a fall-through is not intended. Why is the condition requiring DECL_IN_AGGR_P? Thank, Andres.