Would alias analysis help WRT builtin memmove -> builtin memcpy ?

Kaveh R. Ghazi ghazi@caip.rutgers.edu
Wed Mar 29 15:34:00 GMT 2000


 > From: Jeffrey A Law <law@cygnus.com>
 > 
 >   In message < 200003292249.RAA29751@caip.rutgers.edu >you write:
 >   > So I naively tried the type based stuff, using get_alias_type() on the
 >   > TREE_VALUE() of the parameters.  But I quickly saw that by the time I
 >   > got the argument trees, they were already both of type void* so the
 >   > types aliased to the same set.  (At least that's my uneducated guess,
 >   > they were both in the same set #11, while the length parameter was in
 >   > set #9.)
 > By definition, a void * can alias anything (just like a char *).

Right, but then shouldn't it have returned set 0, not 11?  Anyway, for
the question at hand, I don't think type based aliasing is
appropriate.  I was just playing around with it...


 > 
 >   > Then I thought the base ptr stuff might be useful, but I wasn't sure
 >   > how to access that code.  Any pointers?  (No pun intended...)
 > The code is not designed for you to be able to independently ask about
 > type or base pointer aliasing questions, but  instead can pointers A and
 > B alias each other -- if it returns yes, then they may alias, you don't
 > know how or why, only that they may alias.
 > 
 > I don't think adding separate queries of this nature would be a good idea.
 > jeff

I didn't plan to add any new queries.  What you describe is exactly
what I wanted to do.

If I can test whether the src and dst pointers passed to memmove _may_
alias each other and the existing query tells me they don't, then its
safe to call expand_builtin_memcpy in place of memmove.  Right?

So can you point me at existing code which does this?  Given some
examples, I'll try and figure out how to do this on my own.  (If only
for fun, whether I produce something useful can be evaluated later.)

		Thanks,
		--Kaveh
--
Kaveh R. Ghazi			Engagement Manager / Project Services
ghazi@caip.rutgers.edu		Qwest Internet Solutions


More information about the Gcc mailing list