[Bug tree-optimization/28778] [4.0/4.1/4.2 Regression] alias bug with cast and call clobbered

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Aug 19 14:27:00 GMT 2006



------- Comment #8 from rguenth at gcc dot gnu dot org  2006-08-19 14:27 -------
;; Function find (find)

Points-to analysis

Constraints:

ANYTHING = &ANYTHING
READONLY = &ANYTHING
INTEGER = &ANYTHING
alistp = &ANYTHING
blist_3 = alistp
blist_6 = &list
blist_1 = blist_3
blist_1 = blist_6
blist.0_7 = blist_1

Collapsing static cycles and doing variable substitution:
Collapsing blist_3 into alistp
Collapsing blist.0_7 into blist_1

Solving graph:

Points-to sets

NULL = { }
ANYTHING = { ANYTHING }
READONLY = { ANYTHING }
INTEGER = { ANYTHING }
alistp = { ANYTHING }
blist_3 = { ANYTHING }
blist_6 = { list }
list = { }
blist_1 = { ANYTHING list }
blist.0_7 = { ANYTHING list }

find: Total number of aliased vops: 0

Referenced variables in find: 5

Variable: alistp, UID 1523, const int *, default def: alistp_2

Variable: blist, UID 1526, const int *

Variable: list, UID 1527, int[32], is addressable, default def: list_4

Variable: blist.0, UID 1528, const GLint *, symbol memory tag: SMT.30

Variable: SMT.30, UID 1575, const GLint, is addressable, is global, call
clobbered (, passed to call, is global var )



Pointed-to sets for pointers in find

alistp_2, its value escapes, points-to anything
blist_3, points-to anything
blist_6, points-to vars: { list }
blist_1, points-to anything
blist.0_7, is dereferenced, its value escapes, points-to anything


Flow-insensitive alias information for find

Aliased symbols

list, UID 1527, int[32], is addressable, default def: list_4
SMT.30, UID 1575, const GLint, is addressable, is global, call clobbered (,
passed to call, is global var )

Dereferenced pointers

blist.0, UID 1528, const GLint *, symbol memory tag: SMT.30

Symbol memory tags

SMT.30, UID 1575, const GLint, is addressable, is global, call clobbered (,
passed to call, is global var )


Flow-sensitive alias information for find

SSA_NAME pointers


Name memory tags




Registering new PHI nodes in block #0



Registering new PHI nodes in block #2



Registering new PHI nodes in block #3



Registering new PHI nodes in block #4

Updating SSA information for statement list[3] = 42;



Registering new PHI nodes in block #5

Updating SSA information for statement aglChoosePixelFormat (blist.0_7);


Symbols to be put in SSA form

list SMT.30
 Incremental SSA update started at block: 0

Number of blocks in CFG: 6
Number of blocks to update: 5 ( 83%)

Affected blocks: 0 2 3 4 5


find (alistp)
{
  int list[32];
  const int * blist;
  const GLint * blist.0;

  # BLOCK 2
  # PRED: ENTRY (fallthru)
  if (alistp_2 != 0B) goto <L0>; else goto <L1>;
  # SUCC: 3 (true) 4 (false)

  # BLOCK 3
  # PRED: 2 (true)
<L0>:;
  blist_3 = alistp_2;
  goto <bb 5> (<L2>);
  # SUCC: 5 (fallthru)

  # BLOCK 4
  # PRED: 2 (false)
<L1>:;
  #   list_5 = V_MAY_DEF <list_4>;
  list[3] = 42;
  blist_6 = &list;
  # SUCC: 5 (fallthru)

  # BLOCK 5
  # PRED: 3 (fallthru) 4 (fallthru)
  # blist_1 = PHI <blist_3(3), blist_6(4)>;
<L2>:;
  blist.0_7 = (const GLint *) blist_1;
  #   SMT.30_9 = V_MAY_DEF <SMT.30_8>;
  aglChoosePixelFormat (blist.0_7);
  return;
  # SUCC: EXIT

}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28778



More information about the Gcc-bugs mailing list