Clang Project

clang_source_code/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
5struct X {
6  double D;
7};
8
9struct Y {
10  struct X x;
11};
12
13struct Y bar();
14
15void foo(struct Y *P) {
16  *P = bar();
17}
18
19struct 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
31