You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.207
Former-commit-id: 3b152f462918d427ce18620a2cbe4f8b79650449
This commit is contained in:
parent
8e12397d70
commit
eb85e2fc17
12
external/llvm/lib/AsmParser/CMakeLists.txt
vendored
12
external/llvm/lib/AsmParser/CMakeLists.txt
vendored
@ -1,12 +0,0 @@
|
||||
# AsmParser
|
||||
add_llvm_library(LLVMAsmParser
|
||||
LLLexer.cpp
|
||||
LLParser.cpp
|
||||
Parser.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
${LLVM_MAIN_INCLUDE_DIR}/llvm/Analysis
|
||||
|
||||
DEPENDS
|
||||
intrinsics_gen
|
||||
)
|
1028
external/llvm/lib/AsmParser/LLLexer.cpp
vendored
1028
external/llvm/lib/AsmParser/LLLexer.cpp
vendored
File diff suppressed because it is too large
Load Diff
96
external/llvm/lib/AsmParser/LLLexer.h
vendored
96
external/llvm/lib/AsmParser/LLLexer.h
vendored
@ -1,96 +0,0 @@
|
||||
//===- LLLexer.h - Lexer for LLVM Assembly Files ----------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This class represents the Lexer for .ll files.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIB_ASMPARSER_LLLEXER_H
|
||||
#define LLVM_LIB_ASMPARSER_LLLEXER_H
|
||||
|
||||
#include "LLToken.h"
|
||||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/APSInt.h"
|
||||
#include "llvm/Support/SourceMgr.h"
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
class MemoryBuffer;
|
||||
class Type;
|
||||
class SMDiagnostic;
|
||||
class LLVMContext;
|
||||
|
||||
class LLLexer {
|
||||
const char *CurPtr;
|
||||
StringRef CurBuf;
|
||||
SMDiagnostic &ErrorInfo;
|
||||
SourceMgr &SM;
|
||||
LLVMContext &Context;
|
||||
|
||||
// Information about the current token.
|
||||
const char *TokStart;
|
||||
lltok::Kind CurKind;
|
||||
std::string StrVal;
|
||||
unsigned UIntVal;
|
||||
Type *TyVal;
|
||||
APFloat APFloatVal;
|
||||
APSInt APSIntVal;
|
||||
|
||||
public:
|
||||
explicit LLLexer(StringRef StartBuf, SourceMgr &SM, SMDiagnostic &,
|
||||
LLVMContext &C);
|
||||
|
||||
lltok::Kind Lex() {
|
||||
return CurKind = LexToken();
|
||||
}
|
||||
|
||||
typedef SMLoc LocTy;
|
||||
LocTy getLoc() const { return SMLoc::getFromPointer(TokStart); }
|
||||
lltok::Kind getKind() const { return CurKind; }
|
||||
const std::string &getStrVal() const { return StrVal; }
|
||||
Type *getTyVal() const { return TyVal; }
|
||||
unsigned getUIntVal() const { return UIntVal; }
|
||||
const APSInt &getAPSIntVal() const { return APSIntVal; }
|
||||
const APFloat &getAPFloatVal() const { return APFloatVal; }
|
||||
|
||||
|
||||
bool Error(LocTy L, const Twine &Msg) const;
|
||||
bool Error(const Twine &Msg) const { return Error(getLoc(), Msg); }
|
||||
|
||||
void Warning(LocTy WarningLoc, const Twine &Msg) const;
|
||||
void Warning(const Twine &Msg) const { return Warning(getLoc(), Msg); }
|
||||
|
||||
private:
|
||||
lltok::Kind LexToken();
|
||||
|
||||
int getNextChar();
|
||||
void SkipLineComment();
|
||||
lltok::Kind ReadString(lltok::Kind kind);
|
||||
bool ReadVarName();
|
||||
|
||||
lltok::Kind LexIdentifier();
|
||||
lltok::Kind LexDigitOrNegative();
|
||||
lltok::Kind LexPositive();
|
||||
lltok::Kind LexAt();
|
||||
lltok::Kind LexDollar();
|
||||
lltok::Kind LexExclaim();
|
||||
lltok::Kind LexPercent();
|
||||
lltok::Kind LexVar(lltok::Kind Var, lltok::Kind VarID);
|
||||
lltok::Kind LexQuote();
|
||||
lltok::Kind Lex0x();
|
||||
lltok::Kind LexHash();
|
||||
|
||||
uint64_t atoull(const char *Buffer, const char *End);
|
||||
uint64_t HexIntToVal(const char *Buffer, const char *End);
|
||||
void HexToIntPair(const char *Buffer, const char *End, uint64_t Pair[2]);
|
||||
void FP80HexToIntPair(const char *Buff, const char *End, uint64_t Pair[2]);
|
||||
};
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
@ -1 +0,0 @@
|
||||
c3ab95550e03ef13ac1659a06bb35485f443d1ad
|
526
external/llvm/lib/AsmParser/LLParser.h
vendored
526
external/llvm/lib/AsmParser/LLParser.h
vendored
File diff suppressed because it is too large
Load Diff
379
external/llvm/lib/AsmParser/LLToken.h
vendored
379
external/llvm/lib/AsmParser/LLToken.h
vendored
@ -1,379 +0,0 @@
|
||||
//===- LLToken.h - Token Codes for LLVM Assembly Files ----------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines the enums for the .ll lexer.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIB_ASMPARSER_LLTOKEN_H
|
||||
#define LLVM_LIB_ASMPARSER_LLTOKEN_H
|
||||
|
||||
namespace llvm {
|
||||
namespace lltok {
|
||||
enum Kind {
|
||||
// Markers
|
||||
Eof,
|
||||
Error,
|
||||
|
||||
// Tokens with no info.
|
||||
dotdotdot, // ...
|
||||
equal,
|
||||
comma, // = ,
|
||||
star, // *
|
||||
lsquare,
|
||||
rsquare, // [ ]
|
||||
lbrace,
|
||||
rbrace, // { }
|
||||
less,
|
||||
greater, // < >
|
||||
lparen,
|
||||
rparen, // ( )
|
||||
exclaim, // !
|
||||
bar, // |
|
||||
|
||||
kw_x,
|
||||
kw_true,
|
||||
kw_false,
|
||||
kw_declare,
|
||||
kw_define,
|
||||
kw_global,
|
||||
kw_constant,
|
||||
|
||||
kw_dso_local,
|
||||
kw_dso_preemptable,
|
||||
|
||||
kw_private,
|
||||
kw_internal,
|
||||
kw_linkonce,
|
||||
kw_linkonce_odr,
|
||||
kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
|
||||
kw_weak_odr,
|
||||
kw_appending,
|
||||
kw_dllimport,
|
||||
kw_dllexport,
|
||||
kw_common,
|
||||
kw_available_externally,
|
||||
kw_default,
|
||||
kw_hidden,
|
||||
kw_protected,
|
||||
kw_unnamed_addr,
|
||||
kw_local_unnamed_addr,
|
||||
kw_externally_initialized,
|
||||
kw_extern_weak,
|
||||
kw_external,
|
||||
kw_thread_local,
|
||||
kw_localdynamic,
|
||||
kw_initialexec,
|
||||
kw_localexec,
|
||||
kw_zeroinitializer,
|
||||
kw_undef,
|
||||
kw_null,
|
||||
kw_none,
|
||||
kw_to,
|
||||
kw_caller,
|
||||
kw_within,
|
||||
kw_from,
|
||||
kw_tail,
|
||||
kw_musttail,
|
||||
kw_notail,
|
||||
kw_target,
|
||||
kw_triple,
|
||||
kw_source_filename,
|
||||
kw_unwind,
|
||||
kw_deplibs, // FIXME: Remove in 4.0
|
||||
kw_datalayout,
|
||||
kw_volatile,
|
||||
kw_atomic,
|
||||
kw_unordered,
|
||||
kw_monotonic,
|
||||
kw_acquire,
|
||||
kw_release,
|
||||
kw_acq_rel,
|
||||
kw_seq_cst,
|
||||
kw_syncscope,
|
||||
kw_nnan,
|
||||
kw_ninf,
|
||||
kw_nsz,
|
||||
kw_arcp,
|
||||
kw_contract,
|
||||
kw_reassoc,
|
||||
kw_afn,
|
||||
kw_fast,
|
||||
kw_nuw,
|
||||
kw_nsw,
|
||||
kw_exact,
|
||||
kw_inbounds,
|
||||
kw_inrange,
|
||||
kw_align,
|
||||
kw_addrspace,
|
||||
kw_section,
|
||||
kw_alias,
|
||||
kw_ifunc,
|
||||
kw_module,
|
||||
kw_asm,
|
||||
kw_sideeffect,
|
||||
kw_alignstack,
|
||||
kw_inteldialect,
|
||||
kw_gc,
|
||||
kw_prefix,
|
||||
kw_prologue,
|
||||
kw_c,
|
||||
|
||||
kw_cc,
|
||||
kw_ccc,
|
||||
kw_fastcc,
|
||||
kw_coldcc,
|
||||
kw_intel_ocl_bicc,
|
||||
kw_x86_stdcallcc,
|
||||
kw_x86_fastcallcc,
|
||||
kw_x86_thiscallcc,
|
||||
kw_x86_vectorcallcc,
|
||||
kw_x86_regcallcc,
|
||||
kw_arm_apcscc,
|
||||
kw_arm_aapcscc,
|
||||
kw_arm_aapcs_vfpcc,
|
||||
kw_msp430_intrcc,
|
||||
kw_avr_intrcc,
|
||||
kw_avr_signalcc,
|
||||
kw_ptx_kernel,
|
||||
kw_ptx_device,
|
||||
kw_spir_kernel,
|
||||
kw_spir_func,
|
||||
kw_x86_64_sysvcc,
|
||||
kw_win64cc,
|
||||
kw_webkit_jscc,
|
||||
kw_anyregcc,
|
||||
kw_swiftcc,
|
||||
kw_preserve_mostcc,
|
||||
kw_preserve_allcc,
|
||||
kw_ghccc,
|
||||
kw_x86_intrcc,
|
||||
kw_hhvmcc,
|
||||
kw_hhvm_ccc,
|
||||
kw_cxx_fast_tlscc,
|
||||
kw_amdgpu_vs,
|
||||
kw_amdgpu_ls,
|
||||
kw_amdgpu_hs,
|
||||
kw_amdgpu_es,
|
||||
kw_amdgpu_gs,
|
||||
kw_amdgpu_ps,
|
||||
kw_amdgpu_cs,
|
||||
kw_amdgpu_kernel,
|
||||
|
||||
// Attributes:
|
||||
kw_attributes,
|
||||
kw_allocsize,
|
||||
kw_alwaysinline,
|
||||
kw_argmemonly,
|
||||
kw_sanitize_address,
|
||||
kw_sanitize_hwaddress,
|
||||
kw_builtin,
|
||||
kw_byval,
|
||||
kw_inalloca,
|
||||
kw_cold,
|
||||
kw_convergent,
|
||||
kw_dereferenceable,
|
||||
kw_dereferenceable_or_null,
|
||||
kw_inaccessiblememonly,
|
||||
kw_inaccessiblemem_or_argmemonly,
|
||||
kw_inlinehint,
|
||||
kw_inreg,
|
||||
kw_jumptable,
|
||||
kw_minsize,
|
||||
kw_naked,
|
||||
kw_nest,
|
||||
kw_noalias,
|
||||
kw_nobuiltin,
|
||||
kw_nocapture,
|
||||
kw_noduplicate,
|
||||
kw_noimplicitfloat,
|
||||
kw_noinline,
|
||||
kw_norecurse,
|
||||
kw_nonlazybind,
|
||||
kw_nonnull,
|
||||
kw_noredzone,
|
||||
kw_noreturn,
|
||||
kw_nounwind,
|
||||
kw_optnone,
|
||||
kw_optsize,
|
||||
kw_readnone,
|
||||
kw_readonly,
|
||||
kw_returned,
|
||||
kw_returns_twice,
|
||||
kw_signext,
|
||||
kw_speculatable,
|
||||
kw_ssp,
|
||||
kw_sspreq,
|
||||
kw_sspstrong,
|
||||
kw_safestack,
|
||||
kw_sret,
|
||||
kw_sanitize_thread,
|
||||
kw_sanitize_memory,
|
||||
kw_strictfp,
|
||||
kw_swifterror,
|
||||
kw_swiftself,
|
||||
kw_uwtable,
|
||||
kw_writeonly,
|
||||
kw_zeroext,
|
||||
|
||||
kw_type,
|
||||
kw_opaque,
|
||||
|
||||
kw_comdat,
|
||||
|
||||
// Comdat types
|
||||
kw_any,
|
||||
kw_exactmatch,
|
||||
kw_largest,
|
||||
kw_noduplicates,
|
||||
kw_samesize,
|
||||
|
||||
kw_eq,
|
||||
kw_ne,
|
||||
kw_slt,
|
||||
kw_sgt,
|
||||
kw_sle,
|
||||
kw_sge,
|
||||
kw_ult,
|
||||
kw_ugt,
|
||||
kw_ule,
|
||||
kw_uge,
|
||||
kw_oeq,
|
||||
kw_one,
|
||||
kw_olt,
|
||||
kw_ogt,
|
||||
kw_ole,
|
||||
kw_oge,
|
||||
kw_ord,
|
||||
kw_uno,
|
||||
kw_ueq,
|
||||
kw_une,
|
||||
|
||||
// atomicrmw operations that aren't also instruction keywords.
|
||||
kw_xchg,
|
||||
kw_nand,
|
||||
kw_max,
|
||||
kw_min,
|
||||
kw_umax,
|
||||
kw_umin,
|
||||
|
||||
// Instruction Opcodes (Opcode in UIntVal).
|
||||
kw_add,
|
||||
kw_fadd,
|
||||
kw_sub,
|
||||
kw_fsub,
|
||||
kw_mul,
|
||||
kw_fmul,
|
||||
kw_udiv,
|
||||
kw_sdiv,
|
||||
kw_fdiv,
|
||||
kw_urem,
|
||||
kw_srem,
|
||||
kw_frem,
|
||||
kw_shl,
|
||||
kw_lshr,
|
||||
kw_ashr,
|
||||
kw_and,
|
||||
kw_or,
|
||||
kw_xor,
|
||||
kw_icmp,
|
||||
kw_fcmp,
|
||||
|
||||
kw_phi,
|
||||
kw_call,
|
||||
kw_trunc,
|
||||
kw_zext,
|
||||
kw_sext,
|
||||
kw_fptrunc,
|
||||
kw_fpext,
|
||||
kw_uitofp,
|
||||
kw_sitofp,
|
||||
kw_fptoui,
|
||||
kw_fptosi,
|
||||
kw_inttoptr,
|
||||
kw_ptrtoint,
|
||||
kw_bitcast,
|
||||
kw_addrspacecast,
|
||||
kw_select,
|
||||
kw_va_arg,
|
||||
|
||||
kw_landingpad,
|
||||
kw_personality,
|
||||
kw_cleanup,
|
||||
kw_catch,
|
||||
kw_filter,
|
||||
|
||||
kw_ret,
|
||||
kw_br,
|
||||
kw_switch,
|
||||
kw_indirectbr,
|
||||
kw_invoke,
|
||||
kw_resume,
|
||||
kw_unreachable,
|
||||
kw_cleanupret,
|
||||
kw_catchswitch,
|
||||
kw_catchret,
|
||||
kw_catchpad,
|
||||
kw_cleanuppad,
|
||||
|
||||
kw_alloca,
|
||||
kw_load,
|
||||
kw_store,
|
||||
kw_fence,
|
||||
kw_cmpxchg,
|
||||
kw_atomicrmw,
|
||||
kw_getelementptr,
|
||||
|
||||
kw_extractelement,
|
||||
kw_insertelement,
|
||||
kw_shufflevector,
|
||||
kw_extractvalue,
|
||||
kw_insertvalue,
|
||||
kw_blockaddress,
|
||||
|
||||
// Metadata types.
|
||||
kw_distinct,
|
||||
|
||||
// Use-list order directives.
|
||||
kw_uselistorder,
|
||||
kw_uselistorder_bb,
|
||||
|
||||
// Unsigned Valued tokens (UIntVal).
|
||||
GlobalID, // @42
|
||||
LocalVarID, // %42
|
||||
AttrGrpID, // #42
|
||||
|
||||
// String valued tokens (StrVal).
|
||||
LabelStr, // foo:
|
||||
GlobalVar, // @foo @"foo"
|
||||
ComdatVar, // $foo
|
||||
LocalVar, // %foo %"foo"
|
||||
MetadataVar, // !foo
|
||||
StringConstant, // "foo"
|
||||
DwarfTag, // DW_TAG_foo
|
||||
DwarfAttEncoding, // DW_ATE_foo
|
||||
DwarfVirtuality, // DW_VIRTUALITY_foo
|
||||
DwarfLang, // DW_LANG_foo
|
||||
DwarfCC, // DW_CC_foo
|
||||
EmissionKind, // lineTablesOnly
|
||||
DwarfOp, // DW_OP_foo
|
||||
DIFlag, // DIFlagFoo
|
||||
DwarfMacinfo, // DW_MACINFO_foo
|
||||
ChecksumKind, // CSK_foo
|
||||
|
||||
// Type valued tokens (TyVal).
|
||||
Type,
|
||||
|
||||
APFloat, // APFloatVal
|
||||
APSInt // APSInt
|
||||
};
|
||||
} // end namespace lltok
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
22
external/llvm/lib/AsmParser/LLVMBuild.txt
vendored
22
external/llvm/lib/AsmParser/LLVMBuild.txt
vendored
@ -1,22 +0,0 @@
|
||||
;===- ./lib/AsmParser/LLVMBuild.txt ----------------------------*- Conf -*--===;
|
||||
;
|
||||
; The LLVM Compiler Infrastructure
|
||||
;
|
||||
; This file is distributed under the University of Illinois Open Source
|
||||
; License. See LICENSE.TXT for details.
|
||||
;
|
||||
;===------------------------------------------------------------------------===;
|
||||
;
|
||||
; This is an LLVMBuild description file for the components in this subdirectory.
|
||||
;
|
||||
; For more information on the LLVMBuild system, please see:
|
||||
;
|
||||
; http://llvm.org/docs/LLVMBuild.html
|
||||
;
|
||||
;===------------------------------------------------------------------------===;
|
||||
|
||||
[component_0]
|
||||
type = Library
|
||||
name = AsmParser
|
||||
parent = Libraries
|
||||
required_libraries = BinaryFormat Core Support
|
111
external/llvm/lib/AsmParser/Parser.cpp
vendored
111
external/llvm/lib/AsmParser/Parser.cpp
vendored
@ -1,111 +0,0 @@
|
||||
//===- Parser.cpp - Main dispatch module for the Parser library -----------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This library implements the functionality defined in llvm/AsmParser/Parser.h
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/AsmParser/Parser.h"
|
||||
#include "LLParser.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/SourceMgr.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <cstring>
|
||||
#include <system_error>
|
||||
using namespace llvm;
|
||||
|
||||
bool llvm::parseAssemblyInto(MemoryBufferRef F, Module &M, SMDiagnostic &Err,
|
||||
SlotMapping *Slots, bool UpgradeDebugInfo) {
|
||||
SourceMgr SM;
|
||||
std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(F);
|
||||
SM.AddNewSourceBuffer(std::move(Buf), SMLoc());
|
||||
|
||||
return LLParser(F.getBuffer(), SM, Err, &M, Slots, UpgradeDebugInfo).Run();
|
||||
}
|
||||
|
||||
std::unique_ptr<Module>
|
||||
llvm::parseAssembly(MemoryBufferRef F, SMDiagnostic &Err, LLVMContext &Context,
|
||||
SlotMapping *Slots, bool UpgradeDebugInfo) {
|
||||
std::unique_ptr<Module> M =
|
||||
make_unique<Module>(F.getBufferIdentifier(), Context);
|
||||
|
||||
if (parseAssemblyInto(F, *M, Err, Slots, UpgradeDebugInfo))
|
||||
return nullptr;
|
||||
|
||||
return M;
|
||||
}
|
||||
|
||||
std::unique_ptr<Module> llvm::parseAssemblyFile(StringRef Filename,
|
||||
SMDiagnostic &Err,
|
||||
LLVMContext &Context,
|
||||
SlotMapping *Slots,
|
||||
bool UpgradeDebugInfo) {
|
||||
ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
|
||||
MemoryBuffer::getFileOrSTDIN(Filename);
|
||||
if (std::error_code EC = FileOrErr.getError()) {
|
||||
Err = SMDiagnostic(Filename, SourceMgr::DK_Error,
|
||||
"Could not open input file: " + EC.message());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return parseAssembly(FileOrErr.get()->getMemBufferRef(), Err, Context, Slots,
|
||||
UpgradeDebugInfo);
|
||||
}
|
||||
|
||||
std::unique_ptr<Module> llvm::parseAssemblyString(StringRef AsmString,
|
||||
SMDiagnostic &Err,
|
||||
LLVMContext &Context,
|
||||
SlotMapping *Slots,
|
||||
bool UpgradeDebugInfo) {
|
||||
MemoryBufferRef F(AsmString, "<string>");
|
||||
return parseAssembly(F, Err, Context, Slots, UpgradeDebugInfo);
|
||||
}
|
||||
|
||||
Constant *llvm::parseConstantValue(StringRef Asm, SMDiagnostic &Err,
|
||||
const Module &M, const SlotMapping *Slots) {
|
||||
SourceMgr SM;
|
||||
std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Asm);
|
||||
SM.AddNewSourceBuffer(std::move(Buf), SMLoc());
|
||||
Constant *C;
|
||||
if (LLParser(Asm, SM, Err, const_cast<Module *>(&M))
|
||||
.parseStandaloneConstantValue(C, Slots))
|
||||
return nullptr;
|
||||
return C;
|
||||
}
|
||||
|
||||
Type *llvm::parseType(StringRef Asm, SMDiagnostic &Err, const Module &M,
|
||||
const SlotMapping *Slots) {
|
||||
unsigned Read;
|
||||
Type *Ty = parseTypeAtBeginning(Asm, Read, Err, M, Slots);
|
||||
if (!Ty)
|
||||
return nullptr;
|
||||
if (Read != Asm.size()) {
|
||||
SourceMgr SM;
|
||||
std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Asm);
|
||||
SM.AddNewSourceBuffer(std::move(Buf), SMLoc());
|
||||
Err = SM.GetMessage(SMLoc::getFromPointer(Asm.begin() + Read),
|
||||
SourceMgr::DK_Error, "expected end of string");
|
||||
return nullptr;
|
||||
}
|
||||
return Ty;
|
||||
}
|
||||
Type *llvm::parseTypeAtBeginning(StringRef Asm, unsigned &Read,
|
||||
SMDiagnostic &Err, const Module &M,
|
||||
const SlotMapping *Slots) {
|
||||
SourceMgr SM;
|
||||
std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Asm);
|
||||
SM.AddNewSourceBuffer(std::move(Buf), SMLoc());
|
||||
Type *Ty;
|
||||
if (LLParser(Asm, SM, Err, const_cast<Module *>(&M))
|
||||
.parseTypeAtBeginning(Ty, Read, Slots))
|
||||
return nullptr;
|
||||
return Ty;
|
||||
}
|
Reference in New Issue
Block a user