Differences From Artifact [c719270db3]:
- File bs/cir/binaryop.h — 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: 938)
To Artifact [f7d51a0a45]:
- File bs/cir/binaryop.h — part of check-in [26c691ecb9] at 2021-01-02 18:24:23 on branch trunk — Yet one more reference/address refactor: each calculation step (getting temp addr, getting var addr, selecting a member) is now a separate cir instruction. We need this level of generalization to be able to obtain addresses from anywhere, including variables and function parameters. (user: achavasse size: 1215)
| ︙ | |||
13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | + + + + + + + + |
{}
const auto& lhs() const { return m_lhs; }
const auto& rhs() const { return m_rhs; }
bool canBeExecuted() const;
bool canBeEagerlyEvaluated() const;
bool isCompTimeStackAddr() const { return false; }
bool operator<( const BinaryOp& rhs ) const
{
if( m_lhs != rhs.m_lhs )
return m_lhs < rhs.m_lhs;
return m_rhs < rhs.m_rhs;
}
private:
eir::Value m_lhs;
eir::Value m_rhs;
};
class BinaryOpSameTypes : public BinaryOp
|
| ︙ |