https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101419

--- Comment #21 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:dddb6ffdc5c25264dd75ad82dad8e48a0718d2d9

commit r12-2270-gdddb6ffdc5c25264dd75ad82dad8e48a0718d2d9
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Jul 13 11:04:22 2021 +0200

    passes: Fix up subobject __bos [PR101419]

    The following testcase is miscompiled, because VN during cunrolli changes
    __bos argument from address of a larger field to address of a smaller field
    and so __builtin_object_size (, 1) then folds into smaller value than the
    actually available size.
    copy_reference_ops_from_ref has a hack for this, but it was using
    cfun->after_inlining as a check whether the hack can be ignored, and
    cunrolli is after_inlining.

    This patch uses a property to make it exact (set at the end of objsz
    pass that doesn't do insert_min_max_p) and additionally based on
discussions
    in the PR moves the objsz pass earlier after IPA.

    2021-07-13  Jakub Jelinek  <ja...@redhat.com>
                Richard Biener  <rguent...@suse.de>

            PR tree-optimization/101419
            * tree-pass.h (PROP_objsz): Define.
            (make_pass_early_object_sizes): Declare.
            * passes.def (pass_all_early_optimizations): Rename
pass_object_sizes
            there to pass_early_object_sizes, drop parameter.
            (pass_all_optimizations): Move pass_object_sizes right after
pass_ccp,
            drop parameter, move pass_post_ipa_warn right after that.
            * tree-object-size.c (pass_object_sizes::execute): Rename to...
            (object_sizes_execute): ... this.  Add insert_min_max_p argument.
            (pass_data_object_sizes): Move after object_sizes_execute.
            (pass_object_sizes): Likewise.  In execute method call
            object_sizes_execute, drop set_pass_param method and
insert_min_max_p
            non-static data member and its initializer in the ctor.
            (pass_data_early_object_sizes, pass_early_object_sizes,
            make_pass_early_object_sizes): New.
            * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use
            (cfun->curr_properties & PROP_objsz) instead of
cfun->after_inlining.

            * gcc.dg/builtin-object-size-10.c: Pass
-fdump-tree-early_objsz-details
            instead of -fdump-tree-objsz1-details in dg-options and adjust
names
            of dump file in scan-tree-dump.
            * gcc.dg/pr101419.c: New test.

Reply via email to