Patch: Some potential warnings for C++ bootstrap
Kai Tietz
ktietz70@googlemail.com
Sat Nov 15 00:46:00 GMT 2014
2014-11-14 21:45 GMT+01:00 Jason Merrill <jason@redhat.com>:
> On 11/14/2014 03:41 PM, Kai Tietz wrote:
>>
>> - gcc_assert (val1->v.val_unsigned == DWARF2_ADDR_SIZE);
>> + gcc_assert (val1->v.val_unsigned
>> + == (unsigned HOST_WIDE_INT) DWARF2_ADDR_SIZE);
>
>
> These changes should not be necessary; the warning should check the folded
> versions of the operands so it can tell that the rhs is constant and
> non-negative.
>
> Jason
>
How so? DWARF2_ADDR_SIZE is a macro defined as '((POINTER_SIZE +
BITS_PER_UNIT - 1) / BITS_PER_UNIT'. This might be constant for some
targets, but eg for x86_64 it isn't. For this it is '(TARGET_X32 ? 32
: BITS_PER_WORD)'. So this comparison isn't constant, even if we can
detect here that all result-brances of the condition are constant and
bigger then zero.
I will take a look if I find code looking into condition-branches for
checking value-range of it ....
Kai
More information about the Gcc-patches
mailing list