43 lines · cpp
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2// RUN: %clang_cc1 -triple i386-linux-gnu -emit-llvm -o - %s | FileCheck %s3 4typedef struct {} empty;5 6// CHECK-LABEL: @_Z17empty_record_testiz(7// CHECK-NEXT: entry:8// CHECK-NEXT: [[RESULT_PTR:%.*]] = alloca ptr, align 49// CHECK-NEXT: [[Z_ADDR:%.*]] = alloca i32, align 410// CHECK-NEXT: [[LIST:%.*]] = alloca ptr, align 411// CHECK-NEXT: store ptr [[AGG_RESULT:%.*]], ptr [[RESULT_PTR]], align 412// CHECK-NEXT: store i32 [[Z:%.*]], ptr [[Z_ADDR]], align 413// CHECK-NEXT: call void @llvm.va_start.p0(ptr [[LIST]])14// CHECK-NEXT: ret void15//16empty empty_record_test(int z, ...) {17 __builtin_va_list list;18 __builtin_va_start(list, z);19 return __builtin_va_arg(list, empty);20}21 22typedef struct {23 struct {24 int a[0];25 } b;26} SortOfEmpty;27 28// CHECK-LABEL: @_Z18test_sort_of_emptyiz(29// CHECK-NEXT: entry:30// CHECK-NEXT: [[RESULT_PTR:%.*]] = alloca ptr, align 431// CHECK-NEXT: [[Z_ADDR:%.*]] = alloca i32, align 432// CHECK-NEXT: [[LIST:%.*]] = alloca ptr, align 433// CHECK-NEXT: store ptr [[AGG_RESULT:%.*]], ptr [[RESULT_PTR]], align 434// CHECK-NEXT: store i32 [[Z:%.*]], ptr [[Z_ADDR]], align 435// CHECK-NEXT: call void @llvm.va_start.p0(ptr [[LIST]])36// CHECK-NEXT: ret void37//38SortOfEmpty test_sort_of_empty(int z, ...) {39 __builtin_va_list list;40 __builtin_va_start(list, z);41 return __builtin_va_arg(list, SortOfEmpty);42}43