Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
MILexer.cpp File Reference
#include "MILexer.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#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)

Function Documentation

◆ getIdentifierKind()

MIToken::TokenKind getIdentifierKind ( StringRef Identifier)
static

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_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_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()

◆ isIdentifierChar()

bool isIdentifierChar ( char C)
static

Return true if the given character satisfies the following regular expression: [-a-zA-Z$._0-9].

Definition at line 118 of file MILexer.cpp.

References llvm::CallingConv::C.

Referenced by isRegisterChar(), lexName(), maybeLexExclaim(), maybeLexIdentifier(), maybeLexIndexAndName(), maybeLexMachineBasicBlock(), and maybeLexMCSymbol().

◆ isNewlineChar()

bool isNewlineChar ( char C)
static

◆ isRegisterChar()

bool isRegisterChar ( char C)
static

Returns true for a character allowed in a register name.

Definition at line 445 of file MILexer.cpp.

References llvm::CallingConv::C, and isIdentifierChar().

Referenced by lexNamedVirtualRegister(), and maybeLexRegister().

◆ isValidHexFloatingPointPrefix()

bool isValidHexFloatingPointPrefix ( char C)
static

Definition at line 556 of file MILexer.cpp.

References llvm::CallingConv::C.

Referenced by maybeLexHexadecimalLiteral().

◆ lexFloatingPointLiteral()

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

◆ lexName()

◆ lexNamedVirtualRegister()

Cursor lexNamedVirtualRegister ( Cursor C,
MIToken & Token )
static

◆ lexStringConstant()

Cursor lexStringConstant ( Cursor C,
ErrorCallbackType ErrorCallback )
static

Lex a string constant using the following regular expression: "[^"]*".

Definition at line 154 of file MILexer.cpp.

References assert(), llvm::CallingConv::C, and isNewlineChar().

Referenced by lexName(), and maybeLexMCSymbol().

◆ lexVirtualRegister()

Cursor lexVirtualRegister ( Cursor C,
MIToken & Token )
static

◆ maybeLexConstantPoolItem()

Cursor maybeLexConstantPoolItem ( Cursor C,
MIToken & Token )
static

◆ maybeLexEscapedIRValue()

Cursor maybeLexEscapedIRValue ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

◆ maybeLexExclaim()

Cursor maybeLexExclaim ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

◆ maybeLexExternalSymbol()

Cursor maybeLexExternalSymbol ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

Definition at line 501 of file MILexer.cpp.

References llvm::CallingConv::C, llvm::MIToken::ExternalSymbol, and lexName().

◆ maybeLexFixedStackObject()

Cursor maybeLexFixedStackObject ( Cursor C,
MIToken & Token )
static

◆ maybeLexGlobalValue()

Cursor maybeLexGlobalValue ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

◆ maybeLexHexadecimalLiteral()

Cursor maybeLexHexadecimalLiteral ( Cursor C,
MIToken & Token )
static

◆ maybeLexIdentifier()

Cursor maybeLexIdentifier ( Cursor C,
MIToken & Token )
static

◆ maybeLexIndex()

◆ maybeLexIndexAndName()

◆ maybeLexIRBlock()

Cursor maybeLexIRBlock ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

◆ maybeLexIRValue()

Cursor maybeLexIRValue ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

◆ maybeLexJumpTableIndex()

Cursor maybeLexJumpTableIndex ( Cursor C,
MIToken & Token )
static

Definition at line 380 of file MILexer.cpp.

References llvm::CallingConv::C, llvm::MIToken::JumpTableIndex, and maybeLexIndex().

◆ maybeLexMachineBasicBlock()

◆ maybeLexMCSymbol()

◆ 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()

Cursor maybeLexStringConstant ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

Definition at line 425 of file MILexer.cpp.

References llvm::CallingConv::C, lexName(), and llvm::MIToken::StringConstant.

◆ maybeLexSubRegisterIndex()

Cursor maybeLexSubRegisterIndex ( Cursor C,
MIToken & Token,
ErrorCallbackType ErrorCallback )
static

◆ maybeLexSymbol()

Cursor maybeLexSymbol ( Cursor C,
MIToken & Token )
static

◆ skipComment()

Cursor skipComment ( Cursor C)
static

Skip a line comment and return the updated cursor.

Definition at line 94 of file MILexer.cpp.

References llvm::CallingConv::C, and isNewlineChar().

◆ 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

Skip the leading whitespace characters and return the updated cursor.

Definition at line 85 of file MILexer.cpp.

References llvm::CallingConv::C.

◆ symbolToken()

◆ unescapeQuotedString()

std::string unescapeQuotedString ( StringRef Value)
static

Unescapes the given string value.

Expects the string value to be quoted.

Definition at line 126 of file MILexer.cpp.

References assert(), llvm::CallingConv::C, and llvm::hexDigitValue().

Referenced by lexName(), and maybeLexMCSymbol().