Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Autogen.cc

    r0b4d93ab rcad355a  
    8484                }
    8585
    86                 *out++ = new ExprStmt( noLabels, fExpr );
     86                Statement * callStmt = new ExprStmt( noLabels, fExpr );
     87                if ( (fname == "?{}" || fname == "^?{}") && ( !obj || ( obj && obj->get_bitfieldWidth() == NULL ) ) ) {
     88                        // implicitly generated ctor/dtor calls should be wrapped
     89                        // so that later passes are aware they were generated.
     90                        // xxx - don't mark as an implicit ctor/dtor if obj is a bitfield,
     91                        // because this causes the address to be taken at codegen, which is illegal in C.
     92                        callStmt = new ImplicitCtorDtorStmt( callStmt );
     93                }
     94                *out++ = callStmt;
    8795        }
    8896
     
    244252                                }
    245253
    246                                 if ( type->get_qualifiers().isConst ) {
    247                                         // don't assign const members
     254                                if ( type->get_qualifiers().isConst && func->get_name() == "?=?" ) {
     255                                        // don't assign const members, but do construct/destruct
    248256                                        continue;
    249257                                }
Note: See TracChangeset for help on using the changeset viewer.