]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/2006-05-19-SingleEltReturn.c
Vendor import of clang trunk r300422:
[FreeBSD/FreeBSD.git] / test / CodeGen / 2006-05-19-SingleEltReturn.c
1 // Test returning a single element aggregate value containing a double.
2 // RUN: %clang_cc1 -triple i686-linux %s -emit-llvm -o - | FileCheck %s --check-prefix=X86_32
3 // RUN: %clang_cc1 %s -emit-llvm -o -
4
5 struct X {
6   double D;
7 };
8
9 struct Y {
10   struct X x;
11 };
12
13 struct Y bar();
14
15 void foo(struct Y *P) {
16   *P = bar();
17 }
18
19 struct Y bar() {
20   struct Y a;
21   a.x.D = 0;
22   return a;
23 }
24
25
26 // X86_32: define void @foo(%struct.Y* %P)
27 // X86_32:   call void @bar(%struct.Y* sret %{{[^),]*}})
28
29 // X86_32: define void @bar(%struct.Y* noalias sret %{{[^,)]*}})
30 // X86_32:   ret void