================
@@ -3059,9 +3059,8 @@ void DWARFASTParserClang::ParseSingleMember(
   // This needs to be done after updating FieldInfo which keeps track of where
   // field start/end so we don't later try to fill the space of this
   // artificial member with (unnamed bitfield) padding.
-  // FIXME: This check should verify that this is indeed an artificial member
-  // we are supposed to ignore.
-  if (attrs.is_artificial) {
+  if (attrs.is_artificial &&
+      TypeSystemClang::ShouldIgnoreArtificialField(attrs.name)) {
----------------
hokein wrote:

This function is only used to parse `DW_TAG_MEMBER`. I took a look on all 
related usages of `createMemberType` with `llvm::DINode::FlagArtificial` in the 
llvm source repo:
- vptr pointer: 
https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/CGDebugInfo.cpp#L2426
- coroutines:
   - 
https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/Coroutines/CoroFrame.cpp#L1058
  
   - 
https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/Coroutines/CoroFrame.cpp#L1234

so two cases are virtual pointer, and coroutines frames. And to my best 
knowledge, not ignoring coroutine artificial fields should be fine, the 
coroutine frame is just a regular plain struct . 

https://github.com/llvm/llvm-project/pull/70779
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to