LLVM
3.7.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
work
release_test
rc4
llvm.src
include
llvm
IR
ValueSymbolTable.h
Go to the documentation of this file.
1
//===-- llvm/ValueSymbolTable.h - Implement a Value Symtab ------*- 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 implements the name/Value symbol table for LLVM.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_IR_VALUESYMBOLTABLE_H
15
#define LLVM_IR_VALUESYMBOLTABLE_H
16
17
#include "
llvm/ADT/StringMap.h
"
18
#include "
llvm/IR/Value.h
"
19
#include "llvm/Support/DataTypes.h"
20
21
namespace
llvm {
22
template
<
typename
ValueSubClass,
typename
ItemParentClass>
23
class
SymbolTableListTraits;
24
class
BasicBlock
;
25
class
Function
;
26
class
NamedMDNode;
27
class
Module;
28
class
StringRef;
29
30
/// This class provides a symbol table of name/value pairs. It is essentially
31
/// a std::map<std::string,Value*> but has a controlled interface provided by
32
/// LLVM as well as ensuring uniqueness of names.
33
///
34
class
ValueSymbolTable
{
35
friend
class
Value
;
36
friend
class
SymbolTableListTraits
<
Argument
,
Function
>;
37
friend
class
SymbolTableListTraits
<
BasicBlock
,
Function
>;
38
friend
class
SymbolTableListTraits
<
Instruction
,
BasicBlock
>;
39
friend
class
SymbolTableListTraits
<
Function
,
Module
>;
40
friend
class
SymbolTableListTraits
<
GlobalVariable
,
Module
>;
41
friend
class
SymbolTableListTraits
<
GlobalAlias
,
Module
>;
42
/// @name Types
43
/// @{
44
public
:
45
/// @brief A mapping of names to values.
46
typedef
StringMap<Value*>
ValueMap
;
47
48
/// @brief An iterator over a ValueMap.
49
typedef
ValueMap::iterator
iterator
;
50
51
/// @brief A const_iterator over a ValueMap.
52
typedef
ValueMap::const_iterator
const_iterator
;
53
54
/// @}
55
/// @name Constructors
56
/// @{
57
public
:
58
59
ValueSymbolTable
() : vmap(0), LastUnique(0) {}
60
~ValueSymbolTable
();
61
62
/// @}
63
/// @name Accessors
64
/// @{
65
public
:
66
67
/// This method finds the value with the given \p Name in the
68
/// the symbol table.
69
/// @returns the value associated with the \p Name
70
/// @brief Lookup a named Value.
71
Value
*
lookup
(
StringRef
Name
)
const
{
return
vmap.
lookup
(Name); }
72
73
/// @returns true iff the symbol table is empty
74
/// @brief Determine if the symbol table is empty
75
inline
bool
empty
()
const
{
return
vmap.
empty
(); }
76
77
/// @brief The number of name/type pairs is returned.
78
inline
unsigned
size
()
const
{
return
unsigned
(vmap.
size
()); }
79
80
/// This function can be used from the debugger to display the
81
/// content of the symbol table while debugging.
82
/// @brief Print out symbol table on stderr
83
void
dump
()
const
;
84
85
/// @}
86
/// @name Iteration
87
/// @{
88
public
:
89
/// @brief Get an iterator that from the beginning of the symbol table.
90
inline
iterator
begin
() {
return
vmap.
begin
(); }
91
92
/// @brief Get a const_iterator that from the beginning of the symbol table.
93
inline
const_iterator
begin
()
const
{
return
vmap.
begin
(); }
94
95
/// @brief Get an iterator to the end of the symbol table.
96
inline
iterator
end
() {
return
vmap.
end
(); }
97
98
/// @brief Get a const_iterator to the end of the symbol table.
99
inline
const_iterator
end
()
const
{
return
vmap.
end
(); }
100
101
/// @}
102
/// @name Mutators
103
/// @{
104
private
:
105
/// This method adds the provided value \p N to the symbol table. The Value
106
/// must have a name which is used to place the value in the symbol table.
107
/// If the inserted name conflicts, this renames the value.
108
/// @brief Add a named value to the symbol table
109
void
reinsertValue(
Value
*V);
110
111
/// createValueName - This method attempts to create a value name and insert
112
/// it into the symbol table with the specified name. If it conflicts, it
113
/// auto-renames the name and returns that instead.
114
ValueName
*createValueName(
StringRef
Name
,
Value
*V);
115
116
/// This method removes a value from the symbol table. It leaves the
117
/// ValueName attached to the value, but it is no longer inserted in the
118
/// symtab.
119
void
removeValueName(
ValueName
*V);
120
121
/// @}
122
/// @name Internal Data
123
/// @{
124
private
:
125
ValueMap
vmap;
///< The map that holds the symbol table.
126
mutable
uint32_t LastUnique;
///< Counter for tracking unique names
127
128
/// @}
129
};
130
131
}
// End llvm namespace
132
133
#endif
llvm::ValueSymbolTable
This class provides a symbol table of name/value pairs.
Definition:
ValueSymbolTable.h:34
llvm::Argument
LLVM Argument representation.
Definition:
Argument.h:35
llvm::ValueSymbolTable::begin
iterator begin()
Get an iterator that from the beginning of the symbol table.
Definition:
ValueSymbolTable.h:90
llvm::StringMapEntry
StringMapEntry - This is used to represent one value that is inserted into a StringMap.
Definition:
StringMap.h:28
llvm::ISD::BasicBlock
Various leaf nodes.
Definition:
ISDOpcodes.h:60
llvm::ValueSymbolTable::~ValueSymbolTable
~ValueSymbolTable()
Definition:
ValueSymbolTable.cpp:25
llvm::Module
A Module instance is used to store all the information related to an LLVM module. ...
Definition:
Module.h:114
llvm::GlobalAlias
Definition:
GlobalAlias.h:29
llvm::ValueSymbolTable::begin
const_iterator begin() const
Get a const_iterator that from the beginning of the symbol table.
Definition:
ValueSymbolTable.h:93
llvm::StringMapImpl::empty
bool empty() const
Definition:
StringMap.h:98
llvm::ValueSymbolTable::dump
void dump() const
This function can be used from the debugger to display the content of the symbol table while debuggin...
Definition:
ValueSymbolTable.cpp:108
llvm::Function
Definition:
Function.h:53
llvm::ValueSymbolTable::iterator
ValueMap::iterator iterator
An iterator over a ValueMap.
Definition:
ValueSymbolTable.h:49
llvm::GraphProgram::Name
Name
Definition:
GraphWriter.h:43
unsigned
llvm::Instruction
Definition:
Instruction.h:51
llvm::ValueSymbolTable::size
unsigned size() const
The number of name/type pairs is returned.
Definition:
ValueSymbolTable.h:78
llvm::ValueSymbolTable::end
iterator end()
Get an iterator to the end of the symbol table.
Definition:
ValueSymbolTable.h:96
llvm::ValueSymbolTable::end
const_iterator end() const
Get a const_iterator to the end of the symbol table.
Definition:
ValueSymbolTable.h:99
llvm::ValueSymbolTable::ValueSymbolTable
ValueSymbolTable()
Definition:
ValueSymbolTable.h:59
llvm::BasicBlock
LLVM Basic Block Representation.
Definition:
BasicBlock.h:65
llvm::StringMapImpl::size
unsigned size() const
Definition:
StringMap.h:99
StringMap.h
llvm::StringMapConstIterator
Definition:
StringMap.h:24
llvm::PDB_SymType::Function
llvm::GlobalVariable
Definition:
GlobalVariable.h:35
llvm::ValueMap
See the file comment.
Definition:
ValueMap.h:80
llvm::StringMap::lookup
ValueTy lookup(StringRef Key) const
lookup - Return the entry for the specified key, or a default constructed value if no such entry exis...
Definition:
StringMap.h:279
llvm::ValueSymbolTable::const_iterator
ValueMap::const_iterator const_iterator
A const_iterator over a ValueMap.
Definition:
ValueSymbolTable.h:52
llvm::StringMap< Value * >
llvm::StringMap::begin
iterator begin()
Definition:
StringMap.h:252
Value.h
llvm::StringMapIterator
Definition:
StringMap.h:26
llvm::ValueSymbolTable::empty
bool empty() const
Determine if the symbol table is empty.
Definition:
ValueSymbolTable.h:75
llvm::SymbolTableListTraits
Definition:
Argument.h:25
llvm::ValueSymbolTable::ValueMap
StringMap< Value * > ValueMap
A mapping of names to values.
Definition:
ValueSymbolTable.h:46
llvm::Value
LLVM Value Representation.
Definition:
Value.h:69
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:
StringRef.h:40
llvm::StringMap::end
iterator end()
Definition:
StringMap.h:255
llvm::ValueSymbolTable::lookup
Value * lookup(StringRef Name) const
This method finds the value with the given Name in the the symbol table.
Definition:
ValueSymbolTable.h:71
Generated on Mon Aug 31 2015 11:11:18 for LLVM by
1.8.6