Changeset 3f3bfe5a for src/AST


Ignore:
Timestamp:
Oct 11, 2019, 2:23:30 PM (6 years ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
396b830
Parents:
cf32116 (diff), 70b4ea20 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from master to new-ast. Removing old lvalue support.

Location:
src/AST
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/AST/CVQualifiers.hpp

    rcf32116 r3f3bfe5a  
    2727                Restrict = 1 << 1,
    2828                Volatile = 1 << 2,
    29                 Lvalue   = 1 << 3,
    30                 Mutex    = 1 << 4,
    31                 Atomic   = 1 << 5,
    32                 NumQualifiers = 6
     29                Mutex    = 1 << 3,
     30                Atomic   = 1 << 4,
     31                NumQualifiers = 5
    3332        };
    3433
    3534        /// Mask for equivalence-preserving qualfiers
    36         enum { EquivQualifiers = ~(Restrict | Lvalue) };
     35        enum { EquivQualifiers = ~Restrict };
    3736
    3837        /// Underlying data for qualifiers
     
    4443                                bool is_restrict : 1;
    4544                                bool is_volatile : 1;
    46                                 bool is_lvalue   : 1;
    4745                                bool is_mutex    : 1;
    4846                                bool is_atomic   : 1;
  • src/AST/Expr.cpp

    rcf32116 r3f3bfe5a  
    1010// Created On       : Wed May 15 17:00:00 2019
    1111// Last Modified By : Andrew Beach
    12 // Created On       : Thr Jun 26 12:12:00 2019
    13 // Update Count     : 3
     12// Created On       : Fri Oct  4 15:34:00 2019
     13// Update Count     : 4
    1414//
    1515
     
    8282                        // base type
    8383                        ret->result = base;
    84                         add_qualifiers( ret->result, CV::Lvalue );
    8584                }
    8685        }
     
    131130                        // lvalue, retains all levels of reference, and gains a pointer inside the references
    132131                        Type * res = addrType( arg->result );
    133                         res->set_lvalue( false ); // result of & is never an lvalue
    134132                        result = res;
    135133                } else {
     
    138136                                        dynamic_cast< const ReferenceType * >( arg->result.get() ) ) {
    139137                                Type * res = addrType( refType->base );
    140                                 res->set_lvalue( false ); // result of & is never an lvalue
    141138                                result = res;
    142139                        } else {
     
    230227        // substitute aggregate generic parameters into member type
    231228        genericSubstitution( aggregate->result ).apply( result );
    232         // ensure lvalue and appropriate restrictions from aggregate type
    233         add_qualifiers( result, aggregate->result->qualifiers | CV::Lvalue );
     229        // ensure appropriate restrictions from aggregate type
     230        add_qualifiers( result, aggregate->result->qualifiers );
    234231}
    235232
     
    257254        assert( var );
    258255        assert( var->get_type() );
    259         auto r = shallowCopy( var->get_type() );
    260         r->qualifiers |= CV::Lvalue;
    261         result = r;
     256        result = shallowCopy( var->get_type() );
    262257}
    263258
     
    376371        assert( t && i );
    377372        result = t;
    378         add_qualifiers( result, CV::Lvalue );
    379373}
    380374
     
    397391        // like MemberExpr, TupleIndexExpr is always an lvalue
    398392        result = type->types[ index ];
    399         add_qualifiers( result, CV::Lvalue );
    400393}
    401394
  • src/AST/Type.hpp

    rcf32116 r3f3bfe5a  
    5151        bool is_volatile() const { return qualifiers.is_volatile; }
    5252        bool is_restrict() const { return qualifiers.is_restrict; }
    53         bool is_lvalue() const { return qualifiers.is_lvalue; }
    5453        bool is_mutex() const { return qualifiers.is_mutex; }
    5554        bool is_atomic() const { return qualifiers.is_atomic; }
     
    5857        Type * set_volatile( bool v ) { qualifiers.is_volatile = v; return this; }
    5958        Type * set_restrict( bool v ) { qualifiers.is_restrict = v; return this; }
    60         Type * set_lvalue( bool v ) { qualifiers.is_lvalue = v; return this; }
    6159        Type * set_mutex( bool v ) { qualifiers.is_mutex = v; return this; }
    6260        Type * set_atomic( bool v ) { qualifiers.is_atomic = v; return this; }
Note: See TracChangeset for help on using the changeset viewer.