OLD | NEW |
1 //===--- ASTContext.cpp - Context to hold long-lived AST nodes ------------===// | 1 //===--- ASTContext.cpp - Context to hold long-lived AST nodes ------------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file implements the ASTContext interface. | 10 // This file implements the ASTContext interface. |
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 return CanonTTP; | 674 return CanonTTP; |
675 } | 675 } |
676 | 676 |
677 CXXABI *ASTContext::createCXXABI(const TargetInfo &T) { | 677 CXXABI *ASTContext::createCXXABI(const TargetInfo &T) { |
678 if (!LangOpts.CPlusPlus) return nullptr; | 678 if (!LangOpts.CPlusPlus) return nullptr; |
679 | 679 |
680 switch (T.getCXXABI().getKind()) { | 680 switch (T.getCXXABI().getKind()) { |
681 case TargetCXXABI::GenericARM: // Same as Itanium at this level | 681 case TargetCXXABI::GenericARM: // Same as Itanium at this level |
682 case TargetCXXABI::iOS: | 682 case TargetCXXABI::iOS: |
683 case TargetCXXABI::iOS64: | 683 case TargetCXXABI::iOS64: |
| 684 case TargetCXXABI::Emscripten: // @LOCALMOD Emscripten |
684 case TargetCXXABI::GenericAArch64: | 685 case TargetCXXABI::GenericAArch64: |
685 case TargetCXXABI::GenericItanium: | 686 case TargetCXXABI::GenericItanium: |
686 return CreateItaniumCXXABI(*this); | 687 return CreateItaniumCXXABI(*this); |
687 case TargetCXXABI::Microsoft: | 688 case TargetCXXABI::Microsoft: |
688 return CreateMicrosoftCXXABI(*this); | 689 return CreateMicrosoftCXXABI(*this); |
689 } | 690 } |
690 llvm_unreachable("Invalid CXXABI type!"); | 691 llvm_unreachable("Invalid CXXABI type!"); |
691 } | 692 } |
692 | 693 |
693 static const LangAS::Map *getAddressSpaceMap(const TargetInfo &T, | 694 static const LangAS::Map *getAddressSpaceMap(const TargetInfo &T, |
(...skipping 7363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8057 VTContext.reset(new ItaniumVTableContext(*this)); | 8058 VTContext.reset(new ItaniumVTableContext(*this)); |
8058 } | 8059 } |
8059 return VTContext.get(); | 8060 return VTContext.get(); |
8060 } | 8061 } |
8061 | 8062 |
8062 MangleContext *ASTContext::createMangleContext() { | 8063 MangleContext *ASTContext::createMangleContext() { |
8063 switch (Target->getCXXABI().getKind()) { | 8064 switch (Target->getCXXABI().getKind()) { |
8064 case TargetCXXABI::GenericAArch64: | 8065 case TargetCXXABI::GenericAArch64: |
8065 case TargetCXXABI::GenericItanium: | 8066 case TargetCXXABI::GenericItanium: |
8066 case TargetCXXABI::GenericARM: | 8067 case TargetCXXABI::GenericARM: |
| 8068 case TargetCXXABI::Emscripten: // @LOCALMOD Emscripten |
8067 case TargetCXXABI::iOS: | 8069 case TargetCXXABI::iOS: |
8068 case TargetCXXABI::iOS64: | 8070 case TargetCXXABI::iOS64: |
8069 return ItaniumMangleContext::create(*this, getDiagnostics()); | 8071 return ItaniumMangleContext::create(*this, getDiagnostics()); |
8070 case TargetCXXABI::Microsoft: | 8072 case TargetCXXABI::Microsoft: |
8071 return MicrosoftMangleContext::create(*this, getDiagnostics()); | 8073 return MicrosoftMangleContext::create(*this, getDiagnostics()); |
8072 } | 8074 } |
8073 llvm_unreachable("Unsupported ABI"); | 8075 llvm_unreachable("Unsupported ABI"); |
8074 } | 8076 } |
8075 | 8077 |
8076 CXXABI::~CXXABI() {} | 8078 CXXABI::~CXXABI() {} |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8357 } | 8359 } |
8358 | 8360 |
8359 // Explicitly instantiate this in case a Redeclarable<T> is used from a TU that | 8361 // Explicitly instantiate this in case a Redeclarable<T> is used from a TU that |
8360 // doesn't include ASTContext.h | 8362 // doesn't include ASTContext.h |
8361 template | 8363 template |
8362 clang::LazyGenerationalUpdatePtr< | 8364 clang::LazyGenerationalUpdatePtr< |
8363 const Decl *, Decl *, &ExternalASTSource::CompleteRedeclChain>::ValueType | 8365 const Decl *, Decl *, &ExternalASTSource::CompleteRedeclChain>::ValueType |
8364 clang::LazyGenerationalUpdatePtr< | 8366 clang::LazyGenerationalUpdatePtr< |
8365 const Decl *, Decl *, &ExternalASTSource::CompleteRedeclChain>::makeValue( | 8367 const Decl *, Decl *, &ExternalASTSource::CompleteRedeclChain>::makeValue( |
8366 const clang::ASTContext &Ctx, Decl *Value); | 8368 const clang::ASTContext &Ctx, Decl *Value); |
OLD | NEW |