summaryrefslogtreecommitdiffstats
path: root/llvm/docs/SourceLevelDebugging.rst
Commit message (Collapse)AuthorAgeFilesLines
...
* DI: Line up comments in examplesDuncan P. N. Exon Smith2014-10-041-27/+27
| | | | llvm-svn: 219055
* DI: Fixup example IR from r219051Duncan P. N. Exon Smith2014-10-041-3/+4
| | | | llvm-svn: 219054
* DI: Prune another exampleDuncan P. N. Exon Smith2014-10-041-62/+0
| | | | llvm-svn: 219053
* DI: Update and prune metadata examplesDuncan P. N. Exon Smith2014-10-041-502/+86
| | | | | | | Update a couple of the examples of debug info metadata, and prune the rest. Point to the true reference implementation in the source. llvm-svn: 219051
* Revert "Revert "DI: Fold constant arguments into a single MDString""Duncan P. N. Exon Smith2014-10-031-90/+111
| | | | | | | | | | | | | | | | | | | | | | This reverts commit r218918, effectively reapplying r218914 after fixing an Ocaml bindings test and an Asan crash. The root cause of the latter was a tightened-up check in `DILexicalBlock::Verify()`, so I'll file a PR to investigate who requires the loose check (and why). Original commit message follows. -- This patch addresses the first stage of PR17891 by folding constant arguments together into a single MDString. Integers are stringified and a `\0` character is used as a separator. Part of PR17891. Note: I've attached my testcases upgrade scripts to the PR. If I've just broken your out-of-tree testcases, they might help. llvm-svn: 219010
* Revert "DI: Fold constant arguments into a single MDString"Duncan P. N. Exon Smith2014-10-021-111/+90
| | | | | | This reverts commit r218914 while I investigate some bots. llvm-svn: 218918
* DI: Fold constant arguments into a single MDStringDuncan P. N. Exon Smith2014-10-021-90/+111
| | | | | | | | | | | | | This patch addresses the first stage of PR17891 by folding constant arguments together into a single MDString. Integers are stringified and a `\0` character is used as a separator. Part of PR17891. Note: I've attached my testcases upgrade scripts to the PR. If I've just broken your out-of-tree testcases, they might help. llvm-svn: 218914
* Move the complex address expression out of DIVariable and into an extraAdrian Prantl2014-10-011-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | argument of the llvm.dbg.declare/llvm.dbg.value intrinsics. Previously, DIVariable was a variable-length field that has an optional reference to a Metadata array consisting of a variable number of complex address expressions. In the case of OpPiece expressions this is wasting a lot of storage in IR, because when an aggregate type is, e.g., SROA'd into all of its n individual members, the IR will contain n copies of the DIVariable, all alike, only differing in the complex address reference at the end. By making the complex address into an extra argument of the dbg.value/dbg.declare intrinsics, all of the pieces can reference the same variable and the complex address expressions can be uniqued across the CU, too. Down the road, this will allow us to move other flags, such as "indirection" out of the DIVariable, too. The new intrinsics look like this: declare void @llvm.dbg.declare(metadata %storage, metadata %var, metadata %expr) declare void @llvm.dbg.value(metadata %storage, i64 %offset, metadata %var, metadata %expr) This patch adds a new LLVM-local tag to DIExpressions, so we can detect and pretty-print DIExpression metadata nodes. What this patch doesn't do: This patch does not touch the "Indirect" field in DIVariable; but moving that into the expression would be a natural next step. http://reviews.llvm.org/D4919 rdar://problem/17994491 Thanks to dblaikie and dexonsmith for reviewing this patch! Note: I accidentally committed a bogus older version of this patch previously. llvm-svn: 218787
* Revert r218778 while investigating buldbot breakage.Adrian Prantl2014-10-011-15/+2
| | | | | | "Move the complex address expression out of DIVariable and into an extra" llvm-svn: 218782
* Move the complex address expression out of DIVariable and into an extraAdrian Prantl2014-10-011-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | argument of the llvm.dbg.declare/llvm.dbg.value intrinsics. Previously, DIVariable was a variable-length field that has an optional reference to a Metadata array consisting of a variable number of complex address expressions. In the case of OpPiece expressions this is wasting a lot of storage in IR, because when an aggregate type is, e.g., SROA'd into all of its n individual members, the IR will contain n copies of the DIVariable, all alike, only differing in the complex address reference at the end. By making the complex address into an extra argument of the dbg.value/dbg.declare intrinsics, all of the pieces can reference the same variable and the complex address expressions can be uniqued across the CU, too. Down the road, this will allow us to move other flags, such as "indirection" out of the DIVariable, too. The new intrinsics look like this: declare void @llvm.dbg.declare(metadata %storage, metadata %var, metadata %expr) declare void @llvm.dbg.value(metadata %storage, i64 %offset, metadata %var, metadata %expr) This patch adds a new LLVM-local tag to DIExpressions, so we can detect and pretty-print DIExpression metadata nodes. What this patch doesn't do: This patch does not touch the "Indirect" field in DIVariable; but moving that into the expression would be a natural next step. http://reviews.llvm.org/D4919 rdar://problem/17994491 Thanks to dblaikie and dexonsmith for reviewing this patch! llvm-svn: 218778
* Use DILexicalBlockFile, rather than DILexicalBlock, to track discriminator ↵David Blaikie2014-08-211-5/+3
| | | | | | | | | | | | | | | changes to ensure discriminator changes don't introduce new DWARF DW_TAG_lexical_blocks. Somewhat unnoticed in the original implementation of discriminators, but it could cause instructions to end up in new, small, DW_TAG_lexical_blocks due to the use of DILexicalBlock to track discriminator changes. Instead, use DILexicalBlockFile which we already use to track file changes without introducing new scopes, so it works well to track discriminator changes in the same way. llvm-svn: 216239
* Correct the emission kind constants committed in r214771David Blaikie2014-08-041-1/+1
| | | | llvm-svn: 214772
* Document the "emission kind" field of the DICompileUnit in LLVM's Source ↵David Blaikie2014-08-041-0/+3
| | | | | | Level Debugging metadata. llvm-svn: 214771
* Debug info: Infrastructure to support debug locations for fragmentedAdrian Prantl2014-08-011-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | variables (for example, by-value struct arguments passed in registers, or large integer values split across several smaller registers). On the IR level, this adds a new type of complex address operation OpPiece to DIVariable that describes size and offset of a variable fragment. On the DWARF emitter level, all pieces describing the same variable are collected, sorted and emitted as DWARF expressions using the DW_OP_piece and DW_OP_bit_piece operators. http://reviews.llvm.org/D3373 rdar://problem/15928306 What this patch doesn't do / Future work: - This patch only adds the backend machinery to make this work, patches that change SROA and SelectionDAG's type legalizer to actually create such debug info will follow. (http://reviews.llvm.org/D2680) - Making the DIVariable complex expressions into an argument of dbg.value will reduce the memory footprint of the debug metadata. - The sorting/uniquing of pieces should be moved into DebugLocEntry, to facilitate the merging of multi-piece entries. llvm-svn: 214576
* Debug info: split out complex DIVariable address expressions into aAdrian Prantl2014-06-301-0/+1
| | | | | | | | | | | separate MDNode so they can be uniqued via folding set magic. To conserve space, DIVariable nodes are still variable-length, with the last two fields being optional. No functional change. http://reviews.llvm.org/D3526 llvm-svn: 212050
* [docs] Fix typo, align comments, fix syntax highlightingJeroen Ketema2014-06-091-17/+17
| | | | llvm-svn: 210462
* Switch the type field in DIVariable and DIGlobalVariable over to DITypeRefs.Adrian Prantl2014-03-181-1/+1
| | | | | | | | | This allows us to catch more opportunities for ODR-based type uniquing during LTO. Paired commit with CFE which updates some testcases to verify the new DIBuilder behavior. llvm-svn: 204106
* Add DWARF discriminator support to DILexicalBlocks.Diego Novillo2014-03-031-2/+5
| | | | | | This adds support for emitting discriminators from DILexicalBlocks. llvm-svn: 202736
* Correct word hyphenationsAlp Toker2013-12-051-1/+1
| | | | | | | This patch tries to avoid unrelated changes other than fixing a few hyphen-related ambiguities and contractions in nearby lines. llvm-svn: 196471
* Fix common typos in the docs.Benjamin Kramer2013-10-291-1/+1
| | | | llvm-svn: 193632
* Update to current output.Bill Wendling2013-10-271-64/+65
| | | | | | PR14039 llvm-svn: 193494
* Add unique identifier field to Composite Types and Format.Manman Ren2013-08-291-5/+6
| | | | llvm-svn: 189593
* Debug Info: Update documentation to match recent (& not so recent) schema ↵David Blaikie2013-05-291-204/+238
| | | | | | | | | | changes This updates the debug info metadata schema documentation for various schema changes made recently surrounding filename information for scopes and the representation of imported entities. llvm-svn: 182817
* Formatting fixups.Eric Christopher2013-03-191-14/+14
| | | | llvm-svn: 177458
* Make the fields in the diagram match the descriptive text above them.Eric Christopher2013-03-181-3/+3
| | | | llvm-svn: 177314
* Documentation: correct syntax (one missing comma, one extra comma)Dmitri Gribenko2013-02-161-2/+2
| | | | llvm-svn: 175375
* This is actually located at the end, not the middle.Eric Christopher2013-02-131-1/+1
| | | | llvm-svn: 175041
* remove the rest of the "written by" lines in the documentation. It isChris Lattner2013-01-101-2/+0
| | | | | | | against the developer policy to include this sort of thing as SVN blame already captures this in a far more fine-grained way. llvm-svn: 172109
* Remove the llvm-local DW_TAG_vector_type tag and add a test toEric Christopher2013-01-081-3/+2
| | | | | | make sure that vector types do work. llvm-svn: 171833
* Remove what appears to be a dead llvm-specific debug tag.Eric Christopher2013-01-081-3/+1
| | | | llvm-svn: 171821
* Documentation updates for pointer-to-member debug info added in r171698.David Blaikie2013-01-071-9/+11
| | | | llvm-svn: 171701
* Some grammar fixesEli Bendersky2012-11-281-4/+3
| | | | llvm-svn: 168752
* Documentation: convert SourceLevelDebugging.html to reSTDmitri Gribenko2012-11-221-0/+2285
llvm-svn: 168493
OpenPOWER on IntegriCloud