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