From 217123bb191b8a2a6e0d83c03f671f7bfe0afd4d Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Tue, 19 May 2015 16:31:08 +0200 Subject: [PATCH] preprocessor: reindex predetermined variables --- SymbolTable.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/SymbolTable.cc b/SymbolTable.cc index 223f4a91..a9e6d1f5 100644 --- a/SymbolTable.cc +++ b/SymbolTable.cc @@ -486,6 +486,7 @@ SymbolTable::rmExo(set &unused) throw (FrozenException) idxs.sort(); idxs.reverse(); + vector orig_name_table = name_table; for (list::const_iterator it = idxs.begin(); it != idxs.end(); it++) { type_table.erase(type_table.begin() + *it); @@ -499,8 +500,16 @@ SymbolTable::rmExo(set &unused) throw (FrozenException) for (vector::const_iterator it=name_table.begin(); it != name_table.end(); it++) symbol_table[*it] = size++; - assert(size == symbol_table.size()); + + set orig_predetermined_variables = predetermined_variables; + predetermined_variables.clear(); + for (set::const_iterator it=orig_predetermined_variables.begin(); + it != orig_predetermined_variables.end(); it++) + if (orig_name_table[*it] != getName(*it)) + markPredetermined(getID(orig_name_table[*it])); + else + markPredetermined(*it); } void