On Wed, Sep 2, 2015 at 2:51 PM, Ilya Enkovich <enkovich....@gmail.com> wrote:
> 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?.

The type verifier Honza added recently I guess.

Richard.

> 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