SSA PRE and Open64

Daniel Berlin dberlin@dberlin.org
Thu Aug 28 08:00:00 GMT 2003


On Aug 27, 2003, at 7:00 PM, law@redhat.com wrote:

> In message <5551DDA2-D8E0-11D7-81D5-000A95A34564@dberlin.org>, Daniel 
> Berlin wr
> ites:
>> But we aren't, so we don't need to worry about it.
>> If i was writing code that was derivative of what they did, starting
>> from their code, i would have taken care of all of this before
>> starting, not later on.
> OK.  Then please make this comment clearer that you're taking ideas, 
> not
> code from Open64's SSAPRE implementation.

Sure.
The following has been committed:
2003-08-27  Daniel Berlin  <dberlin@dberlin.org>
	
	* tree-ssa-pre.c: Update comments to reflect reality.
	(insert_one_operand): Remove #if'0d code.
Index: tree-ssa-pre.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-pre.c,v
retrieving revision 1.1.4.74
diff -u -3 -p -r1.1.4.74 tree-ssa-pre.c
--- tree-ssa-pre.c	27 Aug 2003 13:14:26 -0000	1.1.4.74
+++ tree-ssa-pre.c	27 Aug 2003 23:29:35 -0000
@@ -53,7 +53,7 @@ Boston, MA 02111-1307, USA.  */
     For strength reduction addition, see
     http://citeseer.nj.nec.com/kennedy98strength.html

-   Pieces are also taken from Open64's SSAPRE implementation.
+   Some of the algorithms are also based on Open64's SSAPRE 
implementation.

     Since the papers are a bit dense to read, take a while to grasp,
     and have a few bugs, i'll give a quick rundown:
@@ -317,7 +317,7 @@ static int
  add_ephi_pred (tree phi, tree def, edge e)
  {
    int i = EPHI_NUM_ARGS (phi);
-
+
    EPHI_ARG_PRED (phi, i) = def;
    EPHI_ARG_EDGE (phi, i) = e;
    EPHI_NUM_ARGS (phi)++;
@@ -1124,7 +1124,9 @@ injured_phi_result_real_occ (struct expr
    return false;
  }

-/* Delayed rename handling as implemented in open64. */
+/* Delayed rename handling is done like open64 does it.  Basically,
+   like the delayed renaming is described in the paper, with
+   extensions for strength reduction.  */
  static void
  process_delayed_rename (struct expr_info *ei, tree use, tree real_occ)
  {
@@ -1202,7 +1204,9 @@ process_delayed_rename (struct expr_info
      }
  }

-/* Renaming as implemented in Open64. */
+/* Renaming is done like Open64 does it.  Basically as the paper says,
+   except that we try to use earlier defined occurrences if they are
+   available in order to keep the number of saves down.  */
  void
  rename_1 (struct expr_info *ei)
  {
@@ -1703,25 +1707,6 @@ insert_one_operand (struct expr_info *ei
    newtemp = make_ssa_name (temp, expr);
    TREE_OPERAND (expr, 0) = newtemp;
    copy = TREE_OPERAND (expr, 1);
-#if 0
-  {
-    if (TREE_OPERAND (copy, 0)
-	&& SSA_VAR_P (TREE_OPERAND (copy, 0)))
-      {
-	TREE_OPERAND (copy, 0) =
-	  reaching_def (TREE_OPERAND (copy, 0),
-			NULL_TREE, bb_for_stmt (x), NULL_TREE);
-      }
-			
-    if (TREE_OPERAND (copy, 1)
-	&& SSA_VAR_P (TREE_OPERAND (copy, 1)))
-      {
-	TREE_OPERAND (copy, 1)  =
-	  reaching_def (TREE_OPERAND (copy, 1),
-			NULL_TREE, bb_for_stmt (x), NULL_TREE);
-      }
-  }
-#endif
    if (dump_file)
      {
        fprintf (dump_file, "In BB %d, insert save of ",



More information about the Gcc mailing list