Commit Graph

93 Commits

Author SHA1 Message Date
Devang Patel
0cb3e1c047 Validate file id.
llvm-svn: 64204
2009-02-10 06:04:08 +00:00
Bill Wendling
3543edc608 More whitespace fixin'.
llvm-svn: 63663
2009-02-03 21:38:21 +00:00
Bill Wendling
716a4f7bfe Whitespace and comment changes. No functionality change.
llvm-svn: 63660
2009-02-03 21:17:20 +00:00
Devang Patel
7f2ea2d067 Do not add redundant arguments in a method definition DIE.
llvm-svn: 63527
2009-02-02 17:51:41 +00:00
Devang Patel
58511a356b Each input file is encoded as a separate compile unit in LLVM debugging
information output. However, many target specific tool chains prefer to encode
only one compile unit in an object file. In this situation, the LLVM code
generator will include  debugging information entities in the compile unit 
that is marked as main compile unit. The code generator accepts maximum one main
compile unit per module. If a module does not contain any main compile unit 
then the code generator will emit multiple compile units in the output object 
file.

[Part 1]

Update DebugInfo APIs to accept optional boolean value while creating DICompileUnit  to mark the unit as "main" unit. By defaults all units are considered  non-main.  Update SourceLevelDebugging.html to document "main" compile unit.

Update DebugInfo APIs to not accept and encode separate source file/directory entries while creating various llvm.dbg.* entities. There was a recent, yet to be documented, change to include this additional information so no documentation changes are required here.

Update DwarfDebug to handle "main" compile unit. If "main" compile unit is seen then all DIEs are inserted into "main" compile unit. All other compile units are used to find source location for llvm.dbg.* values. If there is not any "main" compile unit then create unique compile unit DIEs for each llvm.dbg.compile_unit.

[Part 2]

Create separate llvm.dbg.compile_unit for each input file. Mark compile unit create for main_input_filename as "main" compile unit. Use appropriate compile unit, based on source location information collected from the tree node, while creating llvm.dbg.* values using DebugInfo APIs.

---

This is Part 1.

llvm-svn: 63400
2009-01-30 18:20:31 +00:00
Devang Patel
270009c8ab Remove dead code, again.
llvm-svn: 63358
2009-01-30 01:27:49 +00:00
Devang Patel
180d237792 Remove dead code.
llvm-svn: 63357
2009-01-30 01:25:47 +00:00
Devang Patel
779653b60e Add DW_AT_declaration for class methods.
llvm-svn: 63356
2009-01-30 01:21:46 +00:00
Devang Patel
be2267211f Do not forget to derived type while constructing an array type.
llvm-svn: 63233
2009-01-28 21:08:20 +00:00
Devang Patel
031a8a1ef5 Add type DIE into appropriate context DIE.
llvm-svn: 63154
2009-01-27 23:22:55 +00:00
Devang Patel
4353517ac4 Assorted debug info fixes.
- DW_AT_bit_size is only suitable for bitfields.
- Encode source location info for derived types.
- Source location and type size info is not useful for subroutine_type (info is included in respective DISubprogram) and array_type.

llvm-svn: 63077
2009-01-27 00:45:04 +00:00
Scott Michel
56fa9ba0b6 Make the Dwarf macro information section optional; CellSPU's assembler
doesn't support it. The default is set to 'true', so this should not
impact any other target backends.

llvm-svn: 63058
2009-01-26 22:32:51 +00:00
Devang Patel
d980abaae2 Introduce two DWARF attribute extentions DW_AT_APPLE_optimized, DW_AT_APPLE_flags.
DW_AT_APPLE_optimized flag is set when a compile_unit is optimized. The debugger takes advantage of this information some way.

DW_AT_APPLE_flags encodes command line options when certain env. variable is set. This is used by build engineers to track various gcc command lines used by by  a project, irrespective of whether the project used makefile, Xcode or something else.

llvm-gcc patch is next.

llvm-svn: 62888
2009-01-23 22:33:47 +00:00
Devang Patel
37b2017172 Empty DIType represents void. In this case no need to construct any type DIE.
llvm-svn: 62861
2009-01-23 19:13:31 +00:00
Devang Patel
86e54f5636 Code did not follow associated comment. not a good idea.
llvm-svn: 62828
2009-01-23 01:25:58 +00:00
Devang Patel
b638679d9d Set appropriate tag for the composite type.
llvm-svn: 62827
2009-01-23 01:19:09 +00:00
Devang Patel
c129e798c7 Encode member accessibility.
llvm-svn: 62638
2009-01-21 00:08:04 +00:00
Devang Patel
bb4362571a Appropriately mark fowrad decls.
llvm-svn: 62625
2009-01-20 22:27:02 +00:00
Devang Patel
4c79c8be26 Fix struct member's debug info.
llvm-svn: 62610
2009-01-20 21:02:02 +00:00
Devang Patel
ccc3162f69 Need only one set of debug info versions enum.
llvm-svn: 62602
2009-01-20 19:22:03 +00:00
Devang Patel
10f2f03c68 Fix global variable's address in a DIE.
llvm-svn: 62596
2009-01-20 18:55:39 +00:00
Devang Patel
7f6ef3bdd6 Enable debug info for enums.
llvm-svn: 62594
2009-01-20 18:35:14 +00:00
Devang Patel
6bd9ebdef8 Enable debug info for composite types.
llvm-svn: 62589
2009-01-20 18:13:03 +00:00
Devang Patel
6a88f8849b Do not use DenseMap because the iterator is invalidated while constructing types. After all there was a reason why std::map was used initially!
llvm-svn: 62555
2009-01-20 00:58:55 +00:00
Devang Patel
7c2157602d Verify debug info.
llvm-svn: 62545
2009-01-19 23:21:49 +00:00
Devang Patel
4a7a53217b Remove tabs.
llvm-svn: 62423
2009-01-17 08:05:14 +00:00
Devang Patel
97cd6a4a7c Refactor code
llvm-svn: 62421
2009-01-17 08:01:33 +00:00
Devang Patel
2fc394ddfd Assign argument type to appropriate DIE.
llvm-svn: 62412
2009-01-17 06:57:25 +00:00
Devang Patel
24e250ee74 Remove dead code.
llvm-svn: 62410
2009-01-17 06:51:37 +00:00
Devang Patel
732220a09f Disable composite type debug info for now.
llvm-svn: 62406
2009-01-17 05:05:12 +00:00
Devang Patel
9ecd23c14d Fix comments.
llvm-svn: 62358
2009-01-16 21:07:53 +00:00
Devang Patel
6f83d4b68f Use lightweight DebugInfo objects directly.
llvm-svn: 62341
2009-01-16 19:28:14 +00:00
Devang Patel
627bb2afb9 Align source code.
llvm-svn: 62328
2009-01-16 18:01:58 +00:00
Devang Patel
434239cc4f Validate debug info values only if DwarfDebug is initialized.
llvm-svn: 62298
2009-01-16 02:15:14 +00:00
Devang Patel
befef54e67 Any debug info symbol is only valid if atleast one compile unit is seen.
llvm-svn: 62294
2009-01-16 01:49:46 +00:00
Devang Patel
f0e1e4cc51 Do not stumble over forward declared struct member.
llvm-svn: 62288
2009-01-16 00:50:53 +00:00
Devang Patel
1ee58c7d8c Validate dbg_* intrinsics before lowering them.
llvm-svn: 62286
2009-01-15 23:41:32 +00:00
Rafael Espindola
0aba6c9435 Add the private linkage.
llvm-svn: 62279
2009-01-15 20:18:42 +00:00
Devang Patel
97d45c48c5 Use lightweight DebugInfo objects directly.
llvm-svn: 62276
2009-01-15 19:26:23 +00:00
Devang Patel
307fac7f3a Use variable's context to identify respective DbgScope.
Use light weight DebugInfo object directly.

llvm-svn: 62269
2009-01-15 18:25:17 +00:00
Devang Patel
cf0db71b85 Do not construct debug scope if RootScope *is* null.
llvm-svn: 62209
2009-01-14 01:34:32 +00:00
Devang Patel
1da8253b35 Removoe MachineModuleInfo methods (and related DebugInfoDesc class hierarchy) that were used to handle debug info.
llvm-svn: 62199
2009-01-13 23:54:55 +00:00
Devang Patel
ba388f3905 Keep "has debug info" big in MachineModuleInfo to avoid circular dependency between AsmPrinter and CodeGen.
llvm-svn: 62191
2009-01-13 23:02:17 +00:00
Devang Patel
7a618394f6 Undo previous checkin.
llvm-svn: 62190
2009-01-13 22:54:57 +00:00
Devang Patel
e0f23e966d Use DwarfWriter to record dbg variables.
llvm-svn: 62185
2009-01-13 21:44:10 +00:00
Devang Patel
ab5ef6abf1 Use dwarf writer to decide whether the module has debug info or not.
llvm-svn: 62184
2009-01-13 21:25:00 +00:00
Devang Patel
13a43a3789 Start using DebugInfo API to emit debug info.
llvm-svn: 62125
2009-01-13 00:20:51 +00:00
Devang Patel
68ef0f4ecb Emit debug info, only if at least one compile unit is seen.
llvm-svn: 62118
2009-01-12 23:09:42 +00:00
Devang Patel
4379343f92 If multiple compile units are seen then emit them independently. In other words, do not force all DIEs into first, whatever it is, compile unit.
Note, multiple compile unit support is not well tested (it did not work correctly until now anyway.)

llvm-svn: 62116
2009-01-12 23:05:55 +00:00
Devang Patel
283436f4b9 Avoid cast<>, use light weith wrapper directly.
llvm-svn: 62115
2009-01-12 22:58:14 +00:00