Changed option name from inline-threshold to basic-inline-threshold because
[oota-llvm.git] / docs / SourceLevelDebugging.html
index 172ede02e6afd19bbed7a9a607243a23ad398045..263f40c6ebc08f5ae92ec11f03c4b57fe9e39af7 100644 (file)
@@ -208,6 +208,24 @@ elimination and inlining), but you might lose the ability to modify the program
 and call functions where were optimized out of the program, or inlined away
 completely.</p>
 
+<p><a href="TestingGuide.html#quicktestsuite">LLVM test suite</a> provides a
+framework to test optimizer's handling of debugging information. It can be run
+like this:</p>
+
+<div class="doc_code">
+<pre>
+% cd llvm/projects/test-suite/MultiSource/Benchmarks  # or some other level
+% make TEST=dbgopt
+</pre>
+</div>
+
+<p>
+This will test impact of debugging information on optimization passes. If
+debugging information influences optimization passes then it will be reported
+as a failure. See <a href="TestingGuide.html">TestingGuide</a>
+for more information on LLVM test infrastructure and how to run various tests.
+</p>
+
 </div>
 
 <!-- *********************************************************************** -->
@@ -360,6 +378,7 @@ deleted.</p>
     sbyte*, ;; Source file name
     sbyte*, ;; Source file directory (includes trailing slash)
     sbyte*  ;; Producer (ex. "4.0.1 LLVM (LLVM research group)")
+    bool    ;; True if this is a main compile unit. 
   }
 </pre>
 
@@ -374,6 +393,14 @@ specific source file.  Global variables and top level functions would be defined
 using this context.  Compile unit descriptors also provide context for source
 line correspondence.</p>  
 
+<p> Each input file is encoded as a separate compile unit in LLVM debugging
+information output. However, many target specific tool chains prefer to encode
+only one compile unit in an object file. In this situation, the LLVM code
+generator will include  debugging information entities in the compile unit 
+that is marked as main compile unit. The code generator accepts maximum one main
+compile unit per module. If a module does not contain any main compile unit 
+then the code generator will emit multiple compile units in the output object 
+file.
 </div>
 
 <!-- ======================================================================= -->
@@ -485,7 +512,7 @@ offset if embedded in a <a href="#format_composite_type">composite
 type</a>.</p>
 
 <p>The type encoding provides the details of the type.  The values are typically
-one of the following;</p>
+one of the following:</p>
 
 <pre>
   DW_ATE_address = 1
@@ -522,7 +549,7 @@ one of the following;</p>
 
 <p>These descriptors are used to define types derived from other types.  The
 value of the tag varies depending on the meaning.  The following are possible
-tag values;</p>
+tag values:</p>
 
 <pre>
   DW_TAG_formal_parameter = 5
@@ -586,7 +613,7 @@ NULL derived type.</p>
 
 <p>These descriptors are used to define types that are composed of 0 or more
 elements.  The value of the tag varies depending on the meaning.  The following
-are possible tag values;</p>
+are possible tag values:</p>
 
 <pre>
   DW_TAG_array_type = 1
@@ -703,7 +730,7 @@ value.</p>
 </pre>
 
 <p>These descriptors are used to define variables local to a sub program.  The
-value of the tag depends on the usage of the variable;</p>
+value of the tag depends on the usage of the variable:</p>
 
 <pre>
   DW_TAG_auto_variable = 256
@@ -1036,7 +1063,7 @@ debug information that would best describe those constructs.</p>
 <div class="doc_text">
 
 <p>Given the source files "MySource.cpp" and "MyHeader.h" located in the
-directory "/Users/mine/sources", the following code;</p>
+directory "/Users/mine/sources", the following code:</p>
 
 <pre>
 #include "MyHeader.h"
@@ -1046,7 +1073,7 @@ int main(int argc, char *argv[]) {
 }
 </pre>
 
-<p>a C/C++ front-end would generate the following descriptors;</p>
+<p>a C/C++ front-end would generate the following descriptors:</p>
 
 <pre>
 ...
@@ -1107,13 +1134,13 @@ int main(int argc, char *argv[]) {
 
 <div class="doc_text">
 
-<p>Given an integer global variable declared as follows;</p>
+<p>Given an integer global variable declared as follows:</p>
 
 <pre>
 int MyGlobal = 100;
 </pre>
 
-<p>a C/C++ front-end would generate the following descriptors;</p>
+<p>a C/C++ front-end would generate the following descriptors:</p>
 
 <pre>
 ;;
@@ -1187,7 +1214,7 @@ int MyGlobal = 100;
 
 <div class="doc_text">
 
-<p>Given a function declared as follows;</p>
+<p>Given a function declared as follows:</p>
 
 <pre>
 int main(int argc, char *argv[]) {
@@ -1195,7 +1222,7 @@ int main(int argc, char *argv[]) {
 }
 </pre>
 
-<p>a C/C++ front-end would generate the following descriptors;</p>
+<p>a C/C++ front-end would generate the following descriptors:</p>
 
 <pre>
 ;;
@@ -1252,7 +1279,7 @@ int %main(int %argc, sbyte** %argv) {
 
 <div class="doc_text">
 
-<p>The following are the basic type descriptors for C/C++ core types;</p>
+<p>The following are the basic type descriptors for C/C++ core types:</p>
 
 </div>
 
@@ -1516,13 +1543,13 @@ int %main(int %argc, sbyte** %argv) {
 
 <div class="doc_text">
 
-<p>Given the following as an example of C/C++ derived type;</p>
+<p>Given the following as an example of C/C++ derived type:</p>
 
 <pre>
 typedef const int *IntPtr;
 </pre>
 
-<p>a C/C++ front-end would generate the following descriptors;</p>
+<p>a C/C++ front-end would generate the following descriptors:</p>
 
 <pre>
 ;;
@@ -1593,7 +1620,7 @@ typedef const int *IntPtr;
 
 <div class="doc_text">
 
-<p>Given the following as an example of C/C++ struct type;</p>
+<p>Given the following as an example of C/C++ struct type:</p>
 
 <pre>
 struct Color {
@@ -1603,7 +1630,7 @@ struct Color {
 };
 </pre>
 
-<p>a C/C++ front-end would generate the following descriptors;</p>
+<p>a C/C++ front-end would generate the following descriptors:</p>
 
 <pre>
 ;;
@@ -1700,7 +1727,7 @@ struct Color {
 
 <div class="doc_text">
 
-<p>Given the following as an example of C/C++ enumeration type;</p>
+<p>Given the following as an example of C/C++ enumeration type:</p>
 
 <pre>
 enum Trees {
@@ -1710,7 +1737,7 @@ enum Trees {
 };
 </pre>
 
-<p>a C/C++ front-end would generate the following descriptors;</p>
+<p>a C/C++ front-end would generate the following descriptors:</p>
 
 <pre>
 ;;
@@ -1772,9 +1799,9 @@ enum Trees {
 <hr>
 <address>
   <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
   <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
 
   <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br>