Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics&...

37
Carnegie Mellon Lecture 20 Pointer Analysis Basics Design Op-ons Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilis-c Pointer Analysis (Slide content courtesy of Greg Steffan, U. of Toronto) Todd C. Mowry 15745: Pointer Analysis 1

Transcript of Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics&...

Page 1: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Lecture  20  

Pointer  Analysis  

•  Basics  •  Design  Op-ons  •  Pointer  Analysis  Algorithms  •  Pointer  Analysis  Using  BDDs  •  Probabilis-c  Pointer  Analysis  

(Slide  content  courtesy  of  Greg  Steffan,  U.  of  Toronto)  

Todd  C.  Mowry   15-­‐745:  Pointer  Analysis   1  

Page 2: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Pros  and  Cons  of  Pointers  

•  Many  procedural  languages  have  pointers  –  e.g.,  C  or  C++:  int  *p  =  &x;  

•  Pointers  are  powerful  and  convenient  –  can  build  arbitrary  data  structures  

•  Pointers  can  also  hinder  compiler  op-miza-on  –  hard  to  know  where  pointers  are  poin-ng  –  must  be  conserva-ve  in  their  presence  

•  Has  inspired  much  research  –  analyses  to  decide  where  pointers  are  poin-ng  –  many  op-ons  and  trade-­‐offs  –  open  problem:  a  scalable  accurate  analysis  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   2  

Page 3: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Pointer  Analysis  Basics:  Aliases  

•  Two  variables  are  aliases  if:  –  they  reference  the  same  memory  loca-on  

•  More  useful:  –  prove  variables  reference  different  loca-ons  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   3  

int x,y;

int *p = &x;

int *q = &y;

int *r = p;

int **s = &q;

Alias  sets:  

Page 4: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

The  Pointer  Alias  Analysis  Problem  

•  Decide  for  every  pair  of  pointers  at  every  program  point:  –  do  they  point  to  the  same  memory  loca-on?  

•  A  difficult  problem  –  shown  to  be  undecidable  by  Landi,  1992  

•  Correctness:  –  report  all  pairs  of  pointers  which  do/may  alias  

•  Ambiguous:  –  two  pointers  which  may  or  may  not  alias  

•  Accuracy/Precision:  –  how  few  pairs  of  pointers  are  reported  while  remaining  correct  –  ie.,  reduce  ambiguity  to  improve  accuracy  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   4  

Page 5: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Many  Uses  of  Pointer  Analysis  

•  Basic  compiler  op-miza-ons  –  register  alloca-on,  CSE,  dead  code  elimina-on,  live  variables,  instruc-on  

scheduling,  loop  invariant  code  mo-on,  redundant  load/store  elimina-on  •  Paralleliza-on  

–  instruc-on-­‐level  parallelism  –  thread-­‐level  parallelism  

•  Behavioral  synthesis  –  automa-cally  conver-ng  C-­‐code  into  gates  

•  Error  detec-on  and  program  understanding  –  memory  leaks,  wild  pointers,  security  holes  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   5  

Page 6: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Challenges  for  Pointer  Analysis  

•  Complexity:  huge  in  space  and  -me  –  compare  every  pointer  with  every  other  pointer  –  at  every  program  point  –  poten-ally  considering  all  program  paths  to  that  point  

•  Scalability  vs  accuracy  trade-­‐off  –  different  analyses  mo-vated  for  different  purposes  –  many  useful  algorithms  (adds  to  confusion)  

•  Coding  corner  cases  –  pointer  arithme-c  (*p++),  cas-ng,  func-on  pointers,  long-­‐jumps  

•  Whole  program?  –  most  algorithms  require  the  en-re  program  –  library  code?    op-mizing  at  link-­‐-me  only?  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   6  

Page 7: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Pointer  Analysis:  Design  Op-ons  

•  Representa-on  •  Heap  modeling  •  Aggregate  modeling    •  Flow  sensi-vity  •  Context  sensi-vity  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   7  

Page 8: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Representa-on  

•  Track  pointer  aliases  –  <*a,  b>,  <*a,  e>,  <b,  e>,  

               <**a,  c>,  <**a,  d>,  …  –  More  precise,  less  efficient  

•  Track  points-­‐to  informa-on  –  <a,  b>,  <b,  c>,  <b,  d>,  

               <e,  c>,  <e,  d>  –  Less  precise,  more  efficient  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   8  

a = &b;

b = &c;

b = &d;

e = b;

Page 9: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Heap  Modeling  Op-ons  

•  Heap  merged  –  i.e.  “no  heap  modeling”  

•  Alloca-on  site  (any  call  to  malloc/calloc)  –  Consider  each  to  be  a  unique  loca-on  –  Doesn’t  differen-ate  between  mul-ple  objects  allocated  by  the  same  

alloca-on  site  •  Shape  analysis  

–  Recognize  linked  lists,  trees,  DAGs,  etc.  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   9  

Page 10: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Aggregate  Modeling  Op-ons  

Arrays  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   10  

…  Elements  are  treated  as  individual  loca-ons  

or  

Treat  en-re  array  as  a  single  loca-on  

or  

Treat  en-re  structure  as  a  single  loca-on  

…  

Elements  are  treated  as  individual  loca-ons  (“field  sensi-ve”)  

Structures  

or  

Treat  first  element  separate  from  others  

…  

Page 11: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Flow  Sensi-vity  Op-ons  

•  Flow  insensi-ve  –  The  order  of  statements  doesn’t  maner  

•  Result  of  analysis  is  the  same  regardless  of  statement  order  

–  Uses  a  single  global  state  to  store  results  as  they  are  computed  –  Not  very  accurate  

•  Flow  sensi-ve  –  The  order  of  the  statements  maner  –  Need  a  control  flow  graph  –  Must  store  results  for  each  program  point  –  Improves  accuracy  

•  Path  sensi-ve  –  Each  path  in  a  control  flow  graph  is  considered  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   11  

Page 12: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Flow  Sensi-vity  Example  

(assuming  alloca;on-­‐site  heap  modeling)  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   12  

S1: a = malloc(…); S2: b = malloc(…); S3: a = b; S4: a = malloc(…); S5: if(c) a = b; S6: if(!c) a = malloc(…); S7: … = *a;

Flow  Insensi-ve  aS7  à  

Flow  Sensi-ve  aS7  à  

Path  Sensi-ve  aS7  à  

Page 13: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

int a, b, *p; int main() { S1: f(); S2: p = &a; S3: g(); }

Context  Sensi-vity  Op-ons  

•  Context  insensi-ve/sensi-ve  –  whether  to  consider  different  calling  contexts  –  e.g.,  what  are  the  possibili-es  for  p  at  S6?  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   13  

int f() { S4: p = &b; S5: g(); }

int g() { S6: … = *p; }

Context  Insensi-ve:  

Context  Sensi-ve:  

Page 14: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Pointer  Alias  Analysis  Algorithms  

References:  •  “Points-­‐to  analysis  in  almost  linear  ;me”,  Steensgaard,  POPL  1996  •  “Program  Analysis  and  Specializa;on  for  the  C  Programming  Language”,  

 Andersen,  Technical  Report,  1994  •  “Context-­‐sensi;ve  interprocedural  points-­‐to  analysis  in  the  presence  of  

 func;on  pointers”,  Emami  et  al.,  PLDI  1994  •  “Pointer  analysis:  haven't  we  solved  this  problem  yet?”,  Hind,  PASTE  2001  •  “Which  pointer  analysis  should  I  use?”,  Hind  et  al.,  ISSTA  2000    

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   14  

Page 15: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Address  Taken  

•  Basic,  fast,  ultra-­‐conserva-ve  algorithm  –  flow-­‐insensi-ve,  context-­‐insensi-ve  –  oren  used  in  produc-on  compilers  

•  Algorithm:  –  Generate  the  set  of  all  variables  whose  addresses  are  assigned  to  another  

variable.  –  Assume  that  any  pointer  can  poten-ally  point  to  any  variable  in  that  set.  

•  Complexity:  O(n)  -­‐  linear  in  size  of  program  •  Accuracy:  very  imprecise    

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   15  

Page 16: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Address  Taken  Example  

pS5  =  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   16  

T *p, *q, *r; int main() { S1: p = alloc(T); f(); g(&p); S4: p = alloc(T); S5: … = *p; }

void f() { S6: q = alloc(T); g(&q); S8: r = alloc(T); }

g(T **fp) { T local; if(…) s9: p = &local; }

Page 17: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Andersen’s  Algorithm  

•  Flow-­‐insensi-ve,  context-­‐insensi-ve,  itera-ve    •  Representa-on:  

–  one  points-­‐to  graph  for  en-re  program  –  each  node  represents  exactly  one  loca-on  

•  For  each  statement,  build  the  points-­‐to  graph:  

•  Iterate  un-l  graph  no  longer  changes  •  Worst  case  complexity:  O(n3),  where  n  =  program  size  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   17  

y = &x y  points-­‐to  x

y = x if  x  points-­‐to  w then  y points-­‐to  w

*y = x if  y  points-­‐to  z  and  x  points-­‐to  w then  z  points-­‐to  w

y = *x if  x  points-­‐to  z  and  z  points-­‐to  w then  y  points-­‐to  w

Page 18: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Andersen  Example  

pS5  =  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   18  

T *p, *q, *r; int main() { S1: p = alloc(T); f(); g(&p); S4: p = alloc(T); S5: … = *p; }

void f() { S6: q = alloc(T); g(&q); S8: r = alloc(T); }

g(T **fp) { T local; if(…) s9: p = &local; }

Page 19: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Steensgaard’s  Algorithm  

•  Flow-­‐insensi-ve,  context-­‐insensi-ve  •  Representa-on:    

–  a  compact  points-­‐to  graph  for  en-re  program  •  each  node  can  represent  mul-ple  loca-ons  •  but  can  only  point  to  one  other  node    

–  i.e.  every  node  has  a  fan-­‐out  of  1  or  0  •  union-­‐find  data  structure  implements  fan-­‐out  

–  “unioning”  while  finding  eliminates  need  to  iterate  •  Worst  case  complexity:  O(n)  •  Precision:  less  precise  than  Andersen’s  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   19  

Page 20: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Steensgaard  Example  

pS5  =  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   20  

T *p, *q, *r; int main() { S1: p = alloc(T); f(); g(&p); S4: p = alloc(T); S5: … = *p; }

void f() { S6: q = alloc(T); g(&q); S8: r = alloc(T); }

g(T **fp) { T local; if(…) s9: p = &local; }

Page 21: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Example  with  Flow  Sensi-vity  

pS5  =  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   21  

T *p, *q, *r; int main() { S1: p = alloc(T); f(); g(&p); S4: p = alloc(T); S5: … = *p; }

void f() { S6: q = alloc(T); g(&q); S8: r = alloc(T); }

g(T **fp) { T local; if(…) s9: p = &local; }

pS9  =  

Page 22: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Pointer  Analysis  Using  BDDs  

References:  •  “Cloning-­‐based  context-­‐sensi;ve  pointer  alias  analysis  using  binary  decision  

diagrams”,  Whaley  and  Lam,  PLDI  2004  •  “Symbolic  pointer  analysis  revisited”,  Zhu  and  Calman,  PDLI  2004  •  “Points-­‐to  analysis  using  BDDs”,  Berndl  et  al,  PDLI  2003  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   22  

Page 23: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Binary  Decision  Diagram  (BDD)  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   23  

Binary  Decision  Tree   Truth  Table   BDD  

Page 24: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

BDD-­‐Based  Pointer  Analysis  

•  Use  a  BDD  to  represent  transfer  func-ons    –  encode  procedure  as  a  func-on  of  its  calling  context  –  compact  and  efficient  representa-on  

•  Perform  context-­‐sensi-ve,  inter-­‐procedural  analysis  –  similar  to  dataflow  analysis  –  but  across  the  procedure  call  graph  

•  Gives  accurate  results  –  and  scales  up  to  large  programs  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   24  

Page 25: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Probabilis-c  Pointer  Analysis  

References:  •  “A  Probabilis;c  Pointer  Analysis  for  Specula;ve  Op;miza;ons”,  DaSilva  and  

Steffan,  ASPLOS  2006  •  “Compiler  support  for  specula;ve  mul;threading  architecture  with  probabilis;c  

points-­‐to  analysis”,  Shen  et  al.,  PPoPP  2003  •  “Specula;ve  Alias  Analysis  for  Executable  Code”,  Fernandez  and  Espasa,  PACT  2002  •  “A  General  Compiler  Framework  for  Specula;ve  Op;miza;ons  Using  Data  

Specula;ve  Code  Mo;on”,  Dai  et  al.,  CGO  2005  •  “Specula;ve  register  promo;on  using  Advanced  Load  Address  Table  (ALAT)”,  Lin  et  

al.,  CGO  2003  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   25  

Page 26: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Pointer  Analysis:  Yes,  No,  &  Maybe  

•  Do  pointers  a  and  b  point  to  the  same  loca-on?  –  Repeat  for  every  pair  of  pointers  at  every  program  point  

•  How  can  we  op-mize  the  “maybe”  cases?    

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   26  

*a = ~ ~ = *b

Definitely  Not  

Definitely  

Maybe  

Pointer  Analysis  

op-mize  

*a = ~ ~ = *b

Page 27: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Let’s  Speculate  

•  Implement  a  poten-ally  unsafe  op-miza-on  –  Verify  and  Recover  if  necessary  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   27  

int *a, x; … while(…) { x = *a; … } a  is  probably    

loop  invariant    

int *a, x, tmp; … tmp = *a; while(…) { x = tmp; … } <verify, recover?>

Page 28: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Data  Specula-ve  Op-miza-ons  

•  EPIC  Instruc-on  sets  –  Support  for  specula-ve  load/store  instruc-ons  (e.g.,  Itanium)  

•  Specula-ve  compiler  op-miza-ons  –  Dead  store  elimina-on,  redundancy  elimina-on,  copy  propaga-on,  strength  

reduc-on,  register  promo-on  •  Thread-­‐level  specula-on  (TLS)    

–  Hardware  and  compiler  support  for  specula-ve  parallel  threads  •  Transac-onal  programming  

–  Hardware  and  sorware  support  for  specula-ve  parallel  transac-ons  

Heavy  reliance  on  detailed  profile  feedback  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   28  

Page 29: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Can  We  Quan-fy  “Maybe”?  

•  Es-mate  the  poten-al  benefit  for  specula-ng:  

   

Ideally  “maybe”  should  be  a  probability.  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   29  

SPECULATE?

Expected  speedup  (if  successful)  

Recovery  penalty  

(if  unsuccessful)  

Overhead  for  verify  

Maybe  

Probability  of  success  

Page 30: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Definitely  Not  

Definitely  

Maybe  

Conven-onal  Pointer  Analysis  

•  Do  pointers  a  and  b  point  to  the  same  loca-on?  –  Repeat  for  every  pair  of  pointers  at  every  program  point  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   30  

*a = ~ ~ = *b

p  =  0.0  

p  =  1.0  

0.0  <  p  <  1.0  

Pointer  Analysis  

op-mize  

*a = ~ ~ = *b

Page 31: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Definitely  Not  

Definitely  

Maybe  

Probabilis-c  Pointer  Analysis  

•  Poten-al  advantage  of  Probabilis-c  Pointer  Analysis:  –  it  doesn’t  need  to  be  safe  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   31  

*a = ~ ~ = *b

p  =  0.0  

p  =  1.0  

0.0  <  p  <  1.0  

Probabilis-c  Pointer  Analysis  

op-mize  

*a = ~ ~ = *b

Page 32: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

PPA  Research  Objec-ves  

•  Accurate  points-­‐to  probability  informa-on  –  at  every  sta-c  pointer  dereference  

•  Scalable  analysis    –  Goal:  en-re  SPEC  integer  benchmark  suite  

•  Understand  scalability/accuracy  tradeoff  –  through  flexible  sta-c  memory  model  

Improve  our  understanding  of  programs  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   32  

Page 33: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Algorithm  Design  Choices  

Fixed:  •   Bonom  Up  /  Top  Down  Approach  •   Linear  transfer  func-ons  (for  scalability)  •   One-­‐level  context  and  flow  sensi-ve  

Flexible:  •  Edge  profiling  (or  sta-c  predic-on)  •  Safe  (or  unsafe)  •  Field  sensi-ve  (or  field  insensi-ve)  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   33  

Page 34: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon 34  

Tradi-onal  Points-­‐To  Graph  

int  x,  y,  z,  *b  =  &x;  void  foo(int  *a)  {    

     if(…)                b  =  &y;    

     if(…)              a  =  &z;        else(…)                  a  =  b;                while(…)  {              x  =  *a;                …            }  }    

y   UND  

a  

z  

b  

x  

=  pointer  

=  pointed  at  

Definitely  

Maybe  

=  

=  

Results  are  inconclusive    

Page 35: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon 35  

Probabilis-c  Points-­‐To  Graph  int  x,  y,  z,  *b  =  &x;  void  foo(int  *a)  {    

     if(…)                b  =  &y;    

     if(…)              a  =  &z;        else                  a  =  b;                while(…)  {              x  =  *a;                …            }  }    

y   UND  

a  

z  

b  

x  

]0.1 taken(edge profile)

]0.2 taken(edge profile)

=  pointer  

=  pointed  at  

p  =  1.0  

0.0<p<  1.0  

=  

=  p

0.1 0.9 0.72

0.08

0.2

Results  provide  more  informa-on  

Page 36: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Probabilis-c  Pointer  Analysis  Results  Summary  

•  Matrix-­‐based,  transfer  func-on  approach  –  SUIF/Matlab  implementa-on  

•  Scales  to  the  SPECint  95/2000  benchmarks  –  One-­‐level  context  and  flow  sensi-ve  

•  As  accurate  as  the  most  precise  algorithms  •  Interes-ng  result:  

–  ~90%  of  pointers  tend  to  point  to  only  one  thing  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   36  

Page 37: Lecture20 Pointer’Analysis’€¦ · Carnegie Mellon Lecture20 Pointer’Analysis’ • Basics& • DesignOpons • Pointer&Analysis&Algorithms& • Pointer&Analysis&Using&BDDs&

Carnegie Mellon

Pointer  Analysis  Summary  

•  Pointers  are  hard  to  understand  at  compile  -me!  –  accurate  analyses  are  large  and  complex  

•  Many  different  op-ons:    –  Representa-on,  heap  modeling,  aggregate  modeling,  flow  sensi-vity,  context  

sensi-vity  •  Many  algorithms:  

–  Address-­‐taken,  Steensgarde,  Andersen,  Emami  –  BDD-­‐based,  probabilis-c  

•  Many  trade-­‐offs:  –  space,  -me,  accuracy,  safety  

•  Choose  the  right  type  of  analysis  given  how  the  informa-on  will  be  used  

Todd  C.  Mowry  15-­‐745:  Pointer  Analysis   37