<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/55381>55381</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Spaceship operator<=> fails on ARM but compiles on x86-64
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          reneruhr
      </td>
    </tr>
</table>

<pre>
    The following code compiles on clang 11 x86 but not on arm:

```
template <class T>
struct A{
    std::array<T,2> data_;
    constexpr friend auto operator<=>(const A<T>& a, const A<T>& b)
    {
        return  ( a.data_ <=> b.data_ );
    }
};
```

Error message:
```
<source>:12:27: error: invalid operands to binary expression ('const std::array<int, 2>' and 'const std::array<int, 2>')
        return  ( a.data_ <=> b.data_ );
```

See [compiler explorer](https://www.godbolt.org/z/W4K5f5hxj).
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydU01vnDAQ_TXmMgoCe1ngwGGTTS5VL22kHiuDZ8GR10a2ySb99R2z2earh6rIGHs-3jw_PL1Tz939hHBwxriTtiMMTiFNx1kbDOAsDEaSuSzhqdlCv0SwLia79EcmdqzYs-Iyb4uXsW4jHmcjIwITNwQSAtwzcXv2heiXIcKO1ddnA9ATokqIYie9l8-Udc_4DaccUDLKn0y8iR2cDRGfZg8Hr9EqkEt04Gb0MjpPuUzsUzXerJFUKcElwxYkwcJnc894-1rgHbP0eIyLt-TgDch8ZQR_6kB_sRDGW56s3r-IQ4uL44NQ5_nWe-fhiCHIEV-V_RAqboJb_ICJs9iVpM6O1zQBpvS00PZRGq3OWlgVgHTptZX-GZJehK_p79EpGK_PInzSXduYJOKrMDUQCvxr8DsN_0-2v6rzHekeVdcvF9Onoxjn0bNqT8hTjHNItPgdjdPplI9O9c7E3PmRLL_o_bH5Uh2q6emBauWZ6oRqRSuzqKPB7vssBwyTnj9fIThIbdZO2H37ujbA2-6gprjabrLFm-49iVHHaelziqWNMY-Xz9Xs3QMOpNmdDmHBQIuqEk2ZTR2v8KDUVlRDqw4lb4dWVE3N-Vb0tdy0fWZkjyZ0JATj3OIJVghakwyZ7njBeVGVZVlUhSjzIWU1Tb9RVdXyEtmmwCMdJk88kjKZ71ZK_TIGchodYnh1Usfq0SKu5QifOmxyvvNo0S-Tz9ba3cr9N3TpPmk">