Add handling of dump options

Signed-off-by: Ryszard Różak <rrozak@antmicro.com>
diff --git a/uhdm-plugin/uhdmcommonfrontend.cc b/uhdm-plugin/uhdmcommonfrontend.cc
index b340797..a1536d4 100644
--- a/uhdm-plugin/uhdmcommonfrontend.cc
+++ b/uhdm-plugin/uhdmcommonfrontend.cc
@@ -35,7 +35,28 @@
     log("        ignore assert() statements");
     log("\n");
     log("    -debug\n");
-    log("        print debug info to stdout");
+    log("        alias for -dump_ast1 -dump_ast2 -dump_vlog1 -dump_vlog2 -yydebug\n");
+    log("\n");
+    log("    -dump_ast1\n");
+    log("        dump abstract syntax tree (before simplification)\n");
+    log("\n");
+    log("    -dump_ast2\n");
+    log("        dump abstract syntax tree (after simplification)\n");
+    log("\n");
+    log("    -no_dump_ptr\n");
+    log("        do not include hex memory addresses in dump (easier to diff dumps)\n");
+    log("\n");
+    log("    -dump_vlog1\n");
+    log("        dump ast as Verilog code (before simplification)\n");
+    log("\n");
+    log("    -dump_vlog2\n");
+    log("        dump ast as Verilog code (after simplification)\n");
+    log("\n");
+    log("    -dump_rtlil\n");
+    log("        dump generated RTLIL netlist\n");
+    log("\n");
+    log("    -yydebug\n");
+    log("        enable parser debug output\n");
     log("\n");
     log("    -report [directory]\n");
     log("        write a coverage report for the UHDM file\n");
@@ -53,8 +74,19 @@
     this->args = args;
 
     bool defer = false;
+    bool dump_ast1 = false;
+    bool dump_ast2 = false;
+    bool dump_vlog1 = false;
+    bool dump_vlog2 = false;
+    bool no_dump_ptr = false;
+    bool dump_rtlil = false;
+
     for (size_t i = 1; i < args.size(); i++) {
         if (args[i] == "-debug") {
+            dump_ast1 = true;
+            dump_ast2 = true;
+            dump_vlog1 = true;
+            dump_vlog2 = true;
             this->shared.debug_flag = true;
         } else if (args[i] == "-report" && ++i < args.size()) {
             this->report_directory = args[i];
@@ -63,6 +95,20 @@
             this->shared.no_assert = true;
         } else if (args[i] == "-defer") {
             defer = true;
+        } else if (args[i] == "-dump_ast1") {
+            dump_ast1 = true;
+        } else if (args[i] == "-dump_ast2") {
+            dump_ast2 = true;
+        } else if (args[i] == "-dump_vlog1") {
+            dump_vlog1 = true;
+        } else if (args[i] == "-dump_vlog2") {
+            dump_vlog2 = true;
+        } else if (args[i] == "-no_dump_ptr") {
+            no_dump_ptr = true;
+        } else if (args[i] == "-dump_rtlil") {
+            dump_rtlil = true;
+        } else if (args[i] == "-yydebug") {
+            this->shared.debug_flag = true;
         }
     }
     extra_args(f, filename, args, args.size() - 1);
@@ -71,15 +117,13 @@
     AST::set_line_num = &set_line_num;
     AST::get_line_num = &get_line_num;
 
-    bool dump_ast1 = this->shared.debug_flag;
-    bool dump_ast2 = this->shared.debug_flag;
     bool dont_redefine = false;
     bool default_nettype_wire = true;
 
     AST::AstNode *current_ast = parse(filename);
 
-    AST::process(design, current_ast, dump_ast1, dump_ast2, false, false, false, false, false, false, false, false, false, false, false, false, false,
-                 false, dont_redefine, false, defer, default_nettype_wire);
+    AST::process(design, current_ast, dump_ast1, dump_ast2, no_dump_ptr, dump_vlog1, dump_vlog2, dump_rtlil, false, false, false, false, false, false,
+                 false, false, false, false, dont_redefine, false, defer, default_nettype_wire);
     delete current_ast;
 }