Goose  Diff

Differences From 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)

To Artifact [1cb2155fd4]:

  • File bs/cir/binaryop.h — part of check-in [90c951f66f] at 2021-01-12 21:08:37 on branch trunk — Implemented missing lowering of reference types to pointer types, added a bunch of runtime/compilation time reference tests. (user: achavasse size: 1152)

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
            {}

            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;
            }







<







13
14
15
16
17
18
19

20
21
22
23
24
25
26
            {}

            const auto& lhs() const { return m_lhs; }
            const auto& rhs() const { return m_rhs; }

            bool canBeExecuted() const;
            bool canBeEagerlyEvaluated() const;


            bool operator<( const BinaryOp& rhs ) const
            {
                if( m_lhs != rhs.m_lhs )
                    return m_lhs < rhs.m_lhs;
                return m_rhs < rhs.m_rhs;
            }