summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Demangle/ItaniumDemangle.cpp
diff options
context:
space:
mode:
authorTamas Berghammer <tberghammer@google.com>2017-05-24 11:29:02 +0000
committerTamas Berghammer <tberghammer@google.com>2017-05-24 11:29:02 +0000
commite3852fa4052cef4715acebcffe2e18e2ff8b76b8 (patch)
tree6684232260083de1584d3f991a2d508e058959a3 /llvm/lib/Demangle/ItaniumDemangle.cpp
parent8bc9b88a241c617ad25f3d8d728d9b5581bd86a9 (diff)
downloadbcm5719-llvm-e3852fa4052cef4715acebcffe2e18e2ff8b76b8.tar.gz
bcm5719-llvm-e3852fa4052cef4715acebcffe2e18e2ff8b76b8.zip
Demangler: Fix constructor cv qualifier handling
Previously if we parsed a constructor then we set parsed_ctor_dtor_cv to true and never reseted it. This causes issue when a template argument references a constructor (e.g. type of lambda defined inside a constructor) as we will have the parsed_ctor_dtor_cv flag set what will cause issues when parsing later arguments. Differential Revision: https://reviews.llvm.org/D33385 libcxxabi change: https://reviews.llvm.org/rL303737 llvm-svn: 303738
Diffstat (limited to 'llvm/lib/Demangle/ItaniumDemangle.cpp')
-rw-r--r--llvm/lib/Demangle/ItaniumDemangle.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Demangle/ItaniumDemangle.cpp b/llvm/lib/Demangle/ItaniumDemangle.cpp
index f454ae61d96..d6e76e49c0f 100644
--- a/llvm/lib/Demangle/ItaniumDemangle.cpp
+++ b/llvm/lib/Demangle/ItaniumDemangle.cpp
@@ -4030,6 +4030,8 @@ static const char *parse_encoding(const char *first, const char *last, C &db) {
save_value<decltype(db.tag_templates)> sb(db.tag_templates);
if (db.encoding_depth > 1)
db.tag_templates = true;
+ save_value<decltype(db.parsed_ctor_dtor_cv)> sp(db.parsed_ctor_dtor_cv);
+ db.parsed_ctor_dtor_cv = false;
switch (*first) {
case 'G':
case 'T':
OpenPOWER on IntegriCloud