]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/120156 - ICE in ptr_derefs_may_alias_p
authorRichard Biener <rguenther@suse.de>
Tue, 14 May 2024 09:13:51 +0000 (11:13 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 9 May 2025 07:35:44 +0000 (09:35 +0200)
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.

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

index 790447b384033fbea3edf6dcfc07497c03b74a5f..0a1f3d257a46467dbc0de7a64d2d44b7a775b4c1 100644 (file)
@@ -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);