OLD | NEW |
1 //===--- ItaniumMangle.cpp - Itanium C++ Name Mangling ----------*- C++ -*-===// | 1 //===--- ItaniumMangle.cpp - Itanium C++ Name Mangling ----------*- C++ -*-===// |
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 // Implements C++ name mangling according to the Itanium C++ ABI, | 10 // Implements C++ name mangling according to the Itanium C++ ABI, |
(...skipping 2866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2877 case Expr::MemberExprClass: { | 2877 case Expr::MemberExprClass: { |
2878 const MemberExpr *ME = cast<MemberExpr>(E); | 2878 const MemberExpr *ME = cast<MemberExpr>(E); |
2879 mangleMemberExpr(ME->getBase(), ME->isArrow(), | 2879 mangleMemberExpr(ME->getBase(), ME->isArrow(), |
2880 ME->getQualifier(), nullptr, | 2880 ME->getQualifier(), nullptr, |
2881 ME->getMemberDecl()->getDeclName(), Arity); | 2881 ME->getMemberDecl()->getDeclName(), Arity); |
2882 break; | 2882 break; |
2883 } | 2883 } |
2884 | 2884 |
2885 case Expr::UnresolvedMemberExprClass: { | 2885 case Expr::UnresolvedMemberExprClass: { |
2886 const UnresolvedMemberExpr *ME = cast<UnresolvedMemberExpr>(E); | 2886 const UnresolvedMemberExpr *ME = cast<UnresolvedMemberExpr>(E); |
2887 mangleMemberExpr(ME->getBase(), ME->isArrow(), | 2887 mangleMemberExpr(ME->isImplicitAccess() ? nullptr : ME->getBase(), |
2888 ME->getQualifier(), nullptr, ME->getMemberName(), | 2888 ME->isArrow(), ME->getQualifier(), nullptr, |
2889 Arity); | 2889 ME->getMemberName(), Arity); |
2890 if (ME->hasExplicitTemplateArgs()) | 2890 if (ME->hasExplicitTemplateArgs()) |
2891 mangleTemplateArgs(ME->getExplicitTemplateArgs()); | 2891 mangleTemplateArgs(ME->getExplicitTemplateArgs()); |
2892 break; | 2892 break; |
2893 } | 2893 } |
2894 | 2894 |
2895 case Expr::CXXDependentScopeMemberExprClass: { | 2895 case Expr::CXXDependentScopeMemberExprClass: { |
2896 const CXXDependentScopeMemberExpr *ME | 2896 const CXXDependentScopeMemberExpr *ME |
2897 = cast<CXXDependentScopeMemberExpr>(E); | 2897 = cast<CXXDependentScopeMemberExpr>(E); |
2898 mangleMemberExpr(ME->getBase(), ME->isArrow(), | 2898 mangleMemberExpr(ME->isImplicitAccess() ? nullptr : ME->getBase(), |
2899 ME->getQualifier(), ME->getFirstQualifierFoundInScope(), | 2899 ME->isArrow(), ME->getQualifier(), |
| 2900 ME->getFirstQualifierFoundInScope(), |
2900 ME->getMember(), Arity); | 2901 ME->getMember(), Arity); |
2901 if (ME->hasExplicitTemplateArgs()) | 2902 if (ME->hasExplicitTemplateArgs()) |
2902 mangleTemplateArgs(ME->getExplicitTemplateArgs()); | 2903 mangleTemplateArgs(ME->getExplicitTemplateArgs()); |
2903 break; | 2904 break; |
2904 } | 2905 } |
2905 | 2906 |
2906 case Expr::UnresolvedLookupExprClass: { | 2907 case Expr::UnresolvedLookupExprClass: { |
2907 const UnresolvedLookupExpr *ULE = cast<UnresolvedLookupExpr>(E); | 2908 const UnresolvedLookupExpr *ULE = cast<UnresolvedLookupExpr>(E); |
2908 mangleUnresolvedName(ULE->getQualifier(), ULE->getName(), Arity); | 2909 mangleUnresolvedName(ULE->getQualifier(), ULE->getName(), Arity); |
2909 | 2910 |
(...skipping 1165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4075 | 4076 |
4076 void ItaniumMangleContextImpl::mangleStringLiteral(const StringLiteral *, raw_os
tream &) { | 4077 void ItaniumMangleContextImpl::mangleStringLiteral(const StringLiteral *, raw_os
tream &) { |
4077 llvm_unreachable("Can't mangle string literals"); | 4078 llvm_unreachable("Can't mangle string literals"); |
4078 } | 4079 } |
4079 | 4080 |
4080 ItaniumMangleContext * | 4081 ItaniumMangleContext * |
4081 ItaniumMangleContext::create(ASTContext &Context, DiagnosticsEngine &Diags) { | 4082 ItaniumMangleContext::create(ASTContext &Context, DiagnosticsEngine &Diags) { |
4082 return new ItaniumMangleContextImpl(Context, Diags); | 4083 return new ItaniumMangleContextImpl(Context, Diags); |
4083 } | 4084 } |
4084 | 4085 |
OLD | NEW |