<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJytVktv4zYQ_jXyhbCgh-XHwYesvS720h4aIMeAkkYSC4py-XCS_vp-pOy14o2zBbqGQImc4Ty-bzh0OdRv20cyllXcUJQ_RMk-Sh6iZXJ-xmmWC1VJVxOL8p2xtRjiLsq_3pFKUU7FYTwNomaVM3bon3k5aBtl6yjbRKsvo5zhd9RC2SYIsh2Xkm53ZH5HPtlBr8IbSqfr0Wo_dQyTrOdCQc1_ct1WUbZjVcd1lCH2B6ycbiPxmmbo6fnEpaN3Lj_IYSqOsgMe9tgJw6oBkODtlCYOh6Wkj5OdunqAiUJExU6FfHfTOG58abJOK5bcS_2WxTD-4ezR2ftML1gluWrZ_AkMMIvSiCs2CscJtqYZhtwP7IVrJVTrP09cC58jElhNg16NGAglrOBS_ANaXzpSzBl8daSxofgyf3qnERX7XwrVJ7-o-Bqt7j83mSd-2HjfarAhhmvUzHb0CQp2YEZIUpVXBCQX6P5L1f0Y8r3UonzPzmSmFxesJUWaW6rjn9dHg7p1Gs0AgNqO21ADoT14HluUspVvbDiRNqI_StEI0BV0ifUD2MQqzgZHMmB4ftkYKH8hGFc1ABsUyuuNhWMUth710GreAwRjiddsaK7I-hRA__zJo2NFT2b-vlqyTczY7yDkHDHsXVKHazB1RYCJhiHl8fwuEzZoPw2NBDN_asfOUwtNlc9UqGAP0tBGoNQ4VfkMprFi_ePOsEwQ2rcm2FBA0je1cLKGaxijMngAjJdgpmtkqziOQ3BX9LyA15cZ4xjeDFR6_sZKQnP42yGF2juqyZLuhSKfvA8EPc_1pKyBpgfpyI0ZVb30e34vAoFqMk7aCwwh9rHx-I1AD-h-WlXXjnIaV8ZZqB_4SPM4iRNP74HqQfPzwjyPmyovPAZh0yNCJt-22Ot6-bxczJEaqJ5LodzrvFXurNZpT0iPziu98nEw4nUUfQNZgdq90GPvODiDO-BQgtWgcRic8uwA4hqlwn7b7QLF2MU9Hj_syg5xjAH3Hca2wsVy-CA6rKbp6OFPkigqIP3rTe--h92DLuE3wmbsS3CR9MvFZ1q-lQc1fLyP8zNb34me1du83uQbPuPOdoPeIi_dwgl3-Kcwc1puO2uPxl864Xpshe1cGVdD71OUp8trjibwFxxjKoxxZPBRZKv1ctZtq3KzWWU1JVVdNzzJknpdpasmXS_XNV_nxUzykqTZ4i7BbaDohQUT_mYo9rP_H4HYZkmWplm6TrIiTRfxukqaRbmmJMlWlHECNIQOIWNvJx50O9PbYLJ0rYFQCmPNVYgTJ1pFFAJGhFZYGSa3NyGO-f3GV-xZwyU6rC90K07EcKQmbcaMDTEcZEU4c-ezOwvZbUNq_wK1PQ2Z>52786</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [-Wuninitialized, -Wsometimes-uninitialized] false positive on nested calls that will never return
        </td>
    </tr>

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

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

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

<pre>
    Test case:
```
#include <stdio.h>
#include <stdlib.h>

void custom_abort(){
    printf("Called custom_abort");
    exit(1);
}

int main(int argc, char**argv){
    int some_value;
    custom_abort();
    // This code is unreachable
    printf("some_value: %i\n", some_value);
    return 0;
}

```

Output:
```
$ clang -Wall test.c 
test.c:12:32: warning: variable 'some_value' is uninitialized when used here [-Wuninitialized]
    printf("some_value: %i\n", some_value);
                               ^~~~~~~~~~
test.c:10:19: note: initialize the variable 'some_value' to silence this warning
    int some_value;
                  ^
                   = 0
1 warning generated.

```

Of course, that test case is greatly oversimplified, the more important use-case is when we conditionally abort the program instead of initializing (-Wsometimes-uninitialized).  Note that the warning is not generated if `abort` or `exit` is called directly in the `main` function instead of `custom_abort();`.  If the nested call to `abort()`, `exit()`, etc... is conditional, additional analysis may be required to determine if the arguments being passed to the function will result in the call returning or not.

```
$ clang -v
clang version 13.0.0 (Fedora 13.0.0-3.fc35)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/11
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVsly4zYQ_RrqghKLm7aDDh5plJpLcoirfHSBZJNECgQVLLKdr88DKFm0xnJyGBULJNALut9rNFQO9dv2kYxlFTcU5Q9Rso-Sh2iZnJ9xmuVCVdLVxKJ8Z2wthriL8u93pFKUU3EYT4OoWeWMHfpnXg7aRtk6yjbR6tsoZ_gdtVC2CYJsx6WkW4vMW-QTC3oV3lE6XY9W--nGcMl6LhTU_CfXbRVlO1Z1XEcZYn_Ayuk2Eq9php6eT1w6-rDlJzlMxVF2wMMeO2FYNQASvJ3SxLFhKenzZKdbPcDFQkSLnQr57qZx3OylyTqtWHIv9VsWw_iHs0dn7zNdsEpy1bL5ExhgFqURV2wUjhOYphmG3A_shWslVOs_T1wLnyMSWE2DXo0YCCWs4FL8A1pfOlLMGXx1pGGw-DZ_-qARLfa_FKovftHie7S6_9xknvhh4_dWgw0xXKNmtqMvULADM0KSqrwiILlA93-q7ueQ76UW5Xt2JjO9bMFaUqS5pTr-7_poULdOoxkAUNtxG2ogtAfPY4tStvKNDSfSRvRHKRoBuoIusX4Am1jF2eBIBgzPL4aB8heCc1UDsEGhvN5YOEbB9KiHVvMeIBhLvGZDc0XWpwD6508eHSt6MvOP1ZJtYsZ-ByHniOHvkjq2BlNXBJhoGFIez-8yYYP209BIMPOnduw8tdBU-UyFCv4gDW0ESo1Tlc9gGivWP-8MywSh_WiCDwUkfVMLJ2u4hjEqgwfAeAlmuka2iuM4BHdFzwt4fZkxjuHNQKXnb6wkNIe_HVKo_UY1WdK9UOST94Gg57melDXQ9CAduTGjqpe-5_ciEKgm46S9wBBiHxuPNwR6QPfLqrp2lNO4Ms5C_WCPNI-TOPH0HqgeND8vzPO4qfKFxyAYPSJk8m2Lva6Xz8tijtRA9VwK5V7nrXJntU57Qnp0XumVj4MRr6PoB8gK1O6FHnvHwRncAYcSrAaNw-CUZwcQ1ygV9ttuFyiGFfd4_GSVHeIYA-47jG2Fi-XwSXRYTdNxhz9JoqiA9K93vXsPuwddwhvCZ-xLsEj6ZfGVlm_lQQ0fH-P8ytc70bN6m9ebfMNnVlhJ20_aOWr1_uld7FnDJdqEZ8uKEzHUxeSsmPFUh2pUhMI5F-DMabntrD0af52Fi7cVtnNlXA29B0-eLq852stfSAlTYYwjg49FtlovZ922Lppi09CqXtA6LdIi2xQpL9O6ypqC6lU5k7wkaXxauGcUvbDgwt85i_1MbLMkS9MsXSfZIk2LeF0lTVGuKUmyFWWcABmhc8jYxxEPup3pbQipdK2BUApjzVWIkyhaRQFF75872w16i1LRLXjjDn--ZiGAbUjgX67B-A8">