소스 검색

double-cast optimization

Nicolas Cannasse 8 년 전
부모
커밋
568d3e57ea
1개의 변경된 파일3개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      src/generators/genhl.ml

+ 3 - 0
src/generators/genhl.ml

@@ -2382,6 +2382,9 @@ and eval_expr ctx e =
 		ctx.m.mcontinues <- oldc;
 		ctx.m.mloop_trys <- oldtrys;
 		alloc_tmp ctx HVoid
+	| TCast ({ eexpr = TCast (v,_) },a) ->
+        (* coalesce double casts into a single runtime check - temp fix for Map accesses *)
+        eval_expr ctx { e with eexpr = TCast(v,a) }
 	| TCast (v,None) ->
 		let t = to_type ctx e.etype in
 		let rv = eval_expr ctx v in