Joseph - thanks for looking through the jit diff.

I plan to fix the issues you raise as a series of separate patches.

Here's the first:

On Tue, 2014-09-23 at 23:27 +0000, Joseph S. Myers wrote:

> Various *_finalize functions are missing comments explaining their 
> semantics.  Also the return type should be on the line before the function 
> name.

I've committed the following fix to branch dmalcolm/jit:

Five of the *_c_finalize functions were empty, since their files
contain no state [1][2].  Delete them.

Fix up the formatting of the remaining *_c_finalize functions, and
ensure they have descriptive leading comments.

[1] Most of these lost their state when the symbol_table class was
introduced, in r214422.

[2] predict.c has state in the form of these variables:

  static sreal real_zero, real_one, real_almost_one, real_br_prob_base,
               real_inv_br_prob_base, real_one_half, real_bb_freq_max;

and, within function estimate_bb_frequencies:

        static int real_values_initialized = 0;

but it seems to me that this state doesn't need to be reset between
repeated in-process invocations.

gcc/ChangeLog.jit:
        * cgraph.h (cgraphbuild_c_finalize): Delete prototype of empty
        function.
        (ipa_c_finalize): Likewise.
        (predict_c_finalize): Likewise.
        (symtab_c_finalize): Likewise.
        (varpool_c_finalize): Likewise.

        * cgraph.c (cgraph_c_finalize): Add leading comment.  Put return
        type on line before function name.
        * cgraphunit.c (cgraphunit_c_finalize): Likewise.
        * dwarf2out.c (dwarf2out_c_finalize): Likewise.
        * gcse.c (gcse_c_finalize): Likewise.
        * ipa-cp.c (ipa_cp_c_finalize): Likewise.
        * ipa-reference.c (ipa_reference_c_finalize): Likewise.

        * params.c (params_c_finalize): Update leading comment to match
        format of the others mentioned above.

        * cgraphbuild.c (cgraphbuild_c_finalize): Delete empty function.
        * ipa.c (ipa_c_finalize): Likewise.
        * predict.c (predict_c_finalize): Likewise.
        * symtab.c (symtab_c_finalize): Likewise.
        * varpool.c (varpool_c_finalize): Likewise.

        * toplev.c (toplev::finalize): Remove calls to empty functions
        cgraphbuild_c_finalize, ipa_c_finalize, predict_c_finalize,
        symtab_c_finalize, varpool_c_finalize.
---
 gcc/cgraph.c        | 6 +++++-
 gcc/cgraph.h        | 9 ---------
 gcc/cgraphbuild.c   | 4 ----
 gcc/cgraphunit.c    | 6 +++++-
 gcc/dwarf2out.c     | 6 +++++-
 gcc/gcse.c          | 6 +++++-
 gcc/ipa-cp.c        | 3 +++
 gcc/ipa-reference.c | 6 +++++-
 gcc/ipa.c           | 4 ----
 gcc/params.c        | 3 ++-
 gcc/predict.c       | 4 ----
 gcc/symtab.c        | 4 ----
 gcc/toplev.c        | 5 -----
 gcc/varpool.c       | 4 ----
 14 files changed, 30 insertions(+), 40 deletions(-)

diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 736dd73..1721634 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -3078,7 +3078,11 @@ gimple_check_call_matching_types (gimple call_stmt, tree 
callee,
   return true;
 }
 
-void cgraph_c_finalize (void)
+/* Reset all state within cgraph.c so that we can rerun the compiler
+   within the same process.  For use by toplev::finalize.  */
+
+void
+cgraph_c_finalize (void)
 {
   symtab = NULL;
 
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index c407a3b..fd45e01 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1958,25 +1958,16 @@ void tree_function_versioning (tree, tree, 
vec<ipa_replace_map *, va_gc> *,
 /* In cgraphbuild.c  */
 int compute_call_stmt_bb_frequency (tree, basic_block bb);
 void record_references_in_initializer (tree, bool);
-void cgraphbuild_c_finalize (void);
 
 /* In ipa.c  */
 void cgraph_build_static_cdtor (char which, tree body, int priority);
 void ipa_discover_readonly_nonaddressable_vars (void);
-void ipa_c_finalize (void);
 
 /* In ipa-cp.c  */
 void ipa_cp_c_finalize (void);
 
-/* In predict.c  */
-void predict_c_finalize (void);
-
-/* In symtab.c  */
-void symtab_c_finalize (void);
-
 /* In varpool.c  */
 tree ctor_for_folding (tree);
-void varpool_c_finalize (void);
 
 /* Return true when the symbol is real symbol, i.e. it is not inline clone
    or abstract function kept for debug info purposes only.  */
diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c
index 5610064..96d7015 100644
--- a/gcc/cgraphbuild.c
+++ b/gcc/cgraphbuild.c
@@ -576,7 +576,3 @@ make_pass_remove_cgraph_callee_edges (gcc::context *ctxt)
 {
   return new pass_remove_cgraph_callee_edges (ctxt);
 }
-
-void cgraphbuild_c_finalize (void)
-{
-}
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 1f52d35..9a3834a 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2288,7 +2288,11 @@ symbol_table::finalize_compilation_unit (void)
   timevar_pop (TV_CGRAPH);
 }
 
-void cgraphunit_c_finalize (void)
+/* Reset all state within cgraphunit.c so that we can rerun the compiler
+   within the same process.  For use by toplev::finalize.  */
+
+void
+cgraphunit_c_finalize (void)
 {
   gcc_assert (cgraph_new_nodes.length () == 0);
   cgraph_new_nodes.truncate (0);
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 5dd7188..6617119 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -24566,7 +24566,11 @@ dwarf2out_finish (const char *filename)
     output_indirect_strings ();
 }
 
-void dwarf2out_c_finalize (void)
+/* Reset all state within dwarf2out.c so that we can rerun the compiler
+   within the same process.  For use by toplev::finalize.  */
+
+void
+dwarf2out_c_finalize (void)
 {
   last_var_location_insn = NULL;
   cached_next_real_insn = NULL;
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 085b1f6..3a59066 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -4288,7 +4288,11 @@ make_pass_rtl_hoist (gcc::context *ctxt)
   return new pass_rtl_hoist (ctxt);
 }
 
-void gcse_c_finalize (void)
+/* Reset all state within gcse.c so that we can rerun the compiler
+   within the same process.  For use by toplev::finalize.  */
+
+void
+gcse_c_finalize (void)
 {
   test_insn = NULL;
 }
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 33a46f2..163ed4b 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -3829,6 +3829,9 @@ make_pass_ipa_cp (gcc::context *ctxt)
   return new pass_ipa_cp (ctxt);
 }
 
+/* Reset all state within ipa-cp.c so that we can rerun the compiler
+   within the same process.  For use by toplev::finalize.  */
+
 void
 ipa_cp_c_finalize (void)
 {
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index 39f6cb0..f3af47a 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -1174,7 +1174,11 @@ make_pass_ipa_reference (gcc::context *ctxt)
   return new pass_ipa_reference (ctxt);
 }
 
-void ipa_reference_c_finalize (void)
+/* Reset all state within ipa-reference.c so that we can rerun the compiler
+   within the same process.  For use by toplev::finalize.  */
+
+void
+ipa_reference_c_finalize (void)
 {
   ipa_init_p = false;
 }
diff --git a/gcc/ipa.c b/gcc/ipa.c
index f10e7bd..5afacd8 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -1090,10 +1090,6 @@ make_pass_ipa_cdtor_merge (gcc::context *ctxt)
   return new pass_ipa_cdtor_merge (ctxt);
 }
 
-void ipa_c_finalize (void)
-{
-}
-
 /* Invalid pointer representing BOTTOM for single user dataflow.  */
 #define BOTTOM ((cgraph_node *)(size_t) 2)
 
diff --git a/gcc/params.c b/gcc/params.c
index 2b72c58..7aa96e2 100644
--- a/gcc/params.c
+++ b/gcc/params.c
@@ -84,7 +84,8 @@ finish_params (void)
   params_finished = true;
 }
 
-/* Reset all state in params.c.  */
+/* Reset all state within params.c so that we can rerun the compiler
+   within the same process.  For use by toplev::finalize.  */
 
 void
 params_c_finalize (void)
diff --git a/gcc/predict.c b/gcc/predict.c
index b0d572f..eb5db2a 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -3237,7 +3237,3 @@ rebuild_frequencies (void)
     gcc_unreachable ();
   timevar_pop (TV_REBUILD_FREQUENCIES);
 }
-
-void predict_c_finalize (void)
-{
-}
diff --git a/gcc/symtab.c b/gcc/symtab.c
index fd9cbac..792b3b5 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -1755,10 +1755,6 @@ symtab_node::semantically_equivalent_p (symtab_node 
*target)
   return bb == ba;
 }
 
-void symtab_c_finalize (void)
-{
-}
-
 /* Classify symbol symtab node for partitioning.  */
 
 enum symbol_partitioning_class
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 37f54ef..58180f4 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2066,15 +2066,10 @@ toplev::finalize (void)
   this_target_rtl->target_specific_initialized = false;
 
   cgraph_c_finalize ();
-  cgraphbuild_c_finalize ();
   cgraphunit_c_finalize ();
   dwarf2out_c_finalize ();
   gcse_c_finalize ();
-  ipa_c_finalize ();
   ipa_cp_c_finalize ();
   ipa_reference_c_finalize ();
   params_c_finalize ();
-  predict_c_finalize ();
-  symtab_c_finalize ();
-  varpool_c_finalize ();
 }
diff --git a/gcc/varpool.c b/gcc/varpool.c
index 5b6d76b..72971d6 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -781,7 +781,3 @@ varpool_node::call_for_node_and_aliases (bool (*callback) 
(varpool_node *,
     }
   return false;
 }
-
-void varpool_c_finalize (void)
-{
-}
-- 
1.7.11.7

Reply via email to