From cf5cd875b51255602afaed29deb636b66b295671 Mon Sep 17 00:00:00 2001 From: ed Date: Sat, 27 Jun 2009 10:44:33 +0000 Subject: Import LLVM r74383. --- docs/SourceLevelDebugging.html | 55 +----------------------------------------- 1 file changed, 1 insertion(+), 54 deletions(-) (limited to 'docs/SourceLevelDebugging.html') diff --git a/docs/SourceLevelDebugging.html b/docs/SourceLevelDebugging.html index 17851b7..e940e93 100644 --- a/docs/SourceLevelDebugging.html +++ b/docs/SourceLevelDebugging.html @@ -24,7 +24,6 @@
  1. Debug information descriptors
      -
    • Anchor descriptors
    • Compile unit descriptors
    • Global variable descriptors
    • Subprogram descriptors
    • @@ -336,58 +335,6 @@ height="369"> - -
      - -
      -
      -%llvm.dbg.anchor.type = type {
      -  i32,   ;; Tag = 0 + LLVMDebugVersion
      -  i32    ;; Tag of descriptors grouped by the anchor
      -}
      -
      -
      - -

      One important aspect of the LLVM debug representation is that it allows the - LLVM debugger to efficiently index all of the global objects without having - to scan the program. To do this, all of the global objects use "anchor" - descriptors with designated names. All of the global objects of a particular - type (e.g., compile units) contain a pointer to the anchor. This pointer - allows a debugger to use def-use chains to find all global objects of that - type.

      - -

      The following names are recognized as anchors by LLVM:

      - -
      -
      -%llvm.dbg.compile_units = linkonce constant %llvm.dbg.anchor.type {
      -  i32 0,
      -  i32 17
      -} ;; DW_TAG_compile_unit
      -%llvm.dbg.global_variables = linkonce constant %llvm.dbg.anchor.type {
      -  i32 0,
      -  i32 52
      -} ;; DW_TAG_variable
      -%llvm.dbg.subprograms = linkonce constant %llvm.dbg.anchor.type {
      -  i32 0,
      -  i32 46
      -} ;; DW_TAG_subprogram
      -
      -
      - -

      Using anchors in this way (where the compile unit descriptor points to the - anchors, as opposed to having a list of compile unit descriptors) allows for - the standard dead global elimination and merging passes to automatically - remove unused debugging information. If the globals were kept track of - through lists, there would always be an object pointing to the descriptors, - thus would never be deleted.

      - -
      - - - @@ -1919,7 +1866,7 @@ enum Trees { Chris Lattner
      LLVM Compiler Infrastructure
      - Last modified: $Date: 2009-05-29 19:08:57 +0200 (Fri, 29 May 2009) $ + Last modified: $Date: 2009-06-26 03:49:18 +0200 (Fri, 26 Jun 2009) $ -- cgit v1.1