Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Lvalue.cc

    rcf16f94 rf8b961b  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 15 15:33:13 2015
    13 // Update Count     : 3
     12// Last Modified On : Tue May 19 07:41:33 2015
     13// Update Count     : 1
    1414//
    1515
     
    3535                const std::list<Label> noLabels;
    3636
     37                /// Replace uses of lvalue returns with appropriate pointers
    3738                class Pass1 : public Mutator {
    3839                  public:
     
    4647                };
    4748
     49                /// Replace declarations of lvalue returns with appropriate pointers
    4850                class Pass2 : public Visitor {
    4951                  public:
     
    120122                        if ( retval && retStmt->get_expr() ) {
    121123                                assert( ! retStmt->get_expr()->get_results().empty() );
     124                                while ( CastExpr *castExpr = dynamic_cast< CastExpr* >( retStmt->get_expr() ) ) {
     125                                        retStmt->set_expr( castExpr->get_arg() );
     126                                        retStmt->get_expr()->set_env( castExpr->get_env() );
     127                                        castExpr->set_env( 0 );
     128                                        castExpr->set_arg( 0 );
     129                                        delete castExpr;
     130                                } // while
    122131                                if ( retStmt->get_expr()->get_results().front()->get_isLvalue() ) {
    123                                         // ***** Code Removal ***** because casts may be stripped already
    124 
    125                                         // strip casts because not allowed to take address of cast
    126                                         // while ( CastExpr *castExpr = dynamic_cast< CastExpr* >( retStmt->get_expr() ) ) {
    127                                         //      retStmt->set_expr( castExpr->get_arg() );
    128                                         //      retStmt->get_expr()->set_env( castExpr->get_env() );
    129                                         //      castExpr->set_env( 0 );
    130                                         //      castExpr->set_arg( 0 );
    131                                         //      delete castExpr;
    132                                         // } // while
    133132                                        retStmt->set_expr( new AddressExpr( retStmt->get_expr()->acceptMutator( *this ) ) );
    134133                                } else {
Note: See TracChangeset for help on using the changeset viewer.