Verifier: Diagnose module flags which have null ID operands
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 16 Feb 2015 08:14:22 +0000 (08:14 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 16 Feb 2015 08:14:22 +0000 (08:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229361 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/Verifier.cpp
test/Verifier/module-flags-3.ll [new file with mode: 0644]

index 22a5a9620b0a1b2cbe2c58a8b322d60be08daf42..0b9f67860001594bcef9d91ce2572072165b86ff 100644 (file)
@@ -877,7 +877,7 @@ Verifier::visitModuleFlag(const MDNode *Op,
             "invalid behavior operand in module flag (unexpected constant)",
             Op->getOperand(0));
   }
-  MDString *ID = dyn_cast<MDString>(Op->getOperand(1));
+  MDString *ID = dyn_cast_or_null<MDString>(Op->getOperand(1));
   Assert1(ID,
           "invalid ID operand in module flag (expected metadata string)",
           Op->getOperand(1));
diff --git a/test/Verifier/module-flags-3.ll b/test/Verifier/module-flags-3.ll
new file mode 100644 (file)
index 0000000..64ab57e
--- /dev/null
@@ -0,0 +1,6 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+!llvm.module.flags = !{!0}
+!0 = !{i32 1, null, null}
+
+; CHECK: invalid ID operand in module flag (expected metadata string)