aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Duplicateaux.ml
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2020-10-16 14:38:06 +0200
committerCyril SIX <cyril.six@kalray.eu>2020-10-16 14:39:44 +0200
commita2f31f2b886ccb9656a019db1780aabc1789368a (patch)
tree0ea125e3c937ef1dba0ce409056eb0ed1c0779fe /backend/Duplicateaux.ml
parent0881f48aec682f14ea396420f8244b7281b848f0 (diff)
downloadcompcert-kvx-a2f31f2b886ccb9656a019db1780aabc1789368a.tar.gz
compcert-kvx-a2f31f2b886ccb9656a019db1780aabc1789368a.zip
Loop body unrolling with -funrollbody n
Diffstat (limited to 'backend/Duplicateaux.ml')
-rw-r--r--backend/Duplicateaux.ml9
1 files changed, 6 insertions, 3 deletions
diff --git a/backend/Duplicateaux.ml b/backend/Duplicateaux.ml
index 84dc92ac..eb9f42e0 100644
--- a/backend/Duplicateaux.ml
+++ b/backend/Duplicateaux.ml
@@ -807,8 +807,9 @@ let unroll_inner_loops_single f code revmap =
*)
let unroll_inner_loop_body code revmap iloop =
let body = HashedSet.PSet.elements (iloop.body) in
- if count_ignore_nops code body > 1000 then begin (* FIXME *)
- debug "Too many nodes in the loop body (%d > %d)" (List.length body) 1000;
+ let limit = !Clflags.option_funrollbody in
+ if count_ignore_nops code body > limit then begin
+ debug "Too many nodes in the loop body (%d > %d)" (List.length body) limit;
(code, revmap)
end else
let (code2, revmap2, dupbody, fwmap) = clone code revmap body in
@@ -855,7 +856,9 @@ let duplicate_aux f =
(* unroll body *)
let (code, revmap) =
- unroll_inner_loops_body f code revmap in
+ if !Clflags.option_funrollbody > 0 then
+ unroll_inner_loops_body f code revmap
+ else (code, revmap) in
(* static prediction bis *)
let code =