From b27a60d06ce2a3262548889d70de43b1c7fe0e1a Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Wed, 15 Apr 2015 17:00:17 +0200 Subject: [PATCH] preprocessor: reindex equations marked as [static] --- DynamicModel.cc | 9 +++++++++ DynamicModel.hh | 3 +++ ModFile.cc | 1 + 3 files changed, 13 insertions(+) diff --git a/DynamicModel.cc b/DynamicModel.cc index 1de6bc8c..8805ceb1 100644 --- a/DynamicModel.cc +++ b/DynamicModel.cc @@ -4294,6 +4294,15 @@ DynamicModel::addStaticOnlyEquation(expr_t eq, int lineno) static_only_equations_lineno.push_back(lineno); } +void +DynamicModel::reindexStaticOnlyEquations(SymbolTable &orig_symbol_table) +{ + vectoreqbak = static_only_equations; + static_only_equations.clear(); + for (size_t i = 0; i < eqbak.size(); i++) + addStaticOnlyEquation(eqbak[i]->cloneDynamic(*this), static_only_equations_lineno[i]); +} + size_t DynamicModel::staticOnlyEquationsNbr() const { diff --git a/DynamicModel.hh b/DynamicModel.hh index 7c4b5e0e..d87093e7 100644 --- a/DynamicModel.hh +++ b/DynamicModel.hh @@ -243,6 +243,9 @@ public: //! Adds an equation marked as [static] void addStaticOnlyEquation(expr_t eq, int lineno); + //! reindex equations marked as [static] + void reindexStaticOnlyEquations(SymbolTable &orig_symbol_table); + //! Returns number of static only equations size_t staticOnlyEquationsNbr() const; diff --git a/ModFile.cc b/ModFile.cc index c1c345ff..b4767def 100644 --- a/ModFile.cc +++ b/ModFile.cc @@ -314,6 +314,7 @@ ModFile::transformPass(bool nostrict) SymbolTable orig_symbol_table = symbol_table; symbol_table.rmExo(unusedExo); dynamic_model.reindex(orig_symbol_table); + dynamic_model.reindexStaticOnlyEquations(orig_symbol_table); vector orig_statements = statements; statements.clear(); for (vector::iterator it = orig_statements.begin(); it != orig_statements.end(); it++)