pass the mangler down into the various SectionForGlobal methods.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77432 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-07-29 05:09:30 +00:00
parent 636bef1f35
commit e53a600f06
17 changed files with 72 additions and 73 deletions

View File

@ -88,6 +88,7 @@ public:
/// the specified global variable or function definition. This should not
/// be passed external (or available externally) globals.
const Section *SectionForGlobal(const GlobalValue *GV,
Mangler *Mang,
const TargetMachine &TM) const;
/// getSpecialCasedSectionGlobals - Allow the target to completely override
@ -95,7 +96,7 @@ public:
/// FIXME: ELIMINATE this by making PIC16 implement ADDRESS with
/// getFlagsForNamedSection.
virtual const Section *
getSpecialCasedSectionGlobals(const GlobalValue *GV,
getSpecialCasedSectionGlobals(const GlobalValue *GV, Mangler *Mang,
SectionKind Kind) const {
return 0;
}
@ -108,9 +109,9 @@ public:
}
protected:
virtual const Section *SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind,
const TargetMachine &TM) const;
virtual const Section *
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
Mangler *Mang, const TargetMachine &TM) const;
};
@ -136,9 +137,9 @@ public:
void getSectionFlagsAsString(SectionKind Kind,
SmallVectorImpl<char> &Str) const;
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind,
const TargetMachine &TM) const;
virtual const Section *
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
Mangler *Mang, const TargetMachine &TM) const;
protected:
const Section *DataRelSection;
const Section *DataRelLocalSection;
@ -161,9 +162,9 @@ class TargetLoweringObjectFileMachO : public TargetLoweringObjectFile {
const Section *SixteenByteConstantSection;
public:
TargetLoweringObjectFileMachO(const TargetMachine &TM);
virtual const Section *SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind,
const TargetMachine &TM) const;
virtual const Section *
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
Mangler *Mang, const TargetMachine &TM) const;
virtual const Section *
getSectionForMergeableConstant(SectionKind Kind) const;
@ -179,7 +180,7 @@ public:
virtual const Section *
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
const TargetMachine &TM) const;
Mangler *Mang, const TargetMachine &TM) const;
};
} // end namespace llvm

View File

@ -412,10 +412,11 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI,
// the appropriate section.
TargetLowering *LoweringInfo = TM.getTargetLowering();
const char* JumpTableDataSection = TAI->getJumpTableDataSection();
const char *JumpTableDataSection = TAI->getJumpTableDataSection();
const Function *F = MF.getFunction();
const Section *FuncSection = getObjFileLowering().SectionForGlobal(F, TM);
const Section *FuncSection =
getObjFileLowering().SectionForGlobal(F, Mang, TM);
bool JTInDiffSection = false;
if ((IsPic && !(LoweringInfo && LoweringInfo->usesGlobalOffsetTable())) ||

View File

@ -326,7 +326,7 @@ void ELFWriter::EmitGlobal(const GlobalValue *GV) {
TM.getTargetLowering()->getObjFileLowering();
// Get the ELF section where this global belongs from TLOF
const Section *S = TLOF.SectionForGlobal(GV, TM);
const Section *S = TLOF.SectionForGlobal(GV, Mang, TM);
unsigned SectionFlags = getElfSectionFlags(S->getKind());
// The symbol align should update the section alignment if needed

View File

@ -1153,7 +1153,8 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
if (Subtarget->isTargetELF())
O << "\t.type " << name << ",%object\n";
const Section *TheSection = getObjFileLowering().SectionForGlobal(GVar, TM);
const Section *TheSection =
getObjFileLowering().SectionForGlobal(GVar, Mang, TM);
SwitchToSection(TheSection);
// FIXME: get this stuff from section kind flags.
@ -1180,7 +1181,7 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
O << TAI->getCOMMDirective() << name << "," << Size
<< ',' << Align;
} else {
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang,TM));
O << "\t.globl " << name << '\n'
<< TAI->getWeakDefDirective() << name << '\n';
EmitAlignment(Align, GVar);

View File

@ -139,7 +139,7 @@ bool AlphaAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
// Print out labels for the function.
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
EmitAlignment(MF.getAlignment(), F);
switch (F->getLinkage()) {
@ -215,7 +215,7 @@ void AlphaAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
unsigned Align = TD->getPreferredAlignmentLog(GVar);
// 0: Switch to section
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
// 1: Check visibility
printVisibility(name, GVar->getVisibility());

View File

@ -428,7 +428,7 @@ LinuxAsmPrinter::runOnMachineFunction(MachineFunction &MF)
// Print out labels for the function.
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
EmitAlignment(MF.getAlignment(), F);
switch (F->getLinkage()) {
@ -526,7 +526,7 @@ void LinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
unsigned Size = TD->getTypeAllocSize(Type);
unsigned Align = TD->getPreferredAlignmentLog(GVar);
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
if (C->isNullValue() && /* FIXME: Verify correct */
!GVar->hasSection() &&

View File

@ -78,7 +78,7 @@ namespace {
void MSP430AsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
unsigned FnAlign = MF.getAlignment();
EmitAlignment(FnAlign, F);

View File

@ -178,9 +178,7 @@ printHex32(unsigned int Value)
//===----------------------------------------------------------------------===//
/// Frame Directive
void MipsAsmPrinter::
emitFrameDirective(MachineFunction &MF)
{
void MipsAsmPrinter::emitFrameDirective(MachineFunction &MF) {
const TargetRegisterInfo &RI = *TM.getRegisterInfo();
unsigned stackReg = RI.getFrameRegister(MF);
@ -195,9 +193,7 @@ emitFrameDirective(MachineFunction &MF)
}
/// Emit Set directives.
const char * MipsAsmPrinter::
emitCurrentABIString(void)
{
const char *MipsAsmPrinter::emitCurrentABIString() {
switch(Subtarget->getTargetABI()) {
case MipsSubtarget::O32: return "abi32";
case MipsSubtarget::O64: return "abiO64";
@ -215,7 +211,7 @@ emitCurrentABIString(void)
void MipsAsmPrinter::emitFunctionStart(MachineFunction &MF) {
// Print out the label for the function.
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
// 2 bits aligned
EmitAlignment(MF.getAlignment(), F);
@ -237,9 +233,7 @@ void MipsAsmPrinter::emitFunctionStart(MachineFunction &MF) {
}
/// Emit the directives used by GAS on the end of functions
void MipsAsmPrinter::
emitFunctionEnd(MachineFunction &MF)
{
void MipsAsmPrinter::emitFunctionEnd(MachineFunction &MF) {
// There are instruction for this macros, but they must
// always be at the function end, and we can't emit and
// break with BB logic.
@ -253,9 +247,7 @@ emitFunctionEnd(MachineFunction &MF)
/// runOnMachineFunction - This uses the printMachineInstruction()
/// method to print assembly for each instruction.
bool MipsAsmPrinter::
runOnMachineFunction(MachineFunction &MF)
{
bool MipsAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
this->MF = &MF;
SetupMachineFunction(MF);
@ -300,10 +292,8 @@ runOnMachineFunction(MachineFunction &MF)
}
// Print out an operand for an inline asm expression.
bool MipsAsmPrinter::
PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
unsigned AsmVariant, const char *ExtraCode)
{
bool MipsAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
unsigned AsmVariant,const char *ExtraCode){
// Does this asm operand have a single letter operand modifier?
if (ExtraCode && ExtraCode[0])
return true; // Unknown modifier.
@ -312,9 +302,7 @@ PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
return false;
}
void MipsAsmPrinter::
printOperand(const MachineInstr *MI, int opNum)
{
void MipsAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
const MachineOperand &MO = MI->getOperand(opNum);
const TargetRegisterInfo &RI = *TM.getRegisterInfo();
bool closeP = false;
@ -398,8 +386,7 @@ printOperand(const MachineInstr *MI, int opNum)
if (closeP) O << ")";
}
void MipsAsmPrinter::
printUnsignedImm(const MachineInstr *MI, int opNum) {
void MipsAsmPrinter::printUnsignedImm(const MachineInstr *MI, int opNum) {
const MachineOperand &MO = MI->getOperand(opNum);
if (MO.getType() == MachineOperand::MO_Immediate)
O << (unsigned short int)MO.getImm();
@ -484,7 +471,7 @@ void MipsAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
printVisibility(name, GVar->getVisibility());
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
if (C->isNullValue() && !GVar->hasSection()) {
if (!GVar->isThreadLocal() &&

View File

@ -223,7 +223,7 @@ bool PIC16AsmPrinter::doInitialization(Module &M) {
// Set the section names for all globals.
for (Module::global_iterator I = M.global_begin(), E = M.global_end();
I != E; ++I)
I->setSection(getObjFileLowering().SectionForGlobal(I, TM)->getName());
I->setSection(getObjFileLowering().SectionForGlobal(I, Mang,TM)->getName());
DbgInfo.BeginModule(M);
EmitFunctionDecls(M);

View File

@ -165,12 +165,13 @@ PIC16TargetObjectFile::getSectionForAuto(const GlobalVariable *GV) const {
const Section*
PIC16TargetObjectFile::SelectSectionForGlobal(const GlobalValue *GV1,
SectionKind Kind,
Mangler *Mang,
const TargetMachine &TM) const {
// We select the section based on the initializer here, so it really
// has to be a GlobalVariable.
const GlobalVariable *GV = dyn_cast<GlobalVariable>(GV1);
if (!GV)
return TargetLoweringObjectFile::SelectSectionForGlobal(GV1, Kind, TM);
return TargetLoweringObjectFile::SelectSectionForGlobal(GV1, Kind, Mang,TM);
// Record External Var Decls.
if (GV->isDeclaration()) {
@ -204,7 +205,7 @@ PIC16TargetObjectFile::SelectSectionForGlobal(const GlobalValue *GV1,
return getROSectionForGlobal(GV);
// Else let the default implementation take care of it.
return TargetLoweringObjectFile::SelectSectionForGlobal(GV, Kind, TM);
return TargetLoweringObjectFile::SelectSectionForGlobal(GV, Kind, Mang,TM);
}
PIC16TargetObjectFile::~PIC16TargetObjectFile() {
@ -225,6 +226,7 @@ PIC16TargetObjectFile::~PIC16TargetObjectFile() {
/// section assignment of a global.
const Section *
PIC16TargetObjectFile::getSpecialCasedSectionGlobals(const GlobalValue *GV,
Mangler *Mang,
SectionKind Kind) const {
// If GV has a sectin name or section address create that section now.
if (GV->hasSection()) {
@ -235,11 +237,11 @@ PIC16TargetObjectFile::getSpecialCasedSectionGlobals(const GlobalValue *GV,
std::string AddrStr = "Address=";
if (SectName.compare(0, AddrStr.length(), AddrStr) == 0) {
std::string SectAddr = SectName.substr(AddrStr.length());
return CreateSectionForGlobal(GVar, SectAddr);
return CreateSectionForGlobal(GVar, Mang, SectAddr);
}
// Create the section specified with section attribute.
return CreateSectionForGlobal(GVar);
return CreateSectionForGlobal(GVar, Mang);
}
}
@ -250,6 +252,7 @@ PIC16TargetObjectFile::getSpecialCasedSectionGlobals(const GlobalValue *GV,
// section at that address else create by name.
const Section *
PIC16TargetObjectFile::CreateSectionForGlobal(const GlobalVariable *GV,
Mangler *Mang,
const std::string &Addr) const {
// See if this is an uninitialized global.
const Constant *C = GV->getInitializer();
@ -265,7 +268,7 @@ PIC16TargetObjectFile::CreateSectionForGlobal(const GlobalVariable *GV,
return CreateROSectionForGlobal(GV, Addr);
// Else let the default implementation take care of it.
return TargetLoweringObjectFile::SectionForGlobal(GV, TM);
return TargetLoweringObjectFile::SectionForGlobal(GV, Mang, TM);
}
// Create uninitialized section for a variable.

View File

@ -59,10 +59,11 @@ namespace llvm {
/// getSpecialCasedSectionGlobals - Allow the target to completely override
/// section assignment of a global.
virtual const Section *
getSpecialCasedSectionGlobals(const GlobalValue *GV,
getSpecialCasedSectionGlobals(const GlobalValue *GV, Mangler *Mang,
SectionKind Kind) const;
virtual const Section *SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind,
Mangler *Mang,
const TargetMachine&) const;
private:
std::string getSectionNameForSym(const std::string &Sym) const;
@ -78,6 +79,7 @@ namespace llvm {
const Section *CreateROSectionForGlobal(const GlobalVariable *GV,
std::string Addr = "") const;
const Section *CreateSectionForGlobal(const GlobalVariable *GV,
Mangler *Mang,
const std::string &Addr = "") const;
public:
void SetSectionForGVs(Module &M);

View File

@ -591,7 +591,7 @@ bool PPCLinuxAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
// Print out labels for the function.
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
switch (F->getLinkage()) {
default: llvm_unreachable("Unknown linkage type!");
@ -640,7 +640,7 @@ bool PPCLinuxAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
// Print out jump tables referenced by the function.
EmitJumpTableInfo(MF.getJumpTableInfo(), MF);
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
// Emit post-function debug information.
DW->EndFunction(&MF);
@ -682,7 +682,7 @@ void PPCLinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
unsigned Size = TD->getTypeAllocSize(Type);
unsigned Align = TD->getPreferredAlignmentLog(GVar);
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
if (C->isNullValue() && /* FIXME: Verify correct */
!GVar->hasSection() &&
@ -763,7 +763,7 @@ bool PPCDarwinAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
// Print out labels for the function.
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
switch (F->getLinkage()) {
default: llvm_unreachable("Unknown linkage type!");
@ -892,7 +892,8 @@ void PPCDarwinAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
unsigned Size = TD->getTypeAllocSize(Type);
unsigned Align = TD->getPreferredAlignmentLog(GVar);
const Section *TheSection = getObjFileLowering().SectionForGlobal(GVar, TM);
const Section *TheSection =
getObjFileLowering().SectionForGlobal(GVar, Mang, TM);
SwitchToSection(TheSection);
if (C->isNullValue() && /* FIXME: Verify correct */

View File

@ -96,7 +96,7 @@ bool SparcAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
// Print out the label for the function.
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
EmitAlignment(MF.getAlignment(), F);
O << "\t.globl\t" << CurrentFnName << '\n';
@ -230,7 +230,7 @@ void SparcAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
printVisibility(name, GVar->getVisibility());
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
if (C->isNullValue() && !GVar->hasSection()) {
if (!GVar->isThreadLocal() &&

View File

@ -83,7 +83,7 @@ void SystemZAsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
unsigned FnAlign = MF.getAlignment();
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
EmitAlignment(FnAlign, F);
@ -331,7 +331,7 @@ void SystemZAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
O << "\t.type\t" << name << ",@object\n";
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
if (C->isNullValue() && !GVar->hasSection() &&
!GVar->isThreadLocal() &&

View File

@ -176,7 +176,8 @@ static SectionKind::Kind SectionKindForGlobal(const GlobalValue *GV,
/// the specified global variable or function definition. This should not
/// be passed external (or available externally) globals.
const Section *TargetLoweringObjectFile::
SectionForGlobal(const GlobalValue *GV, const TargetMachine &TM) const {
SectionForGlobal(const GlobalValue *GV, Mangler *Mang,
const TargetMachine &TM) const {
assert(!GV->isDeclaration() && !GV->hasAvailableExternallyLinkage() &&
"Can only be used for global definitions");
@ -190,7 +191,7 @@ SectionForGlobal(const GlobalValue *GV, const TargetMachine &TM) const {
if (GV->hasSection()) {
// If the target has special section hacks for specifically named globals,
// return them now.
if (const Section *TS = getSpecialCasedSectionGlobals(GV, Kind))
if (const Section *TS = getSpecialCasedSectionGlobals(GV, Mang, Kind))
return TS;
// If the target has magic semantics for certain section names, make sure to
@ -203,13 +204,14 @@ SectionForGlobal(const GlobalValue *GV, const TargetMachine &TM) const {
// Use default section depending on the 'type' of global
return SelectSectionForGlobal(GV, Kind, TM);
return SelectSectionForGlobal(GV, Kind, Mang, TM);
}
// Lame default implementation. Calculate the section name for global.
const Section*
TargetLoweringObjectFile::SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind,
Mangler *Mang,
const TargetMachine &TM) const{
assert(!Kind.isThreadLocal() && "Doesn't support TLS");
@ -399,7 +401,7 @@ static const char *getSectionPrefixForUniqueGlobal(SectionKind Kind) {
const Section *TargetLoweringObjectFileELF::
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
const TargetMachine &TM) const {
Mangler *Mang, const TargetMachine &TM) const {
// If this global is linkonce/weak and the target handles this by emitting it
// into a 'uniqued' section name, create and return the section now.
@ -411,6 +413,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
}
if (Kind.isText()) return TextSection;
if (Kind.isMergeableCString()) {
assert(CStringSection_ && "Should have string section prefix");
@ -510,10 +513,9 @@ TargetLoweringObjectFileMachO(const TargetMachine &TM) {
false, SectionKind::DataRel);
}
const Section *
TargetLoweringObjectFileMachO::SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind,
const TargetMachine &TM) const {
const Section *TargetLoweringObjectFileMachO::
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
Mangler *Mang, const TargetMachine &TM) const {
assert(!Kind.isThreadLocal() && "Darwin doesn't support TLS");
if (Kind.isText())
@ -616,7 +618,7 @@ static const char *getCOFFSectionPrefixForUniqueGlobal(SectionKind Kind) {
const Section *TargetLoweringObjectFileCOFF::
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
const TargetMachine &TM) const {
Mangler *Mang, const TargetMachine &TM) const {
assert(!Kind.isThreadLocal() && "Doesn't support TLS");
// If this global is linkonce/weak and the target handles this by emitting it

View File

@ -167,7 +167,7 @@ void X86ATTAsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
if (Subtarget->isTargetCygMing())
DecorateCygMingName(CurrentFnName, F);
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
switch (F->getLinkage()) {
default: llvm_unreachable("Unknown linkage type!");
case Function::InternalLinkage: // Symbols default to internal.
@ -783,7 +783,8 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
if (Subtarget->isTargetELF())
O << "\t.type\t" << name << ",@object\n";
const Section *TheSection = getObjFileLowering().SectionForGlobal(GVar, TM);
const Section *TheSection =
getObjFileLowering().SectionForGlobal(GVar, Mang, TM);
SwitchToSection(TheSection);
if (C->isNullValue() && !GVar->hasSection() &&

View File

@ -134,7 +134,7 @@ void XCoreAsmPrinter::PrintGlobalVariable(const GlobalVariable *GV) {
const TargetData *TD = TM.getTargetData();
SwitchToSection(getObjFileLowering().SectionForGlobal(GV, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(GV, Mang, TM));
std::string name = Mang->getMangledName(GV);
Constant *C = GV->getInitializer();
@ -205,7 +205,7 @@ void XCoreAsmPrinter::emitFunctionStart(MachineFunction &MF) {
// Print out the label for the function.
const Function *F = MF.getFunction();
SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
// Mark the start of the function
O << "\t.cc_top " << CurrentFnName << ".function," << CurrentFnName << "\n";