blob: d321f2ce4be7617b37389cae276e49430540e035 [file] [log] [blame]
Alex Lorenz9e7bf162017-04-18 14:33:39 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3#pragma clang attribute pop // expected-error {{'#pragma clang attribute pop' with no matching '#pragma clang attribute push'}}
4
5// Don't verify unused attributes.
6#pragma clang attribute push (__attribute__((annotate)), apply_to = function) // expected-warning {{unused attribute 'annotate' in '#pragma clang attribute push' region}}
7#pragma clang attribute pop // expected-note {{'#pragma clang attribute push' regions ends here}}
8
9// Ensure we only report any errors once.
10#pragma clang attribute push (__attribute__((annotate)), apply_to = function) // expected-error 4 {{'annotate' attribute takes one argument}}
11
12void test5_begin(); // expected-note {{when applied to this declaration}}
13void test5_1(); // expected-note {{when applied to this declaration}}
14
15#pragma clang attribute push (__attribute__((annotate())), apply_to = function) // expected-error 2 {{'annotate' attribute takes one argument}}
16
17void test5_2(); // expected-note 2 {{when applied to this declaration}}
18
19#pragma clang attribute push (__attribute__((annotate("hello", "world"))), apply_to = function) // expected-error {{'annotate' attribute takes one argument}}
20
21void test5_3(); // expected-note 3 {{when applied to this declaration}}
22
23#pragma clang attribute pop
24#pragma clang attribute pop
25#pragma clang attribute pop
26
27// Verify that the warnings are reported for each receiver declaration
28
29#pragma clang attribute push (__attribute__((optnone)), apply_to = function) // expected-note 2 {{conflicting attribute is here}}
30
31__attribute__((always_inline)) void optnone1() { } // expected-warning {{'always_inline' attribute ignored}}
32// expected-note@-1 {{when applied to this declaration}}
33
34void optnone2() { }
35
36__attribute__((always_inline)) void optnone3() { } // expected-warning {{'always_inline' attribute ignored}}
37// expected-note@-1 {{when applied to this declaration}}
38
39#pragma clang attribute pop
40
41#pragma clang attribute push ([[]], apply_to = function) // A noop
42
43#pragma clang attribute pop // expected-error {{'#pragma clang attribute pop' with no matching '#pragma clang attribute push'}}
44
45#pragma clang attribute push (__attribute__((annotate("func"))), apply_to = function) // expected-error {{unterminated '#pragma clang attribute push' at end of file}}
46
47void function();