LLVM 19.0.0git
Functions
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()

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

static MIToken::TokenKind getMetadataKeywordKind ( StringRef  Identifier)
static

◆ isIdentifierChar()

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

static bool isNewlineChar ( char  C)
static

◆ isRegisterChar()

static bool isRegisterChar ( char  C)
static

Returns true for a character allowed in a register name.

Definition at line 439 of file MILexer.cpp.

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

Referenced by lexNamedVirtualRegister(), and maybeLexRegister().

◆ isValidHexFloatingPointPrefix()

static bool isValidHexFloatingPointPrefix ( char  C)
static

Definition at line 550 of file MILexer.cpp.

References llvm::CallingConv::C.

Referenced by maybeLexHexadecimalLiteral().

◆ lexFloatingPointLiteral()

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

◆ lexName()

static Cursor lexName ( Cursor  C,
MIToken Token,
MIToken::TokenKind  Type,
unsigned  PrefixLength,
ErrorCallbackType  ErrorCallback 
)
static

◆ lexNamedVirtualRegister()

static Cursor lexNamedVirtualRegister ( Cursor  C,
MIToken Token 
)
static

◆ lexStringConstant()

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

static Cursor lexVirtualRegister ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexConstantPoolItem()

static Cursor maybeLexConstantPoolItem ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexEscapedIRValue()

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

◆ maybeLexExclaim()

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

◆ maybeLexExternalSymbol()

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

Definition at line 495 of file MILexer.cpp.

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

◆ maybeLexFixedStackObject()

static Cursor maybeLexFixedStackObject ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexGlobalValue()

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

◆ maybeLexHexadecimalLiteral()

static Cursor maybeLexHexadecimalLiteral ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexIdentifier()

static Cursor maybeLexIdentifier ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexIndex()

static Cursor maybeLexIndex ( Cursor  C,
MIToken Token,
StringRef  Rule,
MIToken::TokenKind  Kind 
)
static

◆ maybeLexIndexAndName()

static Cursor maybeLexIndexAndName ( Cursor  C,
MIToken Token,
StringRef  Rule,
MIToken::TokenKind  Kind 
)
static

◆ maybeLexIRBlock()

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

◆ maybeLexIRValue()

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

◆ maybeLexJumpTableIndex()

static Cursor maybeLexJumpTableIndex ( Cursor  C,
MIToken Token 
)
static

Definition at line 374 of file MILexer.cpp.

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

◆ maybeLexMachineBasicBlock()

static Cursor maybeLexMachineBasicBlock ( Cursor  C,
MIToken Token,
ErrorCallbackType  ErrorCallback 
)
static

◆ maybeLexMCSymbol()

static Cursor maybeLexMCSymbol ( Cursor  C,
MIToken Token,
ErrorCallbackType  ErrorCallback 
)
static

◆ maybeLexNewline()

static Cursor maybeLexNewline ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexNumericalLiteral()

static Cursor maybeLexNumericalLiteral ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexRegister()

static Cursor maybeLexRegister ( Cursor  C,
MIToken Token,
ErrorCallbackType  ErrorCallback 
)
static

◆ maybeLexStackObject()

static Cursor maybeLexStackObject ( Cursor  C,
MIToken Token 
)
static

◆ maybeLexStringConstant()

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

Definition at line 419 of file MILexer.cpp.

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

◆ maybeLexSubRegisterIndex()

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

◆ maybeLexSymbol()

static Cursor maybeLexSymbol ( Cursor  C,
MIToken Token 
)
static

◆ skipComment()

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

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

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

static MIToken::TokenKind symbolToken ( char  C)
static

◆ unescapeQuotedString()

static 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(), and llvm::CallingConv::C.

Referenced by lexName(), and maybeLexMCSymbol().