#ifndef GOOSE_CIR_LOAD_H
#define GOOSE_CIR_LOAD_H
namespace goose::cir
{
class Load : public BaseInstr
{
public:
template< typename T >
Load( T&& type, LocationId loc ) :
BaseInstr( loc ),
m_type( forward< T >( type ) )
{}
const auto& type() const { return m_type; }
bool canBeExecuted() const { return true; }
bool canBeEagerlyEvaluated() const { return true; }
bool haveSideEffects() const { return false; }
bool operator<( const Load& rhs ) const;
friend ostream& operator<<( ostream& out, const Load& ins );
private:
eir::Term m_type;
};
}
#endif