浏览代码

eliminate some unused jumps

ncannasse 7 年之前
父节点
当前提交
11e284475c
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      src/generators/hlopt.ml

+ 8 - 0
src/generators/hlopt.ml

@@ -739,6 +739,14 @@ let optimize dump get_str (f:fundecl) =
 			write_counts.(d) <- write_counts.(d) - 1;
 			write_counts.(d) <- write_counts.(d) - 1;
 			add_reg_moved i d r;
 			add_reg_moved i d r;
 			set_nop i "unused"
 			set_nop i "unused"
+		| OJAlways d when d >= 0 ->
+			let rec loop k =
+				if k = d then set_nop i "nojmp" else
+				match f.code.(i + k + 1) with
+				| ONop _ -> loop (k + 1)
+				| _ -> ()
+			in
+			loop 0
 		| _ -> ());
 		| _ -> ());
 	done;
 	done;