From c50bbc9613229ba3e21d64d62827fcc6c5d951cd Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 29 Mar 2004 19:14:35 +0000 Subject: [PATCH] Add a faq entry git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12529 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/FAQ.html | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/FAQ.html b/docs/FAQ.html index 23c61cc6ea1..87e6c13f356 100644 --- a/docs/FAQ.html +++ b/docs/FAQ.html @@ -71,6 +71,9 @@
  • What is this __main() call that gets inserted into main()?
  • Where did all of my code go??
  • +
  • What is this llvm.global_ctors and + _GLOBAL__I__tmp_webcompile... stuff that happens when I + #include <iostream>?
  • @@ -449,6 +452,42 @@ you can read from and assign to volatile global variables.

    + + +

    +What is this llvm.global_ctors and _GLOBAL__I__tmp_webcompile... stuff that happens when I #include <iostream>? +

    + +
    +

    +If you #include the <iostream> header into a C++ translation unit, the +file will probably use the std::cin/std::cout/... global +objects. However, C++ does not guarantee an order of initialization between +static objects in different translation units, so if a static ctor/dtor in your +.cpp file used std::cout, for example, the object would not necessarily +be automatically initialized before your use. +

    + +

    +To make std::cout and friends work correctly in these scenarios, the +STL that we use declares a static object that gets created in every translation +unit that includes <iostream>. This object has a static constructor and +destructor that initializes and destroys the global iostream objects before they +could possibly be used in the file. The code that you see in the .ll file +corresponds to the constructor and destructor registration code. +

    + +

    +If you would like to make it easier to understand the LLVM code generated +by the compiler in the demo page, consider using printf instead of iostreams to +print values. +

    +
    + + +
  • + + -- 2.34.1