On 28/10/15 17:05, Tom de Vries wrote:
On 28/10/15 16:35, Richard Biener wrote:
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.
Indeed, I also realized that by now.
So I've committed the original, approved patch from
https://gcc.gnu.org/ml/gcc-patches/2015-10/msg02426.html
Thanks,
- Tom