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