@@ -46,7 +46,7 @@ void parse_array_init(var_t *var,
46
46
basic_block_t * * bb ,
47
47
bool emit_code );
48
48
/* helper function to emit struct brace initializers */
49
- static void emit_struct_brace_initializer (block_t * parent ,
49
+ void emit_struct_brace_initializer (block_t * parent ,
50
50
basic_block_t * * bb ,
51
51
var_t * dest ,
52
52
type_t * struct_type );
@@ -857,8 +857,6 @@ void parse_struct_field_init(block_t *parent,
857
857
var_t * field_val =
858
858
resize_var (parent , bb , field_val_raw , & target );
859
859
860
-
861
-
862
860
var_t * field_addr =
863
861
compute_field_address (parent , bb , target_addr , field );
864
862
@@ -1856,72 +1854,7 @@ void handle_sizeof_operator(block_t *parent, basic_block_t **bb)
1856
1854
lex_expect (T_close_bracket );
1857
1855
add_insn (parent , * bb , OP_load_constant , vd , NULL , NULL , 0 , NULL );
1858
1856
}
1859
- #if 0
1860
- static void emit_struct_copy (block_t * parent ,
1861
- basic_block_t * * bb ,
1862
- var_t * dst ,
1863
- var_t * src ,
1864
- int size_bytes )
1865
- {
1866
- // 取 &dst, &src
1867
- var_t * dst_addr = require_var (parent );
1868
- gen_name_to (dst_addr -> var_name );
1869
- add_insn (parent , * bb , OP_address_of , dst_addr , dst , NULL , 0 , NULL );
1870
-
1871
- var_t * src_addr = require_var (parent );
1872
- gen_name_to (src_addr -> var_name );
1873
- add_insn (parent , * bb , OP_address_of , src_addr , src , NULL , 0 , NULL );
1874
-
1875
- // 4-byte 塊拷貝
1876
- int n4 = size_bytes / 4 ;
1877
- int rem = size_bytes % 4 ;
1878
- for (int i = 0 ; i < n4 ; ++ i ) {
1879
- // offset 常數
1880
- var_t * off = require_var (parent );
1881
- gen_name_to (off -> var_name );
1882
- off -> init_val = i * 4 ;
1883
- add_insn (parent , * bb , OP_load_constant , off , NULL , NULL , 0 , NULL );
1884
-
1885
- // src+off → tmp
1886
- var_t * saddr = require_var (parent );
1887
- gen_name_to (saddr -> var_name );
1888
- add_insn (parent , * bb , OP_add , saddr , src_addr , off , 0 , NULL );
1889
-
1890
- var_t * tmp = require_var (parent );
1891
- gen_name_to (tmp -> var_name );
1892
- add_insn (parent , * bb , OP_read , tmp , saddr , NULL , 4 , NULL );
1893
-
1894
- // dst+off ← tmp
1895
- var_t * daddr = require_var (parent );
1896
- gen_name_to (daddr -> var_name );
1897
- add_insn (parent , * bb , OP_add , daddr , dst_addr , off , 0 , NULL );
1898
-
1899
- add_insn (parent , * bb , OP_write , NULL , daddr , tmp , 4 , NULL );
1900
- }
1901
- // 剩餘 bytes
1902
- for (int i = n4 * 4 ; i < size_bytes ; ++ i ) {
1903
- var_t * off = require_var (parent );
1904
- gen_name_to (off -> var_name );
1905
- off -> init_val = i ;
1906
- add_insn (parent , * bb , OP_load_constant , off , NULL , NULL , 0 , NULL );
1907
-
1908
- var_t * saddr = require_var (parent );
1909
- gen_name_to (saddr -> var_name );
1910
- add_insn (parent , * bb , OP_add , saddr , src_addr , off , 0 , NULL );
1911
-
1912
- var_t * tmp = require_var (parent );
1913
- gen_name_to (tmp -> var_name );
1914
- add_insn (parent , * bb , OP_read , tmp , saddr , NULL , 1 , NULL );
1915
-
1916
- var_t * daddr = require_var (parent );
1917
- gen_name_to (daddr -> var_name );
1918
- add_insn (parent , * bb , OP_add , daddr , dst_addr , off , 0 , NULL );
1919
-
1920
- add_insn (parent , * bb , OP_write , NULL , daddr , tmp , 1 , NULL );
1921
- }
1922
- }
1923
1857
1924
- #endif
1925
1858
1926
1859
void read_expr_operand (block_t * parent , basic_block_t * * bb )
1927
1860
{
0 commit comments