is testing the bitcode reader's functionality, not VMCore's. Add the
what is a hope sufficient build system mojo to build and run a new
unittest.
Also clean up some of the test's naming. The goal for the file should be
to unittest the Bitcode Reader, and this is just one particular test
among potentially many in the future. Also, reverse my position and
relegate the PR# to a comment, but stash the comment on the same line as
the test name so it doesn't get lost. This makes the code more
self-documenting hopefully w/o losing track of the PR number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147431
91177308-0d34-0410-b5e6-
96231b3b80d8
--- /dev/null
+//===- llvm/unittest/Bitcode/BitReaderTest.cpp - Tests for BitReader ------===//
+//
+// 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/Bitcode/BitstreamWriter.h"
+#include "llvm/Bitcode/ReaderWriter.h"
+#include "llvm/Constants.h"
+#include "llvm/Instructions.h"
+#include "llvm/LLVMContext.h"
+#include "llvm/Module.h"
+#include "llvm/PassManager.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include "gtest/gtest.h"
+
+namespace llvm {
+namespace {
+
+static Module *makeLLVMModule() {
+ Module* Mod = new Module("test-mem", getGlobalContext());
+
+ FunctionType* FuncTy =
+ FunctionType::get(Type::getVoidTy(Mod->getContext()), false);
+ Function* Func = Function::Create(FuncTy,GlobalValue::ExternalLinkage,
+ "func", Mod);
+
+ BasicBlock* Entry = BasicBlock::Create(Mod->getContext(), "entry", Func);
+ new UnreachableInst(Mod->getContext(), Entry);
+
+ BasicBlock* BB = BasicBlock::Create(Mod->getContext(), "bb", Func);
+ new UnreachableInst(Mod->getContext(), BB);
+
+ PointerType* Int8Ptr = Type::getInt8PtrTy(Mod->getContext());
+ new GlobalVariable(*Mod, Int8Ptr, /*isConstant=*/true,
+ GlobalValue::ExternalLinkage,
+ BlockAddress::get(BB), "table");
+
+ return Mod;
+}
+
+static void writeModuleToBuffer(std::vector<unsigned char> &Buffer) {
+ Module *Mod = makeLLVMModule();
+ BitstreamWriter Stream(Buffer);
+ WriteBitcodeToStream(Mod, Stream);
+}
+
+TEST(BitReaderTest, MaterializeFunctionsForBlockAddr) { // PR11677
+ std::vector<unsigned char> Mem;
+ writeModuleToBuffer(Mem);
+ StringRef Data((const char*)&Mem[0], Mem.size());
+ MemoryBuffer *Buffer = MemoryBuffer::getMemBuffer(Data, "test", false);
+ std::string errMsg;
+ Module *m = getLazyBitcodeModule(Buffer, getGlobalContext(), &errMsg);
+ PassManager passes;
+ passes.add(createVerifierPass());
+ passes.run(*m);
+}
+
+}
+}
--- /dev/null
+##===- unittests/Bitcode/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 = Bitcode
+LINK_COMPONENTS := core support bitreader bitwriter
+
+include $(LEVEL)/Makefile.config
+include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
VMCore/PassManagerTest.cpp
VMCore/ValueMapTest.cpp
VMCore/VerifierTest.cpp
- VMCore/pr11677.cpp
)
# MSVC9 and 8 cannot compile ValueMapTest.cpp due to their bug.
add_llvm_unittest(VMCore ${VMCoreSources})
+add_llvm_unittest(Bitcode
+ Bitcode/BitReaderTest.cpp
+ )
+
set(LLVM_LINK_COMPONENTS
Support
Core
LEVEL = ..
-PARALLEL_DIRS = ADT ExecutionEngine Support Transforms VMCore Analysis
+PARALLEL_DIRS = ADT ExecutionEngine Support Transforms VMCore Analysis Bitcode
include $(LEVEL)/Makefile.common
LEVEL = ../..
TESTNAME = VMCore
-LINK_COMPONENTS := core support bitreader bitwriter target ipa
+LINK_COMPONENTS := core support target ipa
include $(LEVEL)/Makefile.config
include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
+++ /dev/null
-//===- llvm/unittest/VMCore/pr11677.cpp - Test for blockaddr --------------===//
-//
-// 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/Bitcode/BitstreamWriter.h"
-#include "llvm/Bitcode/ReaderWriter.h"
-#include "llvm/Constants.h"
-#include "llvm/Instructions.h"
-#include "llvm/LLVMContext.h"
-#include "llvm/Module.h"
-#include "llvm/PassManager.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "gtest/gtest.h"
-
-namespace llvm {
-namespace {
-
-static Module *makeLLVMModule() {
- Module* Mod = new Module("test-mem", getGlobalContext());
-
- FunctionType* FuncTy =
- FunctionType::get(Type::getVoidTy(Mod->getContext()), false);
- Function* Func = Function::Create(FuncTy,GlobalValue::ExternalLinkage,
- "func", Mod);
-
- BasicBlock* Entry = BasicBlock::Create(Mod->getContext(), "entry", Func);
- new UnreachableInst(Mod->getContext(), Entry);
-
- BasicBlock* BB = BasicBlock::Create(Mod->getContext(), "bb", Func);
- new UnreachableInst(Mod->getContext(), BB);
-
- PointerType* Int8Ptr = Type::getInt8PtrTy(Mod->getContext());
- new GlobalVariable(*Mod, Int8Ptr, /*isConstant=*/true,
- GlobalValue::ExternalLinkage,
- BlockAddress::get(BB), "table");
-
- return Mod;
-}
-
-static void writeModuleToBuffer(std::vector<unsigned char> &Buffer) {
- Module *Mod = makeLLVMModule();
- BitstreamWriter Stream(Buffer);
- WriteBitcodeToStream(Mod, Stream);
-}
-
-TEST(PR11677, BlockAddr) {
- std::vector<unsigned char> Mem;
- writeModuleToBuffer(Mem);
- StringRef Data((const char*)&Mem[0], Mem.size());
- MemoryBuffer *Buffer = MemoryBuffer::getMemBuffer(Data, "test", false);
- std::string errMsg;
- Module *m = getLazyBitcodeModule(Buffer, getGlobalContext(), &errMsg);
- PassManager passes;
- passes.add(createVerifierPass());
- passes.run(*m);
-}
-}
-}