Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Expression.h

    re612146c r871cdb4  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Sep  3 19:23:46 2017
    13 // Update Count     : 48
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Fri Aug  8 11:54:00 2017
     13// Update Count     : 44
    1414//
    15 
    1615#pragma once
    1716
     
    2524#include "Constant.h"             // for Constant
    2625#include "Initializer.h"          // for Designation (ptr only), Initializer
    27 #include "Label.h"                // for Label
    2826#include "Mutator.h"              // for Mutator
    2927#include "SynTree.h"              // for UniqueId
     
    8684  public:
    8785        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;
    106102};
    107103
     
    175171};
    176172
    177 // GCC &&label
    178 // https://gcc.gnu.org/onlinedocs/gcc-3.4.2/gcc/Labels-as-Values.html
     173// xxx - this doesn't appear to actually be hooked in anywhere. We should use this instead of the "&&"" UntypedExpr hack
    179174class LabelAddressExpr : public Expression {
    180175  public:
    181         Label arg;
    182 
    183         LabelAddressExpr( const Label &arg );
     176        Expression * arg;
     177
     178        LabelAddressExpr( Expression * arg );
    184179        LabelAddressExpr( const LabelAddressExpr & other );
    185180        virtual ~LabelAddressExpr();
     181
     182        Expression * get_arg() const { return arg; }
     183        void set_arg(Expression * newValue ) { arg = newValue; }
    186184
    187185        virtual LabelAddressExpr * clone() const { return new LabelAddressExpr( * this ); }
     
    540538  public:
    541539        Expression * inout;
    542         Expression * constraint;
     540        ConstantExpr * constraint;
    543541        Expression * operand;
    544542
    545         AsmExpr( Expression * inout, Expression * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     543        AsmExpr( Expression * inout, ConstantExpr * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
    546544        AsmExpr( const AsmExpr & other );
    547545        virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
     
    550548        void set_inout( Expression * newValue ) { inout = newValue; }
    551549
    552         Expression * get_constraint() const { return constraint; }
    553         void set_constraint( Expression * newValue ) { constraint = newValue; }
     550        ConstantExpr * get_constraint() const { return constraint; }
     551        void set_constraint( ConstantExpr * newValue ) { constraint = newValue; }
    554552
    555553        Expression * get_operand() const { return operand; }
Note: See TracChangeset for help on using the changeset viewer.