On Tue, 27 Oct 2015, Tom de Vries wrote:

> On 27/10/15 13:24, Tom de Vries wrote:
> > Thinking it over a bit more, I realized the constraint handling started
> > to be messy. I've reworked the patch series to simplify that first.
> > 
> >       1    Simplify constraint handling
> >       2    Rename make_restrict_var_constraints to make_param_constraints
> >       3    Add recursion to make_param_constraints
> >       4    Add handle_param parameter to create_variable_info_for_1
> >       5    Handle recursive restrict pointer in create_variable_info_for_1
> >       6    Handle restrict struct fields recursively
> > 
> > Currently doing bootstrap and regtest on x86_64.
> > 
> > I'll repost the patch series in reply to this message.
> 
> This patch gets rid of this bit of code in intra_create_variable_infos:
> ...
>       if (restrict_pointer_p)
>       make_constraint_from_global_restrict (p, "PARM_RESTRICT");
>       else
> ..
> 
> I already proposed to remove it here (
> https://gcc.gnu.org/ml/gcc-patches/2015-10/msg02426.html ) but there is a
> problem with that approach: It can happen that restrict_pointer_p is true, but
> p->only_restrict_pointers is false. This happens with fipa-pta, when
> create_function_info_for created a varinfo for the parameter before
> intra_create_variable_infos was called.
> 
> The patch handles that case now by setting p->only_restrict_pointers.

Hmm, but ... restrict only has an effect in non-IPA mode.  That we
use intra_create_variable_infos in IPA mode is only done for correctness
(to set up incoming NONLOCAL) for functions we do not see all callers of.

Maybe we should fix that (in intra_create_variable_infos properly
add constraints from NONLOCAL for all such functions).

Richard.

> Thanks,
> - Tom
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 
21284 (AG Nuernberg)

Reply via email to