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

--- Comment #57 from Jan Hubicka <hubicka at ucw dot cz> ---
> Another issue is propagate_constants_accross_call has
> 
>   for (; (i < args_count) && (i < parms_count); i++)
>     {
>       struct ipa_jump_func *jump_func = ipa_get_ith_jump_func (args, i);
>       struct ipcp_param_lattices *dest_plats;
> 
>       dest_plats = ipa_get_parm_lattices (callee_info, i);
>       if (availability == AVAIL_INTERPOSABLE)
>         ret |= set_all_contains_variable (dest_plats);
>       else
>         {
>           ret |= propagate_scalar_accross_jump_function (cs, jump_func,
>                                                          &dest_plats->itself);
>           ret |= propagate_context_accross_jump_function (cs, jump_func, i,
>                                                           
> &dest_plats->ctxlat);
>           ret |= propagate_alignment_accross_jump_function (cs, jump_func,
>                                                             dest_plats);
>           ret |= propagate_aggs_accross_jump_function (cs, jump_func,
>                                                        dest_plats);
>         }
>     }
> 
> Even if availability == AVAIL_INTERPOSABLE, alignment from jump_func
> is used if the function isn't preempted at run-time.  Shouldn't it
> call propagate_alignment_accross_jump_function unconditionally?
Well, set_all_contains_variable will simply make every INTERPOSABLE function to
have
all parameters with unknown alignment.  This is probably OK because the
function is
externally visible anyway and thus called from there.

I commented on this privately to Martin some time ago.  While technically one
can find that the functions if not interposed are used one way or another, but
because we can't clone these functions (we would need to add runtime check
for interposition then), we don't have any use for that anyway.

Martin, I just tested firefox with -march=native -flto -O3 and it still
segfaults
for me at movaps, so it seems that there is still some issue with the code :(
(it happens with or withtout the propagation patch I posted)

Honza

Reply via email to