LLVM 20.0.0git
AcceleratorRecordsSaver.h
Go to the documentation of this file.
1//===- AcceleratorRecordsSaver.h --------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_DWARFLINKER_PARALLEL_ACCELERATORRECORDSSAVER_H
10#define LLVM_LIB_DWARFLINKER_PARALLEL_ACCELERATORRECORDSSAVER_H
11
12#include "DIEAttributeCloner.h"
15#include "DWARFLinkerTypeUnit.h"
16
17namespace llvm {
18namespace dwarf_linker {
19namespace parallel {
20
21/// This class helps to store information for accelerator entries.
22/// It prepares accelerator info for the certain DIE and store it inside
23/// OutUnit.
25public:
29 CompileUnit::OutputUnitVariantPtr(OutUnit)) {}
30
34 CompileUnit::OutputUnitVariantPtr(OutUnit)) {}
35
36 /// Save accelerator info for the specified \p OutDIE inside OutUnit.
37 /// Side effects: set attributes in \p AttrInfo.
38 void save(const DWARFDebugInfoEntry *InputDieEntry, DIE *OutDIE,
40
41protected:
45
46 void saveObjC(const DWARFDebugInfoEntry *InputDieEntry, DIE *OutDIE,
47 AttributesInfo &AttrInfo);
48
50 bool AvoidForPubSections);
55 uint32_t QualifiedNameHash, bool ObjcClassImplementation,
57
58 /// Global linking data.
60
61 /// Comiple unit corresponding to input DWARF.
63
64 /// Compile unit or Artificial type unit corresponding to the output DWARF.
66};
67
68} // end of namespace parallel
69} // end of namespace dwarf_linker
70} // end of namespace llvm
71
72#endif // LLVM_LIB_DWARFLINKER_PARALLEL_ACCELERATORRECORDSSAVER_H
std::string Name
A structured debug information entry.
Definition: DIE.h:819
DWARFDebugInfoEntry - A DIE with only the minimum required data.
StringMapEntry - This is used to represent one value that is inserted into a StringMap.
This class helps to store information for accelerator entries.
CompileUnit & InUnit
Comiple unit corresponding to input DWARF.
void saveTypeRecord(StringEntry *Name, DIE *OutDIE, dwarf::Tag Tag, uint32_t QualifiedNameHash, bool ObjcClassImplementation, TypeEntry *TypeEntry)
AcceleratorRecordsSaver(LinkingGlobalData &GlobalData, CompileUnit &InUnit, CompileUnit::OutputUnitVariantPtr OutUnit)
void saveObjC(const DWARFDebugInfoEntry *InputDieEntry, DIE *OutDIE, AttributesInfo &AttrInfo)
void saveNamespaceRecord(StringEntry *Name, DIE *OutDIE, dwarf::Tag Tag, TypeEntry *TypeEntry)
void saveObjCNameRecord(StringEntry *Name, DIE *OutDIE, dwarf::Tag Tag)
CompileUnit::OutputUnitVariantPtr OutUnit
Compile unit or Artificial type unit corresponding to the output DWARF.
AcceleratorRecordsSaver(LinkingGlobalData &GlobalData, CompileUnit &InUnit, CompileUnit *OutUnit)
AcceleratorRecordsSaver(LinkingGlobalData &GlobalData, CompileUnit &InUnit, TypeUnit *OutUnit)
LinkingGlobalData & GlobalData
Global linking data.
void save(const DWARFDebugInfoEntry *InputDieEntry, DIE *OutDIE, AttributesInfo &AttrInfo, TypeEntry *TypeEntry)
Save accelerator info for the specified OutDIE inside OutUnit.
void saveNameRecord(StringEntry *Name, DIE *OutDIE, dwarf::Tag Tag, bool AvoidForPubSections)
Stores all information related to a compile unit, be it in its original instance of the object file o...
This class keeps data and services common for the whole linking process.
Type Unit is used to represent an artificial compilation unit which keeps all type information.
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
Information gathered and exchanged between the various clone*Attr helpers about the attributes of a p...