// RUN: %clang_cc1 -verify=expected,enabled -emit-codegen-only %s
// RUN: %clang_cc1 -verify -emit-codegen-only -Wno-attribute-warning %s

__attribute__((error("oh no foo"))) void foo(void);

__attribute__((error("oh no bar"))) void bar(void);

int x(void) {
  return 8 % 2 == 1;
}

__attribute__((warning("oh no quux"))) void quux(void);

__attribute__((error("demangle me"))) void __compiletime_assert_455(void);

__attribute__((error("one"), error("two"))) // expected-warning {{attribute 'error' is already applied with different arguments}}
void                                        // expected-note@-1 {{previous attribute is here}}
duplicate_errors(void);

__attribute__((warning("one"), warning("two"))) // expected-warning {{attribute 'warning' is already applied with different arguments}}
void                                            // expected-note@-1 {{previous attribute is here}}
duplicate_warnings(void);

void baz(void) {
  foo(); // expected-error {{call to foo declared with 'error' attribute: oh no foo}}
  if (x())
    bar(); // expected-error {{call to bar declared with 'error' attribute: oh no bar}}

  quux();                     // enabled-warning {{call to quux declared with 'warning' attribute: oh no quux}}
  __compiletime_assert_455(); // expected-error {{call to __compiletime_assert_455 declared with 'error' attribute: demangle me}}
  duplicate_errors();         // expected-error {{call to duplicate_errors declared with 'error' attribute: two}}
  duplicate_warnings();       // enabled-warning {{call to duplicate_warnings declared with 'warning' attribute: two}}
}
