Re: [PATCH 0/5] Remove a few hurdles of compiling with clang

Simon Marchi
2017-06-13T17:07:29Z

On 2017-06-13 16:38, Eli Zaretskii wrote:
> Let's not forget that code submitted by someone who is willing to do
> the work stays in GDB even when that someone is no longer willing to
> support that compiler. So there are additional factors to consider
> when making this decision.

Indeed. As Pedro said, we shouldn't do the same kind of efforts for
$OBSCURE_COMPILER than to support a widely used one (like Clang).

>
>> /home/emaisin/src/binutils-gdb/gdb/nat/x86-dregs.c:209:7: error:
>> variable 'i' is incremented both in the loop header and in the loop
>> body [-Werror,-Wfor-loop-analysis]
>> i++;
>> ^
>> /home/emaisin/src/binutils-gdb/gdb/nat/x86-dregs.c:199:32: note:
>> incremented here
>> ALL_DEBUG_ADDRESS_REGISTERS (i)
>> ^
>
> Why is incrementing a loop variable in the body an error? It's
> perfectly valid code.

It's an error only because we use -Werror for development, otherwise it
would be a warning. Warnings are meant to point out valid code that may
not be very good, or a common mistake, or a probable source of bugs.

>> I think
>> that eliminating the error like this is better than adding
>> -Wno-for-loop-analysis, because
>> if I wrote code like this and it was actually a mistake, I would like
>> the compiler to tell
>> me.
>
> Does clang have the equivalent of "#pragma push"? If it does, we
> could disable this warning only for clang and only for that code
> snippet.

That's indeed a solution, but I'd keep that for the cases where we can't
find an elegant solution that pleases both GCC and Clang.