diff options
| author | Matthias Braun <matze@braunis.de> | 2018-10-01 17:50:52 +0000 |
|---|---|---|
| committer | Matthias Braun <matze@braunis.de> | 2018-10-01 17:50:52 +0000 |
| commit | 7159daa68ebc88abf88196ef960bcf42cdff30dd (patch) | |
| tree | 97ec98fc177abc3308bdbbf2f6db32da3c2884da | |
| parent | 7cd67904f77608a70fa87aacb254fff6bc94f6ba (diff) | |
| download | bcm5719-llvm-7159daa68ebc88abf88196ef960bcf42cdff30dd.tar.gz bcm5719-llvm-7159daa68ebc88abf88196ef960bcf42cdff30dd.zip | |
MIRParser: Check that instructions only reference DILocation metadata
llvm-svn: 343505
| -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 +... |

