FunctionDeclaration *source_func;
Block *target_block;
std::map<std::string, VariableDeclaration *> variable_map;
- bool remap_names;
+ std::string remap_prefix;
+ unsigned remap_names;
bool deps_only;
RefPtr<Statement> r_inlined_statement;
std::set<Node *> dependencies;
+ std::set<std::string> referenced_names;
std::string r_result_name;
public:
const std::string &apply(Stage &, FunctionDeclaration &, Block &, const NodeList<Statement>::iterator &, FunctionDeclaration &);
private:
- std::string create_unused_name(const std::string &, bool);
-
virtual void visit(VariableReference &);
virtual void visit(InterfaceBlockReference &);
virtual void visit(FunctionCall &);
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 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 &);