https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99849
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- We're outputting the initializer of mlx5_ib_object_MLX5_IB_OBJECT_VAR which looks like {.cleanup=&<<< Unknown tree: compound_literal_expr extern const struct uverbs_obj_idr_type __compound_literal.0 = {.type={.type_class=&uverbs_idr_class}}; >>>.type} The DECL_RTL of the COMPOUND_LITERAL_EXPR_DECL decl is (mem/u/c:DI (symbol_ref:DI ("__compound_literal.0.lto_priv.0") [flags 0x42] <var_decl 0x7ffff637a000 __compound_literal.0>) [7 __compound_literal.0+0 S8 A64]) The issue is that while we handle ADDR_EXPR of COMPOUND_LITERAL_EXPR specially in a lot of places here we have it wrapped in a COMPONENT_REF. It somehow feels that some lowering is missing - it would be interesting to trace the non-LTO compile of this initializer.