[patch] Make mcf.c and ira-conflicts.c not include tree.h

Richard Günther richard.guenther@gmail.com
Sun Jul 8 18:04:00 GMT 2012


Steven Bosscher <stevenb.gcc@gmail.com> wrote:

>Hello,
>
>IMHO, no RTL pass implementation file should have to include tree.h.
>So ira-conflicts.c shouldn't need tree.h. The reason it needed it, was
>because there is code to avoid putting user variables in callee
>clobbered registers, and ira-conflict.c looked at DECL_ARTIFICIAL
>(REG_EXPR (reg)). But it can just look at REG_USERVAR_P(reg) instead,
>which is simper and cleaner.
>
>Likewise, IMHO no CFG implementation files should need tree.h, because
>the CFG should be IR agnostic. But mcf.c needed tree.h for
>lang_hooks.decl_printable_name from langhooks.h. It can use
>current_function_name() instead.
>
>Bootstrapped and tested on powerpc64-unknown-linux-gnu. OK for trunk?

Ok.

Thanks,
Richard.

>Ciao!
>Steven
>
>	* mcf.c: Do not include tm.h, tree.h, and langhooks.h.
>	(dump_fixup_graph): Use current_function_name.
>	(adjust_cfg_counts): Likewise.
>	* ira-conflicts.c: Do not include tree.h.
>	(ira_build_conflicts): Use REG_USERVAR_P instead of DECL_ARTIFICIAL.
>
>Index: mcf.c
>===================================================================
>--- mcf.c	(revision 189359)
>+++ mcf.c	(working copy)
>@@ -46,13 +46,8 @@ along with GCC; see the file COPYING3.  If not see
> #include "config.h"
> #include "system.h"
> #include "coretypes.h"
>-#include "tm.h"
> #include "basic-block.h"
>-#include "tree.h"		/* FIXME: Only for langhooks.h.  */
>-#include "langhooks.h"
>-#include "tree.h"
> #include "gcov-io.h"
>-
> #include "profile.h"
>
> /* CAP_INFINITY: Constant to represent infinite capacity.  */
>@@ -290,7 +285,7 @@ dump_fixup_graph (FILE *file, fixup_graph_type *fi
>   fnum_edges = fixup_graph->num_edges;
>
>   fprintf (file, "\nDump fixup graph for %s(): %s.\n",
>-	   lang_hooks.decl_printable_name (current_function_decl, 2), msg);
>+	   current_function_name (), msg);
>   fprintf (file,
> 	   "There are %d vertices and %d edges. new_exit_index is %d.\n\n",
> 	   fnum_vertices, fnum_edges, fixup_graph->new_exit_index);
>@@ -1280,8 +1275,8 @@ adjust_cfg_counts (fixup_graph_type *fixup_graph)
>   if (dump_file)
>     {
>       fprintf (dump_file, "\nCheck %s() CFG flow conservation:\n",
>-           lang_hooks.decl_printable_name (current_function_decl, 2));
>-      FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR->next_bb, EXIT_BLOCK_PTR,
>next_bb)
>+	       current_function_name ());
>+      FOR_EACH_BB (bb)
>         {
>           if ((bb->count != sum_edge_counts (bb->preds))
>                || (bb->count != sum_edge_counts (bb->succs)))
>Index: ira-conflicts.c
>===================================================================
>--- ira-conflicts.c	(revision 189359)
>+++ ira-conflicts.c	(working copy)
>@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3.  If not see
> #include "tm.h"
> #include "regs.h"
> #include "rtl.h"
>-#include "tree.h"		/* For DECL_ARTIFICIAL and friends.  */
> #include "tm_p.h"
> #include "target.h"
> #include "flags.h"
>@@ -893,17 +892,12 @@ ira_build_conflicts (void)
>       for (i = 0; i < n; i++)
> 	{
> 	  ira_object_t obj = ALLOCNO_OBJECT (a, i);
>-	  reg_attrs *attrs = REG_ATTRS (regno_reg_rtx [ALLOCNO_REGNO (a)]);
>-	  tree decl;
>+	  rtx allocno_reg = regno_reg_rtx [ALLOCNO_REGNO (a)];
>
> 	  if ((! flag_caller_saves && ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
> 	      /* For debugging purposes don't put user defined variables in
> 		 callee-clobbered registers.  */
>-	      || (optimize == 0
>-		  && attrs != NULL
>-		  && (decl = attrs->decl) != NULL
>-		  && VAR_OR_FUNCTION_DECL_P (decl)
>-		  && ! DECL_ARTIFICIAL (decl)))
>+	      || (optimize == 0 && REG_USERVAR_P (allocno_reg)))
> 	    {
> 	      IOR_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
> 				call_used_reg_set);


-- 
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.



More information about the Gcc-patches mailing list