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>
<!-- *********************************************************************** -->
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>
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>
<!-- ======================================================================= -->
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
<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
<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
</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
<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"
}
</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>
...
<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>
;;
<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[]) {
}
</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>
;;
<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>
<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>
;;
<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 {
};
</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>
;;
<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 {
};
</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>
;;
<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>