+2016-11-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/77834
+ * alias.c (nonoverlapping_memrefs_p): If one decl is
+ FUNCTION_DECL or LABEL_DECL and the other is not, return 1.
+
2016-11-07 Richard Biener <rguenther@suse.de>
PR target/78229
|| TREE_CODE (expry) == CONST_DECL)
return 1;
+ /* If one decl is known to be a function or label in a function and
+ the other is some kind of data, they can't overlap. */
+ if ((TREE_CODE (exprx) == FUNCTION_DECL
+ || TREE_CODE (exprx) == LABEL_DECL)
+ != (TREE_CODE (expry) == FUNCTION_DECL
+ || TREE_CODE (expry) == LABEL_DECL))
+ return 1;
+
/* If either of the decls doesn't have DECL_RTL set (e.g. marked as
living in multiple places), we can't tell anything. Exception
are FUNCTION_DECLs for which we can create DECL_RTL on demand. */
/* Offset based disambiguation not appropriate for loop invariant */
if (loop_invariant)
- return 0;
+ return 0;
/* Offset based disambiguation is OK even if we do not know that the
declarations are necessarily different