Reject uses of unnamed_addr in declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123358 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2011-01-13 01:30:30 +00:00
parent fef9ff4922
commit d72479c2f0
6 changed files with 60 additions and 3 deletions

View File

@@ -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"));
}
}
}