re PR target/77834 (ICE: in make_decl_rtl, at varasm.c:1311 with -O -ftree-pre -mstringop-strategy=libcall)
PR target/77834 * alias.c (nonoverlapping_memrefs_p): If one decl is FUNCTION_DECL or LABEL_DECL and the other is not, return 1. From-SVN: r241905
This commit is contained in:
parent
a98152285e
commit
dca167984a
|
@ -1,3 +1,9 @@
|
||||||
|
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>
|
2016-11-07 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR target/78229
|
PR target/78229
|
||||||
|
|
10
gcc/alias.c
10
gcc/alias.c
|
@ -2755,6 +2755,14 @@ nonoverlapping_memrefs_p (const_rtx x, const_rtx y, bool loop_invariant)
|
||||||
|| TREE_CODE (expry) == CONST_DECL)
|
|| TREE_CODE (expry) == CONST_DECL)
|
||||||
return 1;
|
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
|
/* 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
|
living in multiple places), we can't tell anything. Exception
|
||||||
are FUNCTION_DECLs for which we can create DECL_RTL on demand. */
|
are FUNCTION_DECLs for which we can create DECL_RTL on demand. */
|
||||||
|
@ -2804,7 +2812,7 @@ nonoverlapping_memrefs_p (const_rtx x, const_rtx y, bool loop_invariant)
|
||||||
|
|
||||||
/* Offset based disambiguation not appropriate for loop invariant */
|
/* Offset based disambiguation not appropriate for loop invariant */
|
||||||
if (loop_invariant)
|
if (loop_invariant)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Offset based disambiguation is OK even if we do not know that the
|
/* Offset based disambiguation is OK even if we do not know that the
|
||||||
declarations are necessarily different
|
declarations are necessarily different
|
||||||
|
|
Loading…
Reference in New Issue