diff options
-rw-r--r-- | docs/FAQ.html | 80 |
1 files changed, 53 insertions, 27 deletions
diff --git a/docs/FAQ.html b/docs/FAQ.html index 9359324..0f2abd6 100644 --- a/docs/FAQ.html +++ b/docs/FAQ.html @@ -72,12 +72,13 @@ <li><a href="#cfe_code">Questions about code generated by the GCC front-end</a> <ol> - <li>What is this <tt>__main()</tt> call that gets inserted into - <tt>main()</tt>?</li> - <li>Where did all of my code go??</li> - <li>What is this <tt>llvm.global_ctors</tt> and + <li><a href="#__main">What is this <tt>__main()</tt> call that gets inserted into + <tt>main()</tt>?</a></li> + <li><a href="#iosinit">What is this <tt>llvm.global_ctors</tt> and <tt>_GLOBAL__I__tmp_webcompile...</tt> stuff that happens when I - #include <iostream>?</li> + #include <iostream>?</a></li> + <li><a href="#codedce">Where did all of my code go??</a></li> + <li><a href="#undef">What is this "<tt>undef</tt>" thing that shows up in my code?</a></li> </ol> </li> </ol> @@ -448,6 +449,7 @@ correct this, do:</p> </div> <div class="question"><p> +<a name="__main"></a> What is this <tt>__main()</tt> call that gets inserted into <tt>main()</tt>? </p></div> @@ -469,29 +471,8 @@ linked in automatically when you link the program. <!--=========================================================================--> -<div class="question"><p> -Where did all of my code go?? -</p></div> - -<div class="answer"> -<p> -If you are using the LLVM demo page, you may often wonder what happened to all -of the code that you typed in. Remember that the demo script is running the -code through the LLVM optimizers, so if your code doesn't actually do anything -useful, it might all be deleted. -</p> - -<p> -To prevent this, make sure that the code is actually needed. For example, if -you are computing some expression, return the value from the function instead of -leaving it in a local variable. If you really want to constrain the optimizer, -you can read from and assign to <tt>volatile</tt> global variables. -</p> -</div> - -<!--=========================================================================--> - <div class="question"> +<a name="iosinit"></a> <p> What is this <tt>llvm.global_ctors</tt> and <tt>_GLOBAL__I__tmp_webcompile...</tt> stuff that happens when I #include <iostream>?</p> @@ -520,6 +501,51 @@ instead of <tt>iostream</tt>s to print values.</p> </div> +<!--=========================================================================--> + +<div class="question"><p> +<a name="codedce"></a> +Where did all of my code go?? +</p></div> + +<div class="answer"> +<p> +If you are using the LLVM demo page, you may often wonder what happened to all +of the code that you typed in. Remember that the demo script is running the +code through the LLVM optimizers, so if your code doesn't actually do anything +useful, it might all be deleted. +</p> + +<p> +To prevent this, make sure that the code is actually needed. For example, if +you are computing some expression, return the value from the function instead of +leaving it in a local variable. If you really want to constrain the optimizer, +you can read from and assign to <tt>volatile</tt> global variables. +</p> +</div> + +<!--=========================================================================--> + +<div class="question"><p> +<a name="undef"></a> +<p>What is this "<tt>undef</tt>" thing that shows up in my code? +</p></div> + +<div class="answer"> +<p> +<a href="LangRef.html#undef"><tt>undef</tt></a> is the LLVM way of representing +a value that is not defined. You can get these if you do not initialize a +variable before you use it. For example, the C function:</p> + +<div class="doc_code"> + <tt>int X() { int i; return i; }</tt> +</div> + +<p>Is compiled to "<tt>ret int undef</tt>" because "i" never has a value +specified for it. +</p> +</div> + <!-- *********************************************************************** --> <hr> |