#include #include ">

LLVM: lib/CodeGen/MIRParser/MILexer.cpp File Reference (original) (raw)

#include "[MILexer.h](MILexer%5F8h%5Fsource.html)"
#include "[llvm/ADT/StringExtras.h](StringExtras%5F8h%5Fsource.html)"
#include "[llvm/ADT/StringSwitch.h](StringSwitch%5F8h%5Fsource.html)"
#include "[llvm/ADT/Twine.h](Twine%5F8h%5Fsource.html)"
#include <cassert>
#include <cctype>
#include <string>

Go to the source code of this file.

Functions
static Cursor skipWhitespace (Cursor C)
Skip the leading whitespace characters and return the updated cursor.
static bool isNewlineChar (char C)
static Cursor skipComment (Cursor C)
Skip a line comment and return the updated cursor.
static Cursor skipMachineOperandComment (Cursor C)
Machine operands can have comments, enclosed between /* and ‍/.
static bool isIdentifierChar (char C)
Return true if the given character satisfies the following regular expression: [-a-zA-Z$._0-9].
static std::string unescapeQuotedString (StringRef Value)
Unescapes the given string value.
static Cursor lexStringConstant (Cursor C, ErrorCallbackType ErrorCallback)
Lex a string constant using the following regular expression: "[^"]*".
static Cursor lexName (Cursor C, MIToken &Token, MIToken::TokenKind Type, unsigned PrefixLength, ErrorCallbackType ErrorCallback)
static MIToken::TokenKind getIdentifierKind (StringRef Identifier)
static Cursor maybeLexIdentifier (Cursor C, MIToken &Token)
static Cursor maybeLexMachineBasicBlock (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor maybeLexIndex (Cursor C, MIToken &Token, StringRef Rule, MIToken::TokenKind Kind)
static Cursor maybeLexIndexAndName (Cursor C, MIToken &Token, StringRef Rule, MIToken::TokenKind Kind)
static Cursor maybeLexJumpTableIndex (Cursor C, MIToken &Token)
static Cursor maybeLexStackObject (Cursor C, MIToken &Token)
static Cursor maybeLexFixedStackObject (Cursor C, MIToken &Token)
static Cursor maybeLexConstantPoolItem (Cursor C, MIToken &Token)
static Cursor maybeLexSubRegisterIndex (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor maybeLexIRBlock (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor maybeLexIRValue (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor maybeLexStringConstant (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor lexVirtualRegister (Cursor C, MIToken &Token)
static bool isRegisterChar (char C)
Returns true for a character allowed in a register name.
static Cursor lexNamedVirtualRegister (Cursor C, MIToken &Token)
static Cursor maybeLexRegister (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor maybeLexGlobalValue (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor maybeLexExternalSymbol (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static Cursor maybeLexMCSymbol (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static bool isValidHexFloatingPointPrefix (char C)
static Cursor lexFloatingPointLiteral (Cursor Range, Cursor C, MIToken &Token)
static Cursor maybeLexHexadecimalLiteral (Cursor C, MIToken &Token)
static Cursor maybeLexNumericalLiteral (Cursor C, MIToken &Token)
static MIToken::TokenKind getMetadataKeywordKind (StringRef Identifier)
static Cursor maybeLexExclaim (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)
static MIToken::TokenKind symbolToken (char C)
static Cursor maybeLexSymbol (Cursor C, MIToken &Token)
static Cursor maybeLexNewline (Cursor C, MIToken &Token)
static Cursor maybeLexEscapedIRValue (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback)

getIdentifierKind()

Definition at line 190 of file MILexer.cpp.

References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::MIToken::Identifier, llvm::MIToken::kw_addrspace, llvm::MIToken::kw_afn, llvm::MIToken::kw_align, llvm::MIToken::kw_arcp, llvm::MIToken::kw_basealign, llvm::MIToken::kw_bb_id, llvm::MIToken::kw_bbsections, llvm::MIToken::kw_bfloat, llvm::MIToken::kw_blockaddress, llvm::MIToken::kw_call_entry, llvm::MIToken::kw_call_frame_size, llvm::MIToken::kw_cfi_aarch64_negate_ra_sign_state, llvm::MIToken::kw_cfi_aarch64_negate_ra_sign_state_with_pc, llvm::MIToken::kw_cfi_adjust_cfa_offset, llvm::MIToken::kw_cfi_def_cfa, llvm::MIToken::kw_cfi_def_cfa_offset, llvm::MIToken::kw_cfi_def_cfa_register, llvm::MIToken::kw_cfi_escape, llvm::MIToken::kw_cfi_llvm_def_aspace_cfa, llvm::MIToken::kw_cfi_offset, llvm::MIToken::kw_cfi_register, llvm::MIToken::kw_cfi_rel_offset, llvm::MIToken::kw_cfi_remember_state, llvm::MIToken::kw_cfi_restore, llvm::MIToken::kw_cfi_restore_state, llvm::MIToken::kw_cfi_same_value, llvm::MIToken::kw_cfi_type, llvm::MIToken::kw_cfi_undefined, llvm::MIToken::kw_cfi_window_save, llvm::MIToken::kw_constant_pool, llvm::MIToken::kw_contract, llvm::MIToken::kw_custom, llvm::MIToken::kw_dbg_instr_ref, llvm::MIToken::kw_deactivation_symbol, llvm::MIToken::kw_dead, llvm::MIToken::kw_debug_instr_number, llvm::MIToken::kw_debug_location, llvm::MIToken::kw_debug_use, llvm::MIToken::kw_def, llvm::MIToken::kw_dereferenceable, llvm::MIToken::kw_disjoint, llvm::MIToken::kw_distinct, llvm::MIToken::kw_double, llvm::MIToken::kw_early_clobber, llvm::MIToken::kw_ehfunclet_entry, llvm::MIToken::kw_exact, llvm::MIToken::kw_float, llvm::MIToken::kw_floatpred, llvm::MIToken::kw_fp128, llvm::MIToken::kw_frame_destroy, llvm::MIToken::kw_frame_setup, llvm::MIToken::kw_got, llvm::MIToken::kw_half, llvm::MIToken::kw_heap_alloc_marker, llvm::MIToken::kw_implicit, llvm::MIToken::kw_implicit_define, llvm::MIToken::kw_inbounds, llvm::MIToken::kw_inlineasm_br_indirect_target, llvm::MIToken::kw_internal, llvm::MIToken::kw_intpred, llvm::MIToken::kw_intrinsic, llvm::MIToken::kw_invariant, llvm::MIToken::kw_ir_block_address_taken, llvm::MIToken::kw_jump_table, llvm::MIToken::kw_killed, llvm::MIToken::kw_landing_pad, llvm::MIToken::kw_lanemask, llvm::MIToken::kw_liveins, llvm::MIToken::kw_liveout, llvm::MIToken::kw_machine_block_address_taken, llvm::MIToken::kw_ninf, llvm::MIToken::kw_nnan, llvm::MIToken::kw_nneg, llvm::MIToken::kw_noconvergent, llvm::MIToken::kw_nofpexcept, llvm::MIToken::kw_non_temporal, llvm::MIToken::kw_nsw, llvm::MIToken::kw_nsz, llvm::MIToken::kw_nusw, llvm::MIToken::kw_nuw, llvm::MIToken::kw_pcsections, llvm::MIToken::kw_post_instr_symbol, llvm::MIToken::kw_ppc_fp128, llvm::MIToken::kw_pre_instr_symbol, llvm::MIToken::kw_reassoc, llvm::MIToken::kw_renamable, llvm::MIToken::kw_samesign, llvm::MIToken::kw_shufflemask, llvm::MIToken::kw_stack, llvm::MIToken::kw_successors, llvm::MIToken::kw_target_flags, llvm::MIToken::kw_target_index, llvm::MIToken::kw_tied_def, llvm::MIToken::kw_undef, llvm::MIToken::kw_unknown_address, llvm::MIToken::kw_unknown_size, llvm::MIToken::kw_unpredictable, llvm::MIToken::kw_volatile, llvm::MIToken::kw_x86_fp80, and llvm::MIToken::underscore.

Referenced by maybeLexIdentifier().

getMetadataKeywordKind()

Definition at line 614 of file MILexer.cpp.

References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::MIToken::Error, llvm::MIToken::md_alias_scope, llvm::MIToken::md_diexpr, llvm::MIToken::md_dilocation, llvm::MIToken::md_noalias, llvm::MIToken::md_noalias_addrspace, llvm::MIToken::md_range, and llvm::MIToken::md_tbaa.

Referenced by maybeLexExclaim().

isIdentifierChar()

isNewlineChar()

isRegisterChar()

isValidHexFloatingPointPrefix()

bool isValidHexFloatingPointPrefix ( char C) static

lexFloatingPointLiteral()

Cursor lexFloatingPointLiteral ( Cursor Range, Cursor C, MIToken & Token ) static

lexName()

Definition at line 168 of file MILexer.cpp.

References llvm::CallingConv::C, llvm::MIToken::Error, isIdentifierChar(), lexStringConstant(), Range, llvm::MIToken::reset(), llvm::MIToken::setOwnedStringValue(), llvm::MIToken::setStringValue(), llvm::String, and unescapeQuotedString().

Referenced by maybeLexExternalSymbol(), maybeLexGlobalValue(), maybeLexIRBlock(), maybeLexIRValue(), maybeLexStringConstant(), and maybeLexSubRegisterIndex().

lexNamedVirtualRegister()

Cursor lexNamedVirtualRegister ( Cursor C, MIToken & Token ) static

lexStringConstant()

lexVirtualRegister()

Cursor lexVirtualRegister ( Cursor C, MIToken & Token ) static

maybeLexConstantPoolItem()

Cursor maybeLexConstantPoolItem ( Cursor C, MIToken & Token ) static

maybeLexEscapedIRValue()

maybeLexExclaim()

maybeLexExternalSymbol()

maybeLexFixedStackObject()

Cursor maybeLexFixedStackObject ( Cursor C, MIToken & Token ) static

maybeLexGlobalValue()

maybeLexHexadecimalLiteral()

Cursor maybeLexHexadecimalLiteral ( Cursor C, MIToken & Token ) static

maybeLexIdentifier()

Cursor maybeLexIdentifier ( Cursor C, MIToken & Token ) static

maybeLexIndex()

maybeLexIndexAndName()

maybeLexIRBlock()

maybeLexIRValue()

maybeLexJumpTableIndex()

Cursor maybeLexJumpTableIndex ( Cursor C, MIToken & Token ) static

maybeLexMachineBasicBlock()

maybeLexMCSymbol()

Definition at line 511 of file MILexer.cpp.

References llvm::CallingConv::C, llvm::MIToken::Error, isIdentifierChar(), lexStringConstant(), llvm::MIToken::MCSymbol, llvm::MIToken::reset(), llvm::MIToken::setOwnedStringValue(), llvm::MIToken::setStringValue(), llvm::StringRef::size(), llvm::String, and unescapeQuotedString().

maybeLexNewline()

Cursor maybeLexNewline ( Cursor C, MIToken & Token ) static

maybeLexNumericalLiteral()

Cursor maybeLexNumericalLiteral ( Cursor C, MIToken & Token ) static

maybeLexRegister()

maybeLexStackObject()

Cursor maybeLexStackObject ( Cursor C, MIToken & Token ) static

maybeLexStringConstant()

maybeLexSubRegisterIndex()

maybeLexSymbol()

Cursor maybeLexSymbol ( Cursor C, MIToken & Token ) static

skipComment()

Cursor skipComment ( Cursor C) static

skipMachineOperandComment()

Cursor skipMachineOperandComment ( Cursor C) static

Machine operands can have comments, enclosed between /* and ‍/.

This eats up all tokens, including / and *‍/.

Definition at line 104 of file MILexer.cpp.

References llvm::CallingConv::C.

skipWhitespace()

Cursor skipWhitespace ( Cursor C) static

symbolToken()

Definition at line 646 of file MILexer.cpp.

References llvm::CallingConv::C, llvm::MIToken::colon, llvm::MIToken::comma, llvm::MIToken::dot, llvm::MIToken::equal, llvm::MIToken::Error, llvm::MIToken::greater, llvm::MIToken::lbrace, llvm::MIToken::less, llvm::MIToken::lparen, llvm::MIToken::minus, llvm::MIToken::plus, llvm::MIToken::rbrace, and llvm::MIToken::rparen.

Referenced by maybeLexSymbol().

unescapeQuotedString()