LLVM  12.0.0git
PPCMCAsmInfo.cpp
Go to the documentation of this file.
1 //===-- PPCMCAsmInfo.cpp - PPC asm properties -----------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file contains the declarations of the MCAsmInfoDarwin properties.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #include "PPCMCAsmInfo.h"
14 #include "llvm/ADT/Triple.h"
15 #include <cassert>
16 
17 using namespace llvm;
18 
19 void PPCELFMCAsmInfo::anchor() { }
20 
22  // FIXME: This is not always needed. For example, it is not needed in the
23  // v2 abi.
24  NeedsLocalForSize = true;
25 
26  if (is64Bit) {
28  }
30 
31  // ".comm align is in bytes but .align is pow-2."
32  AlignmentIsInBytes = false;
33 
34  CommentString = "#";
35 
36  // Uses '.section' before '.bss' directive
38 
39  // Debug Information
41 
42  DollarIsPC = true;
43 
44  // Set up DWARF directives
45  MinInstAlignment = 4;
46 
47  // Exceptions handling
49 
50  ZeroDirective = "\t.space\t";
51  Data64bitsDirective = is64Bit ? "\t.quad\t" : nullptr;
52  AssemblerDialect = 1; // New-Style mnemonics.
54 }
55 
56 void PPCXCOFFMCAsmInfo::anchor() {}
57 
59  if (T.getArch() == Triple::ppc64le)
60  report_fatal_error("XCOFF is not supported for little-endian targets");
61  CodePointerSize = CalleeSaveStackSlotSize = Is64Bit ? 8 : 4;
62 
63  // A size of 8 is only supported by the assembler under 64-bit.
64  Data64bitsDirective = Is64Bit ? "\t.vbyte\t8, " : nullptr;
65 }
LCOMM::LCOMMType LCOMMDirectiveAlignmentType
Describes if the .lcomm directive for the target supports an alignment argument and how it is interpr...
Definition: MCAsmInfo.h:288
LLVM_ATTRIBUTE_NORETURN void report_fatal_error(Error Err, bool gen_crash_diag=true)
Report a serious error, calling any installed error handler.
Definition: Error.cpp:140
This class represents lattice values for constants.
Definition: AllocatorList.h:23
PPCELFMCAsmInfo(bool is64Bit, const Triple &)
const char * Data64bitsDirective
Definition: MCAsmInfo.h:210
const char * ZeroDirective
This should be set to the directive used to get some number of zero (and non-zero if supported by the...
Definition: MCAsmInfo.h:186
bool IsLittleEndian
True if target is little endian. Default is true.
Definition: MCAsmInfo.h:70
unsigned CalleeSaveStackSlotSize
Size of the stack slot reserved for callee-saved registers, in bytes.
Definition: MCAsmInfo.h:67
unsigned AssemblerDialect
Which dialect of an assembler variant to use. Defaults to 0.
Definition: MCAsmInfo.h:157
bool AlignmentIsInBytes
If this is true (the default) then the asmprinter emits ".align N" directives, where N is the number ...
Definition: MCAsmInfo.h:248
StringRef CommentString
This indicates the comment character used by the assembler.
Definition: MCAsmInfo.h:118
bool UsesELFSectionDirectiveForBSS
This is true if this target uses ELF &#39;.section&#39; directive before the &#39;.bss&#39; one.
Definition: MCAsmInfo.h:238
ArchType getArch() const
getArch - Get the parsed architecture type of this triple.
Definition: Triple.h:300
bool DollarIsPC
The &#39;$&#39; token, when not referencing an identifier or constant, refers to the current PC...
Definition: MCAsmInfo.h:110
bool SupportsDebugInformation
True if target supports emission of debugging information.
Definition: MCAsmInfo.h:350
PPCXCOFFMCAsmInfo(bool is64Bit, const Triple &)
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:45
bool NeedsLocalForSize
Definition: MCAsmInfo.h:127
unsigned MinInstAlignment
Every possible instruction length is a multiple of this value.
Definition: MCAsmInfo.h:106
unsigned CodePointerSize
Code pointer size in bytes. Default is 4.
Definition: MCAsmInfo.h:63
ExceptionHandling ExceptionsType
Exception handling format for the target. Defaults to None.
Definition: MCAsmInfo.h:353
DWARF-like instruction based exceptions.
static bool is64Bit(const char *name)