599 Commits

Author SHA1 Message Date
Devang Patel
895437142a Refactor. A subprogram is part of compile unit so let CompileUnit construct new subprogram.
llvm-svn: 137618
2011-08-15 17:24:54 +00:00
Devang Patel
444034783e Use ArrayRef.
llvm-svn: 137485
2011-08-12 18:10:19 +00:00
Benjamin Kramer
fa7e6a54b1 Plug a memory leak.
llvm-svn: 137321
2011-08-11 18:39:28 +00:00
Devang Patel
784077eb57 Stay within 80 columns.
llvm-svn: 137283
2011-08-10 23:58:09 +00:00
Devang Patel
bb23a4a9a5 Distinguish between two copies of one inlined variable. Take 2.
llvm-svn: 137253
2011-08-10 21:50:54 +00:00
Devang Patel
e30746c844 Revert unintentional parts of previous check-in.
llvm-svn: 137249
2011-08-10 21:16:49 +00:00
Devang Patel
7e62302fae Start using LexicalScopes utility. No intetional functionality change.
llvm-svn: 137246
2011-08-10 20:55:27 +00:00
Devang Patel
fee7cedbc9 Simplify by creating parent first.
llvm-svn: 137056
2011-08-08 18:22:10 +00:00
Chandler Carruth
81b7e11c89 Temporarily revert r135528 which distinguishes between two copies of one
inlined variable, based on the discussion in PR10542.

This explodes the runtime of several passes down the pipeline due to
a large number of "copies" remaining live across a large function. This
only shows up with both debug and opt, but when it does it creates
a many-minute compile when self-hosting LLVM+Clang. There are several
other cases that show these types of regressions.

All of this is tracked in PR10542, and progress is being made on fixing
the issue. Once its addressed, the re-instated, but until then this
restores the performance for self-hosting and other opt+debug builds.

Devang, let me know if this causes any trouble, or impedes fixing it in
any way, and thanks for working on this!

llvm-svn: 136953
2011-08-05 00:51:31 +00:00
Bob Wilson
0a8d5c6047 Some revisions to Devang's change r136759 for merged global debug info.
llvm-svn: 136802
2011-08-03 19:42:51 +00:00
Devang Patel
dc9cbaaf23 Use byte offset, instead of element number, to access merged global.
llvm-svn: 136759
2011-08-03 01:25:46 +00:00
Nick Lewycky
019d255d3e Fix a lot of typos, improve (but not necessarily fix) grammaros and reflow some
lines. No functionality change.

llvm-svn: 136458
2011-07-29 03:49:23 +00:00
Devang Patel
53dc616170 Remove outdated FIXME comment.
llvm-svn: 136275
2011-07-27 22:00:01 +00:00
Devang Patel
f098ce2757 It is quiet possible that inlined function body is split into multiple chunks of consequtive instructions. But, there is not any way to describe this in .debug_inline accelerator table used by gdb. However, describe non contiguous ranges of inlined function body appropriately using AT_range of DW_TAG_inlined_subroutine debug info entry.
llvm-svn: 136196
2011-07-27 00:34:13 +00:00
Devang Patel
613958c82c While extracting lexical scopes from machine instruction stream, work on one machine basic block at a time.
llvm-svn: 136106
2011-07-26 18:09:53 +00:00
Devang Patel
ddfe66e948 Refactor.
llvm-svn: 135633
2011-07-20 23:00:27 +00:00
Devang Patel
8fb9fd6769 There are two ways to map a variable to its lexical scope. Lexical scope information is embedded in MDNode describing the variable. It is also available as a part of DebugLoc attached with DBG_VALUE instruction. DebugLoc attached with an instruction is less reliable in optimized code so use information embedded in the MDNode.
llvm-svn: 135629
2011-07-20 22:18:50 +00:00
Devang Patel
a59b24b090 Distinguish between two copies of one inlined variable.
llvm-svn: 135528
2011-07-19 22:31:15 +00:00
Devang Patel
b7cc06366d Use DebugLoc directly to map inlined functions' instructions to respective lexical scope.
llvm-svn: 135302
2011-07-15 21:25:44 +00:00
Devang Patel
f5f352dda5 Eliminate redundant map.
llvm-svn: 135278
2011-07-15 16:38:42 +00:00
Evan Cheng
b46f3e24ba Reverting r135232. It's causing infinite looping in DbgScope::openInsnRange.
llvm-svn: 135254
2011-07-15 06:26:35 +00:00
Devang Patel
001c4f3ff0 Do not get confused by multiple empty lexical scopes inlined at one location.
llvm-svn: 135232
2011-07-15 00:30:39 +00:00
Devang Patel
4771159f9f Refactor.
llvm-svn: 135212
2011-07-14 23:17:49 +00:00
Devang Patel
1f9913fdb2 Eliminate redundant LLVMContext argument.
Improve DbgScope->dump() output.

llvm-svn: 135207
2011-07-14 22:30:56 +00:00
Devang Patel
d5234bbced Simplify.
llvm-svn: 135127
2011-07-14 01:52:45 +00:00
Devang Patel
07d61edc30 Simplify and delay extracting DebugLoc elements, scope and InlinedAt, as much as possible.
llvm-svn: 135124
2011-07-14 01:14:57 +00:00
Devang Patel
e07ebe32bf Simplify. Compile unit check inside hasValidLocation() did not add any value.
llvm-svn: 135118
2011-07-14 00:20:24 +00:00
Devang Patel
a9195bcff0 Fix typo in DEBUG message.
llvm-svn: 135111
2011-07-14 00:04:53 +00:00
Devang Patel
2cce0d103d Add DEBUG messages.
llvm-svn: 135110
2011-07-14 00:03:58 +00:00
Devang Patel
2442a89eb9 Refactor.
llvm-svn: 134703
2011-07-08 17:09:57 +00:00
Devang Patel
ed9fd45740 Make provision to have floating point constants in .debug_loc expressions.
llvm-svn: 134702
2011-07-08 16:49:43 +00:00
Devang Patel
53b050aec6 Add DEBUG message.
llvm-svn: 134643
2011-07-07 21:44:42 +00:00
Devang Patel
b7a328ed27 Add DEBUG messages.
llvm-svn: 134572
2011-07-07 00:14:27 +00:00
Devang Patel
92ca8fc927 Remove dead code.
llvm-svn: 134561
2011-07-06 23:26:18 +00:00
Devang Patel
f071d72c44 Handle debug info for i128 constants.
llvm-svn: 133821
2011-06-24 20:46:11 +00:00
Benjamin Kramer
440c3b7306 Use path API for path concatenation.
llvm-svn: 132668
2011-06-05 14:36:47 +00:00
Devang Patel
e7181b5fdb A DBG_VALUE that truncates a range does not start another dbg value range.
llvm-svn: 132433
2011-06-01 23:00:17 +00:00
Devang Patel
324f843107 Do not drop constant values when a variable's content is described using .debug_loc entries.
llvm-svn: 132427
2011-06-01 22:03:25 +00:00
Devang Patel
e9853f25ad Include global types, that are referenced through local variables, in debug_pubtypes list.
llvm-svn: 132371
2011-05-31 22:56:51 +00:00
Rafael Espindola
d23bfb8a7a Make size computation less brittle.
llvm-svn: 132222
2011-05-27 22:05:41 +00:00
Devang Patel
3c6aed2d98 Select DW_AT_const_value size based on variable size.
llvm-svn: 132193
2011-05-27 16:45:18 +00:00
Devang Patel
354fa0798f Fix debug info for blocks' variable.
llvm-svn: 131940
2011-05-24 00:22:25 +00:00
Devang Patel
faaa16ea2c Remove unnecessary comment.
llvm-svn: 131936
2011-05-23 23:16:14 +00:00
Devang Patel
34a6620748 Identify end of prologue (and beginning of function body) using DW_LNS_set_prologue_end line table opcode.
llvm-svn: 131194
2011-05-11 19:22:19 +00:00
Rafael Espindola
2fe0ee1ce2 Rename DwarfRequiresRelocationForStmtList to
DwarfRequiresRelocationForSectionOffset as this is not specific to StmtList.

llvm-svn: 131148
2011-05-10 20:35:05 +00:00
Devang Patel
589845d887 Do not ignore InlinedAt while walking up scope chain to find subprogram node.
llvm-svn: 131106
2011-05-09 22:14:49 +00:00
Devang Patel
17b532728b Move CompileUnit::getOrCreateNameSpace() and CompileUnit::addPubType() from DwarfDebug.cpp to DwarfCompileUnit.cpp
llvm-svn: 130991
2011-05-06 16:57:54 +00:00
Rafael Espindola
a716096677 Dead code elimination.
llvm-svn: 130984
2011-05-06 14:56:22 +00:00
Devang Patel
d6141e1db2 Remove little used statistical counter.
llvm-svn: 130955
2011-05-05 22:00:08 +00:00
Devang Patel
73bc172493 If debug info for inlined function is missing then handle it gracefully.
llvm-svn: 130933
2011-05-05 17:54:26 +00:00