aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/IR/InstructionsTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/IR/InstructionsTest.cpp')
-rw-r--r--llvm/unittests/IR/InstructionsTest.cpp67
1 files changed, 24 insertions, 43 deletions
diff --git a/llvm/unittests/IR/InstructionsTest.cpp b/llvm/unittests/IR/InstructionsTest.cpp
index 21d4596..fe9e7e8 100644
--- a/llvm/unittests/IR/InstructionsTest.cpp
+++ b/llvm/unittests/IR/InstructionsTest.cpp
@@ -606,82 +606,63 @@ TEST(InstructionTest, ConstrainedTrans) {
TEST(InstructionsTest, isEliminableCastPair) {
LLVMContext C;
+ DataLayout DL1("p1:32:32");
- Type* Int16Ty = Type::getInt16Ty(C);
- Type* Int32Ty = Type::getInt32Ty(C);
- Type* Int64Ty = Type::getInt64Ty(C);
- Type *Int64PtrTy = PointerType::get(C, 0);
+ Type *Int16Ty = Type::getInt16Ty(C);
+ Type *Int64Ty = Type::getInt64Ty(C);
+ Type *PtrTy64 = PointerType::get(C, 0);
+ Type *PtrTy32 = PointerType::get(C, 1);
// Source and destination pointers have same size -> bitcast.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int64Ty, Int64PtrTy,
- Int32Ty, nullptr, Int32Ty),
- CastInst::BitCast);
-
- // Source and destination have unknown sizes, but the same address space and
- // the intermediate int is the maximum pointer size -> bitcast
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int64Ty, Int64PtrTy,
- nullptr, nullptr, nullptr),
+ CastInst::IntToPtr, PtrTy32, Int64Ty,
+ PtrTy32, &DL1),
CastInst::BitCast);
- // Source and destination have unknown sizes, but the same address space and
- // the intermediate int is not the maximum pointer size -> nothing
+ // Source and destination have unknown sizes.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int32Ty, Int64PtrTy,
- nullptr, nullptr, nullptr),
+ CastInst::IntToPtr, PtrTy32, Int64Ty,
+ PtrTy32, nullptr),
0U);
// Middle pointer big enough -> bitcast.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::PtrToInt,
- Int64Ty, Int64PtrTy, Int64Ty,
- nullptr, Int64Ty, nullptr),
+ CastInst::PtrToInt, Int64Ty, PtrTy64,
+ Int64Ty, &DL1),
CastInst::BitCast);
// Middle pointer too small -> fail.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::PtrToInt,
- Int64Ty, Int64PtrTy, Int64Ty,
- nullptr, Int32Ty, nullptr),
+ CastInst::PtrToInt, Int64Ty, PtrTy32,
+ Int64Ty, &DL1),
0U);
// Test that we don't eliminate bitcasts between different address spaces,
// or if we don't have available pointer size information.
- DataLayout DL("e-p:32:32:32-p1:16:16:16-p2:64:64:64-i1:8:8-i8:8:8-i16:16:16"
- "-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64"
- "-v128:128:128-a:0:64-s:64:64-f80:128:128-n8:16:32:64-S128");
+ DataLayout DL2("e-p:32:32:32-p1:16:16:16-p2:64:64:64-i1:8:8-i8:8:8-i16:16:16"
+ "-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64"
+ "-v128:128:128-a:0:64-s:64:64-f80:128:128-n8:16:32:64-S128");
Type *Int64PtrTyAS1 = PointerType::get(C, 1);
Type *Int64PtrTyAS2 = PointerType::get(C, 2);
- IntegerType *Int16SizePtr = DL.getIntPtrType(C, 1);
- IntegerType *Int64SizePtr = DL.getIntPtrType(C, 2);
-
// Cannot simplify inttoptr, addrspacecast
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::AddrSpaceCast,
- Int16Ty, Int64PtrTyAS1, Int64PtrTyAS2,
- nullptr, Int16SizePtr, Int64SizePtr),
+ CastInst::AddrSpaceCast, Int16Ty,
+ Int64PtrTyAS1, Int64PtrTyAS2, &DL2),
0U);
// Cannot simplify addrspacecast, ptrtoint
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::AddrSpaceCast,
- CastInst::PtrToInt,
- Int64PtrTyAS1, Int64PtrTyAS2, Int16Ty,
- Int64SizePtr, Int16SizePtr, nullptr),
+ CastInst::PtrToInt, Int64PtrTyAS1,
+ Int64PtrTyAS2, Int16Ty, &DL2),
0U);
// Pass since the bitcast address spaces are the same
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::BitCast,
- Int16Ty, Int64PtrTyAS1, Int64PtrTyAS1,
- nullptr, nullptr, nullptr),
+ EXPECT_EQ(CastInst::isEliminableCastPair(
+ CastInst::IntToPtr, CastInst::BitCast, Int16Ty, Int64PtrTyAS1,
+ Int64PtrTyAS1, nullptr),
CastInst::IntToPtr);
-
}
TEST(InstructionsTest, CloneCall) {