LLVM  6.0.0svn
Namespaces | Enumerations | Functions | Variables
AsmParser.cpp File Reference
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/None.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCCodeView.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDirectives.h"
#include "llvm/MC/MCDwarf.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInstPrinter.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCObjectFileInfo.h"
#include "llvm/MC/MCParser/AsmCond.h"
#include "llvm/MC/MCParser/AsmLexer.h"
#include "llvm/MC/MCParser/MCAsmLexer.h"
#include "llvm/MC/MCParser/MCAsmParser.h"
#include "llvm/MC/MCParser/MCAsmParserExtension.h"
#include "llvm/MC/MCParser/MCAsmParserUtils.h"
#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSection.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/MC/MCValue.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/SMLoc.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cctype>
#include <climits>
#include <cstddef>
#include <cstdint>
#include <deque>
#include <memory>
#include <sstream>
#include <string>
#include <tuple>
#include <utility>
#include <vector>

Go to the source code of this file.

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 
 llvm::MCParserUtils
 

Enumerations

enum  { DEFAULT_ADDRSPACE = 0 }
 

Functions

MCAsmParserExtensionllvm::createDarwinAsmParser ()
 
MCAsmParserExtensionllvm::createELFAsmParser ()
 
MCAsmParserExtensionllvm::createCOFFAsmParser ()
 
static unsigned getDarwinBinOpPrecedence (AsmToken::TokenKind K, MCBinaryExpr::Opcode &Kind, bool ShouldUseLogicalShr)
 
static unsigned getGNUBinOpPrecedence (AsmToken::TokenKind K, MCBinaryExpr::Opcode &Kind, bool ShouldUseLogicalShr)
 
static bool isIdentifierChar (char c)
 
static bool isOperator (AsmToken::TokenKind kind)
 
static bool isValidEncoding (int64_t Encoding)
 
static int rewritesSort (const AsmRewrite *AsmRewriteA, const AsmRewrite *AsmRewriteB)
 
static bool llvm::MCParserUtils::isSymbolUsedInExpression (const MCSymbol *Sym, const MCExpr *Value)
 Returns whether the given symbol is used anywhere in the given expression, or subexpressions. More...
 
bool llvm::MCParserUtils::parseAssignmentExpression (StringRef Name, bool allow_redef, MCAsmParser &Parser, MCSymbol *&Symbol, const MCExpr *&Value)
 Parse a value expression and return whether it can be assigned to a symbol with the given name. More...
 

Variables

static cl::opt< unsignedAsmMacroMaxNestingDepth ("asm-macro-max-nesting-depth", cl::init(20), cl::Hidden, cl::desc("The maximum nesting depth allowed for assembly macros."))
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
DEFAULT_ADDRSPACE 

Definition at line 704 of file AsmParser.cpp.

Function Documentation

◆ getDarwinBinOpPrecedence()

static unsigned getDarwinBinOpPrecedence ( AsmToken::TokenKind  K,
MCBinaryExpr::Opcode Kind,
bool  ShouldUseLogicalShr 
)
static

◆ getGNUBinOpPrecedence()

static unsigned getGNUBinOpPrecedence ( AsmToken::TokenKind  K,
MCBinaryExpr::Opcode Kind,
bool  ShouldUseLogicalShr 
)
static

Definition at line 1526 of file AsmParser.cpp.

References llvm::MCBinaryExpr::Add, llvm::MCStreamer::AddBlankLine(), llvm::AsmToken::Amp, llvm::AsmToken::AmpAmp, llvm::MCBinaryExpr::And, llvm::AOK_EVEN, llvm::AOK_Label, llvm::AOK_Skip, llvm::MCBinaryExpr::AShr, assert(), llvm::AsmToken::Caret, llvm::AsmToken::Colon, Context, llvm::MCBinaryExpr::create(), llvm::MCContext::createDirectionalLocalSymbol(), llvm::MCBinaryExpr::Div, llvm::SourceMgr::DK_Note, llvm::AsmToken::Dot, llvm::NVPTXISD::Dummy, DWARF2_FLAG_IS_STMT, DWARF2_LINE_DEFAULT_IS_STMT, llvm::MCStreamer::EmitLabel(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::StringRef::empty(), llvm::AsmToken::EndOfStatement, llvm::MCBinaryExpr::EQ, llvm::AsmToken::Equal, llvm::AsmToken::EqualEqual, llvm::lltok::Error, llvm::errs(), llvm::AsmToken::ExclaimEqual, llvm::SourceMgr::FindBufferContainingLoc(), llvm::SourceMgr::FindLineNumber(), llvm::SMDiagnostic::getColumnNo(), getDarwinBinOpPrecedence(), llvm::MCAsmLexer::getKind(), llvm::SMDiagnostic::getKind(), llvm::SMDiagnostic::getLineContents(), llvm::AsmToken::getLoc(), llvm::MCAsmLexer::getLoc(), llvm::SMDiagnostic::getLoc(), llvm::SourceMgr::getMainFileID(), llvm::SMDiagnostic::getMessage(), llvm::SourceMgr::getParentIncludeLoc(), llvm::SMLoc::getPointer(), llvm::SMDiagnostic::getRanges(), llvm::SMDiagnostic::getSourceMgr(), llvm::AsmToken::Greater, llvm::AsmToken::GreaterEqual, llvm::AsmToken::GreaterGreater, llvm::MCBinaryExpr::GT, llvm::MCBinaryExpr::GTE, llvm::AsmToken::Hash, llvm::AsmToken::HashDirective, llvm::APFloatBase::IEEEdouble(), llvm::APFloatBase::IEEEsingle(), llvm::AsmCond::Ignore, llvm::AsmToken::Integer, llvm::MCAsmLexer::is(), llvm::MCAsmLexer::isNot(), Kind, llvm::MCBinaryExpr::LAnd, llvm::AsmToken::LCurly, llvm::AsmToken::Less, llvm::AsmToken::LessEqual, llvm::AsmToken::LessGreater, llvm::AsmToken::LessLess, llvm::MCAsmLexer::Lex(), llvm::StringMap< ValueTy, AllocatorTy >::lookup(), llvm::MCAsmParserSemaCallback::LookupInlineAsmLabel(), llvm::MCBinaryExpr::LOr, llvm::StringRef::lower(), llvm::MCBinaryExpr::LShr, llvm::MCBinaryExpr::LT, llvm::MCBinaryExpr::LTE, llvm::MCGenDwarfLabelEntry::Make(), llvm::MCSA_Global, llvm::MCSA_LazyReference, llvm::MCSA_NoDeadStrip, llvm::MCSA_PrivateExtern, llvm::MCSA_Reference, llvm::MCSA_SymbolResolver, llvm::MCSA_WeakDefAutoPrivate, llvm::MCSA_WeakDefinition, llvm::MCSA_WeakReference, llvm::AsmToken::Minus, llvm::MCBinaryExpr::Mod, llvm::MCBinaryExpr::Mul, llvm::MCBinaryExpr::NE, llvm::MCBinaryExpr::Or, llvm::AsmToken::Percent, llvm::AsmToken::Pipe, llvm::AsmToken::PipePipe, llvm::AsmToken::Plus, llvm::SMDiagnostic::print(), llvm::SourceMgr::PrintIncludeStack(), llvm::AsmToken::RCurly, llvm::MCBinaryExpr::Shl, llvm::MCAsmInfo::shouldUseLogicalShr(), SI, llvm::StringRef::size(), llvm::AsmToken::Slash, llvm::AsmToken::Space, llvm::AsmToken::Star, llvm::raw_svector_ostream::str(), llvm::AsmToken::String, llvm::MCBinaryExpr::Sub, llvm::StringRef::substr(), llvm::MCAsmLexer::UnLex(), and llvm::MCBinaryExpr::Xor.

◆ isIdentifierChar()

static bool isIdentifierChar ( char  c)
static

◆ isOperator()

static bool isOperator ( AsmToken::TokenKind  kind)
static

Definition at line 2487 of file AsmParser.cpp.

References llvm::SourceMgr::AddNewSourceBuffer(), llvm::MCContext::allocate(), llvm::AsmToken::Amp, llvm::AsmToken::AmpAmp, AsmMacroMaxNestingDepth, assert(), llvm::AsmToken::At, llvm::AsmToken::BigNum, llvm::APFloat::bitcastToAPInt(), llvm::AsmToken::Caret, llvm::APFloat::changeSign(), llvm::lltok::ChecksumKind, llvm::AsmToken::Comma, llvm::StringRef::compare_lower(), llvm::APFloat::convertFromString(), llvm::Data, Debug, llvm::AsmToken::Dollar, llvm::AsmToken::Dot, DWARF2_FLAG_BASIC_BLOCK, DWARF2_FLAG_EPILOGUE_BEGIN, DWARF2_FLAG_IS_STMT, DWARF2_FLAG_PROLOGUE_END, DWARF2_LINE_DEFAULT_IS_STMT, llvm::MCStreamer::EmitAssignment(), llvm::MCStreamer::EmitSymbolAttribute(), llvm::StringRef::empty(), llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::AsmToken::EndOfStatement, llvm::AsmToken::Eof, llvm::AsmToken::Equal, llvm::AsmToken::EqualEqual, llvm::StringMap< ValueTy, AllocatorTy >::erase(), llvm::lltok::Error, llvm::AsmToken::Error, llvm::MCExpr::evaluateAsRelocatable(), llvm::AsmToken::Exclaim, llvm::AsmToken::ExclaimEqual, llvm::StringMap< ValueTy, AllocatorTy >::find(), llvm::fromHex(), llvm::APInt::getBitWidth(), llvm::MemoryBuffer::getBuffer(), llvm::MCAsmLexer::getErr(), llvm::APInt::getHiBits(), llvm::AsmToken::getIdentifier(), llvm::APFloat::getInf(), llvm::MCAsmLexer::getKind(), llvm::APInt::getLimitedValue(), llvm::APInt::getLoBits(), llvm::AsmToken::getLoc(), llvm::MCAsmLexer::getLoc(), llvm::AsmLexer::getMAI(), llvm::MemoryBuffer::getMemBufferCopy(), llvm::SourceMgr::getMemoryBuffer(), llvm::APFloat::getNaN(), llvm::SMLoc::getPointer(), llvm::MCAsmInfo::getTextAlignFillValue(), llvm::MCAsmLexer::getTok(), llvm::APInt::getZExtValue(), llvm::AsmToken::Greater, llvm::AsmToken::GreaterEqual, llvm::AsmToken::GreaterGreater, I, llvm::AsmToken::Identifier, llvm::StringMap< ValueTy, AllocatorTy >::insert(), llvm::AsmToken::Integer, llvm::AsmToken::is(), llvm::MCAsmLexer::is(), llvm::MCAsmLexer::IsaAltMacroMode(), llvm::isIntN(), llvm::APInt::isIntN(), llvm::MCAsmInfo::isLittleEndian(), llvm::MCAsmLexer::isNot(), llvm::isPowerOf2_64(), llvm::isUInt< 32 >(), llvm::isUIntN(), llvm::SMLoc::isValid(), llvm::AsmToken::Less, llvm::AsmToken::LessEqual, llvm::AsmToken::LessGreater, llvm::AsmToken::LessLess, llvm::MCAsmLexer::Lex(), llvm::AsmToken::LParen, llvm::dwarf::syntax::Macro, llvm::MCSA_NoDeadStrip, MI, llvm::AsmToken::Minus, llvm::APFloatBase::opInvalidOp, llvm::MCParserUtils::parseAssignmentExpression(), llvm::MCAsmLexer::peekTok(), llvm::AsmLexer::peekTokens(), llvm::AsmToken::Percent, llvm::AsmToken::Pipe, llvm::AsmToken::PipePipe, llvm::AsmToken::Plus, llvm::AsmToken::Real, Register, llvm::SmallVectorImpl< T >::resize(), llvm::APFloatBase::rmNearestTiesToEven, llvm::AsmToken::RParen, llvm::ARMBuildAttrs::Section, llvm::AsmLexer::setBuffer(), llvm::MCAsmLexer::setSkipSpace(), llvm::SmallVectorTemplateCommon< T >::size(), llvm::StringRef::size(), llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Size, llvm::AsmToken::Slash, llvm::AsmToken::Space, llvm::AsmToken::Star, llvm::raw_svector_ostream::str(), llvm::AsmToken::String, llvm::AsmToken::Tilde, llvm::MCSection::UseCodeAlign(), and llvm::dwarf::syntax::Warning.

◆ isValidEncoding()

static bool isValidEncoding ( int64_t  Encoding)
static

Definition at line 3975 of file AsmParser.cpp.

References llvm::SourceMgr::AddNewSourceBuffer(), llvm::AOK_Align, llvm::AOK_Emit, Arg, assert(), llvm::LCOMM::ByteAlignment, llvm::AsmToken::Colon, llvm::AsmToken::Comma, llvm::AsmCond::CondMet, llvm::StringRef::data(), llvm::dwarf::DW_EH_PE_absptr, llvm::dwarf::DW_EH_PE_omit, llvm::dwarf::DW_EH_PE_pcrel, llvm::dwarf::DW_EH_PE_sdata2, llvm::dwarf::DW_EH_PE_sdata4, llvm::dwarf::DW_EH_PE_sdata8, llvm::dwarf::DW_EH_PE_signed, llvm::dwarf::DW_EH_PE_udata2, llvm::dwarf::DW_EH_PE_udata4, llvm::dwarf::DW_EH_PE_udata8, llvm::dyn_cast(), llvm::AsmCond::ElseCond, llvm::AsmCond::ElseIfCond, llvm::StringRef::empty(), llvm::WebAssembly::End, llvm::AsmToken::EndOfStatement, llvm::AsmToken::Eof, llvm::AsmToken::Equal, llvm::lltok::Error, llvm::AsmToken::Error, llvm::Format, llvm::StringRef::front(), llvm::APInt::getBitWidth(), llvm::MemoryBuffer::getBuffer(), llvm::MCAsmInfo::getCOMMDirectiveAlignmentIsInBytes(), llvm::AsmToken::getIdentifier(), llvm::MCAsmInfo::getLCOMMDirectiveAlignmentType(), llvm::APInt::getLimitedValue(), llvm::AsmToken::getLoc(), llvm::MCAsmLexer::getLoc(), llvm::AsmLexer::getMAI(), llvm::MemoryBuffer::getMemBufferCopy(), llvm::SourceMgr::getMemoryBuffer(), llvm::SMLoc::getPointer(), llvm::AsmToken::getString(), llvm::AsmToken::getStringContents(), llvm::MCConstantExpr::getValue(), I, llvm::AsmToken::Identifier, llvm::AsmCond::IfCond, llvm::AsmCond::Ignore, llvm::MCAsmLexer::is(), isIdentifierChar(), llvm::isInt< 8 >(), llvm::isIntN(), llvm::AsmToken::isNot(), llvm::MCAsmLexer::isNot(), llvm::isPowerOf2_64(), llvm::MCSymbol::isTemporary(), llvm::isUInt< 8 >(), llvm::isUIntN(), llvm::MCSymbol::isUndefined(), llvm::MCAsmLexer::Lex(), llvm_unreachable, llvm::Log2_64(), MI, llvm::LCOMM::NoAlignment, llvm::AsmCond::NoCond, llvm::None, llvm::outs(), llvm::MCSymbol::redefineIfPossible(), llvm::AsmLexer::setBuffer(), Signed, llvm::StringRef::size(), llvm::ArrayRef< T >::size(), llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Size, llvm::StringRef::slice(), llvm::raw_svector_ostream::str(), llvm::AsmToken::String, llvm::StringRef::substr(), llvm::AsmCond::TheCond, llvm::StringRef::trim(), and llvm::dwarf::syntax::Warning.

◆ rewritesSort()

static int rewritesSort ( const AsmRewrite AsmRewriteA,
const AsmRewrite AsmRewriteB 
)
static

Definition at line 5497 of file AsmParser.cpp.

References llvm::AOK_Align, llvm::AOK_Emit, llvm::AOK_EndOfStatement, llvm::AOK_EVEN, llvm::AOK_Input, llvm::AOK_IntelExpr, llvm::AOK_Label, llvm::AOK_Output, llvm::AOK_SizeDirective, llvm::AOK_Skip, llvm::array_pod_sort(), llvm::AsmRewritePrecedence, assert(), llvm::SmallVectorImpl< T >::assign(), llvm::StringRef::begin(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T >::begin(), llvm::StringRef::data(), E, llvm::SmallVectorImpl< T >::emplace_back(), llvm::StringRef::empty(), llvm::StringRef::end(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::AsmToken::Eof, llvm::SmallVectorImpl< T >::erase(), llvm::MCInstrInfo::get(), llvm::MCContext::getAsmInfo(), llvm::MCParsedAsmOperand::getConstraint(), llvm::SMLoc::getFromPointer(), llvm::MCInstrDesc::getImplicitDefs(), llvm::SourceMgr::getMainFileID(), llvm::MCParsedAsmOperand::getMCOperandNum(), llvm::SourceMgr::getMemoryBuffer(), llvm::MCInstrDesc::getNumDefs(), llvm::MCInstrDesc::getNumImplicitDefs(), llvm::MCParsedAsmOperand::getOpDecl(), llvm::SMLoc::getPointer(), llvm::MCAsmInfo::getPrivateLabelPrefix(), llvm::MCParsedAsmOperand::getReg(), llvm::MCParsedAsmOperand::getSymName(), I, if(), llvm::SmallVectorImpl< T >::insert(), llvm::MCParsedAsmOperand::isImm(), llvm::MCParsedAsmOperand::isReg(), llvm::AsmRewrite::Kind, llvm_unreachable, llvm::AsmRewrite::Loc, llvm::MCInstrDesc::mayStore(), llvm::MCParsedAsmOperand::needAddressOf(), llvm::MCInstPrinter::printRegName(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorImpl< T >::resize(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::StringRef::size(), llvm::StringRef::str(), and llvm::raw_string_ostream::str().

Variable Documentation

◆ AsmMacroMaxNestingDepth

cl::opt<unsigned> AsmMacroMaxNestingDepth("asm-macro-max-nesting-depth", cl::init(20), cl::Hidden, cl::desc("The maximum nesting depth allowed for assembly macros."))
static

Referenced by isOperator().