mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
suppress unneeded initializations
This commit is contained in:
parent
a830c269ab
commit
a2cec7463f
3 changed files with 26 additions and 23 deletions
|
@ -64,6 +64,12 @@ void CPPCompile::Compile(bool report_uncompilable)
|
||||||
// previously compiled instances of those if present.
|
// previously compiled instances of those if present.
|
||||||
for ( const auto& func : funcs )
|
for ( const auto& func : funcs )
|
||||||
{
|
{
|
||||||
|
if ( func.ShouldSkip() )
|
||||||
|
{
|
||||||
|
not_fully_compilable.insert(func.Func()->Name());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( func.Func()->Flavor() != FUNC_FLAVOR_FUNCTION )
|
if ( func.Func()->Flavor() != FUNC_FLAVOR_FUNCTION )
|
||||||
// Can't be called directly.
|
// Can't be called directly.
|
||||||
continue;
|
continue;
|
||||||
|
@ -94,7 +100,6 @@ void CPPCompile::Compile(bool report_uncompilable)
|
||||||
{
|
{
|
||||||
TypePtr tp{NewRef{}, (Type*)(t)};
|
TypePtr tp{NewRef{}, (Type*)(t)};
|
||||||
types.AddKey(tp, pfs.HashType(t));
|
types.AddKey(tp, pfs.HashType(t));
|
||||||
(void)RegisterType(tp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### This doesn't work for -O add-C++
|
// ### This doesn't work for -O add-C++
|
||||||
|
@ -102,13 +107,6 @@ void CPPCompile::Compile(bool report_uncompilable)
|
||||||
|
|
||||||
NL();
|
NL();
|
||||||
|
|
||||||
#if 0
|
|
||||||
for ( auto gi : all_global_info )
|
|
||||||
Emit(gi->Declare());
|
|
||||||
|
|
||||||
NL();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for ( auto& g : pfs.AllGlobals() )
|
for ( auto& g : pfs.AllGlobals() )
|
||||||
CreateGlobal(g);
|
CreateGlobal(g);
|
||||||
|
|
||||||
|
@ -126,7 +124,8 @@ void CPPCompile::Compile(bool report_uncompilable)
|
||||||
// The scaffolding is now in place to go ahead and generate
|
// The scaffolding is now in place to go ahead and generate
|
||||||
// the functions & lambdas. First declare them ...
|
// the functions & lambdas. First declare them ...
|
||||||
for ( const auto& func : funcs )
|
for ( const auto& func : funcs )
|
||||||
DeclareFunc(func);
|
if ( ! func.ShouldSkip() )
|
||||||
|
DeclareFunc(func);
|
||||||
|
|
||||||
// We track lambdas by their internal names, because two different
|
// We track lambdas by their internal names, because two different
|
||||||
// LambdaExpr's can wind up referring to the same underlying lambda
|
// LambdaExpr's can wind up referring to the same underlying lambda
|
||||||
|
@ -148,7 +147,8 @@ void CPPCompile::Compile(bool report_uncompilable)
|
||||||
|
|
||||||
// ... and now generate their bodies.
|
// ... and now generate their bodies.
|
||||||
for ( const auto& func : funcs )
|
for ( const auto& func : funcs )
|
||||||
CompileFunc(func);
|
if ( ! func.ShouldSkip() )
|
||||||
|
CompileFunc(func);
|
||||||
|
|
||||||
lambda_names.clear();
|
lambda_names.clear();
|
||||||
for ( const auto& l : pfs.Lambdas() )
|
for ( const auto& l : pfs.Lambdas() )
|
||||||
|
|
|
@ -240,6 +240,9 @@ void CPPCompile::GenStandaloneActivation()
|
||||||
|
|
||||||
for ( const auto& func : funcs )
|
for ( const auto& func : funcs )
|
||||||
{
|
{
|
||||||
|
if ( func.ShouldSkip() )
|
||||||
|
continue;
|
||||||
|
|
||||||
auto f = func.Func();
|
auto f = func.Func();
|
||||||
auto fname = BodyName(func);
|
auto fname = BodyName(func);
|
||||||
auto bname = Canonicalize(fname.c_str()) + "_zf";
|
auto bname = Canonicalize(fname.c_str()) + "_zf";
|
||||||
|
|
|
@ -382,19 +382,6 @@ static void generate_CPP(std::unique_ptr<ProfileFuncs>& pfs)
|
||||||
|
|
||||||
auto hm = std::make_unique<CPPHashManager>(hash_name.c_str());
|
auto hm = std::make_unique<CPPHashManager>(hash_name.c_str());
|
||||||
|
|
||||||
if ( analysis_options.gen_CPP )
|
|
||||||
{
|
|
||||||
if ( analysis_options.only_func )
|
|
||||||
{ // deactivate all functions except the target one
|
|
||||||
for ( auto& func : funcs )
|
|
||||||
{
|
|
||||||
auto fn = func.Func()->Name();
|
|
||||||
if ( *analysis_options.only_func != fn )
|
|
||||||
func.SetSkip(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto gen_name = hash_dir + "CPP-gen.cc";
|
const auto gen_name = hash_dir + "CPP-gen.cc";
|
||||||
const auto addl_name = hash_dir + "CPP-gen-addl.h";
|
const auto addl_name = hash_dir + "CPP-gen-addl.h";
|
||||||
|
|
||||||
|
@ -551,6 +538,19 @@ void analyze_scripts()
|
||||||
// No work to do, avoid profiling overhead.
|
// No work to do, avoid profiling overhead.
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if ( analysis_options.gen_CPP )
|
||||||
|
{
|
||||||
|
if ( analysis_options.only_func )
|
||||||
|
{ // deactivate all functions except the target one
|
||||||
|
for ( auto& func : funcs )
|
||||||
|
{
|
||||||
|
auto fn = func.Func()->Name();
|
||||||
|
if ( *analysis_options.only_func != fn )
|
||||||
|
func.SetSkip(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Now that everything's parsed and BiF's have been initialized,
|
// Now that everything's parsed and BiF's have been initialized,
|
||||||
// profile the functions.
|
// profile the functions.
|
||||||
auto pfs = std::make_unique<ProfileFuncs>(funcs, is_CPP_compilable, false);
|
auto pfs = std::make_unique<ProfileFuncs>(funcs, is_CPP_compilable, false);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue