<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">Hi all, </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">I have some questions about UnreachableCodeChecker.
It seems that UnreachableCodeChecker suppresses some dead code warnings coming from macros. </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">Given the below code sippet: </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">------------------------------------------------- </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 1 #include <stdio.h>
</span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 2 #define MACRO(cond) \ </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 3 if (cond) { printf("dead code\n");
} <---- dead code </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 4 </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 5 void foo() </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 6 { </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 7 MACRO(0) </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 8 } </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">------------------------------------------------- </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">It is reasonable to suppress the dead code
warning in the above code sample. But it is unreasonable to suppress some other dead code warnings. </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">For example: </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">------------------------------------------------- </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 1 #include <stdio.h>
</span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 2 #define MACRO(cond) \ </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 3 if (0) { printf("dead code\n"); }
<---- dead code </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 4 </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 5 void foo() </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 6 { </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 7 MACRO(0) </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;"> 8 } </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">------------------------------------------------- </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">No matter what 'cond' is, the 'printf' is
always unreachable. So I have the following two questions: </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">(1) What caused UnreachableCodeChecker to
be designed like that? </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">(2) If I want to make some improvements, what
kind of work should I do, for example, only suppress dead code warnings that depend on macro arguments and suppresses common patterns in macros like 'do {...} while (0)'.</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">Cheers, </span><br style="font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px;">
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13.44px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal;">Henry Wong</span><br>
</div>
</body>
</html>