From 237dc2a8079af79be30ef9966624661943fc6901 Mon Sep 17 00:00:00 2001
From: Misha Brukman and
Yes. The modified source distribution must retain the copyright notice and follow the three bulletted conditions listed in the LLVM license.
+href="http://llvm.cs.uiuc.edu/releases/1.3/LICENSE.TXT">LLVM license.-What is this llvm.global_ctors and _GLOBAL__I__tmp_webcompile... stuff that happens when I #include <iostream>? -
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 + +
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. -
+be automatically initialized before your use. --To make std::cout and friends work correctly in these scenarios, the +
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. +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. -
+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.
+