Molecular mechanics: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Monkbot
en>Anand guddu
mNo edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
'''Global value numbering''' (GVN) is a [[compiler optimization]] based on the [[SSA (compilers)|SSA]] intermediate representation. It sometimes helps eliminate [[redundant code]] that [[common subexpression elimination]] (CSE) does not.  At the same time, however, CSE may eliminate code that GVN does not, so both are often found in modern compilers.  Global value numbering is distinct from [[local value numbering]] in that the value-number mappings hold across basic block boundaries as well, and different algorithms are used to compute the mappings.
They call me Gabrielle. I am a very cashier and I'm charging pretty good financially. As a definite girl what I sincerely like is going in the market to karaoke but I do not have made a dime with it. My husband and I decided upon to reside in Guam but I will gain to move in a suitable year or two. See what's new on my website here: http://prometeu.net<br><br>Also visit my page :: [http://prometeu.net clash of clans hacker v 1.3]
 
Global value numbering works by assigning a [[value number]] to variables and expressions. To those variables and expressions which are provably equivalent, the same value number is assigned. For instance, in the following code:
 
w := 3
x := 3
y := x + 4
z := w + 4
 
a good GVN routine would assign the same value number to <code>w</code> and <code>x</code>, and the same value number to <code>y</code> and <code>z</code>. For instance, the map <math>[{w} \mapsto 1, {x} \mapsto 1, {y} \mapsto 2, {z} \mapsto 2]</math> would constitute an optimal value-number mapping for this block.
Using this information, the previous code fragment may be safely transformed into:
 
w := 3
x := w
y := w + 4
z := y
 
Depending on the code following this fragment, [[copy propagation]] may be able to remove the assignments to <code>x</code> and to <code>z</code>
 
The reason that GVN is sometimes more powerful than CSE comes from the fact that CSE matches lexically identical expressions whereas the GVN tries to determine an underlying equivalence.  For instance, in the code:
 
a := c × d
e := c
f := e × d
 
Without copy propagation, CSE would ''not'' eliminate the recomputation assigned to <code>f</code>, but even a poor GVN algorithm should discover and eliminate this redundancy.
 
SSA form is required to perform GVN{{Citation needed|date=June 2011}} so that false {variable name → value name} mappings are not created.
 
== References ==
*G.A. Kildall, "A Unified Approach to Global Program Optimization." Proceedings of the First ACM Symposium on Principles of Programming Languages,194-206, 1973.
* Alpern, Bowen, Wegman, Mark N., and Zadeck, F. Kenneth.  "Detecting Equality of Variables in Programs.", ''Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages'' ([[POPL]]), ACM Press, San Diego, CA, USA, January 1988, pages 1–11.
* L. Taylor Simpson, "Value-Driven Redundancy Elimination." Technical Report 96-308, Computer Science Department, Rice University, 1996.  (Author's Ph.D. thesis)
* Muchnick, Steven S. ''Advanced Compiler Design and Implementation''.  Morgan Kaufmann.  1997.
* P. Briggs, K.D. Cooper, L.T. Simpson,"Value Numbering." Software-Practice and Experience, 27:6, pages :701-724, 1997.
[[Category:Compiler optimizations]]

Latest revision as of 10:30, 16 July 2014

They call me Gabrielle. I am a very cashier and I'm charging pretty good financially. As a definite girl what I sincerely like is going in the market to karaoke but I do not have made a dime with it. My husband and I decided upon to reside in Guam but I will gain to move in a suitable year or two. See what's new on my website here: http://prometeu.net

Also visit my page :: clash of clans hacker v 1.3