On 12/14/24 5:16 PM, Jakub Jelinek wrote:
Hi!

The following patch implements what I've mentioned in the 64-bit
location_t thread.
struct tree_exp had unsigned condition_uid member added for something
rarely used (-fcondition-coverage) and even there used only on very small
subset of trees only for the duration of the gimplification.

The following patch uses a hash_map instead, which allows shrinking
tree_exp to its previous size (32 bytes + (number of operands - 1) * sizeof
(tree)).

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2024-12-14  Jakub Jelinek  <ja...@redhat.com>

        * tree-core.h (struct tree_exp): Remove condition_uid member.
        * tree.h (SET_EXPR_UID, EXPR_COND_UID): Remove.
        * gimplify.cc (nextuid): Rename to ...
        (nextconduid): ... this.
        (cond_uids): New static variable.
        (next_cond_uid, reset_cond_uid): Adjust for the renaming,
        formatting fix.
        (tree_associate_condition_with_expr): New function.
        (shortcut_cond_r, tag_shortcut_cond, shortcut_cond_expr): Use it
        instead of SET_EXPR_UID.
        (gimplify_cond_expr): Look up cond_uid in cond_uids hash map if
        non-NULL instead of using EXPR_COND_UID.
        (gimplify_function_tree): Delete cond_uids and set it to NULL.
OK. I didn't even realize we'd put something specific to condition coverage into tree_exp.

Naturally I wonder if there are other items in the tree or RTL structures that we could handle in a similar manner. Future work obviously.

jeff

Reply via email to