mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
d31dc69aa1
This commit creates a new structure called 'SlotMapping' in the AsmParser library. This structure can be passed into the public parsing APIs from the AsmParser library in order to extract the data structures that map from slot numbers to unnamed global values and metadata nodes. This change is useful for MIR Serialization, as the MIR Parser has to lookup the unnamed global values and metadata nodes by their slot numbers. Reviewers: Duncan P. N. Exon Smith Differential Revision: http://reviews.llvm.org/D10551 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240427 91177308-0d34-0410-b5e6-96231b3b80d8
85 lines
3.7 KiB
C++
85 lines
3.7 KiB
C++
//===-- Parser.h - Parser for LLVM IR text assembly files -------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// These classes are implemented by the lib/AsmParser library.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_ASMPARSER_PARSER_H
|
|
#define LLVM_ASMPARSER_PARSER_H
|
|
|
|
#include "llvm/Support/MemoryBuffer.h"
|
|
|
|
namespace llvm {
|
|
|
|
class LLVMContext;
|
|
class Module;
|
|
struct SlotMapping;
|
|
class SMDiagnostic;
|
|
|
|
/// This function is the main interface to the LLVM Assembly Parser. It parses
|
|
/// an ASCII file that (presumably) contains LLVM Assembly code. It returns a
|
|
/// Module (intermediate representation) with the corresponding features. Note
|
|
/// that this does not verify that the generated Module is valid, so you should
|
|
/// run the verifier after parsing the file to check that it is okay.
|
|
/// \brief Parse LLVM Assembly from a file
|
|
/// \param Filename The name of the file to parse
|
|
/// \param Error Error result info.
|
|
/// \param Context Context in which to allocate globals info.
|
|
/// \param Slots The optional slot mapping that will be initialized during
|
|
/// parsing.
|
|
std::unique_ptr<Module> parseAssemblyFile(StringRef Filename,
|
|
SMDiagnostic &Error,
|
|
LLVMContext &Context,
|
|
SlotMapping *Slots = nullptr);
|
|
|
|
/// The function is a secondary interface to the LLVM Assembly Parser. It parses
|
|
/// an ASCII string that (presumably) contains LLVM Assembly code. It returns a
|
|
/// Module (intermediate representation) with the corresponding features. Note
|
|
/// that this does not verify that the generated Module is valid, so you should
|
|
/// run the verifier after parsing the file to check that it is okay.
|
|
/// \brief Parse LLVM Assembly from a string
|
|
/// \param AsmString The string containing assembly
|
|
/// \param Error Error result info.
|
|
/// \param Context Context in which to allocate globals info.
|
|
/// \param Slots The optional slot mapping that will be initialized during
|
|
/// parsing.
|
|
std::unique_ptr<Module> parseAssemblyString(StringRef AsmString,
|
|
SMDiagnostic &Error,
|
|
LLVMContext &Context,
|
|
SlotMapping *Slots = nullptr);
|
|
|
|
/// parseAssemblyFile and parseAssemblyString are wrappers around this function.
|
|
/// \brief Parse LLVM Assembly from a MemoryBuffer.
|
|
/// \param F The MemoryBuffer containing assembly
|
|
/// \param Err Error result info.
|
|
/// \param Slots The optional slot mapping that will be initialized during
|
|
/// parsing.
|
|
std::unique_ptr<Module> parseAssembly(MemoryBufferRef F, SMDiagnostic &Err,
|
|
LLVMContext &Context,
|
|
SlotMapping *Slots = nullptr);
|
|
|
|
/// This function is the low-level interface to the LLVM Assembly Parser.
|
|
/// This is kept as an independent function instead of being inlined into
|
|
/// parseAssembly for the convenience of interactive users that want to add
|
|
/// recently parsed bits to an existing module.
|
|
///
|
|
/// \param F The MemoryBuffer containing assembly
|
|
/// \param M The module to add data to.
|
|
/// \param Err Error result info.
|
|
/// \param Slots The optional slot mapping that will be initialized during
|
|
/// parsing.
|
|
/// \return true on error.
|
|
bool parseAssemblyInto(MemoryBufferRef F, Module &M, SMDiagnostic &Err,
|
|
SlotMapping *Slots = nullptr);
|
|
|
|
} // End llvm namespace
|
|
|
|
#endif
|