vector1.c

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 79 行

C
79
字号
// PR c++/19263// { dg-do run }// { dg-options "-O2" }typedef signed char v8qi __attribute__ ((vector_size (8)));extern "C" void abort (void);static unsigned char S[16];struct A{  int i;  v8qi j, k;  int l;};voidfoo (unsigned char v){  A a = { 1, { v, v, v, v, v, v, v, v },	  { v + 1, v + 1, v + 1, v + 1, v + 1, v + 1, v + 1, v + 1 }, 3 };  v8qi *s = (v8qi *) &S[0];  *s = a.j;  s[1] = a.k;}voidbar (unsigned char v){  v8qi val8 = { v, v, v, v, v, v, v, v };  v8qi *s = (v8qi *) &S[0];  *s = val8;}int n = 5, cnt;intnum (void){  ++cnt;  return n;}voidbaz (void){  static A a = { 0, { num (), num (), num (), num (), 6, 6, 6, 6 },		 { 7, 7, 7, 7, 8, 8, 8, 8 }, 0 };  v8qi *s = (v8qi *) &S[0];  *s = a.j;  s[1] = a.k;}intmain (){  int i;  foo (1);  for (i = 0; i < 8; ++i)    if (S[i] != 1)      abort ();  for (; i < 16; ++i)    if (S[i] != 2)      abort ();  bar (3);  for (i = 0; i < 8; ++i)    if (S[i] != 3)      abort ();  return 0;  baz ();  if (cnt != 4)    abort ();  for (i = 0; i < 16; ++i)    if (S[i] != 5 + (i / 4))      abort ();  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?