Goose  Diff

Differences From Artifact [a40e74b5c3]:

  • File bs/cir/branch.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: 1624) [more...]

To Artifact [7fea74b021]:

  • File bs/cir/branch.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: 1687)

13
14
15
16
17
18
19

20
21
22
23
24
25
26
                m_dest( forward< B >( dest ) )
            {}

            const auto& dest() const { return m_dest; }

            bool canBeExecuted() const { return true; }
            bool canBeEagerlyEvaluated() const { return true; }


            void addCFGEdges( const ptr< CFG >& cfg, uint32_t srcBBIndex );

        private:
            wptr< BasicBlock > m_dest;
    };








>







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
                m_dest( forward< B >( dest ) )
            {}

            const auto& dest() const { return m_dest; }

            bool canBeExecuted() const { return true; }
            bool canBeEagerlyEvaluated() const { return true; }
            bool isCompTimeStackAddr() const { return false; }

            void addCFGEdges( const ptr< CFG >& cfg, uint32_t srcBBIndex );

        private:
            wptr< BasicBlock > m_dest;
    };