diff mbox

[GSoC] generation of Gimple code from isl_ast_node_if

Message ID CABGF_gcBMpPKAHqbN53mVcKvAv32oETnu69nX8rvZjjCViVf3Q@mail.gmail.com
State New
Headers show

Commit Message

Roman Gareev July 26, 2014, 8:59 a.m. UTC
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.

I've attached the patch, which may fix this.

--
                                   Cheers, Roman Gareev.

Comments

Tobias Grosser July 26, 2014, 9:10 a.m. UTC | #1
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
diff mbox

Patch

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 ();