Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:44:01

0001 //===- GVMaterializer.h - Interface for GV materializers --------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file provides an abstract interface for loading a module from some
0010 // place.  This interface allows incremental or random access loading of
0011 // functions from the file.  This is useful for applications like JIT compilers
0012 // or interprocedural optimizers that do not need the entire program in memory
0013 // at the same time.
0014 //
0015 //===----------------------------------------------------------------------===//
0016 
0017 #ifndef LLVM_IR_GVMATERIALIZER_H
0018 #define LLVM_IR_GVMATERIALIZER_H
0019 
0020 #include <vector>
0021 
0022 namespace llvm {
0023 
0024 class Error;
0025 class GlobalValue;
0026 class StructType;
0027 
0028 class GVMaterializer {
0029 protected:
0030   GVMaterializer() = default;
0031 
0032 public:
0033   virtual ~GVMaterializer();
0034 
0035   /// Make sure the given GlobalValue is fully read.
0036   ///
0037   virtual Error materialize(GlobalValue *GV) = 0;
0038 
0039   /// Make sure the entire Module has been completely read.
0040   ///
0041   virtual Error materializeModule() = 0;
0042 
0043   virtual Error materializeMetadata() = 0;
0044   virtual void setStripDebugInfo() = 0;
0045 
0046   virtual std::vector<StructType *> getIdentifiedStructTypes() const = 0;
0047 };
0048 
0049 } // end namespace llvm
0050 
0051 #endif // LLVM_IR_GVMATERIALIZER_H