From a2cdf1c7975c2c08486b350a0a1bc76d1ad11b9e Mon Sep 17 00:00:00 2001
From: "nicolas.marie" <nicolas.marie@ensiie.eu>
Date: Tue, 17 Oct 2023 19:05:11 +0200
Subject: [PATCH] fixe mpi collectice rank post domination

---
 src/pass_mpi_collective.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/pass_mpi_collective.cpp b/src/pass_mpi_collective.cpp
index f5f1f34..97aefa5 100644
--- a/src/pass_mpi_collective.cpp
+++ b/src/pass_mpi_collective.cpp
@@ -229,7 +229,7 @@ void pass_mpi_collective::alloc_bb_aux(function *fun)
 		{
 			data->collective_rank[i] = 0;
 		}
-		bitmap_initialize(&data->seens, NULL);
+		bitmap_initialize(&data->seens, &bitmap_default_obstack);
 	}
 }
 
@@ -649,7 +649,6 @@ int pass_mpi_collective::__better_rank_collective(basic_block bb,
 	{
 		next_rank++;
 	}
-
 	((bb_data *) bb->aux)->collective_rank[mpi_code] = next_rank;
 	return next_rank;
 }
@@ -730,6 +729,7 @@ bitmap pass_mpi_collective::get_set_mpi_coll_rank(function *fun
 
 	__is_pd_set_mpi_coll_rank(fun, ENTRY_BLOCK_PTR_FOR_FN(fun)
 	                          , rank, mpi_code, set_post_dommed);
+	reset_bb_mark(fun);
 
 	return set_post_dommed;
 }
@@ -752,10 +752,10 @@ bitmap pass_mpi_collective::get_frontier_from_pds(function *fun
 	{
 		if (bitmap_bit_p(pds, bb->index))
 		{
-			printf("entering %i\n", bb->index);
+			//printf("entering %i\n", bb->index);
 			FOR_EACH_EDGE(e, ei, bb->preds)
 			{
-				printf("\tchecking out my parent %i\n", e->src->index);
+				//printf("\tchecking out my parent %i\n", e->src->index);
 				if (!bitmap_bit_p(pds, e->src->index))
 				{
 					bitmap_set_bit(pdf, e->src->index);
@@ -774,10 +774,10 @@ void pass_mpi_collective::raise_warning_if_mpi_very_wrong(function *fun)
 		bitmap pds;
 		bitmap pdf;
 		
-		for (int i = 0 ; i < collective_max_rank[mpi_code] ; i++)
+		for (int i = 1 ; i < collective_max_rank[mpi_code] + 1 ; i++)
 		{
 
-			printf("%i and %i\n", i, mpi_code);	
+			printf("mpi_code: %i at rank: %i\n", mpi_code, i);
 			pds = get_set_mpi_coll_rank(fun, i, mpi_code);
 			pdf = get_frontier_from_pds(fun, pds);
 
-- 
GitLab