diff options
| author | 2018-04-06 14:26:03 +0000 | |
|---|---|---|
| committer | 2018-04-06 14:26:03 +0000 | |
| commit | bdabc2f19ffb9e20600dad6e8a300842a7bda50e (patch) | |
| tree | c50e7b2e5449b074651bb82a58517a8ebc4a8cf7 /gnu/llvm/lib/CodeGen/MIRParser/MILexer.cpp | |
| parent | Print a 'p' flag for file descriptors that were opened after pledge(2). (diff) | |
| download | wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.tar.xz wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.zip | |
Import LLVM 6.0.1 release including clang, lld and lldb.
"where is the kaboom?" deraadt@
Diffstat (limited to 'gnu/llvm/lib/CodeGen/MIRParser/MILexer.cpp')
| -rw-r--r-- | gnu/llvm/lib/CodeGen/MIRParser/MILexer.cpp | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/gnu/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/gnu/llvm/lib/CodeGen/MIRParser/MILexer.cpp index 58a655a4dee..6adb7f1288d 100644 --- a/gnu/llvm/lib/CodeGen/MIRParser/MILexer.cpp +++ b/gnu/llvm/lib/CodeGen/MIRParser/MILexer.cpp @@ -1,4 +1,4 @@ -//===- MILexer.cpp - Machine instructions lexer implementation ----------===// +//===- MILexer.cpp - Machine instructions lexer implementation ------------===// // // The LLVM Compiler Infrastructure // @@ -12,27 +12,33 @@ //===----------------------------------------------------------------------===// #include "MILexer.h" +#include "llvm/ADT/APSInt.h" #include "llvm/ADT/None.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringSwitch.h" +#include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" +#include <algorithm> +#include <cassert> #include <cctype> +#include <string> using namespace llvm; namespace { -typedef function_ref<void(StringRef::iterator Loc, const Twine &)> - ErrorCallbackType; +using ErrorCallbackType = + function_ref<void(StringRef::iterator Loc, const Twine &)>; /// This class provides a way to iterate and get characters from the source /// string. class Cursor { - const char *Ptr; - const char *End; + const char *Ptr = nullptr; + const char *End = nullptr; public: - Cursor(NoneType) : Ptr(nullptr), End(nullptr) {} + Cursor(NoneType) {} explicit Cursor(StringRef Str) { Ptr = Str.data(); @@ -202,14 +208,24 @@ static MIToken::TokenKind getIdentifierKind(StringRef Identifier) { .Case("internal", MIToken::kw_internal) .Case("early-clobber", MIToken::kw_early_clobber) .Case("debug-use", MIToken::kw_debug_use) + .Case("renamable", MIToken::kw_renamable) .Case("tied-def", MIToken::kw_tied_def) .Case("frame-setup", MIToken::kw_frame_setup) .Case("debug-location", MIToken::kw_debug_location) .Case("same_value", MIToken::kw_cfi_same_value) .Case("offset", MIToken::kw_cfi_offset) + .Case("rel_offset", MIToken::kw_cfi_rel_offset) .Case("def_cfa_register", MIToken::kw_cfi_def_cfa_register) .Case("def_cfa_offset", MIToken::kw_cfi_def_cfa_offset) + .Case("adjust_cfa_offset", MIToken::kw_cfi_adjust_cfa_offset) + .Case("escape", MIToken::kw_cfi_escape) .Case("def_cfa", MIToken::kw_cfi_def_cfa) + .Case("remember_state", MIToken::kw_cfi_remember_state) + .Case("restore", MIToken::kw_cfi_restore) + .Case("restore_state", MIToken::kw_cfi_restore_state) + .Case("undefined", MIToken::kw_cfi_undefined) + .Case("register", MIToken::kw_cfi_register) + .Case("window_save", MIToken::kw_cfi_window_save) .Case("blockaddress", MIToken::kw_blockaddress) .Case("intrinsic", MIToken::kw_intrinsic) .Case("target-index", MIToken::kw_target_index) @@ -270,6 +286,9 @@ static Cursor maybeLexMachineBasicBlock(Cursor C, MIToken &Token, C.advance(); StringRef Number = NumberRange.upto(C); unsigned StringOffset = PrefixLength + Number.size(); // Drop '%bb.<id>' + // TODO: The format bb.<id>.<irname> is supported only when it's not a + // reference. Once we deprecate the format where the irname shows up, we + // should only lex forward if it is a reference. if (C.peek() == '.') { C.advance(); // Skip '.' ++StringOffset; @@ -490,6 +509,7 @@ static MIToken::TokenKind getMetadataKeywordKind(StringRef Identifier) { .Case("!alias.scope", MIToken::md_alias_scope) .Case("!noalias", MIToken::md_noalias) .Case("!range", MIToken::md_range) + .Case("!DIExpression", MIToken::md_diexpr) .Default(MIToken::Error); } |
