eugenis accepted this revision.
eugenis added a comment.
This revision is now accepted and ready to land.

LGTM



================
Comment at: clang/lib/CodeGen/CGClass.cpp:1742
+          Context.toCharUnitsFromBits(Layout.getFieldOffset(layoutStartOffset) 
+
+                                      Context.getCharWidth() - 1);
+      llvm::ConstantInt *OffsetSizePtr =
----------------
vitalybuka wrote:
> vitalybuka wrote:
> > morehouse wrote:
> > > How does this interact with bit fields?
> > I guess existing code work because is bit fields are trivial and the one 
> > aligned to the char is going to be layoutStartOffset
> > I assume if we call this function for layoutStartOffset pointing to the 
> > bitfield in the middle of char it will poison entire byte which is 
> > incorrect.
> > With the patch it will not poison such chars: now it will be either all 
> > bits or nothing which I believe better.
> toCharUnitsFromBits already down aligns by definition: it's just a 
> bitsoffset/charwidth
> 
> regarding assert: I am not 100% that this is not possible, maybe some 
> corner-case in language allows that.
> if so, it's better not to poison partial byte at all than poison it 
> completely.
> 
> I assume if we call this function for layoutStartOffset pointing to the 
> bitfield in the middle of char it will poison entire byte which is incorrect.
Right. We never do this, of course, because the previous non-trivial field can 
not possibly end in the middle of a char.




Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D92728

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

Reply via email to