// RUN: %clang_cc1 -Werror -triple x86_64-linux -emit-llvm -o - %s | FileCheck %s
// RUN: %clang_cc1 -Werror -triple i386-linux -emit-llvm -o - %s | FileCheck %s
// RUN: %clang_cc1 -Werror -triple armv7-linux -emit-llvm -o - %s | FileCheck %s --check-prefix=ARM
// RUN: %clang_cc1 -Werror -triple powerpc64le-linux -emit-llvm -o - %s | FileCheck %s
// RUN: %clang_cc1 -Werror -triple aarch64-linux -emit-llvm -o - %s | FileCheck %s

typedef union {
  void *f0;
} transp_t0 __attribute__((transparent_union));

void f0(transp_t0 obj);

// CHECK-LABEL: define void @f1_0(i32* %a0)
// CHECK:  call void @f0(i8* %{{.*}})
// CHECK:  call void %{{.*}}(i8* %{{[a-z0-9]*}})
// CHECK: }

// ARM-LABEL: define arm_aapcscc void @f1_0(i32* %a0)
// ARM:  call arm_aapcscc void @f0(i8* %{{.*}})
// ARM:  call arm_aapcscc void %{{.*}}(i8* %{{[a-z0-9]*}})
// ARM: }
void f1_0(int *a0) {
  void (*f0p)(void *) = f0;
  f0(a0);
  f0p(a0);
}

void f1_1(int *a0) {
  f0((transp_t0) { a0 });
}
