BEGIN:VCALENDAR
PRODID:-//planitpurple.northwestern.edu//iCalendar Event//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
CLASS:PUBLIC
BEGIN:VTIMEZONE
TZID:America/Chicago
TZURL:http://tzurl.org/zoneinfo-outlook/America/Chicago
X-LIC-LOCATION:America/Chicago
BEGIN:DAYLIGHT
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
TZNAME:CDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
TZNAME:CST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SEQUENCE:0
DTSTART;TZID=America/Chicago:20260729T140000
DTEND;TZID=America/Chicago:20260729T160000
DTSTAMP:20260730T004708Z
SUMMARY:Tommy McMichen Final Defense July 29: Preserving Data Collections in the Compiler
UID:643557@northwestern.edu
TZID:America/Chicago
DESCRIPTION:Data collections—such as arrays\, lists\, sets\, and maps—are among the most commonly used abstractions in modern programs\, yet compilers discard their rich semantic structure before performing analysis and optimization. Once lowered to raw memory\, the logical organization of a collection is lost\, leaving the compiler to reason about undecidable problems\, such as pointer aliasing.  I present MEMOIR: a general-purpose compiler intermediate representation (IR) that preserves data collections in static single assignment (SSA) form\, making their logical structure explicit for analysis and optimization. I demonstrate the benefits of MEMOIR with novel layout-agnostic optimizations that operate directly on logical collections. Furthermore\, I show how the compiler can manufacture data properties to enable specialized implementations\, such as bitsets\, achieving significant performance and memory savings compared to industry-standard implementations. Representing collections in SSA form makes these analyses efficient through sparse dataflow\, but introduces two challenges.  First\, SSA represents updates functionally. Lowering them back to imperative code risks introducing copies that turn an O(1) update into an O(n) operation. I formally prove that MEMOIR programs can always be lowered without such copies\, and show that standard compiler transformations can be made to maintain this guarantee with 100% effectiveness and negligible overhead. Second\, references and iterators\, which are ubiquitous in languages like C++\, identify elements independently of the collection that owns them. However\, SSA value semantics have no way to express this. I introduce bookmark semantics to resolve this tension.      \n\nWebcast Link: https://northwestern.zoom.us/my/tommymcm
LOCATION:Mudd Hall ( formerly Seeley G. Mudd Library)\, Mudd 3514\, 2233 Tech Drive\, Evanston\, IL 60208
TRANSP:OPAQUE
URL:https://planitpurple.northwestern.edu/event/643557
CREATED:20260721T050000Z
STATUS:CONFIRMED
LAST-MODIFIED:20260721T050000Z
PRIORITY:0
BEGIN:VALARM
TRIGGER:-PT10M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR