<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60701>60701</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
incorrect code coverage after call of noreturn function in ternary expression
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
coverage
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zmodem
</td>
</tr>
</table>
<pre>
Consider:
```
$ cat /tmp/a.c
#include <stdio.h>
#include <stdlib.h>
__attribute__((noreturn)) int foo(void) {
exit(1);
}
int main(int argc, char **argv) {
int x = argc ? 1 : foo();
printf("hi\n");
return 0;
}
$ build/bin/clang -fprofile-instr-generate -fcoverage-mapping /tmp/a.c && \
./a.out && \
build/bin/llvm-profdata merge default.profraw -o default.profdata && \
build/bin/llvm-cov show -instr-profile default.profdata -show-line-counts-or-regions a.out
hi
1| |#include <stdio.h>
2| |#include <stdlib.h>
3| |
4| 0|__attribute__((noreturn)) int foo(void) {
5| 0| exit(1);
6| 0|}
7| |
8| 1|int main(int argc, char **argv) {
9| 1| int x = argc ? 1 : foo();
^0
10| 0| printf("hi\n");
11| 1| return 0;
12| 1|}
```
Note that the execution count for the `printf` line is 0, even though it clearly executed.
The problem goes away when removing the `noreturn` attribute.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVcGSozgM_RpxUUEZk0A4cOhJJsc97b3LGAHeMnbKNunp_fotE5IOM9NTs7uplAuenvUkWxLCezUYogb2X2B_SsQcRuuavyfb0ZS0tntvjtZ41ZGD4gXYCdh9Ldn6v73yHUoREPg5TBfgZ5HJu6VQRuq5I4Ti6EOnbDZC8fUTq1bts3lZX19FCE61c6DXV-AH4AdjHYXZGeA18BqVCdhbC_xwtaqLCFRfbpuRvqkA_JBHarGCUJ2eBeL2SSgD_BAfhRsk8CPKUTgE_gL8RbjhunW7aH5DKE4LH6E4Y45QvKyBPMshXpwyoV9gPirYHw1wvqXcEkL2WZDxiNtZ6Q74uY2xnqUWZsC0vzjbK02pMj64dCBDTgTCtJf2Sk4MlE7iclFm2FwPAi-Blwj74z0ExGyx2Tn81LqV1_o6pVG7E0HgRG4g7KgXsw5ZhJ14w9RuoIX5m56lvaIf7Ruuea1Z_ugvjaxUK0OptLMJPrUudTQoazwuydx0RvWhl0N1xNsPquOvazSS-K_526qNrGK74YHvIs6gOv6_okbE_UOBLU8_q3MsN6RHRUWg-iTCwwOPh_SfWgOx3jj5d80C-6_s4Sln36X5G52Eeb6V_6G1ooFvOB_N9t1gW9Y_bCAMowgYRkL6RnIOyhpc6g176xYcSrZGVzKM9YjKI4vHRVcyGEY7DyOqgFKTcPp9dURd9qz150h4cbbVNOFgyaN4E-_4NpJBR5O9xj5e1R4FUzJ8VFOWdE3R1UUtEmrysir5oWAsT8amLEW-k4eyrku2k21f9V2_a7ud4GVe7PNdohrOeMF4XuQsZyzPClGX-7qsmGg5q_MedowmoXQWOzSzbkiU9zM1JatYnmjRkvbLt4TzZTgtV3OMb-skisD-lLhmafF2HjzsmFY--A-XQQVNjTLSOkcyoLQd4d0Bij6QQym0Rtvj_QSwn41crkQZDOSMcPF4L468V9Yks9PNGMLFx88YPwM_DyqMc5tJO60D52mi_UUyAD8vuXng5yW9fwIAAP__b1sLEQ">