Goose  helpers.cpp at [7d2def7b75]

File bs/cir/helpers.cpp artifact a4c91addd1 part of check-in 7d2def7b75


#include "cir/cir.h"

namespace goose::cir
{
    bool IsValueConstantOrExecutable( const eir::Value& val )
    {
        if( val.isConstant() )
            return true;

        return val.cir()->canBeExecuted();
    }

    bool CanValueBeEagerlyEvaluated( const eir::Value& val )
    {
        if( val.isConstant() )
            return true;

        return val.cir()->canBeEagerlyEvaluated();
    }

    bool IsCompileTimeTempRef( const eir::Value& val )
    {
        if( !val.isConstant() )
            return false;

        const auto* pRefInst = get_if< CalcAddress >( &val.cir()->content() );
        return pRefInst && pRefInst->isTempRef();
    }
}