[llvm-commits] [llvm] r79685 - in /llvm/trunk/lib/Target/PIC16: AsmPrinter/PIC16AsmPrinter.cpp AsmPrinter/PIC16AsmPrinter.h MCSectionPIC16.h PIC16.h PIC16PAN.h PIC16Passes/Makefile PIC16Passes/PIC16FrameOverlay.cpp PIC16Passes/PIC16FrameOverlay.h PIC16TargetObjectFile.cpp PIC16TargetObjectFile.h
Chris Lattner
sabre at nondot.org
Fri Aug 21 16:08:10 PDT 2009
Author: lattner
Date: Fri Aug 21 18:08:09 2009
New Revision: 79685
URL: http://llvm.org/viewvc/llvm-project?rev=79685&view=rev
Log:
revert 79631
Modified:
llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp
llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h
llvm/trunk/lib/Target/PIC16/MCSectionPIC16.h
llvm/trunk/lib/Target/PIC16/PIC16.h
llvm/trunk/lib/Target/PIC16/PIC16PAN.h
llvm/trunk/lib/Target/PIC16/PIC16Passes/Makefile
llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.cpp
llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.h
llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp
llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.h
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=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp Fri Aug 21 18:08:09 2009
@@ -73,7 +73,7 @@
DbgInfo.BeginFunction(MF);
// Emit the autos section of function.
- EmitAutos(F);
+ EmitAutos(CurrentFnName);
// Now emit the instructions of function in its code section.
const MCSection *fCodeSection =
@@ -362,10 +362,9 @@
const TargetData *TD = TM.getTargetData();
// Emit the data section name.
O << "\n";
-
- std::string SectionName = getObjFileLowering().getNameForFunctFrame(F);
+
const MCSection *fPDataSection =
- getObjFileLowering().getSectionForFunctionFrame(SectionName);
+ getObjFileLowering().getSectionForFunctionFrame(CurrentFnName);
OutStreamer.SwitchSection(fPDataSection);
// Emit function frame label
@@ -441,12 +440,12 @@
}
}
-void PIC16AsmPrinter::EmitAutos(const Function *F) {
+void PIC16AsmPrinter::EmitAutos(std::string FunctName) {
// Section names for all globals are already set.
const TargetData *TD = TM.getTargetData();
// Now print Autos section for this function.
- std::string SectionName = PAN::getAutosSectionName(CurrentFnName);
+ std::string SectionName = PAN::getAutosSectionName(FunctName);
// If this function is a cloned function then the name of auto section
// will not be present in the list of existing section. Hence this section
@@ -460,15 +459,6 @@
if (AutosSections[i]->S_->getName() == SectionName) {
// Set the printing status to true
AutosSections[i]->setPrintedStatus(true);
- // Overlay auto sections with same function color.
- std::string BaseSectionName = getObjFileLowering().
- getNameForFunctFrame(F, true);
- if (BaseSectionName != F->getName()) {
- std::string NewSectionName = PAN::getAutosSectionName(BaseSectionName);
- const_cast<MCSectionPIC16 *>(AutosSections[i]->S_)->setName(
- NewSectionName);
- }
-
OutStreamer.SwitchSection(AutosSections[i]->S_);
const std::vector<const GlobalVariable*> &Items = AutosSections[i]->Items;
for (unsigned j = 0; j < Items.size(); j++) {
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=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h (original)
+++ llvm/trunk/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h Fri Aug 21 18:08:09 2009
@@ -52,7 +52,7 @@
void EmitDefinedVars (Module &M);
void EmitIData (Module &M);
void EmitUData (Module &M);
- void EmitAutos (const Function *F);
+ void EmitAutos (std::string FunctName);
void EmitRemainingAutos ();
void EmitRomData (Module &M);
void EmitFunctionFrame(MachineFunction &MF);
Modified: llvm/trunk/lib/Target/PIC16/MCSectionPIC16.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/MCSectionPIC16.h?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/MCSectionPIC16.h (original)
+++ llvm/trunk/lib/Target/PIC16/MCSectionPIC16.h Fri Aug 21 18:08:09 2009
@@ -28,8 +28,7 @@
public:
const std::string &getName() const { return Name; }
-
- void setName(std::string name) { Name = name; }
+
static MCSectionPIC16 *Create(const StringRef &Name,
SectionKind K, MCContext &Ctx);
Modified: llvm/trunk/lib/Target/PIC16/PIC16.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16.h?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16.h Fri Aug 21 18:08:09 2009
@@ -44,7 +44,6 @@
UGE
};
}
-
// External symbol names require memory to live till the program end.
// So we have to allocate it and keep.
inline static const char *createESName (const std::string &name) {
Modified: llvm/trunk/lib/Target/PIC16/PIC16PAN.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16PAN.h?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16PAN.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16PAN.h Fri Aug 21 18:08:09 2009
@@ -22,19 +22,8 @@
#include <cassert>
#include <cstring>
#include <string>
-namespace llvm {
-namespace PIC16Overlay {
- // Implement Overlay through colors because we may want to enhance overlay
- // architecture later. More colors can be added then.
- // Idea here is that functions with same color can be overlayed.
- enum Overlay {
- // A color name can only consist of upper case letters and underscore.
- GREEN, // Stands for mainline functions that can be overlayed.
- GREEN_IL, // Interrupt line version of GREEN.
- RED // Stands for functions that can not be overlayed.
- };
-}
+namespace llvm {
// A Central class to manage all ABI naming conventions.
// PAN - [P]ic16 [A]BI [N]ames
class PAN {
@@ -425,22 +414,6 @@
}
}
}
- inline static std::string getOverlayStr(unsigned Color) {
- std::string Str = "Overlay=";
- Str.append(getSectionNameForColor(Color));
- return Str;
- }
-
- inline static std::string getSectionNameForColor(unsigned Color) {
- switch (Color) {
- default:
- assert( 0 && "Color not supported");
- case PIC16Overlay::GREEN:
- return "GREEN";
- case PIC16Overlay::GREEN_IL:
- return "GREEN_IL";
- }
- }
inline static std::string getAutosSectionForColor(std::string Color) {
return Color.append("_AUTOS");
Modified: llvm/trunk/lib/Target/PIC16/PIC16Passes/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16Passes/Makefile?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16Passes/Makefile (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16Passes/Makefile Fri Aug 21 18:08:09 2009
@@ -12,8 +12,5 @@
LOADABLE_MODULE = 1
-# Hack: we need to include 'main' pic16 target directory to grab private headers
-CPPFLAGS = -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/..
-
include $(LEVEL)/Makefile.common
Modified: llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.cpp?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.cpp Fri Aug 21 18:08:09 2009
@@ -1,69 +0,0 @@
-//===-- PIC16FrameOverlay.cpp - Implementation for PIC16 Frame Overlay===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains the PIC16 Frame Overlay implementation.
-//
-//===----------------------------------------------------------------------===//
-
-
-#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Pass.h"
-#include "llvm/Module.h"
-#include "llvm/Support/raw_ostream.h"
-#include "PIC16.h"
-#include "PIC16FrameOverlay.h"
-#include <vector>
-#include <iostream>
-using namespace llvm;
-using std::vector;
-using std::string;
-
-
-void PIC16FrameOverlay::getAnalysisUsage(AnalysisUsage &AU) const {
- AU.setPreservesCFG();
- AU.addRequired<CallGraph>();
-}
-
-bool PIC16FrameOverlay::runOnModule(Module &M) {
- CallGraph &CG = getAnalysis<CallGraph>();
- for (CallGraph::iterator it = CG.begin() ; it != CG.end(); it++)
- {
- // External calling node doesn't have any function associated
- // with it
- if (!it->first)
- continue;
-
- if (it->second->size() == 0) {
- if (PAN::isInterruptLineFunction(it->first))
- ColorFunction(it->second, PIC16Overlay::GREEN_IL);
- else
- ColorFunction(it->second, PIC16Overlay::GREEN);
- }
- }
- return false;
-}
-
-void PIC16FrameOverlay::ColorFunction(CallGraphNode *CGN, unsigned Color) {
- switch (Color) {
- case PIC16Overlay::GREEN:
- case PIC16Overlay::GREEN_IL: {
- Function *LeafFunct = CGN->getFunction();
- std::string Section = "";
- if (LeafFunct->hasSection()) {
- Section = LeafFunct->getSection();
- Section.append(" ");
- }
- Section.append(PAN::getOverlayStr(Color));
- LeafFunct->setSection(Section);
- break;
- }
- default:
- assert( 0 && "Color not supported");
- }
-}
Modified: llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.h?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16Passes/PIC16FrameOverlay.h Fri Aug 21 18:08:09 2009
@@ -1,45 +0,0 @@
-//===-- PIC16FrameOverlay.h - Interface for PIC16 Frame Overlay -*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains the PIC16 Frame Overlay infrastructure.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef PIC16FRAMEOVERLAY_H
-#define PIC16FRAMEOVERLAY_H
-
-#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Pass.h"
-#include "llvm/Module.h"
-#include "llvm/Support/raw_ostream.h"
-#include <vector>
-#include <iostream>
-using std::vector;
-using std::string;
-using namespace llvm;
-
-namespace {
-
- class PIC16FrameOverlay : public ModulePass {
- public:
- static char ID; // Class identification
- PIC16FrameOverlay() : ModulePass(&ID) {}
-
- virtual void getAnalysisUsage(AnalysisUsage &AU) const;
- virtual bool runOnModule(Module &M);
- private:
- void ColorFunction(CallGraphNode *CGN, unsigned Color);
- };
- char PIC16FrameOverlay::ID = 0;
- static RegisterPass<PIC16FrameOverlay>
- Y("pic16overlay", "PIC16 Frame Overlay Analysis");
-
-} // End of namespace
-
-#endif
Modified: llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.cpp Fri Aug 21 18:08:09 2009
@@ -82,35 +82,6 @@
return getPIC16Section(T.c_str(), SectionKind::getDataRel());
}
-std::string PIC16TargetObjectFile::getNameForFunctFrame(const Function *F,
- bool IsAutosSection) {
- std::string SectionName = F->getName();
- if (F->hasSection()) {
- std::string Sectn = F->getSection();
- std::string StrToFind = "Overlay=";
- size_t Pos = Sectn.find(StrToFind);
- if (Pos != std::string::npos) {
- Pos += StrToFind.length();
- std::string Color = "";
- char c = Sectn.at(Pos);
- // A Color can only consist on upper case letters or underscore.
- while ((c >= 'A' && c<= 'Z') || c == '_') {
- Color.append(1,c);
- Pos++;
- if (Pos >= Sectn.length())
- break;
- c = Sectn.at(Pos);
- }
- // Autos Section need to be given a different name from function frame.
- if (IsAutosSection)
- SectionName = PAN::getAutosSectionForColor(Color);
- else
- SectionName = Color;
- }
- }
- return SectionName;
-}
-
const MCSection *
PIC16TargetObjectFile::getBSSSectionForGlobal(const GlobalVariable *GV) const {
assert(GV->hasInitializer() && "This global doesn't need space");
Modified: llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.h?rev=79685&r1=79684&r2=79685&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16TargetObjectFile.h Fri Aug 21 18:08:09 2009
@@ -12,7 +12,6 @@
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/ADT/StringMap.h"
-#include "llvm/Function.h"
#include <vector>
#include <string>
@@ -85,9 +84,6 @@
// If the current function is cloned then create the new autos section
// also.
void createClonedSectionForAutos(const std::string &SecName);
- std::string getNameForFunctFrame(const Function *F,
- bool IsAutosSection = false);
-
private:
std::string getSectionNameForSym(const std::string &Sym) const;
More information about the llvm-commits
mailing list