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

            Bug ID: 103818
           Summary: ICE: in insert, at ipa-modref-tree.c:591
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: k.even-mendoza at imperial dot ac.uk
  Target Milestone: ---

The following code fails with -O1, -O2, -O3, and -Os in GCC-12, but works fine
with -O0: 

struct a {
  int b[0]
} c(struct a *d) {
  d->b[0] = d->b[-144115188075855873] + d->b[11] * d->b[2] +
            d->b[0] % d->b[1025] + d->b[5];
  d->b[0] =
      d->b[144678138029277184] + d->b[0] & d->b[-3] * d->b[053] + d->b[7] ^
      d->b[-9] + d->b[14] + d->b[9] % d->b[49] + d->b[024] + d->b[82] &
          d->b[4096];
}
void main() {}


It works fine with GCC-11. 

===
The trace in GCC-12 Version is:
/home/user42/data/gcc-csmith-1223/gcc-install/bin/gcc -O2 fuzzer-file-14593.c
fuzzer-file-14593.c:3:1: warning: no semicolon at end of struct or union
    3 | } c(struct a *d) {
      | ^
during GIMPLE pass: modref
fuzzer-file-14593.c: In function ā€˜cā€™:
fuzzer-file-14593.c:11:1: internal compiler error: in insert, at
ipa-modref-tree.c:591
   11 | void main() {}
      | ^~~~
0x73439f modref_access_node::insert(vec<modref_access_node, va_gc, vl_embed>*&,
modref_access_node, unsigned long, bool)
        .././../gcc-source/gcc/ipa-modref-tree.c:591
0xcc201a modref_ref_node<int>::insert_access(modref_access_node, unsigned long,
bool)
        .././../gcc-source/gcc/ipa-modref-tree.h:194
0xcc201a modref_tree<int>::insert(unsigned int, unsigned int, unsigned int,
int, int, modref_access_node, bool)
        .././../gcc-source/gcc/ipa-modref-tree.h:445
0xcb303c modref_tree<int>::insert(tree_node*, int, int, modref_access_node
const&, bool)
        .././../gcc-source/gcc/ipa-modref-tree.h:472
0xcb303c record_access
        .././../gcc-source/gcc/ipa-modref.c:1076
0xcb3968 analyze_load
        .././../gcc-source/gcc/ipa-modref.c:1707
0xc09dd1 walk_stmt_load_store_addr_ops(gimple*, void*, bool (*)(gimple*,
tree_node*, tree_node*, void*), bool (*)(gimple*, tree_node*, tree_node*,
void*), bool (*)(gimple*, tree_node*, tree_node*, void*))
        .././../gcc-source/gcc/gimple-walk.c:800
0xcbc7a1 analyze_stmt
        .././../gcc-source/gcc/ipa-modref.c:1788
0xcbc7a1 analyze
        .././../gcc-source/gcc/ipa-modref.c:1900
0xcbc7a1 analyze_function
        .././../gcc-source/gcc/ipa-modref.c:3219
0xcbec2a execute
        .././../gcc-source/gcc/ipa-modref.c:4186
Please submit a full bug report,
===

I tested it with gcc (GCC) 12.0.0 20211023 (experimental), gcc (GCC) 12.0.0
20211216 (experimental), and gcc (GCC) 12.0.0 20211223 (experimental) (current
version: commit ef26c151c14a87177d46fd3d725e7f82e040e89f) checking the fix of
bugs 102687 and 103073 there.

Reply via email to