return { c } fully initializes the struct according to the language semantics, and the inefficient code does that.
What you've written is just a different way of spelling the full initialization, which should not have a radical effect on the generated code.