Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Static single-assignment form
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Converting out of SSA form== SSA form is not normally used for direct execution (although it is possible to interpret SSA<ref>{{cite book |chapter=Interpreting programs in static single assignment form |year=2004 |last=von Ronne |first=Jeffery |author2=Ning Wang |author3=Michael Franz |title=Proceedings of the 2004 workshop on Interpreters, virtual machines and emulators - IVME '04 |page=23 |doi=10.1145/1059579.1059585 |isbn=1581139098 |s2cid=451410 |url=https://escholarship.org/uc/item/98n3s5r5 |chapter-url=http://dl.acm.org/citation.cfm?doid=1059579.1059585 }}</ref>), and it is frequently used "on top of" another IR with which it remains in direct correspondence. This can be accomplished by "constructing" SSA as a set of functions that map between parts of the existing IR (basic blocks, instructions, operands, ''etc.'') and its SSA counterpart. When the SSA form is no longer needed, these mapping functions may be discarded, leaving only the now-optimized IR. Performing optimizations on SSA form usually leads to entangled SSA-Webs, meaning there are Φ instructions whose operands do not all have the same root operand. In such cases [[graph coloring|color-out]] algorithms are used to come out of SSA. Naive algorithms introduce a copy along each predecessor path that caused a source of different root symbol to be put in Φ than the destination of Φ. There are multiple algorithms for coming out of SSA with fewer copies, most use interference graphs or some approximation of it to do copy coalescing.<ref>{{cite journal |last1=Boissinot |first1=Benoit |last2=Darte |first2=Alain |last3=Rastello |first3=Fabrice |last4=Dinechin |first4=Benoît Dupont de |last5=Guillon |first5=Christophe |title=Revisiting Out-of-SSA Translation for Correctness, Code Quality, and Efficiency |journal=HAL-Inria Cs.DS |date=2008 |pages=14 |url=https://hal.inria.fr/inria-00349925 |language=en}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)