![Page 1: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/1.jpg)
Optimizing CompilersOptimizing Compilers
Nai-Wei Lin
Department of Computer Science
and Information Engineering
National Chung Cheng University
![Page 2: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/2.jpg)
ContentContent
• Introduction
• Control flow analysis
• Data flow analysis
• Program transformations
• Case studies
![Page 3: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/3.jpg)
Introduction
![Page 4: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/4.jpg)
Optimizing Compilers Optimizing Compilers
• Compilers that apply code-improving transformations
• Must preserve the meaning of programs
• Must improve programs by a measurable amount
• Must be worth the effort
![Page 5: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/5.jpg)
Levels of Code OptimizationLevels of Code Optimization
• Source code level– profile programs, change algorithms, transform loo
ps
• Intermediate code level– analyze programs, inline procedure calls, improve l
oops, eliminate common subexpressions
• Target code level– use machine characteristics, do peephole optimizati
ons
![Page 6: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/6.jpg)
Organization of an Optimizing Organization of an Optimizing CompilerCompiler
• Front end
• Code optimization– control flow analysis– data flow analysis– code transformation
• Code generation
![Page 7: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/7.jpg)
Program TransformationsProgram Transformations
• Statement level– common-subexpression elimination, copy pro
pagation, dead-code elimination, constant folding, constant propagation
• Loop level– code motion, reduction in strength, induction
variable elimination
• Procedure level– inline expansion, tail recursion optimization
![Page 8: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/8.jpg)
Common Subexpression EliminCommon Subexpression Eliminationation
a = b + cb = a - dc = b + cd = a - da = a + cc = a - d
a = b + cb = a - dc = b + cd = ba = a + cc = a - d
![Page 9: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/9.jpg)
Copy PropagationCopy Propagation
a = b + cb = a - dc = b + cd = ba = a + cc = a - d
a = b + cb = a - dc = b + cd = ba = a + cc = a - b
![Page 10: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/10.jpg)
Dead-Code EliminationDead-Code Elimination
a = b + cb = a - dc = b + cd = ba = a + cc = a - b
a = b + cb = a - dc = b + c
a = a + cc = a - b
![Page 11: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/11.jpg)
Constant FoldingConstant Folding
a = 4 * 2b = a + 3
a = 8b = a + 3
![Page 12: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/12.jpg)
Constant PropagationConstant Propagation
a = 8b = a + 3
a = 8b = 8 + 3
![Page 13: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/13.jpg)
Code MotionCode Motion
t = 4 * ib = a[t] i = i + 1if i < n- 1 goto L
i = 0
L: t = 4 * ib = a[t] i = i + 1if i < f goto L
i = 0f = n - 1
L:
![Page 14: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/14.jpg)
Reduction in StrengthReduction in Strength
t = 4 * ib = a[t] i = i + 1if i < f goto L
i = 0f = n - 1
t = t + 4b = a[t] i = i + 1if i < f goto L
i = 0f = n - 1t = -4
![Page 15: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/15.jpg)
Induction Variable EliminationInduction Variable Elimination
t = t + 4b = a[t]
if t < 4 * f goto L
i = 0f = n - 1t = -4
t = t + 4b = a[t] i = i + 1if i < f goto L
i = 0f = n - 1t = -4
![Page 16: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/16.jpg)
Inline ExpansionInline Expansion
p: a = c + d b = a + c param a param b call q, 2 c = d + e returnq: d = sp[0] + sp[1] return
p: a = c + d b = a + c d = a + b
c = d + e returnq: d = sp[0] + sp[1] return
![Page 17: Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University](https://reader035.vdocuments.net/reader035/viewer/2022072011/56649de55503460f94add174/html5/thumbnails/17.jpg)
Tail Recursion OptimizationTail Recursion Optimization
p: a = sp[0] + c b = sp[1] + d param a param b call p, 2 return
p: a = sp[0] + c b = sp[1] + d sp[0] = a sp[1] = b goto p return