Add proper error message for btor recursion_guard
authorClifford Wolf <clifford@clifford.at>
Fri, 24 May 2019 14:22:34 +0000 (16:22 +0200)
committerClifford Wolf <clifford@clifford.at>
Fri, 24 May 2019 14:22:34 +0000 (16:22 +0200)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
backends/btor/btor.cc

index 91f238fa5eb31e9bc78b18b747294992e3b6a1a7..511a1194271cf54ed820087c54cb5e012178b3c4 100644 (file)
@@ -129,7 +129,13 @@ struct BtorWorker
 
        void export_cell(Cell *cell)
        {
-               log_assert(cell_recursion_guard.count(cell) == 0);
+               if (cell_recursion_guard.count(cell)) {
+                       string cell_list;
+                       for (auto c : cell_recursion_guard)
+                               cell_list += stringf("\n    %s", log_id(c));
+                       log_error("Found topological loop while processing cell %s. Active cells:%s\n", log_id(cell), cell_list.c_str());
+               }
+
                cell_recursion_guard.insert(cell);
                btorf_push(log_id(cell));