aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2015-01-14 13:58:35 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>2015-01-14 13:58:35 +0000
commit8673b6713e9457187cc9ecbefe949fb2393cb057 (patch)
tree80e4f051bc5ec02d383c65782ba5694b86b0f3aa /gcc/builtins.c
parent4b54ab976e5b0fd88580927adc6b8d5f2bd89044 (diff)
downloadgcc-8673b6713e9457187cc9ecbefe949fb2393cb057.zip
gcc-8673b6713e9457187cc9ecbefe949fb2393cb057.tar.gz
gcc-8673b6713e9457187cc9ecbefe949fb2393cb057.tar.bz2
re PR middle-end/59448 (Code generation doesn't respect C11 address-dependency)
2015-01-14 Andrew MacLeod <amacleod@redhat.com> PR middle-end/59448 * builtins.c (get_memmodel): Promote consume to acquire always. * testsuite/gcc.dg/atomic-invalid.c: Remove obselete test for illegal consume in an atomic_exchange. From-SVN: r219601
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 9280704..c8b1940 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5365,6 +5365,11 @@ get_memmodel (tree exp)
return MEMMODEL_SEQ_CST;
}
+ /* Workaround for Bugzilla 59448. GCC doesn't track consume properly, so
+ be conservative and promote consume to acquire. */
+ if (val == MEMMODEL_CONSUME)
+ val = MEMMODEL_ACQUIRE;
+
return (enum memmodel) val;
}