On Thu, Jan 29, 2015 at 04:21:15PM +0100, Richard Biener wrote:
> On Thu, Jan 29, 2015 at 4:12 PM, Richard Biener
> >> Did you check whether other targets have function descriptors (seem
> >> to remember the Itanic here at least)?

Yes, ia64 and hppa64 use function descriptors.  I don't know of any
others.

> > thus when the function address-taking happens in the same function
> > as the call there will be no aliasing as it points to nothing (points-to
> > doesn't track function decls).  And if it's flowing in from the outside
> > you get "all globals".
> >
> > This means that you still will be able to create a testcase that is
> > miscompiled with exposing the address-taking to points-to analysis.

I'm sorry, I don't see how to.  (I'm not disagreeing, just ignorant.)
One thing to consider is that a function address is potentially
pointing at read-only memory.  eg. -z relro on current ld.bfd makes
powerpc64 .opd read-only.  So people can't twiddle a "real" function
descriptor.  The only case that matter for ppc64 are where people
build their own function descriptor, as is done in glibc.

> > And it means that indirect calls to const functions are severely
> > pessimized (not that it matters?) as they effectively become pure calls.

That might be a problem but see my other email comparing gcc object
files.

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to