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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Unsafe pointers and C standard issues
        </td>
    </tr>

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

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

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

<pre>
    The following short code exploits **three** possible issues with warnings and errors:

``` lang-c
/// \file unsafe.c
// clang -std=c11 -Weverything unsafe.c -o unsafe.exe
#include <stddef.h>

static int  goo (int * pi, size_t a)
{
    return pi[a];
}

int  main (int argc, char *argv[])
{
 (void)argc;
    (void)argv;
    int     goz[4] = { 0, };
    
 return goo(goz, 0);
}
```

Compiling on Windows 11 pro x64, but with the standard x86 installer (released Clang/LLVM 16.0.6, "LLVM-16.0.6-win32.exe"):
```
 # clang --version
clang version 16.0.6
Target: i686-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files (x86)\LLVM\bin

 # clang -std=c11 -Weverything unsafe.c -o unsafe.exe
unsafe.c:5:24: warning: 'pi' is an unsafe pointer used for buffer access
 [-Wunsafe-buffer-usage]
static int  goo (int * pi, size_t a)
 ~~~~~~^~
unsafe.c:7:12: note: used in buffer access here
 return pi[a];
           ^~
unsafe.c:14:13: warning: mixing declarations and code is incompatible with
      standards before C99 [-Wdeclaration-after-statement]
    int     goz[4] = { 0, };
 ^
2 warnings generated.

```

1. Looks like I can't pass a generic pointer and do any arithmetics on it without the unsafe pointer warning (lines 5, 7): am I missing anything?
2. I requested C11 standard, but still receive C99 warning (line 14): does it make any sense?
3. Note that if I delete/comment the `#include` line there is no error/warning on `size_t` missing definition, compilation goes smooth


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVk-P27gO_zTKhXBgS7HjHHLInwYYoO_hHfq2x4Vi07a2spSV5EzaQz_7gpadSaZz2RqGLYgi-SP1IyXpvWoN4pble5YfF3IInXVbPVTprcgWZ1t_337pEBqrtX1VpgXfWRegsjUC3i7aquCB8R3ju9A5xDiEi_VenTWC8n5AD68qdPAqnVGm9SBNDeicdZ6JHUuPLJ2_RRpf0NK0STXN8lN8geWHRmmEwXjZ4PJJDhXpQOJDzcSxyjJIvuIV3ffQEe5ZBRI7j_GGswGhTKWHGoGJgw91jc2yY-LTIzYfZFAVKBMAWmuB8ZLGY7SK8QN49QP_DCAZ30x6630cAAA4DIMztDTfS5YfmdjPq46Pbkb7vVRmdiBdW5H5qpOOvEnXXuNufeCI8fJqVc34ZlQTDwCeRNcn0egTKKwfLN-vWH4EJo7A1ntIyTVBfDIVR1NIrbWMl6TLD7R-80Fo874-Rnqw_UVp2htr4KsytX31kGVwcRZuxYqsnYcQqRM6BB-kqaWr4VYWoIwPUmuklJQONUqPNRyIAoyfPn_-4z-QFct0WYz4OaeZJM4kr8oIPu4-5yPc9-y7J1PMpEqu6LyyJkri5DQ1-xklX6RrMTCxA1WURXKpyBkFlvT-OtH1S-dQ1tDbGjWtvFivblH0MkVVH5Uj0YGw5Yf_Ods62cNJaaRqK29lQcDzA4XF8sNZmcfMPiL_jXK4V5fY5Uzs-IqgTMVLQ8bXxPg1KCrlSR0uVpmADgbaiMY6OA9Ngw5kVaH3M7B8n3yNCkmUJ4OXLRKbf7PK4Of4sPzTz1_gr5nYZZwwGxuQ_iM6ZZ7BQYcOn0n9a53C2_Ohr4zSlIl3uerVjdJdY6Wlk0FZE9vf2ECVB2Uq219kGJslUf3R2cx4D2dsrEM4bDYxhQ_2EtkEdAklDns04Z7Kf13ZLJ8aHn9r1S0adDJgvfywTz9OZkv4bO03D1p9Q3iBShrG1wEu0nuQ0ZKq7jyhLNQWpPkO0qnQ9RhU5akXqFj0dghj3b_j1wSNmKGVQQ85BbKOhQyyhxfolfe0RJrIdiZOU2BLeAGHfw_oA7WLLLvneG43PiitwWGF6hoT_s4hZKvJV23RE9hefsMxDo_G492ZWMJ_bUAInQygGniBGjUGZPxU2Z62agyPsng_f8ajj5wEoiQRxNh4VDJ-moFYQ0qxEEhhDrfGRhlFnBjPi7G9jhSBlpD63tqZX_G7qLei3oiNXOA2K8qiFKssFYtuyzNRr-syLcocy2LDq6xcFVlTcLHZZKncLNSWp1ykRZZnIs3EZrlq-HnNs7OoqrQUWcpWKfZS6aXW135pXbsYbwLbQgheLLQ8o_bjpYNzg6_xmkDtOD8u3JZ0kvPQerZKtfLBv1kJKujxthJbfX6E_z_RI1bX4e2wiBeQxeD0tgvhMt44xvtCq0I3nJeV7Rk_kf3pl1yc_QurwPgp6jJ-GlH_EwAA__875MOX">