1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/test/DebugInfo/X86
Alexey Samsonov e52f04f5e6 Generate better location ranges for some register-described variables.
Don't terminate location ranges for register-described variables
at the end of machine basic block if this register is never modified
in the function body, except for the prologue and epilogue. Prologue
location is guessed by FrameSetup flags on MachineInstructions, while
epilogue location is deduced from debug locations of instructions
in the basic blocks ending with return instructions.

This patch is mostly targeted to fix non-trivial debug locations for
variables addressed via stack and frame pointers.

It is not really a generic fix. We can still produce poor debug info
for register-described variables if this register *is* modified somewhere
in the function, but in unrelated places. This might be the case for the debug
info in optimized binaries (e.g. for local variables in inlined functions).
LiveDebugVariables pass in CodeGen attempts to fix this problem by adjusting
DBG_VALUE instructions, but this pass is tied to greedy register allocator,
which is used in optimized builds only. Proper fix would likely involve
generalizing LiveDebugVariables to all register allocators. See more discussion
in http://reviews.llvm.org/D3933 review thread.

I'm proceeding with this patch to fix immediate severe problems and
important cases, e.g. fix completely broken debug info with AddressSanitizer
and fix PR19307 (missing debug info for by-value std::string arguments).

llvm-svn: 210492
2014-06-09 21:53:47 +00:00
..
2010-04-13-PubType.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
2010-08-10-DbgConstant.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
2011-09-26-GlobalVarContext.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
2011-12-16-BadStructRef.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
aligned_stack_var.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
arange.ll Disable emission of aranges by default and add a command line 2014-02-14 01:26:55 +00:00
arguments.ll DebugInfo: Generalize some tests to handle variations in attribute ordering. 2014-05-23 21:11:46 +00:00
array2.ll Unbreak the gdb buildbot by not lowering dbg.declare intrinsics for arrays. 2014-04-25 23:00:25 +00:00
array.ll This reapplies r207235 with an additional bugfixes caught by the msan 2014-04-25 20:49:25 +00:00
block-capture.ll DebugInfo: Generalize a test case to not depend on abbreviation numbering. 2014-05-23 21:07:01 +00:00
byvalstruct.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
c-type-units.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
coff_debug_info_type.ll MC: honour IMAGE_SCN_CNT_INITIALIZED_DATA 2014-04-23 21:29:34 +00:00
coff_relative_names.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
concrete_out_of_line.ll DebugInfo: Create abstract function definitions even when concrete definitions preceed inline definitions. 2014-05-27 18:37:55 +00:00
cu-ranges-odr.ll If we're only emitting line tables for a particular CU then don't add 2014-02-27 01:25:00 +00:00
cu-ranges.ll Move the function and data section flags into the options struct and 2014-05-20 21:25:34 +00:00
data_member_location.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
dbg_value_direct.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
dbg-at-specficiation.ll DebugInfo: Assert that a CU's subprogram list contains only subprograms. 2014-05-14 21:52:37 +00:00
dbg-byval-parameter.ll Reland r200340 - 'Add line table debug info to COFF files when using a win32 triple' 2014-01-30 01:39:17 +00:00
dbg-const-int.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
dbg-const.ll Debug info: Store the DIVariable in DebugLocEntry also for constants, 2014-04-11 17:49:47 +00:00
dbg-declare-arg.ll DebugInfo: Assume the CU's Subprogram list only contains definitions. 2014-05-16 18:26:53 +00:00
dbg-declare.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
dbg-file-name.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
dbg-i128-const.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
dbg-merge-loc-entry.ll Add a DIELoc class to cover the DW_FORM_exprloc set of expressions 2014-02-16 08:46:55 +00:00
dbg-prolog-end.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
dbg-subrange.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
dbg-value-const-byref.ll This reapplies r207235 with an additional bugfixes caught by the msan 2014-04-25 20:49:25 +00:00
dbg-value-dag-combine.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
dbg-value-inlined-parameter.ll Fix typos 2014-05-31 21:26:28 +00:00
dbg-value-isel.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
dbg-value-location.ll DebugInfo: Assume all subprogram DIEs have been created before any abstract subprograms are constructed. 2014-05-19 23:16:19 +00:00
dbg-value-range.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
dbg-value-terminator.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
debug_frame.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
debug-dead-local-var.ll Add a comment here. 2014-05-21 00:02:50 +00:00
debug-info-block-captured-self.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
debug-info-blocks.ll DebugInfo: Lazily construct subprogram definition DIEs. 2014-05-27 18:37:48 +00:00
debug-info-static-member.ll DwarfUnit: Share common constant value emission between APInts of small (<= 64 bit) and MCOperand immediates. 2014-05-11 15:47:39 +00:00
debug-loc-asan.ll Generate better location ranges for some register-described variables. 2014-06-09 21:53:47 +00:00
debug-loc-offset.ll Generate better location ranges for some register-described variables. 2014-06-09 21:53:47 +00:00
debug-ranges-offset.ll Make sure that rangelists are also relative to the compile unit 2014-04-25 22:23:54 +00:00
decl-derived-member.ll decl-derived-member.ll: Try to unbreak. Don't add -mtriple to %llc_dwarf. 2014-03-12 23:08:19 +00:00
discriminator.ll Use a fixed subtarget for test so atom scheduling can't change the addresses this test relies on. 2014-03-15 23:01:29 +00:00
DW_AT_byte_size.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
DW_AT_linkage_name.ll DebugInfo: Generalize some tests to handle variations in attribute ordering. 2014-05-23 21:11:46 +00:00
DW_AT_location-reference.ll Fix llvm-objdump crash. 2014-04-03 23:20:02 +00:00
DW_AT_object_pointer.ll Revert "Emit DW_AT_object_pointer once, on the declaration, for each function." 2014-04-30 22:58:19 +00:00
DW_AT_specification.ll DebugInfo: Simplify subprogram declaration creation/references and accidentally refix PR11300. 2014-05-21 18:04:33 +00:00
DW_AT_stmt_list_sec_offset.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
DW_TAG_friend.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
dwarf-aranges-no-dwarf-labels.ll Disable emission of aranges by default and add a command line 2014-02-14 01:26:55 +00:00
dwarf-aranges.ll DebugInfo: Improve test to not depend on the specific naming of temporary symbols 2014-03-07 00:23:38 +00:00
dwarf-public-names.ll DebugInfo: Use the scope of the function declaration, if any, to name a function in DWARF pubnames 2014-06-06 22:29:05 +00:00
dwarf-pubnames-split.ll DebugInfo: Refactor emitDebugPubNames/Types into a common implementation 2014-03-11 23:18:15 +00:00
earlydup-crash.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
elf-names.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
empty-and-one-elem-array.ll DebugInfo: Lazily attach definition attributes to definitions. 2014-05-27 18:37:43 +00:00
empty-array.ll DebugInfo: Use a 64 bit type for the subrange 2014-04-03 06:28:20 +00:00
ending-run.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
enum-class.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
enum-fwd-decl.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
fission-cu.ll DebugInfo: Add GNU_addr_base and GNU_ranges_base only when there are addresses or ranges 2014-03-25 05:34:24 +00:00
fission-hash.ll Turn on hashing by default for split dwarf compile units. 2014-03-12 17:14:43 +00:00
fission-ranges.ll Debug info: Store the DIVariable in DebugLocEntry also for constants, 2014-04-11 17:49:47 +00:00
formal_parameter.ll This reapplies r207235 with an additional bugfixes caught by the msan 2014-04-25 20:49:25 +00:00
generate-odr-hash.ll DebugInfo: pubnames: include file-local (static or anonymous namespace) variables and anonymous namespaces themselves. 2014-06-06 22:16:56 +00:00
gnu-public-names-empty.ll DebugInfo: Tag units as having been indexed in GNU pubnames by using a DW_AT_GNU_pubnames of DW_FORM_flag(_present) rather than sec_offsets to the pubnames/types sections 2014-03-06 05:47:39 +00:00
gnu-public-names.ll Fix typos 2014-06-07 21:23:09 +00:00
inline-member-function.ll DebugInfo: Lazily construct subprogram definition DIEs. 2014-05-27 18:37:48 +00:00
inline-seldag-test.ll DebugInfo: Lazily construct subprogram definition DIEs. 2014-05-27 18:37:48 +00:00
instcombine-instrinsics.ll This reapplies r207235 with an additional bugfixes caught by the msan 2014-04-25 20:49:25 +00:00
lexical_block.ll DebugInfo: Use DW_FORM_data4 for DW_AT_high_pc in DW_TAG_lexical_blocks 2014-03-08 00:58:20 +00:00
line-info.ll Support DWARF discriminators in object streamer. 2014-02-14 19:27:53 +00:00
linkage-name.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
lit.local.cfg [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
low-pc-cu.ll Reapply DW_AT_low/high_pc patch: 2014-03-20 19:16:16 +00:00
main-file-name.s
misched-dbg-value.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
multiple-aranges.ll Disable emission of aranges by default and add a command line 2014-02-14 01:26:55 +00:00
multiple-at-const-val.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
nondefault-subrange-array.ll DebugInfo: Use a 64 bit type for the subrange 2014-04-03 06:28:20 +00:00
objc-fwd-decl.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
objc-property-void.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
op_deref.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
parameters.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
pointer-type-size.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
pr11300.ll DebugInfo: Generalize some tests to handle variations in attribute ordering. 2014-05-23 21:11:46 +00:00
pr12831.ll DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals. 2014-05-14 21:52:46 +00:00
pr13303.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
pr19307.ll Generate better location ranges for some register-described variables. 2014-06-09 21:53:47 +00:00
prologue-stack.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
ref_addr_relocation.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
reference-argument.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
rvalue-ref.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
sret.ll DebugInfo: Lazily construct subprogram definition DIEs. 2014-05-27 18:37:48 +00:00
stmt-list-multiple-compile-units.ll DebugInfo: Avoid creating unnecessary/empty line tables and remove the special case of '0' in DwarfCompileUnit::initStmtList by just always using a label difference 2014-04-01 08:07:52 +00:00
stmt-list.ll DebugInfo: Avoid creating unnecessary/empty line tables and remove the special case of '0' in DwarfCompileUnit::initStmtList by just always using a label difference 2014-04-01 08:07:52 +00:00
stringpool.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
struct-loc.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
subrange-type.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
subreg.ll Debug info: Remove ARMAsmPrinter::EmitDwarfRegOp(). AsmPrinter can now 2014-02-27 17:56:08 +00:00
subregisters.ll Debug info: Bugfix for r201190: DW_OP_piece takes bytes, not bits. 2014-02-12 19:34:44 +00:00
template.ll Add a DIELoc class to cover the DW_FORM_exprloc set of expressions 2014-02-16 08:46:55 +00:00
tls.ll DebugInfo: Deduplicate entries in the fission address table 2014-02-15 19:34:03 +00:00
type_units_with_addresses.ll Include C++ source for debug info test case committed in r207323 2014-04-26 18:25:07 +00:00
union-template.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
vector.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
vla.ll DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00