Devang Patel
1f4690c624
Add support to emit debug info for C++ namespaces.
...
llvm-svn: 91440
2009-12-15 19:16:48 +00:00
Devang Patel
525dda05a0
Use DW_AT_specification to point to DIE describing function declaration.
...
llvm-svn: 91278
2009-12-14 16:18:45 +00:00
Devang Patel
b314bd688a
Construct CompileUnits lazily.
...
llvm-svn: 91159
2009-12-11 21:37:07 +00:00
Devang Patel
2eec32d944
If VariableDIe is not created (may be because global was optimzed away) then do not try to use the variable die.
...
llvm-svn: 91077
2009-12-10 23:25:41 +00:00
Devang Patel
2b75ed2c3d
Refactor code that finds context for a given die.
...
Create global variable DIEs after creating subprogram DIEs. This allows function level static variable's to find their context at the time of DIE creation.
llvm-svn: 91055
2009-12-10 19:14:49 +00:00
Devang Patel
b5b60ea4f9
Refactor.
...
llvm-svn: 91051
2009-12-10 18:05:33 +00:00
Devang Patel
9ccfb641d1
Reapply r90858, a cleanup patch.
...
llvm-svn: 90979
2009-12-09 18:24:21 +00:00
Devang Patel
512001ac7d
Revert 90858 90875 and 90805 for now.
...
llvm-svn: 90898
2009-12-08 23:21:45 +00:00
Devang Patel
24c0bb1ca1
Cleanup.
...
There is no need to supply ModuleCU to addType() as a parameter.
llvm-svn: 90858
2009-12-08 15:31:31 +00:00
Devang Patel
7d723ec70d
Do not try to push dead variable's debug info into namespace info.
...
llvm-svn: 90857
2009-12-08 15:01:35 +00:00
Devang Patel
b074d1783b
Add support to emit debug info for c++ style namespaces.
...
llvm-svn: 90805
2009-12-07 21:41:32 +00:00
Dan Gohman
0891d759b5
Don't print a space before the : between the file name and line number.
...
And separate the directory and file name with a '/'.
llvm-svn: 90641
2009-12-05 02:00:34 +00:00
Dan Gohman
3a6164e8ab
Print newlines after printing labels for debug info, so that the output
...
isn't cluttered with things like "Llabel47:Llabel48: movq (%rsi), %xmm3"
llvm-svn: 90638
2009-12-05 01:42:34 +00:00
Devang Patel
8f0460278c
In TAG_subrange_type, uppder bound is zero indexed.
...
llvm-svn: 90617
2009-12-04 23:10:24 +00:00
Devang Patel
3b666fef67
Insert composite type DIE into the map before processing type fields. This allows fields to find their context DIE from the map.
...
llvm-svn: 90498
2009-12-03 23:46:57 +00:00
Devang Patel
eb57c59b66
Add support to emit debug info for virtual functions and virtual base classes.
...
llvm-svn: 90474
2009-12-03 19:11:07 +00:00
Devang Patel
236526dd18
Emit method definition DIE at module level (even for methods with inlined functino body at soure level) so that the debugger can invoke it. This fixes many test failures in gdb test suite.
...
llvm-svn: 90375
2009-12-03 01:25:38 +00:00
Devang Patel
8c33959df2
Clarify that DIEString does not keep a copy of the string.
...
llvm-svn: 90318
2009-12-02 15:25:16 +00:00
Devang Patel
a605b9124a
Reuse existing subprogram DIE.
...
llvm-svn: 90281
2009-12-01 23:07:59 +00:00
Devang Patel
0a2c0bcb14
Clear function specific containers while processing end of a function, even if DW_TAG_subprogram for current function is not found.
...
llvm-svn: 90247
2009-12-01 18:13:48 +00:00
Devang Patel
ae466efe2e
If pointer type has a name then do not ignore the name.
...
llvm-svn: 90172
2009-11-30 23:56:56 +00:00
Benjamin Kramer
4cd30817d3
Avoid some possibly unsafe uses of StringRef::data().
...
llvm-svn: 89873
2009-11-25 18:26:09 +00:00
Devang Patel
2d9caf9fe5
Use StringRef (again) in DebugInfo interface.
...
llvm-svn: 89866
2009-11-25 17:36:49 +00:00
Devang Patel
b3e0168428
Use StringRef instead of std::string in DIEString.
...
llvm-svn: 89793
2009-11-24 19:42:17 +00:00
Devang Patel
c8654eb64e
Swith to pubtypes section before emitting pub types.
...
llvm-svn: 89787
2009-11-24 19:18:41 +00:00
Devang Patel
04d2f2d192
Emit pubtypes.
...
llvm-svn: 89725
2009-11-24 01:14:22 +00:00
Dan Gohman
3650f4ed0c
Simplify this code.
...
llvm-svn: 89702
2009-11-23 21:30:55 +00:00
Devang Patel
b5b51598ba
Revert r89487.
...
llvm-svn: 89686
2009-11-23 18:43:37 +00:00
Jim Grosbach
bf6d35893f
Add getFrameIndexReference() to TargetRegisterInfo, which allows targets to
...
tell debug info which base register to use to reference a frame index on a
per-index basis. This is useful, for example, in the presence of dynamic
stack realignment when local variables are indexed via the stack pointer and
stack-based arguments via the frame pointer.
llvm-svn: 89620
2009-11-22 20:14:00 +00:00
Jim Grosbach
00e9c6103b
80-column cleanup
...
llvm-svn: 89612
2009-11-22 19:20:36 +00:00
Jim Grosbach
042483efb1
remove trailing whitespace
...
llvm-svn: 89567
2009-11-21 23:12:12 +00:00
Devang Patel
930143b0dc
Cosmetic changes, which were long overdue, in DwarfDebug.cpp.
...
llvm-svn: 89537
2009-11-21 02:48:08 +00:00
Devang Patel
e1bbc33355
Remove dead code.
...
llvm-svn: 89522
2009-11-21 00:54:03 +00:00
Devang Patel
92e8c655b2
There is no need to use FoldingSet to unique DIEs.
...
DIEs are created from MDNode, which are already uniqued. And DwarfDebug already uses ValueMaps to find and use existing DIE for a given MDNode.
llvm-svn: 89518
2009-11-21 00:31:03 +00:00
Devang Patel
e064ad4741
Do not hold on to a map slot while new entries may be inserted into the map.
...
Use ValueMap, instead of std::map.
llvm-svn: 89490
2009-11-20 21:37:22 +00:00
Devang Patel
85121a3bda
There is no need to emit source location info for DW_TAG_pointer_type.
...
llvm-svn: 89487
2009-11-20 21:05:37 +00:00
Nick Lewycky
a1c09d674e
Remove VISIBILITY_HIDDEN from the classes in this directory. Fixes bug 5507.
...
llvm-svn: 89075
2009-11-17 09:17:08 +00:00
Nick Lewycky
b7993d61f2
Revert r88939.
...
llvm-svn: 89066
2009-11-17 08:11:44 +00:00
Devang Patel
f3d7c08e34
Revert r88939.
...
llvm-svn: 88973
2009-11-16 21:53:40 +00:00
Devang Patel
2ffd9935a1
Add VISIBILITY_HIDDEN marker.
...
llvm-svn: 88939
2009-11-16 19:20:48 +00:00
Devang Patel
97f99fa554
Ignore nameless variables.
...
llvm-svn: 87069
2009-11-13 02:25:26 +00:00
Devang Patel
2904aa9f6e
"Attach debug info with llvm instructions" mode was enabled a month ago. Now make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes.
...
llvm-svn: 87014
2009-11-12 19:02:56 +00:00
Devang Patel
d41f119dac
If doesSupportDebugInformation() is false then do not try to emit dwarf debug info.
...
llvm-svn: 86874
2009-11-11 19:55:08 +00:00
Daniel Dunbar
75b4d3562c
Fix -Asserts warning.
...
llvm-svn: 86794
2009-11-11 03:09:50 +00:00
Devang Patel
78319c67ca
Do not assume first function scope seen represents current function.
...
llvm-svn: 86771
2009-11-11 00:31:36 +00:00
Devang Patel
4450f26621
While creating DbgScopes, do not forget parent scope.
...
llvm-svn: 86763
2009-11-11 00:18:40 +00:00
Devang Patel
cdb7d44d6d
Ignore variable if scope info is not available.
...
llvm-svn: 86753
2009-11-10 23:20:04 +00:00
Devang Patel
f6eeaebd76
Implement support to debug inlined functions.
...
llvm-svn: 86748
2009-11-10 23:06:00 +00:00
Devang Patel
cc11371b77
Do not bother to emit debug info for nameless global variable.
...
llvm-svn: 86259
2009-11-06 17:58:12 +00:00
Devang Patel
06ce6506d2
Do not try to emit debug info entry for dead global variable.
...
llvm-svn: 86212
2009-11-06 01:30:04 +00:00
Devang Patel
f05d57283e
While calculating original type size for a derived type, handle type variants encoded as DIDerivedType appropriately.
...
This improves bitfield support.
llvm-svn: 86073
2009-11-04 23:48:00 +00:00
Devang Patel
67f56f08c2
Fix DW_AT_data_member_location for bit-fields. It points to the location of annonymous field that covers respective field.
...
llvm-svn: 86054
2009-11-04 22:06:12 +00:00
Devang Patel
5d3fe2fc77
Array element size does not match array size but array is not a bitfield.
...
llvm-svn: 86043
2009-11-04 19:37:40 +00:00
Devang Patel
ffa7c07352
Ignore unnamed variables.
...
llvm-svn: 85909
2009-11-03 18:30:27 +00:00
Jeffrey Yasskin
6235b19d7b
Fix a funky "declared with greater visibility than the type of its field"
...
warning from gcc by removing VISIBILITY_HIDDEN attributes.
llvm-svn: 85873
2009-11-03 06:29:36 +00:00
Devang Patel
cfeaa48642
Do not held on to DenseMap slot accross map insertion. The insertion may cause the map to grow rending the slot invalid.
...
Use this opportunity to use ValueMap instead of DenseMap.
llvm-svn: 85298
2009-10-27 20:47:17 +00:00
Devang Patel
12524fd2e5
Do not emit name entry for a pointer type.
...
llvm-svn: 84276
2009-10-16 21:27:43 +00:00
Devang Patel
d0099a94db
If there is not any llvm instruction associated with each lexical scope encoded in debug info then create such scope on demand for variable info.
...
llvm-svn: 84262
2009-10-16 18:18:03 +00:00
Devang Patel
6875c5ebe4
Add support to record DbgScope as inlined scope.
...
llvm-svn: 84134
2009-10-14 21:08:09 +00:00
Devang Patel
d7ebfe3963
s/DebugLoc.CompileUnit/DebugLoc.Scope/g
...
s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g
llvm-svn: 84054
2009-10-13 23:28:53 +00:00
Daniel Dunbar
cdf01b5d82
Fix a -Asserts warning.
...
llvm-svn: 83950
2009-10-13 06:47:08 +00:00
Devang Patel
0f58bec599
Find enclosing subprogram info.
...
llvm-svn: 83922
2009-10-12 23:11:24 +00:00
Devang Patel
df45c7f642
Extract scope information from the variable itself, instead of relying on alloca or llvm.dbg.declare location.
...
While recording beginning of a function, use scope info from the first location entry instead of just relying on first location entry itself.
llvm-svn: 83684
2009-10-09 22:42:28 +00:00
Devang Patel
fafa1fe2ad
Check invalid debug info for enums. This may happen when underlyng enum is optimized away. Eventually DwarfChecker will clean this up during llvm verification stage.
...
llvm-svn: 83655
2009-10-09 17:51:49 +00:00
Devang Patel
20b2a77765
Do not record line number to implicitly mark start of function if function has arguments. Extra line number entries trip gdb in some cases.
...
llvm-svn: 83563
2009-10-08 18:48:03 +00:00
Devang Patel
4598eb6214
Add support to handle debug info attached to an instruction.
...
This is not yet enabled.
llvm-svn: 83400
2009-10-06 18:37:31 +00:00
Devang Patel
7d838bb66e
Fix cut-n-pasto.
...
llvm-svn: 83367
2009-10-06 03:15:38 +00:00
Devang Patel
2980a22028
Remove dead code.
...
llvm-svn: 83362
2009-10-06 02:01:32 +00:00
Devang Patel
8db360da7b
Add utility routine to set begin and end labels for DbgScopes.
...
This will be used by processDebugLoc().
llvm-svn: 83361
2009-10-06 01:50:42 +00:00
Devang Patel
475d32a987
Add utility routine to collect variable debug info. This is not yet used.
...
llvm-svn: 83355
2009-10-06 01:26:37 +00:00
Devang Patel
d859d86538
Existence of a compile unit for input source file is a good indicator to check debug info's presence in a module.
...
llvm-svn: 83348
2009-10-06 00:03:14 +00:00
Devang Patel
1c9eef72b4
If subprogram die is not available then construct new one.
...
This can happen if debug info is processed lazily.
llvm-svn: 83347
2009-10-05 23:59:00 +00:00
Devang Patel
4c420eca41
Adjust context for the global variables that are not at file scope, e.g.
...
void foo() { static int bar = 42; }
Here, foo's DIE is parent of bar's DIE.
llvm-svn: 83344
2009-10-05 23:40:42 +00:00
Devang Patel
4144a82154
Set address while constructing DIE.
...
llvm-svn: 83343
2009-10-05 23:22:08 +00:00
Devang Patel
2089d16140
Gracefully handle various scopes while recording source line info.
...
llvm-svn: 83317
2009-10-05 18:03:19 +00:00
Devang Patel
75cc16c0f2
Add support to extract lexical scope information from DebugLoc attached with an machine instruction.
...
This is not yet enabled.
llvm-svn: 83210
2009-10-01 20:31:14 +00:00
Devang Patel
787f94c28d
Record first and last instruction of a scope in DbgScope.
...
llvm-svn: 83207
2009-10-01 18:25:23 +00:00
Devang Patel
3256c751f5
Use MDNode * directly as an RecordSourceLine() argument.
...
llvm-svn: 83182
2009-09-30 22:51:28 +00:00
Mike Stump
14cf8ecf0b
Add a way for a frontend to generate more complex dwarf location
...
information. This allows arbitrary code involving DW_OP_plus_uconst
and DW_OP_deref. The scheme allows for easy extention to include,
any, or all of the DW_OP_ opcodes. I thought about just exposing all
of them, but, wasn't sure if people wanted the dwarf opcodes exposed
in the api. Is that a layering violation?
With this scheme, the entire existing block scheme used by llvm-gcc
can be switched over to the new scheme. I think that would be
cleaner, as then the compiler specific bits are not present in llvm
proper. Before the old code can be yanked however, similar code in
clang would have to be removed.
Next up, more testing.
llvm-svn: 83120
2009-09-30 00:08:22 +00:00
Devang Patel
b296942f6d
Remove std::string uses from DebugInfo interface.
...
llvm-svn: 83083
2009-09-29 18:40:58 +00:00
Mike Stump
944fa25934
Delete space after function name, before (, reflow a comment and
...
delete a few blank lines.
llvm-svn: 82729
2009-09-24 23:21:26 +00:00
Mike Stump
d6f9a2f90b
Fix spacing.
...
llvm-svn: 82727
2009-09-24 23:11:08 +00:00
Mike Stump
8808063181
This is overly constraining with respect to clang.
...
llvm-svn: 82591
2009-09-23 00:13:30 +00:00
Daniel Dunbar
be22ec4cfc
Fix indentation.
...
llvm-svn: 82333
2009-09-19 20:40:14 +00:00
Daniel Dunbar
c418d6b106
Strip trailing whitespace.
...
llvm-svn: 82332
2009-09-19 20:40:05 +00:00
Chris Lattner
dd5a989034
eliminate the horrid AsmPrinter::getGlobalLinkName method, inlining
...
it into all of its call sites and simplifying them.
llvm-svn: 81962
2009-09-16 00:08:41 +00:00
Caroline Tice
183a519771
Don't generate Dwarf line table entries for source line 0.
...
llvm-svn: 81542
2009-09-11 18:25:54 +00:00
Chris Lattner
321bc99a74
remove DebugLoc from MCInst and eliminate "Comment printing" from
...
the MCInst path of the asmprinter. Instead, pull comment printing
out of the autogenerated asmprinter into each target that uses the
autogenerated asmprinter. This causes code duplication into each
target, but in a way that will be easier to clean up later when more
asmprinter stuff is commonized into the base AsmPrinter class.
This also fixes an xcore strangeness where it inserted two tabs
before every instruction.
llvm-svn: 81396
2009-09-09 23:14:36 +00:00
Devang Patel
f5d5360065
Ignore malformed global variable debug info.
...
llvm-svn: 81055
2009-09-04 23:59:07 +00:00
Devang Patel
b2de5fa689
Subprogram is a scope. Derive DISubprogram from DIScope.
...
llvm-svn: 80637
2009-08-31 22:47:13 +00:00
Devang Patel
869529c58c
Rename DIBlock as DILexicalBlock.
...
llvm-svn: 80633
2009-08-31 22:00:15 +00:00
Caroline Tice
c87c1e2cfd
Add flag to mark structs for Apple Block "byref" variables; also add code to
...
modify the type and location debug information for these variables to match the
programmer's expectations.
llvm-svn: 80625
2009-08-31 21:19:37 +00:00
Devang Patel
9fda4bd998
Simplify isDerivedType() and other predicate interface.
...
llvm-svn: 80602
2009-08-31 18:49:10 +00:00
Devang Patel
80ae34974b
Reapply 79977.
...
Use MDNodes to encode debug info in llvm IR.
llvm-svn: 80406
2009-08-28 23:24:31 +00:00
Devang Patel
3082c01d68
Closure is a very generic name. Use AppleBlock instead.
...
llvm-svn: 80307
2009-08-27 23:51:51 +00:00
Devang Patel
f08e35d9dc
Revert 79977. It causes llvm-gcc bootstrap failures on some platforms.
...
llvm-svn: 80073
2009-08-26 05:01:18 +00:00
Devang Patel
a1b4dd96f2
Add isClosure() predicate. This is used to add DW_AT_APPLE_block attribute.
...
Patch by Caroline Tice.
llvm-svn: 80061
2009-08-26 00:39:50 +00:00
Devang Patel
02aac922b4
Update DebugInfo interface to use metadata, instead of special named llvm.dbg.... global variables, to encode debugging information in llvm IR. This is mostly a mechanical change that tests metadata support very well.
...
This change speeds up llvm-gcc by more then 6% at "-O0 -g" (measured by compiling InstructionCombining.cpp!)
llvm-svn: 79977
2009-08-25 05:24:07 +00:00
Chris Lattner
06fa176862
prune the #includes in raw_ostream.h by moving a
...
member out of line. ftostr is not particularly speedy,
so that method is presumably not perf sensitive.
llvm-svn: 79885
2009-08-24 03:52:50 +00:00
Chris Lattner
c521f54198
Prune #includes from llvm/Linker.h and llvm/System/Path.h,
...
forcing them down into various .cpp files.
This change also:
1. Renames TimeValue::toString() and Path::toString() to ::str()
for similarity with the STL.
2. Removes all stream insertion support for sys::Path, forcing
clients to call .str().
3. Removes a use of Config/alloca.h from bugpoint, using smallvector
instead.
4. Weans llvm-db off <iostream>
sys::Path really needs to be gutted, but I don't have the desire to
do it at this point.
llvm-svn: 79869
2009-08-23 22:45:37 +00:00