From fced334a177a503a5f6f49356e3115da5ec51ca7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9otime=20DONNENFELD?= <theotime.donnenfeld@ensiie.fr>
Date: Sun, 21 Oct 2018 21:21:47 +0200
Subject: [PATCH] A checker: la comparaison de fonctions pragma/ensemble de
 fonctions du code

---
 functions/.pragma.c.swp | Bin 12288 -> 0 bytes
 functions/pragma.c      |  21 +++++++++++++++++++++
 functions/pragma.h      |   2 +-
 plugin.cpp              |   2 ++
 4 files changed, 24 insertions(+), 1 deletion(-)
 delete mode 100644 functions/.pragma.c.swp

diff --git a/functions/.pragma.c.swp b/functions/.pragma.c.swp
deleted file mode 100644
index 8f4a55176f396d4c18ff1e593bc881c447b2796d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12288
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
HP+|Z8GK}D~

diff --git a/functions/pragma.c b/functions/pragma.c
index 164607e..078fc96 100644
--- a/functions/pragma.c
+++ b/functions/pragma.c
@@ -2,6 +2,7 @@
 
 vec<const char*> pragma_func_names;
 vec<const char*> pragma_func_names_temp;
+vec<const char*> analyzed_functions;
 
 static void my_pragma_action(cpp_reader *ARG_UNUSED(dummy))
 {
@@ -96,3 +97,23 @@ static void register_my_pragma(void *event_data, void *data)
 }
 
 
+void compare_pragma_funcs_analyzed_funcs(){
+	const char *pragma_elt;
+	const char *analyzed_elt;
+	for(int ix = 0; pragma_func_names.iterate (ix, &pragma_elt); ix++){
+		for(int jx = 0; analyzed_functions.iterate (jx, &analyzed_elt); jx++){
+			if(strcmp(pragma_elt, analyzed_elt)!=0)
+				printf("WARNING :Pragma indicates unexisting function %s\n ",pragma_elt );
+        	}
+	}
+}
+
+
+
+
+
+
+
+
+
+
diff --git a/functions/pragma.h b/functions/pragma.h
index 5fdc160..1501a05 100644
--- a/functions/pragma.h
+++ b/functions/pragma.h
@@ -3,5 +3,5 @@
 
 static void register_my_pragma(void *event_data, void *data);
 static void my_pragma_action(cpp_reader *ARG_UNUSED(dummy));
-
+void compare_pragma_funcs_analyzed_funcs();
 #endif
diff --git a/plugin.cpp b/plugin.cpp
index 19dd67a..687fd70 100755
--- a/plugin.cpp
+++ b/plugin.cpp
@@ -75,6 +75,7 @@ class split_count_pass : public gimple_opt_pass
                 {
 			bool func_to_be_analyzed = true;
 
+
                         printf("=> plugin: split_count_pass... \n");
                         printf("=> plugin: gate... \n");
                         if((pragma_func_names.length() == 0)){
@@ -145,6 +146,7 @@ class cleanup_pass : public gimple_opt_pass
                         printf("=> plugin: execute...\n");
 			
 			printf("... in function %s\n\n", function_name(fun));
+			compare_pragma_funcs_analyzed_funcs();
 			edit_all_aux_value(fun,(int*)NULL);
 			return 0;
                 }
-- 
GitLab