From: Reid Kleckner Date: Fri, 12 May 2017 17:02:40 +0000 (+0000) Subject: [codeview] Fix assertion failure introduced in r295354 refactoring X-Git-Tag: llvmorg-5.0.0-rc1~5209 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5bc8543a365d4ffa8ae5eef037b9e39163a93f08;p=platform%2Fupstream%2Fllvm.git [codeview] Fix assertion failure introduced in r295354 refactoring CodeViewDebug sets Asm to nullptr to disable debug info generation. You can get a .ll file like no-cus.ll from 'clang -gcodeview -g0', which happens in the ubsan test suite. llvm-svn: 302923 --- diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp index 1d63e33..826162a 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp @@ -129,10 +129,9 @@ bool hasDebugInfo(const MachineModuleInfo *MMI, const MachineFunction *MF) { } void DebugHandlerBase::beginFunction(const MachineFunction *MF) { - assert(Asm); PrevInstBB = nullptr; - if (!hasDebugInfo(MMI, MF)) { + if (!Asm || !hasDebugInfo(MMI, MF)) { skippedNonDebugFunction(); return; } diff --git a/llvm/test/DebugInfo/COFF/no-cus.ll b/llvm/test/DebugInfo/COFF/no-cus.ll new file mode 100644 index 0000000..349fe68 --- /dev/null +++ b/llvm/test/DebugInfo/COFF/no-cus.ll @@ -0,0 +1,25 @@ +; RUN: llc < %s -filetype=obj -o %t.o +; RUN: llvm-objdump -section-headers %t.o | FileCheck %s + +; Don't emit debug info in this scenario and don't crash. + +; CHECK-NOT: .debug$S +; CHECK: .text +; CHECK-NOT: .debug$S + +; ModuleID = 't.cpp' +source_filename = "t.cpp" +target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-windows-msvc19.10.24728" + +define void @f() { +entry: + ret void +} + +!llvm.module.flags = !{!0, !1} +!llvm.ident = !{!2} + +!0 = !{i32 2, !"CodeView", i32 1} +!1 = !{i32 1, !"PIC Level", i32 2} +!2 = !{!"clang version 5.0.0 "}