aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-04-01 12:50:58 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-04-01 12:50:58 +0200
commit25da4f1a90457c592cd8594666cd4d1d9628a8b1 (patch)
tree8e54e625bade68a24294759cb12df5692fc5d964 /driver
parent8e3ae6d6ff625dc8f93c54392b80b836b613c3cc (diff)
parentc34e25a208e092aff0b7dfa931b199df0ce3bc52 (diff)
downloadcompcert-kvx-25da4f1a90457c592cd8594666cd4d1d9628a8b1.tar.gz
compcert-kvx-25da4f1a90457c592cd8594666cd4d1d9628a8b1.zip
Merge remote-tracking branch 'origin/mppa-work' into mppa-licm
Diffstat (limited to 'driver')
-rw-r--r--driver/Compiler.v10
-rw-r--r--driver/Compopts.v3
2 files changed, 6 insertions, 7 deletions
diff --git a/driver/Compiler.v b/driver/Compiler.v
index cc1e7917..5175abdb 100644
--- a/driver/Compiler.v
+++ b/driver/Compiler.v
@@ -140,7 +140,7 @@ Definition transf_rtl_program (f: RTL.program) : res Asm.program :=
@@ print (print_RTL 3)
@@ time "Renumbering" Renumber.transf_program
@@ print (print_RTL 4)
- @@@ time "Tail-duplicating" Duplicate.transf_program
+ @@@ partial_if Compopts.optim_duplicate (time "Tail-duplicating" Duplicate.transf_program)
@@ print (print_RTL 5)
@@ total_if Compopts.optim_constprop (time "Constant propagation" Constprop.transf_program)
@@ print (print_RTL 6)
@@ -263,7 +263,7 @@ Definition CompCert's_passes :=
::: mkpass Inliningproof.match_prog
::: mkpass FirstNopproof.match_prog
::: mkpass Renumberproof.match_prog
- ::: mkpass Duplicateproof.match_prog
+ ::: mkpass (match_if Compopts.optim_duplicate Duplicateproof.match_prog)
::: mkpass (match_if Compopts.optim_constprop Constpropproof.match_prog)
::: mkpass (match_if Compopts.optim_constprop Renumberproof.match_prog)
::: mkpass (match_if Compopts.optim_CSE CSEproof.match_prog)
@@ -312,7 +312,7 @@ Proof.
destruct (Inlining.transf_program p7) as [p8|e] eqn:P8; simpl in T; try discriminate.
set (p9 := FirstNop.transf_program p8) in *.
set (p9bis := Renumber.transf_program p9) in *.
- destruct (Duplicate.transf_program p9bis) as [p10|e] eqn:P10; simpl in T; try discriminate.
+ destruct (partial_if optim_duplicate Duplicate.transf_program p9bis) as [p10|e] eqn:P10; simpl in T; try discriminate.
set (p11 := total_if optim_constprop Constprop.transf_program p10) in *.
set (p12 := total_if optim_constprop Renumber.transf_program p11) in *.
destruct (partial_if optim_CSE CSE.transf_program p12) as [p13|e] eqn:P13; simpl in T; try discriminate.
@@ -339,7 +339,7 @@ Proof.
exists p8; split. apply Inliningproof.transf_program_match; auto.
exists p9; split. apply FirstNopproof.transf_program_match; auto.
exists p9bis; split. apply Renumberproof.transf_program_match; auto.
- exists p10; split. apply Duplicateproof.transf_program_match; auto.
+ exists p10; split. eapply partial_if_match; eauto. apply Duplicateproof.transf_program_match; auto.
exists p11; split. apply total_if_match. apply Constpropproof.transf_program_match.
exists p12; split. apply total_if_match. apply Renumberproof.transf_program_match.
exists p13; split. eapply partial_if_match; eauto. apply CSEproof.transf_program_match.
@@ -427,7 +427,7 @@ Ltac DestructM :=
eapply compose_forward_simulations. eapply FirstNopproof.transf_program_correct; eassumption.
eapply compose_forward_simulations. eapply Renumberproof.transf_program_correct; eassumption.
eapply compose_forward_simulations.
- eapply Duplicateproof.transf_program_correct; eassumption.
+ eapply match_if_simulation. eassumption. exact Duplicateproof.transf_program_correct.
eapply compose_forward_simulations.
eapply match_if_simulation. eassumption. exact Constpropproof.transf_program_correct.
eapply compose_forward_simulations.
diff --git a/driver/Compopts.v b/driver/Compopts.v
index f1ab4f7b..a3181da8 100644
--- a/driver/Compopts.v
+++ b/driver/Compopts.v
@@ -27,8 +27,7 @@ Parameter generate_float_constants: unit -> bool.
(** For value analysis. Currently always false. *)
Parameter va_strict: unit -> bool.
-(** Flag -fduplicate. For tail duplication optimization. Necessary to have
- * bigger superblocks *)
+(** Flag -fduplicate. Branch prediction annotation + tail duplication *)
Parameter optim_duplicate: unit -> bool.
(** Flag -ftailcalls. For tail call optimization. *)