diff options
author | Rui Ueyama <ruiu@google.com> | 2015-02-20 22:10:28 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2015-02-20 22:10:28 +0000 |
commit | 2c64aef35fc880d608dc5fc6e3a850d69caedfd6 (patch) | |
tree | f1556c77f13280d5d07cf6bf8f67630929bf27a8 | |
parent | 860660ea5e89a6593b6748a78840427019ab573a (diff) | |
download | bcm5719-llvm-2c64aef35fc880d608dc5fc6e3a850d69caedfd6.tar.gz bcm5719-llvm-2c64aef35fc880d608dc5fc6e3a850d69caedfd6.zip |
Remove YAML/Native round-trip passes.
The round-trip passes were introduced in r193300. The intention of
the change was to make sure that LLD is capable of reading end
writing such file formats.
But that turned out to be yet another over-designed stuff that had
been slowing down everyday development.
The passes ran after the core linker and before the writer. If you
had an additional piece of information that needs to be passed from
front-end to the writer, you had to invent a way to save the data to
YAML/Native. These passes forced us to do that even if that data
was not needed to be represented neither in an object file nor in
an executable/DSO. It doesn't make sense. We don't need these passes.
http://reviews.llvm.org/D7480
llvm-svn: 230069
22 files changed, 3 insertions, 247 deletions
diff --git a/lld/include/lld/Passes/RoundTripNativePass.h b/lld/include/lld/Passes/RoundTripNativePass.h deleted file mode 100644 index 796fee8660c..00000000000 --- a/lld/include/lld/Passes/RoundTripNativePass.h +++ /dev/null @@ -1,39 +0,0 @@ -//===--Passes/RoundTripNativePass.h - Write Native file/Read it back------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLD_PASSES_ROUND_TRIP_NATIVE_PASS_H -#define LLD_PASSES_ROUND_TRIP_NATIVE_PASS_H - -#include "lld/Core/File.h" -#include "lld/Core/LinkingContext.h" -#include "lld/Core/Pass.h" -#include <vector> - -namespace lld { -class RoundTripNativePass : public Pass { -public: - RoundTripNativePass(LinkingContext &context) : Pass(), _context(context) {} - - /// Writes to a native file and reads the atoms from the native file back. - /// Replaces mergedFile with the contents of the native File. - void perform(std::unique_ptr<MutableFile> &mergedFile) override; - - virtual ~RoundTripNativePass() {} - -private: - LinkingContext &_context; - // Keep the parsed file alive for the rest of the link. All atoms - // that are created by the RoundTripNativePass are owned by the - // nativeFile. - std::vector<std::unique_ptr<File> > _nativeFile; -}; - -} // namespace lld - -#endif // LLD_PASSES_ROUND_TRIP_NATIVE_PASS_H diff --git a/lld/include/lld/Passes/RoundTripYAMLPass.h b/lld/include/lld/Passes/RoundTripYAMLPass.h deleted file mode 100644 index 7f05673c9d0..00000000000 --- a/lld/include/lld/Passes/RoundTripYAMLPass.h +++ /dev/null @@ -1,39 +0,0 @@ -//===--Passes/RoundTripYAMLPass.h- Write YAML file/Read it back-----------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLD_PASSES_ROUND_TRIP_YAML_PASS_H -#define LLD_PASSES_ROUND_TRIP_YAML_PASS_H - -#include "lld/Core/File.h" -#include "lld/Core/LinkingContext.h" -#include "lld/Core/Pass.h" -#include <vector> - -namespace lld { -class RoundTripYAMLPass : public Pass { -public: - RoundTripYAMLPass(LinkingContext &context) : Pass(), _context(context) {} - - /// Writes to a YAML file and reads the atoms from the YAML file back. - /// Replaces the mergedFile with new contents. - void perform(std::unique_ptr<MutableFile> &mergedFile) override; - - virtual ~RoundTripYAMLPass() {} - -private: - LinkingContext &_context; - // Keep the parsed file alive for the rest of the link. All atoms - // that are created by the RoundTripYAMLPass are owned by the - // yamlFile. - std::vector<std::unique_ptr<File> > _yamlFile; -}; - -} // namespace lld - -#endif // LLD_PASSES_ROUND_TRIP_YAML_PASS_H diff --git a/lld/lib/CMakeLists.txt b/lld/lib/CMakeLists.txt index 157099d3c31..699f5e93f8a 100644 --- a/lld/lib/CMakeLists.txt +++ b/lld/lib/CMakeLists.txt @@ -1,5 +1,4 @@ add_subdirectory(Config) add_subdirectory(Core) add_subdirectory(Driver) -add_subdirectory(Passes) add_subdirectory(ReaderWriter) diff --git a/lld/lib/Driver/CMakeLists.txt b/lld/lib/Driver/CMakeLists.txt index 7f4e82a4966..5b635fe197f 100644 --- a/lld/lib/Driver/CMakeLists.txt +++ b/lld/lib/Driver/CMakeLists.txt @@ -20,7 +20,6 @@ add_llvm_library(lldDriver WinLinkModuleDef.cpp LINK_LIBS lldConfig - lldPasses lldMachO lldPECOFF lldELF diff --git a/lld/lib/Driver/Driver.cpp b/lld/lib/Driver/Driver.cpp index ea494230067..24596dc68a7 100644 --- a/lld/lib/Driver/Driver.cpp +++ b/lld/lib/Driver/Driver.cpp @@ -17,8 +17,6 @@ #include "lld/Core/Resolver.h" #include "lld/Core/Writer.h" #include "lld/Driver/Driver.h" -#include "lld/Passes/RoundTripNativePass.h" -#include "lld/Passes/RoundTripYAMLPass.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Option/Arg.h" @@ -116,17 +114,6 @@ bool Driver::link(LinkingContext &context, raw_ostream &diagnostics) { ScopedTask passTask(getDefaultDomain(), "Passes"); PassManager pm; context.addPasses(pm); - -#ifndef NDEBUG - llvm::Optional<std::string> env = - llvm::sys::Process::GetEnv("LLD_RUN_ROUNDTRIP_TEST"); - - if (env.hasValue() && !env.getValue().empty()) { - pm.add(llvm::make_unique<RoundTripYAMLPass>(context)); - pm.add(llvm::make_unique<RoundTripNativePass>(context)); - } -#endif - pm.runOnFile(merged); passTask.end(); diff --git a/lld/lib/Passes/CMakeLists.txt b/lld/lib/Passes/CMakeLists.txt deleted file mode 100644 index e1466ab8422..00000000000 --- a/lld/lib/Passes/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -add_llvm_library(lldPasses - RoundTripNativePass.cpp - RoundTripYAMLPass.cpp - LINK_LIBS - lldCore - lldNative - lldYAML - LLVMSupport - ) diff --git a/lld/lib/Passes/Makefile b/lld/lib/Passes/Makefile deleted file mode 100644 index 255a6df9794..00000000000 --- a/lld/lib/Passes/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -##===- lld/lib/Passes/Makefile ---------------------------*- Makefile -*-===## -# -# The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open Source -# License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## - -LLD_LEVEL := ../.. -LIBRARYNAME := lldPasses - -include $(LLD_LEVEL)/Makefile diff --git a/lld/lib/Passes/RoundTripNativePass.cpp b/lld/lib/Passes/RoundTripNativePass.cpp deleted file mode 100644 index bb0ee516ffa..00000000000 --- a/lld/lib/Passes/RoundTripNativePass.cpp +++ /dev/null @@ -1,53 +0,0 @@ -//===--Passes/RoundTripNativePass.cpp - Write Native file/Read it back-----===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "lld/Core/Instrumentation.h" -#include "lld/Core/Simple.h" -#include "lld/Core/Writer.h" -#include "lld/Passes/RoundTripNativePass.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/Path.h" -#include <memory> - -using namespace lld; - -#define DEBUG_TYPE "RoundTripNativePass" - -/// Perform the actual pass -void RoundTripNativePass::perform(std::unique_ptr<MutableFile> &mergedFile) { - ScopedTask task(getDefaultDomain(), "RoundTripNativePass"); - std::unique_ptr<Writer> nativeWriter = createWriterNative(); - SmallString<128> tmpNativeFile; - // Separate the directory from the filename - StringRef outFile = llvm::sys::path::filename(_context.outputPath()); - if (llvm::sys::fs::createTemporaryFile(outFile, "native", tmpNativeFile)) - return; - DEBUG(llvm::dbgs() << "RoundTripNativePass: " << tmpNativeFile << "\n"); - - // The file that is written would be kept around if there is a problem - // writing to the file or when reading atoms back from the file. - nativeWriter->writeFile(*mergedFile, tmpNativeFile.str()); - ErrorOr<std::unique_ptr<MemoryBuffer>> mb = - MemoryBuffer::getFile(tmpNativeFile.str()); - if (!mb) - return; - - std::error_code ec = _context.registry().loadFile( - std::move(mb.get()), _nativeFile); - if (ec) { - // Note: we need a way for Passes to report errors. - llvm_unreachable("native reader not registered or read error"); - } - File *objFile = _nativeFile[0].get(); - if (objFile->parse()) - llvm_unreachable("native reader parse error"); - mergedFile.reset(new SimpleFile(objFile->path())); - copyAtoms(mergedFile.get(), objFile); - llvm::sys::fs::remove(tmpNativeFile.str()); -} diff --git a/lld/lib/Passes/RoundTripYAMLPass.cpp b/lld/lib/Passes/RoundTripYAMLPass.cpp deleted file mode 100644 index bca0bad2f67..00000000000 --- a/lld/lib/Passes/RoundTripYAMLPass.cpp +++ /dev/null @@ -1,53 +0,0 @@ -//===--Passes/RoundTripYAMLPass.cpp - Write YAML file/Read it back---------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "lld/Core/Instrumentation.h" -#include "lld/Core/Simple.h" -#include "lld/Core/Writer.h" -#include "lld/Passes/RoundTripYAMLPass.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/Path.h" -#include <memory> - -using namespace lld; - -#define DEBUG_TYPE "RoundTripYAMLPass" - -/// Perform the actual pass -void RoundTripYAMLPass::perform(std::unique_ptr<MutableFile> &mergedFile) { - ScopedTask task(getDefaultDomain(), "RoundTripYAMLPass"); - std::unique_ptr<Writer> yamlWriter = createWriterYAML(_context); - SmallString<128> tmpYAMLFile; - // Separate the directory from the filename - StringRef outFile = llvm::sys::path::filename(_context.outputPath()); - if (llvm::sys::fs::createTemporaryFile(outFile, "yaml", tmpYAMLFile)) - return; - DEBUG(llvm::dbgs() << "RoundTripYAMLPass: " << tmpYAMLFile << "\n"); - - // The file that is written would be kept around if there is a problem - // writing to the file or when reading atoms back from the file. - yamlWriter->writeFile(*mergedFile, tmpYAMLFile.str()); - ErrorOr<std::unique_ptr<MemoryBuffer>> mb = - MemoryBuffer::getFile(tmpYAMLFile.str()); - if (!mb) - return; - - std::error_code ec = _context.registry().loadFile( - std::move(mb.get()), _yamlFile); - if (ec) { - // Note: we need a way for Passes to report errors. - llvm_unreachable("yaml reader not registered or read error"); - } - File *objFile = _yamlFile[0].get(); - if (objFile->parse()) - llvm_unreachable("native reader parse error"); - mergedFile.reset(new SimpleFile(objFile->path())); - copyAtoms(mergedFile.get(), objFile); - llvm::sys::fs::remove(tmpYAMLFile.str()); -} diff --git a/lld/lib/ReaderWriter/CMakeLists.txt b/lld/lib/ReaderWriter/CMakeLists.txt index 9b9102b5d63..1fd19eb73a7 100644 --- a/lld/lib/ReaderWriter/CMakeLists.txt +++ b/lld/lib/ReaderWriter/CMakeLists.txt @@ -14,7 +14,6 @@ add_llvm_library(lldReaderWriter LinkerScript.cpp LINK_LIBS lldCore - lldPasses lldYAML LLVMObject LLVMSupport diff --git a/lld/lib/ReaderWriter/CoreLinkingContext.cpp b/lld/lib/ReaderWriter/CoreLinkingContext.cpp index 640c58f0fea..94386d37d4f 100644 --- a/lld/lib/ReaderWriter/CoreLinkingContext.cpp +++ b/lld/lib/ReaderWriter/CoreLinkingContext.cpp @@ -12,7 +12,6 @@ #include "lld/Core/Pass.h" #include "lld/Core/PassManager.h" #include "lld/Core/Simple.h" -#include "lld/Passes/RoundTripYAMLPass.h" #include "lld/ReaderWriter/CoreLinkingContext.h" #include "llvm/ADT/ArrayRef.h" diff --git a/lld/lib/ReaderWriter/ELF/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/CMakeLists.txt index e8ae05bc922..d67d00bd72a 100644 --- a/lld/lib/ReaderWriter/ELF/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/CMakeLists.txt @@ -4,7 +4,6 @@ add_llvm_library(lldELF Writer.cpp LINK_LIBS lldCore - lldPasses lldYAML LLVMSupport ) diff --git a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp index 99e61b9c85e..b4bf02dd7fb 100644 --- a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp +++ b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp @@ -13,7 +13,6 @@ #include "TargetHandler.h" #include "lld/Core/Instrumentation.h" #include "lld/Core/SharedLibraryFile.h" -#include "lld/Passes/RoundTripYAMLPass.h" #include "llvm/ADT/Triple.h" #include "llvm/Config/config.h" #include "llvm/Support/ELF.h" diff --git a/lld/lib/ReaderWriter/ELF/Makefile b/lld/lib/ReaderWriter/ELF/Makefile index c7f2958e18e..5791ecb9733 100644 --- a/lld/lib/ReaderWriter/ELF/Makefile +++ b/lld/lib/ReaderWriter/ELF/Makefile @@ -9,7 +9,6 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldELF -USEDLIBS = lldPasses.a CPP.Flags += -I$(PROJ_SRC_DIR)/$(LLD_LEVEL)/lib/ReaderWriter/ELF diff --git a/lld/lib/ReaderWriter/MachO/CMakeLists.txt b/lld/lib/ReaderWriter/MachO/CMakeLists.txt index d80afbe3810..e396537c63c 100644 --- a/lld/lib/ReaderWriter/MachO/CMakeLists.txt +++ b/lld/lib/ReaderWriter/MachO/CMakeLists.txt @@ -18,7 +18,6 @@ add_llvm_library(lldMachO WriterMachO.cpp LINK_LIBS lldCore - lldPasses lldYAML LLVMObject LLVMSupport diff --git a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp index a990cb103f4..6c30d6905cd 100644 --- a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp +++ b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp @@ -17,7 +17,6 @@ #include "lld/Core/Reader.h" #include "lld/Core/Writer.h" #include "lld/Driver/Driver.h" -#include "lld/Passes/RoundTripYAMLPass.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/Triple.h" #include "llvm/Config/config.h" diff --git a/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt b/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt index 561f2d63b68..86b49b79f19 100644 --- a/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt +++ b/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt @@ -11,7 +11,6 @@ add_llvm_library(lldPECOFF WriterPECOFF.cpp LINK_LIBS lldCore - lldPasses LLVMObject LLVMSupport ) diff --git a/lld/test/elf/Mips/pc23-range.test b/lld/test/elf/Mips/pc23-range.test index 908628b687d..7166176c462 100644 --- a/lld/test/elf/Mips/pc23-range.test +++ b/lld/test/elf/Mips/pc23-range.test @@ -1,8 +1,7 @@ # Check that LLD shows an error if ADDIUPC immediate is out of range. # RUN: yaml2obj -format=elf %s > %t-obj -# RUN: env LLD_RUN_ROUNDTRIP_TEST= \ -# RUN: lld -flavor gnu -target mipsel -o %t-exe %t-obj 2>&1 | FileCheck %s +# RUN: lld -flavor gnu -target mipsel -o %t-exe %t-obj 2>&1 | FileCheck %s # CHECK: The addiupc instruction immediate 0x02000008 is out of range diff --git a/lld/test/elf/roundtrip.test b/lld/test/elf/roundtrip.test deleted file mode 100644 index 0788c255ce1..00000000000 --- a/lld/test/elf/roundtrip.test +++ /dev/null @@ -1,11 +0,0 @@ -# This tests the functionality of the RoundTrip Passes and verifies -# that the atoms belong to the native file after the passes finish - -# REQUIRES: asserts - -RUN: lld -flavor gnu -target x86_64 %p/Inputs/foo.o.x86-64 --noinhibit-exec \ -RUN: --output-filetype=yaml -o %t1 -RUN: FileCheck %s < %t1 - -CHECK:path:{{.*}}.native - diff --git a/lld/test/lit.cfg b/lld/test/lit.cfg index da1cc4a2b14..5b49765f789 100644 --- a/lld/test/lit.cfg +++ b/lld/test/lit.cfg @@ -28,9 +28,6 @@ config.suffixes = ['.objtxt', '.test'] # test_source_root: The root path where tests are located. config.test_source_root = os.path.dirname(__file__) -# run RoundTrip{YAML,Native}Tests. -config.environment['LLD_RUN_ROUNDTRIP_TEST'] = '1' - # test_exec_root: The root path where tests should be run. lld_obj_root = getattr(config, 'lld_obj_root', None) if lld_obj_root is not None: diff --git a/lld/tools/lld/Makefile b/lld/tools/lld/Makefile index 3b3d16a2d27..db84f57fae1 100644 --- a/lld/tools/lld/Makefile +++ b/lld/tools/lld/Makefile @@ -20,7 +20,7 @@ include $(LEVEL)/Makefile.config LINK_COMPONENTS := $(TARGETS_TO_BUILD) USEDLIBS = lldDriver.a lldConfig.a \ - lldELF.a lldMachO.a lldPasses.a lldPECOFF.a lldYAML.a \ + lldELF.a lldMachO.a lldPECOFF.a lldYAML.a \ lldReaderWriter.a lldCore.a lldNative.a \ lldHexagonELFTarget.a lldMipsELFTarget.a \ lldX86ELFTarget.a lldX86_64ELFTarget.a lldAArch64ELFTarget.a \ diff --git a/lld/unittests/DriverTests/Makefile b/lld/unittests/DriverTests/Makefile index 47d628236b4..bd5fed151f3 100644 --- a/lld/unittests/DriverTests/Makefile +++ b/lld/unittests/DriverTests/Makefile @@ -10,7 +10,7 @@ LLD_LEVEL = ../.. TESTNAME = DriverTests USEDLIBS = lldDriver.a lldConfig.a \ - lldELF.a lldMachO.a lldPasses.a lldPECOFF.a \ + lldELF.a lldMachO.a lldPECOFF.a \ lldCore.a lldNative.a lldReaderWriter.a \ lldHexagonELFTarget.a lldMipsELFTarget.a \ lldX86ELFTarget.a lldX86_64ELFTarget.a lldYAML.a \ |