Add a --optimize-ite/-oite option that transforms if/then/else into merge when possible.
Indeed it is possible when each branch of the ite updates no memory. This is done in the new L2lOptimIte module. For the time being, it does detect when the node has no memory. It only looks at the declaration: nodes have memory, and not functions. I should infer that information and raise warnings or errors if what I infer is not compatible with waht is declared (will come later). Also split ActionsDep into ActionsDep and Action. Also fix a bug in L2lsplit where deeply nested (>2) merge were not splitted.
Showing
- src/action.ml 48 additions, 0 deletionssrc/action.ml
- src/action.mli 24 additions, 0 deletionssrc/action.mli
- src/actionsDeps.ml 5 additions, 50 deletionssrc/actionsDeps.ml
- src/actionsDeps.mli 6 additions, 30 deletionssrc/actionsDeps.mli
- src/compile.ml 17 additions, 10 deletionssrc/compile.ml
- src/l2lExpandNodes.ml 4 additions, 22 deletionssrc/l2lExpandNodes.ml
- src/l2lOptimIte.ml 202 additions, 0 deletionssrc/l2lOptimIte.ml
- src/l2lOptimIte.mli 18 additions, 0 deletionssrc/l2lOptimIte.mli
- src/l2lSplit.ml 23 additions, 3 deletionssrc/l2lSplit.ml
- src/l2lSplit.mli 1 addition, 5 deletionssrc/l2lSplit.mli
- src/lic.ml 1 addition, 1 deletionsrc/lic.ml
- src/lic2soc.ml 7 additions, 8 deletionssrc/lic2soc.ml
- src/lic2soc.mli 1 addition, 1 deletionsrc/lic2soc.mli
- src/licName.ml 24 additions, 2 deletionssrc/licName.ml
- src/licName.mli 5 additions, 1 deletionsrc/licName.mli
- src/licPrg.ml 6 additions, 2 deletionssrc/licPrg.ml
- src/lus2licRun.ml 1 addition, 1 deletionsrc/lus2licRun.ml
- src/lv6MainArgs.ml 9 additions, 2 deletionssrc/lv6MainArgs.ml
- src/lv6MainArgs.mli 1 addition, 0 deletionssrc/lv6MainArgs.mli
- src/lv6version.ml 2 additions, 2 deletionssrc/lv6version.ml
Loading
Please register or sign in to comment