Goose  helpers.cpp at [8ddd71f9b2]

File bs/llr/helpers.cpp artifact c39a3720e3 part of check-in 8ddd71f9b2


#include "llr/llr.h"

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

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

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

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

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

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