Message ID | CABGF_gcBMpPKAHqbN53mVcKvAv32oETnu69nX8rvZjjCViVf3Q@mail.gmail.com |
---|---|
State | New |
Headers | show |
On 26/07/2014 10:59, Roman Gareev wrote: > If I'm not mistaken, the reason of this bug is incorrect creation of a > poly_bb_p for basic_block from the existing pbb in new_pbb_from_pbb > (It is located in graphite-sese-to-poly.c). I think, that we should > set a new id of pbb1->domain (instead of using the id of the pbb), > which contains pointer to the pbb1. > > I found out this after dumping of an index of pbb in the user > statement S_3. Its index is 9. It is created in > rewrite_reduction_out_of_ssa using new_pbb_from_pbb and the pbb with > index 3. After that the user statement S_3 is removed in > build_scop_drs, but the id of the pbb->domain and the > pbb->transformed point to the old pbb with index 3. Interesting. I was not even aware that we did statement splitting for reductions. Very nice analysis. > I've attached the patch, which may fix this. > > -- > Cheers, Roman Gareev. > > > patch.txt > > > Index: gcc/graphite-sese-to-poly.c > =================================================================== > --- gcc/graphite-sese-to-poly.c (revision 212995) > +++ gcc/graphite-sese-to-poly.c (working copy) > @@ -2044,6 +2044,10 @@ > break; > > pbb1->domain = isl_set_copy (pbb->domain); > + char name[50]; > + snprintf (name, sizeof (name), "S_%d", pbb_index (pbb1)); > + pbb1->domain = isl_set_set_tuple_id (pbb1->domain, > + isl_id_alloc (scop->ctx, name, pbb1)); Any reason you don't use isl_id_for_pbb() to create this isl_id? Otherwise, the patch looks good to me. You can commit it if the graphite tests still pass and you add an appropriate ChangeLog entry. Cheers, Tobias
Index: gcc/graphite-sese-to-poly.c =================================================================== --- gcc/graphite-sese-to-poly.c (revision 212995) +++ gcc/graphite-sese-to-poly.c (working copy) @@ -2044,6 +2044,10 @@ break; pbb1->domain = isl_set_copy (pbb->domain); + char name[50]; + snprintf (name, sizeof (name), "S_%d", pbb_index (pbb1)); + pbb1->domain = isl_set_set_tuple_id (pbb1->domain, + isl_id_alloc (scop->ctx, name, pbb1)); GBB_PBB (gbb1) = pbb1; GBB_CONDITIONS (gbb1) = GBB_CONDITIONS (gbb).copy ();