I'm interested in what y'all think about the second issue; it's something I've run into previously when thinking about expanding NEW_EXPR. One problem with (b) is that using it requires the frontend to know about passing by invisible reference. However, in the cases where we pass by invisible reference because TREE_ADDRESSABLE is set on the type, it's already controlled by the frontend, so that doesn't seem like a big issue. For cases where we would pass by invisiref for other reasons, doing a bitwise copy is just inefficient, and we could leave it up to the optimizer to fix that up.