This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[ast-optimizer-branch] tree-dfa (5/5)



The following replaces an if statement by a switch.

Seb.


2002-02-28  Sebastian Pop  <s.pop@laposte.net>

	* tree-dfa.c (find_refs_in_stmt): Changed if/else statements in
	a switch.


Index: gcc/tree-dfa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-dfa.c,v
retrieving revision 1.1.2.14
diff -d -p -d -u -p -r1.1.2.14 tree-dfa.c
--- gcc/tree-dfa.c	2002/01/21 20:12:45	1.1.2.14
+++ gcc/tree-dfa.c	2002/02/28 01:56:21
@@ -135,83 +135,82 @@ find_refs_in_stmt (t, bb)
     return;
 
   code = TREE_CODE (t);
-
-  if (code == EXPR_STMT)
-    find_refs_in_expr (EXPR_STMT_EXPR (t), VARUSE, bb, t, t);
-
-  /* The condition nodes for IF_STMT, SWITCH_STMT and WHILE_STMT are not
-     modeled in the flowgraph, so they need to be looked at separately.  */
-  else if (code == IF_STMT)
-    find_refs_in_expr (IF_COND (t), VARUSE, bb, t, t);
-
-  else if (code == SWITCH_STMT)
-    find_refs_in_expr (SWITCH_COND (t), VARUSE, bb, t, t);
+  switch (code)
+    {
+    case EXPR_STMT:
+      find_refs_in_expr (EXPR_STMT_EXPR (t), VARUSE, bb, t, t);
+      break;
 
-  else if (code == WHILE_STMT)
-    find_refs_in_expr (WHILE_COND (t), VARUSE, bb, t, t);
+      /* The condition nodes for IF_STMT, SWITCH_STMT and WHILE_STMT are not
+	 modeled in the flowgraph, so they need to be looked at separately.  */
+    case IF_STMT:
+      find_refs_in_expr (IF_COND (t), VARUSE, bb, t, t);
+      break;
+      
+    case SWITCH_STMT:
+      find_refs_in_expr (SWITCH_COND (t), VARUSE, bb, t, t);
+      break;
 
-  /* There is no need to check the children nodes for DO_STMTs and
-     FOR_STMTs, because they're in separate basic blocks.  */
-  else if (code == FOR_STMT)
-    ;				/* Nothing to do.  */
+    case WHILE_STMT:
+      find_refs_in_expr (WHILE_COND (t), VARUSE, bb, t, t);
+      break;
 
-  else if (code == DO_STMT)
-    ;				/* Nothing to do.  */
+      /* There is no need to check the children nodes for DO_STMTs and
+	 FOR_STMTs, because they're in separate basic blocks.  */
+    case FOR_STMT:
+    case DO_STMT:
+      break;	                        /* Nothing to do.  */
 
-  else if (code == ASM_STMT)
-    {
+    case ASM_STMT:
       find_refs_in_expr (ASM_INPUTS (t), VARUSE, bb, t, t);
       find_refs_in_expr (ASM_OUTPUTS (t), VARDEF, bb, t, t);
       find_refs_in_expr (ASM_CLOBBERS (t), VARDEF, bb, t, t);
-    }
+      break;
 
-  else if (code == RETURN_STMT)
-    find_refs_in_expr (RETURN_EXPR (t), VARUSE, bb, t, t);
+    case RETURN_STMT:
+      find_refs_in_expr (RETURN_EXPR (t), VARUSE, bb, t, t);
+      break;
 
-  else if (code == GOTO_STMT)
-    find_refs_in_expr (GOTO_DESTINATION (t), VARUSE, bb, t, t);
+    case GOTO_STMT:
+      find_refs_in_expr (GOTO_DESTINATION (t), VARUSE, bb, t, t);
+      break;
 
-  else if (code == DECL_STMT)
-    {
+    case DECL_STMT:
       if (TREE_CODE (DECL_STMT_DECL (t)) == VAR_DECL)
 	{
 	  tree decl = DECL_STMT_DECL (t);
 	  if (DECL_INITIAL (decl))
 	    find_refs_in_expr (decl, VARDEF, bb, t, t);
 	}
-    }
-
-  else if (code == LABEL_STMT)
-    find_refs_in_expr (LABEL_STMT_LABEL (t), VARUSE, bb, t, t);
-
-  else if (code == STMT_EXPR)
-    find_refs_in_stmt (STMT_EXPR_STMT (t), bb);
-
-  else if (code == CONTINUE_STMT)
-    ;				/* Nothing to do.  */
-
-  else if (code == CASE_LABEL)
-    ;				/* Nothing to do.  */
+      break;
 
-  else if (code == BREAK_STMT)
-    ;				/* Nothing to do.  */
+    case LABEL_STMT:
+      find_refs_in_expr (LABEL_STMT_LABEL (t), VARUSE, bb, t, t);
+      break;
 
-  else if (code == COMPOUND_STMT)
-    ;				/* Nothing to do.  */
+    case STMT_EXPR:
+      find_refs_in_stmt (STMT_EXPR_STMT (t), bb);
+      break;
 
-  else if (code == SCOPE_STMT)
-    ;				/* Nothing to do.  */
+    case CONTINUE_STMT:
+    case CASE_LABEL:
+    case BREAK_STMT:
+    case COMPOUND_STMT:
+    case SCOPE_STMT:
+    case FILE_STMT:
+      break;				/* Nothing to do.  */
 
-  else
-    {
-      prep_stmt (t);
-      error ("unhandled statement node in find_refs_in_stmt():");
-      fprintf (stderr, "\n");
-      tree_debug_bb (bb);
-      fprintf (stderr, "\n");
-      debug_tree (t);
-      fprintf (stderr, "\n");
-      abort ();
+    default:
+      {
+	prep_stmt (t);
+	error ("unhandled statement node in find_refs_in_stmt():");
+	fprintf (stderr, "\n");
+	tree_debug_bb (bb);
+	fprintf (stderr, "\n");
+	debug_tree (t);
+	fprintf (stderr, "\n");
+	abort ();
+      }
     }
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]