diff options
author | Anders Carlsson <andersca@mac.com> | 2009-11-26 03:09:37 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-11-26 03:09:37 +0000 |
commit | 7622cd3410846d28862ecfe862117894a259a7fa (patch) | |
tree | 15cb5de7a3ad12490678b65ce64c27e3e40e8dcb /lib/CodeGen/Mangle.cpp | |
parent | e9d6554ba78fb81e810fdaec9b2c98ab96526e83 (diff) |
Add a CovariantThunkAdjustment struct that represents the adjustments needed for a covariant thunk.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89933 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/Mangle.cpp')
-rw-r--r-- | lib/CodeGen/Mangle.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index 37061f144c..4b7ab4f20e 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -1371,9 +1371,10 @@ void MangleContext::mangleThunk(const FunctionDecl *FD, /// \brief Mangles the a covariant thunk for the declaration D and emits that /// name to the given output stream. -void MangleContext::mangleCovariantThunk(const FunctionDecl *FD, int64_t nv_t, - int64_t v_t, int64_t nv_r, int64_t v_r, - llvm::SmallVectorImpl<char> &Res) { +void +MangleContext::mangleCovariantThunk(const FunctionDecl *FD, + const CovariantThunkAdjustment& Adjustment, + llvm::SmallVectorImpl<char> &Res) { // FIXME: Hum, we might have to thunk these, fix. assert(!isa<CXXDestructorDecl>(FD) && "Use mangleCXXDtor for destructor decls!"); @@ -1384,8 +1385,8 @@ void MangleContext::mangleCovariantThunk(const FunctionDecl *FD, int64_t nv_t, // # second call-offset is result adjustment CXXNameMangler Mangler(*this, Res); Mangler.getStream() << "_ZTc"; - Mangler.mangleCallOffset(ThunkAdjustment(nv_t, v_t)); - Mangler.mangleCallOffset(ThunkAdjustment(nv_r, v_r)); + Mangler.mangleCallOffset(Adjustment.ThisAdjustment); + Mangler.mangleCallOffset(Adjustment.ReturnAdjustment); Mangler.mangleFunctionEncoding(FD); } |