Schedule

This schedule is tentative and subject to change.

Acronyms for course references:

  • CT: Cooper and Turczon, Engineering a compiler
  • Dragon: Aho, Lam, Ullman, Sethi, Compilers: Principles, techniques and tools
  • AK: Optimizing Compilers for Modern Architectures, Allen and Kennedy
  • Muchnick: Advanced Compiler Design and Implementation

NOTE: These slides are not meant to substitute for lectures.

Date Topic Notes References
Wed Jan 16, 2019

Introduction

Mon Jan 21, 2019

Martin Luther King Day (No class)

Wed Jan 23, 2019

Intermediate Representations

CT: Chapter 5: Upto, but not including 5.4

Muchnick: Chapter 4

Mon Jan 28, 2019

Value Numbering

CT: Chapter 8: Upto, but not including 8.4.2

Wed Jan 30, 2019

Liveness

CT: Chapter 8: Section 8.6.1

Dragon: Section 9.2.5

Mon Feb 04, 2019

Available Expressions, Reaching Definitions, Very Busy Expressions

CT: Chapter 9: Section 9.2.4

Dragon: Section 9.2.6 (recommended for a more leisurely treatment)

Wed Feb 06, 2019

Dominators, SSA form

CT: Chapter 9: Sections 9.2.1, 9.3

Mon Feb 11, 2019

Dominators, SSA form - II

CT: Chapter 9: Sections 9.2.1, 9.3

Wed Feb 13, 2019

Foundations of Data-Flow Analysis - I

Dragon: Chapter 9: Section 9.3

Mon Feb 18, 2019

Foundations of Data-Flow Analysis - II

Dragon: Chapter 9: Section 9.3 and 9.4

Wed Feb 20, 2019

Optimization: Dead Code Elimination

Cooper and Turczon: Chapter 10

Mon Feb 25, 2019

Optimization: Partial Redundancy Elimination

Dragon Book: Chapter 9, Section 9.5

Wed Feb 27, 2019

Instruction Scheduling and Register Allocation

Cooper and Turczon: Chapter 11

Mon Mar 04, 2019

Pre-mid-term Review (In class)

Wed Mar 06, 2019

Midterm Exam (In class)

Mon Mar 11, 2019

Spring Break (No class)

Wed Mar 13, 2019

Spring Break (No class)

Mon Mar 18, 2019

Introduction to Loop Optimizations

Dragon Book: Chapter 11

Wed Mar 20, 2019

Array/Loop Dependence Analysis

Allen and Kennedy, Chapter 2

Dragon Book, Chapter 11

Mon Mar 25, 2019

Vectorization

Allen and Kennedy, Chapter 2, Sections 2.3 and 2.4

Wed Mar 27, 2019

Guest Lecture: Prof. John Criswell: Introduction to LLVM

Mon Apr 01, 2019

Dependence Testing

Allen and Kennedy, Chapter 3

Chapter 11, Sections 11.4 and 11.6 of the Dragon Book

Section 11.7.8 of the Dragon Book

Wed Apr 03, 2019

Loop Transformations

Dragon Book, Chapter 11, Sections 11.3.2 and 11.9

Mon Apr 08, 2019

Interprocedural Analyses - I

Dragon Book, Chapter 12

Wed Apr 10, 2019

Interprocedural Analyses - II

Dragon Book, Chapter 12

Mon Apr 15, 2019

Type Inference and Unification

Dragon Book, Chapter 6, Section 6.5.2

Wed Apr 17, 2019

Rust

Various, see slides

Mon Apr 22, 2019

Program Analysis I -- Abstract Interpretation

Various, see slides

Wed Apr 24, 2019

Program Analysis II -- Model Checking

S. Merz, An Introduction to Model Checking

Mon Apr 29, 2019

Program Analysis III -- Deductive Techniques

Background Reading on Hoare Logic, by Mike Gordon

Wed May 01, 2019

Last day of class