Changes in / [ce7bdc4:ba3df4d]


Ignore:
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Lvalue.cc

    rce7bdc4 rba3df4d  
    6060                }
    6161
    62                 struct ReferenceConversions final : public WithStmtsToAdd, public WithGuards {
     62                struct ReferenceConversions final : public WithStmtsToAdd {
    6363                        Expression * postmutate( CastExpr * castExpr );
    6464                        Expression * postmutate( AddressExpr * addrExpr );
     
    7171
    7272                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 
    8373                        Expression * postmutate( ApplicationExpr * appExpr );
    8474                        void premutate( FunctionDecl * funcDecl );
     
    172162
    173163                Expression * FixIntrinsicResult::postmutate( ApplicationExpr * appExpr ) {
    174                         if ( skip != SkipInProgress && isIntrinsicReference( appExpr ) ) {
     164                        if ( isIntrinsicReference( appExpr ) ) {
    175165                                // eliminate reference types from intrinsic applications - now they return lvalues
    176166                                ReferenceType * result = strict_dynamic_cast< ReferenceType * >( appExpr->result );
  • tests/.expect/references.txt

    rce7bdc4 rba3df4d  
    36363
    37373 9 { 1., 7. }, [1, 2, 3]
    38 4
    3938Destructing a Y
    4039Destructing a Y
  • tests/references.cfa

    rce7bdc4 rba3df4d  
    119119                f( 3, a + b, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } ); // two rvalue to reference
    120120        }
    121 
    122         {
    123                 int a = 3;
    124                 int *p = &a;
    125                 asm (
    126                         "incl %[p]\n\t" :
    127                         : [p] "m" (*p)
    128                 );
    129                 printf("%d\n", a);
    130         }
    131121}
    132122
Note: See TracChangeset for help on using the changeset viewer.