> Can you explain why the GCC internals cause us to get SCmode instead of > BLKmode for the example with _Complex? I don't understand that. It > seems wrong to me and I don't understand where it is coming from.
compute_record_mode uses BLKmode only as a last resort because this will significantly pessimize over non-BLKmode at the RTL level. As Richard said (and as discussed many times over the years), you ought not to rely on the mode for the calling convention of aggregate types. -- Eric Botcazou