mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-22 10:29:35 +00:00
go through PIC16TargetObjectFile to make sections instead of
creating them directly in the pic16 asmprinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78317 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fc60eb4033
commit
759b88898d
@ -68,12 +68,8 @@ bool PIC16AsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
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);
|
||||
@ -347,12 +343,9 @@ void PIC16AsmPrinter::EmitFunctionFrame(MachineFunction &MF) {
|
||||
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
|
||||
|
@ -37,6 +37,10 @@ namespace llvm {
|
||||
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);
|
||||
|
@ -16,8 +16,7 @@
|
||||
using namespace llvm;
|
||||
|
||||
PIC16TargetObjectFile::PIC16TargetObjectFile()
|
||||
: ExternalVarDecls(0), ExternalVarDefs(0)
|
||||
{
|
||||
: ExternalVarDecls(0), ExternalVarDefs(0) {
|
||||
}
|
||||
|
||||
void PIC16TargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &tm){
|
||||
@ -47,6 +46,18 @@ 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 {
|
||||
|
@ -64,10 +64,16 @@ namespace llvm {
|
||||
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user