ICG exclude of class member variables now defines incorrect memory offsets in io_src #311

Missed some bitfield offset calculations.
This commit is contained in:
Alex Lin
2016-09-16 09:46:03 -05:00
parent ae07b26243
commit 00a0e8be44
3 changed files with 13 additions and 0 deletions

View File

@ -215,6 +215,9 @@ bool FieldVisitor::VisitFieldDecl( clang::FieldDecl *field ) {
if ( field->isBitField()) {
fdes->setBitField(true) ;
fdes->setBitFieldWidth(field->getBitWidthValue(field->getASTContext())) ;
unsigned int field_offset_bits = field->getASTContext().getFieldOffset(field) + fdes->getBaseClassOffset() * 8 ;
fdes->setBitFieldStart( 32 - (field_offset_bits % 32) - fdes->getBitFieldWidth()) ;
fdes->setBitFieldByteOffset((field_offset_bits / 32) * 4 ) ;
}
if ( debug_level >= 3 ) {