<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">