Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Autogen.cc

    r4e06c1e rcad355a  
    99// Author           : Rob Schluntz
    1010// Created On       : Thu Mar 03 15:45:56 2016
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:47:17 2016
    13 // Update Count     : 2
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu May 26 14:14:09 2016
     13// Update Count     : 1
    1414//
    1515
     
    4242                virtual void visit( CompoundStmt *compoundStmt );
    4343                virtual void visit( SwitchStmt *switchStmt );
     44                virtual void visit( ChooseStmt *chooseStmt );
     45                // virtual void visit( CaseStmt *caseStmt );
    4446
    4547                AutogenerateRoutines() : functionNesting( 0 ) {}
     
    8284                }
    8385
    84                 *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;
    8595        }
    8696
     
    242252                                }
    243253
    244                                 if ( type->get_qualifiers().isConst ) {
    245                                         // don't assign const members
     254                                if ( type->get_qualifiers().isConst && func->get_name() == "?=?" ) {
     255                                        // don't assign const members, but do construct/destruct
    246256                                        continue;
    247257                                }
     
    549559                visitStatement( switchStmt );
    550560        }
     561
     562        void AutogenerateRoutines::visit( ChooseStmt *switchStmt ) {
     563                visitStatement( switchStmt );
     564        }
     565
     566        // void AutogenerateRoutines::visit( CaseStmt *caseStmt ) {
     567        //      visitStatement( caseStmt );
     568        // }
    551569} // SymTab
Note: See TracChangeset for help on using the changeset viewer.