Changeset View
Changeset View
Standalone View
Standalone View
clang/test/CodeGen/arm-varargs.c
Context not available. | |||||
va_list the_list; | va_list the_list; | ||||
int simple_int(void) { | int simple_int(void) { | ||||
// CHECK-LABEL: define i32 @simple_int | // CHECK-LABEL: define noundef i32 @simple_int | ||||
return va_arg(the_list, int); | return va_arg(the_list, int); | ||||
// CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | // CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | ||||
// CHECK: [[NEXT:%[a-z0-9._]+]] = getelementptr inbounds i8, i8* [[CUR]], i32 4 | // CHECK: [[NEXT:%[a-z0-9._]+]] = getelementptr inbounds i8, i8* [[CUR]], i32 4 | ||||
Context not available. | |||||
} | } | ||||
double simple_double(void) { | double simple_double(void) { | ||||
// CHECK-LABEL: define double @simple_double | // CHECK-LABEL: define noundef double @simple_double | ||||
return va_arg(the_list, double); | return va_arg(the_list, double); | ||||
// CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | // CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | ||||
// CHECK: [[CUR_INT:%[a-z0-9._]+]] = ptrtoint i8* [[CUR]] to i32 | // CHECK: [[CUR_INT:%[a-z0-9._]+]] = ptrtoint i8* [[CUR]] to i32 | ||||
Context not available. | |||||
typedef int underaligned_int __attribute__((packed,aligned(2))); | typedef int underaligned_int __attribute__((packed,aligned(2))); | ||||
underaligned_int underaligned_int_test() { | underaligned_int underaligned_int_test() { | ||||
// CHECK-LABEL: define i32 @underaligned_int_test() | // CHECK-LABEL: define noundef i32 @underaligned_int_test() | ||||
return va_arg(the_list, underaligned_int); | return va_arg(the_list, underaligned_int); | ||||
// CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | // CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | ||||
// CHECK: [[NEXT:%[a-z0-9._]+]] = getelementptr inbounds i8, i8* [[CUR]], i32 4 | // CHECK: [[NEXT:%[a-z0-9._]+]] = getelementptr inbounds i8, i8* [[CUR]], i32 4 | ||||
Context not available. | |||||
typedef int overaligned_int __attribute__((aligned(32))); | typedef int overaligned_int __attribute__((aligned(32))); | ||||
overaligned_int overaligned_int_test() { | overaligned_int overaligned_int_test() { | ||||
// CHECK-LABEL: define i32 @overaligned_int_test() | // CHECK-LABEL: define noundef i32 @overaligned_int_test() | ||||
return va_arg(the_list, overaligned_int); | return va_arg(the_list, overaligned_int); | ||||
// CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | // CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | ||||
// CHECK: [[NEXT:%[a-z0-9._]+]] = getelementptr inbounds i8, i8* [[CUR]], i32 4 | // CHECK: [[NEXT:%[a-z0-9._]+]] = getelementptr inbounds i8, i8* [[CUR]], i32 4 | ||||
Context not available. | |||||
typedef long long underaligned_long_long __attribute__((packed,aligned(2))); | typedef long long underaligned_long_long __attribute__((packed,aligned(2))); | ||||
underaligned_long_long underaligned_long_long_test() { | underaligned_long_long underaligned_long_long_test() { | ||||
// CHECK-LABEL: define i64 @underaligned_long_long_test() | // CHECK-LABEL: define noundef i64 @underaligned_long_long_test() | ||||
return va_arg(the_list, underaligned_long_long); | return va_arg(the_list, underaligned_long_long); | ||||
// CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | // CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | ||||
// CHECK: [[CUR_INT:%[a-z0-9._]+]] = ptrtoint i8* [[CUR]] to i32 | // CHECK: [[CUR_INT:%[a-z0-9._]+]] = ptrtoint i8* [[CUR]] to i32 | ||||
Context not available. | |||||
typedef long long overaligned_long_long __attribute__((aligned(32))); | typedef long long overaligned_long_long __attribute__((aligned(32))); | ||||
overaligned_long_long overaligned_long_long_test() { | overaligned_long_long overaligned_long_long_test() { | ||||
// CHECK-LABEL: define i64 @overaligned_long_long_test() | // CHECK-LABEL: define noundef i64 @overaligned_long_long_test() | ||||
return va_arg(the_list, overaligned_long_long); | return va_arg(the_list, overaligned_long_long); | ||||
// CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | // CHECK: [[CUR:%[a-z0-9._]+]] = load i8*, i8** getelementptr inbounds (%struct.__va_list, %struct.__va_list* @the_list, i32 0, i32 0), align 4 | ||||
// CHECK: [[CUR_INT:%[a-z0-9._]+]] = ptrtoint i8* [[CUR]] to i32 | // CHECK: [[CUR_INT:%[a-z0-9._]+]] = ptrtoint i8* [[CUR]] to i32 | ||||
Context not available. | |||||
} | } | ||||
void check_start(int n, ...) { | void check_start(int n, ...) { | ||||
// CHECK-LABEL: define void @check_start(i32 %n, ...) | // CHECK-LABEL: define void @check_start(i32 noundef %n, ...) | ||||
va_list the_list; | va_list the_list; | ||||
va_start(the_list, n); | va_start(the_list, n); | ||||
Context not available. |