Re: [m-users.] Best way to implement constants ?

Julien Fischer <[email protected]>
Newsgroups gmane.comp.lang.mercury.general
Message-ID <[email protected]>

On Fri, 18 Aug 2023, Zoltan Somogyi wrote:

> On 2023-08-18 11:37 +02:00 CEST, "Julien Fischer" <[email protected]> wrote:
>> At -O3 and above the Mercury compiler will (generally) evaluate a
>> variety of operations (see compiler/const_prop.m for details).
>> Float division is included in those operations
>
> Actually, constant propagation is not enabled automatically at any
> optimization level; you have to enable manually, with --optimize-constant-propagation.

When and why did that change?  Here's the definition of -O3 from Mercury 14.01

     opt_level(3, _, [
         optimize_saved_vars_const   - bool(yes),
         optimize_unused_args        -   bool(yes),
         optimize_higher_order       -   bool(yes),
         deforestation               -   bool(yes),
         local_constraint_propagation -  bool(yes),
         constant_propagation        -   bool(yes),
         ^^^^^^^^^^^^^^^^^^^^

         optimize_reassign           -   bool(yes),
         % Disabled until a bug in extras/trailed_update/var.m is resolved.
         % introduce_accumulators    -   bool(yes),
         optimize_repeat             -   int(4)
     ]).

It was enabled at -O3 back then.

> What is enabled at -O3 is *constraint* propagation, which I also
> misread as *constant* propagation at first :-(
> I will add constant propagation to -O3.

I would argue that at least some of its work, notably string
concatenation, ought to be done at -O2.

Julien.
_______________________________________________
users mailing list
[email protected]
https://lists.mercurylang.org/listinfo/users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.