diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 76a237dd638f9cbad616f1c0f61c9866fd860fa0..43098de9f47590ae3309442343b81239c4e1bf8e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-12-31  Andrew Pinski  <pinskia@ohysics.uc.edu>
+
+	PR tree-opt/25612
+	* tree-ssa-pre.c (compute_avail): Treat the static chain decl as a
+	parameter and pretend that it is defined in the entry basic block.
+
 2005-12-30  Kazu Hirata  <kazu@codesourcery.com>
 
 	* tree-outof-ssa.c (_elim_graph): Change the type of STACK to
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index f0bf0205297cb781329105b3cf8e7efe950112ef..2e2fd64b626ccaa397e842a9e51ffc39ccb0d66c 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -3086,6 +3086,19 @@ compute_avail (void)
 	}
     }
 
+  /* Likewise for the static chain decl. */
+  if (cfun->static_chain_decl)
+    {
+      param = cfun->static_chain_decl;
+      if (default_def (param) != NULL)
+        {
+          tree def = default_def (param);
+          vn_lookup_or_add (def, NULL);
+          bitmap_insert_into_set (TMP_GEN (ENTRY_BLOCK_PTR), def);
+          bitmap_value_insert_into_set (AVAIL_OUT (ENTRY_BLOCK_PTR), def);
+        }
+    }
+
   /* Allocate the worklist.  */
   worklist = XNEWVEC (basic_block, n_basic_blocks);