summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-02-20 22:10:28 +0000
committerRui Ueyama <ruiu@google.com>2015-02-20 22:10:28 +0000
commit2c64aef35fc880d608dc5fc6e3a850d69caedfd6 (patch)
treef1556c77f13280d5d07cf6bf8f67630929bf27a8
parent860660ea5e89a6593b6748a78840427019ab573a (diff)
downloadbcm5719-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
-rw-r--r--lld/include/lld/Passes/RoundTripNativePass.h39
-rw-r--r--lld/include/lld/Passes/RoundTripYAMLPass.h39
-rw-r--r--lld/lib/CMakeLists.txt1
-rw-r--r--lld/lib/Driver/CMakeLists.txt1
-rw-r--r--lld/lib/Driver/Driver.cpp13
-rw-r--r--lld/lib/Passes/CMakeLists.txt9
-rw-r--r--lld/lib/Passes/Makefile13
-rw-r--r--lld/lib/Passes/RoundTripNativePass.cpp53
-rw-r--r--lld/lib/Passes/RoundTripYAMLPass.cpp53
-rw-r--r--lld/lib/ReaderWriter/CMakeLists.txt1
-rw-r--r--lld/lib/ReaderWriter/CoreLinkingContext.cpp1
-rw-r--r--lld/lib/ReaderWriter/ELF/CMakeLists.txt1
-rw-r--r--lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp1
-rw-r--r--lld/lib/ReaderWriter/ELF/Makefile1
-rw-r--r--lld/lib/ReaderWriter/MachO/CMakeLists.txt1
-rw-r--r--lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp1
-rw-r--r--lld/lib/ReaderWriter/PECOFF/CMakeLists.txt1
-rw-r--r--lld/test/elf/Mips/pc23-range.test3
-rw-r--r--lld/test/elf/roundtrip.test11
-rw-r--r--lld/test/lit.cfg3
-rw-r--r--lld/tools/lld/Makefile2
-rw-r--r--lld/unittests/DriverTests/Makefile2
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 \
OpenPOWER on IntegriCloud