aboutsummaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-01-13 01:30:30 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-01-13 01:30:30 +0000
commitd72479c2f061e3b57adf3d054875665f25a30d90 (patch)
tree1c22fc27e9e82663599b3df81b78626b59894034 /unittests
parentfef9ff492206330ff0a5b94cec5ac1455b28df88 (diff)
Reject uses of unnamed_addr in declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123358 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r--unittests/VMCore/VerifierTest.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/unittests/VMCore/VerifierTest.cpp b/unittests/VMCore/VerifierTest.cpp
index 55ce1444ed..d94dc22306 100644
--- a/unittests/VMCore/VerifierTest.cpp
+++ b/unittests/VMCore/VerifierTest.cpp
@@ -61,5 +61,31 @@ TEST(VerifierTest, AliasUnnamedAddr) {
EXPECT_TRUE(StringRef(Error).startswith("Alias cannot have unnamed_addr"));
}
+TEST(VerifierTest, ExternalUnnamedAddr) {
+ LLVMContext &C = getGlobalContext();
+ Module M("M", C);
+ const Type *Ty = Type::getInt8Ty(C);
+ GlobalVariable *GV = new GlobalVariable(M, Ty, true,
+ GlobalValue::ExternalLinkage,
+ NULL, "foo");
+ GV->setUnnamedAddr(true);
+ std::string Error;
+ EXPECT_TRUE(verifyModule(M, ReturnStatusAction, &Error));
+ EXPECT_TRUE(StringRef(Error)
+ .startswith("only definitions can have unnamed_addr"));
+}
+
+TEST(VerifierTest, DeclarationUnnamedAddr) {
+ LLVMContext &C = getGlobalContext();
+ Module M("M", C);
+ FunctionType *FTy = FunctionType::get(Type::getVoidTy(C), /*isVarArg=*/false);
+ Function *F = Function::Create(FTy, GlobalValue::ExternalLinkage,
+ "foo", &M);
+ F->setUnnamedAddr(true);
+ std::string Error;
+ EXPECT_TRUE(verifyModule(M, ReturnStatusAction, &Error));
+ EXPECT_TRUE(StringRef(Error)
+ .startswith("only definitions can have unnamed_addr"));
+}
}
}