Slide 1

Slide 1 text

Program Diagnostic by SILOptimizer freddi at Swift Zoomin’ (21st March, 2020) ਍அ

Slide 2

Slide 2 text

SIL

Slide 3

Slide 3 text

Swift Intermediate Language

Slide 4

Slide 4 text

Swift Intermediate Language

Slide 5

Slide 5 text

Swift Intermediate Language

Slide 6

Slide 6 text

Swift Intermediate Language ίϯύΠϧ࣌ʹੜ੒͢ΔSwiftͷதؒݴޠ (௨শ: SIL) - ܕνΣοΫͨ͠AST͔Βੜ੒͞ΕΔ - SIL ͰϓϩάϥϜͷ࠷దԽ͕ߦΘΕΔ - SwiftίʔυΑΓ΋۩ମతͳڍಈ͕දݱ͞ΕΔ

Slide 7

Slide 7 text

Swift Intermediate Language

Slide 8

Slide 8 text

SIL

Slide 9

Slide 9 text

SILOptimizer

Slide 10

Slide 10 text

SILOptimizer

Slide 11

Slide 11 text

SILGenͷޙͷSILOptimizerʹΑΔ࠷దԽͱ਍அ - ࠷దԽ … Dead Codeͷ࡟আ, ϝϞϦͷ࠷దԽ etc … - ਍அ … ? ? ? SILOptimizer

Slide 12

Slide 12 text

Diagnostic in SILOptimizer

Slide 13

Slide 13 text

Diagnostic in SILOptimizer SIL in the Swift Compiler - A series of Guaranteed Optimization Passes and Diagnostic Passes are run over the raw SIL both to perform optimizations and to emit language-specific diagnostics. These are always run, even at -Onone, and produce canonical SIL. - The SILGen module generates raw SIL from an AST.

Slide 14

Slide 14 text

Diagnostic in SILOptimizer SIL in the Swift Compiler - A series of Guaranteed Optimization Passes and Diagnostic Passes are run over the raw SIL both to perform optimizations and to emit language-specific diagnostics. These are always run, even at -Onone, and produce canonical SIL. - The SILGen module generates raw SIL from an AST.

Slide 15

Slide 15 text

Diagnostic in SILOptimizer raw SIL SILOptimizer can SIL

Slide 16

Slide 16 text

਍அ͸ԿΛ͍ͯ͠Δͷ͔ ݴޠ࢓༷ʹ߹ͬͨϓϩάϥϜͷνΣοΫΛߦ͏ - ਺஋Ϧςϥϧม׵࣌ͷΦʔόʔϑϩʔͷνΣοΫ etc … - ౸ୡ͠ͳ͍ॲཧ͕͋Δͱ͖ͷܯࠂ If all diagnostic passes succeed, the final result is the canonical SIL for the program. ʢ༁ʣ΋͠ɺ͢΂ͯͷ਍அ͕੒ޭͨ͠৔߹ɺcanonical SIL͕ੜ੒͞Ε·͢

Slide 17

Slide 17 text

Conclusion

Slide 18

Slide 18 text

Swift Intermediate Language ίϯύΠϧ࣌ʹੜ੒͢ΔSwiftͷதؒݴޠ (௨শ: SIL) SILOptimizer SILGenͷޙͷSILOptimizerʹΑΔ࠷దԽͱ਍அ ਍அ͸ԿΛ͍ͯ͠Δͷ͔ ݴޠ࢓༷ʹ߹ͬͨϓϩάϥϜͷνΣοΫΛߦ͏

Slide 19

Slide 19 text

Thank you! Twitter: @_ _ _ freddi _ _ _ HAKATA.swift will hold meetup on Twitter! Qiita SILOptimizer : https://bit.ly/3a9ro7u