1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -always-inline -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Test that the debug location is preserved when rewriting an inlined call as an invoke 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @test() 6*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: to label {{.*}} unwind label {{.*}}, !dbg [[INL_LOC:!.*]] 7*9880d681SAndroid Build Coastguard Worker; CHECK: [[SP:.*]] = distinct !DISubprogram( 8*9880d681SAndroid Build Coastguard Worker; CHECK: [[INL_LOC]] = !DILocation(line: 1, scope: [[SP]], inlinedAt: [[INL_AT:.*]]) 9*9880d681SAndroid Build Coastguard Worker; CHECK: [[INL_AT]] = distinct !DILocation(line: 2, scope: [[SP]]) 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdeclare void @test() 12*9880d681SAndroid Build Coastguard Workerdeclare i32 @__gxx_personality_v0(...) 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerattributes #0 = { alwaysinline } 15*9880d681SAndroid Build Coastguard Workerdefine void @inl() #0 { 16*9880d681SAndroid Build Coastguard Worker call void @test(), !dbg !3 17*9880d681SAndroid Build Coastguard Worker ret void 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine void @caller() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { 21*9880d681SAndroid Build Coastguard Worker invoke void @inl() 22*9880d681SAndroid Build Coastguard Worker to label %cont unwind label %lpad, !dbg !4 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workercont: 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerlpad: 28*9880d681SAndroid Build Coastguard Worker landingpad { i8*, i32 } 29*9880d681SAndroid Build Coastguard Worker cleanup 30*9880d681SAndroid Build Coastguard Worker ret void 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!1} 34*9880d681SAndroid Build Coastguard Worker!llvm.dbg.cu = !{!5} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker!1 = !{i32 2, !"Debug Info Version", i32 3} 37*9880d681SAndroid Build Coastguard Worker!2 = distinct !DISubprogram(unit: !5) 38*9880d681SAndroid Build Coastguard Worker!3 = !DILocation(line: 1, scope: !2) 39*9880d681SAndroid Build Coastguard Worker!4 = !DILocation(line: 2, scope: !2) 40*9880d681SAndroid Build Coastguard Worker!5 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", 41*9880d681SAndroid Build Coastguard Worker file: !6, 42*9880d681SAndroid Build Coastguard Worker isOptimized: true, flags: "-O2", 43*9880d681SAndroid Build Coastguard Worker splitDebugFilename: "abc.debug", emissionKind: 2) 44*9880d681SAndroid Build Coastguard Worker!6 = !DIFile(filename: "path/davidino", directory: "/path/to/dir") 45