aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/Mangle.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-04-13 18:02:10 +0000
committerAnders Carlsson <andersca@mac.com>2009-04-13 18:02:10 +0000
commit41aa8c1e40416aad3595567415a5faa021ca8b6c (patch)
treecddfdaeeaf9421ef392834269cd71ef0fc03b364 /lib/CodeGen/Mangle.cpp
parent87454161a6377b573d4fc3ff45e7b3ec193e860c (diff)
Add support for mangling guard variables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68969 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/Mangle.cpp')
-rw-r--r--lib/CodeGen/Mangle.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp
index dac9a7c57a..049353faae 100644
--- a/lib/CodeGen/Mangle.cpp
+++ b/lib/CodeGen/Mangle.cpp
@@ -34,6 +34,7 @@ namespace {
: Context(C), Out(os) { }
bool mangle(const NamedDecl *D);
+ void mangleGuardVariable(const VarDecl *D);
private:
bool mangleFunctionDecl(const FunctionDecl *FD);
@@ -124,6 +125,15 @@ bool CXXNameMangler::mangle(const NamedDecl *D) {
return false;
}
+void CXXNameMangler::mangleGuardVariable(const VarDecl *D)
+{
+ // <special-name> ::= GV <object name> # Guard variable for one-time
+ // # initialization
+
+ Out << "_ZGV";
+ mangleName(D);
+}
+
void CXXNameMangler::mangleFunctionEncoding(const FunctionDecl *FD) {
// <encoding> ::= <function name> <bare-function-type>
mangleName(FD);
@@ -586,5 +596,14 @@ namespace clang {
os.flush();
return true;
}
+
+ /// mangleGuardVariable - Mangles the m
+ void mangleGuardVariable(const VarDecl *D, ASTContext &Context,
+ llvm::raw_ostream &os) {
+ CXXNameMangler Mangler(Context, os);
+ Mangler.mangleGuardVariable(D);
+
+ os.flush();
+ }
}