File tree Expand file tree Collapse file tree 4 files changed +13
-2
lines changed
LanguageRuntime/CPlusPlus Expand file tree Collapse file tree 4 files changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -41,7 +41,10 @@ CPPLanguageRuntime::CPPLanguageRuntime(Process *process)
41
41
: LanguageRuntime(process) {}
42
42
43
43
bool CPPLanguageRuntime::IsAllowedRuntimeValue (ConstString name) {
44
- return name == g_this;
44
+ // FIXME: use a list when the list grows more.
45
+ return name == g_this ||
46
+ name == ConstString (" __promise" ) ||
47
+ name == ConstString (" __coro_frame" );
45
48
}
46
49
47
50
bool CPPLanguageRuntime::GetObjectDescription (Stream &str,
Original file line number Diff line number Diff line change @@ -3061,7 +3061,8 @@ void DWARFASTParserClang::ParseSingleMember(
3061
3061
// artificial member with (unnamed bitfield) padding.
3062
3062
// FIXME: This check should verify that this is indeed an artificial member
3063
3063
// we are supposed to ignore.
3064
- if (attrs.is_artificial ) {
3064
+ if (attrs.is_artificial &&
3065
+ !TypeSystemClang::IsCoroutineFrameType (class_clang_type)) {
3065
3066
last_field_info.SetIsArtificial (true );
3066
3067
return ;
3067
3068
}
Original file line number Diff line number Diff line change @@ -771,6 +771,10 @@ TypeSystemClang *TypeSystemClang::GetASTContext(clang::ASTContext *ast) {
771
771
return clang_ast;
772
772
}
773
773
774
+ bool TypeSystemClang::IsCoroutineFrameType (const CompilerType &Type) {
775
+ return Type.GetTypeName ().GetStringRef ().ends_with (" .coro_frame_ty" );
776
+ }
777
+
774
778
clang::MangleContext *TypeSystemClang::getMangleContext () {
775
779
if (m_mangle_ctx_up == nullptr )
776
780
m_mangle_ctx_up.reset (getASTContext ().createMangleContext ());
Original file line number Diff line number Diff line change @@ -154,6 +154,9 @@ class TypeSystemClang : public TypeSystem {
154
154
155
155
static TypeSystemClang *GetASTContext (clang::ASTContext *ast_ctx);
156
156
157
+ // Returns true if the given type is a coroutine frame debug type.
158
+ static bool IsCoroutineFrameType (const CompilerType &Type);
159
+
157
160
// / Returns the display name of this TypeSystemClang that indicates what
158
161
// / purpose it serves in LLDB. Used for example in logs.
159
162
llvm::StringRef getDisplayName () const { return m_display_name; }
You can’t perform that action at this time.
0 commit comments