mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
rename TAI -> MAI, being careful not to make MAILJMP instructions :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79777 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
90aa1f92c1
commit
33adcfb4d2
@ -96,7 +96,7 @@ namespace llvm {
|
||||
|
||||
/// Target Asm Printer information.
|
||||
///
|
||||
const MCAsmInfo *TAI;
|
||||
const MCAsmInfo *MAI;
|
||||
|
||||
/// Target Register Information.
|
||||
///
|
||||
|
@ -63,10 +63,10 @@ namespace llvm {
|
||||
|
||||
/// beginAssembly/finishAssembly - Emit module metadata as assembly code.
|
||||
virtual void beginAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI);
|
||||
const MCAsmInfo &MAI);
|
||||
|
||||
virtual void finishAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI);
|
||||
const MCAsmInfo &MAI);
|
||||
|
||||
virtual ~GCMetadataPrinter();
|
||||
};
|
||||
|
@ -37,7 +37,7 @@ namespace llvm {
|
||||
|
||||
SectionKind getKind() const { return Kind; }
|
||||
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const = 0;
|
||||
};
|
||||
|
||||
@ -62,7 +62,7 @@ namespace llvm {
|
||||
const std::string &getName() const { return Name; }
|
||||
bool isDirective() const { return IsDirective; }
|
||||
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const;
|
||||
};
|
||||
|
||||
|
@ -48,7 +48,7 @@ public:
|
||||
/// ShouldOmitSectionDirective - Decides whether a '.section' directive
|
||||
/// should be printed before the section name
|
||||
bool ShouldOmitSectionDirective(const char *Name,
|
||||
const MCAsmInfo &TAI) const;
|
||||
const MCAsmInfo &MAI) const;
|
||||
|
||||
/// ShouldPrintSectionType - Only prints the section type if supported
|
||||
bool ShouldPrintSectionType(unsigned Ty) const;
|
||||
@ -171,7 +171,7 @@ public:
|
||||
unsigned getType() const { return Type; }
|
||||
unsigned getFlags() const { return Flags; }
|
||||
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const;
|
||||
|
||||
|
||||
@ -179,7 +179,7 @@ public:
|
||||
/// MCSectionELF subclasses with target specific section flags should
|
||||
/// implement this method if they end up adding letters to the attributes
|
||||
/// list.
|
||||
virtual void PrintTargetSpecificSectionFlags(const MCAsmInfo &TAI,
|
||||
virtual void PrintTargetSpecificSectionFlags(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const {
|
||||
}
|
||||
|
||||
|
@ -166,7 +166,7 @@ public:
|
||||
unsigned &TAA, // Out.
|
||||
unsigned &StubSize); // Out.
|
||||
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const;
|
||||
};
|
||||
|
||||
|
@ -241,7 +241,7 @@ namespace llvm {
|
||||
///
|
||||
/// \arg AP - If given, an AsmPrinter to use for printing instructions.
|
||||
MCStreamer *createAsmStreamer(MCContext &Ctx, raw_ostream &OS,
|
||||
const MCAsmInfo &TAI, AsmPrinter *AP = 0);
|
||||
const MCAsmInfo &MAI, AsmPrinter *AP = 0);
|
||||
|
||||
// FIXME: These two may end up getting rolled into a single
|
||||
// createObjectStreamer interface, which implements the assembler backend, and
|
||||
|
@ -464,7 +464,7 @@ public:
|
||||
/// Measure the specified inline asm to determine an approximation of its
|
||||
/// length.
|
||||
virtual unsigned getInlineAsmLength(const char *Str,
|
||||
const MCAsmInfo &TAI) const;
|
||||
const MCAsmInfo &MAI) const;
|
||||
};
|
||||
|
||||
/// TargetInstrInfoImpl - This is the default implementation of
|
||||
|
@ -53,7 +53,7 @@ namespace llvm {
|
||||
const std::string &Features);
|
||||
typedef AsmPrinter *(*AsmPrinterCtorTy)(formatted_raw_ostream &OS,
|
||||
TargetMachine &TM,
|
||||
const MCAsmInfo *TAI,
|
||||
const MCAsmInfo *MAI,
|
||||
bool VerboseAsm);
|
||||
typedef TargetAsmParser *(*AsmParserCtorTy)(const Target &T,
|
||||
MCAsmParser &P);
|
||||
@ -140,10 +140,10 @@ namespace llvm {
|
||||
|
||||
/// createAsmPrinter - Create a target specific assembly printer pass.
|
||||
AsmPrinter *createAsmPrinter(formatted_raw_ostream &OS, TargetMachine &TM,
|
||||
const MCAsmInfo *TAI, bool Verbose) const {
|
||||
const MCAsmInfo *MAI, bool Verbose) const {
|
||||
if (!AsmPrinterCtorFn)
|
||||
return 0;
|
||||
return AsmPrinterCtorFn(OS, TM, TAI, Verbose);
|
||||
return AsmPrinterCtorFn(OS, TM, MAI, Verbose);
|
||||
}
|
||||
|
||||
/// createAsmParser - Create a target specific assembly parser.
|
||||
@ -406,8 +406,8 @@ namespace llvm {
|
||||
|
||||
private:
|
||||
static AsmPrinter *Allocator(formatted_raw_ostream &OS, TargetMachine &TM,
|
||||
const MCAsmInfo *TAI, bool Verbose) {
|
||||
return new AsmPrinterImpl(OS, TM, TAI, Verbose);
|
||||
const MCAsmInfo *MAI, bool Verbose) {
|
||||
return new AsmPrinterImpl(OS, TM, MAI, Verbose);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -52,7 +52,7 @@ char AsmPrinter::ID = 0;
|
||||
AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm,
|
||||
const MCAsmInfo *T, bool VDef)
|
||||
: MachineFunctionPass(&ID), FunctionNumber(0), O(o),
|
||||
TM(tm), TAI(T), TRI(tm.getRegisterInfo()),
|
||||
TM(tm), MAI(T), TRI(tm.getRegisterInfo()),
|
||||
|
||||
OutContext(*new MCContext()),
|
||||
OutStreamer(*createAsmStreamer(OutContext, O, *T, this)),
|
||||
@ -99,16 +99,16 @@ bool AsmPrinter::doInitialization(Module &M) {
|
||||
const_cast<TargetLoweringObjectFile&>(getObjFileLowering())
|
||||
.Initialize(OutContext, TM);
|
||||
|
||||
Mang = new Mangler(M, TAI->getGlobalPrefix(), TAI->getPrivateGlobalPrefix(),
|
||||
TAI->getLinkerPrivateGlobalPrefix());
|
||||
Mang = new Mangler(M, MAI->getGlobalPrefix(), MAI->getPrivateGlobalPrefix(),
|
||||
MAI->getLinkerPrivateGlobalPrefix());
|
||||
|
||||
if (TAI->doesAllowQuotesInName())
|
||||
if (MAI->doesAllowQuotesInName())
|
||||
Mang->setUseQuotes(true);
|
||||
|
||||
GCModuleInfo *MI = getAnalysisIfAvailable<GCModuleInfo>();
|
||||
assert(MI && "AsmPrinter didn't require GCModuleInfo?");
|
||||
|
||||
if (TAI->hasSingleParameterDotFile()) {
|
||||
if (MAI->hasSingleParameterDotFile()) {
|
||||
/* Very minimal debug info. It is ignored if we emit actual
|
||||
debug info. If we don't, this at helps the user find where
|
||||
a function came from. */
|
||||
@ -117,22 +117,22 @@ bool AsmPrinter::doInitialization(Module &M) {
|
||||
|
||||
for (GCModuleInfo::iterator I = MI->begin(), E = MI->end(); I != E; ++I)
|
||||
if (GCMetadataPrinter *MP = GetOrCreateGCPrinter(*I))
|
||||
MP->beginAssembly(O, *this, *TAI);
|
||||
MP->beginAssembly(O, *this, *MAI);
|
||||
|
||||
if (!M.getModuleInlineAsm().empty())
|
||||
O << TAI->getCommentString() << " Start of file scope inline assembly\n"
|
||||
O << MAI->getCommentString() << " Start of file scope inline assembly\n"
|
||||
<< M.getModuleInlineAsm()
|
||||
<< '\n' << TAI->getCommentString()
|
||||
<< '\n' << MAI->getCommentString()
|
||||
<< " End of file scope inline assembly\n";
|
||||
|
||||
if (TAI->doesSupportDebugInformation() ||
|
||||
TAI->doesSupportExceptionHandling()) {
|
||||
if (MAI->doesSupportDebugInformation() ||
|
||||
MAI->doesSupportExceptionHandling()) {
|
||||
MMI = getAnalysisIfAvailable<MachineModuleInfo>();
|
||||
if (MMI)
|
||||
MMI->AnalyzeModule(M);
|
||||
DW = getAnalysisIfAvailable<DwarfWriter>();
|
||||
if (DW)
|
||||
DW->BeginModule(&M, MMI, O, this, TAI);
|
||||
DW->BeginModule(&M, MMI, O, this, MAI);
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -145,11 +145,11 @@ bool AsmPrinter::doFinalization(Module &M) {
|
||||
PrintGlobalVariable(I);
|
||||
|
||||
// Emit final debug information.
|
||||
if (TAI->doesSupportDebugInformation() || TAI->doesSupportExceptionHandling())
|
||||
if (MAI->doesSupportDebugInformation() || MAI->doesSupportExceptionHandling())
|
||||
DW->EndModule();
|
||||
|
||||
// If the target wants to know about weak references, print them all.
|
||||
if (TAI->getWeakRefDirective()) {
|
||||
if (MAI->getWeakRefDirective()) {
|
||||
// FIXME: This is not lazy, it would be nice to only print weak references
|
||||
// to stuff that is actually used. Note that doing so would require targets
|
||||
// to notice uses in operands (due to constant exprs etc). This should
|
||||
@ -159,16 +159,16 @@ bool AsmPrinter::doFinalization(Module &M) {
|
||||
for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
|
||||
I != E; ++I) {
|
||||
if (I->hasExternalWeakLinkage())
|
||||
O << TAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
||||
O << MAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
||||
}
|
||||
|
||||
for (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I) {
|
||||
if (I->hasExternalWeakLinkage())
|
||||
O << TAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
||||
O << MAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
if (TAI->getSetDirective()) {
|
||||
if (MAI->getSetDirective()) {
|
||||
O << '\n';
|
||||
for (Module::const_alias_iterator I = M.alias_begin(), E = M.alias_end();
|
||||
I != E; ++I) {
|
||||
@ -177,16 +177,16 @@ bool AsmPrinter::doFinalization(Module &M) {
|
||||
const GlobalValue *GV = cast<GlobalValue>(I->getAliasedGlobal());
|
||||
std::string Target = Mang->getMangledName(GV);
|
||||
|
||||
if (I->hasExternalLinkage() || !TAI->getWeakRefDirective())
|
||||
if (I->hasExternalLinkage() || !MAI->getWeakRefDirective())
|
||||
O << "\t.globl\t" << Name << '\n';
|
||||
else if (I->hasWeakLinkage())
|
||||
O << TAI->getWeakRefDirective() << Name << '\n';
|
||||
O << MAI->getWeakRefDirective() << Name << '\n';
|
||||
else if (!I->hasLocalLinkage())
|
||||
llvm_unreachable("Invalid alias linkage");
|
||||
|
||||
printVisibility(Name, I->getVisibility());
|
||||
|
||||
O << TAI->getSetDirective() << ' ' << Name << ", " << Target << '\n';
|
||||
O << MAI->getSetDirective() << ' ' << Name << ", " << Target << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
@ -194,14 +194,14 @@ bool AsmPrinter::doFinalization(Module &M) {
|
||||
assert(MI && "AsmPrinter didn't require GCModuleInfo?");
|
||||
for (GCModuleInfo::iterator I = MI->end(), E = MI->begin(); I != E; )
|
||||
if (GCMetadataPrinter *MP = GetOrCreateGCPrinter(*--I))
|
||||
MP->finishAssembly(O, *this, *TAI);
|
||||
MP->finishAssembly(O, *this, *MAI);
|
||||
|
||||
// If we don't have any trampolines, then we don't require stack memory
|
||||
// to be executable. Some targets have a directive to declare this.
|
||||
Function *InitTrampolineIntrinsic = M.getFunction("llvm.init.trampoline");
|
||||
if (!InitTrampolineIntrinsic || InitTrampolineIntrinsic->use_empty())
|
||||
if (TAI->getNonexecutableStackDirective())
|
||||
O << TAI->getNonexecutableStackDirective() << '\n';
|
||||
if (MAI->getNonexecutableStackDirective())
|
||||
O << MAI->getNonexecutableStackDirective() << '\n';
|
||||
|
||||
delete Mang; Mang = 0;
|
||||
DW = 0; MMI = 0;
|
||||
@ -214,7 +214,7 @@ std::string
|
||||
AsmPrinter::getCurrentFunctionEHName(const MachineFunction *MF) const {
|
||||
assert(MF && "No machine function?");
|
||||
return Mang->getMangledName(MF->getFunction(), ".eh",
|
||||
TAI->is_EHSymbolPrivate());
|
||||
MAI->is_EHSymbolPrivate());
|
||||
}
|
||||
|
||||
void AsmPrinter::SetupMachineFunction(MachineFunction &MF) {
|
||||
@ -309,11 +309,11 @@ void AsmPrinter::EmitConstantPool(MachineConstantPool *MCP) {
|
||||
const Type *Ty = CPE.getType();
|
||||
Offset = NewOffset + TM.getTargetData()->getTypeAllocSize(Ty);
|
||||
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_'
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_'
|
||||
<< CPI << ':';
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " constant ";
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " constant ";
|
||||
WriteTypeSymbolic(O, CPE.getType(), MF->getFunction()->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
@ -369,7 +369,7 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI,
|
||||
// the number of relocations the assembler will generate for the jump table.
|
||||
// Set directives are all printed before the jump table itself.
|
||||
SmallPtrSet<MachineBasicBlock*, 16> EmittedSets;
|
||||
if (TAI->getSetDirective() && IsPic)
|
||||
if (MAI->getSetDirective() && IsPic)
|
||||
for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii)
|
||||
if (EmittedSets.insert(JTBBs[ii]))
|
||||
printPICJumpTableSetLabel(i, JTBBs[ii]);
|
||||
@ -379,11 +379,11 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI,
|
||||
// the assembler and linker the extents of the jump table object. The
|
||||
// second label is actually referenced by the code.
|
||||
if (JTInDiffSection) {
|
||||
if (const char *JTLabelPrefix = TAI->getJumpTableSpecialLabelPrefix())
|
||||
if (const char *JTLabelPrefix = MAI->getJumpTableSpecialLabelPrefix())
|
||||
O << JTLabelPrefix << "JTI" << getFunctionNumber() << '_' << i << ":\n";
|
||||
}
|
||||
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << i << ":\n";
|
||||
|
||||
for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii) {
|
||||
@ -400,11 +400,11 @@ void AsmPrinter::printPICJumpTableEntry(const MachineJumpTableInfo *MJTI,
|
||||
|
||||
// Use JumpTableDirective otherwise honor the entry size from the jump table
|
||||
// info.
|
||||
const char *JTEntryDirective = TAI->getJumpTableDirective(isPIC);
|
||||
const char *JTEntryDirective = MAI->getJumpTableDirective(isPIC);
|
||||
bool HadJTEntryDirective = JTEntryDirective != NULL;
|
||||
if (!HadJTEntryDirective) {
|
||||
JTEntryDirective = MJTI->getEntrySize() == 4 ?
|
||||
TAI->getData32bitsDirective() : TAI->getData64bitsDirective();
|
||||
MAI->getData32bitsDirective() : MAI->getData64bitsDirective();
|
||||
}
|
||||
|
||||
O << JTEntryDirective << ' ';
|
||||
@ -416,15 +416,15 @@ void AsmPrinter::printPICJumpTableEntry(const MachineJumpTableInfo *MJTI,
|
||||
// references to the target basic blocks.
|
||||
if (!isPIC) {
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
} else if (TAI->getSetDirective()) {
|
||||
O << TAI->getPrivateGlobalPrefix() << getFunctionNumber()
|
||||
} else if (MAI->getSetDirective()) {
|
||||
O << MAI->getPrivateGlobalPrefix() << getFunctionNumber()
|
||||
<< '_' << uid << "_set_" << MBB->getNumber();
|
||||
} else {
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
// If the arch uses custom Jump Table directives, don't calc relative to
|
||||
// JT
|
||||
if (!HadJTEntryDirective)
|
||||
O << '-' << TAI->getPrivateGlobalPrefix() << "JTI"
|
||||
O << '-' << MAI->getPrivateGlobalPrefix() << "JTI"
|
||||
<< getFunctionNumber() << '_' << uid;
|
||||
}
|
||||
}
|
||||
@ -435,7 +435,7 @@ void AsmPrinter::printPICJumpTableEntry(const MachineJumpTableInfo *MJTI,
|
||||
/// do nothing and return false.
|
||||
bool AsmPrinter::EmitSpecialLLVMGlobal(const GlobalVariable *GV) {
|
||||
if (GV->getName() == "llvm.used") {
|
||||
if (TAI->getUsedDirective() != 0) // No need to emit this at all.
|
||||
if (MAI->getUsedDirective() != 0) // No need to emit this at all.
|
||||
EmitLLVMUsedList(GV->getInitializer());
|
||||
return true;
|
||||
}
|
||||
@ -468,11 +468,11 @@ bool AsmPrinter::EmitSpecialLLVMGlobal(const GlobalVariable *GV) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// EmitLLVMUsedList - For targets that define a TAI::UsedDirective, mark each
|
||||
/// EmitLLVMUsedList - For targets that define a MAI::UsedDirective, mark each
|
||||
/// global in the specified llvm.used list for which emitUsedDirectiveFor
|
||||
/// is true, as being used with this directive.
|
||||
void AsmPrinter::EmitLLVMUsedList(Constant *List) {
|
||||
const char *Directive = TAI->getUsedDirective();
|
||||
const char *Directive = MAI->getUsedDirective();
|
||||
|
||||
// Should be an array of 'i8*'.
|
||||
ConstantArray *InitList = dyn_cast<ConstantArray>(List);
|
||||
@ -513,13 +513,13 @@ void AsmPrinter::EmitXXStructorList(Constant *List) {
|
||||
const std::string &AsmPrinter::getGlobalLinkName(const GlobalVariable *GV,
|
||||
std::string &LinkName) const {
|
||||
if (isa<Function>(GV)) {
|
||||
LinkName += TAI->getFunctionAddrPrefix();
|
||||
LinkName += MAI->getFunctionAddrPrefix();
|
||||
LinkName += Mang->getMangledName(GV);
|
||||
LinkName += TAI->getFunctionAddrSuffix();
|
||||
LinkName += MAI->getFunctionAddrSuffix();
|
||||
} else {
|
||||
LinkName += TAI->getGlobalVarAddrPrefix();
|
||||
LinkName += MAI->getGlobalVarAddrPrefix();
|
||||
LinkName += Mang->getMangledName(GV);
|
||||
LinkName += TAI->getGlobalVarAddrSuffix();
|
||||
LinkName += MAI->getGlobalVarAddrSuffix();
|
||||
}
|
||||
|
||||
return LinkName;
|
||||
@ -586,8 +586,8 @@ void AsmPrinter::EOL() const {
|
||||
|
||||
void AsmPrinter::EOL(const std::string &Comment) const {
|
||||
if (VerboseAsm && !Comment.empty()) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< ' '
|
||||
<< Comment;
|
||||
}
|
||||
@ -596,8 +596,8 @@ void AsmPrinter::EOL(const std::string &Comment) const {
|
||||
|
||||
void AsmPrinter::EOL(const char* Comment) const {
|
||||
if (VerboseAsm && *Comment) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< ' '
|
||||
<< Comment;
|
||||
}
|
||||
@ -607,11 +607,11 @@ void AsmPrinter::EOL(const char* Comment) const {
|
||||
/// EmitULEB128Bytes - Emit an assembler byte data directive to compose an
|
||||
/// unsigned leb128 value.
|
||||
void AsmPrinter::EmitULEB128Bytes(unsigned Value) const {
|
||||
if (TAI->hasLEB128()) {
|
||||
if (MAI->hasLEB128()) {
|
||||
O << "\t.uleb128\t"
|
||||
<< Value;
|
||||
} else {
|
||||
O << TAI->getData8bitsDirective();
|
||||
O << MAI->getData8bitsDirective();
|
||||
PrintULEB128(Value);
|
||||
}
|
||||
}
|
||||
@ -619,11 +619,11 @@ void AsmPrinter::EmitULEB128Bytes(unsigned Value) const {
|
||||
/// EmitSLEB128Bytes - print an assembler byte data directive to compose a
|
||||
/// signed leb128 value.
|
||||
void AsmPrinter::EmitSLEB128Bytes(int Value) const {
|
||||
if (TAI->hasLEB128()) {
|
||||
if (MAI->hasLEB128()) {
|
||||
O << "\t.sleb128\t"
|
||||
<< Value;
|
||||
} else {
|
||||
O << TAI->getData8bitsDirective();
|
||||
O << MAI->getData8bitsDirective();
|
||||
PrintSLEB128(Value);
|
||||
}
|
||||
}
|
||||
@ -631,29 +631,29 @@ void AsmPrinter::EmitSLEB128Bytes(int Value) const {
|
||||
/// EmitInt8 - Emit a byte directive and value.
|
||||
///
|
||||
void AsmPrinter::EmitInt8(int Value) const {
|
||||
O << TAI->getData8bitsDirective();
|
||||
O << MAI->getData8bitsDirective();
|
||||
PrintHex(Value & 0xFF);
|
||||
}
|
||||
|
||||
/// EmitInt16 - Emit a short directive and value.
|
||||
///
|
||||
void AsmPrinter::EmitInt16(int Value) const {
|
||||
O << TAI->getData16bitsDirective();
|
||||
O << MAI->getData16bitsDirective();
|
||||
PrintHex(Value & 0xFFFF);
|
||||
}
|
||||
|
||||
/// EmitInt32 - Emit a long directive and value.
|
||||
///
|
||||
void AsmPrinter::EmitInt32(int Value) const {
|
||||
O << TAI->getData32bitsDirective();
|
||||
O << MAI->getData32bitsDirective();
|
||||
PrintHex(Value);
|
||||
}
|
||||
|
||||
/// EmitInt64 - Emit a long long directive and value.
|
||||
///
|
||||
void AsmPrinter::EmitInt64(uint64_t Value) const {
|
||||
if (TAI->getData64bitsDirective()) {
|
||||
O << TAI->getData64bitsDirective();
|
||||
if (MAI->getData64bitsDirective()) {
|
||||
O << MAI->getData64bitsDirective();
|
||||
PrintHex(Value);
|
||||
} else {
|
||||
if (TM.getTargetData()->isBigEndian()) {
|
||||
@ -706,11 +706,11 @@ void AsmPrinter::EmitString(const std::string &String) const {
|
||||
}
|
||||
|
||||
void AsmPrinter::EmitString(const char *String, unsigned Size) const {
|
||||
const char* AscizDirective = TAI->getAscizDirective();
|
||||
const char* AscizDirective = MAI->getAscizDirective();
|
||||
if (AscizDirective)
|
||||
O << AscizDirective;
|
||||
else
|
||||
O << TAI->getAsciiDirective();
|
||||
O << MAI->getAsciiDirective();
|
||||
O << '\"';
|
||||
for (unsigned i = 0; i < Size; ++i)
|
||||
printStringChar(O, String[i]);
|
||||
@ -756,7 +756,7 @@ void AsmPrinter::EmitAlignment(unsigned NumBits, const GlobalValue *GV,
|
||||
|
||||
unsigned FillValue = 0;
|
||||
if (getCurrentSection()->getKind().isText())
|
||||
FillValue = TAI->getTextAlignFillValue();
|
||||
FillValue = MAI->getTextAlignFillValue();
|
||||
|
||||
OutStreamer.EmitValueToAlignment(1 << NumBits, FillValue, 1, 0);
|
||||
}
|
||||
@ -765,14 +765,14 @@ void AsmPrinter::EmitAlignment(unsigned NumBits, const GlobalValue *GV,
|
||||
///
|
||||
void AsmPrinter::EmitZeros(uint64_t NumZeros, unsigned AddrSpace) const {
|
||||
if (NumZeros) {
|
||||
if (TAI->getZeroDirective()) {
|
||||
O << TAI->getZeroDirective() << NumZeros;
|
||||
if (TAI->getZeroDirectiveSuffix())
|
||||
O << TAI->getZeroDirectiveSuffix();
|
||||
if (MAI->getZeroDirective()) {
|
||||
O << MAI->getZeroDirective() << NumZeros;
|
||||
if (MAI->getZeroDirectiveSuffix())
|
||||
O << MAI->getZeroDirectiveSuffix();
|
||||
O << '\n';
|
||||
} else {
|
||||
for (; NumZeros; --NumZeros)
|
||||
O << TAI->getData8bitsDirective(AddrSpace) << "0\n";
|
||||
O << MAI->getData8bitsDirective(AddrSpace) << "0\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -790,13 +790,13 @@ void AsmPrinter::EmitConstantValueOnly(const Constant *CV) {
|
||||
// decorating it with GlobalVarAddrPrefix/Suffix or
|
||||
// FunctionAddrPrefix/Suffix (these all default to "" )
|
||||
if (isa<Function>(GV)) {
|
||||
O << TAI->getFunctionAddrPrefix()
|
||||
O << MAI->getFunctionAddrPrefix()
|
||||
<< Mang->getMangledName(GV)
|
||||
<< TAI->getFunctionAddrSuffix();
|
||||
<< MAI->getFunctionAddrSuffix();
|
||||
} else {
|
||||
O << TAI->getGlobalVarAddrPrefix()
|
||||
O << MAI->getGlobalVarAddrPrefix()
|
||||
<< Mang->getMangledName(GV)
|
||||
<< TAI->getGlobalVarAddrSuffix();
|
||||
<< MAI->getGlobalVarAddrSuffix();
|
||||
}
|
||||
} else if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(CV)) {
|
||||
const TargetData *TD = TM.getTargetData();
|
||||
@ -929,12 +929,12 @@ static void printAsCString(formatted_raw_ostream &O, const ConstantArray *CVA,
|
||||
///
|
||||
void AsmPrinter::EmitString(const ConstantArray *CVA) const {
|
||||
unsigned NumElts = CVA->getNumOperands();
|
||||
if (TAI->getAscizDirective() && NumElts &&
|
||||
if (MAI->getAscizDirective() && NumElts &&
|
||||
cast<ConstantInt>(CVA->getOperand(NumElts-1))->getZExtValue() == 0) {
|
||||
O << TAI->getAscizDirective();
|
||||
O << MAI->getAscizDirective();
|
||||
printAsCString(O, CVA, NumElts-1);
|
||||
} else {
|
||||
O << TAI->getAsciiDirective();
|
||||
O << MAI->getAsciiDirective();
|
||||
printAsCString(O, CVA, NumElts);
|
||||
}
|
||||
O << '\n';
|
||||
@ -994,40 +994,40 @@ void AsmPrinter::EmitGlobalConstantFP(const ConstantFP *CFP,
|
||||
if (CFP->getType() == Type::getDoubleTy(Context)) {
|
||||
double Val = CFP->getValueAPF().convertToDouble(); // for comment only
|
||||
uint64_t i = CFP->getValueAPF().bitcastToAPInt().getZExtValue();
|
||||
if (TAI->getData64bitsDirective(AddrSpace)) {
|
||||
O << TAI->getData64bitsDirective(AddrSpace) << i;
|
||||
if (MAI->getData64bitsDirective(AddrSpace)) {
|
||||
O << MAI->getData64bitsDirective(AddrSpace) << i;
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " double " << Val;
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " double " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
} else if (TD->isBigEndian()) {
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(i >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant word of double " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(i);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant word of double " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
} else {
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(i);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant word of double " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(i >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant word of double " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
@ -1035,11 +1035,11 @@ void AsmPrinter::EmitGlobalConstantFP(const ConstantFP *CFP,
|
||||
return;
|
||||
} else if (CFP->getType() == Type::getFloatTy(Context)) {
|
||||
float Val = CFP->getValueAPF().convertToFloat(); // for comment only
|
||||
O << TAI->getData32bitsDirective(AddrSpace)
|
||||
O << MAI->getData32bitsDirective(AddrSpace)
|
||||
<< CFP->getValueAPF().bitcastToAPInt().getZExtValue();
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " float " << Val;
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " float " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
return;
|
||||
@ -1054,73 +1054,73 @@ void AsmPrinter::EmitGlobalConstantFP(const ConstantFP *CFP,
|
||||
DoubleVal.convert(APFloat::IEEEdouble, APFloat::rmNearestTiesToEven,
|
||||
&ignored);
|
||||
if (TD->isBigEndian()) {
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant halfword of x86_fp80 ~"
|
||||
<< DoubleVal.convertToDouble();
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " next halfword";
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " next halfword";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " next halfword";
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " next halfword";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " next halfword";
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " next halfword";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant halfword";
|
||||
}
|
||||
O << '\n';
|
||||
} else {
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant halfword of x86_fp80 ~"
|
||||
<< DoubleVal.convertToDouble();
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " next halfword";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " next halfword";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " next halfword";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]);
|
||||
O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant halfword";
|
||||
}
|
||||
O << '\n';
|
||||
@ -1134,60 +1134,60 @@ void AsmPrinter::EmitGlobalConstantFP(const ConstantFP *CFP,
|
||||
APInt api = CFP->getValueAPF().bitcastToAPInt();
|
||||
const uint64_t *p = api.getRawData();
|
||||
if (TD->isBigEndian()) {
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0] >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0] >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant word of ppc_fp128";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0]);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " next word";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1] >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1] >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " next word";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1]);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant word";
|
||||
}
|
||||
O << '\n';
|
||||
} else {
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1]);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant word of ppc_fp128";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1] >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1] >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " next word";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0]);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0]);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " next word";
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0] >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0] >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant word";
|
||||
}
|
||||
O << '\n';
|
||||
@ -1214,35 +1214,35 @@ void AsmPrinter::EmitGlobalConstantLargeInt(const ConstantInt *CI,
|
||||
else
|
||||
Val = RawData[i];
|
||||
|
||||
if (TAI->getData64bitsDirective(AddrSpace))
|
||||
O << TAI->getData64bitsDirective(AddrSpace) << Val << '\n';
|
||||
if (MAI->getData64bitsDirective(AddrSpace))
|
||||
O << MAI->getData64bitsDirective(AddrSpace) << Val << '\n';
|
||||
else if (TD->isBigEndian()) {
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(Val >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant half of i64 " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(Val);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant half of i64 " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
} else {
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(Val);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " least significant half of i64 " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val >> 32);
|
||||
O << MAI->getData32bitsDirective(AddrSpace) << unsigned(Val >> 32);
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " most significant half of i64 " << Val;
|
||||
}
|
||||
O << '\n';
|
||||
@ -1285,8 +1285,8 @@ void AsmPrinter::EmitGlobalConstant(const Constant *CV, unsigned AddrSpace) {
|
||||
if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) {
|
||||
SmallString<40> S;
|
||||
CI->getValue().toStringUnsigned(S, 16);
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " 0x" << S.str();
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " 0x" << S.str();
|
||||
}
|
||||
}
|
||||
O << '\n';
|
||||
@ -1305,10 +1305,10 @@ void AsmPrinter::EmitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) {
|
||||
/// for their own strange codes.
|
||||
void AsmPrinter::PrintSpecial(const MachineInstr *MI, const char *Code) const {
|
||||
if (!strcmp(Code, "private")) {
|
||||
O << TAI->getPrivateGlobalPrefix();
|
||||
O << MAI->getPrivateGlobalPrefix();
|
||||
} else if (!strcmp(Code, "comment")) {
|
||||
if (VerboseAsm)
|
||||
O << TAI->getCommentString();
|
||||
O << MAI->getCommentString();
|
||||
} else if (!strcmp(Code, "uid")) {
|
||||
// Comparing the address of MI isn't sufficient, because machineinstrs may
|
||||
// be allocated to the same address across functions.
|
||||
@ -1333,10 +1333,10 @@ void AsmPrinter::PrintSpecial(const MachineInstr *MI, const char *Code) const {
|
||||
/// processDebugLoc - Processes the debug information of each machine
|
||||
/// instruction's DebugLoc.
|
||||
void AsmPrinter::processDebugLoc(DebugLoc DL) {
|
||||
if (!TAI || !DW)
|
||||
if (!MAI || !DW)
|
||||
return;
|
||||
|
||||
if (TAI->doesSupportDebugInformation() && DW->ShouldEmitDwarfDebug()) {
|
||||
if (MAI->doesSupportDebugInformation() && DW->ShouldEmitDwarfDebug()) {
|
||||
if (!DL.isUnknown()) {
|
||||
DebugLocTuple CurDLT = MF->getDebugLocTuple(DL);
|
||||
|
||||
@ -1368,15 +1368,15 @@ void AsmPrinter::printInlineAsm(const MachineInstr *MI) const {
|
||||
// If this asmstr is empty, just print the #APP/#NOAPP markers.
|
||||
// These are useful to see where empty asm's wound up.
|
||||
if (AsmStr[0] == 0) {
|
||||
O << TAI->getCommentString() << TAI->getInlineAsmStart() << "\n\t";
|
||||
O << TAI->getCommentString() << TAI->getInlineAsmEnd() << '\n';
|
||||
O << MAI->getCommentString() << MAI->getInlineAsmStart() << "\n\t";
|
||||
O << MAI->getCommentString() << MAI->getInlineAsmEnd() << '\n';
|
||||
return;
|
||||
}
|
||||
|
||||
O << TAI->getCommentString() << TAI->getInlineAsmStart() << "\n\t";
|
||||
O << MAI->getCommentString() << MAI->getInlineAsmStart() << "\n\t";
|
||||
|
||||
// The variant of the current asmprinter.
|
||||
int AsmPrinterVariant = TAI->getAssemblerDialect();
|
||||
int AsmPrinterVariant = MAI->getAssemblerDialect();
|
||||
|
||||
int CurVariant = -1; // The number of the {.|.|.} region we are in.
|
||||
const char *LastEmitted = AsmStr; // One past the last character emitted.
|
||||
@ -1544,15 +1544,15 @@ void AsmPrinter::printInlineAsm(const MachineInstr *MI) const {
|
||||
}
|
||||
}
|
||||
}
|
||||
O << "\n\t" << TAI->getCommentString() << TAI->getInlineAsmEnd() << '\n';
|
||||
O << "\n\t" << MAI->getCommentString() << MAI->getInlineAsmEnd() << '\n';
|
||||
}
|
||||
|
||||
/// printImplicitDef - This method prints the specified machine instruction
|
||||
/// that is an implicit def.
|
||||
void AsmPrinter::printImplicitDef(const MachineInstr *MI) const {
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " implicit-def: "
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " implicit-def: "
|
||||
<< TRI->getAsmName(MI->getOperand(0).getReg()) << '\n';
|
||||
}
|
||||
}
|
||||
@ -1564,7 +1564,7 @@ void AsmPrinter::printLabel(const MachineInstr *MI) const {
|
||||
}
|
||||
|
||||
void AsmPrinter::printLabel(unsigned Id) const {
|
||||
O << TAI->getPrivateGlobalPrefix() << "label" << Id << ":\n";
|
||||
O << MAI->getPrivateGlobalPrefix() << "label" << Id << ":\n";
|
||||
}
|
||||
|
||||
/// PrintAsmOperand - Print the specified operand of MI, an INLINEASM
|
||||
@ -1595,15 +1595,15 @@ void AsmPrinter::printBasicBlockLabel(const MachineBasicBlock *MBB,
|
||||
EmitAlignment(Log2_32(Align));
|
||||
}
|
||||
|
||||
O << TAI->getPrivateGlobalPrefix() << "BB" << getFunctionNumber() << '_'
|
||||
O << MAI->getPrivateGlobalPrefix() << "BB" << getFunctionNumber() << '_'
|
||||
<< MBB->getNumber();
|
||||
if (printColon)
|
||||
O << ':';
|
||||
if (printComment) {
|
||||
if (const BasicBlock *BB = MBB->getBasicBlock())
|
||||
if (BB->hasName()) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << ' ';
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, BB, /*PrintType=*/false);
|
||||
}
|
||||
|
||||
@ -1616,26 +1616,26 @@ void AsmPrinter::printBasicBlockLabel(const MachineBasicBlock *MBB,
|
||||
/// specified MachineBasicBlock for a jumptable entry.
|
||||
void AsmPrinter::printPICJumpTableSetLabel(unsigned uid,
|
||||
const MachineBasicBlock *MBB) const {
|
||||
if (!TAI->getSetDirective())
|
||||
if (!MAI->getSetDirective())
|
||||
return;
|
||||
|
||||
O << TAI->getSetDirective() << ' ' << TAI->getPrivateGlobalPrefix()
|
||||
O << MAI->getSetDirective() << ' ' << MAI->getPrivateGlobalPrefix()
|
||||
<< getFunctionNumber() << '_' << uid << "_set_" << MBB->getNumber() << ',';
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << '-' << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << uid << '\n';
|
||||
}
|
||||
|
||||
void AsmPrinter::printPICJumpTableSetLabel(unsigned uid, unsigned uid2,
|
||||
const MachineBasicBlock *MBB) const {
|
||||
if (!TAI->getSetDirective())
|
||||
if (!MAI->getSetDirective())
|
||||
return;
|
||||
|
||||
O << TAI->getSetDirective() << ' ' << TAI->getPrivateGlobalPrefix()
|
||||
O << MAI->getSetDirective() << ' ' << MAI->getPrivateGlobalPrefix()
|
||||
<< getFunctionNumber() << '_' << uid << '_' << uid2
|
||||
<< "_set_" << MBB->getNumber() << ',';
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << '-' << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << uid << '_' << uid2 << '\n';
|
||||
}
|
||||
|
||||
@ -1652,15 +1652,15 @@ void AsmPrinter::printDataDirective(const Type *type, unsigned AddrSpace) {
|
||||
case Type::IntegerTyID: {
|
||||
unsigned BitWidth = cast<IntegerType>(type)->getBitWidth();
|
||||
if (BitWidth <= 8)
|
||||
O << TAI->getData8bitsDirective(AddrSpace);
|
||||
O << MAI->getData8bitsDirective(AddrSpace);
|
||||
else if (BitWidth <= 16)
|
||||
O << TAI->getData16bitsDirective(AddrSpace);
|
||||
O << MAI->getData16bitsDirective(AddrSpace);
|
||||
else if (BitWidth <= 32)
|
||||
O << TAI->getData32bitsDirective(AddrSpace);
|
||||
O << MAI->getData32bitsDirective(AddrSpace);
|
||||
else if (BitWidth <= 64) {
|
||||
assert(TAI->getData64bitsDirective(AddrSpace) &&
|
||||
assert(MAI->getData64bitsDirective(AddrSpace) &&
|
||||
"Target cannot handle 64-bit constant exprs!");
|
||||
O << TAI->getData64bitsDirective(AddrSpace);
|
||||
O << MAI->getData64bitsDirective(AddrSpace);
|
||||
} else {
|
||||
llvm_unreachable("Target cannot handle given data directive width!");
|
||||
}
|
||||
@ -1668,15 +1668,15 @@ void AsmPrinter::printDataDirective(const Type *type, unsigned AddrSpace) {
|
||||
}
|
||||
case Type::PointerTyID:
|
||||
if (TD->getPointerSize() == 8) {
|
||||
assert(TAI->getData64bitsDirective(AddrSpace) &&
|
||||
assert(MAI->getData64bitsDirective(AddrSpace) &&
|
||||
"Target cannot handle 64-bit pointer exprs!");
|
||||
O << TAI->getData64bitsDirective(AddrSpace);
|
||||
O << MAI->getData64bitsDirective(AddrSpace);
|
||||
} else if (TD->getPointerSize() == 2) {
|
||||
O << TAI->getData16bitsDirective(AddrSpace);
|
||||
O << MAI->getData16bitsDirective(AddrSpace);
|
||||
} else if (TD->getPointerSize() == 1) {
|
||||
O << TAI->getData8bitsDirective(AddrSpace);
|
||||
O << MAI->getData8bitsDirective(AddrSpace);
|
||||
} else {
|
||||
O << TAI->getData32bitsDirective(AddrSpace);
|
||||
O << MAI->getData32bitsDirective(AddrSpace);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1685,10 +1685,10 @@ void AsmPrinter::printDataDirective(const Type *type, unsigned AddrSpace) {
|
||||
void AsmPrinter::printVisibility(const std::string& Name,
|
||||
unsigned Visibility) const {
|
||||
if (Visibility == GlobalValue::HiddenVisibility) {
|
||||
if (const char *Directive = TAI->getHiddenDirective())
|
||||
if (const char *Directive = MAI->getHiddenDirective())
|
||||
O << Directive << Name << '\n';
|
||||
} else if (Visibility == GlobalValue::ProtectedVisibility) {
|
||||
if (const char *Directive = TAI->getProtectedDirective())
|
||||
if (const char *Directive = MAI->getProtectedDirective())
|
||||
O << Directive << Name << '\n';
|
||||
}
|
||||
}
|
||||
@ -1737,8 +1737,8 @@ void AsmPrinter::EmitComments(const MachineInstr &MI) const {
|
||||
DebugLocTuple DLT = MF->getDebugLocTuple(MI.getDebugLoc());
|
||||
|
||||
// Print source line info.
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " SrcLine ";
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " SrcLine ";
|
||||
if (DLT.CompileUnit->hasInitializer()) {
|
||||
Constant *Name = DLT.CompileUnit->getInitializer();
|
||||
if (ConstantArray *NameString = dyn_cast<ConstantArray>(Name))
|
||||
@ -1758,8 +1758,8 @@ void AsmPrinter::EmitComments(const MCInst &MI) const
|
||||
DebugLocTuple DLT = MF->getDebugLocTuple(MI.getDebugLoc());
|
||||
|
||||
// Print source line info
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " SrcLine ";
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " SrcLine ";
|
||||
if (DLT.CompileUnit->hasInitializer()) {
|
||||
Constant *Name = DLT.CompileUnit->getInitializer();
|
||||
if (ConstantArray *NameString = dyn_cast<ConstantArray>(Name))
|
||||
@ -1792,7 +1792,7 @@ Indent(formatted_raw_ostream &out, int level, int scale = 2) {
|
||||
///
|
||||
static void PrintChildLoopComment(formatted_raw_ostream &O,
|
||||
const MachineLoop *loop,
|
||||
const MCAsmInfo *TAI,
|
||||
const MCAsmInfo *MAI,
|
||||
int FunctionNumber) {
|
||||
// Add child loop information
|
||||
for(MachineLoop::iterator cl = loop->begin(),
|
||||
@ -1803,14 +1803,14 @@ static void PrintChildLoopComment(formatted_raw_ostream &O,
|
||||
assert(Header && "No header for loop");
|
||||
|
||||
O << '\n';
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
|
||||
O << TAI->getCommentString();
|
||||
O << MAI->getCommentString();
|
||||
Indent(O, (*cl)->getLoopDepth()-1)
|
||||
<< " Child Loop BB" << FunctionNumber << "_"
|
||||
<< Header->getNumber() << " Depth " << (*cl)->getLoopDepth();
|
||||
|
||||
PrintChildLoopComment(O, *cl, TAI, FunctionNumber);
|
||||
PrintChildLoopComment(O, *cl, MAI, FunctionNumber);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1824,28 +1824,28 @@ void AsmPrinter::EmitComments(const MachineBasicBlock &MBB) const
|
||||
if (loop) {
|
||||
// Print a newline after bb# annotation.
|
||||
O << "\n";
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " Loop Depth " << loop->getLoopDepth()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " Loop Depth " << loop->getLoopDepth()
|
||||
<< '\n';
|
||||
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
|
||||
MachineBasicBlock *Header = loop->getHeader();
|
||||
assert(Header && "No header for loop");
|
||||
|
||||
if (Header == &MBB) {
|
||||
O << TAI->getCommentString() << " Loop Header";
|
||||
PrintChildLoopComment(O, loop, TAI, getFunctionNumber());
|
||||
O << MAI->getCommentString() << " Loop Header";
|
||||
PrintChildLoopComment(O, loop, MAI, getFunctionNumber());
|
||||
}
|
||||
else {
|
||||
O << TAI->getCommentString() << " Loop Header is BB"
|
||||
O << MAI->getCommentString() << " Loop Header is BB"
|
||||
<< getFunctionNumber() << "_" << loop->getHeader()->getNumber();
|
||||
}
|
||||
|
||||
if (loop->empty()) {
|
||||
O << '\n';
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << " Inner Loop";
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << " Inner Loop";
|
||||
}
|
||||
|
||||
// Add parent loop information
|
||||
@ -1856,8 +1856,8 @@ void AsmPrinter::EmitComments(const MachineBasicBlock &MBB) const
|
||||
assert(Header && "No header for loop");
|
||||
|
||||
O << '\n';
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString();
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString();
|
||||
Indent(O, CurLoop->getLoopDepth()-1)
|
||||
<< " Inside Loop BB" << getFunctionNumber() << "_"
|
||||
<< Header->getNumber() << " Depth " << CurLoop->getLoopDepth();
|
||||
|
@ -1334,7 +1334,7 @@ void DwarfDebug::BeginModule(Module *M, MachineModuleInfo *mmi) {
|
||||
|
||||
// Print out .file directives to specify files for .loc directives. These are
|
||||
// printed out early so that they precede any .loc directives.
|
||||
if (TAI->hasDotLocAndDotFile()) {
|
||||
if (MAI->hasDotLocAndDotFile()) {
|
||||
for (unsigned i = 1, e = getNumSourceIds()+1; i != e; ++i) {
|
||||
// Remember source id starts at 1.
|
||||
std::pair<unsigned, unsigned> Id = getSourceDirectoryAndFileIds(i);
|
||||
@ -1654,7 +1654,7 @@ unsigned DwarfDebug::RecordInlinedFnStart(DISubprogram &SP, DICompileUnit CU,
|
||||
unsigned Line, unsigned Col) {
|
||||
unsigned LabelID = MMI->NextLabelID();
|
||||
|
||||
if (!TAI->doesDwarfUsesInlineInfoSection())
|
||||
if (!MAI->doesDwarfUsesInlineInfoSection())
|
||||
return LabelID;
|
||||
|
||||
if (TimePassesIsEnabled)
|
||||
@ -1732,7 +1732,7 @@ unsigned DwarfDebug::RecordInlinedFnStart(DISubprogram &SP, DICompileUnit CU,
|
||||
|
||||
/// RecordInlinedFnEnd - Indicate the end of inlined subroutine.
|
||||
unsigned DwarfDebug::RecordInlinedFnEnd(DISubprogram &SP) {
|
||||
if (!TAI->doesDwarfUsesInlineInfoSection())
|
||||
if (!MAI->doesDwarfUsesInlineInfoSection())
|
||||
return 0;
|
||||
|
||||
if (TimePassesIsEnabled)
|
||||
@ -1844,7 +1844,7 @@ void DwarfDebug::EmitInitial() {
|
||||
const TargetLoweringObjectFile &TLOF = Asm->getObjFileLowering();
|
||||
|
||||
// Dwarf sections base addresses.
|
||||
if (TAI->doesDwarfRequireFrameSection()) {
|
||||
if (MAI->doesDwarfRequireFrameSection()) {
|
||||
Asm->OutStreamer.SwitchSection(TLOF.getDwarfFrameSection());
|
||||
EmitLabel("section_debug_frame", 0);
|
||||
}
|
||||
@ -2037,7 +2037,7 @@ void DwarfDebug::EmitEndOfLineMatrix(unsigned SectionEnd) {
|
||||
void DwarfDebug::EmitDebugLines() {
|
||||
// If the target is using .loc/.file, the assembler will be emitting the
|
||||
// .debug_line table automatically.
|
||||
if (TAI->hasDotLocAndDotFile())
|
||||
if (MAI->hasDotLocAndDotFile())
|
||||
return;
|
||||
|
||||
// Minimum line delta, thus ranging from -10..(255-10).
|
||||
@ -2116,7 +2116,7 @@ void DwarfDebug::EmitDebugLines() {
|
||||
|
||||
/*if (Asm->isVerbose()) {
|
||||
const MCSection *S = SectionMap[j + 1];
|
||||
O << '\t' << TAI->getCommentString() << " Section"
|
||||
O << '\t' << MAI->getCommentString() << " Section"
|
||||
<< S->getName() << '\n';
|
||||
}*/
|
||||
Asm->EOL();
|
||||
@ -2136,7 +2136,7 @@ void DwarfDebug::EmitDebugLines() {
|
||||
else {
|
||||
std::pair<unsigned, unsigned> SourceID =
|
||||
getSourceDirectoryAndFileIds(LineInfo.getSourceID());
|
||||
O << '\t' << TAI->getCommentString() << ' '
|
||||
O << '\t' << MAI->getCommentString() << ' '
|
||||
<< getSourceDirectoryName(SourceID.first) << ' '
|
||||
<< getSourceFileName(SourceID.second)
|
||||
<<" :" << utostr_32(LineInfo.getLine()) << '\n';
|
||||
@ -2197,7 +2197,7 @@ void DwarfDebug::EmitDebugLines() {
|
||||
/// EmitCommonDebugFrame - Emit common frame info into a debug frame section.
|
||||
///
|
||||
void DwarfDebug::EmitCommonDebugFrame() {
|
||||
if (!TAI->doesDwarfRequireFrameSection())
|
||||
if (!MAI->doesDwarfRequireFrameSection())
|
||||
return;
|
||||
|
||||
int stackGrowth =
|
||||
@ -2243,7 +2243,7 @@ void DwarfDebug::EmitCommonDebugFrame() {
|
||||
/// section.
|
||||
void
|
||||
DwarfDebug::EmitFunctionDebugFrame(const FunctionDebugFrameInfo&DebugFrameInfo){
|
||||
if (!TAI->doesDwarfRequireFrameSection())
|
||||
if (!MAI->doesDwarfRequireFrameSection())
|
||||
return;
|
||||
|
||||
// Start the dwarf frame section.
|
||||
@ -2427,7 +2427,7 @@ void DwarfDebug::EmitDebugMacInfo() {
|
||||
/// __debug_info section, and the low_pc is the starting address for the
|
||||
/// inlining instance.
|
||||
void DwarfDebug::EmitDebugInlineInfo() {
|
||||
if (!TAI->doesDwarfUsesInlineInfoSection())
|
||||
if (!MAI->doesDwarfUsesInlineInfoSection())
|
||||
return;
|
||||
|
||||
if (!ModuleCU)
|
||||
@ -2479,9 +2479,9 @@ void DwarfDebug::EmitDebugInlineInfo() {
|
||||
Asm->EmitInt32(SP->getOffset()); Asm->EOL("DIE offset");
|
||||
|
||||
if (TD->getPointerSize() == sizeof(int32_t))
|
||||
O << TAI->getData32bitsDirective();
|
||||
O << MAI->getData32bitsDirective();
|
||||
else
|
||||
O << TAI->getData64bitsDirective();
|
||||
O << MAI->getData64bitsDirective();
|
||||
|
||||
PrintLabelName("label", *LI); Asm->EOL("low_pc");
|
||||
}
|
||||
|
@ -60,8 +60,8 @@ void DwarfException::EmitCommonEHFrame(const Function *Personality,
|
||||
// Begin eh frame section.
|
||||
Asm->OutStreamer.SwitchSection(Asm->getObjFileLowering().getEHFrameSection());
|
||||
|
||||
if (TAI->is_EHSymbolPrivate())
|
||||
O << TAI->getPrivateGlobalPrefix();
|
||||
if (MAI->is_EHSymbolPrivate())
|
||||
O << MAI->getPrivateGlobalPrefix();
|
||||
|
||||
O << "EH_frame" << Index << ":\n";
|
||||
EmitLabel("section_eh_frame", Index);
|
||||
@ -99,7 +99,7 @@ void DwarfException::EmitCommonEHFrame(const Function *Personality,
|
||||
Asm->EmitULEB128Bytes(7);
|
||||
Asm->EOL("Augmentation Size");
|
||||
|
||||
if (TAI->getNeedsIndirectEncoding()) {
|
||||
if (MAI->getNeedsIndirectEncoding()) {
|
||||
Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4 |
|
||||
dwarf::DW_EH_PE_indirect);
|
||||
Asm->EOL("Personality (pcrel sdata4 indirect)");
|
||||
@ -109,11 +109,11 @@ void DwarfException::EmitCommonEHFrame(const Function *Personality,
|
||||
}
|
||||
|
||||
PrintRelDirective(true);
|
||||
O << TAI->getPersonalityPrefix();
|
||||
O << MAI->getPersonalityPrefix();
|
||||
Asm->EmitExternalGlobal((const GlobalVariable *)(Personality));
|
||||
O << TAI->getPersonalitySuffix();
|
||||
if (strcmp(TAI->getPersonalitySuffix(), "+4@GOTPCREL"))
|
||||
O << "-" << TAI->getPCSymbol();
|
||||
O << MAI->getPersonalitySuffix();
|
||||
if (strcmp(MAI->getPersonalitySuffix(), "+4@GOTPCREL"))
|
||||
O << "-" << MAI->getPCSymbol();
|
||||
Asm->EOL("Personality");
|
||||
|
||||
Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4);
|
||||
@ -157,12 +157,12 @@ void DwarfException::EmitEHFrame(const FunctionEHFrameInfo &EHFrameInfo) {
|
||||
// Externally visible entry into the functions eh frame info. If the
|
||||
// corresponding function is static, this should not be externally visible.
|
||||
if (!TheFunc->hasLocalLinkage())
|
||||
if (const char *GlobalEHDirective = TAI->getGlobalEHDirective())
|
||||
if (const char *GlobalEHDirective = MAI->getGlobalEHDirective())
|
||||
O << GlobalEHDirective << EHFrameInfo.FnName << "\n";
|
||||
|
||||
// If corresponding function is weak definition, this should be too.
|
||||
if (TheFunc->isWeakForLinker() && TAI->getWeakDefDirective())
|
||||
O << TAI->getWeakDefDirective() << EHFrameInfo.FnName << "\n";
|
||||
if (TheFunc->isWeakForLinker() && MAI->getWeakDefDirective())
|
||||
O << MAI->getWeakDefDirective() << EHFrameInfo.FnName << "\n";
|
||||
|
||||
// If there are no calls then you can't unwind. This may mean we can omit the
|
||||
// EH Frame, but some environments do not handle weak absolute symbols. If
|
||||
@ -170,13 +170,13 @@ void DwarfException::EmitEHFrame(const FunctionEHFrameInfo &EHFrameInfo) {
|
||||
// info is to be available for non-EH uses.
|
||||
if (!EHFrameInfo.hasCalls && !UnwindTablesMandatory &&
|
||||
(!TheFunc->isWeakForLinker() ||
|
||||
!TAI->getWeakDefDirective() ||
|
||||
TAI->getSupportsWeakOmittedEHFrame())) {
|
||||
!MAI->getWeakDefDirective() ||
|
||||
MAI->getSupportsWeakOmittedEHFrame())) {
|
||||
O << EHFrameInfo.FnName << " = 0\n";
|
||||
// This name has no connection to the function, so it might get
|
||||
// dead-stripped when the function is not, erroneously. Prohibit
|
||||
// dead-stripping unconditionally.
|
||||
if (const char *UsedDirective = TAI->getUsedDirective())
|
||||
if (const char *UsedDirective = MAI->getUsedDirective())
|
||||
O << UsedDirective << EHFrameInfo.FnName << "\n\n";
|
||||
} else {
|
||||
O << EHFrameInfo.FnName << ":\n";
|
||||
@ -233,7 +233,7 @@ void DwarfException::EmitEHFrame(const FunctionEHFrameInfo &EHFrameInfo) {
|
||||
// on unused functions (calling undefined externals) being dead-stripped to
|
||||
// link correctly. Yes, there really is.
|
||||
if (MMI->isUsedFunction(EHFrameInfo.function))
|
||||
if (const char *UsedDirective = TAI->getUsedDirective())
|
||||
if (const char *UsedDirective = MAI->getUsedDirective())
|
||||
O << UsedDirective << EHFrameInfo.FnName << "\n\n";
|
||||
}
|
||||
}
|
||||
@ -430,7 +430,7 @@ ComputeCallSiteTable(SmallVectorImpl<CallSiteEntry> &CallSites,
|
||||
// create a call-site entry with no landing pad for the region between the
|
||||
// try-ranges.
|
||||
if (SawPotentiallyThrowing &&
|
||||
TAI->getExceptionHandlingType() == ExceptionHandling::Dwarf) {
|
||||
MAI->getExceptionHandlingType() == ExceptionHandling::Dwarf) {
|
||||
CallSiteEntry Site = { LastLabel, BeginLabel, 0, 0 };
|
||||
CallSites.push_back(Site);
|
||||
PreviousIsInvoke = false;
|
||||
@ -472,7 +472,7 @@ ComputeCallSiteTable(SmallVectorImpl<CallSiteEntry> &CallSites,
|
||||
// function may throw, create a call-site entry with no landing pad for the
|
||||
// region following the try-range.
|
||||
if (SawPotentiallyThrowing &&
|
||||
TAI->getExceptionHandlingType() == ExceptionHandling::Dwarf) {
|
||||
MAI->getExceptionHandlingType() == ExceptionHandling::Dwarf) {
|
||||
CallSiteEntry Site = { LastLabel, 0, 0, 0 };
|
||||
CallSites.push_back(Site);
|
||||
}
|
||||
@ -546,18 +546,18 @@ void DwarfException::EmitExceptionTable() {
|
||||
const unsigned LandingPadSize = sizeof(int32_t); // DW_EH_PE_udata4
|
||||
unsigned SizeSites;
|
||||
|
||||
bool HaveTTData = (TAI->getExceptionHandlingType() == ExceptionHandling::SjLj)
|
||||
bool HaveTTData = (MAI->getExceptionHandlingType() == ExceptionHandling::SjLj)
|
||||
? (!TypeInfos.empty() || !FilterIds.empty()) : true;
|
||||
|
||||
|
||||
if (TAI->getExceptionHandlingType() == ExceptionHandling::SjLj) {
|
||||
if (MAI->getExceptionHandlingType() == ExceptionHandling::SjLj) {
|
||||
SizeSites = 0;
|
||||
} else
|
||||
SizeSites = CallSites.size() *
|
||||
(SiteStartSize + SiteLengthSize + LandingPadSize);
|
||||
for (unsigned i = 0, e = CallSites.size(); i < e; ++i) {
|
||||
SizeSites += MCAsmInfo::getULEB128Size(CallSites[i].Action);
|
||||
if (TAI->getExceptionHandlingType() == ExceptionHandling::SjLj)
|
||||
if (MAI->getExceptionHandlingType() == ExceptionHandling::SjLj)
|
||||
SizeSites += MCAsmInfo::getULEB128Size(i);
|
||||
}
|
||||
// Type infos.
|
||||
@ -588,7 +588,7 @@ void DwarfException::EmitExceptionTable() {
|
||||
}
|
||||
|
||||
EmitLabel("exception", SubprogramCount);
|
||||
if (TAI->getExceptionHandlingType() == ExceptionHandling::SjLj) {
|
||||
if (MAI->getExceptionHandlingType() == ExceptionHandling::SjLj) {
|
||||
std::string SjLjName = "_lsda_";
|
||||
SjLjName += MF->getFunction()->getName().str();
|
||||
EmitLabel(SjLjName.c_str(), 0);
|
||||
@ -657,7 +657,7 @@ void DwarfException::EmitExceptionTable() {
|
||||
#endif
|
||||
|
||||
// SjLj Exception handilng
|
||||
if (TAI->getExceptionHandlingType() == ExceptionHandling::SjLj) {
|
||||
if (MAI->getExceptionHandlingType() == ExceptionHandling::SjLj) {
|
||||
Asm->EmitInt8(dwarf::DW_EH_PE_udata4);
|
||||
Asm->EOL("Call site format (DW_EH_PE_udata4)");
|
||||
Asm->EmitULEB128Bytes(SizeSites);
|
||||
@ -682,7 +682,7 @@ void DwarfException::EmitExceptionTable() {
|
||||
}
|
||||
} else {
|
||||
// DWARF Exception handling
|
||||
assert(TAI->getExceptionHandlingType() == ExceptionHandling::Dwarf);
|
||||
assert(MAI->getExceptionHandlingType() == ExceptionHandling::Dwarf);
|
||||
|
||||
// The call-site table is a list of all call sites that may throw an
|
||||
// exception (including C++ 'throw' statements) in the procedure
|
||||
@ -836,7 +836,7 @@ void DwarfException::EmitExceptionTable() {
|
||||
/// EndModule - Emit all exception information that should come after the
|
||||
/// content.
|
||||
void DwarfException::EndModule() {
|
||||
if (TAI->getExceptionHandlingType() != ExceptionHandling::Dwarf)
|
||||
if (MAI->getExceptionHandlingType() != ExceptionHandling::Dwarf)
|
||||
return;
|
||||
if (TimePassesIsEnabled)
|
||||
ExceptionTimer->startTimer();
|
||||
@ -864,7 +864,7 @@ void DwarfException::BeginFunction(MachineFunction *MF) {
|
||||
this->MF = MF;
|
||||
shouldEmitTable = shouldEmitMoves = false;
|
||||
|
||||
if (MMI && TAI->doesSupportExceptionHandling()) {
|
||||
if (MMI && MAI->doesSupportExceptionHandling()) {
|
||||
// Map all labels and get rid of any dead landing pads.
|
||||
MMI->TidyLandingPads();
|
||||
|
||||
|
@ -28,28 +28,28 @@ using namespace llvm;
|
||||
|
||||
Dwarf::Dwarf(raw_ostream &OS, AsmPrinter *A, const MCAsmInfo *T,
|
||||
const char *flavor)
|
||||
: O(OS), Asm(A), TAI(T), TD(Asm->TM.getTargetData()),
|
||||
: O(OS), Asm(A), MAI(T), TD(Asm->TM.getTargetData()),
|
||||
RI(Asm->TM.getRegisterInfo()), M(NULL), MF(NULL), MMI(NULL),
|
||||
SubprogramCount(0), Flavor(flavor), SetCounter(1) {}
|
||||
|
||||
void Dwarf::PrintRelDirective(bool Force32Bit, bool isInSection) const {
|
||||
if (isInSection && TAI->getDwarfSectionOffsetDirective())
|
||||
O << TAI->getDwarfSectionOffsetDirective();
|
||||
if (isInSection && MAI->getDwarfSectionOffsetDirective())
|
||||
O << MAI->getDwarfSectionOffsetDirective();
|
||||
else if (Force32Bit || TD->getPointerSize() == sizeof(int32_t))
|
||||
O << TAI->getData32bitsDirective();
|
||||
O << MAI->getData32bitsDirective();
|
||||
else
|
||||
O << TAI->getData64bitsDirective();
|
||||
O << MAI->getData64bitsDirective();
|
||||
}
|
||||
|
||||
/// PrintLabelName - Print label name in form used by Dwarf writer.
|
||||
///
|
||||
void Dwarf::PrintLabelName(const char *Tag, unsigned Number) const {
|
||||
O << TAI->getPrivateGlobalPrefix() << Tag;
|
||||
O << MAI->getPrivateGlobalPrefix() << Tag;
|
||||
if (Number) O << Number;
|
||||
}
|
||||
void Dwarf::PrintLabelName(const char *Tag, unsigned Number,
|
||||
const char *Suffix) const {
|
||||
O << TAI->getPrivateGlobalPrefix() << Tag;
|
||||
O << MAI->getPrivateGlobalPrefix() << Tag;
|
||||
if (Number) O << Number;
|
||||
O << Suffix;
|
||||
}
|
||||
@ -67,13 +67,13 @@ void Dwarf::EmitReference(const char *Tag, unsigned Number,
|
||||
bool IsPCRelative, bool Force32Bit) const {
|
||||
PrintRelDirective(Force32Bit);
|
||||
PrintLabelName(Tag, Number);
|
||||
if (IsPCRelative) O << "-" << TAI->getPCSymbol();
|
||||
if (IsPCRelative) O << "-" << MAI->getPCSymbol();
|
||||
}
|
||||
void Dwarf::EmitReference(const std::string &Name, bool IsPCRelative,
|
||||
bool Force32Bit) const {
|
||||
PrintRelDirective(Force32Bit);
|
||||
O << Name;
|
||||
if (IsPCRelative) O << "-" << TAI->getPCSymbol();
|
||||
if (IsPCRelative) O << "-" << MAI->getPCSymbol();
|
||||
}
|
||||
|
||||
/// EmitDifference - Emit the difference between two labels. Some assemblers do
|
||||
@ -82,7 +82,7 @@ void Dwarf::EmitReference(const std::string &Name, bool IsPCRelative,
|
||||
void Dwarf::EmitDifference(const char *TagHi, unsigned NumberHi,
|
||||
const char *TagLo, unsigned NumberLo,
|
||||
bool IsSmall) {
|
||||
if (TAI->needsSet()) {
|
||||
if (MAI->needsSet()) {
|
||||
O << "\t.set\t";
|
||||
PrintLabelName("set", SetCounter, Flavor);
|
||||
O << ",";
|
||||
@ -108,11 +108,11 @@ void Dwarf::EmitSectionOffset(const char* Label, const char* Section,
|
||||
bool useSet) {
|
||||
bool printAbsolute = false;
|
||||
if (isEH)
|
||||
printAbsolute = TAI->isAbsoluteEHSectionOffsets();
|
||||
printAbsolute = MAI->isAbsoluteEHSectionOffsets();
|
||||
else
|
||||
printAbsolute = TAI->isAbsoluteDebugSectionOffsets();
|
||||
printAbsolute = MAI->isAbsoluteDebugSectionOffsets();
|
||||
|
||||
if (TAI->needsSet() && useSet) {
|
||||
if (MAI->needsSet() && useSet) {
|
||||
O << "\t.set\t";
|
||||
PrintLabelName("set", SetCounter, Flavor);
|
||||
O << ",";
|
||||
|
@ -43,9 +43,9 @@ namespace llvm {
|
||||
///
|
||||
AsmPrinter *Asm;
|
||||
|
||||
/// TAI - Target asm information.
|
||||
/// MAI - Target asm information.
|
||||
///
|
||||
const MCAsmInfo *TAI;
|
||||
const MCAsmInfo *MAI;
|
||||
|
||||
/// TD - Target data.
|
||||
///
|
||||
@ -88,7 +88,7 @@ namespace llvm {
|
||||
//
|
||||
const AsmPrinter *getAsm() const { return Asm; }
|
||||
MachineModuleInfo *getMMI() const { return MMI; }
|
||||
const MCAsmInfo *getMCAsmInfo() const { return TAI; }
|
||||
const MCAsmInfo *getMCAsmInfo() const { return MAI; }
|
||||
const TargetData *getTargetData() const { return TD; }
|
||||
|
||||
void PrintRelDirective(bool Force32Bit = false,
|
||||
|
@ -30,10 +30,10 @@ namespace {
|
||||
class VISIBILITY_HIDDEN OcamlGCMetadataPrinter : public GCMetadataPrinter {
|
||||
public:
|
||||
void beginAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI);
|
||||
const MCAsmInfo &MAI);
|
||||
|
||||
void finishAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI);
|
||||
const MCAsmInfo &MAI);
|
||||
};
|
||||
|
||||
}
|
||||
@ -44,11 +44,11 @@ Y("ocaml", "ocaml 3.10-compatible collector");
|
||||
void llvm::linkOcamlGCPrinter() { }
|
||||
|
||||
static void EmitCamlGlobal(const Module &M, raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI, const char *Id) {
|
||||
const MCAsmInfo &MAI, const char *Id) {
|
||||
const std::string &MId = M.getModuleIdentifier();
|
||||
|
||||
std::string Mangled;
|
||||
Mangled += TAI.getGlobalPrefix();
|
||||
Mangled += MAI.getGlobalPrefix();
|
||||
Mangled += "caml";
|
||||
size_t Letter = Mangled.size();
|
||||
Mangled.append(MId.begin(), std::find(MId.begin(), MId.end(), '.'));
|
||||
@ -58,18 +58,18 @@ static void EmitCamlGlobal(const Module &M, raw_ostream &OS, AsmPrinter &AP,
|
||||
// Capitalize the first letter of the module name.
|
||||
Mangled[Letter] = toupper(Mangled[Letter]);
|
||||
|
||||
if (const char *GlobalDirective = TAI.getGlobalDirective())
|
||||
if (const char *GlobalDirective = MAI.getGlobalDirective())
|
||||
OS << GlobalDirective << Mangled << "\n";
|
||||
OS << Mangled << ":\n";
|
||||
}
|
||||
|
||||
void OcamlGCMetadataPrinter::beginAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI) {
|
||||
const MCAsmInfo &MAI) {
|
||||
AP.OutStreamer.SwitchSection(AP.getObjFileLowering().getTextSection());
|
||||
EmitCamlGlobal(getModule(), OS, AP, TAI, "code_begin");
|
||||
EmitCamlGlobal(getModule(), OS, AP, MAI, "code_begin");
|
||||
|
||||
AP.OutStreamer.SwitchSection(AP.getObjFileLowering().getDataSection());
|
||||
EmitCamlGlobal(getModule(), OS, AP, TAI, "data_begin");
|
||||
EmitCamlGlobal(getModule(), OS, AP, MAI, "data_begin");
|
||||
}
|
||||
|
||||
/// emitAssembly - Print the frametable. The ocaml frametable format is thus:
|
||||
@ -89,28 +89,28 @@ void OcamlGCMetadataPrinter::beginAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
/// either condition is detected in a function which uses the GC.
|
||||
///
|
||||
void OcamlGCMetadataPrinter::finishAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI) {
|
||||
const MCAsmInfo &MAI) {
|
||||
const char *AddressDirective;
|
||||
int AddressAlignLog;
|
||||
if (AP.TM.getTargetData()->getPointerSize() == sizeof(int32_t)) {
|
||||
AddressDirective = TAI.getData32bitsDirective();
|
||||
AddressDirective = MAI.getData32bitsDirective();
|
||||
AddressAlignLog = 2;
|
||||
} else {
|
||||
AddressDirective = TAI.getData64bitsDirective();
|
||||
AddressDirective = MAI.getData64bitsDirective();
|
||||
AddressAlignLog = 3;
|
||||
}
|
||||
|
||||
AP.OutStreamer.SwitchSection(AP.getObjFileLowering().getTextSection());
|
||||
EmitCamlGlobal(getModule(), OS, AP, TAI, "code_end");
|
||||
EmitCamlGlobal(getModule(), OS, AP, MAI, "code_end");
|
||||
|
||||
AP.OutStreamer.SwitchSection(AP.getObjFileLowering().getDataSection());
|
||||
EmitCamlGlobal(getModule(), OS, AP, TAI, "data_end");
|
||||
EmitCamlGlobal(getModule(), OS, AP, MAI, "data_end");
|
||||
|
||||
OS << AddressDirective << 0; // FIXME: Why does ocaml emit this??
|
||||
AP.EOL();
|
||||
|
||||
AP.OutStreamer.SwitchSection(AP.getObjFileLowering().getDataSection());
|
||||
EmitCamlGlobal(getModule(), OS, AP, TAI, "frametable");
|
||||
EmitCamlGlobal(getModule(), OS, AP, MAI, "frametable");
|
||||
|
||||
for (iterator I = begin(), IE = end(); I != IE; ++I) {
|
||||
GCFunctionInfo &FI = **I;
|
||||
@ -126,7 +126,7 @@ void OcamlGCMetadataPrinter::finishAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
llvm_report_error(Msg.str()); // Very rude!
|
||||
}
|
||||
|
||||
OS << "\t" << TAI.getCommentString() << " live roots for "
|
||||
OS << "\t" << MAI.getCommentString() << " live roots for "
|
||||
<< FI.getFunction().getName() << "\n";
|
||||
|
||||
for (GCFunctionInfo::iterator J = FI.begin(), JE = FI.end(); J != JE; ++J) {
|
||||
@ -141,7 +141,7 @@ void OcamlGCMetadataPrinter::finishAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
}
|
||||
|
||||
OS << AddressDirective
|
||||
<< TAI.getPrivateGlobalPrefix() << "label" << J->Num;
|
||||
<< MAI.getPrivateGlobalPrefix() << "label" << J->Num;
|
||||
AP.EOL("call return address");
|
||||
|
||||
AP.EmitInt16(FrameSize);
|
||||
|
@ -80,7 +80,7 @@ ELFWriter::ELFWriter(raw_ostream &o, TargetMachine &tm)
|
||||
isLittleEndian(TM.getTargetData()->isLittleEndian()),
|
||||
ElfHdr(isLittleEndian, is64Bit) {
|
||||
|
||||
TAI = TM.getMCAsmInfo();
|
||||
MAI = TM.getMCAsmInfo();
|
||||
TEW = TM.getELFWriterInfo();
|
||||
|
||||
// Create the object code emitter object for this target.
|
||||
@ -687,7 +687,7 @@ bool ELFWriter::doFinalization(Module &M) {
|
||||
SymbolList.push_back(ELFSym::getExtSym(*I));
|
||||
|
||||
// Emit non-executable stack note
|
||||
if (TAI->getNonexecutableStackDirective())
|
||||
if (MAI->getNonexecutableStackDirective())
|
||||
getNonExecStackSection();
|
||||
|
||||
// Emit a symbol for each section created until now, skip null section
|
||||
|
@ -86,9 +86,9 @@ namespace llvm {
|
||||
/// and other object file specific stuff
|
||||
const TargetLoweringObjectFile &TLOF;
|
||||
|
||||
/// TAI - Target Asm Info, provide information about section names for
|
||||
/// MAI - Target Asm Info, provide information about section names for
|
||||
/// globals and other target specific stuff.
|
||||
const MCAsmInfo *TAI;
|
||||
const MCAsmInfo *MAI;
|
||||
|
||||
//===------------------------------------------------------------------===//
|
||||
// Properties inferred automatically from the target machine.
|
||||
@ -118,7 +118,7 @@ namespace llvm {
|
||||
unsigned NumSections; // Always = SectionList.size()
|
||||
|
||||
/// SectionLookup - This is a mapping from section name to section number in
|
||||
/// the SectionList. Used to quickly gather the Section Index from TAI names
|
||||
/// the SectionList. Used to quickly gather the Section Index from MAI names
|
||||
std::map<std::string, ELFSection*> SectionLookup;
|
||||
|
||||
/// PendingGlobals - Globals not processed as symbols yet.
|
||||
|
@ -20,11 +20,11 @@ GCMetadataPrinter::GCMetadataPrinter() { }
|
||||
GCMetadataPrinter::~GCMetadataPrinter() { }
|
||||
|
||||
void GCMetadataPrinter::beginAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI) {
|
||||
const MCAsmInfo &MAI) {
|
||||
// Default is no action.
|
||||
}
|
||||
|
||||
void GCMetadataPrinter::finishAssembly(raw_ostream &OS, AsmPrinter &AP,
|
||||
const MCAsmInfo &TAI) {
|
||||
const MCAsmInfo &MAI) {
|
||||
// Default is no action.
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ struct MachOSym {
|
||||
};
|
||||
|
||||
MachOSym(const GlobalValue *gv, std::string name, uint8_t sect,
|
||||
const MCAsmInfo *TAI);
|
||||
const MCAsmInfo *MAI);
|
||||
|
||||
struct SymCmp {
|
||||
// FIXME: this does not appear to be sorting 'f' after 'F'
|
||||
|
@ -35,7 +35,7 @@ MachOCodeEmitter::MachOCodeEmitter(MachOWriter &mow, MachOSection &mos) :
|
||||
ObjectCodeEmitter(&mos), MOW(mow), TM(MOW.TM) {
|
||||
is64Bit = TM.getTargetData()->getPointerSizeInBits() == 64;
|
||||
isLittleEndian = TM.getTargetData()->isLittleEndian();
|
||||
TAI = TM.getMCAsmInfo();
|
||||
MAI = TM.getMCAsmInfo();
|
||||
}
|
||||
|
||||
/// startFunction - This callback is invoked when a new machine function is
|
||||
@ -61,7 +61,7 @@ void MachOCodeEmitter::startFunction(MachineFunction &MF) {
|
||||
|
||||
// Create symbol for function entry
|
||||
const GlobalValue *FuncV = MF.getFunction();
|
||||
MachOSym FnSym(FuncV, MOW.Mang->getMangledName(FuncV), MOS->Index, TAI);
|
||||
MachOSym FnSym(FuncV, MOW.Mang->getMangledName(FuncV), MOS->Index, MAI);
|
||||
FnSym.n_value = getCurrentPCOffset();
|
||||
|
||||
// add it to the symtab.
|
||||
|
@ -30,7 +30,7 @@ class MachOCodeEmitter : public ObjectCodeEmitter {
|
||||
/// machine directly, indicating what header values and flags to set.
|
||||
bool is64Bit, isLittleEndian;
|
||||
|
||||
const MCAsmInfo *TAI;
|
||||
const MCAsmInfo *MAI;
|
||||
|
||||
/// Relocations - These are the relocations that the function needs, as
|
||||
/// emitted.
|
||||
|
@ -61,7 +61,7 @@ MachOWriter::MachOWriter(raw_ostream &o, TargetMachine &tm)
|
||||
is64Bit = TM.getTargetData()->getPointerSizeInBits() == 64;
|
||||
isLittleEndian = TM.getTargetData()->isLittleEndian();
|
||||
|
||||
TAI = TM.getMCAsmInfo();
|
||||
MAI = TM.getMCAsmInfo();
|
||||
|
||||
// Create the machine code emitter object for this target.
|
||||
MachOCE = new MachOCodeEmitter(*this, *getTextSection(true));
|
||||
@ -221,7 +221,7 @@ void MachOWriter::AddSymbolToSection(MachOSection *Sec, GlobalVariable *GV) {
|
||||
}
|
||||
// Globals without external linkage apparently do not go in the symbol table.
|
||||
if (!GV->hasLocalLinkage()) {
|
||||
MachOSym Sym(GV, Mang->getMangledName(GV), Sec->Index, TAI);
|
||||
MachOSym Sym(GV, Mang->getMangledName(GV), Sec->Index, MAI);
|
||||
Sym.n_value = Sec->size();
|
||||
SymbolTable.push_back(Sym);
|
||||
}
|
||||
@ -256,7 +256,7 @@ void MachOWriter::EmitGlobal(GlobalVariable *GV) {
|
||||
if (NoInit || GV->hasLinkOnceLinkage() || GV->hasWeakLinkage() ||
|
||||
GV->hasCommonLinkage()) {
|
||||
MachOSym ExtOrCommonSym(GV, Mang->getMangledName(GV),
|
||||
MachOSym::NO_SECT, TAI);
|
||||
MachOSym::NO_SECT, MAI);
|
||||
// For undefined (N_UNDF) external (N_EXT) types, n_value is the size in
|
||||
// bytes of the symbol.
|
||||
ExtOrCommonSym.n_value = Size;
|
||||
@ -454,7 +454,7 @@ void MachOWriter::BufferSymbolAndStringTable() {
|
||||
for (std::vector<GlobalValue*>::iterator I = PendingGlobals.begin(),
|
||||
E = PendingGlobals.end(); I != E; ++I) {
|
||||
if (GVOffset[*I] == 0 && GVSection[*I] == 0) {
|
||||
MachOSym UndfSym(*I, Mang->getMangledName(*I), MachOSym::NO_SECT, TAI);
|
||||
MachOSym UndfSym(*I, Mang->getMangledName(*I), MachOSym::NO_SECT, MAI);
|
||||
SymbolTable.push_back(UndfSym);
|
||||
GVOffset[*I] = -1;
|
||||
}
|
||||
@ -743,7 +743,7 @@ void MachOWriter::InitMem(const Constant *C, uintptr_t Offset,
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
MachOSym::MachOSym(const GlobalValue *gv, std::string name, uint8_t sect,
|
||||
const MCAsmInfo *TAI) :
|
||||
const MCAsmInfo *MAI) :
|
||||
GV(gv), n_strx(0), n_type(sect == NO_SECT ? N_UNDF : N_SECT), n_sect(sect),
|
||||
n_desc(0), n_value(0) {
|
||||
|
||||
@ -759,17 +759,17 @@ MachOSym::MachOSym(const GlobalValue *gv, std::string name, uint8_t sect,
|
||||
case GlobalValue::CommonLinkage:
|
||||
assert(!isa<Function>(gv) && "Unexpected linkage type for Function!");
|
||||
case GlobalValue::ExternalLinkage:
|
||||
GVName = TAI->getGlobalPrefix() + name;
|
||||
GVName = MAI->getGlobalPrefix() + name;
|
||||
n_type |= GV->hasHiddenVisibility() ? N_PEXT : N_EXT;
|
||||
break;
|
||||
case GlobalValue::PrivateLinkage:
|
||||
GVName = TAI->getPrivateGlobalPrefix() + name;
|
||||
GVName = MAI->getPrivateGlobalPrefix() + name;
|
||||
break;
|
||||
case GlobalValue::LinkerPrivateLinkage:
|
||||
GVName = TAI->getLinkerPrivateGlobalPrefix() + name;
|
||||
GVName = MAI->getLinkerPrivateGlobalPrefix() + name;
|
||||
break;
|
||||
case GlobalValue::InternalLinkage:
|
||||
GVName = TAI->getGlobalPrefix() + name;
|
||||
GVName = MAI->getGlobalPrefix() + name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ namespace llvm {
|
||||
bool is64Bit, isLittleEndian;
|
||||
|
||||
// Target Asm Info
|
||||
const MCAsmInfo *TAI;
|
||||
const MCAsmInfo *MAI;
|
||||
|
||||
/// Header - An instance of MachOHeader that we will update while we build
|
||||
/// the file, and then emit during finalization.
|
||||
|
@ -66,7 +66,7 @@ MCAsmInfo::MCAsmInfo() {
|
||||
UsedDirective = 0;
|
||||
WeakRefDirective = 0;
|
||||
WeakDefDirective = 0;
|
||||
// FIXME: These are ELFish - move to ELFTAI.
|
||||
// FIXME: These are ELFish - move to ELFMAI.
|
||||
HiddenDirective = "\t.hidden\t";
|
||||
ProtectedDirective = "\t.protected\t";
|
||||
AbsoluteDebugSectionOffsets = false;
|
||||
|
@ -24,12 +24,12 @@ namespace {
|
||||
|
||||
class MCAsmStreamer : public MCStreamer {
|
||||
raw_ostream &OS;
|
||||
const MCAsmInfo &TAI;
|
||||
const MCAsmInfo &MAI;
|
||||
AsmPrinter *Printer;
|
||||
public:
|
||||
MCAsmStreamer(MCContext &Context, raw_ostream &_OS, const MCAsmInfo &tai,
|
||||
AsmPrinter *_AsmPrinter)
|
||||
: MCStreamer(Context), OS(_OS), TAI(tai), Printer(_AsmPrinter) {}
|
||||
: MCStreamer(Context), OS(_OS), MAI(tai), Printer(_AsmPrinter) {}
|
||||
~MCAsmStreamer() {}
|
||||
|
||||
/// @name MCStreamer Interface
|
||||
@ -102,7 +102,7 @@ void MCAsmStreamer::SwitchSection(const MCSection *Section) {
|
||||
assert(Section && "Cannot switch to a null section!");
|
||||
if (Section != CurSection) {
|
||||
CurSection = Section;
|
||||
Section->PrintSwitchToSection(TAI, OS);
|
||||
Section->PrintSwitchToSection(MAI, OS);
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,14 +230,14 @@ void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
|
||||
if (isPowerOf2_32(ByteAlignment)) {
|
||||
switch (ValueSize) {
|
||||
default: llvm_unreachable("Invalid size for machine code value!");
|
||||
case 1: OS << TAI.getAlignDirective(); break;
|
||||
// FIXME: use TAI for this!
|
||||
case 1: OS << MAI.getAlignDirective(); break;
|
||||
// FIXME: use MAI for this!
|
||||
case 2: OS << ".p2alignw "; break;
|
||||
case 4: OS << ".p2alignl "; break;
|
||||
case 8: llvm_unreachable("Unsupported alignment size!");
|
||||
}
|
||||
|
||||
if (TAI.getAlignmentIsInBytes())
|
||||
if (MAI.getAlignmentIsInBytes())
|
||||
OS << ByteAlignment;
|
||||
else
|
||||
OS << Log2_32(ByteAlignment);
|
||||
@ -253,7 +253,7 @@ void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
|
||||
}
|
||||
|
||||
// Non-power of two alignment. This is not widely supported by assemblers.
|
||||
// FIXME: Parameterize this based on TAI.
|
||||
// FIXME: Parameterize this based on MAI.
|
||||
switch (ValueSize) {
|
||||
default: llvm_unreachable("Invalid size for machine code value!");
|
||||
case 1: OS << ".balign"; break;
|
||||
@ -314,6 +314,6 @@ void MCAsmStreamer::Finish() {
|
||||
}
|
||||
|
||||
MCStreamer *llvm::createAsmStreamer(MCContext &Context, raw_ostream &OS,
|
||||
const MCAsmInfo &TAI, AsmPrinter *AP) {
|
||||
return new MCAsmStreamer(Context, OS, TAI, AP);
|
||||
const MCAsmInfo &MAI, AsmPrinter *AP) {
|
||||
return new MCAsmStreamer(Context, OS, MAI, AP);
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) {
|
||||
return new (Ctx) MCSectionCOFF(Name, IsDirective, K);
|
||||
}
|
||||
|
||||
void MCSectionCOFF::PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
void MCSectionCOFF::PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const {
|
||||
|
||||
if (isDirective()) {
|
||||
|
@ -23,13 +23,13 @@ Create(const StringRef &Section, unsigned Type, unsigned Flags,
|
||||
// ShouldOmitSectionDirective - Decides whether a '.section' directive
|
||||
// should be printed before the section name
|
||||
bool MCSectionELF::ShouldOmitSectionDirective(const char *Name,
|
||||
const MCAsmInfo &TAI) const {
|
||||
const MCAsmInfo &MAI) const {
|
||||
|
||||
// FIXME: Does .section .bss/.data/.text work everywhere??
|
||||
if (strcmp(Name, ".text") == 0 ||
|
||||
strcmp(Name, ".data") == 0 ||
|
||||
(strcmp(Name, ".bss") == 0 &&
|
||||
!TAI.usesELFSectionDirectiveForBSS()))
|
||||
!MAI.usesELFSectionDirectiveForBSS()))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@ -44,10 +44,10 @@ bool MCSectionELF::ShouldPrintSectionType(unsigned Ty) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const {
|
||||
|
||||
if (ShouldOmitSectionDirective(SectionName.c_str(), TAI)) {
|
||||
if (ShouldOmitSectionDirective(SectionName.c_str(), MAI)) {
|
||||
OS << '\t' << getSectionName() << '\n';
|
||||
return;
|
||||
}
|
||||
@ -55,7 +55,7 @@ void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
OS << "\t.section\t" << getSectionName();
|
||||
|
||||
// Handle the weird solaris syntax if desired.
|
||||
if (TAI.usesSunStyleELFSectionSwitchSyntax() &&
|
||||
if (MAI.usesSunStyleELFSectionSwitchSyntax() &&
|
||||
!(Flags & MCSectionELF::SHF_MERGE)) {
|
||||
if (Flags & MCSectionELF::SHF_ALLOC)
|
||||
OS << ",#alloc";
|
||||
@ -82,7 +82,7 @@ void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
|
||||
// If there are target-specific flags, print them.
|
||||
if (Flags & ~MCSectionELF::TARGET_INDEP_SHF)
|
||||
PrintTargetSpecificSectionFlags(TAI, OS);
|
||||
PrintTargetSpecificSectionFlags(MAI, OS);
|
||||
|
||||
OS << '"';
|
||||
|
||||
@ -90,7 +90,7 @@ void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
OS << ',';
|
||||
|
||||
// If comment string is '@', e.g. as on ARM - use '%' instead
|
||||
if (TAI.getCommentString()[0] == '@')
|
||||
if (MAI.getCommentString()[0] == '@')
|
||||
OS << '%';
|
||||
else
|
||||
OS << '@';
|
||||
|
@ -72,7 +72,7 @@ Create(const StringRef &Segment, const StringRef &Section,
|
||||
Reserved2, K);
|
||||
}
|
||||
|
||||
void MCSectionMachO::PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
void MCSectionMachO::PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const {
|
||||
OS << "\t.section\t" << getSegmentName() << ',' << getSectionName();
|
||||
|
||||
|
@ -405,7 +405,7 @@ static unsigned getNumJTEntries(const std::vector<MachineJumpTableEntry> &JT,
|
||||
unsigned ARMBaseInstrInfo::GetInstSizeInBytes(const MachineInstr *MI) const {
|
||||
const MachineBasicBlock &MBB = *MI->getParent();
|
||||
const MachineFunction *MF = MBB.getParent();
|
||||
const MCAsmInfo *TAI = MF->getTarget().getMCAsmInfo();
|
||||
const MCAsmInfo *MAI = MF->getTarget().getMCAsmInfo();
|
||||
|
||||
// Basic size info comes from the TSFlags field.
|
||||
const TargetInstrDesc &TID = MI->getDesc();
|
||||
@ -416,7 +416,7 @@ unsigned ARMBaseInstrInfo::GetInstSizeInBytes(const MachineInstr *MI) const {
|
||||
default: {
|
||||
// If this machine instr is an inline asm, measure it.
|
||||
if (MI->getOpcode() == ARM::INLINEASM)
|
||||
return getInlineAsmLength(MI->getOperand(0).getSymbolName(), *TAI);
|
||||
return getInlineAsmLength(MI->getOperand(0).getSymbolName(), *MAI);
|
||||
if (MI->isLabel())
|
||||
return 0;
|
||||
switch (Opc) {
|
||||
|
@ -221,7 +221,7 @@ namespace {
|
||||
|
||||
if (ACPV->hasModifier()) O << "(" << ACPV->getModifier() << ")";
|
||||
if (ACPV->getPCAdjustment() != 0) {
|
||||
O << "-(" << TAI->getPrivateGlobalPrefix() << "PC"
|
||||
O << "-(" << MAI->getPrivateGlobalPrefix() << "PC"
|
||||
<< ACPV->getLabelId()
|
||||
<< "+" << (unsigned)ACPV->getPCAdjustment();
|
||||
if (ACPV->mustAddCurrentAddress())
|
||||
@ -280,7 +280,7 @@ bool ARMAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
O << "\t.globl\t" << CurrentFnName << "\n";
|
||||
O << "\t.weak_definition\t" << CurrentFnName << "\n";
|
||||
} else {
|
||||
O << TAI->getWeakRefDirective() << CurrentFnName << "\n";
|
||||
O << MAI->getWeakRefDirective() << CurrentFnName << "\n";
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -328,7 +328,7 @@ bool ARMAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
}
|
||||
}
|
||||
|
||||
if (TAI->hasDotTypeDotSizeDirective())
|
||||
if (MAI->hasDotTypeDotSizeDirective())
|
||||
O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n";
|
||||
|
||||
// Emit post-function debug information.
|
||||
@ -410,11 +410,11 @@ void ARMAsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
|
||||
break;
|
||||
}
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
break;
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
break;
|
||||
default:
|
||||
@ -423,7 +423,7 @@ void ARMAsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
|
||||
}
|
||||
|
||||
static void printSOImm(formatted_raw_ostream &O, int64_t V, bool VerboseAsm,
|
||||
const MCAsmInfo *TAI) {
|
||||
const MCAsmInfo *MAI) {
|
||||
// Break it up into two parts that make up a shifter immediate.
|
||||
V = ARM_AM::getSOImmVal(V);
|
||||
assert(V != -1 && "Not a valid so_imm value!");
|
||||
@ -437,7 +437,7 @@ static void printSOImm(formatted_raw_ostream &O, int64_t V, bool VerboseAsm,
|
||||
O << "#" << Imm << ", " << Rot;
|
||||
// Pretty printed version.
|
||||
if (VerboseAsm)
|
||||
O << ' ' << TAI->getCommentString()
|
||||
O << ' ' << MAI->getCommentString()
|
||||
<< ' ' << (int)ARM_AM::rotr32(Imm, Rot);
|
||||
} else {
|
||||
O << "#" << Imm;
|
||||
@ -449,7 +449,7 @@ static void printSOImm(formatted_raw_ostream &O, int64_t V, bool VerboseAsm,
|
||||
void ARMAsmPrinter::printSOImmOperand(const MachineInstr *MI, int OpNum) {
|
||||
const MachineOperand &MO = MI->getOperand(OpNum);
|
||||
assert(MO.isImm() && "Not a valid so_imm value!");
|
||||
printSOImm(O, MO.getImm(), VerboseAsm, TAI);
|
||||
printSOImm(O, MO.getImm(), VerboseAsm, MAI);
|
||||
}
|
||||
|
||||
/// printSOImm2PartOperand - SOImm is broken into two pieces using a 'mov'
|
||||
@ -459,7 +459,7 @@ void ARMAsmPrinter::printSOImm2PartOperand(const MachineInstr *MI, int OpNum) {
|
||||
assert(MO.isImm() && "Not a valid so_imm value!");
|
||||
unsigned V1 = ARM_AM::getSOImmTwoPartFirst(MO.getImm());
|
||||
unsigned V2 = ARM_AM::getSOImmTwoPartSecond(MO.getImm());
|
||||
printSOImm(O, V1, VerboseAsm, TAI);
|
||||
printSOImm(O, V1, VerboseAsm, MAI);
|
||||
O << "\n\torr";
|
||||
printPredicateOperand(MI, 2);
|
||||
O << " ";
|
||||
@ -467,7 +467,7 @@ void ARMAsmPrinter::printSOImm2PartOperand(const MachineInstr *MI, int OpNum) {
|
||||
O << ", ";
|
||||
printOperand(MI, 0);
|
||||
O << ", ";
|
||||
printSOImm(O, V2, VerboseAsm, TAI);
|
||||
printSOImm(O, V2, VerboseAsm, MAI);
|
||||
}
|
||||
|
||||
// so_reg is a 4-operand unit corresponding to register forms of the A5.1
|
||||
@ -881,7 +881,7 @@ void ARMAsmPrinter::printSBitModifierOperand(const MachineInstr *MI, int OpNum){
|
||||
|
||||
void ARMAsmPrinter::printPCLabel(const MachineInstr *MI, int OpNum) {
|
||||
int Id = (int)MI->getOperand(OpNum).getImm();
|
||||
O << TAI->getPrivateGlobalPrefix() << "PC" << Id;
|
||||
O << MAI->getPrivateGlobalPrefix() << "PC" << Id;
|
||||
}
|
||||
|
||||
void ARMAsmPrinter::printRegisterList(const MachineInstr *MI, int OpNum) {
|
||||
@ -902,7 +902,7 @@ void ARMAsmPrinter::printCPInstOperand(const MachineInstr *MI, int OpNum,
|
||||
// data itself.
|
||||
if (!strcmp(Modifier, "label")) {
|
||||
unsigned ID = MI->getOperand(OpNum).getImm();
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
<< '_' << ID << ":\n";
|
||||
} else {
|
||||
assert(!strcmp(Modifier, "cpentry") && "Unknown modifier for CPE");
|
||||
@ -924,16 +924,16 @@ void ARMAsmPrinter::printJTBlockOperand(const MachineInstr *MI, int OpNum) {
|
||||
const MachineOperand &MO1 = MI->getOperand(OpNum);
|
||||
const MachineOperand &MO2 = MI->getOperand(OpNum+1); // Unique Id
|
||||
unsigned JTI = MO1.getIndex();
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << JTI << '_' << MO2.getImm() << ":\n";
|
||||
|
||||
const char *JTEntryDirective = TAI->getData32bitsDirective();
|
||||
const char *JTEntryDirective = MAI->getData32bitsDirective();
|
||||
|
||||
const MachineFunction *MF = MI->getParent()->getParent();
|
||||
const MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
|
||||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
const std::vector<MachineBasicBlock*> &JTBBs = JT[JTI].MBBs;
|
||||
bool UseSet= TAI->getSetDirective() && TM.getRelocationModel() == Reloc::PIC_;
|
||||
bool UseSet= MAI->getSetDirective() && TM.getRelocationModel() == Reloc::PIC_;
|
||||
SmallPtrSet<MachineBasicBlock*, 8> JTSets;
|
||||
for (unsigned i = 0, e = JTBBs.size(); i != e; ++i) {
|
||||
MachineBasicBlock *MBB = JTBBs[i];
|
||||
@ -944,12 +944,12 @@ void ARMAsmPrinter::printJTBlockOperand(const MachineInstr *MI, int OpNum) {
|
||||
|
||||
O << JTEntryDirective << ' ';
|
||||
if (UseSet)
|
||||
O << TAI->getPrivateGlobalPrefix() << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << getFunctionNumber()
|
||||
<< '_' << JTI << '_' << MO2.getImm()
|
||||
<< "_set_" << MBB->getNumber();
|
||||
else if (TM.getRelocationModel() == Reloc::PIC_) {
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
O << '-' << TAI->getPrivateGlobalPrefix() << "JTI"
|
||||
O << '-' << MAI->getPrivateGlobalPrefix() << "JTI"
|
||||
<< getFunctionNumber() << '_' << JTI << '_' << MO2.getImm();
|
||||
} else {
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
@ -963,7 +963,7 @@ void ARMAsmPrinter::printJT2BlockOperand(const MachineInstr *MI, int OpNum) {
|
||||
const MachineOperand &MO1 = MI->getOperand(OpNum);
|
||||
const MachineOperand &MO2 = MI->getOperand(OpNum+1); // Unique Id
|
||||
unsigned JTI = MO1.getIndex();
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << JTI << '_' << MO2.getImm() << ":\n";
|
||||
|
||||
const MachineFunction *MF = MI->getParent()->getParent();
|
||||
@ -979,13 +979,13 @@ void ARMAsmPrinter::printJT2BlockOperand(const MachineInstr *MI, int OpNum) {
|
||||
for (unsigned i = 0, e = JTBBs.size(); i != e; ++i) {
|
||||
MachineBasicBlock *MBB = JTBBs[i];
|
||||
if (ByteOffset)
|
||||
O << TAI->getData8bitsDirective();
|
||||
O << MAI->getData8bitsDirective();
|
||||
else if (HalfWordOffset)
|
||||
O << TAI->getData16bitsDirective();
|
||||
O << MAI->getData16bitsDirective();
|
||||
if (ByteOffset || HalfWordOffset) {
|
||||
O << '(';
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
O << "-" << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << "-" << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << JTI << '_' << MO2.getImm() << ")/2";
|
||||
} else {
|
||||
O << "\tb.w ";
|
||||
@ -1172,7 +1172,7 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
// Don't put things that should go in the cstring section into "comm".
|
||||
!TheSection->getKind().isMergeableCString()) {
|
||||
if (GVar->hasExternalLinkage()) {
|
||||
if (const char *Directive = TAI->getZeroFillDirective()) {
|
||||
if (const char *Directive = MAI->getZeroFillDirective()) {
|
||||
O << "\t.globl\t" << name << "\n";
|
||||
O << Directive << "__DATA, __common, " << name << ", "
|
||||
<< Size << ", " << Align << "\n";
|
||||
@ -1185,42 +1185,42 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
|
||||
if (isDarwin) {
|
||||
if (GVar->hasLocalLinkage()) {
|
||||
O << TAI->getLCOMMDirective() << name << "," << Size
|
||||
O << MAI->getLCOMMDirective() << name << "," << Size
|
||||
<< ',' << Align;
|
||||
} else if (GVar->hasCommonLinkage()) {
|
||||
O << TAI->getCOMMDirective() << name << "," << Size
|
||||
O << MAI->getCOMMDirective() << name << "," << Size
|
||||
<< ',' << Align;
|
||||
} else {
|
||||
OutStreamer.SwitchSection(TheSection);
|
||||
O << "\t.globl " << name << '\n'
|
||||
<< TAI->getWeakDefDirective() << name << '\n';
|
||||
<< MAI->getWeakDefDirective() << name << '\n';
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":";
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t\t\t" << TAI->getCommentString() << ' ';
|
||||
O << "\t\t\t\t" << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
EmitGlobalConstant(C);
|
||||
return;
|
||||
}
|
||||
} else if (TAI->getLCOMMDirective() != NULL) {
|
||||
} else if (MAI->getLCOMMDirective() != NULL) {
|
||||
if (GVar->hasLocalLinkage()) {
|
||||
O << TAI->getLCOMMDirective() << name << "," << Size;
|
||||
O << MAI->getLCOMMDirective() << name << "," << Size;
|
||||
} else {
|
||||
O << TAI->getCOMMDirective() << name << "," << Size;
|
||||
if (TAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
O << MAI->getCOMMDirective() << name << "," << Size;
|
||||
if (MAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (MAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
}
|
||||
} else {
|
||||
if (GVar->hasLocalLinkage())
|
||||
O << "\t.local\t" << name << "\n";
|
||||
O << TAI->getCOMMDirective() << name << "," << Size;
|
||||
if (TAI->getCOMMDirectiveTakesAlignment())
|
||||
O << "," << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
O << MAI->getCOMMDirective() << name << "," << Size;
|
||||
if (MAI->getCOMMDirectiveTakesAlignment())
|
||||
O << "," << (MAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
}
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t" << TAI->getCommentString() << " ";
|
||||
O << "\t\t" << MAI->getCommentString() << " ";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << "\n";
|
||||
@ -1258,11 +1258,11 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":";
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t\t\t" << TAI->getCommentString() << " ";
|
||||
O << "\t\t\t\t" << MAI->getCommentString() << " ";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << "\n";
|
||||
if (TAI->hasDotTypeDotSizeDirective())
|
||||
if (MAI->hasDotTypeDotSizeDirective())
|
||||
O << "\t.size " << name << ", " << Size << "\n";
|
||||
|
||||
EmitGlobalConstant(C);
|
||||
|
@ -99,7 +99,7 @@ void AlphaAsmPrinter::printOp(const MachineOperand &MO, bool IsCallOp) {
|
||||
return;
|
||||
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
|
||||
<< MO.getIndex();
|
||||
return;
|
||||
|
||||
@ -112,7 +112,7 @@ void AlphaAsmPrinter::printOp(const MachineOperand &MO, bool IsCallOp) {
|
||||
return;
|
||||
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
return;
|
||||
|
||||
@ -155,7 +155,7 @@ bool AlphaAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
case Function::WeakODRLinkage:
|
||||
case Function::LinkOnceAnyLinkage:
|
||||
case Function::LinkOnceODRLinkage:
|
||||
O << TAI->getWeakRefDirective() << CurrentFnName << "\n";
|
||||
O << MAI->getWeakRefDirective() << CurrentFnName << "\n";
|
||||
break;
|
||||
}
|
||||
|
||||
@ -224,11 +224,11 @@ void AlphaAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
case GlobalValue::WeakAnyLinkage:
|
||||
case GlobalValue::WeakODRLinkage:
|
||||
case GlobalValue::CommonLinkage:
|
||||
O << TAI->getWeakRefDirective() << name << '\n';
|
||||
O << MAI->getWeakRefDirective() << name << '\n';
|
||||
break;
|
||||
case GlobalValue::AppendingLinkage:
|
||||
case GlobalValue::ExternalLinkage:
|
||||
O << TAI->getGlobalDirective() << name << "\n";
|
||||
O << MAI->getGlobalDirective() << name << "\n";
|
||||
break;
|
||||
case GlobalValue::InternalLinkage:
|
||||
case GlobalValue::PrivateLinkage:
|
||||
@ -239,7 +239,7 @@ void AlphaAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
}
|
||||
|
||||
// 3: Type, Size, Align
|
||||
if (TAI->hasDotTypeDotSizeDirective()) {
|
||||
if (MAI->hasDotTypeDotSizeDirective()) {
|
||||
O << "\t.type\t" << name << ", @object\n";
|
||||
O << "\t.size\t" << name << ", " << Size << "\n";
|
||||
}
|
||||
|
@ -40,8 +40,8 @@ namespace {
|
||||
class VISIBILITY_HIDDEN BlackfinAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
BlackfinAsmPrinter(formatted_raw_ostream &O, TargetMachine &TM,
|
||||
const MCAsmInfo *TAI, bool V)
|
||||
: AsmPrinter(O, TM, TAI, V) {}
|
||||
const MCAsmInfo *MAI, bool V)
|
||||
: AsmPrinter(O, TM, MAI, V) {}
|
||||
|
||||
virtual const char *getPassName() const {
|
||||
return "Blackfin Assembly Printer";
|
||||
@ -75,14 +75,14 @@ void BlackfinAsmPrinter::emitLinkage(const std::string &name,
|
||||
case GlobalValue::LinkerPrivateLinkage:
|
||||
break;
|
||||
case GlobalValue::ExternalLinkage:
|
||||
O << TAI->getGlobalDirective() << name << "\n";
|
||||
O << MAI->getGlobalDirective() << name << "\n";
|
||||
break;
|
||||
case GlobalValue::LinkOnceAnyLinkage:
|
||||
case GlobalValue::LinkOnceODRLinkage:
|
||||
case GlobalValue::WeakAnyLinkage:
|
||||
case GlobalValue::WeakODRLinkage:
|
||||
O << TAI->getGlobalDirective() << name << "\n";
|
||||
O << TAI->getWeakDefDirective() << name << "\n";
|
||||
O << MAI->getGlobalDirective() << name << "\n";
|
||||
O << MAI->getWeakDefDirective() << name << "\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -180,11 +180,11 @@ void BlackfinAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
||||
O << Mang->makeNameProper(MO.getSymbolName());
|
||||
break;
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
|
||||
<< MO.getIndex();
|
||||
break;
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
break;
|
||||
default:
|
||||
|
@ -325,22 +325,22 @@ void SPUAsmPrinter::printOp(const MachineOperand &MO) {
|
||||
printBasicBlockLabel(MO.getMBB());
|
||||
return;
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
return;
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
return;
|
||||
case MachineOperand::MO_ExternalSymbol:
|
||||
// Computing the address of an external symbol, not calling it.
|
||||
if (TM.getRelocationModel() != Reloc::Static) {
|
||||
std::string Name(TAI->getGlobalPrefix()); Name += MO.getSymbolName();
|
||||
std::string Name(MAI->getGlobalPrefix()); Name += MO.getSymbolName();
|
||||
GVStubs.insert(Name);
|
||||
O << "L" << Name << "$non_lazy_ptr";
|
||||
return;
|
||||
}
|
||||
O << TAI->getGlobalPrefix() << MO.getSymbolName();
|
||||
O << MAI->getGlobalPrefix() << MO.getSymbolName();
|
||||
return;
|
||||
case MachineOperand::MO_GlobalAddress: {
|
||||
// Computing the address of a global symbol, not calling it.
|
||||
@ -528,11 +528,11 @@ void LinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
O << name << ":\n";
|
||||
O << "\t.zero " << Size << '\n';
|
||||
} else if (GVar->hasLocalLinkage()) {
|
||||
O << TAI->getLCOMMDirective() << name << ',' << Size;
|
||||
O << MAI->getLCOMMDirective() << name << ',' << Size;
|
||||
} else {
|
||||
O << ".comm " << name << ',' << Size;
|
||||
}
|
||||
O << "\t\t" << TAI->getCommentString() << " '";
|
||||
O << "\t\t" << MAI->getCommentString() << " '";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
O << "'\n";
|
||||
return;
|
||||
@ -566,7 +566,7 @@ void LinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
}
|
||||
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":\t\t\t\t" << TAI->getCommentString() << " '";
|
||||
O << name << ":\t\t\t\t" << MAI->getCommentString() << " '";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
O << "'\n";
|
||||
|
||||
|
@ -44,8 +44,8 @@ namespace {
|
||||
class VISIBILITY_HIDDEN MSP430AsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
MSP430AsmPrinter(formatted_raw_ostream &O, TargetMachine &TM,
|
||||
const MCAsmInfo *TAI, bool V)
|
||||
: AsmPrinter(O, TM, TAI, V) {}
|
||||
const MCAsmInfo *MAI, bool V)
|
||||
: AsmPrinter(O, TM, MAI, V) {}
|
||||
|
||||
virtual const char *getPassName() const {
|
||||
return "MSP430 Assembly Printer";
|
||||
@ -132,7 +132,7 @@ bool MSP430AsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
printMachineInstruction(II);
|
||||
}
|
||||
|
||||
if (TAI->hasDotTypeDotSizeDirective())
|
||||
if (MAI->hasDotTypeDotSizeDirective())
|
||||
O << "\t.size\t" << CurrentFnName << ", .-" << CurrentFnName << '\n';
|
||||
|
||||
// We didn't modify anything
|
||||
@ -180,7 +180,7 @@ void MSP430AsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
|
||||
}
|
||||
case MachineOperand::MO_ExternalSymbol: {
|
||||
bool isCallOp = Modifier && !strcmp(Modifier, "call");
|
||||
std::string Name(TAI->getGlobalPrefix());
|
||||
std::string Name(MAI->getGlobalPrefix());
|
||||
Name += MO.getSymbolName();
|
||||
if (isCallOp)
|
||||
O << '#';
|
||||
|
@ -221,7 +221,7 @@ void MipsAsmPrinter::emitFunctionStart(MachineFunction &MF) {
|
||||
|
||||
printVisibility(CurrentFnName, F->getVisibility());
|
||||
|
||||
if ((TAI->hasDotTypeDotSizeDirective()) && Subtarget->isLinux())
|
||||
if ((MAI->hasDotTypeDotSizeDirective()) && Subtarget->isLinux())
|
||||
O << "\t.type\t" << CurrentFnName << ", @function\n";
|
||||
|
||||
O << CurrentFnName << ":\n";
|
||||
@ -241,7 +241,7 @@ void MipsAsmPrinter::emitFunctionEnd(MachineFunction &MF) {
|
||||
O << "\t.set\treorder\n";
|
||||
|
||||
O << "\t.end\t" << CurrentFnName << '\n';
|
||||
if (TAI->hasDotTypeDotSizeDirective() && !Subtarget->isLinux())
|
||||
if (MAI->hasDotTypeDotSizeDirective() && !Subtarget->isLinux())
|
||||
O << "\t.size\t" << CurrentFnName << ", .-" << CurrentFnName << '\n';
|
||||
}
|
||||
|
||||
@ -370,12 +370,12 @@ void MipsAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
||||
break;
|
||||
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
break;
|
||||
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI"
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI"
|
||||
<< getFunctionNumber() << "_" << MO.getIndex();
|
||||
break;
|
||||
|
||||
@ -480,8 +480,8 @@ void MipsAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
if (GVar->hasLocalLinkage())
|
||||
O << "\t.local\t" << name << '\n';
|
||||
|
||||
O << TAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (TAI->getCOMMDirectiveTakesAlignment())
|
||||
O << MAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (MAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (1 << Align);
|
||||
|
||||
O << '\n';
|
||||
@ -503,7 +503,7 @@ void MipsAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
// or something. For now, just emit them as external.
|
||||
case GlobalValue::ExternalLinkage:
|
||||
// If external or appending, declare as a global symbol
|
||||
O << TAI->getGlobalDirective() << name << '\n';
|
||||
O << MAI->getGlobalDirective() << name << '\n';
|
||||
// Fall Through
|
||||
case GlobalValue::PrivateLinkage:
|
||||
case GlobalValue::LinkerPrivateLinkage:
|
||||
@ -523,7 +523,7 @@ void MipsAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
|
||||
EmitAlignment(Align, GVar);
|
||||
|
||||
if (TAI->hasDotTypeDotSizeDirective() && printSizeAndType) {
|
||||
if (MAI->hasDotTypeDotSizeDirective() && printSizeAndType) {
|
||||
O << "\t.type " << name << ",@object\n";
|
||||
O << "\t.size " << name << ',' << Size << '\n';
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ PIC16AsmPrinter::PIC16AsmPrinter(formatted_raw_ostream &O, TargetMachine &TM,
|
||||
const MCAsmInfo *T, bool V)
|
||||
: AsmPrinter(O, TM, T, V), DbgInfo(O, T) {
|
||||
PTLI = static_cast<PIC16TargetLowering*>(TM.getTargetLowering());
|
||||
PTAI = static_cast<const PIC16MCAsmInfo*>(T);
|
||||
PMAI = static_cast<const PIC16MCAsmInfo*>(T);
|
||||
PTOF = (PIC16TargetObjectFile*)&PTLI->getObjFileLowering();
|
||||
}
|
||||
|
||||
@ -199,18 +199,18 @@ void PIC16AsmPrinter::printLibcallDecls() {
|
||||
// If no libcalls used, return.
|
||||
if (LibcallDecls.empty()) return;
|
||||
|
||||
O << TAI->getCommentString() << "External decls for libcalls - BEGIN." <<"\n";
|
||||
O << MAI->getCommentString() << "External decls for libcalls - BEGIN." <<"\n";
|
||||
// Remove duplicate entries.
|
||||
LibcallDecls.sort(is_before);
|
||||
LibcallDecls.unique(is_duplicate);
|
||||
|
||||
for (std::list<const char*>::const_iterator I = LibcallDecls.begin();
|
||||
I != LibcallDecls.end(); I++) {
|
||||
O << TAI->getExternDirective() << *I << "\n";
|
||||
O << TAI->getExternDirective() << PAN::getArgsLabel(*I) << "\n";
|
||||
O << TAI->getExternDirective() << PAN::getRetvalLabel(*I) << "\n";
|
||||
O << MAI->getExternDirective() << *I << "\n";
|
||||
O << MAI->getExternDirective() << PAN::getArgsLabel(*I) << "\n";
|
||||
O << MAI->getExternDirective() << PAN::getRetvalLabel(*I) << "\n";
|
||||
}
|
||||
O << TAI->getCommentString() << "External decls for libcalls - END." <<"\n";
|
||||
O << MAI->getCommentString() << "External decls for libcalls - END." <<"\n";
|
||||
}
|
||||
|
||||
/// doInitialization - Perfrom Module level initializations here.
|
||||
@ -250,7 +250,7 @@ bool PIC16AsmPrinter::doInitialization(Module &M) {
|
||||
///
|
||||
void PIC16AsmPrinter::EmitFunctionDecls(Module &M) {
|
||||
// Emit declarations for external functions.
|
||||
O <<"\n"<<TAI->getCommentString() << "Function Declarations - BEGIN." <<"\n";
|
||||
O <<"\n"<<MAI->getCommentString() << "Function Declarations - BEGIN." <<"\n";
|
||||
for (Module::iterator I = M.begin(), E = M.end(); I != E; I++) {
|
||||
if (I->isIntrinsic())
|
||||
continue;
|
||||
@ -272,15 +272,15 @@ void PIC16AsmPrinter::EmitFunctionDecls(Module &M) {
|
||||
// tracking both kind of references in printInstrunction.
|
||||
if (I->isDeclaration() && PAN::isMemIntrinsic(Name)) continue;
|
||||
|
||||
const char *directive = I->isDeclaration() ? TAI->getExternDirective() :
|
||||
TAI->getGlobalDirective();
|
||||
const char *directive = I->isDeclaration() ? MAI->getExternDirective() :
|
||||
MAI->getGlobalDirective();
|
||||
|
||||
O << directive << Name << "\n";
|
||||
O << directive << PAN::getRetvalLabel(Name) << "\n";
|
||||
O << directive << PAN::getArgsLabel(Name) << "\n";
|
||||
}
|
||||
|
||||
O << TAI->getCommentString() << "Function Declarations - END." <<"\n";
|
||||
O << MAI->getCommentString() << "Function Declarations - END." <<"\n";
|
||||
}
|
||||
|
||||
// Emit variables imported from other Modules.
|
||||
@ -288,11 +288,11 @@ void PIC16AsmPrinter::EmitUndefinedVars(Module &M) {
|
||||
std::vector<const GlobalVariable*> Items = PTOF->ExternalVarDecls->Items;
|
||||
if (!Items.size()) return;
|
||||
|
||||
O << "\n" << TAI->getCommentString() << "Imported Variables - BEGIN" << "\n";
|
||||
O << "\n" << MAI->getCommentString() << "Imported Variables - BEGIN" << "\n";
|
||||
for (unsigned j = 0; j < Items.size(); j++) {
|
||||
O << TAI->getExternDirective() << Mang->getMangledName(Items[j]) << "\n";
|
||||
O << MAI->getExternDirective() << Mang->getMangledName(Items[j]) << "\n";
|
||||
}
|
||||
O << TAI->getCommentString() << "Imported Variables - END" << "\n";
|
||||
O << MAI->getCommentString() << "Imported Variables - END" << "\n";
|
||||
}
|
||||
|
||||
// Emit variables defined in this module and are available to other modules.
|
||||
@ -300,11 +300,11 @@ void PIC16AsmPrinter::EmitDefinedVars(Module &M) {
|
||||
std::vector<const GlobalVariable*> Items = PTOF->ExternalVarDefs->Items;
|
||||
if (!Items.size()) return;
|
||||
|
||||
O << "\n" << TAI->getCommentString() << "Exported Variables - BEGIN" << "\n";
|
||||
O << "\n" << MAI->getCommentString() << "Exported Variables - BEGIN" << "\n";
|
||||
for (unsigned j = 0; j < Items.size(); j++) {
|
||||
O << TAI->getGlobalDirective() << Mang->getMangledName(Items[j]) << "\n";
|
||||
O << MAI->getGlobalDirective() << Mang->getMangledName(Items[j]) << "\n";
|
||||
}
|
||||
O << TAI->getCommentString() << "Exported Variables - END" << "\n";
|
||||
O << MAI->getCommentString() << "Exported Variables - END" << "\n";
|
||||
}
|
||||
|
||||
// Emit initialized data placed in ROM.
|
||||
|
@ -70,7 +70,7 @@ namespace llvm {
|
||||
PIC16TargetObjectFile *PTOF;
|
||||
PIC16TargetLowering *PTLI;
|
||||
PIC16DbgInfo DbgInfo;
|
||||
const PIC16MCAsmInfo *PTAI;
|
||||
const PIC16MCAsmInfo *PMAI;
|
||||
std::list<const char *> LibcallDecls; // List of extern decls.
|
||||
};
|
||||
} // end of namespace
|
||||
|
@ -32,7 +32,7 @@ namespace llvm {
|
||||
static MCSectionPIC16 *Create(const StringRef &Name,
|
||||
SectionKind K, MCContext &Ctx);
|
||||
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const;
|
||||
};
|
||||
|
||||
|
@ -450,7 +450,7 @@ void PIC16DbgInfo::EmitVarDebugInfo(Module &M) {
|
||||
bool HasAux = false;
|
||||
int Aux[PIC16Dbg::AuxSize] = { 0 };
|
||||
std::string TagName = "";
|
||||
std::string VarName = TAI->getGlobalPrefix()+DIGV.getGlobal()->getNameStr();
|
||||
std::string VarName = MAI->getGlobalPrefix()+DIGV.getGlobal()->getNameStr();
|
||||
PopulateDebugInfo(Ty, TypeNo, HasAux, Aux, TagName);
|
||||
// Emit debug info only if type information is availaible.
|
||||
if (TypeNo != PIC16Dbg::T_NULL) {
|
||||
|
@ -92,7 +92,7 @@ namespace llvm {
|
||||
|
||||
class PIC16DbgInfo {
|
||||
formatted_raw_ostream &O;
|
||||
const MCAsmInfo *TAI;
|
||||
const MCAsmInfo *MAI;
|
||||
std::string CurFile;
|
||||
unsigned CurLine;
|
||||
|
||||
@ -102,7 +102,7 @@ namespace llvm {
|
||||
|
||||
public:
|
||||
PIC16DbgInfo(formatted_raw_ostream &o, const MCAsmInfo *T)
|
||||
: O(o), TAI(T) {
|
||||
: O(o), MAI(T) {
|
||||
CurFile = "";
|
||||
CurLine = 0;
|
||||
EmitDebugDirectives = false;
|
||||
|
@ -25,7 +25,7 @@ MCSectionPIC16 *MCSectionPIC16::Create(const StringRef &Name,
|
||||
}
|
||||
|
||||
|
||||
void MCSectionPIC16::PrintSwitchToSection(const MCAsmInfo &TAI,
|
||||
void MCSectionPIC16::PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const {
|
||||
OS << getName() << '\n';
|
||||
}
|
||||
|
@ -324,7 +324,7 @@ namespace {
|
||||
// Map symbol -> label of TOC entry.
|
||||
if (TOC.count(Name) == 0) {
|
||||
std::string Label;
|
||||
Label += TAI->getPrivateGlobalPrefix();
|
||||
Label += MAI->getPrivateGlobalPrefix();
|
||||
Label += "C";
|
||||
Label += utostr(LabelID++);
|
||||
|
||||
@ -406,17 +406,17 @@ void PPCAsmPrinter::printOp(const MachineOperand &MO) {
|
||||
printBasicBlockLabel(MO.getMBB());
|
||||
return;
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
// FIXME: PIC relocation model
|
||||
return;
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
return;
|
||||
case MachineOperand::MO_ExternalSymbol: {
|
||||
// Computing the address of an external symbol, not calling it.
|
||||
std::string Name(TAI->getGlobalPrefix());
|
||||
std::string Name(MAI->getGlobalPrefix());
|
||||
Name += MO.getSymbolName();
|
||||
|
||||
if (TM.getRelocationModel() != Reloc::Static) {
|
||||
@ -719,12 +719,12 @@ void PPCLinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
O << name << ":\n";
|
||||
O << "\t.zero " << Size << '\n';
|
||||
} else if (GVar->hasLocalLinkage()) {
|
||||
O << TAI->getLCOMMDirective() << name << ',' << Size;
|
||||
O << MAI->getLCOMMDirective() << name << ',' << Size;
|
||||
} else {
|
||||
O << ".comm " << name << ',' << Size;
|
||||
}
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t" << TAI->getCommentString() << " '";
|
||||
O << "\t\t" << MAI->getCommentString() << " '";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
O << "'";
|
||||
}
|
||||
@ -761,7 +761,7 @@ void PPCLinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":";
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t\t\t" << TAI->getCommentString() << " '";
|
||||
O << "\t\t\t\t" << MAI->getCommentString() << " '";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
O << "'";
|
||||
}
|
||||
@ -958,14 +958,14 @@ void PPCDarwinAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
O << "\t.zerofill __DATA, __common, " << name << ", "
|
||||
<< Size << ", " << Align;
|
||||
} else if (GVar->hasLocalLinkage()) {
|
||||
O << TAI->getLCOMMDirective() << name << ',' << Size << ',' << Align;
|
||||
O << MAI->getLCOMMDirective() << name << ',' << Size << ',' << Align;
|
||||
} else if (!GVar->hasCommonLinkage()) {
|
||||
O << "\t.globl " << name << '\n'
|
||||
<< TAI->getWeakDefDirective() << name << '\n';
|
||||
<< MAI->getWeakDefDirective() << name << '\n';
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":";
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t\t\t" << TAI->getCommentString() << " ";
|
||||
O << "\t\t\t\t" << MAI->getCommentString() << " ";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
@ -978,7 +978,7 @@ void PPCDarwinAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
O << ',' << Align;
|
||||
}
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t" << TAI->getCommentString() << " '";
|
||||
O << "\t\t" << MAI->getCommentString() << " '";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
O << "'";
|
||||
}
|
||||
@ -1013,7 +1013,7 @@ void PPCDarwinAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":";
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t\t\t" << TAI->getCommentString() << " '";
|
||||
O << "\t\t\t\t" << MAI->getCommentString() << " '";
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
O << "'";
|
||||
}
|
||||
@ -1097,7 +1097,7 @@ bool PPCDarwinAsmPrinter::doFinalization(Module &M) {
|
||||
|
||||
O << '\n';
|
||||
|
||||
if (TAI->doesSupportExceptionHandling() && MMI) {
|
||||
if (MAI->doesSupportExceptionHandling() && MMI) {
|
||||
// Add the (possibly multiple) personalities to the set of global values.
|
||||
// Only referenced functions get into the Personalities list.
|
||||
const std::vector<Function *> &Personalities = MMI->getPersonalities();
|
||||
|
@ -167,7 +167,7 @@ void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
||||
O << MO.getSymbolName();
|
||||
break;
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
|
||||
<< MO.getIndex();
|
||||
break;
|
||||
default:
|
||||
@ -239,8 +239,8 @@ void SparcAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
if (GVar->hasLocalLinkage())
|
||||
O << "\t.local " << name << '\n';
|
||||
|
||||
O << TAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (TAI->getCOMMDirectiveTakesAlignment())
|
||||
O << MAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (MAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (1 << Align);
|
||||
|
||||
O << '\n';
|
||||
@ -262,7 +262,7 @@ void SparcAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
// their name or something. For now, just emit them as external.
|
||||
case GlobalValue::ExternalLinkage:
|
||||
// If external or appending, declare as a global symbol
|
||||
O << TAI->getGlobalDirective() << name << '\n';
|
||||
O << MAI->getGlobalDirective() << name << '\n';
|
||||
// FALL THROUGH
|
||||
case GlobalValue::PrivateLinkage:
|
||||
case GlobalValue::LinkerPrivateLinkage:
|
||||
@ -280,7 +280,7 @@ void SparcAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
|
||||
EmitAlignment(Align, GVar);
|
||||
|
||||
if (TAI->hasDotTypeDotSizeDirective()) {
|
||||
if (MAI->hasDotTypeDotSizeDirective()) {
|
||||
O << "\t.type " << name << ",#object\n";
|
||||
O << "\t.size " << name << ',' << Size << '\n';
|
||||
}
|
||||
|
@ -44,8 +44,8 @@ namespace {
|
||||
class VISIBILITY_HIDDEN SystemZAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
SystemZAsmPrinter(formatted_raw_ostream &O, TargetMachine &TM,
|
||||
const MCAsmInfo *TAI, bool V)
|
||||
: AsmPrinter(O, TM, TAI, V) {}
|
||||
const MCAsmInfo *MAI, bool V)
|
||||
: AsmPrinter(O, TM, MAI, V) {}
|
||||
|
||||
virtual const char *getPassName() const {
|
||||
return "SystemZ Assembly Printer";
|
||||
@ -140,7 +140,7 @@ bool SystemZAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
printMachineInstruction(II);
|
||||
}
|
||||
|
||||
if (TAI->hasDotTypeDotSizeDirective())
|
||||
if (MAI->hasDotTypeDotSizeDirective())
|
||||
O << "\t.size\t" << CurrentFnName << ", .-" << CurrentFnName << '\n';
|
||||
|
||||
// Print out jump tables referenced by the function.
|
||||
@ -182,7 +182,7 @@ void SystemZAsmPrinter::printPCRelImmOperand(const MachineInstr *MI, int OpNum)
|
||||
return;
|
||||
}
|
||||
case MachineOperand::MO_ExternalSymbol: {
|
||||
std::string Name(TAI->getGlobalPrefix());
|
||||
std::string Name(MAI->getGlobalPrefix());
|
||||
Name += MO.getSymbolName();
|
||||
O << Name;
|
||||
|
||||
@ -224,12 +224,12 @@ void SystemZAsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
|
||||
printBasicBlockLabel(MO.getMBB());
|
||||
return;
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() << '_'
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() << '_'
|
||||
<< MO.getIndex();
|
||||
|
||||
return;
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_'
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_'
|
||||
<< MO.getIndex();
|
||||
|
||||
printOffset(MO.getOffset());
|
||||
@ -242,7 +242,7 @@ void SystemZAsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
|
||||
break;
|
||||
}
|
||||
case MachineOperand::MO_ExternalSymbol: {
|
||||
std::string Name(TAI->getGlobalPrefix());
|
||||
std::string Name(MAI->getGlobalPrefix());
|
||||
Name += MO.getSymbolName();
|
||||
O << Name;
|
||||
break;
|
||||
@ -330,12 +330,12 @@ void SystemZAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
if (GVar->hasLocalLinkage())
|
||||
O << "\t.local\t" << name << '\n';
|
||||
|
||||
O << TAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (TAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
O << MAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (MAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (MAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t" << TAI->getCommentString() << ' ';
|
||||
O << "\t\t" << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
@ -370,11 +370,11 @@ void SystemZAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
EmitAlignment(Align, GVar, 1);
|
||||
O << name << ":";
|
||||
if (VerboseAsm) {
|
||||
O << "\t\t\t\t" << TAI->getCommentString() << ' ';
|
||||
O << "\t\t\t\t" << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
if (TAI->hasDotTypeDotSizeDirective())
|
||||
if (MAI->hasDotTypeDotSizeDirective())
|
||||
O << "\t.size\t" << name << ", " << Size << '\n';
|
||||
|
||||
EmitGlobalConstant(C);
|
||||
|
@ -73,21 +73,21 @@ bool TargetInstrInfo::isUnpredicatedTerminator(const MachineInstr *MI) const {
|
||||
/// Variable-length instructions are not handled here; this function
|
||||
/// may be overloaded in the target code to do that.
|
||||
unsigned TargetInstrInfo::getInlineAsmLength(const char *Str,
|
||||
const MCAsmInfo &TAI) const {
|
||||
const MCAsmInfo &MAI) const {
|
||||
|
||||
|
||||
// Count the number of instructions in the asm.
|
||||
bool atInsnStart = true;
|
||||
unsigned Length = 0;
|
||||
for (; *Str; ++Str) {
|
||||
if (*Str == '\n' || *Str == TAI.getSeparatorChar())
|
||||
if (*Str == '\n' || *Str == MAI.getSeparatorChar())
|
||||
atInsnStart = true;
|
||||
if (atInsnStart && !isspace(*Str)) {
|
||||
Length += TAI.getMaxInstLength();
|
||||
Length += MAI.getMaxInstLength();
|
||||
atInsnStart = false;
|
||||
}
|
||||
if (atInsnStart && strncmp(Str, TAI.getCommentString(),
|
||||
strlen(TAI.getCommentString())) == 0)
|
||||
if (atInsnStart && strncmp(Str, MAI.getCommentString(),
|
||||
strlen(MAI.getCommentString())) == 0)
|
||||
atInsnStart = false;
|
||||
}
|
||||
|
||||
|
@ -193,7 +193,7 @@ void X86ATTAsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
|
||||
case Function::WeakODRLinkage:
|
||||
if (Subtarget->isTargetDarwin()) {
|
||||
O << "\t.globl\t" << CurrentFnName << '\n';
|
||||
O << TAI->getWeakDefDirective() << CurrentFnName << '\n';
|
||||
O << MAI->getWeakDefDirective() << CurrentFnName << '\n';
|
||||
} else if (Subtarget->isTargetCygMing()) {
|
||||
O << "\t.globl\t" << CurrentFnName << "\n"
|
||||
"\t.linkonce discard\n";
|
||||
@ -217,8 +217,8 @@ void X86ATTAsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
|
||||
|
||||
O << CurrentFnName << ':';
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << ' ';
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, F, /*PrintType=*/false, F->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
@ -255,7 +255,7 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
emitFunctionHeader(MF);
|
||||
|
||||
// Emit pre-function debug and/or EH information.
|
||||
if (TAI->doesSupportDebugInformation() || TAI->doesSupportExceptionHandling())
|
||||
if (MAI->doesSupportDebugInformation() || MAI->doesSupportExceptionHandling())
|
||||
DW->BeginFunction(&MF);
|
||||
|
||||
// Print out code for the function.
|
||||
@ -287,11 +287,11 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
O << "\tnop\n";
|
||||
}
|
||||
|
||||
if (TAI->hasDotTypeDotSizeDirective())
|
||||
if (MAI->hasDotTypeDotSizeDirective())
|
||||
O << "\t.size\t" << CurrentFnName << ", .-" << CurrentFnName << '\n';
|
||||
|
||||
// Emit post-function debug information.
|
||||
if (TAI->doesSupportDebugInformation() || TAI->doesSupportExceptionHandling())
|
||||
if (MAI->doesSupportDebugInformation() || MAI->doesSupportExceptionHandling())
|
||||
DW->EndFunction(&MF);
|
||||
|
||||
// Print out jump tables referenced by the function.
|
||||
@ -308,11 +308,11 @@ void X86ATTAsmPrinter::printSymbolOperand(const MachineOperand &MO) {
|
||||
switch (MO.getType()) {
|
||||
default: llvm_unreachable("unknown symbol type!");
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() << '_'
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() << '_'
|
||||
<< MO.getIndex();
|
||||
break;
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_'
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_'
|
||||
<< MO.getIndex();
|
||||
printOffset(MO.getOffset());
|
||||
break;
|
||||
@ -535,18 +535,18 @@ void X86ATTAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op,
|
||||
|
||||
void X86ATTAsmPrinter::printPICJumpTableSetLabel(unsigned uid,
|
||||
const MachineBasicBlock *MBB) const {
|
||||
if (!TAI->getSetDirective())
|
||||
if (!MAI->getSetDirective())
|
||||
return;
|
||||
|
||||
// We don't need .set machinery if we have GOT-style relocations
|
||||
if (Subtarget->isPICStyleGOT())
|
||||
return;
|
||||
|
||||
O << TAI->getSetDirective() << ' ' << TAI->getPrivateGlobalPrefix()
|
||||
O << MAI->getSetDirective() << ' ' << MAI->getPrivateGlobalPrefix()
|
||||
<< getFunctionNumber() << '_' << uid << "_set_" << MBB->getNumber() << ',';
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
if (Subtarget->isPICStyleRIPRel())
|
||||
O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << '-' << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << uid << '\n';
|
||||
else {
|
||||
O << '-';
|
||||
@ -568,12 +568,12 @@ void X86ATTAsmPrinter::printPICJumpTableEntry(const MachineJumpTableInfo *MJTI,
|
||||
const MachineBasicBlock *MBB,
|
||||
unsigned uid) const {
|
||||
const char *JTEntryDirective = MJTI->getEntrySize() == 4 ?
|
||||
TAI->getData32bitsDirective() : TAI->getData64bitsDirective();
|
||||
MAI->getData32bitsDirective() : MAI->getData64bitsDirective();
|
||||
|
||||
O << JTEntryDirective << ' ';
|
||||
|
||||
if (Subtarget->isPICStyleRIPRel() || Subtarget->isPICStyleStubPIC()) {
|
||||
O << TAI->getPrivateGlobalPrefix() << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << getFunctionNumber()
|
||||
<< '_' << uid << "_set_" << MBB->getNumber();
|
||||
} else if (Subtarget->isPICStyleGOT()) {
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
@ -950,7 +950,7 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
// Don't put things that should go in the cstring section into "comm".
|
||||
!TheSection->getKind().isMergeableCString()) {
|
||||
if (GVar->hasExternalLinkage()) {
|
||||
if (const char *Directive = TAI->getZeroFillDirective()) {
|
||||
if (const char *Directive = MAI->getZeroFillDirective()) {
|
||||
O << "\t.globl " << name << '\n';
|
||||
O << Directive << "__DATA, __common, " << name << ", "
|
||||
<< Size << ", " << Align << '\n';
|
||||
@ -962,41 +962,41 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
(GVar->hasLocalLinkage() || GVar->isWeakForLinker())) {
|
||||
if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it.
|
||||
|
||||
if (TAI->getLCOMMDirective() != NULL) {
|
||||
if (MAI->getLCOMMDirective() != NULL) {
|
||||
if (GVar->hasLocalLinkage()) {
|
||||
O << TAI->getLCOMMDirective() << name << ',' << Size;
|
||||
O << MAI->getLCOMMDirective() << name << ',' << Size;
|
||||
if (Subtarget->isTargetDarwin())
|
||||
O << ',' << Align;
|
||||
} else if (Subtarget->isTargetDarwin() && !GVar->hasCommonLinkage()) {
|
||||
O << "\t.globl " << name << '\n'
|
||||
<< TAI->getWeakDefDirective() << name << '\n';
|
||||
<< MAI->getWeakDefDirective() << name << '\n';
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":";
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << ' ';
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
EmitGlobalConstant(C);
|
||||
return;
|
||||
} else {
|
||||
O << TAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (TAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
O << MAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (MAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (MAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
}
|
||||
} else {
|
||||
if (!Subtarget->isTargetCygMing()) {
|
||||
if (GVar->hasLocalLinkage())
|
||||
O << "\t.local\t" << name << '\n';
|
||||
}
|
||||
O << TAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (TAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
O << MAI->getCOMMDirective() << name << ',' << Size;
|
||||
if (MAI->getCOMMDirectiveTakesAlignment())
|
||||
O << ',' << (MAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
|
||||
}
|
||||
if (VerboseAsm) {
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << ' ';
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
@ -1013,7 +1013,7 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
case GlobalValue::LinkerPrivateLinkage:
|
||||
if (Subtarget->isTargetDarwin()) {
|
||||
O << "\t.globl " << name << '\n'
|
||||
<< TAI->getWeakDefDirective() << name << '\n';
|
||||
<< MAI->getWeakDefDirective() << name << '\n';
|
||||
} else if (Subtarget->isTargetCygMing()) {
|
||||
O << "\t.globl\t" << name << "\n"
|
||||
"\t.linkonce same_size\n";
|
||||
@ -1039,15 +1039,15 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
|
||||
EmitAlignment(Align, GVar);
|
||||
O << name << ":";
|
||||
if (VerboseAsm){
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString() << ' ';
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString() << ' ';
|
||||
WriteAsOperand(O, GVar, /*PrintType=*/false, GVar->getParent());
|
||||
}
|
||||
O << '\n';
|
||||
|
||||
EmitGlobalConstant(C);
|
||||
|
||||
if (TAI->hasDotTypeDotSizeDirective())
|
||||
if (MAI->hasDotTypeDotSizeDirective())
|
||||
O << "\t.size\t" << name << ", " << Size << '\n';
|
||||
}
|
||||
|
||||
@ -1066,7 +1066,7 @@ bool X86ATTAsmPrinter::doFinalization(Module &M) {
|
||||
|
||||
// Add the (possibly multiple) personalities to the set of global value
|
||||
// stubs. Only referenced functions get into the Personalities list.
|
||||
if (TAI->doesSupportExceptionHandling() && MMI && !Subtarget->is64Bit()) {
|
||||
if (MAI->doesSupportExceptionHandling() && MMI && !Subtarget->is64Bit()) {
|
||||
const std::vector<Function*> &Personalities = MMI->getPersonalities();
|
||||
for (unsigned i = 0, e = Personalities.size(); i != e; ++i) {
|
||||
if (Personalities[i])
|
||||
@ -1110,7 +1110,7 @@ bool X86ATTAsmPrinter::doFinalization(Module &M) {
|
||||
EmitAlignment(2);
|
||||
for (StringMap<std::string>::iterator I = HiddenGVStubs.begin(),
|
||||
E = HiddenGVStubs.end(); I != E; ++I)
|
||||
O << I->getKeyData() << ":\n" << TAI->getData32bitsDirective()
|
||||
O << I->getKeyData() << ":\n" << MAI->getData32bitsDirective()
|
||||
<< I->second << '\n';
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,7 @@ void X86ATTAsmPrinter::print_pcrel_imm(const MCInst *MI, unsigned OpNo) {
|
||||
else if (Op.isMBBLabel())
|
||||
// FIXME: Keep in sync with printBasicBlockLabel. printBasicBlockLabel
|
||||
// should eventually call into this code, not the other way around.
|
||||
O << TAI->getPrivateGlobalPrefix() << "BB" << Op.getMBBLabelFunction()
|
||||
O << MAI->getPrivateGlobalPrefix() << "BB" << Op.getMBBLabelFunction()
|
||||
<< '_' << Op.getMBBLabelBlock();
|
||||
else
|
||||
llvm_unreachable("Unknown pcrel immediate operand");
|
||||
|
@ -226,14 +226,14 @@ void X86IntelAsmPrinter::printOp(const MachineOperand &MO,
|
||||
case MachineOperand::MO_JumpTableIndex: {
|
||||
bool isMemOp = Modifier && !strcmp(Modifier, "mem");
|
||||
if (!isMemOp) O << "OFFSET ";
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< "_" << MO.getIndex();
|
||||
return;
|
||||
}
|
||||
case MachineOperand::MO_ConstantPoolIndex: {
|
||||
bool isMemOp = Modifier && !strcmp(Modifier, "mem");
|
||||
if (!isMemOp) O << "OFFSET ";
|
||||
O << "[" << TAI->getPrivateGlobalPrefix() << "CPI"
|
||||
O << "[" << MAI->getPrivateGlobalPrefix() << "CPI"
|
||||
<< getFunctionNumber() << "_" << MO.getIndex();
|
||||
printOffset(MO.getOffset());
|
||||
O << "]";
|
||||
@ -258,7 +258,7 @@ void X86IntelAsmPrinter::printOp(const MachineOperand &MO,
|
||||
return;
|
||||
}
|
||||
case MachineOperand::MO_ExternalSymbol: {
|
||||
O << TAI->getGlobalPrefix() << MO.getSymbolName();
|
||||
O << MAI->getGlobalPrefix() << MO.getSymbolName();
|
||||
return;
|
||||
}
|
||||
default:
|
||||
@ -293,7 +293,7 @@ void X86IntelAsmPrinter::print_pcrel_imm(const MachineInstr *MI, unsigned OpNo){
|
||||
}
|
||||
|
||||
case MachineOperand::MO_ExternalSymbol:
|
||||
O << TAI->getGlobalPrefix() << MO.getSymbolName();
|
||||
O << MAI->getGlobalPrefix() << MO.getSymbolName();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -357,10 +357,10 @@ void X86IntelAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op,
|
||||
|
||||
void X86IntelAsmPrinter::printPICJumpTableSetLabel(unsigned uid,
|
||||
const MachineBasicBlock *MBB) const {
|
||||
if (!TAI->getSetDirective())
|
||||
if (!MAI->getSetDirective())
|
||||
return;
|
||||
|
||||
O << TAI->getSetDirective() << ' ' << TAI->getPrivateGlobalPrefix()
|
||||
O << MAI->getSetDirective() << ' ' << MAI->getPrivateGlobalPrefix()
|
||||
<< getFunctionNumber() << '_' << uid << "_set_" << MBB->getNumber() << ',';
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
O << '-' << "\"L" << getFunctionNumber() << "$pb\"'\n";
|
||||
@ -525,8 +525,8 @@ void X86IntelAsmPrinter::PrintGlobalVariable(const GlobalVariable *GV) {
|
||||
|
||||
O << name << ":";
|
||||
if (VerboseAsm)
|
||||
O.PadToColumn(TAI->getCommentColumn());
|
||||
O << TAI->getCommentString()
|
||||
O.PadToColumn(MAI->getCommentColumn());
|
||||
O << MAI->getCommentString()
|
||||
<< " " << GV->getName();
|
||||
O << '\n';
|
||||
|
||||
|
@ -97,7 +97,7 @@ namespace {
|
||||
void XCoreAsmPrinter::
|
||||
emitGlobalDirective(const std::string &name)
|
||||
{
|
||||
O << TAI->getGlobalDirective() << name;
|
||||
O << MAI->getGlobalDirective() << name;
|
||||
O << "\n";
|
||||
}
|
||||
|
||||
@ -117,12 +117,12 @@ emitArrayBound(const std::string &name, const GlobalVariable *GV)
|
||||
if (const ArrayType *ATy = dyn_cast<ArrayType>(
|
||||
cast<PointerType>(GV->getType())->getElementType()))
|
||||
{
|
||||
O << TAI->getGlobalDirective() << name << ".globound" << "\n";
|
||||
O << TAI->getSetDirective() << name << ".globound" << ","
|
||||
O << MAI->getGlobalDirective() << name << ".globound" << "\n";
|
||||
O << MAI->getSetDirective() << name << ".globound" << ","
|
||||
<< ATy->getNumElements() << "\n";
|
||||
if (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage()) {
|
||||
// TODO Use COMDAT groups for LinkOnceLinkage
|
||||
O << TAI->getWeakDefDirective() << name << ".globound" << "\n";
|
||||
O << MAI->getWeakDefDirective() << name << ".globound" << "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -156,7 +156,7 @@ void XCoreAsmPrinter::PrintGlobalVariable(const GlobalVariable *GV) {
|
||||
emitGlobalDirective(name);
|
||||
// TODO Use COMDAT groups for LinkOnceLinkage
|
||||
if (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage()) {
|
||||
O << TAI->getWeakDefDirective() << name << "\n";
|
||||
O << MAI->getWeakDefDirective() << name << "\n";
|
||||
}
|
||||
// FALL THROUGH
|
||||
case GlobalValue::InternalLinkage:
|
||||
@ -179,7 +179,7 @@ void XCoreAsmPrinter::PrintGlobalVariable(const GlobalVariable *GV) {
|
||||
if (GV->isThreadLocal()) {
|
||||
Size *= MaxThreads;
|
||||
}
|
||||
if (TAI->hasDotTypeDotSizeDirective()) {
|
||||
if (MAI->hasDotTypeDotSizeDirective()) {
|
||||
O << "\t.type " << name << ",@object\n";
|
||||
O << "\t.size " << name << "," << Size << "\n";
|
||||
}
|
||||
@ -225,13 +225,13 @@ void XCoreAsmPrinter::emitFunctionStart(MachineFunction &MF) {
|
||||
case Function::WeakAnyLinkage:
|
||||
case Function::WeakODRLinkage:
|
||||
// TODO Use COMDAT groups for LinkOnceLinkage
|
||||
O << TAI->getGlobalDirective() << CurrentFnName << "\n";
|
||||
O << TAI->getWeakDefDirective() << CurrentFnName << "\n";
|
||||
O << MAI->getGlobalDirective() << CurrentFnName << "\n";
|
||||
O << MAI->getWeakDefDirective() << CurrentFnName << "\n";
|
||||
break;
|
||||
}
|
||||
// (1 << 1) byte aligned
|
||||
EmitAlignment(MF.getAlignment(), F, 1);
|
||||
if (TAI->hasDotTypeDotSizeDirective()) {
|
||||
if (MAI->hasDotTypeDotSizeDirective()) {
|
||||
O << "\t.type " << CurrentFnName << ",@function\n";
|
||||
}
|
||||
O << CurrentFnName << ":\n";
|
||||
@ -331,11 +331,11 @@ void XCoreAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
||||
O << MO.getSymbolName();
|
||||
break;
|
||||
case MachineOperand::MO_ConstantPoolIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
break;
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << MO.getIndex();
|
||||
break;
|
||||
default:
|
||||
|
@ -26,7 +26,7 @@ MCSectionXCore::Create(const StringRef &Section, unsigned Type,
|
||||
|
||||
/// PrintTargetSpecificSectionFlags - This handles the XCore-specific cp/dp
|
||||
/// section flags.
|
||||
void MCSectionXCore::PrintTargetSpecificSectionFlags(const MCAsmInfo &TAI,
|
||||
void MCSectionXCore::PrintTargetSpecificSectionFlags(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const {
|
||||
if (getFlags() & MCSectionXCore::SHF_CP_SECTION)
|
||||
OS << 'c';
|
||||
|
@ -44,7 +44,7 @@ public:
|
||||
|
||||
/// PrintTargetSpecificSectionFlags - This handles the XCore-specific cp/dp
|
||||
/// section flags.
|
||||
virtual void PrintTargetSpecificSectionFlags(const MCAsmInfo &TAI,
|
||||
virtual void PrintTargetSpecificSectionFlags(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const;
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user