Hello!
I'd like to bring PR 63475 to the attention of RTL maintainers. The
problem in the referred PR exposed the RTL infrastructure problem,
where VALUE expressions are leaked instead of MEM expresions into
various parts of aliasing-detecting support functions.
As an example, please consider following patch for base_alias_check:
--cut here--
Index: alias.c
===================================================================
--- alias.c (revision 216025)
+++ alias.c (working copy)
@@ -1824,6 +1824,13 @@ base_alias_check (rtx x, rtx x_base, rtx y, rtx y_
if (rtx_equal_p (x_base, y_base))
return 1;
+ if (GET_CODE (x) == VALUE || GET_CODE (y) == VALUE)
+ {
+ debug_rtx (x);
+ debug_rtx (y);
+ gcc_unreachable ();
+ }
+
/* The base addresses are different expressions. If they are not accessed
via AND, there is no conflict. We can bring knowledge of object
alignment into play here. For example, on alpha, "char a, b;" can