Patent US6029005A successfully refreshed from Google Patents.
← Back to Patent Explorer
US6029005A Expired / Lapsed US ⏱️ 0.0 years remaining

Method for identifying partial redundancies in a new processor architecture

Assignee: Intel Corp
•
Filing: 1997-04-01
•
Granted: 2000-02-22
•
Expires: 2017-04-01
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The invention, in one embodiment, is a method for compiling at least a portion of a computer program. The method includes (a) inserting a phi-function for a global variable reaching a join point in the intermediate language representation subsequent to the join point without regard to the presence of ambiguity; (b) renaming a definition and any subsequent use of the definition in the intermediate language representation; and (c) identifying a partially redundant load by determining whether any of the operands of the inserted phi-function have not been renamed.

Inventors

  • 👤 Jim J. Radigan

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-04 17:49
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/443

Claims Analysis

Total Claims: 81
Claim 1
Independent Claim 79 words
A method for compiling at least a portion of a computer program, the method comprising: (a) inserting a phi-function for a global variable reaching a join point in an intermediate language representation subsequent to the join point even in the presence of ambiguity; (b) renaming a definition and any subsequent use of the definition in the intermediate language representation; and (c) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 2
Independent Claim 79 words
A method for compiling at least a portion of a computer program, the method comprising: (a) inserting a phi-function for a global variable reaching a join point in an intermediate language representation subsequent to the join point even in the presence of ambiguity; (b) renaming a definition and any subsequent use of the definition in the intermediate language representation; and (c) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 3
Dependent Claim 20 words
The method of claim 1, wherein the acts (a)-(b) are repeated at least once before identifying the partially redundant load.
Claim 4
Dependent Claim 21 words
The method of claim 1, wherein the acts (a)-(b) are repeated until all complex definitions and their uses have been accommodated.
Claim 5
Dependent Claim 17 words
The method of claim 1, further comprising eliminating the partial redundancy of the identified partially redundant load.
Claim 6
Dependent Claim 53 words
The method of claim 4, wherein the identified partial redundancy is eliminated by inserting: (1) an advanced load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 7
Dependent Claim 25 words
The method of claim 1, wherein a plurality of phi-functions is inserted and the method further comprises maintaining a linked list of inserted phi-function locations.
Claim 8
Dependent Claim 42 words
The method of claim 1, wherein the act of renaming definitions includes at least one of the following: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-0 expression encountered during the traversal.
Claim 9
Dependent Claim 22 words
The method of claim 1, wherein a plurality of instructions comprising the portion of the computer program is partitioned into basic blocks.
Claim 10
Dependent Claim 11 words
The method of claim 1, further comprising generating machine readable code.
Claim 11
Dependent Claim 86 words
A program storage device encoding statements for compiling at least a portion of a computer program, the statements defining a method comprising: (a) inserting a phi-function for a global variable reaching a join point in an intermediate language representation subsequent to the join point even in the presence of ambiguity; (b) renaming a definition and any subsequent use of the definition in the intermediate language representation; and (c) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 12
Dependent Claim 86 words
A program storage device encoding statements for compiling at least a portion of a computer program, the statements defining a method comprising: (a) inserting a phi-function for a global variable reaching a join point in an intermediate language representation subsequent to the join point even in the presence of ambiguity; (b) renaming a definition and any subsequent use of the definition in the intermediate language representation; and (c) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 13
Dependent Claim 20 words
The device of claim 10, wherein the acts (a)-(b) are repeated at least once before identifying the partially redundant load.
Claim 14
Dependent Claim 21 words
The device of claim 10, wherein the acts (a)-(b) are repeated until all complex definitions and their uses have been accommodated.
Claim 15
Dependent Claim 17 words
The device of claim 10, further comprising eliminating the partial redundancy of the identified partially redundant load.
Claim 16
Dependent Claim 53 words
The device of claim 13, wherein the identified partial redundancy is eliminated by inserting: (1) an advanced load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 17
Dependent Claim 25 words
The device of claim 10, wherein a plurality of phi-functions is inserted and the method further comprises maintaining a linked list of inserted phi-function locations.
Claim 18
Dependent Claim 42 words
The device of claim 10, wherein the act of renaming definitions includes at least one of the following: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-0 expression encountered during the traversal.
Claim 19
Dependent Claim 22 words
The device of claim 10, wherein a plurality of instructions comprising the portion of the computer program is partitioned into basic blocks.
Claim 20
Dependent Claim 11 words
The device of claim 10, further comprising generating machine readable code.
Claim 21
Independent Claim 106 words
A method for compiling at least a portion of a computer program, wherein a phi-function having a plurality of operands has been inserted for a global variable reaching a join point subsequent to the join point and a definition and any subsequent use thereof has been renamed, the method comprising: (a) identifying a partially redundant load by determining whether the inserted phi-function contains an unregisterized operand; (b) inserting an advanced load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (c) inserting a load check prior to each use of the unregisterized operand subsequent to the advanced load.
Claim 22
Independent Claim 106 words
A method for compiling at least a portion of a computer program, wherein a phi-function having a plurality of operands has been inserted for a global variable reaching a join point subsequent to the join point and a definition and any subsequent use thereof has been renamed, the method comprising: (a) identifying a partially redundant load by determining whether the inserted phi-function contains an unregisterized operand; (b) inserting an advanced load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (c) inserting a load check prior to each use of the unregisterized operand subsequent to the advanced load.
Claim 23
Dependent Claim 65 words
The method of claim 19, further comprising eliminating a second identified partially redundant load by at least one of the following: (1) inserting an artificial load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (2) moving the partially redundant load to a nearest common ancestor in a dominance relationship of the operands in the one phi-function.
Claim 24
Dependent Claim 25 words
The method of claim 19, wherein a plurality of phi-nodes is inserted and the method further comprises maintaining a linked list of inserted phi-function locations.
Claim 25
Dependent Claim 22 words
The method of claim 19, wherein a plurality of instructions comprising the portion of the computer program is partitioned into basic blocks.
Claim 26
Dependent Claim 11 words
The method of claim 19, further comprising generating machine readable code.
Claim 27
Dependent Claim 110 words
A program storage device encoding statements for compiling at least a portion of a computer program, wherein a phi-function having a plurality of operands has been inserted for a global variable reaching a join point subsequent to the join point and a definition and any subsequent use thereof has been renamed, the method comprising: (a) identifying a partially redundant load by determining whether the inserted phi-function contains an unregisterized operand; (b) inserting an advanced load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (c) inserting a load check prior to each use of the unregisterized operand subsequent to the advanced load.
Claim 28
Dependent Claim 110 words
A program storage device encoding statements for compiling at least a portion of a computer program, wherein a phi-function having a plurality of operands has been inserted for a global variable reaching a join point subsequent to the join point and a definition and any subsequent use thereof has been renamed, the method comprising: (a) identifying a partially redundant load by determining whether the inserted phi-function contains an unregisterized operand; (b) inserting an advanced load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (c) inserting a load check prior to each use of the unregisterized operand subsequent to the advanced load.
Claim 29
Dependent Claim 65 words
The method of claim 24, further comprising eliminating a second identified partially redundant load by at least one of the following: (1) inserting an artificial load preceding the join point along an unbalanced flow control path of the operands in the phi-function; and (2) moving the partially redundant load to a nearest common ancestor in a dominance relationship of the operands in the one phi-function.
Claim 30
Dependent Claim 25 words
The method of claim 24, wherein a plurality of phi-nodes is inserted and the method further comprises maintaining a linked list of inserted phi-function locations.
Claim 31
Dependent Claim 22 words
The method of claim 24, wherein a plurality of instructions comprising the portion of the computer program is partitioned into basic blocks.
Claim 32
Dependent Claim 11 words
The method of claim 24, further comprising generating machine readable code.
Claim 33
Independent Claim 132 words
A method for compiling at least a portion of a computer program, the method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation reaching a join point; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation subsequent to the join point as indicated by the dominance relationship even in the presence of ambiguity; (e) renaming a definition and any subsequent use of the definition in the intermediate language representation; and (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 34
Independent Claim 132 words
A method for compiling at least a portion of a computer program, the method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation reaching a join point; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation subsequent to the join point as indicated by the dominance relationship even in the presence of ambiguity; (e) renaming a definition and any subsequent use of the definition in the intermediate language representation; and (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 35
Dependent Claim 20 words
The method of claim 28, wherein the acts (b)-(e) are repeated at least once before identifying the partially redundant load.
Claim 36
Dependent Claim 20 words
The method of claim 30, wherein acts, (b)-(e) are repeated until all complex definitions and their uses have been accommodated.
Claim 37
Dependent Claim 17 words
The method of claim 29, further comprising eliminating the partial redundancy of the identified partially redundant load.
Claim 38
Dependent Claim 58 words
The method of claim 32, wherein the identified partial redundancy is eliminated by inserting: (1) an advanced load preceding a join point reached by the global variable along an unbalanced flow control path of the operands in the phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 39
Dependent Claim 30 words
The method of claim 29, wherein determining the flow of control includes at least one of the following: (1) constructing a flow control graph; and (2) constructing a dominator-join graph.
Claim 40
Dependent Claim 37 words
The method of claim 29, wherein ascertaining the dominance relationship includes at least one of the following: (1) constructing a dominator tree; (2) constructing a dominator-join graph; and (3) calculating an iterative dominance frontier for each instruction.
Claim 41
Dependent Claim 25 words
The method of claim 29, wherein a plurality of phi-functions is inserted and the method further comprises maintaining a linked list of inserted phi-function locations.
Claim 42
Dependent Claim 41 words
The method of claim 29, wherein renaming the definition and any subsequent uses of the definition includes: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-0 expression encountered during the traversal.
Claim 43
Dependent Claim 12 words
The method of claim 29, wherein instructions are partitioned into basic blocks.
Claim 44
Dependent Claim 11 words
The method of claim 29, further comprising generating machine readable code.
Claim 45
Dependent Claim 130 words
A program storage device encoding statements for compiling at least a portion of a computer program, the statements defining a method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation as indicated by the dominance relationship even in the presence of ambiguity; (e) renaming a definition and any subsequent uses of the definition in the intermediate language representation; and (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 46
Dependent Claim 130 words
A program storage device encoding statements for compiling at least a portion of a computer program, the statements defining a method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation as indicated by the dominance relationship even in the presence of ambiguity; (e) renaming a definition and any subsequent uses of the definition in the intermediate language representation; and (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed.
Claim 47
Dependent Claim 20 words
The device of claim 40, wherein the acts (b)-(e) are repeated at least once before identifying the partially redundant load.
Claim 48
Dependent Claim 21 words
The device of claim 40, wherein the acts (b)-(e) are repeated until all complex definitions and their uses have been accommodated.
Claim 49
Dependent Claim 17 words
The device of claim 40, further comprising eliminating the partial redundancy of the identified partially redundant load.
Claim 50
Dependent Claim 57 words
The device of claim 43, wherein the partial redundancy is eliminated by inserting: (1) an advanced load preceding a join point reached by the global variable along an unbalanced flow control path of the operands in the phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 51
Dependent Claim 30 words
The device of claim 40, wherein determining the flow of control includes at least one of the following: (1) constructing a flow control graph; and (2) constructing a dominator-join graph.
Claim 52
Dependent Claim 37 words
The device of claim 40, wherein ascertaining the dominance relationship includes at least one of the following: (1) constructing a dominator tree; (2) constructing a dominator-join graph; and (3) calculating an iterative dominance frontier for each instruction.
Claim 53
Dependent Claim 25 words
The device of claim 40, wherein a plurality of phi-functions is inserted and the method further comprises maintaining a linked list of inserted phi-function locations.
Claim 54
Dependent Claim 41 words
The apparatus of claim 40, wherein renaming the definition and any subsequent uses of the definition includes: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-0 expression encountered during the traversal.
Claim 55
Dependent Claim 22 words
The apparatus of claim 40, wherein a plurality of instructions comprising the portion of the computer program is partitioned into basic blocks.
Claim 56
Dependent Claim 11 words
The apparatus of claim 40, further comprising generating machine readable code.
Claim 57
Independent Claim 184 words
A method for compiling at least a portion of a computer program into machine readable object code, the method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation reaching a join point; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation subsequent to the join point as indicated by the dominance relationship; (e) renaming a definition and only subsequent use of the definition in the intermediate language representation; (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed; and (g) eliminating the partial redundancy of the identified partially redundant load by inserting: (1) an advanced load preceding a join point along an unbalanced flow control path of the operands in the inserted phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 58
Independent Claim 184 words
A method for compiling at least a portion of a computer program into machine readable object code, the method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation reaching a join point; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation subsequent to the join point as indicated by the dominance relationship; (e) renaming a definition and only subsequent use of the definition in the intermediate language representation; (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed; and (g) eliminating the partial redundancy of the identified partially redundant load by inserting: (1) an advanced load preceding a join point along an unbalanced flow control path of the operands in the inserted phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 59
Dependent Claim 20 words
The method of claim 51, wherein the acts (b)-(e) are repeated at least once before identifying the partially redundant load.
Claim 60
Dependent Claim 21 words
The method of claim 51, wherein the acts (b)-(e) are repeated until all complex definitions and their uses have been accommodated.
Claim 61
Dependent Claim 67 words
The method of claim 51, further comprising eliminating a second identified partially redundancy load by at least one of the following: (1) inserting an artificial load preceding the join point along the unbalanced flow control path of the operands in the inserted phi-function; and (2) moving the second partially redundant load to a nearest common ancestor in the dominance relationship of the operands in the inserted phi-function.
Claim 62
Dependent Claim 30 words
The method of claim 51, wherein determining the flow of control includes at least one of the following: (1) constructing a flow control graph; and (2) constructing a dominator-join graph.
Claim 63
Dependent Claim 37 words
The method of claim 51, wherein ascertaining the dominance relationship includes at least one of the following: (1) constructing a dominator tree; (2) constructing a dominator-join graph; and (3) calculating an iterative dominance frontier for each instruction.
Claim 64
Dependent Claim 25 words
The method of claim 51, wherein a plurality of phi-nodes is inserted and the method further comprises maintaining a linked list of inserted phi-function locations.
Claim 65
Dependent Claim 41 words
The method of claim 51, wherein renaming the definitions and any subsequent use of the definition includes: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-0 expression encountered during the traversal.
Claim 66
Dependent Claim 22 words
The method of claim 51, wherein a plurality of instructions comprising the portion of the computer program is partitioned into basic blocks.
Claim 67
Dependent Claim 11 words
The method of claim 51, further comprising generating machine readable code.
Claim 68
Dependent Claim 191 words
A program storage device encoding statements for compiling at least a portion of a computer program into machine readable object code, the statements defining a method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation reaching a join point; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation subsequent to the join point as indicated by the dominance relationship; (e) renaming a definition and any subsequent uses of the definition in the intermediate language representation; (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed; and (g) eliminating the partial redundancy of the identified partially redundant load by inserting: (1) an advanced load preceding the join point along an unbalanced flow control path of the operands in the inserted phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 69
Dependent Claim 191 words
A program storage device encoding statements for compiling at least a portion of a computer program into machine readable object code, the statements defining a method comprising: (a) determining a flow of control along an execution path through an intermediate language representation of the portion of the computer program; (b) ascertaining a dominance relationship from the flow of control; (c) identifying a global variable in the intermediate language representation reaching a join point; (d) inserting a phi-function having a plurality of operands for the global variable in the intermediate language representation subsequent to the join point as indicated by the dominance relationship; (e) renaming a definition and any subsequent uses of the definition in the intermediate language representation; (f) identifying a partially redundant load by determining whether any operands of the inserted phi-function have not been renamed; and (g) eliminating the partial redundancy of the identified partially redundant load by inserting: (1) an advanced load preceding the join point along an unbalanced flow control path of the operands in the inserted phi-function; and (2) a load check prior to each use of the operand not renamed subsequent to the advanced load.
Claim 70
Dependent Claim 20 words
The method of claim 61, wherein the acts (b)-(e) are repeated at least once before identifying the partially redundant load.
Claim 71
Dependent Claim 71 words
The method of claim 61, wherein a second partial redundancy from a second identified partially redundant load is eliminated by at least one of the following: (1) inserting an artificial load preceding the join point along an unbalanced flow control path of the operands in the inserted phi-function; and (2) moving the partially redundant load to a nearest common ancestor in the dominance relationship of the operands in the inserted phi-function.
Claim 72
Dependent Claim 33 words
The method of claim 61, wherein the act of determining the flow of control includes at least one of the following: (1) constructing a flow control graph; and (2) constructing a dominator-join graph.
Claim 73
Dependent Claim 40 words
The method of claim 61, wherein the act of ascertaining the dominance relationship includes at least one of the following: (1) constructing a dominator tree; (2) constructing a dominator-join graph; and (3) calculating an iterative dominance frontier for each instruction.
Claim 74
Dependent Claim 26 words
The method of claim 61, wherein a plurality of phi-nodes is inserted and the method further comprises includes maintaining a linked list of inserted phi-function locations.
Claim 75
Dependent Claim 41 words
The method of claim 61, wherein renaming the definition and any subsequent use of the definition includes: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-0 expression encountered during the traversal.
Claim 76
Dependent Claim 22 words
The method of claim 61, wherein a plurality of instructions comprising the portion of the computer program is partitioned into basic blocks.
Claim 77
Dependent Claim 11 words
The method of claim 61, further comprising generating machine readable code.
Claim 78
Independent Claim 273 words
A method for compiling at least a portion of a computer program into machine readable object code, the method comprising: (a) determining a flow of control along each execution path through an intermediate language representation, including constructing at least one of a flow control graph and a dominator-join graph; (b) ascertaining a dominance relationship from the flow of control, including: (1) constructing at least one of a dominator tree and a dominator-join graph; and (2) calculating an iterative dominance frontier for each instruction, (c) identifying each global variable in the intermediate language representation; (d) inserting a phi-function for each global variable reaching a join point in the intermediate language representation as indicated by the dominance relationship even in the presence of ambiguity, including maintaining a linked list of a plurality of inserted phi-function locations; (e) renaming a definition and subsequent uses thereof in the intermediate language representation, the renaming including: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-n expression; (f) repeating acts (b)-(e) at least once to create a rank-n SSA intermediate language where n is a positive integer greater than zero; (g) identifying a partially redundant load by determining whether the inserted phi-function contains an unregisterized operand; (h) eliminating the identified partial redundancy by inserting: (1) an advanced load into a basic block immediately preceding the join point along the unbalanced flow control path of the operands in at least one phi-function containing the unregisterized operand; and (2) a load check immediately prior to each use of the unregisterized operand subsequent to the advanced load; and (i) generating machine readable code.
Claim 79
Independent Claim 273 words
A method for compiling at least a portion of a computer program into machine readable object code, the method comprising: (a) determining a flow of control along each execution path through an intermediate language representation, including constructing at least one of a flow control graph and a dominator-join graph; (b) ascertaining a dominance relationship from the flow of control, including: (1) constructing at least one of a dominator tree and a dominator-join graph; and (2) calculating an iterative dominance frontier for each instruction, (c) identifying each global variable in the intermediate language representation; (d) inserting a phi-function for each global variable reaching a join point in the intermediate language representation as indicated by the dominance relationship even in the presence of ambiguity, including maintaining a linked list of a plurality of inserted phi-function locations; (e) renaming a definition and subsequent uses thereof in the intermediate language representation, the renaming including: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-n expression; (f) repeating acts (b)-(e) at least once to create a rank-n SSA intermediate language where n is a positive integer greater than zero; (g) identifying a partially redundant load by determining whether the inserted phi-function contains an unregisterized operand; (h) eliminating the identified partial redundancy by inserting: (1) an advanced load into a basic block immediately preceding the join point along the unbalanced flow control path of the operands in at least one phi-function containing the unregisterized operand; and (2) a load check immediately prior to each use of the unregisterized operand subsequent to the advanced load; and (i) generating machine readable code.
Claim 80
Independent Claim 349 words
A method for compiling at least a portion of high-level source code, into machine readable object code, the method comprising: (a) determining a flow of control along each execution path through an intermediate language representation, including: (1) constructing at least one of the following: (A) a flow control graph; and (B) a dominator-join graph; (b) ascertaining a dominance relationship from the flow of control, including: (1) constructing at least one of the following: (A) a dominator tree; and (B) a dominator-join graph; and (2) calculating an iterative dominance frontier for each instruction, (c) identifying each global variable in the intermediate language representation; (d) inserting a phi-function for each global variable in the intermediate language representation as indicated by the dominance relationship, including maintaining a linked list of inserted phi-function locations; (e) renaming definitions in the intermediate language representation, the renaming including: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-n expression; (f) repeating acts (b)-(e) at least once to create a rank-n SSA intermediate language where n is a positive integer greater than zero; (g) identifying a partial redundancy by determining whether an inserted phi-function contains an unregisterized operand; (h) eliminating the identified partial redundancy by inserting: (1) an advanced load into a basic block immediately preceding the join point along the unbalanced flow control path of the operands in at least one phi-function containing the unregisterized operand; and (2) a load check immediately prior to each use of the unregisterized operand subsequent to the advanced load; (i) eliminating a second identified partial redundancy by at least one of the following: (1) inserting an artificial load into the basic block immediately preceding the join point along the unbalanced flow control path of the operands in at least one phi-function containing the unregistered operand after identifying the partial redundancy; and (2) moving the second identified partially redundant load to a nearest common ancestor in the dominance relationship of the operands in at least one phi-function containing the unregistered operand after identifying the partial redundancy; and (j) generating machine readable code.
Claim 81
Independent Claim 349 words
A method for compiling at least a portion of high-level source code, into machine readable object code, the method comprising: (a) determining a flow of control along each execution path through an intermediate language representation, including: (1) constructing at least one of the following: (A) a flow control graph; and (B) a dominator-join graph; (b) ascertaining a dominance relationship from the flow of control, including: (1) constructing at least one of the following: (A) a dominator tree; and (B) a dominator-join graph; and (2) calculating an iterative dominance frontier for each instruction, (c) identifying each global variable in the intermediate language representation; (d) inserting a phi-function for each global variable in the intermediate language representation as indicated by the dominance relationship, including maintaining a linked list of inserted phi-function locations; (e) renaming definitions in the intermediate language representation, the renaming including: (1) performing a depth-first ordered traversal of the intermediate language representation; and (2) assigning temp values to each rank-n expression; (f) repeating acts (b)-(e) at least once to create a rank-n SSA intermediate language where n is a positive integer greater than zero; (g) identifying a partial redundancy by determining whether an inserted phi-function contains an unregisterized operand; (h) eliminating the identified partial redundancy by inserting: (1) an advanced load into a basic block immediately preceding the join point along the unbalanced flow control path of the operands in at least one phi-function containing the unregisterized operand; and (2) a load check immediately prior to each use of the unregisterized operand subsequent to the advanced load; (i) eliminating a second identified partial redundancy by at least one of the following: (1) inserting an artificial load into the basic block immediately preceding the join point along the unbalanced flow control path of the operands in at least one phi-function containing the unregistered operand after identifying the partial redundancy; and (2) moving the second identified partially redundant load to a nearest common ancestor in the dominance relationship of the operands in at least one phi-function containing the unregistered operand after identifying the partial redundancy; and (j) generating machine readable code.

References Cited (Backward Citations)

US4435753A Cited
US4567574A Cited
US4656583A Cited
US4656582A Cited
US4710872A Cited
US4782444A Cited
US4821181A Cited
US4773007A Cited
US4833606A Cited
US4965724A Cited
US4885684A Cited
US5287510A Cited
US5768596A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-02-21 2003-08-23 2004-02-22 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-02-21 2007-08-23 2008-02-22 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-02-21 2011-08-23 2012-02-22 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag