> I'm going to investigate why it has been failing for some time.
It's the second paragraph in:
/* Given a pointer variable P, fill in its points-to set, or return
false if we can't.
Rather than return false for variables that point-to anything, we
instead find the corresponding SMT, and merge in it's aliases. In
addition to these aliases, we also set the bits for the SMT's
themselves and their subsets, as SMT's are still in use by
non-SSA_NAME's, and pruning may eliminate every one of their
aliases. In such a case, if we did not include the right set of
SMT's in the points-to set of the variable, we'd end up with
statements that do not conflict but should. */
bool
find_what_p_points_to (tree p)
That doesn't work for ref-all pointers since the aliases of their special SMT
are computed near the end of the pass:
/* If the program contains ref-all pointers, finalize may-alias information
for them. This pass needs to be run after call-clobbering information
has been computed. */
if (ai->ref_all_symbol_mem_tag)
finalize_ref_all_pointers (ai);
I think that returning false for them again is good enough.
Lightly tested on x86_64-suse-linux. Daniel, is that OK with you?
* tree-ssa-structalias.c (find_what_p_points_to): Return false
for ref-all pointers that point-to anything.