| // DR 1914 - Duplicate standard attributes |
| // { dg-do compile { target c++11 } } |
| |
| #define ATTR_NORETURN [[noreturn, noreturn]] |
| |
| [[noreturn, noreturn]] void fn0(); // { dg-warning "specified multiple times" } |
| ATTR_NORETURN void fn0a(); |
| [[noreturn]] [[noreturn]] void fn1(); |
| [[deprecated, deprecated]] void fn2(); // { dg-warning "specified multiple times" } |
| [[deprecated]] [[deprecated]] void fn3(); |
| [[maybe_unused]] [[maybe_unused]] int fn4(); |
| [[maybe_unused, maybe_unused]] int fn5(); // { dg-warning "specified multiple times" } |
| [[nodiscard]] [[nodiscard]] int fn6(); |
| [[nodiscard, nodiscard]] int fn7(); // { dg-warning "specified multiple times" } |
| |
| struct E { }; |
| struct A { |
| [[no_unique_address]] [[no_unique_address]] E e; |
| }; |
| struct B { |
| [[no_unique_address, no_unique_address]] E e; // { dg-warning "specified multiple times" } |
| }; |
| |
| int |
| f (int n) |
| { |
| switch (n) |
| { |
| case 1: |
| [[fallthrough, fallthrough]]; // { dg-warning "specified multiple times" } |
| case 2: |
| [[fallthrough]] [[fallthrough]]; // { dg-warning "specified multiple times" } |
| case 3: |
| return 15; |
| } |
| |
| if (n == 10) |
| [[likely]] [[likely]] return 42; // { dg-warning "ignoring attribute" } |
| else if (n == 11) |
| [[unlikely]] [[unlikely]] return 10; // { dg-warning "ignoring attribute" } |
| else if (n == 12) |
| [[likely, likely]] return 42; // { dg-warning "specified multiple times" } |
| else |
| [[unlikely, unlikely]] return 0; // { dg-warning "specified multiple times" } |
| } |