This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/28945] New: extracting the function pointer from a bound pointer to member function doesn't work.
- From: "pluto at agmk dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 3 Sep 2006 23:12:53 -0000
- Subject: [Bug other/28945] New: extracting the function pointer from a bound pointer to member function doesn't work.
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
following testcase should work but it fails at least on ia32.
#include <cstdio>
struct base
{
virtual ~base() { }
virtual void foo() = 0;
int val;
};
struct derived : public base
{
void foo()
{
std::printf( "foo(): this -> %p, val = %d\n",
(void*)this, val );
}
};
typedef void (* pf)();
void test( base* o, void (base::* pmf)() )
{
pf f1 = (pf)( o->*pmf );
f1();
}
int main()
{
derived object;
object.val = 7;
test( &object, &base::foo );
return 0;
};
$ g++ test.cpp -Wall -Wno-pmf-conversions -m32 -O0 && ./a.out
foo(): this -> 0xf7cd2412, val = -2046820353
$ g++ test.cpp -Wall -Wno-pmf-conversions -m32 -O1 && ./a.out
foo(): this -> 0xf7fbf6e0, val = -134501465
$ g++ test.cpp -Wall -Wno-pmf-conversions -m32 -O2 && ./a.out
foo(): this -> 0xffffceec, val = 7
$ g++ test.cpp -Wall -Wno-pmf-conversions -m64 -O0 && ./a.out
foo(): this -> 0x7fffff8afe20, val = 7
$ g++ test.cpp -Wall -Wno-pmf-conversions -m64 -O1 && ./a.out
foo(): this -> 0x7fffffe3af40, val = 7
$ g++ test.cpp -Wall -Wno-pmf-conversions -m64 -O2 && ./a.out
foo(): this -> 0x7fffffb443e0, val = 7
--
Summary: extracting the function pointer from a bound pointer to
member function doesn't work.
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pluto at agmk dot net
GCC target triplet: ix86-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28945