<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55657>55657</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
`__attribute__((availability))` does not suppress availability warnings in template functions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nico
</td>
</tr>
</table>
<pre>
Consider this program:
```
C:\src\llvm-project>type foo.mm
#define A __attribute__((availability(macosx,introduced=10.13,deprecated=10.14)))
void f0() A;
A void f1() {
f0();
}
template<class T>
A void f2() {
f0();
}
```
`f1()` and `f2()` are identical, except that `f2()` is a template.
`f0()` only exists on macOS 10.13+, but `f1()` and `f2()` do too (since they both also have the attribute), so the call to `f0()` shouldn't warn. But it does warn in `f2()`:
```
C:\src\llvm-project>out\gn\bin\clang.exe --target=x86_64-apple-macosx -c foo.mm -mmacosx-version-min=10.11
foo.mm:11:3: warning: 'f0' is only available on macOS 10.13 or newer [-Wunguarded-availability-new]
f0();
^~
foo.mm:3:6: note: 'f0' has been marked as being introduced in macOS 10.13 here, but the deployment target is macOS 10.11.0
void f0() A;
^
foo.mm:11:3: note: enclose 'f0' in an @available check to silence this warning
f0();
^~
1 warning generated.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVEGv4jgM_jXlYrUqKaWPQw88eHOdw660R5Qmps1MmlRJyjz-_TqlQAdpdnYXhTSx4_iz_TmNldf6YI1XEh2ETnkYnG0d75Nin-THJL_P23we0_YQ1eXBO0Gz1pc-JbNvKEJSfITrgHC2Nuv72ZYVEs_KIOzhdOIhONWMAU-nhL3R4BeuNG-UVuFK254L6z8TdlAmOCtHgTIpjus8WxcklDg4FDw8hJuE7eaxgHuxSsI5nxzsYJ8U70vtHm769axPqlkND5unRXVcmgbsB03uk-IgNPce_qSIf76V_adbf87rQ3jHRkvgRkIUsYXIIVDJTFCCa0oL4KfAIVAFeXg9SzXlcMedvfrJnwet0Ve6SPngaQ1UiK9_wJz49-iEqga_xyYtBGuBBF4ZgYQJr9DY0AHX3kLHL5MMHkSYyncA0kUxBaTpAngB5zs7amkSVgX4wZ3J4J3QqEDu0E8SUOYFyv_nsB0DCVtDU6PiTMU2bYafCGkauGuRTh0_37an7Sblw6AxvfEWUjFzH9L-Jkov6LyyJu3pphtp1zcEc5MUexIU-4L-UyDKtHFJocYEVLGAU2nmRtH4Uh2wDgz-oAZOyvf0r9G0I3cSZbrsrJROJOXxl4wEMv5Iqo8XZBHUNqIxNpJ-garjHhrEiMR9RwnTlqDDs29jRZY4O3R451EsNTWztteeaAy3nMZQnwbrLP_nbob4i7B_lc07aDRCW4-LlBpiLiSb_JlT0aH4HonnlcYbb5V_1OPfpW19Pw8tGnTxmcpeuLeSdSF3xY6vggoaaxL99k3cPTqLqE4xgR8Hegbp9Vmeu_v2Mbp7v8N5NCIQ-_xqdLruQhh85D37QqNVoRubTNieNrED5s-jEdgX5f2InhZluS2rVVdXWO4KWkuBO2zetmVTsKqs4l5scslWBAe1r4mKCWNT25C_s7MmoJEkIhKuVM1yxvKSFevNelOy7MyLty1ndGcut7uyocpgT6FlEU5mXbty9YSsGVtPSh0fqaeSHmLVGsTJK93Px9BZVxsl7GqKoJ7g_w3_qwak">