X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FSourceLevelDebugging.html;h=fab63046a484414672b10315527ce3707ef08d74;hb=f21f85a0a72d091caa13b59562147d4d152d1a5e;hp=0b6ed477e049b0f79eed3e97dc9c4d5568b55051;hpb=d80ddc0b644a48873a42b56134ae0a5b43eae711;p=oota-llvm.git diff --git a/docs/SourceLevelDebugging.html b/docs/SourceLevelDebugging.html index 0b6ed477e04..fab63046a48 100644 --- a/docs/SourceLevelDebugging.html +++ b/docs/SourceLevelDebugging.html @@ -24,7 +24,6 @@
-%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.
- -