Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2018-05-18 23:39:57 +0300
committerEric Fiselier <eric@efcs.ca>2018-05-18 23:39:57 +0300
commit77eaa59cd22508c59b863f30ee1cdbc04d9b4ab8 (patch)
tree64b6349933b4a6e803989b8079a410b3f5172bf3 /libcxxabi/src/private_typeinfo.cpp
parentda71639cdb88239e9a2360f6a682946e2d899650 (diff)
private_typeinfo: propagate static flags in vmi search_above_dst method
Patch by Ryan Prichard Propagate the found_our_static_ptr and found_any_static_type flags from __vmi_class_type_info::search_above_dst to its caller. Fixes PR33425 and PR33487 Reviewed as https://reviews.llvm.org/D36446 llvm-svn: 332763
Diffstat (limited to 'libcxxabi/src/private_typeinfo.cpp')
-rw-r--r--libcxxabi/src/private_typeinfo.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/libcxxabi/src/private_typeinfo.cpp b/libcxxabi/src/private_typeinfo.cpp
index ef9466ef610b..6da3c779c3bf 100644
--- a/libcxxabi/src/private_typeinfo.cpp
+++ b/libcxxabi/src/private_typeinfo.cpp
@@ -1181,6 +1181,8 @@ __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info,
info->found_our_static_ptr = false;
info->found_any_static_type = false;
p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
+ found_our_static_ptr |= info->found_our_static_ptr;
+ found_any_static_type |= info->found_any_static_type;
if (++p < e)
{
do
@@ -1210,6 +1212,8 @@ __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info,
info->found_our_static_ptr = false;
info->found_any_static_type = false;
p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
+ found_our_static_ptr |= info->found_our_static_ptr;
+ found_any_static_type |= info->found_any_static_type;
} while (++p < e);
}
// Restore flags