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

--- Comment #16 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 12 Jul 2021, jakub at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101419
> 
> --- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> I agree about most of the passes you are moving, but I have an (albeit
> artificial) testcase that proves that cunrolli does affect objsz:
> __SIZE_TYPE__ a[10];
> 
> void
> foo (void)
> {
>   char *p = __builtin_malloc (64);
>   for (int i = 0; i < 4; i++)
>     {
>       a[i] = __builtin_object_size (p, 0);
>       p += 6;
>     }
> }
> 
> When objsz is done before cunrolli, a[0] to a[3] will all be 64, while
> when it is done after cunrolli, it will be 64, 58, 52, 46.
> 
> So, what about a mix of your and my patch, add
> --- gcc/passes.def
> +++ gcc/passes.def
> @@ -194,14 +194,14 @@ along with GCC; see the file COPYING3.  If not see
>          They ensure memory accesses are not indirect wherever possible.  */
>        NEXT_PASS (pass_strip_predict_hints, false /* early_p */);
>        NEXT_PASS (pass_ccp, true /* nonzero_p */);
> -      NEXT_PASS (pass_post_ipa_warn);
>        /* After CCP we rewrite no longer addressed locals into SSA
>          form if possible.  */
> +      NEXT_PASS (pass_post_ipa_warn);
>        NEXT_PASS (pass_complete_unrolli);
> +      NEXT_PASS (pass_object_sizes, false /* insert_min_max_p */);
>        NEXT_PASS (pass_backprop);
>        NEXT_PASS (pass_phiprop);
>        NEXT_PASS (pass_forwprop);
> -      NEXT_PASS (pass_object_sizes, false /* insert_min_max_p */);
>        /* pass_build_alias is a dummy pass that ensures that we
>          execute TODO_rebuild_alias at this point.  */
>        NEXT_PASS (pass_build_alias);
> to my patch?

Well, my point was to avoid pessimizing the VN done from cunrolli ;)
Of course any duplication / threading can improve __bos precision,
but then any transform also risks breaking it.  Your example
is IMHO too artificial as good argument.

Reply via email to