[Bug tree-optimization/56145] [4.8/4.9 Regression] Use of too much optimizations -O2 -ffast-math -floop-parallelize-all
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Oct 25 12:30:00 GMT 2013
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?
More information about the Gcc-bugs
mailing list