pr19633.c

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

C
50
字号
/* { dg-do link } *//* { dg-options "-O2" } */struct S{  int w, x, y, z;};struct T{  int r;  struct S s;};voidfoo (int a, struct T b){  struct S *c = 0;  if (a)    c = &b.s;  b.s.w = 3;  /* Since 'c' may be pointing to NULL here, we used to flag it as     pointing anywhere, which was forcing the aliaser to mark as     call-clobbered every other variable pointed-to by 'c' ('b' in     this case).  This, in turn, caused the insertion of V_MAY_DEFs     for 'b' at this call-site, which prevented constant propagation     from 'b.s.w = 3' to 'if (b.s.w != 3)'.  */  bar (*c, a);  if (b.s.w != 3)    link_error ();}int main (){  struct T b;  foo (3, b);  return 0;}int X;int bar (struct S x, int i){  X = 3;}

⌨️ 快捷键说明

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