diff --git a/functions/.pragma.c.swp b/functions/.pragma.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..8f4a55176f396d4c18ff1e593bc881c447b2796d Binary files /dev/null and b/functions/.pragma.c.swp differ diff --git a/functions/pragma.c b/functions/pragma.c index a98fc77296017de060036e714e957413aad379ab..3d716af3d82a6a6c684d7b42f7c4dc735c72e7c2 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 a52eea79551d765af76ca22b620c6843d8441f77..06c12cb2721a225073ee9265dd96d710c2a060ca 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; }