<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>