]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/ppc64-varargs-struct.c
Vendor import of clang RELEASE_351/final tag r225668 (effectively, 3.5.1 release):
[FreeBSD/FreeBSD.git] / test / CodeGen / ppc64-varargs-struct.c
1 // REQUIRES: powerpc-registered-target
2 // RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
3
4 #include <stdarg.h>
5
6 struct x {
7   long a;
8   double b;
9 };
10
11 void testva (int n, ...)
12 {
13   va_list ap;
14
15   struct x t = va_arg (ap, struct x);
16 // CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x*
17 // CHECK: bitcast %struct.x* %t to i8*
18 // CHECK: bitcast %struct.x* %{{[0-9]+}} to i8*
19 // CHECK: call void @llvm.memcpy
20
21   int v = va_arg (ap, int);
22 // CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64
23 // CHECK: add i64 %{{[0-9]+}}, 4
24 // CHECK: inttoptr i64 %{{[0-9]+}} to i8*
25 // CHECK: bitcast i8* %{{[0-9]+}} to i32*
26
27   __int128_t u = va_arg (ap, __int128_t);
28 // CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128*
29 // CHECK-NEXT: load i128* %{{[0-9]+}}
30 }