@@ -161,18 +161,33 @@ def handle_if(func, module, builder, stmt, map_sym_tab, local_sym_tab):
161161 start = builder .block .parent
162162 then_block = func .append_basic_block (name = "if.then" )
163163 merge_block = func .append_basic_block (name = "if.end" )
164+ if stmt .orelse :
165+ else_block = func .append_basic_block (name = "if.else" )
166+ else :
167+ else_block = None
164168
165169 cond = handle_cond (func , module , builder , stmt .test ,
166170 local_sym_tab , map_sym_tab )
171+ if else_block :
172+ builder .cbranch (cond , then_block , else_block )
173+ else :
174+ builder .cbranch (cond , then_block , merge_block )
167175
168- builder .cbranch (cond , then_block , merge_block )
169176 builder .position_at_end (then_block )
170177 for s in stmt .body :
171178 process_stmt (func , module , builder , s ,
172179 local_sym_tab , map_sym_tab , False )
173180 if not builder .block .is_terminated :
174181 builder .branch (merge_block )
175182
183+ if else_block :
184+ builder .position_at_end (else_block )
185+ for s in stmt .orelse :
186+ process_stmt (func , module , builder , s ,
187+ local_sym_tab , map_sym_tab , False )
188+ if not builder .block .is_terminated :
189+ builder .branch (merge_block )
190+
176191 builder .position_at_end (merge_block )
177192
178193
0 commit comments