summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/AST/Decl.h38
-rw-r--r--clang/include/clang/AST/DeclCXX.h40
-rw-r--r--clang/lib/AST/Decl.cpp7
-rw-r--r--clang/lib/AST/DeclCXX.cpp8
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp1
5 files changed, 49 insertions, 45 deletions
diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index 2a4d201e5ad..e23b4d84199 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -958,44 +958,6 @@ protected:
friend Decl* Decl::Create(llvm::Deserializer& D, ASTContext& C);
};
-/// LinkageSpecDecl - This represents a linkage specification. For example:
-/// extern "C" void foo();
-///
-class LinkageSpecDecl : public Decl {
-public:
- /// LanguageIDs - Used to represent the language in a linkage
- /// specification. The values are part of the serialization abi for
- /// ASTs and cannot be changed without altering that abi. To help
- /// ensure a stable abi for this, we choose the DW_LANG_ encodings
- /// from the dwarf standard.
- enum LanguageIDs { lang_c = /* DW_LANG_C */ 0x0002,
- lang_cxx = /* DW_LANG_C_plus_plus */ 0x0004 };
-private:
- /// Language - The language for this linkage specification.
- LanguageIDs Language;
- /// D - This is the Decl of the linkage specification.
- Decl *D;
-
- LinkageSpecDecl(SourceLocation L, LanguageIDs lang, Decl *d)
- : Decl(LinkageSpec, L), Language(lang), D(d) {}
-public:
- static LinkageSpecDecl *Create(ASTContext &C, SourceLocation L,
- LanguageIDs Lang, Decl *D);
-
- LanguageIDs getLanguage() const { return Language; }
- const Decl *getDecl() const { return D; }
- Decl *getDecl() { return D; }
-
- static bool classof(const Decl *D) {
- return D->getKind() == LinkageSpec;
- }
- static bool classof(const LinkageSpecDecl *D) { return true; }
-
-protected:
- void EmitInRec(llvm::Serializer& S) const;
- void ReadInRec(llvm::Deserializer& D, ASTContext& C);
-};
-
/// BlockDecl - This represents a block literal declaration, which is like an
/// unnamed FunctionDecl. For example:
/// ^{ statement-body } or ^(int arg1, float arg2){ statement-body }
diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h
index 9595a78021f..7a0bce8f83f 100644
--- a/clang/include/clang/AST/DeclCXX.h
+++ b/clang/include/clang/AST/DeclCXX.h
@@ -573,6 +573,46 @@ public:
return isa<CXXFieldDecl>(D);
}
};
+
+/// LinkageSpecDecl - This represents a linkage specification. For example:
+/// extern "C" void foo();
+///
+class LinkageSpecDecl : public Decl {
+public:
+ /// LanguageIDs - Used to represent the language in a linkage
+ /// specification. The values are part of the serialization abi for
+ /// ASTs and cannot be changed without altering that abi. To help
+ /// ensure a stable abi for this, we choose the DW_LANG_ encodings
+ /// from the dwarf standard.
+ enum LanguageIDs { lang_c = /* DW_LANG_C */ 0x0002,
+ lang_cxx = /* DW_LANG_C_plus_plus */ 0x0004 };
+private:
+ /// Language - The language for this linkage specification.
+ LanguageIDs Language;
+ /// D - This is the Decl of the linkage specification.
+ Decl *D;
+
+ LinkageSpecDecl(SourceLocation L, LanguageIDs lang, Decl *d)
+ : Decl(LinkageSpec, L), Language(lang), D(d) {}
+public:
+ static LinkageSpecDecl *Create(ASTContext &C, SourceLocation L,
+ LanguageIDs Lang, Decl *D);
+
+ LanguageIDs getLanguage() const { return Language; }
+ const Decl *getDecl() const { return D; }
+ Decl *getDecl() { return D; }
+
+ static bool classof(const Decl *D) {
+ return D->getKind() == LinkageSpec;
+ }
+ static bool classof(const LinkageSpecDecl *D) { return true; }
+
+protected:
+ void EmitInRec(llvm::Serializer& S) const;
+ void ReadInRec(llvm::Deserializer& D, ASTContext& C);
+};
+
+
} // end namespace clang
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index dbc92f414fc..81fe766ff01 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -129,13 +129,6 @@ FileScopeAsmDecl *FileScopeAsmDecl::Create(ASTContext &C,
return new (Mem) FileScopeAsmDecl(L, Str);
}
-LinkageSpecDecl *LinkageSpecDecl::Create(ASTContext &C,
- SourceLocation L,
- LanguageIDs Lang, Decl *D) {
- void *Mem = C.getAllocator().Allocate<LinkageSpecDecl>();
- return new (Mem) LinkageSpecDecl(L, Lang, D);
-}
-
//===----------------------------------------------------------------------===//
// NamedDecl Implementation
//===----------------------------------------------------------------------===//
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp
index fa4f35be7ad..21701461e61 100644
--- a/clang/lib/AST/DeclCXX.cpp
+++ b/clang/lib/AST/DeclCXX.cpp
@@ -189,3 +189,11 @@ OverloadedFunctionDecl::Create(ASTContext &C, DeclContext *DC,
void *Mem = C.getAllocator().Allocate<OverloadedFunctionDecl>();
return new (Mem) OverloadedFunctionDecl(DC, Id);
}
+
+LinkageSpecDecl *LinkageSpecDecl::Create(ASTContext &C,
+ SourceLocation L,
+ LanguageIDs Lang, Decl *D) {
+ void *Mem = C.getAllocator().Allocate<LinkageSpecDecl>();
+ return new (Mem) LinkageSpecDecl(L, Lang, D);
+}
+
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 2ca893fb41f..3555ccd53a5 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -18,6 +18,7 @@
#include "CGObjCRuntime.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
+#include "clang/AST/DeclCXX.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
OpenPOWER on IntegriCloud