#ifndef LLVM_SANDBOXIR_SANDBOXIR_H
#define LLVM_SANDBOXIR_SANDBOXIR_H
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/SandboxIR/Tracker.h"
#include "llvm/SandboxIR/Type.h"
#include "llvm/SandboxIR/Use.h"
#include "llvm/Support/raw_ostream.h"
#include <iterator>
namespace llvm {
namespace sandboxir {
class BasicBlock;
class ConstantInt;
class ConstantFP;
class ConstantAggregateZero;
class ConstantPointerNull;
class PoisonValue;
class BlockAddress;
class DSOLocalEquivalent;
class ConstantTokenNone;
class GlobalValue;
class GlobalObject;
class GlobalIFunc;
class Context;
class Function;
class Instruction;
class VAArgInst;
class FreezeInst;
class FenceInst;
class SelectInst;
class ExtractElementInst;
class InsertElementInst;
class ShuffleVectorInst;
class ExtractValueInst;
class InsertValueInst;
class BranchInst;
class UnaryInstruction;
class LoadInst;
class ReturnInst;
class StoreInst;
class User;
class UnreachableInst;
class Value;
class CallBase;
class CallInst;
class InvokeInst;
class CallBrInst;
class LandingPadInst;
class FuncletPadInst;
class CatchPadInst;
class CleanupPadInst;
class CatchReturnInst;
class CleanupReturnInst;
class GetElementPtrInst;
class CastInst;
class PossiblyNonNegInst;
class PtrToIntInst;
class BitCastInst;
class AllocaInst;
class ResumeInst;
class CatchSwitchInst;
class SwitchInst;
class UnaryOperator;
class BinaryOperator;
class PossiblyDisjointInst;
class AtomicRMWInst;
class AtomicCmpXchgInst;
class CmpInst;
class ICmpInst;
class FCmpInst;
class OperandUseIterator { … };
class UserUseIterator { … };
class Value { … };
class Argument : public sandboxir::Value { … };
class User : public Value { … };
class Constant : public sandboxir::User { … };
class ConstantInt : public Constant { … };
class ConstantFP final : public Constant { … };
class ConstantAggregate : public Constant { … };
class ConstantArray final : public ConstantAggregate { … };
class ConstantStruct final : public ConstantAggregate { … };
class ConstantVector final : public ConstantAggregate { … };
class ConstantAggregateZero final : public Constant { … };
class ConstantPointerNull final : public Constant { … };
class UndefValue : public Constant { … };
class PoisonValue final : public UndefValue { … };
class GlobalValue : public Constant { … };
class GlobalObject : public GlobalValue { … };
template <typename GlobalT, typename LLVMGlobalT, typename ParentT,
typename LLVMParentT>
class GlobalWithNodeAPI : public ParentT { … };
class GlobalIFunc final
: public GlobalWithNodeAPI<GlobalIFunc, llvm::GlobalIFunc, GlobalObject,
llvm::GlobalObject> { … };
class BlockAddress final : public Constant { … };
class DSOLocalEquivalent final : public Constant { … };
class ConstantTokenNone final : public Constant { … };
class BBIterator { … };
class BasicBlock : public Value { … };
class Instruction : public sandboxir::User { … };
template <typename LLVMT> class SingleLLVMInstructionImpl : public Instruction { … };
class FenceInst : public SingleLLVMInstructionImpl<llvm::FenceInst> { … };
class SelectInst : public SingleLLVMInstructionImpl<llvm::SelectInst> { … };
class InsertElementInst final
: public SingleLLVMInstructionImpl<llvm::InsertElementInst> { … };
class ExtractElementInst final
: public SingleLLVMInstructionImpl<llvm::ExtractElementInst> { … };
class ShuffleVectorInst final
: public SingleLLVMInstructionImpl<llvm::ShuffleVectorInst> { … };
class InsertValueInst
: public SingleLLVMInstructionImpl<llvm::InsertValueInst> { … };
class BranchInst : public SingleLLVMInstructionImpl<llvm::BranchInst> { … };
class UnaryInstruction
: public SingleLLVMInstructionImpl<llvm::UnaryInstruction> { … };
class ExtractValueInst : public UnaryInstruction { … };
class VAArgInst : public UnaryInstruction { … };
class FreezeInst : public UnaryInstruction { … };
class LoadInst final : public UnaryInstruction { … };
class StoreInst final : public SingleLLVMInstructionImpl<llvm::StoreInst> { … };
class UnreachableInst final : public Instruction { … };
class ReturnInst final : public SingleLLVMInstructionImpl<llvm::ReturnInst> { … };
class CallBase : public SingleLLVMInstructionImpl<llvm::CallBase> { … };
class CallInst final : public CallBase { … };
class InvokeInst final : public CallBase { … };
class CallBrInst final : public CallBase { … };
class LandingPadInst : public SingleLLVMInstructionImpl<llvm::LandingPadInst> { … };
class FuncletPadInst : public SingleLLVMInstructionImpl<llvm::FuncletPadInst> { … };
class CatchPadInst : public FuncletPadInst { … };
class CleanupPadInst : public FuncletPadInst { … };
class CatchReturnInst
: public SingleLLVMInstructionImpl<llvm::CatchReturnInst> { … };
class CleanupReturnInst
: public SingleLLVMInstructionImpl<llvm::CleanupReturnInst> { … };
class GetElementPtrInst final
: public SingleLLVMInstructionImpl<llvm::GetElementPtrInst> { … };
class CatchSwitchInst
: public SingleLLVMInstructionImpl<llvm::CatchSwitchInst> { … };
class ResumeInst : public SingleLLVMInstructionImpl<llvm::ResumeInst> { … };
class SwitchInst : public SingleLLVMInstructionImpl<llvm::SwitchInst> { … };
class UnaryOperator : public UnaryInstruction { … };
class BinaryOperator : public SingleLLVMInstructionImpl<llvm::BinaryOperator> { … };
class PossiblyDisjointInst : public BinaryOperator { … };
class AtomicRMWInst : public SingleLLVMInstructionImpl<llvm::AtomicRMWInst> { … };
class AtomicCmpXchgInst
: public SingleLLVMInstructionImpl<llvm::AtomicCmpXchgInst> { … };
class AllocaInst final : public UnaryInstruction { … };
class CastInst : public UnaryInstruction { … };
class PossiblyNonNegInst : public CastInst { … };
template <Instruction::Opcode Op> class CastInstImpl : public CastInst { … };
class TruncInst final : public CastInstImpl<Instruction::Opcode::Trunc> { … };
class ZExtInst final : public CastInstImpl<Instruction::Opcode::ZExt> { … };
class SExtInst final : public CastInstImpl<Instruction::Opcode::SExt> { … };
class FPTruncInst final : public CastInstImpl<Instruction::Opcode::FPTrunc> { … };
class FPExtInst final : public CastInstImpl<Instruction::Opcode::FPExt> { … };
class UIToFPInst final : public CastInstImpl<Instruction::Opcode::UIToFP> { … };
class SIToFPInst final : public CastInstImpl<Instruction::Opcode::SIToFP> { … };
class FPToUIInst final : public CastInstImpl<Instruction::Opcode::FPToUI> { … };
class FPToSIInst final : public CastInstImpl<Instruction::Opcode::FPToSI> { … };
class IntToPtrInst final : public CastInstImpl<Instruction::Opcode::IntToPtr> { … };
class PtrToIntInst final : public CastInstImpl<Instruction::Opcode::PtrToInt> { … };
class BitCastInst final : public CastInstImpl<Instruction::Opcode::BitCast> { … };
class AddrSpaceCastInst final
: public CastInstImpl<Instruction::Opcode::AddrSpaceCast> { … };
class PHINode final : public SingleLLVMInstructionImpl<llvm::PHINode> { … };
#define WRAP_STATIC_PREDICATE …
#define WRAP_MEMBER …
#define WRAP_BOTH …
class CmpInst : public SingleLLVMInstructionImpl<llvm::CmpInst> { … };
class ICmpInst : public CmpInst { … };
class FCmpInst : public CmpInst { … };
#undef WRAP_STATIC_PREDICATE
#undef WRAP_MEMBER
#undef WRAP_BOTH
class OpaqueInst : public SingleLLVMInstructionImpl<llvm::Instruction> { … };
class Context { … };
class Function : public GlobalWithNodeAPI<Function, llvm::Function,
GlobalObject, llvm::GlobalObject> { … };
}
}
#endif