LLVM 19.0.0git
Classes | Namespaces | Macros | Functions | Variables
PPCAsmPrinter.cpp File Reference
#include "MCTargetDesc/PPCInstPrinter.h"
#include "MCTargetDesc/PPCMCExpr.h"
#include "MCTargetDesc/PPCMCTargetDesc.h"
#include "MCTargetDesc/PPCPredicates.h"
#include "PPC.h"
#include "PPCInstrInfo.h"
#include "PPCMachineFunctionInfo.h"
#include "PPCSubtarget.h"
#include "PPCTargetMachine.h"
#include "PPCTargetStreamer.h"
#include "TargetInfo/PowerPCTargetInfo.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/CodeGen/AsmPrinter.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineModuleInfoImpls.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/StackMaps.h"
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Module.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDirectives.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCInstBuilder.h"
#include "llvm/MC/MCSectionELF.h"
#include "llvm/MC/MCSectionXCOFF.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/MCSymbolELF.h"
#include "llvm/MC/MCSymbolXCOFF.h"
#include "llvm/MC/SectionKind.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/Threading.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <memory>
#include <new>

Go to the source code of this file.

Classes

struct  llvm::DenseMapInfo< std::pair< const MCSymbol *, MCSymbolRefExpr::VariantKind > >
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Macros

#define DEBUG_TYPE   "asmprinter"
 
#define GENBOOLCOMMENT(Prefix, V, Field)
 
#define GENVALUECOMMENT(PrefixAndName, V, Field)
 

Functions

 STATISTIC (NumTOCEntries, "Number of Total TOC Entries Emitted.")
 
 STATISTIC (NumTOCConstPool, "Number of Constant Pool TOC Entries.")
 
 STATISTIC (NumTOCGlobalInternal, "Number of Internal Linkage Global TOC Entries.")
 
 STATISTIC (NumTOCGlobalExternal, "Number of External Linkage Global TOC Entries.")
 
 STATISTIC (NumTOCJumpTable, "Number of Jump Table TOC Entries.")
 
 STATISTIC (NumTOCThreadLocal, "Number of Thread Local TOC Entries.")
 
 STATISTIC (NumTOCBlockAddress, "Number of Block Address TOC Entries.")
 
 STATISTIC (NumTOCEHBlock, "Number of EH Block TOC Entries.")
 
static void collectTOCStats (PPCAsmPrinter::TOCEntryType Type)
 
static CodeModel::Model getCodeModel (const PPCSubtarget &S, const TargetMachine &TM, const MachineOperand &MO)
 
static void setOptionalCodeModel (MCSymbolXCOFF *XSym, CodeModel::Model CM)
 
static MCSymbolcreateMCSymbolForTlsGetAddr (MCContext &Ctx, unsigned MIOpc)
 This helper function creates the TlsGetAddr/TlsGetMod MCSymbol for AIX.
 
static MCSymbolgetMCSymbolForTOCPseudoMO (const MachineOperand &MO, AsmPrinter &AP)
 Map a machine operand for a TOC pseudo-machine instruction to its corresponding MCSymbol.
 
static PPCAsmPrinter::TOCEntryType getTOCEntryTypeForMO (const MachineOperand &MO)
 
static bool isSpecialLLVMGlobalArrayToSkip (const GlobalVariable *GV)
 
static bool isSpecialLLVMGlobalArrayForStaticInit (const GlobalVariable *GV)
 
static void tocDataChecks (unsigned PointerSize, const GlobalVariable *GV)
 
static unsigned mapToSinitPriority (int P)
 
static std::string convertToSinitPriority (int Priority)
 
static AsmPrintercreatePPCAsmPrinterPass (TargetMachine &tm, std::unique_ptr< MCStreamer > &&Streamer)
 
LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCAsmPrinter ()
 

Variables

static cl::opt< boolEnableSSPCanaryBitInTB ("aix-ssp-tb-bit", cl::init(false), cl::desc("Enable Passing SSP Canary info in Trackback on AIX"), cl::Hidden)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "asmprinter"

Definition at line 85 of file PPCAsmPrinter.cpp.

◆ GENBOOLCOMMENT

#define GENBOOLCOMMENT (   Prefix,
  V,
  Field 
)
Value:
CommentOS << (Prefix) << ((V) & (TracebackTable::Field##Mask) ? "+" : "-") \
<< #Field

◆ GENVALUECOMMENT

#define GENVALUECOMMENT (   PrefixAndName,
  V,
  Field 
)
Value:
CommentOS << (PrefixAndName) << " = " \
<< static_cast<unsigned>(((V) & (TracebackTable::Field##Mask)) >> \
(TracebackTable::Field##Shift))

Function Documentation

◆ collectTOCStats()

static void collectTOCStats ( PPCAsmPrinter::TOCEntryType  Type)
static

Definition at line 450 of file PPCAsmPrinter.cpp.

◆ convertToSinitPriority()

static std::string convertToSinitPriority ( int  Priority)
static

◆ createMCSymbolForTlsGetAddr()

static MCSymbol * createMCSymbolForTlsGetAddr ( MCContext Ctx,
unsigned  MIOpc 
)
static

This helper function creates the TlsGetAddr/TlsGetMod MCSymbol for AIX.

We will create the csect and use the qual-name symbol instead of creating just the external symbol.

Definition at line 656 of file PPCAsmPrinter.cpp.

References llvm::MCSectionXCOFF::getQualNameSymbol(), llvm::SectionKind::getText(), llvm::MCContext::getXCOFFSection(), llvm::XCOFF::XMC_PR, and llvm::XCOFF::XTY_ER.

◆ createPPCAsmPrinterPass()

static AsmPrinter * createPPCAsmPrinterPass ( TargetMachine tm,
std::unique_ptr< MCStreamer > &&  Streamer 
)
static

◆ getCodeModel()

static CodeModel::Model getCodeModel ( const PPCSubtarget S,
const TargetMachine TM,
const MachineOperand MO 
)
static

◆ getMCSymbolForTOCPseudoMO()

static MCSymbol * getMCSymbolForTOCPseudoMO ( const MachineOperand MO,
AsmPrinter AP 
)
static

◆ getTOCEntryTypeForMO()

static PPCAsmPrinter::TOCEntryType getTOCEntryTypeForMO ( const MachineOperand MO)
static

◆ isSpecialLLVMGlobalArrayForStaticInit()

static bool isSpecialLLVMGlobalArrayForStaticInit ( const GlobalVariable GV)
static

◆ isSpecialLLVMGlobalArrayToSkip()

static bool isSpecialLLVMGlobalArrayToSkip ( const GlobalVariable GV)
static

◆ LLVMInitializePowerPCAsmPrinter()

LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCAsmPrinter ( )

◆ mapToSinitPriority()

static unsigned mapToSinitPriority ( int  P)
static

Definition at line 3150 of file PPCAsmPrinter.cpp.

References P, and llvm::report_fatal_error().

Referenced by convertToSinitPriority().

◆ setOptionalCodeModel()

static void setOptionalCodeModel ( MCSymbolXCOFF XSym,
CodeModel::Model  CM 
)
static

◆ STATISTIC() [1/8]

STATISTIC ( NumTOCBlockAddress  ,
"Number of Block Address TOC Entries."   
)

◆ STATISTIC() [2/8]

STATISTIC ( NumTOCConstPool  ,
"Number of Constant Pool TOC Entries."   
)

◆ STATISTIC() [3/8]

STATISTIC ( NumTOCEHBlock  ,
"Number of EH Block TOC Entries."   
)

◆ STATISTIC() [4/8]

STATISTIC ( NumTOCEntries  ,
"Number of Total TOC Entries Emitted."   
)

◆ STATISTIC() [5/8]

STATISTIC ( NumTOCGlobalExternal  ,
"Number of External Linkage Global TOC Entries."   
)

◆ STATISTIC() [6/8]

STATISTIC ( NumTOCGlobalInternal  ,
"Number of Internal Linkage Global TOC Entries."   
)

◆ STATISTIC() [7/8]

STATISTIC ( NumTOCJumpTable  ,
"Number of Jump Table TOC Entries."   
)

◆ STATISTIC() [8/8]

STATISTIC ( NumTOCThreadLocal  ,
"Number of Thread Local TOC Entries."   
)

◆ tocDataChecks()

static void tocDataChecks ( unsigned  PointerSize,
const GlobalVariable GV 
)
static

Variable Documentation

◆ EnableSSPCanaryBitInTB

cl::opt< bool > EnableSSPCanaryBitInTB("aix-ssp-tb-bit", cl::init(false), cl::desc("Enable Passing SSP Canary info in Trackback on AIX"), cl::Hidden) ( "aix-ssp-tb-bit"  ,
cl::init(false)  ,
cl::desc("Enable Passing SSP Canary info in Trackback on AIX")  ,
cl::Hidden   
)
static