diff options
Diffstat (limited to 'driver')
-rw-r--r-- | driver/Clflags.ml | 2 | ||||
-rw-r--r-- | driver/Compiler.vexpand | 8 | ||||
-rw-r--r-- | driver/Driver.ml | 7 |
3 files changed, 16 insertions, 1 deletions
diff --git a/driver/Clflags.ml b/driver/Clflags.ml index eb21b3f8..829af76a 100644 --- a/driver/Clflags.ml +++ b/driver/Clflags.ml @@ -36,6 +36,8 @@ let option_fredundancy = ref true let option_fduplicate = ref (-1) let option_finvertcond = ref true let option_ftracelinearize = ref false +let option_fprepass = ref false +let option_fprepass_sched = ref "list" let option_fpostpass = ref true let option_fpostpass_sched = ref "list" let option_fifconversion = ref true diff --git a/driver/Compiler.vexpand b/driver/Compiler.vexpand index 0f59aab7..8aaa40c6 100644 --- a/driver/Compiler.vexpand +++ b/driver/Compiler.vexpand @@ -297,6 +297,14 @@ EXPAND_ASM_SEMANTICS eapply RTLgenproof.transf_program_correct; eassumption. EXPAND_RTL_FORWARD_SIMULATIONS eapply compose_forward_simulations. + eapply RTLpathLivegenproof.transf_program_correct; eassumption. + pose proof RTLpathLivegenproof.all_fundef_liveness_ok as X. + refine (modusponens _ _ (X _ _ _) _); eauto. intro. + eapply compose_forward_simulations. + eapply RTLpathSchedulerproof.transf_program_correct; eassumption. + eapply compose_forward_simulations. + eapply RTLpathproof.transf_program_correct; eassumption. + eapply compose_forward_simulations. eapply Allocationproof.transf_program_correct; eassumption. eapply compose_forward_simulations. eapply Tunnelingproof.transf_program_correct; eassumption. diff --git a/driver/Driver.ml b/driver/Driver.ml index 90afb812..fef9c166 100644 --- a/driver/Driver.ml +++ b/driver/Driver.ml @@ -204,7 +204,10 @@ Processing options: -fcse3-glb Refine CSE3 information using greatest lower bounds [on] -fmove-loop-invariants Perform loop-invariant code motion [off] -fredundancy Perform redundancy elimination [on] - -fpostpass Perform postpass scheduling (only for K1 architecture) [on] + -fprepass Perform prepass scheduling (only for K1 architecture) [off] + -fprepass= <optim> Perform postpass scheduling with the specified optimization [list] + (<optim>=list: list scheduling, <optim>=ilp: ILP, <optim>=greedy: just packing bundles) + -fpostpass Perform postpass scheduling (only for K1 architecture) [on] -fpostpass= <optim> Perform postpass scheduling with the specified optimization [list] (<optim>=list: list scheduling, <optim>=ilp: ILP, <optim>=greedy: just packing bundles) -fduplicate <nb_nodes> Perform tail duplication to form superblocks on predicted traces @@ -419,10 +422,12 @@ let cmdline_actions = @ f_opt "cse3-glb" option_fcse3_glb @ f_opt "move-loop-invariants" option_fmove_loop_invariants @ f_opt "redundancy" option_fredundancy + @ f_opt "prepass" option_fprepass @ f_opt "postpass" option_fpostpass @ [ Exact "-fduplicate", Integer (fun n -> option_fduplicate := n) ] @ f_opt "invertcond" option_finvertcond @ f_opt "tracelinearize" option_ftracelinearize + @ f_opt_str "prepass" option_fprepass option_fprepass_sched @ f_opt_str "postpass" option_fpostpass option_fpostpass_sched @ f_opt "inline" option_finline @ f_opt "inline-functions-called-once" option_finline_functions_called_once |