[llvm-commits] [llvm] r171155 - /llvm/trunk/docs/FAQ.rst

Sean Silva silvas at purdue.edu
Thu Dec 27 02:23:04 PST 2012


Author: silvas
Date: Thu Dec 27 04:23:04 2012
New Revision: 171155

URL: http://llvm.org/viewvc/llvm-project?rev=171155&view=rev
Log:
docs: Add FAQ about "storing to a virtual register".

This came up for the N+1'st time today in IRC.

Modified:
    llvm/trunk/docs/FAQ.rst

Modified: llvm/trunk/docs/FAQ.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/FAQ.rst?rev=171155&r1=171154&r2=171155&view=diff
==============================================================================
--- llvm/trunk/docs/FAQ.rst (original)
+++ llvm/trunk/docs/FAQ.rst Thu Dec 27 04:23:04 2012
@@ -53,6 +53,29 @@
   like the Bourne Shell and sed.  Porting to systems without these tools
   (MacOS 9, Plan 9) will require more effort.
 
+What API do I use to store a value to one of the virtual registers in LLVM IR's SSA representation?
+---------------------------------------------------------------------------------------------------
+
+In short: you can't. It's actually kind of a silly question once you grok
+what's going on. Basically, in code like:
+
+.. code-block:: llvm
+
+    %result = add i32 %foo, %bar
+
+, ``%result`` is just a name given to the ``Value`` of the ``add``
+instruction. In other words, ``%result`` *is* the add instruction. The
+"assignment" doesn't explicitly "store" anything to any "virtual register";
+the "``=``" is more like the mathematical sense of equality.
+
+Longer explanation: In order to generate a textual representation of the
+IR, some kind of name has to be given to each instruction so that other
+instructions can textually reference it. However, the isomorphic in-memory
+representation that you manipulate from C++ has no such restriction since
+instructions can simply keep pointers to any other ``Value``'s that they
+reference. In fact, the names of dummy numbered temporaries like ``%1`` are
+not explicitly represented in the in-memory representation at all (see
+``Value::getName()``).
 
 Build Problems
 ==============





More information about the llvm-commits mailing list