This is the mail archive of the gcc@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]

Re: [tree-ssa] Bootstrap broken on x86_64-linux-gnu



It does not apply but it does not look ok either, see below.



If not, it should be easy to see what i'm trying to do anyway (prevent
us from accessing a non existent array member).


Index: tree-ssa-pre.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-pre.c,v retrieving revision 1.1.4.94 diff -u -3 -p -r1.1.4.94 tree-ssa-pre.c --- tree-ssa-pre.c 24 Oct 2003 07:41:31 -0000 1.1.4.94 +++ tree-ssa-pre.c 29 Oct 2003 15:03:21 -0000 @@ -323,7 +323,8 @@ struct expr_info

 /* Cache of expressions generated for given phi operand, to avoid
    recomputation and wasting memory.  */
-tree *phi_pred_cache;
+static tree *phi_pred_cache;
+static int n_phi_preds;

/* Trying to lookup ephi pred operand indexes takes forever on graphs
that have high connectivity because it's an O(n) linked list
@@ -1193,7 +1224,6 @@
/* Make a copy of Z as it would look in BB j, using the PHIs in BB. */


static tree
subst_phis (struct expr_info *ei, tree Z, basic_block j, basic_block bb)
{
tree stmt_copy;
- if (phi_pred_cache[j->index] != NULL_TREE)

This line looks broken. Do you really intend this?


It's replaced by the next few lines (which include a boundary check).


@@ -1200,6 +1232,12 @@
+
+  /* Return the cached version, if we have one. */
+  if (j->index < n_phi_preds
+      && phi_pred_cache[j->index] != NULL_TREE)
     return phi_pred_cache[j->index];
+
+  /* Otherwise, generate a new expression.  */
   pre_stats.exprs_generated++;
   stmt_copy = unshare_expr (Z);
   create_stmt_ann (stmt_copy);
   modify_stmt (stmt_copy);
   get_stmt_operands (stmt_copy);
@@ -1210,1 +1248,0 @@
-  phi_pred_cache[j->index] = stmt_copy;
@@ -1211,3 +1273,6 @@
+
+  if (j->index < n_phi_preds)
+    phi_pred_cache[j->index] = stmt_copy;
   return stmt_copy;
 }

@@ -3045,6 +3129,7 @@ pre_expression (struct expr_info *slot,
bitmap_clear (created_phi_preds);
ephi_pindex_htab = htab_create (500, ephi_pindex_hash, ephi_pindex_eq, free);
phi_pred_cache = xcalloc (last_basic_block, sizeof (tree));
+ n_phi_preds = last_basic_block;


   if (!expr_phi_insertion ((bitmap *)data, ei))
     goto cleanup;

Andreas -- Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126


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