← Back to Patent Explorer
US4642764A Expired / Lapsed US ⏱️ 0.0 years remaining

Method of developing formal identities and program bases in an optimizing compiler

Assignee: International Business Machines Corp
•
Filing: 1984-08-13
•
Granted: 1987-02-10
•
Expires: 2004-08-13
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method operable within an optimizing compiler for generating Basis items and Kill Sets for use during subsequent global common subexpressions elimination and code motion procedures. More particularly, the method comprises assigning a symbolic register to each non-basis element to be computed as follows: creating a tuple (v) for each computation which is to be converted to a machine instruction by the compiler creating a table (optimally, a hash table) having an entry for all the tuples in the program being compiled; for every Basis element in a tuple being entered in the table a symbolic register uniquely assigned to that tuple is added to the Kill Set for that Basis element. For every non-basis element "n" in the tuple being entered into the table, the uniquely assigned symbolic register for that tuple is added to the Kill Sets for all the Basis elements in whose Kill Sets that non-basis element "n" appears. The symbolic register assigned to the tuple in the table is chosen to total the result of the computation of the non-basis element; and finally, a second table is constructed so that given a symbolic register, the computation which it represents can be retrieved.

Inventors

  • 👤 Marc A. Auslander
  • 👤 Martin E. Hopkins
  • 👤 Peter W. Markstein

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-27 10:08
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/43; G06F8/433

Claims Analysis

Total Claims: 11
Claim 1
Independent Claim 185 words
A method operable within an optimizing compiler for generating Basis items and Kill Sets for use during subsequent global common subexpression elimination and code motion procedures, said method comprising: creating a tuple (v) for each computation which is to be converted to a machine instruction by the compiler, creating a table having an entry for all the tuples in the program being compiled, assigning a symbolic register to each tuple created, for every Basis item in a tuple being entered in the table adding to the Kill Set for that Basis item, a symbolic register uniquely assigned to that tuple, for every non-basis item "n" in the tuple being entered into the table, adding the uniquely assigned symbolic register for that tuple to the Kill Sets for all the Basis items in whose Kill Sets that non-basis item "n" appears, designating the symbolic register assigned to the tuple in the table to the result of the computation of the non-basis element, and constructing a second table of assigned symbolic registers whereby the computation to which each symbolic register has been assigned can be readily retrieved.
Claim 2
Independent Claim 185 words
A method operable within an optimizing compiler for generating Basis items and Kill Sets for use during subsequent global common subexpression elimination and code motion procedures, said method comprising: creating a tuple (v) for each computation which is to be converted to a machine instruction by the compiler, creating a table having an entry for all the tuples in the program being compiled, assigning a symbolic register to each tuple created, for every Basis item in a tuple being entered in the table adding to the Kill Set for that Basis item, a symbolic register uniquely assigned to that tuple, for every non-basis item "n" in the tuple being entered into the table, adding the uniquely assigned symbolic register for that tuple to the Kill Sets for all the Basis items in whose Kill Sets that non-basis item "n" appears, designating the symbolic register assigned to the tuple in the table to the result of the computation of the non-basis element, and constructing a second table of assigned symbolic registers whereby the computation to which each symbolic register has been assigned can be readily retrieved.
Claim 3
Independent Claim 58 words
A method operable within an optimizing compiler for generating Basis items and Kill Sets for use during subsequent global common subexpressions elimination and code motion procedures, said method comprising assigning a symbolic register designation to each non-basis items in the program being compiled, whereby the computation to which each symbolic register has been assigned can be readily retrieved.
Claim 4
Independent Claim 58 words
A method operable within an optimizing compiler for generating Basis items and Kill Sets for use during subsequent global common subexpressions elimination and code motion procedures, said method comprising assigning a symbolic register designation to each non-basis items in the program being compiled, whereby the computation to which each symbolic register has been assigned can be readily retrieved.
Claim 5
Dependent Claim 37 words
A method operable within an optimizing compiler as set forth in claim 2 including instructing a list for each Basis item comprising: all of the symbolic register designations for every non-basis item dependent upon that basis item.
Claim 6
Independent Claim 95 words
A method operable within an optimizing compiler for generating Basis items and Kill Sets for use during subsequent global common subexpression elimination and code motion procedures, said method comprising: creating a tuple (v) for each computation which is to be converted to a machine instruction by the compiler, creating a hash table having an entry for all the tuples in the program being compiled, assigning a symbolic register to each tuple created, and creating a list of said assigned symbolic registers addressable by register designation containing the tuple to which that symbolic register is assigned.
Claim 7
Independent Claim 95 words
A method operable within an optimizing compiler for generating Basis items and Kill Sets for use during subsequent global common subexpression elimination and code motion procedures, said method comprising: creating a tuple (v) for each computation which is to be converted to a machine instruction by the compiler, creating a hash table having an entry for all the tuples in the program being compiled, assigning a symbolic register to each tuple created, and creating a list of said assigned symbolic registers addressable by register designation containing the tuple to which that symbolic register is assigned.
Claim 8
Independent Claim 216 words
A method operable within an optimizing compiler for use during subsequent global common subexpression elimination and code motion which comprise, evaluating the program and deriving a list of Basis items contained therein, creating a tuple (v) for each computation which is to be converted to a machine instruction by the computer, creating a hash table having an entry for every potential tuple in the program being compiled, as each tuple is generated by the compiler performing the following steps: (1) computing a hash address for the tuple (2) determining if an entry already exists for that tuple, (3) if an entry exists in the hash table (symbolic register designation r) returning r to the system controls (4) if no entry exists in the hash table for that tuple, assigning a unique symbolic register r to that tuple and storing same at the specific address in the hash table (5) determining how many operands are in the tuple and processing each as follows: (6) for each operand, if it is in the Basis storing the symbolic register designation r in that operands Kill Set (7) if the operand is not in the Basis storing the symbolic register designation is in every Kill Set containing that operand, (8) returning to step 4 after all operands have been evaluated.
Claim 9
Independent Claim 216 words
A method operable within an optimizing compiler for use during subsequent global common subexpression elimination and code motion which comprise, evaluating the program and deriving a list of Basis items contained therein, creating a tuple (v) for each computation which is to be converted to a machine instruction by the computer, creating a hash table having an entry for every potential tuple in the program being compiled, as each tuple is generated by the compiler performing the following steps: (1) computing a hash address for the tuple (2) determining if an entry already exists for that tuple, (3) if an entry exists in the hash table (symbolic register designation r) returning r to the system controls (4) if no entry exists in the hash table for that tuple, assigning a unique symbolic register r to that tuple and storing same at the specific address in the hash table (5) determining how many operands are in the tuple and processing each as follows: (6) for each operand, if it is in the Basis storing the symbolic register designation r in that operands Kill Set (7) if the operand is not in the Basis storing the symbolic register designation is in every Kill Set containing that operand, (8) returning to step 4 after all operands have been evaluated.
Claim 10
Independent Claim 53 words
A method operable within an optimizing compiler for selecting a `Basis` without analyzing the program by including the following items into the `Basis`: all user variables, and all descriptors of user variables, pointers to run-time stacks and heaps in which data objects are allocated, pointers to object code, distinguished compiler generated temporary results.
Claim 11
Independent Claim 53 words
A method operable within an optimizing compiler for selecting a `Basis` without analyzing the program by including the following items into the `Basis`: all user variables, and all descriptors of user variables, pointers to run-time stacks and heaps in which data objects are allocated, pointers to object code, distinguished compiler generated temporary results.

References Cited (Backward Citations)

US4567574A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1990-02-09 1990-08-11 1991-02-10 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1994-02-09 1994-08-11 1995-02-10 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 1998-02-09 1998-08-11 1999-02-10 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag