Expression *expression;
Block *assign_scope;
RefPtr<Expression> *inline_point;
- const Operator *inner_oper;
- const Operator *outer_oper;
- bool inline_on_rhs;
bool trivial;
bool available;
bool apply(Stage &);
private:
- void visit_and_record(RefPtr<Expression> &, const Operator *, bool);
- void inline_expression(Expression &, RefPtr<Expression> &, const Operator *, const Operator *, bool);
+ void visit_and_record(RefPtr<Expression> &);
+ void inline_expression(Expression &, RefPtr<Expression> &);
virtual void visit(Block &);
virtual void visit(RefPtr<Expression> &);
virtual void visit(VariableReference &);
virtual void visit(UnaryExpression &);
virtual void visit(BinaryExpression &);
virtual void visit(Assignment &);
+ virtual void visit(TernaryExpression &);
virtual void visit(FunctionCall &);
virtual void visit(VariableDeclaration &);
virtual void visit(Iteration &);
virtual void visit(Literal &);
virtual void visit(UnaryExpression &);
virtual void visit(BinaryExpression &);
+ virtual void visit(TernaryExpression &);
virtual void visit(FunctionCall &);
virtual void visit(BasicTypeDeclaration &);
virtual void visit(ImageTypeDeclaration &);
virtual void visit(UnaryExpression &);
virtual void visit(BinaryExpression &);
virtual void visit(Assignment &);
- void record_assignment(const Assignment::Target &, Node &);
virtual void visit(FunctionCall &);
+ void record_assignment(const Assignment::Target &, Node &);
virtual void visit(ExpressionStatement &);
// Ignore structs because their members can't be accessed directly.
virtual void visit(StructDeclaration &) { }
virtual void visit(VariableDeclaration &);
virtual void visit(InterfaceBlock &);
- virtual void visit(FunctionDeclaration &);
void merge_variables(const BlockVariableMap &);
+ virtual void visit(FunctionDeclaration &);
virtual void visit(Conditional &);
virtual void visit(Iteration &);
};