From cb4e3e51a99032c84dcdb7f2cd1f0e8c781efa00 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Thu, 6 May 2010 17:49:17 +0000 Subject: Add a testcase for r103135, explicitly representing unknown locations in debug line info. llvm-svn: 103189 --- llvm/test/CodeGen/X86/unknown-location.ll | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 llvm/test/CodeGen/X86/unknown-location.ll (limited to 'llvm/test/CodeGen/X86/unknown-location.ll') diff --git a/llvm/test/CodeGen/X86/unknown-location.ll b/llvm/test/CodeGen/X86/unknown-location.ll new file mode 100644 index 00000000000..04b41c435e3 --- /dev/null +++ b/llvm/test/CodeGen/X86/unknown-location.ll @@ -0,0 +1,36 @@ +; RUN: llc < %s -asm-verbose=false -march=x86-64 | FileCheck %s + +; The divide instruction does not have a debug location. CodeGen should +; represent this in the debug information. This is checked by a check +; for a label between the code for the add and the code for the divide, +; which indicates that the add's location doesn't spill over unto the +; divide. + +; CHECK: Ltmp +; CHECK: movl %edx, %r8d +; CHECK-NEXT: leal (%rdi,%rsi), %eax +; CHECK-NEXT: Ltmp +; CHECK-NEXT: cltd +; CHECK-NEXT: idivl %r8d +; CHECK-NEXT: Ltmp +; CHECK-NEXT: addl %ecx, %eax +; CHECK-NEXT: ret +; CHECK-NEXT: Ltmp + +define i32 @foo(i32 %w, i32 %x, i32 %y, i32 %z) nounwind { +entry: + %a = add i32 %w, %x, !dbg !8 + %b = sdiv i32 %a, %y + %c = add i32 %b, %z, !dbg !8 + ret i32 %c, !dbg !8 +} + +!0 = metadata !{i32 524545, metadata !1, metadata !"x", metadata !2, i32 1, metadata !6} ; [ DW_TAG_arg_variable ] +!1 = metadata !{i32 524334, i32 0, metadata !2, metadata !"foo", metadata !"foo", metadata !"foo", metadata !2, i32 1, metadata !4, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false} ; [ DW_TAG_subprogram ] +!2 = metadata !{i32 524329, metadata !"test.c", metadata !"/dir", metadata !3} ; [ DW_TAG_file_type ] +!3 = metadata !{i32 524305, i32 0, i32 12, metadata !"test.c", metadata !".", metadata !"producer", i1 true, i1 false, metadata !"", i32 0} ; [ DW_TAG_compile_unit ] +!4 = metadata !{i32 524309, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !5, i32 0, null} ; [ DW_TAG_subroutine_type ] +!5 = metadata !{metadata !6} +!6 = metadata !{i32 524324, metadata !2, metadata !"int", metadata !2, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] +!7 = metadata !{i32 524299, metadata !1, i32 1, i32 30} ; [ DW_TAG_lexical_block ] +!8 = metadata !{i32 4, i32 3, metadata !7, null} -- cgit v1.2.3