pr15262-1.c

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

C
48
字号
/* PR 15262.   The alias analyzer only considers relations between pointers and   symbols.  If two pointers P and Q point to the same symbol S, then   their respective memory tags will either be the same or they will   have S in their alias set.      However, if there are no common symbols between P and Q, TBAA will   currently miss their alias relationship altogether.  */struct A{  int t;  int i;};int foo () { return 3; }main (){  struct A loc, *locp;  float f, g, *p;  int T355, *T356;  /* Avoid the partial hack in TBAA that would consider memory tags if     the program had no addressable symbols.  */  f = 3;  g = 2;  p = foo () ? &g : &f;  if (*p > 0.0)    g = 1;  /* Store into *locp and cache its current value.  */  locp = malloc (sizeof (*locp));  locp->i = 10;  T355 = locp->i;  /* Take the address of one of locp's fields and write to it.  */  T356 = &locp->i;  *T356 = 1;  /* Read the recently stored value.  If TBAA fails, this will appear     as a redundant load that will be replaced with '10'.  */  T355 = locp->i;  if (T355 != 1)    abort ();  return 0;}

⌨️ 快捷键说明

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