brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 9066565 Raw
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