()
| 823 | } |
| 824 | |
| 825 | func (r *reader) expr() Value { |
| 826 | if r.bool() { // constant |
| 827 | typ, val := r.typ(), r.val() |
| 828 | return NewSSAConst(val, typ) |
| 829 | } |
| 830 | |
| 831 | var v Value |
| 832 | if r.bool() { // addressable |
| 833 | // Prefer pointer arithmetic ({Index,Field}Addr) followed |
| 834 | // by Load over subelement extraction (e.g. Index, Field), |
| 835 | // to avoid large copies. |
| 836 | v = r.addr().load(r.b) |
| 837 | } else { |
| 838 | v = r.expr0() |
| 839 | } |
| 840 | r.emitDebugRef(v) |
| 841 | return v |
| 842 | } |
| 843 | |
| 844 | func (w *writer) expr0(e Expr) { |
| 845 | w.exprTODO(e) |
no test coverage detected