Remove YAML/Native round-trip passes.
authorRui Ueyama <ruiu@google.com>
Fri, 20 Feb 2015 22:10:28 +0000 (22:10 +0000)
committerRui Ueyama <ruiu@google.com>
Fri, 20 Feb 2015 22:10:28 +0000 (22:10 +0000)
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:
lld/include/lld/Passes/RoundTripNativePass.h [deleted file]
lld/include/lld/Passes/RoundTripYAMLPass.h [deleted file]
lld/lib/CMakeLists.txt
lld/lib/Driver/CMakeLists.txt
lld/lib/Driver/Driver.cpp
lld/lib/Passes/CMakeLists.txt [deleted file]
lld/lib/Passes/Makefile [deleted file]
lld/lib/Passes/RoundTripNativePass.cpp [deleted file]
lld/lib/Passes/RoundTripYAMLPass.cpp [deleted file]
lld/lib/ReaderWriter/CMakeLists.txt
lld/lib/ReaderWriter/CoreLinkingContext.cpp
lld/lib/ReaderWriter/ELF/CMakeLists.txt
lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
lld/lib/ReaderWriter/ELF/Makefile
lld/lib/ReaderWriter/MachO/CMakeLists.txt
lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
lld/lib/ReaderWriter/PECOFF/CMakeLists.txt
lld/test/elf/Mips/pc23-range.test
lld/test/elf/roundtrip.test [deleted file]
lld/test/lit.cfg
lld/tools/lld/Makefile
lld/unittests/DriverTests/Makefile

diff --git a/lld/include/lld/Passes/RoundTripNativePass.h b/lld/include/lld/Passes/RoundTripNativePass.h
deleted file mode 100644 (file)
index 796fee8..0000000
+++ /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 (file)
index 7f05673..0000000
+++ /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
index 157099d..699f5e9 100644 (file)
@@ -1,5 +1,4 @@
 add_subdirectory(Config)
 add_subdirectory(Core)
 add_subdirectory(Driver)
-add_subdirectory(Passes)
 add_subdirectory(ReaderWriter)
index 7f4e82a..5b635fe 100644 (file)
@@ -20,7 +20,6 @@ add_llvm_library(lldDriver
   WinLinkModuleDef.cpp
   LINK_LIBS
     lldConfig
-    lldPasses
     lldMachO
     lldPECOFF
     lldELF
index ea49423..24596dc 100644 (file)
@@ -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 (file)
index e1466ab..0000000
+++ /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 (file)
index 255a6df..0000000
+++ /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 (file)
index bb0ee51..0000000
+++ /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 (file)
index bca0bad..0000000
+++ /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());
-}
index 9b9102b..1fd19eb 100644 (file)
@@ -14,7 +14,6 @@ add_llvm_library(lldReaderWriter
   LinkerScript.cpp
   LINK_LIBS
     lldCore
-    lldPasses
     lldYAML
     LLVMObject
     LLVMSupport
index 640c58f..94386d3 100644 (file)
@@ -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 e8ae05b..d67d00b 100644 (file)
@@ -4,7 +4,6 @@ add_llvm_library(lldELF
   Writer.cpp
   LINK_LIBS
     lldCore
-    lldPasses
     lldYAML
     LLVMSupport
   )
index 99e61b9..b4bf02d 100644 (file)
@@ -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 c7f2958..5791ecb 100644 (file)
@@ -9,7 +9,6 @@
 
 LLD_LEVEL := ../../..
 LIBRARYNAME := lldELF
-USEDLIBS = lldPasses.a
 
 CPP.Flags += -I$(PROJ_SRC_DIR)/$(LLD_LEVEL)/lib/ReaderWriter/ELF
 
index d80afbe..e396537 100644 (file)
@@ -18,7 +18,6 @@ add_llvm_library(lldMachO
   WriterMachO.cpp
   LINK_LIBS
     lldCore
-    lldPasses
     lldYAML
     LLVMObject
     LLVMSupport
index a990cb1..6c30d69 100644 (file)
@@ -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 561f2d6..86b49b7 100644 (file)
@@ -11,7 +11,6 @@ add_llvm_library(lldPECOFF
   WriterPECOFF.cpp
   LINK_LIBS
     lldCore
-    lldPasses
     LLVMObject
     LLVMSupport
   )
index 908628b..7166176 100644 (file)
@@ -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 (file)
index 0788c25..0000000
+++ /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 da1cc4a..5b49765 100644 (file)
@@ -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:
index 3b3d16a..db84f57 100644 (file)
@@ -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 \
index 47d6282..bd5fed1 100644 (file)
@@ -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 \