This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Aliasing: look through pointer's def stmt


On Fri, 25 Oct 2013, Richard Biener wrote:

Ah, so you are looking at call_may_clobber_ref_p_1 and its pointer handling
when special-casing builtins?

Yes.

Note that fields can only be disambiguated
if the size of the access is known

TBAA could also help sometimes.

(not sure what fancy attribute you are going to invent here ...).

That will certainly require quite a bit of discussion...

Generally the simple alias machinery is written to be cheap,

I wouldn't mind an expensive version ;-)

walking use-def chains isn't.

Peeking at the defining statement shouldn't be very costly, as long as you don't do it recursively.

no need to look at gimple_has_volatile_ops (stmt).

Ok.

Also you want to handle

p_2 = p_1 + CST;
foo (p_2);

which has a related canonical form,

p_2 = &MEM[p_1, CST];

This testcase seems relevant, I'll see if I can handle it:

void f (const char *c, int *i)
{
  *i = 42;
  __builtin_memcpy (i + 1, c, sizeof (int));
  if (*i != 42) __builtin_abort();
}

The patch is ok with the volatile check removed, you can followup
with handling POINTER_PLUS_EXPR if you like.

Thanks.

--
Marc Glisse


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]