]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR sanitizer/70712 (False positive from AddressSanitizer with use of 'alignas')
authorJakub Jelinek <jakub@redhat.com>
Sat, 23 Apr 2016 05:28:16 +0000 (07:28 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 23 Apr 2016 05:28:16 +0000 (07:28 +0200)
PR sanitizer/70712
* cfgexpand.c (expand_stack_vars): Fix typo.

* c-c++-common/asan/pr70712.c: New test.

From-SVN: r235384

gcc/ChangeLog
gcc/cfgexpand.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/asan/pr70712.c [new file with mode: 0644]

index ff68ee80b484b7505911bdfdb920732dc8465470..d2e15556206f283c2a739c0ffe6c53fbfc49945d 100644 (file)
@@ -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.
index 3ed2270e881792bc4e16e1bb91e960f7ff1e4e9e..21f21c975026a27f60e441b66a9c45b358d95a5f 100644 (file)
@@ -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
index 6ffb14ecdf0ce48c2375cfcca623e534b4fd8cd3..82e814a36769f12c04903f0355a2a2e578d7d473 100644 (file)
@@ -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 (file)
index 0000000..74a6a75
--- /dev/null
@@ -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;
+}