Eric Christopher
3cc90fe5a5
Whitespace and 80-col.
...
llvm-svn: 138654
2011-08-26 21:02:40 +00:00
Devang Patel
59e27c5f12
Do not use named md nodes to track variables that are completely optimized. This does not scale while doing LTO with debug info. New approach is to include list of variables in the subprogram info directly.
...
llvm-svn: 138145
2011-08-19 23:28:12 +00:00
Devang Patel
425b4dcc30
There is no need to add file as context for subroutine type. The subroutine type does not need any context.
...
llvm-svn: 138010
2011-08-18 23:50:57 +00:00
Devang Patel
eb1bb4e419
Until now all debug info MDNodes referred to a root MDNode, a compile unit. This simplified handling of these needs in dwarf writer. However, one side effect of this is that during link time optimization all these MDNodes are _not_ uniqued. In other words there will be N number of MDNodes describing "int", "char" and all other types, which would suddenly grow when each object file starts using libraries like STL.
...
MDNodes graph structure such that compiler unit keeps track of important MDNodes and update dwarf writer to process mdnodes top-down instead of bottom up.
llvm-svn: 137778
2011-08-16 22:09:43 +00:00
Devang Patel
2b8acaf4f3
Add a finalize() hook, that'll let DIBuilder construct compile unit lazily.
...
llvm-svn: 137673
2011-08-15 23:00:00 +00:00
Devang Patel
cfa82a378d
Reapply r135457. This needs llvm-gcc change, that I forgot to check-in yesterday.
...
llvm-svn: 135504
2011-07-19 19:41:54 +00:00
Bob Wilson
da30cf84c3
Revert "Make a provision to encode inline location in a variable. This will enable dwarf writer to easily distinguish between two instances of a inlined variable in one basic block."
...
This reverts commit 9fec5e346efdf744b151ae6604f912908315fa7a.
llvm-svn: 135486
2011-07-19 16:32:50 +00:00
Devang Patel
ac532dedf1
Make a provision to encode inline location in a variable. This will enable dwarf writer to easily distinguish between two instances of a inlined variable in one basic block.
...
llvm-svn: 135457
2011-07-19 01:03:32 +00:00
Jay Foad
5bd375a6cc
Convert CallInst and InvokeInst APIs to use ArrayRef.
...
llvm-svn: 135265
2011-07-15 08:37:34 +00:00
Devang Patel
503c3998f3
Fix struct member's scope. Patch by Xi Wang.
...
llvm-svn: 133828
2011-06-24 22:00:39 +00:00
Devang Patel
1d40024322
A typedef's context is not the same as type's context. It is the context of typedef decl itself. Use extra parameter to communicate this to DIBuilder.
...
llvm-svn: 132556
2011-06-03 17:04:51 +00:00
Devang Patel
09fa69e151
Use llvm.dbg.cu named metadata to collect compile units.
...
llvm-svn: 130756
2011-05-03 16:18:28 +00:00
Devang Patel
b5ea255fb4
Fix an off by one error while accessing complex address element of a DIVariable.
...
This worked untill now because stars are aligned (i.e. num of complex address elments are always 0 or 2+ and when it is 2+ at least two elements are access together)
llvm-svn: 130225
2011-04-26 18:24:39 +00:00
Jay Foad
dbf81d8ddf
PR9214: Convert the DIBuilder API to use ArrayRef.
...
llvm-svn: 130086
2011-04-24 10:11:03 +00:00
Devang Patel
1d6bbd41aa
Let front-end tie subprogram declaration with subprogram definition directly.
...
llvm-svn: 130028
2011-04-22 23:10:17 +00:00
Jay Foad
5514afe6b2
PR9214: Convert Metadata API to use ArrayRef.
...
llvm-svn: 129932
2011-04-21 19:59:31 +00:00
Devang Patel
0c7732499b
Use ArrayRef variants.
...
llvm-svn: 129735
2011-04-18 23:51:03 +00:00
Devang Patel
514b4006c2
Introduce support to encode Objective-C property information in debugging information generated for an interface.
...
llvm-svn: 129624
2011-04-16 00:11:51 +00:00
Devang Patel
9f738849ab
Add support to encode function's template parameters.
...
llvm-svn: 128947
2011-04-05 22:52:06 +00:00
Devang Patel
40eee1e970
Today, the language front ends produces llvm.dbg.* intrinsics, used to encode arguments' debug info, in order any way, most of the times. However, if a front end mix-n-matches llvm.dbg.declare and llvm.dbg.value intrinsics to encode debug info for arguments then code generator needs a way to find argument order.
...
Use 8 bits from line number field to keep track of argument ordering while encoding debug info for an argument. That leaves 24 bit for line no, DebugLoc also allocates 24 bit for line numbers. If a function has more than 255 arguments then rest of the arguments will be ordered by llvm.dbg.* intrinsics' ordering in IR.
llvm-svn: 126793
2011-03-01 22:58:13 +00:00
Devang Patel
9b4127349c
Follow LLVM coding style.
...
clang uses DBuilder, so it requries corresponding change.
llvm-svn: 126231
2011-02-22 18:56:12 +00:00
Devang Patel
be933b470a
Add support to describe template value parameter in debug info.
...
llvm-svn: 124755
2011-02-02 22:35:53 +00:00
Devang Patel
3a9e65efb6
Add support to describe template parameter type in debug info.
...
llvm-svn: 124752
2011-02-02 21:38:25 +00:00
Devang Patel
8817135cb9
Use type's file info while describing inheritance relationship.
...
llvm-svn: 121289
2010-12-08 21:46:37 +00:00
Devang Patel
b68c6231e9
Add support to create debug info for functions and methods.
...
llvm-svn: 121281
2010-12-08 20:42:44 +00:00
Devang Patel
81c3c87717
Add support to create class type.
...
llvm-svn: 121279
2010-12-08 20:18:20 +00:00
Devang Patel
89ea4f27a8
Add support to create vector, array, enums etc...
...
llvm-svn: 121224
2010-12-08 01:50:15 +00:00
Devang Patel
dd261afdd9
Global variable does not need linkage name.
...
llvm-svn: 121212
2010-12-08 00:06:22 +00:00
Devang Patel
63f83cd861
Add support to create local variable's debug info.
...
llvm-svn: 121211
2010-12-07 23:58:00 +00:00
Devang Patel
746660fc7b
Add support to create variables, structs etc.. using DIBuilder.
...
This is still work in progress.
llvm-svn: 121205
2010-12-07 23:25:47 +00:00
Benjamin Kramer
ed8b7bf9ed
Use arrays instead of constant-sized SmallVectors.
...
llvm-svn: 118257
2010-11-04 18:45:27 +00:00
Devang Patel
57c5a20364
Introduce DIBuilder. It is intended to be a front-end friendly interface to emit debuggging information entries in LLVM IR.
...
To create debugging information for a pointer, using DIBUilder front-end just needs
DBuilder.CreatePointerType(Ty, Size);
instead of
DebugFactory.CreateDerivedType(llvm::dwarf::DW_TAG_pointer_type,
TheCU, "", getOrCreateMainFile(),
0, Size, 0, 0, 0, OCTy);
llvm-svn: 118248
2010-11-04 15:01:38 +00:00