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