OSDN Git Service

* common.opt (flag_instrument_functions_exclude_functions,
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Nov 2010 13:27:18 +0000 (13:27 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Nov 2010 13:27:18 +0000 (13:27 +0000)
flag_instrument_functions_exclude_files): New Variable
definitions.
* flags.h (flag_instrument_functions_exclude_p): Don't declare.
* gimplify.c (char_p): Declare type and vectors.
(flag_instrument_functions_exclude_p): Moved from opts.c.  Make
static.
* opts.c (flag_instrument_functions_exclude_functions,
flag_instrument_functions_exclude_files): Remove.
(add_comma_separated_to_vector): Take void **.
(flag_instrument_functions_exclude_p): Move to gimplify.c.
(common_handle_option): Use options structure for
-finstrument-functions-exclude- options.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166943 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/common.opt
gcc/flags.h
gcc/gimplify.c
gcc/opts.c

index 9ffa3c4..b065ee3 100644 (file)
@@ -1,5 +1,21 @@
 2010-11-19  Joseph Myers  <joseph@codesourcery.com>
 
+       * common.opt (flag_instrument_functions_exclude_functions,
+       flag_instrument_functions_exclude_files): New Variable
+       definitions.
+       * flags.h (flag_instrument_functions_exclude_p): Don't declare.
+       * gimplify.c (char_p): Declare type and vectors.
+       (flag_instrument_functions_exclude_p): Moved from opts.c.  Make
+       static.
+       * opts.c (flag_instrument_functions_exclude_functions,
+       flag_instrument_functions_exclude_files): Remove.
+       (add_comma_separated_to_vector): Take void **.
+       (flag_instrument_functions_exclude_p): Move to gimplify.c.
+       (common_handle_option): Use options structure for
+       -finstrument-functions-exclude- options.
+
+2010-11-19  Joseph Myers  <joseph@codesourcery.com>
+
        * doc/options.texi (Var): Document effects of Defer.
        (Defer): Document.
        * opt-functions.awk (var_type, var_set): Handle deferred options.
index a3dd291..9a1f905 100644 (file)
@@ -105,6 +105,14 @@ enum symbol_visibility default_visibility = VISIBILITY_DEFAULT
 Variable
 enum tls_model flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC
 
+; These two are really VEC(char_p,heap) *.
+
+Variable
+void *flag_instrument_functions_exclude_functions
+
+Variable
+void *flag_instrument_functions_exclude_files
+
 ###
 Driver
 
index 7aa9ff1..3cc65a4 100644 (file)
@@ -159,10 +159,6 @@ extern enum stack_check_type flag_stack_check;
 #define abi_version_at_least(N) \
   (flag_abi_version == 0 || flag_abi_version >= (N))
 
-/* Return whether the function should be excluded from
-   instrumentation.  */
-extern bool flag_instrument_functions_exclude_p (tree fndecl);
-
 /* True if overflow wraps around for the given integral type.  That
    is, TYPE_MAX + 1 == TYPE_MIN.  */
 #define TYPE_OVERFLOW_WRAPS(TYPE) \
index 128ac02..5cf8474 100644 (file)
@@ -7762,6 +7762,46 @@ gimplify_body (tree *body_p, tree fndecl, bool do_parms)
   return outer_bind;
 }
 
+typedef char *char_p; /* For DEF_VEC_P.  */
+DEF_VEC_P(char_p);
+DEF_VEC_ALLOC_P(char_p,heap);
+
+/* Return whether we should exclude FNDECL from instrumentation.  */
+
+static bool
+flag_instrument_functions_exclude_p (tree fndecl)
+{
+  VEC(char_p,heap) *vec;
+
+  vec = (VEC(char_p,heap) *) flag_instrument_functions_exclude_functions;
+  if (VEC_length (char_p, vec) > 0)
+    {
+      const char *name;
+      int i;
+      char *s;
+
+      name = lang_hooks.decl_printable_name (fndecl, 0);
+      FOR_EACH_VEC_ELT (char_p, vec, i, s)
+       if (strstr (name, s) != NULL)
+         return true;
+    }
+
+  vec = (VEC(char_p,heap) *) flag_instrument_functions_exclude_files;
+  if (VEC_length (char_p, vec) > 0)
+    {
+      const char *name;
+      int i;
+      char *s;
+
+      name = DECL_SOURCE_FILE (fndecl);
+      FOR_EACH_VEC_ELT (char_p, vec, i, s)
+       if (strstr (name, s) != NULL)
+         return true;
+    }
+
+  return false;
+}
+
 /* Entry point to the gimplification pass.  FNDECL is the FUNCTION_DECL
    node for the function we want to gimplify.
 
index ad3d6fc..b2787ce 100644 (file)
@@ -319,15 +319,10 @@ struct visibility_flags visibility_options;
 /* What to print when a switch has no documentation.  */
 static const char undocumented_msg[] = N_("This switch lacks documentation");
 
-/* Functions excluded from profiling.  */
-
 typedef char *char_p; /* For DEF_VEC_P.  */
 DEF_VEC_P(char_p);
 DEF_VEC_ALLOC_P(char_p,heap);
 
-static VEC(char_p,heap) *flag_instrument_functions_exclude_functions;
-static VEC(char_p,heap) *flag_instrument_functions_exclude_files;
-
 typedef const char *const_char_p; /* For DEF_VEC_P.  */
 DEF_VEC_P(const_char_p);
 DEF_VEC_ALLOC_P(const_char_p,heap);
@@ -545,12 +540,13 @@ add_input_filename (const char *filename)
 /* Add comma-separated strings to a char_p vector.  */
 
 static void
-add_comma_separated_to_vector (VEC(char_p,heap) **pvec, const char* arg)
+add_comma_separated_to_vector (void **pvec, const char *arg)
 {
   char *tmp;
   char *r;
   char *w;
   char *token_start;
+  VEC(char_p,heap) *vec = (VEC(char_p,heap) *) *pvec;
 
   /* We never free this string.  */
   tmp = xstrdup (arg);
@@ -565,7 +561,7 @@ add_comma_separated_to_vector (VEC(char_p,heap) **pvec, const char* arg)
        {
          *w++ = '\0';
          ++r;
-         VEC_safe_push (char_p, heap, *pvec, token_start);
+         VEC_safe_push (char_p, heap, vec, token_start);
          token_start = w;
        }
       if (*r == '\\' && r[1] == ',')
@@ -577,43 +573,11 @@ add_comma_separated_to_vector (VEC(char_p,heap) **pvec, const char* arg)
        *w++ = *r++;
     }
   if (*token_start != '\0')
-    VEC_safe_push (char_p, heap, *pvec, token_start);
-}
-
-/* Return whether we should exclude FNDECL from instrumentation.  */
+    VEC_safe_push (char_p, heap, vec, token_start);
 
-bool
-flag_instrument_functions_exclude_p (tree fndecl)
-{
-  if (VEC_length (char_p, flag_instrument_functions_exclude_functions) > 0)
-    {
-      const char *name;
-      int i;
-      char *s;
-
-      name = lang_hooks.decl_printable_name (fndecl, 0);
-      FOR_EACH_VEC_ELT (char_p, flag_instrument_functions_exclude_functions,
-                       i, s)
-       if (strstr (name, s) != NULL)
-         return true;
-    }
-
-  if (VEC_length (char_p, flag_instrument_functions_exclude_files) > 0)
-    {
-      const char *name;
-      int i;
-      char *s;
-
-      name = DECL_SOURCE_FILE (fndecl);
-      FOR_EACH_VEC_ELT (char_p, flag_instrument_functions_exclude_files, i, s)
-       if (strstr (name, s) != NULL)
-         return true;
-    }
-
-  return false;
+  *pvec = vec;
 }
 
-
 /* Handle the vector of command line options (located at LOC), storing
    the results of processing DECODED_OPTIONS and DECODED_OPTIONS_COUNT
    in OPTS and OPTS_SET and using DC for diagnostic state.  LANG_MASK
@@ -1918,12 +1882,12 @@ common_handle_option (struct gcc_options *opts,
 
     case OPT_finstrument_functions_exclude_function_list_:
       add_comma_separated_to_vector
-       (&flag_instrument_functions_exclude_functions, arg);
+       (&opts->x_flag_instrument_functions_exclude_functions, arg);
       break;
 
     case OPT_finstrument_functions_exclude_file_list_:
       add_comma_separated_to_vector
-       (&flag_instrument_functions_exclude_files, arg);
+       (&opts->x_flag_instrument_functions_exclude_files, arg);
       break;
 
     case OPT_fmessage_length_: