unified basedpointeranalysis-100107093232-phpapp01

16
みよし たけふみ 201018日金曜日

Upload: takefumi-miyoshi

Post on 28-Jun-2015

191 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Unified basedpointeranalysis-100107093232-phpapp01

みよし たけふみ

2010年1月8日金曜日

Page 2: Unified basedpointeranalysis-100107093232-phpapp01

Abstract

• flow & context insensitive pointer analysis of C

• low-cost

• 精度/実行時間 Steensgaard’sとAndersen’sの間

• using a restricted form of subtyping at the top levels

• using unification elsewhere in the graph

• scale easily to large programs

• 1.4MLOC, 2min., 200MB

2010年1月8日金曜日

Page 3: Unified basedpointeranalysis-100107093232-phpapp01

Background

• Steensgaard’s unification-based approach

• linear running-time

• imprecise

• Andersen’s subtyping-based approach

• worst-case cubic running-time

• much more precise

2010年1月8日金曜日

Page 4: Unified basedpointeranalysis-100107093232-phpapp01

Contributions

• the one level flow algorithm

• simple extension of Steensgaard’s algorithm

• scaling properties of Steensgaard’s algorithm and the precision of Andersen’s algorithm

2010年1月8日金曜日

Page 5: Unified basedpointeranalysis-100107093232-phpapp01

Example

Steensgaard’s Andersen’s

pがs3を指すはずないのにね

One level flow (proposed)

flow edge

2010年1月8日金曜日

Page 6: Unified basedpointeranalysis-100107093232-phpapp01

Experiments

• AST Toolkit (extension of the MS VC)

• client analyzes individual compilation units

• a partial points-to graph, table

• linker produces global points-to info.

2010年1月8日金曜日

Page 7: Unified basedpointeranalysis-100107093232-phpapp01

0

10

20

30

compre

ss li

m88ksi

mijp

eg go perl

vorte

x gcc

Word97

Benchmark

Ana

lysis

tim

e (m

s per

100

0 no

des)

Flow step overheadFlow graph overheadSteensgaard

0

20

40

60

80

100

1.22185.62

3.29

11.78

14.79

22.22

59.30 7.72

compre

ss li

m88ksi

mijp

eg go perl

vorte

x gcc

Benchmark

Ave

rage

poi

nts-

to se

t siz

e (n

orm

aliz

ed)

One level flow Andersen

2010年1月8日金曜日

Page 8: Unified basedpointeranalysis-100107093232-phpapp01

0

10

20

30

compre

ss li

m88ksi

mijp

eg go perl

vorte

x gcc

Word97

Benchmark

Ana

lysis

tim

e (m

s per

100

0 no

des)

Flow step overheadFlow graph overheadSteensgaard

0

20

40

60

80

100

1.22185.62

3.29

11.78

14.79

22.22

59.30 7.72

compre

ss li

m88ksi

mijp

eg go perl

vorte

x gcc

Benchmark

Ave

rage

poi

nts-

to se

t siz

e (n

orm

aliz

ed)

One level flow Andersen

2010年1月8日金曜日

Page 9: Unified basedpointeranalysis-100107093232-phpapp01

2010年1月8日金曜日

Page 10: Unified basedpointeranalysis-100107093232-phpapp01

2010年1月8日金曜日

Page 11: Unified basedpointeranalysis-100107093232-phpapp01

0

3

6

9

12

0 1 2 3 4 5 6-10 11-100

Points-to set size

Perc

enta

ge o

f all

dere

fs

Steensgaard One level flow

0

4

8

12

16

20

0 1 2 3 4 5 6-10 11-100

Points-to set size

Perc

enta

ge o

f all

mod

der

efs

Steensgaard One level flow

2010年1月8日金曜日

Page 12: Unified basedpointeranalysis-100107093232-phpapp01

2010年1月8日金曜日

Page 13: Unified basedpointeranalysis-100107093232-phpapp01

2010年1月8日金曜日

Page 14: Unified basedpointeranalysis-100107093232-phpapp01

2010年1月8日金曜日

Page 15: Unified basedpointeranalysis-100107093232-phpapp01

2010年1月8日金曜日

Page 16: Unified basedpointeranalysis-100107093232-phpapp01

2010年1月8日金曜日