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_typegetGCMap (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 MCExprlowerConstant (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().