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);