GCC语言扩展__attribute __((vector_size(16)))不兼容的类型错误

时间:2018-11-19 18:54:25

标签: c gcc compiler-errors gcc-extensions

使用Csmith随机C程序生成器时,我尝试为变量添加GNU C语言变量扩展属性(((vector_size(16))))。

static uint64_t  func_1(void)
{/* block id: 0 */
    uint64_t l_6 __attribute__ ((vector_size (64)))  = 0xCD2466E9F08664A1LL;
    int32_t *l_7 /*__attribute__ ((vector_size (16)))*/ = (void*)0;
    int32_t *l_8 /*__attribute__ ((vector_size (16)))*/= &g_9;
    int32_t *l_10 = &g_5.f7;
    int32_t **l_11[10][8][3] = {{{&l_10,&l_10,&l_10},{&l_7,&l_8,&l_8},{&l_8,&l_8,(void*)0},{&l_7,&l_8,&l_10},{&l_8,&l_7,&l_10},{&l_8$
    int32_t *l_13 = &g_9;
    int i, j, k;
    (*l_8) |= (g_2[3] , (safe_rshift_func_int16_t_s_s(0L, (g_5 , (l_6 != g_5.f2)))));
    (*l_10) |= ((g_12 = l_10) != (void*)0);
    l_13 = &g_9;
    return (*l_13);

}

其中有#define提供给int8_t(如带符号的char),int16_t(如short)等。 并且safe_rshift_func_int16_t_s_s是内部定义的函数。

使用gcc编译上述程序会产生以下错误:

sam.c: In function ‘func_1’:
sam.c:53:56: error: incompatible types when initializing type ‘__vector(8) long long unsigned int’ using type ‘long long unsigned int’
     uint64_t l_6 __attribute__ ((vector_size (64)))  = 0xCD2466E9F08664A1LL;
                                                        ^~~~~~~~~~~~~~~~~~~~

属性放置错误吗? 我尝试参考链接到here的GCC门户网站的文档,但无法确切了解此属性的正确用法,请有人指出吗?

在使用此属性方面有任何限制吗? 谢谢社区。 !:)

我尝试搜索SO和Web,但大多数人都在谈论使用typedef作为解决方案。

0 个答案:

没有答案