LLVM
4.0.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
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/IR/GlobalValue.h
"
19
20
namespace
llvm {
21
22
class
DataLayout;
23
template
<
typename
T>
class
SmallVectorImpl;
24
class
Twine;
25
class
raw_ostream;
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
public
:
33
/// Print the appropriate prefix and the specified global variable's name.
34
/// If the global variable doesn't have a name, this fills in a unique name
35
/// for the global.
36
void
getNameWithPrefix
(
raw_ostream
&OS,
const
GlobalValue
*GV,
37
bool
CannotUsePrivateLabel)
const
;
38
void
getNameWithPrefix
(
SmallVectorImpl<char>
&OutName,
const
GlobalValue
*GV,
39
bool
CannotUsePrivateLabel)
const
;
40
41
/// Print the appropriate prefix and the specified name as the global variable
42
/// name. GVName must not be empty.
43
static
void
getNameWithPrefix
(
raw_ostream
&OS,
const
Twine
&GVName,
44
const
DataLayout
&DL);
45
static
void
getNameWithPrefix
(
SmallVectorImpl<char>
&OutName,
46
const
Twine
&GVName,
const
DataLayout
&DL);
47
};
48
49
}
// End llvm namespace
50
51
#endif
llvm::DataLayout
A parsed version of the target data layout string in and methods for querying it. ...
Definition:
DataLayout.h:102
llvm::DenseMap
Definition:
DenseMap.h:583
llvm::Twine
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition:
Twine.h:81
llvm::SmallVectorImpl< char >
GlobalValue.h
DenseMap.h
llvm::GlobalValue
Definition:
GlobalValue.h:45
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:44
Generated on Wed Mar 8 2017 17:15:50 for LLVM by
1.8.6