<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Source Level Debugging with LLVM</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<h1>Source Level Debugging with LLVM</h1>

<table class="layout" style="width:100%">
  <tr class="layout">
    <td class="left">
<ul>
  <li><a href="#introduction">Introduction</a>
  <ol>
    <li><a href="#phil">Philosophy behind LLVM debugging information</a></li>
    <li><a href="#consumers">Debug information consumers</a></li>
    <li><a href="#debugopt">Debugging optimized code</a></li>
  </ol></li>
  <li><a href="#format">Debugging information format</a>
  <ol>
    <li><a href="#debug_info_descriptors">Debug information descriptors</a>
    <ul>
      <li><a href="#format_compile_units">Compile unit descriptors</a></li>
      <li><a href="#format_files">File descriptors</a></li>
      <li><a href="#format_global_variables">Global variable descriptors</a></li>
      <li><a href="#format_subprograms">Subprogram descriptors</a></li>
      <li><a href="#format_blocks">Block descriptors</a></li>
      <li><a href="#format_basic_type">Basic type descriptors</a></li>
      <li><a href="#format_derived_type">Derived type descriptors</a></li>
      <li><a href="#format_composite_type">Composite type descriptors</a></li>
      <li><a href="#format_subrange">Subrange descriptors</a></li>
      <li><a href="#format_enumeration">Enumerator descriptors</a></li>
      <li><a href="#format_variables">Local variables</a></li>
    </ul></li>
    <li><a href="#format_common_intrinsics">Debugger intrinsic functions</a>
      <ul>
      <li><a href="#format_common_declare">llvm.dbg.declare</a></li>
      <li><a href="#format_common_value">llvm.dbg.value</a></li>
    </ul></li>
  </ol></li>
  <li><a href="#format_common_lifetime">Object lifetimes and scoping</a></li>
  <li><a href="#ccxx_frontend">C/C++ front-end specific debug information</a>
  <ol>
    <li><a href="#ccxx_compile_units">C/C++ source file information</a></li>
    <li><a href="#ccxx_global_variable">C/C++ global variable information</a></li>
    <li><a href="#ccxx_subprogram">C/C++ function information</a></li>
    <li><a href="#ccxx_basic_types">C/C++ basic types</a></li>
    <li><a href="#ccxx_derived_types">C/C++ derived types</a></li>
    <li><a href="#ccxx_composite_types">C/C++ struct/union types</a></li>
    <li><a href="#ccxx_enumeration_types">C/C++ enumeration types</a></li>
  </ol></li>
</ul>
</td>
<td class="right">
<img src="img/venusflytrap.jpg" alt="A leafy and green bug eater" width="247"
height="369">
</td>
</tr></table>

<div class="doc_author">
  <p>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a>
            and <a href="mailto:jlaskey@mac.com">Jim Laskey</a></p>
</div>


<!-- *********************************************************************** -->
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->

<div>

<p>This document is the central repository for all information pertaining to
   debug information in LLVM.  It describes the <a href="#format">actual format
   that the LLVM debug information</a> takes, which is useful for those
   interested in creating front-ends or dealing directly with the information.
   Further, this document provides specific examples of what debug information
   for C/C++ looks like.</p>

<!-- ======================================================================= -->
<h3>
  <a name="phil">Philosophy behind LLVM debugging information</a>
</h3>

<div>

<p>The idea of the LLVM debugging information is to capture how the important
   pieces of the source-language's Abstract Syntax Tree map onto LLVM code.
   Several design aspects have shaped the solution that appears here.  The
   important ones are:</p>

<ul>
  <li>Debugging information should have very little impact on the rest of the
      compiler.  No transformations, analyses, or code generators should need to
      be modified because of debugging information.</li>

  <li>LLVM optimizations should interact in <a href="#debugopt">well-defined and
      easily described ways</a> with the debugging information.</li>

  <li>Because LLVM is designed to support arbitrary programming languages,
      LLVM-to-LLVM tools should not need to know anything about the semantics of
      the source-level-language.</li>

  <li>Source-level languages are often <b>widely</b> different from one another.
      LLVM should not put any restrictions of the flavor of the source-language,
      and the debugging information should work with any language.</li>

  <li>With code generator support, it should be possible to use an LLVM compiler
      to compile a program to native machine code and standard debugging
      formats.  This allows compatibility with traditional machine-code level
      debuggers, like GDB or DBX.</li>
</ul>

<p>The approach used by the LLVM implementation is to use a small set
   of <a href="#format_common_intrinsics">intrinsic functions</a> to define a
   mapping between LLVM program objects and the source-level objects.  The
   description of the source-level program is maintained in LLVM metadata
   in an <a href="#ccxx_frontend">implementation-defined format</a>
   (the C/C++ front-end currently uses working draft 7 of
   the <a href="http://www.eagercon.com/dwarf/dwarf3std.htm">DWARF 3
   standard</a>).</p>

<p>When a program is being debugged, a debugger interacts with the user and
   turns the stored debug information into source-language specific information.
   As such, a debugger must be aware of the source-language, and is thus tied to
   a specific language or family of languages.</p>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="consumers">Debug information consumers</a>
</h3>

<div>

<p>The role of debug information is to provide meta information normally
   stripped away during the compilation process.  This meta information provides
   an LLVM user a relationship between generated code and the original program
   source code.</p>

<p>Currently, debug information is consumed by DwarfDebug to produce dwarf
   information used by the gdb debugger.  Other targets could use the same
   information to produce stabs or other debug forms.</p>

<p>It would also be reasonable to use debug information to feed profiling tools
   for analysis of generated code, or, tools for reconstructing the original
   source from generated code.</p>

<p>TODO - expound a bit more.</p>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="debugopt">Debugging optimized code</a>
</h3>

<div>

<p>An extremely high priority of LLVM debugging information is to make it
   interact well with optimizations and analysis.  In particular, the LLVM debug
   information provides the following guarantees:</p>

<ul>
  <li>LLVM debug information <b>always provides information to accurately read
      the source-level state of the program</b>, regardless of which LLVM
      optimizations have been run, and without any modification to the
      optimizations themselves.  However, some optimizations may impact the
      ability to modify the current state of the program with a debugger, such
      as setting program variables, or calling functions that have been
      deleted.</li>

  <li>As desired, LLVM optimizations can be upgraded to be aware of the LLVM
      debugging information, allowing them to update the debugging information
      as they perform aggressive optimizations.  This means that, with effort,
      the LLVM optimizers could optimize debug code just as well as non-debug
      code.</li>

  <li>LLVM debug information does not prevent optimizations from
      happening (for example inlining, basic block reordering/merging/cleanup,
      tail duplication, etc).</li>

  <li>LLVM debug information is automatically optimized along with the rest of
      the program, using existing facilities.  For example, duplicate
      information is automatically merged by the linker, and unused information
      is automatically removed.</li>
</ul>

<p>Basically, the debug information allows you to compile a program with
   "<tt>-O0 -g</tt>" and get full debug information, allowing you to arbitrarily
   modify the program as it executes from a debugger.  Compiling a program with
   "<tt>-O3 -g</tt>" gives you full debug information that is always available
   and accurate for reading (e.g., you get accurate stack traces despite tail
   call 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>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="format">Debugging information format</a>
</h2>
<!-- *********************************************************************** -->

<div>

<p>LLVM debugging information has been carefully designed to make it possible
   for the optimizer to optimize the program and debugging information without
   necessarily having to know anything about debugging information.  In
   particular, the use of metadata avoids duplicated debugging information from
   the beginning, and the global dead code elimination pass automatically 
   deletes debugging information for a function if it decides to delete the 
   function. </p>

<p>To do this, most of the debugging information (descriptors for types,
   variables, functions, source files, etc) is inserted by the language
   front-end in the form of LLVM metadata. </p>

<p>Debug information is designed to be agnostic about the target debugger and
   debugging information representation (e.g. DWARF/Stabs/etc).  It uses a
   generic pass to decode the information that represents variables, types, 
   functions, namespaces, etc: this allows for arbitrary source-language 
   semantics and type-systems to be used, as long as there is a module 
   written for the target debugger to interpret the information. </p>

<p>To provide basic functionality, the LLVM debugger does have to make some
   assumptions about the source-level language being debugged, though it keeps
   these to a minimum.  The only common features that the LLVM debugger assumes
   exist are <a href="#format_files">source files</a>,
   and <a href="#format_global_variables">program objects</a>.  These abstract
   objects are used by a debugger to form stack traces, show information about
   local variables, etc.</p>

<p>This section of the documentation first describes the representation aspects
   common to any source-language.  The <a href="#ccxx_frontend">next section</a>
   describes the data layout conventions used by the C and C++ front-ends.</p>

<!-- ======================================================================= -->
<h3>
  <a name="debug_info_descriptors">Debug information descriptors</a>
</h3>

<div>

<p>In consideration of the complexity and volume of debug information, LLVM
   provides a specification for well formed debug descriptors. </p>

<p>Consumers of LLVM debug information expect the descriptors for program
   objects to start in a canonical format, but the descriptors can include
   additional information appended at the end that is source-language
   specific. All LLVM debugging information is versioned, allowing backwards
   compatibility in the case that the core structures need to change in some
   way.  Also, all debugging information objects start with a tag to indicate
   what type of object it is.  The source-language is allowed to define its own
   objects, by using unreserved tag numbers.  We recommend using with tags in
   the range 0x1000 through 0x2000 (there is a defined enum DW_TAG_user_base =
   0x1000.)</p>

<p>The fields of debug descriptors used internally by LLVM 
   are restricted to only the simple data types <tt>i32</tt>, <tt>i1</tt>,
   <tt>float</tt>, <tt>double</tt>, <tt>mdstring</tt> and <tt>mdnode</tt>. </p>

<div class="doc_code">
<pre>
!1 = metadata !{
  i32,   ;; A tag
  ...
}
</pre>
</div>

<p><a name="LLVMDebugVersion">The first field of a descriptor is always an
   <tt>i32</tt> containing a tag value identifying the content of the
   descriptor.  The remaining fields are specific to the descriptor.  The values
   of tags are loosely bound to the tag values of DWARF information entries.
   However, that does not restrict the use of the information supplied to DWARF
   targets.  To facilitate versioning of debug information, the tag is augmented
   with the current debug version (LLVMDebugVersion = 8 &lt;&lt; 16 or
   0x80000 or 524288.)</a></p>

<p>The details of the various descriptors follow.</p>  

<!-- ======================================================================= -->
<h4>
  <a name="format_compile_units">Compile unit descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!0 = metadata !{
  i32,       ;; Tag = 17 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
             ;; (DW_TAG_compile_unit)
  i32,       ;; Unused field. 
  i32,       ;; DWARF language identifier (ex. DW_LANG_C89) 
  metadata,  ;; Source file name
  metadata,  ;; Source file directory (includes trailing slash)
  metadata   ;; Producer (ex. "4.0.1 LLVM (LLVM research group)")
  i1,        ;; True if this is a main compile unit. 
  i1,        ;; True if this is optimized.
  metadata,  ;; Flags
  i32        ;; Runtime version
  metadata   ;; List of enums types
  metadata   ;; List of retained types
  metadata   ;; List of subprograms
  metadata   ;; List of global variables
}
</pre>
</div>

<p>These descriptors contain a source language ID for the file (we use the DWARF
   3.0 ID numbers, such as <tt>DW_LANG_C89</tt>, <tt>DW_LANG_C_plus_plus</tt>,
   <tt>DW_LANG_Cobol74</tt>, etc), three strings describing the filename,
   working directory of the compiler, and an identifier string for the compiler
   that produced it.</p>

<p>Compile unit descriptors provide the root context for objects declared in a
   specific compilation unit. File descriptors are defined using this context.
   These descriptors are collected by a named metadata 
   <tt>!llvm.dbg.cu</tt>. Compile unit descriptor keeps track of subprograms,
   global variables and type information.

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_files">File descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!0 = metadata !{
  i32,       ;; Tag = 41 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
             ;; (DW_TAG_file_type)
  metadata,  ;; Source file name
  metadata,  ;; Source file directory (includes trailing slash)
  metadata   ;; Unused
}
</pre>
</div>

<p>These descriptors contain information for a file. Global variables and top
   level functions would be defined using this context.k File descriptors also
   provide context for source line correspondence. </p>

<p>Each input file is encoded as a separate file descriptor in LLVM debugging
   information output. </p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_global_variables">Global variable descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!1 = metadata !{
  i32,      ;; Tag = 52 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
            ;; (DW_TAG_variable)
  i32,      ;; Unused field.
  metadata, ;; Reference to context descriptor
  metadata, ;; Name
  metadata, ;; Display name (fully qualified C++ name)
  metadata, ;; MIPS linkage name (for C++)
  metadata, ;; Reference to file where defined
  i32,      ;; Line number where defined
  metadata, ;; Reference to type descriptor
  i1,       ;; True if the global is local to compile unit (static)
  i1,       ;; True if the global is defined in the compile unit (not extern)
  {}*       ;; Reference to the global variable
}
</pre>
</div>

<p>These descriptors provide debug information about globals variables.  The
provide details such as name, type and where the variable is defined. All
global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_subprograms">Subprogram descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32,      ;; Tag = 46 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a>
            ;; (DW_TAG_subprogram)
  i32,      ;; Unused field.
  metadata, ;; Reference to context descriptor
  metadata, ;; Name
  metadata, ;; Display name (fully qualified C++ name)
  metadata, ;; MIPS linkage name (for C++)
  metadata, ;; Reference to file where defined
  i32,      ;; Line number where defined
  metadata, ;; Reference to type descriptor
  i1,       ;; True if the global is local to compile unit (static)
  i1,       ;; True if the global is defined in the compile unit (not extern)
  i32,      ;; Virtuality, e.g. dwarf::DW_VIRTUALITY__virtual
  i32,      ;; Index into a virtual function
  metadata, ;; indicates which base type contains the vtable pointer for the 
            ;; derived class
  i1,       ;; isArtificial
  i1,       ;; isOptimized
  Function *,;; Pointer to LLVM function
  metadata, ;; Lists function template parameters
  metadata  ;; Function declaration descriptor
  metadata  ;; List of function variables
}
</pre>
</div>

<p>These descriptors provide debug information about functions, methods and
   subprograms.  They provide details such as name, return types and the source
   location where the subprogram is defined.
   All subprogram descriptors are collected by a named metadata 
   <tt>!llvm.dbg.sp</tt>.
</p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_blocks">Block descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!3 = metadata !{
  i32,     ;; Tag = 11 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> (DW_TAG_lexical_block)
  metadata,;; Reference to context descriptor
  i32,     ;; Line number
  i32,     ;; Column number
  metadata,;; Reference to source file
  i32      ;; Unique ID to identify blocks from a template function
}
</pre>
</div>

<p>This descriptor provides debug information about nested blocks within a
   subprogram. The line number and column numbers are used to dinstinguish
   two lexical blocks at same depth. </p>

<div class="doc_code">
<pre>
!3 = metadata !{
  i32,     ;; Tag = 11 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> (DW_TAG_lexical_block)
  metadata ;; Reference to the scope we're annotating with a file change
  metadata,;; Reference to the file the scope is enclosed in.
}
</pre>
</div>

<p>This descriptor provides a wrapper around a lexical scope to handle file
   changes in the middle of a lexical block.</p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_basic_type">Basic type descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!4 = metadata !{
  i32,      ;; Tag = 36 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
            ;; (DW_TAG_base_type)
  metadata, ;; Reference to context 
  metadata, ;; Name (may be "" for anonymous types)
  metadata, ;; Reference to file where defined (may be NULL)
  i32,      ;; Line number where defined (may be 0)
  i64,      ;; Size in bits
  i64,      ;; Alignment in bits
  i64,      ;; Offset in bits
  i32,      ;; Flags
  i32       ;; DWARF type encoding
}
</pre>
</div>

<p>These descriptors define primitive types used in the code. Example int, bool
   and float.  The context provides the scope of the type, which is usually the
   top level.  Since basic types are not usually user defined the context
   and line number can be left as NULL and 0.  The size, alignment and offset
   are expressed in bits and can be 64 bit values.  The alignment is used to
   round the offset when embedded in a
   <a href="#format_composite_type">composite type</a> (example to keep float
   doubles on 64 bit boundaries.) The offset is the bit 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>

<div class="doc_code">
<pre>
DW_ATE_address       = 1
DW_ATE_boolean       = 2
DW_ATE_float         = 4
DW_ATE_signed        = 5
DW_ATE_signed_char   = 6
DW_ATE_unsigned      = 7
DW_ATE_unsigned_char = 8
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_derived_type">Derived type descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!5 = metadata !{
  i32,      ;; Tag (see below)
  metadata, ;; Reference to context
  metadata, ;; Name (may be "" for anonymous types)
  metadata, ;; Reference to file where defined (may be NULL)
  i32,      ;; Line number where defined (may be 0)
  i64,      ;; Size in bits
  i64,      ;; Alignment in bits
  i64,      ;; Offset in bits
  metadata, ;; Reference to type derived from
  metadata, ;; (optional) Name of the Objective C property assoicated with 
            ;; Objective-C an ivar 
  metadata, ;; (optional) Name of the Objective C property getter selector.
  metadata, ;; (optional) Name of the Objective C property setter selector.
  i32       ;; (optional) Objective C property attributes.
}
</pre>
</div>

<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>

<div class="doc_code">
<pre>
DW_TAG_formal_parameter = 5
DW_TAG_member           = 13
DW_TAG_pointer_type     = 15
DW_TAG_reference_type   = 16
DW_TAG_typedef          = 22
DW_TAG_const_type       = 38
DW_TAG_volatile_type    = 53
DW_TAG_restrict_type    = 55
</pre>
</div>

<p><tt>DW_TAG_member</tt> is used to define a member of
   a <a href="#format_composite_type">composite type</a>
   or <a href="#format_subprograms">subprogram</a>.  The type of the member is
   the <a href="#format_derived_type">derived
   type</a>. <tt>DW_TAG_formal_parameter</tt> is used to define a member which
   is a formal argument of a subprogram.</p>

<p><tt>DW_TAG_typedef</tt> is used to provide a name for the derived type.</p>

<p><tt>DW_TAG_pointer_type</tt>,<tt>DW_TAG_reference_type</tt>,
   <tt>DW_TAG_const_type</tt>, <tt>DW_TAG_volatile_type</tt>
   and <tt>DW_TAG_restrict_type</tt> are used to qualify
   the <a href="#format_derived_type">derived type</a>. </p>

<p><a href="#format_derived_type">Derived type</a> location can be determined
   from the context and line number.  The size, alignment and offset are
   expressed in bits and can be 64 bit values.  The alignment is used to round
   the offset when embedded in a <a href="#format_composite_type">composite
   type</a> (example to keep float doubles on 64 bit boundaries.) The offset is
   the bit offset if embedded in a <a href="#format_composite_type">composite
   type</a>.</p>

<p>Note that the <tt>void *</tt> type is expressed as a type derived from NULL.
</p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_composite_type">Composite type descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!6 = metadata !{
  i32,      ;; Tag (see below)
  metadata, ;; Reference to context
  metadata, ;; Name (may be "" for anonymous types)
  metadata, ;; Reference to file where defined (may be NULL)
  i32,      ;; Line number where defined (may be 0)
  i64,      ;; Size in bits
  i64,      ;; Alignment in bits
  i64,      ;; Offset in bits
  i32,      ;; Flags
  metadata, ;; Reference to type derived from
  metadata, ;; Reference to array of member descriptors
  i32       ;; Runtime languages
}
</pre>
</div>

<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>

<div class="doc_code">
<pre>
DW_TAG_array_type       = 1
DW_TAG_enumeration_type = 4
DW_TAG_structure_type   = 19
DW_TAG_union_type       = 23
DW_TAG_vector_type      = 259
DW_TAG_subroutine_type  = 21
DW_TAG_inheritance      = 28
</pre>
</div>

<p>The vector flag indicates that an array type is a native packed vector.</p>

<p>The members of array types (tag = <tt>DW_TAG_array_type</tt>) or vector types
   (tag = <tt>DW_TAG_vector_type</tt>) are <a href="#format_subrange">subrange
   descriptors</a>, each representing the range of subscripts at that level of
   indexing.</p>

<p>The members of enumeration types (tag = <tt>DW_TAG_enumeration_type</tt>) are
   <a href="#format_enumeration">enumerator descriptors</a>, each representing
   the definition of enumeration value for the set. All enumeration type
   descriptors are collected by named metadata <tt>!llvm.dbg.enum</tt>.</p>

<p>The members of structure (tag = <tt>DW_TAG_structure_type</tt>) or union (tag
   = <tt>DW_TAG_union_type</tt>) types are any one of
   the <a href="#format_basic_type">basic</a>,
   <a href="#format_derived_type">derived</a>
   or <a href="#format_composite_type">composite</a> type descriptors, each
   representing a field member of the structure or union.</p>

<p>For C++ classes (tag = <tt>DW_TAG_structure_type</tt>), member descriptors
   provide information about base classes, static members and member
   functions. If a member is a <a href="#format_derived_type">derived type
   descriptor</a> and has a tag of <tt>DW_TAG_inheritance</tt>, then the type
   represents a base class. If the member of is
   a <a href="#format_global_variables">global variable descriptor</a> then it
   represents a static member.  And, if the member is
   a <a href="#format_subprograms">subprogram descriptor</a> then it represents
   a member function.  For static members and member
   functions, <tt>getName()</tt> returns the members link or the C++ mangled
   name.  <tt>getDisplayName()</tt> the simplied version of the name.</p>

<p>The first member of subroutine (tag = <tt>DW_TAG_subroutine_type</tt>) type
   elements is the return type for the subroutine.  The remaining elements are
   the formal arguments to the subroutine.</p>

<p><a href="#format_composite_type">Composite type</a> location can be
   determined from the context and line number.  The size, alignment and
   offset are expressed in bits and can be 64 bit values.  The alignment is used
   to round the offset when embedded in
   a <a href="#format_composite_type">composite type</a> (as an example, to keep
   float doubles on 64 bit boundaries.) The offset is the bit offset if embedded
   in a <a href="#format_composite_type">composite type</a>.</p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_subrange">Subrange descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!42 = metadata !{
  i32,    ;; Tag = 33 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> (DW_TAG_subrange_type)
  i64,    ;; Low value
  i64     ;; High value
}
</pre>
</div>

<p>These descriptors are used to define ranges of array subscripts for an array
   <a href="#format_composite_type">composite type</a>.  The low value defines
   the lower bounds typically zero for C/C++.  The high value is the upper
   bounds.  Values are 64 bit.  High - low + 1 is the size of the array.  If low
   > high the array bounds are not included in generated debugging information.
</p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_enumeration">Enumerator descriptors</a>
</h4>

<div>

<div class="doc_code">
<pre>
!6 = metadata !{
  i32,      ;; Tag = 40 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
            ;; (DW_TAG_enumerator)
  metadata, ;; Name
  i64       ;; Value
}
</pre>
</div>

<p>These descriptors are used to define members of an
   enumeration <a href="#format_composite_type">composite type</a>, it
   associates the name to the value.</p>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_variables">Local variables</a>
</h4>

<div>

<div class="doc_code">
<pre>
!7 = metadata !{
  i32,      ;; Tag (see below)
  metadata, ;; Context
  metadata, ;; Name
  metadata, ;; Reference to file where defined
  i32,      ;; 24 bit - Line number where defined
            ;; 8 bit - Argument number. 1 indicates 1st argument.
  metadata, ;; Type descriptor
  i32,      ;; flags
  metadata  ;; (optional) Reference to inline location
}
</pre>
</div>

<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>

<div class="doc_code">
<pre>
DW_TAG_auto_variable   = 256
DW_TAG_arg_variable    = 257
DW_TAG_return_variable = 258
</pre>
</div>

<p>An auto variable is any variable declared in the body of the function.  An
   argument variable is any variable that appears as a formal argument to the
   function.  A return variable is used to track the result of a function and
   has no source correspondent.</p>

<p>The context is either the subprogram or block where the variable is defined.
   Name the source variable name.  Context and line indicate where the
   variable was defined. Type descriptor defines the declared type of the
   variable.</p>

</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="format_common_intrinsics">Debugger intrinsic functions</a>
</h3>

<div>

<p>LLVM uses several intrinsic functions (name prefixed with "llvm.dbg") to
   provide debug information at various points in generated code.</p>

<!-- ======================================================================= -->
<h4>
  <a name="format_common_declare">llvm.dbg.declare</a>
</h4>

<div>
<pre>
  void %<a href="#format_common_declare">llvm.dbg.declare</a>(metadata, metadata)
</pre>

<p>This intrinsic provides information about a local element (ex. variable.) The
   first argument is metadata holding alloca for the variable. The
   second argument is metadata containing description of the variable. </p>
</div>

<!-- ======================================================================= -->
<h4>
  <a name="format_common_value">llvm.dbg.value</a>
</h4>

<div>
<pre>
  void %<a href="#format_common_value">llvm.dbg.value</a>(metadata, i64, metadata)
</pre>

<p>This intrinsic provides information when a user source variable is set to a
   new value.  The first argument is the new value (wrapped as metadata).  The
   second argument is the offset in the user source variable where the new value
   is written.  The third argument is metadata containing description of the
   user source variable. </p>
</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="format_common_lifetime">Object lifetimes and scoping</a>
</h3>

<div>
<p>In many languages, the local variables in functions can have their lifetimes
   or scopes limited to a subset of a function.  In the C family of languages,
   for example, variables are only live (readable and writable) within the
   source block that they are defined in.  In functional languages, values are
   only readable after they have been defined.  Though this is a very obvious
   concept, it is non-trivial to model in LLVM, because it has no notion of
   scoping in this sense, and does not want to be tied to a language's scoping
   rules.</p>

<p>In order to handle this, the LLVM debug format uses the metadata attached to
   llvm instructions to encode line number and scoping information. Consider
   the following C fragment, for example:</p>

<div class="doc_code">
<pre>
1.  void foo() {
2.    int X = 21;
3.    int Y = 22;
4.    {
5.      int Z = 23;
6.      Z = X;
7.    }
8.    X = Y;
9.  }
</pre>
</div>

<p>Compiled to LLVM, this function would be represented like this:</p>

<div class="doc_code">
<pre>
define void @foo() nounwind ssp {
entry:
  %X = alloca i32, align 4                        ; &lt;i32*&gt; [#uses=4]
  %Y = alloca i32, align 4                        ; &lt;i32*&gt; [#uses=4]
  %Z = alloca i32, align 4                        ; &lt;i32*&gt; [#uses=3]
  %0 = bitcast i32* %X to {}*                     ; &lt;{}*&gt; [#uses=1]
  call void @llvm.dbg.declare(metadata !{i32 * %X}, metadata !0), !dbg !7
  store i32 21, i32* %X, !dbg !8
  %1 = bitcast i32* %Y to {}*                     ; &lt;{}*&gt; [#uses=1]
  call void @llvm.dbg.declare(metadata !{i32 * %Y}, metadata !9), !dbg !10
  store i32 22, i32* %Y, !dbg !11
  %2 = bitcast i32* %Z to {}*                     ; &lt;{}*&gt; [#uses=1]
  call void @llvm.dbg.declare(metadata !{i32 * %Z}, metadata !12), !dbg !14
  store i32 23, i32* %Z, !dbg !15
  %tmp = load i32* %X, !dbg !16                   ; &lt;i32&gt; [#uses=1]
  %tmp1 = load i32* %Y, !dbg !16                  ; &lt;i32&gt; [#uses=1]
  %add = add nsw i32 %tmp, %tmp1, !dbg !16        ; &lt;i32&gt; [#uses=1]
  store i32 %add, i32* %Z, !dbg !16
  %tmp2 = load i32* %Y, !dbg !17                  ; &lt;i32&gt; [#uses=1]
  store i32 %tmp2, i32* %X, !dbg !17
  ret void, !dbg !18
}

declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone

!0 = metadata !{i32 459008, metadata !1, metadata !"X", 
                metadata !3, i32 2, metadata !6}; [ DW_TAG_auto_variable ]
!1 = metadata !{i32 458763, metadata !2}; [DW_TAG_lexical_block ]
!2 = metadata !{i32 458798, i32 0, metadata !3, metadata !"foo", metadata !"foo", 
               metadata !"foo", metadata !3, i32 1, metadata !4, 
               i1 false, i1 true}; [DW_TAG_subprogram ]
!3 = metadata !{i32 458769, i32 0, i32 12, metadata !"foo.c", 
                metadata !"/private/tmp", metadata !"clang 1.1", i1 true, 
                i1 false, metadata !"", i32 0}; [DW_TAG_compile_unit ]
!4 = metadata !{i32 458773, metadata !3, metadata !"", null, i32 0, i64 0, i64 0, 
                i64 0, i32 0, null, metadata !5, i32 0}; [DW_TAG_subroutine_type ]
!5 = metadata !{null}
!6 = metadata !{i32 458788, metadata !3, metadata !"int", metadata !3, i32 0, 
                i64 32, i64 32, i64 0, i32 0, i32 5}; [DW_TAG_base_type ]
!7 = metadata !{i32 2, i32 7, metadata !1, null}
!8 = metadata !{i32 2, i32 3, metadata !1, null}
!9 = metadata !{i32 459008, metadata !1, metadata !"Y", metadata !3, i32 3, 
                metadata !6}; [ DW_TAG_auto_variable ]
!10 = metadata !{i32 3, i32 7, metadata !1, null}
!11 = metadata !{i32 3, i32 3, metadata !1, null}
!12 = metadata !{i32 459008, metadata !13, metadata !"Z", metadata !3, i32 5, 
                 metadata !6}; [ DW_TAG_auto_variable ]
!13 = metadata !{i32 458763, metadata !1}; [DW_TAG_lexical_block ]
!14 = metadata !{i32 5, i32 9, metadata !13, null}
!15 = metadata !{i32 5, i32 5, metadata !13, null}
!16 = metadata !{i32 6, i32 5, metadata !13, null}
!17 = metadata !{i32 8, i32 3, metadata !1, null}
!18 = metadata !{i32 9, i32 1, metadata !2, null}
</pre>
</div>

<p>This example illustrates a few important details about LLVM debugging
   information. In particular, it shows how the <tt>llvm.dbg.declare</tt>
   intrinsic and location information, which are attached to an instruction,
   are applied together to allow a debugger to analyze the relationship between
   statements, variable definitions, and the code used to implement the
   function.</p>

<div class="doc_code">
<pre>
call void @llvm.dbg.declare(metadata, metadata !0), !dbg !7   
</pre>
</div>

<p>The first intrinsic
   <tt>%<a href="#format_common_declare">llvm.dbg.declare</a></tt>
   encodes debugging information for the variable <tt>X</tt>. The metadata
   <tt>!dbg !7</tt> attached to the intrinsic provides scope information for the
   variable <tt>X</tt>.</p>

<div class="doc_code">
<pre>
!7 = metadata !{i32 2, i32 7, metadata !1, null}
!1 = metadata !{i32 458763, metadata !2}; [DW_TAG_lexical_block ]
!2 = metadata !{i32 458798, i32 0, metadata !3, metadata !"foo", 
                metadata !"foo", metadata !"foo", metadata !3, i32 1, 
                metadata !4, i1 false, i1 true}; [DW_TAG_subprogram ]   
</pre>
</div>

<p>Here <tt>!7</tt> is metadata providing location information. It has four
   fields: line number, column number, scope, and original scope. The original
   scope represents inline location if this instruction is inlined inside a
   caller, and is null otherwise. In this example, scope is encoded by
   <tt>!1</tt>. <tt>!1</tt> represents a lexical block inside the scope
   <tt>!2</tt>, where <tt>!2</tt> is a
   <a href="#format_subprograms">subprogram descriptor</a>. This way the
   location information attached to the intrinsics indicates that the
   variable <tt>X</tt> is declared at line number 2 at a function level scope in
   function <tt>foo</tt>.</p>

<p>Now lets take another example.</p>

<div class="doc_code">
<pre>
call void @llvm.dbg.declare(metadata, metadata !12), !dbg !14
</pre>
</div>

<p>The second intrinsic
   <tt>%<a href="#format_common_declare">llvm.dbg.declare</a></tt>
   encodes debugging information for variable <tt>Z</tt>. The metadata 
   <tt>!dbg !14</tt> attached to the intrinsic provides scope information for
   the variable <tt>Z</tt>.</p>

<div class="doc_code">
<pre>
!13 = metadata !{i32 458763, metadata !1}; [DW_TAG_lexical_block ]
!14 = metadata !{i32 5, i32 9, metadata !13, null}
</pre>
</div>

<p>Here <tt>!14</tt> indicates that <tt>Z</tt> is declared at line number 5 and
   column number 9 inside of lexical scope <tt>!13</tt>. The lexical scope
   itself resides inside of lexical scope <tt>!1</tt> described above.</p>

<p>The scope information attached with each instruction provides a
   straightforward way to find instructions covered by a scope.</p>

</div>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="ccxx_frontend">C/C++ front-end specific debug information</a>
</h2>
<!-- *********************************************************************** -->

<div>

<p>The C and C++ front-ends represent information about the program in a format
   that is effectively identical
   to <a href="http://www.eagercon.com/dwarf/dwarf3std.htm">DWARF 3.0</a> in
   terms of information content.  This allows code generators to trivially
   support native debuggers by generating standard dwarf information, and
   contains enough information for non-dwarf targets to translate it as
   needed.</p>

<p>This section describes the forms used to represent C and C++ programs. Other
   languages could pattern themselves after this (which itself is tuned to
   representing programs in the same way that DWARF 3 does), or they could
   choose to provide completely different forms if they don't fit into the DWARF
   model.  As support for debugging information gets added to the various LLVM
   source-language front-ends, the information used should be documented
   here.</p>

<p>The following sections provide examples of various C/C++ constructs and the
   debug information that would best describe those constructs.</p>

<!-- ======================================================================= -->
<h3>
  <a name="ccxx_compile_units">C/C++ source file information</a>
</h3>

<div>

<p>Given the source files <tt>MySource.cpp</tt> and <tt>MyHeader.h</tt> located
   in the directory <tt>/Users/mine/sources</tt>, the following code:</p>

<div class="doc_code">
<pre>
#include "MyHeader.h"

int main(int argc, char *argv[]) {
  return 0;
}
</pre>
</div>

<p>a C/C++ front-end would generate the following descriptors:</p>

<div class="doc_code">
<pre>
...
;;
;; Define the compile unit for the main source file "/Users/mine/sources/MySource.cpp".
;;
!2 = metadata !{
  i32 524305,    ;; Tag
  i32 0,         ;; Unused
  i32 4,         ;; Language Id
  metadata !"MySource.cpp", 
  metadata !"/Users/mine/sources", 
  metadata !"4.2.1 (Based on Apple Inc. build 5649) (LLVM build 00)", 
  i1 true,       ;; Main Compile Unit
  i1 false,      ;; Optimized compile unit
  metadata !"",  ;; Compiler flags
  i32 0}         ;; Runtime version

;;
;; Define the file for the file "/Users/mine/sources/MySource.cpp".
;;
!1 = metadata !{
  i32 524329,    ;; Tag
  metadata !"MySource.cpp", 
  metadata !"/Users/mine/sources", 
  metadata !2    ;; Compile unit
}

;;
;; Define the file for the file "/Users/mine/sources/Myheader.h"
;;
!3 = metadata !{
  i32 524329,    ;; Tag
  metadata !"Myheader.h"
  metadata !"/Users/mine/sources", 
  metadata !2    ;; Compile unit
}

...
</pre>
</div>

<p>llvm::Instruction provides easy access to metadata attached with an 
instruction. One can extract line number information encoded in LLVM IR
using <tt>Instruction::getMetadata()</tt> and 
<tt>DILocation::getLineNumber()</tt>.
<pre>
 if (MDNode *N = I->getMetadata("dbg")) {  // Here I is an LLVM instruction
   DILocation Loc(N);                      // DILocation is in DebugInfo.h
   unsigned Line = Loc.getLineNumber();
   StringRef File = Loc.getFilename();
   StringRef Dir = Loc.getDirectory();
 }
</pre>
</div>

<!-- ======================================================================= -->
<h3>
  <a name="ccxx_global_variable">C/C++ global variable information</a>
</h3>

<div>

<p>Given an integer global variable declared as follows:</p>

<div class="doc_code">
<pre>
int MyGlobal = 100;
</pre>
</div>

<p>a C/C++ front-end would generate the following descriptors:</p>

<div class="doc_code">
<pre>
;;
;; Define the global itself.
;;
%MyGlobal = global int 100
...
;;
;; List of debug info of globals
;;
!llvm.dbg.gv = !{!0}

;;
;; Define the global variable descriptor.  Note the reference to the global
;; variable anchor and the global variable itself.
;;
!0 = metadata !{
  i32 524340,              ;; Tag
  i32 0,                   ;; Unused
  metadata !1,             ;; Context
  metadata !"MyGlobal",    ;; Name
  metadata !"MyGlobal",    ;; Display Name
  metadata !"MyGlobal",    ;; Linkage Name
  metadata !3,             ;; Compile Unit
  i32 1,                   ;; Line Number
  metadata !4,             ;; Type
  i1 false,                ;; Is a local variable
  i1 true,                 ;; Is this a definition
  i32* @MyGlobal           ;; The global variable
}

;;
;; Define the basic type of 32 bit signed integer.  Note that since int is an
;; intrinsic type the source file is NULL and line 0.
;;    
!4 = metadata !{
  i32 524324,              ;; Tag
  metadata !1,             ;; Context
  metadata !"int",         ;; Name
  metadata !1,             ;; File
  i32 0,                   ;; Line number
  i64 32,                  ;; Size in Bits
  i64 32,                  ;; Align in Bits
  i64 0,                   ;; Offset in Bits
  i32 0,                   ;; Flags
  i32 5                    ;; Encoding
}

</pre>
</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="ccxx_subprogram">C/C++ function information</a>
</h3>

<div>

<p>Given a function declared as follows:</p>

<div class="doc_code">
<pre>
int main(int argc, char *argv[]) {
  return 0;
}
</pre>
</div>

<p>a C/C++ front-end would generate the following descriptors:</p>

<div class="doc_code">
<pre>
;;
;; Define the anchor for subprograms.  Note that the second field of the
;; anchor is 46, which is the same as the tag for subprograms
;; (46 = DW_TAG_subprogram.)
;;
!6 = metadata !{
  i32 524334,        ;; Tag
  i32 0,             ;; Unused
  metadata !1,       ;; Context
  metadata !"main",  ;; Name
  metadata !"main",  ;; Display name
  metadata !"main",  ;; Linkage name
  metadata !1,       ;; File
  i32 1,             ;; Line number
  metadata !4,       ;; Type
  i1 false,          ;; Is local 
  i1 true,           ;; Is definition
  i32 0,             ;; Virtuality attribute, e.g. pure virtual function
  i32 0,             ;; Index into virtual table for C++ methods
  i32 0,             ;; Type that holds virtual table.
  i32 0,             ;; Flags
  i1 false,          ;; True if this function is optimized
  Function *,        ;; Pointer to llvm::Function
  null               ;; Function template parameters
}
;;
;; Define the subprogram itself.
;;
define i32 @main(i32 %argc, i8** %argv) {
...
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="ccxx_basic_types">C/C++ basic types</a>
</h3>

<div>

<p>The following are the basic type descriptors for C/C++ core types:</p>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_type_bool">bool</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"bool",  ;; Name
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 8,             ;; Size in Bits
  i64 8,             ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 2              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_char">char</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"char",  ;; Name
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 8,             ;; Size in Bits
  i64 8,             ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 6              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_unsigned_char">unsigned char</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"unsigned char", 
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 8,             ;; Size in Bits
  i64 8,             ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 8              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_short">short</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"short int",
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 16,            ;; Size in Bits
  i64 16,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 5              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_unsigned_short">unsigned short</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"short unsigned int",
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 16,            ;; Size in Bits
  i64 16,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 7              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_int">int</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"int",   ;; Name
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 32,            ;; Size in Bits
  i64 32,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 5              ;; Encoding
}
</pre></div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_unsigned_int">unsigned int</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"unsigned int",
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 32,            ;; Size in Bits
  i64 32,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 7              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_long_long">long long</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"long long int",
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 64,            ;; Size in Bits
  i64 64,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 5              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_unsigned_long_long">unsigned long long</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"long long unsigned int",
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 64,            ;; Size in Bits
  i64 64,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 7              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_float">float</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"float",
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 32,            ;; Size in Bits
  i64 32,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 4              ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h4>
  <a name="ccxx_basic_double">double</a>
</h4>

<div>

<div class="doc_code">
<pre>
!2 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"double",;; Name
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 64,            ;; Size in Bits
  i64 64,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 4              ;; Encoding
}
</pre>
</div>

</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="ccxx_derived_types">C/C++ derived types</a>
</h3>

<div>

<p>Given the following as an example of C/C++ derived type:</p>

<div class="doc_code">
<pre>
typedef const int *IntPtr;
</pre>
</div>

<p>a C/C++ front-end would generate the following descriptors:</p>

<div class="doc_code">
<pre>
;;
;; Define the typedef "IntPtr".
;;
!2 = metadata !{
  i32 524310,          ;; Tag
  metadata !1,         ;; Context
  metadata !"IntPtr",  ;; Name
  metadata !3,         ;; File
  i32 0,               ;; Line number
  i64 0,               ;; Size in bits
  i64 0,               ;; Align in bits
  i64 0,               ;; Offset in bits
  i32 0,               ;; Flags
  metadata !4          ;; Derived From type
}

;;
;; Define the pointer type.
;;
!4 = metadata !{
  i32 524303,          ;; Tag
  metadata !1,         ;; Context
  metadata !"",        ;; Name
  metadata !1,         ;; File
  i32 0,               ;; Line number
  i64 64,              ;; Size in bits
  i64 64,              ;; Align in bits
  i64 0,               ;; Offset in bits
  i32 0,               ;; Flags
  metadata !5          ;; Derived From type
}
;;
;; Define the const type.
;;
!5 = metadata !{
  i32 524326,          ;; Tag
  metadata !1,         ;; Context
  metadata !"",        ;; Name
  metadata !1,         ;; File
  i32 0,               ;; Line number
  i64 32,              ;; Size in bits
  i64 32,              ;; Align in bits
  i64 0,               ;; Offset in bits
  i32 0,               ;; Flags
  metadata !6          ;; Derived From type
}
;;
;; Define the int type.
;;
!6 = metadata !{
  i32 524324,          ;; Tag
  metadata !1,         ;; Context
  metadata !"int",     ;; Name
  metadata !1,         ;; File
  i32 0,               ;; Line number
  i64 32,              ;; Size in bits
  i64 32,              ;; Align in bits
  i64 0,               ;; Offset in bits
  i32 0,               ;; Flags
  5                    ;; Encoding
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="ccxx_composite_types">C/C++ struct/union types</a>
</h3>

<div>

<p>Given the following as an example of C/C++ struct type:</p>

<div class="doc_code">
<pre>
struct Color {
  unsigned Red;
  unsigned Green;
  unsigned Blue;
};
</pre>
</div>

<p>a C/C++ front-end would generate the following descriptors:</p>

<div class="doc_code">
<pre>
;;
;; Define basic type for unsigned int.
;;
!5 = metadata !{
  i32 524324,        ;; Tag
  metadata !1,       ;; Context
  metadata !"unsigned int",
  metadata !1,       ;; File
  i32 0,             ;; Line number
  i64 32,            ;; Size in Bits
  i64 32,            ;; Align in Bits
  i64 0,             ;; Offset in Bits
  i32 0,             ;; Flags
  i32 7              ;; Encoding
}
;;
;; Define composite type for struct Color.
;;
!2 = metadata !{
  i32 524307,        ;; Tag
  metadata !1,       ;; Context
  metadata !"Color", ;; Name
  metadata !1,       ;; Compile unit
  i32 1,             ;; Line number
  i64 96,            ;; Size in bits
  i64 32,            ;; Align in bits
  i64 0,             ;; Offset in bits
  i32 0,             ;; Flags
  null,              ;; Derived From
  metadata !3,       ;; Elements
  i32 0              ;; Runtime Language
}

;;
;; Define the Red field.
;;
!4 = metadata !{
  i32 524301,        ;; Tag
  metadata !1,       ;; Context
  metadata !"Red",   ;; Name
  metadata !1,       ;; File
  i32 2,             ;; Line number
  i64 32,            ;; Size in bits
  i64 32,            ;; Align in bits
  i64 0,             ;; Offset in bits
  i32 0,             ;; Flags
  metadata !5        ;; Derived From type
}

;;
;; Define the Green field.
;;
!6 = metadata !{
  i32 524301,        ;; Tag
  metadata !1,       ;; Context
  metadata !"Green", ;; Name
  metadata !1,       ;; File
  i32 3,             ;; Line number
  i64 32,            ;; Size in bits
  i64 32,            ;; Align in bits
  i64 32,             ;; Offset in bits
  i32 0,             ;; Flags
  metadata !5        ;; Derived From type
}

;;
;; Define the Blue field.
;;
!7 = metadata !{
  i32 524301,        ;; Tag
  metadata !1,       ;; Context
  metadata !"Blue",  ;; Name
  metadata !1,       ;; File
  i32 4,             ;; Line number
  i64 32,            ;; Size in bits
  i64 32,            ;; Align in bits
  i64 64,             ;; Offset in bits
  i32 0,             ;; Flags
  metadata !5        ;; Derived From type
}

;;
;; Define the array of fields used by the composite type Color.
;;
!3 = metadata !{metadata !4, metadata !6, metadata !7}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="ccxx_enumeration_types">C/C++ enumeration types</a>
</h3>

<div>

<p>Given the following as an example of C/C++ enumeration type:</p>

<div class="doc_code">
<pre>
enum Trees {
  Spruce = 100,
  Oak = 200,
  Maple = 300
};
</pre>
</div>

<p>a C/C++ front-end would generate the following descriptors:</p>

<div class="doc_code">
<pre>
;;
;; Define composite type for enum Trees
;;
!2 = metadata !{
  i32 524292,        ;; Tag
  metadata !1,       ;; Context
  metadata !"Trees", ;; Name
  metadata !1,       ;; File
  i32 1,             ;; Line number
  i64 32,            ;; Size in bits
  i64 32,            ;; Align in bits
  i64 0,             ;; Offset in bits
  i32 0,             ;; Flags
  null,              ;; Derived From type
  metadata !3,       ;; Elements
  i32 0              ;; Runtime language
}

;;
;; Define the array of enumerators used by composite type Trees.
;;
!3 = metadata !{metadata !4, metadata !5, metadata !6}

;;
;; Define Spruce enumerator.
;;
!4 = metadata !{i32 524328, metadata !"Spruce", i64 100}

;;
;; Define Oak enumerator.
;;
!5 = metadata !{i32 524328, metadata !"Oak", i64 200}

;;
;; Define Maple enumerator.
;;
!6 = metadata !{i32 524328, metadata !"Maple", i64 300}

</pre>
</div>

</div>

</div>

<!-- *********************************************************************** -->

<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  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-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>
  Last modified: $Date$
</address>

</body>
</html>
