Add unittest for extreme alignments.

llvm-svn: 220483
This commit is contained in:
Rafael Espindola 2014-10-23 14:45:19 +00:00
parent b1cc8f92d6
commit 0e2a6b8223

View File

@ -60,6 +60,10 @@ TEST(GlobalTest, CreateAddressSpace) {
GlobalVariable::NotThreadLocal, GlobalVariable::NotThreadLocal,
1); 1);
EXPECT_TRUE(Value::MaximumAlignment == 536870912U);
Dummy0->setAlignment(536870912U);
EXPECT_EQ(Dummy0->getAlignment(), 536870912U);
// Make sure the address space isn't dropped when returning this. // Make sure the address space isn't dropped when returning this.
Constant *Dummy1 = M->getOrInsertGlobal("dummy", Int32Ty); Constant *Dummy1 = M->getOrInsertGlobal("dummy", Int32Ty);
EXPECT_EQ(Dummy0, Dummy1); EXPECT_EQ(Dummy0, Dummy1);
@ -83,4 +87,23 @@ TEST(GlobalTest, CreateAddressSpace) {
EXPECT_EQ(1u, DummyCast1->getType()->getPointerAddressSpace()); EXPECT_EQ(1u, DummyCast1->getType()->getPointerAddressSpace());
EXPECT_NE(DummyCast0, DummyCast1) << *DummyCast1; EXPECT_NE(DummyCast0, DummyCast1) << *DummyCast1;
} }
#ifdef GTEST_HAS_DEATH_TEST
#ifndef NDEBUG
TEST(GlobalTest, AlignDeath) {
LLVMContext &Ctx = getGlobalContext();
std::unique_ptr<Module> M(new Module("TestModule", Ctx));
Type *Int32Ty = Type::getInt32Ty(Ctx);
GlobalVariable *Var =
new GlobalVariable(*M, Int32Ty, true, GlobalValue::ExternalLinkage,
Constant::getAllOnesValue(Int32Ty), "var", nullptr,
GlobalVariable::NotThreadLocal, 1);
EXPECT_DEATH(Var->setAlignment(536870913U), "Alignment is not a power of 2");
EXPECT_DEATH(Var->setAlignment(1073741824U),
"Alignment is greater than MaximumAlignment");
}
#endif
#endif
} // end anonymous namespace } // end anonymous namespace