LLVM API Documentation

Defines | Typedefs | Functions | Variables
AsmPrinter.cpp File Reference
#include "llvm/CodeGen/AsmPrinter.h"
#include "DwarfDebug.h"
#include "DwarfException.h"
#include "Win64Exception.h"
#include "WinCodeViewLineTables.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/ConstantFolding.h"
#include "llvm/Analysis/JumpInstrTableInfo.h"
#include "llvm/CodeGen/Analysis.h"
#include "llvm/CodeGen/GCMetadataPrinter.h"
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBundle.h"
#include "llvm/CodeGen/MachineJumpTableInfo.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/Mangler.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCSection.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/Timer.h"
#include "llvm/Target/TargetFrameLowering.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetLowering.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetSubtargetInfo.h"
Include dependency graph for AsmPrinter.cpp:

Go to the source code of this file.

Defines

#define DEBUG_TYPE   "asm-printer"

Typedefs

typedef DenseMap< GCStrategy
*, std::unique_ptr
< GCMetadataPrinter > > 
gcp_map_type

Functions

 STATISTIC (EmittedInsts,"Number of machine instrs printed")
static gcp_map_type & getGCMap (void *&P)
static unsigned getGVAlignmentLog2 (const GlobalValue *GV, const DataLayout &TD, unsigned InBits=0)
static bool canBeHidden (const GlobalValue *GV, const MCAsmInfo &MAI)
static void emitComments (const MachineInstr &MI, raw_ostream &CommentOS)
 emitComments - Pretty-print comments for instructions.
static void emitKill (const MachineInstr *MI, AsmPrinter &AP)
static bool emitDebugValueComment (const MachineInstr *MI, AsmPrinter &AP)
static const MCExpr * lowerConstant (const Constant *CV, AsmPrinter &AP)
static void emitGlobalConstantImpl (const Constant *C, AsmPrinter &AP)
static int isRepeatedByteSequence (const ConstantDataSequential *V)
static int isRepeatedByteSequence (const Value *V, TargetMachine &TM)
static void emitGlobalConstantDataSequential (const ConstantDataSequential *CDS, AsmPrinter &AP)
static void emitGlobalConstantArray (const ConstantArray *CA, AsmPrinter &AP)
static void emitGlobalConstantVector (const ConstantVector *CV, AsmPrinter &AP)
static void emitGlobalConstantStruct (const ConstantStruct *CS, AsmPrinter &AP)
static void emitGlobalConstantFP (const ConstantFP *CFP, AsmPrinter &AP)
static void emitGlobalConstantLargeInt (const ConstantInt *CI, AsmPrinter &AP)
static void PrintParentLoopComment (raw_ostream &OS, const MachineLoop *Loop, unsigned FunctionNumber)
 PrintParentLoopComment - Print comments about parent loops of this one.
static void PrintChildLoopComment (raw_ostream &OS, const MachineLoop *Loop, unsigned FunctionNumber)
static void emitBasicBlockLoopComments (const MachineBasicBlock &MBB, const MachineLoopInfo *LI, const AsmPrinter &AP)
 emitBasicBlockLoopComments - Pretty-print comments for basic blocks.

Variables

static const char *const DWARFGroupName = "DWARF Emission"
static const char *const DbgTimerName = "Debug Info Emission"
static const char *const EHTimerName = "DWARF Exception Writer"
static const char *const CodeViewLineTablesGroupName = "CodeView Line Tables"

Define Documentation

#define DEBUG_TYPE   "asm-printer"

Definition at line 56 of file AsmPrinter.cpp.


Typedef Documentation

typedef DenseMap<GCStrategy*, std::unique_ptr<GCMetadataPrinter> > gcp_map_type

Definition at line 67 of file AsmPrinter.cpp.


Function Documentation

static bool canBeHidden ( const GlobalValue *  GV,
const MCAsmInfo &  MAI 
) [static]
static void emitBasicBlockLoopComments ( const MachineBasicBlock &  MBB,
const MachineLoopInfo *  LI,
const AsmPrinter &  AP 
) [static]
static void emitComments ( const MachineInstr &  MI,
raw_ostream &  CommentOS 
) [static]
static bool emitDebugValueComment ( const MachineInstr *  MI,
AsmPrinter &  AP 
) [static]

emitDebugValueComment - This method handles the target-independent form of DBG_VALUE, returning true if it was able to do so. A false return means the target will need to handle MI in EmitInstruction.

Definition at line 616 of file AsmPrinter.cpp.

References llvm::lltok::APFloat, llvm::APFloat::convert(), llvm::APFloat::convertToDouble(), llvm::APFloat::convertToFloat(), llvm::MCStreamer::emitRawComment(), llvm::StringRef::empty(), llvm::MachineOperand::getCImm(), llvm::DIVariable::getContext(), llvm::MachineInstr::getDebugVariable(), llvm::MachineOperand::getFPImm(), llvm::TargetFrameLowering::getFrameIndexReference(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MCRegisterInfo::getName(), llvm::DIVariable::getName(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::DIVariable::getPieceOffset(), llvm::DIVariable::getPieceSize(), llvm::MachineOperand::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::TargetMachine::getSubtargetImpl(), llvm::Value::getType(), llvm::ConstantInt::getValue(), llvm::ConstantFP::getValueAPF(), llvm::APFloat::IEEEdouble, llvm::MachineOperand::isCImm(), llvm::Type::isDoubleTy(), llvm::MachineOperand::isFI(), llvm::Type::isFloatTy(), llvm::MachineOperand::isFPImm(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), llvm::DIDescriptor::isSubprogram(), llvm::DIVariable::isVariablePiece(), llvm::AsmPrinter::MF, Name, llvm::AsmPrinter::OutStreamer, llvm::APInt::print(), llvm::APFloat::rmNearestTiesToEven, llvm::raw_svector_ostream::str(), and llvm::AsmPrinter::TM.

Referenced by llvm::AsmPrinter::EmitFunctionBody().

static void emitGlobalConstantArray ( const ConstantArray *  CA,
AsmPrinter &  AP 
) [static]
static void emitGlobalConstantDataSequential ( const ConstantDataSequential *  CDS,
AsmPrinter &  AP 
) [static]
static void emitGlobalConstantFP ( const ConstantFP *  CFP,
AsmPrinter &  AP 
) [static]
static void emitGlobalConstantImpl ( const Constant *  C,
AsmPrinter &  AP 
) [static]
static void emitGlobalConstantLargeInt ( const ConstantInt *  CI,
AsmPrinter &  AP 
) [static]
static void emitGlobalConstantStruct ( const ConstantStruct *  CS,
AsmPrinter &  AP 
) [static]
static void emitGlobalConstantVector ( const ConstantVector *  CV,
AsmPrinter &  AP 
) [static]
static void emitKill ( const MachineInstr *  MI,
AsmPrinter &  AP 
) [static]
static gcp_map_type& getGCMap ( void *&  P) [static]

Definition at line 68 of file AsmPrinter.cpp.

Referenced by llvm::AsmPrinter::~AsmPrinter().

static unsigned getGVAlignmentLog2 ( const GlobalValue *  GV,
const DataLayout &  TD,
unsigned  InBits = 0 
) [static]

getGVAlignmentLog2 - Return the alignment to use for the specified global value in log2 form. This rounds up to the preferred alignment if possible and legal.

Definition at line 78 of file AsmPrinter.cpp.

References llvm::GlobalValue::getAlignment(), llvm::DataLayout::getPreferredAlignmentLog(), llvm::GlobalValue::hasSection(), and llvm::Log2_32().

Referenced by llvm::AsmPrinter::EmitAlignment(), and llvm::AsmPrinter::EmitGlobalVariable().

isRepeatedByteSequence - Determine whether the given value is composed of a repeated sequence of identical bytes and return the byte value. If it is not a repeated sequence, return -1.

Definition at line 1675 of file AsmPrinter.cpp.

References llvm::CallingConv::C, llvm::StringRef::empty(), llvm::ConstantDataSequential::getRawDataValues(), and llvm::StringRef::size().

Referenced by emitGlobalConstantArray(), emitGlobalConstantDataSequential(), and isRepeatedByteSequence().

static int isRepeatedByteSequence ( const Value *  V,
TargetMachine &  TM 
) [static]

isRepeatedByteSequence - Determine whether the given value is composed of a repeated sequence of identical bytes and return the byte value. If it is not a repeated sequence, return -1.

Definition at line 1688 of file AsmPrinter.cpp.

References llvm::TargetSubtargetInfo::getDataLayout(), llvm::TargetMachine::getSubtargetImpl(), llvm::Value::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::isPowerOf2_64(), isRepeatedByteSequence(), and llvm::SystemZISD::TM.

static const MCExpr * lowerConstant ( const Constant *  CV,
AsmPrinter &  AP 
) [static]

lowerConstant - Lower the specified LLVM Constant to an MCExpr.

Definition at line 1541 of file AsmPrinter.cpp.

References llvm::APIntOps::And(), llvm::CallingConv::C, llvm::WinEH::CE, llvm::ConstantFoldConstantExpression(), llvm::MCConstantExpr::Create(), llvm::MCSymbolRefExpr::Create(), llvm::MCBinaryExpr::CreateAdd(), llvm::MCBinaryExpr::CreateAnd(), llvm::MCBinaryExpr::CreateDiv(), llvm::MCBinaryExpr::CreateMod(), llvm::MCBinaryExpr::CreateMul(), llvm::MCBinaryExpr::CreateOr(), llvm::MCBinaryExpr::CreateShl(), llvm::MCBinaryExpr::CreateSub(), llvm::MCBinaryExpr::CreateXor(), llvm::dyn_cast(), llvm::AsmPrinter::GetBlockAddressSymbol(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::TargetLoweringObjectFile::getExecutableRelativeSymbol(), llvm::MachineFunction::getFunction(), llvm::ConstantExpr::getIntegerCast(), llvm::DataLayout::getIntPtrType(), llvm::AsmPrinter::getObjFileLowering(), llvm::ConstantExpr::getOpcode(), llvm::User::getOperand(), llvm::GlobalValue::getParent(), llvm::DataLayout::getPointerTypeSizeInBits(), llvm::APInt::getSExtValue(), llvm::TargetMachine::getSubtargetImpl(), llvm::AsmPrinter::getSymbol(), llvm::Value::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::DataLayout::getTypeAllocSizeInBits(), llvm::IntToPtr, llvm::Constant::isNullValue(), llvm_unreachable, llvm::AsmPrinter::Mang, llvm::AsmPrinter::MF, llvm::APIntOps::Or(), llvm::AsmPrinter::OutContext, llvm::Value::printAsOperand(), llvm::report_fatal_error(), llvm::raw_string_ostream::str(), llvm::AsmPrinter::TM, llvm::Trunc, and llvm::APIntOps::Xor().

Referenced by llvm::AsmPrinter::doFinalization(), and emitGlobalConstantImpl().

static void PrintChildLoopComment ( raw_ostream &  OS,
const MachineLoop *  Loop,
unsigned  FunctionNumber 
) [static]

PrintChildLoopComment - Print comments about child loops within the loop for this basic block, with nesting.

Definition at line 2131 of file AsmPrinter.cpp.

References llvm::raw_ostream::indent().

Referenced by emitBasicBlockLoopComments().

static void PrintParentLoopComment ( raw_ostream &  OS,
const MachineLoop *  Loop,
unsigned  FunctionNumber 
) [static]
STATISTIC ( EmittedInsts  ,
"Number of machine instrs printed"   
)

Variable Documentation

const char* const CodeViewLineTablesGroupName = "CodeView Line Tables" [static]

Definition at line 61 of file AsmPrinter.cpp.

Referenced by llvm::AsmPrinter::doInitialization().

const char* const DbgTimerName = "Debug Info Emission" [static]

Definition at line 59 of file AsmPrinter.cpp.

Referenced by llvm::AsmPrinter::doInitialization().

const char* const DWARFGroupName = "DWARF Emission" [static]

Definition at line 58 of file AsmPrinter.cpp.

Referenced by llvm::AsmPrinter::doInitialization().

const char* const EHTimerName = "DWARF Exception Writer" [static]

Definition at line 60 of file AsmPrinter.cpp.

Referenced by llvm::AsmPrinter::doInitialization().