// 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 |