mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 12:19:53 +00:00
move LCOMMDirective = "\t.lcomm\t" up to DarwinTAI, eliminate
template in PPC backend for TAI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78727 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
766b5efd99
commit
c89ecc5c2f
@ -62,6 +62,8 @@ ARMELFTargetAsmInfo::ARMELFTargetAsmInfo() {
|
||||
PrivateGlobalPrefix = ".L";
|
||||
WeakRefDirective = "\t.weak\t";
|
||||
SetDirective = "\t.set\t";
|
||||
LCOMMDirective = "\t.lcomm\t";
|
||||
|
||||
DwarfRequiresFrameSection = false;
|
||||
|
||||
SupportsDebugInformation = true;
|
||||
|
@ -32,7 +32,6 @@ namespace llvm {
|
||||
BaseTAI::COMMDirectiveTakesAlignment = false;
|
||||
BaseTAI::InlineAsmStart = "@ InlineAsm Start";
|
||||
BaseTAI::InlineAsmEnd = "@ InlineAsm End";
|
||||
BaseTAI::LCOMMDirective = "\t.lcomm\t";
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -35,7 +35,8 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo() {
|
||||
WeakDefDirective = "\t.weak_definition ";
|
||||
WeakRefDirective = "\t.weak_reference ";
|
||||
HiddenDirective = "\t.private_extern ";
|
||||
|
||||
LCOMMDirective = "\t.lcomm\t";
|
||||
|
||||
// _foo.eh symbols are currently always exported so that the linker knows
|
||||
// about them. This is not necessary on 10.6 and later, but it
|
||||
// doesn't hurt anything.
|
||||
|
@ -19,8 +19,7 @@
|
||||
using namespace llvm;
|
||||
using namespace llvm::dwarf;
|
||||
|
||||
PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM) :
|
||||
PPCTargetAsmInfo<DarwinTargetAsmInfo>(TM) {
|
||||
PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM) {
|
||||
PCSymbol = ".";
|
||||
CommentString = ";";
|
||||
UsedDirective = "\t.no_dead_strip\t";
|
||||
@ -28,10 +27,21 @@ PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM) :
|
||||
|
||||
GlobalEHDirective = "\t.globl\t";
|
||||
SupportsWeakOmittedEHFrame = false;
|
||||
|
||||
const PPCSubtarget *Subtarget = &TM.getSubtarget<PPCSubtarget>();
|
||||
bool isPPC64 = Subtarget->isPPC64();
|
||||
|
||||
ZeroDirective = "\t.space\t";
|
||||
SetDirective = "\t.set";
|
||||
Data64bitsDirective = isPPC64 ? "\t.quad\t" : 0;
|
||||
AlignmentIsInBytes = false;
|
||||
LCOMMDirective = "\t.lcomm\t";
|
||||
InlineAsmStart = "# InlineAsm Start";
|
||||
InlineAsmEnd = "# InlineAsm End";
|
||||
AssemblerDialect = Subtarget->getAsmFlavor();
|
||||
}
|
||||
|
||||
PPCLinuxTargetAsmInfo::PPCLinuxTargetAsmInfo(const PPCTargetMachine &TM) :
|
||||
PPCTargetAsmInfo<TargetAsmInfo>(TM) {
|
||||
PPCLinuxTargetAsmInfo::PPCLinuxTargetAsmInfo(const PPCTargetMachine &TM) {
|
||||
CommentString = "#";
|
||||
GlobalPrefix = "";
|
||||
PrivateGlobalPrefix = ".L";
|
||||
@ -47,12 +57,21 @@ PPCLinuxTargetAsmInfo::PPCLinuxTargetAsmInfo(const PPCTargetMachine &TM) :
|
||||
// Set up DWARF directives
|
||||
HasLEB128 = true; // Target asm supports leb128 directives (little-endian)
|
||||
|
||||
const PPCSubtarget *Subtarget = &TM.getSubtarget<PPCSubtarget>();
|
||||
bool isPPC64 = Subtarget->isPPC64();
|
||||
|
||||
// Exceptions handling
|
||||
if (!TM.getSubtargetImpl()->isPPC64())
|
||||
if (!isPPC64)
|
||||
ExceptionsType = ExceptionHandling::Dwarf;
|
||||
AbsoluteEHSectionOffsets = false;
|
||||
|
||||
ZeroDirective = "\t.space\t";
|
||||
SetDirective = "\t.set";
|
||||
Data64bitsDirective = isPPC64 ? "\t.quad\t" : 0;
|
||||
AlignmentIsInBytes = false;
|
||||
LCOMMDirective = "\t.lcomm\t";
|
||||
InlineAsmStart = "# InlineAsm Start";
|
||||
InlineAsmEnd = "# InlineAsm End";
|
||||
AssemblerDialect = Subtarget->getAsmFlavor();
|
||||
}
|
||||
|
||||
|
||||
// Instantiate default implementation.
|
||||
TEMPLATE_INSTANTIATION(class PPCTargetAsmInfo<TargetAsmInfo>);
|
||||
|
@ -21,32 +21,11 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
template <class BaseTAI>
|
||||
struct PPCTargetAsmInfo : public BaseTAI {
|
||||
explicit PPCTargetAsmInfo(const PPCTargetMachine &TM) {
|
||||
const PPCSubtarget *Subtarget = &TM.getSubtarget<PPCSubtarget>();
|
||||
bool isPPC64 = Subtarget->isPPC64();
|
||||
|
||||
BaseTAI::ZeroDirective = "\t.space\t";
|
||||
BaseTAI::SetDirective = "\t.set";
|
||||
BaseTAI::Data64bitsDirective = isPPC64 ? "\t.quad\t" : 0;
|
||||
BaseTAI::AlignmentIsInBytes = false;
|
||||
BaseTAI::LCOMMDirective = "\t.lcomm\t";
|
||||
BaseTAI::InlineAsmStart = "# InlineAsm Start";
|
||||
BaseTAI::InlineAsmEnd = "# InlineAsm End";
|
||||
BaseTAI::AssemblerDialect = Subtarget->getAsmFlavor();
|
||||
}
|
||||
};
|
||||
|
||||
typedef PPCTargetAsmInfo<TargetAsmInfo> PPCGenericTargetAsmInfo;
|
||||
|
||||
EXTERN_TEMPLATE_INSTANTIATION(class PPCTargetAsmInfo<TargetAsmInfo>);
|
||||
|
||||
struct PPCDarwinTargetAsmInfo : public PPCTargetAsmInfo<DarwinTargetAsmInfo> {
|
||||
struct PPCDarwinTargetAsmInfo : public DarwinTargetAsmInfo {
|
||||
explicit PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM);
|
||||
};
|
||||
|
||||
struct PPCLinuxTargetAsmInfo : public PPCTargetAsmInfo<TargetAsmInfo> {
|
||||
struct PPCLinuxTargetAsmInfo : public TargetAsmInfo {
|
||||
explicit PPCLinuxTargetAsmInfo(const PPCTargetMachine &TM);
|
||||
};
|
||||
|
||||
|
@ -48,12 +48,10 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM) {
|
||||
AlignmentIsInBytes = false;
|
||||
TextAlignFillValue = 0x90;
|
||||
|
||||
|
||||
if (!is64Bit)
|
||||
Data64bitsDirective = 0; // we can't emit a 64-bit unit
|
||||
ZeroDirective = "\t.space\t"; // ".space N" emits N zeros.
|
||||
ZeroFillDirective = "\t.zerofill\t"; // Uses .zerofill
|
||||
LCOMMDirective = "\t.lcomm\t";
|
||||
|
||||
// Leopard and above support aligned common symbols.
|
||||
COMMDirectiveTakesAlignment = (Subtarget->getDarwinVers() >= 9);
|
||||
|
Loading…
Reference in New Issue
Block a user