This picks the ptr_derefs_may_alias_p fix from the PR99954 fix which said: This makes us run into a latent issue in ptr_deref_may_alias_decl_p when the pointer is something like &MEM[0].a in which case we fail to handle non-SSA name pointers. Add code similar to what we have in ptr_derefs_may_alias_p.
Bootstrap/regtest running on x86_64-unknown-linux-gnu. PR tree-optimization/120156 * tree-ssa-alias.cc (ptr_deref_may_alias_decl_p): Verify the pointer is an SSA name. (cherry picked from commit c290e6a0b7a9de5692963affc6627a4af7dc2411) --- gcc/tree-ssa-alias.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/tree-ssa-alias.cc b/gcc/tree-ssa-alias.cc index 790447b3840..0a1f3d257a4 100644 --- a/gcc/tree-ssa-alias.cc +++ b/gcc/tree-ssa-alias.cc @@ -295,6 +295,11 @@ ptr_deref_may_alias_decl_p (tree ptr, tree decl) if (!may_be_aliased (decl)) return false; + /* From here we require a SSA name pointer. Anything else aliases. */ + if (TREE_CODE (ptr) != SSA_NAME + || !POINTER_TYPE_P (TREE_TYPE (ptr))) + return true; + /* If we do not have useful points-to information for this pointer we cannot disambiguate anything else. */ pi = SSA_NAME_PTR_INFO (ptr); -- 2.43.0