Project Details
Projekt Print View

Graph Structure Theory in Compiler Construction

Subject Area Theoretical Computer Science
Mathematics
Computer Architecture, Embedded and Massively Parallel Systems
Software Engineering and Programming Languages
Term from 2017 to 2022
Project identifier Deutsche Forschungsgemeinschaft (DFG) - Project number 389550275
 
Final Report Year 2022

Final Report Abstract

In den letzten Jahren wurden einige Anwendungen der Graphstrukturtheorie bei Compileroptimierungen gefunden. Da Programme aller Art durch einfaches Übersetzen mit einem optimierenden Compiler von Optimierungen profitieren, und dadurch auf gegebener Hardware weniger Zeit, Energie und Speicher benötigen, beziehungsweise es ermöglichen, gegebene Aufgaben auf einfacherer Hardware zu erledigen, leisten diese einen bedeutenden Beitrag zur Reduzierung des Ressourcenverbrauchs. Der wichtigste Ansatz ist, für eine Programmiersprache zu zeigen, dass die Kontrollflussgraphen beschränkte Baumweite haben, und sich somit Baumzerlegungen kleiner Weite finden lassen. Diese Baumzerlegungen werden dann in effizienten Algorithmen für Compileroptimierungen genutzt. Wir haben für die weit verbreitete Programmiersprache C gezeigt, dass Funktionen, in denen höchstens g Sprungmarken für goto vorkommen, Kontrollflussgraphen von Baumweite höchstens 7 + g haben, und dass diese Schranke scharf ist. Wir zeigten wie sich Baumzerlegungen minimaler Weite für die Kontrollflussgraphen effizient berechnen lassen. Eine wichtige Compileroptimierung ist die Redundanzelimination, ein fortgeschrittener Ansatz ist dabei Lifetime-Optimale Spekulative Redundanzelimination (lospre). Für deterministische Implementierungen der beiden bisher hierzu verwendeten Algorithmen MC-PRE und MC-SSAPRE waren zuvor nur kubische Laufzeitschranken bekannt. Mittels Graphstrukturtheorie zeigten wir für C-Programme, die nur eine beschränke Anzahl an Sprungmarken für goto enthalten, eine quadratische Laufzeitschranke für MC-PRE und MC-SSAPRE. Für solche Programme entwickelten wir auch einen neuen Algorithmus für lospre, der lineare Laufzeit hat. Wir implementierten unsere Ansätze im Small Device C Compiler (SDCC), wo sie dazu beitragen, dass dieser freie Compiler für viele Zielarchitekturen oft besseren Code generiert als andere proprietäre Compiler. Daneben kam es zu zahlreichen kleineren Verbesserungen an und Beiträgen zu SDCC. Um unsere Ansätze mit bisherigen vergleichen zu können, entwickelten wir einen für die Zielarchitekturen von SDCC geeigneten Benchmark. Wir zeigten, dass die Anwendung des graphstrukturtheoretische „Irrelevant-Vertex“-Ansatz zum Disjunkte-Pfade-Problem beim Routing nicht erfolgversprechend ist. Daneben ergaben sich Erkenntnisse zu schnellen randomisierten Algorithmen zu Graphzusammenhangsproblemen.

Publications

 
 

Additional Information

Textvergrößerung und Kontrastanpassung