summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-10-19 01:44:09 +0000
committerReid Kleckner <rnk@google.com>2019-10-19 01:44:09 +0000
commit7bbe711fb1b9057e48dec3c15b084eee7f8ff5fb (patch)
treef5e31022914e589f039593f5de907cc03050f5e9 /llvm
parent14a3f77ba1034d551e5f8a5bc4cd3ae131738773 (diff)
downloadbcm5719-llvm-7bbe711fb1b9057e48dec3c15b084eee7f8ff5fb.tar.gz
bcm5719-llvm-7bbe711fb1b9057e48dec3c15b084eee7f8ff5fb.zip
Avoid including CodeView/SymbolRecord.h from MCStreamer.h
Move the types needed out so they can be forward declared instead. llvm-svn: 375325
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h56
-rw-r--r--llvm/include/llvm/MC/MCStreamer.h16
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp8
-rw-r--r--llvm/lib/MC/MCAsmStreamer.cpp17
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp9
-rw-r--r--llvm/lib/MC/MCStreamer.cpp9
6 files changed, 62 insertions, 53 deletions
diff --git a/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h b/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h
index 41062456343..1aafa3ca9f1 100644
--- a/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h
+++ b/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h
@@ -469,61 +469,61 @@ public:
uint32_t RecordOffset = 0;
};
+struct DefRangeRegisterHeader {
+ ulittle16_t Register;
+ ulittle16_t MayHaveNoName;
+};
+
// S_DEFRANGE_REGISTER
class DefRangeRegisterSym : public SymbolRecord {
public:
- struct Header {
- ulittle16_t Register;
- ulittle16_t MayHaveNoName;
- };
-
explicit DefRangeRegisterSym(SymbolRecordKind Kind) : SymbolRecord(Kind) {}
explicit DefRangeRegisterSym(uint32_t RecordOffset)
: SymbolRecord(SymbolRecordKind::DefRangeRegisterSym),
RecordOffset(RecordOffset) {}
- uint32_t getRelocationOffset() const { return RecordOffset + sizeof(Header); }
+ uint32_t getRelocationOffset() const { return RecordOffset + sizeof(DefRangeRegisterHeader); }
- Header Hdr;
+ DefRangeRegisterHeader Hdr;
LocalVariableAddrRange Range;
std::vector<LocalVariableAddrGap> Gaps;
uint32_t RecordOffset = 0;
};
+struct DefRangeSubfieldRegisterHeader {
+ ulittle16_t Register;
+ ulittle16_t MayHaveNoName;
+ ulittle32_t OffsetInParent;
+};
+
// S_DEFRANGE_SUBFIELD_REGISTER
class DefRangeSubfieldRegisterSym : public SymbolRecord {
public:
- struct Header {
- ulittle16_t Register;
- ulittle16_t MayHaveNoName;
- ulittle32_t OffsetInParent;
- };
-
explicit DefRangeSubfieldRegisterSym(SymbolRecordKind Kind)
: SymbolRecord(Kind) {}
explicit DefRangeSubfieldRegisterSym(uint32_t RecordOffset)
: SymbolRecord(SymbolRecordKind::DefRangeSubfieldRegisterSym),
RecordOffset(RecordOffset) {}
- uint32_t getRelocationOffset() const { return RecordOffset + sizeof(Header); }
+ uint32_t getRelocationOffset() const { return RecordOffset + sizeof(DefRangeSubfieldRegisterHeader); }
- Header Hdr;
+ DefRangeSubfieldRegisterHeader Hdr;
LocalVariableAddrRange Range;
std::vector<LocalVariableAddrGap> Gaps;
uint32_t RecordOffset = 0;
};
+struct DefRangeFramePointerRelHeader {
+ little32_t Offset;
+};
+
// S_DEFRANGE_FRAMEPOINTER_REL
class DefRangeFramePointerRelSym : public SymbolRecord {
static constexpr uint32_t RelocationOffset = 8;
public:
- struct Header {
- little32_t Offset;
- };
-
explicit DefRangeFramePointerRelSym(SymbolRecordKind Kind)
: SymbolRecord(Kind) {}
explicit DefRangeFramePointerRelSym(uint32_t RecordOffset)
@@ -534,22 +534,22 @@ public:
return RecordOffset + RelocationOffset;
}
- Header Hdr;
+ DefRangeFramePointerRelHeader Hdr;
LocalVariableAddrRange Range;
std::vector<LocalVariableAddrGap> Gaps;
uint32_t RecordOffset = 0;
};
+struct DefRangeRegisterRelHeader {
+ ulittle16_t Register;
+ ulittle16_t Flags;
+ little32_t BasePointerOffset;
+};
+
// S_DEFRANGE_REGISTER_REL
class DefRangeRegisterRelSym : public SymbolRecord {
public:
- struct Header {
- ulittle16_t Register;
- ulittle16_t Flags;
- little32_t BasePointerOffset;
- };
-
explicit DefRangeRegisterRelSym(SymbolRecordKind Kind) : SymbolRecord(Kind) {}
explicit DefRangeRegisterRelSym(uint32_t RecordOffset)
: SymbolRecord(SymbolRecordKind::DefRangeRegisterRelSym),
@@ -567,9 +567,9 @@ public:
bool hasSpilledUDTMember() const { return Hdr.Flags & IsSubfieldFlag; }
uint16_t offsetInParent() const { return Hdr.Flags >> OffsetInParentShift; }
- uint32_t getRelocationOffset() const { return RecordOffset + sizeof(Header); }
+ uint32_t getRelocationOffset() const { return RecordOffset + sizeof(DefRangeRegisterRelHeader); }
- Header Hdr;
+ DefRangeRegisterRelHeader Hdr;
LocalVariableAddrRange Range;
std::vector<LocalVariableAddrGap> Gaps;
diff --git a/llvm/include/llvm/MC/MCStreamer.h b/llvm/include/llvm/MC/MCStreamer.h
index c703afe223a..6b48580ae57 100644
--- a/llvm/include/llvm/MC/MCStreamer.h
+++ b/llvm/include/llvm/MC/MCStreamer.h
@@ -18,7 +18,6 @@
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
#include "llvm/MC/MCDirectives.h"
#include "llvm/MC/MCLinkerOptimizationHint.h"
#include "llvm/MC/MCSymbol.h"
@@ -55,6 +54,13 @@ class MCSubtargetInfo;
class raw_ostream;
class Twine;
+namespace codeview {
+struct DefRangeRegisterRelHeader;
+struct DefRangeSubfieldRegisterHeader;
+struct DefRangeRegisterHeader;
+struct DefRangeFramePointerRelHeader;
+}
+
using MCSectionSubPair = std::pair<MCSection *, const MCExpr *>;
/// Target specific streamer interface. This is used so that targets can
@@ -873,19 +879,19 @@ public:
virtual void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterRelSym::Header DRHdr);
+ codeview::DefRangeRegisterRelHeader DRHdr);
virtual void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeSubfieldRegisterSym::Header DRHdr);
+ codeview::DefRangeSubfieldRegisterHeader DRHdr);
virtual void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterSym::Header DRHdr);
+ codeview::DefRangeRegisterHeader DRHdr);
virtual void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeFramePointerRelSym::Header DRHdr);
+ codeview::DefRangeFramePointerRelHeader DRHdr);
/// This implements the CodeView '.cv_stringtable' assembler directive.
virtual void EmitCVStringTableDirective() {}
diff --git a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
index 012da940f89..c6457f3626d 100644
--- a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
@@ -2654,7 +2654,7 @@ void CodeViewDebug::emitLocalVariable(const FunctionInfo &FI,
(bool(Flags & LocalSymFlags::IsParameter)
? (EncFP == FI.EncodedParamFramePtrReg)
: (EncFP == FI.EncodedLocalFramePtrReg))) {
- DefRangeFramePointerRelSym::Header DRHdr;
+ DefRangeFramePointerRelHeader DRHdr;
DRHdr.Offset = Offset;
OS.EmitCVDefRangeDirective(DefRange.Ranges, DRHdr);
} else {
@@ -2664,7 +2664,7 @@ void CodeViewDebug::emitLocalVariable(const FunctionInfo &FI,
(DefRange.StructOffset
<< DefRangeRegisterRelSym::OffsetInParentShift);
}
- DefRangeRegisterRelSym::Header DRHdr;
+ DefRangeRegisterRelHeader DRHdr;
DRHdr.Register = Reg;
DRHdr.Flags = RegRelFlags;
DRHdr.BasePointerOffset = Offset;
@@ -2673,13 +2673,13 @@ void CodeViewDebug::emitLocalVariable(const FunctionInfo &FI,
} else {
assert(DefRange.DataOffset == 0 && "unexpected offset into register");
if (DefRange.IsSubfield) {
- DefRangeSubfieldRegisterSym::Header DRHdr;
+ DefRangeSubfieldRegisterHeader DRHdr;
DRHdr.Register = DefRange.CVRegister;
DRHdr.MayHaveNoName = 0;
DRHdr.OffsetInParent = DefRange.StructOffset;
OS.EmitCVDefRangeDirective(DefRange.Ranges, DRHdr);
} else {
- DefRangeRegisterSym::Header DRHdr;
+ DefRangeRegisterHeader DRHdr;
DRHdr.Register = DefRange.CVRegister;
DRHdr.MayHaveNoName = 0;
OS.EmitCVDefRangeDirective(DefRange.Ranges, DRHdr);
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index dd27d0bc8a5..2d9c2cb2125 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -11,6 +11,7 @@
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/Twine.h"
+#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
#include "llvm/MC/MCAsmBackend.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCAssembler.h"
@@ -263,19 +264,19 @@ public:
void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterRelSym::Header DRHdr) override;
+ codeview::DefRangeRegisterRelHeader DRHdr) override;
void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeSubfieldRegisterSym::Header DRHdr) override;
+ codeview::DefRangeSubfieldRegisterHeader DRHdr) override;
void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterSym::Header DRHdr) override;
+ codeview::DefRangeRegisterHeader DRHdr) override;
void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeFramePointerRelSym::Header DRHdr) override;
+ codeview::DefRangeFramePointerRelHeader DRHdr) override;
void EmitCVStringTableDirective() override;
void EmitCVFileChecksumsDirective() override;
@@ -1438,7 +1439,7 @@ void MCAsmStreamer::PrintCVDefRangePrefix(
void MCAsmStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterRelSym::Header DRHdr) {
+ codeview::DefRangeRegisterRelHeader DRHdr) {
PrintCVDefRangePrefix(Ranges);
OS << ", reg_rel, ";
OS << DRHdr.Register << ", " << DRHdr.Flags << ", "
@@ -1448,7 +1449,7 @@ void MCAsmStreamer::EmitCVDefRangeDirective(
void MCAsmStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeSubfieldRegisterSym::Header DRHdr) {
+ codeview::DefRangeSubfieldRegisterHeader DRHdr) {
PrintCVDefRangePrefix(Ranges);
OS << ", subfield_reg, ";
OS << DRHdr.Register << ", " << DRHdr.OffsetInParent;
@@ -1457,7 +1458,7 @@ void MCAsmStreamer::EmitCVDefRangeDirective(
void MCAsmStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterSym::Header DRHdr) {
+ codeview::DefRangeRegisterHeader DRHdr) {
PrintCVDefRangePrefix(Ranges);
OS << ", reg, ";
OS << DRHdr.Register;
@@ -1466,7 +1467,7 @@ void MCAsmStreamer::EmitCVDefRangeDirective(
void MCAsmStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeFramePointerRelSym::Header DRHdr) {
+ codeview::DefRangeFramePointerRelHeader DRHdr) {
PrintCVDefRangePrefix(Ranges);
OS << ", frame_ptr_rel, ";
OS << DRHdr.Offset;
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index ca6bc252a0d..b59ac08ad6c 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -22,6 +22,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/Dwarf.h"
+#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCCodeView.h"
#include "llvm/MC/MCContext.h"
@@ -3908,7 +3909,7 @@ bool AsmParser::parseDirectiveCVDefRange() {
parseAbsoluteExpression(DRRegister))
return Error(Loc, "expected register number");
- codeview::DefRangeRegisterSym::Header DRHdr;
+ codeview::DefRangeRegisterHeader DRHdr;
DRHdr.Register = DRRegister;
DRHdr.MayHaveNoName = 0;
getStreamer().EmitCVDefRangeDirective(Ranges, DRHdr);
@@ -3921,7 +3922,7 @@ bool AsmParser::parseDirectiveCVDefRange() {
parseAbsoluteExpression(DROffset))
return Error(Loc, "expected offset value");
- codeview::DefRangeFramePointerRelSym::Header DRHdr;
+ codeview::DefRangeFramePointerRelHeader DRHdr;
DRHdr.Offset = DROffset;
getStreamer().EmitCVDefRangeDirective(Ranges, DRHdr);
break;
@@ -3938,7 +3939,7 @@ bool AsmParser::parseDirectiveCVDefRange() {
parseAbsoluteExpression(DROffsetInParent))
return Error(Loc, "expected offset value");
- codeview::DefRangeSubfieldRegisterSym::Header DRHdr;
+ codeview::DefRangeSubfieldRegisterHeader DRHdr;
DRHdr.Register = DRRegister;
DRHdr.MayHaveNoName = 0;
DRHdr.OffsetInParent = DROffsetInParent;
@@ -3963,7 +3964,7 @@ bool AsmParser::parseDirectiveCVDefRange() {
parseAbsoluteExpression(DRBasePointerOffset))
return Error(Loc, "expected base pointer offset value");
- codeview::DefRangeRegisterRelSym::Header DRHdr;
+ codeview::DefRangeRegisterRelHeader DRHdr;
DRHdr.Register = DRRegister;
DRHdr.Flags = DRFlags;
DRHdr.BasePointerOffset = DRBasePointerOffset;
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp
index 38d4b177e28..b8278cb1107 100644
--- a/llvm/lib/MC/MCStreamer.cpp
+++ b/llvm/lib/MC/MCStreamer.cpp
@@ -12,6 +12,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/COFF.h"
+#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
#include "llvm/MC/MCAsmBackend.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCCodeView.h"
@@ -347,7 +348,7 @@ void MCStreamer::EmitCVDefRangeDirective(
void MCStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterRelSym::Header DRHdr) {
+ codeview::DefRangeRegisterRelHeader DRHdr) {
SmallString<20> BytePrefix;
copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_REGISTER_REL, DRHdr);
EmitCVDefRangeDirective(Ranges, BytePrefix);
@@ -355,7 +356,7 @@ void MCStreamer::EmitCVDefRangeDirective(
void MCStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeSubfieldRegisterSym::Header DRHdr) {
+ codeview::DefRangeSubfieldRegisterHeader DRHdr) {
SmallString<20> BytePrefix;
copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_SUBFIELD_REGISTER,
DRHdr);
@@ -364,7 +365,7 @@ void MCStreamer::EmitCVDefRangeDirective(
void MCStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeRegisterSym::Header DRHdr) {
+ codeview::DefRangeRegisterHeader DRHdr) {
SmallString<20> BytePrefix;
copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_REGISTER, DRHdr);
EmitCVDefRangeDirective(Ranges, BytePrefix);
@@ -372,7 +373,7 @@ void MCStreamer::EmitCVDefRangeDirective(
void MCStreamer::EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- codeview::DefRangeFramePointerRelSym::Header DRHdr) {
+ codeview::DefRangeFramePointerRelHeader DRHdr) {
SmallString<20> BytePrefix;
copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_FRAMEPOINTER_REL,
DRHdr);
OpenPOWER on IntegriCloud