29 citations found. Retrieving documents...
Cocke, J. and J. T. Schwartz, 1970: Programming languages and their compilers: Preliminary notes. Tech. rep., New York University.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents

Operator Strength Reduction - Cooper, Simpson, Vick (1995)   (3 citations)  (Correct)

....algorithm and its implementation. Section 5 shows how to fit linear function test replacement into our scheme. 2 PREVIOUS WORK Reduction of operator strength has a long history in the literature. The first published discussions appear around 1969, in papers by Allen [1] and Cocke and Schwartz [19]. One family of algorithms grew out of the ideas in these seminal papers. A second family of algorithms grew out of the early work on dataflow based optimization, particularly the style used by Morel and Renvoise in their classic paper on partial redundancy elimination [38] A third body of work ....

....strength reduction that applies knowledge about the values of operands to reduce an isolated instruction. Our algorithm compares favorably with all of these techniques. Allen Cocke Kennedy and its Descendants A family of techniques has evolved from early work by Allen [1] and Cocke and Schwartz [19]. This includes work by Kennedy [31] Cocke and Kennedy [16] and Allen, Cocke, and Kennedy [2] These algorithms transform one loop at a time. They work outward through each loop nest, making passes to generate use definition chains, to find loops and insert prolog blocks, to find loop invariant ....

J. Cocke and J. T. Schwartz. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


BDD-Driven First-Order Satisfiability Procedures - Déharbe, Ranise   (Correct)

....T . Our technique consists of the following three steps. Lifting) All the occurrences of conditional terms in are eliminated. Prop.1) is eagerly applied in order to lift each occurrence of ites at the formula level. This can be done e ciently by using the so called value numbering algorithm [CS70] to share identical sub terms and by caching the results of intermediate computations. Let be the resulting formula. The atoms in are of the form p(t 1 ; t n ) or t 1 = t 2 where t 1 ; t n are ground terms not containing ites and p is an n ary predicate symbol (for n 0) ....

....the BDD obtained by considering the formula ( 1 i6=j n c i 6= c j ) Other theories can be treated this way as shown, e.g. in [SSB02] 4 Experiments Our prototype implementation is as follows. Conditional expressions are represented by DAGs using the well known value numbering algorithm [CS70] for e ciency. Lifting) is implemented by traversing the DAGs bottom up. Boolean Reasoning) is implemented by Multi Terminal BDDs (MTBDDs, for short) CFM 97] whose nodes are labelled by rstorder atoms. Since conditional expressions are represented by value numbers, attening atoms is ....

J. Cocke and J. T. Schwartz. Programming Languages and their Compilers: Preliminary Notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


A Technique for Variable Dependence Driven Loop Peeling - Song, Kavi (2002)   (Correct)

....and innovative architectures such as the SDF [11] Scheduled Dataflow architecture, a decoupled memory execution, multithreaded architecture using non blocking threads) our loop peeling approaches may prove to be of significant importance. Loop invariant code motion was originally mentioned in [1, 7]. When an invariant computation appears inside a loop, a compiler can move that computation to outside the loop. The notion of quasi invariant grew out of our work on partial evaluation [17] Loop quasi invariant code motion is an extension of loop invariant code motion, which hoists invariant ....

Cocke J., Schwartz J. T., "Programming languages and their compilers (preliminary notes)", 2 nd ed. Courant Institute of Mathematical Science, New York University, New York.


Exploiting Specifications to Improve Program Performance - Vandevoorde (1994)   (13 citations)  (Correct)

....for copy specifies that p is not modified. Furthermore, the assertion New(p2) implies that p2 is not an alias for p. Since change cycle modifies only p2, p is not modified, so the values of p.left and p.right are unchanged. 4.5. 1 Conventional Techniques Conventional optimization techniques, e.g. [9, 12, 42, 46, 50], all use some form of symbolic evaluation based on the semantics of the programming language. For example, value numbering [9] one of the earliest techniques, can eliminate primitive expressions such as sums and products. It relies on the semantics of addition (e.g. that is commutative) to ....

....only p2, p is not modified, so the values of p.left and p.right are unchanged. 4.5.1 Conventional Techniques Conventional optimization techniques, e.g. 9, 12, 42, 46, 50] all use some form of symbolic evaluation based on the semantics of the programming language. For example, value numbering [9], one of the earliest techniques, can eliminate primitive expressions such as sums and products. It relies on the semantics of addition (e.g. that is commutative) to recognize when lexically distinct expressions like a b and b a are equal, and it relies on the semantics of assignment to ....

John Cocke and Jacob T. Schwartz. Programming Languages and Their Compilers: Preliminary Notes. Courant Institute of Mathematical Sciences, New York University, 1970.


Maximally and Arbitrarily Fast Implementation of Linear and.. - Potkonjak, Rabaey (2000)   (Correct)

....VLSI design and in particular high level synthesis. Common subexpression elimination is regularly used in many compilers and discussed in great detail in the compiler literature [1] Most often the treatment of common subexpression in compiler research and development is based on value numbering [4] and Sethi Ullman numbering [33] techniques in peephole optimization framework. While the use of common subexpression elimination is widely advocated and practiced in several behavioral synthesis systems [31] it seems that the only attempt of applying common subexpression replication can be ....

J. Cocke and J. T. Schwartz, Programming Languages and Their Compilers: Preliminary Notes, Second Revised Version. New York: Courant Institute of Mathematical Science, 1970.


Path-Sensitive, Value-Flow Optimizations of Programs - Bodik (1999)   (2 citations)  (Correct)

....when two different variables carry the same value. For example, following an assignment x: y, expressions 2 x and 2 y are value equivalent, although lexically different. Value numbering is a method for finding equivalences of lexical expressions in the presence of such copy assignments [CS69] The value numbering model relaxes the lexical identity to the identity of syntax tree representations of expressions: 2 x may be equal to 2 y (but not to 2 x) The validity rule is also relaxed: 2 x is equivalent to 2 y if x was assigned to y or vice versa, or if their assignments computed ....

....statement: if the value of the statement is previously computed along each incoming path, then the statement can simply be removed. To verify that the redundancy exists along all paths, the optimization can be restricted to basic blocks, as in subexpression elimination [ASU86] or value numbering [CS69] For applying deletion globally (across multiple basic blocks) data flow analysis is applied to confirm that value is available along all paths, as in global subexpression elimination [ASU86] Alternatively, dominators can be used, as in global value numbering [RWZ88] Deletion is impossible ....

John Cocke and Jacob T. Schwartz. Programming Languages and Their Compilers: Preliminary Notes. Courant Inst of Math. Sci., NYU, NY, NY, 1969.


A Tree-Based Alternative to Java Byte-Codes - Kistler, Franz (1997)   (12 citations)  (Correct)

....techniques. Analyzing and recognizing access patterns, as well as having precise information about important cache parameters (e.g. cache size, line size) are prerequisites for these optimizations. While the former can be accomplished at compile time, the latter cannot in practice. Value numbering [CS70] poses a similar problem. If done at all at compile time, byte code instructions that cannot be mapped to the underlying architecture on a one to one basis, but have to be translated into a sequence of native instructions (e.g. invokevirtual, invokestatic, invokeinterface) cannot reasonably be ....

J. Cocke, J. Schwartz; Programming Languages and Their Compilers: Preliminary Notes; Courant Institute of Mathematical Sciences, New York University; April 1970


Effective Partial Redundancy Elimination - Briggs, Cooper (1994)   (33 citations)  (Correct)

.... representation: x = y z a = y b = a z r1 ry rz rx r1 ra ry r2 ra rz rb r2 Obviously, r 1 and r 2 receive the same value (that is, the expression named by r 2 is redundant) PRE cannot discover this fact even though value numbering can eliminate this redundancy [10]. Of course, this is a simple example, but its very simplicity should suggest the large number of opportunities missed by PRE when considering an entire routine. 3 Effective PRE To address the limitations of PRE, we propose a set of techniques that reorder and rename expressions. Global ....

John Cocke and Jacob T. Schwartz. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


Compiler Optimizations for Low-level Redundancy Elimination: An.. - Debray (1992)   (Correct)

....matching E against the various expression subtrees occurring in the procedure. This, of course, would be hopelessly inefficient in general, even if the search is restricted to previously computed expression subtrees. In practice, therefore, a more sophisticated scheme called value numbering [3, 9, 10] is used. The essential idea is to assign special symbolic names called value numbers to expressions. Then, if two expressions E 1 j op 1 (t 1 ; t n ) and E 2 j op 2 (u 1 ; un ) satisfy (i) op 1 = op 2 , and (ii) the value number of t i is the same as that of u i , 1 i n, then E ....

J. Cocke and J. T. Schwartz, Programming Languages and their Compilers: Preliminary Notes, Second Revised Version, Courant Institute of Mathematical Science, New York, 1970.


Unifying Two Formula Rewriting Techniques for Circuit.. - Nikolskaïa, Sherman..   (Correct)

....work in advance. Consequently, the construction of intermediate BDDs is reduced, leading to more efficient construction. Note that the bottom up traversal, combined with the imposition of a canonical order for operator arguments, implements the classic value number method of Cocke and Schwartz ([CS70], described in [ASU85] Structure (re)discovery. Factoring in particular re introduces structure in the formula (and thus in the function) that was lost during earlier stages of formula construction. Factoring can introduce sharing, but more importantly it identifies important variables and ....

J. Cocke and J. T. Schwartz. Programming Languages and Their Compilers: Preliminary Notes, Second Revised Edition. Courant Institute of Mathematical Science, New York, 1970.


Symbolic Debugging of Optimized Behavioral Specifications - Kirovski, Potkonjak (1999)   (Correct)

.... [Aho77, Ban93, Bac94, Fis88, Par95] Common subexpression elimination is regularly used in many compilers and discussed in great detail in the compiler literature [Fis88, Aho77] Most often the treatment of common subexpression in compiler research and development is based on value numbering [Coc70] and Sethi Ullman numbering [Set70] techniques in peephole optimization framework [McK65] Skip Add is a combination of common subexpression replication and associativity, where the first one acts as an enabling transformation for the second one [Mil88] Associativity, distributivity and ....

J. Cocke and J.T. Schwartz. Programming Languages and Their Compilers: Preliminary Notes. New York: Courant Institute of Mathematical Science, 1970.


A Tree-Based Alternative to Java Byte-Codes (prepub) - Kistler, Franz (1996)   (12 citations)  (Correct)

....and recognizing access patterns, as well as having precise information about important cache parameters (e.g. cache size, line size) is a prerequisite for these optimizations. While the former can be accomplished at compile time, the latter cannot be accomplished in practice. Value numbering [CS70] poses a similar problem. If done at all at compile time, byte code instructions that cannot be mapped to the underlying architecture on a one to one basis, but have to be translated into a sequence of native instructions (e.g. invokevirtual, invokestatic, invokeinterface) cannot reasonably be ....

J. Cocke, J. Schwartz. Programming Languages and Their Compilers: Preliminary Notes. Courant Institute of Mathematical Sciences, New York University, April 1970.


Compiler Optimizations Should Pay for Themselves - Applying the.. - Franz   (Correct)

....in the first place unfortunately, the problem of deciding whether two computations are equivalent is undecideable in general (it is NP complete) so that practical implementations allow only incomplete solutions. Value numbering is an old technique in the field of compiler construction [CS70]. Many variants of the method are similar to a symbolic execution of the program being compiled, during which the compiler collects information about individual program expressions and compares this with data it has collected about other expressions occurring elsewhere in the program. In recent ....

J. Cocke and J. T. Schwartz; Programming Languages and Their Compilers: Preliminary Notes, Second Revised Version, Courant Institute of Mathematical Sciences, New York University; 1970.


Path-Sensitive Value-Flow Optimizations - Bodík (1998)   (Correct)

....when two different variables carry the same value. For example, following an assignment x: y, expressions 2 x and 2 y are value equivalent, although lexically different. Value numbering is a method for finding equivalences of lexical expressions in the presence of such copy assignments [CS69] The value numbering model relaxes the lexical identity to the identity of syntax tree representations of expressions: 2 x may be equal to 2 y (but not to 2 x) The validity rule is also relaxed: 2 x is equivalent to 2 y if x was assigned to y or vice versa, or if their assignments computed ....

....if the value of the statement is previously computed along each incoming path, then the statement can simply be removed. To verify 11 that the redundancy exists along all paths, the optimization can be restricted to basic blocks, as in subexpression elimination [ASU86] or value numbering [CS69] For applying deletion globally (across multiple basic blocks) data flow analysis is applied to confirm that value is available along all paths, as in global subexpression elimination [ASU86] Alternatively, dominators can be used, as in global value numbering [RWZ88] Deletion is impossible ....

John Cocke and Jacob T. Schwartz. Programming Languages and Their Compilers: Preliminary Notes. Courant Inst of Math. Sci., NYU, NY, NY, 1969.


Value Numbering - Briggs, Cooper, Simpson (1994)   (4 citations)  (Correct)

....N00014 91 J 1989. 1 Cai and Paige give an off line, linear time time algorithm that uses multiset discrimination as an alternative to hashing [5] 2 Hash Based Value Numbering Cocke and Schwartz describe a local technique that uses hashing to discover redundant computations and fold constants [6]. Each unique value is identified by its value number. Two computations in a block have the same value number if they are provably equal. In the literature, this technique and its derivatives are called value numbering. The algorithm is relatively simple. In practice, it is very fast. For each ....

John Cocke and Jacob T. Schwartz. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


Value-Driven Code Motion - Cooper, Simpson (1995)   (Correct)

....feature that these algorithms share is that they can rewrite the names in the entire routine consistently to reflect the equivalences discovered. 2. 1 Hash Based Value Numbering Cocke and Schwartz describe a local technique that uses hashing to discover redundant computations and fold constants [7]. Each unique value is identified by its value number. Two computations have the same value number if they are provably equal. In the literature, this technique and its derivatives are called value numbering. Briggs et al. introduced an extension that performs hash based value numbering over an ....

John Cocke and Jacob T. Schwartz. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


Using Conditional Branches to Improve Constant Propagation - Briggs, Torczon, Cooper (1995)   (2 citations)  (Correct)

....explored forms of range propagation [8, 9] These works try to solve much harder problems and are significantly more complex. Our approach is a simple solution to a limited problem. We continue to explore further uses for assertions. A natural possibility is to use them during value numbering [4, 2]; we some preliminary results in this area. A further possibility is finding an extension of value numbering, using assertions of inequalities, to accomplish a form of range propagation. Acknowledgements Cliff Click and Ken Kennedy contributed to this work through their interest and enlightened ....

John Cocke and Jacob T. Schwartz. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


An Application of Pattern Matching in Intrusion Detection - Kumar, Spafford (1994)   (33 citations)  (Correct)

....T13 13 , XGRP 38. IFFALSE T14 14 , L3 39. RES 1 40. RETURN 41. L3: 42. T15 15 AND T13 13 , XOTH 43. IFFALSE T15 15 , L4 44. RES 1 45. RETURN 46. EXIT: L4: 47. RES 0 48. RETURN The superscripted numbers in the instructions above correspond to their value numbers as outlined in [CS70] The expression OBJ[SRC FILE] is given a single value number because indexing is a primitive operation in our virtual machine. Each guard expression begins with an instruction of the form OBJ htype of audit recordi The variable OBJ is special and is automatically instantiated to the audit ....

....and assignment to non temporary variables is disabled in an inactive region. This prevents undesired side effects while ensuring that all subexpressions are evaluated and reside in their appropriate temporary variables. Following the procedure of common subexpression elimination outlined in [CS70] the code for both the guard expressions looks as shown below. 1. OBJ LINK 2. TRANSITION 4 2 0 . if( ENABLED TRANSITIONS[TRANSITION] f set processor state disabled JUMP 28 ;has no effect since processor state is disabled g 3. T1 1 OBJ[SRC FILE] 1 4. FILE1 1 T1 1 ;assignment ....

J. Cocke and J. T. Schwartz. Programming Languages and Their Compilers: Preliminary Notes, Second Revised Version. Courant Institute of Mathematical Sciences, New York, 1970.


Generalized Boxings, Congruences and Partial Inlining - Goubault   (Correct)

....In these respects, we shall subsume both Leroy s and Peyton Jones techniques. Data flow analysis techniques have been thoroughly developed for imperativestyle programming languages [1] and already solve some of our problems: redundant (generalized) boxings are also called common subexpressions [4, 9], and can be detected by congruence closure [9, 18, 10] and then eliminated. The first algorithms to do this were limited to basic blocks, but they can be extended to full procedures [21] by using static single assignment form (SSA) for programs [6] see Section 3) If all we want is to detect ....

J. Cocke and J. Schwartz. Programming languages and their compilers: preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York, 1970. second, revised version.


Value Numbering - Simpson (1996)   (Correct)

....lies in the framework that surrounds the primary step. The framework determines both the set of instructions processed and the order in which they are processed. For example, the classic local algorithm applies the primary step in sequential order to each instruction in a single basic block [9]. That algorithm has been extended to operate over larger scopes by carefully manipulating the hash table and ordering the applications of the primary step [5, 15] The primary step can be applied across the following scopes: Single basic blocks We apply the primary step to each instruction (from ....

John Cocke and Jacob T. Schwartz. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


A Multi-Strategy Approach for Parsing of Grammatical Relations in.. - Sagae (2006)   (Correct)

No context found.

Cocke, J. and J. T. Schwartz, 1970: Programming languages and their compilers: Preliminary notes. Tech. rep., New York University.


Optimizations and Oracle Parallelism with Dynamic.. - Ebcioglu, Altman.. (1999)   (3 citations)  (Correct)

No context found.

J. Cocke and J.T. Schwartz, Programming Languages and Their Compilers: Preliminary Notes, Technical Report, Courant Institute of Mathematical Sciences, New York University, 1970.


L. Taylor Simpson - Lts Cs Rice   (Correct)

No context found.

John Cocke and Jacob T. Schwartz. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University, 1970.


Value Numbering - Briggs, COOPER, SIMPSON (1997)   (4 citations)  (Correct)

No context found.

John Cocke and Jacob T. Schwartz, `Programming languages and their compilers: Preliminary notes', Technical report, Courant Institute of Mathematical Sciences, New York University, 1970. 24 BRIGGS, COOPER, SIMPSON

First 50 documents

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC