#pragma once #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #endif //===---- llvm/IRReader/IRReader.h - Reader for LLVM IR files ---*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file defines functions for reading LLVM IR. They support both // Bitcode and Assembly, automatically detecting the input format. // //===----------------------------------------------------------------------===// #ifndef LLVM_IRREADER_IRREADER_H #define LLVM_IRREADER_IRREADER_H #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringRef.h" #include namespace llvm { class MemoryBuffer; class MemoryBufferRef; class Module; class SMDiagnostic; class LLVMContext; typedef llvm::function_ref(StringRef)> DataLayoutCallbackTy; /// If the given MemoryBuffer holds a bitcode image, return a Module /// for it which does lazy deserialization of function bodies. Otherwise, /// attempt to parse it as LLVM Assembly and return a fully populated /// Module. The ShouldLazyLoadMetadata flag is passed down to the bitcode /// reader to optionally enable lazy metadata loading. This takes ownership /// of \p Buffer. std::unique_ptr getLazyIRModule(std::unique_ptr Buffer, SMDiagnostic &Err, LLVMContext &Context, bool ShouldLazyLoadMetadata = false); /// If the given file holds a bitcode image, return a Module /// for it which does lazy deserialization of function bodies. Otherwise, /// attempt to parse it as LLVM Assembly and return a fully populated /// Module. The ShouldLazyLoadMetadata flag is passed down to the bitcode /// reader to optionally enable lazy metadata loading. std::unique_ptr getLazyIRFileModule(StringRef Filename, SMDiagnostic &Err, LLVMContext &Context, bool ShouldLazyLoadMetadata = false); /// If the given MemoryBuffer holds a bitcode image, return a Module /// for it. Otherwise, attempt to parse it as LLVM Assembly and return /// a Module for it. /// \param DataLayoutCallback Override datalayout in the llvm assembly. std::unique_ptr parseIR( MemoryBufferRef Buffer, SMDiagnostic &Err, LLVMContext &Context, DataLayoutCallbackTy DataLayoutCallback = [](StringRef) { return None; }); /// If the given file holds a bitcode image, return a Module for it. /// Otherwise, attempt to parse it as LLVM Assembly and return a Module /// for it. /// \param DataLayoutCallback Override datalayout in the llvm assembly. std::unique_ptr parseIRFile( StringRef Filename, SMDiagnostic &Err, LLVMContext &Context, DataLayoutCallbackTy DataLayoutCallback = [](StringRef) { return None; }); } #endif #ifdef __GNUC__ #pragma GCC diagnostic pop #endif