mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-04 00:54:53 +00:00
a65da70a54
This reapplies r225379. ChangeLog: - The assertion that this commit previously ran into about the inability to handle indirect variables has since been removed and the backend can handle this now. - Testcases were upgrade to the new MDLocation format. - Instead of keeping a DebugDeclares map, we now use llvm::FindAllocaDbgDeclare(). Original commit message follows. Debug info: Teach SROA how to update debug info for fragmented variables. This allows us to generate debug info for extremely advanced code such as typedef struct { long int a; int b;} S; int foo(S s) { return s.b; } which at -O1 on x86_64 is codegen'd into define i32 @foo(i64 %s.coerce0, i32 %s.coerce1) #0 { ret i32 %s.coerce1, !dbg !24 } with this patch we emit the following debug info for this TAG_formal_parameter [3] AT_location( 0x00000000 0x0000000000000000 - 0x0000000000000006: rdi, piece 0x00000008, rsi, piece 0x00000004 0x0000000000000006 - 0x0000000000000008: rdi, piece 0x00000008, rax, piece 0x00000004 ) AT_name( "s" ) AT_decl_file( "/Volumes/Data/llvm/_build.ninja.release/test.c" ) Thanks to chandlerc, dblaikie, and echristo for their feedback on all previous iterations of this patch! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226598 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
AArch64 | ||
ARM | ||
COFF | ||
Inputs | ||
Mips | ||
PowerPC | ||
Sparc | ||
SystemZ | ||
X86 | ||
2009-10-16-Phi.ll | ||
2009-11-03-InsertExtractValue.ll | ||
2009-11-05-DeadGlobalVariable.ll | ||
2009-11-06-NamelessGlobalVariable.ll | ||
2009-11-10-CurrentFn.ll | ||
2010-01-05-DbgScope.ll | ||
2010-03-12-llc-crash.ll | ||
2010-03-19-DbgDeclare.ll | ||
2010-03-24-MemberFn.ll | ||
2010-03-30-InvalidDbgInfoCrash.ll | ||
2010-04-06-NestedFnDbgInfo.ll | ||
2010-04-19-FramePtr.ll | ||
2010-05-03-DisableFramePtr.ll | ||
2010-05-03-OriginDIE.ll | ||
2010-05-10-MultipleCU.ll | ||
2010-06-29-InlinedFnLocalVar.ll | ||
2010-07-19-Crash.ll | ||
2010-10-01-crash.ll | ||
arm-relocs.test | ||
array.ll | ||
block-asan.ll | ||
bug_null_debuginfo.ll | ||
constant-pointers.ll | ||
cross-cu-inlining.ll | ||
cross-cu-linkonce-distinct.ll | ||
cross-cu-linkonce.ll | ||
cu-range-hole.ll | ||
cu-ranges.ll | ||
dead-argument-order.ll | ||
debug-info-always-inline.ll | ||
debug-info-qualifiers.ll | ||
debuginfofinder-multiple-cu.ll | ||
debuglineinfo.test | ||
duplicate_inline.ll | ||
dwarf-public-names.ll | ||
dwarfdump-accel.test | ||
dwarfdump-debug-frame-simple.test | ||
dwarfdump-debug-loc-simple.test | ||
dwarfdump-dump-flags.test | ||
dwarfdump-line-dwo.test | ||
dwarfdump-objc.test | ||
dwarfdump-pubnames.test | ||
dwarfdump-ranges.test | ||
dwarfdump-type-units.test | ||
dwarfdump-zlib.test | ||
empty.ll | ||
enum-types.ll | ||
enum.ll | ||
global.ll | ||
gmlt.test | ||
incorrect-variable-debugloc1.ll | ||
incorrect-variable-debugloc.ll | ||
inheritance.ll | ||
inline-debug-info-multiret.ll | ||
inline-debug-info.ll | ||
inline-no-debug-info.ll | ||
inline-scopes.ll | ||
inlined-arguments.ll | ||
inlined-vars.ll | ||
llvm-symbolizer-zlib.test | ||
llvm-symbolizer.test | ||
lto-comp-dir.ll | ||
member-order.ll | ||
member-pointers.ll | ||
member-pointers.o | ||
missing-abstract-variable.ll | ||
missing-abstract-variable.o | ||
multiline.ll | ||
namespace_function_definition.ll | ||
namespace_inline_function_definition.ll | ||
namespace.ll | ||
nodebug.ll | ||
PR20038.ll | ||
restrict.ll | ||
sugared-constants.ll | ||
template-recursive-void.ll | ||
tu-composite.ll | ||
tu-member-pointer.ll | ||
two-cus-from-same-file.ll | ||
typedef.ll | ||
unconditional-branch.ll | ||
varargs.ll | ||
version.ll |