https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117501
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- I think the problem is that we evaluate struct QQQ q; <<cleanup_point <<< Unknown tree: expr_stmt QQQ::QQQ (&q, TARGET_EXPR <D.2687, <<< Unknown tree: aggr_init_expr 5 __ct_comp D.2687 (struct basic_string_view *) <<< Unknown tree: void_cst >>> (const char *) "" >>>>) >>>>>; into struct QQQ q; <<cleanup_point <<< Unknown tree: expr_stmt {.data={._M_len=42, ._M_str=0}} >>>>>; and then the useless expr_stmt is dropped on the floor. So q isn't initialized.