Pull in r199188 from upstream clang trunk (by Jakob Stoklund Olesen): Puny 24-byte structs are returned by value on SPARC. Pad these structs up so they are sret-returned even on that architecture. Introduced here: http://svnweb.freebsd.org/changeset/base/262262 Index: tools/clang/test/CodeGen/sret.c =================================================================== --- tools/clang/test/CodeGen/sret.c +++ tools/clang/test/CodeGen/sret.c @@ -4,6 +4,8 @@ struct abc { long a; long b; long c; + long d; + long e; }; struct abc foo1(void); Index: tools/clang/test/CodeGen/sret2.c =================================================================== --- tools/clang/test/CodeGen/sret2.c +++ tools/clang/test/CodeGen/sret2.c @@ -4,6 +4,8 @@ struct abc { long a; long b; long c; + long d; + long e; }; struct abc foo2(){}