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

            Bug ID: 87830
           Summary: [9 Regression] ICE in cp_var_mod_type_p at
                    cp/cp-objcp-common.c:107 since r265638
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: marxin at gcc dot gnu.org
  Target Milestone: ---

Following code (isolated from Libreoffice) causes ICE:

$ cat ice.ii
template <typename a> void ap(a);
template <typename, typename> struct b { template <typename at> b(at); };
void av();
template <typename a, typename... ah> void aw(a, ah... ay) {
  auto az = [&] { ap(ay...); };
  (*(decltype(az) *)av)();
}
class e {
  void be();

public:
  template <typename bl, typename bm> void bn(b<bl, bm>) { aw(c, &e::be); }
  int c;
} d;
void bq() { d.bn(b<long, int>(1)); }

$ g++ -O -flto ice.ii -c
during GIMPLE pass: einline
ice.ii: In function ‘aw<int, void (e::*)()>(int, void (e::*)())void’:
ice.ii:6:24: internal compiler error: Segmentation fault
    6 |   (*(decltype(az) *)av)();
      |   ~~~~~~~~~~~~~~~~~~~~~^~
0xb8852f crash_signal
        ../../gcc/toplev.c:325
0x63228c cp_var_mod_type_p(tree_node*, tree_node*)
        ../../gcc/cp/cp-objcp-common.c:107
0xdc7a73 variably_modified_type_p(tree_node*, tree_node*)
        ../../gcc/tree.c:9065
0xdc7f0d variably_modified_type_p(tree_node*, tree_node*)
        ../../gcc/tree.c:9006
0xbede4c remap_type(tree_node*, copy_body_data*)
        ../../gcc/tree-inline.c:600
0xbf320c copy_tree_body_r(tree_node**, int*, void*)
        ../../gcc/tree-inline.c:1304
0xdc6f65 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
        ../../gcc/tree.c:11632
0xdc750e walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
        ../../gcc/tree.c:11950
0xbee1a6 remap_decls
        ../../gcc/tree-inline.c:683
0xbef021 remap_block
        ../../gcc/tree-inline.c:714
0xbef0f1 remap_blocks
        ../../gcc/tree-inline.c:736
0xbf5142 expand_call_inline
        ../../gcc/tree-inline.c:4605
0xbf6904 gimple_expand_calls_inline
        ../../gcc/tree-inline.c:4886
0xbf6904 optimize_inline_calls(tree_node*)
        ../../gcc/tree-inline.c:5026
0x12e08c1 early_inliner(function*)
        ../../gcc/ipa-inline.c:2797

Reply via email to