]> granicus.if.org Git - llvm/commitdiff
IR: When creating a global variable, assert that its type is valid.
authorPeter Collingbourne <peter@pcc.me.uk>
Sun, 4 Jun 2017 22:12:03 +0000 (22:12 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Sun, 4 Jun 2017 22:12:03 +0000 (22:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304690 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/Globals.cpp

index 17d27b016cf2aef847ce2cd713d4667d400f3c4f..2ddd78db63189b47143af507b76f8d3f6cb0adbb 100644 (file)
@@ -293,6 +293,8 @@ GlobalVariable::GlobalVariable(Type *Ty, bool constant, LinkageTypes Link,
                    InitVal != nullptr, Link, Name, AddressSpace),
       isConstantGlobal(constant),
       isExternallyInitializedConstant(isExternallyInitialized) {
+  assert(!Ty->isFunctionTy() && PointerType::isValidElementType(Ty) &&
+         "invalid type for global variable");
   setThreadLocalMode(TLMode);
   if (InitVal) {
     assert(InitVal->getType() == Ty &&
@@ -311,6 +313,8 @@ GlobalVariable::GlobalVariable(Module &M, Type *Ty, bool constant,
                    InitVal != nullptr, Link, Name, AddressSpace),
       isConstantGlobal(constant),
       isExternallyInitializedConstant(isExternallyInitialized) {
+  assert(!Ty->isFunctionTy() && PointerType::isValidElementType(Ty) &&
+         "invalid type for global variable");
   setThreadLocalMode(TLMode);
   if (InitVal) {
     assert(InitVal->getType() == Ty &&