// RUN: %clang_cc1 -triple x86_64-windows -fsyntax-only -verify %s
// RUN: %clang_cc1 -triple x86_64-linux -fsyntax-only -verify -emit-llvm-only -DCHECK_ALIASES %s
// RUN: %clang_cc1 -triple x86_64-linux -fsyntax-only -verify -emit-llvm-only %s
void
void ;
// expected-warning@-1 {{unknown attribute 'ifunc' ignored}}
void *;
void ;
// expected-error@-1 {{ifunc must point to a defined function}}
void *;
void *;
// expected-error@-1 {{ifunc definition is part of a cycle}}
void *;
// expected-warning@-1 {{ifunc will always resolve to f3_c even if weak definition of f3_b is overridden}}
void *;
void *
void
void ;
// expected-error@-1 {{ifunc resolver function must return a pointer}}
int f5_resolver_gvar;
void ;
// expected-error@-1 {{ifunc must point to a defined function}}
void *
void *;
void ;
// expected-error@-1 {{ifunc must point to a defined function}}
void ;
void
// expected-note@-1 {{previous definition is here}}
void ;
// expected-error@-1 {{definition with same mangled name 'f1' as another definition}}
void *
void *;
void
// expected-error@-1 {{definition 'f6' cannot also be an ifunc}}