📄 pr16194.c
字号:
/* { 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -