/*
 * Build into bitcode
 * RUN: clang -O0 %s -emit-llvm -c -o %t.bc
 * RUN: adsaopt -internalize -mem2reg -typechecks %t.bc -o %t.tc.bc
 * RUN: tc-link %t.tc.bc -o %t.tc1.bc
 * RUN: llc %t.tc1.bc -o %t.tc1.s
 * RUN: clang++ %t.tc1.s -o %t.tc2
 * Execute
 * RUN: %t.tc2 >& %t.tc.out
 * RUN: not grep "Type.*mismatch" %t.tc.out
 */
#include <stdarg.h>
#include <stdio.h>
//This is a basic use of vararg pointer use

static int get( int unused, ... )
{
  va_list ap;
  va_start( ap, unused );
  int *val = va_arg( ap, int* );
  va_end( ap );
  va_start( ap, unused );
  int *val1 = va_arg( ap, int* );
  va_end( ap );

  return *val;
}

int main()
{
  int stack_val = 5;

  int ret = get( 0, &stack_val );

  return ret - 5;
}
