mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-10 20:33:15 +00:00
[Orc][MCJIT][RuntimeDyld] Add header that was accidentally left out of r231724.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231726 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6d6178426f
commit
8829ba195c
81
include/llvm/ExecutionEngine/JITSymbolFlags.h
Normal file
81
include/llvm/ExecutionEngine/JITSymbolFlags.h
Normal file
@ -0,0 +1,81 @@
|
||||
//===------ JITSymbolFlags.h - Flags for symbols in the JIT -----*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Symbol flags for symbols in the JIT (e.g. weak, exported).
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_EXECUTIONENGINE_JITSYMBOLFLAGS_H
|
||||
#define LLVM_EXECUTIONENGINE_JITSYMBOLFLAGS_H
|
||||
|
||||
#include "llvm/IR/GlobalValue.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
/// @brief Flags for symbols in the JIT.
|
||||
enum class JITSymbolFlags : char {
|
||||
None = 0,
|
||||
Weak = 1U << 0,
|
||||
Exported = 1U << 1
|
||||
};
|
||||
|
||||
JITSymbolFlags operator|(JITSymbolFlags LHS, JITSymbolFlags RHS) {
|
||||
typedef std::underlying_type<JITSymbolFlags>::type UT;
|
||||
return static_cast<JITSymbolFlags>(
|
||||
static_cast<UT>(LHS) | static_cast<UT>(RHS));
|
||||
}
|
||||
|
||||
JITSymbolFlags& operator |=(JITSymbolFlags &LHS, JITSymbolFlags RHS) {
|
||||
LHS = LHS | RHS;
|
||||
return LHS;
|
||||
}
|
||||
|
||||
JITSymbolFlags operator&(JITSymbolFlags LHS, JITSymbolFlags RHS) {
|
||||
typedef std::underlying_type<JITSymbolFlags>::type UT;
|
||||
return static_cast<JITSymbolFlags>(
|
||||
static_cast<UT>(LHS) & static_cast<UT>(RHS));
|
||||
}
|
||||
|
||||
JITSymbolFlags& operator &=(JITSymbolFlags &LHS, JITSymbolFlags RHS) {
|
||||
LHS = LHS & RHS;
|
||||
return LHS;
|
||||
}
|
||||
|
||||
/// @brief Base class for symbols in the JIT.
|
||||
class JITSymbolBase {
|
||||
public:
|
||||
JITSymbolBase(JITSymbolFlags Flags) : Flags(Flags) {}
|
||||
|
||||
JITSymbolFlags getFlags() const { return Flags; }
|
||||
|
||||
bool isWeak() const {
|
||||
return (Flags & JITSymbolFlags::Weak) == JITSymbolFlags::Weak;
|
||||
}
|
||||
|
||||
bool isExported() const {
|
||||
return (Flags & JITSymbolFlags::Exported) == JITSymbolFlags::Exported;
|
||||
}
|
||||
|
||||
static JITSymbolFlags flagsFromGlobalValue(const GlobalValue &GV) {
|
||||
JITSymbolFlags Flags = JITSymbolFlags::None;
|
||||
if (GV.hasWeakLinkage())
|
||||
Flags |= JITSymbolFlags::Weak;
|
||||
if (!GV.hasLocalLinkage() && !GV.hasHiddenVisibility())
|
||||
Flags |= JITSymbolFlags::Exported;
|
||||
return Flags;
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
JITSymbolFlags Flags;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user