Index: include/lld/Passes/RoundTripNativePass.h =================================================================== --- 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 - -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 &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 > _nativeFile; -}; - -} // namespace lld - -#endif // LLD_PASSES_ROUND_TRIP_NATIVE_PASS_H Index: include/lld/Passes/RoundTripYAMLPass.h =================================================================== --- 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 - -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 &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 > _yamlFile; -}; - -} // namespace lld - -#endif // LLD_PASSES_ROUND_TRIP_YAML_PASS_H Index: lib/CMakeLists.txt =================================================================== --- lib/CMakeLists.txt +++ lib/CMakeLists.txt @@ -1,5 +1,4 @@ add_subdirectory(Config) add_subdirectory(Core) add_subdirectory(Driver) -add_subdirectory(Passes) add_subdirectory(ReaderWriter) Index: lib/Driver/CMakeLists.txt =================================================================== --- lib/Driver/CMakeLists.txt +++ lib/Driver/CMakeLists.txt @@ -20,7 +20,6 @@ WinLinkModuleDef.cpp LINK_LIBS lldConfig - lldPasses lldMachO lldPECOFF lldELF Index: lib/Driver/Driver.cpp =================================================================== --- lib/Driver/Driver.cpp +++ 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 @@ ScopedTask passTask(getDefaultDomain(), "Passes"); PassManager pm; context.addPasses(pm); - -#ifndef NDEBUG - llvm::Optional env = - llvm::sys::Process::GetEnv("LLD_RUN_ROUNDTRIP_TEST"); - - if (env.hasValue() && !env.getValue().empty()) { - pm.add(llvm::make_unique(context)); - pm.add(llvm::make_unique(context)); - } -#endif - pm.runOnFile(merged); passTask.end(); Index: lib/Passes/CMakeLists.txt =================================================================== --- lib/Passes/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -add_llvm_library(lldPasses - RoundTripNativePass.cpp - RoundTripYAMLPass.cpp - LINK_LIBS - lldCore - lldNative - lldYAML - LLVMSupport - ) Index: lib/Passes/Makefile =================================================================== --- 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 Index: lib/Passes/RoundTripNativePass.cpp =================================================================== --- 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 - -using namespace lld; - -#define DEBUG_TYPE "RoundTripNativePass" - -/// Perform the actual pass -void RoundTripNativePass::perform(std::unique_ptr &mergedFile) { - ScopedTask task(getDefaultDomain(), "RoundTripNativePass"); - std::unique_ptr nativeWriter = createWriterNative(_context); - 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> 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()); -} Index: lib/Passes/RoundTripYAMLPass.cpp =================================================================== --- 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 - -using namespace lld; - -#define DEBUG_TYPE "RoundTripYAMLPass" - -/// Perform the actual pass -void RoundTripYAMLPass::perform(std::unique_ptr &mergedFile) { - ScopedTask task(getDefaultDomain(), "RoundTripYAMLPass"); - std::unique_ptr 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> 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()); -} Index: lib/ReaderWriter/CMakeLists.txt =================================================================== --- lib/ReaderWriter/CMakeLists.txt +++ lib/ReaderWriter/CMakeLists.txt @@ -14,7 +14,6 @@ LinkerScript.cpp LINK_LIBS lldCore - lldPasses lldYAML LLVMObject LLVMSupport Index: lib/ReaderWriter/CoreLinkingContext.cpp =================================================================== --- lib/ReaderWriter/CoreLinkingContext.cpp +++ 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" Index: lib/ReaderWriter/ELF/CMakeLists.txt =================================================================== --- lib/ReaderWriter/ELF/CMakeLists.txt +++ lib/ReaderWriter/ELF/CMakeLists.txt @@ -4,7 +4,6 @@ Writer.cpp LINK_LIBS lldCore - lldPasses lldYAML LLVMSupport ) Index: lib/ReaderWriter/ELF/ELFLinkingContext.cpp =================================================================== --- lib/ReaderWriter/ELF/ELFLinkingContext.cpp +++ 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" Index: lib/ReaderWriter/ELF/Makefile =================================================================== --- lib/ReaderWriter/ELF/Makefile +++ 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 Index: lib/ReaderWriter/MachO/CMakeLists.txt =================================================================== --- lib/ReaderWriter/MachO/CMakeLists.txt +++ lib/ReaderWriter/MachO/CMakeLists.txt @@ -18,7 +18,6 @@ WriterMachO.cpp LINK_LIBS lldCore - lldPasses lldYAML LLVMObject LLVMSupport Index: lib/ReaderWriter/MachO/MachOLinkingContext.cpp =================================================================== --- lib/ReaderWriter/MachO/MachOLinkingContext.cpp +++ 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" Index: lib/ReaderWriter/PECOFF/CMakeLists.txt =================================================================== --- lib/ReaderWriter/PECOFF/CMakeLists.txt +++ lib/ReaderWriter/PECOFF/CMakeLists.txt @@ -11,7 +11,6 @@ WriterPECOFF.cpp LINK_LIBS lldCore - lldPasses LLVMObject LLVMSupport ) Index: test/elf/Mips/pc23-range.test =================================================================== --- test/elf/Mips/pc23-range.test +++ 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 Index: test/elf/roundtrip.test =================================================================== --- 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 - Index: test/lit.cfg =================================================================== --- test/lit.cfg +++ test/lit.cfg @@ -28,9 +28,6 @@ # 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: Index: tools/lld/Makefile =================================================================== --- tools/lld/Makefile +++ tools/lld/Makefile @@ -20,7 +20,7 @@ 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 \ Index: unittests/DriverTests/Makefile =================================================================== --- unittests/DriverTests/Makefile +++ 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 \