LLVM: include/llvm/IR/GlobalIFunc.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17#ifndef LLVM_IR_GLOBALIFUNC_H

18#define LLVM_IR_GLOBALIFUNC_H

19

26

27namespace llvm {

28

31

32

34

37

39

42

43public:

45 GlobalIFunc &operator=(const GlobalIFunc &) = delete;

46

47

48

52

53

54 void *operator new(size_t S) { return User::operator new(S, AllocMarker); }

55 void operator delete(void *Ptr) { User::operator delete(Ptr); }

56

57

59

63

64

65

67

68

70

71

77

78

79

82 return const_cast<Function *>(

83 static_cast<const GlobalIFunc *>(this)->getResolverFunction());

84 }

85

90

91

93 return V->getValueID() == Value::GlobalIFuncVal;

94 }

95

96

97

98

99

102};

103

104template <>

107

109

110}

111

112#endif

#define DEFINE_TRANSPARENT_OPERAND_ACCESSORS(CLASS, VALUECLASS)

Macro for generating out-of-class operand accessor definitions.

This is an important base class in LLVM.

Definition GlobalIFunc.h:35

GlobalIFunc(const GlobalIFunc &)=delete

LLVM_ABI void applyAlongResolverPath(function_ref< void(const GlobalValue &)> Op) const

DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Constant)

Provide fast operand accessors.

void copyAttributesFrom(const GlobalIFunc *Src)

Definition GlobalIFunc.h:60

Function * getResolverFunction()

Definition GlobalIFunc.h:81

LLVM_ABI const Function * getResolverFunction() const

Constant * getResolver()

Definition GlobalIFunc.h:76

LLVM_ABI void removeFromParent()

This method unlinks 'this' from the containing module, but does not delete it.

static bool isValidLinkage(LinkageTypes L)

Definition GlobalIFunc.h:86

static LLVM_ABI GlobalIFunc * create(Type *Ty, unsigned AddressSpace, LinkageTypes Linkage, const Twine &Name, Constant *Resolver, Module *Parent)

If a parent module is specified, the ifunc is automatically inserted into the end of the specified mo...

void setResolver(Constant *Resolver)

These methods retrieve and set ifunc resolver function.

Definition GlobalIFunc.h:72

LLVM_ABI void eraseFromParent()

This method unlinks 'this' from the containing module and deletes it.

static bool classof(const Value *V)

Definition GlobalIFunc.h:92

GlobalIFunc & operator=(const GlobalIFunc &)=delete

const Constant * getResolver() const

Definition GlobalIFunc.h:73

GlobalObject(Type *Ty, ValueTy VTy, AllocInfo AllocInfo, LinkageTypes Linkage, const Twine &Name, unsigned AddressSpace=0)

LLVM_ABI void copyAttributesFrom(const GlobalObject *Src)

static bool isLocalLinkage(LinkageTypes Linkage)

static bool isLinkOnceLinkage(LinkageTypes Linkage)

static bool isExternalLinkage(LinkageTypes Linkage)

static bool isWeakLinkage(LinkageTypes Linkage)

LinkageTypes

An enumeration for the kinds of linkage for global values.

A Module instance is used to store all the information related to an LLVM module.

Interface for looking up the initializer for a variable name, used by Init::resolveReferences.

Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...

The instances of the Type class are immutable: once they are created, they are never changed.

LLVM Value Representation.

An efficient, type-erasing, non-owning reference to a callable.

This file defines the ilist_node class template, which is a convenient base class for creating classe...

constexpr char Args[]

Key for Kernel::Metadata::mArgs.

This is an optimization pass for GlobalISel generic memory operations.

DWARFExpression::Operation Op

FixedNumOperandTraits - determine the allocation regime of the Use array when it is a prefix to the U...

Compile-time customization of User operands.

Indicates this User has operands co-allocated.