http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56145
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|x86_64-w64-mingw32 | Priority|P3 |P2 CC| |grosser at gcc dot gnu.org --- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- Reduced testcase, fails on trunk and the 4.8 branch: struct frame { int stereo; }; struct gr_info_s { unsigned part2_3_length; }; struct III_sideinfo { unsigned main_data_begin; struct { struct gr_info_s gr[2]; } ch[2]; }; typedef struct mpstr_tag { struct frame fr; struct III_sideinfo sideinfo; } MPSTR, *PMPSTR; int decode_layer3_sideinfo(PMPSTR mp) { struct frame *fr = &mp->fr; int stereo = fr->stereo; int granules; int ch, gr, databits = 0; for (gr = 0; gr < granules; ++gr) { for (ch = 0; ch < stereo; ++ch) { struct gr_info_s *gr_infos = &(mp->sideinfo.ch[ch].gr[gr]); databits += gr_infos->part2_3_length; } } return databits - 8 * mp->sideinfo.main_data_begin; } Program received signal SIGSEGV, Segmentation fault. 0x000000000120c3b5 in subtract_commutative_associative_deps (scop=0x1de6ec0, pbbs=..., original=0x1e22200, must_raw=0x7fffffffd5f8, may_raw=0x7fffffffd5f0, must_raw_no_source=0x0, may_raw_no_source=0x0, must_war=0x7fffffffd5e8, may_war=0x7fffffffd5e0, must_war_no_source=0x0, may_war_no_source=0x0, must_waw=0x7fffffffd5d8, may_waw=0x7fffffffd5d0, must_waw_no_source=0x0, may_waw_no_source=0x0) at /space/rguenther/src/svn/trunk/gcc/graphite-dependences.c:424 424 x_must_raw_no_source); (gdb) l 419 gcc_assert (res == 0); 420 421 *must_raw = isl_union_map_subtract (*must_raw, x_must_raw); 422 *may_raw = isl_union_map_subtract (*may_raw, x_may_raw); 423 *must_raw_no_source = isl_union_map_subtract (*must_raw_no_source, 424 x_must_raw_no_source); 425 *may_raw_no_source = isl_union_map_subtract (*may_raw_no_source, 426 x_may_raw_no_source); 427 *must_war = isl_union_map_subtract (*must_war, x_must_war); 428 *may_war = isl_union_map_subtract (*may_war, x_may_war); (gdb) p must_raw_no_source $2 = (isl_union_map **) 0x0 which means that res = isl_union_map_compute_flow (isl_union_map_copy (r), isl_union_map_copy (must_w), isl_union_map_copy (may_w), isl_union_map_copy (original), &x_must_raw, &x_may_raw, &x_must_raw_no_source, &x_may_raw_no_source); gcc_assert (res == 0); doesn't compute it but returns no error either. Tobias? maybe that's valid and we simply should not do anything with that set then?