mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-17 14:57:03 +00:00
Estimated hours taken: 3 Branches: main Further improve trail usage optimization by omitting reset_undo_ticket instructions from disjuncts where the previous disjunct did not modify the trail. This can be done even in disjunctions where some of the disjuncts do modify the trail. At the moment this optimization is only implemented for the MLDS backend - I'll add it to the lowlevel backend as a separate change. compiler/add_trail_ops.m: Implement the above optimization for the MLDS backend. compiler/goal_form.m: Add a predicate goal_may_modify_trail. compiler/mercury_compile.m: Add a comment mentioning that after we have added trail ops (stage 410) to the HLDS we can no longer reorder disjunctions. This should be okay since none of the following passes reorder disjunctions anyway. vim/syntax/mercury.vim: Highlight `will_not_modify_trail' and `may_modify_trail' appropriately. NEWS: Make the description of what trail usage optimization does more precise. It affects goals other than if-then-elses, notably disjunctions and negations as well.