From fdfdd3b701a873f6d8f82eced2ded4998c9a26b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9otime=20DONNENFELD?= <theotime.donnenfeld@ensiie.fr>
Date: Sun, 21 Oct 2018 20:27:26 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20du=20warning=20si=20deux=20fois=20la=20?=
 =?UTF-8?q?meme=20fonction=20est=20demand=C3=A9e=20par=20pragma?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 functions/.pragma.c.swp | Bin 0 -> 12288 bytes
 functions/pragma.c      |  19 +++++++++++++++----
 plugin.cpp              |   2 +-
 3 files changed, 16 insertions(+), 5 deletions(-)
 create mode 100644 functions/.pragma.c.swp

diff --git a/functions/.pragma.c.swp b/functions/.pragma.c.swp
new file mode 100644
index 0000000000000000000000000000000000000000..8f4a55176f396d4c18ff1e593bc881c447b2796d
GIT binary patch
literal 12288
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
HP+|Z8GK}D~

literal 0
HcmV?d00001

diff --git a/functions/pragma.c b/functions/pragma.c
index a98fc77..3d716af 100644
--- a/functions/pragma.c
+++ b/functions/pragma.c
@@ -11,7 +11,7 @@ static void my_pragma_action(cpp_reader *ARG_UNUSED(dummy))
 	const char* elt;	
 	token = pragma_lex (&x);
 	bool close_paren_needed_p = false;
-		
+	bool already_in;
 	
 	if (cfun){
         	printf("!!Pragma placed inside function!!\n");
@@ -33,9 +33,20 @@ static void my_pragma_action(cpp_reader *ARG_UNUSED(dummy))
 			if (TREE_STRING_LENGTH (x) > 0)
             			args = tree_cons (NULL_TREE, x, args);
 			
-          		printf("Arg found : %s\n", IDENTIFIER_POINTER(x));	
-		
-			pragma_func_names_temp.safe_push(IDENTIFIER_POINTER(x));	
+          		printf("\nArg found : %s\n", IDENTIFIER_POINTER(x));	
+			
+			already_in = false;
+			for (int ix = 0; pragma_func_names.iterate (ix, &elt); ix++){
+				if(strcmp(elt, IDENTIFIER_POINTER(x))==0)
+					already_in = true;
+			}	
+
+			if(already_in){
+				printf("WARNING : 2 pragmas refering to same func");
+			}
+			else{
+				pragma_func_names_temp.safe_push(IDENTIFIER_POINTER(x));	
+			}
 			token = pragma_lex (&x);        					
 			//Cleans COMAS
 			while (token == CPP_COMMA){
diff --git a/plugin.cpp b/plugin.cpp
index a52eea7..06c12cb 100755
--- a/plugin.cpp
+++ b/plugin.cpp
@@ -129,7 +129,7 @@ class cleanup_pass : public gimple_opt_pass
 	
                         const char *elt;
                         for(int ix = 0; pragma_func_names.iterate (ix, &elt); ix++)
-                                func_to_be_analyzed = strcmp(elt,function_name(fun)) && func_to_be_analyzed;
+                                func_to_be_analyzed = (strcmp(elt,function_name(fun))==0)  && func_to_be_analyzed;
 			printf("USING PRAGMAS - FUNC IS : %s", function_name(fun));
 			return func_to_be_analyzed;
                 }
-- 
GitLab