Patchwork passes.c: handle register_pass with a name starting with a star

login
register
mail settings
Submitter Dennis, CHENG Renquan
Date July 11, 2010, 3:33 p.m.
Message ID <1278862389-24851-1-git-send-email-crquan@fedoraproject.org>
Download mbox | patch
Permalink /patch/58526/
State New
Headers show

Comments

Dennis, CHENG Renquan - July 11, 2010, 3:33 p.m.
The gcc included passes have the feature that a name starting with a start do
not dump anything; so should the plugin registered passes have.

And since passes from gcc and from plugin both have been asserted having a name
at least; the check for pass->name in any following code is not necessary.

Bootstraped and tested on i686-pc-linux-gnu with "--enable-checking=all".

2010-07-10  "Dennis, CHENG Renquan" <crquan@fedoraproject.org>

	* passes.c (register_pass): handle plugin registered passes with
	a name starting with a star do not dump anything.
	* passes.c: remove some cases of pass->name check.

---
Updated: "enum tree_dump_index tdi" should be put inside the block.


--
Git 1.7.1.1

CHENG Renquan
38 St Thomas Walk, Singapore 238118      http://crquan.fedorapeople.org
Andreas Schwab - July 11, 2010, 4:07 p.m.
"Dennis, CHENG Renquan" <crquan@fedoraproject.org> writes:

> @@ -488,7 +488,7 @@ make_pass_instance (struct opt_pass *pas
>           and so it should rename the dump file.  The first instance will
>           be -1, and be number of duplicates = -static_pass_number - 1.
>           Subsequent instances will be > 0 and just the duplicate number.  */
> -      if ((pass->name && pass->name[0] != '*') || track_duplicates)
> +      if ((pass->name[0] != '*') || track_duplicates)

Please remove the now unneeded pair of parens.

Andreas.

Patch

--- gcc-4.5-20100708/gcc/passes.c.orig	2010-05-19 21:14:37.000000000 +0800
+++ gcc-4.5-20100708/gcc/passes.c	2010-07-11 17:33:07.098787669 +0800
@@ -422,7 +422,7 @@  register_dump_files_1 (struct opt_pass *
       int new_properties = (properties | pass->properties_provided)
 			   & ~pass->properties_destroyed;
 
-      if (pass->name && pass->name[0] != '*')
+      if (pass->name[0] != '*')
         register_one_dump_file (pass);
 
       if (pass->sub)
@@ -488,7 +488,7 @@  make_pass_instance (struct opt_pass *pas
          and so it should rename the dump file.  The first instance will
          be -1, and be number of duplicates = -static_pass_number - 1.
          Subsequent instances will be > 0 and just the duplicate number.  */
-      if ((pass->name && pass->name[0] != '*') || track_duplicates)
+      if ((pass->name[0] != '*') || track_duplicates)
         {
           pass->static_pass_number -= 1;
           new_pass->static_pass_number = -pass->static_pass_number;
@@ -553,7 +553,6 @@  position_pass (struct register_pass_info
       /* Check if the current pass is of the same type as the new pass and
          matches the name and the instance number of the reference pass.  */
       if (pass->type == new_pass_info->pass->type
-          && pass->name
           && !strcmp (pass->name, new_pass_info->reference_pass_name)
           && ((new_pass_info->ref_pass_instance_number == 0)
               || (new_pass_info->ref_pass_instance_number ==
@@ -678,19 +677,24 @@  register_pass (struct register_pass_info
   while (added_pass_nodes)
     {
       struct pass_list_node *next_node = added_pass_nodes->next;
-      enum tree_dump_index tdi;
-      register_one_dump_file (added_pass_nodes->pass);
-      if (added_pass_nodes->pass->type == SIMPLE_IPA_PASS
-          || added_pass_nodes->pass->type == IPA_PASS)
-        tdi = TDI_ipa_all;
-      else if (added_pass_nodes->pass->type == GIMPLE_PASS)
-        tdi = TDI_tree_all;
-      else
-        tdi = TDI_rtl_all;
-      /* Check if dump-all flag is specified.  */
-      if (get_dump_file_info (tdi)->state)
-        get_dump_file_info (added_pass_nodes->pass->static_pass_number)
-            ->state = get_dump_file_info (tdi)->state;
+
+      if (added_pass_nodes->pass->name[0] != '*')
+	{
+	  enum tree_dump_index tdi;
+
+	  register_one_dump_file (added_pass_nodes->pass);
+	  if (added_pass_nodes->pass->type == SIMPLE_IPA_PASS
+	      || added_pass_nodes->pass->type == IPA_PASS)
+	    tdi = TDI_ipa_all;
+	  else if (added_pass_nodes->pass->type == GIMPLE_PASS)
+	    tdi = TDI_tree_all;
+	  else
+	    tdi = TDI_rtl_all;
+	  /* Check if dump-all flag is specified.  */
+	  if (get_dump_file_info (tdi)->state)
+	    get_dump_file_info (added_pass_nodes->pass->static_pass_number)
+	      ->state = get_dump_file_info (tdi)->state;
+    	}
       XDELETE (added_pass_nodes);
       added_pass_nodes = next_node;
     }
@@ -1542,7 +1546,7 @@  execute_one_pass (struct opt_pass *pass)
   invoke_plugin_callbacks (PLUGIN_PASS_EXECUTION, pass);
 
   if (!quiet_flag && !cfun)
-    fprintf (stderr, " <%s>", pass->name ? pass->name : "");
+    fprintf (stderr, " <%s>", pass->name);
 
   /* Note that the folders should only create gimple expressions.
      This is a hack until the new folder is ready.  */