@@ -40,7 +40,7 @@ void parse_array_init(var_t *var,
40
40
basic_block_t * * bb ,
41
41
bool emit_code );
42
42
/* helper function to emit struct brace initializers */
43
- static void emit_struct_brace_initializer (block_t * parent ,
43
+ void emit_struct_brace_initializer (block_t * parent ,
44
44
basic_block_t * * bb ,
45
45
var_t * dest ,
46
46
type_t * struct_type );
@@ -821,8 +821,6 @@ void parse_struct_field_init(block_t *parent,
821
821
var_t * field_val =
822
822
resize_var (parent , bb , field_val_raw , & target );
823
823
824
-
825
-
826
824
var_t * field_addr =
827
825
compute_field_address (parent , bb , target_addr , field );
828
826
@@ -1753,72 +1751,7 @@ void handle_sizeof_operator(block_t *parent, basic_block_t **bb)
1753
1751
lex_expect (T_close_bracket );
1754
1752
add_insn (parent , * bb , OP_load_constant , vd , NULL , NULL , 0 , NULL );
1755
1753
}
1756
- #if 0
1757
- static void emit_struct_copy (block_t * parent ,
1758
- basic_block_t * * bb ,
1759
- var_t * dst ,
1760
- var_t * src ,
1761
- int size_bytes )
1762
- {
1763
- // 取 &dst, &src
1764
- var_t * dst_addr = require_var (parent );
1765
- gen_name_to (dst_addr -> var_name );
1766
- add_insn (parent , * bb , OP_address_of , dst_addr , dst , NULL , 0 , NULL );
1767
-
1768
- var_t * src_addr = require_var (parent );
1769
- gen_name_to (src_addr -> var_name );
1770
- add_insn (parent , * bb , OP_address_of , src_addr , src , NULL , 0 , NULL );
1771
-
1772
- // 4-byte 塊拷貝
1773
- int n4 = size_bytes / 4 ;
1774
- int rem = size_bytes % 4 ;
1775
- for (int i = 0 ; i < n4 ; ++ i ) {
1776
- // offset 常數
1777
- var_t * off = require_var (parent );
1778
- gen_name_to (off -> var_name );
1779
- off -> init_val = i * 4 ;
1780
- add_insn (parent , * bb , OP_load_constant , off , NULL , NULL , 0 , NULL );
1781
-
1782
- // src+off → tmp
1783
- var_t * saddr = require_var (parent );
1784
- gen_name_to (saddr -> var_name );
1785
- add_insn (parent , * bb , OP_add , saddr , src_addr , off , 0 , NULL );
1786
-
1787
- var_t * tmp = require_var (parent );
1788
- gen_name_to (tmp -> var_name );
1789
- add_insn (parent , * bb , OP_read , tmp , saddr , NULL , 4 , NULL );
1790
-
1791
- // dst+off ← tmp
1792
- var_t * daddr = require_var (parent );
1793
- gen_name_to (daddr -> var_name );
1794
- add_insn (parent , * bb , OP_add , daddr , dst_addr , off , 0 , NULL );
1795
-
1796
- add_insn (parent , * bb , OP_write , NULL , daddr , tmp , 4 , NULL );
1797
- }
1798
- // 剩餘 bytes
1799
- for (int i = n4 * 4 ; i < size_bytes ; ++ i ) {
1800
- var_t * off = require_var (parent );
1801
- gen_name_to (off -> var_name );
1802
- off -> init_val = i ;
1803
- add_insn (parent , * bb , OP_load_constant , off , NULL , NULL , 0 , NULL );
1804
-
1805
- var_t * saddr = require_var (parent );
1806
- gen_name_to (saddr -> var_name );
1807
- add_insn (parent , * bb , OP_add , saddr , src_addr , off , 0 , NULL );
1808
-
1809
- var_t * tmp = require_var (parent );
1810
- gen_name_to (tmp -> var_name );
1811
- add_insn (parent , * bb , OP_read , tmp , saddr , NULL , 1 , NULL );
1812
-
1813
- var_t * daddr = require_var (parent );
1814
- gen_name_to (daddr -> var_name );
1815
- add_insn (parent , * bb , OP_add , daddr , dst_addr , off , 0 , NULL );
1816
-
1817
- add_insn (parent , * bb , OP_write , NULL , daddr , tmp , 1 , NULL );
1818
- }
1819
- }
1820
1754
1821
- #endif
1822
1755
1823
1756
void read_expr_operand (block_t * parent , basic_block_t * * bb )
1824
1757
{
0 commit comments