[Bug c++/57546] New: templated gnu multiversion function pointer returns wrong value

mib.bugzilla at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Jun 6 17:54:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57546

            Bug ID: 57546
           Summary: templated gnu multiversion function pointer returns
                    wrong value
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mib.bugzilla at gmail dot com

/rdrive/ref/gcc/bin/g++48  fum.cpp -std=c++0x
-bash-4.1$ ./a.out
FAILED i:0 j:0x80499c6
-bash-4.1$ cat fum.cpp
template <typename T>
class Foo
{
public:
  /* Default version of foo.  */
  __attribute__ ((target("default")))
  T foo () { return 0; }

  /* corei7 version of foo.  */
  __attribute__ ((target("arch=corei7")))
  T foo () { return 0; }

  T (Foo::*p)() = &Foo::foo;   // pointer to member
};
#include <stdio.h>
int main ()
{
  Foo<int> f;
  int i = f.foo();
  int j = (f.*(f.p))();   // pointer to member call
  if (i==j && j==0) {
    printf("PASSED\n");
    return 0;
  } else {
    printf("FAILED i:%d j:0x%x\n", i, j);
    return -1;
  }
}
-bash-4.1$  /rdrive/ref/gcc/bin/g++48 -v
Using built-in specs.
COLLECT_GCC=/rdrive/ref/gcc/4.8.1/rhel60/x86/bin/g++
COLLECT_LTO_WRAPPER=/site/spt/rdrive/ref/gcc/4.8.1/rhel60/x86/bin/../libexec/gcc/i686-pc-linux-gnu/4.8.1/lto-wrapper
Target: i686-pc-linux-gnu
Configured with:
/rusers/sys_cron/grab_gcc/downloads_rel/4.8.1/gcc-4.8.1/configure
--prefix=/rdrive/ref/gcc/4.8.1/rhel60/x86 --enable-languages=c,c++,objc,fortran
--disable-multilib --target=i686-pc-linux-gnu --disable-bootstrap
--enable-decimal-float
--with-gmp=/rusers/sys_cron/grab_gcc/downloads_rel/lib/x86
--with-mpfr=/rusers/sys_cron/grab_gcc/downloads_rel/lib/x86
--with-mpc=/rusers/sys_cron/grab_gcc/downloads_rel/lib/x86
Thread model: posix
gcc version 4.8.1 (GCC)



More information about the Gcc-bugs mailing list