aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/MC/MCAsmBackend.h3
-rw-r--r--llvm/include/llvm/MC/MCSection.h14
-rw-r--r--llvm/lib/MC/MCAssembler.cpp3
-rw-r--r--llvm/lib/MC/MCFragment.cpp2
-rw-r--r--llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp8
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp12
-rw-r--r--llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp9
-rw-r--r--llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp3
8 files changed, 23 insertions, 31 deletions
diff --git a/llvm/include/llvm/MC/MCAsmBackend.h b/llvm/include/llvm/MC/MCAsmBackend.h
index e5f931c..0322cbe 100644
--- a/llvm/include/llvm/MC/MCAsmBackend.h
+++ b/llvm/include/llvm/MC/MCAsmBackend.h
@@ -224,8 +224,7 @@ public:
bool isDarwinCanonicalPersonality(const MCSymbol *Sym) const;
- // Return STI for fragments of type MCRelaxableFragment and MCFragment
- // with hasInstructions() == true.
+ // Return STI for fragments with hasInstructions() == true.
static const MCSubtargetInfo *getSubtargetInfo(const MCFragment &F);
};
diff --git a/llvm/include/llvm/MC/MCSection.h b/llvm/include/llvm/MC/MCSection.h
index 49570c9..296fdd8 100644
--- a/llvm/include/llvm/MC/MCSection.h
+++ b/llvm/include/llvm/MC/MCSection.h
@@ -225,13 +225,13 @@ private:
FragmentType Kind;
protected:
- /// Used by subclasses for better packing.
+ bool LinkerRelaxable : 1;
+
+ /// Used by certain fragment types for better packing.
///
- /// MCEncodedFragment
+ /// FT_Data, FT_Relaxable
bool HasInstructions : 1;
- /// MCDataFragment
- bool LinkerRelaxable : 1;
- /// MCRelaxableFragment: x86-specific
+ /// FT_Relaxable, x86-specific
bool AllowAutoPadding : 1;
uint32_t ContentStart = 0;
@@ -486,10 +486,6 @@ protected:
: MCFragment(FType, HasInstructions) {}
};
-// TODO Delete
-using MCDataFragment = MCFragment;
-using MCRelaxableFragment = MCFragment;
-
class MCAlignFragment : public MCFragment {
/// Flag to indicate that (optimal) NOPs should be emitted instead
/// of using the provided value. The exact interpretation of this flag is
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 77741a6..d4d10e0 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -966,8 +966,7 @@ bool MCAssembler::relaxFragment(MCFragment &F) {
default:
return false;
case MCFragment::FT_Relaxable:
- assert(!getRelaxAll() &&
- "Did not expect a MCRelaxableFragment in RelaxAll mode");
+ assert(!getRelaxAll() && "Did not expect a FT_Relaxable in RelaxAll mode");
return relaxInstruction(F);
case MCFragment::FT_LEB:
return relaxLEB(F);
diff --git a/llvm/lib/MC/MCFragment.cpp b/llvm/lib/MC/MCFragment.cpp
index 49760a6..bfe045a 100644
--- a/llvm/lib/MC/MCFragment.cpp
+++ b/llvm/lib/MC/MCFragment.cpp
@@ -28,7 +28,7 @@ static_assert(std::is_trivially_destructible_v<MCFragment>,
"fragment classes must be trivially destructible");
MCFragment::MCFragment(FragmentType Kind, bool HasInstructions)
- : Kind(Kind), HasInstructions(HasInstructions), LinkerRelaxable(false),
+ : Kind(Kind), LinkerRelaxable(false), HasInstructions(HasInstructions),
AllowAutoPadding(false) {
static_assert(sizeof(MCFragment::Tail) <= 16,
"Keep the variable-size tail small");
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
index 910806e..eaba6fe 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
@@ -638,7 +638,7 @@ private:
Offset = 0;
}
bool hasInfo() { return F != nullptr; }
- MCDataFragment *F = nullptr;
+ MCFragment *F = nullptr;
uint64_t Offset = 0;
ElfMappingSymbol State = EMS_None;
};
@@ -686,7 +686,7 @@ private:
Symbol->setBinding(ELF::STB_LOCAL);
}
- void emitMappingSymbol(StringRef Name, MCDataFragment &F, uint64_t Offset) {
+ void emitMappingSymbol(StringRef Name, MCFragment &F, uint64_t Offset) {
auto *Symbol = cast<MCSymbolELF>(getContext().createLocalSymbol(Name));
emitLabelAtPos(Symbol, SMLoc(), F, Offset);
Symbol->setType(ELF::STT_NOTYPE);
@@ -1207,7 +1207,7 @@ inline void ARMELFStreamer::SwitchToExIdxSection(const MCSymbol &FnStart) {
}
void ARMELFStreamer::EmitFixup(const MCExpr *Expr, MCFixupKind Kind) {
- MCDataFragment *Frag = getOrCreateDataFragment();
+ MCFragment *Frag = getOrCreateDataFragment();
Frag->addFixup(MCFixup::create(Frag->getContents().size(), Expr, Kind));
}
@@ -1295,7 +1295,7 @@ void ARMELFStreamer::EmitPersonalityFixup(StringRef Name) {
MCSymbolRefExpr::create(PersonalitySym, ARM::S_ARM_NONE, getContext());
visitUsedExpr(*PersonalityRef);
- MCDataFragment *DF = getOrCreateDataFragment();
+ MCFragment *DF = getOrCreateDataFragment();
DF->addFixup(
MCFixup::create(DF->getContents().size(), PersonalityRef, FK_Data_4));
}
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
index c69fc68..b89d689 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
@@ -1033,42 +1033,42 @@ MCELFStreamer &MipsTargetELFStreamer::getStreamer() {
}
void MipsTargetELFStreamer::emitGPRel32Value(const MCExpr *Value) {
- MCDataFragment *DF = getStreamer().getOrCreateDataFragment();
+ MCFragment *DF = getStreamer().getOrCreateDataFragment();
DF->addFixup(MCFixup::create(DF->getContents().size(), Value,
Mips::fixup_Mips_GPREL32));
DF->appendContents(4, 0);
}
void MipsTargetELFStreamer::emitGPRel64Value(const MCExpr *Value) {
- MCDataFragment *DF = getStreamer().getOrCreateDataFragment();
+ MCFragment *DF = getStreamer().getOrCreateDataFragment();
DF->addFixup(MCFixup::create(DF->getContents().size(), Value,
Mips::fixup_Mips_GPREL32));
DF->appendContents(8, 0);
}
void MipsTargetELFStreamer::emitDTPRel32Value(const MCExpr *Value) {
- MCDataFragment *DF = getStreamer().getOrCreateDataFragment();
+ MCFragment *DF = getStreamer().getOrCreateDataFragment();
DF->addFixup(MCFixup::create(DF->getContents().size(), Value,
Mips::fixup_Mips_DTPREL32));
DF->appendContents(4, 0);
}
void MipsTargetELFStreamer::emitDTPRel64Value(const MCExpr *Value) {
- MCDataFragment *DF = getStreamer().getOrCreateDataFragment();
+ MCFragment *DF = getStreamer().getOrCreateDataFragment();
DF->addFixup(MCFixup::create(DF->getContents().size(), Value,
Mips::fixup_Mips_DTPREL64));
DF->appendContents(8, 0);
}
void MipsTargetELFStreamer::emitTPRel32Value(const MCExpr *Value) {
- MCDataFragment *DF = getStreamer().getOrCreateDataFragment();
+ MCFragment *DF = getStreamer().getOrCreateDataFragment();
DF->addFixup(MCFixup::create(DF->getContents().size(), Value,
Mips::fixup_Mips_TPREL32));
DF->appendContents(4, 0);
}
void MipsTargetELFStreamer::emitTPRel64Value(const MCExpr *Value) {
- MCDataFragment *DF = getStreamer().getOrCreateDataFragment();
+ MCFragment *DF = getStreamer().getOrCreateDataFragment();
DF->addFixup(MCFixup::create(DF->getContents().size(), Value,
Mips::fixup_Mips_TPREL64));
DF->appendContents(8, 0);
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp
index ee99cfc..2dbc31f 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp
@@ -155,11 +155,10 @@ void PPCELFStreamer::emitGOTToPCRelReloc(const MCInst &Inst) {
const MCExpr *SubExpr2 =
MCBinaryExpr::createSub(CurrentLocationExpr, SubExpr, getContext());
- MCDataFragment *DF = static_cast<MCDataFragment *>(LabelSym->getFragment());
- assert(DF && "Expecting a valid data fragment.");
- MCFixupKind FixupKind = static_cast<MCFixupKind>(FirstLiteralRelocationKind +
- ELF::R_PPC64_PCREL_OPT);
- DF->addFixup(MCFixup::create(LabelSym->getOffset() - 8, SubExpr2, FixupKind));
+ MCFragment *F = LabelSym->getFragment();
+ F->addFixup(
+ MCFixup::create(LabelSym->getOffset() - 8, SubExpr2,
+ FirstLiteralRelocationKind + ELF::R_PPC64_PCREL_OPT));
emitLabel(CurrentLocation, Inst.getLoc());
}
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
index 8ab7648..3d060c6 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
@@ -567,8 +567,7 @@ void X86AsmBackend::emitInstructionEnd(MCObjectStreamer &OS,
// DataFragment, so that we can get the size of instructions later in
// MCAssembler::relaxBoundaryAlign. The easiest way is to insert a new empty
// DataFragment.
- if (isa_and_nonnull<MCDataFragment>(CF))
- OS.insert(OS.getContext().allocFragment<MCDataFragment>());
+ OS.insert(OS.getContext().allocFragment<MCFragment>());
// Update the maximum alignment on the current section if necessary.
MCSection *Sec = OS.getCurrentSectionOnly();