clang ++崩溃与模板包装对齐的类

时间:2015-04-27 20:36:44

标签: c++ clang++

我看到一个奇怪的崩溃试图在对齐的struct / class周围使用包装器模板类。使用clang编译时,以下程序崩溃,同时与gcc和visual studio一起正常工作。

struct __attribute__( ( aligned( 16 ) ) ) AlignedStruct
{ 
    AlignedStruct( ) { } 
    float x,y,z,w;
};

template <typename P1> class Wrapper
{
public:
    P1 Inner;
};

int main( )
{
    Wrapper<AlignedStruct> * t1 = new Wrapper<AlignedStruct>( );
    return 1;
}

崩溃似乎是在调用AlignedStruct构造函数时(如果我删除它,clang编译的代码也会运行)。

有谁能解释这里发生了什么?

谢谢!

编辑:

崩溃发生在cygwin32和cygwin64下的clang 3.4.2 和Ubuntu 14.04(x32)和Ubuntu 14.10(x32)下的clang 3.4.1

但是,在使用FreeBSD 10.1(x32)和OS X Yosemite下的clang 3.4.1进行测试时,不会发生这种情况。

我尝试过使用编译标记,但我似乎无法对这些标记产生任何影响,所以我只是在运行clang++ file.cpp

0 个答案:

没有答案