cor3ntin added a comment.

Thanks Shafik.

I have some concern about the diagnostics being wonky because,  if the init and 
field don't match,  it's hard to be sure we won't run into simar issues 
(although i agree this fixes the crash.)

Also, I'm not saying you should do this but... maybe this thing could be 
improved by a sort of `field_iterator` that skips over unnamed bitfield.



================
Comment at: clang/lib/Sema/SemaInit.cpp:2836-2837
           continue;
         if (*NextField != RD->field_end() &&
             declaresSameEntity(*FI, **NextField))
           break;
----------------
I think this is probably where it fails produce something sensible to 
diagnostics.
in the `*NextField == RD->field_end()` case we just go straight to the end.

In that case, we probably want to break when the previous element is the one 
under test, that way you might get to `b`.



CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D154675/new/

https://reviews.llvm.org/D154675

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to