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

    <tr>
        <th>Summary</th>
        <td>
            The compiler is unable to recognize nonnull variable 
        </td>
    </tr>

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

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

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

<pre>
    https://android-build.googleplex.com/builds/submitted/10125312/test_suites_x86_64_coverage/latest/view/logs/build_error.log?legacy

```
packages/modules/DnsResolver/tests/resolv_test_utils.cpp:69:40: error: implicit conversion from nullable pointer 'char * _Nullable' to non-nullable pointer type 'const void * _Nonnull' [-Werror,-Wnullable-to-nonnull-conversion]
if (!inet_ntop(he->h_addrtype, he->h_addr_list[i], host, sizeof(host))) {
```
For 
```
 const char* _Nullable inet_ntop(int __af, const void* _Nonnull __src, char* _Nonnull __dst, socklen_t __size);
```

`he->h_addr_list[i]` is not allowed to be null but `h_addr_list` is allowed to be null in the struct:

```
struct hostent {
        char    * _Nullable h_name;     /* official name of host */
        char    * _Nullable * _Nullable h_aliases;      /* alias list */
        int     h_addrtype;     /* host address type */
        int     h_length;       /* length of address */
        char    * _Nullable * _Nullable h_addr_list;    /* list of addresses from name server */
#define h_addr  h_addr_list[0]  /* address, for backward compatibility */
};
```

But the whole code is 
```
while (he->h_addr_list[i] != nullptr) {
     char host[INET6_ADDRSTRLEN];
 if (!inet_ntop(he->h_addrtype, he->h_addr_list[i], host, sizeof(host))) {
```

We think the compiler should know `he->h_addr_list[i]` is checked before. 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVk-P4rgT_TTmUgIFBxJy4ADNIP30W_Wht6WW5hI5TiXxYFyR7cD0fPqVzZ-GXnpW2suiKHGqXM-vnqtihHOqNYhLNl-z-WYkBt-RXX5XPwbzvRP09PT_UUX1-7LzvncsXTG-ZXwrTG1J1eNqULqetEStxl7jz4mkPePbaHaMb91Q7ZX3WDO-nSZTPk-nnPGtR-dLNyiPrvy5yMpsVko6oBUtMr7VIvgZ3x4UHsM7te4CWqK1ZCeaWpZuNbZCvrNkw5LV-Z4l5yu-9kLuRIshek_1oONoY9wLOtIHtGcqwWqjqYzMBq-0m8i-Z-kqK1i6miUsXUFcOgzUvtdKKg-SzAGtU2SgsbQHM2gtKo3QkzIeLTCey06E5wrK57OX8Rw8gSEz_luAf-8xRpFxHg6k6nMsmTA3hLL5evx24sKfxm8XiLGnsTnNGn_wYvPNSQrVAOMLxqfKoC-Np57xRYdjln7rSlHXNqzM-BPc2kqtnGfztQowwUdhX57AqV9ITQCIhuJ0AcvXD7dhSxYeOuCUZpDoTiG4JamMh7IUTVj4Q5ZbVaAsnZXRf0W6euozZZI7jaYMWIF-oJw-pns1filFloByYMiD0JqOWIf9rDDuP1SDhxB8E3aa_2CuMuA7BOftIH3orq9r-TQnbgEaf6N1UsSsk-Jewq40Yo8xxyI27QqoaZRUQkPwADURLNRX8P8W7DO00Eo4dHfo0QYh38-QyniWFDdldhsWOQQPOncp_4fRGk3ru7vYkylkcgH4V8lc9-kOOyTygYzu3OJBOof2ELv7ZjGe1tgog9dMr4NL6SSxGa9ynXBDbTZkoRJydxS2Bkn7XnhVKa38-_0S-eb3JbsefCynY0caQVKNoeweBhw7FZVYfFXjwPiUpZtYpr23d-0N4Re_a7H_5-v_PX97zcrVZvPy5-vLH9-eQ6IXpvBffnlO9zcE3ymzi-IEfZVGC66jQdewM3SEf2522aHcYQ0VNmRxAqN6mdZFWogRLqfZYjYtkmKWj7qlTHg9Xch5kcpCVHlSzWZpJnnTpDNRNFKM1JInPE3m0znnsyLJJ0mVpSJZ5CLHbMpFzmYJ7oXSE60P-wnZdqScG3CZ8ZzPRlpUqF08rzk3eIToZJyH49suQ8y4GlrHZknIwn2geOU1Ll9vNVAOBhPbwBNYlNQa9QvhfI7AQVgVvaPB6k9_AVrlu6E6H_hhjfNj3Fv6gTKc35FZOFwj878CAAD__1cYmSU">