Changeset 637c139 for src


Ignore:
Timestamp:
Oct 31, 2022, 10:09:36 AM (18 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
ADT, ast-experimental, master
Children:
cd5b58f, e3bf4cf
Parents:
c7f12a4
Message:

Cleaning old box pass for easier translation. Simplify another loop, reducing flags and extra increments.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Box.cc

    rc7f12a4 r637c139  
    354354                addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( sizeParam ), new ConstantExpr( Constant::from_ulong( 0 ) ) ) );
    355355                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 );
    360358                        assert( dwt );
    361359                        Type *memberType = dwt->get_type();
    362360
    363                         if ( firstMember ) {
    364                                 firstMember = false;
    365                         } else {
     361                        if ( 0 < index_member.idx ) {
    366362                                // make sure all members after the first (automatically aligned at 0) are properly padded for alignment
    367363                                addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), new AlignofExpr( memberType->clone() ) ) );
     
    369365
    370366                        // 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 ) ) ),
    372368                                                                              derefVar( sizeParam ) ) );
    373                         ++n_members;
    374369
    375370                        // add member size to current size
Note: See TracChangeset for help on using the changeset viewer.