https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88180

            Bug ID: 88180
           Summary: ICE in vec<tree_node*, va_gc,
                    vl_embed>::quick_push(tree_node* const&)
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---

g++-9.0.0-alpha20181118 snapshot (r266255) ICEs when compiling
gcc/testsuite/g++.dg/pr85039-2.C w/ --param ggc-min-heapsize=1024:

% g++-9.0.0-alpha20181118 --param ggc-min-heapsize=1024 -c
gcc/testsuite/g++.dg/pr85039-2.C
gcc/testsuite/g++.dg/pr85039-2.C:5:36: error: types may not be defined within
__builtin_offsetof
    5 | } * d::b(__builtin_offsetof(struct { // { dg-error "types may not be
defined" }
      |                                    ^
gcc/testsuite/g++.dg/pr85039-2.C:7:12: error: types may not be defined within
__builtin_offsetof
    7 |   struct a { // { dg-error "types may not be defined" }
      |            ^
gcc/testsuite/g++.dg/pr85039-2.C:10:5: internal compiler error: Segmentation
fault
   10 | }, i));
      |     ^
0xefd97f crash_signal
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/toplev.c:325
0x924bec vec<tree_node*, va_gc, vl_embed>::quick_push(tree_node* const&)
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/vec.h:978
0x924bec tree_node** vec_safe_push<tree_node*, va_gc>(vec<tree_node*, va_gc,
vl_embed>*&, tree_node* const&)
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/vec.h:770
0x924bec cp_parser_parenthesized_expression_list
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/cp/parser.c:7840
0x925a0c cp_parser_initializer
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/cp/parser.c:22209
0x94b1e5 cp_parser_init_declarator
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/cp/parser.c:20028
0x92db0f cp_parser_simple_declaration
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/cp/parser.c:13269
0x952099 cp_parser_declaration
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/cp/parser.c:12966
0x952820 cp_parser_translation_unit
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/cp/parser.c:4672
0x952820 c_parse_file()
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/cp/parser.c:40540
0xa5c4ab c_common_parse_file()
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/c-family/c-opts.c:1151

==7759== Invalid write of size 8
==7759==    at 0x924BEC: quick_push (vec.h:978)
==7759==    by 0x924BEC: vec_safe_push<tree_node*, va_gc> (vec.h:770)
==7759==    by 0x924BEC: cp_parser_parenthesized_expression_list(cp_parser*,
int, bool, bool, bool*, unsigned int*, bool) (parser.c:7840)
==7759==    by 0x925A0C: cp_parser_initializer(cp_parser*, bool*, bool*, bool)
(parser.c:22209)
==7759==    by 0x94B1E5: cp_parser_init_declarator(cp_parser*,
cp_decl_specifier_seq*, vec<deferred_access_check, va_gc, vl_embed>*, bool,
bool, int, bool*, tree_node**, unsigned int*, tree_node**) (parser.c:20028)
==7759==    by 0x92DB0F: cp_parser_simple_declaration(cp_parser*, bool,
tree_node**) (parser.c:13269)
==7759==    by 0x952099: cp_parser_declaration(cp_parser*) (parser.c:12966)
==7759==    by 0x952820: cp_parser_translation_unit (parser.c:4672)
==7759==    by 0x952820: c_parse_file() (parser.c:40540)
==7759==    by 0xA5C4AB: c_common_parse_file() (c-opts.c:1151)
==7759==    by 0xEFD9FD: compile_file() (toplev.c:455)
==7759==    by 0x815608: do_compile (toplev.c:2172)
==7759==    by 0x815608: toplev::main(int, char**) (toplev.c:2307)
==7759==    by 0x818C5A: main (main.c:39)
==7759==  Address 0x532cd7fb0 is not stack'd, malloc'd or (recently) free'd

Reply via email to