if (type == AST_GENFOR) {
                                for (size_t i = 0; i < buf->children.size(); i++) {
-                                       buf->children[i]->simplify(false, false, false, stage, -1, false, false);
+                                       buf->children[i]->simplify(const_fold, false, false, stage, -1, false, false);
                                        current_ast_mod->children.push_back(buf->children[i]);
                                }
                        } else {
                }
 
                for (size_t i = 0; i < children.size(); i++) {
-                       children[i]->simplify(false, false, false, stage, -1, false, false);
+                       children[i]->simplify(const_fold, false, false, stage, -1, false, false);
                        current_ast_mod->children.push_back(children[i]);
                }
 
                        }
 
                        for (size_t i = 0; i < buf->children.size(); i++) {
-                               buf->children[i]->simplify(false, false, false, stage, -1, false, false);
+                               buf->children[i]->simplify(const_fold, false, false, stage, -1, false, false);
                                current_ast_mod->children.push_back(buf->children[i]);
                        }
 
                        }
 
                        for (size_t i = 0; i < buf->children.size(); i++) {
-                               buf->children[i]->simplify(false, false, false, stage, -1, false, false);
+                               buf->children[i]->simplify(const_fold, false, false, stage, -1, false, false);
                                current_ast_mod->children.push_back(buf->children[i]);
                        }
 
 
--- /dev/null
+`define CONSTANT_CHECK \
+       if (WIDTH === 'bx) begin \
+               $display("FAIL"); \
+               $finish; \
+       end
+
+module top;
+       parameter WIDTH = 32;
+       integer j;
+       initial begin
+               `CONSTANT_CHECK
+               if (WIDTH == 32) begin : procedural_conditional_block
+                       `CONSTANT_CHECK
+               end
+               case (WIDTH)
+                       32: `CONSTANT_CHECK
+                       default: ;
+               endcase
+               for (j = 0; j < 2; j = j + 1) begin : procedural_loop_block
+                       `CONSTANT_CHECK
+               end
+       end
+       generate
+               begin : unconditional_block
+                       initial `CONSTANT_CHECK
+               end
+               if (WIDTH == 32) begin : conditional_block
+                       initial `CONSTANT_CHECK
+               end
+               case (WIDTH)
+                       32: initial `CONSTANT_CHECK
+                       default: ;
+               endcase
+               genvar i;
+               for (i = 0; i < 2; i = i + 1) begin : loop_block
+                       initial `CONSTANT_CHECK
+               end
+       endgenerate
+endmodule