brintos

brintos / llvm-project-archived public Read only

0
0
Text · 888 B · b78949e Raw
35 lines · c
1// RUN: %clang_cc1 -triple sparc -emit-llvm -o - %s | FileCheck %s2#include <stdarg.h>3 4// CHECK-LABEL: define{{.*}} i32 @get_int5// CHECK: [[RESULT:%[a-z_0-9]+]] = va_arg {{.*}}, i32{{$}}6// CHECK: store i32 [[RESULT]], ptr [[LOC:%[a-z_0-9]+]]7// CHECK: [[RESULT2:%[a-z_0-9]+]] = load i32, ptr [[LOC]]8// CHECK: ret i32 [[RESULT2]]9int get_int(va_list *args) {10  return va_arg(*args, int);11}12 13struct Foo {14  int x;15};16 17struct Foo dest;18 19// CHECK-LABEL: define{{.*}} void @get_struct20// CHECK: [[RESULT:%[a-z_0-9]+]] = va_arg {{.*}}, ptr{{$}}21// CHECK: call void @llvm.memcpy{{.*}}@dest{{.*}}, ptr align {{[0-9]+}} [[RESULT]]22void get_struct(va_list *args) {23 dest = va_arg(*args, struct Foo);24}25 26enum E { Foo_one = 1 };27 28enum E enum_dest;29 30// CHECK-LABEL: define{{.*}} void @get_enum31// CHECK: va_arg ptr {{.*}}, i3232void get_enum(va_list *args) {33  enum_dest = va_arg(*args, enum E);34}35