This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCHv3, resent] Add a warning for suspicious use of conditional expressions in boolean context
On Tue, Sep 20, 2016 at 10:11 AM, Bernd Edlinger
<bernd.edlinger@hotmail.de> wrote:
> On 09/20/16 13:29, Kyrill Tkachov wrote:
>>
>> arm bootstrap is now failing:
>> $SRC/gcc/config/arm/arm.h:2229:40: error: ?: using integer constants in
>> boolean context [-Werror=int-in-bool-context]
>> : (TARGET_VFP_DOUBLE ? (TARGET_FP16 ? 14 : 12) : 0)) \
>> ~~~~~~~~~~~~~^~~~~~~~~~
>> $SRC/gcc/config/arm/arm-c.c:133:7: note: in expansion of macro
>> 'TARGET_ARM_FP'
>> if (TARGET_ARM_FP)
>>
>>
>> The full definition of TARGET_ARM_FP is:
>> #define TARGET_ARM_FP \
>> (!TARGET_SOFT_FLOAT ? (TARGET_VFP_SINGLE ? 4 \
>> : (TARGET_VFP_DOUBLE ? (TARGET_FP16 ? 14 : 12) : 0)) \
>> : 0)
>>
>> We want it set to 0 when there's no FP but when FP is available we set
>> it to a bitmask
>> to suggest the level that is available. That seems like a legitimate use
>> to me.
>>
>
> Ok, I see, sorry for that.
>
> I think I will have to suppress the warning if the conditional is in
> a macro somehow.
from_macro_expansion_at will help with that.
Though it seems to me that the issue here is more that (TARGET_FP16 ?
14 : 12) is not in a boolean context, it's in an integer context; only
the outer ?: is in a boolean context.
I also still think the warning message should be changed.
Jason