LLVM: include/llvm/Transforms/Utils/MemoryTaggingSupport.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12#ifndef LLVM_TRANSFORMS_UTILS_MEMORYTAGGINGSUPPORT_H

13#define LLVM_TRANSFORMS_UTILS_MEMORYTAGGINGSUPPORT_H

14

23

24namespace llvm {

31

32

33

34

35

36

37

43

47 size_t MaxLifetimes);

48

50

57

63

72

74public:

76 : SSI(SSI), DebugType(DebugType) {}

77

81

82private:

85 const char *DebugType;

86};

87

90

95

98 unsigned int Inc);

99

100}

101}

102

103#endif

Analysis containing CSE Info

This file implements a map that provides insertion order iteration.

This file defines the SmallVector class.

an instruction to allocate memory on the stack

Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.

This provides a uniform API for creating instructions and inserting them into a basic block: either a...

A wrapper class for inspecting calls to intrinsic functions.

This class implements a map that also provides access to all stored values in a deterministic order.

PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominat...

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

StringRef - Represent a constant reference to a string, i.e.

Triple - Helper class for working with autoconf configuration names.

LLVM Value Representation.

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

void visit(OptimizationRemarkEmitter &ORE, Instruction &Inst)

StackInfo & get()

Definition MemoryTaggingSupport.h:80

AllocaInterestingness getAllocaInterestingness(const AllocaInst &AI)

StackInfoBuilder(const StackSafetyGlobalInfo *SSI, const char *DebugType)

Definition MemoryTaggingSupport.h:75

AllocaInterestingness

Definition MemoryTaggingSupport.h:64

@ kSafe

Definition MemoryTaggingSupport.h:68

@ kUninteresting

Definition MemoryTaggingSupport.h:66

@ kInteresting

Definition MemoryTaggingSupport.h:70

Value * getFP(IRBuilder<> &IRB)

bool isStandardLifetime(const SmallVectorImpl< IntrinsicInst * > &LifetimeStart, const SmallVectorImpl< IntrinsicInst * > &LifetimeEnd, const DominatorTree *DT, const LoopInfo *LI, size_t MaxLifetimes)

bool forAllReachableExits(const DominatorTree &DT, const PostDominatorTree &PDT, const LoopInfo &LI, const Instruction *Start, const SmallVectorImpl< IntrinsicInst * > &Ends, const SmallVectorImpl< Instruction * > &RetVec, llvm::function_ref< void(Instruction *)> Callback)

uint64_t getAllocaSizeInBytes(const AllocaInst &AI)

Value * getAndroidSlotPtr(IRBuilder<> &IRB, int Slot)

Value * readRegister(IRBuilder<> &IRB, StringRef Name)

Value * incrementThreadLong(IRBuilder<> &IRB, Value *ThreadLong, unsigned int Inc)

void annotateDebugRecords(AllocaInfo &Info, unsigned int Tag)

Instruction * getUntagLocationIfFunctionExit(Instruction &Inst)

void alignAndPadAlloca(memtag::AllocaInfo &Info, llvm::Align Align)

Value * getPC(const Triple &TargetTriple, IRBuilder<> &IRB)

This is an optimization pass for GlobalISel generic memory operations.

This struct is a compact representation of a valid (non-zero power of two) alignment.

AllocaInst * AI

Definition MemoryTaggingSupport.h:52

SmallVector< DbgVariableRecord *, 2 > DbgVariableRecords

Definition MemoryTaggingSupport.h:55

SmallVector< IntrinsicInst *, 2 > LifetimeEnd

Definition MemoryTaggingSupport.h:54

SmallVector< IntrinsicInst *, 2 > LifetimeStart

Definition MemoryTaggingSupport.h:53

MapVector< AllocaInst *, AllocaInfo > AllocasToInstrument

Definition MemoryTaggingSupport.h:59

bool CallsReturnTwice

Definition MemoryTaggingSupport.h:61

SmallVector< Instruction *, 8 > RetVec

Definition MemoryTaggingSupport.h:60