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
Mangler.h
Go to the documentation of this file.
1
//===-- llvm/IR/Mangler.h - Self-contained name mangler ---------*- 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
// Unified name mangler for various backends.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_IR_MANGLER_H
15
#define LLVM_IR_MANGLER_H
16
17
#include "
llvm/ADT/DenseMap.h
"
18
#include "
llvm/Support/raw_ostream.h
"
19
20
namespace
llvm {
21
22
class
DataLayout;
23
class
GlobalValue;
24
template
<
typename
T>
class
SmallVectorImpl;
25
class
Twine;
26
27
class
Mangler
{
28
/// We need to give global values the same name every time they are mangled.
29
/// This keeps track of the number we give to anonymous ones.
30
mutable
DenseMap<const GlobalValue*, unsigned>
AnonGlobalIDs;
31
32
/// This simple counter is used to unique value names.
33
mutable
unsigned
NextAnonGlobalID;
34
35
public
:
36
Mangler
() : NextAnonGlobalID(1) {}
37
38
/// Print the appropriate prefix and the specified global variable's name.
39
/// If the global variable doesn't have a name, this fills in a unique name
40
/// for the global.
41
void
getNameWithPrefix
(
raw_ostream
&OS,
const
GlobalValue
*GV,
42
bool
CannotUsePrivateLabel)
const
;
43
void
getNameWithPrefix
(
SmallVectorImpl<char>
&OutName,
const
GlobalValue
*GV,
44
bool
CannotUsePrivateLabel)
const
;
45
46
/// Print the appropriate prefix and the specified name as the global variable
47
/// name. GVName must not be empty.
48
static
void
getNameWithPrefix
(
raw_ostream
&OS,
const
Twine
&GVName,
49
const
DataLayout
&
DL
);
50
static
void
getNameWithPrefix
(
SmallVectorImpl<char>
&OutName,
51
const
Twine
&GVName,
const
DataLayout
&
DL
);
52
};
53
54
}
// End llvm namespace
55
56
#endif
llvm::DataLayout
A parsed version of the target data layout string in and methods for querying it. ...
Definition:
DataLayout.h:104
llvm::DenseMap
Definition:
DenseMap.h:540
llvm::PDB_RegisterId::DL
llvm::Twine
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition:
Twine.h:79
llvm::SmallVectorImpl< char >
DenseMap.h
llvm::GlobalValue
Definition:
GlobalValue.h:35
llvm::Mangler::getNameWithPrefix
void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV, bool CannotUsePrivateLabel) const
Print the appropriate prefix and the specified global variable's name.
Definition:
Mangler.cpp:108
llvm::Mangler
Definition:
Mangler.h:27
llvm::raw_ostream
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition:
raw_ostream.h:38
llvm::Mangler::Mangler
Mangler()
Definition:
Mangler.h:36
raw_ostream.h
Generated on Mon Aug 31 2015 11:04:04 for LLVM by
1.8.6