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

    <tr>
        <th>Summary</th>
        <td>
            New __ptrauth types are wrongly reported as __is_trivially_equality_comparable
        </td>
    </tr>

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

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

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

<pre>
    ```
struct S1 {
  int * __ptrauth(1,1,50) p_;
  bool operator==(const S1&) const = default;
};
static_assert(!__is_trivially_equality_comparable(S1));
```
This test case fails. So libc++ `std::equal` will use `memcmp` to compare objects of type `S1` and will wrongly report that they are not-equal when they are supposed to be equal. This is a wrong-codegen bug.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEUk2PozwM_jXmYrUKDoVy4NC-VY_vZfaOArglq0DYOEzVf78KjDS7p5XMV_J8YOcxIvY5MzdwusLplpk1jj40o3Gdpazzw7uBUn2VukgMax_xI0eorqAuiHaOCHTBtl1iSGygcw70X7pOCqjGpQW9YzvvHfqFg4k-gL6lonPvZ0mSQGWC75-gbzjww6wu7myobvuLRBNt3xoRDhHoDJS3rZU2BvtpjXPvln-txtn4bns_LSaYzjHQORnUqXa5P5r6MVrByBKxN8L4MNbJET88Otv1QFegK0KpJA6gL6Avmz6UCl_WOVyF0-7EUz8taTV63I0ZffeT-yjoHxjfy4b7yBPGzMPOfgU_P90bAy8-RIyjSTd-Y6LPPh42M3yNPH-vy7osXnhIVh3jBjni1oYVNLvoofcDP3nGbn0es6HRQ61rk3GTV8WpUqqodTY2Z6L8UVZKl3WhuCoqRaZ49I_hUZeGjclsQ4pOqqCSVHHO9fFEdXVSutBa9WoYzlAonox1R-c-p6MPz8yKrNzkuioqnTnTsZMtXkQzv3DbBaKUttAk0qFbnwKFclaifMtEGx03__PrO1vbFGWbwd-D4wGN4L9zkK3BNWOMi6SjpDvQ_WnjuHbH3k9A92T-9TgswafTA7pvvyxA96-ePhv6HQAA__81Jge_">