Hi, I've been looking at an issue in mysql compilation which appears to be due to this patch.
On 10 May 2013 18:27, Martin Jambor <mjam...@suse.cz> wrote: > Hi, > > as we discover targets of previously indirect calls in ipa-inline and > ipa-cp, we sometimes figure out that the targets are not a function. > One typical example is when NULL is passed as a function pointer OK, this part makes sense to me. > parameter, another is when C++ member-pointer points to a virtual > function and the overloaded field of the structure which can also hold > pointers to non-virtual methods contains odd integer constants. I'm struggling to understand why such a member-pointer call would be illegal in a well formed program. Attached is a fragment of code that demonstrates the issue I've been looking at. When compiled at -O3 the 047i.inline dump tells me that: ipa-prop: Discovered direct call to non-function in unsigned int A::foo(unsigned int (H::*)() const) const/11, making it unreachable. not inlinable: unsigned int A::foo(unsigned int (H::*)() const) const/11 -> void __builtin_unreachable()/12, function body not available This behavior appears to be the explicit intent of the original patch, the call to the member function pointer has been replaced with __builtin_unreachable, but that looks like a legitimate call to me. What am I missing? Thanks /Marcus
foo.cc
Description: Binary data