Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/attr-vector_size.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
/* PR middle-end/89797 - ICE on a vector_size (1LU << 33) int variable PR c/89798 - excessive vector_size silently accepted and truncated { dg-do compile { target int32plus } } { dg-options "-Wall -Wno-unused" } */ #define ASSERT(e) _Static_assert (e, #e) #define VEC(N) __attribute__ ((vector_size (N))) #define POW2(N) (1LLU << N) #define CAT(a, b) a ## b #define CONCAT(a, b) CAT (a, b) #define DEFVEC(storage, N) \ typedef VEC (POW2 (N)) char CONCAT (Vec, N); \ storage CONCAT (Vec, N) CONCAT (v, N); \ ASSERT (sizeof (CONCAT (Vec, N)) == POW2 (N)); \ ASSERT (sizeof (CONCAT (v, N)) == POW2 (N)) DEFVEC (extern, 27); DEFVEC (extern, 28); DEFVEC (extern, 29); DEFVEC (extern, 30); #if __SIZEOF_SIZE_T__ > 4 DEFVEC (extern, 31); DEFVEC (extern, 32); DEFVEC (extern, 33); DEFVEC (extern, 34); DEFVEC (extern, 60); DEFVEC (extern, 61); DEFVEC (extern, 62); VEC (POW2 (63)) char v63; /* { dg-error "'vector_size' attribute argument value '9223372036854775808' exceeds 9223372036854775807" "LP64" { target lp64 } } */ #else VEC (POW2 (31)) char v31; /* { dg-error "'vector_size' attribute argument value '2147483648' exceeds 2147483647" "ILP32" { target ilp32 } } */ VEC (POW2 (32)) char v32; /* { dg-error "'vector_size' attribute argument value '4294967296' exceeds 2147483647" "ILP32" { target ilp32 } } */ #endif void test_local_scope (void) { DEFVEC (auto, 27); DEFVEC (auto, 28); DEFVEC (auto, 29); DEFVEC (auto, 30); #if __SIZEOF_SIZE_T__ > 4 DEFVEC (auto, 31); DEFVEC (auto, 32); DEFVEC (auto, 33); DEFVEC (auto, 34); DEFVEC (auto, 60); DEFVEC (auto, 61); DEFVEC (auto, 62); VEC (POW2 (63)) char v63; /* { dg-error "'vector_size' attribute argument value '9223372036854775808' exceeds 9223372036854775807" "LP64" { target lp64 } } */ #else VEC (POW2 (31)) char v31; /* { dg-error "'vector_size' attribute argument value '2147483648' exceeds 2147483647" "ILP32" { target ilp32 } } */ VEC (POW2 (32)) char v32; /* { dg-error "'vector_size' attribute argument value '4294967296' exceeds 2147483647" "ILP32" { target ilp32 } } */ #endif }