https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93573
--- Comment #7 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Passing a variable-size struct or union by value to a non-nested function seems very questionable (the function couldn't be declared with a matching prototype), but perhaps that doesn't answer the question because the cast-to-union case might appear for a nested function as well.