IPA merge: make ipa-type-escape and ipa-pure-const deal with SSA form
Daniel Berlin
dberlin@dberlin.org
Fri Dec 29 05:52:00 GMT 2006
On 12/28/06, Jan Hubicka <jh@suse.cz> wrote:
> > 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?
Sigh now i wonder what happens when we have bad casts to ssa variables
and then copy the bad-casted variable to a global/static.
Ugh.
You may have been right the first time.
>
> 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
>
More information about the Gcc-patches
mailing list