EmitAutos(CurrentFnName);
// Now emit the instructions of function in its code section.
- std::string T = PAN::getCodeSectionName(CurrentFnName);
- const char *codeSection = T.c_str();
-
const MCSection *fCodeSection =
- getObjFileLowering().getOrCreateSection(codeSection, false,
- SectionKind::getText());
+ getObjFileLowering().getSectionForFunction(CurrentFnName);
// Start the Code Section.
O << "\n";
SwitchToSection(fCodeSection);
const TargetData *TD = TM.getTargetData();
// Emit the data section name.
O << "\n";
- std::string T = PAN::getFrameSectionName(CurrentFnName);
- const char *SectionName = T.c_str();
-
+
const MCSection *fPDataSection =
- getObjFileLowering().getOrCreateSection(SectionName, false,
- SectionKind::getDataRel());
+ getObjFileLowering().getSectionForFunctionFrame(CurrentFnName);
SwitchToSection(fPDataSection);
// Emit function frame label
virtual const char *getPassName() const {
return "PIC16 Assembly Printer";
}
+
+ PIC16TargetObjectFile &getObjFileLowering() const {
+ return (PIC16TargetObjectFile &)AsmPrinter::getObjFileLowering();
+ }
bool runOnMachineFunction(MachineFunction &F);
void printOperand(const MachineInstr *MI, int opNum);
using namespace llvm;
PIC16TargetObjectFile::PIC16TargetObjectFile()
- : ExternalVarDecls(0), ExternalVarDefs(0)
-{
+ : ExternalVarDecls(0), ExternalVarDefs(0) {
}
void PIC16TargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &tm){
SectionKind::getMetadata()));
}
+const MCSection *PIC16TargetObjectFile::
+getSectionForFunction(const std::string &FnName) const {
+ std::string T = PAN::getCodeSectionName(FnName);
+ return getOrCreateSection(T.c_str(), false, SectionKind::getText());
+}
+
+
+const MCSection *PIC16TargetObjectFile::
+getSectionForFunctionFrame(const std::string &FnName) const {
+ std::string T = PAN::getFrameSectionName(FnName);
+ return getOrCreateSection(T.c_str(), false, SectionKind::getDataRel());
+}
const MCSection *
PIC16TargetObjectFile::getBSSSectionForGlobal(const GlobalVariable *GV) const {
virtual const MCSection *
getSpecialCasedSectionGlobals(const GlobalValue *GV, Mangler *Mang,
SectionKind Kind) const;
+
virtual const MCSection *SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind,
Mangler *Mang,
const TargetMachine&) const;
+
+ const MCSection *getSectionForFunction(const std::string &FnName) const;
+ const MCSection *getSectionForFunctionFrame(const std::string &FnName)const;
+
+
private:
std::string getSectionNameForSym(const std::string &Sym) const;