// REQUIRES: aarch64-registered-target
// RUN: not %clang_cc1 -triple aarch64-linux-gnu -target-feature +sve -emit-llvm -o - %s 2>&1 | FileCheck %s
// RUN: not %clang_cc1 -triple arm64-apple-ios7 -target-abi darwinpcs -target-feature +sve -emit-llvm -o - %s 2>&1 | FileCheck %s

// CHECK: Passing SVE types to variadic functions is currently not supported

#include <arm_sve.h>
#include <stdarg.h>

double foo(char *str, ...) {
  va_list ap;
  svfloat64_t v;
  double x;

  va_start(ap, str);
  v = va_arg(ap, svfloat64_t);
  x = va_arg(ap, double);
  va_end(ap);

  return x + svaddv(svptrue_b8(), v);
}
