[llvm-commits] [llvm] r84251 - in /llvm/trunk/lib/Target/PIC16: AsmPrinter/PIC16AsmPrinter.cpp AsmPrinter/PIC16AsmPrinter.h PIC16ABINames.h PIC16TargetObjectFile.cpp
Sanjiv Gupta
sanjiv.gupta at microchip.com
Fri Oct 16 01:58:36 PDT 2009
Author: sgupta
Date: Fri Oct 16 03:58:34 2009
New Revision: 84251
URL: http://llvm.org/viewvc/llvm-project?rev=84251&view=rev
Log:
Cleaned up some code. No functionality change.
Modified:
llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp
llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h
llvm/trunk/lib/Target/PIC16/PIC16ABINames.h
llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp
Modified: llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp?rev=84251&r1=84250&r2=84251&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp Fri Oct 16 03:58:34 2009
@@ -73,9 +73,6 @@
DbgInfo.BeginFunction(MF);
- // Emit the autos section of function.
- // EmitAutos(CurrentFnName);
-
// Now emit the instructions of function in its code section.
const MCSection *fCodeSection
= getObjFileLowering().SectionForCode(CurrentFnName);
@@ -329,15 +326,11 @@
// Emit initialized data placed in ROM.
void PIC16AsmPrinter::EmitRomData(Module &M) {
- // Print ROM Data section.
- const PIC16Section *ROSection = PTOF->ROMDATASection();
- if (ROSection == NULL) return;
- EmitInitializedDataSection(ROSection);
+ EmitSingleSection(PTOF->ROMDATASection());
}
bool PIC16AsmPrinter::doFinalization(Module &M) {
printLibcallDecls();
- // EmitRemainingAutos();
DbgInfo.EndModule(M);
O << "\n\t" << "END\n";
return AsmPrinter::doFinalization(M);
@@ -402,20 +395,13 @@
}
}
+// Print all IDATA sections.
void PIC16AsmPrinter::EmitIData(Module &M) {
-
- // Print all IDATA sections.
- const std::vector<PIC16Section *> &IDATASections = PTOF->IDATASections();
- for (unsigned i = 0; i < IDATASections.size(); i++) {
- O << "\n";
- if (IDATASections[i]->getName().find("llvm.") != std::string::npos)
- continue;
-
- EmitInitializedDataSection(IDATASections[i]);
- }
+ EmitSectionList (M, PTOF->IDATASections());
}
-void PIC16AsmPrinter::EmitUninitializedDataSection(const PIC16Section *S) {
+void PIC16AsmPrinter::
+EmitUninitializedDataSection(const PIC16Section *S) {
const TargetData *TD = TM.getTargetData();
OutStreamer.SwitchSection(S);
std::vector<const GlobalVariable*> Items = S->Items;
@@ -428,41 +414,52 @@
}
}
+// Print all UDATA sections.
void PIC16AsmPrinter::EmitUData(Module &M) {
- // Print all UDATA sections.
- const std::vector<PIC16Section*> &UDATASections = PTOF->UDATASections();
- for (unsigned i = 0; i < UDATASections.size(); i++) {
- O << "\n";
- EmitUninitializedDataSection(UDATASections[i]);
- }
+ EmitSectionList (M, PTOF->UDATASections());
}
+// Print all USER sections.
void PIC16AsmPrinter::EmitUserSections(Module &M) {
- const std::vector<PIC16Section*> &USERSections = PTOF->USERSections();
- for (unsigned i = 0; i < USERSections.size(); i++) {
- O << "\n";
- const PIC16Section *S = USERSections[i];
- if (S->isUDATA_Type()) {
- EmitUninitializedDataSection(S);
- } else if (S->isIDATA_Type() || S->isROMDATA_Type()) {
- EmitInitializedDataSection(S);
- } else {
- llvm_unreachable ("unknow user section type");
- }
- }
+ EmitSectionList (M, PTOF->USERSections());
}
+// Print all AUTO sections.
void PIC16AsmPrinter::EmitAllAutos(Module &M) {
- // Print all AUTO sections.
- const std::vector<PIC16Section*> &AUTOSections = PTOF->AUTOSections();
- for (unsigned i = 0; i < AUTOSections.size(); i++) {
- O << "\n";
- EmitUninitializedDataSection(AUTOSections[i]);
- }
+ EmitSectionList (M, PTOF->AUTOSections());
}
extern "C" void LLVMInitializePIC16AsmPrinter() {
RegisterAsmPrinter<PIC16AsmPrinter> X(ThePIC16Target);
}
+// Emit one data section using correct section emitter based on section type.
+void PIC16AsmPrinter::EmitSingleSection(const PIC16Section *S) {
+ if (S == NULL) return;
+
+ switch (S->getType()) {
+ default: llvm_unreachable ("unknow user section type");
+ case UDATA:
+ case UDATA_SHR:
+ case UDATA_OVR:
+ EmitUninitializedDataSection(S);
+ break;
+ case IDATA:
+ case ROMDATA:
+ EmitInitializedDataSection(S);
+ break;
+ }
+}
+
+// Emit a list of sections.
+void PIC16AsmPrinter::
+EmitSectionList(Module &M, const std::vector<PIC16Section *> &SList) {
+ for (unsigned i = 0; i < SList.size(); i++) {
+ // Exclude llvm specific metadata sections.
+ if (SList[i]->getName().find("llvm.") != std::string::npos)
+ continue;
+ O << "\n";
+ EmitSingleSection(SList[i]);
+ }
+}
Modified: llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h?rev=84251&r1=84250&r2=84251&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h (original)
+++ llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h Fri Oct 16 03:58:34 2009
@@ -60,6 +60,9 @@
void printLibcallDecls();
void EmitUninitializedDataSection(const PIC16Section *S);
void EmitInitializedDataSection(const PIC16Section *S);
+ void EmitSingleSection(const PIC16Section *S);
+ void EmitSectionList(Module &M,
+ const std::vector< PIC16Section *> &SList);
protected:
bool doInitialization(Module &M);
bool doFinalization(Module &M);
Modified: llvm/trunk/lib/Target/PIC16/PIC16ABINames.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16ABINames.h?rev=84251&r1=84250&r2=84251&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16ABINames.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16ABINames.h Fri Oct 16 03:58:34 2009
@@ -40,6 +40,7 @@
// Global variables do not have any '.' in their names.
// These are maily function names and global variable names.
// Example - @foo, @i
+ // Static local variables - @<func>.<var>
// -------------------------------------------------------
// Functions and auto variables.
// Names are mangled as <prefix><funcname>.<tag>.<varname>
@@ -67,8 +68,12 @@
// SECTION Names
// uninitialized globals - @udata.<num>.#
// initialized globals - @idata.<num>.#
+ // Program memory data - @romdata.#
+ // Variables with user defined section name - <user_defined_section>
+ // Variables with user defined address - @<var>.user_section.<address>.#
// Function frame - @<func>.frame_section.
// Function autos - @<func>.autos_section.
+ // Overlay sections - @<color>.##
// Declarations - Enclosed in comments. No section for them.
//----------------------------------------------------------
Modified: llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp?rev=84251&r1=84250&r2=84251&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp Fri Oct 16 03:58:34 2009
@@ -22,6 +22,9 @@
PIC16TargetObjectFile::PIC16TargetObjectFile() {
}
+PIC16TargetObjectFile::~PIC16TargetObjectFile() {
+}
+
/// Find a pic16 section. If not found, create one.
PIC16Section *PIC16TargetObjectFile::
getPIC16Section(const std::string &Name, PIC16SectionType Ty,
@@ -104,19 +107,11 @@
return Entry;
}
-/// Do some standard llvm stuff. PIC16 really does not need any of this.
+/// Do some standard initialization.
void PIC16TargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &tm){
TargetLoweringObjectFile::Initialize(Ctx, tm);
TM = &tm;
- // BSSSection = getPIC16DataSection("udata.#", UDATA);
- // ReadOnlySection = getPIC16DataSection("romdata.#", ROMDATA);
- // DataSection = getPIC16DataSection("idata.#", IDATA);
-
- // Need because otherwise a .text symbol is emitted by DwarfWriter
- // in BeginModule, and gpasm cribbs for that .text symbol.
- // FIXME: below
- // TextSection = getPIC16DataSection("", UDATA);
ROMDATASection_ = NULL;
}
@@ -254,22 +249,7 @@
return TargetLoweringObjectFile::SelectSectionForGlobal(GV, Kind, Mang,TM);
}
-PIC16TargetObjectFile::~PIC16TargetObjectFile() {
-#if 0
- for (unsigned i = 0; i < UDATASections_.size(); i++)
- delete UDATASections_[i];
- for (unsigned i = 0; i < IDATASections_.size(); i++)
- delete IDATASections_[i];
-
- delete ROMDATASection_;
- for (unsigned i = 0; i < AUTOSections_.size(); i++)
- delete AUTOSections_[i];
-
- for (unsigned i = 0; i < USERSections_.size(); i++)
- delete USERSections_[i];
-#endif
-}
/// getExplicitSectionGlobal - Allow the target to completely override
More information about the llvm-commits
mailing list