Files
llvm/test/Transforms/Inline/debug-invoke.ll
T
Duncan P. N. Exon Smith 37ac8d3622 IR: Move MDLocation into place
This commit moves `MDLocation`, finishing off PR21433.  There's an
accompanying clang commit for frontend testcases.  I'll attach the
testcase upgrade script I used to PR21433 to help out-of-tree
frontends/backends.

This changes the schema for `DebugLoc` and `DILocation` from:

    !{i32 3, i32 7, !7, !8}

to:

    !MDLocation(line: 3, column: 7, scope: !7, inlinedAt: !8)

Note that empty fields (line/column: 0 and inlinedAt: null) don't get
printed by the assembly writer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226048 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-14 22:27:36 +00:00

38 lines
968 B
LLVM

; RUN: opt < %s -always-inline -S | FileCheck %s
; Test that the debug location is preserved when rewriting an inlined call as an invoke
; CHECK: invoke void @test()
; CHECK-NEXT: to label {{.*}} unwind label {{.*}}, !dbg [[INL_LOC:!.*]]
; CHECK: [[EMPTY:.*]] = !{}
; CHECK: [[INL_LOC]] = !MDLocation(line: 1, scope: [[EMPTY]], inlinedAt: [[INL_AT:.*]])
; CHECK: [[INL_AT]] = !MDLocation(line: 2, scope: [[EMPTY]])
declare void @test()
declare i32 @__gxx_personality_v0(...)
attributes #0 = { alwaysinline }
define void @inl() #0 {
call void @test(), !dbg !3
ret void
}
define void @caller() {
invoke void @inl()
to label %cont unwind label %lpad, !dbg !4
cont:
ret void
lpad:
landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
ret void
}
!llvm.module.flags = !{!1}
!1 = !{i32 2, !"Debug Info Version", i32 2}
!2 = !{}
!3 = !MDLocation(line: 1, scope: !2)
!4 = !MDLocation(line: 2, scope: !2)