> On 12/28/06, Jan Hubicka <jh@suse.cz> wrote:
> >Hi,
> >this patch makes ipe-pure-const and ipa-type-escape to "tolerate" (ie work
> >on
> >but not take advantage of) the SSA form. I've bootstrapped/regtested the
> >change
> >on x86_64-linux with IPA-SSA and running routine bootstrap/regtest on clean
> >mainline i686-linux now. Will commit it as obvious once testing converge.
>
> Uh, but your patch seems wrong.
> How can a type escape through an ssa_name, which is purely local to a
> function (IE non-escaping)?
Hehe, it is what you or Kenny told me to do about 2 years ago ;)
Here is updated patch I am re-testing now. Does it look better?
Honza
* ipa-type-escape.c (scan_for_refs): Look into SSA_NAMEs.
* ipa-pure-const.c (check_operand): Accept SSA_NAME.
Index: ipa-type-escape.c
===================================================================
*** ipa-type-escape.c (revision 120209)
--- ipa-type-escape.c (working copy)
*************** scan_for_refs (tree *tp, int *walk_subtr
*** 1267,1273 ****
result so we do mark the resulting cast as being
bad. */
if (check_call (rhs))
! bitmap_set_bit (results_of_malloc, DECL_UID (lhs));
break;
default:
break;
--- 1267,1277 ----
result so we do mark the resulting cast as being
bad. */
if (check_call (rhs))
! {
! if (TREE_CODE (lhs) == SSA_NAME)
! lhs = SSA_NAME_VAR (lhs);
! bitmap_set_bit (results_of_malloc, DECL_UID (lhs));
! }
break;
default:
break;
Index: ipa-pure-const.c
===================================================================
*** ipa-pure-const.c (revision 120209)
--- ipa-pure-const.c (working copy)
*************** check_operand (funct_state local,
*** 163,169 ****
static void
check_tree (funct_state local, tree t, bool checking_write)
{
! if ((TREE_CODE (t) == EXC_PTR_EXPR) || (TREE_CODE (t) == FILTER_EXPR))
return;
/* Any tree which is volatile disqualifies thie function from being
--- 163,170 ----
static void
check_tree (funct_state local, tree t, bool checking_write)
{
! if ((TREE_CODE (t) == EXC_PTR_EXPR) || (TREE_CODE (t) == FILTER_EXPR)
! || TREE_CODE (t) == SSA_NAME)
return;
/* Any tree which is volatile disqualifies thie function from being