Changeset 637c139 for src/GenPoly
- Timestamp:
- Oct 31, 2022, 10:09:36 AM (2 years ago)
- Branches:
- ADT, ast-experimental, master
- Children:
- cd5b58f, e3bf4cf
- Parents:
- c7f12a4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified 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.