Index: lib/CodeGen/SelectionDAG/FastISel.cpp =================================================================== --- lib/CodeGen/SelectionDAG/FastISel.cpp +++ lib/CodeGen/SelectionDAG/FastISel.cpp @@ -1426,6 +1426,19 @@ } return true; } + case Intrinsic::dbg_label: { + const DbgLabelInst *DI = cast(II); + assert(DI->getLabel() && "Missing label"); + if (!FuncInfo.MF->getMMI().hasDebugInfo()) { + LLVM_DEBUG(dbgs() << "Dropping debug info for " << *DI << "\n"); + return true; + } + + BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, + TII.get(TargetOpcode::DBG_LABEL)) + .addMetadata(DI->getLabel()); + return true; + } case Intrinsic::objectsize: { ConstantInt *CI = cast(II->getArgOperand(1)); unsigned long long Res = CI->isZero() ? -1ULL : 0; Index: test/DebugInfo/Generic/debug-label-mi.ll =================================================================== --- test/DebugInfo/Generic/debug-label-mi.ll +++ test/DebugInfo/Generic/debug-label-mi.ll @@ -1,12 +1,12 @@ ; Test DBG_LABEL MachineInstr for label debugging. ; REQUIRES: asserts -; RUN: llc -fast-isel=false -debug-only=isel %s -o /dev/null 2> %t.debug +; RUN: llc -debug-only=isel %s -o /dev/null 2> %t.debug ; RUN: cat %t.debug | FileCheck %s --check-prefix=CHECKMI ; ; CHECKMI: DBG_LABEL "top", debug-location !9 ; CHECKMI: DBG_LABEL "done", debug-location !11 ; -; RUN: llc -fast-isel=false %s -o - | FileCheck %s --check-prefix=CHECKASM +; RUN: llc %s -o - | FileCheck %s --check-prefix=CHECKASM ; ; CHECKASM: DEBUG_LABEL: foo:top ; CHECKASM: DEBUG_LABEL: foo:done Index: test/DebugInfo/Generic/debug-label-opt.ll =================================================================== --- test/DebugInfo/Generic/debug-label-opt.ll +++ test/DebugInfo/Generic/debug-label-opt.ll @@ -1,7 +1,7 @@ ; Test DBG_LABEL MachineInstr under optimization. ; The test case is generated by clang with -O2 is on. ; REQUIRES: asserts -; RUN: llc -fast-isel=false -debug-only=isel %s -o /dev/null 2> %t.debug +; RUN: llc -debug-only=isel %s -o /dev/null 2> %t.debug ; RUN: cat %t.debug | FileCheck %s --check-prefix=CHECKMI ; ; CHECKMI: DBG_LABEL "end_sum", debug-location !17 Index: test/DebugInfo/Generic/debug-label.ll =================================================================== --- test/DebugInfo/Generic/debug-label.ll +++ test/DebugInfo/Generic/debug-label.ll @@ -1,4 +1,4 @@ -; RUN: llc -fast-isel=false -O0 -filetype=obj -o - %s | llvm-dwarfdump -v - | FileCheck %s +; RUN: llc -O0 -filetype=obj -o - %s | llvm-dwarfdump -v - | FileCheck %s ; ; CHECK: .debug_info contents: ; CHECK: DW_TAG_label @@ -13,7 +13,7 @@ ; CHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] {{.*}}{{0x[0-9a-f]+}} ; CHECK-NOT: DW_AT_name [DW_FORM_strp] {{.*}}"top" ; -; RUN: llc -fast-isel=false -O0 -o - %s | FileCheck %s -check-prefix=ASM +; RUN: llc -O0 -o - %s | FileCheck %s -check-prefix=ASM ; ; ASM: [[TOP_LOW_PC:[.0-9a-zA-Z]+]]:{{[[:space:]].*}}DEBUG_LABEL: foo:top ; ASM: [[DONE_LOW_PC:[.0-9a-zA-Z]+]]:{{[[:space:]].*}}DEBUG_LABEL: foo:done