Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose...
Transcript of Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose...
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Introduction to Optimization1
Kristoffer H. [email protected]
Compiler ConstructionCSCI-GA.2130-001/Fall 2013
NYU Courant Institute
December 5, 2013
1ALSU §§8.5,7Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Context
sourceprogram
FrontEnd// Code
OptimizerIR// Code
GeneratorIR// target
program//
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
DAG – Directed Acyclic Graph
I One node per initial value.I One node per statement, with an edge to last node
observing every parameter.I Node labeled by operator and list of variables not used
further.I Output nodes are those with live exit variables.
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
DAG uses
I Local common subexpressions.I Dead code elimination.I Apply albegraic simplifications.I Reorder statements to reduce variable count.
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Local Common Subexpressions
1 a = b + c2 b = a - d3 c = b + c4 d = a - d
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Local Common Subexpressions
1 a = b + c2 b = a - d3 c = b + c4 d = a - d
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Dead Code Elimination
Inputs: b,c,d1 a = b + c2 b = b - c3 c = c + d4 e = b + c
Outputs: a,bb0 c0 d0
+
�� ##
a −
{{ ##
b +
{{ ��
c
+
�� ��
e
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Dead Code Elimination
Inputs: b,c,d1 a = b + c2 b = b - c3 c = c + d4 e = b + c
Outputs: a,bb0 c0 d0
+
�� ##
a −
{{ ##
b +
{{ ��
c
+
�� ��
e
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
x + 0 = 0 + x = x x − 0 = xx × 1 = 1× x = x x/1 = x
EXPENSIVE CHEAPER
x2 = x × x2× x = x + x
x/2 = x × 0.5
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
x + 0 = 0 + x = x x − 0 = xx × 1 = 1× x = x x/1 = x
EXPENSIVE CHEAPER
x2 = x × x2× x = x + x
x/2 = x × 0.5
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions
1 a = c + b2 e = c + d + b
b0 c0
+
�� ��
a d0
+
�� ��
e
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions
1 a = c + b2 e = c + d + b
b0 c0
+
�� ��
a d0
+
�� ��
e
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions
1 a = c + b2 e = c + d + b
b0 c0
+
�� ��
a d0
+
�� ��
e
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Array References
1 x = a[i]2 a[j] = y3 z = a[i]
a0 i0 j0 y0
=[]
�� ��
xKilled!
[]=
tt�� ��
=[]
�� ��
z
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Array References
1 x = a[i]2 a[j] = y3 z = a[i]
a0 i0 j0 y0
=[]
�� ��
xKilled!
[]=
tt�� ��
=[]
�� ��
z
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
No Pointing!
1 x = *p2 *q = y
Needs pointer (“points-to”) analysis!
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
No Pointing!
1 x = *p2 *q = y
Needs pointer (“points-to”) analysis!
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Back to Code
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
1 a = b + c2 b = a - d3 c = b + c4 d = b
Respect ordering, pay special attention to overlapping sideeffects!
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Back to Code
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
1 a = b + c2 b = a - d3 c = b + c4 d = b
Respect ordering, pay special attention to overlapping sideeffects!
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Back to Code
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
1 a = b + c2 b = a - d3 c = b + c4 d = b
Respect ordering, pay special attention to overlapping sideeffects!
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Redundant Load&Store
1 LD R0, a2 ST a, R0
↓
1 LD R0, a
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Redundant Load&Store
1 LD R0, a2 ST a, R0
↓
1 LD R0, a
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Unreachable Code
1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:
↓
1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:
With debug = 0,1 L2:
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Unreachable Code
1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:
↓
1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:
With debug = 0,1 L2:
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Unreachable Code
1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:
↓
1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:
With debug = 0,1 L2:
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: goto L2
↓
1 goto L22 . . .3 L1: goto L2
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: goto L2
↓
1 goto L22 . . .3 L1: goto L2
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: if a < b goto L24 L3:
↓
1 if a < b goto L22 goto L33 . . .4 L3:
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: if a < b goto L24 L3:
↓
1 if a < b goto L22 goto L33 . . .4 L3:
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Just the Beginning. . .
I Peephole vs Good Code GeneratorI Everything above has better analysis-based solutions
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Finally. . .
I Evaluations!I Project Milestone 3 on Sunday.I Exam:
I 5:10 pm–7:00 pm, December 12, 2013, Room WWH 312.I Closed book.I All ALSU sections quoted on class web page.
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
The End
Introduction to Optimization Kris Rose