aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-04-23 07:28:16 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-04-23 07:28:16 +0200
commitd6c1a7a7c779f4f3f4786c6dcbfed62e7347011a (patch)
tree4eaa1e2fc65bc4f623e8ae74f252407c980358e6 /gcc
parent0e94da57dc1e5712c60a876545a0c09a4d672002 (diff)
downloadgcc-d6c1a7a7c779f4f3f4786c6dcbfed62e7347011a.zip
gcc-d6c1a7a7c779f4f3f4786c6dcbfed62e7347011a.tar.gz
gcc-d6c1a7a7c779f4f3f4786c6dcbfed62e7347011a.tar.bz2
re PR sanitizer/70712 (False positive from AddressSanitizer with use of 'alignas')
PR sanitizer/70712 * cfgexpand.c (expand_stack_vars): Fix typo. * c-c++-common/asan/pr70712.c: New test. From-SVN: r235384
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfgexpand.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/c-c++-common/asan/pr70712.c32
4 files changed, 43 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ff68ee8..d2e1555 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/70712
+ * cfgexpand.c (expand_stack_vars): Fix typo.
+
2016-04-22 Szabolcs Nagy <szabolcs.nagy@arm.com>
* system.h (list, map, set, vector): Include conditionally.
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 3ed2270..21f21c9 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -1137,7 +1137,7 @@ expand_stack_vars (bool (*pred) (size_t), struct stack_vars_data *data)
HOST_WIDE_INT prev_offset
= align_base (frame_offset,
MAX (alignb, ASAN_RED_ZONE_SIZE),
- FRAME_GROWS_DOWNWARD);
+ !FRAME_GROWS_DOWNWARD);
tree repr_decl = NULL_TREE;
offset
= alloc_stack_frame_space (stack_vars[i].size
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6ffb14e..82e814a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/70712
+ * c-c++-common/asan/pr70712.c: New test.
+
2016-04-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* .gitattributes: New file.
diff --git a/gcc/testsuite/c-c++-common/asan/pr70712.c b/gcc/testsuite/c-c++-common/asan/pr70712.c
new file mode 100644
index 0000000..74a6a75
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/asan/pr70712.c
@@ -0,0 +1,32 @@
+/* PR sanitizer/70712 */
+/* { dg-do run } */
+
+struct __attribute__((aligned (64))) S
+{
+ char s[4];
+};
+
+struct T
+{
+ char t[8];
+ char u[480];
+
+};
+
+__attribute__((noinline, noclone)) void
+foo (struct T *p, struct S *q)
+{
+ __builtin_memset (p->t, '\0', sizeof (p->t));
+ __builtin_memset (p->u, '\0', sizeof (p->u));
+ __builtin_memset (q->s, '\0', sizeof (q->s));
+}
+
+int
+main ()
+{
+ struct S s;
+ struct T t;
+ foo (&t, &s);
+ asm volatile ("" : : "r" (&t), "r" (&s) : "memory");
+ return 0;
+}