summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
Commit message (Collapse)AuthorAgeFilesLines
...
* [cleanup] Re-sort all the includes with utils/sort_includes.py.Chandler Carruth2014-03-041-1/+1
| | | | llvm-svn: 202811
* Add a DIELoc class to cover the DW_FORM_exprloc set of expressionsEric Christopher2014-02-161-1/+1
| | | | | | | | | | | | | alongside DIEBlock and replace uses accordingly. Use DW_FORM_exprloc in DWARF4 and later code. Update testcases. Adding a DIELoc instead of using extra forms inside DIEBlock so that we can keep location expressions separate from other uses. No direct use at the moment, however, it's not a lot of code and using a separately named class keeps it somewhat more obvious what's going on in various locations. llvm-svn: 201481
* DebugInfo: Deduplicate entries in the fission address tableDavid Blaikie2014-02-151-3/+7
| | | | | | | | | | | | This broke in r185459 while TLS support was being generalized to handle non-symbol TLS representations. I thought about/tried having an enum rather than a bool to track the TLS-ness of the address table entry, but namespaces and naming seemed more hassle than it was worth for only one caller that needed to specify this. llvm-svn: 201469
* DwarfUnit: Provide a reference to a defining DwarfCompileUnit from ↵David Blaikie2014-02-121-2/+2
| | | | | | | | | DwarfTypeUnit. Type units need to insert their file strings into the compile unit's line/file table. This is preliminary work to that end. llvm-svn: 201196
* Make the compile unit map a MapVector so that we can assume a stableEric Christopher2014-01-291-1/+2
| | | | | | output ordering. llvm-svn: 200421
* Revert r199871 and replace it with a simple check in the debug infoEric Christopher2014-01-281-0/+4
| | | | | | | | | code to see if we're emitting a function into a non-default text section. This is still a less-than-ideal solution, but more contained than r199871 to determine whether or not we're emitting code into an array of comdat sections. llvm-svn: 200269
* Revert "Use DW_AT_high_pc and DW_AT_low_pc for the high and low pc for a"Eric Christopher2014-01-241-1/+0
| | | | | | | | in order to fix the cygwin/mingw bots. This reverts commit r199990. llvm-svn: 199991
* Use DW_AT_high_pc and DW_AT_low_pc for the high and low pc for aEric Christopher2014-01-241-0/+1
| | | | | | | | compile unit. Make these relocations on the platforms that need relocations and add a routine to ensure that we don't put the addresses in an offset table for split dwarf. llvm-svn: 199990
* Make sure we emit a relocation to the debug_ranges section in theEric Christopher2014-01-151-0/+6
| | | | | | presence of CU ranges. llvm-svn: 199276
* Revert "Revert r198851, "Prototype of skeleton type units for fission""David Blaikie2014-01-101-0/+4
| | | | | | | | | This reverts commit r198865 which reverts r198851. ASan identified a use-of-uninitialized of the DwarfTypeUnit::Ty variable in skeleton type units. llvm-svn: 198908
* Revert r198851, "Prototype of skeleton type units for fission"NAKAMURA Takumi2014-01-091-4/+0
| | | | | | It caused undefined behavior. DwarfTypeUnit::Ty might not be initialized properly, I guess. llvm-svn: 198865
* Prototype of skeleton type units for fissionDavid Blaikie2014-01-091-0/+4
| | | | llvm-svn: 198851
* DwarfDebug: Refactor out common skeleton construction code to be reused for ↵David Blaikie2014-01-091-0/+3
| | | | | | type unit skeletons. llvm-svn: 198846
* DwarfUnit: Rename "Node" to "CUNode" and propagate it through DwarfTypeUnit ↵David Blaikie2014-01-091-2/+2
| | | | | | | | | | as well. Since we'll now also need the split dwarf file name along with the language in DwarfTypeUnits, just use the whole DICompileUnit rather than explicitly handling each field needed. llvm-svn: 198842
* Revert "Revert "Debug Info: Type Units: Simplify type hashing using ↵David Blaikie2014-01-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | IR-provided unique names."" This reverts commit r198398, thus reapplying r198397. I had accidentally introduced an endianness issue when applying the hash to the type unit. Using support::ulittle64_t in the reinterpret_cast in addDwarfTypeUnitType fixes this issue. Original commit message: Debug Info: Type Units: Simplify type hashing using IR-provided unique names. What's good for LTO metadata size problems ought to be good for non-LTO debug info size too, so let's rely on the same uniqueness in both cases. If it's insufficient for non-LTO for whatever reason (since we now won't be uniquing CU-local types or any C types - but these are likely to not be the most significant contributors to type bloat) we should consider a frontend solution that'll help both LTO and non-LTO alike, rather than using DWARF-level DIE-hashing that only helps non-LTO debug info size. It's also much simpler this way and benefits C++ even more since we can deduplicate lexically separate definitions of the same C++ type since they have the same mangled name. llvm-svn: 198436
* Revert "Debug Info: Type Units: Simplify type hashing using IR-provided ↵David Blaikie2014-01-031-2/+1
| | | | | | | | | | | unique names." Reverting due to bot failure I won't have time to investigate until tomorrow. This reverts commit r198397. llvm-svn: 198398
* Debug Info: Type Units: Simplify type hashing using IR-provided unique names.David Blaikie2014-01-031-1/+2
| | | | | | | | | | | | | | | | What's good for LTO metadata size problems ought to be good for non-LTO debug info size too, so let's rely on the same uniqueness in both cases. If it's insufficient for non-LTO for whatever reason (since we now won't be uniquing CU-local types or any C types - but these are likely to not be the most significant contributors to type bloat) we should consider a frontend solution that'll help both LTO and non-LTO alike, rather than using DWARF-level DIE-hashing that only helps non-LTO debug info size. It's also much simpler this way and benefits C++ even more since we can deduplicate lexically separate definitions of the same C++ type since they have the same mangled name. llvm-svn: 198397
* Revert r198208 and reapply:Eric Christopher2013-12-301-1/+2
| | | | | | | | | | r198196: Use a pointer to keep track of the skeleton unit for each normal unit and construct it up front. r198199: Reapply r198196 with a fix to zero initialize the skeleton pointer. r198202: Fix aranges and split dwarf by ensuring that the symbol and relocation back to the compile unit from the aranges section is to the skeleton unit and not the one in the dwo. with a fix to use integer 0 for DW_AT_low_pc since the relocation to the text section symbol was causing issues with COFF. Accordingly remove addLocalLabelAddress and machinery since we're not currently using it. llvm-svn: 198222
* Revert r198199 (and r198202). It broke 3 DebugInfo tests for targeting ↵NAKAMURA Takumi2013-12-301-2/+1
| | | | | | | | | | | | | | i686-cygming. r198196: Use a pointer to keep track of the skeleton unit for each normal unit and construct it up front. r198199: Reapply r198196 with a fix to zero initialize the skeleton pointer. r198202: Fix aranges and split dwarf by ensuring that the symbol and relocation back to the compile unit from the aranges section is to the skeleton unit and not the one in the dwo. They could be reproducible with explicit target. llvm/lib/MC/WinCOFFObjectWriter.cpp:224: bool {anonymous}::COFFSymbol::should_keep() const: Assertion `Section->Number != -1 && "Sections with relocations must be real!"' failed. llvm-svn: 198208
* Fix aranges and split dwarf by ensuring that the symbol and relocationEric Christopher2013-12-301-1/+2
| | | | | | | | | | | back to the compile unit from the aranges section is to the skeleton unit and not the one in the dwo. Do this by adding a method to grab a forwarded on local sym and local section by querying the skeleton if one exists and using that. Add a few tests to verify the relocations are back to the correct section. llvm-svn: 198202
* DebugInfo: Introduce new DIValue, DIETypeSignature to encode references to ↵David Blaikie2013-12-171-7/+3
| | | | | | | | | type units via their signatures This simplifies type unit and type unit reference creation as well as setting the stage for inter-type hashing across type unit boundaries. llvm-svn: 197539
* We never emit info into the macro info section, stop emitting anEric Christopher2013-12-101-3/+0
| | | | | | empty one. llvm-svn: 196849
* Rename CompileUnit->DwarfCompileUnit and TypeUnit->DwarfTypeUnit forEric Christopher2013-12-091-26/+26
| | | | | | clarity. No functional change. llvm-svn: 196844
* Rename Unit->DwarfUnit to match the file name and make it a bit lessEric Christopher2013-12-091-63/+64
| | | | | | ambiguous. Reformat to match. llvm-svn: 196838
* DebugInfo: Include the section and start-of-section label in the unitDavid Blaikie2013-12-061-2/+2
| | | | | | | This is a precursor to moving type units into the correct (debug_types) section with comdat groups and full type unit headers. llvm-svn: 196615
* DebugInfo: Ensure unit IDs (for non-skeletal units) match thein index in the ↵David Blaikie2013-12-061-3/+0
| | | | | | | | | | | | | | | | | | | list This simplifies reasoning about the code and enables simple navigation from a skeleton to its full unit. (currently there are no type unit skeletons, so the skeleton list doesn't have the same ID == index property) Eventually we should get rid of this ID and just store the labels we need as the IDs are allowing this code to create difficult to manage/understand associations (loops over non-skeletal units are implicitly referencing their skeletal units during pub* emission, for example). It may be necessary to have some kind of skeleton->full unit association and a more direct pointer or similar device would be preferable than an index. llvm-svn: 196600
* Rename DwarfUnits to DwarfFile to help avoid some naming confusion.Eric Christopher2013-12-051-6/+7
| | | | llvm-svn: 196519
* DwarfDebug/DwarfUnit: Push abbreviation structures down into DwarfUnits to ↵David Blaikie2013-12-051-23/+8
| | | | | | reduce duplication llvm-svn: 196479
* DwarfDebug: Avoid unnecessary abbreviation lookup when emitting DIEsDavid Blaikie2013-12-051-1/+1
| | | | | | | DIEs already contain references directly to their DIEAbbrev, use that instead of looking it up based on index. llvm-svn: 196446
* DwarfDebug: Remove trivial function wrapperDavid Blaikie2013-12-051-3/+0
| | | | llvm-svn: 196445
* DwarfDebug: Reduce code duplication for sec offset emissionDavid Blaikie2013-12-041-0/+4
| | | | llvm-svn: 196414
* Update comment grammar and contents.Eric Christopher2013-12-031-1/+4
| | | | llvm-svn: 196323
* Reland 196270 "Generalize debug info / EH emission in AsmPrinter"Timur Iskhodzhanov2013-12-031-8/+12
| | | | | | Addressing the existense AMDGPUAsmPrinter and other subclasses of AsmPrinter llvm-svn: 196288
* Revert r196270, "Generalize debug info / EH emission in AsmPrinter"NAKAMURA Takumi2013-12-031-13/+9
| | | | | | It broke CodeGen/R600 tests with +Asserts. llvm-svn: 196272
* Generalize debug info / EH emission in AsmPrinterTimur Iskhodzhanov2013-12-031-9/+13
| | | | llvm-svn: 196270
* Refactor the handling of lexical block and inline scope rangesEric Christopher2013-12-031-0/+5
| | | | | | into a single function. No functional change. llvm-svn: 196181
* Update doxygen tags.Eric Christopher2013-12-031-2/+2
| | | | llvm-svn: 196180
* Reorder member function declarations to match source order.Eric Christopher2013-12-031-3/+4
| | | | llvm-svn: 196179
* Make ranges and range lists be a discrete entity that can be locatedEric Christopher2013-12-031-2/+3
| | | | | | | and emitted per function and CU. Begins coalescing ranges as a first class entity through debug info. No functional change. llvm-svn: 196178
* DebugInfo: Refactor CompileUnit into a Unit baseclass and ↵David Blaikie2013-12-021-6/+5
| | | | | | | | | | CompileUnit/TypeUnit derived classes. Header/cpp file rename to follow immediately - just splitting out the commits for ease of review/reading to demonstrate that the renaming changes are entirely mechanical. llvm-svn: 196139
* DebugInfo: Type Units: Propagate the correct DW_AT_language into type units.David Blaikie2013-12-021-1/+1
| | | | llvm-svn: 196130
* 80-column fixups.Eric Christopher2013-11-261-1/+2
| | | | llvm-svn: 195790
* DwarfDebug: Include type units in accelerator tables.David Blaikie2013-11-261-2/+6
| | | | | | | Since type units aren't in the CUMap, use the DwarfUnits list to iterate over units for tasks such as accelerator table building. llvm-svn: 195776
* DwarfDebug: Move ownership of CompileUnits into DwarfUnitsDavid Blaikie2013-11-231-3/+2
| | | | | | | | | | This avoids the need for an extra list of SkeletonCUs and associated cleanup while staging things to be cleaner for further type unit improvements. Also hopefully fixes a memory leak introduced in r195166. llvm-svn: 195536
* Move member variable up to where the rest of non-DWARF5 variables reside.Eric Christopher2013-11-211-3/+3
| | | | llvm-svn: 195380
* CR feedback for r195166: Add comments regarding type unit mapping and type ↵David Blaikie2013-11-201-1/+5
| | | | | | | | units disabling cross-CU sharing. Changes suggested by Manman Ren. llvm-svn: 195262
* DebugInfo: Partial implementation of DWARF type units.David Blaikie2013-11-191-2/+3
| | | | | | | | | | | | | | Emit DW_TAG_type_units into the debug_info section using compile unit headers. This is bogus/unusable by debuggers, but testable and provides more isolated review. Subsequent patches will include support for type unit headers and emission into the debug_types section, as well as comdat grouping the types based on their hash. Also the CompileUnit type will be renamed 'Unit' and relevant portions pulled out into respective CompileUnit and TypeUnit types. llvm-svn: 195166
* DwarfCompileUnit: Add type safety by using DICompileUnit rather than raw ↵David Blaikie2013-11-151-1/+1
| | | | | | MDNode* for the CU metadata node llvm-svn: 194893
* DwarfDebug: Push DISubprogram through updateSubprogramScopeDIEDavid Blaikie2013-11-151-1/+1
| | | | llvm-svn: 194879
* Debug Info: remove duplication of DIEs when a DIE can be shared across CUs.Manman Ren2013-10-311-0/+12
| | | | | | | | | | | | | | | | | | | We add a map in DwarfDebug to map MDNodes that are shareable across CUs to the corresponding DIEs: MDTypeNodeToDieMap. These DIEs can be shared across CUs, that is why we keep the maps in DwarfDebug instead of CompileUnit. We make the assumption that if a DIE is not added to an owner yet, we assume it belongs to the current CU. Since DIEs for the type system are added to their owners immediately after creation, and other DIEs belong to the current CU, the assumption should be true. A testing case is added to show that we only create a single DIE for a type MDNode and we use ref_addr to refer to the type DIE. We also add a testing case to show ref_addr relocations for non-darwin platforms. llvm-svn: 193779
OpenPOWER on IntegriCloud