From f187c4d2e578d477c3db8e6998bd91ba622c6530 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Tue, 20 Feb 2018 22:09:59 +0000 Subject: [PATCH] Consistent use of header file for ICF and MarkLive Previously wasm used a separate header to declare markLive and ELF used to declare ICF. This change makes each backend consistently declare these in their own headers. Differential Revision: https://reviews.llvm.org/D43529 llvm-svn: 325631 --- lld/COFF/Driver.cpp | 4 +++- lld/COFF/Driver.h | 6 ------ lld/COFF/ICF.cpp | 1 + lld/COFF/ICF.h | 26 ++++++++++++++++++++++++++ lld/COFF/MarkLive.h | 24 ++++++++++++++++++++++++ lld/ELF/Driver.cpp | 1 + lld/ELF/ICF.h | 4 +++- lld/ELF/MarkLive.cpp | 2 +- lld/ELF/MarkLive.h | 21 +++++++++++++++++++++ lld/ELF/Strings.cpp | 2 -- lld/ELF/Writer.h | 1 - 11 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 lld/COFF/ICF.h create mode 100644 lld/COFF/MarkLive.h create mode 100644 lld/ELF/MarkLive.h diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index 9a78987..3abe024 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -9,7 +9,9 @@ #include "Driver.h" #include "Config.h" +#include "ICF.h" #include "InputFiles.h" +#include "MarkLive.h" #include "MinGW.h" #include "SymbolTable.h" #include "Symbols.h" @@ -37,8 +39,8 @@ #include "llvm/Support/raw_ostream.h" #include "llvm/ToolDrivers/llvm-lib/LibDriver.h" #include -#include #include +#include using namespace llvm; using namespace llvm::object; diff --git a/lld/COFF/Driver.h b/lld/COFF/Driver.h index 02b2426..9bd6c0f 100644 --- a/lld/COFF/Driver.h +++ b/lld/COFF/Driver.h @@ -36,12 +36,6 @@ using llvm::COFF::MachineTypes; using llvm::COFF::WindowsSubsystem; using llvm::Optional; -// Implemented in MarkLive.cpp. -void markLive(ArrayRef Chunks); - -// Implemented in ICF.cpp. -void doICF(ArrayRef Chunks); - class COFFOptTable : public llvm::opt::OptTable { public: COFFOptTable(); diff --git a/lld/COFF/ICF.cpp b/lld/COFF/ICF.cpp index 2eb11f9..c063ab2 100644 --- a/lld/COFF/ICF.cpp +++ b/lld/COFF/ICF.cpp @@ -18,6 +18,7 @@ // //===----------------------------------------------------------------------===// +#include "ICF.h" #include "Chunks.h" #include "Symbols.h" #include "lld/Common/ErrorHandler.h" diff --git a/lld/COFF/ICF.h b/lld/COFF/ICF.h new file mode 100644 index 0000000..9c54e0c --- /dev/null +++ b/lld/COFF/ICF.h @@ -0,0 +1,26 @@ +//===- ICF.h --------------------------------------------------------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLD_COFF_ICF_H +#define LLD_COFF_ICF_H + +#include "lld/Common/LLVM.h" +#include "llvm/ADT/ArrayRef.h" + +namespace lld { +namespace coff { + +class Chunk; + +void doICF(ArrayRef Chunks); + +} // namespace coff +} // namespace lld + +#endif diff --git a/lld/COFF/MarkLive.h b/lld/COFF/MarkLive.h new file mode 100644 index 0000000..5b652dd --- /dev/null +++ b/lld/COFF/MarkLive.h @@ -0,0 +1,24 @@ +//===- MarkLive.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLD_COFF_MARKLIVE_H +#define LLD_COFF_MARKLIVE_H + +#include "lld/Common/LLVM.h" +#include "llvm/ADT/ArrayRef.h" + +namespace lld { +namespace coff { + +void markLive(ArrayRef Chunks); + +} // namespace coff +} // namespace lld + +#endif // LLD_COFF_MARKLIVE_H diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index 1efd246..265b3e6 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -30,6 +30,7 @@ #include "InputFiles.h" #include "InputSection.h" #include "LinkerScript.h" +#include "MarkLive.h" #include "OutputSections.h" #include "ScriptParser.h" #include "Strings.h" diff --git a/lld/ELF/ICF.h b/lld/ELF/ICF.h index 2421985..a6c8636 100644 --- a/lld/ELF/ICF.h +++ b/lld/ELF/ICF.h @@ -12,8 +12,10 @@ namespace lld { namespace elf { + template void doIcf(); -} + +} // namespace elf } // namespace lld #endif diff --git a/lld/ELF/MarkLive.cpp b/lld/ELF/MarkLive.cpp index 1aa20f7..05ab2c8 100644 --- a/lld/ELF/MarkLive.cpp +++ b/lld/ELF/MarkLive.cpp @@ -20,6 +20,7 @@ // //===----------------------------------------------------------------------===// +#include "MarkLive.h" #include "InputSection.h" #include "LinkerScript.h" #include "OutputSections.h" @@ -27,7 +28,6 @@ #include "SymbolTable.h" #include "Symbols.h" #include "Target.h" -#include "Writer.h" #include "lld/Common/Memory.h" #include "llvm/ADT/STLExtras.h" #include "llvm/Object/ELF.h" diff --git a/lld/ELF/MarkLive.h b/lld/ELF/MarkLive.h new file mode 100644 index 0000000..c9b99ad --- /dev/null +++ b/lld/ELF/MarkLive.h @@ -0,0 +1,21 @@ +//===- MarkLive.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLD_ELF_MARKLIVE_H +#define LLD_ELF_MARKLIVE_H + +namespace lld { +namespace elf { + +template void markLive(); + +} // namespace elf +} // namespace lld + +#endif // LLD_ELF_MARKLIVE_H diff --git a/lld/ELF/Strings.cpp b/lld/ELF/Strings.cpp index 0ef33a1..ce642cf 100644 --- a/lld/ELF/Strings.cpp +++ b/lld/ELF/Strings.cpp @@ -10,8 +10,6 @@ #include "Strings.h" #include "Config.h" #include "lld/Common/ErrorHandler.h" -#include "llvm/ADT/ArrayRef.h" -#include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" #include "llvm/Demangle/Demangle.h" #include diff --git a/lld/ELF/Writer.h b/lld/ELF/Writer.h index 9c7fbd4..41f1e55 100644 --- a/lld/ELF/Writer.h +++ b/lld/ELF/Writer.h @@ -23,7 +23,6 @@ class InputSectionBase; template class ObjFile; class SymbolTable; template void writeResult(); -template void markLive(); // This describes a program header entry. // Each contains type, access flags and range of output sections that will be -- 2.7.4