AsmParser: extractvalue requires at least one index operand
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 16 Feb 2015 09:18:13 +0000 (09:18 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 16 Feb 2015 09:18:13 +0000 (09:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229365 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/LLParser.cpp
test/Assembler/extractvalue-no-idx.ll [new file with mode: 0644]

index 7818586dfa45d80723ae6b62ca3c62ca47e27c18..47125ca954cc25a003c01cfd4978aa3b91d240dc 100644 (file)
@@ -1633,6 +1633,7 @@ bool LLParser::ParseIndexList(SmallVectorImpl<unsigned> &Indices,
 
   while (EatIfPresent(lltok::comma)) {
     if (Lex.getKind() == lltok::MetadataVar) {
+      if (Indices.empty()) return TokError("expected index");
       AteExtraComma = true;
       return false;
     }
diff --git a/test/Assembler/extractvalue-no-idx.ll b/test/Assembler/extractvalue-no-idx.ll
new file mode 100644 (file)
index 0000000..b313209
--- /dev/null
@@ -0,0 +1,8 @@
+; RUN: not llvm-as < %s 2>&1 | FileCheck %s
+
+; CHECK: expected index
+
+define void @f1() {
+  extractvalue <{ i32, i32 }> undef, !dbg !0
+  ret void
+}