Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Expression.h

    r871cdb4 re612146c  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Aug  8 11:54:00 2017
    13 // Update Count     : 44
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Sep  3 19:23:46 2017
     13// Update Count     : 48
    1414//
     15
    1516#pragma once
    1617
     
    2425#include "Constant.h"             // for Constant
    2526#include "Initializer.h"          // for Designation (ptr only), Initializer
     27#include "Label.h"                // for Label
    2628#include "Mutator.h"              // for Mutator
    2729#include "SynTree.h"              // for UniqueId
     
    8486  public:
    8587        Expression * function;
    86         std::list<Expression *> args;
    87         InferredParams inferParams;
    8888
    8989        ApplicationExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >() );
     
    100100        virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); }
    101101        virtual void print( std::ostream & os, int indent = 0 ) const;
     102
     103  private:
     104        std::list<Expression *> args;
     105        InferredParams inferParams;
    102106};
    103107
     
    171175};
    172176
    173 // xxx - this doesn't appear to actually be hooked in anywhere. We should use this instead of the "&&"" UntypedExpr hack
     177// GCC &&label
     178// https://gcc.gnu.org/onlinedocs/gcc-3.4.2/gcc/Labels-as-Values.html
    174179class LabelAddressExpr : public Expression {
    175180  public:
    176         Expression * arg;
    177 
    178         LabelAddressExpr( Expression * arg );
     181        Label arg;
     182
     183        LabelAddressExpr( const Label &arg );
    179184        LabelAddressExpr( const LabelAddressExpr & other );
    180185        virtual ~LabelAddressExpr();
    181 
    182         Expression * get_arg() const { return arg; }
    183         void set_arg(Expression * newValue ) { arg = newValue; }
    184186
    185187        virtual LabelAddressExpr * clone() const { return new LabelAddressExpr( * this ); }
     
    538540  public:
    539541        Expression * inout;
    540         ConstantExpr * constraint;
     542        Expression * constraint;
    541543        Expression * operand;
    542544
    543         AsmExpr( Expression * inout, ConstantExpr * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     545        AsmExpr( Expression * inout, Expression * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
    544546        AsmExpr( const AsmExpr & other );
    545547        virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
     
    548550        void set_inout( Expression * newValue ) { inout = newValue; }
    549551
    550         ConstantExpr * get_constraint() const { return constraint; }
    551         void set_constraint( ConstantExpr * newValue ) { constraint = newValue; }
     552        Expression * get_constraint() const { return constraint; }
     553        void set_constraint( Expression * newValue ) { constraint = newValue; }
    552554
    553555        Expression * get_operand() const { return operand; }
Note: See TracChangeset for help on using the changeset viewer.