LLVM  4.0.0
MipsMCAsmInfo.cpp
Go to the documentation of this file.
1 //===-- MipsMCAsmInfo.cpp - Mips Asm Properties ---------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains the declarations of the MipsMCAsmInfo properties.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #include "MipsMCAsmInfo.h"
15 #include "llvm/ADT/Triple.h"
16 
17 using namespace llvm;
18 
19 void MipsMCAsmInfo::anchor() { }
20 
22  if ((TheTriple.getArch() == Triple::mips) ||
23  (TheTriple.getArch() == Triple::mips64))
24  IsLittleEndian = false;
25 
26  if ((TheTriple.getArch() == Triple::mips64el) ||
27  (TheTriple.getArch() == Triple::mips64)) {
29  }
30 
31  // FIXME: This condition isn't quite right but it's the best we can do until
32  // this object can identify the ABI. It will misbehave when using O32
33  // on a mips64*-* triple.
34  if ((TheTriple.getArch() == Triple::mipsel) ||
35  (TheTriple.getArch() == Triple::mips)) {
36  PrivateGlobalPrefix = "$";
37  PrivateLabelPrefix = "$";
38  }
39 
40  AlignmentIsInBytes = false;
41  Data16bitsDirective = "\t.2byte\t";
42  Data32bitsDirective = "\t.4byte\t";
43  Data64bitsDirective = "\t.8byte\t";
44  CommentString = "#";
45  ZeroDirective = "\t.space\t";
46  GPRel32Directive = "\t.gpword\t";
47  GPRel64Directive = "\t.gpdword\t";
48  DTPRel32Directive = "\t.dtprelword\t";
49  DTPRel64Directive = "\t.dtpreldword\t";
50  TPRel32Directive = "\t.tprelword\t";
51  TPRel64Directive = "\t.tpreldword\t";
55  DwarfRegNumForCFI = true;
56  HasMipsExpressions = true;
57 
58  // Enable IAS by default for O32.
59  if (TheTriple.getArch() == Triple::mips ||
60  TheTriple.getArch() == Triple::mipsel)
62 
63  // Enable IAS by default for Debian mips64/mips64el.
64  if (TheTriple.getEnvironment() == Triple::GNUABI64)
66 }
bool UseIntegratedAssembler
Should we use the integrated assembler? The integrated assembler should be enabled by default (by the...
Definition: MCAsmInfo.h:358
StringRef PrivateLabelPrefix
This prefix is used for labels for basic blocks.
Definition: MCAsmInfo.h:124
bool DwarfRegNumForCFI
True if dwarf register numbers are printed instead of symbolic register names in .cfi_* directives.
Definition: MCAsmInfo.h:341
const char * Data64bitsDirective
Definition: MCAsmInfo.h:184
const char * ZeroDirective
This should be set to the directive used to get some number of zero bytes emitted to the current sect...
Definition: MCAsmInfo.h:166
bool IsLittleEndian
True if target is little endian. Default is true.
Definition: MCAsmInfo.h:71
unsigned CalleeSaveStackSlotSize
Size of the stack slot reserved for callee-saved registers, in bytes.
Definition: MCAsmInfo.h:68
bool AlignmentIsInBytes
If this is true (the default) then the asmprinter emits ".align N" directives, where N is the number ...
Definition: MCAsmInfo.h:222
StringRef CommentString
This indicates the comment character used by the assembler.
Definition: MCAsmInfo.h:106
ArchType getArch() const
getArch - Get the parsed architecture type of this triple.
Definition: Triple.h:270
bool HasMipsExpressions
Definition: MCAsmInfo.h:376
const char * GPRel64Directive
If non-null, a directive that is used to emit a word which should be relocated as a 64-bit GP-relativ...
Definition: MCAsmInfo.h:189
const char * TPRel32Directive
Definition: MCAsmInfo.h:201
unsigned PointerSize
Pointer size in bytes. Default is 4.
Definition: MCAsmInfo.h:64
bool SupportsDebugInformation
True if target supports emission of debugging information.
Definition: MCAsmInfo.h:323
const char * Data16bitsDirective
Definition: MCAsmInfo.h:182
bool UseAssignmentForEHBegin
Definition: MCAsmInfo.h:112
const char * DTPRel64Directive
Definition: MCAsmInfo.h:200
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:44
const char * TPRel64Directive
Definition: MCAsmInfo.h:202
const char * Data32bitsDirective
Definition: MCAsmInfo.h:183
const char * GPRel32Directive
If non-null, a directive that is used to emit a word which should be relocated as a 32-bit GP-relativ...
Definition: MCAsmInfo.h:194
ExceptionHandling ExceptionsType
Exception handling format for the target. Defaults to None.
Definition: MCAsmInfo.h:326
EnvironmentType getEnvironment() const
getEnvironment - Get the parsed environment type of this triple.
Definition: Triple.h:288
const char * DTPRel32Directive
If non-null, directives that are used to emit a word/dword which should be relocated as a 32/64-bit D...
Definition: MCAsmInfo.h:199
MipsMCAsmInfo(const Triple &TheTriple)
No exception support.
StringRef PrivateGlobalPrefix
This prefix is used for globals like constant pool entries that are completely private to the ...
Definition: MCAsmInfo.h:120