LLVM API Documentation
#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"
Go to the source code of this file.
#define DEBUG_TYPE "asm-printer" |
Definition at line 56 of file AsmPrinter.cpp.
typedef DenseMap<GCStrategy*, std::unique_ptr<GCMetadataPrinter> > gcp_map_type |
Definition at line 67 of file AsmPrinter.cpp.
static bool canBeHidden | ( | const GlobalValue * | GV, |
const MCAsmInfo & | MAI | ||
) | [static] |
Definition at line 260 of file AsmPrinter.cpp.
References llvm::canBeOmittedFromSymbolTable(), and llvm::MCAsmInfo::hasWeakDefCanBeHiddenDirective().
static void emitBasicBlockLoopComments | ( | const MachineBasicBlock & | MBB, |
const MachineLoopInfo * | LI, | ||
const AsmPrinter & | AP | ||
) | [static] |
emitBasicBlockLoopComments - Pretty-print comments for basic blocks.
Definition at line 2144 of file AsmPrinter.cpp.
References llvm::MCStreamer::AddComment(), llvm::LoopBase< BlockT, LoopT >::empty(), llvm::MCStreamer::GetCommentOS(), llvm::AsmPrinter::getFunctionNumber(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopBase< BlockT, LoopT >::getLoopDepth(), llvm::MachineLoopInfo::getLoopFor(), llvm::MachineBasicBlock::getNumber(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), llvm::raw_ostream::indent(), llvm::AsmPrinter::OutStreamer, PrintChildLoopComment(), and PrintParentLoopComment().
Referenced by llvm::AsmPrinter::EmitBasicBlockStart().
static void emitComments | ( | const MachineInstr & | MI, |
raw_ostream & | CommentOS | ||
) | [static] |
emitComments - Pretty-print comments for instructions.
Definition at line 551 of file AsmPrinter.cpp.
References llvm::MachineInstr::getAsmPrinterFlag(), llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineMemOperand::getSize(), llvm::TargetMachine::getSubtargetImpl(), llvm::MachineFunction::getTarget(), llvm::TargetInstrInfo::hasLoadFromStackSlot(), llvm::TargetInstrInfo::hasStoreToStackSlot(), llvm::TargetInstrInfo::isLoadFromStackSlotPostFE(), llvm::MachineFrameInfo::isSpillSlotObjectIndex(), llvm::TargetInstrInfo::isStoreToStackSlotPostFE(), llvm::MachineInstr::memoperands_begin(), llvm::MachineInstr::ReloadReuse, and llvm::SystemZISD::TM.
Referenced by llvm::AsmPrinter::EmitFunctionBody().
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] |
Definition at line 1799 of file AsmPrinter.cpp.
References llvm::MCStreamer::EmitFill(), emitGlobalConstantImpl(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::TargetMachine::getSubtargetImpl(), llvm::ConstantArray::getType(), llvm::DataLayout::getTypeAllocSize(), isRepeatedByteSequence(), llvm::AsmPrinter::OutStreamer, and llvm::AsmPrinter::TM.
Referenced by emitGlobalConstantImpl().
static void emitGlobalConstantDataSequential | ( | const ConstantDataSequential * | CDS, |
AsmPrinter & | AP | ||
) | [static] |
Definition at line 1732 of file AsmPrinter.cpp.
References llvm::MCStreamer::EmitBytes(), llvm::MCStreamer::EmitFill(), llvm::MCStreamer::EmitIntValue(), llvm::MCStreamer::EmitZeros(), F(), llvm::format(), llvm::ConstantDataSequential::getAsString(), llvm::MCStreamer::GetCommentOS(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::ConstantDataSequential::getElementAsDouble(), llvm::ConstantDataSequential::getElementAsFloat(), llvm::ConstantDataSequential::getElementAsInteger(), llvm::ConstantDataSequential::getElementByteSize(), llvm::SequentialType::getElementType(), llvm::ConstantDataSequential::getElementType(), llvm::ConstantDataSequential::getNumElements(), llvm::TargetMachine::getSubtargetImpl(), llvm::ConstantDataSequential::getType(), llvm::DataLayout::getTypeAllocSize(), I, llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), isRepeatedByteSequence(), llvm::ConstantDataSequential::isString(), llvm::AsmPrinter::isVerbose(), llvm::AsmPrinter::OutStreamer, and llvm::AsmPrinter::TM.
Referenced by emitGlobalConstantImpl().
static void emitGlobalConstantFP | ( | const ConstantFP * | CFP, |
AsmPrinter & | AP | ||
) | [static] |
Definition at line 1855 of file AsmPrinter.cpp.
References llvm::APFloat::bitcastToAPInt(), llvm::MCStreamer::EmitIntValue(), llvm::MCStreamer::EmitZeros(), llvm::APInt::getBitWidth(), llvm::MCStreamer::GetCommentOS(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::APInt::getNumWords(), llvm::APInt::getRawData(), llvm::TargetMachine::getSubtargetImpl(), llvm::Value::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::DataLayout::getTypeStoreSize(), llvm::ConstantFP::getValueAPF(), llvm::DataLayout::isBigEndian(), llvm::Type::isPPC_FP128Ty(), llvm::AsmPrinter::isVerbose(), llvm::AsmPrinter::OutStreamer, llvm::Type::print(), llvm::tgtok::StrVal, llvm::AsmPrinter::TM, and llvm::APFloat::toString().
Referenced by emitGlobalConstantImpl().
static void emitGlobalConstantImpl | ( | const Constant * | C, |
AsmPrinter & | AP | ||
) | [static] |
Definition at line 1961 of file AsmPrinter.cpp.
References llvm::WinEH::CE, llvm::ConstantFoldConstantExpression(), emitGlobalConstantArray(), emitGlobalConstantDataSequential(), emitGlobalConstantFP(), emitGlobalConstantLargeInt(), emitGlobalConstantStruct(), emitGlobalConstantVector(), llvm::MCStreamer::EmitIntValue(), llvm::MCStreamer::EmitValue(), llvm::MCStreamer::EmitZeros(), llvm::format(), llvm::MCStreamer::GetCommentOS(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::TargetMachine::getSubtargetImpl(), llvm::Value::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::AsmPrinter::isVerbose(), lowerConstant(), llvm::AsmPrinter::OutStreamer, and llvm::AsmPrinter::TM.
Referenced by llvm::AsmPrinter::EmitGlobalConstant(), emitGlobalConstantArray(), emitGlobalConstantStruct(), and emitGlobalConstantVector().
static void emitGlobalConstantLargeInt | ( | const ConstantInt * | CI, |
AsmPrinter & | AP | ||
) | [static] |
Definition at line 1904 of file AsmPrinter.cpp.
References llvm::MCStreamer::EmitIntValue(), llvm::ConstantInt::getBitWidth(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::TargetMachine::getSubtargetImpl(), llvm::ConstantInt::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::ConstantInt::getValue(), llvm::DataLayout::isBigEndian(), llvm::AsmPrinter::OutStreamer, and llvm::AsmPrinter::TM.
Referenced by emitGlobalConstantImpl().
static void emitGlobalConstantStruct | ( | const ConstantStruct * | CS, |
AsmPrinter & | AP | ||
) | [static] |
Definition at line 1828 of file AsmPrinter.cpp.
References emitGlobalConstantImpl(), llvm::MCStreamer::EmitZeros(), llvm::tgtok::Field, llvm::TargetSubtargetInfo::getDataLayout(), llvm::StructLayout::getElementOffset(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::StructLayout::getSizeInBytes(), llvm::DataLayout::getStructLayout(), llvm::TargetMachine::getSubtargetImpl(), llvm::Value::getType(), llvm::ConstantStruct::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::AsmPrinter::OutStreamer, and llvm::AsmPrinter::TM.
Referenced by emitGlobalConstantImpl().
static void emitGlobalConstantVector | ( | const ConstantVector * | CV, |
AsmPrinter & | AP | ||
) | [static] |
Definition at line 1816 of file AsmPrinter.cpp.
References emitGlobalConstantImpl(), llvm::MCStreamer::EmitZeros(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::SequentialType::getElementType(), llvm::VectorType::getNumElements(), llvm::User::getOperand(), llvm::TargetMachine::getSubtargetImpl(), llvm::ConstantVector::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::AsmPrinter::OutStreamer, and llvm::AsmPrinter::TM.
Referenced by emitGlobalConstantImpl().
static void emitKill | ( | const MachineInstr * | MI, |
AsmPrinter & | AP | ||
) | [static] |
Definition at line 600 of file AsmPrinter.cpp.
References llvm::MCStreamer::AddBlankLine(), llvm::MCStreamer::AddComment(), llvm::MCRegisterInfo::getName(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::TargetMachine::getSubtargetImpl(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isReg(), llvm::AsmPrinter::OutStreamer, and llvm::AsmPrinter::TM.
Referenced by llvm::AsmPrinter::EmitFunctionBody().
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().
static int isRepeatedByteSequence | ( | const ConstantDataSequential * | V | ) | [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 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] |
PrintParentLoopComment - Print comments about parent loops of this one.
Definition at line 2118 of file AsmPrinter.cpp.
References FunctionNumber(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopBase< BlockT, LoopT >::getLoopDepth(), llvm::MachineBasicBlock::getNumber(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), and llvm::raw_ostream::indent().
Referenced by emitBasicBlockLoopComments().
STATISTIC | ( | EmittedInsts | , |
"Number of machine instrs printed" | |||
) |
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().