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

    <tr>
        <th>Summary</th>
        <td>
            Error on seemingly correct file that gcc accepts
        </td>
    </tr>

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

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

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

<pre>
    ```
#include <malloc.h>

struct S {
        int type;
};

int main(void) {
        struct S *s;
        switch (s->type) {
        case 0:
                struct S *t = malloc(100);
                free(t);
                return 0;
        }
}
```

Is this a correct C program? If so, clang (17.0.5 alpine linux) fails to compile it.

```
test.c:11:3: error: expected expression
   11 | struct S *t = malloc(100);
      | ^
```

gcc does compile it, but I'm not sure which one is right.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMU8uOpDoM_RqzsRqFpOjAgkV1PaRe3y9IBQO5HQhKTD_-fgT9qJoaaTQIGcvG5_gcJSYl109EDZRPUB4zs_AQYmN1ejHpZckuof1o4FF8veIIYg9Sucn6pSUEdRiN98HmA6jTV3uLieNiGf9D0E_f9dpNjPwxE6jvmj5e8y2uv4zGTSCr1-BakPVvCFdYuU83o3V6c2wHBFmlB1CnjeVu1ppEKEDtfyp3gIygjvgpCGRVCAGyviUBUXeRCGTFf3Yi8RKnleCmrI9XoZ_JnZdbfE7Ig0to0IYYyTIecI6hj2YEdcbnDlMAeUDrzdSvGgudi7xE42c3EXo3Le-r2s44n5AD2jDOzhM6zm957siZEucW1L4oQO0VqD1SjCFuyftMlqldk0gpuTB9DiFiUSDoA_67dbg96wyUp7_40FuLbaB0s_8q-7IwPoPUI06BMS2R8G1wdsAwEbqE0fUD51nbqLZWtcmoKbQoi0oXO5kNjRZ1UXWiLanUdtdR15VyVytVdobaTurMNVLInSgKJZUodzJvL6LQoiovlRRt-6hhJ2g0zufev455iH3mUlqo0ZXQMvPmQj5tN0jKid5wa4KU64WKzTrzcFn6BDvhXeJ0RWHHnprT6jmGCRPR6Kbef_wcg241gQfDuFpjrKWZU7ZE3wzMc1rPsjyDPPeOh-WS2zCCPK_wX5-HOYb_yTLI87ZUAnnelv4VAAD__6IBIdY">