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

    <tr>
        <th>Summary</th>
        <td>
            C++20 says that these are ambiguous, even though the second is reversed
        </td>
    </tr>

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

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

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

<pre>
    I tried to build some code bases with gcc13 and `-Werror `but got hit by a bunch of

```
include/mlir/IR/TypeRange.h:207:19: error: C++20 says that these are ambiguous, even though the second is reversed: [-Werror]
 >   207 |     return lhs == rhs;
```

for example in

```
 static bool isEqual(mlir::TypeRange lhs, mlir::TypeRange rhs) {
    if (isEmptyKey(rhs))
      return isEmptyKey(lhs);
    if (isTombstoneKey(rhs))
      return isTombstoneKey(lhs);
    return lhs == rhs;
  }
```
Some number of these can be traced to unbalanced or missing consts?

```
template <typename RangeT>
inline bool operator==(ArrayRef<Type> lhs, const ValueTypeRange<RangeT> &rhs) {
 return lhs.size() == static_cast<size_t>(llvm::size(rhs)) &&
 std::equal(lhs.begin(), lhs.end(), rhs.begin());
}
```

Apparently you can't actually disable this error in gcc without knocking out almost all warnings
 https://stackoverflow.com/questions/77992645/silence-ambiguous-reversed-operator-warning-in-gcc13?noredirect=1#comment137501323_77992645

Not really sure how llvm deals with this stuff.

Additionally does llvm build with gcc13?

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVctu6zYQ_ZrxZmBDImXLXmjh2DFwUaCLNGiXASWOJTYUqctHUvXrC0qK09ymQRcVCEoUh_M452gkvFetIapgewfb80rE0FlXaZJGPAvfqX5VWzlW3zA4RRKDxToqLdHbnrCxkrAWnjy-qtBh2zQ5R2Ekwi5b_0bOWZce6xiwtQE7FbAeUWAdTdOhvUJ2huy4zLtsGdNSmUZHScAuvVYO2OXbA7DL4zjQgzAtbTrgR5aVwI_5AfgRp2Dp4QTsDtgdy9CL0WPoRMDQkScUjlD0tWqjjR7YCemFDIbOxrZLJuipsUai8ujohZwnmRzC9m6pBbbnOTkEfo-ILCsRyhOmy1GIzqDuPAI_Az-j6zzwu0-Lm-erdUh_iH7QhMp8gQX6IIJqsLZWo_L336PQwPYTMPwI_HiDJcVPlX22lfJhB4RyySllra4IbK_8fT-E8Scage1nszRuVrfqPhjq2ZB_4u7R9rUP1tB_cfmD8Sduv8YWEcrzp7j9kkRqYl-TQ3tdVNAIgzVhcKKZBR1NLbQwaWUd9sp7ZVpsrPHBA798wUugftAiEAI_hXEgI3rCCexH4PdvOtbK0EydHciJkGSaigC2Pzonxge6Aj8lnpKqFgKn8Pir0JFuDAI_3ZwjsN0_CH3HaePVnwRsP-3PkM0aemqED8BPaf8ppCzZXuuXfhbLcurGV4qSxpsK5WxGiwBToJpaZeZIKe_0iox8f-F-tHmn9t9om-fjMAhHJugRRxsTbcDKgKIJUWg9olRe1JowdMrPXz8qk1rQ1ItsDPhsbPOcuEwLoXvr003jq3BGmdYvZXUhDD4Vxi7ALj6I5tm-kLtq-7ppbA_s8j2SD8oaD-xSlocD2xXbZKo0mYbWt56yfmsb6zem10ustTLrqTsCvxjrSCpHTQB-zoHxxvY9mZDzcpvlnPGnW4y_wfGzDehoqtxHR9jZV0zEoSShl_47QeFDvF43H5CUUqX0Z9gs-fng3MjfG_dN6ytZcXngB7GiKi-z8sDZIduuuiovy7Jgza5orjvOhaArl7mQBRWHoi7EfqUqlrEiY3mRl8WebTcF5UUp9nLLs6LYSQZFRr1QepMy2FjXrpT3kap9Xu4OKy1q0n76FzFm6BWnTWAs_Zpclc6s69h6KDKtfPDvXoIKmqr_tfWvotPVR220KnSxXkQxfTXzbT04-3vik12mjJNOpor-CgAA___vsUPV">