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

    <tr>
        <th>Summary</th>
        <td>
            [compiler warning]: comparison of integers of different signs: 'const int' and 'const unsigned long
        </td>
    </tr>

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

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

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

<pre>
    Comparing `0` with uint64_t value results in compiler warning. Does it make sense? 

```cpp
#include<cstdint>
#include<cassert>
#include<string>

template <typename T1, typename T2>
std::string CmpHelperOpFailure(const char* expr1, const char* expr2,
                                   const T1& val1, const T2& val2,
                                   const char* op) {
  return "failed";
}


#define GTEST_IMPL_CMP_HELPER_(op_name, op)                                \
 template <typename T1, typename T2> \
  std::string CmpHelper##op_name(const char* expr1, const char* expr2, \
                                     const T1& val1, const T2& val2) { \
    if (val1 op val2) { \
      return "PASS"; \
    } else { \
      return CmpHelperOpFailure(expr1, expr2, val1, val2, #op); \
    } \
  }

GTEST_IMPL_CMP_HELPER_(NE, !=)


#define ASSERT_PRED_FORMAT2(Fun, val1, val2) Fun(#val1, #val2, val1, val2)

#define GTEST_ASSERT_NE(val1, val2) \
 ASSERT_PRED_FORMAT2(CmpHelperNE, val1, val2)

#define ASSERT_NE(Op1, Op2) GTEST_ASSERT_NE(Op1, Op2)

uint64_t bar() {
    return 100;
}

int foo(uint64_t l) {
    ASSERT_NE(0, bar());
 return 0;
}
```

$ clang++ -Wsign-compare test.cpp

```
<source>:24:28: error: comparison of integers of different signs: 'const int' and 'const unsigned long' [-Werror,-Wsign-compare]
   24 | GTEST_IMPL_CMP_HELPER_(NE, !=)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
<source>:17:14: note: expanded from macro 'GTEST_IMPL_CMP_HELPER_'
   17 |     if (val1 op val2) { \
      |         ~~~~ ^ ~~~~
<source>:39:5: note: in instantiation of function template specialization 'CmpHelperNE<int, unsigned long>' requested here
   39 | ASSERT_NE(0, bar());
      |     ^
<source>:32:29: note: expanded from macro 'ASSERT_NE'
   32 | #define ASSERT_NE(Op1, Op2) GTEST_ASSERT_NE(Op1, Op2)
      |                             ^
<source>:30:23: note: expanded from macro 'GTEST_ASSERT_NE'
   30 | ASSERT_PRED_FORMAT2(CmpHelperNE, val1, val2)
      | ^
1 error generated.
Compiler returned: 1
```

https://godbolt.org/z/qxPEd986n
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0V01v2zgT_jXjyyCGRFqWdPDBke23L9BugiRAjwYtjWzuyqRKUv069LcvKNmynchpWnSFgGH4Mc8zzwyHjLBWbhXRDKJbiBYj0bidNrOdNKKQ7psYbXTxbZbpfS2MVFuEaRDANMAv0u2wkcpNJ2uHn0XVEBqyTeUsSoW53teyIoNfhFFSbce40GRROtyLfwgtKUvAVwjBAoL5oZ0G3U9e14cRxqXKq6Yg4FluXSGVA74cmhTWkrkyaZ2nfpprW0f7uhKOEHjmvtWkxJ7wKQSW4elP1m-yrgA-Bz7vjGG2r99RVZO5q1dCVo0hYEmulXWY74QBNkf6WpvW3sthBizr7OLPv267pzb1Qp-ZfGKHsd-wd6Sja2ApQnx73G_INUYhMFYKWVEBjAE_zEK8uIjYUeuCSqkI__e0fHxa___D_ft19uF-_W75_n75sAaW6HrtBfXMO7yffBAd3XlzmM724NVgAePAeM_m1wJ2jvDHwtZKf2lZlggs8VtQ19eXnUfqfv742MXpcg3EC6TK0iu7BxO5V6L3_ejBIdmwlRFYOgh5NvAsY65myF_LzmoIfOHNvpJl88fH5cPT-v5huViv7h4-zL2eyapRL3mm2A4nwPhxousO-JS-ltMHTM8yeQ5x8naYWa9w5-ObUM_x7up2_V3dor3kczF_bq4vzxufyMmzc95nQBgE1w64VA5LrYElva3qhZlzLoFn0sN1-XFYeUAbwjoW_kstJphXQm2B3QK7xZuP_qK6ydubiNCRdePTRTFoh2dWNyYnX8T5nE18kwCfIxmjje901qTVCnWJUjnakrG-X8iyJEPKoYe1fjGwuDu__hZiMQpVnMYa1d6jBVbaU44Rotubjx0Qyy7JQ7To1WMThDi7XjkHz8WhSMYZ_rj-QbT88WNQiTD2jZcDlXbUKvK1FqqgAkuj97gXudHet2u04p5HGLc8fqluHTf4zzNFiJZtZ5AtT4HPo3OyUqFU1gnlpHCyi13ZqLzt9xeGrSmXopLfuzXA4vODyLM2itmzwPGlj52hTw1ZRwXuyFBPnact9Tfm-4WrEC2HnWM-KdM3hOIM9aQ-Zy3CH6sbL-MzfDtfcSbwzvA359WwS8G5yL9RSk8-9DzD7sTjlhQZ4agYd-PZ8ZXa1SbyrwYMXylKO-dqXwuArYCttrrY6MqNtdkCW30Htvr09X5ZpMlUjYoZL1KeihHNwjjkSRjHSTrazURaRlSwIAwpF2UZF1O2maSCppMiZFEajeSMBWwSTBhjAUsn6bikMkkiolxMI-KbHCYB7YWsxlX1ee-xR9LahmZJOp2Go0psqLLta54xRV-wnfRvg2gxMjO_52bTbC1MgkpaZ09WnHRV-2_A87e7L1f_Xa0cNaaaPdNVul2zGed6D2zl-R1-3dRG_025A7ZqvbLAVq3X_wYAAP__sZuUpQ">