suppress unneeded initializations

This commit is contained in:
Vern Paxson 2021-11-24 12:17:16 -08:00
parent a830c269ab
commit a2cec7463f
3 changed files with 26 additions and 23 deletions

View file

@ -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,6 +124,7 @@ 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 )
if ( ! func.ShouldSkip() )
DeclareFunc(func); DeclareFunc(func);
// We track lambdas by their internal names, because two different // We track lambdas by their internal names, because two different
@ -148,6 +147,7 @@ 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 )
if ( ! func.ShouldSkip() )
CompileFunc(func); CompileFunc(func);
lambda_names.clear(); lambda_names.clear();

View file

@ -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";

View file

@ -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);