On 7/9/20 3:45 AM, Jonny Grant wrote:
Hello! There is an example below, (my code is not like this example below). I'm reporting a possible issue, and asking if there is a way to detect it in code bases. If it's a real issue I can file a bug report on Bugzilla. Can gcc warn where code will not get to the 'return 3;' below?
-Wduplicated-branches detects a related problem. It's implemented entirely in the front end and quite simplistic. It just looks at the chain of expressions controlling the if statements and compares them for equality. I think it could be enhanced with not too much effort to detect a subset of this problem as well by considering the operator as well as its operands. Here's the function that does the checking and issues the warning: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/c-family/c-warn.c#l2491 Martin
Cheers, Jonny int main(void) { const int i = 1; if(1 == i) { return 1; } else if(1 != i) { return 2; } else { return 3; } }