diff --git a/tools/qfcc/include/options.h b/tools/qfcc/include/options.h index 4bc06b277..82eef30d1 100644 --- a/tools/qfcc/include/options.h +++ b/tools/qfcc/include/options.h @@ -76,6 +76,7 @@ typedef struct { qboolean dags; qboolean expr; qboolean reaching; + qboolean live; qboolean flow; qboolean post; } blockdot_options_t; diff --git a/tools/qfcc/source/flow.c b/tools/qfcc/source/flow.c index 0ea448beb..311c4f7dd 100644 --- a/tools/qfcc/source/flow.c +++ b/tools/qfcc/source/flow.c @@ -1173,6 +1173,8 @@ flow_data_flow (function_t *func) if (options.block_dot.reaching) dump_dot ("reaching", graph, dump_dot_flow_reaching); flow_live_vars (graph); + if (options.block_dot.live) + dump_dot ("live", graph, dump_dot_flow_live); flow_uninitialized (graph); flow_build_dags (graph); func->sblock = flow_generate (graph); diff --git a/tools/qfcc/source/options.c b/tools/qfcc/source/options.c index 97db57e40..4aa270b81 100644 --- a/tools/qfcc/source/options.c +++ b/tools/qfcc/source/options.c @@ -402,6 +402,8 @@ DecodeArgs (int argc, char **argv) options.block_dot.flow = flag; } else if (!(strcasecmp (temp, "reaching"))) { options.block_dot.reaching = flag; + } else if (!(strcasecmp (temp, "live"))) { + options.block_dot.live = flag; } else if (!(strcasecmp (temp, "post"))) { options.block_dot.post = flag; } @@ -417,6 +419,7 @@ DecodeArgs (int argc, char **argv) options.block_dot.expr = true; options.block_dot.flow = true; options.block_dot.reaching = true; + options.block_dot.live = true; options.block_dot.post = true; } break;