diff options
Diffstat (limited to 'llvm/lib/MC/MCAsmInfoXCOFF.cpp')
-rw-r--r-- | llvm/lib/MC/MCAsmInfoXCOFF.cpp | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/llvm/lib/MC/MCAsmInfoXCOFF.cpp b/llvm/lib/MC/MCAsmInfoXCOFF.cpp index c51cdff59fa0a..b5c5bb3ace8ed 100644 --- a/llvm/lib/MC/MCAsmInfoXCOFF.cpp +++ b/llvm/lib/MC/MCAsmInfoXCOFF.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "llvm/MC/MCAsmInfoXCOFF.h" +#include "llvm/ADT/StringExtras.h" using namespace llvm; @@ -14,16 +15,26 @@ void MCAsmInfoXCOFF::anchor() {} MCAsmInfoXCOFF::MCAsmInfoXCOFF() { IsLittleEndian = false; - HasDotTypeDotSizeDirective = false; - COMMDirectiveAlignmentIsInBytes = false; - LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment; + HasVisibilityOnlyWithLinkage = true; + PrivateGlobalPrefix = "L.."; + PrivateLabelPrefix = "L.."; + SupportsQuotedNames = false; UseDotAlignForAlignment = true; + ZeroDirective = "\t.space\t"; + ZeroDirectiveSupportsNonZeroValue = false; AsciiDirective = nullptr; // not supported AscizDirective = nullptr; // not supported + + // Use .vbyte for data definition to avoid directives that apply an implicit + // alignment. + Data16bitsDirective = "\t.vbyte\t2, "; + Data32bitsDirective = "\t.vbyte\t4, "; + + COMMDirectiveAlignmentIsInBytes = false; + LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment; + HasDotTypeDotSizeDirective = false; + UseIntegratedAssembler = false; NeedsFunctionDescriptors = true; - HasDotLGloblDirective = true; - Data64bitsDirective = "\t.llong\t"; - SupportsQuotedNames = false; } bool MCAsmInfoXCOFF::isAcceptableChar(char C) const { @@ -32,5 +43,8 @@ bool MCAsmInfoXCOFF::isAcceptableChar(char C) const { if (C == '[' || C == ']') return true; - return MCAsmInfo::isAcceptableChar(C); + // For AIX assembler, symbols may consist of numeric digits, + // underscores, periods, uppercase or lowercase letters, or + // any combination of these. + return isAlnum(C) || C == '_' || C == '.'; } |