Avoid unnecessary section switching. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237913 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2015-05-21 17:00:40 +00:00
parent 43356a1a45
commit e0376b0782
3 changed files with 4 additions and 5 deletions

View File

@ -147,8 +147,8 @@ public:
bool emitAbsoluteSymbolDiff(const MCSymbol *Hi, const MCSymbol *Lo,
unsigned Size) override;
bool mayHaveInstructions() const override {
return getCurrentSectionData()->hasInstructions();
bool mayHaveInstructions(const MCSection &Sec) const override {
return Assembler->getOrCreateSectionData(Sec).hasInstructions();
}
};

View File

@ -728,7 +728,7 @@ public:
/// \brief Finish emission of machine code.
void Finish();
virtual bool mayHaveInstructions() const { return true; }
virtual bool mayHaveInstructions(const MCSection &Sec) const { return true; }
};
/// Create a dummy machine code streamer, which does nothing. This is useful for

View File

@ -442,8 +442,7 @@ bool MCContext::isValidDwarfFileNumber(unsigned FileNumber, unsigned CUID) {
void MCContext::finalizeDwarfSections(MCStreamer &MCOS) {
std::vector<const MCSection *> Keep;
for (const MCSection *Sec : SectionsForRanges) {
MCOS.SwitchSection(Sec); // FIXME: pass the section to mayHaveInstructions
if (MCOS.mayHaveInstructions())
if (MCOS.mayHaveInstructions(*Sec))
Keep.push_back(Sec);
}
SectionsForRanges.clear();