X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FFAQ.rst;h=8db94c6250c199505293c5ef91f789feb730ab8f;hb=daf061cf05d9ea2682c660f8208c40776f926cde;hp=67e8d0b27b26ee4ba991b638b6bd24c6643eb639;hpb=527036d5ff4bcb1afe6e85cfab9a3d85dcc5db7b;p=oota-llvm.git diff --git a/docs/FAQ.rst b/docs/FAQ.rst index 67e8d0b27b2..8db94c6250c 100644 --- a/docs/FAQ.rst +++ b/docs/FAQ.rst @@ -1,5 +1,3 @@ -.. _faq: - ================================ Frequently Asked Questions (FAQ) ================================ @@ -53,6 +51,29 @@ Some porting problems may exist in the following areas: 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 ============== @@ -163,14 +184,6 @@ This is `a bug in GCC `_, and affects projects other than LLVM. Try upgrading or downgrading your GCC. -Compiling LLVM with GCC succeeds, but the resulting tools do not work, what can be wrong? ------------------------------------------------------------------------------------------ -Several versions of GCC have shown a weakness in miscompiling the LLVM -codebase. Please consult your compiler version (``gcc --version``) to find -out whether it is `broken `_. If so, your only -option is to upgrade GCC to a known good version. - - After Subversion update, rebuilding gives the error "No rule to make target". ----------------------------------------------------------------------------- If the error is of the form: