LLVM  6.0.0svn
TypeMetadataUtils.h
Go to the documentation of this file.
1 //===- TypeMetadataUtils.h - Utilities related to type metadata --*- C++ -*-==//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains functions that make it easier to manipulate type metadata
11 // for devirtualization.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_ANALYSIS_TYPEMETADATAUTILS_H
16 #define LLVM_ANALYSIS_TYPEMETADATAUTILS_H
17 
18 #include "llvm/ADT/SmallVector.h"
19 #include "llvm/IR/CallSite.h"
20 
21 namespace llvm {
22 
23 /// The type of CFI jumptable needed for a function.
28 };
29 
30 /// A call site that could be devirtualized.
32  /// The offset from the address point to the virtual function.
33  uint64_t Offset;
34  /// The call site itself.
36 };
37 
38 /// Given a call to the intrinsic @llvm.type.test, find all devirtualizable
39 /// call sites based on the call and return them in DevirtCalls.
42  SmallVectorImpl<CallInst *> &Assumes, const CallInst *CI);
43 
44 /// Given a call to the intrinsic @llvm.type.checked.load, find all
45 /// devirtualizable call sites based on the call and return them in DevirtCalls.
49  SmallVectorImpl<Instruction *> &Preds, bool &HasNonCallUses,
50  const CallInst *CI);
51 }
52 
53 #endif
Compute iterated dominance frontiers using a linear time algorithm.
Definition: AllocatorList.h:24
CallSite CS
The call site itself.
This class represents a function call, abstracting a target machine&#39;s calling convention.
CfiFunctionLinkage
The type of CFI jumptable needed for a function.
uint64_t Offset
The offset from the address point to the virtual function.
void findDevirtualizableCallsForTypeTest(SmallVectorImpl< DevirtCallSite > &DevirtCalls, SmallVectorImpl< CallInst *> &Assumes, const CallInst *CI)
Given a call to the intrinsic .type.test, find all devirtualizable call sites based on the call and r...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Definition: APFloat.h:42
A call site that could be devirtualized.
void findDevirtualizableCallsForTypeCheckedLoad(SmallVectorImpl< DevirtCallSite > &DevirtCalls, SmallVectorImpl< Instruction *> &LoadedPtrs, SmallVectorImpl< Instruction *> &Preds, bool &HasNonCallUses, const CallInst *CI)
Given a call to the intrinsic .type.checked.load, find all devirtualizable call sites based on the ca...