mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 07:11:49 +00:00
eliminate CurrentSection, rename CurrentSection_ -> CurrentSection, make it private,
eliminate IsInTextSection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78017 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c6fdced3db
commit
290c2f56ce
@ -60,6 +60,10 @@ namespace llvm {
|
||||
typedef gcp_map_type::iterator gcp_iterator;
|
||||
gcp_map_type GCMetadataPrinters;
|
||||
|
||||
/// CurrentSection - The current section we are emitting to. This is
|
||||
/// controlled and used by the SwitchToSection method.
|
||||
const MCSection *CurrentSection;
|
||||
|
||||
protected:
|
||||
/// MMI - If available, this is a pointer to the current MachineModuleInfo.
|
||||
MachineModuleInfo *MMI;
|
||||
@ -110,14 +114,9 @@ namespace llvm {
|
||||
///
|
||||
std::string CurrentFnName;
|
||||
|
||||
/// CurrentSection - The current section we are emitting to. This is
|
||||
/// controlled and used by the SwitchSection method.
|
||||
std::string CurrentSection;
|
||||
const MCSection *CurrentSection_;
|
||||
|
||||
/// IsInTextSection - True if the current section we are emitting to is a
|
||||
/// text section.
|
||||
bool IsInTextSection;
|
||||
/// getCurrentSection() - Return the current section we are emitting to.
|
||||
const MCSection *getCurrentSection() const { return CurrentSection; }
|
||||
|
||||
|
||||
/// VerboseAsm - Emit comments in assembly output if this is true.
|
||||
///
|
||||
|
@ -55,8 +55,9 @@ AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm,
|
||||
OutContext(*new MCContext()),
|
||||
OutStreamer(*createAsmStreamer(OutContext, O)),
|
||||
|
||||
IsInTextSection(false), LastMI(0), LastFn(0), Counter(~0U),
|
||||
LastMI(0), LastFn(0), Counter(~0U),
|
||||
PrevDLT(0, ~0U, ~0U) {
|
||||
CurrentSection = 0;
|
||||
DW = 0; MMI = 0;
|
||||
switch (AsmVerbose) {
|
||||
case cl::BOU_UNSET: VerboseAsm = VDef; break;
|
||||
@ -86,20 +87,16 @@ TargetLoweringObjectFile &AsmPrinter::getObjFileLowering() const {
|
||||
/// FIXME: Remove support for null sections.
|
||||
///
|
||||
void AsmPrinter::SwitchToSection(const MCSection *NS) {
|
||||
const std::string &NewSection = NS ? NS->getName() : "";
|
||||
|
||||
// If we're already in this section, we're done.
|
||||
if (CurrentSection == NewSection) return;
|
||||
if (CurrentSection == NS) return;
|
||||
|
||||
// Close the current section, if applicable.
|
||||
if (TAI->getSectionEndDirectiveSuffix() && !CurrentSection.empty())
|
||||
O << CurrentSection << TAI->getSectionEndDirectiveSuffix() << '\n';
|
||||
if (NS != 0 && TAI->getSectionEndDirectiveSuffix())
|
||||
O << NS->getName() << TAI->getSectionEndDirectiveSuffix() << '\n';
|
||||
|
||||
// FIXME: Make CurrentSection a Section* in the future
|
||||
CurrentSection = NewSection;
|
||||
CurrentSection_ = NS;
|
||||
CurrentSection = NS;
|
||||
|
||||
if (!CurrentSection.empty()) {
|
||||
if (NS != 0) {
|
||||
// If section is named we need to switch into it via special '.section'
|
||||
// directive and also append funky flags. Otherwise - section name is just
|
||||
// some magic assembler directive.
|
||||
@ -109,15 +106,12 @@ void AsmPrinter::SwitchToSection(const MCSection *NS) {
|
||||
getObjFileLowering().getSectionFlagsAsString(NS->getKind(), FlagsStr);
|
||||
|
||||
O << TAI->getSwitchToSectionDirective()
|
||||
<< CurrentSection
|
||||
<< FlagsStr.c_str();
|
||||
<< CurrentSection->getName() << FlagsStr.c_str();
|
||||
} else {
|
||||
O << CurrentSection;
|
||||
O << CurrentSection->getName();
|
||||
}
|
||||
O << TAI->getDataSectionStartSuffix() << '\n';
|
||||
}
|
||||
|
||||
IsInTextSection = NS ? NS->getKind().isText() : false;
|
||||
}
|
||||
|
||||
void AsmPrinter::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
@ -787,12 +781,11 @@ void AsmPrinter::EmitAlignment(unsigned NumBits, const GlobalValue *GV,
|
||||
if (TAI->getAlignmentIsInBytes()) NumBits = 1 << NumBits;
|
||||
O << TAI->getAlignDirective() << NumBits;
|
||||
|
||||
unsigned FillValue = TAI->getTextAlignFillValue();
|
||||
UseFillExpr &= IsInTextSection && FillValue;
|
||||
if (UseFillExpr) {
|
||||
O << ',';
|
||||
PrintHex(FillValue);
|
||||
}
|
||||
if (CurrentSection && CurrentSection->getKind().isText())
|
||||
if (unsigned FillValue = TAI->getTextAlignFillValue()) {
|
||||
O << ',';
|
||||
PrintHex(FillValue);
|
||||
}
|
||||
O << '\n';
|
||||
}
|
||||
|
||||
|
@ -1463,7 +1463,7 @@ void DwarfDebug::EndFunction(MachineFunction *MF) {
|
||||
// Get function line info.
|
||||
if (!Lines.empty()) {
|
||||
// Get section line info.
|
||||
unsigned ID = SectionMap.insert(Asm->CurrentSection_);
|
||||
unsigned ID = SectionMap.insert(Asm->getCurrentSection());
|
||||
if (SectionSourceLines.size() < ID) SectionSourceLines.resize(ID);
|
||||
std::vector<SrcLineInfo> &SectionLineInfos = SectionSourceLines[ID-1];
|
||||
// Append the function info to section info.
|
||||
|
Loading…
Reference in New Issue
Block a user