Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Lvalue.cc

    rf8b961b rcf16f94  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:41:33 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Dec 15 15:33:13 2015
     13// Update Count     : 3
    1414//
    1515
     
    3535                const std::list<Label> noLabels;
    3636
    37                 /// Replace uses of lvalue returns with appropriate pointers
    3837                class Pass1 : public Mutator {
    3938                  public:
     
    4746                };
    4847
    49                 /// Replace declarations of lvalue returns with appropriate pointers
    5048                class Pass2 : public Visitor {
    5149                  public:
     
    122120                        if ( retval && retStmt->get_expr() ) {
    123121                                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
    131122                                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
    132133                                        retStmt->set_expr( new AddressExpr( retStmt->get_expr()->acceptMutator( *this ) ) );
    133134                                } else {
Note: See TracChangeset for help on using the changeset viewer.