Goose  Artifact [a4c91addd1]

Artifact a4c91addd1c13349e41680acd1a0b47ce0c4f356aa57ee6b3cd0402cd73718c9:

  • File bs/cir/helpers.cpp — part of check-in [7d2def7b75] at 2020-12-27 14:40:24 on branch trunk — Renamed "ir" to "eir" (expression intermediate representation) and "llr" to "cir" (code intermediate representation) for clarity. (user: achavasse size: 659)

#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();
    }
}