6f7483b1ec
Original commit description: [LLD] Remove global state in lld/COFF This patch removes globals from the lldCOFF library, by moving globals into a context class (COFFLinkingContext) and passing it around wherever it's needed. See https://lists.llvm.org/pipermail/llvm-dev/2021-June/151184.html for context about removing globals from LLD. I also haven't moved the `driver` or `config` variables yet. Differential Revision: https://reviews.llvm.org/D109634 This reverts commita2fd05ada9
. Original commits wereb4fa71eed3
ande03c7e367a
.
41 lines
1.8 KiB
C++
41 lines
1.8 KiB
C++
//===- COFFContext.cpp ----------------------------------------------------===//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Description
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "COFFLinkerContext.h"
|
|
#include "lld/Common/Memory.h"
|
|
#include "llvm/DebugInfo/CodeView/TypeHashing.h"
|
|
|
|
namespace lld {
|
|
namespace coff {
|
|
|
|
COFFLinkerContext::COFFLinkerContext()
|
|
: symtab(*this), rootTimer("Total Linking Time"),
|
|
inputFileTimer("Input File Reading", rootTimer),
|
|
ltoTimer("LTO", rootTimer), gcTimer("GC", rootTimer),
|
|
icfTimer("ICF", rootTimer), codeLayoutTimer("Code Layout", rootTimer),
|
|
outputCommitTimer("Commit Output File", rootTimer),
|
|
totalMapTimer("MAP Emission (Cumulative)", rootTimer),
|
|
symbolGatherTimer("Gather Symbols", totalMapTimer),
|
|
symbolStringsTimer("Build Symbol Strings", totalMapTimer),
|
|
writeTimer("Write to File", totalMapTimer),
|
|
totalPdbLinkTimer("PDB Emission (Cumulative)", rootTimer),
|
|
addObjectsTimer("Add Objects", totalPdbLinkTimer),
|
|
typeMergingTimer("Type Merging", addObjectsTimer),
|
|
loadGHashTimer("Global Type Hashing", addObjectsTimer),
|
|
mergeGHashTimer("GHash Type Merging", addObjectsTimer),
|
|
symbolMergingTimer("Symbol Merging", addObjectsTimer),
|
|
publicsLayoutTimer("Publics Stream Layout", totalPdbLinkTimer),
|
|
tpiStreamLayoutTimer("TPI Stream Layout", totalPdbLinkTimer),
|
|
diskCommitTimer("Commit to Disk", totalPdbLinkTimer) {}
|
|
|
|
} // namespace coff
|
|
} // namespace lld
|