aboutsummaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2006-01-24 15:48:17 -0800
committerRichard Henderson <rth@gcc.gnu.org>2006-01-24 15:48:17 -0800
commit9cd9e512cb50cc49de86f397e716279286712f82 (patch)
tree0827a234c38b01dc573baa50665e2f3c2f1afe68 /gcc/alias.c
parent7faaba2884bb256dc3e2c9addd5357fbde4e2c9c (diff)
downloadgcc-9cd9e512cb50cc49de86f397e716279286712f82.zip
gcc-9cd9e512cb50cc49de86f397e716279286712f82.tar.gz
gcc-9cd9e512cb50cc49de86f397e716279286712f82.tar.bz2
alias.h (ALIAS_SET_MEMORY_BARRIER): New.
* alias.h (ALIAS_SET_MEMORY_BARRIER): New. * alias.c (true_dependence): Respect it. (canon_true_dependence, write_dependence_p): Likewise. * builtins.c (get_builtin_sync_mem): Set it. From-SVN: r110189
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/alias.c b/gcc/alias.c
index 4806019..68dff25 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -1,5 +1,5 @@
/* Alias analysis for GNU C
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
Contributed by John Carr (jfc@mit.edu).
@@ -2209,6 +2209,9 @@ true_dependence (rtx mem, enum machine_mode mem_mode, rtx x,
return 1;
if (GET_MODE (mem) == BLKmode && GET_CODE (XEXP (mem, 0)) == SCRATCH)
return 1;
+ if (MEM_ALIAS_SET (x) == ALIAS_SET_MEMORY_BARRIER
+ || MEM_ALIAS_SET (mem) == ALIAS_SET_MEMORY_BARRIER)
+ return 1;
if (DIFFERENT_ALIAS_SETS_P (x, mem))
return 0;
@@ -2282,6 +2285,9 @@ canon_true_dependence (rtx mem, enum machine_mode mem_mode, rtx mem_addr,
return 1;
if (GET_MODE (mem) == BLKmode && GET_CODE (XEXP (mem, 0)) == SCRATCH)
return 1;
+ if (MEM_ALIAS_SET (x) == ALIAS_SET_MEMORY_BARRIER
+ || MEM_ALIAS_SET (mem) == ALIAS_SET_MEMORY_BARRIER)
+ return 1;
if (DIFFERENT_ALIAS_SETS_P (x, mem))
return 0;
@@ -2341,6 +2347,9 @@ write_dependence_p (rtx mem, rtx x, int writep)
return 1;
if (GET_MODE (mem) == BLKmode && GET_CODE (XEXP (mem, 0)) == SCRATCH)
return 1;
+ if (MEM_ALIAS_SET (x) == ALIAS_SET_MEMORY_BARRIER
+ || MEM_ALIAS_SET (mem) == ALIAS_SET_MEMORY_BARRIER)
+ return 1;
if (DIFFERENT_ALIAS_SETS_P (x, mem))
return 0;