Steven Bosscher <stevenb....@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.