summaryrefslogtreecommitdiff
path: root/unittests/Linker
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2013-11-09 00:43:18 +0000
committerAdrian Prantl <aprantl@apple.com>2013-11-09 00:43:18 +0000
commit999ffb6085a6e24261680b41d4f43ad4ba8fd250 (patch)
tree695a40407468402119f51eab06f7384f88ca03ff /unittests/Linker
parentab6f27c7ff043f393e1831d35f596b50be959cdb (diff)
downloadllvm-999ffb6085a6e24261680b41d4f43ad4ba8fd250.tar.gz
llvm-999ffb6085a6e24261680b41d4f43ad4ba8fd250.tar.bz2
llvm-999ffb6085a6e24261680b41d4f43ad4ba8fd250.tar.xz
Revert "Move copying of global initializers below the cloning of functions."
This would cause internal symbols that are only referenced by global initializers to be removed. This reverts commit 194219. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194304 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/Linker')
-rw-r--r--unittests/Linker/CMakeLists.txt12
-rw-r--r--unittests/Linker/LinkModulesTest.cpp131
-rw-r--r--unittests/Linker/Makefile15
3 files changed, 0 insertions, 158 deletions
diff --git a/unittests/Linker/CMakeLists.txt b/unittests/Linker/CMakeLists.txt
deleted file mode 100644
index c3dccb6c7b..0000000000
--- a/unittests/Linker/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-set(LLVM_LINK_COMPONENTS
- core
- linker
- )
-
-set(LinkerSources
- LinkModulesTest.cpp
- )
-
-add_llvm_unittest(LinkerTests
- ${LinkerSources}
- )
diff --git a/unittests/Linker/LinkModulesTest.cpp b/unittests/Linker/LinkModulesTest.cpp
deleted file mode 100644
index 9d2d84d193..0000000000
--- a/unittests/Linker/LinkModulesTest.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//===- llvm/unittest/Linker/LinkModulesTest.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/Linker.h"
-#include "llvm/IR/IRBuilder.h"
-#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/DataLayout.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/Module.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-namespace {
-
-class LinkModuleTest : public testing::Test {
-protected:
- virtual void SetUp() {
- LLVMContext &Ctx = getGlobalContext();
- M.reset(new Module("MyModule", Ctx));
- FunctionType *FTy = FunctionType::get(Type::getInt8PtrTy(Ctx),
- Type::getInt32Ty(Ctx),
- false /*=isVarArg*/);
- F = Function::Create(FTy, Function::ExternalLinkage, "ba_func", M.get());
- F->setCallingConv(CallingConv::C);
-
- EntryBB = BasicBlock::Create(Ctx, "entry", F);
- SwitchCase1BB = BasicBlock::Create(Ctx, "switch.case.1", F);
- SwitchCase2BB = BasicBlock::Create(Ctx, "switch.case.2", F);
- ExitBB = BasicBlock::Create(Ctx, "exit", F);
-
- ArrayType *AT = ArrayType::get(Type::getInt8PtrTy(Ctx), 3);
-
- GV = new GlobalVariable(*M.get(), AT, false /*=isConstant*/,
- GlobalValue::InternalLinkage,
- 0, "switch.bas");
-
-
- // Global Initializer
- std::vector<Constant*> Init;
- Constant *SwitchCase1BA = BlockAddress::get(SwitchCase1BB);
- Init.push_back(SwitchCase1BA);
-
- Constant *SwitchCase2BA = BlockAddress::get(SwitchCase2BB);
- Init.push_back(SwitchCase2BA);
-
- ConstantInt *One = ConstantInt::get(Type::getInt32Ty(Ctx), 1);
- Constant *OnePtr = ConstantExpr::getCast(Instruction::IntToPtr,
- One, Type::getInt8PtrTy(Ctx));
- Init.push_back(OnePtr);
-
- GV->setInitializer(ConstantArray::get(AT, Init));
- }
-
- virtual void TearDown() {
- M.reset();
- }
-
- OwningPtr<Module> M;
- Function *F;
- GlobalVariable *GV;
- BasicBlock *EntryBB;
- BasicBlock *SwitchCase1BB;
- BasicBlock *SwitchCase2BB;
- BasicBlock *ExitBB;
-};
-
-TEST_F(LinkModuleTest, BlockAddress) {
- LLVMContext &Ctx = getGlobalContext();
- IRBuilder<> Builder(EntryBB);
-
- std::vector<Value*> GEPIndices;
- GEPIndices.push_back(ConstantInt::get(Type::getInt32Ty(Ctx), 0));
- GEPIndices.push_back(F->arg_begin());
-
- Value *GEP = Builder.CreateGEP(GV, GEPIndices, "switch.gep");
- Value *Load = Builder.CreateLoad(GEP, "switch.load");
-
- Builder.CreateRet(Load);
-
- Builder.SetInsertPoint(SwitchCase1BB);
- Builder.CreateBr(ExitBB);
-
- Builder.SetInsertPoint(SwitchCase2BB);
- Builder.CreateBr(ExitBB);
-
- Builder.SetInsertPoint(ExitBB);
- Builder.CreateRet(ConstantPointerNull::get(Type::getInt8PtrTy(Ctx)));
-
- Module *LinkedModule = new Module("MyModuleLinked", getGlobalContext());
- Linker::LinkModules(LinkedModule, M.get(), Linker::PreserveSource, 0);
-
- // Delete the original module.
- M.reset();
-
- // Check that the global "@switch.bas" is well-formed.
- const GlobalVariable *LinkedGV = LinkedModule->getNamedGlobal("switch.bas");
- const Constant *Init = LinkedGV->getInitializer();
-
- // @switch.bas = internal global [3 x i8*]
- // [i8* blockaddress(@ba_func, %switch.case.1),
- // i8* blockaddress(@ba_func, %switch.case.2),
- // i8* inttoptr (i32 1 to i8*)]
-
- ArrayType *AT = ArrayType::get(Type::getInt8PtrTy(Ctx), 3);
- EXPECT_EQ(AT, Init->getType());
-
- Value *Elem = Init->getOperand(0);
- ASSERT_TRUE(isa<BlockAddress>(Elem));
- EXPECT_EQ(cast<BlockAddress>(Elem)->getFunction(),
- LinkedModule->getFunction("ba_func"));
- EXPECT_EQ(cast<BlockAddress>(Elem)->getBasicBlock()->getParent(),
- LinkedModule->getFunction("ba_func"));
-
- Elem = Init->getOperand(1);
- ASSERT_TRUE(isa<BlockAddress>(Elem));
- EXPECT_EQ(cast<BlockAddress>(Elem)->getFunction(),
- LinkedModule->getFunction("ba_func"));
- EXPECT_EQ(cast<BlockAddress>(Elem)->getBasicBlock()->getParent(),
- LinkedModule->getFunction("ba_func"));
-
- delete LinkedModule;
-}
-
-} // end anonymous namespace
diff --git a/unittests/Linker/Makefile b/unittests/Linker/Makefile
deleted file mode 100644
index c6058c4d60..0000000000
--- a/unittests/Linker/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-##===- unittests/Linker/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 = Linker
-LINK_COMPONENTS := core linker
-
-include $(LEVEL)/Makefile.config
-include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest