pr16194.c

来自「用于进行gcc测试」· C语言 代码 · 共 79 行

C
79
字号
/* { dg-do compile } *//* { dg-options "-O" } *//* { dg-bogus "internal compiler error" "ICE" { target *-*-* } 0 } */#undef SKIP#define ASMDECL __asm (REG);#define CLOBBER_LIST : REG#define INP_CLOBBER_LIST : CLOBBER_LIST#if defined (__alpha__)# define REG "$1"#elif defined (__CRIS__) || defined (__sh__)# define REG "r10"#elif defined (__hppa__)# define REG "%r10"#elif defined (__i386__)# define REG "%eax"#elif defined (__MMIX__)# define REG "$8"#elif defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) \        || defined (__POWERPC__) || defined (PPC) || defined (_IBMR2)# define REG "6"#elif defined (__x86_64__)# define REG "rax"#elif defined (__m68k__)# define REG "%d0"#else/* Make this test harmless for any target not recognized above.  */# define SKIP 1#endif#ifndef SKIPstruct A{  int a;};struct B{  struct A b[3];};struct C{  struct B c;};void bug (void){  register char* dst ASMDECL;  __asm__ ("":"=g"(*dst): : REG);}/* The tree optimizers currently prevent us from finding an overlap -   we end up using a copy of dst rather than dst.   But at least make sure we don't get an ICE.  */void bug2 (void){  register char* dst ASMDECL;  __asm__ ("": :"g"(*dst) CLOBBER_LIST);}voidfoo (void){  register struct C *dst ASMDECL;  __asm__ ("" : "=g"(dst->c.b[1].a) INP_CLOBBER_LIST);}#elseint main (){  return 0;}#endif

⌨️ 快捷键说明

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