bug fixes for script optimization intermediate forms

This commit is contained in:
Vern Paxson 2023-06-16 15:21:32 -07:00 committed by Arne Welzel
parent c0f3403714
commit 4a5a7f975d
5 changed files with 36 additions and 14 deletions

View file

@ -646,21 +646,26 @@ StmtPtr ReturnStmt::Duplicate()
ReturnStmt::ReturnStmt(ExprPtr arg_e, bool ignored) : ExprStmt(STMT_RETURN, std::move(arg_e)) { }
bool ReturnStmt::IsReduced(Reducer* c) const
{
if ( ! e || e->IsSingleton(c) )
return true;
return NonReduced(e.get());
}
StmtPtr ReturnStmt::DoReduce(Reducer* c)
{
if ( ! e )
return ThisPtr();
if ( c->Optimizing() )
{
e = c->OptExpr(e);
return ThisPtr();
}
if ( ! e->IsSingleton(c) )
else if ( ! e->IsSingleton(c) )
{
StmtPtr red_e_stmt;
e = e->Reduce(c, red_e_stmt);
e = e->ReduceToSingleton(c, red_e_stmt);
if ( red_e_stmt )
{