https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120409
--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> --- typeck.cc has /* We can't initialize a register from a AGGR_INIT_EXPR. */ else if (! cfun->returns_struct && TREE_CODE (retval) == TARGET_EXPR && TREE_CODE (TARGET_EXPR_INITIAL (retval)) == AGGR_INIT_EXPR) retval = build2 (COMPOUND_EXPR, TREE_TYPE (retval), retval, TARGET_EXPR_SLOT (retval)); This is triggered for x32 and set_target_expr_eliding doesn't set TARGET_EXPR_ELIDING_P for COMPOUND_EXPR.