1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// REQUIRES: powerpc-registered-target
261e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
361e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt
461e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt#include <stdarg.h>
561e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt
661e404e36c914476938db67d873a0df32c6c3a9cBill Schmidtstruct x {
761e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt  long a;
861e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt  double b;
961e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt};
1061e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt
1161e404e36c914476938db67d873a0df32c6c3a9cBill Schmidtvoid testva (int n, ...)
1261e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt{
1361e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt  va_list ap;
1461e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt
1561e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt  struct x t = va_arg (ap, struct x);
163645056edb2f7dedc2e6153428f8f1adecc29687Bill Schmidt// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x*
1761e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt// CHECK: bitcast %struct.x* %t to i8*
1861e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8*
1961e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt// CHECK: call void @llvm.memcpy
2061e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt
2161e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt  int v = va_arg (ap, int);
223645056edb2f7dedc2e6153428f8f1adecc29687Bill Schmidt// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64
2361e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt// CHECK: add i64 %{{[0-9]+}}, 4
2461e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt// CHECK: inttoptr i64 %{{[0-9]+}} to i8*
2561e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt// CHECK: bitcast i8* %{{[0-9]+}} to i32*
263b334036d3ee581352cfe62ccac0e4c6592bcf35Bill Schmidt
273b334036d3ee581352cfe62ccac0e4c6592bcf35Bill Schmidt  __int128_t u = va_arg (ap, __int128_t);
283b334036d3ee581352cfe62ccac0e4c6592bcf35Bill Schmidt// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128*
293b334036d3ee581352cfe62ccac0e4c6592bcf35Bill Schmidt// CHECK-NEXT: load i128* %{{[0-9]+}}
3061e404e36c914476938db67d873a0df32c6c3a9cBill Schmidt}
31