Menu

#2126 attribute may_alias causes compile failure in the given sample

OTHER
unread
nobody
None
Bug
none
Unknown
False
2014-08-19
2013-11-02
No

I'll keep it simple: this code doesn't compile, and I think it should.

template <class T>
struct rv : T
{} __attribute__((__may_alias__));

struct X
{
    operator rv<X>&()
    { return *static_cast< rv<X>* >(this); }
    X( rv<X>& );
};

X::X( rv<X>& ) {}

gcc -v
Using built-in specs.
COLLECT_GCC=c:\MinGW\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.8.1/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.8.1/configure --prefix=/mingw --host=mingw32 --build=mingw32 --without-pic --enable-shared --enable-static --with-gnu-ld --enable-lto --enable-libssp --disable-multilib --enable-languages=c,c++,fortran,objc,obj-c++,ada --disable-sjlj-exceptions --with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --with-gmp=/usr/src/pkg/gmp-5.1.2-1-mingw32-src/bld --with-mpc=/usr/src/pkg/mpc-1.0.1-1-mingw32-src/bld --with-mpfr= --with-system-zlib --with-gnu-as --enable-decimal-float=yes --enable-libgomp --enable-threads --with-libiconv-prefix=/mingw32 --with-libintl-prefix=/mingw
Thread model: win32
gcc version 4.8.1 (GCC)

Regards,
Kris

Discussion