#include "llr/llr.h"
namespace goose::llr
{
bool Terminator::canBeExecuted() const
{
return visit( []( auto&& e )
{
return e.canBeExecuted();
}, m_content );
}
bool Terminator::canBeEagerlyEvaluated() const
{
return visit( []( auto&& e )
{
return e.canBeEagerlyEvaluated();
}, m_content );
}
void Terminator::setupBackLinks( uint32_t srcBBIndex )
{
visit( [&]( auto&& e )
{
e.setupBackLinks( srcBBIndex );
}, m_content );
}
void Branch::setupBackLinks( uint32_t srcBBIndex )
{
assert( m_dest.lock() );
m_dest.lock()->addBackLink( srcBBIndex );
}
void CondBranch::setupBackLinks( uint32_t srcBBIndex )
{
assert( m_trueDest.lock() );
assert( m_falseDest.lock() );
m_trueDest.lock()->addBackLink( srcBBIndex );
m_falseDest.lock()->addBackLink( srcBBIndex );
}
}