Changes in src/GenPoly/Lvalue.cc [b4f8808:78cdb06]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/Lvalue.cc
rb4f8808 r78cdb06 60 60 } 61 61 62 struct ReferenceConversions final : public WithStmtsToAdd {62 struct ReferenceConversions final : public WithStmtsToAdd, public WithGuards { 63 63 Expression * postmutate( CastExpr * castExpr ); 64 64 Expression * postmutate( AddressExpr * addrExpr ); … … 71 71 72 72 struct FixIntrinsicResult final : public WithGuards { 73 enum { 74 NoSkip, 75 Skip, 76 SkipInProgress 77 } skip = NoSkip; 78 79 void premutate( AsmExpr * ) { GuardValue( skip ); skip = Skip; } 80 void premutate( ApplicationExpr * ) { GuardValue( skip ); skip = (skip == Skip) ? SkipInProgress : NoSkip; } 81 82 73 83 Expression * postmutate( ApplicationExpr * appExpr ); 74 84 void premutate( FunctionDecl * funcDecl ); … … 162 172 163 173 Expression * FixIntrinsicResult::postmutate( ApplicationExpr * appExpr ) { 164 if ( isIntrinsicReference( appExpr ) ) {174 if ( skip != SkipInProgress && isIntrinsicReference( appExpr ) ) { 165 175 // eliminate reference types from intrinsic applications - now they return lvalues 166 176 ReferenceType * result = strict_dynamic_cast< ReferenceType * >( appExpr->result );
Note: See TracChangeset
for help on using the changeset viewer.