https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93352
Bug ID: 93352 Summary: ICE: qsort checking failed (error: qsort comparator not anti-symmetric: -2147483648, -2147483648) Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: analyzer Assignee: dmalcolm at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-10.0.0-alpha20200119 snapshot (g:3684bbb022cd75da55e1457673f269980aa12cdf) ICEs when compiling the following testcase, reduced from gcc/testsuite/c-c++-common/Warray-bounds.c, w/ -fanalyzer: struct yc { int c0; char di[]; }; void qt (struct yc *ab) { ab->di[0x7fffffff + 1] = ab->di[0]; } % gcc-10.0.0-alpha20200119 -fanalyzer -w -c xperohg3.c xperohg3.c: In function 'qt': xperohg3.c:9:34: error: qsort comparator not anti-symmetric: -2147483648, -2147483648 9 | ab->di[0x7fffffff + 1] = ab->di[0]; | ~~~~~~^~~ during IPA pass: analyzer xperohg3.c:9:34: internal compiler error: qsort checking failed 0x78eb47 qsort_chk_error /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/vec.c:214 0x78ec50 qsort_chk(void*, unsigned long, unsigned long, int (*)(void const*, void const*, void*), void*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/vec.c:258 0x1809d38 gcc_qsort(void*, unsigned long, unsigned long, int (*)(void const*, void const*)) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/sort.cc:270 0x10febc0 vec<int, va_heap, vl_embed>::qsort(int (*)(void const*, void const*)) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/vec.h:1125 0x10febc0 vec<int, va_heap, vl_ptr>::qsort(int (*)(void const*, void const*)) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/vec.h:1997 0x10febc0 array_region::walk_for_canonicalization(canonicalization*) const /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/region-model.cc:2415 0x10fb2f1 map_region::walk_for_canonicalization(canonicalization*) const /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/region-model.cc:1960 0x10fd62f region_model::canonicalize(region_model_context*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/region-model.cc:3767 0x10f24aa program_state::prune_for_point(exploded_graph&, program_point const&, state_change*) const /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/program-state.cc:861 0x10df257 exploded_graph::get_or_create_node(program_point const&, program_state const&, state_change*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/engine.cc:1839 0x10e21e9 exploded_graph::process_node(exploded_node*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/engine.cc:2450 0x10e29b2 exploded_graph::process_worklist() /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/engine.cc:2253 0x10e3039 impl_run_checkers(logger*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/engine.cc:3570 0x10e3ad3 run_checkers() /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/engine.cc:3624 0x10d9558 execute /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20200119/work/gcc-10-20200119/gcc/analyzer/analyzer-pass.cc:84