diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-01-13 01:30:30 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-01-13 01:30:30 +0000 |
commit | d72479c2f061e3b57adf3d054875665f25a30d90 (patch) | |
tree | 1c22fc27e9e82663599b3df81b78626b59894034 /unittests | |
parent | fef9ff492206330ff0a5b94cec5ac1455b28df88 (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.cpp | 26 |
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")); +} } } |