2015-09-02 15:35 GMT+03:00 Richard Biener <richard.guent...@gmail.com>:
> On Tue, Sep 1, 2015 at 5:03 PM, Ilya Enkovich <enkovich....@gmail.com> wrote:
>> Hi,
>>
>> This fixes an ICE by adding a NULL check.  Bootstrapped and regtested for 
>> x86_64-unknown-linux-gnu.  Applied to trunk.  Does this need to be ported to 
>> gcc-5-branch?
>>
>> Thanks,
>> Ilya
>> --
>> gcc/
>>
>> 2015-09-01  Ilya Enkovich  <enkovich....@gmail.com>
>>
>>         PR target/67405
>>         * tree-chkp.c (chkp_find_bound_slots_1): Add NULL check.
>>
>> gcc/testsuite/
>>
>> 2015-09-01  Ilya Enkovich  <enkovich....@gmail.com>
>>
>>         PR target/67405
>>         * g++.dg/pr67405.C: New test.
>>
>>
>> diff --git a/gcc/testsuite/g++.dg/pr67405.C b/gcc/testsuite/g++.dg/pr67405.C
>> new file mode 100644
>> index 0000000..5055921
>> --- /dev/null
>> +++ b/gcc/testsuite/g++.dg/pr67405.C
>> @@ -0,0 +1,11 @@
>> +// { dg-do compile }
>> +
>> +struct S
>> +{
>> +  S f; // { dg-error "incomplete type" }
>> +};
>> +
>> +void
>> +fn1 (S p1)
>> +{
>> +}
>> diff --git a/gcc/tree-chkp.c b/gcc/tree-chkp.c
>> index 8c1b48c..2489abb 100644
>> --- a/gcc/tree-chkp.c
>> +++ b/gcc/tree-chkp.c
>> @@ -1667,8 +1667,9 @@ chkp_find_bound_slots_1 (const_tree type, bitmap 
>> have_bound,
>>        for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
>>         if (TREE_CODE (field) == FIELD_DECL)
>>           {
>> -           HOST_WIDE_INT field_offs
>> -             = TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (field));
>> +           HOST_WIDE_INT field_offs = 0;
>> +           if (DECL_FIELD_BIT_OFFSET (field))
>
> DECL_FIELD_BIT_OFFSET should be never NULL.  Whoever created that
> FIELD_DECL created an invalid one.

I'll check where this decl comes from. Is there a proper checker to
add a NULL test for DECL_FIELD_BIT_OFFSET BTW?.

Thanks,
Ilya

>
> Richard.
>
>> +             field_offs += TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (field));
>>             if (DECL_FIELD_OFFSET (field))
>>               field_offs += TREE_INT_CST_LOW (DECL_FIELD_OFFSET (field)) * 8;
>>             chkp_find_bound_slots_1 (TREE_TYPE (field), have_bound,

Reply via email to