Расширение языка GCC __attribute __ ((vector_size (16))) ошибка несовместимого типа - PullRequest
0 голосов
/ 19 ноября 2018

При использовании 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 (например, знаковый символ), 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;
                                                        ^~~~~~~~~~~~~~~~~~~~

Неправильно ли установлен атрибут? Я пытался обратиться к документации с портала GCC, связанной здесь , но не смог точно понять, как правильно использовать этот атрибут, пожалуйста, кто-нибудь может указать на это?

Существуют ли какие-либо ограничения для использования этого атрибута? Спасибо сообществу. :)

Я пытался искать в SO и в Интернете, но большинство из них говорят об использовании typedef для своих решений.

...