Suggestion - new warning

David Brown david@westcontrol.com
Tue Sep 23 15:43:40 GMT 2025


On 23/09/2025 16:40, Yair Lenga via Gcc wrote:
> It’s a little bit of both (error and style). Gcc does warn about
> ‘set-and-not-used’, and similar, which are technically valid, but in
> many cases indication of wasted work. Same here - positioning the
> strlen inside the condition, can lead to lot of unnecessary work.
> 

It is a little different, I think.  Set and not used variables are not 
extra work at run-time - the compiler will optimise away the 
calculations.  But they are very likely to be the result of a mistake in 
the code.  So they are not really a style issue - the warning is 
primarily helping the developer spot their bugs.

In the case of strlen inside a for loop (or its controlling 
expressions), it is likely that the programmer wrote the code as they 
intended, and it is not a bug - it is more of a style issue or a lack of 
understanding on the programmer's part.

> Given pattern is easy to detect (I think) - suggesting putting it
> into the compiler. Static analysis code can go deeper - identify
> parts of loop body (and condition) that can be extracted from the
> loop and executed once.
> 

I agree with this.  A compiler is not a complete static analysis 
solution - that is beyond its scope.  But it can do quite a lot of 
static analysis, and it is a tool to aid developers as well as compile 
code.  So if a warning here can be added to gcc without too much work, 
then it will help developers - after all, C developers don't all use 
separate static analysis tools, but they do all use compilers! 
(Unfortunately, not all of them use the warnings that are available 
easily and freely from the compiler.  Maybe gcc should enable "-Wall 
-Wextra" by default, unless the option "-i-laugh-in-the-face-of-bugs" is 
active :-)




More information about the Gcc mailing list