From: Andrew Pinski Date: Mon, 12 Dec 2005 23:58:16 +0000 (+0000) Subject: re PR objc/25348 (ICE encoding zero sized struct array) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6b990f0dd703328b48acd7321ca19c114fcfef9f;p=gcc.git re PR objc/25348 (ICE encoding zero sized struct array) 2005-12-12 Andrew Pinski PR objc/25348 * objc-act.c (encode_array): Handle arrays to zero sized types. 2005-12-12 Andrew Pinski PR objc/25348 * objc.dg/encode-9.m: New test. From-SVN: r108432 --- diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index f2a6fd692ac..5f7951f82db 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,8 @@ +2005-12-12 Andrew Pinski + + PR objc/25348 + * objc-act.c (encode_array): Handle arrays to zero sized types. + 2005-12-07 Rafael Ávila de Espíndola * Make-lang.in (objc.all.build, objc.install-normal): Remove. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 817553a1eed..201a722c232 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -7920,9 +7920,12 @@ encode_array (tree type, int curtype, int format) return; } - sprintf (buffer, "[" HOST_WIDE_INT_PRINT_DEC, - (TREE_INT_CST_LOW (an_int_cst) - / TREE_INT_CST_LOW (TYPE_SIZE (array_of)))); + if (TREE_INT_CST_LOW (TYPE_SIZE (array_of)) == 0) + sprintf (buffer, "[" HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT)0); + else + sprintf (buffer, "[" HOST_WIDE_INT_PRINT_DEC, + TREE_INT_CST_LOW (an_int_cst) + / TREE_INT_CST_LOW (TYPE_SIZE (array_of))); obstack_grow (&util_obstack, buffer, strlen (buffer)); encode_type (array_of, curtype, format); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 208450acf88..8617accc364 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-12-12 Andrew Pinski + + PR objc/25348 + * objc.dg/encode-9.m: New test. + 2005-12-12 Kaveh R. Ghazi PR testsuite/20772 diff --git a/gcc/testsuite/objc.dg/encode-9.m b/gcc/testsuite/objc.dg/encode-9.m new file mode 100644 index 00000000000..3b005756f0f --- /dev/null +++ b/gcc/testsuite/objc.dg/encode-9.m @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-fgnu-runtime " } */ + +/* There was an ICE due to diving by zero in the objc front-end. */ + +struct f +{ + int i; + struct{} g[4]; + int tt; +}; + +char *e = @encode(struct f);