Index: lib/CodeGen/AsmPrinter/AsmPrinter.cpp =================================================================== --- lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -2785,7 +2785,7 @@ MCSection *InstMap = nullptr; MCSection *FnSledIndex = nullptr; if (MF->getSubtarget().getTargetTriple().isOSBinFormatELF()) { - auto Associated = dyn_cast(PrevSection->getBeginSymbol()); + auto Associated = dyn_cast(CurrentFnSym); assert(Associated != nullptr); auto Flags = ELF::SHF_WRITE | ELF::SHF_ALLOC | ELF::SHF_LINK_ORDER; std::string GroupName; Index: test/DebugInfo/X86/xray-split-dwarf-interaction.ll =================================================================== --- /dev/null +++ test/DebugInfo/X86/xray-split-dwarf-interaction.ll @@ -0,0 +1,76 @@ +; RUN: %llc_dwarf -split-dwarf-file=input.dwo -O3 -function-sections -data-sections \ +; RUN: -relocation-model=pic -filetype=obj -generate-type-units -debug-compile -o %t %s +; RUN: llvm-readelf -sections %t | FileCheck %s +; Created from: +; input.cc: +; +; class a { +; int b(); +; }; +; int a::b() { +; for (;;) +; ; +; } +; +; ModuleID = 'input.cc' +source_filename = "input.cc" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux" + +%class.a = type { i8 } + +; Function Attrs: nounwind readnone uwtable +define i32 @_ZN1a1bEv(%class.a* nocapture readnone) local_unnamed_addr #0 align 2 !dbg !8 { + tail call void @llvm.dbg.value(metadata %class.a* %0, metadata !17, metadata !DIExpression()), !dbg !19 + br label %2, !dbg !20 + +;