forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			31 lines
		
	
	
		
			759 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			759 B
		
	
	
	
		
			C
		
	
	
	
| // REQUIRES: ppc64-registered-target
 | |
| // RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
 | |
| 
 | |
| #include <stdarg.h>
 | |
| 
 | |
| struct x {
 | |
|   long a;
 | |
|   double b;
 | |
| };
 | |
| 
 | |
| void testva (int n, ...)
 | |
| {
 | |
|   va_list ap;
 | |
| 
 | |
|   struct x t = va_arg (ap, struct x);
 | |
| // CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x*
 | |
| // CHECK: bitcast %struct.x* %t to i8*
 | |
| // CHECK: bitcast %struct.x* %{{[0-9]+}} to i8*
 | |
| // CHECK: call void @llvm.memcpy
 | |
| 
 | |
|   int v = va_arg (ap, int);
 | |
| // CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64
 | |
| // CHECK: add i64 %{{[0-9]+}}, 4
 | |
| // CHECK: inttoptr i64 %{{[0-9]+}} to i8*
 | |
| // CHECK: bitcast i8* %{{[0-9]+}} to i32*
 | |
| 
 | |
|   __int128_t u = va_arg (ap, __int128_t);
 | |
| // CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128*
 | |
| // CHECK-NEXT: load i128* %{{[0-9]+}}
 | |
| }
 |