// Test returning a single element aggregate value containing a double. // RUN: %clang_cc1 -triple i686-linux %s -emit-llvm -o - | FileCheck %s --check-prefix=X86_32 // RUN: %clang_cc1 %s -emit-llvm -o - struct X { double D; }; struct Y { struct X x; }; struct Y bar(void); void foo(struct Y *P) { *P = bar(); } struct Y bar(void) { struct Y a; a.x.D = 0; return a; } // X86_32: define{{.*}} void @foo(ptr noundef %P) // X86_32: call void @bar(ptr sret(%struct.Y) align 4 %{{[^),]*}}) // X86_32: define{{.*}} void @bar(ptr noalias sret(%struct.Y) align 4 %{{[^,)]*}}) // X86_32: ret void