+2012-09-04 Richard Henderson <rth@redhat.com>
+
+ * alias.c (read_dependence): Return true for ALIAS_SET_MEMORY_BARRIER.
+
2012-09-04 Richard Guenther <rguenther@suse.de>
* tree-ssa-pre.c (value_expressions): Make it a vector of
storeqi_unaligned pattern. */
/* Read dependence: X is read after read in MEM takes place. There can
- only be a dependence here if both reads are volatile. */
+ only be a dependence here if both reads are volatile, or if either is
+ an explicit barrier. */
int
read_dependence (const_rtx mem, const_rtx x)
{
- return MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem);
+ if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem))
+ return true;
+ if (MEM_ALIAS_SET (x) == ALIAS_SET_MEMORY_BARRIER
+ || MEM_ALIAS_SET (mem) == ALIAS_SET_MEMORY_BARRIER)
+ return true;
+ return false;
}
/* Return true if we can determine that the fields referenced cannot