Skip to content
Extraits de code Groupes Projets
Valider a4c9b5df rédigé par Thomas DILASSER's avatar Thomas DILASSER
Parcourir les fichiers

Error testing

parent f026a6f0
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #1152 annulé
.PHONY: all .PHONY: all
all: TEST1 TEST2 TEST3 TEST4 dot convert #all: TEST1 TEST2 TEST3 TEST4 dot convert
all: TEST3 dot convert
TEST1=./tests/simple_test1.c TEST1=./tests/simple_test1.c
TEST2=./tests/simple_test2.c TEST2=./tests/simple_test2.c
......
#include "frontier.h"
void bitmap_pdf(function * fun)
{
printf("---------\n");
printf("\n---PDF---\n");
printf("---------\n");
bitmap_head *pfrontiers;
basic_block bb;
pfrontiers = XNEWVEC (bitmap_head, last_basic_block_for_fn (fun));
FOR_ALL_BB_FN (bb, cfun)
{
bitmap_initialize (&pfrontiers[bb->index], &bitmap_default_obstack);
}
td5_q1_bitmap_post_dominance_frontiers (pfrontiers, fun);
//FOR_ALL_BB_FN (bb, cfun)
//{
// printf( "PDF Node %d: ", bb->index ) ;
// bitmap_print( stdout, &pfrontiers[bb->index], "", "\n" ) ;
//}
}
void bitmap_post_dominance_frontiers (bitmap_head *frontiers, function * fun)
{
edge p;
edge_iterator ei;
basic_block b;
FOR_EACH_BB_FN (b, fun)
{
if (EDGE_COUNT (b->succs) >= 2)
{
FOR_EACH_EDGE (p, ei, b->succs)
{
basic_block runner = p->dest;
basic_block pdomsb;
if (runner == EXIT_BLOCK_PTR_FOR_FN (fun))
continue;
pdomsb = get_immediate_dominator (CDI_POST_DOMINATORS, b);
while (runner != pdomsb)
{
if (!bitmap_set_bit (&frontiers[runner->index], b->index))
break;
runner = get_immediate_dominator (CDI_POST_DOMINATORS, runner);
}
}
}
}
}
void
td5_q1_bitmap_post_dominance_frontiers (bitmap_head *frontiers, function * fun)
{
edge p;
edge_iterator ei;
basic_block b;
FOR_EACH_BB_FN (b, fun)
{
if (EDGE_COUNT (b->succs) >= 2)
// if (EDGE_COUNT (b->preds) >= 2)
{
FOR_EACH_EDGE (p, ei, b->succs)
// FOR_EACH_EDGE (p, ei, b->preds)
{
basic_block runner = p->dest;
// basic_block runner = p->src;
basic_block pdomsb;
if (runner == EXIT_BLOCK_PTR_FOR_FN (fun))
// if (runner == ENTRY_BLOCK_PTR_FOR_FN (fun))
continue;
pdomsb = get_immediate_dominator (CDI_POST_DOMINATORS, b);
// pdomsb = get_immediate_dominator (CDI_DOMINATORS, b);
while (runner != pdomsb)
{
if (!bitmap_set_bit (&frontiers[runner->index], b->index))
break;
/*
if (1 == bitmap_bit_p(&frontiers[runner->index], b->index))
{
break;
}
else
{
bitmap_set_bit (&frontiers[runner->index], b->index);
cpt++;
printf("%d\n", cpt);
}
*/
runner = get_immediate_dominator (CDI_POST_DOMINATORS, runner);
// runner = get_immediate_dominator (CDI_DOMINATORS, runner);
}
}
}
}
}
#ifndef __PDFDD__H
#define __PDFDD__H
void bitmap_pdf(function * fun);
void bitmap_post_dominance_frontiers (bitmap_head *frontiers, function * fun);
void td5_q1_bitmap_post_dominance_frontiers (bitmap_head *frontiers, function * fun);
#endif
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
#include "./functions/MPI_functions.c" #include "./functions/MPI_functions.c"
#include "./functions/pragma.h" #include "./functions/pragma.h"
#include "./functions/pragma.c" #include "./functions/pragma.c"
#include "./functions/frontier.h"
#include "./functions/frontier.c"
int plugin_is_GPL_compatible; int plugin_is_GPL_compatible;
...@@ -112,6 +114,7 @@ class split_count_pass : public gimple_opt_pass ...@@ -112,6 +114,7 @@ class split_count_pass : public gimple_opt_pass
if ( !in_system_header_at( fun->function_start_locus ) ) if ( !in_system_header_at( fun->function_start_locus ) )
cfgviz_dump( fun, function_name(fun), 1 ) ; cfgviz_dump( fun, function_name(fun), 1 ) ;
bitmap_pdf(fun);
return 0; return 0;
} }
}; };
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter