mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-01 17:29:33 +00:00
unit test to go along with r108610
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108611 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
93604b6de2
commit
e332553eae
@ -9,13 +9,66 @@
|
|||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "../lib/VMCore/LLVMContextImpl.h"
|
#include "../lib/VMCore/LLVMContextImpl.h"
|
||||||
#include "llvm/Type.h"
|
|
||||||
#include "llvm/DerivedTypes.h"
|
#include "llvm/DerivedTypes.h"
|
||||||
#include "llvm/LLVMContext.h"
|
#include "llvm/LLVMContext.h"
|
||||||
|
#include "llvm/Constants.h"
|
||||||
|
#include "llvm/Support/ValueHandle.h"
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
static void PR7658() {
|
||||||
|
LLVMContext ctx;
|
||||||
|
|
||||||
|
WeakVH NullPtr;
|
||||||
|
PATypeHolder h1;
|
||||||
|
{
|
||||||
|
OpaqueType *o1 = OpaqueType::get(ctx);
|
||||||
|
PointerType *p1 = PointerType::get(o1, 0);
|
||||||
|
|
||||||
|
std::vector<const Type *> t1;
|
||||||
|
t1.push_back(IntegerType::get(ctx, 32));
|
||||||
|
t1.push_back(p1);
|
||||||
|
NullPtr = ConstantPointerNull::get(p1);
|
||||||
|
OpaqueType *o2 = OpaqueType::get (ctx);
|
||||||
|
PointerType *p2 = PointerType::get (o2, 0);
|
||||||
|
t1.push_back(p2);
|
||||||
|
|
||||||
|
|
||||||
|
StructType *s1 = StructType::get(ctx, t1);
|
||||||
|
h1 = s1;
|
||||||
|
o1->refineAbstractTypeTo(s1);
|
||||||
|
o2->refineAbstractTypeTo(h1.get()); // h1 = { i32, \2*, \2* }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OpaqueType *o3 = OpaqueType::get(ctx);
|
||||||
|
PointerType *p3 = PointerType::get(o3, 0); // p3 = opaque*
|
||||||
|
|
||||||
|
std::vector<const Type *> t2;
|
||||||
|
t2.push_back(IntegerType::get(ctx, 32));
|
||||||
|
t2.push_back(p3);
|
||||||
|
|
||||||
|
std::vector<Constant *> v2;
|
||||||
|
v2.push_back(ConstantInt::get(IntegerType::get(ctx, 32), 14));
|
||||||
|
v2.push_back(ConstantPointerNull::get(p3));
|
||||||
|
|
||||||
|
OpaqueType *o4 = OpaqueType::get(ctx);
|
||||||
|
{
|
||||||
|
PointerType *p4 = PointerType::get(o4, 0);
|
||||||
|
t2.push_back(p4);
|
||||||
|
v2.push_back(ConstantPointerNull::get(p4));
|
||||||
|
}
|
||||||
|
|
||||||
|
WeakVH CS = ConstantStruct::get(ctx, v2, false); // { i32 14, opaque* null, opaque* null}
|
||||||
|
|
||||||
|
StructType *s2 = StructType::get(ctx, t2);
|
||||||
|
PATypeHolder h2(s2);
|
||||||
|
o3->refineAbstractTypeTo(s2);
|
||||||
|
o4->refineAbstractTypeTo(h2.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(OpaqueTypeTest, RegisterWithContext) {
|
TEST(OpaqueTypeTest, RegisterWithContext) {
|
||||||
LLVMContext C;
|
LLVMContext C;
|
||||||
LLVMContextImpl *pImpl = C.pImpl;
|
LLVMContextImpl *pImpl = C.pImpl;
|
||||||
@ -28,6 +81,8 @@ TEST(OpaqueTypeTest, RegisterWithContext) {
|
|||||||
EXPECT_EQ(2u, pImpl->OpaqueTypes.size());
|
EXPECT_EQ(2u, pImpl->OpaqueTypes.size());
|
||||||
}
|
}
|
||||||
EXPECT_EQ(1u, pImpl->OpaqueTypes.size());
|
EXPECT_EQ(1u, pImpl->OpaqueTypes.size());
|
||||||
|
|
||||||
|
PR7658();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
Loading…
Reference in New Issue
Block a user