aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-05-06 20:16:08 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-05-06 20:16:08 +0200
commitf1f535cad98f3db3e586f0f7a2dbc329fc5bff6f (patch)
tree1a4fed5a512a4db2c62472ba7ee2e7cf2810ed3c /driver
parentb679621ac631ac2783bfd391042d30c120b5a220 (diff)
downloadcompcert-kvx-f1f535cad98f3db3e586f0f7a2dbc329fc5bff6f.tar.gz
compcert-kvx-f1f535cad98f3db3e586f0f7a2dbc329fc5bff6f.zip
CSE3 across merges
Diffstat (limited to 'driver')
-rw-r--r--driver/Clflags.ml1
-rw-r--r--driver/Compopts.v3
-rw-r--r--driver/Driver.ml2
3 files changed, 6 insertions, 0 deletions
diff --git a/driver/Clflags.ml b/driver/Clflags.ml
index 14d15ba6..d84a546d 100644
--- a/driver/Clflags.ml
+++ b/driver/Clflags.ml
@@ -30,6 +30,7 @@ let option_fcse2 = ref false
let option_fcse3 = ref true
let option_fcse3_alias_analysis = ref true
let option_fcse3_across_calls = ref false
+let option_fcse3_across_merges = ref true
let option_fredundancy = ref true
let option_fduplicate = ref (-1)
let option_finvertcond = ref true
diff --git a/driver/Compopts.v b/driver/Compopts.v
index 3c5ccf36..445f5793 100644
--- a/driver/Compopts.v
+++ b/driver/Compopts.v
@@ -51,6 +51,9 @@ Parameter optim_CSE3_alias_analysis: unit -> bool.
(** Flag -fcse3-across-calls. For DMonniaux's common subexpression elimination. Propagate information across function calls (may increase register pressure). *)
Parameter optim_CSE3_across_calls: unit -> bool.
+(** Flag -fcse3-across-calls. For DMonniaux's common subexpression elimination. Propagate information across control-flow merges (may increase register pressure). *)
+Parameter optim_CSE3_across_merges: unit -> bool.
+
(** Flag -fmove-loop-invariants. *)
Parameter optim_move_loop_invariants: unit -> bool.
diff --git a/driver/Driver.ml b/driver/Driver.ml
index b9060ca7..9d1caa9e 100644
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -200,6 +200,7 @@ Processing options:
-fcse3 Perform inter-loop common subexpression elimination [on]
-fcse3-alias-analysis Perform inter-loop common subexpression elimination with alias analysis [on]
-fcse3-across-calls Propagate CSE3 information across function calls [off]
+ -fcse3-across-merges Propagate CSE3 information across control-flow merges [on]
-fmove-loop-invariants Perform loop-invariant code motion [off]
-fredundancy Perform redundancy elimination [on]
-fpostpass Perform postpass scheduling (only for K1 architecture) [on]
@@ -413,6 +414,7 @@ let cmdline_actions =
@ f_opt "cse3" option_fcse3
@ f_opt "cse3-alias-analysis" option_fcse3_alias_analysis
@ f_opt "cse3-across-calls" option_fcse3_across_calls
+ @ f_opt "cse3-across-merges" option_fcse3_across_merges
@ f_opt "move-loop-invariants" option_fmove_loop_invariants
@ f_opt "redundancy" option_fredundancy
@ f_opt "postpass" option_fpostpass