diff --git a/src/script_opt/ScriptOpt.cc b/src/script_opt/ScriptOpt.cc index e853ba24dd..5937578d15 100644 --- a/src/script_opt/ScriptOpt.cc +++ b/src/script_opt/ScriptOpt.cc @@ -8,6 +8,7 @@ #include "zeek/script_opt/Inline.h" #include "zeek/script_opt/Reduce.h" #include "zeek/script_opt/GenRDs.h" +#include "zeek/script_opt/UseDefs.h" namespace zeek::detail { @@ -76,11 +77,25 @@ void optimize_func(ScriptFunc* f, std::shared_ptr pf, f->ReplaceBody(body, new_body); body = new_body; + + // Profile the new body. + pf = std::make_shared(false); body->Traverse(pf.get()); + // Compute its reaching definitions. RD_Decorate reduced_rds(pf); reduced_rds.TraverseFunction(f, scope, body); + rc->SetDefSetsMgr(reduced_rds.GetDefSetsMgr()); + + auto ud = std::make_unique(body, rc); + ud->Analyze(); + + if ( analysis_options.dump_uds ) + ud->Dump(); + + ud->RemoveUnused(); + int new_frame_size = scope->Length() + rc->NumTemps() + rc->NumNewLocals();