diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/CodeGen/MIRParser/MIParser.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MIR/X86/invalid-debug-location.mir | 15 | 
2 files changed, 17 insertions, 0 deletions
| diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp index 5c6a41af97a..da758da873c 100644 --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp @@ -779,6 +779,8 @@ bool MIParser::parse(MachineInstr *&MI) {      MDNode *Node = nullptr;      if (parseMDNode(Node))        return true; +    if (!isa<DILocation>(Node)) +      return error("referenced metadata is not a DILocation");      DebugLocation = DebugLoc(Node);    } diff --git a/llvm/test/CodeGen/MIR/X86/invalid-debug-location.mir b/llvm/test/CodeGen/MIR/X86/invalid-debug-location.mir new file mode 100644 index 00000000000..60f718ed679 --- /dev/null +++ b/llvm/test/CodeGen/MIR/X86/invalid-debug-location.mir @@ -0,0 +1,15 @@ +# RUN: not llc -o - %s -run-pass=none 2>&1 | FileCheck %s +--- | +  target triple="x86_64--" +  define void @func() { +    unreachable +  } +  !0 = !{} +... +--- +name: func +body: | +  bb.0: +    ; CHECK: [[@LINE+1]]:27: referenced metadata is not a DILocation +    NOOP debug-location !0 +... | 

