Constant pointer to (member) function, indirect call

Mark Mitchell mark@codesourcery.com
Wed Mar 2 16:39:00 GMT 2005


Helge Bahmann wrote:
> On Tue, 1 Mar 2005 Mark Mitchell wrote:
> 
>>Helge Bahmann wrote:
>>
>>>    void (A::*function2)(void) throw()=&A::function2;
>>>    (a.*function2)();
>>
>>>however for the call through pointer function2 gcc will always generate an
>>>indirect call, i386 assembly for example looks like:
>>
>>Yes, it should be able to do so, but it's not.  This is probably
>>something that could be done via range propagation.
> 
> 
> hm... it is not that my life depends on it, but is there a way to tell the
> compiler "this member function pointer will never point to a virtual
> function"? (especially because I know it is constant?)

No, there isn't.

-- 
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304



More information about the Gcc mailing list