aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CGCall.cpp
diff options
context:
space:
mode:
authorGeorge Burgess IV <george.burgess.iv@gmail.com>2017-02-22 22:38:25 +0000
committerGeorge Burgess IV <george.burgess.iv@gmail.com>2017-02-22 22:38:25 +0000
commit75b34a9610dcecba1073ff01d4512eec42975b2a (patch)
tree68d6dc862de2b50fef25d12a079716037c29e195 /clang/lib/CodeGen/CGCall.cpp
parentdb56e5a89af8a8ed9e3d69da176dfc8e44131fa0 (diff)
downloadllvm-75b34a9610dcecba1073ff01d4512eec42975b2a.zip
llvm-75b34a9610dcecba1073ff01d4512eec42975b2a.tar.gz
llvm-75b34a9610dcecba1073ff01d4512eec42975b2a.tar.bz2
[CodeGen] Add param info for ctors with ABI args.
This fixes a few assertion failures. Please see the added test case. llvm-svn: 295894
Diffstat (limited to 'clang/lib/CodeGen/CGCall.cpp')
-rw-r--r--clang/lib/CodeGen/CGCall.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
index 98056f5..85b2e25 100644
--- a/clang/lib/CodeGen/CGCall.cpp
+++ b/clang/lib/CodeGen/CGCall.cpp
@@ -288,7 +288,17 @@ CodeGenTypes::arrangeCXXStructorDeclaration(const CXXMethodDecl *MD,
if (PassParams)
appendParameterTypes(*this, argTypes, paramInfos, FTP, MD);
- TheCXXABI.buildStructorSignature(MD, Type, argTypes);
+ CGCXXABI::AddedStructorArgs AddedArgs =
+ TheCXXABI.buildStructorSignature(MD, Type, argTypes);
+ if (!paramInfos.empty()) {
+ // Note: prefix implies after the first param.
+ if (AddedArgs.Prefix)
+ paramInfos.insert(paramInfos.begin() + 1, AddedArgs.Prefix,
+ FunctionProtoType::ExtParameterInfo{});
+ if (AddedArgs.Suffix)
+ paramInfos.append(AddedArgs.Suffix,
+ FunctionProtoType::ExtParameterInfo{});
+ }
RequiredArgs required =
(PassParams && MD->isVariadic() ? RequiredArgs(argTypes.size())