Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 -triple le32-unknown-nacl -emit-llvm -o - %s | FileCheck %s
      2 #include <stdarg.h>
      3 
      4 int get_int(va_list *args) {
      5   return va_arg(*args, int);
      6 }
      7 // CHECK: define i32 @get_int
      8 // CHECK: [[RESULT:%[a-z_0-9]+]] = va_arg {{.*}}, i32{{$}}
      9 // CHECK: ret i32 [[RESULT]]
     10 
     11 struct Foo {
     12   int x;
     13 };
     14 
     15 struct Foo dest;
     16 
     17 void get_struct(va_list *args) {
     18   dest = va_arg(*args, struct Foo);
     19 }
     20 // CHECK: define void @get_struct
     21 // CHECK: [[RESULT:%[a-z_0-9]+]] = va_arg {{.*}}, %struct.Foo{{$}}
     22 // CHECK: store %struct.Foo [[RESULT]], %struct.Foo* @dest
     23 
     24 void skip_struct(va_list *args) {
     25   va_arg(*args, struct Foo);
     26 }
     27 // CHECK: define void @skip_struct
     28 // CHECK: va_arg {{.*}}, %struct.Foo{{$}}
     29