<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55650>55650</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang ignores to compile template param with __ptr32/__ptr64 attribute
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
narekchj
</td>
</tr>
</table>
<pre>
The code below fails to compile. NOTE: -fms-extensions flag is required for compilation.
```
template <typename T>
struct base {};
template <typename T>
struct child : public base<T> {};
template<class T>
T exchange(base<T>* __ptr32 a, T value) { return {}; }
int main()
{
child<bool> a;
exchange(&a, true);
return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNUsuSmzAQ_BpxmTIlxMscONjrzTG5-L4lYABtBCKSWO_-fQaCbSqHVCgVekxPd2tGlWm-ymuPUJsGoUJtbtBKpR14Q2fDpDSG8P3H9ZXFJzi0gzvgp8fRKTM6aLXsQDmw-GtWFhtojd2ypCdEyPiF8dP2z_g21q3HYSIUAotf_NeEoxwQrix-_RN23s61h0o6QuRnll9YfN7T_V9-3SvdwOJ9miut6pWQMhbgv3kJVGvp3I7zCvhZ93LskInjjoiJE7y9Td7GAiQTL3CFD6lnQhWLBpXHz3Z8ysEy7STV6GGQaiRWStki-eYK6FtvQWKVMXoxLh-el-jOFBPZaoAuv6j_dbUFvHnhz9DDy70_QVPGTREXMvDKayypDCO1uRuNxf27gEcLJmnlADfl-3sdmPi2rrIEpPdWVbPHYLa67L2fHPWDADQ6SpmrkAhpo_XHfTpM1rxj7WmrnJvR0SJNs5QHfSnaYxQ1BRYZJpmMyCgXeR4JkbRVnFY80JLesStZemZCjHiDlYLWLL0EqhRcCJ6KOOI84nnIG54kssmPCY8i5AVLOFIzdLj4CI3tAluulqq5cxTUynn3DNILocogrnLEL2ffG1uO0uLPun8PVu1y9f4byqwGMA">