2017-04-04 18:34 GMT+03:00 Jeff Law <l...@redhat.com>:
> On 04/04/2017 09:07 AM, Alexander Ivchenko wrote:
>>
>> Hi,
>>
>> When creating static bounds for foo below we end up with:
>>
>> *((unsigned long *) &__chkp_bounds_of_foo + 8) =
>> ~(__builtin_ia32_sizeof (foo) + ((long unsigned int) &foo +
>> 18446744073709551615));
>>
>> This fails in gimplify_function_tree with gcc_assert (!VOID_TYPE_P
>> (TREE_TYPE (*expr_p)));
>>
>> Is it OK?
>>
>> gcc/ChangeLog:
>>
>> 2017-04-04  Alexander Ivchenko  <aivch...@gmail.com>
>>
>>         * tree-chkp.c (chkp_get_bounds_for_decl_addr):
>> assigning zero bounds to void variables
>>
>>
>> gcc/testsuite/ChangeLog:
>>
>> 2017-04-04  Alexander Ivchenko  <aivch...@gmail.com>
>>
>>         * gcc.target/i386/mpx/PR79987.c: New test.
>
> I've put this (and other CHKP fixes) in the queue for gcc-8 as AFAICT it's
> not a regression.
>
> Jeff
>

Hi,

If we delay it for GCC8 anyway then I think we may fix it in a better way. If we
cannot detect size of a variable then size relocations may be used. It is done
already for arrays with unknown size and also can be done for void vars.

Thanks,
Ilya

Reply via email to