Changeset 637c139 for src/GenPoly
- Timestamp:
 - Oct 31, 2022, 10:09:36 AM (3 years ago)
 - Branches:
 - ADT, ast-experimental, master
 - Children:
 - cd5b58f, e3bf4cf
 - Parents:
 - c7f12a4
 - File:
 - 
      
- 1 edited
 
- 
          
  src/GenPoly/Box.cc (modified) (2 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
src/GenPoly/Box.cc
rc7f12a4 r637c139 354 354 addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( sizeParam ), new ConstantExpr( Constant::from_ulong( 0 ) ) ) ); 355 355 addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( alignParam ), new ConstantExpr( Constant::from_ulong( 1 ) ) ) ); 356 unsigned long n_members = 0; 357 bool firstMember = true; 358 for ( Declaration* member : structDecl->get_members() ) { 359 DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( member ); 356 for ( auto index_member : enumerate( structDecl->members ) ) { 357 DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( index_member.val ); 360 358 assert( dwt ); 361 359 Type *memberType = dwt->get_type(); 362 360 363 if ( firstMember ) { 364 firstMember = false; 365 } else { 361 if ( 0 < index_member.idx ) { 366 362 // make sure all members after the first (automatically aligned at 0) are properly padded for alignment 367 363 addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), new AlignofExpr( memberType->clone() ) ) ); … … 369 365 370 366 // place current size in the current offset index 371 addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from_ulong( n_members) ) ),367 addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from_ulong( index_member.idx ) ) ), 372 368 derefVar( sizeParam ) ) ); 373 ++n_members;374 369 375 370 // add member size to current size  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.