BitReader_3_0.h revision 579361346abc6696c805e3904a18178ebce4e4a3
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//===- BitReader_3_0.h - Internal BitcodeReader 3.0 impl --------*- C++ -*-===//
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//                     The LLVM Compiler Infrastructure
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// This file is distributed under the University of Illinois Open Source
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// License. See LICENSE.TXT for details.
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//===----------------------------------------------------------------------===//
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// This header defines the BitcodeReader class.
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//===----------------------------------------------------------------------===//
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef BITREADER_3_0_H
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define BITREADER_3_0_H
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/ADT/DenseMap.h"
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/Bitcode/BitstreamReader.h"
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/Bitcode/LLVMBitCodes.h"
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/IR/Attributes.h"
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/IR/GVMaterializer.h"
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/IR/OperandTraits.h"
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/IR/Type.h"
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/IR/ValueHandle.h"
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "llvm/Support/ErrorOr.h"
268a9b22056b13477f59df934928c00c58b5871c95Joe Onorato#include <string>
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace llvm {
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project  class LLVMContext;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project  class MemoryBuffer;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project  class MemoryBufferRef;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project  class Module;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} // End llvm namespace
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace llvm_3_0 {
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project  /// Read the specified bitcode file, returning the module.
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project  llvm::ErrorOr<llvm::Module *> parseBitcodeFile(llvm::MemoryBufferRef Buffer,
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                                 llvm::LLVMContext &Context);
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project  /// Read the header of the specified bitcode buffer and extract just the
438a9b22056b13477f59df934928c00c58b5871c95Joe Onorato  /// triple information. If successful, this returns a string. On error, this
448a9b22056b13477f59df934928c00c58b5871c95Joe Onorato  /// returns "".
458a9b22056b13477f59df934928c00c58b5871c95Joe Onorato  std::string getBitcodeTargetTriple(llvm::MemoryBufferRef Buffer,
468a9b22056b13477f59df934928c00c58b5871c95Joe Onorato                                     llvm::LLVMContext &Context);
478a9b22056b13477f59df934928c00c58b5871c95Joe Onorato
488a9b22056b13477f59df934928c00c58b5871c95Joe Onorato  /// Read the header of the specified bitcode buffer and prepare for lazy
498a9b22056b13477f59df934928c00c58b5871c95Joe Onorato  /// deserialization of function bodies.  If successful, this moves Buffer. On
508a9b22056b13477f59df934928c00c58b5871c95Joe Onorato  /// error, this *does not* move Buffer.
518a9b22056b13477f59df934928c00c58b5871c95Joe Onorato  llvm::ErrorOr<llvm::Module *> getLazyBitcodeModule(std::unique_ptr<llvm::MemoryBuffer> &&Buffer,
528a9b22056b13477f59df934928c00c58b5871c95Joe Onorato                                                     llvm::LLVMContext &Context);
538a9b22056b13477f59df934928c00c58b5871c95Joe Onorato} // End llvm_3_0 namespace
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project