Make sure, the command line setting for the "Unreachable code" warning is
checked in all cases before outputting such a warning. Fixes #2655.
This commit is contained in:
@@ -379,6 +379,18 @@ void PPWarning (const char* Format, ...)
|
||||
|
||||
|
||||
|
||||
void UnreachableCodeWarning (void)
|
||||
/* Print a warning about unreachable code at the current location if these
|
||||
** warnings are enabled.
|
||||
*/
|
||||
{
|
||||
if (IS_Get (&WarnUnreachableCode)) {
|
||||
Warning ("Unreachable code");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
IntStack* FindWarning (const char* Name)
|
||||
/* Search for a warning in the WarnMap table and return a pointer to the
|
||||
** intstack that holds its state. Return NULL if there is no such warning.
|
||||
|
||||
@@ -127,6 +127,11 @@ void LIWarning (errcat_t EC, LineInfo* LI, const char* Format, ...) attribute ((
|
||||
void PPWarning (const char* Format, ...) attribute ((format (printf, 1, 2)));
|
||||
/* Print a warning message. For use within the preprocessor */
|
||||
|
||||
void UnreachableCodeWarning (void);
|
||||
/* Print a warning about unreachable code at the current location if these
|
||||
** warnings are enabled.
|
||||
*/
|
||||
|
||||
IntStack* FindWarning (const char* Name);
|
||||
/* Search for a warning in the WarnMap table and return a pointer to the
|
||||
** intstack that holds its state. Return NULL if there is no such warning.
|
||||
|
||||
@@ -188,8 +188,8 @@ static int IfStatement (void)
|
||||
/* If the if expression was always true, the code in the else branch
|
||||
** is never executed. Output a warning if this is the case.
|
||||
*/
|
||||
if (TestResult == TESTEXPR_TRUE && IS_Get (&WarnUnreachableCode)) {
|
||||
Warning ("Unreachable code");
|
||||
if (TestResult == TESTEXPR_TRUE) {
|
||||
UnreachableCodeWarning ();
|
||||
}
|
||||
|
||||
/* Define the target for the first test */
|
||||
|
||||
@@ -76,7 +76,7 @@ unsigned Test (unsigned Label, int Invert)
|
||||
/* Constant rvalue */
|
||||
if (!Invert && Expr.IVal == 0) {
|
||||
g_jump (Label);
|
||||
Warning ("Unreachable code");
|
||||
UnreachableCodeWarning ();
|
||||
} else if (Invert && Expr.IVal != 0) {
|
||||
g_jump (Label);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user