17fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//===---- llvm/IRReader/IRReader.h - Reader for LLVM IR files ---*- C++ -*-===//
27fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//
37fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//                     The LLVM Compiler Infrastructure
47fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//
57fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth// This file is distributed under the University of Illinois Open Source
67fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth// License. See LICENSE.TXT for details.
77fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//
87fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//===----------------------------------------------------------------------===//
97fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//
107fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth// This file defines functions for reading LLVM IR. They support both
117fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth// Bitcode and Assembly, automatically detecting the input format.
127fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//
137fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth//===----------------------------------------------------------------------===//
147fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
157fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth#ifndef LLVM_IRREADER_IRREADER_H
167fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth#define LLVM_IRREADER_IRREADER_H
177fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
187fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth#include <string>
197fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
207fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruthnamespace llvm {
217fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
227fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruthclass Module;
237fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruthclass MemoryBuffer;
247fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruthclass SMDiagnostic;
257fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruthclass LLVMContext;
267fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
277fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// If the given file holds a bitcode image, return a Module
287fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// for it which does lazy deserialization of function bodies.  Otherwise,
297fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// attempt to parse it as LLVM Assembly and return a fully populated
307fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// Module.
317fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler CarruthModule *getLazyIRFileModule(const std::string &Filename, SMDiagnostic &Err,
327fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth                            LLVMContext &Context);
337fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
347fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// If the given MemoryBuffer holds a bitcode image, return a Module
357fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// for it.  Otherwise, attempt to parse it as LLVM Assembly and return
36cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines/// a Module for it. This function *never* takes ownership of Buffer.
377fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler CarruthModule *ParseIR(MemoryBuffer *Buffer, SMDiagnostic &Err, LLVMContext &Context);
387fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
397fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// If the given file holds a bitcode image, return a Module for it.
407fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// Otherwise, attempt to parse it as LLVM Assembly and return a Module
417fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth/// for it.
427fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler CarruthModule *ParseIRFile(const std::string &Filename, SMDiagnostic &Err,
437fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth                    LLVMContext &Context);
447fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
457fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth}
467fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth
477fc162f893d67ffd96fdb19e2eb9a03b4621f0c0Chandler Carruth#endif
48