14e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola// RUN: %clang_cc1 -fsyntax-only -verify %s
24e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola
34e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolatemplate <class Element>
44e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolavoid foo() {
54e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola}
64e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolatemplate <>
74e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola __attribute__((visibility("hidden")))  // expected-note {{previous attribute is here}}
84e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolavoid foo<int>();
94e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola
104e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolatemplate <>
114e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolavoid foo<int>();
124e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola
134e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolatemplate <>
144e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola __attribute__((visibility("default"))) // expected-error {{visibility does not match previous declaration}}
154e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindolavoid foo<int>() {
164e31b4d6cf25029aa280d691e9023359c0ef4204Rafael Espindola}
17f729ce0b231e045b8e7db61e85e87186c09db238Rafael Espindola
18f729ce0b231e045b8e7db61e85e87186c09db238Rafael Espindolastruct x3 {
19f729ce0b231e045b8e7db61e85e87186c09db238Rafael Espindola  static int y;
20f729ce0b231e045b8e7db61e85e87186c09db238Rafael Espindola} __attribute((visibility("default"))); // expected-warning {{attribute 'visibility' after definition is ignored}}
21