comparison lwasm/pass1.c @ 385:cf8c92d70eb1

Various bugfixes
author lost@starbug
date Sun, 16 May 2010 11:50:00 -0600
parents 848d3cca8078
children fbb7bfed8076
comparison
equal deleted inserted replaced
384:38b50ce6967a 385:cf8c92d70eb1
89 cl -> inmod = as -> inmod; 89 cl -> inmod = as -> inmod;
90 cl -> csect = as -> csect; 90 cl -> csect = as -> csect;
91 cl -> pragmas = as -> pragmas; 91 cl -> pragmas = as -> pragmas;
92 cl -> context = as -> context; 92 cl -> context = as -> context;
93 cl -> ltext = lw_strdup(line); 93 cl -> ltext = lw_strdup(line);
94 as -> cl = cl;
94 if (!as -> line_tail) 95 if (!as -> line_tail)
95 { 96 {
96 as -> line_head = cl; 97 as -> line_head = cl;
97 cl -> addr = lw_expr_build(lw_expr_type_int, 0); 98 cl -> addr = lw_expr_build(lw_expr_type_int, 0);
98 } 99 }
105 106
106 // set the line address 107 // set the line address
107 te = lw_expr_build(lw_expr_type_special, lwasm_expr_linelen, cl -> prev); 108 te = lw_expr_build(lw_expr_type_special, lwasm_expr_linelen, cl -> prev);
108 cl -> addr = lw_expr_build(lw_expr_type_oper, lw_expr_oper_plus, cl -> prev -> addr, te); 109 cl -> addr = lw_expr_build(lw_expr_type_oper, lw_expr_oper_plus, cl -> prev -> addr, te);
109 lw_expr_destroy(te); 110 lw_expr_destroy(te);
110 lw_expr_simplify(cl -> addr, as); 111 lwasm_reduce_expr(as, cl -> addr);
112 // lw_expr_simplify(cl -> addr, as);
111 113
112 // carry DP value forward 114 // carry DP value forward
113 cl -> dpval = cl -> prev -> dpval; 115 cl -> dpval = cl -> prev -> dpval;
114 116
115 } 117 }
119 { 121 {
120 cl -> lineno = 1; 122 cl -> lineno = 1;
121 lc = 0; 123 lc = 0;
122 } 124 }
123 as -> line_tail = cl; 125 as -> line_tail = cl;
124 as -> cl = cl;
125 // blank lines don't count for anything 126 // blank lines don't count for anything
126 // except a local symbol context break 127 // except a local symbol context break
127 if (!*line) 128 if (!*line)
128 { 129 {
129 as -> context = lwasm_next_context(as); 130 as -> context = lwasm_next_context(as);