Eric Christopher
7ed2efca6a
Use DW_AT_low_pc for a single entry point into a routine.
...
Fixes PR10105
llvm-svn: 153524
2012-03-27 18:35:54 +00:00
Eric Christopher
0925c62c74
Use the file in the inlined die rather than the compile unit for
...
backtrace locations.
Testcase forthcoming, but I wanted to get some testing here.
Should fix:
PR12323
PR12314
rdar://11091100
llvm-svn: 153471
2012-03-26 21:38:38 +00:00
Benjamin Kramer
71b197306e
DwarfDebug: Store the filename/dirname pair as a zero-separated string in a stringmap, instead of using a highly inefficient std::map of a pair of std::strings.
...
llvm-svn: 152541
2012-03-11 14:56:26 +00:00
Craig Topper
1d32658877
Use uint16_t to store register overlaps to reduce static data.
...
llvm-svn: 152001
2012-03-04 10:43:23 +00:00
Eric Christopher
1df94bfe8a
Grammar-o in function name.
...
llvm-svn: 151875
2012-03-02 02:11:47 +00:00
Eric Christopher
7772531567
If the linkage name doesn't exist we're supposed to emit a reference
...
to the string table for the function name, not the function name.
llvm-svn: 151873
2012-03-02 01:57:52 +00:00
Eric Christopher
7524fe4551
Revert "Reorder the sections being output to reduce the number of assembler"
...
The inline table needs to be constructed ahead of time so that it doesn't try to
create new strings while we're emitting everything.
This reverts commit a8ff9bccb399183cdd5f1c3cec2bda763664b4b0.
llvm-svn: 151864
2012-03-02 00:30:24 +00:00
Eric Christopher
66b0721014
Reorder the sections being output to reduce the number of assembler
...
fixups that are being used to determine section offsets. Reduces
the total number of fixups by 50% for a non-trivial testcase.
Part of rdar://10413936
llvm-svn: 151852
2012-03-01 22:50:31 +00:00
Michael J. Spencer
35145f830a
Minimal changes for LLVM to compile under VS11.
...
llvm-svn: 151849
2012-03-01 22:42:52 +00:00
Eric Christopher
3a2656b394
Add the source language into the compile unit.
...
llvm-svn: 151143
2012-02-22 08:46:13 +00:00
Craig Topper
ee4dab5f1f
Convert assert(0) to llvm_unreachable
...
llvm-svn: 149816
2012-02-05 08:31:47 +00:00
Eric Christopher
3e8ccc2000
Remove generation of DW_AT_sibling. Nothing as far as I can tell uses it.
...
Saves about 1.5% on debug info size.
rdar://10278198
llvm-svn: 148794
2012-01-24 09:43:28 +00:00
Eric Christopher
090fcc1a10
Use const vector references instead of a vector copy. Spotted by Devang.
...
llvm-svn: 147694
2012-01-06 23:03:34 +00:00
Eric Christopher
21bde87bf3
As part of the ongoing work in finalizing the accelerator tables, extend
...
the debug type accelerator tables to contain the tag and a flag
stating whether or not a compound type is a complete type.
rdar://10652330
llvm-svn: 147651
2012-01-06 04:35:23 +00:00
Eric Christopher
365d083585
Extraneous whitespace and 80-col.
...
llvm-svn: 146780
2011-12-16 23:42:31 +00:00
Eric Christopher
8dda5d0f06
Add inline subprogram names to the name lookup table since they may
...
not get there any other way.
llvm-svn: 145789
2011-12-04 06:02:38 +00:00
Nick Lewycky
50f02cb21b
Move global variables in TargetMachine into new TargetOptions class. As an API
...
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.
One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.
llvm-svn: 145714
2011-12-02 22:16:29 +00:00
Rafael Espindola
e7cc8bff82
The dwarf standard says that the only differences between a out-of-line
...
instance and a concrete inlined instance are the use of DW_TAG_subprogram
instead of DW_TAG_inlined_subroutine and the who owns the tree.
We were also omitting DW_AT_inline from the abstract roots. To fix this,
make sure we mark abstract instance roots with DW_AT_inline even when
we have only out-of-line instances referring to them with DW_AT_abstract_origin.
FileCheck is not a very good tool for tests like this, maybe we should add
a -verify mode to llvm-dwarfdump.
llvm-svn: 144441
2011-11-12 01:57:54 +00:00
Rafael Espindola
79278365d3
Check in getOrCreateSubprogramDIE if a declaration exists and if so output
...
it first.
This is a more general fix to pr11300.
llvm-svn: 144324
2011-11-10 22:34:29 +00:00
Eric Christopher
66b37db641
Make types and namespaces take multiple DIEs for the accelerator tables
...
as well.
llvm-svn: 144319
2011-11-10 21:47:55 +00:00
Eric Christopher
d9843b34e6
Rework adding function names to the dwarf accelerator tables, allow
...
multiple dies per function and support C++ basenames.
llvm-svn: 144304
2011-11-10 19:25:34 +00:00
Benjamin Kramer
966ed1b698
Add comments.
...
llvm-svn: 144194
2011-11-09 18:16:11 +00:00
Benjamin Kramer
148db36263
Take advantage of the zero byte in StringMap when emitting dwarf stringpool entries.
...
llvm-svn: 144184
2011-11-09 12:12:04 +00:00
Eric Christopher
5223a57533
Remove the pubnames section, no one consumes it.
...
llvm-svn: 144169
2011-11-09 05:24:07 +00:00
Eric Christopher
08a558eeef
Also add the linkage name to the name accelerator tables if it exists
...
and is different than the normal name.
llvm-svn: 144130
2011-11-08 21:56:23 +00:00
Eric Christopher
970771c0e8
Add the base ObjC method name to the names lookup table as well.
...
llvm-svn: 144105
2011-11-08 19:16:01 +00:00
Eric Christopher
5139dadd50
Add all completed and named types to the dwarf type accelerator tables.
...
llvm-svn: 144027
2011-11-07 22:11:16 +00:00
Eric Christopher
988ac00abd
Use StringRef::startswith to do some string comparisons.
...
llvm-svn: 143982
2011-11-07 18:53:23 +00:00
Eric Christopher
cc979f9ae6
Allow for the case where the name of the subprogram is "".
...
Fixes a self-host error.
llvm-svn: 143970
2011-11-07 18:10:17 +00:00
Eric Christopher
8c7505f258
Remove unnecessary addition to API. Replace with something much simpler.
...
llvm-svn: 143925
2011-11-07 09:38:42 +00:00
Eric Christopher
4996c70034
Add the support code to enable the dwarf accelerator tables. Upcoming patches
...
to fix the types section (all types, not just global types), and testcases.
The code to do the final emission is disabled by default.
llvm-svn: 143923
2011-11-07 09:24:32 +00:00
Eric Christopher
a7b6189071
Expose a way to get the beginning of the dwarf string section.
...
llvm-svn: 143920
2011-11-07 09:18:38 +00:00
Eric Christopher
6abc9c5aaa
Fix up comment.
...
llvm-svn: 143919
2011-11-07 09:18:35 +00:00
Rafael Espindola
6cf4e830ce
Emit declarations before definitions if they are available. This causes DW_AT_specification to
...
point back in the file in the included testcase. Fixes PR11300.
llvm-svn: 143726
2011-11-04 19:00:29 +00:00
Nick Lewycky
d1ee7f8cf1
Don't emit a directory entry for the value in DW_AT_comp_dir, that is always
...
implied by directory index zero.
llvm-svn: 143570
2011-11-02 20:55:33 +00:00
Nick Lewycky
d59c0cac6c
Teach our Dwarf emission to use the string pool.
...
llvm-svn: 143097
2011-10-27 06:44:11 +00:00
Nick Lewycky
654f5ce812
Reflow lines, fix comments for doxygen style, fix whitespace. No functionality
...
change.
llvm-svn: 143074
2011-10-26 22:55:33 +00:00
Nick Lewycky
479a8fe75e
Minor style cleanup, no functionality change.
...
llvm-svn: 142307
2011-10-17 23:27:36 +00:00
Nick Lewycky
40f8f2ff24
Add support for a new extension to the .file directive:
...
.file filenumber "directory" "filename"
This removes one join+split of the directory+filename in MC internals. Because
bitcode files have independent fields for directory and filenames in debug info,
this patch may change the .o files written by existing .bc files.
llvm-svn: 142300
2011-10-17 23:05:28 +00:00
Eric Christopher
6647b83087
Add a new wrapper node for a DILexicalBlock that encapsulates it and a
...
file. Since it should only be used when necessary propagate it through
the backend code generation and tweak testcases accordingly.
This helps with code like in clang's test/CodeGen/debug-info-line.c where
we have multiple #line directives within a single lexical block and want
to generate only a single block that contains each file change.
Part of rdar://10246360
llvm-svn: 141729
2011-10-11 22:59:11 +00:00
Eric Christopher
f84354bfb1
Typo.
...
llvm-svn: 141004
2011-10-03 15:49:16 +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
0ecbcbd12c
Eliminate unnecessary forwarding function.
...
llvm-svn: 138006
2011-08-18 23:17:55 +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
927840458e
Remove unnecessary version check.
...
llvm-svn: 137728
2011-08-16 17:41:41 +00:00
Devang Patel
07bb9eea33
Refactor.
...
llvm-svn: 137689
2011-08-15 23:47:24 +00:00
Devang Patel
1f4f98d664
Continue to hoist uses of getCompileUnit() up. The goal is to get rid of uses of getCompileUnit().
...
llvm-svn: 137683
2011-08-15 23:36:40 +00:00
Devang Patel
d2dfc5ec02
This is somewhat déjà-vu, but avoid using getCompileUnit() as much as possible.
...
llvm-svn: 137668
2011-08-15 22:24:32 +00:00
Devang Patel
3acc70e536
Refactor. Variables are part of compile unit so let CompileUnit create new variable.
...
llvm-svn: 137663
2011-08-15 22:04:40 +00:00
Devang Patel
d899444347
There is no need to maintain a set to keep track of variables that use location expressions. In such cases, AT_location attribute's value will be a label.
...
llvm-svn: 137659
2011-08-15 21:43:21 +00:00
Devang Patel
900d97719b
Fix warning.
...
llvm-svn: 137658
2011-08-15 21:35:16 +00:00
Devang Patel
3e4a965519
Simplify. Let DbgVariable keep track of variable's DBG_VALUE machine instruction.
...
llvm-svn: 137656
2011-08-15 21:24:36 +00:00
Devang Patel
99819b527d
Simplify mapping to variable from its abstract variable info.
...
When a variable is inlined multiple places, abstract variable keeps name, location, type etc.. info and all other concreate instances of the variable directly refers to abstract variable.
llvm-svn: 137637
2011-08-15 19:01:20 +00:00
Devang Patel
d7d80aadd1
Refactor.
...
llvm-svn: 137632
2011-08-15 18:40:16 +00:00
Devang Patel
6e4d2c9fb7
Refactor.
...
llvm-svn: 137631
2011-08-15 18:35:42 +00:00
Devang Patel
dfd6ec3ce1
Refactor. Global variables are part of compile unit so let CompileUnit create new global variable.
...
llvm-svn: 137621
2011-08-15 17:57:41 +00:00
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
Rafael Espindola
a75589171a
Producing a DW_FORM_addr for DW_AT_stmt_list is probably correct, but
...
it is both inefficient and unexpected by dwarfdump. Change to
a DW_FORM_data4.
While in here, change the predicate name to reflect that the position
is not really absolute (it is an offset), just that the linker needs a
relocation.
llvm-svn: 130846
2011-05-04 17:44:06 +00:00
Devang Patel
c981f6299e
Tighten up check for empty (i.e. no meaningful debug info) module. This fixes dwarf-die2.c test case from gcc test suite.
...
llvm-svn: 130842
2011-05-04 16:34:02 +00:00
Devang Patel
543596d57b
Even if the subprogram is going to use AT_specification, emit DW_AT_MIPS_linkage_name. This helps gdb and fixes var-path-expr.exp regression reported by gdb testsuite.
...
llvm-svn: 130794
2011-05-03 21:50:34 +00:00
Devang Patel
e02e58528a
If the front end has emitted llvm.dbg.cu and other debug info anchors (clang does it now) then use them directly. This saves one scan of entire module, to collect debug info, which in turns saves few machine cycles at compile time.
...
llvm-svn: 130759
2011-05-03 16:45:22 +00:00
Devang Patel
420ab5f180
Emit debug info for global variables first.
...
This works around a limitation in gdb which is reported by following inherit.exp test failures from gdb testsuite.
gdb.cp/inherit.exp: print g_vB.vB::vb
gdb.cp/inherit.exp: print g_vB.vB::vx
gdb.cp/inherit.exp: print g_vC.vC::vc
gdb.cp/inherit.exp: print g_vC.vC::vx
gdb.cp/inherit.exp: print g_vD.vB::vb
...
llvm-svn: 130702
2011-05-02 18:19:17 +00:00
Devang Patel
3e021533cd
Teach dwarf writer to handle complex address expression for .debug_loc entries.
...
This fixes clang generated blocks' variables' debug info.
Radar 9279956.
llvm-svn: 130373
2011-04-28 02:22:40 +00:00
Devang Patel
77dc541b00
Simplify handling of variables with complex address (i.e. blocks variables)
...
llvm-svn: 130339
2011-04-27 22:45:24 +00:00
Devang Patel
2606f4d6d2
Rename a local variable.
...
llvm-svn: 130171
2011-04-25 23:05:21 +00:00
Devang Patel
8ce24133fd
Rename a method to match what it really does.
...
s/addVariableAddress/addFrameVariableAddress/g
llvm-svn: 130170
2011-04-25 23:02:17 +00:00
Devang Patel
2688e4aba6
Do not drop a variable's complex address if it is not based on frame base.
...
Observed this while reading code, so I do not have a test case handy here.
llvm-svn: 130167
2011-04-25 22:52:55 +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
Devang Patel
ad45d911bb
Do not leak argument's DbgVariables.
...
llvm-svn: 130004
2011-04-22 18:09:57 +00:00
Devang Patel
2266aa84a1
Refactor.
...
llvm-svn: 129938
2011-04-21 21:07:35 +00:00
Devang Patel
28f2719d83
Add comment in output stream.
...
llvm-svn: 129921
2011-04-21 17:50:24 +00:00
Devang Patel
17740e70d5
Reduce clutter in asm output. Do not emit source location as comment for each instruction.
...
llvm-svn: 129715
2011-04-18 20:26:49 +00:00
Chris Lattner
0ab5e2cded
Fix a ton of comment typos found by codespell. Patch by
...
Luis Felipe Strano Moraes!
llvm-svn: 129558
2011-04-15 05:18:47 +00:00
Devang Patel
e141234940
Remove extra bytes that were added for gdb. We do not have good poiner to understand actual reason behind this fixme. Spot checking suggest that newer gdb does not need this.
...
llvm-svn: 129461
2011-04-13 19:41:17 +00:00
Devang Patel
28dce70364
Simplify. There is no need to use static variable.
...
llvm-svn: 129406
2011-04-12 23:10:47 +00:00
Devang Patel
f20c4f715f
This mechanical patch moves type handling into CompileUnit from DwarfDebug. In case of multiple compile unit in one object file, each compile unit is responsible for its own set of type entries anyway. This refactoring makes this obvious.
...
llvm-svn: 129402
2011-04-12 22:53:02 +00:00
Devang Patel
5eb4319dba
Refactor CompileUnit into a separate header.
...
llvm-svn: 129367
2011-04-12 17:40:32 +00:00
Devang Patel
778947c203
Simplify array bound checks and clarify comments. One element array can have same non-zero number as lower bound as well as upper bound.
...
llvm-svn: 129170
2011-04-08 23:39:38 +00:00
Devang Patel
e39647951b
Do not emit DW_AT_upper_bound and DW_AT_lower_bound for unbouded array.
...
If lower bound is more then upper bound then consider it is an unbounded array.
An array is unbounded if non-zero lower bound is same as upper bound.
If lower bound and upper bound are zero than array has one element.
llvm-svn: 129156
2011-04-08 21:55:10 +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
d4e20eacf0
Refactor.
...
llvm-svn: 128929
2011-04-05 21:08:24 +00:00
Devang Patel
651d06e036
Do not emit empty name.
...
llvm-svn: 128914
2011-04-05 20:14:13 +00:00
Jakob Stoklund Olesen
9a624fa993
Collect and coalesce DBG_VALUE instructions before emitting the function.
...
Correctly terminate the range of register DBG_VALUEs when the register is
clobbered or when the basic block ends.
The code is now ready to deal with variables that are sometimes in a register
and sometimes on the stack. We just need to teach emitDebugLoc to say 'stack
slot'.
llvm-svn: 128327
2011-03-26 02:19:36 +00:00
Jakob Stoklund Olesen
1886a4c823
Emit less labels for debug info and stop emitting .loc directives for DBG_VALUEs.
...
The .dot directives don't need labels, that is a leftover from when we created
line number info manually.
Instructions following a DBG_VALUE can share its label since the DBG_VALUE
doesn't produce any code.
llvm-svn: 128284
2011-03-25 17:20:59 +00:00
Devang Patel
e01b75cb89
Keep track of directory namd and fIx regression caused by Rafael's patch r119613.
...
A better approach would be to move source id handling inside MC.
llvm-svn: 128233
2011-03-24 20:30:50 +00:00
Jakob Stoklund Olesen
a87d80cdca
Don't coalesce identical DBG_VALUE instructions prematurely.
...
Each of these instructions may have a RegsClobberInsn entry that can't be
ignored. Consecutive ranges are coalesced later when DwarfDebug::emitDebugLoc
merges entries.
llvm-svn: 128155
2011-03-23 18:37:30 +00:00
Jakob Stoklund Olesen
ec0ac3ca40
Reapply r128045 and r128051 with fixes.
...
This will extend the ranges of debug info variables in registers until they are
clobbered.
Fix 1: Don't mistake DBG_VALUE instructions referring to incoming arguments on
the stack with DBG_VALUE instructions referring to variables in the frame
pointer. This fixes the gdb test-suite failure.
Fix 2: Don't trace through copies to physical registers setting up call
arguments. These registers are call clobbered, and the source register is more
likely to be a callee-saved register that can be extended through the call
instruction.
llvm-svn: 128114
2011-03-22 22:33:08 +00:00
Andrew Trick
b0f98bb5e9
Revert r128045 and r128051, debug info enhancements.
...
Temporarily reverting these to see if we can get llvm-objdump to link. Hopefully this is not the problem.
llvm-svn: 128097
2011-03-22 19:18:42 +00:00
Jakob Stoklund Olesen
c6f4af028d
Clear map after use.
...
This is likely to fix the segfault in llvm-gcc-x86_64-darwin10-cross-mingw32.
llvm-svn: 128051
2011-03-22 01:03:24 +00:00
Jakob Stoklund Olesen
9c057ee440
Dont emit 'DBG_VALUE %noreg, ...' to terminate user variable ranges.
...
These ranges get completely jumbled by the post-ra scheduler, and it is not
really reasonable to expect it to make sense of them.
Instead, teach DwarfDebug to notice when user variables in registers are
clobbered, and terminate the ranges there.
llvm-svn: 128045
2011-03-22 00:21:41 +00:00
Daniel Dunbar
fd95b016fb
Revert r127757, "Patch to a fix dwarf relocation problem on ARM. One-line fix
...
plus the test where it used to break.", which broke Clang self-host of a
Debug+Asserts compiler, on OS X.
llvm-svn: 127763
2011-03-16 22:16:39 +00:00
Renato Golin
a3aeafeb35
Patch to a fix dwarf relocation problem on ARM. One-line fix plus the test where it used to break.
...
llvm-svn: 127757
2011-03-16 21:05:52 +00:00
Devang Patel
63b3e76370
Fix typo.
...
llvm-svn: 126962
2011-03-03 21:49:41 +00:00
Devang Patel
34a7ab400e
Fix thinko in previous check-in.
...
Add comment.
llvm-svn: 126959
2011-03-03 20:08:10 +00:00
Devang Patel
4ab660b077
llvm::Function argument count is not a good indicator of how many arugments does the function have at source level. If we need more space, just resize vector conservatively. This vector is only used once per function.
...
llvm-svn: 126957
2011-03-03 20:02:02 +00:00
Devang Patel
6c622ef1bc
If argument numbering is encoded in metadata then emit arguments' debug info in that order.
...
llvm-svn: 126794
2011-03-01 22:58:55 +00:00
Cameron Zwarich
fcf51fd298
Roll out r126425 and r126450 to see if it fixes the failures on the buildbots.
...
llvm-svn: 126488
2011-02-25 16:30:32 +00:00
Devang Patel
b037383a35
Enable DebugInfo support for COFF object files.
...
Patch by Nathan Jeffords!
llvm-svn: 126425
2011-02-24 21:04:00 +00:00
Devang Patel
a5d93247c2
Do not use DIFactory.
...
llvm-svn: 126397
2011-02-24 18:49:30 +00:00
Devang Patel
7b0f796c55
Use DW_FORM_data2 for DW_AT_language and let users use DW_LANG_lo_user=0x8000 to DW_LANG_hi_user=0xffff range.
...
llvm-svn: 126339
2011-02-23 22:37:04 +00:00
Devang Patel
5f1b4cdda1
Do not emit empty DW_TAG_lexical_block DIEs. In one test case, size of debug info reduced by almost 7%.
...
llvm-svn: 126009
2011-02-19 01:31:27 +00:00