<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/80077>80077</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[FMV] diagnose FMV + streaming mode change
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jroelofs
</td>
</tr>
</table>
<pre>
https://clang.godbolt.org/z/Ef81qW5Ta
```
__attribute__((target_version("sme2")))
void cannot_work() __arm_streaming {
// This should be diagnosed as unsupported: it has a different ABI than the default version.
}
__attribute__((target_version("default")))
void cannot_work() { }
__attribute__((target("sme2")))
void just_fine_sme_streaming() __arm_streaming {}
__attribute__((target_version("sme2")))
void just_fine() { just_fine_sme_streaming(); }
__attribute__((target_version("default")))
void just_fine() { }
int main() {
cannot_work();
just_fine();
}
```
Currently we don't diagnose this, and codegen leaves off the required `smstart`/`smstop` that we need on entry/exit from `_Z11cannot_workv._Msme2`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVEFvqzgQ_jXmMioydoHkwCFpFmkPvVVdaS_I4AHcBTu1h3S7v34F5TV5bdVWT0-yHDn2zHzfNx-jQjCdRSxYumfpIVIT9c4XD97h4NoQ1U4_Fz3RMTC5Y6JkomwGZbu4c7p2A8XOd0yU_zFR_tFukse_0jvF-IHx3bpnfF3LsaoUkTf1RFhVTGyY2JDyHVJ1Qh-Ms8t_IowomBBMbNe1BJ-c0dAoax1VT87_s7zdQlUpP1aBPKrR2A5Yvn95DwDwAhnuehMg9G4aNNQI2qjOuoAaVIDJhul4dJ5QM7kDQ9CrAAq0aVv0aAl2-z-BemWBegSNrZoGghVwvPLMD5e0v8lzzfVtqizfw5tKX9T7Us-HKVDVGotVGPGs4ifa_hLT7yC4IPkpKibfqfBb9P4IyIdqG0swKmPP786Ge9c0Jn_cvsn_enGu8fPHcrnfTH624vAMTwh65pPTq42BehOYuAFlNTROY4cWBlQnDODadrGtx8fJeNTAMh7GQMrTXEiU69kdWcZnl9NcwSJqcBbQkn9mosR_DUHr3TiHV38nyQXNU1zdLu3NeBzpQuqt3KoIiyTnWZZmMpVRX2jeoNpkdau0ku1G5plUaZqKTEqOSZ1FphBcXPNEciETIWWM2y1Pk7xu-EbmtU7ZNcdRmSEehtM4j53IhDBhseE8z6NB1TiEZYoJYfEJlsu50ekh8sUcc1VPXWDXfDCBwjkLGRqW8Vfe3rP0cBa1vL0HJvZwdv_oNELTK9thNPnhzVzsDPVTHTduZKKc068_V0fvHrAhJsoFVGCiXED_HwAA___VyKtf">