<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - [LLVM-COV] Label in switch statement and dead code were wrongly marked as executed"
href="https://bugs.llvm.org/show_bug.cgi?id=49423">49423</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[LLVM-COV] Label in switch statement and dead code were wrongly marked as executed
</td>
</tr>
<tr>
<th>Product</th>
<td>Runtime Libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>11.0
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>libprofile library
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>cnwy1996@outlook.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>$ clang -v
clang version 11.0.0
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/wangyang/llvm-project/build/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
$ cat test.c
#include<stdio.h>
int *ptr;
struct a {
int c;
};
int main(int argc, char **argv) {
struct a e;
e.c = 2;
int x = 0;
for (;;)
switch (e.c)
case 3: {
printf("1");
int resxxx;
case 2:
ptr = &resxxx;
*ptr = 123;
if (x)
return 0;
else
x = 1;
}
printf("2");
return 1;
}
$ clang -w -O0 -g -fcoverage-mapping -fprofile-instr-generate=test.profraw
test.c; ./a.out; llvm-profdata merge test.profraw -o test.profdata; llvm-cov
show a.out -instr-profile=test.profdata test.c > test.lcov; cat test.lcov
1| |#include<stdio.h>
2| |int *ptr;
3| |struct a {
4| | int c;
5| |};
6| 1|int main(int argc, char **argv) {
7| 1| struct a e;
8| 1| e.c = 2;
9| 1| int x = 0;
10| 1| for (;;)
11| 2| switch (e.c)
12| 2| case 3: {
13| 0| printf("1");
14| 0| int resxxx;
15| 2| case 2:
16| 2| ptr = &resxxx;
17| 2| *ptr = 123;
18| 2| if (x)
19| 1| return 0;
20| 1| else
21| 1| x = 1;
22| 2| }
23| 1| printf("2");
24| 0| return 1;
25| 1|}
26| |
Line 12 and 23 were actually not executed.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>