Add a test case for r156143, which enabled general varargs support for the
64-bit PPC SVR4 ABI. The test verifies passing of structures, items with 16-byte alignment, and small items that are passed right-justified in the parameter save area slot. llvm-svn: 165245
This commit is contained in:
parent
f3b796ed81
commit
a7b7f7256e
|
@ -0,0 +1,32 @@
|
|||
// 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* %ap.cur{{[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
|
||||
|
||||
__int128_t u = va_arg (ap, __int128_t);
|
||||
// CHECK: ptrtoint i8* %ap.cur{{[0-9]*}} to i64
|
||||
// CHECK: add i64 %{{[0-9]+}}, 15
|
||||
// CHECK: and i64 %{{[0-9]+}}, 4294967280
|
||||
// CHECK: inttoptr i64 %{{[0-9]+}} to i8*
|
||||
|
||||
int v = va_arg (ap, int);
|
||||
// CHECK: ptrtoint i8* %ap.cur{{[0-9]*}} to i64
|
||||
// CHECK: add i64 %{{[0-9]+}}, 4
|
||||
// CHECK: inttoptr i64 %{{[0-9]+}} to i8*
|
||||
// CHECK: bitcast i8* %{{[0-9]+}} to i32*
|
||||
}
|
Loading…
Reference in New Issue