Lecture Notes in Computer Science Edited by G. Goos, J. Hartmanis and J. van Leeuwen 1060 Advisory Board: W. Brauer D. Gries J. Stoer
Tibor Gyim6thy (Ed.) Compiler Construction 6th International Conference, CC'96 Link6ping, Sweden, April 24-26, 1996 Proceedings S ringor
Series Editors Gerhard Goos, Karlsruhe University, Germany Juris Hartmanis, Cornell University, NY, USA Jan van Leeuwen, Utrecht University, The Netherlands Volume Editor Tibor Gyim6thy Hungarian Academy of Sciences, Research Group ontheory of Automata Aradi vrrtan6k tere 1, H-6720 Szeged, Hungary Cataloging-in-Publication data applied for Die Deutsche Bibliothek - CIP-Einheitsaufnahme Compiler construction : 6th international conference ; proceedings / CC '96, Link6ping, Sweden, April 24-26, 1996. Tibor Gyim6thy (ed.). - Berlin ; Heidelberg ; New York ; Barcelona ; Budapest ; Hong Kong ; London ; Milan ; Paris ; Santa Clara ; Singapore ; Tokyo : Springer, 1996 (Lecture notes in computer science ; Vol. 1060) ISBN 3-540-61053-7 NE: Gyim6thy, Tibor [Hrsg.]; CC <6, 1996, Linkfping>; GT CR Subject Classification (1991): D.3.4, D.3.1,F.4.2, D.2.6, 1.2.2 ISBN 3-540-61053-7 Springer-Verlag Berlin Heidelberg New York This work is subject to copyright. All rights are reserved, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, re-use of illustrations, recitation, broadcasting, reproduction on microfilms or in any other way, and storage in data banks. Duplication of this publication or parts thereof is permitted only under the provisions of the German Copyright Law of September 9, 1965, in its current version, and permission for use must always be obtained from Springer -Verlag. Violations are liable for prosecution under the German Copyright Law. 9 Springer-Verlag Berlin Heidelberg 1996 Printed in Germany Typesetting: Camera-ready by author SPIN 10512669 06/3142-5 4 3 2 1 0 Printed on acid-free paper
Preface This volume contains the papers accepted for presentation at the 6th Conference on Compiler Construction (CC'96), held in LinkSping, Sweden, 24/26 April 1996. This conference is held every two years and provides a forum for the presentation and discussion of recent developments in the area of compiler construction, language implementation, and language design. Its scope ranges from compilation methods and tools to pragmatic issues in the design, development, and implementation of programming languages, with an emphasis on experimental results and practical experience. In 1994 the CC'94 was co-located with the conferences Colloquium on Trees in Algebra and Programming (CAAP'94) and European Symposium on Programming (ESOP'94) in Edinburgh, Scotland. The aim of the synchronization of these conferences was to provide a European conference week covering a range of subjects, both practical and theoretical, related to programming languages and their implementation. The good result of this joint event shows the need for such forums, therefore CAAP'96, CC'96, and ESOP'96 have also been organized in this way. The program committee of CC'96 selected 23 of the 57 papers received in response to the call for papers. Further papers were selected for a poster session. These were printed in a technical report at the Department of Computer and Information Science, LinkSping University. Each submitted paper was read by at least three assigned members of the program committee. The committee then held a one-day session in which they considered each paper carefully before coming to a consensus on the 23 papers selected for presentation at the conference. The conference program was completed with a keynote speech by Professor William M. WaRe on the subject "Compiler construction: craftsmanship or engineering?" Thanks very much to the authors who submitted their papers to CC'96, irrespective of acceptance. I would like to express my thanks for the work of the program committee and others who helped review the papers. Special thanks to the invited keynote speaker, Professor William M. Waite from the University of Colorado, U.S.A. I also gratefully acknowledge the work of all those who contributed to organizing the conference, especially the local organizers at LinkSping University and also Chris Hankin, who organized the joint program committee meeting in London. Szeged, January 1996 Tibor Gyim6thy
Program Chairman: Tibor Gyim6thy (Academy of Sciences, Szeged, Hungary) Program Committee: Mikl6s Bartha Paul Franchi- Zanettacci Peter Fritzson Rajiv Gupta R. Nigel Horspool Stefan J ~hnichen Martin Jourdan Uwe Kastens Kai Koskiinies Boris Magnusson Thomas Reps G/inter Riedewald Barbara Ryder Jfirgen Uhl David A. Watt (Memorial University of Newfoundland, Canada) (ESSI, France) (LinkSping University, Sweden) (University of Pittsburgh, USA) (University of Victoria, Canada) (Technical University of Berlin, Germany) (INRIA-Rocquencourt, Paris, France) (University of Paderborn, Germany) (University of Tampere, Finland) (University of Lund, Sweden) (University of Wisconsin-Madison, USA) (University of Rostock, Germany) (Rutgers University, USA) (IBM, Germany) (University of Glasgow, UK)
VIII List of Referees We gratefully acknowledge the following individuals who assisted the program committee in the reviewing process: Zolts Alexin Niclas Andersson Isabelle Attali Rastislav Bodik Jan Borowiec Manuel Chakravarty Jason Corless Evelyn Duesterwald Javier Elices Thilo Ernst Carlos Escalante Jacques Farre Carine Fedele Adrien Fiech Istvs Forgs Robert Gabriel Marc Gaetano Erick Gallesio ]~va Gomb~s Jim Grundy Rolf Haenisch GSrel Hedin Stephan Herrmann Clara Jaramillo Mariam Kamkar Emmanuel Kounalis Igor Litovsky Ferenc Magyar Thomas Marlowe Merik Meriste Tony Middleton Jean-Chrisophe Mignot Henrik Nilsson Soner Onderr Mikael Pettersson Jean-Paul Rigault Johan Ringstrom Friedrich Schoen Andreas Schramm Philip Stocks Istv~n T6th Lars Viklund Jyh-shiarn Yur Michael Zastre Wlodek Zuberek
Table of Contents Pipelining-Dovetailing: A Transformation to Enhance Software Pipelining for Nested Loops dian Wang, Guang R. Gao... 1 A Comparison of Modulo Scheduling Techniques for Software Pipelining Peter Pfahler, Georg Piepenbrock... 18 Removing Anti Dependences by Repairing M. Anton Ertl, Andreas Krall... 33 Controlled Node Splitting Johan Janssen, Henk Corporaal... 44 Aggressive Loop Unrolling in a Retargetable, Optimizing Compiler Jack W. Davidson, Sanjay Jinturkar... 59 Generalized Constant Propagation: A Study in C Clark Verbrugge, Phong Co, Laurie Hendren... 74 Structuring Decompiled Graphs Cristina Cifuentes... 91 Non-monotone Fixpoint Iterations to Resolve Second Order Effects Alfons Geser, Jens Knoop, Gerald Liittgen, Oliver Riithing, Bernhard Steffen... 106 How to Uniformly Specify Program Analysis and Transformation with Graph Rewrite Systems Uwe Aflmann... 121 Points-to Analysis by Type Inference of Programs with Structures and Unions Bjarne Steensgaard... 136 Compiler Construction: Craftsmanship or Engineering? William M. Waite... 151 Code Generation = A* + BURS Albert Nymeyer, Joost-Pieter Katoen, Ymte Westra, Henk Alblas... 160 A Compiler for Natural Semantics Mikael Pettersson... 177 Abstract Compilation: A New Implementation Paradigm for Static Analysis Dominique Boucher, Marc Feeley... 192 Using Partial Evaluation in Support of Portability, Reusability, and Maintainability Daniel J. Salomon... 208
Incremental Computation of Static Single Assignment Form Jong-Deok Choi, Vivek Sarkar, Edith Schonberg... 223 Efficient Storage Reuse of Aggregates in Single Assignment Languages Zhonghua Li, Chris C. Kirkham... 238 Effective Representation of Aliases and Indirect Memory Operations in SSA Form Fred Chow, Sun Chan, Shin-Ming Liu, Raymond Lo, Mark Streich... 253 Maptool - Supporting Modular Syntax Development Basim M. Kadhim, William M. Waite... 268 A Faster Earley Parser Philippe McLean, R. Nigel Horspool... 281 One-Pass, Optimal Tree Parsing - With Or Without Trees Todd A. Proebsting, Benjamin R. Whaley... 294 Compact Dispatch Tables for Dynamically Typed Object Oriented Languages Jan Vitek, R. Nigel Horspool... 309 Delegating Compiler Objects - An Object-Oriented Approach to Crafting Compilers Jan Bosch... 326 A Parallel Debugger with Support for Distributed Arrays, Multiple Executables and Dynanfic Processes Peter Fritzson, Roland Wismiiller, Olav Hansen, Jonas Sala, Peter Skov... 341