skip to main content
10.1145/12276acmconferencesBook PagePublication PagesplanConference Proceedingsconference-collections
SIGPLAN '86: Proceedings of the 1986 SIGPLAN symposium on Compiler construction
ACM1986 Proceeding
Publisher:
  • Association for Computing Machinery
  • New York
  • NY
  • United States
Conference:
SCC86: SIGPLAN Symposium on Compiler Construction Palo Alto California USA June 25 - 27, 1986
ISBN:
978-0-89791-197-9
Published:
01 July 1986
Sponsors:

Bibliometrics
Abstract

No abstract available.

Skip Table Of Content Section
Article
Free
Optimal chaining in expression trees

Chaining is the ability to pipeline two or more vector instructions on Cray-1 like machines. We show how to optimally use this feature to compute (vector) expression trees, in the context of automatic code-generation. We present a linear-time scheduling ...

Article
Free
Efficient instruction scheduling for a pipelined architecture

As part of an effort to develop an optimizing compiler for a pipelined architecture, a code reorganization algorithm has been developed that significantly reduces the number of runtime pipeline interlocks. In a pass after code generation, the algorithm ...

Article
Free
Compile-time partitioning and scheduling of parallel programs

Partitioning and scheduling techniques are necessary to implement parallel languages on multiprocessors. Multiprocessor performance is maximized when parallelism between tasks is optimally traded off with communication and synchronization overhead. We ...

Article
Free
Compilation for a high-performance systolic array

We report on a compiler for Warp, a high-performance systolic array developed at Carnegie Mellon. This compiler enhances the usefulness of Warp significantly and allows application programmers to code substantial algorithms.

The compiler combines a novel ...

Article
Free
Efficient incremental evaluation of aggregate values in attribute grammars

Aggregate valued attributes, which store collections of keyed elements, are required in attribute grammars to communicate information from multiple definition sites to multiple use locations. For syntax directed editors and incremental compilers, symbol ...

Article
Free
Generation of run-time environments

Attribute grammars have been used for many years for automated compiler construction. Attribute grammars support the description of semantic analysis, code generation and some code optimization in a formal declarative style. Other tools support the ...

Article
Free
Interprocedural optimization: eliminating unnecessary recompilation

While efficient new algorithms for interprocedural data flow analysis have made these techniques practical for use in production compilation systems, a new problem has arisen: collecting and using interprocedural information in a compiler introduces ...

Article
Free
Transformations of denotational semantics in semantics directed compiler generation

In semantics-directed compiler generation one is faced with the problem of how to translate a source semantic definition of a programming language into on equivalent target semantics closer to an implementation. Most of the existing works solve this ...

Article
Free
A globalizing transformation for attribute grammars

A transformation is presented for replacing conventional local attribute references in attribute grammars by upward remote references. The purpose of the transformation is to enhance readability of the grammar and to facilitate easy storage ...

Article
Free
Automatic generation of fixed-point-finding evaluators for circular, but well-defined, attribute grammars

In the traditional formulation of attribute grammars (AGs) circularities are not allowed, that is, no attribute-instance in any derivation tree may be defined in terms of itself. Elsewhere in mathematics and computing, though, circular (or recursive) ...

Article
Free
Effectiveness of a machine-level, global optimizer

We present an overview of the design of a machine-code-level, global (intraprocedural) optimizer that supports several front-ends producing code for the Hewlett-Packard Precision Architecture family of machines. The basic optimization strategy is ...

Article
Free
Data flow analysis for `intractable' system software

We describe, and give experience with, a new method of intraprocedural data flow analysis on reducible flow-graphs[9]. The method is advantageous in imbedded applications where the added value of improved performance justifies substantial optimization ...

Article
Free
EPIC - a retargetable, highly optimizing Lisp compiler

The Experimental Portable Standard Lisp Compiler (EPIC) is a compiler testbed for experimentation with, and development of, Lisp compilation strategies. EPIC uses an architectural description of the target machine to increase portability, and performs ...

Article
Free
Unifying view of recent LALR(1) lookahead set algorithms

Since the introduction of LALR parsing, several algorithms have been presented for the computation of the lookahead sets needed to produce an LALR parser. The algorithm in Aho and Ullman[1] has perhaps received the widest exposure. The recent algorithms ...

Article
Free
A practical arbitrary look-ahead LR parsing technique

We present a practical technique that provides an LR (0) parser with either fixed or arbitrary look-ahead. The construction algorithm is based on certain paths in the LR (0) state diagram, which must be restricted to a maximum length m. The technique ...

Article
Free
Very fast LR parsing

LR parsers can be made to run 6 to 10 times as fast as the best table-interpretive LR parsers. The resulting parse time is negligible compared to the time required by the remainder of a typical compiler containing the parser.

A parsing speed of 1/2 ...

Article
Free
Interprocedural constant propagation

In a compiling system that attempts to improve code for a whole program by optimizing across procedures, the compiler can generate better code for a specific procedure if it knows which variables will have constant values, and what those values will be, ...

Article
Free
Interprocedural dependence analysis and parallelization

We present a method that combines a deep analysis of program dependences with a broad analysis of the interaction among procedures. The method is more efficient than existing methods: we reduce many tests, performed separately by existing methods, to a ...

Article
Free
Direct parallelization of call statements

Asynchronous CALL statements are necessary in order to use more than one processor in current multiprocessors. Detecting CALL statements that may be executed in parallel is one way to fill this need. This approach requires accurate approximations of ...

Article
Free
Implementing RUSSELL

We have completed an implementation of the Russell programming language [Don 85]. This effort has been very helpful in the evaluation of the original language design. It has also served to pinpoint the difficulties in implementing languages with type ...

Article
Free
Static evaluation of functional programs

Static evaluation underlies essentially all techniques for a priori semantic program manipulation, i.e. those that stop short of fully general execution. Included are such activities as type checking, partial evaluation, and, ultimately, optimized ...

Article
Free
Efficient compilation of linear recursive functions into object level loops

Whilst widely recognised as an excellent means for solving problems and for designing software, functional programming languages have suffered from their inefficient implementations on conventional computers. A route to improved runtime performance is ...

Article
Free
A retargetable instruction reorganizer

Extant peephole optimizers can perform many optimizations that are handled by higher-level optimizers. This paper describes a retargetable instruction reorganizer that performs targeting and evaluation order determination by applying a well known ...

Article
Free
Integrating code generation and optimization

This paper describes a compiler with a code generator and machine-directed peephole optimizer that are tightly integrated. Both functions are performed by a single rule-based rewriting system that matches and replaces patterns. This organization helps ...

Article
Free
Discovering machine-specific code improvements

I have designed and built a compiler construction tool that automates much of the case analysis necessary to exploit special purpose instructions on a target machine. Given a suitable description of the target machine, my analysis identifies instruction ...

Article
Free
Register allocation in the SPUR Lisp compiler

Register allocation is an important component of most compilers, particularly those for RISC machines. The SPUR Lisp compiler uses a sophisticated, graph-coloring algorithm developed by Fredrick Chow [Chow84]. This paper describes the algorithm and the ...

Article
Free
Global register allocation at link time

In previous work in global register allocation, the compiler colors a conflict graph constructed from liveness dataflow information, in order to allocate the same register to many variables that are not simultaneously live. If two procedures are in ...

Contributors

Recommendations