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. 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,