зеркало из https://github.com/microsoft/clang-1.git
Add support for mangling guard variables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68969 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
87454161a6
Коммит
41aa8c1e40
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,9 +25,12 @@ namespace llvm {
|
|||
namespace clang {
|
||||
class ASTContext;
|
||||
class NamedDecl;
|
||||
|
||||
class VarDecl;
|
||||
|
||||
bool mangleName(const NamedDecl *D, ASTContext &Context,
|
||||
llvm::raw_ostream &os);
|
||||
void mangleGuardVariable(const VarDecl *D, ASTContext &Context,
|
||||
llvm::raw_ostream &os);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче