[llvm-commits] [llvm] r171747 - in /llvm/trunk/unittests: ./ IR/ VMCore/
Chandler Carruth
chandlerc at gmail.com
Mon Jan 7 07:35:47 PST 2013
Author: chandlerc
Date: Mon Jan 7 09:35:46 2013
New Revision: 171747
URL: http://llvm.org/viewvc/llvm-project?rev=171747&view=rev
Log:
Rename the VMCore unittest tree to IR. Somehow was missed when doing the
library rename.
Added:
llvm/trunk/unittests/IR/
llvm/trunk/unittests/IR/CMakeLists.txt
- copied, changed from r171746, llvm/trunk/unittests/VMCore/CMakeLists.txt
llvm/trunk/unittests/IR/ConstantsTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/ConstantsTest.cpp
llvm/trunk/unittests/IR/DominatorTreeTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp
llvm/trunk/unittests/IR/IRBuilderTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/IRBuilderTest.cpp
llvm/trunk/unittests/IR/InstructionsTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/InstructionsTest.cpp
llvm/trunk/unittests/IR/MDBuilderTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/MDBuilderTest.cpp
llvm/trunk/unittests/IR/Makefile
- copied, changed from r171746, llvm/trunk/unittests/VMCore/Makefile
llvm/trunk/unittests/IR/MetadataTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/MetadataTest.cpp
llvm/trunk/unittests/IR/PassManagerTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/PassManagerTest.cpp
llvm/trunk/unittests/IR/TypeBuilderTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp
llvm/trunk/unittests/IR/TypesTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/TypesTest.cpp
llvm/trunk/unittests/IR/ValueMapTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/ValueMapTest.cpp
llvm/trunk/unittests/IR/VerifierTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/VerifierTest.cpp
llvm/trunk/unittests/IR/WaymarkTest.cpp
- copied, changed from r171746, llvm/trunk/unittests/VMCore/WaymarkTest.cpp
Removed:
llvm/trunk/unittests/VMCore/CMakeLists.txt
llvm/trunk/unittests/VMCore/ConstantsTest.cpp
llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp
llvm/trunk/unittests/VMCore/IRBuilderTest.cpp
llvm/trunk/unittests/VMCore/InstructionsTest.cpp
llvm/trunk/unittests/VMCore/MDBuilderTest.cpp
llvm/trunk/unittests/VMCore/Makefile
llvm/trunk/unittests/VMCore/MetadataTest.cpp
llvm/trunk/unittests/VMCore/PassManagerTest.cpp
llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp
llvm/trunk/unittests/VMCore/TypesTest.cpp
llvm/trunk/unittests/VMCore/ValueMapTest.cpp
llvm/trunk/unittests/VMCore/VerifierTest.cpp
llvm/trunk/unittests/VMCore/WaymarkTest.cpp
Modified:
llvm/trunk/unittests/CMakeLists.txt
llvm/trunk/unittests/Makefile
Modified: llvm/trunk/unittests/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/CMakeLists.txt?rev=171747&r1=171746&r2=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/CMakeLists.txt (original)
+++ llvm/trunk/unittests/CMakeLists.txt Mon Jan 7 09:35:46 2013
@@ -12,4 +12,4 @@
add_subdirectory(Option)
add_subdirectory(Support)
add_subdirectory(Transforms)
-add_subdirectory(VMCore)
+add_subdirectory(IR)
Copied: llvm/trunk/unittests/IR/CMakeLists.txt (from r171746, llvm/trunk/unittests/VMCore/CMakeLists.txt)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/CMakeLists.txt?p2=llvm/trunk/unittests/IR/CMakeLists.txt&p1=llvm/trunk/unittests/VMCore/CMakeLists.txt&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/CMakeLists.txt (original)
+++ llvm/trunk/unittests/IR/CMakeLists.txt Mon Jan 7 09:35:46 2013
@@ -4,7 +4,7 @@
ipa
)
-set(VMCoreSources
+set(IRSources
ConstantsTest.cpp
DominatorTreeTest.cpp
IRBuilderTest.cpp
@@ -22,7 +22,7 @@
# MSVC9 and 8 cannot compile ValueMapTest.cpp due to their bug.
# See issue#331418 in Visual Studio.
if(MSVC AND MSVC_VERSION LESS 1600)
- list(REMOVE_ITEM VMCoreSources ValueMapTest.cpp)
+ list(REMOVE_ITEM IRSources ValueMapTest.cpp)
endif()
# HACK: Declare a couple of source files as optionally compiled to satisfy the
@@ -31,6 +31,6 @@
ValueMapTest.cpp
)
-add_llvm_unittest(VMCoreTests
- ${VMCoreSources}
+add_llvm_unittest(IRTests
+ ${IRSources}
)
Copied: llvm/trunk/unittests/IR/ConstantsTest.cpp (from r171746, llvm/trunk/unittests/VMCore/ConstantsTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/ConstantsTest.cpp?p2=llvm/trunk/unittests/IR/ConstantsTest.cpp&p1=llvm/trunk/unittests/VMCore/ConstantsTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/ConstantsTest.cpp (original)
+++ llvm/trunk/unittests/IR/ConstantsTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/ConstantsTest.cpp - Constants unit tests ------===//
+//===- llvm/unittest/IR/ConstantsTest.cpp - Constants unit tests ----------===//
//
// The LLVM Compiler Infrastructure
//
Copied: llvm/trunk/unittests/IR/DominatorTreeTest.cpp (from r171746, llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/DominatorTreeTest.cpp?p2=llvm/trunk/unittests/IR/DominatorTreeTest.cpp&p1=llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
(empty)
Copied: llvm/trunk/unittests/IR/IRBuilderTest.cpp (from r171746, llvm/trunk/unittests/VMCore/IRBuilderTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/IRBuilderTest.cpp?p2=llvm/trunk/unittests/IR/IRBuilderTest.cpp&p1=llvm/trunk/unittests/VMCore/IRBuilderTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/IRBuilderTest.cpp (original)
+++ llvm/trunk/unittests/IR/IRBuilderTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/IRBuilderTest.cpp - IRBuilder tests -----------===//
+//===- llvm/unittest/IR/IRBuilderTest.cpp - IRBuilder tests ---------------===//
//
// The LLVM Compiler Infrastructure
//
Copied: llvm/trunk/unittests/IR/InstructionsTest.cpp (from r171746, llvm/trunk/unittests/VMCore/InstructionsTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/InstructionsTest.cpp?p2=llvm/trunk/unittests/IR/InstructionsTest.cpp&p1=llvm/trunk/unittests/VMCore/InstructionsTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/InstructionsTest.cpp (original)
+++ llvm/trunk/unittests/IR/InstructionsTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/InstructionsTest.cpp - Instructions unit tests ===//
+//===- llvm/unittest/IR/InstructionsTest.cpp - Instructions unit tests ----===//
//
// The LLVM Compiler Infrastructure
//
Copied: llvm/trunk/unittests/IR/MDBuilderTest.cpp (from r171746, llvm/trunk/unittests/VMCore/MDBuilderTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/MDBuilderTest.cpp?p2=llvm/trunk/unittests/IR/MDBuilderTest.cpp&p1=llvm/trunk/unittests/VMCore/MDBuilderTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
(empty)
Copied: llvm/trunk/unittests/IR/Makefile (from r171746, llvm/trunk/unittests/VMCore/Makefile)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/Makefile?p2=llvm/trunk/unittests/IR/Makefile&p1=llvm/trunk/unittests/VMCore/Makefile&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/Makefile (original)
+++ llvm/trunk/unittests/IR/Makefile Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-##===- unittests/VMCore/Makefile ---------------------------*- Makefile -*-===##
+##===- unittests/IR/Makefile -------------------------------*- Makefile -*-===##
#
# The LLVM Compiler Infrastructure
#
@@ -8,7 +8,7 @@
##===----------------------------------------------------------------------===##
LEVEL = ../..
-TESTNAME = VMCore
+TESTNAME = IR
LINK_COMPONENTS := core ipa asmparser
include $(LEVEL)/Makefile.config
Copied: llvm/trunk/unittests/IR/MetadataTest.cpp (from r171746, llvm/trunk/unittests/VMCore/MetadataTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/MetadataTest.cpp?p2=llvm/trunk/unittests/IR/MetadataTest.cpp&p1=llvm/trunk/unittests/VMCore/MetadataTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/MetadataTest.cpp (original)
+++ llvm/trunk/unittests/IR/MetadataTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/Metadata.cpp - Metadata unit tests ------------===//
+//===- llvm/unittest/IR/Metadata.cpp - Metadata unit tests ----------------===//
//
// The LLVM Compiler Infrastructure
//
Copied: llvm/trunk/unittests/IR/PassManagerTest.cpp (from r171746, llvm/trunk/unittests/VMCore/PassManagerTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/PassManagerTest.cpp?p2=llvm/trunk/unittests/IR/PassManagerTest.cpp&p1=llvm/trunk/unittests/VMCore/PassManagerTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/PassManagerTest.cpp (original)
+++ llvm/trunk/unittests/IR/PassManagerTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/PassManager.cpp - Constants unit tests ------===//
+//===- llvm/unittest/IR/PassManager.cpp - PassManager unit tests ----------===//
//
// The LLVM Compiler Infrastructure
//
Copied: llvm/trunk/unittests/IR/TypeBuilderTest.cpp (from r171746, llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/TypeBuilderTest.cpp?p2=llvm/trunk/unittests/IR/TypeBuilderTest.cpp&p1=llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
(empty)
Copied: llvm/trunk/unittests/IR/TypesTest.cpp (from r171746, llvm/trunk/unittests/VMCore/TypesTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/TypesTest.cpp?p2=llvm/trunk/unittests/IR/TypesTest.cpp&p1=llvm/trunk/unittests/VMCore/TypesTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/TypesTest.cpp (original)
+++ llvm/trunk/unittests/IR/TypesTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/TypesTest.cpp - Type unit tests ---------------===//
+//===- llvm/unittest/IR/TypesTest.cpp - Type unit tests -------------------===//
//
// The LLVM Compiler Infrastructure
//
Copied: llvm/trunk/unittests/IR/ValueMapTest.cpp (from r171746, llvm/trunk/unittests/VMCore/ValueMapTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/ValueMapTest.cpp?p2=llvm/trunk/unittests/IR/ValueMapTest.cpp&p1=llvm/trunk/unittests/VMCore/ValueMapTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
(empty)
Copied: llvm/trunk/unittests/IR/VerifierTest.cpp (from r171746, llvm/trunk/unittests/VMCore/VerifierTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/VerifierTest.cpp?p2=llvm/trunk/unittests/IR/VerifierTest.cpp&p1=llvm/trunk/unittests/VMCore/VerifierTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/VerifierTest.cpp (original)
+++ llvm/trunk/unittests/IR/VerifierTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/VerifierTest.cpp - Verifier unit tests --------===//
+//===- llvm/unittest/IR/VerifierTest.cpp - Verifier unit tests ------------===//
//
// The LLVM Compiler Infrastructure
//
Copied: llvm/trunk/unittests/IR/WaymarkTest.cpp (from r171746, llvm/trunk/unittests/VMCore/WaymarkTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/WaymarkTest.cpp?p2=llvm/trunk/unittests/IR/WaymarkTest.cpp&p1=llvm/trunk/unittests/VMCore/WaymarkTest.cpp&r1=171746&r2=171747&rev=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/VMCore/WaymarkTest.cpp (original)
+++ llvm/trunk/unittests/IR/WaymarkTest.cpp Mon Jan 7 09:35:46 2013
@@ -1,4 +1,4 @@
-//===- llvm/unittest/VMCore/WaymarkTest.cpp - getUser() unit tests --------===//
+//===- llvm/unittest/IR/WaymarkTest.cpp - getUser() unit tests ------------===//
//
// The LLVM Compiler Infrastructure
//
Modified: llvm/trunk/unittests/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Makefile?rev=171747&r1=171746&r2=171747&view=diff
==============================================================================
--- llvm/trunk/unittests/Makefile (original)
+++ llvm/trunk/unittests/Makefile Mon Jan 7 09:35:46 2013
@@ -9,7 +9,7 @@
LEVEL = ..
-PARALLEL_DIRS = ADT ExecutionEngine Support Transforms VMCore Analysis Bitcode
+PARALLEL_DIRS = ADT ExecutionEngine Support Transforms IR Analysis Bitcode
include $(LEVEL)/Makefile.common
Removed: llvm/trunk/unittests/VMCore/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/CMakeLists.txt?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/CMakeLists.txt (original)
+++ llvm/trunk/unittests/VMCore/CMakeLists.txt (removed)
@@ -1,36 +0,0 @@
-set(LLVM_LINK_COMPONENTS
- asmparser
- core
- ipa
- )
-
-set(VMCoreSources
- ConstantsTest.cpp
- DominatorTreeTest.cpp
- IRBuilderTest.cpp
- InstructionsTest.cpp
- MDBuilderTest.cpp
- MetadataTest.cpp
- PassManagerTest.cpp
- TypeBuilderTest.cpp
- TypesTest.cpp
- ValueMapTest.cpp
- VerifierTest.cpp
- WaymarkTest.cpp
- )
-
-# MSVC9 and 8 cannot compile ValueMapTest.cpp due to their bug.
-# See issue#331418 in Visual Studio.
-if(MSVC AND MSVC_VERSION LESS 1600)
- list(REMOVE_ITEM VMCoreSources ValueMapTest.cpp)
-endif()
-
-# HACK: Declare a couple of source files as optionally compiled to satisfy the
-# missing-file-checker in LLVM's weird CMake build.
-set(LLVM_OPTIONAL_SOURCES
- ValueMapTest.cpp
- )
-
-add_llvm_unittest(VMCoreTests
- ${VMCoreSources}
- )
Removed: llvm/trunk/unittests/VMCore/ConstantsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/ConstantsTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/ConstantsTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/ConstantsTest.cpp (removed)
@@ -1,228 +0,0 @@
-//===- llvm/unittest/VMCore/ConstantsTest.cpp - Constants unit tests ------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/InstrTypes.h"
-#include "llvm/IR/Instruction.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
-#include "gtest/gtest.h"
-
-namespace llvm {
-namespace {
-
-TEST(ConstantsTest, Integer_i1) {
- IntegerType* Int1 = IntegerType::get(getGlobalContext(), 1);
- Constant* One = ConstantInt::get(Int1, 1, true);
- Constant* Zero = ConstantInt::get(Int1, 0);
- Constant* NegOne = ConstantInt::get(Int1, static_cast<uint64_t>(-1), true);
- EXPECT_EQ(NegOne, ConstantInt::getSigned(Int1, -1));
- Constant* Undef = UndefValue::get(Int1);
-
- // Input: @b = constant i1 add(i1 1 , i1 1)
- // Output: @b = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getAdd(One, One));
-
- // @c = constant i1 add(i1 -1, i1 1)
- // @c = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getAdd(NegOne, One));
-
- // @d = constant i1 add(i1 -1, i1 -1)
- // @d = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getAdd(NegOne, NegOne));
-
- // @e = constant i1 sub(i1 -1, i1 1)
- // @e = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getSub(NegOne, One));
-
- // @f = constant i1 sub(i1 1 , i1 -1)
- // @f = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getSub(One, NegOne));
-
- // @g = constant i1 sub(i1 1 , i1 1)
- // @g = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getSub(One, One));
-
- // @h = constant i1 shl(i1 1 , i1 1) ; undefined
- // @h = constant i1 undef
- EXPECT_EQ(Undef, ConstantExpr::getShl(One, One));
-
- // @i = constant i1 shl(i1 1 , i1 0)
- // @i = constant i1 true
- EXPECT_EQ(One, ConstantExpr::getShl(One, Zero));
-
- // @j = constant i1 lshr(i1 1, i1 1) ; undefined
- // @j = constant i1 undef
- EXPECT_EQ(Undef, ConstantExpr::getLShr(One, One));
-
- // @m = constant i1 ashr(i1 1, i1 1) ; undefined
- // @m = constant i1 undef
- EXPECT_EQ(Undef, ConstantExpr::getAShr(One, One));
-
- // @n = constant i1 mul(i1 -1, i1 1)
- // @n = constant i1 true
- EXPECT_EQ(One, ConstantExpr::getMul(NegOne, One));
-
- // @o = constant i1 sdiv(i1 -1, i1 1) ; overflow
- // @o = constant i1 true
- EXPECT_EQ(One, ConstantExpr::getSDiv(NegOne, One));
-
- // @p = constant i1 sdiv(i1 1 , i1 -1); overflow
- // @p = constant i1 true
- EXPECT_EQ(One, ConstantExpr::getSDiv(One, NegOne));
-
- // @q = constant i1 udiv(i1 -1, i1 1)
- // @q = constant i1 true
- EXPECT_EQ(One, ConstantExpr::getUDiv(NegOne, One));
-
- // @r = constant i1 udiv(i1 1, i1 -1)
- // @r = constant i1 true
- EXPECT_EQ(One, ConstantExpr::getUDiv(One, NegOne));
-
- // @s = constant i1 srem(i1 -1, i1 1) ; overflow
- // @s = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getSRem(NegOne, One));
-
- // @t = constant i1 urem(i1 -1, i1 1)
- // @t = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getURem(NegOne, One));
-
- // @u = constant i1 srem(i1 1, i1 -1) ; overflow
- // @u = constant i1 false
- EXPECT_EQ(Zero, ConstantExpr::getSRem(One, NegOne));
-}
-
-TEST(ConstantsTest, IntSigns) {
- IntegerType* Int8Ty = Type::getInt8Ty(getGlobalContext());
- EXPECT_EQ(100, ConstantInt::get(Int8Ty, 100, false)->getSExtValue());
- EXPECT_EQ(100, ConstantInt::get(Int8Ty, 100, true)->getSExtValue());
- EXPECT_EQ(100, ConstantInt::getSigned(Int8Ty, 100)->getSExtValue());
- EXPECT_EQ(-50, ConstantInt::get(Int8Ty, 206)->getSExtValue());
- EXPECT_EQ(-50, ConstantInt::getSigned(Int8Ty, -50)->getSExtValue());
- EXPECT_EQ(206U, ConstantInt::getSigned(Int8Ty, -50)->getZExtValue());
-
- // Overflow is handled by truncation.
- EXPECT_EQ(0x3b, ConstantInt::get(Int8Ty, 0x13b)->getSExtValue());
-}
-
-TEST(ConstantsTest, FP128Test) {
- Type *FP128Ty = Type::getFP128Ty(getGlobalContext());
-
- IntegerType *Int128Ty = Type::getIntNTy(getGlobalContext(), 128);
- Constant *Zero128 = Constant::getNullValue(Int128Ty);
- Constant *X = ConstantExpr::getUIToFP(Zero128, FP128Ty);
- EXPECT_TRUE(isa<ConstantFP>(X));
-}
-
-#define CHECK(x, y) { \
- std::string __s; \
- raw_string_ostream __o(__s); \
- cast<ConstantExpr>(x)->getAsInstruction()->print(__o); \
- __o.flush(); \
- EXPECT_EQ(std::string(" <badref> = " y), __s); \
- }
-
-TEST(ConstantsTest, AsInstructionsTest) {
- Module *M = new Module("MyModule", getGlobalContext());
-
- Type *Int64Ty = Type::getInt64Ty(getGlobalContext());
- Type *Int32Ty = Type::getInt32Ty(getGlobalContext());
- Type *Int16Ty = Type::getInt16Ty(getGlobalContext());
- Type *Int1Ty = Type::getInt1Ty(getGlobalContext());
- Type *FloatTy = Type::getFloatTy(getGlobalContext());
- Type *DoubleTy = Type::getDoubleTy(getGlobalContext());
-
- Constant *Global = M->getOrInsertGlobal("dummy",
- PointerType::getUnqual(Int32Ty));
- Constant *Global2 = M->getOrInsertGlobal("dummy2",
- PointerType::getUnqual(Int32Ty));
-
- Constant *P0 = ConstantExpr::getPtrToInt(Global, Int32Ty);
- Constant *P1 = ConstantExpr::getUIToFP(P0, FloatTy);
- Constant *P2 = ConstantExpr::getUIToFP(P0, DoubleTy);
- Constant *P3 = ConstantExpr::getTrunc(P0, Int1Ty);
- Constant *P4 = ConstantExpr::getPtrToInt(Global2, Int32Ty);
- Constant *P5 = ConstantExpr::getUIToFP(P4, FloatTy);
- Constant *P6 = ConstantExpr::getBitCast(P4, VectorType::get(Int16Ty, 2));
-
- Constant *One = ConstantInt::get(Int32Ty, 1);
-
- #define P0STR "ptrtoint (i32** @dummy to i32)"
- #define P1STR "uitofp (i32 ptrtoint (i32** @dummy to i32) to float)"
- #define P2STR "uitofp (i32 ptrtoint (i32** @dummy to i32) to double)"
- #define P3STR "ptrtoint (i32** @dummy to i1)"
- #define P4STR "ptrtoint (i32** @dummy2 to i32)"
- #define P5STR "uitofp (i32 ptrtoint (i32** @dummy2 to i32) to float)"
- #define P6STR "bitcast (i32 ptrtoint (i32** @dummy2 to i32) to <2 x i16>)"
-
- CHECK(ConstantExpr::getNeg(P0), "sub i32 0, " P0STR);
- CHECK(ConstantExpr::getFNeg(P1), "fsub float -0.000000e+00, " P1STR);
- CHECK(ConstantExpr::getNot(P0), "xor i32 " P0STR ", -1");
- CHECK(ConstantExpr::getAdd(P0, P0), "add i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getAdd(P0, P0, false, true), "add nsw i32 " P0STR ", "
- P0STR);
- CHECK(ConstantExpr::getAdd(P0, P0, true, true), "add nuw nsw i32 " P0STR ", "
- P0STR);
- CHECK(ConstantExpr::getFAdd(P1, P1), "fadd float " P1STR ", " P1STR);
- CHECK(ConstantExpr::getSub(P0, P0), "sub i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getFSub(P1, P1), "fsub float " P1STR ", " P1STR);
- CHECK(ConstantExpr::getMul(P0, P0), "mul i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getFMul(P1, P1), "fmul float " P1STR ", " P1STR);
- CHECK(ConstantExpr::getUDiv(P0, P0), "udiv i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getSDiv(P0, P0), "sdiv i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getFDiv(P1, P1), "fdiv float " P1STR ", " P1STR);
- CHECK(ConstantExpr::getURem(P0, P0), "urem i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getSRem(P0, P0), "srem i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getFRem(P1, P1), "frem float " P1STR ", " P1STR);
- CHECK(ConstantExpr::getAnd(P0, P0), "and i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getOr(P0, P0), "or i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getXor(P0, P0), "xor i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getShl(P0, P0), "shl i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getShl(P0, P0, true), "shl nuw i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getShl(P0, P0, false, true), "shl nsw i32 " P0STR ", "
- P0STR);
- CHECK(ConstantExpr::getLShr(P0, P0, false), "lshr i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getLShr(P0, P0, true), "lshr exact i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getAShr(P0, P0, false), "ashr i32 " P0STR ", " P0STR);
- CHECK(ConstantExpr::getAShr(P0, P0, true), "ashr exact i32 " P0STR ", " P0STR);
-
- CHECK(ConstantExpr::getSExt(P0, Int64Ty), "sext i32 " P0STR " to i64");
- CHECK(ConstantExpr::getZExt(P0, Int64Ty), "zext i32 " P0STR " to i64");
- CHECK(ConstantExpr::getFPTrunc(P2, FloatTy), "fptrunc double " P2STR
- " to float");
- CHECK(ConstantExpr::getFPExtend(P1, DoubleTy), "fpext float " P1STR
- " to double");
-
- CHECK(ConstantExpr::getExactUDiv(P0, P0), "udiv exact i32 " P0STR ", " P0STR);
-
- CHECK(ConstantExpr::getSelect(P3, P0, P4), "select i1 " P3STR ", i32 " P0STR
- ", i32 " P4STR);
- CHECK(ConstantExpr::getICmp(CmpInst::ICMP_EQ, P0, P4), "icmp eq i32 " P0STR
- ", " P4STR);
- CHECK(ConstantExpr::getFCmp(CmpInst::FCMP_ULT, P1, P5), "fcmp ult float "
- P1STR ", " P5STR);
-
- std::vector<Constant*> V;
- V.push_back(One);
- // FIXME: getGetElementPtr() actually creates an inbounds ConstantGEP,
- // not a normal one!
- //CHECK(ConstantExpr::getGetElementPtr(Global, V, false),
- // "getelementptr i32** @dummy, i32 1");
- CHECK(ConstantExpr::getInBoundsGetElementPtr(Global, V),
- "getelementptr inbounds i32** @dummy, i32 1");
-
- CHECK(ConstantExpr::getExtractElement(P6, One), "extractelement <2 x i16> "
- P6STR ", i32 1");
-}
-
-#undef CHECK
-
-} // end anonymous namespace
-} // end namespace llvm
Removed: llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/DominatorTreeTest.cpp (removed)
@@ -1,195 +0,0 @@
-#include "llvm/Analysis/Dominators.h"
-#include "llvm/Assembly/Parser.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
-#include "llvm/PassManager.h"
-#include "llvm/Support/SourceMgr.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-namespace llvm {
- void initializeDPassPass(PassRegistry&);
-
- namespace {
- struct DPass : public FunctionPass {
- static char ID;
- virtual bool runOnFunction(Function &F) {
- DominatorTree *DT = &getAnalysis<DominatorTree>();
- Function::iterator FI = F.begin();
-
- BasicBlock *BB0 = FI++;
- BasicBlock::iterator BBI = BB0->begin();
- Instruction *Y1 = BBI++;
- Instruction *Y2 = BBI++;
- Instruction *Y3 = BBI++;
-
- BasicBlock *BB1 = FI++;
- BBI = BB1->begin();
- Instruction *Y4 = BBI++;
-
- BasicBlock *BB2 = FI++;
- BBI = BB2->begin();
- Instruction *Y5 = BBI++;
-
- BasicBlock *BB3 = FI++;
- BBI = BB3->begin();
- Instruction *Y6 = BBI++;
- Instruction *Y7 = BBI++;
-
- BasicBlock *BB4 = FI++;
- BBI = BB4->begin();
- Instruction *Y8 = BBI++;
- Instruction *Y9 = BBI++;
-
- // Reachability
- EXPECT_TRUE(DT->isReachableFromEntry(BB0));
- EXPECT_TRUE(DT->isReachableFromEntry(BB1));
- EXPECT_TRUE(DT->isReachableFromEntry(BB2));
- EXPECT_FALSE(DT->isReachableFromEntry(BB3));
- EXPECT_TRUE(DT->isReachableFromEntry(BB4));
-
- // BB dominance
- EXPECT_TRUE(DT->dominates(BB0, BB0));
- EXPECT_TRUE(DT->dominates(BB0, BB1));
- EXPECT_TRUE(DT->dominates(BB0, BB2));
- EXPECT_TRUE(DT->dominates(BB0, BB3));
- EXPECT_TRUE(DT->dominates(BB0, BB4));
-
- EXPECT_FALSE(DT->dominates(BB1, BB0));
- EXPECT_TRUE(DT->dominates(BB1, BB1));
- EXPECT_FALSE(DT->dominates(BB1, BB2));
- EXPECT_TRUE(DT->dominates(BB1, BB3));
- EXPECT_FALSE(DT->dominates(BB1, BB4));
-
- EXPECT_FALSE(DT->dominates(BB2, BB0));
- EXPECT_FALSE(DT->dominates(BB2, BB1));
- EXPECT_TRUE(DT->dominates(BB2, BB2));
- EXPECT_TRUE(DT->dominates(BB2, BB3));
- EXPECT_FALSE(DT->dominates(BB2, BB4));
-
- EXPECT_FALSE(DT->dominates(BB3, BB0));
- EXPECT_FALSE(DT->dominates(BB3, BB1));
- EXPECT_FALSE(DT->dominates(BB3, BB2));
- EXPECT_TRUE(DT->dominates(BB3, BB3));
- EXPECT_FALSE(DT->dominates(BB3, BB4));
-
- // BB proper dominance
- EXPECT_FALSE(DT->properlyDominates(BB0, BB0));
- EXPECT_TRUE(DT->properlyDominates(BB0, BB1));
- EXPECT_TRUE(DT->properlyDominates(BB0, BB2));
- EXPECT_TRUE(DT->properlyDominates(BB0, BB3));
-
- EXPECT_FALSE(DT->properlyDominates(BB1, BB0));
- EXPECT_FALSE(DT->properlyDominates(BB1, BB1));
- EXPECT_FALSE(DT->properlyDominates(BB1, BB2));
- EXPECT_TRUE(DT->properlyDominates(BB1, BB3));
-
- EXPECT_FALSE(DT->properlyDominates(BB2, BB0));
- EXPECT_FALSE(DT->properlyDominates(BB2, BB1));
- EXPECT_FALSE(DT->properlyDominates(BB2, BB2));
- EXPECT_TRUE(DT->properlyDominates(BB2, BB3));
-
- EXPECT_FALSE(DT->properlyDominates(BB3, BB0));
- EXPECT_FALSE(DT->properlyDominates(BB3, BB1));
- EXPECT_FALSE(DT->properlyDominates(BB3, BB2));
- EXPECT_FALSE(DT->properlyDominates(BB3, BB3));
-
- // Instruction dominance in the same reachable BB
- EXPECT_FALSE(DT->dominates(Y1, Y1));
- EXPECT_TRUE(DT->dominates(Y1, Y2));
- EXPECT_FALSE(DT->dominates(Y2, Y1));
- EXPECT_FALSE(DT->dominates(Y2, Y2));
-
- // Instruction dominance in the same unreachable BB
- EXPECT_TRUE(DT->dominates(Y6, Y6));
- EXPECT_TRUE(DT->dominates(Y6, Y7));
- EXPECT_TRUE(DT->dominates(Y7, Y6));
- EXPECT_TRUE(DT->dominates(Y7, Y7));
-
- // Invoke
- EXPECT_TRUE(DT->dominates(Y3, Y4));
- EXPECT_FALSE(DT->dominates(Y3, Y5));
-
- // Phi
- EXPECT_TRUE(DT->dominates(Y2, Y9));
- EXPECT_FALSE(DT->dominates(Y3, Y9));
- EXPECT_FALSE(DT->dominates(Y8, Y9));
-
- // Anything dominates unreachable
- EXPECT_TRUE(DT->dominates(Y1, Y6));
- EXPECT_TRUE(DT->dominates(Y3, Y6));
-
- // Unreachable doesn't dominate reachable
- EXPECT_FALSE(DT->dominates(Y6, Y1));
-
- // Instruction, BB dominance
- EXPECT_FALSE(DT->dominates(Y1, BB0));
- EXPECT_TRUE(DT->dominates(Y1, BB1));
- EXPECT_TRUE(DT->dominates(Y1, BB2));
- EXPECT_TRUE(DT->dominates(Y1, BB3));
- EXPECT_TRUE(DT->dominates(Y1, BB4));
-
- EXPECT_FALSE(DT->dominates(Y3, BB0));
- EXPECT_TRUE(DT->dominates(Y3, BB1));
- EXPECT_FALSE(DT->dominates(Y3, BB2));
- EXPECT_TRUE(DT->dominates(Y3, BB3));
- EXPECT_FALSE(DT->dominates(Y3, BB4));
-
- EXPECT_TRUE(DT->dominates(Y6, BB3));
-
- return false;
- }
- virtual void getAnalysisUsage(AnalysisUsage &AU) const {
- AU.addRequired<DominatorTree>();
- }
- DPass() : FunctionPass(ID) {
- initializeDPassPass(*PassRegistry::getPassRegistry());
- }
- };
- char DPass::ID = 0;
-
-
- Module* makeLLVMModule(DPass *P) {
- const char *ModuleStrig =
- "declare i32 @g()\n" \
- "define void @f(i32 %x) {\n" \
- "bb0:\n" \
- " %y1 = add i32 %x, 1\n" \
- " %y2 = add i32 %x, 1\n" \
- " %y3 = invoke i32 @g() to label %bb1 unwind label %bb2\n" \
- "bb1:\n" \
- " %y4 = add i32 %x, 1\n" \
- " br label %bb4\n" \
- "bb2:\n" \
- " %y5 = landingpad i32 personality i32 ()* @g\n" \
- " cleanup\n" \
- " br label %bb4\n" \
- "bb3:\n" \
- " %y6 = add i32 %x, 1\n" \
- " %y7 = add i32 %x, 1\n" \
- " ret void\n" \
- "bb4:\n" \
- " %y8 = phi i32 [0, %bb2], [%y4, %bb1]\n"
- " %y9 = phi i32 [0, %bb2], [%y4, %bb1]\n"
- " ret void\n" \
- "}\n";
- LLVMContext &C = getGlobalContext();
- SMDiagnostic Err;
- return ParseAssemblyString(ModuleStrig, NULL, Err, C);
- }
-
- TEST(DominatorTree, Unreachable) {
- DPass *P = new DPass();
- Module *M = makeLLVMModule(P);
- PassManager Passes;
- Passes.add(P);
- Passes.run(*M);
- }
- }
-}
-
-INITIALIZE_PASS_BEGIN(DPass, "dpass", "dpass", false, false)
-INITIALIZE_PASS_DEPENDENCY(DominatorTree)
-INITIALIZE_PASS_END(DPass, "dpass", "dpass", false, false)
Removed: llvm/trunk/unittests/VMCore/IRBuilderTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/IRBuilderTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/IRBuilderTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/IRBuilderTest.cpp (removed)
@@ -1,184 +0,0 @@
-//===- llvm/unittest/VMCore/IRBuilderTest.cpp - IRBuilder tests -----------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/IRBuilder.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/DataLayout.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/IntrinsicInst.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/MDBuilder.h"
-#include "llvm/IR/Module.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-namespace {
-
-class IRBuilderTest : public testing::Test {
-protected:
- virtual void SetUp() {
- M.reset(new Module("MyModule", getGlobalContext()));
- FunctionType *FTy = FunctionType::get(Type::getVoidTy(getGlobalContext()),
- /*isVarArg=*/false);
- F = Function::Create(FTy, Function::ExternalLinkage, "", M.get());
- BB = BasicBlock::Create(getGlobalContext(), "", F);
- GV = new GlobalVariable(Type::getFloatTy(getGlobalContext()), true,
- GlobalValue::ExternalLinkage);
- }
-
- virtual void TearDown() {
- BB = 0;
- M.reset();
- }
-
- OwningPtr<Module> M;
- Function *F;
- BasicBlock *BB;
- GlobalVariable *GV;
-};
-
-TEST_F(IRBuilderTest, Lifetime) {
- IRBuilder<> Builder(BB);
- AllocaInst *Var1 = Builder.CreateAlloca(Builder.getInt8Ty());
- AllocaInst *Var2 = Builder.CreateAlloca(Builder.getInt32Ty());
- AllocaInst *Var3 = Builder.CreateAlloca(Builder.getInt8Ty(),
- Builder.getInt32(123));
-
- CallInst *Start1 = Builder.CreateLifetimeStart(Var1);
- CallInst *Start2 = Builder.CreateLifetimeStart(Var2);
- CallInst *Start3 = Builder.CreateLifetimeStart(Var3, Builder.getInt64(100));
-
- EXPECT_EQ(Start1->getArgOperand(0), Builder.getInt64(-1));
- EXPECT_EQ(Start2->getArgOperand(0), Builder.getInt64(-1));
- EXPECT_EQ(Start3->getArgOperand(0), Builder.getInt64(100));
-
- EXPECT_EQ(Start1->getArgOperand(1), Var1);
- EXPECT_NE(Start2->getArgOperand(1), Var2);
- EXPECT_EQ(Start3->getArgOperand(1), Var3);
-
- Value *End1 = Builder.CreateLifetimeEnd(Var1);
- Builder.CreateLifetimeEnd(Var2);
- Builder.CreateLifetimeEnd(Var3);
-
- IntrinsicInst *II_Start1 = dyn_cast<IntrinsicInst>(Start1);
- IntrinsicInst *II_End1 = dyn_cast<IntrinsicInst>(End1);
- ASSERT_TRUE(II_Start1 != NULL);
- EXPECT_EQ(II_Start1->getIntrinsicID(), Intrinsic::lifetime_start);
- ASSERT_TRUE(II_End1 != NULL);
- EXPECT_EQ(II_End1->getIntrinsicID(), Intrinsic::lifetime_end);
-}
-
-TEST_F(IRBuilderTest, CreateCondBr) {
- IRBuilder<> Builder(BB);
- BasicBlock *TBB = BasicBlock::Create(getGlobalContext(), "", F);
- BasicBlock *FBB = BasicBlock::Create(getGlobalContext(), "", F);
-
- BranchInst *BI = Builder.CreateCondBr(Builder.getTrue(), TBB, FBB);
- TerminatorInst *TI = BB->getTerminator();
- EXPECT_EQ(BI, TI);
- EXPECT_EQ(2u, TI->getNumSuccessors());
- EXPECT_EQ(TBB, TI->getSuccessor(0));
- EXPECT_EQ(FBB, TI->getSuccessor(1));
-
- BI->eraseFromParent();
- MDNode *Weights = MDBuilder(getGlobalContext()).createBranchWeights(42, 13);
- BI = Builder.CreateCondBr(Builder.getTrue(), TBB, FBB, Weights);
- TI = BB->getTerminator();
- EXPECT_EQ(BI, TI);
- EXPECT_EQ(2u, TI->getNumSuccessors());
- EXPECT_EQ(TBB, TI->getSuccessor(0));
- EXPECT_EQ(FBB, TI->getSuccessor(1));
- EXPECT_EQ(Weights, TI->getMetadata(LLVMContext::MD_prof));
-}
-
-TEST_F(IRBuilderTest, LandingPadName) {
- IRBuilder<> Builder(BB);
- LandingPadInst *LP = Builder.CreateLandingPad(Builder.getInt32Ty(),
- Builder.getInt32(0), 0, "LP");
- EXPECT_EQ(LP->getName(), "LP");
-}
-
-TEST_F(IRBuilderTest, GetIntTy) {
- IRBuilder<> Builder(BB);
- IntegerType *Ty1 = Builder.getInt1Ty();
- EXPECT_EQ(Ty1, IntegerType::get(getGlobalContext(), 1));
-
- DataLayout* DL = new DataLayout(M.get());
- IntegerType *IntPtrTy = Builder.getIntPtrTy(DL);
- unsigned IntPtrBitSize = DL->getPointerSizeInBits(0);
- EXPECT_EQ(IntPtrTy, IntegerType::get(getGlobalContext(), IntPtrBitSize));
-}
-
-TEST_F(IRBuilderTest, FastMathFlags) {
- IRBuilder<> Builder(BB);
- Value *F;
- Instruction *FDiv, *FAdd;
-
- F = Builder.CreateLoad(GV);
- F = Builder.CreateFAdd(F, F);
-
- EXPECT_FALSE(Builder.getFastMathFlags().any());
- ASSERT_TRUE(isa<Instruction>(F));
- FAdd = cast<Instruction>(F);
- EXPECT_FALSE(FAdd->hasNoNaNs());
-
- FastMathFlags FMF;
- Builder.SetFastMathFlags(FMF);
-
- F = Builder.CreateFAdd(F, F);
- EXPECT_FALSE(Builder.getFastMathFlags().any());
-
- FMF.setUnsafeAlgebra();
- Builder.SetFastMathFlags(FMF);
-
- F = Builder.CreateFAdd(F, F);
- EXPECT_TRUE(Builder.getFastMathFlags().any());
- ASSERT_TRUE(isa<Instruction>(F));
- FAdd = cast<Instruction>(F);
- EXPECT_TRUE(FAdd->hasNoNaNs());
-
- F = Builder.CreateFDiv(F, F);
- EXPECT_TRUE(Builder.getFastMathFlags().any());
- EXPECT_TRUE(Builder.getFastMathFlags().UnsafeAlgebra);
- ASSERT_TRUE(isa<Instruction>(F));
- FDiv = cast<Instruction>(F);
- EXPECT_TRUE(FDiv->hasAllowReciprocal());
-
- Builder.clearFastMathFlags();
-
- F = Builder.CreateFDiv(F, F);
- ASSERT_TRUE(isa<Instruction>(F));
- FDiv = cast<Instruction>(F);
- EXPECT_FALSE(FDiv->hasAllowReciprocal());
-
- FMF.clear();
- FMF.setAllowReciprocal();
- Builder.SetFastMathFlags(FMF);
-
- F = Builder.CreateFDiv(F, F);
- EXPECT_TRUE(Builder.getFastMathFlags().any());
- EXPECT_TRUE(Builder.getFastMathFlags().AllowReciprocal);
- ASSERT_TRUE(isa<Instruction>(F));
- FDiv = cast<Instruction>(F);
- EXPECT_TRUE(FDiv->hasAllowReciprocal());
-
- Builder.clearFastMathFlags();
-
- F = Builder.CreateFDiv(F, F);
- ASSERT_TRUE(isa<Instruction>(F));
- FDiv = cast<Instruction>(F);
- EXPECT_FALSE(FDiv->getFastMathFlags().any());
- FDiv->copyFastMathFlags(FAdd);
- EXPECT_TRUE(FDiv->hasNoNaNs());
-
-}
-
-}
Removed: llvm/trunk/unittests/VMCore/InstructionsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/InstructionsTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/InstructionsTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/InstructionsTest.cpp (removed)
@@ -1,284 +0,0 @@
-//===- llvm/unittest/VMCore/InstructionsTest.cpp - Instructions unit tests ===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/Instructions.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/Analysis/ValueTracking.h"
-#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/IRBuilder.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/MDBuilder.h"
-#include "llvm/IR/Operator.h"
-#include "gtest/gtest.h"
-
-namespace llvm {
-namespace {
-
-TEST(InstructionsTest, ReturnInst) {
- LLVMContext &C(getGlobalContext());
-
- // test for PR6589
- const ReturnInst* r0 = ReturnInst::Create(C);
- EXPECT_EQ(r0->getNumOperands(), 0U);
- EXPECT_EQ(r0->op_begin(), r0->op_end());
-
- IntegerType* Int1 = IntegerType::get(C, 1);
- Constant* One = ConstantInt::get(Int1, 1, true);
- const ReturnInst* r1 = ReturnInst::Create(C, One);
- EXPECT_EQ(1U, r1->getNumOperands());
- User::const_op_iterator b(r1->op_begin());
- EXPECT_NE(r1->op_end(), b);
- EXPECT_EQ(One, *b);
- EXPECT_EQ(One, r1->getOperand(0));
- ++b;
- EXPECT_EQ(r1->op_end(), b);
-
- // clean up
- delete r0;
- delete r1;
-}
-
-TEST(InstructionsTest, BranchInst) {
- LLVMContext &C(getGlobalContext());
-
- // Make a BasicBlocks
- BasicBlock* bb0 = BasicBlock::Create(C);
- BasicBlock* bb1 = BasicBlock::Create(C);
-
- // Mandatory BranchInst
- const BranchInst* b0 = BranchInst::Create(bb0);
-
- EXPECT_TRUE(b0->isUnconditional());
- EXPECT_FALSE(b0->isConditional());
- EXPECT_EQ(1U, b0->getNumSuccessors());
-
- // check num operands
- EXPECT_EQ(1U, b0->getNumOperands());
-
- EXPECT_NE(b0->op_begin(), b0->op_end());
- EXPECT_EQ(b0->op_end(), llvm::next(b0->op_begin()));
-
- EXPECT_EQ(b0->op_end(), llvm::next(b0->op_begin()));
-
- IntegerType* Int1 = IntegerType::get(C, 1);
- Constant* One = ConstantInt::get(Int1, 1, true);
-
- // Conditional BranchInst
- BranchInst* b1 = BranchInst::Create(bb0, bb1, One);
-
- EXPECT_FALSE(b1->isUnconditional());
- EXPECT_TRUE(b1->isConditional());
- EXPECT_EQ(2U, b1->getNumSuccessors());
-
- // check num operands
- EXPECT_EQ(3U, b1->getNumOperands());
-
- User::const_op_iterator b(b1->op_begin());
-
- // check COND
- EXPECT_NE(b, b1->op_end());
- EXPECT_EQ(One, *b);
- EXPECT_EQ(One, b1->getOperand(0));
- EXPECT_EQ(One, b1->getCondition());
- ++b;
-
- // check ELSE
- EXPECT_EQ(bb1, *b);
- EXPECT_EQ(bb1, b1->getOperand(1));
- EXPECT_EQ(bb1, b1->getSuccessor(1));
- ++b;
-
- // check THEN
- EXPECT_EQ(bb0, *b);
- EXPECT_EQ(bb0, b1->getOperand(2));
- EXPECT_EQ(bb0, b1->getSuccessor(0));
- ++b;
-
- EXPECT_EQ(b1->op_end(), b);
-
- // clean up
- delete b0;
- delete b1;
-
- delete bb0;
- delete bb1;
-}
-
-TEST(InstructionsTest, CastInst) {
- LLVMContext &C(getGlobalContext());
-
- Type* Int8Ty = Type::getInt8Ty(C);
- Type* Int64Ty = Type::getInt64Ty(C);
- Type* V8x8Ty = VectorType::get(Int8Ty, 8);
- Type* V8x64Ty = VectorType::get(Int64Ty, 8);
- Type* X86MMXTy = Type::getX86_MMXTy(C);
-
- const Constant* c8 = Constant::getNullValue(V8x8Ty);
- const Constant* c64 = Constant::getNullValue(V8x64Ty);
-
- EXPECT_TRUE(CastInst::isCastable(V8x8Ty, X86MMXTy));
- EXPECT_TRUE(CastInst::isCastable(X86MMXTy, V8x8Ty));
- EXPECT_FALSE(CastInst::isCastable(Int64Ty, X86MMXTy));
- EXPECT_TRUE(CastInst::isCastable(V8x64Ty, V8x8Ty));
- EXPECT_TRUE(CastInst::isCastable(V8x8Ty, V8x64Ty));
- EXPECT_EQ(CastInst::Trunc, CastInst::getCastOpcode(c64, true, V8x8Ty, true));
- EXPECT_EQ(CastInst::SExt, CastInst::getCastOpcode(c8, true, V8x64Ty, true));
-}
-
-
-
-TEST(InstructionsTest, VectorGep) {
- LLVMContext &C(getGlobalContext());
-
- // Type Definitions
- PointerType *Ptri8Ty = PointerType::get(IntegerType::get(C, 8), 0);
- PointerType *Ptri32Ty = PointerType::get(IntegerType::get(C, 8), 0);
-
- VectorType *V2xi8PTy = VectorType::get(Ptri8Ty, 2);
- VectorType *V2xi32PTy = VectorType::get(Ptri32Ty, 2);
-
- // Test different aspects of the vector-of-pointers type
- // and GEPs which use this type.
- ConstantInt *Ci32a = ConstantInt::get(C, APInt(32, 1492));
- ConstantInt *Ci32b = ConstantInt::get(C, APInt(32, 1948));
- std::vector<Constant*> ConstVa(2, Ci32a);
- std::vector<Constant*> ConstVb(2, Ci32b);
- Constant *C2xi32a = ConstantVector::get(ConstVa);
- Constant *C2xi32b = ConstantVector::get(ConstVb);
-
- CastInst *PtrVecA = new IntToPtrInst(C2xi32a, V2xi32PTy);
- CastInst *PtrVecB = new IntToPtrInst(C2xi32b, V2xi32PTy);
-
- ICmpInst *ICmp0 = new ICmpInst(ICmpInst::ICMP_SGT, PtrVecA, PtrVecB);
- ICmpInst *ICmp1 = new ICmpInst(ICmpInst::ICMP_ULT, PtrVecA, PtrVecB);
- EXPECT_NE(ICmp0, ICmp1); // suppress warning.
-
- GetElementPtrInst *Gep0 = GetElementPtrInst::Create(PtrVecA, C2xi32a);
- GetElementPtrInst *Gep1 = GetElementPtrInst::Create(PtrVecA, C2xi32b);
- GetElementPtrInst *Gep2 = GetElementPtrInst::Create(PtrVecB, C2xi32a);
- GetElementPtrInst *Gep3 = GetElementPtrInst::Create(PtrVecB, C2xi32b);
-
- CastInst *BTC0 = new BitCastInst(Gep0, V2xi8PTy);
- CastInst *BTC1 = new BitCastInst(Gep1, V2xi8PTy);
- CastInst *BTC2 = new BitCastInst(Gep2, V2xi8PTy);
- CastInst *BTC3 = new BitCastInst(Gep3, V2xi8PTy);
-
- Value *S0 = BTC0->stripPointerCasts();
- Value *S1 = BTC1->stripPointerCasts();
- Value *S2 = BTC2->stripPointerCasts();
- Value *S3 = BTC3->stripPointerCasts();
-
- EXPECT_NE(S0, Gep0);
- EXPECT_NE(S1, Gep1);
- EXPECT_NE(S2, Gep2);
- EXPECT_NE(S3, Gep3);
-
- int64_t Offset;
- DataLayout TD("e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3"
- "2:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80"
- ":128:128-n8:16:32:64-S128");
- // Make sure we don't crash
- GetPointerBaseWithConstantOffset(Gep0, Offset, TD);
- GetPointerBaseWithConstantOffset(Gep1, Offset, TD);
- GetPointerBaseWithConstantOffset(Gep2, Offset, TD);
- GetPointerBaseWithConstantOffset(Gep3, Offset, TD);
-
- // Gep of Geps
- GetElementPtrInst *GepII0 = GetElementPtrInst::Create(Gep0, C2xi32b);
- GetElementPtrInst *GepII1 = GetElementPtrInst::Create(Gep1, C2xi32a);
- GetElementPtrInst *GepII2 = GetElementPtrInst::Create(Gep2, C2xi32b);
- GetElementPtrInst *GepII3 = GetElementPtrInst::Create(Gep3, C2xi32a);
-
- EXPECT_EQ(GepII0->getNumIndices(), 1u);
- EXPECT_EQ(GepII1->getNumIndices(), 1u);
- EXPECT_EQ(GepII2->getNumIndices(), 1u);
- EXPECT_EQ(GepII3->getNumIndices(), 1u);
-
- EXPECT_FALSE(GepII0->hasAllZeroIndices());
- EXPECT_FALSE(GepII1->hasAllZeroIndices());
- EXPECT_FALSE(GepII2->hasAllZeroIndices());
- EXPECT_FALSE(GepII3->hasAllZeroIndices());
-
- delete GepII0;
- delete GepII1;
- delete GepII2;
- delete GepII3;
-
- delete BTC0;
- delete BTC1;
- delete BTC2;
- delete BTC3;
-
- delete Gep0;
- delete Gep1;
- delete Gep2;
- delete Gep3;
-
- delete ICmp0;
- delete ICmp1;
- delete PtrVecA;
- delete PtrVecB;
-}
-
-TEST(InstructionsTest, FPMathOperator) {
- LLVMContext &Context = getGlobalContext();
- IRBuilder<> Builder(Context);
- MDBuilder MDHelper(Context);
- Instruction *I = Builder.CreatePHI(Builder.getDoubleTy(), 0);
- MDNode *MD1 = MDHelper.createFPMath(1.0);
- Value *V1 = Builder.CreateFAdd(I, I, "", MD1);
- EXPECT_TRUE(isa<FPMathOperator>(V1));
- FPMathOperator *O1 = cast<FPMathOperator>(V1);
- EXPECT_EQ(O1->getFPAccuracy(), 1.0);
- delete V1;
- delete I;
-}
-
-
-TEST(InstructionsTest, isEliminableCastPair) {
- LLVMContext &C(getGlobalContext());
-
- Type* Int32Ty = Type::getInt32Ty(C);
- Type* Int64Ty = Type::getInt64Ty(C);
- Type* Int64PtrTy = Type::getInt64PtrTy(C);
-
- // Source and destination pointers have same size -> bitcast.
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int64Ty, Int64PtrTy,
- Int32Ty, 0, Int32Ty),
- CastInst::BitCast);
-
- // Source and destination pointers have different sizes -> fail.
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int64Ty, Int64PtrTy,
- Int32Ty, 0, Int64Ty),
- 0U);
-
- // Middle pointer big enough -> bitcast.
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::PtrToInt,
- Int64Ty, Int64PtrTy, Int64Ty,
- 0, Int64Ty, 0),
- CastInst::BitCast);
-
- // Middle pointer too small -> fail.
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::PtrToInt,
- Int64Ty, Int64PtrTy, Int64Ty,
- 0, Int32Ty, 0),
- 0U);
-}
-
-} // end anonymous namespace
-} // end namespace llvm
Removed: llvm/trunk/unittests/VMCore/MDBuilderTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/MDBuilderTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/MDBuilderTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/MDBuilderTest.cpp (removed)
@@ -1,106 +0,0 @@
-//===- llvm/unittests/MDBuilderTest.cpp - MDBuilder unit tests ------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/MDBuilder.h"
-#include "llvm/IR/IRBuilder.h"
-#include "llvm/IR/Operator.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-namespace {
-
-class MDBuilderTest : public testing::Test {
-protected:
- LLVMContext Context;
-};
-
-TEST_F(MDBuilderTest, createString) {
- MDBuilder MDHelper(Context);
- MDString *Str0 = MDHelper.createString("");
- MDString *Str1 = MDHelper.createString("string");
- EXPECT_EQ(Str0->getString(), StringRef(""));
- EXPECT_EQ(Str1->getString(), StringRef("string"));
-}
-TEST_F(MDBuilderTest, createFPMath) {
- MDBuilder MDHelper(Context);
- MDNode *MD0 = MDHelper.createFPMath(0.0);
- MDNode *MD1 = MDHelper.createFPMath(1.0);
- EXPECT_EQ(MD0, (MDNode *)0);
- EXPECT_NE(MD1, (MDNode *)0);
- EXPECT_EQ(MD1->getNumOperands(), 1U);
- Value *Op = MD1->getOperand(0);
- EXPECT_TRUE(isa<ConstantFP>(Op));
- EXPECT_TRUE(Op->getType()->isFloatingPointTy());
- ConstantFP *Val = cast<ConstantFP>(Op);
- EXPECT_TRUE(Val->isExactlyValue(1.0));
-}
-TEST_F(MDBuilderTest, createRangeMetadata) {
- MDBuilder MDHelper(Context);
- APInt A(8, 1), B(8, 2);
- MDNode *R0 = MDHelper.createRange(A, A);
- MDNode *R1 = MDHelper.createRange(A, B);
- EXPECT_EQ(R0, (MDNode *)0);
- EXPECT_NE(R1, (MDNode *)0);
- EXPECT_EQ(R1->getNumOperands(), 2U);
- EXPECT_TRUE(isa<ConstantInt>(R1->getOperand(0)));
- EXPECT_TRUE(isa<ConstantInt>(R1->getOperand(1)));
- ConstantInt *C0 = cast<ConstantInt>(R1->getOperand(0));
- ConstantInt *C1 = cast<ConstantInt>(R1->getOperand(1));
- EXPECT_EQ(C0->getValue(), A);
- EXPECT_EQ(C1->getValue(), B);
-}
-TEST_F(MDBuilderTest, createAnonymousTBAARoot) {
- MDBuilder MDHelper(Context);
- MDNode *R0 = MDHelper.createAnonymousTBAARoot();
- MDNode *R1 = MDHelper.createAnonymousTBAARoot();
- EXPECT_NE(R0, R1);
- EXPECT_GE(R0->getNumOperands(), 1U);
- EXPECT_GE(R1->getNumOperands(), 1U);
- EXPECT_EQ(R0->getOperand(0), R0);
- EXPECT_EQ(R1->getOperand(0), R1);
- EXPECT_TRUE(R0->getNumOperands() == 1 || R0->getOperand(1) == 0);
- EXPECT_TRUE(R1->getNumOperands() == 1 || R1->getOperand(1) == 0);
-}
-TEST_F(MDBuilderTest, createTBAARoot) {
- MDBuilder MDHelper(Context);
- MDNode *R0 = MDHelper.createTBAARoot("Root");
- MDNode *R1 = MDHelper.createTBAARoot("Root");
- EXPECT_EQ(R0, R1);
- EXPECT_GE(R0->getNumOperands(), 1U);
- EXPECT_TRUE(isa<MDString>(R0->getOperand(0)));
- EXPECT_EQ(cast<MDString>(R0->getOperand(0))->getString(), "Root");
- EXPECT_TRUE(R0->getNumOperands() == 1 || R0->getOperand(1) == 0);
-}
-TEST_F(MDBuilderTest, createTBAANode) {
- MDBuilder MDHelper(Context);
- MDNode *R = MDHelper.createTBAARoot("Root");
- MDNode *N0 = MDHelper.createTBAANode("Node", R);
- MDNode *N1 = MDHelper.createTBAANode("edoN", R);
- MDNode *N2 = MDHelper.createTBAANode("Node", R, true);
- MDNode *N3 = MDHelper.createTBAANode("Node", R);
- EXPECT_EQ(N0, N3);
- EXPECT_NE(N0, N1);
- EXPECT_NE(N0, N2);
- EXPECT_GE(N0->getNumOperands(), 2U);
- EXPECT_GE(N1->getNumOperands(), 2U);
- EXPECT_GE(N2->getNumOperands(), 3U);
- EXPECT_TRUE(isa<MDString>(N0->getOperand(0)));
- EXPECT_TRUE(isa<MDString>(N1->getOperand(0)));
- EXPECT_TRUE(isa<MDString>(N2->getOperand(0)));
- EXPECT_EQ(cast<MDString>(N0->getOperand(0))->getString(), "Node");
- EXPECT_EQ(cast<MDString>(N1->getOperand(0))->getString(), "edoN");
- EXPECT_EQ(cast<MDString>(N2->getOperand(0))->getString(), "Node");
- EXPECT_EQ(N0->getOperand(1), R);
- EXPECT_EQ(N1->getOperand(1), R);
- EXPECT_EQ(N2->getOperand(1), R);
- EXPECT_TRUE(isa<ConstantInt>(N2->getOperand(2)));
- EXPECT_EQ(cast<ConstantInt>(N2->getOperand(2))->getZExtValue(), 1U);
-}
-}
Removed: llvm/trunk/unittests/VMCore/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/Makefile?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/Makefile (original)
+++ llvm/trunk/unittests/VMCore/Makefile (removed)
@@ -1,15 +0,0 @@
-##===- unittests/VMCore/Makefile ---------------------------*- Makefile -*-===##
-#
-# The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-##===----------------------------------------------------------------------===##
-
-LEVEL = ../..
-TESTNAME = VMCore
-LINK_COMPONENTS := core ipa asmparser
-
-include $(LEVEL)/Makefile.config
-include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
Removed: llvm/trunk/unittests/VMCore/MetadataTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/MetadataTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/MetadataTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/MetadataTest.cpp (removed)
@@ -1,152 +0,0 @@
-//===- llvm/unittest/VMCore/Metadata.cpp - Metadata unit tests ------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/Metadata.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
-#include "llvm/IR/Type.h"
-#include "llvm/Support/ValueHandle.h"
-#include "llvm/Support/raw_ostream.h"
-#include "gtest/gtest.h"
-using namespace llvm;
-
-namespace {
-
-class MetadataTest : public testing::Test {
-protected:
- LLVMContext Context;
-};
-typedef MetadataTest MDStringTest;
-
-// Test that construction of MDString with different value produces different
-// MDString objects, even with the same string pointer and nulls in the string.
-TEST_F(MDStringTest, CreateDifferent) {
- char x[3] = { 'f', 0, 'A' };
- MDString *s1 = MDString::get(Context, StringRef(&x[0], 3));
- x[2] = 'B';
- MDString *s2 = MDString::get(Context, StringRef(&x[0], 3));
- EXPECT_NE(s1, s2);
-}
-
-// Test that creation of MDStrings with the same string contents produces the
-// same MDString object, even with different pointers.
-TEST_F(MDStringTest, CreateSame) {
- char x[4] = { 'a', 'b', 'c', 'X' };
- char y[4] = { 'a', 'b', 'c', 'Y' };
-
- MDString *s1 = MDString::get(Context, StringRef(&x[0], 3));
- MDString *s2 = MDString::get(Context, StringRef(&y[0], 3));
- EXPECT_EQ(s1, s2);
-}
-
-// Test that MDString prints out the string we fed it.
-TEST_F(MDStringTest, PrintingSimple) {
- char *str = new char[13];
- strncpy(str, "testing 1 2 3", 13);
- MDString *s = MDString::get(Context, StringRef(str, 13));
- strncpy(str, "aaaaaaaaaaaaa", 13);
- delete[] str;
-
- std::string Str;
- raw_string_ostream oss(Str);
- s->print(oss);
- EXPECT_STREQ("metadata !\"testing 1 2 3\"", oss.str().c_str());
-}
-
-// Test printing of MDString with non-printable characters.
-TEST_F(MDStringTest, PrintingComplex) {
- char str[5] = {0, '\n', '"', '\\', (char)-1};
- MDString *s = MDString::get(Context, StringRef(str+0, 5));
- std::string Str;
- raw_string_ostream oss(Str);
- s->print(oss);
- EXPECT_STREQ("metadata !\"\\00\\0A\\22\\5C\\FF\"", oss.str().c_str());
-}
-
-typedef MetadataTest MDNodeTest;
-
-// Test the two constructors, and containing other Constants.
-TEST_F(MDNodeTest, Simple) {
- char x[3] = { 'a', 'b', 'c' };
- char y[3] = { '1', '2', '3' };
-
- MDString *s1 = MDString::get(Context, StringRef(&x[0], 3));
- MDString *s2 = MDString::get(Context, StringRef(&y[0], 3));
- ConstantInt *CI = ConstantInt::get(getGlobalContext(), APInt(8, 0));
-
- std::vector<Value *> V;
- V.push_back(s1);
- V.push_back(CI);
- V.push_back(s2);
-
- MDNode *n1 = MDNode::get(Context, V);
- Value *const c1 = n1;
- MDNode *n2 = MDNode::get(Context, c1);
- Value *const c2 = n2;
- MDNode *n3 = MDNode::get(Context, V);
- MDNode *n4 = MDNode::getIfExists(Context, V);
- MDNode *n5 = MDNode::getIfExists(Context, c1);
- MDNode *n6 = MDNode::getIfExists(Context, c2);
- EXPECT_NE(n1, n2);
-#ifdef ENABLE_MDNODE_UNIQUING
- EXPECT_EQ(n1, n3);
-#else
- (void) n3;
-#endif
- EXPECT_EQ(n4, n1);
- EXPECT_EQ(n5, n2);
- EXPECT_EQ(n6, (Value*)0);
-
- EXPECT_EQ(3u, n1->getNumOperands());
- EXPECT_EQ(s1, n1->getOperand(0));
- EXPECT_EQ(CI, n1->getOperand(1));
- EXPECT_EQ(s2, n1->getOperand(2));
-
- EXPECT_EQ(1u, n2->getNumOperands());
- EXPECT_EQ(n1, n2->getOperand(0));
-}
-
-TEST_F(MDNodeTest, Delete) {
- Constant *C = ConstantInt::get(Type::getInt32Ty(getGlobalContext()), 1);
- Instruction *I = new BitCastInst(C, Type::getInt32Ty(getGlobalContext()));
-
- Value *const V = I;
- MDNode *n = MDNode::get(Context, V);
- WeakVH wvh = n;
-
- EXPECT_EQ(n, wvh);
-
- delete I;
-}
-
-TEST(NamedMDNodeTest, Search) {
- LLVMContext Context;
- Constant *C = ConstantInt::get(Type::getInt32Ty(Context), 1);
- Constant *C2 = ConstantInt::get(Type::getInt32Ty(Context), 2);
-
- Value *const V = C;
- Value *const V2 = C2;
- MDNode *n = MDNode::get(Context, V);
- MDNode *n2 = MDNode::get(Context, V2);
-
- Module M("MyModule", Context);
- const char *Name = "llvm.NMD1";
- NamedMDNode *NMD = M.getOrInsertNamedMetadata(Name);
- NMD->addOperand(n);
- NMD->addOperand(n2);
-
- std::string Str;
- raw_string_ostream oss(Str);
- NMD->print(oss);
- EXPECT_STREQ("!llvm.NMD1 = !{!0, !1}\n",
- oss.str().c_str());
-}
-}
Removed: llvm/trunk/unittests/VMCore/PassManagerTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/PassManagerTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/PassManagerTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/PassManagerTest.cpp (removed)
@@ -1,552 +0,0 @@
-//===- llvm/unittest/VMCore/PassManager.cpp - Constants unit tests ------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/PassManager.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/Analysis/CallGraphSCCPass.h"
-#include "llvm/Analysis/LoopInfo.h"
-#include "llvm/Analysis/LoopPass.h"
-#include "llvm/Analysis/Verifier.h"
-#include "llvm/Assembly/PrintModulePass.h"
-#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/CallingConv.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/GlobalVariable.h"
-#include "llvm/IR/InlineAsm.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
-#include "llvm/Pass.h"
-#include "llvm/Support/MathExtras.h"
-#include "llvm/Support/raw_ostream.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-namespace llvm {
- void initializeModuleNDMPass(PassRegistry&);
- void initializeFPassPass(PassRegistry&);
- void initializeCGPassPass(PassRegistry&);
- void initializeLPassPass(PassRegistry&);
- void initializeBPassPass(PassRegistry&);
-
- namespace {
- // ND = no deps
- // NM = no modifications
- struct ModuleNDNM: public ModulePass {
- public:
- static char run;
- static char ID;
- ModuleNDNM() : ModulePass(ID) { }
- virtual bool runOnModule(Module &M) {
- run++;
- return false;
- }
- virtual void getAnalysisUsage(AnalysisUsage &AU) const {
- AU.setPreservesAll();
- }
- };
- char ModuleNDNM::ID=0;
- char ModuleNDNM::run=0;
-
- struct ModuleNDM : public ModulePass {
- public:
- static char run;
- static char ID;
- ModuleNDM() : ModulePass(ID) {}
- virtual bool runOnModule(Module &M) {
- run++;
- return true;
- }
- };
- char ModuleNDM::ID=0;
- char ModuleNDM::run=0;
-
- struct ModuleNDM2 : public ModulePass {
- public:
- static char run;
- static char ID;
- ModuleNDM2() : ModulePass(ID) {}
- virtual bool runOnModule(Module &M) {
- run++;
- return true;
- }
- };
- char ModuleNDM2::ID=0;
- char ModuleNDM2::run=0;
-
- struct ModuleDNM : public ModulePass {
- public:
- static char run;
- static char ID;
- ModuleDNM() : ModulePass(ID) {
- initializeModuleNDMPass(*PassRegistry::getPassRegistry());
- }
- virtual bool runOnModule(Module &M) {
- EXPECT_TRUE(getAnalysisIfAvailable<DataLayout>());
- run++;
- return false;
- }
- virtual void getAnalysisUsage(AnalysisUsage &AU) const {
- AU.addRequired<ModuleNDM>();
- AU.setPreservesAll();
- }
- };
- char ModuleDNM::ID=0;
- char ModuleDNM::run=0;
-
- template<typename P>
- struct PassTestBase : public P {
- protected:
- static int runc;
- static bool initialized;
- static bool finalized;
- int allocated;
- void run() {
- EXPECT_TRUE(initialized);
- EXPECT_FALSE(finalized);
- EXPECT_EQ(0, allocated);
- allocated++;
- runc++;
- }
- public:
- static char ID;
- static void finishedOK(int run) {
- EXPECT_GT(runc, 0);
- EXPECT_TRUE(initialized);
- EXPECT_TRUE(finalized);
- EXPECT_EQ(run, runc);
- }
- PassTestBase() : P(ID), allocated(0) {
- initialized = false;
- finalized = false;
- runc = 0;
- }
-
- virtual void releaseMemory() {
- EXPECT_GT(runc, 0);
- EXPECT_GT(allocated, 0);
- allocated--;
- }
- };
- template<typename P> char PassTestBase<P>::ID;
- template<typename P> int PassTestBase<P>::runc;
- template<typename P> bool PassTestBase<P>::initialized;
- template<typename P> bool PassTestBase<P>::finalized;
-
- template<typename T, typename P>
- struct PassTest : public PassTestBase<P> {
- public:
-#ifndef _MSC_VER // MSVC complains that Pass is not base class.
- using llvm::Pass::doInitialization;
- using llvm::Pass::doFinalization;
-#endif
- virtual bool doInitialization(T &t) {
- EXPECT_FALSE(PassTestBase<P>::initialized);
- PassTestBase<P>::initialized = true;
- return false;
- }
- virtual bool doFinalization(T &t) {
- EXPECT_FALSE(PassTestBase<P>::finalized);
- PassTestBase<P>::finalized = true;
- EXPECT_EQ(0, PassTestBase<P>::allocated);
- return false;
- }
- };
-
- struct CGPass : public PassTest<CallGraph, CallGraphSCCPass> {
- public:
- CGPass() {
- initializeCGPassPass(*PassRegistry::getPassRegistry());
- }
- virtual bool runOnSCC(CallGraphSCC &SCMM) {
- EXPECT_TRUE(getAnalysisIfAvailable<DataLayout>());
- run();
- return false;
- }
- };
-
- struct FPass : public PassTest<Module, FunctionPass> {
- public:
- virtual bool runOnFunction(Function &F) {
- // FIXME: PR4112
- // EXPECT_TRUE(getAnalysisIfAvailable<DataLayout>());
- run();
- return false;
- }
- };
-
- struct LPass : public PassTestBase<LoopPass> {
- private:
- static int initcount;
- static int fincount;
- public:
- LPass() {
- initializeLPassPass(*PassRegistry::getPassRegistry());
- initcount = 0; fincount=0;
- EXPECT_FALSE(initialized);
- }
- static void finishedOK(int run, int finalized) {
- PassTestBase<LoopPass>::finishedOK(run);
- EXPECT_EQ(run, initcount);
- EXPECT_EQ(finalized, fincount);
- }
- using llvm::Pass::doInitialization;
- using llvm::Pass::doFinalization;
- virtual bool doInitialization(Loop* L, LPPassManager &LPM) {
- initialized = true;
- initcount++;
- return false;
- }
- virtual bool runOnLoop(Loop *L, LPPassManager &LPM) {
- EXPECT_TRUE(getAnalysisIfAvailable<DataLayout>());
- run();
- return false;
- }
- virtual bool doFinalization() {
- fincount++;
- finalized = true;
- return false;
- }
- };
- int LPass::initcount=0;
- int LPass::fincount=0;
-
- struct BPass : public PassTestBase<BasicBlockPass> {
- private:
- static int inited;
- static int fin;
- public:
- static void finishedOK(int run, int N) {
- PassTestBase<BasicBlockPass>::finishedOK(run);
- EXPECT_EQ(inited, N);
- EXPECT_EQ(fin, N);
- }
- BPass() {
- inited = 0;
- fin = 0;
- }
- virtual bool doInitialization(Module &M) {
- EXPECT_FALSE(initialized);
- initialized = true;
- return false;
- }
- virtual bool doInitialization(Function &F) {
- inited++;
- return false;
- }
- virtual bool runOnBasicBlock(BasicBlock &BB) {
- EXPECT_TRUE(getAnalysisIfAvailable<DataLayout>());
- run();
- return false;
- }
- virtual bool doFinalization(Function &F) {
- fin++;
- return false;
- }
- virtual bool doFinalization(Module &M) {
- EXPECT_FALSE(finalized);
- finalized = true;
- EXPECT_EQ(0, allocated);
- return false;
- }
- };
- int BPass::inited=0;
- int BPass::fin=0;
-
- struct OnTheFlyTest: public ModulePass {
- public:
- static char ID;
- OnTheFlyTest() : ModulePass(ID) {
- initializeFPassPass(*PassRegistry::getPassRegistry());
- }
- virtual bool runOnModule(Module &M) {
- EXPECT_TRUE(getAnalysisIfAvailable<DataLayout>());
- for (Module::iterator I=M.begin(),E=M.end(); I != E; ++I) {
- Function &F = *I;
- {
- SCOPED_TRACE("Running on the fly function pass");
- getAnalysis<FPass>(F);
- }
- }
- return false;
- }
- virtual void getAnalysisUsage(AnalysisUsage &AU) const {
- AU.addRequired<FPass>();
- }
- };
- char OnTheFlyTest::ID=0;
-
- TEST(PassManager, RunOnce) {
- Module M("test-once", getGlobalContext());
- struct ModuleNDNM *mNDNM = new ModuleNDNM();
- struct ModuleDNM *mDNM = new ModuleDNM();
- struct ModuleNDM *mNDM = new ModuleNDM();
- struct ModuleNDM2 *mNDM2 = new ModuleNDM2();
-
- mNDM->run = mNDNM->run = mDNM->run = mNDM2->run = 0;
-
- PassManager Passes;
- Passes.add(new DataLayout(&M));
- Passes.add(mNDM2);
- Passes.add(mNDM);
- Passes.add(mNDNM);
- Passes.add(mDNM);
-
- Passes.run(M);
- // each pass must be run exactly once, since nothing invalidates them
- EXPECT_EQ(1, mNDM->run);
- EXPECT_EQ(1, mNDNM->run);
- EXPECT_EQ(1, mDNM->run);
- EXPECT_EQ(1, mNDM2->run);
- }
-
- TEST(PassManager, ReRun) {
- Module M("test-rerun", getGlobalContext());
- struct ModuleNDNM *mNDNM = new ModuleNDNM();
- struct ModuleDNM *mDNM = new ModuleDNM();
- struct ModuleNDM *mNDM = new ModuleNDM();
- struct ModuleNDM2 *mNDM2 = new ModuleNDM2();
-
- mNDM->run = mNDNM->run = mDNM->run = mNDM2->run = 0;
-
- PassManager Passes;
- Passes.add(new DataLayout(&M));
- Passes.add(mNDM);
- Passes.add(mNDNM);
- Passes.add(mNDM2);// invalidates mNDM needed by mDNM
- Passes.add(mDNM);
-
- Passes.run(M);
- // Some passes must be rerun because a pass that modified the
- // module/function was run in between
- EXPECT_EQ(2, mNDM->run);
- EXPECT_EQ(1, mNDNM->run);
- EXPECT_EQ(1, mNDM2->run);
- EXPECT_EQ(1, mDNM->run);
- }
-
- Module* makeLLVMModule();
-
- template<typename T>
- void MemoryTestHelper(int run) {
- OwningPtr<Module> M(makeLLVMModule());
- T *P = new T();
- PassManager Passes;
- Passes.add(new DataLayout(M.get()));
- Passes.add(P);
- Passes.run(*M);
- T::finishedOK(run);
- }
-
- template<typename T>
- void MemoryTestHelper(int run, int N) {
- Module *M = makeLLVMModule();
- T *P = new T();
- PassManager Passes;
- Passes.add(new DataLayout(M));
- Passes.add(P);
- Passes.run(*M);
- T::finishedOK(run, N);
- delete M;
- }
-
- TEST(PassManager, Memory) {
- // SCC#1: test1->test2->test3->test1
- // SCC#2: test4
- // SCC#3: indirect call node
- {
- SCOPED_TRACE("Callgraph pass");
- MemoryTestHelper<CGPass>(3);
- }
-
- {
- SCOPED_TRACE("Function pass");
- MemoryTestHelper<FPass>(4);// 4 functions
- }
-
- {
- SCOPED_TRACE("Loop pass");
- MemoryTestHelper<LPass>(2, 1); //2 loops, 1 function
- }
- {
- SCOPED_TRACE("Basic block pass");
- MemoryTestHelper<BPass>(7, 4); //9 basic blocks
- }
-
- }
-
- TEST(PassManager, MemoryOnTheFly) {
- Module *M = makeLLVMModule();
- {
- SCOPED_TRACE("Running OnTheFlyTest");
- struct OnTheFlyTest *O = new OnTheFlyTest();
- PassManager Passes;
- Passes.add(new DataLayout(M));
- Passes.add(O);
- Passes.run(*M);
-
- FPass::finishedOK(4);
- }
- delete M;
- }
-
- Module* makeLLVMModule() {
- // Module Construction
- Module* mod = new Module("test-mem", getGlobalContext());
- mod->setDataLayout("e-p: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-"
- "a0:0:64-s0:64:64-f80:128:128");
- mod->setTargetTriple("x86_64-unknown-linux-gnu");
-
- // Type Definitions
- std::vector<Type*>FuncTy_0_args;
- FunctionType* FuncTy_0 = FunctionType::get(
- /*Result=*/IntegerType::get(getGlobalContext(), 32),
- /*Params=*/FuncTy_0_args,
- /*isVarArg=*/false);
-
- std::vector<Type*>FuncTy_2_args;
- FuncTy_2_args.push_back(IntegerType::get(getGlobalContext(), 1));
- FunctionType* FuncTy_2 = FunctionType::get(
- /*Result=*/Type::getVoidTy(getGlobalContext()),
- /*Params=*/FuncTy_2_args,
- /*isVarArg=*/false);
-
-
- // Function Declarations
-
- Function* func_test1 = Function::Create(
- /*Type=*/FuncTy_0,
- /*Linkage=*/GlobalValue::ExternalLinkage,
- /*Name=*/"test1", mod);
- func_test1->setCallingConv(CallingConv::C);
- AttributeSet func_test1_PAL;
- func_test1->setAttributes(func_test1_PAL);
-
- Function* func_test2 = Function::Create(
- /*Type=*/FuncTy_0,
- /*Linkage=*/GlobalValue::ExternalLinkage,
- /*Name=*/"test2", mod);
- func_test2->setCallingConv(CallingConv::C);
- AttributeSet func_test2_PAL;
- func_test2->setAttributes(func_test2_PAL);
-
- Function* func_test3 = Function::Create(
- /*Type=*/FuncTy_0,
- /*Linkage=*/GlobalValue::ExternalLinkage,
- /*Name=*/"test3", mod);
- func_test3->setCallingConv(CallingConv::C);
- AttributeSet func_test3_PAL;
- func_test3->setAttributes(func_test3_PAL);
-
- Function* func_test4 = Function::Create(
- /*Type=*/FuncTy_2,
- /*Linkage=*/GlobalValue::ExternalLinkage,
- /*Name=*/"test4", mod);
- func_test4->setCallingConv(CallingConv::C);
- AttributeSet func_test4_PAL;
- func_test4->setAttributes(func_test4_PAL);
-
- // Global Variable Declarations
-
-
- // Constant Definitions
-
- // Global Variable Definitions
-
- // Function Definitions
-
- // Function: test1 (func_test1)
- {
-
- BasicBlock* label_entry = BasicBlock::Create(getGlobalContext(), "entry",func_test1,0);
-
- // Block entry (label_entry)
- CallInst* int32_3 = CallInst::Create(func_test2, "", label_entry);
- int32_3->setCallingConv(CallingConv::C);
- int32_3->setTailCall(false);AttributeSet int32_3_PAL;
- int32_3->setAttributes(int32_3_PAL);
-
- ReturnInst::Create(getGlobalContext(), int32_3, label_entry);
-
- }
-
- // Function: test2 (func_test2)
- {
-
- BasicBlock* label_entry_5 = BasicBlock::Create(getGlobalContext(), "entry",func_test2,0);
-
- // Block entry (label_entry_5)
- CallInst* int32_6 = CallInst::Create(func_test3, "", label_entry_5);
- int32_6->setCallingConv(CallingConv::C);
- int32_6->setTailCall(false);AttributeSet int32_6_PAL;
- int32_6->setAttributes(int32_6_PAL);
-
- ReturnInst::Create(getGlobalContext(), int32_6, label_entry_5);
-
- }
-
- // Function: test3 (func_test3)
- {
-
- BasicBlock* label_entry_8 = BasicBlock::Create(getGlobalContext(), "entry",func_test3,0);
-
- // Block entry (label_entry_8)
- CallInst* int32_9 = CallInst::Create(func_test1, "", label_entry_8);
- int32_9->setCallingConv(CallingConv::C);
- int32_9->setTailCall(false);AttributeSet int32_9_PAL;
- int32_9->setAttributes(int32_9_PAL);
-
- ReturnInst::Create(getGlobalContext(), int32_9, label_entry_8);
-
- }
-
- // Function: test4 (func_test4)
- {
- Function::arg_iterator args = func_test4->arg_begin();
- Value* int1_f = args++;
- int1_f->setName("f");
-
- BasicBlock* label_entry_11 = BasicBlock::Create(getGlobalContext(), "entry",func_test4,0);
- BasicBlock* label_bb = BasicBlock::Create(getGlobalContext(), "bb",func_test4,0);
- BasicBlock* label_bb1 = BasicBlock::Create(getGlobalContext(), "bb1",func_test4,0);
- BasicBlock* label_return = BasicBlock::Create(getGlobalContext(), "return",func_test4,0);
-
- // Block entry (label_entry_11)
- BranchInst::Create(label_bb, label_entry_11);
-
- // Block bb (label_bb)
- BranchInst::Create(label_bb, label_bb1, int1_f, label_bb);
-
- // Block bb1 (label_bb1)
- BranchInst::Create(label_bb1, label_return, int1_f, label_bb1);
-
- // Block return (label_return)
- ReturnInst::Create(getGlobalContext(), label_return);
-
- }
- return mod;
- }
-
- }
-}
-
-INITIALIZE_PASS(ModuleNDM, "mndm", "mndm", false, false)
-INITIALIZE_PASS_BEGIN(CGPass, "cgp","cgp", false, false)
-INITIALIZE_AG_DEPENDENCY(CallGraph)
-INITIALIZE_PASS_END(CGPass, "cgp","cgp", false, false)
-INITIALIZE_PASS(FPass, "fp","fp", false, false)
-INITIALIZE_PASS_BEGIN(LPass, "lp","lp", false, false)
-INITIALIZE_PASS_DEPENDENCY(LoopInfo)
-INITIALIZE_PASS_END(LPass, "lp","lp", false, false)
-INITIALIZE_PASS(BPass, "bp","bp", false, false)
Removed: llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/TypeBuilderTest.cpp (removed)
@@ -1,253 +0,0 @@
-//===- llvm/unittest/TypeBuilderTest.cpp - TypeBuilder tests --------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/TypeBuilder.h"
-#include "llvm/ADT/ArrayRef.h"
-#include "llvm/IR/LLVMContext.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-namespace {
-
-TEST(TypeBuilderTest, Void) {
- EXPECT_EQ(Type::getVoidTy(getGlobalContext()), (TypeBuilder<void, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getVoidTy(getGlobalContext()), (TypeBuilder<void, false>::get(getGlobalContext())));
- // Special cases for C compatibility:
- EXPECT_EQ(Type::getInt8PtrTy(getGlobalContext()),
- (TypeBuilder<void*, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8PtrTy(getGlobalContext()),
- (TypeBuilder<const void*, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8PtrTy(getGlobalContext()),
- (TypeBuilder<volatile void*, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8PtrTy(getGlobalContext()),
- (TypeBuilder<const volatile void*, false>::get(
- getGlobalContext())));
-}
-
-TEST(TypeBuilderTest, HostIntegers) {
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()), (TypeBuilder<int8_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()), (TypeBuilder<uint8_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt16Ty(getGlobalContext()), (TypeBuilder<int16_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt16Ty(getGlobalContext()), (TypeBuilder<uint16_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt32Ty(getGlobalContext()), (TypeBuilder<int32_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt32Ty(getGlobalContext()), (TypeBuilder<uint32_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt64Ty(getGlobalContext()), (TypeBuilder<int64_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt64Ty(getGlobalContext()), (TypeBuilder<uint64_t, false>::get(getGlobalContext())));
-
- EXPECT_EQ(IntegerType::get(getGlobalContext(), sizeof(size_t) * CHAR_BIT),
- (TypeBuilder<size_t, false>::get(getGlobalContext())));
- EXPECT_EQ(IntegerType::get(getGlobalContext(), sizeof(ptrdiff_t) * CHAR_BIT),
- (TypeBuilder<ptrdiff_t, false>::get(getGlobalContext())));
-}
-
-TEST(TypeBuilderTest, CrossCompilableIntegers) {
- EXPECT_EQ(IntegerType::get(getGlobalContext(), 1), (TypeBuilder<types::i<1>, true>::get(getGlobalContext())));
- EXPECT_EQ(IntegerType::get(getGlobalContext(), 1), (TypeBuilder<types::i<1>, false>::get(getGlobalContext())));
- EXPECT_EQ(IntegerType::get(getGlobalContext(), 72), (TypeBuilder<types::i<72>, true>::get(getGlobalContext())));
- EXPECT_EQ(IntegerType::get(getGlobalContext(), 72), (TypeBuilder<types::i<72>, false>::get(getGlobalContext())));
-}
-
-TEST(TypeBuilderTest, Float) {
- EXPECT_EQ(Type::getFloatTy(getGlobalContext()), (TypeBuilder<float, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getDoubleTy(getGlobalContext()), (TypeBuilder<double, false>::get(getGlobalContext())));
- // long double isn't supported yet.
- EXPECT_EQ(Type::getFloatTy(getGlobalContext()), (TypeBuilder<types::ieee_float, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getFloatTy(getGlobalContext()), (TypeBuilder<types::ieee_float, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getDoubleTy(getGlobalContext()), (TypeBuilder<types::ieee_double, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getDoubleTy(getGlobalContext()), (TypeBuilder<types::ieee_double, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getX86_FP80Ty(getGlobalContext()), (TypeBuilder<types::x86_fp80, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getX86_FP80Ty(getGlobalContext()), (TypeBuilder<types::x86_fp80, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getFP128Ty(getGlobalContext()), (TypeBuilder<types::fp128, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getFP128Ty(getGlobalContext()), (TypeBuilder<types::fp128, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getPPC_FP128Ty(getGlobalContext()), (TypeBuilder<types::ppc_fp128, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getPPC_FP128Ty(getGlobalContext()), (TypeBuilder<types::ppc_fp128, false>::get(getGlobalContext())));
-}
-
-TEST(TypeBuilderTest, Derived) {
- EXPECT_EQ(PointerType::getUnqual(Type::getInt8PtrTy(getGlobalContext())),
- (TypeBuilder<int8_t**, false>::get(getGlobalContext())));
- EXPECT_EQ(ArrayType::get(Type::getInt8Ty(getGlobalContext()), 7),
- (TypeBuilder<int8_t[7], false>::get(getGlobalContext())));
- EXPECT_EQ(ArrayType::get(Type::getInt8Ty(getGlobalContext()), 0),
- (TypeBuilder<int8_t[], false>::get(getGlobalContext())));
-
- EXPECT_EQ(PointerType::getUnqual(Type::getInt8PtrTy(getGlobalContext())),
- (TypeBuilder<types::i<8>**, false>::get(getGlobalContext())));
- EXPECT_EQ(ArrayType::get(Type::getInt8Ty(getGlobalContext()), 7),
- (TypeBuilder<types::i<8>[7], false>::get(getGlobalContext())));
- EXPECT_EQ(ArrayType::get(Type::getInt8Ty(getGlobalContext()), 0),
- (TypeBuilder<types::i<8>[], false>::get(getGlobalContext())));
-
- EXPECT_EQ(PointerType::getUnqual(Type::getInt8PtrTy(getGlobalContext())),
- (TypeBuilder<types::i<8>**, true>::get(getGlobalContext())));
- EXPECT_EQ(ArrayType::get(Type::getInt8Ty(getGlobalContext()), 7),
- (TypeBuilder<types::i<8>[7], true>::get(getGlobalContext())));
- EXPECT_EQ(ArrayType::get(Type::getInt8Ty(getGlobalContext()), 0),
- (TypeBuilder<types::i<8>[], true>::get(getGlobalContext())));
-
-
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<const int8_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<volatile int8_t, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<const volatile int8_t, false>::get(getGlobalContext())));
-
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<const types::i<8>, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<volatile types::i<8>, false>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<const volatile types::i<8>, false>::get(getGlobalContext())));
-
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<const types::i<8>, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<volatile types::i<8>, true>::get(getGlobalContext())));
- EXPECT_EQ(Type::getInt8Ty(getGlobalContext()),
- (TypeBuilder<const volatile types::i<8>, true>::get(getGlobalContext())));
-
- EXPECT_EQ(Type::getInt8PtrTy(getGlobalContext()),
- (TypeBuilder<const volatile int8_t*const volatile, false>::get(getGlobalContext())));
-}
-
-TEST(TypeBuilderTest, Functions) {
- std::vector<Type*> params;
- EXPECT_EQ(FunctionType::get(Type::getVoidTy(getGlobalContext()), params, false),
- (TypeBuilder<void(), true>::get(getGlobalContext())));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, true),
- (TypeBuilder<int8_t(...), false>::get(getGlobalContext())));
- params.push_back(TypeBuilder<int32_t*, false>::get(getGlobalContext()));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, false),
- (TypeBuilder<int8_t(const int32_t*), false>::get(getGlobalContext())));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, true),
- (TypeBuilder<int8_t(const int32_t*, ...), false>::get(getGlobalContext())));
- params.push_back(TypeBuilder<char*, false>::get(getGlobalContext()));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, false),
- (TypeBuilder<int8_t(int32_t*, void*), false>::get(getGlobalContext())));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, true),
- (TypeBuilder<int8_t(int32_t*, char*, ...), false>::get(getGlobalContext())));
- params.push_back(TypeBuilder<char, false>::get(getGlobalContext()));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, false),
- (TypeBuilder<int8_t(int32_t*, void*, char), false>::get(getGlobalContext())));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, true),
- (TypeBuilder<int8_t(int32_t*, char*, char, ...), false>::get(getGlobalContext())));
- params.push_back(TypeBuilder<char, false>::get(getGlobalContext()));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, false),
- (TypeBuilder<int8_t(int32_t*, void*, char, char), false>::get(getGlobalContext())));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, true),
- (TypeBuilder<int8_t(int32_t*, char*, char, char, ...),
- false>::get(getGlobalContext())));
- params.push_back(TypeBuilder<char, false>::get(getGlobalContext()));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, false),
- (TypeBuilder<int8_t(int32_t*, void*, char, char, char),
- false>::get(getGlobalContext())));
- EXPECT_EQ(FunctionType::get(Type::getInt8Ty(getGlobalContext()), params, true),
- (TypeBuilder<int8_t(int32_t*, char*, char, char, char, ...),
- false>::get(getGlobalContext())));
-}
-
-TEST(TypeBuilderTest, Context) {
- // We used to cache TypeBuilder results in static local variables. This
- // produced the same type for different contexts, which of course broke
- // things.
- LLVMContext context1;
- EXPECT_EQ(&context1,
- &(TypeBuilder<types::i<1>, true>::get(context1))->getContext());
- LLVMContext context2;
- EXPECT_EQ(&context2,
- &(TypeBuilder<types::i<1>, true>::get(context2))->getContext());
-}
-
-struct MyType {
- int a;
- int *b;
- void *array[1];
-};
-
-struct MyPortableType {
- int32_t a;
- int32_t *b;
- void *array[1];
-};
-
-} // anonymous namespace
-
-namespace llvm {
-template<bool cross> class TypeBuilder<MyType, cross> {
-public:
- static StructType *get(LLVMContext &Context) {
- // Using the static result variable ensures that the type is
- // only looked up once.
- std::vector<Type*> st;
- st.push_back(TypeBuilder<int, cross>::get(Context));
- st.push_back(TypeBuilder<int*, cross>::get(Context));
- st.push_back(TypeBuilder<void*[], cross>::get(Context));
- static StructType *const result = StructType::get(Context, st);
- return result;
- }
-
- // You may find this a convenient place to put some constants
- // to help with getelementptr. They don't have any effect on
- // the operation of TypeBuilder.
- enum Fields {
- FIELD_A,
- FIELD_B,
- FIELD_ARRAY
- };
-};
-
-template<bool cross> class TypeBuilder<MyPortableType, cross> {
-public:
- static StructType *get(LLVMContext &Context) {
- // Using the static result variable ensures that the type is
- // only looked up once.
- std::vector<Type*> st;
- st.push_back(TypeBuilder<types::i<32>, cross>::get(Context));
- st.push_back(TypeBuilder<types::i<32>*, cross>::get(Context));
- st.push_back(TypeBuilder<types::i<8>*[], cross>::get(Context));
- static StructType *const result = StructType::get(Context, st);
- return result;
- }
-
- // You may find this a convenient place to put some constants
- // to help with getelementptr. They don't have any effect on
- // the operation of TypeBuilder.
- enum Fields {
- FIELD_A,
- FIELD_B,
- FIELD_ARRAY
- };
-};
-} // namespace llvm
-namespace {
-
-TEST(TypeBuilderTest, Extensions) {
- EXPECT_EQ(PointerType::getUnqual(StructType::get(
- TypeBuilder<int, false>::get(getGlobalContext()),
- TypeBuilder<int*, false>::get(getGlobalContext()),
- TypeBuilder<void*[], false>::get(getGlobalContext()),
- (void*)0)),
- (TypeBuilder<MyType*, false>::get(getGlobalContext())));
- EXPECT_EQ(PointerType::getUnqual(StructType::get(
- TypeBuilder<types::i<32>, false>::get(getGlobalContext()),
- TypeBuilder<types::i<32>*, false>::get(getGlobalContext()),
- TypeBuilder<types::i<8>*[], false>::get(getGlobalContext()),
- (void*)0)),
- (TypeBuilder<MyPortableType*, false>::get(getGlobalContext())));
- EXPECT_EQ(PointerType::getUnqual(StructType::get(
- TypeBuilder<types::i<32>, false>::get(getGlobalContext()),
- TypeBuilder<types::i<32>*, false>::get(getGlobalContext()),
- TypeBuilder<types::i<8>*[], false>::get(getGlobalContext()),
- (void*)0)),
- (TypeBuilder<MyPortableType*, true>::get(getGlobalContext())));
-}
-
-} // anonymous namespace
Removed: llvm/trunk/unittests/VMCore/TypesTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/TypesTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/TypesTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/TypesTest.cpp (removed)
@@ -1,30 +0,0 @@
-//===- llvm/unittest/VMCore/TypesTest.cpp - Type unit tests ---------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/LLVMContext.h"
-#include "gtest/gtest.h"
-using namespace llvm;
-
-namespace {
-
-TEST(TypesTest, StructType) {
- LLVMContext C;
-
- // PR13522
- StructType *Struct = StructType::create(C, "FooBar");
- EXPECT_EQ("FooBar", Struct->getName());
- Struct->setName(Struct->getName().substr(0, 3));
- EXPECT_EQ("Foo", Struct->getName());
- Struct->setName("");
- EXPECT_TRUE(Struct->getName().empty());
- EXPECT_FALSE(Struct->hasName());
-}
-
-} // end anonymous namespace
Removed: llvm/trunk/unittests/VMCore/ValueMapTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/ValueMapTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/ValueMapTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/ValueMapTest.cpp (removed)
@@ -1,294 +0,0 @@
-//===- llvm/unittest/ADT/ValueMapTest.cpp - ValueMap unit tests -*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/ValueMap.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/Config/llvm-config.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LLVMContext.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-namespace {
-
-// Test fixture
-template<typename T>
-class ValueMapTest : public testing::Test {
-protected:
- Constant *ConstantV;
- OwningPtr<BitCastInst> BitcastV;
- OwningPtr<BinaryOperator> AddV;
-
- ValueMapTest() :
- ConstantV(ConstantInt::get(Type::getInt32Ty(getGlobalContext()), 0)),
- BitcastV(new BitCastInst(ConstantV, Type::getInt32Ty(getGlobalContext()))),
- AddV(BinaryOperator::CreateAdd(ConstantV, ConstantV)) {
- }
-};
-
-// Run everything on Value*, a subtype to make sure that casting works as
-// expected, and a const subtype to make sure we cast const correctly.
-typedef ::testing::Types<Value, Instruction, const Instruction> KeyTypes;
-TYPED_TEST_CASE(ValueMapTest, KeyTypes);
-
-TYPED_TEST(ValueMapTest, Null) {
- ValueMap<TypeParam*, int> VM1;
- VM1[NULL] = 7;
- EXPECT_EQ(7, VM1.lookup(NULL));
-}
-
-TYPED_TEST(ValueMapTest, FollowsValue) {
- ValueMap<TypeParam*, int> VM;
- VM[this->BitcastV.get()] = 7;
- EXPECT_EQ(7, VM.lookup(this->BitcastV.get()));
- EXPECT_EQ(0, VM.count(this->AddV.get()));
- this->BitcastV->replaceAllUsesWith(this->AddV.get());
- EXPECT_EQ(7, VM.lookup(this->AddV.get()));
- EXPECT_EQ(0, VM.count(this->BitcastV.get()));
- this->AddV.reset();
- EXPECT_EQ(0, VM.count(this->AddV.get()));
- EXPECT_EQ(0, VM.count(this->BitcastV.get()));
- EXPECT_EQ(0U, VM.size());
-}
-
-TYPED_TEST(ValueMapTest, OperationsWork) {
- ValueMap<TypeParam*, int> VM;
- ValueMap<TypeParam*, int> VM2(16); (void)VM2;
- typename ValueMapConfig<TypeParam*>::ExtraData Data;
- ValueMap<TypeParam*, int> VM3(Data, 16); (void)VM3;
- EXPECT_TRUE(VM.empty());
-
- VM[this->BitcastV.get()] = 7;
-
- // Find:
- typename ValueMap<TypeParam*, int>::iterator I =
- VM.find(this->BitcastV.get());
- ASSERT_TRUE(I != VM.end());
- EXPECT_EQ(this->BitcastV.get(), I->first);
- EXPECT_EQ(7, I->second);
- EXPECT_TRUE(VM.find(this->AddV.get()) == VM.end());
-
- // Const find:
- const ValueMap<TypeParam*, int> &CVM = VM;
- typename ValueMap<TypeParam*, int>::const_iterator CI =
- CVM.find(this->BitcastV.get());
- ASSERT_TRUE(CI != CVM.end());
- EXPECT_EQ(this->BitcastV.get(), CI->first);
- EXPECT_EQ(7, CI->second);
- EXPECT_TRUE(CVM.find(this->AddV.get()) == CVM.end());
-
- // Insert:
- std::pair<typename ValueMap<TypeParam*, int>::iterator, bool> InsertResult1 =
- VM.insert(std::make_pair(this->AddV.get(), 3));
- EXPECT_EQ(this->AddV.get(), InsertResult1.first->first);
- EXPECT_EQ(3, InsertResult1.first->second);
- EXPECT_TRUE(InsertResult1.second);
- EXPECT_EQ(true, VM.count(this->AddV.get()));
- std::pair<typename ValueMap<TypeParam*, int>::iterator, bool> InsertResult2 =
- VM.insert(std::make_pair(this->AddV.get(), 5));
- EXPECT_EQ(this->AddV.get(), InsertResult2.first->first);
- EXPECT_EQ(3, InsertResult2.first->second);
- EXPECT_FALSE(InsertResult2.second);
-
- // Erase:
- VM.erase(InsertResult2.first);
- EXPECT_EQ(0U, VM.count(this->AddV.get()));
- EXPECT_EQ(1U, VM.count(this->BitcastV.get()));
- VM.erase(this->BitcastV.get());
- EXPECT_EQ(0U, VM.count(this->BitcastV.get()));
- EXPECT_EQ(0U, VM.size());
-
- // Range insert:
- SmallVector<std::pair<Instruction*, int>, 2> Elems;
- Elems.push_back(std::make_pair(this->AddV.get(), 1));
- Elems.push_back(std::make_pair(this->BitcastV.get(), 2));
- VM.insert(Elems.begin(), Elems.end());
- EXPECT_EQ(1, VM.lookup(this->AddV.get()));
- EXPECT_EQ(2, VM.lookup(this->BitcastV.get()));
-}
-
-template<typename ExpectedType, typename VarType>
-void CompileAssertHasType(VarType) {
- typedef char assert[is_same<ExpectedType, VarType>::value ? 1 : -1];
-}
-
-TYPED_TEST(ValueMapTest, Iteration) {
- ValueMap<TypeParam*, int> VM;
- VM[this->BitcastV.get()] = 2;
- VM[this->AddV.get()] = 3;
- size_t size = 0;
- for (typename ValueMap<TypeParam*, int>::iterator I = VM.begin(), E = VM.end();
- I != E; ++I) {
- ++size;
- std::pair<TypeParam*, int> value = *I; (void)value;
- CompileAssertHasType<TypeParam*>(I->first);
- if (I->second == 2) {
- EXPECT_EQ(this->BitcastV.get(), I->first);
- I->second = 5;
- } else if (I->second == 3) {
- EXPECT_EQ(this->AddV.get(), I->first);
- I->second = 6;
- } else {
- ADD_FAILURE() << "Iterated through an extra value.";
- }
- }
- EXPECT_EQ(2U, size);
- EXPECT_EQ(5, VM[this->BitcastV.get()]);
- EXPECT_EQ(6, VM[this->AddV.get()]);
-
- size = 0;
- // Cast to const ValueMap to avoid a bug in DenseMap's iterators.
- const ValueMap<TypeParam*, int>& CVM = VM;
- for (typename ValueMap<TypeParam*, int>::const_iterator I = CVM.begin(),
- E = CVM.end(); I != E; ++I) {
- ++size;
- std::pair<TypeParam*, int> value = *I; (void)value;
- CompileAssertHasType<TypeParam*>(I->first);
- if (I->second == 5) {
- EXPECT_EQ(this->BitcastV.get(), I->first);
- } else if (I->second == 6) {
- EXPECT_EQ(this->AddV.get(), I->first);
- } else {
- ADD_FAILURE() << "Iterated through an extra value.";
- }
- }
- EXPECT_EQ(2U, size);
-}
-
-TYPED_TEST(ValueMapTest, DefaultCollisionBehavior) {
- // By default, we overwrite the old value with the replaced value.
- ValueMap<TypeParam*, int> VM;
- VM[this->BitcastV.get()] = 7;
- VM[this->AddV.get()] = 9;
- this->BitcastV->replaceAllUsesWith(this->AddV.get());
- EXPECT_EQ(0, VM.count(this->BitcastV.get()));
- EXPECT_EQ(9, VM.lookup(this->AddV.get()));
-}
-
-TYPED_TEST(ValueMapTest, ConfiguredCollisionBehavior) {
- // TODO: Implement this when someone needs it.
-}
-
-template<typename KeyT>
-struct LockMutex : ValueMapConfig<KeyT> {
- struct ExtraData {
- sys::Mutex *M;
- bool *CalledRAUW;
- bool *CalledDeleted;
- };
- static void onRAUW(const ExtraData &Data, KeyT Old, KeyT New) {
- *Data.CalledRAUW = true;
- EXPECT_FALSE(Data.M->tryacquire()) << "Mutex should already be locked.";
- }
- static void onDelete(const ExtraData &Data, KeyT Old) {
- *Data.CalledDeleted = true;
- EXPECT_FALSE(Data.M->tryacquire()) << "Mutex should already be locked.";
- }
- static sys::Mutex *getMutex(const ExtraData &Data) { return Data.M; }
-};
-#if LLVM_ENABLE_THREADS
-TYPED_TEST(ValueMapTest, LocksMutex) {
- sys::Mutex M(false); // Not recursive.
- bool CalledRAUW = false, CalledDeleted = false;
- typename LockMutex<TypeParam*>::ExtraData Data =
- {&M, &CalledRAUW, &CalledDeleted};
- ValueMap<TypeParam*, int, LockMutex<TypeParam*> > VM(Data);
- VM[this->BitcastV.get()] = 7;
- this->BitcastV->replaceAllUsesWith(this->AddV.get());
- this->AddV.reset();
- EXPECT_TRUE(CalledRAUW);
- EXPECT_TRUE(CalledDeleted);
-}
-#endif
-
-template<typename KeyT>
-struct NoFollow : ValueMapConfig<KeyT> {
- enum { FollowRAUW = false };
-};
-
-TYPED_TEST(ValueMapTest, NoFollowRAUW) {
- ValueMap<TypeParam*, int, NoFollow<TypeParam*> > VM;
- VM[this->BitcastV.get()] = 7;
- EXPECT_EQ(7, VM.lookup(this->BitcastV.get()));
- EXPECT_EQ(0, VM.count(this->AddV.get()));
- this->BitcastV->replaceAllUsesWith(this->AddV.get());
- EXPECT_EQ(7, VM.lookup(this->BitcastV.get()));
- EXPECT_EQ(0, VM.lookup(this->AddV.get()));
- this->AddV.reset();
- EXPECT_EQ(7, VM.lookup(this->BitcastV.get()));
- EXPECT_EQ(0, VM.lookup(this->AddV.get()));
- this->BitcastV.reset();
- EXPECT_EQ(0, VM.lookup(this->BitcastV.get()));
- EXPECT_EQ(0, VM.lookup(this->AddV.get()));
- EXPECT_EQ(0U, VM.size());
-}
-
-template<typename KeyT>
-struct CountOps : ValueMapConfig<KeyT> {
- struct ExtraData {
- int *Deletions;
- int *RAUWs;
- };
-
- static void onRAUW(const ExtraData &Data, KeyT Old, KeyT New) {
- ++*Data.RAUWs;
- }
- static void onDelete(const ExtraData &Data, KeyT Old) {
- ++*Data.Deletions;
- }
-};
-
-TYPED_TEST(ValueMapTest, CallsConfig) {
- int Deletions = 0, RAUWs = 0;
- typename CountOps<TypeParam*>::ExtraData Data = {&Deletions, &RAUWs};
- ValueMap<TypeParam*, int, CountOps<TypeParam*> > VM(Data);
- VM[this->BitcastV.get()] = 7;
- this->BitcastV->replaceAllUsesWith(this->AddV.get());
- EXPECT_EQ(0, Deletions);
- EXPECT_EQ(1, RAUWs);
- this->AddV.reset();
- EXPECT_EQ(1, Deletions);
- EXPECT_EQ(1, RAUWs);
- this->BitcastV.reset();
- EXPECT_EQ(1, Deletions);
- EXPECT_EQ(1, RAUWs);
-}
-
-template<typename KeyT>
-struct ModifyingConfig : ValueMapConfig<KeyT> {
- // We'll put a pointer here back to the ValueMap this key is in, so
- // that we can modify it (and clobber *this) before the ValueMap
- // tries to do the same modification. In previous versions of
- // ValueMap, that exploded.
- typedef ValueMap<KeyT, int, ModifyingConfig<KeyT> > **ExtraData;
-
- static void onRAUW(ExtraData Map, KeyT Old, KeyT New) {
- (*Map)->erase(Old);
- }
- static void onDelete(ExtraData Map, KeyT Old) {
- (*Map)->erase(Old);
- }
-};
-TYPED_TEST(ValueMapTest, SurvivesModificationByConfig) {
- ValueMap<TypeParam*, int, ModifyingConfig<TypeParam*> > *MapAddress;
- ValueMap<TypeParam*, int, ModifyingConfig<TypeParam*> > VM(&MapAddress);
- MapAddress = &VM;
- // Now the ModifyingConfig can modify the Map inside a callback.
- VM[this->BitcastV.get()] = 7;
- this->BitcastV->replaceAllUsesWith(this->AddV.get());
- EXPECT_FALSE(VM.count(this->BitcastV.get()));
- EXPECT_FALSE(VM.count(this->AddV.get()));
- VM[this->AddV.get()] = 7;
- this->AddV.reset();
- EXPECT_FALSE(VM.count(this->AddV.get()));
-}
-
-}
Removed: llvm/trunk/unittests/VMCore/VerifierTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/VerifierTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/VerifierTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/VerifierTest.cpp (removed)
@@ -1,64 +0,0 @@
-//===- llvm/unittest/VMCore/VerifierTest.cpp - Verifier unit tests --------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Analysis/Verifier.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/GlobalAlias.h"
-#include "llvm/IR/GlobalVariable.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
-#include "gtest/gtest.h"
-
-namespace llvm {
-namespace {
-
-TEST(VerifierTest, Branch_i1) {
- LLVMContext &C = getGlobalContext();
- FunctionType *FTy = FunctionType::get(Type::getVoidTy(C), /*isVarArg=*/false);
- OwningPtr<Function> F(Function::Create(FTy, GlobalValue::ExternalLinkage));
- BasicBlock *Entry = BasicBlock::Create(C, "entry", F.get());
- BasicBlock *Exit = BasicBlock::Create(C, "exit", F.get());
- ReturnInst::Create(C, Exit);
-
- // To avoid triggering an assertion in BranchInst::Create, we first create
- // a branch with an 'i1' condition ...
-
- Constant *False = ConstantInt::getFalse(C);
- BranchInst *BI = BranchInst::Create(Exit, Exit, False, Entry);
-
- // ... then use setOperand to redirect it to a value of different type.
-
- Constant *Zero32 = ConstantInt::get(IntegerType::get(C, 32), 0);
- BI->setOperand(0, Zero32);
-
- EXPECT_TRUE(verifyFunction(*F, ReturnStatusAction));
-}
-
-TEST(VerifierTest, AliasUnnamedAddr) {
- LLVMContext &C = getGlobalContext();
- Module M("M", C);
- Type *Ty = Type::getInt8Ty(C);
- Constant *Init = Constant::getNullValue(Ty);
- GlobalVariable *Aliasee = new GlobalVariable(M, Ty, true,
- GlobalValue::ExternalLinkage,
- Init, "foo");
- GlobalAlias *GA = new GlobalAlias(Type::getInt8PtrTy(C),
- GlobalValue::ExternalLinkage,
- "bar", Aliasee, &M);
- GA->setUnnamedAddr(true);
- std::string Error;
- EXPECT_TRUE(verifyModule(M, ReturnStatusAction, &Error));
- EXPECT_TRUE(StringRef(Error).startswith("Alias cannot have unnamed_addr"));
-}
-}
-}
Removed: llvm/trunk/unittests/VMCore/WaymarkTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/VMCore/WaymarkTest.cpp?rev=171746&view=auto
==============================================================================
--- llvm/trunk/unittests/VMCore/WaymarkTest.cpp (original)
+++ llvm/trunk/unittests/VMCore/WaymarkTest.cpp (removed)
@@ -1,54 +0,0 @@
-//===- llvm/unittest/VMCore/WaymarkTest.cpp - getUser() unit tests --------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// we perform white-box tests
-//
-#include "llvm/IR/Function.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LLVMContext.h"
-#include "gtest/gtest.h"
-#include <algorithm>
-
-namespace llvm {
-namespace {
-
-Constant *char2constant(char c) {
- return ConstantInt::get(Type::getInt8Ty(getGlobalContext()), c);
-}
-
-
-TEST(WaymarkTest, NativeArray) {
- static uint8_t tail[22] = "s02s33s30y2y0s1x0syxS";
- Value * values[22];
- std::transform(tail, tail + 22, values, char2constant);
- FunctionType *FT = FunctionType::get(Type::getVoidTy(getGlobalContext()), true);
- Function *F = Function::Create(FT, GlobalValue::ExternalLinkage);
- const CallInst *A = CallInst::Create(F, makeArrayRef(values));
- ASSERT_NE(A, (const CallInst*)NULL);
- ASSERT_EQ(1U + 22, A->getNumOperands());
- const Use *U = &A->getOperandUse(0);
- const Use *Ue = &A->getOperandUse(22);
- for (; U != Ue; ++U)
- {
- EXPECT_EQ(A, U->getUser());
- }
-}
-
-TEST(WaymarkTest, TwoBit) {
- Use* many = (Use*)calloc(sizeof(Use), 8212 + 1);
- ASSERT_TRUE(many);
- Use::initTags(many, many + 8212);
- for (const Use *U = many, *Ue = many + 8212 - 1; U != Ue; ++U)
- {
- EXPECT_EQ((User*)(Ue + 1), U->getUser());
- }
-}
-
-} // end anonymous namespace
-} // end namespace llvm
More information about the llvm-commits
mailing list